UNPKG

svogv

Version:

A decorator based approach for model driven forms, including an advanced DataGrid and a TreeView component.

79 lines 9.69 kB
import { EventEmitter } from '@angular/core'; import * as tree from './treenodeoptions.model'; /** * The base class for tree nodes. */ export class TreeNodeModel { constructor(options, nodes) { this.options = options || new tree.TreeNodeOptions(); if (nodes && nodes instanceof Array) { this.children = nodes; } else { if (nodes) { this.children = [nodes]; } } this.stateChange = new EventEmitter(); this.state = tree.TreeNodeState.undefined; } get path() { // walk up tree and return path with names const p = new Array(); p.push(this); let n = this; while (this.parent) { n = n.parent; p.push(n); } return p; } hasDirectAncestor(node) { return this.parent !== undefined; } get hasChildren() { return this.children !== undefined && this.children.length > 0; } add(nodes) { if (nodes && nodes instanceof Array) { this.children.push(...nodes); } else { this.children.push(nodes); } } remove(node) { const idx = this.children.indexOf(node); if (idx > -1) { this.children.splice(idx, 1); return true; } else { return false; } } get state() { return this._state; } set state(value) { this._state = value; if (!this.hasChildren && (this.state & tree.TreeNodeState.expanded) === tree.TreeNodeState.expanded) { // if an expandable event occurs and there a no children, don't fire return; } this.stateChange.emit(this._state); } get stateIsExpandend() { return (this.state & tree.TreeNodeState.expanded) === tree.TreeNodeState.expanded; } get stateIsDisabled() { return (this.state & tree.TreeNodeState.disabled) === tree.TreeNodeState.disabled; } get stateIsSelected() { return (this.state & tree.TreeNodeState.selected) === tree.TreeNodeState.selected; } get stateIsChecked() { return (this.state & tree.TreeNodeState.checked) === tree.TreeNodeState.checked; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZW5vZGUubW9kZWwuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vcHJvamVjdHMvc3ZvZ3Yvc3JjLyIsInNvdXJjZXMiOlsibGliL3dpZGdldHMvdHJlZXZpZXcvbW9kZWxzL3RyZWVub2RlLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0MsT0FBTyxLQUFLLElBQUksTUFBTSx5QkFBeUIsQ0FBQztBQUdoRDs7R0FFRztBQUNILE1BQU0sT0FBTyxhQUFhO0lBNEJ4QixZQUFZLE9BQThCLEVBQUUsS0FBdUM7UUFDakYsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLElBQUksSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDckQsSUFBSSxLQUFLLElBQUksS0FBSyxZQUFZLEtBQUssRUFBRTtZQUNuQyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQXdCLENBQUM7U0FDMUM7YUFBTTtZQUNMLElBQUksS0FBSyxFQUFFO2dCQUNULElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxLQUFzQixDQUFDLENBQUM7YUFDMUM7U0FDRjtRQUNELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxZQUFZLEVBQXNCLENBQUM7UUFDMUQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sMENBQTBDO1FBQzFDLE1BQU0sQ0FBQyxHQUFvQixJQUFJLEtBQUssRUFBaUIsQ0FBQztRQUN0RCxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2IsSUFBSSxDQUFDLEdBQWtCLElBQUksQ0FBQztRQUM1QixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDbEIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFDYixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ1g7UUFDRCxPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxJQUF1QjtRQUN2QyxPQUFPLElBQUksQ0FBQyxNQUFNLEtBQUssU0FBUyxDQUFDO0lBQ25DLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxRQUFRLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsR0FBRyxDQUFDLEtBQXNDO1FBQ3hDLElBQUksS0FBSyxJQUFJLEtBQUssWUFBWSxLQUFLLEVBQUU7WUFDbkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBSSxLQUF5QixDQUFDLENBQUM7U0FDbkQ7YUFBTTtZQUNMLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQXNCLENBQUMsQ0FBQztTQUM1QztJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsSUFBbUI7UUFDeEIsTUFBTSxHQUFHLEdBQVcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEQsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEVBQUU7WUFDWixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDN0IsT0FBTyxJQUFJLENBQUM7U0FDYjthQUFNO1lBQ0wsT0FBTyxLQUFLLENBQUM7U0FDZDtJQUNILENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUNELElBQUksS0FBSyxDQUFDLEtBQXlCO1FBQ2pDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFO1lBQ25HLG9FQUFvRTtZQUNwRSxPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUM7SUFDcEYsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDO0lBQ3BGLENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQztJQUNwRixDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUM7SUFDbEYsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyB0cmVlIGZyb20gJy4vdHJlZW5vZGVvcHRpb25zLm1vZGVsJztcbmltcG9ydCB7IFRyZWVOb2RlQmFzZU1vZGVsIH0gZnJvbSAnLi90cmVlbm9kZWJhc2UubW9kZWwnO1xuXG4vKipcbiAqIFRoZSBiYXNlIGNsYXNzIGZvciB0cmVlIG5vZGVzLlxuICovXG5leHBvcnQgY2xhc3MgVHJlZU5vZGVNb2RlbCBpbXBsZW1lbnRzIFRyZWVOb2RlQmFzZU1vZGVsIHtcbiAgLyoqXG4gICAqIENvbnRyb2wgYXBwZWFyYW5jZVxuICAgKi9cbiAgb3B0aW9uczogdHJlZS5UcmVlTm9kZU9wdGlvbnM7XG4gIC8qKlxuICAgKiBzdHJ1Y3R1cmVcbiAgICovXG4gIHBhcmVudDogVHJlZU5vZGVNb2RlbDtcbiAgLyoqXG4gICAqIFN1YnNlcXVlbnQgbm9kZXMuXG4gICAqL1xuICBjaGlsZHJlbjogVHJlZU5vZGVNb2RlbFtdO1xuICAvKipcbiAgICogQW4gaWRlbnRpZmllci5cbiAgICovXG4gIG5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIEZpZWxkIGlkXG4gICAqL1xuICBpZDogbnVtYmVyO1xuICAvKipcbiAgICogYmVoYXZpb3JcbiAgICovXG4gIHN0YXRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8dHJlZS5UcmVlTm9kZVN0YXRlPjtcblxuICBwcml2YXRlIF9zdGF0ZTogdHJlZS5UcmVlTm9kZVN0YXRlO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiB0cmVlLlRyZWVOb2RlT3B0aW9ucywgbm9kZXM/OiBUcmVlTm9kZU1vZGVsIHwgVHJlZU5vZGVNb2RlbFtdKSB7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucyB8fCBuZXcgdHJlZS5UcmVlTm9kZU9wdGlvbnMoKTtcbiAgICBpZiAobm9kZXMgJiYgbm9kZXMgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgdGhpcy5jaGlsZHJlbiA9IG5vZGVzIGFzIFRyZWVOb2RlTW9kZWxbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG5vZGVzKSB7XG4gICAgICAgIHRoaXMuY2hpbGRyZW4gPSBbbm9kZXMgYXMgVHJlZU5vZGVNb2RlbF07XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuc3RhdGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHRyZWUuVHJlZU5vZGVTdGF0ZT4oKTtcbiAgICB0aGlzLnN0YXRlID0gdHJlZS5UcmVlTm9kZVN0YXRlLnVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldCBwYXRoKCk6IFRyZWVOb2RlTW9kZWxbXSB7XG4gICAgLy8gd2FsayB1cCB0cmVlIGFuZCByZXR1cm4gcGF0aCB3aXRoIG5hbWVzXG4gICAgY29uc3QgcDogVHJlZU5vZGVNb2RlbFtdID0gbmV3IEFycmF5PFRyZWVOb2RlTW9kZWw+KCk7XG4gICAgcC5wdXNoKHRoaXMpO1xuICAgIGxldCBuOiBUcmVlTm9kZU1vZGVsID0gdGhpcztcbiAgICB3aGlsZSAodGhpcy5wYXJlbnQpIHtcbiAgICAgIG4gPSBuLnBhcmVudDtcbiAgICAgIHAucHVzaChuKTtcbiAgICB9XG4gICAgcmV0dXJuIHA7XG4gIH1cblxuICBoYXNEaXJlY3RBbmNlc3Rvcihub2RlOiBUcmVlTm9kZUJhc2VNb2RlbCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnBhcmVudCAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgZ2V0IGhhc0NoaWxkcmVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNoaWxkcmVuICE9PSB1bmRlZmluZWQgJiYgdGhpcy5jaGlsZHJlbi5sZW5ndGggPiAwO1xuICB9XG5cbiAgYWRkKG5vZGVzOiBUcmVlTm9kZU1vZGVsIHwgVHJlZU5vZGVNb2RlbFtdKTogdm9pZCB7XG4gICAgaWYgKG5vZGVzICYmIG5vZGVzIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIHRoaXMuY2hpbGRyZW4ucHVzaCguLi4obm9kZXMgYXMgVHJlZU5vZGVNb2RlbFtdKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2hpbGRyZW4ucHVzaChub2RlcyBhcyBUcmVlTm9kZU1vZGVsKTtcbiAgICB9XG4gIH1cblxuICByZW1vdmUobm9kZTogVHJlZU5vZGVNb2RlbCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGlkeDogbnVtYmVyID0gdGhpcy5jaGlsZHJlbi5pbmRleE9mKG5vZGUpO1xuICAgIGlmIChpZHggPiAtMSkge1xuICAgICAgdGhpcy5jaGlsZHJlbi5zcGxpY2UoaWR4LCAxKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHN0YXRlKCk6IHRyZWUuVHJlZU5vZGVTdGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlO1xuICB9XG4gIHNldCBzdGF0ZSh2YWx1ZTogdHJlZS5UcmVlTm9kZVN0YXRlKSB7XG4gICAgdGhpcy5fc3RhdGUgPSB2YWx1ZTtcbiAgICBpZiAoIXRoaXMuaGFzQ2hpbGRyZW4gJiYgKHRoaXMuc3RhdGUgJiB0cmVlLlRyZWVOb2RlU3RhdGUuZXhwYW5kZWQpID09PSB0cmVlLlRyZWVOb2RlU3RhdGUuZXhwYW5kZWQpIHtcbiAgICAgIC8vIGlmIGFuIGV4cGFuZGFibGUgZXZlbnQgb2NjdXJzIGFuZCB0aGVyZSBhIG5vIGNoaWxkcmVuLCBkb24ndCBmaXJlXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc3RhdGVDaGFuZ2UuZW1pdCh0aGlzLl9zdGF0ZSk7XG4gIH1cblxuICBnZXQgc3RhdGVJc0V4cGFuZGVuZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHRoaXMuc3RhdGUgJiB0cmVlLlRyZWVOb2RlU3RhdGUuZXhwYW5kZWQpID09PSB0cmVlLlRyZWVOb2RlU3RhdGUuZXhwYW5kZWQ7XG4gIH1cblxuICBnZXQgc3RhdGVJc0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5zdGF0ZSAmIHRyZWUuVHJlZU5vZGVTdGF0ZS5kaXNhYmxlZCkgPT09IHRyZWUuVHJlZU5vZGVTdGF0ZS5kaXNhYmxlZDtcbiAgfVxuXG4gIGdldCBzdGF0ZUlzU2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh0aGlzLnN0YXRlICYgdHJlZS5UcmVlTm9kZVN0YXRlLnNlbGVjdGVkKSA9PT0gdHJlZS5UcmVlTm9kZVN0YXRlLnNlbGVjdGVkO1xuICB9XG5cbiAgZ2V0IHN0YXRlSXNDaGVja2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5zdGF0ZSAmIHRyZWUuVHJlZU5vZGVTdGF0ZS5jaGVja2VkKSA9PT0gdHJlZS5UcmVlTm9kZVN0YXRlLmNoZWNrZWQ7XG4gIH1cbn1cbiJdfQ==