UNPKG

turnilo

Version:

Business intelligence, data exploration and visualization web application for Druid, formerly known as Swiv and Pivot

76 lines 2.29 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const chronoshift_1 = require("chronoshift"); const filter_clause_1 = require("../filter-clause/filter-clause"); function isValidTimeShift(input) { try { TimeShift.fromJS(input); return true; } catch (_a) { return false; } } exports.isValidTimeShift = isValidTimeShift; class TimeShift { constructor(value) { this.value = value; } static fromJS(timeShift) { if (timeShift === null) { return TimeShift.empty(); } return new TimeShift(chronoshift_1.Duration.fromJS(timeShift)); } static empty() { return new TimeShift(null); } static isTimeShift(candidate) { return candidate instanceof TimeShift; } equals(other) { if (!TimeShift.isTimeShift(other)) { return false; } if (this.value === null) { return other.value === null; } return this.value.equals(other.value); } toJS() { return this.value === null ? null : this.value.toJS(); } toJSON() { return this.toJS(); } valueOf() { return this.value; } isEmpty() { return this.value === null; } getDescription(capitalize = false) { return this.value.getDescription(capitalize); } toString() { return this.toJS() || ""; } isValidForTimeFilter(timeFilter, timezone) { switch (timeFilter.type) { case filter_clause_1.FilterTypes.FIXED_TIME: const { values } = timeFilter; const range = values.first(); return !range.intersects(range.shift(this.value, timezone)); case filter_clause_1.FilterTypes.RELATIVE_TIME: const { duration } = timeFilter; return this.value.getCanonicalLength() >= duration.getCanonicalLength(); default: throw new Error(`Unknown time filter: ${timeFilter}`); } } constrainToFilter(timeFilter, timezone) { return this.value && this.isValidForTimeFilter(timeFilter, timezone) ? this : TimeShift.empty(); } } exports.TimeShift = TimeShift; //# sourceMappingURL=time-shift.js.map