aboutsummaryrefslogtreecommitdiff
path: root/src/lib.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib.ts')
-rw-r--r--src/lib.ts20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/lib.ts b/src/lib.ts
index fdabe4b..353fa57 100644
--- a/src/lib.ts
+++ b/src/lib.ts
@@ -473,6 +473,26 @@ export function getUnitDiff(date: HistDate, date2: HistDate, scale: number): num
return date.getYearDiff(date2) / scale;
}
}
+export function getEventPrecision(event: HistEvent): number {
+ // Returns smallest scale at which 'event's start-startUpper range is within one unit, or infinity
+ // Note: Intentionally not adding an exception for century and millenia ranges like
+ // 101 to 200 (as opposed to 100 to 199) being interpreted as 'within' one 100/1000-year scale unit
+ const {start, startUpper} = event;
+ if (startUpper == null || start.getDayDiff(startUpper) == 0){
+ return DAY_SCALE;
+ }
+ if (start.getMonthDiff(startUpper) == 0){
+ return MONTH_SCALE;
+ }
+ const yearScaleIdx = SCALES.length - 1 - 2;
+ for (let scaleIdx = yearScaleIdx; scaleIdx >= 0; scaleIdx--){
+ const scale = SCALES[scaleIdx];
+ if (Math.floor(start.year / scale) == Math.floor(startUpper.year / scale)){
+ return scale;
+ }
+ }
+ return Number.POSITIVE_INFINITY;
+}
// For sending timeline-bound data to BaseLine
export class TimelineState {