ontimize-web-ngx
Version:
Ontimize Web framework using Angular 15
79 lines • 11.3 kB
JavaScript
import { BehaviorSubject, map, merge } from 'rxjs';
import { OTranslateService } from '../../services/translate';
export class OTreeDataSource {
get data() {
return this.dataChange.value;
}
set data(value) {
this._treeControl.dataNodes = value;
this.dataChange.next(value);
}
constructor(oTree, _treeControl, injector) {
this.oTree = oTree;
this._treeControl = _treeControl;
this.injector = injector;
this.dataChange = new BehaviorSubject([]);
this.translateService = this.injector.get(OTranslateService);
this._database = this.oTree.daoTree;
}
connect(collectionViewer) {
this._treeControl.expansionModel.changed.subscribe(change => {
if (change.added ||
change.removed) {
this.handleTreeControl(change);
}
});
return merge(collectionViewer.viewChange, this.dataChange).pipe(map(() => {
return this.data;
}));
}
disconnect(collectionViewer) {
this.dataChange.complete();
}
handleTreeControl(change) {
if (change.added) {
change.added.forEach(node => this.oTree.toggleNode(node, true));
}
if (change.removed) {
change.removed
.slice()
.reverse()
.forEach(node => this.oTree.toggleNode(node, false));
}
}
isTreeFlatNode(value) {
return 'level' in value && 'label' in value;
}
updateTree(parentNode, children, expand) {
const treeNode = parentNode.treeNode ? parentNode.treeNode : this.oTree;
const index = this.data.findIndex(node => node.id === parentNode.id);
if (!children || index < 0) {
return;
}
if (expand) {
let level = parentNode.level + 1;
let nodes;
nodes = children.map(child => {
if (this.isTreeFlatNode(child)) {
return child;
}
else {
return treeNode.transformer(child, level, parentNode);
}
});
this.data.splice(index + 1, 0, ...nodes);
if (this.oTree.checklistSelection.isSelected(parentNode)) {
this.oTree.checklistSelection.select(...nodes);
}
}
else {
let count = 0;
for (let i = index + 1; i < this.data.length && this.data[i].level > parentNode.level; i++, count++)
;
this.data.splice(index + 1, count);
}
this.dataChange.next(this.data);
parentNode.isLoading = false;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10cmVlLmRhdGFzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90cmVlL28tdHJlZS5kYXRhc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUUvRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUs3RCxNQUFNLE9BQU8sZUFBZTtJQUsxQixJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDO0lBQy9CLENBQUM7SUFDRCxJQUFJLElBQUksQ0FBQyxLQUFzQjtRQUM3QixJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDcEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELFlBQ1UsS0FBcUIsRUFDckIsWUFBNEMsRUFDNUMsUUFBa0I7UUFGbEIsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsaUJBQVksR0FBWixZQUFZLENBQWdDO1FBQzVDLGFBQVEsR0FBUixRQUFRLENBQVU7UUFmNUIsZUFBVSxHQUFHLElBQUksZUFBZSxDQUFrQixFQUFFLENBQUMsQ0FBQztRQWlCcEQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztJQUN0QyxDQUFDO0lBRUQsT0FBTyxDQUFDLGdCQUFrQztRQUN4QyxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE1B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SSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsS0FBSyxFQUM3RCxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUU7Z0JBQ2IsQ0FBQztZQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDcEM7UUFHRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEMsVUFBVSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFFL0IsQ0FBQztDQUdGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29sbGVjdGlvblZpZXdlciwgRGF0YVNvdXJjZSwgU2VsZWN0aW9uQ2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcbmltcG9ydCB7IEZsYXRUcmVlQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90cmVlJztcbmltcG9ydCB7IEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIG1hcCwgbWVyZ2UsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgT1RyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGUnO1xuaW1wb3J0IHsgT1RyZWVEYW8gfSBmcm9tICcuL28tdHJlZS1kYW8uc2VydmljZSc7XG5pbXBvcnQgeyBPVHJlZUNvbXBvbmVudCB9IGZyb20gJy4vby10cmVlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPVHJlZUZsYXROb2RlIH0gZnJvbSAnLi4vLi4vdHlwZXMvdHJlZS1mbGF0LW5vZGUudHlwZSc7XG5cbmV4cG9ydCBjbGFzcyBPVHJlZURhdGFTb3VyY2UgaW1wbGVtZW50cyBEYXRhU291cmNlPE9UcmVlRmxhdE5vZGU+IHtcbiAgZGF0YUNoYW5nZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8T1RyZWVGbGF0Tm9kZVtdPihbXSk7XG4gIHRyYW5zbGF0ZVNlcnZpY2U6IGFueTtcbiAgcHJvdGVjdGVkIF9kYXRhYmFzZTogT1RyZWVEYW87XG5cbiAgZ2V0IGRhdGEoKTogT1RyZWVGbGF0Tm9kZVtdIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhQ2hhbmdlLnZhbHVlO1xuICB9XG4gIHNldCBkYXRhKHZhbHVlOiBPVHJlZUZsYXROb2RlW10pIHtcbiAgICB0aGlzLl90cmVlQ29udHJvbC5kYXRhTm9kZXMgPSB2YWx1ZTtcbiAgICB0aGlzLmRhdGFDaGFuZ2UubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG9UcmVlOiBPVHJlZUNvbXBvbmVudCxcbiAgICBwcml2YXRlIF90cmVlQ29udHJvbDogRmxhdFRyZWVDb250cm9sPE9UcmVlRmxhdE5vZGU+LFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yXG4gICkge1xuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KE9UcmFuc2xhdGVTZXJ2aWNlKTtcbiAgICB0aGlzLl9kYXRhYmFzZSA9IHRoaXMub1RyZWUuZGFvVHJlZTtcbiAgfVxuXG4gIGNvbm5lY3QoY29sbGVjdGlvblZpZXdlcjogQ29sbGVjdGlvblZpZXdlcik6IE9ic2VydmFibGU8T1RyZWVGbGF0Tm9kZVtdPiB7XG4gICAgdGhpcy5fdHJlZUNvbnRyb2wuZXhwYW5zaW9uTW9kZWwuY2hhbmdlZC5zdWJzY3JpYmUoY2hhbmdlID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgY2hhbmdlLmFkZGVkIHx8XG4gICAgICAgIGNoYW5nZS5yZW1vdmVkXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5oYW5kbGVUcmVlQ29udHJvbChjaGFuZ2UpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1lcmdlKGNvbGxlY3Rpb25WaWV3ZXIudmlld0NoYW5nZSwgdGhpcy5kYXRhQ2hhbmdlKS5waXBlKG1hcCgoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5kYXRhO1xuICAgIH0pKTtcbiAgfVxuXG4gIGRpc2Nvbm5lY3QoY29sbGVjdGlvblZpZXdlcjogQ29sbGVjdGlvblZpZXdlcik6IHZvaWQge1xuICAgIHRoaXMuZGF0YUNoYW5nZS5jb21wbGV0ZSgpO1xuICAgfVxuXG4gIC8qKiBIYW5kbGUgZXhwYW5kL2NvbGxhcHNlIGJlaGF2aW9ycyAqL1xuICBoYW5kbGVUcmVlQ29udHJvbChjaGFuZ2U6IFNlbGVjdGlvbkNoYW5nZTxPVHJlZUZsYXROb2RlPikge1xuICAgIGlmIChjaGFuZ2UuYWRkZWQpIHtcbiAgICAgIGNoYW5nZS5hZGRlZC5mb3JFYWNoKG5vZGUgPT4gdGhpcy5vVHJlZS50b2dnbGVOb2RlKG5vZGUsIHRydWUpKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZS5yZW1vdmVkKSB7XG4gICAgICBjaGFuZ2UucmVtb3ZlZFxuICAgICAgICAuc2xpY2UoKVxuICAgICAgICAucmV2ZXJzZSgpXG4gICAgICAgIC5mb3JFYWNoKG5vZGUgPT4gdGhpcy5vVHJlZS50b2dnbGVOb2RlKG5vZGUsIGZhbHNlKSk7XG4gICAgfVxuICB9XG5cbiAgaXNUcmVlRmxhdE5vZGUodmFsdWU6IGFueSkge1xuICAgIHJldHVybiAnbGV2ZWwnIGluIHZhbHVlICYmICdsYWJlbCcgaW4gdmFsdWU7XG4gIH1cblxuICB1cGRhdGVUcmVlKHBhcmVudE5vZGU6IE9UcmVlRmxhdE5vZGUsIGNoaWxkcmVuOiBBcnJheTxhbnk+LCBleHBhbmQ6IGJvb2xlYW4pIHtcbiAgICBjb25zdCB0cmVlTm9kZSA9IHBhcmVudE5vZGUudHJlZU5vZGUgPyBwYXJlbnROb2RlLnRyZWVOb2RlIDogdGhpcy5vVHJlZTtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZGF0YS5maW5kSW5kZXgobm9kZSA9PiBub2RlLmlkID09PSBwYXJlbnROb2RlLmlkKTtcblxuICAgIGlmICghY2hpbGRyZW4gfHwgaW5kZXggPCAwKSB7XG4gICAgICAvLyBJZiBubyBjaGlsZHJlbiwgb3IgY2Fubm90IGZpbmQgdGhlIG5vZGUsIG5vIG9wXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGV4cGFuZCkge1xuICAgICAgbGV0IGxldmVsID0gcGFyZW50Tm9kZS5sZXZlbCArIDE7XG4gICAgICBsZXQgbm9kZXM6IEFycmF5PE9UcmVlRmxhdE5vZGU+O1xuICAgICAgbm9kZXMgPSBjaGlsZHJlbi5tYXAoY2hpbGQgPT4ge1xuICAgICAgICBpZiAodGhpcy5pc1RyZWVGbGF0Tm9kZShjaGlsZCkpIHtcbiAgICAgICAgICByZXR1cm4gY2hpbGQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRyZWVOb2RlLnRyYW5zZm9ybWVyKGNoaWxkLCBsZXZlbCwgcGFyZW50Tm9kZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGhpcy5kYXRhLnNwbGljZShpbmRleCArIDEsIDAsIC4uLm5vZGVzKTtcblxuICAgICAgLy9JZiBwYXJlbnROb2RlIGlzIHNlbGVjdGVkLCB0aGUgY2hpbGRyZW4gYWxzbyBhcmUgc2VsZWN0ZWRcbiAgICAgIGlmICh0aGlzLm9UcmVlLmNoZWNrbGlzdFNlbGVjdGlvbi5pc1NlbGVjdGVkKHBhcmVudE5vZGUpKSB7XG4gICAgICAgIHRoaXMub1RyZWUuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdCguLi5ub2RlcylcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGNvdW50ID0gMDtcbiAgICAgIGZvciAoXG4gICAgICAgIGxldCBpID0gaW5kZXggKyAxO1xuICAgICAgICBpIDwgdGhpcy5kYXRhLmxlbmd0aCAmJiB0aGlzLmRhdGFbaV0ubGV2ZWwgPiBwYXJlbnROb2RlLmxldmVsO1xuICAgICAgICBpKyssIGNvdW50KytcbiAgICAgICk7XG4gICAgICB0aGlzLmRhdGEuc3BsaWNlKGluZGV4ICsgMSwgY291bnQpO1xuICAgIH1cblxuICAgIC8vIG5vdGlmeSB0aGUgY2hhbmdlXG4gICAgdGhpcy5kYXRhQ2hhbmdlLm5leHQodGhpcy5kYXRhKTtcbiAgICBwYXJlbnROb2RlLmlzTG9hZGluZyA9IGZhbHNlO1xuXG4gIH1cblxuXG59XG4iXX0=