@@ -1557,7 +1557,12 @@ const DrawTool_Templater = {
15571557 }
15581558 return true
15591559 } ,
1560- getTemplateDefaults : async function ( template , layer , toAdd ) {
1560+ getTemplateDefaults : async function (
1561+ template ,
1562+ layer ,
1563+ toAdd ,
1564+ recomputeOnly = false
1565+ ) {
15611566 return new Promise ( async ( resolve , reject ) => {
15621567 let defaultHasBeenSet = false
15631568 const intersectedGeodatasets = { }
@@ -1745,70 +1750,83 @@ const DrawTool_Templater = {
17451750 ) {
17461751 let f = t . field
17471752 let v = t . default
1753+ let overrideRecomputeOnlyHere = false
17481754 switch ( t . type ) {
17491755 case 'incrementer' :
1750- const nextIncrement =
1751- DrawTool_Templater . _validateIncrement (
1752- t . default ,
1753- t ,
1754- layer
1755- )
1756- v = nextIncrement . newValue
1756+ if ( recomputeOnly != true ) {
1757+ const nextIncrement =
1758+ DrawTool_Templater . _validateIncrement (
1759+ t . default ,
1760+ t ,
1761+ layer
1762+ )
1763+ v = nextIncrement . newValue
1764+ }
17571765 break
17581766 case 'date' :
1759- if ( v === 'NOW' )
1767+ if ( v === 'NOW' ) {
17601768 v = moment
17611769 . utc ( new Date ( ) . getTime ( ) )
17621770 . format ( t . format || 'YYYY-MM-DDTHH:mm:ss' )
1763- else if ( v === 'STARTTIME' )
1771+ overrideRecomputeOnlyHere = true
1772+ } else if ( v === 'STARTTIME' ) {
17641773 v = moment
17651774 . utc ( TimeControl . getStartTime ( ) )
17661775 . format ( t . format || 'YYYY-MM-DDTHH:mm:ss' )
1767- else if ( v === 'ENDTIME' )
1776+ overrideRecomputeOnlyHere = true
1777+ } else if ( v === 'ENDTIME' ) {
17681778 v = moment
17691779 . utc ( TimeControl . getEndTime ( ) )
17701780 . format ( t . format || 'YYYY-MM-DDTHH:mm:ss' )
1781+ overrideRecomputeOnlyHere = true
1782+ }
17711783 break
17721784 default :
17731785 }
1774- defaultProps [ f ] = v
1786+ if (
1787+ recomputeOnly != true ||
1788+ overrideRecomputeOnlyHere === true
1789+ ) {
1790+ defaultProps [ f ] = v
1791+ }
17751792 }
17761793
17771794 // Last check to cast all non-bool checkbox values to bools
1778- if (
1779- t . field != null &&
1780- t . type === 'checkbox' &&
1781- typeof defaultProps [ t . field ] !== 'boolean'
1782- )
1783- defaultProps [ t . field ] = Boolean ( defaultProps [ t . field ] )
1784- else if (
1785- t . field != null &&
1786- t . type === 'number' &&
1787- t . min != null &&
1788- t . max != null &&
1789- ! isNaN ( parseFloat ( defaultProps [ t . field ] ) ) &&
1790- ( parseFloat ( defaultProps [ t . field ] ) > t . max ||
1791- parseFloat ( defaultProps [ t . field ] ) < t . min )
1792- )
1793- defaultProps [ t . field ] = Math . min (
1794- Math . max ( parseFloat ( defaultProps [ t . field ] ) , t . min ) ,
1795- t . max
1795+ if ( recomputeOnly != true ) {
1796+ if (
1797+ t . field != null &&
1798+ t . type === 'checkbox' &&
1799+ typeof defaultProps [ t . field ] !== 'boolean'
17961800 )
1797- else if (
1798- t . field != null &&
1799- t . type === 'slider' &&
1800- t . min != null &&
1801- t . max != null &&
1802- ! isNaN ( parseFloat ( defaultProps [ t . field ] ) ) &&
1803- ( parseFloat ( defaultProps [ t . field ] ) > t . max ||
1804- parseFloat ( defaultProps [ t . field ] ) < t . min )
1805- )
1806- defaultProps [ t . field ] = Math . min (
1807- Math . max ( parseFloat ( defaultProps [ t . field ] ) , t . min ) ,
1808- t . max
1801+ defaultProps [ t . field ] = Boolean ( defaultProps [ t . field ] )
1802+ else if (
1803+ t . field != null &&
1804+ t . type === 'number' &&
1805+ t . min != null &&
1806+ t . max != null &&
1807+ ! isNaN ( parseFloat ( defaultProps [ t . field ] ) ) &&
1808+ ( parseFloat ( defaultProps [ t . field ] ) > t . max ||
1809+ parseFloat ( defaultProps [ t . field ] ) < t . min )
1810+ )
1811+ defaultProps [ t . field ] = Math . min (
1812+ Math . max ( parseFloat ( defaultProps [ t . field ] ) , t . min ) ,
1813+ t . max
1814+ )
1815+ else if (
1816+ t . field != null &&
1817+ t . type === 'slider' &&
1818+ t . min != null &&
1819+ t . max != null &&
1820+ ! isNaN ( parseFloat ( defaultProps [ t . field ] ) ) &&
1821+ ( parseFloat ( defaultProps [ t . field ] ) > t . max ||
1822+ parseFloat ( defaultProps [ t . field ] ) < t . min )
18091823 )
1824+ defaultProps [ t . field ] = Math . min (
1825+ Math . max ( parseFloat ( defaultProps [ t . field ] ) , t . min ) ,
1826+ t . max
1827+ )
1828+ }
18101829 }
1811-
18121830 resolve ( defaultProps )
18131831 } )
18141832 } ,
0 commit comments