UNPKG

@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
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=