@netgrif/components-core
Version:
Netgrif Application engine frontend core Angular library
111 lines • 14.5 kB
JavaScript
import { LoadingEmitter } from '../../../../utility/loading-emitter';
import { TreePetriflowIdentifiers } from '../../model/tree-petriflow-identifiers';
export class CaseTreeNode {
case;
children;
dirtyChildren;
loadingChildren;
removingNode;
addingNode;
parent;
constructor(nodeCase, parentNode) {
this.case = nodeCase;
this.children = [];
this.dirtyChildren = true;
this.loadingChildren = new LoadingEmitter();
this.removingNode = new LoadingEmitter();
this.addingNode = new LoadingEmitter();
this.parent = parentNode;
}
/**
* @returns whether this node has the value `true` in it's [immediate data field]{@link TreePetriflowIdentifiers#CAN_ADD_CHILDREN}
* that controls this behavior.
*/
canAddChildren() {
const immediate = this.searchImmediateData(TreePetriflowIdentifiers.CAN_ADD_CHILDREN);
return !!immediate && immediate.value;
}
/**
* @returns whether this node has the value `true` in it's [immediate data field]{@link TreePetriflowIdentifiers#CAN_REMOVE_NODE}
* that controls this behavior.
*/
canBeRemoved() {
const immediate = this.searchImmediateData(TreePetriflowIdentifiers.CAN_REMOVE_NODE);
return this.parent && !!immediate && immediate.value;
}
/**
* @returns whether this node's children are currently being loaded
*/
isLoadingChildren() {
return this.loadingChildren.isActive;
}
/**
* @returns whether this node is being removed from the tree
*/
isBeingRemoved() {
return this.removingNode.isActive;
}
/**
* @returns whether children are being added to this node
*/
isAddingNode() {
return this.addingNode.isActive;
}
/**
* @returns return node value, if immediate date of [immediate data field]{@link TreePetriflowIdentifiers#BEFORE_TEXT_ICON} type exists
*/
beforeTextIcon() {
const immediate = this.searchImmediateData(TreePetriflowIdentifiers.BEFORE_TEXT_ICON);
if (immediate === undefined) {
return undefined;
}
return immediate.value;
}
/**
* @returns return node value, if immediate date of [immediate data field]{@link TreePetriflowIdentifiers#TREE_ADD_ICON} type exists
*/
treeAddTextIcon() {
const immediate = this.searchImmediateData(TreePetriflowIdentifiers.TREE_ADD_ICON);
if (immediate === undefined) {
return undefined;
}
return immediate.value;
}
/**
* @returns return node title, if immediate date of [immediate data field]{@link TreePetriflowIdentifiers#BEFORE_TEXT_ICON} type exists
*/
beforeTextIconTitle() {
const immediate = this.searchImmediateData(TreePetriflowIdentifiers.BEFORE_TEXT_ICON);
if (immediate === undefined || !(immediate.name && immediate.name.defaultValue)) {
return undefined;
}
return immediate.name.defaultValue;
}
/**
* @returns return node title if immediate date of [immediate data field]{@link TreePetriflowIdentifiers#TREE_ADD_ICON} type exists
*/
treeAddTextIconTitle() {
const immediate = this.searchImmediateData(TreePetriflowIdentifiers.TREE_ADD_ICON);
if (immediate === undefined || !(immediate.name && immediate.name.defaultValue)) {
return undefined;
}
return immediate.name.defaultValue;
}
searchImmediateData(dataId) {
return this.case.immediateData.find(data => data.stringId === dataId);
}
/**
* @returns an object representing the same CaseTreeNode, but with circular references removed, so that it can be serialized and logged.
* The [parent]{@link CaseTreeNode#parent} reference is replaced by the parents case stringId (if defined).
* The [children]{@link CaseTreeNode#children} references are replaced by the child's case stringId (if defined).
*/
toLoggableForm() {
return {
case: this.case,
dirtyChildren: this.dirtyChildren,
parent: this.parent ? this.parent.case.stringId : this.parent,
children: this.children.map(c => c.case.stringId),
};
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS10cmVlLW5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL3ZpZXcvdHJlZS1jYXNlLXZpZXcvdHJlZS1jb21wb25lbnQvbW9kZWwvY2FzZS10cmVlLW5vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQ25FLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBR2hGLE1BQU0sT0FBTyxZQUFZO0lBQ2QsSUFBSSxDQUFPO0lBQ1gsUUFBUSxDQUFzQjtJQUM5QixhQUFhLENBQVU7SUFDdkIsZUFBZSxDQUFpQjtJQUNoQyxZQUFZLENBQWlCO0lBQzdCLFVBQVUsQ0FBaUI7SUFDM0IsTUFBTSxDQUFlO0lBRTVCLFlBQVksUUFBYyxFQUFFLFVBQXdCO1FBQ2hELElBQUksQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztRQUM1QyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksY0FBYyxFQUFFLENBQUM7UUFDekMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDO0lBQzdCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxjQUFjO1FBQ2pCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyx3QkFBd0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3RGLE9BQU8sQ0FBQyxDQUFDLFNBQVMsSUFBSSxTQUFTLENBQUMsS0FBSyxD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c0NvbnRlbnQiOlsiaW1wb3J0IHtDYXNlfSBmcm9tICcuLi8uLi8uLi8uLi9yZXNvdXJjZXMvaW50ZXJmYWNlL2Nhc2UnO1xuaW1wb3J0IHtMb2FkaW5nRW1pdHRlcn0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbGl0eS9sb2FkaW5nLWVtaXR0ZXInO1xuaW1wb3J0IHtUcmVlUGV0cmlmbG93SWRlbnRpZmllcnN9IGZyb20gJy4uLy4uL21vZGVsL3RyZWUtcGV0cmlmbG93LWlkZW50aWZpZXJzJztcbmltcG9ydCB7SW1tZWRpYXRlRGF0YX0gZnJvbSAnLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2ludGVyZmFjZS9pbW1lZGlhdGUtZGF0YSc7XG5cbmV4cG9ydCBjbGFzcyBDYXNlVHJlZU5vZGUge1xuICAgIHB1YmxpYyBjYXNlOiBDYXNlO1xuICAgIHB1YmxpYyBjaGlsZHJlbjogQXJyYXk8Q2FzZVRyZWVOb2RlPjtcbiAgICBwdWJsaWMgZGlydHlDaGlsZHJlbjogYm9vbGVhbjtcbiAgICBwdWJsaWMgbG9hZGluZ0NoaWxkcmVuOiBMb2FkaW5nRW1pdHRlcjtcbiAgICBwdWJsaWMgcmVtb3ZpbmdOb2RlOiBMb2FkaW5nRW1pdHRlcjtcbiAgICBwdWJsaWMgYWRkaW5nTm9kZTogTG9hZGluZ0VtaXR0ZXI7XG4gICAgcHVibGljIHBhcmVudDogQ2FzZVRyZWVOb2RlO1xuXG4gICAgY29uc3RydWN0b3Iobm9kZUNhc2U6IENhc2UsIHBhcmVudE5vZGU6IENhc2VUcmVlTm9kZSkge1xuICAgICAgICB0aGlzLmNhc2UgPSBub2RlQ2FzZTtcbiAgICAgICAgdGhpcy5jaGlsZHJlbiA9IFtdO1xuICAgICAgICB0aGlzLmRpcnR5Q2hpbGRyZW4gPSB0cnVlO1xuICAgICAgICB0aGlzLmxvYWRpbmdDaGlsZHJlbiA9IG5ldyBMb2FkaW5nRW1pdHRlcigpO1xuICAgICAgICB0aGlzLnJlbW92aW5nTm9kZSA9IG5ldyBMb2FkaW5nRW1pdHRlcigpO1xuICAgICAgICB0aGlzLmFkZGluZ05vZGUgPSBuZXcgTG9hZGluZ0VtaXR0ZXIoKTtcbiAgICAgICAgdGhpcy5wYXJlbnQgPSBwYXJlbnROb2RlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIHdoZXRoZXIgdGhpcyBub2RlIGhhcyB0aGUgdmFsdWUgYHRydWVgIGluIGl0J3MgW2ltbWVkaWF0ZSBkYXRhIGZpZWxkXXtAbGluayBUcmVlUGV0cmlmbG93SWRlbnRpZmllcnMjQ0FOX0FERF9DSElMRFJFTn1cbiAgICAgKiB0aGF0IGNvbnRyb2xzIHRoaXMgYmVoYXZpb3IuXG4gICAgICovXG4gICAgcHVibGljIGNhbkFkZENoaWxkcmVuKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBpbW1lZGlhdGUgPSB0aGlzLnNlYXJjaEltbWVkaWF0ZURhdGEoVHJlZVBldHJpZmxvd0lkZW50aWZpZXJzLkNBTl9BRERfQ0hJTERSRU4pO1xuICAgICAgICByZXR1cm4gISFpbW1lZGlhdGUgJiYgaW1tZWRpYXRlLnZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIHdoZXRoZXIgdGhpcyBub2RlIGhhcyB0aGUgdmFsdWUgYHRydWVgIGluIGl0J3MgW2ltbWVkaWF0ZSBkYXRhIGZpZWxkXXtAbGluayBUcmVlUGV0cmlmbG93SWRlbnRpZmllcnMjQ0FOX1JFTU9WRV9OT0RFfVxuICAgICAqIHRoYXQgY29udHJvbHMgdGhpcyBiZWhhdmlvci5cbiAgICAgKi9cbiAgICBwdWJsaWMgY2FuQmVSZW1vdmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBpbW1lZGlhdGUgPSB0aGlzLnNlYXJjaEltbWVkaWF0ZURhdGEoVHJlZVBldHJpZmxvd0lkZW50aWZpZXJzLkNBTl9SRU1PVkVfTk9ERSk7XG4gICAgICAgIHJldHVybiB0aGlzLnBhcmVudCAmJiAhIWltbWVkaWF0ZSAmJiBpbW1lZGlhdGUudmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgd2hldGhlciB0aGlzIG5vZGUncyBjaGlsZHJlbiBhcmUgY3VycmVudGx5IGJlaW5nIGxvYWRlZFxuICAgICAqL1xuICAgIHB1YmxpYyBpc0xvYWRpbmdDaGlsZHJlbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGluZ0NoaWxkcmVuLmlzQWN0aXZlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIHdoZXRoZXIgdGhpcyBub2RlIGlzIGJlaW5nIHJlbW92ZWQgZnJvbSB0aGUgdHJlZVxuICAgICAqL1xuICAgIHB1YmxpYyBpc0JlaW5nUmVtb3ZlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVtb3ZpbmdOb2RlLmlzQWN0aXZlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIHdoZXRoZXIgY2hpbGRyZW4gYXJlIGJlaW5nIGFkZGVkIHRvIHRoaXMgbm9kZVxuICAgICAqL1xuICAgIHB1YmxpYyBpc0FkZGluZ05vZGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZGluZ05vZGUuaXNBY3RpdmU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgcmV0dXJuIG5vZGUgdmFsdWUsIGlmIGltbWVkaWF0ZSBkYXRlIG9mIFtpbW1lZGlhdGUgZGF0YSBmaWVsZF17QGxpbmsgVHJlZVBldHJpZmxvd0lkZW50aWZpZXJzI0JFRk9SRV9URVhUX0lDT059IHR5cGUgZXhpc3RzXG4gICAgICovXG4gICAgcHVibGljIGJlZm9yZVRleHRJY29uKCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGltbWVkaWF0ZSA9IHRoaXMuc2VhcmNoSW1tZWRpYXRlRGF0YShUcmVlUGV0cmlmbG93SWRlbnRpZmllcnMuQkVGT1JFX1RFWFRfSUNPTik7XG4gICAgICAgIGlmIChpbW1lZGlhdGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaW1tZWRpYXRlLnZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIHJldHVybiBub2RlIHZhbHVlLCBpZiBpbW1lZGlhdGUgZGF0ZSBvZiBbaW1tZWRpYXRlIGRhdGEgZmllbGRde0BsaW5rIFRyZWVQZXRyaWZsb3dJZGVudGlmaWVycyNUUkVFX0FERF9JQ09OfSB0eXBlIGV4aXN0c1xuICAgICAqL1xuICAgIHB1YmxpYyB0cmVlQWRkVGV4dEljb24oKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgaW1tZWRpYXRlID0gdGhpcy5zZWFyY2hJbW1lZGlhdGVEYXRhKFRyZWVQZXRyaWZsb3dJZGVudGlmaWVycy5UUkVFX0FERF9JQ09OKTtcbiAgICAgICAgaWYgKGltbWVkaWF0ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpbW1lZGlhdGUudmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgcmV0dXJuIG5vZGUgdGl0bGUsIGlmIGltbWVkaWF0ZSBkYXRlIG9mIFtpbW1lZGlhdGUgZGF0YSBmaWVsZF17QGxpbmsgVHJlZVBldHJpZmxvd0lkZW50aWZpZXJzI0JFRk9SRV9URVhUX0lDT059IHR5cGUgZXhpc3RzXG4gICAgICovXG4gICAgcHVibGljIGJlZm9yZVRleHRJY29uVGl0bGUoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgaW1tZWRpYXRlID0gdGhpcy5zZWFyY2hJbW1lZGlhdGVEYXRhKFRyZWVQZXRyaWZsb3dJZGVudGlmaWVycy5CRUZPUkVfVEVYVF9JQ09OKTtcbiAgICAgICAgaWYgKGltbWVkaWF0ZSA9PT0gdW5kZWZpbmVkIHx8ICEoaW1tZWRpYXRlLm5hbWUgJiYgaW1tZWRpYXRlLm5hbWUuZGVmYXVsdFZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaW1tZWRpYXRlLm5hbWUuZGVmYXVsdFZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIHJldHVybiBub2RlIHRpdGxlIGlmIGltbWVkaWF0ZSBkYXRlIG9mIFtpbW1lZGlhdGUgZGF0YSBmaWVsZF17QGxpbmsgVHJlZVBldHJpZmxvd0lkZW50aWZpZXJzI1RSRUVfQUREX0lDT059IHR5cGUgZXhpc3RzXG4gICAgICovXG4gICAgcHVibGljIHRyZWVBZGRUZXh0SWNvblRpdGxlKCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGltbWVkaWF0ZSA9IHRoaXMuc2VhcmNoSW1tZWRpYXRlRGF0YShUcmVlUGV0cmlmbG93SWRlbnRpZmllcnMuVFJFRV9BRERfSUNPTik7XG4gICAgICAgIGlmIChpbW1lZGlhdGUgPT09IHVuZGVmaW5lZCB8fCAhKGltbWVkaWF0ZS5uYW1lICYmIGltbWVkaWF0ZS5uYW1lLmRlZmF1bHRWYWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGltbWVkaWF0ZS5uYW1lLmRlZmF1bHRWYWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNlYXJjaEltbWVkaWF0ZURhdGEoZGF0YUlkOiBzdHJpbmcpOiBJbW1lZGlhdGVEYXRhIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FzZS5pbW1lZGlhdGVEYXRhLmZpbmQoZGF0YSA9PiBkYXRhLnN0cmluZ0lkID09PSBkYXRhSWQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIGFuIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIHNhbWUgQ2FzZVRyZWVOb2RlLCBidXQgd2l0aCBjaXJjdWxhciByZWZlcmVuY2VzIHJlbW92ZWQsIHNvIHRoYXQgaXQgY2FuIGJlIHNlcmlhbGl6ZWQgYW5kIGxvZ2dlZC5cbiAgICAgKiBUaGUgW3BhcmVudF17QGxpbmsgQ2FzZVRyZWVOb2RlI3BhcmVudH0gcmVmZXJlbmNlIGlzIHJlcGxhY2VkIGJ5IHRoZSBwYXJlbnRzIGNhc2Ugc3RyaW5nSWQgKGlmIGRlZmluZWQpLlxuICAgICAqIFRoZSBbY2hpbGRyZW5de0BsaW5rIENhc2VUcmVlTm9kZSNjaGlsZHJlbn0gcmVmZXJlbmNlcyBhcmUgcmVwbGFjZWQgYnkgdGhlIGNoaWxkJ3MgY2FzZSBzdHJpbmdJZCAoaWYgZGVmaW5lZCkuXG4gICAgICovXG4gICAgcHVibGljIHRvTG9nZ2FibGVGb3JtKCk6IG9iamVjdCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjYXNlOiB0aGlzLmNhc2UsXG4gICAgICAgICAgICBkaXJ0eUNoaWxkcmVuOiB0aGlzLmRpcnR5Q2hpbGRyZW4sXG4gICAgICAgICAgICBwYXJlbnQ6IHRoaXMucGFyZW50ID8gdGhpcy5wYXJlbnQuY2FzZS5zdHJpbmdJZCA6IHRoaXMucGFyZW50LFxuICAgICAgICAgICAgY2hpbGRyZW46IHRoaXMuY2hpbGRyZW4ubWFwKGMgPT4gYy5jYXNlLnN0cmluZ0lkKSxcbiAgICAgICAgfTtcbiAgICB9XG59XG4iXX0=