UNPKG

@ecip/shared

Version:
83 lines 6.5 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Injectable } from '@angular/core'; import * as i0 from "@angular/core"; export class TreeService { constructor() { } /** * @param {?} array * @param {?} data * @param {?} $event * @return {?} */ collapse(array, data, $event) { if ($event === false) { if (data.children) { data.children.forEach((/** * @param {?} d * @return {?} */ d => { /** @type {?} */ const target = array.find((/** * @param {?} a * @return {?} */ a => a.id === d.id)); target.expand = false; this.collapse(array, target, false); })); } else { return; } } } /** * @param {?} root * @return {?} */ static convertTreeToList(root) { /** @type {?} */ const stack = []; /** @type {?} */ const array = []; /** @type {?} */ const hashMap = {}; stack.push(Object.assign({}, root, { level: 0, expand: false })); while (stack.length !== 0) { /** @type {?} */ const node = stack.pop(); TreeService.visitNode(node, hashMap, array); if (node.children) { for (let i = node.children.length - 1; i >= 0; i--) { stack.push(Object.assign({}, node.children[i], { level: node.level + 1, expand: false, parent: node })); } } } return array; } /** * @param {?} node * @param {?} hashMap * @param {?} array * @return {?} */ static visitNode(node, hashMap, array) { if (!hashMap[node.id]) { hashMap[node.id] = true; array.push(node); } } } TreeService.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] } ]; /** @nocollapse */ TreeService.ctorParameters = () => []; /** @nocollapse */ TreeService.ngInjectableDef = i0.defineInjectable({ factory: function TreeService_Factory() { return new TreeService(); }, token: TreeService, providedIn: "root" }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGVjaXAvc2hhcmVkLyIsInNvdXJjZXMiOlsic3JjL3RyZWUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLM0MsTUFBTSxPQUFPLFdBQVc7SUFFdEIsZ0JBQWdCLENBQUM7Ozs7Ozs7SUFFakIsUUFBUSxDQUFDLEtBQVksRUFBRSxJQUFTLEVBQUUsTUFBZTtRQUMvQyxJQUFJLE1BQU0sS0FBSyxLQUFLLEVBQUU7WUFDcEIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU87Ozs7Z0JBQUMsQ0FBQyxDQUFDLEVBQUU7OzBCQUNsQixNQUFNLEdBQUcsS0FBSyxDQUFDLElBQUk7Ozs7b0JBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUM7b0JBQzdDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO29CQUN0QixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ3RDLENBQUMsRUFBQyxDQUFDO2FBQ0o7aUJBQU07Z0JBQ0wsT0FBTzthQUNSO1NBQ0Y7SUFDSCxDQUFDOzs7OztJQUVELE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFZOztjQUM3QixLQUFLLEdBQUcsRUFBRTs7Y0FDVixLQUFLLEdBQUcsRUFBRTs7Y0FDVixPQUFPLEdBQUcsRUFBRTtRQUNsQixLQUFLLENBQUMsSUFBSSxtQkFBTSxJQUFJLElBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxJQUFHLENBQUM7UUFFakQsT0FBTyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTs7a0JBQ25CLElBQUksR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFO1lBQ3hCLFdBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM1QyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ2pCLEtBQUssSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7b0JBQ2xELEtBQUssQ0FBQyxJQUFJLG1CQUFNLElBQUksQ0FBQyxRQUFRLENBQUUsQ0FBQyxDQUFFLElBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksSUFBRyxDQUFDO2lCQUMzRjthQUNGO1NBQ0Y7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Ozs7Ozs7SUFFRCxNQUFNLENBQUMsU0FBUyxDQUFDLElBQVMsRUFBRSxPQUFlLEVBQUUsS0FBWTtRQUN2RCxJQUFJLENBQUMsT0FBTyxDQUFFLElBQUksQ0FBQyxFQUFFLENBQUUsRUFBRTtZQUN2QixPQUFPLENBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBRSxHQUFHLElBQUksQ0FBQztZQUMxQixLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2xCO0lBQ0gsQ0FBQzs7O1lBN0NGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFRyZWVTZXJ2aWNlIHtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgY29sbGFwc2UoYXJyYXk6IGFueVtdLCBkYXRhOiBhbnksICRldmVudDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgaWYgKCRldmVudCA9PT0gZmFsc2UpIHtcclxuICAgICAgaWYgKGRhdGEuY2hpbGRyZW4pIHtcclxuICAgICAgICBkYXRhLmNoaWxkcmVuLmZvckVhY2goZCA9PiB7XHJcbiAgICAgICAgICBjb25zdCB0YXJnZXQgPSBhcnJheS5maW5kKGEgPT4gYS5pZCA9PT0gZC5pZCk7XHJcbiAgICAgICAgICB0YXJnZXQuZXhwYW5kID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNvbGxhcHNlKGFycmF5LCB0YXJnZXQsIGZhbHNlKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXRpYyBjb252ZXJ0VHJlZVRvTGlzdChyb290OiBvYmplY3QpOiBhbnlbXSB7XHJcbiAgICBjb25zdCBzdGFjayA9IFtdO1xyXG4gICAgY29uc3QgYXJyYXkgPSBbXTtcclxuICAgIGNvbnN0IGhhc2hNYXAgPSB7fTtcclxuICAgIHN0YWNrLnB1c2goeyAuLi5yb290LCBsZXZlbDogMCwgZXhwYW5kOiBmYWxzZSB9KTtcclxuXHJcbiAgICB3aGlsZSAoc3RhY2subGVuZ3RoICE9PSAwKSB7XHJcbiAgICAgIGNvbnN0IG5vZGUgPSBzdGFjay5wb3AoKTtcclxuICAgICAgVHJlZVNlcnZpY2UudmlzaXROb2RlKG5vZGUsIGhhc2hNYXAsIGFycmF5KTtcclxuICAgICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gbm9kZS5jaGlsZHJlbi5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICAgICAgc3RhY2sucHVzaCh7IC4uLm5vZGUuY2hpbGRyZW5bIGkgXSwgbGV2ZWw6IG5vZGUubGV2ZWwgKyAxLCBleHBhbmQ6IGZhbHNlLCBwYXJlbnQ6IG5vZGUgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGFycmF5O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHZpc2l0Tm9kZShub2RlOiBhbnksIGhhc2hNYXA6IG9iamVjdCwgYXJyYXk6IGFueVtdKTogdm9pZCB7XHJcbiAgICBpZiAoIWhhc2hNYXBbIG5vZGUuaWQgXSkge1xyXG4gICAgICBoYXNoTWFwWyBub2RlLmlkIF0gPSB0cnVlO1xyXG4gICAgICBhcnJheS5wdXNoKG5vZGUpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=