Skip to content

Commit 28c3b17

Browse files
committed
#686 Add in TimeUI range extent indicator
1 parent 9369b76 commit 28c3b17

File tree

2 files changed

+63
-6
lines changed

2 files changed

+63
-6
lines changed

src/essence/Ancillary/TimeUI.css

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -336,7 +336,7 @@
336336
}
337337
#mmgisTimeUIStepWithinBeyond > div:first-child,
338338
#mmgisTimeUIStep > div:first-child,
339-
#mmgisTimeUIRate > div:First-child {
339+
#mmgisTimeUIRate > div:first-child {
340340
line-height: 30px;
341341
font-size: 13px;
342342
color: var(--color-a6);
@@ -371,12 +371,16 @@
371371
border-right: 1px solid var(--color-a1);
372372
}
373373

374-
375374
#mmgisTimeUITimelinePlayExtent {
376375
opacity: 0;
377376
height: 100%;
378377
position: absolute;
379378
background: #601a2e;
380-
transition: opacity 0.2s ease-out
379+
transition: opacity 0.2s ease-out;
380+
}
381+
#mmgisTimeUITimelineExtent {
382+
height: 100%;
383+
position: absolute;
384+
background: rgb(96, 78, 26, 0.7);
385+
transition: opacity 0.2s ease-out;
381386
}
382-

src/essence/Ancillary/TimeUI.js

Lines changed: 55 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)