@ecip/shared
Version:
83 lines • 6.5 kB
JavaScript
/**
* @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=