UNPKG

@c8y/ngx-components

Version:

Angular modules for Cumulocity IoT applications

118 lines 15.3 kB
import { Component, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core'; import { Router } from '@angular/router'; import { InventoryService } from '@c8y/client'; import { gettext, ViewContext } from '@c8y/ngx-components'; import { ContextDashboardService } from './context-dashboard.service'; import * as i0 from "@angular/core"; import * as i1 from "@angular/router"; import * as i2 from "./context-dashboard.service"; import * as i3 from "@c8y/client"; import * as i4 from "@c8y/ngx-components"; export class PasteDashboardActionComponent { constructor(vcRef, router, contextDashboardService, inventoryService) { this.vcRef = vcRef; this.router = router; this.contextDashboardService = contextDashboardService; this.inventoryService = inventoryService; this.pasteDisabled = false; this.dashboardName = ''; } async ngOnInit() { this.currentUrl = this.router.url; this.contextId = this.currentUrl.match(/\d+/)[0]; const isDevice = new RegExp(/device\/\d+/).test(this.currentUrl); const isGroup = new RegExp(/group\/\d+/).test(this.currentUrl); this.currentViewContext = isDevice ? ViewContext.Device : isGroup ? ViewContext.Group : null; await this.checkIfPasteIsAllowed(); this.vcRef.createEmbeddedView(this.templatePaste); const clipboard = this.contextDashboardService.copyClipboard; if (clipboard) { this.dashboardName = clipboard.dashboard.name; } } async pasteDashboard() { if (!this.contextMO) { this.contextMO = await this.getContextMo(this.contextId); } const context = { context: this.currentViewContext, contextData: this.contextMO }; await this.contextDashboardService.pasteDashboard(context); } async getContextMo(id) { return (await this.inventoryService.detail(id)).data; } async checkIfPasteIsAllowed() { const clipboardViewContext = this.contextDashboardService.copyClipboard.context.context; const isTypeDashboard = this.contextDashboardService.copyClipboard?.dashboard?.deviceType; if (this.currentViewContext !== clipboardViewContext) { if (clipboardViewContext === ViewContext.Device) { this.buttonTitle = gettext('Device dashboards can only be copied into a device.'); } else if (clipboardViewContext === ViewContext.Group) { this.buttonTitle = gettext('Group dashboards can only be copied into a group.'); } this.pasteDisabled = true; return; } else if (isTypeDashboard) { this.contextMO = await this.getContextMo(this.contextId); const dashboardDeviceType = this.contextDashboardService.copyClipboard.dashboard.deviceTypeValue; if (dashboardDeviceType === this.contextMO.type) { this.buttonTitle = gettext('Dashboard template can only be copied into assets of a different type.'); this.pasteDisabled = true; return; } } this.buttonTitle = gettext('Paste dashboard'); this.pasteDisabled = false; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PasteDashboardActionComponent, deps: [{ token: i0.ViewContainerRef }, { token: i1.Router }, { token: i2.ContextDashboardService }, { token: i3.InventoryService }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PasteDashboardActionComponent, selector: "c8y-paste-dashboard-action", viewQueries: [{ propertyName: "templatePaste", first: true, predicate: ["templatePaste"], descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: ` <ng-template #templatePaste> <li> <button class="btn btn-link" title="{{ buttonTitle | translate }}" type="button" (click)="pasteDashboard()" [disabled]="pasteDisabled" > <i class="m-r-4" c8yIcon="clipboard"></i> <span ngNonBindable translate [translateParams]="{ dashboardName: dashboardName }"> Paste dashboard "{{ dashboardName }}" </span> </button> </li> </ng-template> `, isInline: true, dependencies: [{ kind: "directive", type: i4.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i4.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "pipe", type: i4.C8yTranslatePipe, name: "translate" }] }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PasteDashboardActionComponent, decorators: [{ type: Component, args: [{ selector: 'c8y-paste-dashboard-action', template: ` <ng-template #templatePaste> <li> <button class="btn btn-link" title="{{ buttonTitle | translate }}" type="button" (click)="pasteDashboard()" [disabled]="pasteDisabled" > <i class="m-r-4" c8yIcon="clipboard"></i> <span ngNonBindable translate [translateParams]="{ dashboardName: dashboardName }"> Paste dashboard "{{ dashboardName }}" </span> </button> </li> </ng-template> ` }] }], ctorParameters: () => [{ type: i0.ViewContainerRef }, { type: i1.Router }, { type: i2.ContextDashboardService }, { type: i3.InventoryService }], propDecorators: { templatePaste: [{ type: ViewChild, args: ['templatePaste', { read: TemplateRef, static: true }] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzdGUtZGFzaGJvYXJkLWFjdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb250ZXh0LWRhc2hib2FyZC9wYXN0ZS1kYXNoYm9hcmQtYWN0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFdBQVcsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUYsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBa0IsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7O0FBdUJ0RSxNQUFNLE9BQU8sNkJBQTZCO0lBVXhDLFlBQ1UsS0FBdUIsRUFDdkIsTUFBYyxFQUNkLHVCQUFnRCxFQUNoRCxnQkFBa0M7UUFIbEMsVUFBSyxHQUFMLEtBQUssQ0FBa0I7UUFDdkIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUFDaEQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQWI1QyxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUV0QixrQkFBYSxHQUFHLEVBQUUsQ0FBQztJQVloQixDQUFDO0lBRUosS0FBSyxDQUFDLFFBQVE7UUFDWixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFakQsTUFBTSxRQUFRLEdBQVksSUFBSSxNQUFNLENBQUMsYUFBYSxDQUFD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Q1QsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQzdCLENBQUM7K0dBNUVVLDZCQUE2QjttR0FBN0IsNkJBQTZCLDZKQUVKLFdBQVcsMkNBckJyQzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQlQ7OzRGQUVVLDZCQUE2QjtrQkFyQnpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDRCQUE0QjtvQkFDdEMsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCVDtpQkFDRjsrS0FHa0UsYUFBYTtzQkFBN0UsU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IElNYW5hZ2VkT2JqZWN0LCBJbnZlbnRvcnlTZXJ2aWNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgZ2V0dGV4dCwgVmlld0NvbnRleHQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IERhc2hib2FyZENvbnRleHQgfSBmcm9tICcuL2NvbnRleHQtZGFzaGJvYXJkLm1vZGVsJztcbmltcG9ydCB7IENvbnRleHREYXNoYm9hcmRTZXJ2aWNlIH0gZnJvbSAnLi9jb250ZXh0LWRhc2hib2FyZC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LXBhc3RlLWRhc2hib2FyZC1hY3Rpb24nLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy10ZW1wbGF0ZSAjdGVtcGxhdGVQYXN0ZT5cbiAgICAgIDxsaT5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCJcbiAgICAgICAgICB0aXRsZT1cInt7IGJ1dHRvblRpdGxlIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAoY2xpY2spPVwicGFzdGVEYXNoYm9hcmQoKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cInBhc3RlRGlzYWJsZWRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGkgY2xhc3M9XCJtLXItNFwiIGM4eUljb249XCJjbGlwYm9hcmRcIj48L2k+XG4gICAgICAgICAgPHNwYW4gbmdOb25CaW5kYWJsZSB0cmFuc2xhdGUgW3RyYW5zbGF0ZVBhcmFtc109XCJ7IGRhc2hib2FyZE5hbWU6IGRhc2hib2FyZE5hbWUgfVwiPlxuICAgICAgICAgICAgUGFzdGUgZGFzaGJvYXJkIFwie3sgZGFzaGJvYXJkTmFtZSB9fVwiXG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbGk+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgYFxufSlcbmV4cG9ydCBjbGFzcyBQYXN0ZURhc2hib2FyZEFjdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHBhc3RlRGlzYWJsZWQgPSBmYWxzZTtcbiAgQFZpZXdDaGlsZCgndGVtcGxhdGVQYXN0ZScsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogdHJ1ZSB9KSB0ZW1wbGF0ZVBhc3RlO1xuICBkYXNoYm9hcmROYW1lID0gJyc7XG4gIGJ1dHRvblRpdGxlOiBzdHJpbmc7XG4gIHByaXZhdGUgY3VycmVudFZpZXdDb250ZXh0OiBWaWV3Q29udGV4dDtcbiAgcHJpdmF0ZSBjdXJyZW50VXJsOiBzdHJpbmc7XG4gIHByaXZhdGUgY29udGV4dE1POiBJTWFuYWdlZE9iamVjdDtcbiAgcHJpdmF0ZSBjb250ZXh0SWQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHZjUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBjb250ZXh0RGFzaGJvYXJkU2VydmljZTogQ29udGV4dERhc2hib2FyZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbnZlbnRvcnlTZXJ2aWNlOiBJbnZlbnRvcnlTZXJ2aWNlXG4gICkge31cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmN1cnJlbnRVcmwgPSB0aGlzLnJvdXRlci51cmw7XG4gICAgdGhpcy5jb250ZXh0SWQgPSB0aGlzLmN1cnJlbnRVcmwubWF0Y2goL1xcZCsvKVswXTtcblxuICAgIGNvbnN0IGlzRGV2aWNlOiBib29sZWFuID0gbmV3IFJlZ0V4cCgvZGV2aWNlXFwvXFxkKy8pLnRlc3QodGhpcy5jdXJyZW50VXJsKTtcbiAgICBjb25zdCBpc0dyb3VwOiBib29sZWFuID0gbmV3IFJlZ0V4cCgvZ3JvdXBcXC9cXGQrLykudGVzdCh0aGlzLmN1cnJlbnRVcmwpO1xuICAgIHRoaXMuY3VycmVudFZpZXdDb250ZXh0ID0gaXNEZXZpY2UgPyBWaWV3Q29udGV4dC5EZXZpY2UgOiBpc0dyb3VwID8gVmlld0NvbnRleHQuR3JvdXAgOiBudWxsO1xuICAgIGF3YWl0IHRoaXMuY2hlY2tJZlBhc3RlSXNBbGxvd2VkKCk7XG5cbiAgICB0aGlzLnZjUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlUGFzdGUpO1xuICAgIGNvbnN0IGNsaXBib2FyZCA9IHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UuY29weUNsaXBib2FyZDtcbiAgICBpZiAoY2xpcGJvYXJkKSB7XG4gICAgICB0aGlzLmRhc2hib2FyZE5hbWUgPSBjbGlwYm9hcmQuZGFzaGJvYXJkLm5hbWU7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcGFzdGVEYXNoYm9hcmQoKSB7XG4gICAgaWYgKCF0aGlzLmNvbnRleHRNTykge1xuICAgICAgdGhpcy5jb250ZXh0TU8gPSBhd2FpdCB0aGlzLmdldENvbnRleHRNbyh0aGlzLmNvbnRleHRJZCk7XG4gICAgfVxuICAgIGNvbnN0IGNvbnRleHQ6IERhc2hib2FyZENvbnRleHQgPSB7XG4gICAgICBjb250ZXh0OiB0aGlzLmN1cnJlbnRWaWV3Q29udGV4dCxcbiAgICAgIGNvbnRleHREYXRhOiB0aGlzLmNvbnRleHRNT1xuICAgIH07XG5cbiAgICBhd2FpdCB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLnBhc3RlRGFzaGJvYXJkKGNvbnRleHQpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRDb250ZXh0TW8oaWQ6IHN0cmluZyk6IFByb21pc2U8SU1hbmFnZWRPYmplY3Q+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMuaW52ZW50b3J5U2VydmljZS5kZXRhaWwoaWQpKS5kYXRhO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjaGVja0lmUGFzdGVJc0FsbG93ZWQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgY2xpcGJvYXJkVmlld0NvbnRleHQgPSB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLmNvcHlDbGlwYm9hcmQuY29udGV4dC5jb250ZXh0O1xuICAgIGNvbnN0IGlzVHlwZURhc2hib2FyZCA9IHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UuY29weUNsaXBib2FyZD8uZGFzaGJvYXJkPy5kZXZpY2VUeXBlO1xuXG4gICAgaWYgKHRoaXMuY3VycmVudFZpZXdDb250ZXh0ICE9PSBjbGlwYm9hcmRWaWV3Q29udGV4dCkge1xuICAgICAgaWYgKGNsaXBib2FyZFZpZXdDb250ZXh0ID09PSBWaWV3Q29udGV4dC5EZXZpY2UpIHtcbiAgICAgICAgdGhpcy5idXR0b25UaXRsZSA9IGdldHRleHQoJ0RldmljZSBkYXNoYm9hcmRzIGNhbiBvbmx5IGJlIGNvcGllZCBpbnRvIGEgZGV2aWNlLicpO1xuICAgICAgfSBlbHNlIGlmIChjbGlwYm9hcmRWaWV3Q29udGV4dCA9PT0gVmlld0NvbnRleHQuR3JvdXApIHtcbiAgICAgICAgdGhpcy5idXR0b25UaXRsZSA9IGdldHRleHQoJ0dyb3VwIGRhc2hib2FyZHMgY2FuIG9ubHkgYmUgY29waWVkIGludG8gYSBncm91cC4nKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucGFzdGVEaXNhYmxlZCA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmIChpc1R5cGVEYXNoYm9hcmQpIHtcbiAgICAgIHRoaXMuY29udGV4dE1PID0gYXdhaXQgdGhpcy5nZXRDb250ZXh0TW8odGhpcy5jb250ZXh0SWQpO1xuICAgICAgY29uc3QgZGFzaGJvYXJkRGV2aWNlVHlwZSA9XG4gICAgICAgIHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UuY29weUNsaXBib2FyZC5kYXNoYm9hcmQuZGV2aWNlVHlwZVZhbHVlO1xuICAgICAgaWYgKGRhc2hib2FyZERldmljZVR5cGUgPT09IHRoaXMuY29udGV4dE1PLnR5cGUpIHtcbiAgICAgICAgdGhpcy5idXR0b25UaXRsZSA9IGdldHRleHQoXG4gICAgICAgICAgJ0Rhc2hib2FyZCB0ZW1wbGF0ZSBjYW4gb25seSBiZSBjb3BpZWQgaW50byBhc3NldHMgb2YgYSBkaWZmZXJlbnQgdHlwZS4nXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucGFzdGVEaXNhYmxlZCA9IHRydWU7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmJ1dHRvblRpdGxlID0gZ2V0dGV4dCgnUGFzdGUgZGFzaGJvYXJkJyk7XG4gICAgdGhpcy5wYXN0ZURpc2FibGVkID0gZmFsc2U7XG4gIH1cbn1cbiJdfQ==