@helgoland/core
Version: 
122 lines (121 loc) • 14.8 kB
JavaScript
/**
 * @fileoverview added by tsickle
 * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
 */
import { Injectable } from '@angular/core';
import moment from 'moment';
import { Timespan } from '../model/internal/timeInterval';
/** @enum {string} */
var DefinedTimespan = {
    LASTHOUR: 'last_hour',
    TODAY: 'today',
    YESTERDAY: 'yesterday',
    TODAY_YESTERDAY: 'today_yesterday',
    CURRENT_WEEK: 'current_week',
    LAST_WEEK: 'last_week',
    CURRENT_MONTH: 'current_month',
    LAST_MONTH: 'last_month',
    CURRENT_YEAR: 'current_year',
    LAST_YEAR: 'last_year',
};
export { DefinedTimespan };
var DefinedTimespanService = /** @class */ (function () {
    function DefinedTimespanService() {
        this.intervals = new Map();
        this.intervals.set(DefinedTimespan.LASTHOUR, function () {
            /** @type {?} */
            var from = moment().subtract(1, 'hours').unix() * 1000;
            /** @type {?} */
            var to = moment().unix() * 1000;
            return new Timespan(from, to);
        });
        this.intervals.set(DefinedTimespan.TODAY, function () {
            /** @type {?} */
            var from = moment().startOf('day').unix() * 1000;
            /** @type {?} */
            var to = moment().endOf('day').unix() * 1000;
            return new Timespan(from, to);
        });
        this.intervals.set(DefinedTimespan.YESTERDAY, function () {
            /** @type {?} */
            var from = moment().subtract(1, 'days').startOf('day').unix() * 1000;
            /** @type {?} */
            var to = moment().subtract(1, 'days').endOf('day').unix() * 1000;
            return new Timespan(from, to);
        });
        this.intervals.set(DefinedTimespan.TODAY_YESTERDAY, function () {
            /** @type {?} */
            var from = moment().subtract(1, 'days').startOf('day').unix() * 1000;
            /** @type {?} */
            var to = moment().endOf('day').unix() * 1000;
            return new Timespan(from, to);
        });
        this.intervals.set(DefinedTimespan.CURRENT_WEEK, function () {
            /** @type {?} */
            var from = moment().startOf('isoWeek').unix() * 1000;
            /** @type {?} */
            var to = moment().endOf('isoWeek').unix() * 1000;
            return new Timespan(from, to);
        });
        this.intervals.set(DefinedTimespan.LAST_WEEK, function () {
            /** @type {?} */
            var from = moment().subtract(1, 'weeks').startOf('isoWeek').unix() * 1000;
            /** @type {?} */
            var to = moment().subtract(1, 'weeks').endOf('isoWeek').unix() * 1000;
            return new Timespan(from, to);
        });
        this.intervals.set(DefinedTimespan.CURRENT_MONTH, function () {
            /** @type {?} */
            var from = moment().startOf('month').unix() * 1000;
            /** @type {?} */
            var to = moment().endOf('month').unix() * 1000;
            return new Timespan(from, to);
        });
        this.intervals.set(DefinedTimespan.LAST_MONTH, function () {
            /** @type {?} */
            var from = moment().subtract(1, 'months').startOf('month').unix() * 1000;
            /** @type {?} */
            var to = moment().subtract(1, 'months').endOf('month').unix() * 1000;
            return new Timespan(from, to);
        });
        this.intervals.set(DefinedTimespan.CURRENT_YEAR, function () {
            /** @type {?} */
            var from = moment().startOf('year').unix() * 1000;
            /** @type {?} */
            var to = moment().endOf('year').unix() * 1000;
            return new Timespan(from, to);
        });
        this.intervals.set(DefinedTimespan.LAST_YEAR, function () {
            /** @type {?} */
            var from = moment().subtract(1, 'years').startOf('year').unix() * 1000;
            /** @type {?} */
            var to = moment().subtract(1, 'years').endOf('year').unix() * 1000;
            return new Timespan(from, to);
        });
    }
    /**
     * @param {?} intervalDescriber
     * @return {?}
     */
    DefinedTimespanService.prototype.getInterval = /**
     * @param {?} intervalDescriber
     * @return {?}
     */
    function (intervalDescriber) {
        if (this.intervals.has(intervalDescriber)) {
            return this.intervals.get(intervalDescriber)();
        }
    };
    DefinedTimespanService.decorators = [
        { type: Injectable },
    ];
    /** @nocollapse */
    DefinedTimespanService.ctorParameters = function () { return []; };
    return DefinedTimespanService;
}());
export { DefinedTimespanService };
if (false) {
    /** @type {?} */
    DefinedTimespanService.prototype.intervals;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmaW5lZC10aW1lc3Bhbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGhlbGdvbGFuZC9jb3JlLyIsInNvdXJjZXMiOlsibGliL3RpbWUvZGVmaW5lZC10aW1lc3Bhbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUU1QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7OztJQUd0RCxVQUFXLFdBQVc7SUFDdEIsT0FBUSxPQUFPO0lBQ2YsV0FBWSxXQUFXO0lBQ3ZCLGlCQUFrQixpQkFBaUI7SUFDbkMsY0FBZSxjQUFjO0lBQzdCLFdBQVksV0FBVztJQUN2QixlQUFnQixlQUFlO0lBQy9CLFlBQWEsWUFBWTtJQUN6QixjQUFlLGNBQWM7SUFDN0IsV0FBWSxXQUFXOzs7O0lBUXZCO3lCQUYwRCxJQUFJLEdBQUcsRUFBRTtRQUcvRCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFOztZQUN6QyxJQUFNLElBQUksR0FBRyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQzs7WUFDekQsSUFBTSxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDO1lBQ2xDLE1BQU0sQ0FBQyxJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDakMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRTs7WUFDdEMsSUFBTSxJQUFJLEdBQUcsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLElBQUks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SUFBTSxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDO1lBQ3JFLE1BQU0sQ0FBQyxJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDakMsQ0FBQyxDQUFDO0tBQ047Ozs7O0lBRU0sNENBQVc7Ozs7Y0FBQyxpQkFBa0M7UUFDakQsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztTQUNsRDs7O2dCQTdEUixVQUFVOzs7O2lDQWxCWDs7U0FtQmEsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuXG5pbXBvcnQgeyBUaW1lc3BhbiB9IGZyb20gJy4uL21vZGVsL2ludGVybmFsL3RpbWVJbnRlcnZhbCc7XG5cbmV4cG9ydCBlbnVtIERlZmluZWRUaW1lc3BhbiB7XG4gICAgTEFTVEhPVVIgPSAnbGFzdF9ob3VyJyxcbiAgICBUT0RBWSA9ICd0b2RheScsXG4gICAgWUVTVEVSREFZID0gJ3llc3RlcmRheScsXG4gICAgVE9EQVlfWUVTVEVSREFZID0gJ3RvZGF5X3llc3RlcmRheScsXG4gICAgQ1VSUkVOVF9XRUVLID0gJ2N1cnJlbnRfd2VlaycsXG4gICAgTEFTVF9XRUVLID0gJ2xhc3Rfd2VlaycsXG4gICAgQ1VSUkVOVF9NT05USCA9ICdjdXJyZW50X21vbnRoJyxcbiAgICBMQVNUX01PTlRIID0gJ2xhc3RfbW9udGgnLFxuICAgIENVUlJFTlRfWUVBUiA9ICdjdXJyZW50X3llYXInLFxuICAgIExBU1RfWUVBUiA9ICdsYXN0X3llYXInXG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEZWZpbmVkVGltZXNwYW5TZXJ2aWNlIHtcblxuICAgIHByaXZhdGUgaW50ZXJ2YWxzOiBNYXA8RGVmaW5lZFRpbWVzcGFuLCAoKSA9PiBUaW1lc3Bhbj4gPSBuZXcgTWFwKCk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5pbnRlcnZhbHMuc2V0KERlZmluZWRUaW1lc3Bhbi5MQVNUSE9VUiwgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZnJvbSA9IG1vbWVudCgpLnN1YnRyYWN0KDEsICdob3VycycpLnVuaXgoKSAqIDEwMDA7XG4gICAgICAgICAgICBjb25zdCB0byA9IG1vbWVudCgpLnVuaXgoKSAqIDEwMDA7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFRpbWVzcGFuKGZyb20sIHRvKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuaW50ZXJ2YWxzLnNldChEZWZpbmVkVGltZXNwYW4uVE9EQVksICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZyb20gPSBtb21lbnQoKS5zdGFydE9mKCdkYXknKS51bml4KCkgKiAxMDAwO1xuICAgICAgICAgICAgY29uc3QgdG8gPSBtb21lbnQoKS5lbmRPZignZGF5JykudW5peCgpICogMTAwMDtcbiAgICAgICAgICAgIHJldHVybiBuZXcgVGltZXNwYW4oZnJvbSwgdG8pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5pbnRlcnZhbHMuc2V0KERlZmluZWRUaW1lc3Bhbi5ZRVNURVJEQVksICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZyb20gPSBtb21lbnQoKS5zdWJ0cmFjdCgxLCAnZGF5cycpLnN0YXJ0T2YoJ2RheScpLnVuaXgoKSAqIDEwMDA7XG4gICAgICAgICAgICBjb25zdCB0byA9IG1vbWVudCgpLnN1YnRyYWN0KDEsICdkYXlzJykuZW5kT2YoJ2RheScpLnVuaXgoKSAqIDEwMDA7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFRpbWVzcGFuKGZyb20sIHRvKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuaW50ZXJ2YWxzLnNldChEZWZpbmVkVGltZXNwYW4uVE9EQVlfWUVTVEVSREFZLCAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmcm9tID0gbW9tZW50KCkuc3VidHJhY3QoMSwgJ2RheXMnKS5zdGFydE9mKCdkYXknKS51bml4KCkgKiAxMDAwO1xuICAgICAgICAgICAgY29uc3QgdG8gPSBtb21lbnQoKS5lbmRPZignZGF5JykudW5peCgpICogMTAwMDtcbiAgICAgICAgICAgIHJldHVybiBuZXcgVGltZXNwYW4oZnJvbSwgdG8pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5pbnRlcnZhbHMuc2V0KERlZmluZWRUaW1lc3Bhbi5DVVJSRU5UX1dFRUssICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZyb20gPSBtb21lbnQoKS5zdGFydE9mKCdpc29XZWVrJykudW5peCgpICogMTAwMDtcbiAgICAgICAgICAgIGNvbnN0IHRvID0gbW9tZW50KCkuZW5kT2YoJ2lzb1dlZWsnKS51bml4KCkgKiAxMDAwO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBUaW1lc3Bhbihmcm9tLCB0byk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmludGVydmFscy5zZXQoRGVmaW5lZFRpbWVzcGFuLkxBU1RfV0VFSywgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZnJvbSA9IG1vbWVudCgpLnN1YnRyYWN0KDEsICd3ZWVrcycpLnN0YXJ0T2YoJ2lzb1dlZWsnKS51bml4KCkgKiAxMDAwO1xuICAgICAgICAgICAgY29uc3QgdG8gPSBtb21lbnQoKS5zdWJ0cmFjdCgxLCAnd2Vla3MnKS5lbmRPZignaXNvV2VlaycpLnVuaXgoKSAqIDEwMDA7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFRpbWVzcGFuKGZyb20sIHRvKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuaW50ZXJ2YWxzLnNldChEZWZpbmVkVGltZXNwYW4uQ1VSUkVOVF9NT05USCwgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZnJvbSA9IG1vbWVudCgpLnN0YXJ0T2YoJ21vbnRoJykudW5peCgpICogMTAwMDtcbiAgICAgICAgICAgIGNvbnN0IHRvID0gbW9tZW50KCkuZW5kT2YoJ21vbnRoJykudW5peCgpICogMTAwMDtcbiAgICAgICAgICAgIHJldHVybiBuZXcgVGltZXNwYW4oZnJvbSwgdG8pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5pbnRlcnZhbHMuc2V0KERlZmluZWRUaW1lc3Bhbi5MQVNUX01PTlRILCAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmcm9tID0gbW9tZW50KCkuc3VidHJhY3QoMSwgJ21vbnRocycpLnN0YXJ0T2YoJ21vbnRoJykudW5peCgpICogMTAwMDtcbiAgICAgICAgICAgIGNvbnN0IHRvID0gbW9tZW50KCkuc3VidHJhY3QoMSwgJ21vbnRocycpLmVuZE9mKCdtb250aCcpLnVuaXgoKSAqIDEwMDA7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFRpbWVzcGFuKGZyb20sIHRvKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuaW50ZXJ2YWxzLnNldChEZWZpbmVkVGltZXNwYW4uQ1VSUkVOVF9ZRUFSLCAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmcm9tID0gbW9tZW50KCkuc3RhcnRPZigneWVhcicpLnVuaXgoKSAqIDEwMDA7XG4gICAgICAgICAgICBjb25zdCB0byA9IG1vbWVudCgpLmVuZE9mKCd5ZWFyJykudW5peCgpICogMTAwMDtcbiAgICAgICAgICAgIHJldHVybiBuZXcgVGltZXNwYW4oZnJvbSwgdG8pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5pbnRlcnZhbHMuc2V0KERlZmluZWRUaW1lc3Bhbi5MQVNUX1lFQVIsICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZyb20gPSBtb21lbnQoKS5zdWJ0cmFjdCgxLCAneWVhcnMnKS5zdGFydE9mKCd5ZWFyJykudW5peCgpICogMTAwMDtcbiAgICAgICAgICAgIGNvbnN0IHRvID0gbW9tZW50KCkuc3VidHJhY3QoMSwgJ3llYXJzJykuZW5kT2YoJ3llYXInKS51bml4KCkgKiAxMDAwO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBUaW1lc3Bhbihmcm9tLCB0byk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRJbnRlcnZhbChpbnRlcnZhbERlc2NyaWJlcjogRGVmaW5lZFRpbWVzcGFuKTogVGltZXNwYW4ge1xuICAgICAgICBpZiAodGhpcy5pbnRlcnZhbHMuaGFzKGludGVydmFsRGVzY3JpYmVyKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW50ZXJ2YWxzLmdldChpbnRlcnZhbERlc2NyaWJlcikoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==