@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
JavaScript
// © 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