UNPKG

@nova-ui/dashboards

Version:

Nova Dashboards is a framework designed to provide feature developers with a common solution for presenting data coming from various sources within a single view, as well as a set of predefined widget visualizations that are 100% configuration-driven and

63 lines 12 kB
// © 2022 SolarWinds Worldwide, LLC. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to // deal in the Software without restriction, including without limitation the // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or // sell copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. import { Injectable } from "@angular/core"; import { immutableSet } from "@nova-ui/bits"; import { PizzagnaLayer } from "../../types"; import * as i0 from "@angular/core"; // TODO: make it dynamic! const CHILD_ELEM_COMPONENT_TYPE = "WidgetConfiguratorSectionComponent"; export class DynamicComponentCreator { getPizzagnaUpdatedWithComponents(pizzagna, parentPath, componentIds) { const parent = pizzagna[PizzagnaLayer.Structure][parentPath]; const template = parent.properties ?.template; return this.getPizzagnaWithChildren(pizzagna, componentIds, template, parentPath); } getPizzagnaWithChildren(pizzagna, componentIds, template, parentPath) { const children = componentIds.map((id) => ({ id, componentType: CHILD_ELEM_COMPONENT_TYPE, })); let updatedPizzagna = children.reduce((res, child) => this.updateChildPizzagna(res, template, child), pizzagna); updatedPizzagna = this.getPizzagnaWithNodesSet(updatedPizzagna, parentPath, componentIds); return updatedPizzagna; } updateChildPizzagna(pizzagna, template, child) { let updatedPizzagna = immutableSet(pizzagna, `${PizzagnaLayer.Structure}.${child.id}`, child); const nodes = template.map((node) => ({ ...node, id: `${child.id}/${node.id}`, })); updatedPizzagna = nodes.reduce((res, node) => immutableSet(res, `${PizzagnaLayer.Structure}.${node.id}`, node), updatedPizzagna); const nodesIDs = nodes.map((node) => node.id); updatedPizzagna = this.getPizzagnaWithNodesSet(updatedPizzagna, child.id, nodesIDs); return updatedPizzagna; } getPizzagnaWithNodesSet(pizzagna, componentId, nodes) { const path = `${PizzagnaLayer.Structure}.${componentId}.properties.nodes`; return immutableSet(pizzagna, path, nodes); } /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DynamicComponentCreator, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); } /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DynamicComponentCreator }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DynamicComponentCreator, decorators: [{ type: Injectable }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1jb21wb25lbnQtY3JlYXRvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9waXp6YWduYS9zZXJ2aWNlcy9keW5hbWljLWNvbXBvbmVudC1jcmVhdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEseURBQXlEO0FBQ3pELEVBQUU7QUFDRiwrRUFBK0U7QUFDL0UsNEVBQTRFO0FBQzVFLDhFQUE4RTtBQUM5RSwrRUFBK0U7QUFDL0UsOEVBQThFO0FBQzlFLDREQUE0RDtBQUM1RCxFQUFFO0FBQ0YsNkVBQTZFO0FBQzdFLHVEQUF1RDtBQUN2RCxFQUFFO0FBQ0YsNkVBQTZFO0FBQzdFLDRFQUE0RTtBQUM1RSwrRUFBK0U7QUFDL0UsMEVBQTBFO0FBQzFFLGlGQUFpRjtBQUNqRiw2RUFBNkU7QUFDN0UsaUJBQWlCO0FBRWpCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3QyxPQUFPLEVBQXNDLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFFaEYseUJBQXlCO0FBQ3pCLE1BQU0seUJBQXlCLEdBQUcsb0NBQW9DLENBQUM7QUFHdkUsTUFBTSxPQUFPLHVCQUF1QjtJQUN6QixnQ0FBZ0MsQ0FDbkMsUUFBbUIsRUFDbkIsVUFBa0IsRUFDbEIsWUFBc0I7UUFFdEIsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM3RCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsVUFBVTtZQUM5QixFQUFFLFFBQThDLENBQUM7UUFFckQsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQy9CLFFBQVEsRUFDUixZQUFZLEVBQ1osUUFBUSxFQUNSLFVBQVUsQ0FDYixDQUFDO0lBQ04sQ0FBQztJQUVPLHVCQUF1QixDQUMzQixRQUFtQixFQUNuQixZQUFzQixFQUN0QixRQUE0QyxFQUM1QyxVQUFrQjtRQUVsQixNQUFNLFFBQVEsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZDLEVBQUU7WUFDRixhQUFhLEVBQUUseUJBQXlCO1NBQzNDLENBQUMsQ0FBOEIsQ0FBQztRQUVqQyxJQUFJLGVBQWUsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUNqQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxFQUM5RCxRQUFRLENBQ1gsQ0FBQztRQUNGLGVBQWUsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQzFDLGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxDQUNmLENBQUM7UUFFRixPQUFPLGVBQWUsQ0FBQztJQUMzQixDQUFDO0lBRU8sbUJBQW1CLENBQ3ZCLFFBQW1CLEVBQ25CLFFBQTRDLEVBQzVDLEtBQThCO1FBRTlCLElBQUksZUFBZSxHQUFHLFlBQVksQ0FDOUIsUUFBUSxFQUNSLEdBQUcsYUFBYSxDQUFDLFNBQVMsSUFBSSxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQ3hDLEtBQUssQ0FDUixDQUFDO1FBRUYsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNsQyxHQUFHLElBQUk7WUFDUCxFQUFFLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUU7U0FDL0IsQ0FBQyxDQUFDLENBQUM7UUFDSixlQUFlLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FDMUIsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FDVixZQUFZLENBQ1IsR0FBRyxFQUNILEdBQUcsYUFBYSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQ3ZDLElBQUksQ0FDUCxFQUNMLGVBQWUsQ0FDbEIsQ0FBQztRQUVGLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM5QyxlQUFlLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUMxQyxlQUFlLEVBQ2YsS0FBSyxDQUFDLEVBQUUsRUFDUixRQUFRLENBQ1gsQ0FBQztRQUVGLE9BQU8sZUFBZSxDQUFDO0lBQzNCLENBQUM7SUFFTyx1QkFBdUIsQ0FDM0IsUUFBbUIsRUFDbkIsV0FBbUIsRUFDbkIsS0FBZTtRQUVmLE1BQU0sSUFBSSxHQUFHLEdBQUcsYUFBYSxDQUFDLFNBQVMsSUFBSSxXQUFXLG1CQUFtQixDQUFDO1FBRTFFLE9BQU8sWUFBWSxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0MsQ0FBQztrSUFyRlEsdUJBQXVCO3NJQUF2Qix1QkFBdUI7OzRGQUF2Qix1QkFBdUI7a0JBRG5DLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvLyDCqSAyMDIyIFNvbGFyV2luZHMgV29ybGR3aWRlLCBMTEMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvXG4vLyAgZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGVcbi8vICByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Jcbi8vICBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vICBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyAgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyAgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyAgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyAgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cbmltcG9ydCB7IGltbXV0YWJsZVNldCB9IGZyb20gXCJAbm92YS11aS9iaXRzXCI7XG5cbmltcG9ydCB7IElDb21wb25lbnRDb25maWd1cmF0aW9uLCBJUGl6emFnbmEsIFBpenphZ25hTGF5ZXIgfSBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcblxuLy8gVE9ETzogbWFrZSBpdCBkeW5hbWljIVxuY29uc3QgQ0hJTERfRUxFTV9DT01QT05FTlRfVFlQRSA9IFwiV2lkZ2V0Q29uZmlndXJhdG9yU2VjdGlvbkNvbXBvbmVudFwiO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRHluYW1pY0NvbXBvbmVudENyZWF0b3Ige1xuICAgIHB1YmxpYyBnZXRQaXp6YWduYVVwZGF0ZWRXaXRoQ29tcG9uZW50cyhcbiAgICAgICAgcGl6emFnbmE6IElQaXp6YWduYSxcbiAgICAgICAgcGFyZW50UGF0aDogc3RyaW5nLFxuICAgICAgICBjb21wb25lbnRJZHM6IHN0cmluZ1tdXG4gICAgKTogSVBpenphZ25hIHtcbiAgICAgICAgY29uc3QgcGFyZW50ID0gcGl6emFnbmFbUGl6emFnbmFMYXllci5TdHJ1Y3R1cmVdW3BhcmVudFBhdGhdO1xuICAgICAgICBjb25zdCB0ZW1wbGF0ZSA9IHBhcmVudC5wcm9wZXJ0aWVzXG4gICAgICAgICAgICA/LnRlbXBsYXRlIGFzIFBhcnRpYWw8SUNvbXBvbmVudENvbmZpZ3VyYXRpb24+W107XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UGl6emFnbmFXaXRoQ2hpbGRyZW4oXG4gICAgICAgICAgICBwaXp6YWduYSxcbiAgICAgICAgICAgIGNvbXBvbmVudElkcyxcbiAgICAgICAgICAgIHRlbXBsYXRlLFxuICAgICAgICAgICAgcGFyZW50UGF0aFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UGl6emFnbmFXaXRoQ2hpbGRyZW4oXG4gICAgICAgIHBpenphZ25hOiBJUGl6emFnbmEsXG4gICAgICAgIGNvbXBvbmVudElkczogc3RyaW5nW10sXG4gICAgICAgIHRlbXBsYXRlOiBQYXJ0aWFsPElDb21wb25lbnRDb25maWd1cmF0aW9uPltdLFxuICAgICAgICBwYXJlbnRQYXRoOiBzdHJpbmdcbiAgICApIHtcbiAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBjb21wb25lbnRJZHMubWFwKChpZCkgPT4gKHtcbiAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgY29tcG9uZW50VHlwZTogQ0hJTERfRUxFTV9DT01QT05FTlRfVFlQRSxcbiAgICAgICAgfSkpIGFzIElDb21wb25lbnRDb25maWd1cmF0aW9uW107XG5cbiAgICAgICAgbGV0IHVwZGF0ZWRQaXp6YWduYSA9IGNoaWxkcmVuLnJlZHVjZShcbiAgICAgICAgICAgIChyZXMsIGNoaWxkKSA9PiB0aGlzLnVwZGF0ZUNoaWxkUGl6emFnbmEocmVzLCB0ZW1wbGF0ZSwgY2hpbGQpLFxuICAgICAgICAgICAgcGl6emFnbmFcbiAgICAgICAgKTtcbiAgICAgICAgdXBkYXRlZFBpenphZ25hID0gdGhpcy5nZXRQaXp6YWduYVdpdGhOb2Rlc1NldChcbiAgICAgICAgICAgIHVwZGF0ZWRQaXp6YWduYSxcbiAgICAgICAgICAgIHBhcmVudFBhdGgsXG4gICAgICAgICAgICBjb21wb25lbnRJZHNcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gdXBkYXRlZFBpenphZ25hO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlQ2hpbGRQaXp6YWduYShcbiAgICAgICAgcGl6emFnbmE6IElQaXp6YWduYSxcbiAgICAgICAgdGVtcGxhdGU6IFBhcnRpYWw8SUNvbXBvbmVudENvbmZpZ3VyYXRpb24+W10sXG4gICAgICAgIGNoaWxkOiBJQ29tcG9uZW50Q29uZmlndXJhdGlvblxuICAgICkge1xuICAgICAgICBsZXQgdXBkYXRlZFBpenphZ25hID0gaW1tdXRhYmxlU2V0KFxuICAgICAgICAgICAgcGl6emFnbmEsXG4gICAgICAgICAgICBgJHtQaXp6YWduYUxheWVyLlN0cnVjdHVyZX0uJHtjaGlsZC5pZH1gLFxuICAgICAgICAgICAgY2hpbGRcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBub2RlcyA9IHRlbXBsYXRlLm1hcCgobm9kZSkgPT4gKHtcbiAgICAgICAgICAgIC4uLm5vZGUsXG4gICAgICAgICAgICBpZDogYCR7Y2hpbGQuaWR9LyR7bm9kZS5pZH1gLFxuICAgICAgICB9KSk7XG4gICAgICAgIHVwZGF0ZWRQaXp6YWduYSA9IG5vZGVzLnJlZHVjZShcbiAgICAgICAgICAgIChyZXMsIG5vZGUpID0+XG4gICAgICAgICAgICAgICAgaW1tdXRhYmxlU2V0KFxuICAgICAgICAgICAgICAgICAgICByZXMsXG4gICAgICAgICAgICAgICAgICAgIGAke1BpenphZ25hTGF5ZXIuU3RydWN0dXJlfS4ke25vZGUuaWR9YCxcbiAgICAgICAgICAgICAgICAgICAgbm9kZVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB1cGRhdGVkUGl6emFnbmFcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBub2Rlc0lEcyA9IG5vZGVzLm1hcCgobm9kZSkgPT4gbm9kZS5pZCk7XG4gICAgICAgIHVwZGF0ZWRQaXp6YWduYSA9IHRoaXMuZ2V0UGl6emFnbmFXaXRoTm9kZXNTZXQoXG4gICAgICAgICAgICB1cGRhdGVkUGl6emFnbmEsXG4gICAgICAgICAgICBjaGlsZC5pZCxcbiAgICAgICAgICAgIG5vZGVzSURzXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHVwZGF0ZWRQaXp6YWduYTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFBpenphZ25hV2l0aE5vZGVzU2V0KFxuICAgICAgICBwaXp6YWduYTogSVBpenphZ25hLFxuICAgICAgICBjb21wb25lbnRJZDogc3RyaW5nLFxuICAgICAgICBub2Rlczogc3RyaW5nW11cbiAgICApIHtcbiAgICAgICAgY29uc3QgcGF0aCA9IGAke1BpenphZ25hTGF5ZXIuU3RydWN0dXJlfS4ke2NvbXBvbmVudElkfS5wcm9wZXJ0aWVzLm5vZGVzYDtcblxuICAgICAgICByZXR1cm4gaW1tdXRhYmxlU2V0KHBpenphZ25hLCBwYXRoLCBub2Rlcyk7XG4gICAgfVxufVxuIl19