@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
66 lines • 14.1 kB
JavaScript
import { Component, ElementRef } from '@angular/core';
import { gettext } from '@c8y/ngx-components';
import { get } from 'lodash-es';
import { BsModalRef } from 'ngx-bootstrap/modal';
import * as i0 from "@angular/core";
import * as i1 from "ngx-bootstrap/modal";
import * as i2 from "@c8y/ngx-components";
import * as i3 from "@angular/common";
import * as i4 from "@angular/forms";
import * as i5 from "../datapoint-selector.component";
export class DatapointSelectorModalComponent {
constructor(bsModal, elementRef) {
this.bsModal = bsModal;
this.elementRef = elementRef;
this.allowChangingContext = true;
this.allowSearch = true;
this.allowDatapointsFromMultipleAssets = true;
this.selectedDatapoints = new Array();
this.title = gettext('Data point selector');
this.saveButtonLabel = gettext('Add data points');
this.guessDatapointUnit = true;
this.defaultActiveState = true;
this.finishWithFirstSelection = false;
this.ignoreDatapointTemplates = false;
this.itemsEditable = true;
this.datapointTemplatesOnly = false;
this.assetSelectorConfig = {};
this.result = new Promise((resolve, reject) => {
this.save = resolve;
this.cancel = reject;
});
}
ngOnInit() {
this.applyWorkaroundForAngularJSModalsThatMightBeOpenedInParallel();
}
saveChanges() {
this.bsModal.hide();
this.save(this.selectedDatapoints);
}
close() {
this.bsModal.hide();
this.cancel();
}
selectionChange(selection) {
this.selectedDatapoints = selection;
if (this.finishWithFirstSelection) {
this.saveChanges();
}
}
/**
* changes the z-index of the modal, to make sure this modal is on top.
* required as angularJS modals are placing them selves on top via adjusting z-index.
* while angular modals use the order within the dom for this..
*/
applyWorkaroundForAngularJSModalsThatMightBeOpenedInParallel() {
const modalContainer = get(this.elementRef, 'nativeElement.parentElement.parentElement.parentElement');
modalContainer.style.zIndex = '1060';
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DatapointSelectorModalComponent, deps: [{ token: i1.BsModalRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DatapointSelectorModalComponent, selector: "c8y-datapoint-selector-modal", ngImport: i0, template: "<div class=\"modal-header separator\">\n <h4 id=\"modal-title\" class=\"text-medium\">{{ title | translate }}</h4>\n</div>\n<div class=\"modal-inner-scroll modal-inner-scroll--fixed\" id=\"modal-body\">\n <c8y-datapoint-selector\n [contextAsset]=\"contextAsset\"\n [guessDatapointUnit]=\"guessDatapointUnit\"\n [allowDatapointsFromMultipleAssets]=\"allowDatapointsFromMultipleAssets\"\n [allowChangingContext]=\"allowChangingContext\"\n [defaultActiveState]=\"defaultActiveState\"\n [allowSearch]=\"allowSearch\"\n [hideSelection]=\"finishWithFirstSelection\"\n [ignoreDatapointTemplates]=\"ignoreDatapointTemplates\"\n [datapointTemplatesOnly]=\"datapointTemplatesOnly\"\n [itemsEditable]=\"itemsEditable\"\n [ngModel]=\"selectedDatapoints\"\n (ngModelChange)=\"selectionChange($event)\"\n ></c8y-datapoint-selector>\n</div>\n<div class=\"modal-footer\">\n <button\n type=\"button\"\n [title]=\"'Cancel' | translate\"\n class=\"btn btn-default\"\n (click)=\"close()\"\n translate\n >\n Cancel\n </button>\n <button\n [title]=\"saveButtonLabel | translate\"\n class=\"btn btn-primary\"\n [disabled]=\"!this.selectedDatapoints?.length\"\n (click)=\"saveChanges()\"\n *ngIf=\"!finishWithFirstSelection\"\n >\n {{ saveButtonLabel | translate }}\n </button>\n</div>\n", dependencies: [{ kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.DatapointSelectorComponent, selector: "c8y-datapoint-selector", inputs: ["contextAsset", "allowChangingContext", "allowDatapointsFromMultipleAssets", "defaultActiveState", "ignoreDatapointTemplates", "datapointTemplatesOnly", "guessDatapointUnit", "allowSearch", "hideSelection", "itemsEditable"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }] }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DatapointSelectorModalComponent, decorators: [{
type: Component,
args: [{ selector: 'c8y-datapoint-selector-modal', template: "<div class=\"modal-header separator\">\n <h4 id=\"modal-title\" class=\"text-medium\">{{ title | translate }}</h4>\n</div>\n<div class=\"modal-inner-scroll modal-inner-scroll--fixed\" id=\"modal-body\">\n <c8y-datapoint-selector\n [contextAsset]=\"contextAsset\"\n [guessDatapointUnit]=\"guessDatapointUnit\"\n [allowDatapointsFromMultipleAssets]=\"allowDatapointsFromMultipleAssets\"\n [allowChangingContext]=\"allowChangingContext\"\n [defaultActiveState]=\"defaultActiveState\"\n [allowSearch]=\"allowSearch\"\n [hideSelection]=\"finishWithFirstSelection\"\n [ignoreDatapointTemplates]=\"ignoreDatapointTemplates\"\n [datapointTemplatesOnly]=\"datapointTemplatesOnly\"\n [itemsEditable]=\"itemsEditable\"\n [ngModel]=\"selectedDatapoints\"\n (ngModelChange)=\"selectionChange($event)\"\n ></c8y-datapoint-selector>\n</div>\n<div class=\"modal-footer\">\n <button\n type=\"button\"\n [title]=\"'Cancel' | translate\"\n class=\"btn btn-default\"\n (click)=\"close()\"\n translate\n >\n Cancel\n </button>\n <button\n [title]=\"saveButtonLabel | translate\"\n class=\"btn btn-primary\"\n [disabled]=\"!this.selectedDatapoints?.length\"\n (click)=\"saveChanges()\"\n *ngIf=\"!finishWithFirstSelection\"\n >\n {{ saveButtonLabel | translate }}\n </button>\n</div>\n" }]
}], ctorParameters: () => [{ type: i1.BsModalRef }, { type: i0.ElementRef }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50LXNlbGVjdG9yLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2RhdGFwb2ludC1zZWxlY3Rvci9kYXRhcG9pbnQtc2VsZWN0b3ItbW9kYWwvZGF0YXBvaW50LXNlbGVjdG9yLW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2RhdGFwb2ludC1zZWxlY3Rvci9kYXRhcG9pbnQtc2VsZWN0b3ItbW9kYWwvZGF0YXBvaW50LXNlbGVjdG9yLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRTlELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7OztBQVVqRCxNQUFNLE9BQU8sK0JBQStCO0lBdUIxQyxZQUNVLE9BQW1CLEVBQ25CLFVBQXNCO1FBRHRCLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFDbkIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQXZCaEMseUJBQW9CLEdBQUcsSUFBSSxDQUFDO1FBQzVCLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ25CLHNDQUFpQyxHQUFHLElBQUksQ0FBQztRQUN6Qyx1QkFBa0IsR0FBRyxJQUFJLEtBQUssRUFBYyxDQUFDO1FBQzdDLFVBQUssR0FBVyxPQUFPLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUMvQyxvQkFBZSxHQUFXLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3JELHVCQUFrQixHQUFHLElBQUksQ0FBQztRQUMxQix1QkFBa0IsR0FBRyxJQUFJLENBQUM7UUFDMUIsNkJBQXdCLEdBQUcsS0FBSyxDQUFDO1FBQ2pDLDZCQUF3QixHQUFHLEtBQUssQ0FBQztRQUNqQyxrQkFBYSxHQUFHLElBQUksQ0FBQztRQUNyQiwyQkFBc0IsR0FBRyxLQUFLLENBQUM7UUFDL0Isd0JBQW1CLEdBQXdELEVBQUUsQ0FBQztRQUNyRSxXQUFNLEdBQTBCLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3ZFLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUFDO0lBUUEsQ0FBQztJQUVKLFFBQVE7UUFDTixJQUFJLENBQUMsNERBQTRELEVBQUUsQ0FBQztJQUN0RSxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxlQUFlLENBQUMsU0FBNEI7UUFDMUMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFNBQVMsQ0FBQztRQUNwQyxJQUFJLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyQixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyw0REFBNEQ7UUFDbEUsTUFBTSxjQUFjLEdBQWdCLEdBQUcsQ0FDckMsSUFBSSxDQUFDLFVBQVUsRUFDZix5REFBeUQsQ0FDMUQsQ0FBQztRQUNGLGNBQWMsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QyxDQUFDOytHQTVEVSwrQkFBK0I7bUdBQS9CLCtCQUErQixvRUNkNUMsazBDQXVDQTs7NEZEekJhLCtCQUErQjtrQkFKM0MsU0FBUzsrQkFDRSw4QkFBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSUlkZW50aWZpZWQgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBnZXR0ZXh0IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBnZXQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQnNNb2RhbFJlZiB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHtcbiAgRGF0YXBvaW50U2VsZWN0b3JNb2RhbEFzc2V0U2VsZWN0b3JPcHRpb25zLFxuICBLUElEZXRhaWxzXG59IGZyb20gJy4uL2RhdGFwb2ludC1zZWxlY3Rpb24ubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktZGF0YXBvaW50LXNlbGVjdG9yLW1vZGFsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGFwb2ludC1zZWxlY3Rvci1tb2RhbC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgRGF0YXBvaW50U2VsZWN0b3JNb2RhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGNvbnRleHRBc3NldDogSUlkZW50aWZpZWQ7XG4gIGFsbG93Q2hhbmdpbmdDb250ZXh0ID0gdHJ1ZTtcbiAgYWxsb3dTZWFyY2ggPSB0cnVlO1xuICBhbGxvd0RhdGFwb2ludHNGcm9tTXVsdGlwbGVBc3NldHMgPSB0cnVlO1xuICBzZWxlY3RlZERhdGFwb2ludHMgPSBuZXcgQXJyYXk8S1BJRGV0YWlscz4oKTtcbiAgdGl0bGU6IHN0cmluZyA9IGdldHRleHQoJ0RhdGEgcG9pbnQgc2VsZWN0b3InKTtcbiAgc2F2ZUJ1dHRvbkxhYmVsOiBzdHJpbmcgPSBnZXR0ZXh0KCdBZGQgZGF0YSBwb2ludHMnKTtcbiAgZ3Vlc3NEYXRhcG9pbnRVbml0ID0gdHJ1ZTtcbiAgZGVmYXVsdEFjdGl2ZVN0YXRlID0gdHJ1ZTtcbiAgZmluaXNoV2l0aEZpcnN0U2VsZWN0aW9uID0gZmFsc2U7XG4gIGlnbm9yZURhdGFwb2ludFRlbXBsYXRlcyA9IGZhbHNlO1xuICBpdGVtc0VkaXRhYmxlID0gdHJ1ZTtcbiAgZGF0YXBvaW50VGVtcGxhdGVzT25seSA9IGZhbHNlO1xuICBhc3NldFNlbGVjdG9yQ29uZmlnOiBQYXJ0aWFsPERhdGFwb2ludFNlbGVjdG9yTW9kYWxBc3NldFNlbGVjdG9yT3B0aW9ucz4gPSB7fTtcbiAgcmVhZG9ubHkgcmVzdWx0OiBQcm9taXNlPEtQSURldGFpbHNbXT4gPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgdGhpcy5zYXZlID0gcmVzb2x2ZTtcbiAgICB0aGlzLmNhbmNlbCA9IHJlamVjdDtcbiAgfSk7XG5cbiAgcHJpdmF0ZSBzYXZlOiAodmFsdWU6IEtQSURldGFpbHNbXSkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBjYW5jZWw6IChyZWFzb24/OiBhbnkpID0+IHZvaWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBic01vZGFsOiBCc01vZGFsUmVmLFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZlxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5hcHBseVdvcmthcm91bmRGb3JBbmd1bGFySlNNb2RhbHNUaGF0TWlnaHRCZU9wZW5lZEluUGFyYWxsZWwoKTtcbiAgfVxuXG4gIHNhdmVDaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuYnNNb2RhbC5oaWRlKCk7XG4gICAgdGhpcy5zYXZlKHRoaXMuc2VsZWN0ZWREYXRhcG9pbnRzKTtcbiAgfVxuXG4gIGNsb3NlKCkge1xuICAgIHRoaXMuYnNNb2RhbC5oaWRlKCk7XG4gICAgdGhpcy5jYW5jZWwoKTtcbiAgfVxuXG4gIHNlbGVjdGlvbkNoYW5nZShzZWxlY3Rpb246IEFycmF5PEtQSURldGFpbHM+KSB7XG4gICAgdGhpcy5zZWxlY3RlZERhdGFwb2ludHMgPSBzZWxlY3Rpb247XG4gICAgaWYgKHRoaXMuZmluaXNoV2l0aEZpcnN0U2VsZWN0aW9uKSB7XG4gICAgICB0aGlzLnNhdmVDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIGNoYW5nZXMgdGhlIHotaW5kZXggb2YgdGhlIG1vZGFsLCB0byBtYWtlIHN1cmUgdGhpcyBtb2RhbCBpcyBvbiB0b3AuXG4gICAqIHJlcXVpcmVkIGFzIGFuZ3VsYXJKUyBtb2RhbHMgYXJlIHBsYWNpbmcgdGhlbSBzZWx2ZXMgb24gdG9wIHZpYSBhZGp1c3Rpbmcgei1pbmRleC5cbiAgICogd2hpbGUgYW5ndWxhciBtb2RhbHMgdXNlIHRoZSBvcmRlciB3aXRoaW4gdGhlIGRvbSBmb3IgdGhpcy4uXG4gICAqL1xuICBwcml2YXRlIGFwcGx5V29ya2Fyb3VuZEZvckFuZ3VsYXJKU01vZGFsc1RoYXRNaWdodEJlT3BlbmVkSW5QYXJhbGxlbCgpIHtcbiAgICBjb25zdCBtb2RhbENvbnRhaW5lcjogSFRNTEVsZW1lbnQgPSBnZXQoXG4gICAgICB0aGlzLmVsZW1lbnRSZWYsXG4gICAgICAnbmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudCdcbiAgICApO1xuICAgIG1vZGFsQ29udGFpbmVyLnN0eWxlLnpJbmRleCA9ICcxMDYwJztcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBzZXBhcmF0b3JcIj5cbiAgPGg0IGlkPVwibW9kYWwtdGl0bGVcIiBjbGFzcz1cInRleHQtbWVkaXVtXCI+e3sgdGl0bGUgfCB0cmFuc2xhdGUgfX08L2g0PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwibW9kYWwtaW5uZXItc2Nyb2xsIG1vZGFsLWlubmVyLXNjcm9sbC0tZml4ZWRcIiBpZD1cIm1vZGFsLWJvZHlcIj5cbiAgPGM4eS1kYXRhcG9pbnQtc2VsZWN0b3JcbiAgICBbY29udGV4dEFzc2V0XT1cImNvbnRleHRBc3NldFwiXG4gICAgW2d1ZXNzRGF0YXBvaW50VW5pdF09XCJndWVzc0RhdGFwb2ludFVuaXRcIlxuICAgIFthbGxvd0RhdGFwb2ludHNGcm9tTXVsdGlwbGVBc3NldHNdPVwiYWxsb3dEYXRhcG9pbnRzRnJvbU11bHRpcGxlQXNzZXRzXCJcbiAgICBbYWxsb3dDaGFuZ2luZ0NvbnRleHRdPVwiYWxsb3dDaGFuZ2luZ0NvbnRleHRcIlxuICAgIFtkZWZhdWx0QWN0aXZlU3RhdGVdPVwiZGVmYXVsdEFjdGl2ZVN0YXRlXCJcbiAgICBbYWxsb3dTZWFyY2hdPVwiYWxsb3dTZWFyY2hcIlxuICAgIFtoaWRlU2VsZWN0aW9uXT1cImZpbmlzaFdpdGhGaXJzdFNlbGVjdGlvblwiXG4gICAgW2lnbm9yZURhdGFwb2ludFRlbXBsYXRlc109XCJpZ25vcmVEYXRhcG9pbnRUZW1wbGF0ZXNcIlxuICAgIFtkYXRhcG9pbnRUZW1wbGF0ZXNPbmx5XT1cImRhdGFwb2ludFRlbXBsYXRlc09ubHlcIlxuICAgIFtpdGVtc0VkaXRhYmxlXT1cIml0ZW1zRWRpdGFibGVcIlxuICAgIFtuZ01vZGVsXT1cInNlbGVjdGVkRGF0YXBvaW50c1wiXG4gICAgKG5nTW9kZWxDaGFuZ2UpPVwic2VsZWN0aW9uQ2hhbmdlKCRldmVudClcIlxuICA+PC9jOHktZGF0YXBvaW50LXNlbGVjdG9yPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XG4gIDxidXR0b25cbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBbdGl0bGVdPVwiJ0NhbmNlbCcgfCB0cmFuc2xhdGVcIlxuICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCJcbiAgICAoY2xpY2spPVwiY2xvc2UoKVwiXG4gICAgdHJhbnNsYXRlXG4gID5cbiAgICBDYW5jZWxcbiAgPC9idXR0b24+XG4gIDxidXR0b25cbiAgICBbdGl0bGVdPVwic2F2ZUJ1dHRvbkxhYmVsIHwgdHJhbnNsYXRlXCJcbiAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgW2Rpc2FibGVkXT1cIiF0aGlzLnNlbGVjdGVkRGF0YXBvaW50cz8ubGVuZ3RoXCJcbiAgICAoY2xpY2spPVwic2F2ZUNoYW5nZXMoKVwiXG4gICAgKm5nSWY9XCIhZmluaXNoV2l0aEZpcnN0U2VsZWN0aW9uXCJcbiAgPlxuICAgIHt7IHNhdmVCdXR0b25MYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICA8L2J1dHRvbj5cbjwvZGl2PlxuIl19