UNPKG

@c8y/ngx-components

Version:

Angular modules for Cumulocity IoT applications

83 lines 9.77 kB
import { GroupFragment } from '@c8y/ngx-components'; import { AssetNode } from '../asset-node'; export class GroupNode extends AssetNode { static { this.NAME = 'GroupNode'; } /** * Creates a new node which shows only groups. * * @param service The service to use. * @param config The default configuration of the node. * @param groupsOnly Set this true, if only groups should be shown. * @param selectable Set this true, if it is selectable. */ constructor(service, config = {}) { super(service, config); this.service = service; /** * Set this true, if only groups should be shown. */ this.groupsOnly = false; /** * Set this true, if it groups are also selectable. */ this.groupsSelectable = false; /** * Devices with children can be selected to show their child devices. */ this.showChildDevices = false; /** * Group node children (subentries). */ this.children = []; this.groupsOnly = config.groupsOnly || false; this.groupsSelectable = config.groupsSelectable || false; this.showChildDevices = config.showChildDevices || false; } /** * Adds the MO as a child node. * @param mo ManagedObject */ addManagedObject(mo) { const { childAdditions } = this.mo; if (!this.isChildAddition(childAdditions, mo)) { this.add(this.service.createChildNode({ mo, groupsOnly: this.groupsOnly, groupsSelectable: this.groupsSelectable, showChildDevices: this.showChildDevices })); } } /** * Counts the number of children for the current node (with the exception of the UnassignedDevicesNode). */ countChildren() { return this.children.filter(value => value.toString() !== 'UnassignedDevicesNode').length; } /** * Removes all child nodes except the UnassignedDevicesNode. */ empty() { this.children = this.children.filter(value => value.toString() === 'UnassignedDevicesNode'); } fetch() { const isRoot = this.root; const isDevice = this.mo.c8y_IsDevice; return isRoot ? this.service.getRootNodes() : isDevice ? this.service.getDeviceChildren(this.mo.id, {}, this.filterQuery$.value, this.showChildDevices) : this.service.getGroupItems(this.mo.id, this.groupsOnly ? { query: `$filter=(has(${GroupFragment.groupFragmentType}))` } : {}, this.showChildDevices, this.filterQuery$.value); } toString() { return GroupNode.NAME; } isGroup() { return this.mo && this.service.isGroup(this.mo); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtbm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2Fzc2V0cy1uYXZpZ2F0b3IvYXNzZXQtc2VsZWN0b3IvZ3JvdXAtbm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcxQyxNQUFNLE9BQU8sU0FBVSxTQUFRLFNBQVM7YUFDL0IsU0FBSSxHQUFHLFdBQVcsQUFBZCxDQUFlO0lBcUIxQjs7Ozs7OztPQU9HO0lBRUgsWUFBc0IsT0FBeUIsRUFBRSxTQUEwQixFQUFFO1FBQzNFLEtBQUssQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFESCxZQUFPLEdBQVAsT0FBTyxDQUFrQjtRQTVCL0M7O1dBRUc7UUFDSCxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBRW5COztXQUVHO1FBQ0gscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQ3pCOztXQUVHO1FBQ0gscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBRXpCOztXQUVHO1FBQ0gsYUFBUSxHQUFnQixFQUFFLENBQUM7UUFhekIsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxJQUFJLEtBQUssQ0FBQztRQUM3QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixJQUFJLEtBQUssQ0FBQztRQUN6RCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixJQUFJLEtBQUssQ0FBQztJQUMzRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsZ0JBQWdCLENBQUMsRUFBRTtRQUNqQixNQUFNLEVBQUUsY0FBYyxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUM5QyxJQUFJLENBQUMsR0FBRyxDQUNOLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDO2dCQUMzQixFQUFFO2dCQUNGLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtnQkFDM0IsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtnQkFDdkMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjthQUN4QyxDQUFDLENBQ0gsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyx1QkFBdUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUM1RixDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLO1FBQ0gsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyx1QkFBdUIsQ0FBQyxDQUFDO0lBQzlGLENBQUM7SUFFRCxLQUFLO1FBQ0gsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN6QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQztRQUN0QyxPQUFPLE1BQU07WUFDWCxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUU7WUFDN0IsQ0FBQyxDQUFDLFFBQVE7Z0JBQ1YsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQzVCLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUNWLEVBQUUsRUFDRixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFDdkIsSUFBSSxDQUFDLGdCQUFnQixDQUN0QjtnQkFDSCxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQ3hCLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUNWLElBQUksQ0FBQyxVQUFVO29CQUNiLENBQUMsQ0FBQzt3QkFDRSxLQUFLLEVBQUUsZ0JBQWdCLGFBQWEsQ0FBQyxpQkFBaUIsSUFBSTtxQkFDM0Q7b0JBQ0gsQ0FBQyxDQUFDLEVBQUUsRUFDTixJQUFJLENBQUMsZ0JBQWdCLEVBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUN4QixDQUFDO0lBQ1IsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUM7SUFDeEIsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLElBQUksQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHcm91cEZyYWdtZW50IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBHcm91cE5vZGVTZXJ2aWNlIH0gZnJvbSAnLi9ncm91cC1ub2RlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXNzZXROb2RlIH0gZnJvbSAnLi4vYXNzZXQtbm9kZSc7XG5pbXBvcnQgeyBHcm91cE5vZGVDb25maWcgfSBmcm9tICcuL2Fzc2V0LXNlbGVjdG9yLm1vZGVsJztcblxuZXhwb3J0IGNsYXNzIEdyb3VwTm9kZSBleHRlbmRzIEFzc2V0Tm9kZSB7XG4gIHN0YXRpYyBOQU1FID0gJ0dyb3VwTm9kZSc7XG5cbiAgLyoqXG4gICAqIFNldCB0aGlzIHRydWUsIGlmIG9ubHkgZ3JvdXBzIHNob3VsZCBiZSBzaG93bi5cbiAgICovXG4gIGdyb3Vwc09ubHkgPSBmYWxzZTtcblxuICAvKipcbiAgICogU2V0IHRoaXMgdHJ1ZSwgaWYgaXQgZ3JvdXBzIGFyZSBhbHNvIHNlbGVjdGFibGUuXG4gICAqL1xuICBncm91cHNTZWxlY3RhYmxlID0gZmFsc2U7XG4gIC8qKlxuICAgKiBEZXZpY2VzIHdpdGggY2hpbGRyZW4gY2FuIGJlIHNlbGVjdGVkIHRvIHNob3cgdGhlaXIgY2hpbGQgZGV2aWNlcy5cbiAgICovXG4gIHNob3dDaGlsZERldmljZXMgPSBmYWxzZTtcblxuICAvKipcbiAgICogR3JvdXAgbm9kZSBjaGlsZHJlbiAoc3ViZW50cmllcykuXG4gICAqL1xuICBjaGlsZHJlbjogR3JvdXBOb2RlW10gPSBbXTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBub2RlIHdoaWNoIHNob3dzIG9ubHkgZ3JvdXBzLlxuICAgKlxuICAgKiBAcGFyYW0gc2VydmljZSBUaGUgc2VydmljZSB0byB1c2UuXG4gICAqIEBwYXJhbSBjb25maWcgIFRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gb2YgdGhlIG5vZGUuXG4gICAqIEBwYXJhbSBncm91cHNPbmx5IFNldCB0aGlzIHRydWUsIGlmIG9ubHkgZ3JvdXBzIHNob3VsZCBiZSBzaG93bi5cbiAgICogQHBhcmFtIHNlbGVjdGFibGUgU2V0IHRoaXMgdHJ1ZSwgaWYgaXQgaXMgc2VsZWN0YWJsZS5cbiAgICovXG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHNlcnZpY2U6IEdyb3VwTm9kZVNlcnZpY2UsIGNvbmZpZzogR3JvdXBOb2RlQ29uZmlnID0ge30pIHtcbiAgICBzdXBlcihzZXJ2aWNlLCBjb25maWcpO1xuICAgIHRoaXMuZ3JvdXBzT25seSA9IGNvbmZpZy5ncm91cHNPbmx5IHx8IGZhbHNlO1xuICAgIHRoaXMuZ3JvdXBzU2VsZWN0YWJsZSA9IGNvbmZpZy5ncm91cHNTZWxlY3RhYmxlIHx8IGZhbHNlO1xuICAgIHRoaXMuc2hvd0NoaWxkRGV2aWNlcyA9IGNvbmZpZy5zaG93Q2hpbGREZXZpY2VzIHx8IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgdGhlIE1PIGFzIGEgY2hpbGQgbm9kZS5cbiAgICogQHBhcmFtIG1vIE1hbmFnZWRPYmplY3RcbiAgICovXG4gIGFkZE1hbmFnZWRPYmplY3QobW8pIHtcbiAgICBjb25zdCB7IGNoaWxkQWRkaXRpb25zIH0gPSB0aGlzLm1vO1xuICAgIGlmICghdGhpcy5pc0NoaWxkQWRkaXRpb24oY2hpbGRBZGRpdGlvbnMsIG1vKSkge1xuICAgICAgdGhpcy5hZGQoXG4gICAgICAgIHRoaXMuc2VydmljZS5jcmVhdGVDaGlsZE5vZGUoe1xuICAgICAgICAgIG1vLFxuICAgICAgICAgIGdyb3Vwc09ubHk6IHRoaXMuZ3JvdXBzT25seSxcbiAgICAgICAgICBncm91cHNTZWxlY3RhYmxlOiB0aGlzLmdyb3Vwc1NlbGVjdGFibGUsXG4gICAgICAgICAgc2hvd0NoaWxkRGV2aWNlczogdGhpcy5zaG93Q2hpbGREZXZpY2VzXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDb3VudHMgdGhlIG51bWJlciBvZiBjaGlsZHJlbiBmb3IgdGhlIGN1cnJlbnQgbm9kZSAod2l0aCB0aGUgZXhjZXB0aW9uIG9mIHRoZSBVbmFzc2lnbmVkRGV2aWNlc05vZGUpLlxuICAgKi9cbiAgY291bnRDaGlsZHJlbigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmNoaWxkcmVuLmZpbHRlcih2YWx1ZSA9PiB2YWx1ZS50b1N0cmluZygpICE9PSAnVW5hc3NpZ25lZERldmljZXNOb2RlJykubGVuZ3RoO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYWxsIGNoaWxkIG5vZGVzIGV4Y2VwdCB0aGUgVW5hc3NpZ25lZERldmljZXNOb2RlLlxuICAgKi9cbiAgZW1wdHkoKSB7XG4gICAgdGhpcy5jaGlsZHJlbiA9IHRoaXMuY2hpbGRyZW4uZmlsdGVyKHZhbHVlID0+IHZhbHVlLnRvU3RyaW5nKCkgPT09ICdVbmFzc2lnbmVkRGV2aWNlc05vZGUnKTtcbiAgfVxuXG4gIGZldGNoKCkge1xuICAgIGNvbnN0IGlzUm9vdCA9IHRoaXMucm9vdDtcbiAgICBjb25zdCBpc0RldmljZSA9IHRoaXMubW8uYzh5X0lzRGV2aWNlO1xuICAgIHJldHVybiBpc1Jvb3RcbiAgICAgID8gdGhpcy5zZXJ2aWNlLmdldFJvb3ROb2RlcygpXG4gICAgICA6IGlzRGV2aWNlXG4gICAgICA/IHRoaXMuc2VydmljZS5nZXREZXZpY2VDaGlsZHJlbihcbiAgICAgICAgICB0aGlzLm1vLmlkLFxuICAgICAgICAgIHt9LFxuICAgICAgICAgIHRoaXMuZmlsdGVyUXVlcnkkLnZhbHVlLFxuICAgICAgICAgIHRoaXMuc2hvd0NoaWxkRGV2aWNlc1xuICAgICAgICApXG4gICAgICA6IHRoaXMuc2VydmljZS5nZXRHcm91cEl0ZW1zKFxuICAgICAgICAgIHRoaXMubW8uaWQsXG4gICAgICAgICAgdGhpcy5ncm91cHNPbmx5XG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICBxdWVyeTogYCRmaWx0ZXI9KGhhcygke0dyb3VwRnJhZ21lbnQuZ3JvdXBGcmFnbWVudFR5cGV9KSlgXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDoge30sXG4gICAgICAgICAgdGhpcy5zaG93Q2hpbGREZXZpY2VzLFxuICAgICAgICAgIHRoaXMuZmlsdGVyUXVlcnkkLnZhbHVlXG4gICAgICAgICk7XG4gIH1cblxuICB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gR3JvdXBOb2RlLk5BTUU7XG4gIH1cblxuICBpc0dyb3VwKCkge1xuICAgIHJldHVybiB0aGlzLm1vICYmIHRoaXMuc2VydmljZS5pc0dyb3VwKHRoaXMubW8pO1xuICB9XG59XG4iXX0=