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

81 lines 13.8 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 { Inject, Injectable } from "@angular/core"; import get from "lodash/get"; import pick from "lodash/pick"; import { takeUntil } from "rxjs/operators"; import { EventBus, immutableSet } from "@nova-ui/bits"; import { PizzagnaService } from "../../../../../pizzagna/services/pizzagna.service"; import { PizzagnaLayer, PIZZAGNA_EVENT_BUS } from "../../../../../types"; import { PreviewService } from "../../../preview.service"; import { BaseConverter } from "../../base-converter"; import * as i0 from "@angular/core"; import * as i1 from "../../../preview.service"; import * as i2 from "../../../../../pizzagna/services/pizzagna.service"; import * as i3 from "@nova-ui/bits"; export class GenericArrayConverterService extends BaseConverter { get previewComponentId() { return this.componentId.split("/")[0]; } constructor(eventBus, previewService, pizzagnaService) { super(eventBus, previewService, pizzagnaService); } updateConfiguration(properties) { if (properties && properties.formParts) { this.formParts = properties.formParts; } } buildForm() { const preview = this.getPreview(); const updatedPizzagna = this.formParts.reduce((res, v) => { const previewSlice = get(preview, v.previewPath); const componentInArray = previewSlice?.find((c) => c.id === this.previewComponentId); const fromPreview = pick(componentInArray, v.keys); res = immutableSet(res, `${PizzagnaLayer.Data}.${this.componentId}.properties`, fromPreview); return res; }, this.pizzagnaService.pizzagna); this.updateFormPizzagna(updatedPizzagna); } toPreview(form) { form.valueChanges .pipe(takeUntil(this.destroy$)) .subscribe((formData) => { const updatedPreview = this.formParts.reduce((p, v) => { const outPath = v.previewOutputPath || v.previewPath; const preview = get(p, outPath); const compIndex = preview.findIndex((c) => c.id === this.previewComponentId); const fromPreview = preview[compIndex]; const fromForm = pick(formData, v.keys); const merged = { ...fromPreview, ...fromForm }; return immutableSet(p, `${outPath}[${compIndex}]`, merged); }, this.getPreview()); this.updatePreview(updatedPreview); }); } /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GenericArrayConverterService, deps: [{ token: PIZZAGNA_EVENT_BUS }, { token: i1.PreviewService }, { token: i2.PizzagnaService }], target: i0.ɵɵFactoryTarget.Injectable }); } /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GenericArrayConverterService }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GenericArrayConverterService, decorators: [{ type: Injectable }], ctorParameters: () => [{ type: i3.EventBus, decorators: [{ type: Inject, args: [PIZZAGNA_EVENT_BUS] }] }, { type: i1.PreviewService }, { type: i2.PizzagnaService }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1hcnJheS1jb252ZXJ0ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29uZmlndXJhdG9yL3NlcnZpY2VzL2NvbnZlcnRlcnMvc2hhcmVkL2dlbmVyaWMtYXJyYXktY29udmVydGVyL2dlbmVyaWMtYXJyYXktY29udmVydGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEseURBQXlEO0FBQ3pELEVBQUU7QUFDRiwrRUFBK0U7QUFDL0UsNEVBQTRFO0FBQzVFLDhFQUE4RTtBQUM5RSwrRUFBK0U7QUFDL0UsOEVBQThFO0FBQzlFLDREQUE0RDtBQUM1RCxFQUFFO0FBQ0YsNkVBQTZFO0FBQzdFLHVEQUF1RDtBQUN2RCxFQUFFO0FBQ0YsNkVBQTZFO0FBQzdFLDRFQUE0RTtBQUM1RSwrRUFBK0U7QUFDL0UsMEVBQTBFO0FBQzFFLGlGQUFpRjtBQUNqRiw2RUFBNkU7QUFDN0UsaUJBQWlCO0FBRWpCLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sR0FBRyxNQUFNLFlBQVksQ0FBQztBQUM3QixPQUFPLElBQUksTUFBTSxhQUFhLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxRQUFRLEVBQVUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUNwRixPQUFPLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7QUFJckQsTUFBTSxPQUFPLDRCQUE2QixTQUFR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NEI7OzRGQUE1Qiw0QkFBNEI7a0JBRHhDLFVBQVU7OzBCQVNGLE1BQU07MkJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gwqkgMjAyMiBTb2xhcldpbmRzIFdvcmxkd2lkZSwgTExDLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vICBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0b1xuLy8gIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlXG4vLyAgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yXG4vLyAgc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vICBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyAgYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vICBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vICBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCBnZXQgZnJvbSBcImxvZGFzaC9nZXRcIjtcbmltcG9ydCBwaWNrIGZyb20gXCJsb2Rhc2gvcGlja1wiO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5cbmltcG9ydCB7IEV2ZW50QnVzLCBJRXZlbnQsIGltbXV0YWJsZVNldCB9IGZyb20gXCJAbm92YS11aS9iaXRzXCI7XG5cbmltcG9ydCB7IFBpenphZ25hU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9waXp6YWduYS9zZXJ2aWNlcy9waXp6YWduYS5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBQaXp6YWduYUxheWVyLCBQSVpaQUdOQV9FVkVOVF9CVVMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vdHlwZXNcIjtcbmltcG9ydCB7IFByZXZpZXdTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL3ByZXZpZXcuc2VydmljZVwiO1xuaW1wb3J0IHsgQmFzZUNvbnZlcnRlciB9IGZyb20gXCIuLi8uLi9iYXNlLWNvbnZlcnRlclwiO1xuaW1wb3J0IHsgSUNvbnZlcnRlckZvcm1QYXJ0c1Byb3BlcnRpZXMgfSBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEdlbmVyaWNBcnJheUNvbnZlcnRlclNlcnZpY2UgZXh0ZW5kcyBCYXNlQ29udmVydGVyIHtcbiAgICBwcml2YXRlIGZvcm1QYXJ0czogSUNvbnZlcnRlckZvcm1QYXJ0c1Byb3BlcnRpZXNbXTtcblxuICAgIHByaXZhdGUgZ2V0IHByZXZpZXdDb21wb25lbnRJZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcG9uZW50SWQuc3BsaXQoXCIvXCIpWzBdO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KFBJWlpBR05BX0VWRU5UX0JVUykgZXZlbnRCdXM6IEV2ZW50QnVzPElFdmVudD4sXG4gICAgICAgIHByZXZpZXdTZXJ2aWNlOiBQcmV2aWV3U2VydmljZSxcbiAgICAgICAgcGl6emFnbmFTZXJ2aWNlOiBQaXp6YWduYVNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoZXZlbnRCdXMsIHByZXZpZXdTZXJ2aWNlLCBwaXp6YWduYVNlcnZpY2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyB1cGRhdGVDb25maWd1cmF0aW9uKHByb3BlcnRpZXM6IHtcbiAgICAgICAgZm9ybVBhcnRzOiBJQ29udmVydGVyRm9ybVBhcnRzUHJvcGVydGllc1tdO1xuICAgIH0pOiB2b2lkIHtcbiAgICAgICAgaWYgKHByb3BlcnRpZXMgJiYgcHJvcGVydGllcy5mb3JtUGFydHMpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybVBhcnRzID0gcHJvcGVydGllcy5mb3JtUGFydHM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYnVpbGRGb3JtKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBwcmV2aWV3ID0gdGhpcy5nZXRQcmV2aWV3KCk7XG5cbiAgICAgICAgY29uc3QgdXBkYXRlZFBpenphZ25hID0gdGhpcy5mb3JtUGFydHMucmVkdWNlKChyZXMsIHYpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHByZXZpZXdTbGljZSA9IGdldChwcmV2aWV3LCB2LnByZXZpZXdQYXRoKSBhcyBhbnlbXTtcbiAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudEluQXJyYXkgPSBwcmV2aWV3U2xpY2U/LmZpbmQoXG4gICAgICAgICAgICAgICAgKGMpID0+IGMuaWQgPT09IHRoaXMucHJldmlld0NvbXBvbmVudElkXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3QgZnJvbVByZXZpZXcgPSBwaWNrKGNvbXBvbmVudEluQXJyYXksIHYua2V5cyk7XG5cbiAgICAgICAgICAgIHJlcyA9IGltbXV0YWJsZVNldChcbiAgICAgICAgICAgICAgICByZXMsXG4gICAgICAgICAgICAgICAgYCR7UGl6emFnbmFMYXllci5EYXRhfS4ke3RoaXMuY29tcG9uZW50SWR9LnByb3BlcnRpZXNgLFxuICAgICAgICAgICAgICAgIGZyb21QcmV2aWV3XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9LCB0aGlzLnBpenphZ25hU2VydmljZS5waXp6YWduYSk7XG4gICAgICAgIHRoaXMudXBkYXRlRm9ybVBpenphZ25hKHVwZGF0ZWRQaXp6YWduYSk7XG4gICAgfVxuXG4gICAgcHVibGljIHRvUHJldmlldyhmb3JtOiBGb3JtR3JvdXApOiB2b2lkIHtcbiAgICAgICAgZm9ybS52YWx1ZUNoYW5nZXNcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGZvcm1EYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZFByZXZpZXcgPSB0aGlzLmZvcm1QYXJ0cy5yZWR1Y2UoKHAsIHYpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3V0UGF0aCA9IHYucHJldmlld091dHB1dFBhdGggfHwgdi5wcmV2aWV3UGF0aDtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2aWV3ID0gZ2V0KHAsIG91dFBhdGgpIGFzIGFueVtdO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb21wSW5kZXggPSBwcmV2aWV3LmZpbmRJbmRleChcbiAgICAgICAgICAgICAgICAgICAgICAgIChjKSA9PiBjLmlkID09PSB0aGlzLnByZXZpZXdDb21wb25lbnRJZFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmcm9tUHJldmlldyA9IHByZXZpZXdbY29tcEluZGV4XTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBmcm9tRm9ybSA9IHBpY2soZm9ybURhdGEsIHYua2V5cyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1lcmdlZCA9IHsgLi4uZnJvbVByZXZpZXcsIC4uLmZyb21Gb3JtIH07XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGltbXV0YWJsZVNldChwLCBgJHtvdXRQYXRofVske2NvbXBJbmRleH1dYCwgbWVyZ2VkKTtcbiAgICAgICAgICAgICAgICB9LCB0aGlzLmdldFByZXZpZXcoKSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVByZXZpZXcodXBkYXRlZFByZXZpZXcpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxufVxuIl19