UNPKG

@c8y/ngx-components

Version:

Angular modules for Cumulocity IoT applications

84 lines 9.52 kB
import { Injectable } from '@angular/core'; import { AssetNodeService } from '../asset-node.service'; import { isArray, isNumber, isObject, isString } from 'lodash'; import * as i0 from "@angular/core"; export class AssetSelectorService extends AssetNodeService { constructor() { super(...arguments); /** * Function which will check if the node is selectable. */ this.isNodeSelectableFn = true; } /** * Sets the function that will decide if the node is selectable. * @param fn A boolean or a function that will decide if the node is selectable. */ setIsNodeSelectable(fn) { this.isNodeSelectableFn = fn; } /** * Checks if the node is selectable. * @param node The node to check. */ isNodeSelectable(node) { if (typeof this.isNodeSelectableFn === 'boolean') { return this.isNodeSelectableFn; } else if (typeof this.isNodeSelectableFn === 'function') { return this.isNodeSelectableFn(node); } return true; } /** * Simplifies the object model based on the selected mode. * @param obj The selected asset. * @param mode The mode which will decide what type of model will be returned. */ normalizeValue(obj, modelMode) { return this.simplifyModel(this.normalizeModelValue(obj), modelMode); } simplifyModel(model, mode) { const mapModel = model => { const { id, name, c8y_DeviceQueryString } = model; return { id, name, ...(c8y_DeviceQueryString ? { c8y_DeviceQueryString } : {}) }; }; if (mode === 'full') { return model; } if (!isArray(model)) { return mapModel(model); } return model.map(mapModel); } /** * Returns the index of the currently selected item. * @param selected All selected items * @param selectedMo The new selected item- * @returns An index, or -1 if not found. */ getIndexOfSelected(selected, selectedMo) { return selected.findIndex(mo => mo.id === selectedMo.id); } normalizeModelValue(value) { if (isNumber(value) || isString(value)) { return [{ id: value }]; } if (isArray(value)) { return value; } if (isObject(value)) { return [value]; } return []; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AssetSelectorService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AssetSelectorService, providedIn: 'root' }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AssetSelectorService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtc2VsZWN0b3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2Fzc2V0cy1uYXZpZ2F0b3IvYXNzZXQtc2VsZWN0b3IvYXNzZXQtc2VsZWN0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxRQUFRLENBQUM7O0FBTS9ELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxnQkFBZ0I7SUFIMUQ7O1FBSUU7O1dBRUc7UUFDSyx1QkFBa0IsR0FBNkMsSUFBSSxDQUFDO0tBNkU3RTtJQTNFQzs7O09BR0c7SUFDSCxtQkFBbUIsQ0FBQyxFQUE0QztRQUM5RCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRDs7O09BR0c7SUFDSCxnQkFBZ0IsQ0FBQyxJQUFlO1FBQzlCLElBQUksT0FBTyxJQUFJLENBQUMsa0JBQWtCLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDakQsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUM7UUFDakMsQ0FBQzthQUFNLElBQUksT0FBTyxJQUFJLENBQUMsa0JBQWtCLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDekQsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNEOzs7O09BSUc7SUFDSCxjQUFjLENBQ1osR0FBNEIsRUFDNUIsU0FBNEI7UUFFNUIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsYUFBYSxDQUNYLEtBQThDLEVBQzlDLElBQXVCO1FBRXZCLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxFQUFFO1lBQ3ZCLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixFQUFFLEdBQUcsS0FBb0IsQ0FBQztZQUNqRSxPQUFPLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEVBQUUscUJBQXFCLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNuRixDQUFDLENBQUM7UUFFRixJQUFJLElBQUksS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUNwQixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDcEIsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekIsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxrQkFBa0IsQ0FDaEIsUUFBNEQsRUFDNUQsVUFBdUI7UUFFdkIsT0FBTyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVPLG1CQUFtQixDQUFDLEtBQVU7UUFDcEMsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDekIsQ0FBQztRQUNELElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDbkIsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNwQixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakIsQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQzsrR0FoRlUsb0JBQW9CO21IQUFwQixvQkFBb0IsY0FGbkIsTUFBTTs7NEZBRVAsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElJZGVudGlmaWVkLCBJTWFuYWdlZE9iamVjdCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IEFzc2V0Tm9kZVNlcnZpY2UgfSBmcm9tICcuLi9hc3NldC1ub2RlLnNlcnZpY2UnO1xuaW1wb3J0IHsgaXNBcnJheSwgaXNOdW1iZXIsIGlzT2JqZWN0LCBpc1N0cmluZyB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBHcm91cE5vZGUgfSBmcm9tICcuL2dyb3VwLW5vZGUnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBc3NldFNlbGVjdG9yU2VydmljZSBleHRlbmRzIEFzc2V0Tm9kZVNlcnZpY2Uge1xuICAvKipcbiAgICogRnVuY3Rpb24gd2hpY2ggd2lsbCBjaGVjayBpZiB0aGUgbm9kZSBpcyBzZWxlY3RhYmxlLlxuICAgKi9cbiAgcHJpdmF0ZSBpc05vZGVTZWxlY3RhYmxlRm46IGJvb2xlYW4gfCAoKG5vZGU6IEdyb3VwTm9kZSkgPT4gYm9vbGVhbikgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBmdW5jdGlvbiB0aGF0IHdpbGwgZGVjaWRlIGlmIHRoZSBub2RlIGlzIHNlbGVjdGFibGUuXG4gICAqIEBwYXJhbSBmbiBBIGJvb2xlYW4gb3IgYSBmdW5jdGlvbiB0aGF0IHdpbGwgZGVjaWRlIGlmIHRoZSBub2RlIGlzIHNlbGVjdGFibGUuXG4gICAqL1xuICBzZXRJc05vZGVTZWxlY3RhYmxlKGZuOiBib29sZWFuIHwgKChub2RlOiBHcm91cE5vZGUpID0+IGJvb2xlYW4pKTogdm9pZCB7XG4gICAgdGhpcy5pc05vZGVTZWxlY3RhYmxlRm4gPSBmbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIG5vZGUgaXMgc2VsZWN0YWJsZS5cbiAgICogQHBhcmFtIG5vZGUgVGhlIG5vZGUgdG8gY2hlY2suXG4gICAqL1xuICBpc05vZGVTZWxlY3RhYmxlKG5vZGU6IEdyb3VwTm9kZSk6IGJvb2xlYW4ge1xuICAgIGlmICh0eXBlb2YgdGhpcy5pc05vZGVTZWxlY3RhYmxlRm4gPT09ICdib29sZWFuJykge1xuICAgICAgcmV0dXJuIHRoaXMuaXNOb2RlU2VsZWN0YWJsZUZuO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMuaXNOb2RlU2VsZWN0YWJsZUZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gdGhpcy5pc05vZGVTZWxlY3RhYmxlRm4obm9kZSk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIC8qKlxuICAgKiBTaW1wbGlmaWVzIHRoZSBvYmplY3QgbW9kZWwgYmFzZWQgb24gdGhlIHNlbGVjdGVkIG1vZGUuXG4gICAqIEBwYXJhbSBvYmogVGhlIHNlbGVjdGVkIGFzc2V0LlxuICAgKiBAcGFyYW0gbW9kZSBUaGUgbW9kZSB3aGljaCB3aWxsIGRlY2lkZSB3aGF0IHR5cGUgb2YgbW9kZWwgd2lsbCBiZSByZXR1cm5lZC5cbiAgICovXG4gIG5vcm1hbGl6ZVZhbHVlKFxuICAgIG9iajogUGFydGlhbDxJTWFuYWdlZE9iamVjdD4sXG4gICAgbW9kZWxNb2RlOiAnc2ltcGxlJyB8ICdmdWxsJ1xuICApOiBQYXJ0aWFsPElNYW5hZ2VkT2JqZWN0PiB8IElJZGVudGlmaWVkIHtcbiAgICByZXR1cm4gdGhpcy5zaW1wbGlmeU1vZGVsKHRoaXMubm9ybWFsaXplTW9kZWxWYWx1ZShvYmopLCBtb2RlbE1vZGUpO1xuICB9XG5cbiAgc2ltcGxpZnlNb2RlbChcbiAgICBtb2RlbDogUGFydGlhbDxJTWFuYWdlZE9iamVjdD4gfCBJSWRlbnRpZmllZFtdLFxuICAgIG1vZGU6ICdzaW1wbGUnIHwgJ2Z1bGwnXG4gICk6IFBhcnRpYWw8SU1hbmFnZWRPYmplY3Q+IHwgSUlkZW50aWZpZWQge1xuICAgIGNvbnN0IG1hcE1vZGVsID0gbW9kZWwgPT4ge1xuICAgICAgY29uc3QgeyBpZCwgbmFtZSwgYzh5X0RldmljZVF1ZXJ5U3RyaW5nIH0gPSBtb2RlbCBhcyBJSWRlbnRpZmllZDtcbiAgICAgIHJldHVybiB7IGlkLCBuYW1lLCAuLi4oYzh5X0RldmljZVF1ZXJ5U3RyaW5nID8geyBjOHlfRGV2aWNlUXVlcnlTdHJpbmcgfSA6IHt9KSB9O1xuICAgIH07XG5cbiAgICBpZiAobW9kZSA9PT0gJ2Z1bGwnKSB7XG4gICAgICByZXR1cm4gbW9kZWw7XG4gICAgfVxuICAgIGlmICghaXNBcnJheShtb2RlbCkpIHtcbiAgICAgIHJldHVybiBtYXBNb2RlbChtb2RlbCk7XG4gICAgfVxuICAgIHJldHVybiBtb2RlbC5tYXAobWFwTW9kZWwpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgaXRlbS5cbiAgICogQHBhcmFtIHNlbGVjdGVkIEFsbCBzZWxlY3RlZCBpdGVtc1xuICAgKiBAcGFyYW0gc2VsZWN0ZWRNbyBUaGUgbmV3IHNlbGVjdGVkIGl0ZW0tXG4gICAqIEByZXR1cm5zIEFuIGluZGV4LCBvciAtMSBpZiBub3QgZm91bmQuXG4gICAqL1xuICBnZXRJbmRleE9mU2VsZWN0ZWQoXG4gICAgc2VsZWN0ZWQ6IEFycmF5PFBhcnRpYWw8SUlkZW50aWZpZWQ+PiB8IFBhcnRpYWw8SUlkZW50aWZpZWQ+LFxuICAgIHNlbGVjdGVkTW86IElJZGVudGlmaWVkXG4gICkge1xuICAgIHJldHVybiBzZWxlY3RlZC5maW5kSW5kZXgobW8gPT4gbW8uaWQgPT09IHNlbGVjdGVkTW8uaWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBub3JtYWxpemVNb2RlbFZhbHVlKHZhbHVlOiBhbnkpOiBJSWRlbnRpZmllZFtdIHtcbiAgICBpZiAoaXNOdW1iZXIodmFsdWUpIHx8IGlzU3RyaW5nKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIFt7IGlkOiB2YWx1ZSB9XTtcbiAgICB9XG4gICAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIGlmIChpc09iamVjdCh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBbdmFsdWVdO1xuICAgIH1cbiAgICByZXR1cm4gW107XG4gIH1cbn1cbiJdfQ==