UNPKG

@asi-ngtools/lib

Version:

This project is a little components library, simple to use, which will help you to simplify your project.

155 lines (154 loc) 14.3 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ import { Injectable } from '@angular/core'; import * as nh from '../../native-helper'; export class AsiTreeViewService { /** * Function used to open a particular node * @param {?} nodes * @param {?} nodeFinder * @return {?} */ openNode(nodes, nodeFinder) { nh.forEach(nodes, (node) => { if (this.mustOpenNode(node, nodeFinder)) { node.openNode(); } }); } /** * @param {?} node * @param {?} nodeFinder * @return {?} */ mustOpenNode(node, nodeFinder) { if (node != null) { if (nodeFinder(node.data)) { node.openNode(); node.tagFound(true); return true; } else if (node.childNodes) { /** @type {?} */ let childNodes = node.childNodes.toArray(); /** @type {?} */ let openNode = false; for (let childNode of childNodes) { if (this.mustOpenNode(childNode, nodeFinder)) { childNode.openNode(); openNode = true; } } return openNode; } } return false; } /** * @param {?} nodes * @return {?} */ closeAll(nodes) { nh.forEach(nodes, (node) => { this.closeNode(node); }); } /** * @param {?} node * @return {?} */ closeNode(node) { if (node) { node.closeNode(); if (node.childNodes) { node.childNodes.forEach(childNode => { childNode.closeNode(); }); } } } /** * @param {?} nodes * @return {?} */ openAll(nodes) { nh.forEach(nodes, (node) => { this.openANode(node); }); } /** * @param {?} node * @return {?} */ openANode(node) { if (node) { node.openNode(); if (node.childNodes) { node.childNodes.forEach(childNode => { childNode.openNode(); }); } } } /** * Function used to filter the tree-view * @param {?} nodes * @param {?} nodeName * @param {?} nodeFinder function used to know if the node must be keep * @param {?=} keepLeaves true if you want to keep the possible leafs of a matching node * @param {?=} isLeaf * @return {?} */ filterNodes(nodes, nodeName, nodeFinder, keepLeaves, isLeaf) { nh.remove(nodes, (nodeData) => { return this.shouldRemoveData(nodeData, nodeName, nodeFinder, keepLeaves, isLeaf); }); return nodes; } /** * @param {?} nodeData * @param {?} nodeName * @param {?} nodeFinder * @param {?=} keepLeaves * @param {?=} isLeaf * @return {?} */ shouldRemoveData(nodeData, nodeName, nodeFinder, keepLeaves, isLeaf) { /** @type {?} */ let childNodes = /** @type {?} */ (nh.get(nodeData, nodeName)); /** @type {?} */ let matchingLeaf = false; if (childNodes) { // Delete not matching children if (keepLeaves) { nh.remove(childNodes, (child) => { /** @type {?} */ let leaf = (isLeaf && isLeaf(child)) || (!isLeaf && nh.isEmpty(nh.get(child, nodeName))); if (!leaf) { /** @type {?} */ let removeNode = this.shouldRemoveData(child, nodeName, nodeFinder, keepLeaves, isLeaf); matchingLeaf = matchingLeaf || !removeNode; return removeNode; } else { matchingLeaf = matchingLeaf || nodeFinder(child); return false; } }); } else { matchingLeaf = true; nh.remove(childNodes, (child) => { return this.shouldRemoveData(child, nodeName, nodeFinder, keepLeaves, isLeaf); }); } } return (nh.isEmpty(childNodes) || !matchingLeaf) && !nodeFinder(nodeData); } } AsiTreeViewService.decorators = [ { type: Injectable } ]; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNpLXRyZWUtdmlldy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFzaS1uZ3Rvb2xzL2xpYi8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2FzaS10cmVlLXZpZXcvYXNpLXRyZWUtdmlldy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sS0FBSyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHMUMsTUFBTTs7Ozs7OztJQU1HLFFBQVEsQ0FBQyxLQUFzQyxFQUFFLFVBQW9CO1FBQzFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBOEIsRUFBRSxFQUFFO1lBQ25ELEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDeEMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2FBQ2pCO1NBQ0YsQ0FBQyxDQUFDOzs7Ozs7O0lBR0csWUFBWSxDQUFDLElBQThCLEVBQUUsVUFBb0I7UUFDdkUsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDakIsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDcEIsTUFBTSxDQUFDLElBQUksQ0FBQzthQUNiO1lBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDOztnQkFDM0IsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQzs7Z0JBQzNDLElBQUksUUFBUSxHQUFHLEtBQUss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QUMsQ0FBQyxDQUFDO29CQUN6RixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7O3dCQUNWLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7d0JBQ3hGLFlBQVksR0FBRyxZQUFZLElBQUksQ0FBQyxVQUFVLENBQUM7d0JBQzNDLE1BQU0sQ0FBQyxVQUFVLENBQUM7cUJBQ25CO29CQUFDLElBQUksQ0FBQyxDQUFDO3dCQUNOLFlBQVksR0FBRyxZQUFZLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUNqRCxNQUFNLENBQUMsS0FBSyxDQUFDO3FCQUNkO2lCQUNGLENBQUMsQ0FBQzthQUNKO1lBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ04sWUFBWSxHQUFHLElBQUksQ0FBQztnQkFDcEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtvQkFDOUIsTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7aUJBQy9FLENBQUMsQ0FBQzthQUNKO1NBQ0Y7UUFDRCxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7Ozs7WUEzRzdFLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFzaVRyZWVWaWV3Tm9kZUNvbXBvbmVudCB9IGZyb20gJy4vbm9kZS9hc2ktdHJlZS12aWV3LW5vZGUuY29tcG9uZW50JztcclxuaW1wb3J0ICogYXMgbmggZnJvbSAnLi4vLi4vbmF0aXZlLWhlbHBlcic7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBBc2lUcmVlVmlld1NlcnZpY2Uge1xyXG5cclxuICAvKipcclxuICAgKiBGdW5jdGlvbiB1c2VkIHRvIG9wZW4gYSBwYXJ0aWN1bGFyIG5vZGVcclxuICAgKiBAcGFyYW0gbm9kZUZpbmRlclxyXG4gICAqL1xyXG4gIHB1YmxpYyBvcGVuTm9kZShub2RlczogQXJyYXk8QXNpVHJlZVZpZXdOb2RlQ29tcG9uZW50Piwgbm9kZUZpbmRlcjogRnVuY3Rpb24pIHtcclxuICAgIG5oLmZvckVhY2gobm9kZXMsIChub2RlOiBBc2lUcmVlVmlld05vZGVDb21wb25lbnQpID0+IHtcclxuICAgICAgaWYgKHRoaXMubXVzdE9wZW5Ob2RlKG5vZGUsIG5vZGVGaW5kZXIpKSB7XHJcbiAgICAgICAgbm9kZS5vcGVuTm9kZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbXVzdE9wZW5Ob2RlKG5vZGU6IEFzaVRyZWVWaWV3Tm9kZUNvbXBvbmVudCwgbm9kZUZpbmRlcjogRnVuY3Rpb24pIHtcclxuICAgIGlmIChub2RlICE9IG51bGwpIHtcclxuICAgICAgaWYgKG5vZGVGaW5kZXIobm9kZS5kYXRhKSkge1xyXG4gICAgICAgIG5vZGUub3Blbk5vZGUoKTtcclxuICAgICAgICBub2RlLnRhZ0ZvdW5kKHRydWUpO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9IGVsc2UgaWYgKG5vZGUuY2hpbGROb2Rlcykge1xyXG4gICAgICAgIGxldCBjaGlsZE5vZGVzID0gbm9kZS5jaGlsZE5vZGVzLnRvQXJyYXkoKTtcclxuICAgICAgICBsZXQgb3Blbk5vZGUgPSBmYWxzZTtcclxuICAgICAgICBmb3IgKGxldCBjaGlsZE5vZGUgb2YgY2hpbGROb2Rlcykge1xyXG4gICAgICAgICAgaWYgKHRoaXMubXVzdE9wZW5Ob2RlKGNoaWxkTm9kZSwgbm9kZUZpbmRlcikpIHtcclxuICAgICAgICAgICAgY2hpbGROb2RlLm9wZW5Ob2RlKCk7XHJcbiAgICAgICAgICAgIG9wZW5Ob2RlID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG9wZW5Ob2RlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xvc2VBbGwobm9kZXM6IEFycmF5PEFzaVRyZWVWaWV3Tm9kZUNvbXBvbmVudD4pIHtcclxuICAgIG5oLmZvckVhY2gobm9kZXMsIChub2RlOiBBc2lUcmVlVmlld05vZGVDb21wb25lbnQpID0+IHtcclxuICAgICAgdGhpcy5jbG9zZU5vZGUobm9kZSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2xvc2VOb2RlKG5vZGU6IEFzaVRyZWVWaWV3Tm9kZUNvbXBvbmVudCkge1xyXG4gICAgaWYgKG5vZGUpIHtcclxuICAgICAgbm9kZS5jbG9zZU5vZGUoKTtcclxuICAgICAgaWYgKG5vZGUuY2hpbGROb2Rlcykge1xyXG4gICAgICAgIG5vZGUuY2hpbGROb2Rlcy5mb3JFYWNoKGNoaWxkTm9kZSA9PiB7XHJcbiAgICAgICAgICBjaGlsZE5vZGUuY2xvc2VOb2RlKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvcGVuQWxsKG5vZGVzOiBBcnJheTxBc2lUcmVlVmlld05vZGVDb21wb25lbnQ+KSB7XHJcbiAgICBuaC5mb3JFYWNoKG5vZGVzLCAobm9kZTogQXNpVHJlZVZpZXdOb2RlQ29tcG9uZW50KSA9PiB7XHJcbiAgICAgIHRoaXMub3BlbkFOb2RlKG5vZGUpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9wZW5BTm9kZShub2RlOiBBc2lUcmVlVmlld05vZGVDb21wb25lbnQpIHtcclxuICAgIGlmIChub2RlKSB7XHJcbiAgICAgIG5vZGUub3Blbk5vZGUoKTtcclxuICAgICAgaWYgKG5vZGUuY2hpbGROb2Rlcykge1xyXG4gICAgICAgIG5vZGUuY2hpbGROb2Rlcy5mb3JFYWNoKGNoaWxkTm9kZSA9PiB7XHJcbiAgICAgICAgICBjaGlsZE5vZGUub3Blbk5vZGUoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIEZ1bmN0aW9uIHVzZWQgdG8gZmlsdGVyIHRoZSB0cmVlLXZpZXdcclxuICAgKiBAcGFyYW0gbm9kZUZpbmRlciBmdW5jdGlvbiB1c2VkIHRvIGtub3cgaWYgdGhlIG5vZGUgbXVzdCBiZSBrZWVwXHJcbiAgICogQHBhcmFtIGtlZXBMZWF2ZXMgdHJ1ZSBpZiB5b3Ugd2FudCB0byBrZWVwIHRoZSBwb3NzaWJsZSBsZWFmcyBvZiBhIG1hdGNoaW5nIG5vZGVcclxuICAgKi9cclxuICBwdWJsaWMgZmlsdGVyTm9kZXMobm9kZXM6IEFycmF5PGFueT4sIG5vZGVOYW1lOiBzdHJpbmcsIG5vZGVGaW5kZXI6IEZ1bmN0aW9uLCBrZWVwTGVhdmVzPzogYm9vbGVhbiwgaXNMZWFmPzogRnVuY3Rpb24pOiBBcnJheTxhbnk+IHtcclxuICAgIG5oLnJlbW92ZShub2RlcywgKG5vZGVEYXRhKSA9PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLnNob3VsZFJlbW92ZURhdGEobm9kZURhdGEsIG5vZGVOYW1lLCBub2RlRmluZGVyLCBrZWVwTGVhdmVzLCBpc0xlYWYpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gbm9kZXM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNob3VsZFJlbW92ZURhdGEobm9kZURhdGE6IGFueSwgbm9kZU5hbWU6IHN0cmluZywgbm9kZUZpbmRlcjogRnVuY3Rpb24sIGtlZXBMZWF2ZXM/OiBib29sZWFuLCBpc0xlYWY/OiBGdW5jdGlvbikge1xyXG4gICAgbGV0IGNoaWxkTm9kZXM6IEFycmF5PGFueT4gPSA8QXJyYXk8YW55Pj5uaC5nZXQobm9kZURhdGEsIG5vZGVOYW1lKTtcclxuICAgIGxldCBtYXRjaGluZ0xlYWYgPSBmYWxzZTtcclxuICAgIGlmIChjaGlsZE5vZGVzKSB7XHJcbiAgICAgIC8vIERlbGV0ZSBub3QgbWF0Y2hpbmcgY2hpbGRyZW5cclxuICAgICAgaWYgKGtlZXBMZWF2ZXMpIHtcclxuICAgICAgICBuaC5yZW1vdmUoY2hpbGROb2RlcywgKGNoaWxkKSA9PiB7XHJcbiAgICAgICAgICBsZXQgbGVhZiA9IChpc0xlYWYgJiYgaXNMZWFmKGNoaWxkKSkgfHwgKCFpc0xlYWYgJiYgbmguaXNFbXB0eShuaC5nZXQoY2hpbGQsIG5vZGVOYW1lKSkpO1xyXG4gICAgICAgICAgaWYgKCFsZWFmKSB7XHJcbiAgICAgICAgICAgIGxldCByZW1vdmVOb2RlID0gdGhpcy5zaG91bGRSZW1vdmVEYXRhKGNoaWxkLCBub2RlTmFtZSwgbm9kZUZpbmRlciwga2VlcExlYXZlcywgaXNMZWFmKTtcclxuICAgICAgICAgICAgbWF0Y2hpbmdMZWFmID0gbWF0Y2hpbmdMZWFmIHx8ICFyZW1vdmVOb2RlO1xyXG4gICAgICAgICAgICByZXR1cm4gcmVtb3ZlTm9kZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIG1hdGNoaW5nTGVhZiA9IG1hdGNoaW5nTGVhZiB8fCBub2RlRmluZGVyKGNoaWxkKTtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG1hdGNoaW5nTGVhZiA9IHRydWU7XHJcbiAgICAgICAgbmgucmVtb3ZlKGNoaWxkTm9kZXMsIChjaGlsZCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuc2hvdWxkUmVtb3ZlRGF0YShjaGlsZCwgbm9kZU5hbWUsIG5vZGVGaW5kZXIsIGtlZXBMZWF2ZXMsIGlzTGVhZik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiAobmguaXNFbXB0eShjaGlsZE5vZGVzKSB8fCAhbWF0Y2hpbmdMZWFmKSAmJiAhbm9kZUZpbmRlcihub2RlRGF0YSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==