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