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