@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
89 lines • 12.4 kB
JavaScript
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