@@ -92,6 +92,7 @@ const TimeUI = {
9292 `<input id="mmgisTimeUIStartFake" type="text"/>` ,
9393 `</div>` ,
9494 `<div id="mmgisTimeUITimeline">` ,
95+ `<div id="mmgisTimeUITimelineExtent"></div>` ,
9596 `<div id="mmgisTimeUITimelinePlayExtent"></div>` ,
9697 `<div id="mmgisTimeUITimelineHisto"></div>` ,
9798 `<div id="mmgisTimeUITimelineInner"></div>` ,
@@ -746,6 +747,7 @@ const TimeUI = {
746747 } )
747748 TimeUI . _savedRangeModeStartTime = TimeUI . _startTimestamp
748749 TimeUI . updateTimes ( TimeUI . removeOffset ( 0 ) , null , null )
750+ $ ( '#mmgisTimeUITimelineExtent' ) . css ( 'opacity' , 0 )
749751 } else {
750752 $ ( '#mmgisTimeUIStartWrapper' ) . css ( { display : 'inherit' } )
751753 // Reinforce min date
@@ -767,6 +769,7 @@ const TimeUI = {
767769 )
768770 TimeUI . startTempus . dates . setValue ( parsedStart )
769771 }
772+ $ ( '#mmgisTimeUITimelineExtent' ) . css ( 'opacity' , 1 )
770773 }
771774 TimeUI . _remakeTimeSlider ( true )
772775 } ,
@@ -790,6 +793,7 @@ const TimeUI = {
790793 . removeClass ( 'mdi-pause' )
791794 . addClass ( 'mdi-play' )
792795
796+ $ ( '#mmgisTimeUITimelineExtent' ) . css ( 'opacity' , 1 )
793797 $ ( '#mmgisTimeUITimelinePlayExtent' ) . css ( 'opacity' , 0 )
794798 TimeUI . play = false
795799
@@ -822,6 +826,7 @@ const TimeUI = {
822826 '1' ) &&
823827 TimeUI . stepWithinBeyondIndex !== 1
824828 ) {
829+ $ ( '#mmgisTimeUITimelineExtent' ) . css ( 'opacity' , 0 )
825830 if ( mode === 'Point' ) {
826831 $ ( '#mmgisTimeUITimelinePlayExtent' )
827832 . css ( 'opacity' , 1 )
@@ -849,8 +854,11 @@ const TimeUI = {
849854 )
850855 $ ( '#mmgisTimeUITimelinePlayExtent' )
851856 . css ( 'opacity' , 1 )
852- . css ( 'width' , `${ right - left } px` )
853- . css ( 'left' , `${ left } px` )
857+ . css (
858+ 'width' ,
859+ `${ ( ( right - left ) / timelineBCR . width ) * 100 } %`
860+ )
861+ . css ( 'left' , `${ ( left / timelineBCR . width ) * 100 } %` )
854862 }
855863 }
856864
@@ -862,6 +870,40 @@ const TimeUI = {
862870 }
863871 if ( butDontActuallyPlay !== true ) TimeUI . _refreshIntervals ( )
864872 } ,
873+ _updateExtentIndicator ( forceStartTimestamp , forceEndTimestamp ) {
874+ if ( TimeUI . play ) return
875+
876+ const mode = TimeUI . modes [ TimeUI . modeIndex ]
877+
878+ if ( mode === 'Point' ) {
879+ } else {
880+ const timelineBCR = document
881+ . getElementById ( 'mmgisTimeUITimeline' )
882+ . getBoundingClientRect ( )
883+ const left = F_ . linearScale (
884+ [ TimeUI . _timelineStartTimestamp , TimeUI . _timelineEndTimestamp ] ,
885+ [ 0 , timelineBCR . width ] ,
886+ TimeUI . removeOffset (
887+ forceStartTimestamp != null
888+ ? forceStartTimestamp
889+ : TimeUI . _startTimestamp
890+ )
891+ )
892+ const right = F_ . linearScale (
893+ [ TimeUI . _timelineStartTimestamp , TimeUI . _timelineEndTimestamp ] ,
894+ [ 0 , timelineBCR . width ] ,
895+ TimeUI . removeOffset (
896+ forceEndTimestamp != null
897+ ? forceEndTimestamp
898+ : TimeUI . _endTimestamp
899+ )
900+ )
901+ $ ( '#mmgisTimeUITimelineExtent' )
902+ . css ( 'opacity' , 1 )
903+ . css ( 'width' , `${ ( ( right - left ) / timelineBCR . width ) * 100 } %` )
904+ . css ( 'left' , `${ ( left / timelineBCR . width ) * 100 } %` )
905+ }
906+ } ,
865907 _refreshIntervals ( ) {
866908 clearInterval ( TimeUI . playInterval )
867909 if ( TimeUI . play ) {
@@ -1018,6 +1060,8 @@ const TimeUI = {
10181060 )
10191061 return
10201062
1063+ TimeUI . _updateExtentIndicator ( )
1064+
10211065 TimeUI . timeSlider = new RangeSliderPips ( {
10221066 target : document . querySelector ( '#mmgisTimeUITimelineSlider' ) ,
10231067 props : {
@@ -1054,6 +1098,7 @@ const TimeUI = {
10541098 TimeUI . _savedPlayEnd = null
10551099 TimeUI . togglePlay ( false )
10561100 }
1101+ TimeUI . _updateExtentIndicator ( )
10571102 } )
10581103 TimeUI . timeSlider . $on ( 'change' , ( e ) => {
10591104 let idx = 0
@@ -1069,6 +1114,9 @@ const TimeUI = {
10691114 . utc ( TimeUI . removeOffset ( offsetNowDate ) )
10701115 . format ( FORMAT )
10711116 )
1117+ TimeUI . _updateExtentIndicator (
1118+ moment . utc ( TimeUI . removeOffset ( offsetNowDate ) )
1119+ )
10721120 }
10731121 if ( e . detail . activeHandle === idx + 1 ) {
10741122 $ ( '#mmgisTimeUIEndWrapperFake' ) . css ( 'display' , 'block' )
@@ -1077,6 +1125,10 @@ const TimeUI = {
10771125 . utc ( TimeUI . removeOffset ( offsetNowDate ) )
10781126 . format ( FORMAT )
10791127 )
1128+ TimeUI . _updateExtentIndicator (
1129+ null ,
1130+ moment . utc ( TimeUI . removeOffset ( offsetNowDate ) )
1131+ )
10801132 }
10811133 } )
10821134 TimeUI . timeSlider . $on ( 'stop' , ( e ) => {
@@ -1102,6 +1154,7 @@ const TimeUI = {
11021154 )
11031155 TimeUI . endTempus . dates . setValue ( parsedNow )
11041156 }
1157+ TimeUI . _updateExtentIndicator ( )
11051158 } )
11061159
11071160 if ( $ ( '#toggleTimeUI' ) . hasClass ( 'active' ) && ignoreHistogram !== true )
0 commit comments