@c8y/ngx-components 1024.2.4 → 1024.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/c8y-ngx-components-bookmarks.mjs +33 -23
- package/fesm2022/c8y-ngx-components-bookmarks.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-context-dashboard.mjs +2 -2
- package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs +3 -2
- package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-device-profile.mjs +27 -9
- package/fesm2022/c8y-ngx-components-device-profile.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-protocol-opcua.mjs +9 -11
- package/fesm2022/c8y-ngx-components-protocol-opcua.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-remote-access-data.mjs +43 -0
- package/fesm2022/c8y-ngx-components-remote-access-data.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.mjs +17 -3
- package/fesm2022/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-remote-access-terminal-viewer.mjs +179 -41
- package/fesm2022/c8y-ngx-components-remote-access-terminal-viewer.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-repository-firmware.mjs +5 -4
- package/fesm2022/c8y-ngx-components-repository-firmware.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-repository-software.mjs +10 -4
- package/fesm2022/c8y-ngx-components-repository-software.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-trusted-certificates.mjs +5 -4
- package/fesm2022/c8y-ngx-components-trusted-certificates.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-asset-table.mjs +6 -5
- package/fesm2022/c8y-ngx-components-widgets-implementations-asset-table.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components.mjs +9 -4
- package/fesm2022/c8y-ngx-components.mjs.map +1 -1
- package/locales/de.po +61 -5
- package/locales/es.po +61 -5
- package/locales/fr.po +61 -5
- package/locales/ja_JP.po +60 -6
- package/locales/ko.po +61 -5
- package/locales/locales.pot +60 -4
- package/locales/nl.po +61 -5
- package/locales/pl.po +61 -5
- package/locales/pt_BR.po +61 -5
- package/locales/zh_CN.po +61 -5
- package/locales/zh_TW.po +61 -5
- package/package.json +1 -1
- package/types/c8y-ngx-components-bookmarks.d.ts +7 -7
- package/types/c8y-ngx-components-bookmarks.d.ts.map +1 -1
- package/types/c8y-ngx-components-device-profile.d.ts +5 -2
- package/types/c8y-ngx-components-device-profile.d.ts.map +1 -1
- package/types/c8y-ngx-components-protocol-opcua.d.ts.map +1 -1
- package/types/c8y-ngx-components-remote-access-data.d.ts +19 -0
- package/types/c8y-ngx-components-remote-access-data.d.ts.map +1 -1
- package/types/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.d.ts +10 -3
- package/types/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.d.ts.map +1 -1
- package/types/c8y-ngx-components-remote-access-terminal-viewer.d.ts +20 -2
- package/types/c8y-ngx-components-remote-access-terminal-viewer.d.ts.map +1 -1
- package/types/c8y-ngx-components-repository-firmware.d.ts.map +1 -1
- package/types/c8y-ngx-components-repository-software.d.ts +2 -0
- package/types/c8y-ngx-components-repository-software.d.ts.map +1 -1
- package/types/c8y-ngx-components-trusted-certificates.d.ts.map +1 -1
- package/types/c8y-ngx-components-widgets-implementations-asset-table.d.ts.map +1 -1
- package/types/c8y-ngx-components.d.ts +5 -1
- package/types/c8y-ngx-components.d.ts.map +1 -1
|
@@ -6,11 +6,11 @@ import { BehaviorSubject, merge, Subject, debounceTime } from 'rxjs';
|
|
|
6
6
|
import { omit, isEmpty, some, isEqual, reject, isNil, get, assign, cloneDeep, unset as unset$1, set as set$1, find, findIndex, pick, has } from 'lodash-es';
|
|
7
7
|
import { NgClass, NgFor, NgIf, JsonPipe, KeyValuePipe } from '@angular/common';
|
|
8
8
|
import * as i2$1 from '@c8y/ngx-components';
|
|
9
|
-
import { C8yTranslatePipe, IconDirective, LoadingComponent, C8yTranslateDirective, FormGroupComponent, SelectLegacyComponent, ListItemComponent, FilterInputComponent, ListItemBodyComponent, ListItemCheckboxComponent, InputGroupListContainerDirective, InputGroupListComponent, RequiredInputPlaceholderDirective, MinValidationDirective, DatePipe, MessagesComponent, MessageDirective, TitleComponent, BreadcrumbComponent, BreadcrumbItemComponent, EmptyStateComponent, Status, DeviceStatusComponent, DefaultValidationDirective, DropAreaComponent, ViewContext, CoreModule, FormsModule as FormsModule$1, DropAreaModule, DeviceStatusModule, DynamicFormsModule, hookRoute } from '@c8y/ngx-components';
|
|
9
|
+
import { C8yTranslatePipe, IconDirective, LoadingComponent, C8yTranslateDirective, FormGroupComponent, SelectLegacyComponent, ListItemComponent, FilterInputComponent, ListItemBodyComponent, ListItemCheckboxComponent, InputGroupListContainerDirective, InputGroupListComponent, RequiredInputPlaceholderDirective, MinValidationDirective, InputGroupEditableComponent, DatePipe, MessagesComponent, MessageDirective, TitleComponent, BreadcrumbComponent, BreadcrumbItemComponent, EmptyStateComponent, Status, DeviceStatusComponent, DefaultValidationDirective, DropAreaComponent, ViewContext, CoreModule, FormsModule as FormsModule$1, DropAreaModule, DeviceStatusModule, DynamicFormsModule, hookRoute } from '@c8y/ngx-components';
|
|
10
10
|
import * as i2 from '@angular/router';
|
|
11
11
|
import { RouterModule } from '@angular/router';
|
|
12
12
|
import * as i2$2 from '@angular/forms';
|
|
13
|
-
import { NG_VALIDATORS, FormsModule, NgModelGroup, ControlContainer,
|
|
13
|
+
import { NG_VALIDATORS, FormsModule, NgModelGroup, ControlContainer, FormGroup, ReactiveFormsModule } from '@angular/forms';
|
|
14
14
|
import { NestedTreeControl, CdkTree, CdkTreeNodeDef, CdkNestedTreeNode, CdkTreeNodeToggle, CdkTreeNodeOutlet, CdkTreeModule } from '@angular/cdk/tree';
|
|
15
15
|
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
|
|
16
16
|
import { gettext } from '@c8y/ngx-components/gettext';
|
|
@@ -1145,20 +1145,20 @@ class OpcuaDeviceProtocolDescription {
|
|
|
1145
1145
|
this._model.enabled = data !== '0' ? true : false;
|
|
1146
1146
|
}
|
|
1147
1147
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: OpcuaDeviceProtocolDescription, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1148
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
1148
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: OpcuaDeviceProtocolDescription, isStandalone: true, selector: "opcua-device-protocol-description", inputs: { model: "model" }, ngImport: i0, template: "<div class=\"card-block bg-level-1 flex-no-shrink p-t-24 p-b-24\">\n <div class=\"content-flex-70\">\n <div class=\"text-center\">\n <i class=\"c8y-icon-duocolor icon-48 c8y-icon c8y-icon-device-protocols\"></i>\n <p>\n <small class=\"label label-info\">{{ _model.fieldbusType }}</small>\n </p>\n </div>\n <div class=\"flex-grow col-10\">\n <div class=\"content-flex-80\">\n <div class=\"col-9\">\n <div class=\"form-group form-group-lg m-b-16\">\n <label\n class=\"sr-only\"\n translate\n >Name</label\n >\n <c8y-input-group-editable\n size=\"lg\"\n formGroupClass=\"m-b-0\"\n [ariaLabel]=\"'Protocol name' | translate\"\n [noSaveButton]=\"true\"\n [(ngModel)]=\"_model.name\"\n data-cy=\"name-input\"\n ></c8y-input-group-editable>\n </div>\n <div class=\"form-group m-b-16\">\n <label\n class=\"sr-only\"\n translate\n >Description</label\n >\n <c8y-input-group-editable\n name=\"description\"\n [multiline]=\"true\"\n maxHeight=\"150px\"\n formGroupClass=\"m-b-0\"\n [ariaLabel]=\"'Protocol description' | translate\"\n [placeholder]=\"'e.g. My protocol description' | translate\"\n [noSaveButton]=\"true\"\n [(ngModel)]=\"_model.description\"\n data-cy=\"description-input\"\n ></c8y-input-group-editable>\n </div>\n <div class=\"d-flex m-t-8\">\n <div>\n <button\n class=\"btn\"\n name=\"autoScanAddressSpace\"\n type=\"button\"\n [(ngModel)]=\"autoScan\"\n (ngModelChange)=\"setAutoScanOption($event)\"\n btnCheckbox\n btnCheckboxTrue=\"1\"\n btnCheckboxFalse=\"0\"\n ngDefaultControl\n >\n @if (autoScan === '1') {\n <i\n class=\"text-success\"\n c8yIcon=\"check\"\n ></i>\n <span>{{ 'Active`auto scanning`' | translate }}</span>\n }\n @if (autoScan === '0') {\n <i\n class=\"text-danger\"\n c8yIcon=\"ban\"\n ></i>\n <span>{{ 'Inactive`auto scanning`' | translate }}</span>\n }\n </button>\n </div>\n <small class=\"m-l-16 text-muted\">\n {{\n 'When active, the gateway scans the address space of all servers and automatically applies this device protocol to all nodes matching the criteria.'\n | translate\n }}\n </small>\n </div>\n </div>\n <div class=\"flex-grow\">\n <ul class=\"list-unstyled small\">\n <li class=\"p-t-4 p-b-4 d-flex separator-bottom text-nowrap\">\n <label\n class=\"small m-b-0 m-r-8\"\n translate\n >ID</label\n >\n <span class=\"m-l-auto\">{{ _model.id }}</span>\n </li>\n <li class=\"p-t-4 p-b-4 d-flex separator-bottom text-nowrap\">\n <label\n class=\"small m-b-0 m-r-8\"\n translate\n >Date created</label\n >\n <span class=\"m-l-auto\">{{ _model.creationTime | c8yDate }}</span>\n </li>\n <li class=\"p-t-4 p-b-4 d-flex separator-bottom text-nowrap\">\n <label\n class=\"small m-b-0 m-r-8\"\n translate\n >Last update</label\n >\n <span class=\"m-l-auto\">{{ _model.lastUpdated | c8yDate }}</span>\n </li>\n <li class=\"p-t-4 p-b-4 d-flex separator-bottom text-nowrap\">\n <label\n class=\"small m-b-0 m-r-8\"\n translate\n >Fieldbus version</label\n >\n <span class=\"m-l-auto\">{{ _model.fieldbusVersion }}</span>\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: InputGroupEditableComponent, selector: "c8y-input-group-editable", inputs: ["ariaLabel", "name", "size", "placeholder", "multiline", "maxHeight", "maxLength", "noSaveButton", "formGroupClass", "validators", "asyncValidators", "autocomplete"], outputs: ["save", "cancel"] }, { kind: "directive", type: ButtonCheckboxDirective, selector: "[btnCheckbox]", inputs: ["btnCheckboxTrue", "btnCheckboxFalse"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: DatePipe, name: "c8yDate" }] }); }
|
|
1149
1149
|
}
|
|
1150
1150
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: OpcuaDeviceProtocolDescription, decorators: [{
|
|
1151
1151
|
type: Component,
|
|
1152
|
-
args: [{ selector: 'opcua-device-protocol-description',
|
|
1152
|
+
args: [{ selector: 'opcua-device-protocol-description', imports: [
|
|
1153
1153
|
C8yTranslateDirective,
|
|
1154
1154
|
NgClass,
|
|
1155
1155
|
FormsModule,
|
|
1156
|
-
|
|
1156
|
+
InputGroupEditableComponent,
|
|
1157
1157
|
ButtonCheckboxDirective,
|
|
1158
1158
|
IconDirective,
|
|
1159
1159
|
C8yTranslatePipe,
|
|
1160
1160
|
DatePipe
|
|
1161
|
-
], template: "<div class=\"card-block bg-level-1 flex-no-shrink p-t-24 p-b-24\">\n <div class=\"content-flex-70\">\n <div class=\"text-center\">\n <i class=\"c8y-icon-duocolor icon-48 c8y-icon c8y-icon-device-protocols\"></i>\n <p>\n <small class=\"label label-info\">{{ _model.fieldbusType }}</small>\n </p>\n </div>\n <div class=\"flex-grow col-10\">\n <div class=\"content-flex-80\">\n <div class=\"col-9\">\n <div class=\"form-group form-group-lg m-b-
|
|
1161
|
+
], template: "<div class=\"card-block bg-level-1 flex-no-shrink p-t-24 p-b-24\">\n <div class=\"content-flex-70\">\n <div class=\"text-center\">\n <i class=\"c8y-icon-duocolor icon-48 c8y-icon c8y-icon-device-protocols\"></i>\n <p>\n <small class=\"label label-info\">{{ _model.fieldbusType }}</small>\n </p>\n </div>\n <div class=\"flex-grow col-10\">\n <div class=\"content-flex-80\">\n <div class=\"col-9\">\n <div class=\"form-group form-group-lg m-b-16\">\n <label\n class=\"sr-only\"\n translate\n >Name</label\n >\n <c8y-input-group-editable\n size=\"lg\"\n formGroupClass=\"m-b-0\"\n [ariaLabel]=\"'Protocol name' | translate\"\n [noSaveButton]=\"true\"\n [(ngModel)]=\"_model.name\"\n data-cy=\"name-input\"\n ></c8y-input-group-editable>\n </div>\n <div class=\"form-group m-b-16\">\n <label\n class=\"sr-only\"\n translate\n >Description</label\n >\n <c8y-input-group-editable\n name=\"description\"\n [multiline]=\"true\"\n maxHeight=\"150px\"\n formGroupClass=\"m-b-0\"\n [ariaLabel]=\"'Protocol description' | translate\"\n [placeholder]=\"'e.g. My protocol description' | translate\"\n [noSaveButton]=\"true\"\n [(ngModel)]=\"_model.description\"\n data-cy=\"description-input\"\n ></c8y-input-group-editable>\n </div>\n <div class=\"d-flex m-t-8\">\n <div>\n <button\n class=\"btn\"\n name=\"autoScanAddressSpace\"\n type=\"button\"\n [(ngModel)]=\"autoScan\"\n (ngModelChange)=\"setAutoScanOption($event)\"\n btnCheckbox\n btnCheckboxTrue=\"1\"\n btnCheckboxFalse=\"0\"\n ngDefaultControl\n >\n @if (autoScan === '1') {\n <i\n class=\"text-success\"\n c8yIcon=\"check\"\n ></i>\n <span>{{ 'Active`auto scanning`' | translate }}</span>\n }\n @if (autoScan === '0') {\n <i\n class=\"text-danger\"\n c8yIcon=\"ban\"\n ></i>\n <span>{{ 'Inactive`auto scanning`' | translate }}</span>\n }\n </button>\n </div>\n <small class=\"m-l-16 text-muted\">\n {{\n 'When active, the gateway scans the address space of all servers and automatically applies this device protocol to all nodes matching the criteria.'\n | translate\n }}\n </small>\n </div>\n </div>\n <div class=\"flex-grow\">\n <ul class=\"list-unstyled small\">\n <li class=\"p-t-4 p-b-4 d-flex separator-bottom text-nowrap\">\n <label\n class=\"small m-b-0 m-r-8\"\n translate\n >ID</label\n >\n <span class=\"m-l-auto\">{{ _model.id }}</span>\n </li>\n <li class=\"p-t-4 p-b-4 d-flex separator-bottom text-nowrap\">\n <label\n class=\"small m-b-0 m-r-8\"\n translate\n >Date created</label\n >\n <span class=\"m-l-auto\">{{ _model.creationTime | c8yDate }}</span>\n </li>\n <li class=\"p-t-4 p-b-4 d-flex separator-bottom text-nowrap\">\n <label\n class=\"small m-b-0 m-r-8\"\n translate\n >Last update</label\n >\n <span class=\"m-l-auto\">{{ _model.lastUpdated | c8yDate }}</span>\n </li>\n <li class=\"p-t-4 p-b-4 d-flex separator-bottom text-nowrap\">\n <label\n class=\"small m-b-0 m-r-8\"\n translate\n >Fieldbus version</label\n >\n <span class=\"m-l-auto\">{{ _model.fieldbusVersion }}</span>\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n</div>\n" }]
|
|
1162
1162
|
}], propDecorators: { model: [{
|
|
1163
1163
|
type: Input
|
|
1164
1164
|
}] } });
|
|
@@ -1733,7 +1733,7 @@ class OpcuaDeviceProtocolDetailComponent {
|
|
|
1733
1733
|
this.alertService.addServerFailure({ res, data: details });
|
|
1734
1734
|
}
|
|
1735
1735
|
}
|
|
1736
|
-
catch
|
|
1736
|
+
catch {
|
|
1737
1737
|
this.alertService.danger(gettext('Failed to save. Try again.'));
|
|
1738
1738
|
}
|
|
1739
1739
|
}
|
|
@@ -1747,26 +1747,24 @@ class OpcuaDeviceProtocolDetailComponent {
|
|
|
1747
1747
|
return !deviceTypeForm.form.valid;
|
|
1748
1748
|
}
|
|
1749
1749
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: OpcuaDeviceProtocolDetailComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: OpcuaService }, { token: i2$1.AlertService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1750
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
1750
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: OpcuaDeviceProtocolDetailComponent, isStandalone: true, selector: "opcua-device-protocol-detail", viewQueries: [{ propertyName: "instanceList", predicate: OpcuaDeviceProtocolMapping, descendants: true }], ngImport: i0, template: "@if (!isLoaded) {\n <c8y-title>{{ model.name }}</c8y-title>\n}\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-device-protocols'\"\n [label]=\"'Device types' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-device-protocols'\"\n [label]=\"'Device protocols' | translate\"\n [path]=\"'deviceprotocols'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-device-protocols'\"\n [label]=\"model?.name\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n<div class=\"row\">\n <div class=\"col-lg-12 col-lg-max\">\n @if (!isLoaded) {\n <form\n class=\"card card--fullpage\"\n name=\"detailForm\"\n #deviceTypeForm=\"ngForm\"\n >\n <opcua-device-protocol-description [model]=\"model\"></opcua-device-protocol-description>\n <div class=\"inner-scroll\">\n <div class=\"d-contents\">\n <div class=\"card-header separator-top-bottom bg-component sticky-top\">\n <div\n class=\"h4\"\n translate\n >\n Variables\n </div>\n </div>\n <div class=\"p-l-16 p-r-16\">\n @if (model.mappings.length > 0) {\n <div\n class=\"c8y-list__group\"\n ngModelGroup=\"variable\"\n >\n @for (resource of getMapping(); track trackById(i, resource); let i = $index) {\n <opcua-device-protocol-mapping\n [index]=\"i\"\n [referencedServerId]=\"model.referencedServerId\"\n [referencedRootNodeId]=\"model.referencedRootNodeId\"\n [resource]=\"getStructuredResource(resource)\"\n [getParentAttr]=\"getParentAttr\"\n (onAction)=\"actionHandler($event)\"\n ></opcua-device-protocol-mapping>\n }\n </div>\n }\n </div>\n <div class=\"p-l-16 p-r-16 p-t-16\">\n @if (model.mappings.length === 0) {\n <c8y-ui-empty-state\n [icon]=\"'sliders'\"\n [title]=\"'No variables to display.' | translate\"\n [subtitle]=\"'Click below to add your first variable.' | translate\"\n ></c8y-ui-empty-state>\n }\n <div class=\"card-footer\">\n <button\n class=\"btn btn-default addVariableBtn\"\n title=\"{{ 'Add variable' | translate }}\"\n type=\"button\"\n (click)=\"addVariable()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add variable' | translate }}\n </button>\n </div>\n </div>\n </div>\n <div class=\"d-contents\">\n <div class=\"card-header separator-top-bottom bg-component sticky-top\">\n <div\n class=\"h4\"\n translate\n >\n Data reporting\n </div>\n </div>\n <div\n class=\"p-l-16 p-r-16 p-t-16\"\n ngModelGroup=\"subscription\"\n >\n <opcua-device-protocol-data-reporting\n [groupName]=\"'subscription'\"\n [model]=\"model\"\n ></opcua-device-protocol-data-reporting>\n </div>\n </div>\n <div class=\"d-contents\">\n <div class=\"card-header separator-top-bottom sticky-top\">\n <div\n class=\"h4\"\n translate\n >\n Auto apply constraints\n </div>\n </div>\n <div\n class=\"p-l-16 p-r-16 p-t-16 overflow-visible\"\n ngModelGroup=\"autoApply\"\n >\n <opcua-auto-apply [model]=\"model\"></opcua-auto-apply>\n </div>\n </div>\n <div\n class=\"card-footer sticky-bottom separator\"\n style=\"z-index: 101\"\n >\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Save' | translate }}\"\n id=\"deviceTypeSave\"\n type=\"button\"\n (click)=\"save()\"\n [disabled]=\"canSave(deviceTypeForm)\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </form>\n }\n </div>\n</div>\n", dependencies: [{ kind: "component", type: TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$2.NgModelGroup, selector: "[ngModelGroup]", inputs: ["ngModelGroup"], exportAs: ["ngModelGroup"] }, { kind: "directive", type: i2$2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]):not([formArray]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: OpcuaDeviceProtocolDescription, selector: "opcua-device-protocol-description", inputs: ["model"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: OpcuaDeviceProtocolMapping, selector: "opcua-device-protocol-mapping", inputs: ["resource", "index", "getParentAttr", "referencedServerId", "referencedRootNodeId"], outputs: ["onAction"] }, { kind: "component", type: EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "component", type: OpcuaDeviceProtocolDataReportingComponent, selector: "opcua-device-protocol-data-reporting", inputs: ["model", "groupName"], outputs: ["onSubscriptionChange"] }, { kind: "component", type: OpcuaAutoApplySettingsComponent, selector: "opcua-auto-apply", inputs: ["model"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
|
|
1751
1751
|
}
|
|
1752
1752
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: OpcuaDeviceProtocolDetailComponent, decorators: [{
|
|
1753
1753
|
type: Component,
|
|
1754
1754
|
args: [{ selector: 'opcua-device-protocol-detail', imports: [
|
|
1755
|
-
NgIf,
|
|
1756
1755
|
TitleComponent,
|
|
1757
1756
|
BreadcrumbComponent,
|
|
1758
1757
|
BreadcrumbItemComponent,
|
|
1759
1758
|
FormsModule,
|
|
1760
1759
|
OpcuaDeviceProtocolDescription,
|
|
1761
1760
|
C8yTranslateDirective,
|
|
1762
|
-
NgFor,
|
|
1763
1761
|
OpcuaDeviceProtocolMapping,
|
|
1764
1762
|
EmptyStateComponent,
|
|
1765
1763
|
IconDirective,
|
|
1766
1764
|
OpcuaDeviceProtocolDataReportingComponent,
|
|
1767
1765
|
OpcuaAutoApplySettingsComponent,
|
|
1768
1766
|
C8yTranslatePipe
|
|
1769
|
-
], template: "<c8y-title
|
|
1767
|
+
], template: "@if (!isLoaded) {\n <c8y-title>{{ model.name }}</c8y-title>\n}\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-device-protocols'\"\n [label]=\"'Device types' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-device-protocols'\"\n [label]=\"'Device protocols' | translate\"\n [path]=\"'deviceprotocols'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-device-protocols'\"\n [label]=\"model?.name\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n<div class=\"row\">\n <div class=\"col-lg-12 col-lg-max\">\n @if (!isLoaded) {\n <form\n class=\"card card--fullpage\"\n name=\"detailForm\"\n #deviceTypeForm=\"ngForm\"\n >\n <opcua-device-protocol-description [model]=\"model\"></opcua-device-protocol-description>\n <div class=\"inner-scroll\">\n <div class=\"d-contents\">\n <div class=\"card-header separator-top-bottom bg-component sticky-top\">\n <div\n class=\"h4\"\n translate\n >\n Variables\n </div>\n </div>\n <div class=\"p-l-16 p-r-16\">\n @if (model.mappings.length > 0) {\n <div\n class=\"c8y-list__group\"\n ngModelGroup=\"variable\"\n >\n @for (resource of getMapping(); track trackById(i, resource); let i = $index) {\n <opcua-device-protocol-mapping\n [index]=\"i\"\n [referencedServerId]=\"model.referencedServerId\"\n [referencedRootNodeId]=\"model.referencedRootNodeId\"\n [resource]=\"getStructuredResource(resource)\"\n [getParentAttr]=\"getParentAttr\"\n (onAction)=\"actionHandler($event)\"\n ></opcua-device-protocol-mapping>\n }\n </div>\n }\n </div>\n <div class=\"p-l-16 p-r-16 p-t-16\">\n @if (model.mappings.length === 0) {\n <c8y-ui-empty-state\n [icon]=\"'sliders'\"\n [title]=\"'No variables to display.' | translate\"\n [subtitle]=\"'Click below to add your first variable.' | translate\"\n ></c8y-ui-empty-state>\n }\n <div class=\"card-footer\">\n <button\n class=\"btn btn-default addVariableBtn\"\n title=\"{{ 'Add variable' | translate }}\"\n type=\"button\"\n (click)=\"addVariable()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add variable' | translate }}\n </button>\n </div>\n </div>\n </div>\n <div class=\"d-contents\">\n <div class=\"card-header separator-top-bottom bg-component sticky-top\">\n <div\n class=\"h4\"\n translate\n >\n Data reporting\n </div>\n </div>\n <div\n class=\"p-l-16 p-r-16 p-t-16\"\n ngModelGroup=\"subscription\"\n >\n <opcua-device-protocol-data-reporting\n [groupName]=\"'subscription'\"\n [model]=\"model\"\n ></opcua-device-protocol-data-reporting>\n </div>\n </div>\n <div class=\"d-contents\">\n <div class=\"card-header separator-top-bottom sticky-top\">\n <div\n class=\"h4\"\n translate\n >\n Auto apply constraints\n </div>\n </div>\n <div\n class=\"p-l-16 p-r-16 p-t-16 overflow-visible\"\n ngModelGroup=\"autoApply\"\n >\n <opcua-auto-apply [model]=\"model\"></opcua-auto-apply>\n </div>\n </div>\n <div\n class=\"card-footer sticky-bottom separator\"\n style=\"z-index: 101\"\n >\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Save' | translate }}\"\n id=\"deviceTypeSave\"\n type=\"button\"\n (click)=\"save()\"\n [disabled]=\"canSave(deviceTypeForm)\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </form>\n }\n </div>\n</div>\n" }]
|
|
1770
1768
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: OpcuaService }, { type: i2$1.AlertService }, { type: i2.Router }], propDecorators: { instanceList: [{
|
|
1771
1769
|
type: ViewChildren,
|
|
1772
1770
|
args: [OpcuaDeviceProtocolMapping]
|