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

65 lines 10.7 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 cloneDeep from "lodash/cloneDeep"; import { ConfiguratorService } from "./configurator.service"; import { ComponentPortalService } from "../../pizzagna/services/component-portal.service"; import { PizzagnaLayer } from "../../types"; import { WidgetEditorComponent } from "../components/widget-editor/widget-editor.component"; import * as i0 from "@angular/core"; import * as i1 from "./configurator.service"; import * as i2 from "../../pizzagna/services/component-portal.service"; export class WidgetEditorService { constructor(configuratorService, componentPortalService) { this.configuratorService = configuratorService; this.componentPortalService = componentPortalService; } open(widgetEditor) { if (!widgetEditor.portalBundle) { const formPortal = { portal: this.componentPortalService.createComponentPortal(WidgetEditorComponent, null), attached: (componentRef) => { const editorComponent = componentRef.instance; editorComponent.formPizzagna = widgetEditor.formPizzagna; editorComponent.formRoot = widgetEditor.paths?.root; editorComponent.changeDetector.markForCheck(); setTimeout(() => { this.ref = componentRef; }); }, }; widgetEditor.portalBundle = formPortal; } // TODO: Handle the case when widget is undefined // @ts-ignore const widgetClone = cloneDeep(widgetEditor.widget); // wipe the data layer of the preview delete widgetClone.pizzagna[PizzagnaLayer.Data]; widgetEditor.widget = widgetClone; widgetEditor.previewPizzagnaComponent = () => this.ref.instance.configurator.getPreview(); return this.configuratorService.open(widgetEditor); } /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WidgetEditorService, deps: [{ token: i1.ConfiguratorService }, { token: i2.ComponentPortalService }], target: i0.ɵɵFactoryTarget.Injectable }); } /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WidgetEditorService }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WidgetEditorService, decorators: [{ type: Injectable }], ctorParameters: () => [{ type: i1.ConfiguratorService }, { type: i2.ComponentPortalService }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWVkaXRvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb25maWd1cmF0b3Ivc2VydmljZXMvd2lkZ2V0LWVkaXRvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlEQUF5RDtBQUN6RCxFQUFFO0FBQ0YsK0VBQStFO0FBQy9FLDRFQUE0RTtBQUM1RSw4RUFBOEU7QUFDOUUsK0VBQStFO0FBQy9FLDhFQUE4RTtBQUM5RSw0REFBNEQ7QUFDNUQsRUFBRTtBQUNGLDZFQUE2RTtBQUM3RSx1REFBdUQ7QUFDdkQsRUFBRTtBQUNGLDZFQUE2RTtBQUM3RSw0RUFBNEU7QUFDNUUsK0VBQStFO0FBQy9FLDBFQUEwRTtBQUMxRSxpRkFBaUY7QUFDakYsNkVBQTZFO0FBQzdFLGlCQUFpQjtBQUVqQixPQUFPLEVBQWdCLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLFNBQVMsTUFBTSxrQkFBa0IsQ0FBQztBQUd6QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUc3RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUMxRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDOzs7O0FBRzVGLE1BQU0sT0FBTyxtQkFBbUI7SUFHNUIsWUFDWSxtQkFBd0MsRUFDeEMsc0JBQThDO1FBRDlDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtJQUN2RCxDQUFDO0lBRUcsSUFBSSxDQUFDLFlBQTJCO1FBQ25DLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFO1lBQzVCLE1BQU0sVUFBVSxHQUFrRDtnQkFDOUQsTUFBTSxFQUFFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxxQkFBcUIsQ0FDckQscUJBQXFCLEVBQ3JCLElBQUksQ0FDUDtnQkFDRCxRQUFRLEVBQUUsQ0FBQyxZQUFZLEVBQUUsRUFBRTtvQkFDdkIsTUFBTSxlQUFlLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQztvQkFDOUMsZUFBZSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUMsWUFBWSxDQUFDO29CQUN6RCxlQUFlLENBQUMsUUFBUSxHQUFHLFlBQVksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDO29CQUNwRCxlQUFlLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO29CQUM5QyxVQUFVLENBQUMsR0FBRyxFQUFFO3dCQUNaLElBQUksQ0FBQyxHQUFHLEdBQUcsWUFBWSxDQUFDO29CQUM1QixDQUFDLENBQUMsQ0FBQztnQkFDUCxDQUFDO2FBQ0osQ0FBQztZQUVGLFlBQVksQ0FBQyxZQUFZLEdBQUcsVUFBVSxDQUFDO1NBQzFDO1FBRUQsaURBQWlEO1FBQ2pELGFBQWE7UUFDYixNQUFNLFdBQVcsR0FBWSxTQUFTLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVELHFDQUFxQztRQUNyQyxPQUFPLFdBQVcsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hELFlBQVksQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDO1FBQ2xDLFlBQVksQ0FBQyx3QkFBd0IsR0FBRyxHQUFHLEVBQUUsQ0FDekMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2hELE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN2RCxDQUFDO2tJQXRDUSxtQkFBbUI7c0lBQW5CLG1CQUFtQjs7NEZBQW5CLG1CQUFtQjtrQkFEL0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8vIMKpIDIwMjIgU29sYXJXaW5kcyBXb3JsZHdpZGUsIExMQy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyAgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG9cbi8vICBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZVxuLy8gIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vclxuLy8gIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyAgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vICBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vICBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vICBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyAgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vICBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyAgVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQgeyBDb21wb25lbnRSZWYsIEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IGNsb25lRGVlcCBmcm9tIFwibG9kYXNoL2Nsb25lRGVlcFwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XG5cbmltcG9ydCB7IENvbmZpZ3VyYXRvclNlcnZpY2UgfSBmcm9tIFwiLi9jb25maWd1cmF0b3Iuc2VydmljZVwiO1xuaW1wb3J0IHsgSUNvbXBvbmVudFBvcnRhbEJ1bmRsZSwgSVdpZGdldEVkaXRvciB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBJV2lkZ2V0IH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvd2lkZ2V0L3R5cGVzXCI7XG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWxTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3BpenphZ25hL3NlcnZpY2VzL2NvbXBvbmVudC1wb3J0YWwuc2VydmljZVwiO1xuaW1wb3J0IHsgUGl6emFnbmFMYXllciB9IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuaW1wb3J0IHsgV2lkZ2V0RWRpdG9yQ29tcG9uZW50IH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvd2lkZ2V0LWVkaXRvci93aWRnZXQtZWRpdG9yLmNvbXBvbmVudFwiO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgV2lkZ2V0RWRpdG9yU2VydmljZSB7XG4gICAgcHJpdmF0ZSByZWY6IENvbXBvbmVudFJlZjxXaWRnZXRFZGl0b3JDb21wb25lbnQ+O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgY29uZmlndXJhdG9yU2VydmljZTogQ29uZmlndXJhdG9yU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjb21wb25lbnRQb3J0YWxTZXJ2aWNlOiBDb21wb25lbnRQb3J0YWxTZXJ2aWNlXG4gICAgKSB7fVxuXG4gICAgcHVibGljIG9wZW4od2lkZ2V0RWRpdG9yOiBJV2lkZ2V0RWRpdG9yKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIGlmICghd2lkZ2V0RWRpdG9yLnBvcnRhbEJ1bmRsZSkge1xuICAgICAgICAgICAgY29uc3QgZm9ybVBvcnRhbDogSUNvbXBvbmVudFBvcnRhbEJ1bmRsZTxXaWRnZXRFZGl0b3JDb21wb25lbnQ+ID0ge1xuICAgICAgICAgICAgICAgIHBvcnRhbDogdGhpcy5jb21wb25lbnRQb3J0YWxTZXJ2aWNlLmNyZWF0ZUNvbXBvbmVudFBvcnRhbChcbiAgICAgICAgICAgICAgICAgICAgV2lkZ2V0RWRpdG9yQ29tcG9uZW50LFxuICAgICAgICAgICAgICAgICAgICBudWxsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBhdHRhY2hlZDogKGNvbXBvbmVudFJlZikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlZGl0b3JDb21wb25lbnQgPSBjb21wb25lbnRSZWYuaW5zdGFuY2U7XG4gICAgICAgICAgICAgICAgICAgIGVkaXRvckNvbXBvbmVudC5mb3JtUGl6emFnbmEgPSB3aWRnZXRFZGl0b3IuZm9ybVBpenphZ25hO1xuICAgICAgICAgICAgICAgICAgICBlZGl0b3JDb21wb25lbnQuZm9ybVJvb3QgPSB3aWRnZXRFZGl0b3IucGF0aHM/LnJvb3Q7XG4gICAgICAgICAgICAgICAgICAgIGVkaXRvckNvbXBvbmVudC5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZiA9IGNvbXBvbmVudFJlZjtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHdpZGdldEVkaXRvci5wb3J0YWxCdW5kbGUgPSBmb3JtUG9ydGFsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVE9ETzogSGFuZGxlIHRoZSBjYXNlIHdoZW4gd2lkZ2V0IGlzIHVuZGVmaW5lZFxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IHdpZGdldENsb25lOiBJV2lkZ2V0ID0gY2xvbmVEZWVwKHdpZGdldEVkaXRvci53aWRnZXQpO1xuICAgICAgICAvLyB3aXBlIHRoZSBkYXRhIGxheWVyIG9mIHRoZSBwcmV2aWV3XG4gICAgICAgIGRlbGV0ZSB3aWRnZXRDbG9uZS5waXp6YWduYVtQaXp6YWduYUxheWVyLkRhdGFdO1xuICAgICAgICB3aWRnZXRFZGl0b3Iud2lkZ2V0ID0gd2lkZ2V0Q2xvbmU7XG4gICAgICAgIHdpZGdldEVkaXRvci5wcmV2aWV3UGl6emFnbmFDb21wb25lbnQgPSAoKSA9PlxuICAgICAgICAgICAgdGhpcy5yZWYuaW5zdGFuY2UuY29uZmlndXJhdG9yLmdldFByZXZpZXcoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdG9yU2VydmljZS5vcGVuKHdpZGdldEVkaXRvcik7XG4gICAgfVxufVxuIl19