UNPKG

@c8y/ngx-components

Version:

Angular modules for Cumulocity IoT applications

89 lines 12.4 kB
import { Injectable } from '@angular/core'; import { WidgetTimeContextActionBarPriority } from './widget-time-context.model'; import { aggregationType } from '@c8y/client'; import { INTERVALS } from '@c8y/ngx-components/interval-picker'; import * as i0 from "@angular/core"; export class WidgetTimeContextHelperService { /** * Validates provided param for being selectable Interval id. * @param intervalId Interval id to be validated. * @returns True if provided id is valid, selectable Interval id and false if it's not. */ isSelectableInterval(intervalId) { if (intervalId === 'custom') { return false; } return INTERVALS.some(({ id }) => id === intervalId); } /** * Validates provided date "from" and date "to": * - if both dates are proper date strings * - if provided date from is earlier than date to. * @param stringifiedDateFrom Date "from" that should be validated. * @param stringifiedDateTo Date "to" that should be validated. * @returns Result of validation of dates range. */ isValidDateRange(stringifiedDateFrom, stringifiedDateTo) { const dateFrom = new Date(stringifiedDateFrom); const dateTo = new Date(stringifiedDateTo); if (dateFrom instanceof Date && !isNaN(dateFrom?.getTime()) && dateTo instanceof Date && !isNaN(dateTo?.getTime())) { return dateFrom < dateTo; } return false; } /** * Validates provided aggregation: * @param aggregation Date "from" that should be validated. * @returns Result of validation of aggregation. */ isValidAggregation(aggregation) { const possibleAggregations = [null, ...Object.keys(aggregationType)]; return possibleAggregations.includes(aggregation); } /** * Calculates date time context according to provided interval. * @param intervalId Interval id indicating time range. * @returns Tuple of dates- the first one is date "from" according to selected interval, second one is date "to" (now). */ getDateTimeContextByInterval(intervalId) { const interval = INTERVALS.find(({ id }) => id === intervalId); const dateTo = new Date(); const dateFrom = new Date(dateTo.valueOf() - interval.timespanInMs); return [dateFrom, dateTo]; } /** * Defines priority for single action bar item of bar items that has the 'timecontext' groupId. * Widgets that uses WidgetTimeContextComponent can be assigned to three levels of priority: * HIGH priority means that widget is using time range pickers, realtime and aggregation features. * Widgets: Data points graph, Data points graph 2.0, Data points table. * MEDIUM priority means that widget is using time range pickers and realtime features. * Widgets: Event list. * LOW priority means that widget is using realtime feature only. * Widgets: Map * @param displaySettings Settings indicating which features of WidgetTimeContextComponent are used by widget. * @returns priority of widget action bar item. */ getActionBarPriority(displaySettings) { const { globalTimeContext, globalRealtimeContext, globalAggregationContext } = displaySettings; if (globalTimeContext && globalRealtimeContext && globalAggregationContext) { return WidgetTimeContextActionBarPriority.HIGH; } if (globalTimeContext && globalRealtimeContext) { return WidgetTimeContextActionBarPriority.MEDIUM; } if (globalRealtimeContext) { return WidgetTimeContextActionBarPriority.LOW; } return WidgetTimeContextActionBarPriority.NONE; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WidgetTimeContextHelperService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WidgetTimeContextHelperService, providedIn: 'root' }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WidgetTimeContextHelperService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXRpbWUtY29udGV4dC1oZWxwZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2NvcmUvZGFzaGJvYXJkL3dpZ2V0LXRpbWUtY29udGV4dC93aWRnZXQtdGltZS1jb250ZXh0LWhlbHBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUNMLGtDQUFrQyxFQUVuQyxNQUFNLDZCQUE2QixDQUFDO0FBRXJDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDOUMsT0FBTyxFQUFZLFNBQVMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOztBQUcxRSxNQUFNLE9BQU8sOEJBQThCO0lBQ3pDOzs7O09BSUc7SUFDSCxvQkFBb0IsQ0FBQyxVQUEwQjtRQUM3QyxJQUFJLFVBQVUsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM1QixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssVUFBVSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxnQkFBZ0IsQ0FBQyxtQkFBMkIsRUFBRSxpQkFBeUI7UUFDckUsTUFBTSxRQUFRLEdBQUcsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUMvQyxNQUFNLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzNDLElBQ0UsUUFBUSxZQUFZLElBQUk7WUFDeEIsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDO1lBQzNCLE1BQU0sWUFBWSxJQUFJO1lBQ3RCLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUN6QixDQUFDO1lBQ0QsT0FBTyxRQUFRLEdBQUcsTUFBTSxDQUFDO1FBQzNCLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsa0JBQWtCLENBQUMsV0FBNEI7UUFDN0MsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQXNCLENBQUM7UUFDMUYsT0FBTyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCw0QkFBNEIsQ0FBQyxVQUEwQjtRQUNyRCxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLFVBQVUsQ0FBQyxDQUFDO1FBQy9ELE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDMUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNwRSxPQUFPLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7T0FXRztJQUNILG9CQUFvQixDQUFDLGVBQXNDO1FBQ3pELE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxxQkFBcUIsRUFBRSx3QkFBd0IsRUFBRSxHQUFHLGVBQWUsQ0FBQztRQUMvRixJQUFJLGlCQUFpQixJQUFJLHFCQUFxQixJQUFJLHdCQUF3QixFQUFFLENBQUM7WUFDM0UsT0FBTyxrQ0FBa0MsQ0FBQyxJQUFJLENBQUM7UUFDakQsQ0FBQztRQUNELElBQUksaUJBQWlCLElBQUkscUJBQXFCLEVBQUUsQ0FBQztZQUMvQyxPQUFPLGtDQUFrQyxDQUFDLE1BQU0sQ0FBQztRQUNuRCxDQUFDO1FBQ0QsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO1lBQzFCLE9BQU8sa0NBQWtDLENBQUMsR0FBRyxDQUFDO1FBQ2hELENBQUM7UUFDRCxPQUFPLGtDQUFrQyxDQUFDLElBQUksQ0FBQztJQUNqRCxDQUFDOytHQWpGVSw4QkFBOEI7bUhBQTlCLDhCQUE4QixjQURqQixNQUFNOzs0RkFDbkIsOEJBQThCO2tCQUQxQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIFdpZGdldFRpbWVDb250ZXh0QWN0aW9uQmFyUHJpb3JpdHksXG4gIFdpZGdldERpc3BsYXlTZXR0aW5nc1xufSBmcm9tICcuL3dpZGdldC10aW1lLWNvbnRleHQubW9kZWwnO1xuaW1wb3J0IHsgRGF0ZVRpbWVDb250ZXh0IH0gZnJvbSAnLi4vd2lkZ2V0LWNoYW5nZS1ldmVudC5tb2RlbCc7XG5pbXBvcnQgeyBhZ2dyZWdhdGlvblR5cGUgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBJbnRlcnZhbCwgSU5URVJWQUxTIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9pbnRlcnZhbC1waWNrZXInO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFdpZGdldFRpbWVDb250ZXh0SGVscGVyU2VydmljZSB7XG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgcHJvdmlkZWQgcGFyYW0gZm9yIGJlaW5nIHNlbGVjdGFibGUgSW50ZXJ2YWwgaWQuXG4gICAqIEBwYXJhbSBpbnRlcnZhbElkIEludGVydmFsIGlkIHRvIGJlIHZhbGlkYXRlZC5cbiAgICogQHJldHVybnMgVHJ1ZSBpZiBwcm92aWRlZCBpZCBpcyB2YWxpZCwgc2VsZWN0YWJsZSBJbnRlcnZhbCBpZCBhbmQgZmFsc2UgaWYgaXQncyBub3QuXG4gICAqL1xuICBpc1NlbGVjdGFibGVJbnRlcnZhbChpbnRlcnZhbElkOiBJbnRlcnZhbFsnaWQnXSkge1xuICAgIGlmIChpbnRlcnZhbElkID09PSAnY3VzdG9tJykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gSU5URVJWQUxTLnNvbWUoKHsgaWQgfSkgPT4gaWQgPT09IGludGVydmFsSWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBwcm92aWRlZCBkYXRlIFwiZnJvbVwiIGFuZCBkYXRlIFwidG9cIjpcbiAgICogLSBpZiBib3RoIGRhdGVzIGFyZSBwcm9wZXIgZGF0ZSBzdHJpbmdzXG4gICAqIC0gaWYgcHJvdmlkZWQgZGF0ZSBmcm9tIGlzIGVhcmxpZXIgdGhhbiBkYXRlIHRvLlxuICAgKiBAcGFyYW0gc3RyaW5naWZpZWREYXRlRnJvbSBEYXRlIFwiZnJvbVwiIHRoYXQgc2hvdWxkIGJlIHZhbGlkYXRlZC5cbiAgICogQHBhcmFtIHN0cmluZ2lmaWVkRGF0ZVRvIERhdGUgXCJ0b1wiIHRoYXQgc2hvdWxkIGJlIHZhbGlkYXRlZC5cbiAgICogQHJldHVybnMgUmVzdWx0IG9mIHZhbGlkYXRpb24gb2YgZGF0ZXMgcmFuZ2UuXG4gICAqL1xuICBpc1ZhbGlkRGF0ZVJhbmdlKHN0cmluZ2lmaWVkRGF0ZUZyb206IHN0cmluZywgc3RyaW5naWZpZWREYXRlVG86IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGRhdGVGcm9tID0gbmV3IERhdGUoc3RyaW5naWZpZWREYXRlRnJvbSk7XG4gICAgY29uc3QgZGF0ZVRvID0gbmV3IERhdGUoc3RyaW5naWZpZWREYXRlVG8pO1xuICAgIGlmIChcbiAgICAgIGRhdGVGcm9tIGluc3RhbmNlb2YgRGF0ZSAmJlxuICAgICAgIWlzTmFOKGRhdGVGcm9tPy5nZXRUaW1lKCkpICYmXG4gICAgICBkYXRlVG8gaW5zdGFuY2VvZiBEYXRlICYmXG4gICAgICAhaXNOYU4oZGF0ZVRvPy5nZXRUaW1lKCkpXG4gICAgKSB7XG4gICAgICByZXR1cm4gZGF0ZUZyb20gPCBkYXRlVG87XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgcHJvdmlkZWQgYWdncmVnYXRpb246XG4gICAqIEBwYXJhbSBhZ2dyZWdhdGlvbiBEYXRlIFwiZnJvbVwiIHRoYXQgc2hvdWxkIGJlIHZhbGlkYXRlZC5cbiAgICogQHJldHVybnMgUmVzdWx0IG9mIHZhbGlkYXRpb24gb2YgYWdncmVnYXRpb24uXG4gICAqL1xuICBpc1ZhbGlkQWdncmVnYXRpb24oYWdncmVnYXRpb246IGFnZ3JlZ2F0aW9uVHlwZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHBvc3NpYmxlQWdncmVnYXRpb25zID0gW251bGwsIC4uLk9iamVjdC5rZXlzKGFnZ3JlZ2F0aW9uVHlwZSldIGFzIGFnZ3JlZ2F0aW9uVHlwZVtdO1xuICAgIHJldHVybiBwb3NzaWJsZUFnZ3JlZ2F0aW9ucy5pbmNsdWRlcyhhZ2dyZWdhdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogQ2FsY3VsYXRlcyBkYXRlIHRpbWUgY29udGV4dCBhY2NvcmRpbmcgdG8gcHJvdmlkZWQgaW50ZXJ2YWwuXG4gICAqIEBwYXJhbSBpbnRlcnZhbElkIEludGVydmFsIGlkIGluZGljYXRpbmcgdGltZSByYW5nZS5cbiAgICogQHJldHVybnMgVHVwbGUgb2YgZGF0ZXMtIHRoZSBmaXJzdCBvbmUgaXMgZGF0ZSBcImZyb21cIiBhY2NvcmRpbmcgdG8gc2VsZWN0ZWQgaW50ZXJ2YWwsIHNlY29uZCBvbmUgaXMgZGF0ZSBcInRvXCIgKG5vdykuXG4gICAqL1xuICBnZXREYXRlVGltZUNvbnRleHRCeUludGVydmFsKGludGVydmFsSWQ6IEludGVydmFsWydpZCddKTogRGF0ZVRpbWVDb250ZXh0IHtcbiAgICBjb25zdCBpbnRlcnZhbCA9IElOVEVSVkFMUy5maW5kKCh7IGlkIH0pID0+IGlkID09PSBpbnRlcnZhbElkKTtcbiAgICBjb25zdCBkYXRlVG8gPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IGRhdGVGcm9tID0gbmV3IERhdGUoZGF0ZVRvLnZhbHVlT2YoKSAtIGludGVydmFsLnRpbWVzcGFuSW5Ncyk7XG4gICAgcmV0dXJuIFtkYXRlRnJvbSwgZGF0ZVRvXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmVzIHByaW9yaXR5IGZvciBzaW5nbGUgYWN0aW9uIGJhciBpdGVtIG9mIGJhciBpdGVtcyB0aGF0IGhhcyB0aGUgJ3RpbWVjb250ZXh0JyBncm91cElkLlxuICAgKiBXaWRnZXRzIHRoYXQgdXNlcyBXaWRnZXRUaW1lQ29udGV4dENvbXBvbmVudCBjYW4gYmUgYXNzaWduZWQgdG8gdGhyZWUgbGV2ZWxzIG9mIHByaW9yaXR5OlxuICAgKiBISUdIIHByaW9yaXR5IG1lYW5zIHRoYXQgd2lkZ2V0IGlzIHVzaW5nIHRpbWUgcmFuZ2UgcGlja2VycywgcmVhbHRpbWUgYW5kIGFnZ3JlZ2F0aW9uIGZlYXR1cmVzLlxuICAgKiBXaWRnZXRzOiBEYXRhIHBvaW50cyBncmFwaCwgRGF0YSBwb2ludHMgZ3JhcGggMi4wLCBEYXRhIHBvaW50cyB0YWJsZS5cbiAgICogTUVESVVNIHByaW9yaXR5IG1lYW5zIHRoYXQgd2lkZ2V0IGlzIHVzaW5nIHRpbWUgcmFuZ2UgcGlja2VycyBhbmQgcmVhbHRpbWUgZmVhdHVyZXMuXG4gICAqIFdpZGdldHM6IEV2ZW50IGxpc3QuXG4gICAqIExPVyBwcmlvcml0eSBtZWFucyB0aGF0IHdpZGdldCBpcyB1c2luZyByZWFsdGltZSBmZWF0dXJlIG9ubHkuXG4gICAqIFdpZGdldHM6IE1hcFxuICAgKiBAcGFyYW0gZGlzcGxheVNldHRpbmdzIFNldHRpbmdzIGluZGljYXRpbmcgd2hpY2ggZmVhdHVyZXMgb2YgV2lkZ2V0VGltZUNvbnRleHRDb21wb25lbnQgYXJlIHVzZWQgYnkgd2lkZ2V0LlxuICAgKiBAcmV0dXJucyBwcmlvcml0eSBvZiB3aWRnZXQgYWN0aW9uIGJhciBpdGVtLlxuICAgKi9cbiAgZ2V0QWN0aW9uQmFyUHJpb3JpdHkoZGlzcGxheVNldHRpbmdzOiBXaWRnZXREaXNwbGF5U2V0dGluZ3MpOiBXaWRnZXRUaW1lQ29udGV4dEFjdGlvbkJhclByaW9yaXR5IHtcbiAgICBjb25zdCB7IGdsb2JhbFRpbWVDb250ZXh0LCBnbG9iYWxSZWFsdGltZUNvbnRleHQsIGdsb2JhbEFnZ3JlZ2F0aW9uQ29udGV4dCB9ID0gZGlzcGxheVNldHRpbmdzO1xuICAgIGlmIChnbG9iYWxUaW1lQ29udGV4dCAmJiBnbG9iYWxSZWFsdGltZUNvbnRleHQgJiYgZ2xvYmFsQWdncmVnYXRpb25Db250ZXh0KSB7XG4gICAgICByZXR1cm4gV2lkZ2V0VGltZUNvbnRleHRBY3Rpb25CYXJQcmlvcml0eS5ISUdIO1xuICAgIH1cbiAgICBpZiAoZ2xvYmFsVGltZUNvbnRleHQgJiYgZ2xvYmFsUmVhbHRpbWVDb250ZXh0KSB7XG4gICAgICByZXR1cm4gV2lkZ2V0VGltZUNvbnRleHRBY3Rpb25CYXJQcmlvcml0eS5NRURJVU07XG4gICAgfVxuICAgIGlmIChnbG9iYWxSZWFsdGltZUNvbnRleHQpIHtcbiAgICAgIHJldHVybiBXaWRnZXRUaW1lQ29udGV4dEFjdGlvbkJhclByaW9yaXR5LkxPVztcbiAgICB9XG4gICAgcmV0dXJuIFdpZGdldFRpbWVDb250ZXh0QWN0aW9uQmFyUHJpb3JpdHkuTk9ORTtcbiAgfVxufVxuIl19