diff options
| author | Terry Truong <terry06890@gmail.com> | 2022-10-14 17:25:32 +1100 |
|---|---|---|
| committer | Terry Truong <terry06890@gmail.com> | 2022-10-14 17:25:32 +1100 |
| commit | 48d5f04d82cfd2e49644c2d5a55256b0088520b5 (patch) | |
| tree | e3c418dee52c18568b6ae3c1b352a9ee2230b590 /src | |
| parent | 28e40c322562e55eb556f2a6864e5e054ec02df4 (diff) | |
Allow small drags beyond min/max dates
Diffstat (limited to 'src')
| -rw-r--r-- | src/components/TimeLine.vue | 38 |
1 files changed, 26 insertions, 12 deletions
diff --git a/src/components/TimeLine.vue b/src/components/TimeLine.vue index 9c58006..01c937c 100644 --- a/src/components/TimeLine.vue +++ b/src/components/TimeLine.vue @@ -251,16 +251,23 @@ function panTimeline(scrollRatio: number){ if (scrollRatio > 0){ while (true){ if (newEnd.equals(MAX_DATE, scale.value)){ - let extraChg = INITIAL_EXTRA_OFFSET - endOffset.value; - if (extraChg == 0){ + // Pan up to an offset of INITIAL_EXTRA_OFFSET + if (INITIAL_EXTRA_OFFSET == endOffset.value){ console.log('Reached maximum date limit'); newStartOffset = startOffset.value; newEndOffset = endOffset.value; } else { - let extraStartSteps: number; - [extraStartSteps, , newStartOffset, ] = getMovedBounds(extraChg, extraChg); - newEndOffset = INITIAL_EXTRA_OFFSET; - stepDate(newStart, scale.value, {count: extraStartSteps, inplace: true}); + if (numEndSteps > 0 || newEndOffset >= INITIAL_EXTRA_OFFSET){ + chgUnits = INITIAL_EXTRA_OFFSET - endOffset.value; + newEndOffset = INITIAL_EXTRA_OFFSET; + let extraStartSteps: number; + [extraStartSteps, , newStartOffset, ] = getMovedBounds(chgUnits, chgUnits); + stepDate(newStart, scale.value, {count: extraStartSteps, inplace: true}); + } else { + if (numStartSteps > 0){ + stepDate(newStart, scale.value, {count: numStartSteps, inplace: true}); + } + } } numStartSteps = 0; break; @@ -282,16 +289,23 @@ function panTimeline(scrollRatio: number){ } else { while (true){ if (MIN_DATE.equals(newStart, scale.value)){ - let extraChg = INITIAL_EXTRA_OFFSET - startOffset.value; - if (extraChg == 0){ + // Pan up to an offset of INITIAL_EXTRA_OFFSET + if (INITIAL_EXTRA_OFFSET == startOffset.value){ console.log('Reached minimum date limit'); newStartOffset = startOffset.value; newEndOffset = endOffset.value; } else { - let extraEndSteps: number; - [, extraEndSteps, , newEndOffset] = getMovedBounds(extraChg, extraChg); - newStartOffset = INITIAL_EXTRA_OFFSET; - stepDate(newEnd, scale.value, {count: extraEndSteps, inplace: true}); + if (numStartSteps < 0 || newStartOffset >= INITIAL_EXTRA_OFFSET){ + chgUnits = -INITIAL_EXTRA_OFFSET + startOffset.value; + newStartOffset = INITIAL_EXTRA_OFFSET; + let extraEndSteps: number; + [, extraEndSteps, , newEndOffset] = getMovedBounds(chgUnits, chgUnits); + stepDate(newEnd, scale.value, {count: extraEndSteps, inplace: true}); + } else { + if (numEndSteps < 0){ + stepDate(newEnd, scale.value, {count: numEndSteps, inplace: true}); + } + } } numEndSteps = 0; break; |
