@yoyoboot/l-52abp-ng
Version:
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.1.13.
40 lines • 5.64 kB
JavaScript
import { Injectable } from '@angular/core';
import * as _ from 'lodash';
import * as i0 from "@angular/core";
export class ArrayToTreeConverterService {
createTree(array, parentIdProperty, idProperty, parentIdValue, childrenProperty, fieldMappings) {
const tree = [];
const nodes = _.filter(array, [parentIdProperty, parentIdValue]);
_.forEach(nodes, node => {
const newNode = {
data: node,
};
this.mapFields(node, newNode, fieldMappings);
newNode[childrenProperty] = this.createTree(array, parentIdProperty, idProperty, node[idProperty], childrenProperty, fieldMappings);
tree.push(newNode);
});
return tree;
}
mapFields(node, newNode, fieldMappings) {
_.forEach(fieldMappings, fieldMapping => {
if (!fieldMapping.target) {
return;
}
if (fieldMapping.hasOwnProperty('value')) {
newNode[fieldMapping.target] = fieldMapping.value;
}
else if (fieldMapping.source) {
newNode[fieldMapping.target] = node[fieldMapping.source];
}
else if (fieldMapping.targetFunction) {
newNode[fieldMapping.target] = fieldMapping.targetFunction(node);
}
});
}
}
ArrayToTreeConverterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ArrayToTreeConverterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
ArrayToTreeConverterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ArrayToTreeConverterService });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ArrayToTreeConverterService, decorators: [{
type: Injectable
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXktdG8tdHJlZS1jb252ZXJ0ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2wtNTJhYnAtbmcvc3JjL3V0aWxzL2FycmF5LXRvLXRyZWUtY29udmVydGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQzs7QUFHNUIsTUFBTSxPQUFPLDJCQUEyQjtJQUN0QyxVQUFVLENBQUMsS0FBWSxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsZ0JBQXdCLEVBQUUsYUFBYTtRQUMzRyxNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7UUFFaEIsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBRWpFLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ3RCLE1BQU0sT0FBTyxHQUFHO2dCQUNkLElBQUksRUFBRSxJQUFJO2FBQ1gsQ0FBQztZQUVGLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FBQztZQUU3QyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUN6QyxLQUFLLEVBQ0wsZ0JBQWdCLEVBQ2hCLFVBQVUsRUFDVixJQUFJLENBQUMsVUFBVSxDQUFDLEVBQ2hCLGdCQUFnQixFQUNoQixhQUFhLENBQ2QsQ0FBQztZQUVGLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxTQUFTLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxhQUFhO1FBQ3BDLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLFlBQVksQ0FBQyxFQUFFO1lBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFO2dCQUN4QixPQUFPO2FBQ1I7WUFFRCxJQUFJLFlBQVksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ3hDLE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQzthQUNuRDtpQkFBTSxJQUFJLFlBQVksQ0FBQyxNQUFNLEVBQUU7Z0JBQzlCLE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUMxRDtpQkFBTSxJQUFJLFlBQVksQ0FBQyxjQUFjLEVBQUU7Z0JBQ3RDLE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEdBQUcsWUFBWSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNsRTtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7eUhBMUNVLDJCQUEyQjs2SEFBM0IsMkJBQTJCOzRGQUEzQiwyQkFBMkI7a0JBRHZDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBcnJheVRvVHJlZUNvbnZlcnRlclNlcnZpY2Uge1xuICBjcmVhdGVUcmVlKGFycmF5OiBhbnlbXSwgcGFyZW50SWRQcm9wZXJ0eSwgaWRQcm9wZXJ0eSwgcGFyZW50SWRWYWx1ZSwgY2hpbGRyZW5Qcm9wZXJ0eTogc3RyaW5nLCBmaWVsZE1hcHBpbmdzKTogYW55IHtcbiAgICBjb25zdCB0cmVlID0gW107XG5cbiAgICBjb25zdCBub2RlcyA9IF8uZmlsdGVyKGFycmF5LCBbcGFyZW50SWRQcm9wZXJ0eSwgcGFyZW50SWRWYWx1ZV0pO1xuXG4gICAgXy5mb3JFYWNoKG5vZGVzLCBub2RlID0+IHtcbiAgICAgIGNvbnN0IG5ld05vZGUgPSB7XG4gICAgICAgIGRhdGE6IG5vZGUsXG4gICAgICB9O1xuXG4gICAgICB0aGlzLm1hcEZpZWxkcyhub2RlLCBuZXdOb2RlLCBmaWVsZE1hcHBpbmdzKTtcblxuICAgICAgbmV3Tm9kZVtjaGlsZHJlblByb3BlcnR5XSA9IHRoaXMuY3JlYXRlVHJlZShcbiAgICAgICAgYXJyYXksXG4gICAgICAgIHBhcmVudElkUHJvcGVydHksXG4gICAgICAgIGlkUHJvcGVydHksXG4gICAgICAgIG5vZGVbaWRQcm9wZXJ0eV0sXG4gICAgICAgIGNoaWxkcmVuUHJvcGVydHksXG4gICAgICAgIGZpZWxkTWFwcGluZ3MsXG4gICAgICApO1xuXG4gICAgICB0cmVlLnB1c2gobmV3Tm9kZSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdHJlZTtcbiAgfVxuXG4gIG1hcEZpZWxkcyhub2RlLCBuZXdOb2RlLCBmaWVsZE1hcHBpbmdzKTogdm9pZCB7XG4gICAgXy5mb3JFYWNoKGZpZWxkTWFwcGluZ3MsIGZpZWxkTWFwcGluZyA9PiB7XG4gICAgICBpZiAoIWZpZWxkTWFwcGluZy50YXJnZXQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoZmllbGRNYXBwaW5nLmhhc093blByb3BlcnR5KCd2YWx1ZScpKSB7XG4gICAgICAgIG5ld05vZGVbZmllbGRNYXBwaW5nLnRhcmdldF0gPSBmaWVsZE1hcHBpbmcudmFsdWU7XG4gICAgICB9IGVsc2UgaWYgKGZpZWxkTWFwcGluZy5zb3VyY2UpIHtcbiAgICAgICAgbmV3Tm9kZVtmaWVsZE1hcHBpbmcudGFyZ2V0XSA9IG5vZGVbZmllbGRNYXBwaW5nLnNvdXJjZV07XG4gICAgICB9IGVsc2UgaWYgKGZpZWxkTWFwcGluZy50YXJnZXRGdW5jdGlvbikge1xuICAgICAgICBuZXdOb2RlW2ZpZWxkTWFwcGluZy50YXJnZXRdID0gZmllbGRNYXBwaW5nLnRhcmdldEZ1bmN0aW9uKG5vZGUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=