@c8y/ngx-components 1023.5.3 → 1023.6.3
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-actility-device-registration.mjs +16 -16
- package/fesm2022/c8y-ngx-components-actility-device-registration.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-advanced-software-management.mjs +7 -7
- package/fesm2022/c8y-ngx-components-advanced-software-management.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-ai-agent-chat.mjs +9 -9
- package/fesm2022/c8y-ngx-components-ai-agent-chat.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-ai-ai-chat.mjs +12 -12
- package/fesm2022/c8y-ngx-components-ai-ai-chat.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-ai.mjs +3 -3
- package/fesm2022/c8y-ngx-components-ai.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs +34 -34
- package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs +4 -4
- package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-alarms.mjs +76 -76
- package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-api.mjs +7 -7
- package/fesm2022/c8y-ngx-components-api.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-app-logs.mjs +10 -10
- package/fesm2022/c8y-ngx-components-app-logs.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-asset-properties.mjs +39 -39
- package/fesm2022/c8y-ngx-components-asset-properties.mjs.map +1 -1
- package/fesm2022/{c8y-ngx-components-asset-property-grid.component-B0Yspstg.mjs → c8y-ngx-components-asset-property-grid.component-B1q7kXRu.mjs} +13 -13
- package/fesm2022/{c8y-ngx-components-asset-property-grid.component-B0Yspstg.mjs.map → c8y-ngx-components-asset-property-grid.component-B1q7kXRu.mjs.map} +1 -1
- package/fesm2022/c8y-ngx-components-assets-navigator.mjs +32 -32
- package/fesm2022/c8y-ngx-components-assets-navigator.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-auth-configuration.mjs +114 -114
- package/fesm2022/c8y-ngx-components-auth-configuration.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-binary-file-download.mjs +7 -7
- package/fesm2022/c8y-ngx-components-binary-file-download.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-bookmarks.mjs +13 -13
- package/fesm2022/c8y-ngx-components-bookmarks.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-branding-base-branding.mjs +4 -4
- package/fesm2022/c8y-ngx-components-branding-base-branding.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-branding-dark-theme.mjs +7 -7
- package/fesm2022/c8y-ngx-components-branding-dark-theme.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-branding-extra-css-branding-editor.mjs +7 -7
- package/fesm2022/c8y-ngx-components-branding-extra-css-branding-editor.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-branding-plain-branding-editor-lazy.mjs +3 -3
- package/fesm2022/c8y-ngx-components-branding-plain-branding-editor-lazy.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-branding-plain-branding-editor.mjs +7 -7
- package/fesm2022/c8y-ngx-components-branding-plain-branding-editor.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-branding-shared-data.mjs +15 -15
- package/fesm2022/c8y-ngx-components-branding-shared-data.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-branding-shared-lazy-add-branding-modal.mjs +6 -6
- package/fesm2022/c8y-ngx-components-branding-shared-lazy-add-branding-modal.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs +36 -36
- package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-branding-shared.mjs +13 -13
- package/fesm2022/c8y-ngx-components-branding-shared.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-child-devices.mjs +13 -13
- package/fesm2022/c8y-ngx-components-child-devices.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-cockpit-config.mjs +40 -40
- package/fesm2022/c8y-ngx-components-cockpit-config.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-computed-asset-properties-alarm-count-config.component-Bl18pHcM.mjs +68 -0
- package/fesm2022/{c8y-ngx-components-computed-asset-properties-alarm-count-config.component-BeFT75x1.mjs.map → c8y-ngx-components-computed-asset-properties-alarm-count-config.component-Bl18pHcM.mjs.map} +1 -1
- package/fesm2022/{c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-B8_RmTvv.mjs → c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-C5QMFdX1.mjs} +4 -4
- package/fesm2022/{c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-B8_RmTvv.mjs.map → c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-C5QMFdX1.mjs.map} +1 -1
- package/fesm2022/c8y-ngx-components-computed-asset-properties-event-count-config.component-C-Lc5Ble.mjs +44 -0
- package/fesm2022/{c8y-ngx-components-computed-asset-properties-event-count-config.component-BUxC3Tmh.mjs.map → c8y-ngx-components-computed-asset-properties-event-count-config.component-C-Lc5Ble.mjs.map} +1 -1
- package/fesm2022/{c8y-ngx-components-computed-asset-properties-last-measurement-config.component-Dcmrw2Wg.mjs → c8y-ngx-components-computed-asset-properties-last-measurement-config.component-BXfM7hTQ.mjs} +4 -4
- package/fesm2022/{c8y-ngx-components-computed-asset-properties-last-measurement-config.component-Dcmrw2Wg.mjs.map → c8y-ngx-components-computed-asset-properties-last-measurement-config.component-BXfM7hTQ.mjs.map} +1 -1
- package/fesm2022/c8y-ngx-components-computed-asset-properties.mjs +6 -6
- package/fesm2022/c8y-ngx-components-connectivity.mjs +53 -53
- package/fesm2022/c8y-ngx-components-connectivity.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-context-dashboard-asset-add.mjs +10 -10
- package/fesm2022/c8y-ngx-components-context-dashboard-asset-add.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-context-dashboard-asset-view.mjs +7 -7
- package/fesm2022/c8y-ngx-components-context-dashboard-asset-view.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-context-dashboard-cockpit-home-dashboard.mjs +11 -11
- package/fesm2022/c8y-ngx-components-context-dashboard-cockpit-home-dashboard.mjs.map +1 -1
- package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-C30if8-Q.mjs → c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-BuGMpNrA.mjs} +4 -4
- package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-C30if8-Q.mjs.map → c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-BuGMpNrA.mjs.map} +1 -1
- package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-general-settings.component-FBfdlVT1.mjs → c8y-ngx-components-context-dashboard-dashboard-general-settings.component-DN-f35bA.mjs} +10 -10
- package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-general-settings.component-FBfdlVT1.mjs.map → c8y-ngx-components-context-dashboard-dashboard-general-settings.component-DN-f35bA.mjs.map} +1 -1
- package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-version-history.component-DrVQS63v.mjs → c8y-ngx-components-context-dashboard-dashboard-version-history.component-BlIVEV__.mjs} +4 -4
- package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-version-history.component-DrVQS63v.mjs.map → c8y-ngx-components-context-dashboard-dashboard-version-history.component-BlIVEV__.mjs.map} +1 -1
- package/fesm2022/c8y-ngx-components-context-dashboard-device-add.mjs +10 -10
- package/fesm2022/c8y-ngx-components-context-dashboard-device-add.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-context-dashboard-device-view.mjs +7 -7
- package/fesm2022/c8y-ngx-components-context-dashboard-device-view.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-context-dashboard-devicemanagement.mjs +3 -3
- package/fesm2022/c8y-ngx-components-context-dashboard-devicemanagement.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-context-dashboard-state.mjs +3 -3
- package/fesm2022/c8y-ngx-components-context-dashboard-state.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-context-dashboard.mjs +102 -102
- package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
- package/fesm2022/{c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-BHmaZVgy.mjs → c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-m7YeEj9R.mjs} +16 -16
- package/fesm2022/{c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-BHmaZVgy.mjs.map → c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-m7YeEj9R.mjs.map} +1 -1
- package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab.mjs +12 -12
- package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-dashboard-manager-devicemanagement.mjs +6 -6
- package/fesm2022/c8y-ngx-components-dashboard-manager-devicemanagement.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-dashboard-manager.mjs +22 -22
- package/fesm2022/c8y-ngx-components-dashboard-manager.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-data-broker.mjs +7 -7
- package/fesm2022/c8y-ngx-components-data-broker.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-data-grid-columns-asset-type.mjs +3 -3
- package/fesm2022/c8y-ngx-components-data-grid-columns-asset-type.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-data-grid-columns.mjs +3 -3
- package/fesm2022/c8y-ngx-components-data-grid-columns.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs +24 -24
- package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs +7 -7
- package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoint-library-details.mjs +3 -3
- package/fesm2022/c8y-ngx-components-datapoint-library-details.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoint-library-list.mjs +3 -3
- package/fesm2022/c8y-ngx-components-datapoint-library-list.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoint-library-services.mjs +3 -3
- package/fesm2022/c8y-ngx-components-datapoint-library-services.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoint-library.mjs +4 -4
- package/fesm2022/c8y-ngx-components-datapoint-library.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +40 -40
- package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs +33 -33
- package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-default-subscriptions.mjs +16 -16
- package/fesm2022/c8y-ngx-components-default-subscriptions.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-device-grid.mjs +43 -43
- package/fesm2022/c8y-ngx-components-device-grid.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-device-list.mjs +22 -22
- package/fesm2022/c8y-ngx-components-device-list.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-device-map.mjs +12 -12
- package/fesm2022/c8y-ngx-components-device-map.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-device-profile.mjs +34 -34
- package/fesm2022/c8y-ngx-components-device-profile.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-device-protocol-object-mappings.mjs +3 -3
- package/fesm2022/c8y-ngx-components-device-protocol-object-mappings.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-device-protocols.mjs +16 -16
- package/fesm2022/c8y-ngx-components-device-protocols.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs +13 -13
- package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-device-shell.mjs +31 -31
- package/fesm2022/c8y-ngx-components-device-shell.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-diagnostics.mjs +13 -13
- package/fesm2022/c8y-ngx-components-diagnostics.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-echart.mjs +30 -30
- package/fesm2022/c8y-ngx-components-echart.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs +43 -43
- package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-ecosystem-archived-confirm.mjs +7 -7
- package/fesm2022/c8y-ngx-components-ecosystem-archived-confirm.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-ecosystem-license-confirm.mjs +10 -10
- package/fesm2022/c8y-ngx-components-ecosystem-license-confirm.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-ecosystem-plugin-setup-stepper.mjs +7 -7
- package/fesm2022/c8y-ngx-components-ecosystem-plugin-setup-stepper.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs +46 -46
- package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-ecosystem.mjs +82 -82
- package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-editor.mjs +6 -6
- package/fesm2022/c8y-ngx-components-editor.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-events-events-timeline.mjs +3 -3
- package/fesm2022/c8y-ngx-components-events-events-timeline.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-events.mjs +3 -3
- package/fesm2022/c8y-ngx-components-events.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-exports-list.mjs +6 -6
- package/fesm2022/c8y-ngx-components-exports-list.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-file-preview.mjs +7 -7
- package/fesm2022/c8y-ngx-components-file-preview.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-files-repository.mjs +19 -19
- package/fesm2022/c8y-ngx-components-files-repository.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-global-context.mjs +118 -118
- package/fesm2022/c8y-ngx-components-global-context.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-icon-selector.mjs +19 -19
- package/fesm2022/c8y-ngx-components-icon-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-interval-picker.mjs +3 -3
- package/fesm2022/c8y-ngx-components-interval-picker.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-location.mjs +28 -28
- package/fesm2022/c8y-ngx-components-location.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-loriot-device-registration.mjs +16 -16
- package/fesm2022/c8y-ngx-components-loriot-device-registration.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-map.mjs +19 -19
- package/fesm2022/c8y-ngx-components-map.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-messaging-management.mjs +55 -55
- package/fesm2022/c8y-ngx-components-messaging-management.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-bulk-operation-from-single.mjs +7 -7
- package/fesm2022/c8y-ngx-components-operations-bulk-operation-from-single.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-bulk-operation-list-item.mjs +19 -19
- package/fesm2022/c8y-ngx-components-operations-bulk-operation-list-item.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs +7 -7
- package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-bulk-operation-stepper.mjs +13 -13
- package/fesm2022/c8y-ngx-components-operations-bulk-operation-stepper.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-bulk-operations-list.mjs +13 -13
- package/fesm2022/c8y-ngx-components-operations-bulk-operations-list.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-bulk-operations-service.mjs +7 -7
- package/fesm2022/c8y-ngx-components-operations-bulk-operations-service.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-bulk-operations-stepper-container.mjs +7 -7
- package/fesm2022/c8y-ngx-components-operations-bulk-operations-stepper-container.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-bulk-single-operations-list.mjs +3 -3
- package/fesm2022/c8y-ngx-components-operations-bulk-single-operations-list.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-create-bulk-operation-details.mjs +7 -7
- package/fesm2022/c8y-ngx-components-operations-create-bulk-operation-details.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-device-selector.mjs +7 -7
- package/fesm2022/c8y-ngx-components-operations-device-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-grid-columns.mjs +12 -12
- package/fesm2022/c8y-ngx-components-operations-grid-columns.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-operation-details.mjs +13 -13
- package/fesm2022/c8y-ngx-components-operations-operation-details.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-operation-summary.mjs +7 -7
- package/fesm2022/c8y-ngx-components-operations-operation-summary.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-operations-list-item-details.mjs +10 -10
- package/fesm2022/c8y-ngx-components-operations-operations-list-item-details.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-operations-list.mjs +12 -12
- package/fesm2022/c8y-ngx-components-operations-operations-list.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-operations-timeline.mjs +7 -7
- package/fesm2022/c8y-ngx-components-operations-operations-timeline.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-shared.mjs +10 -10
- package/fesm2022/c8y-ngx-components-operations-shared.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-status-filter.mjs +7 -7
- package/fesm2022/c8y-ngx-components-operations-status-filter.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs +7 -7
- package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs +13 -13
- package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs +13 -13
- package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs +13 -13
- package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-stepper-frames.mjs +13 -13
- package/fesm2022/c8y-ngx-components-operations-stepper-frames.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations.mjs +7 -7
- package/fesm2022/c8y-ngx-components-operations.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-pending-mo-request.mjs +7 -7
- package/fesm2022/c8y-ngx-components-pending-mo-request.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-platform-configuration.mjs +10 -10
- package/fesm2022/c8y-ngx-components-platform-configuration.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs +38 -38
- package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-protocol-opcua.mjs +58 -58
- package/fesm2022/c8y-ngx-components-protocol-opcua.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-register-device.mjs +58 -58
- package/fesm2022/c8y-ngx-components-register-device.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs +9 -9
- package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-remote-access-data.mjs +3 -3
- package/fesm2022/c8y-ngx-components-remote-access-data.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-remote-access-passthrough.mjs +3 -3
- package/fesm2022/c8y-ngx-components-remote-access-passthrough.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-remote-access-shared.mjs +6 -6
- package/fesm2022/c8y-ngx-components-remote-access-shared.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.mjs +3 -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-ssh.mjs +3 -3
- package/fesm2022/c8y-ngx-components-remote-access-ssh.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-remote-access-telnet.mjs +3 -3
- package/fesm2022/c8y-ngx-components-remote-access-telnet.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-remote-access-terminal-viewer.mjs +3 -3
- package/fesm2022/c8y-ngx-components-remote-access-terminal-viewer.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.mjs +3 -3
- package/fesm2022/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs +6 -6
- package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-remote-access-vnc.mjs +3 -3
- package/fesm2022/c8y-ngx-components-remote-access-vnc.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-replace-device-replace-device-wizard.mjs +6 -6
- package/fesm2022/c8y-ngx-components-replace-device-replace-device-wizard.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-replace-device.mjs +10 -10
- package/fesm2022/c8y-ngx-components-replace-device.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-report-dashboard.mjs +16 -16
- package/fesm2022/c8y-ngx-components-report-dashboard.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-reports.mjs +19 -19
- package/fesm2022/c8y-ngx-components-reports.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-repository-configuration.mjs +48 -48
- package/fesm2022/c8y-ngx-components-repository-configuration.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-repository-firmware.mjs +33 -33
- package/fesm2022/c8y-ngx-components-repository-firmware.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-repository-shared.mjs +34 -34
- package/fesm2022/c8y-ngx-components-repository-shared.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-repository-software.mjs +42 -42
- package/fesm2022/c8y-ngx-components-repository-software.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-repository.mjs +4 -4
- package/fesm2022/c8y-ngx-components-repository.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-search.mjs +19 -19
- package/fesm2022/c8y-ngx-components-search.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-sensor-phone-sensor-phone-modal.mjs +6 -6
- package/fesm2022/c8y-ngx-components-sensor-phone-sensor-phone-modal.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-sensor-phone.mjs +7 -7
- package/fesm2022/c8y-ngx-components-sensor-phone.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-services-service-command-tab.mjs +3 -3
- package/fesm2022/c8y-ngx-components-services-service-command-tab.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-services-shared.mjs +3 -3
- package/fesm2022/c8y-ngx-components-services-shared.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-services.mjs +29 -29
- package/fesm2022/c8y-ngx-components-services.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-sigfox-device-registration.mjs +16 -16
- package/fesm2022/c8y-ngx-components-sigfox-device-registration.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-sms-gateway.mjs +7 -7
- package/fesm2022/c8y-ngx-components-sms-gateway.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-static-assets-data.mjs +3 -3
- package/fesm2022/c8y-ngx-components-static-assets-data.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-static-assets-modal.mjs +9 -9
- package/fesm2022/c8y-ngx-components-static-assets-modal.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-static-assets.mjs +6 -6
- package/fesm2022/c8y-ngx-components-static-assets.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-sub-assets.mjs +60 -60
- package/fesm2022/c8y-ngx-components-sub-assets.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-tenants.mjs +40 -40
- package/fesm2022/c8y-ngx-components-tenants.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-time-context.mjs +6 -6
- package/fesm2022/c8y-ngx-components-time-context.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-tracking.mjs +12 -12
- package/fesm2022/c8y-ngx-components-tracking.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-translation-editor-data.mjs +3 -3
- package/fesm2022/c8y-ngx-components-translation-editor-data.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs +12 -12
- package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-translation-editor.mjs +6 -6
- package/fesm2022/c8y-ngx-components-translation-editor.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-trusted-certificates.mjs +33 -33
- package/fesm2022/c8y-ngx-components-trusted-certificates.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-upgrade-upgraded-services.mjs +4 -4
- package/fesm2022/c8y-ngx-components-upgrade-upgraded-services.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-upgrade.mjs +62 -43
- package/fesm2022/c8y-ngx-components-upgrade.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-user-roles.mjs +10 -10
- package/fesm2022/c8y-ngx-components-user-roles.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs +3 -3
- package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget-ai-config.mjs +3 -3
- package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget-ai-config.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs +6 -6
- package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-exports.mjs +8 -1
- package/fesm2022/c8y-ngx-components-widgets-exports.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +19 -19
- package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-asset-notes.mjs +3 -3
- package/fesm2022/c8y-ngx-components-widgets-implementations-asset-notes.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-legacy-welcome.mjs +3 -3
- package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-legacy-welcome.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-welcome.mjs +3 -3
- package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-welcome.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs +6 -6
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +27 -27
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-device-control-message.mjs +3 -3
- package/fesm2022/c8y-ngx-components-widgets-implementations-device-control-message.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-device-management-welcome.mjs +7 -7
- package/fesm2022/c8y-ngx-components-widgets-implementations-device-management-welcome.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-help-and-service-widget.mjs +3 -3
- package/fesm2022/c8y-ngx-components-widgets-implementations-help-and-service-widget.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs +24 -24
- package/fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-image.mjs +9 -9
- package/fesm2022/c8y-ngx-components-widgets-implementations-image.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs +18 -18
- package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-kpi.mjs +6 -6
- package/fesm2022/c8y-ngx-components-widgets-implementations-kpi.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs +6 -6
- package/fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs +9 -9
- package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-markdown.mjs +9 -9
- package/fesm2022/c8y-ngx-components-widgets-implementations-markdown.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-quick-links.mjs +18 -18
- package/fesm2022/c8y-ngx-components-widgets-implementations-quick-links.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-three-d-rotation.mjs +9 -9
- package/fesm2022/c8y-ngx-components-widgets-implementations-three-d-rotation.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-widget-providers.mjs +5 -2
- package/fesm2022/c8y-ngx-components-widgets-widget-providers.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components.mjs +1323 -1323
- package/fesm2022/c8y-ngx-components.mjs.map +1 -1
- package/package.json +1 -1
- package/upgrade/index.d.ts +1 -0
- package/upgrade/index.d.ts.map +1 -1
- package/widgets/cockpit-exports/index.d.ts +6 -0
- package/widgets/cockpit-exports/index.d.ts.map +1 -1
- package/widgets/device-management-exports/index.d.ts +6 -0
- package/widgets/device-management-exports/index.d.ts.map +1 -1
- package/widgets/exports/index.d.ts +8 -1
- package/widgets/exports/index.d.ts.map +1 -1
- package/widgets/widget-providers/index.d.ts.map +1 -1
- package/fesm2022/c8y-ngx-components-computed-asset-properties-alarm-count-config.component-BeFT75x1.mjs +0 -68
- package/fesm2022/c8y-ngx-components-computed-asset-properties-event-count-config.component-BUxC3Tmh.mjs +0 -44
|
@@ -30,10 +30,10 @@ class BulkOperationsTabsFactory {
|
|
|
30
30
|
}
|
|
31
31
|
return tabs;
|
|
32
32
|
}
|
|
33
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
34
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
33
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: BulkOperationsTabsFactory, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
34
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: BulkOperationsTabsFactory }); }
|
|
35
35
|
}
|
|
36
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
36
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: BulkOperationsTabsFactory, decorators: [{
|
|
37
37
|
type: Injectable
|
|
38
38
|
}], ctorParameters: () => [{ type: i1.Router }] });
|
|
39
39
|
|
|
@@ -110,8 +110,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImpor
|
|
|
110
110
|
* ]```
|
|
111
111
|
*/
|
|
112
112
|
class OperationsModule {
|
|
113
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
114
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.
|
|
113
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: OperationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
114
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: OperationsModule, imports: [CoreModule,
|
|
115
115
|
BulkOperationFromSingleModule,
|
|
116
116
|
BulkOperationsListModule,
|
|
117
117
|
BulkOperationsServiceModule,
|
|
@@ -120,7 +120,7 @@ class OperationsModule {
|
|
|
120
120
|
StepperBulkTypeFirmwareModule,
|
|
121
121
|
StepperBulkTypeSoftwareModule,
|
|
122
122
|
StepperBulkTypeDeviceProfileModule] }); }
|
|
123
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.
|
|
123
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: OperationsModule, providers: [
|
|
124
124
|
hookTab(BulkOperationsTabsFactory),
|
|
125
125
|
deviceControlOverviewFeatureProviderFactory(),
|
|
126
126
|
deviceControlTabFeatureProviderFactory()
|
|
@@ -134,7 +134,7 @@ class OperationsModule {
|
|
|
134
134
|
StepperBulkTypeSoftwareModule,
|
|
135
135
|
StepperBulkTypeDeviceProfileModule] }); }
|
|
136
136
|
}
|
|
137
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
137
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: OperationsModule, decorators: [{
|
|
138
138
|
type: NgModule,
|
|
139
139
|
args: [{
|
|
140
140
|
imports: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"c8y-ngx-components-operations.mjs","sources":["../../operations/factories/bulk-operations-tab.factory.ts","../../operations/operations.module.ts","../../operations/c8y-ngx-components-operations.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { gettext } from '@c8y/ngx-components/gettext';\r\nimport { Tab, TabFactory } from '@c8y/ngx-components';\r\n\r\n@Injectable()\r\nexport class BulkOperationsTabsFactory implements TabFactory {\r\n constructor(public router: Router) {}\r\n get() {\r\n const tabs: Tab[] = [];\r\n if (this.router.url.match(/devicecontrol/g)) {\r\n tabs.push({\r\n path: 'devicecontrol/bulk',\r\n label: gettext('Bulk operations'),\r\n icon: 'c8y-icon c8y-icon-energy',\r\n priority: 1050,\r\n orientation: 'horizontal'\r\n } as Tab);\r\n }\r\n\r\n return tabs;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\n\nimport { CoreModule, hookTab } from '@c8y/ngx-components';\nimport { BulkOperationFromSingleModule } from '@c8y/ngx-components/operations/bulk-operation-from-single';\nimport { BulkOperationsListModule } from '@c8y/ngx-components/operations/bulk-operations-list';\nimport { BulkOperationsServiceModule } from '@c8y/ngx-components/operations/bulk-operations-service';\nimport { BulkOperationsStepperContainerModule } from '@c8y/ngx-components/operations/bulk-operations-stepper-container';\nimport { StepperBulkTypeConfigurationModule } from '@c8y/ngx-components/operations/stepper-bulk-type-configuration';\nimport { StepperBulkTypeDeviceProfileModule } from '@c8y/ngx-components/operations/stepper-bulk-type-device-profile';\nimport { StepperBulkTypeFirmwareModule } from '@c8y/ngx-components/operations/stepper-bulk-type-firmware';\nimport { StepperBulkTypeSoftwareModule } from '@c8y/ngx-components/operations/stepper-bulk-type-software';\n\nimport {\n deviceControlOverviewFeatureProviderFactory,\n deviceControlTabFeatureProviderFactory\n} from '@c8y/ngx-components/operations/operations-list';\nimport { BulkOperationsTabsFactory } from './factories/bulk-operations-tab.factory';\n\n/**\n * This module sets up the 'Device control' view. By importing it in your custom application you will have:\n * - a 'Device control' tab in device details view\n * - a 'Device control' entry in the 'Overviews' section of navigator\n * - 'Bulk operations' tab on the 'Device control' page\n * - list view of existing bulk operations with expandable details and options to filter\n * - guided stepper dialogs to schedule new bulk operations of supported types\n * (Configuration update, Firmware update, Software update, Apply device profile).\n *\n * Additionaly you can use the modules imported by {@link OperationsModule} separately to achieve\n * the results you wish to have in your application, e.g.:\n * - import {@link BulkOperationsListModule} and {@link BulkOperationsServiceModule}\n * to have an overview of existing bulk operation with expandable details\n * - additionaly import {@link BulkOperationsStepperContainerModule} and any of the existing\n * `StepperBulkType*Module` modules ({@link StepperBulkTypeConfigurationModule},\n * {@link StepperBulkTypeFirmwareModule}, {@link StepperBulkTypeSoftwareModule},\n * {@link StepperBulkTypeDeviceProfileModule}) to have the option\n * to create new bulk operation in a guided stepper dialog.\n *\n * ```typescript\n * import { BulkOperationsServiceModule } from '@c8y/ngx-components/operations/bulk-operations-service';\n * import { BulkOperationsListModule } from '@c8y/ngx-components/operations/bulk-operations-list';\n *\n * @NgModule({\n * imports: [\n * [...]\n * BulkOperationsServiceModule,\n * BulkOperationsListModule\n * ],\n * [...]\n * })\n * export class CustomOperationsModule {}```\n * respectively\n * ```typescript\n * import { BulkOperationsStepperContainerModule } from '@c8y/ngx-components/operations/bulk-operations-stepper-container';\n * import { BulkOperationsServiceModule } from '@c8y/ngx-components/operations/bulk-operations-service';\n * import { BulkOperationsListModule } from '@c8y/ngx-components/operations/bulk-operations-list';\n * import { StepperBulkTypeSoftwareModule } from '@c8y/ngx-components/operations/stepper-bulk-type-software';\n *\n * @NgModule({\n * imports: [\n * [...]\n * BulkOperationsServiceModule,\n * BulkOperationsListModule,\n * BulkOperationsStepperContainerModule,\n * StepperBulkTypeSoftwareModule\n * ],\n * [...]\n * })\n * export class CustomOperationsModule {}```\n * You can provide your own bulk operation stepper by registering a component via the `hookListBulkType`:\n *\n * ```typescript\n * import {\n * hookListBulkType,\n * baseUrl\n * } from '@c8y/ngx-components/operations/bulk-operations-service';\n *\n * [...]\n *\n * providers: [\n * hookListBulkType({\n * type: 'my-bulk-op-type',\n * c8yIcon: 'c8y-tools',\n * name: 'My bulk op type',\n * path: `${baseUrl}my-type`,\n * component: StepperMyBulkTypeComponent,\n * fragments: ['c8y_MyType'],\n * selected: false\n * })\n * ]```\n */\n@NgModule({\n imports: [\n CoreModule,\n BulkOperationFromSingleModule,\n BulkOperationsListModule,\n BulkOperationsServiceModule,\n BulkOperationsStepperContainerModule,\n StepperBulkTypeConfigurationModule,\n StepperBulkTypeFirmwareModule,\n StepperBulkTypeSoftwareModule,\n StepperBulkTypeDeviceProfileModule\n ],\n providers: [\n hookTab(BulkOperationsTabsFactory),\n deviceControlOverviewFeatureProviderFactory(),\n deviceControlTabFeatureProviderFactory()\n ]\n})\nexport class OperationsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;MAMa,yBAAyB,CAAA;AACpC,IAAA,WAAA,CAAmB,MAAc,EAAA;QAAd,IAAA,CAAA,MAAM,GAAN,MAAM;IAAW;IACpC,GAAG,GAAA;QACD,MAAM,IAAI,GAAU,EAAE;QACtB,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE;YAC3C,IAAI,CAAC,IAAI,CAAC;AACR,gBAAA,IAAI,EAAE,oBAAoB;AAC1B,gBAAA,KAAK,EAAE,OAAO,CAAC,iBAAiB,CAAC;AACjC,gBAAA,IAAI,EAAE,0BAA0B;AAChC,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,WAAW,EAAE;AACP,aAAA,CAAC;QACX;AAEA,QAAA,OAAO,IAAI;IACb
|
|
1
|
+
{"version":3,"file":"c8y-ngx-components-operations.mjs","sources":["../../operations/factories/bulk-operations-tab.factory.ts","../../operations/operations.module.ts","../../operations/c8y-ngx-components-operations.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { gettext } from '@c8y/ngx-components/gettext';\r\nimport { Tab, TabFactory } from '@c8y/ngx-components';\r\n\r\n@Injectable()\r\nexport class BulkOperationsTabsFactory implements TabFactory {\r\n constructor(public router: Router) {}\r\n get() {\r\n const tabs: Tab[] = [];\r\n if (this.router.url.match(/devicecontrol/g)) {\r\n tabs.push({\r\n path: 'devicecontrol/bulk',\r\n label: gettext('Bulk operations'),\r\n icon: 'c8y-icon c8y-icon-energy',\r\n priority: 1050,\r\n orientation: 'horizontal'\r\n } as Tab);\r\n }\r\n\r\n return tabs;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\n\nimport { CoreModule, hookTab } from '@c8y/ngx-components';\nimport { BulkOperationFromSingleModule } from '@c8y/ngx-components/operations/bulk-operation-from-single';\nimport { BulkOperationsListModule } from '@c8y/ngx-components/operations/bulk-operations-list';\nimport { BulkOperationsServiceModule } from '@c8y/ngx-components/operations/bulk-operations-service';\nimport { BulkOperationsStepperContainerModule } from '@c8y/ngx-components/operations/bulk-operations-stepper-container';\nimport { StepperBulkTypeConfigurationModule } from '@c8y/ngx-components/operations/stepper-bulk-type-configuration';\nimport { StepperBulkTypeDeviceProfileModule } from '@c8y/ngx-components/operations/stepper-bulk-type-device-profile';\nimport { StepperBulkTypeFirmwareModule } from '@c8y/ngx-components/operations/stepper-bulk-type-firmware';\nimport { StepperBulkTypeSoftwareModule } from '@c8y/ngx-components/operations/stepper-bulk-type-software';\n\nimport {\n deviceControlOverviewFeatureProviderFactory,\n deviceControlTabFeatureProviderFactory\n} from '@c8y/ngx-components/operations/operations-list';\nimport { BulkOperationsTabsFactory } from './factories/bulk-operations-tab.factory';\n\n/**\n * This module sets up the 'Device control' view. By importing it in your custom application you will have:\n * - a 'Device control' tab in device details view\n * - a 'Device control' entry in the 'Overviews' section of navigator\n * - 'Bulk operations' tab on the 'Device control' page\n * - list view of existing bulk operations with expandable details and options to filter\n * - guided stepper dialogs to schedule new bulk operations of supported types\n * (Configuration update, Firmware update, Software update, Apply device profile).\n *\n * Additionaly you can use the modules imported by {@link OperationsModule} separately to achieve\n * the results you wish to have in your application, e.g.:\n * - import {@link BulkOperationsListModule} and {@link BulkOperationsServiceModule}\n * to have an overview of existing bulk operation with expandable details\n * - additionaly import {@link BulkOperationsStepperContainerModule} and any of the existing\n * `StepperBulkType*Module` modules ({@link StepperBulkTypeConfigurationModule},\n * {@link StepperBulkTypeFirmwareModule}, {@link StepperBulkTypeSoftwareModule},\n * {@link StepperBulkTypeDeviceProfileModule}) to have the option\n * to create new bulk operation in a guided stepper dialog.\n *\n * ```typescript\n * import { BulkOperationsServiceModule } from '@c8y/ngx-components/operations/bulk-operations-service';\n * import { BulkOperationsListModule } from '@c8y/ngx-components/operations/bulk-operations-list';\n *\n * @NgModule({\n * imports: [\n * [...]\n * BulkOperationsServiceModule,\n * BulkOperationsListModule\n * ],\n * [...]\n * })\n * export class CustomOperationsModule {}```\n * respectively\n * ```typescript\n * import { BulkOperationsStepperContainerModule } from '@c8y/ngx-components/operations/bulk-operations-stepper-container';\n * import { BulkOperationsServiceModule } from '@c8y/ngx-components/operations/bulk-operations-service';\n * import { BulkOperationsListModule } from '@c8y/ngx-components/operations/bulk-operations-list';\n * import { StepperBulkTypeSoftwareModule } from '@c8y/ngx-components/operations/stepper-bulk-type-software';\n *\n * @NgModule({\n * imports: [\n * [...]\n * BulkOperationsServiceModule,\n * BulkOperationsListModule,\n * BulkOperationsStepperContainerModule,\n * StepperBulkTypeSoftwareModule\n * ],\n * [...]\n * })\n * export class CustomOperationsModule {}```\n * You can provide your own bulk operation stepper by registering a component via the `hookListBulkType`:\n *\n * ```typescript\n * import {\n * hookListBulkType,\n * baseUrl\n * } from '@c8y/ngx-components/operations/bulk-operations-service';\n *\n * [...]\n *\n * providers: [\n * hookListBulkType({\n * type: 'my-bulk-op-type',\n * c8yIcon: 'c8y-tools',\n * name: 'My bulk op type',\n * path: `${baseUrl}my-type`,\n * component: StepperMyBulkTypeComponent,\n * fragments: ['c8y_MyType'],\n * selected: false\n * })\n * ]```\n */\n@NgModule({\n imports: [\n CoreModule,\n BulkOperationFromSingleModule,\n BulkOperationsListModule,\n BulkOperationsServiceModule,\n BulkOperationsStepperContainerModule,\n StepperBulkTypeConfigurationModule,\n StepperBulkTypeFirmwareModule,\n StepperBulkTypeSoftwareModule,\n StepperBulkTypeDeviceProfileModule\n ],\n providers: [\n hookTab(BulkOperationsTabsFactory),\n deviceControlOverviewFeatureProviderFactory(),\n deviceControlTabFeatureProviderFactory()\n ]\n})\nexport class OperationsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;MAMa,yBAAyB,CAAA;AACpC,IAAA,WAAA,CAAmB,MAAc,EAAA;QAAd,IAAA,CAAA,MAAM,GAAN,MAAM;IAAW;IACpC,GAAG,GAAA;QACD,MAAM,IAAI,GAAU,EAAE;QACtB,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE;YAC3C,IAAI,CAAC,IAAI,CAAC;AACR,gBAAA,IAAI,EAAE,oBAAoB;AAC1B,gBAAA,KAAK,EAAE,OAAO,CAAC,iBAAiB,CAAC;AACjC,gBAAA,IAAI,EAAE,0BAA0B;AAChC,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,WAAW,EAAE;AACP,aAAA,CAAC;QACX;AAEA,QAAA,OAAO,IAAI;IACb;+GAfW,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAzB,yBAAyB,EAAA,CAAA,CAAA;;4FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC;;;ACaD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuEG;MAmBU,gBAAgB,CAAA;+GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YAhBzB,UAAU;YACV,6BAA6B;YAC7B,wBAAwB;YACxB,2BAA2B;YAC3B,oCAAoC;YACpC,kCAAkC;YAClC,6BAA6B;YAC7B,6BAA6B;YAC7B,kCAAkC,CAAA,EAAA,CAAA,CAAA;AAQzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,SAAA,EANhB;YACT,OAAO,CAAC,yBAAyB,CAAC;AAClC,YAAA,2CAA2C,EAAE;AAC7C,YAAA,sCAAsC;AACvC,SAAA,EAAA,OAAA,EAAA,CAdC,UAAU;YACV,6BAA6B;YAC7B,wBAAwB;YACxB,2BAA2B;YAC3B,oCAAoC;YACpC,kCAAkC;YAClC,6BAA6B;YAC7B,6BAA6B;YAC7B,kCAAkC,CAAA,EAAA,CAAA,CAAA;;4FAQzB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAlB5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,UAAU;wBACV,6BAA6B;wBAC7B,wBAAwB;wBACxB,2BAA2B;wBAC3B,oCAAoC;wBACpC,kCAAkC;wBAClC,6BAA6B;wBAC7B,6BAA6B;wBAC7B;AACD,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACT,OAAO,CAAC,yBAAyB,CAAC;AAClC,wBAAA,2CAA2C,EAAE;AAC7C,wBAAA,sCAAsC;AACvC;AACF,iBAAA;;;AC3GD;;AAEG;;;;"}
|
|
@@ -61,10 +61,10 @@ class PendingMoRequestService {
|
|
|
61
61
|
});
|
|
62
62
|
});
|
|
63
63
|
}
|
|
64
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
65
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
64
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: PendingMoRequestService, deps: [{ token: i0.Injector }, { token: i1.ApiService }, { token: i2.AlertService }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
65
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: PendingMoRequestService, providedIn: 'root' }); }
|
|
66
66
|
}
|
|
67
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
67
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: PendingMoRequestService, decorators: [{
|
|
68
68
|
type: Injectable,
|
|
69
69
|
args: [{
|
|
70
70
|
providedIn: 'root'
|
|
@@ -76,11 +76,11 @@ class PendingMoRequestModule {
|
|
|
76
76
|
this.pendingMoRequestService = pendingMoRequestService;
|
|
77
77
|
this.pendingMoRequestService.setupHooks();
|
|
78
78
|
}
|
|
79
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
80
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.
|
|
81
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.
|
|
79
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: PendingMoRequestModule, deps: [{ token: PendingMoRequestService }], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
80
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: PendingMoRequestModule, imports: [CommonModule] }); }
|
|
81
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: PendingMoRequestModule, providers: [PendingMoRequestService], imports: [CommonModule] }); }
|
|
82
82
|
}
|
|
83
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
83
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: PendingMoRequestModule, decorators: [{
|
|
84
84
|
type: NgModule,
|
|
85
85
|
args: [{
|
|
86
86
|
imports: [CommonModule],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"c8y-ngx-components-pending-mo-request.mjs","sources":["../../pending-mo-request/pending-mo-request-interceptor.ts","../../pending-mo-request/pending-mo-request.service.ts","../../pending-mo-request/pending-mo-request.module.ts","../../pending-mo-request/c8y-ngx-components-pending-mo-request.ts"],"sourcesContent":["import { Injector } from '@angular/core';\nimport { IFetchResponse } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { AlertService } from '@c8y/ngx-components';\nimport { ApiCall, HttpHandler, HttpInterceptor } from '@c8y/ngx-components/api';\nimport { NEVER, Observable, combineLatest } from 'rxjs';\nimport { timeout, catchError, share, map, startWith, take } from 'rxjs/operators';\n\nexport class PendingMoRequestInterceptor implements HttpInterceptor {\n constructor(private injector: Injector) {}\n\n intercept(req: ApiCall, next: HttpHandler): Observable<IFetchResponse> {\n const alertService = this.injector.get(AlertService);\n\n const timeoutValue = 5_000;\n if (/inventory\\/managedObjects/.test(req.url)) {\n const response$ = next.handle(req).pipe(share());\n const timeout$ = response$.pipe(\n timeout({ first: timeoutValue }),\n catchError(error => {\n if (error.name === 'TimeoutError') {\n alertService.add({\n type: 'system',\n text: gettext(\n 'The request is taking longer than usual. We apologize for the inconvenience.'\n ),\n timeout: 10000\n });\n }\n return NEVER;\n }),\n startWith('')\n );\n return combineLatest([response$, timeout$]).pipe(\n map(([response]) => response),\n take(1)\n );\n } else {\n return next.handle(req);\n }\n }\n}\n","import { DestroyRef, Injectable, Injector } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ApiService } from '@c8y/ngx-components/api';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { AlertService } from '@c8y/ngx-components';\nimport { PendingMoRequestInterceptor } from './pending-mo-request-interceptor';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PendingMoRequestService {\n constructor(\n private injector: Injector,\n private apiService: ApiService,\n private alertService: AlertService,\n private destroyRef: DestroyRef\n ) {}\n\n setupHooks() {\n this.apiService.addInterceptor(new PendingMoRequestInterceptor(this.injector));\n\n /* Backend will return 202 when a request takes more than 30 seconds to complete\n * and will continue the execution in the background. So the user will be able to navigate away.\n */\n this.apiService\n .hookResponse(\n call =>\n call.method === 'DELETE' &&\n /inventory\\/managedObjects/.test(call.url) &&\n call.response.status === 202\n )\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.alertService.add({\n type: 'system',\n text: gettext(\n 'The managed object is deleted in the background. Continue with using the platform as normal.'\n ),\n timeout: 10000\n });\n });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { PendingMoRequestService } from './pending-mo-request.service';\n\n@NgModule({\n imports: [CommonModule],\n providers: [PendingMoRequestService]\n})\nexport class PendingMoRequestModule {\n constructor(private pendingMoRequestService: PendingMoRequestService) {\n this.pendingMoRequestService.setupHooks();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.PendingMoRequestService"],"mappings":";;;;;;;;;;;MAQa,2BAA2B,CAAA;AACtC,IAAA,WAAA,CAAoB,QAAkB,EAAA;QAAlB,IAAA,CAAA,QAAQ,GAAR,QAAQ;IAAa;IAEzC,SAAS,CAAC,GAAY,EAAE,IAAiB,EAAA;QACvC,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC;QAEpD,MAAM,YAAY,GAAG,KAAK;QAC1B,IAAI,2BAA2B,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAC7C,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AAChD,YAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAC7B,OAAO,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,EAChC,UAAU,CAAC,KAAK,IAAG;AACjB,gBAAA,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE;oBACjC,YAAY,CAAC,GAAG,CAAC;AACf,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,IAAI,EAAE,OAAO,CACX,8EAA8E,CAC/E;AACD,wBAAA,OAAO,EAAE;AACV,qBAAA,CAAC;gBACJ;AACA,gBAAA,OAAO,KAAK;AACd,YAAA,CAAC,CAAC,EACF,SAAS,CAAC,EAAE,CAAC,CACd;AACD,YAAA,OAAO,aAAa,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAC9C,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,QAAQ,CAAC,EAC7B,IAAI,CAAC,CAAC,CAAC,CACR;QACH;aAAO;AACL,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;QACzB;IACF;AACD;;MC/BY,uBAAuB,CAAA;AAClC,IAAA,WAAA,CACU,QAAkB,EAClB,UAAsB,EACtB,YAA0B,EAC1B,UAAsB,EAAA;QAHtB,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,UAAU,GAAV,UAAU;QACV,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,UAAU,GAAV,UAAU;IACjB;IAEH,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,2BAA2B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAE9E;;AAEG;AACH,QAAA,IAAI,CAAC;aACF,YAAY,CACX,IAAI,IACF,IAAI,CAAC,MAAM,KAAK,QAAQ;AACxB,YAAA,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1C,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,GAAG;AAE/B,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;aACxC,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;AACpB,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,IAAI,EAAE,OAAO,CACX,8FAA8F,CAC/F;AACD,gBAAA,OAAO,EAAE;AACV,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;IACN
|
|
1
|
+
{"version":3,"file":"c8y-ngx-components-pending-mo-request.mjs","sources":["../../pending-mo-request/pending-mo-request-interceptor.ts","../../pending-mo-request/pending-mo-request.service.ts","../../pending-mo-request/pending-mo-request.module.ts","../../pending-mo-request/c8y-ngx-components-pending-mo-request.ts"],"sourcesContent":["import { Injector } from '@angular/core';\nimport { IFetchResponse } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { AlertService } from '@c8y/ngx-components';\nimport { ApiCall, HttpHandler, HttpInterceptor } from '@c8y/ngx-components/api';\nimport { NEVER, Observable, combineLatest } from 'rxjs';\nimport { timeout, catchError, share, map, startWith, take } from 'rxjs/operators';\n\nexport class PendingMoRequestInterceptor implements HttpInterceptor {\n constructor(private injector: Injector) {}\n\n intercept(req: ApiCall, next: HttpHandler): Observable<IFetchResponse> {\n const alertService = this.injector.get(AlertService);\n\n const timeoutValue = 5_000;\n if (/inventory\\/managedObjects/.test(req.url)) {\n const response$ = next.handle(req).pipe(share());\n const timeout$ = response$.pipe(\n timeout({ first: timeoutValue }),\n catchError(error => {\n if (error.name === 'TimeoutError') {\n alertService.add({\n type: 'system',\n text: gettext(\n 'The request is taking longer than usual. We apologize for the inconvenience.'\n ),\n timeout: 10000\n });\n }\n return NEVER;\n }),\n startWith('')\n );\n return combineLatest([response$, timeout$]).pipe(\n map(([response]) => response),\n take(1)\n );\n } else {\n return next.handle(req);\n }\n }\n}\n","import { DestroyRef, Injectable, Injector } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ApiService } from '@c8y/ngx-components/api';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { AlertService } from '@c8y/ngx-components';\nimport { PendingMoRequestInterceptor } from './pending-mo-request-interceptor';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PendingMoRequestService {\n constructor(\n private injector: Injector,\n private apiService: ApiService,\n private alertService: AlertService,\n private destroyRef: DestroyRef\n ) {}\n\n setupHooks() {\n this.apiService.addInterceptor(new PendingMoRequestInterceptor(this.injector));\n\n /* Backend will return 202 when a request takes more than 30 seconds to complete\n * and will continue the execution in the background. So the user will be able to navigate away.\n */\n this.apiService\n .hookResponse(\n call =>\n call.method === 'DELETE' &&\n /inventory\\/managedObjects/.test(call.url) &&\n call.response.status === 202\n )\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.alertService.add({\n type: 'system',\n text: gettext(\n 'The managed object is deleted in the background. Continue with using the platform as normal.'\n ),\n timeout: 10000\n });\n });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { PendingMoRequestService } from './pending-mo-request.service';\n\n@NgModule({\n imports: [CommonModule],\n providers: [PendingMoRequestService]\n})\nexport class PendingMoRequestModule {\n constructor(private pendingMoRequestService: PendingMoRequestService) {\n this.pendingMoRequestService.setupHooks();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.PendingMoRequestService"],"mappings":"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"}
|
|
@@ -368,10 +368,10 @@ class PlatformConfigurationFormProviderService {
|
|
|
368
368
|
}
|
|
369
369
|
];
|
|
370
370
|
}
|
|
371
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
372
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
371
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: PlatformConfigurationFormProviderService, deps: [{ token: i1.DatePipe }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
372
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: PlatformConfigurationFormProviderService, providedIn: 'root' }); }
|
|
373
373
|
}
|
|
374
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
374
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: PlatformConfigurationFormProviderService, decorators: [{
|
|
375
375
|
type: Injectable,
|
|
376
376
|
args: [{
|
|
377
377
|
providedIn: 'root'
|
|
@@ -482,10 +482,10 @@ class PlatformConfigurationFormComponent {
|
|
|
482
482
|
this.onSave.emit(convertedValue);
|
|
483
483
|
}
|
|
484
484
|
}
|
|
485
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
486
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.3", type: PlatformConfigurationFormComponent, isStandalone: true, selector: "c8y-platform-configuration-form", inputs: { _optionsGroups: ["optionsGroups", "_optionsGroups"], readOnly: "readOnly", formValue: "formValue" }, outputs: { onSave: "onSave" }, ngImport: i0, template: "<form [formGroup]=\"form\">\n <div class=\"row\">\n <div class=\"col-lg-12 col-lg-max\">\n <div class=\"card card--fullpage\">\n <div class=\"card-header separator\">\n <div class=\"card-title\">\n {{ 'Configuration' | translate }}\n </div>\n </div>\n <div class=\"inner-scroll\">\n <div class=\"card-block\">\n <div>\n <fieldset\n class=\"row schema-form-fieldset separator-bottom p-t-24\"\n *ngFor=\"let category of optionsGroups\"\n >\n <div class=\"col-sm-3 col-md-2 p-l-24 p-l-xs-8 p-b-8\">\n <div\n class=\"h4 text-normal text-right text-left-xs\"\n data-cy=\"fieldset--section-title\"\n >\n {{ category.title | translate }}\n </div>\n </div>\n <div class=\"col-sm-9 col-md-8\">\n <div\n class=\"form-group\"\n *ngFor=\"let field of category.items\"\n >\n <ng-container [ngSwitch]=\"field.type\">\n <ng-container *ngSwitchCase=\"'string'\">\n <ng-container\n *ngTemplateOutlet=\"stringTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'number'\">\n <ng-container\n *ngTemplateOutlet=\"numberTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'password'\">\n <ng-container\n *ngTemplateOutlet=\"passwordTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'textarea'\">\n <ng-container\n *ngTemplateOutlet=\"textareaTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'boolean'\">\n <ng-container\n *ngTemplateOutlet=\"booleanTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'select'\">\n <ng-container\n *ngTemplateOutlet=\"selectTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n </fieldset>\n </div>\n </div>\n </div>\n\n <div class=\"card-footer separator\">\n <button\n class=\"btn btn-primary\"\n [title]=\"'Save configuration' | translate\"\n type=\"submit\"\n (click)=\"emitForm()\"\n [disabled]=\"!form.dirty || form.invalid || form.disabled\"\n >\n <span translate>Save</span>\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <ng-template\n #stringTemplate\n let-field\n >\n <c8y-form-group>\n <label\n title=\"{{ field.title | translate }}\"\n [for]=\"field.formId\"\n >\n {{ field.title | translate }}\n </label>\n <input\n class=\"text-truncate form-control\"\n [title]=\"field.title | translate\"\n type=\"text\"\n [id]=\"field.formId\"\n [formControlName]=\"field.formId\"\n [placeholder]=\"field.placeholder || '' | translate : field.placeholderParams\"\n />\n <div\n class=\"help-block\"\n *ngIf=\"field.description\"\n >\n {{ field.description | translate : field.descriptionTranslateParams }}\n </div>\n </c8y-form-group>\n </ng-template>\n\n <ng-template\n #passwordTemplate\n let-field\n >\n <c8y-form-group>\n <label\n title=\"{{ field.title | translate }}\"\n [for]=\"field.formId\"\n >\n {{ field.title | translate }}\n </label>\n <input\n class=\"text-truncate form-control\"\n [title]=\"field.title | translate\"\n type=\"password\"\n autocomplete=\"new-password\"\n [id]=\"field.formId\"\n [formControlName]=\"field.formId\"\n [placeholder]=\"field.placeholder || '' | translate : field.placeholderParams\"\n />\n <div\n class=\"help-block\"\n *ngIf=\"field.description\"\n >\n {{ field.description | translate : field.descriptionTranslateParams }}\n </div>\n </c8y-form-group>\n </ng-template>\n\n <ng-template\n #numberTemplate\n let-field\n >\n <c8y-form-group>\n <label\n title=\"{{ field.title | translate }}\"\n [for]=\"field.formId\"\n >\n {{ field.title | translate }}\n </label>\n <input\n class=\"text-truncate form-control\"\n [title]=\"field.title | translate\"\n type=\"number\"\n [id]=\"field.formId\"\n [formControlName]=\"field.formId\"\n [placeholder]=\"field.placeholder || '' | translate : field.placeholderParams\"\n />\n <div\n class=\"help-block\"\n *ngIf=\"field.description\"\n >\n {{ field.description | translate : field.descriptionTranslateParams }}\n </div>\n </c8y-form-group>\n </ng-template>\n\n <ng-template\n #textareaTemplate\n let-field\n >\n <c8y-form-group>\n <label\n title=\"{{ field.title | translate }}\"\n [for]=\"field.formId\"\n >\n {{ field.title | translate }}\n </label>\n <textarea\n class=\"form-control\"\n [title]=\"field.title | translate\"\n [id]=\"field.formId\"\n [formControlName]=\"field.formId\"\n [placeholder]=\"field.placeholder || '' | translate : field.placeholderParams\"\n [rows]=\"10\"\n ></textarea>\n <div\n class=\"help-block\"\n *ngIf=\"field.description || field.lineBreakHint\"\n >\n <span *ngIf=\"field.description\">\n {{ field.description | translate : field.descriptionTranslateParams }}\n </span>\n <span *ngIf=\"field.description && field.lineBreakHint\"><br /></span>\n <span *ngIf=\"field.lineBreakHint\">{{ lineBreakHint | translate }}</span>\n </div>\n </c8y-form-group>\n </ng-template>\n\n <ng-template\n #booleanTemplate\n let-field\n >\n <c8y-form-group>\n <label\n class=\"c8y-checkbox\"\n title=\"{{ field.title | translate }}\"\n >\n <input\n [title]=\"field.title | translate\"\n type=\"checkbox\"\n [formControlName]=\"field.formId\"\n />\n <span></span>\n <span>{{ field.title | translate }}</span>\n </label>\n\n <div\n class=\"help-block\"\n *ngIf=\"field.description\"\n >\n {{ field.description | translate : field.descriptionTranslateParams }}\n </div>\n </c8y-form-group>\n </ng-template>\n\n <ng-template\n #selectTemplate\n let-field\n >\n <c8y-form-group>\n <label\n title=\"{{ field.title | translate }}\"\n [for]=\"field.formId\"\n >\n <span>{{ field.title | translate }}</span>\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n [id]=\"field.formId\"\n [formControlName]=\"field.formId\"\n >\n <option></option>\n <option\n *ngFor=\"let option of field.options\"\n [value]=\"option.value\"\n >\n {{ option.name | translate }}\n </option>\n </select>\n <span></span>\n </div>\n\n <div\n class=\"help-block\"\n *ngIf=\"field.description\"\n >\n {{ field.description | translate : field.descriptionTranslateParams }}\n </div>\n </c8y-form-group>\n </ng-template>\n</form>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.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.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
|
|
485
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: PlatformConfigurationFormComponent, deps: [{ token: PlatformConfigurationFormProviderService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
486
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.15", type: PlatformConfigurationFormComponent, isStandalone: true, selector: "c8y-platform-configuration-form", inputs: { _optionsGroups: ["optionsGroups", "_optionsGroups"], readOnly: "readOnly", formValue: "formValue" }, outputs: { onSave: "onSave" }, ngImport: i0, template: "<form [formGroup]=\"form\">\n <div class=\"row\">\n <div class=\"col-lg-12 col-lg-max\">\n <div class=\"card card--fullpage\">\n <div class=\"card-header separator\">\n <div class=\"card-title\">\n {{ 'Configuration' | translate }}\n </div>\n </div>\n <div class=\"inner-scroll\">\n <div class=\"card-block\">\n <div>\n <fieldset\n class=\"row schema-form-fieldset separator-bottom p-t-24\"\n *ngFor=\"let category of optionsGroups\"\n >\n <div class=\"col-sm-3 col-md-2 p-l-24 p-l-xs-8 p-b-8\">\n <div\n class=\"h4 text-normal text-right text-left-xs\"\n data-cy=\"fieldset--section-title\"\n >\n {{ category.title | translate }}\n </div>\n </div>\n <div class=\"col-sm-9 col-md-8\">\n <div\n class=\"form-group\"\n *ngFor=\"let field of category.items\"\n >\n <ng-container [ngSwitch]=\"field.type\">\n <ng-container *ngSwitchCase=\"'string'\">\n <ng-container\n *ngTemplateOutlet=\"stringTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'number'\">\n <ng-container\n *ngTemplateOutlet=\"numberTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'password'\">\n <ng-container\n *ngTemplateOutlet=\"passwordTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'textarea'\">\n <ng-container\n *ngTemplateOutlet=\"textareaTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'boolean'\">\n <ng-container\n *ngTemplateOutlet=\"booleanTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'select'\">\n <ng-container\n *ngTemplateOutlet=\"selectTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n </fieldset>\n </div>\n </div>\n </div>\n\n <div class=\"card-footer separator\">\n <button\n class=\"btn btn-primary\"\n [title]=\"'Save configuration' | translate\"\n type=\"submit\"\n (click)=\"emitForm()\"\n [disabled]=\"!form.dirty || form.invalid || form.disabled\"\n >\n <span translate>Save</span>\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <ng-template\n #stringTemplate\n let-field\n >\n <c8y-form-group>\n <label\n title=\"{{ field.title | translate }}\"\n [for]=\"field.formId\"\n >\n {{ field.title | translate }}\n </label>\n <input\n class=\"text-truncate form-control\"\n [title]=\"field.title | translate\"\n type=\"text\"\n [id]=\"field.formId\"\n [formControlName]=\"field.formId\"\n [placeholder]=\"field.placeholder || '' | translate : field.placeholderParams\"\n />\n <div\n class=\"help-block\"\n *ngIf=\"field.description\"\n >\n {{ field.description | translate : field.descriptionTranslateParams }}\n </div>\n </c8y-form-group>\n </ng-template>\n\n <ng-template\n #passwordTemplate\n let-field\n >\n <c8y-form-group>\n <label\n title=\"{{ field.title | translate }}\"\n [for]=\"field.formId\"\n >\n {{ field.title | translate }}\n </label>\n <input\n class=\"text-truncate form-control\"\n [title]=\"field.title | translate\"\n type=\"password\"\n autocomplete=\"new-password\"\n [id]=\"field.formId\"\n [formControlName]=\"field.formId\"\n [placeholder]=\"field.placeholder || '' | translate : field.placeholderParams\"\n />\n <div\n class=\"help-block\"\n *ngIf=\"field.description\"\n >\n {{ field.description | translate : field.descriptionTranslateParams }}\n </div>\n </c8y-form-group>\n </ng-template>\n\n <ng-template\n #numberTemplate\n let-field\n >\n <c8y-form-group>\n <label\n title=\"{{ field.title | translate }}\"\n [for]=\"field.formId\"\n >\n {{ field.title | translate }}\n </label>\n <input\n class=\"text-truncate form-control\"\n [title]=\"field.title | translate\"\n type=\"number\"\n [id]=\"field.formId\"\n [formControlName]=\"field.formId\"\n [placeholder]=\"field.placeholder || '' | translate : field.placeholderParams\"\n />\n <div\n class=\"help-block\"\n *ngIf=\"field.description\"\n >\n {{ field.description | translate : field.descriptionTranslateParams }}\n </div>\n </c8y-form-group>\n </ng-template>\n\n <ng-template\n #textareaTemplate\n let-field\n >\n <c8y-form-group>\n <label\n title=\"{{ field.title | translate }}\"\n [for]=\"field.formId\"\n >\n {{ field.title | translate }}\n </label>\n <textarea\n class=\"form-control\"\n [title]=\"field.title | translate\"\n [id]=\"field.formId\"\n [formControlName]=\"field.formId\"\n [placeholder]=\"field.placeholder || '' | translate : field.placeholderParams\"\n [rows]=\"10\"\n ></textarea>\n <div\n class=\"help-block\"\n *ngIf=\"field.description || field.lineBreakHint\"\n >\n <span *ngIf=\"field.description\">\n {{ field.description | translate : field.descriptionTranslateParams }}\n </span>\n <span *ngIf=\"field.description && field.lineBreakHint\"><br /></span>\n <span *ngIf=\"field.lineBreakHint\">{{ lineBreakHint | translate }}</span>\n </div>\n </c8y-form-group>\n </ng-template>\n\n <ng-template\n #booleanTemplate\n let-field\n >\n <c8y-form-group>\n <label\n class=\"c8y-checkbox\"\n title=\"{{ field.title | translate }}\"\n >\n <input\n [title]=\"field.title | translate\"\n type=\"checkbox\"\n [formControlName]=\"field.formId\"\n />\n <span></span>\n <span>{{ field.title | translate }}</span>\n </label>\n\n <div\n class=\"help-block\"\n *ngIf=\"field.description\"\n >\n {{ field.description | translate : field.descriptionTranslateParams }}\n </div>\n </c8y-form-group>\n </ng-template>\n\n <ng-template\n #selectTemplate\n let-field\n >\n <c8y-form-group>\n <label\n title=\"{{ field.title | translate }}\"\n [for]=\"field.formId\"\n >\n <span>{{ field.title | translate }}</span>\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n [id]=\"field.formId\"\n [formControlName]=\"field.formId\"\n >\n <option></option>\n <option\n *ngFor=\"let option of field.options\"\n [value]=\"option.value\"\n >\n {{ option.name | translate }}\n </option>\n </select>\n <span></span>\n </div>\n\n <div\n class=\"help-block\"\n *ngIf=\"field.description\"\n >\n {{ field.description | translate : field.descriptionTranslateParams }}\n </div>\n </c8y-form-group>\n </ng-template>\n</form>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.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.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
|
|
487
487
|
}
|
|
488
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
488
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: PlatformConfigurationFormComponent, decorators: [{
|
|
489
489
|
type: Component,
|
|
490
490
|
args: [{ selector: 'c8y-platform-configuration-form', imports: [
|
|
491
491
|
FormsModule,
|
|
@@ -512,11 +512,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImpor
|
|
|
512
512
|
}] } });
|
|
513
513
|
|
|
514
514
|
class PlatformConfigurationModule {
|
|
515
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
516
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.
|
|
517
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.
|
|
515
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: PlatformConfigurationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
516
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: PlatformConfigurationModule, imports: [CommonModule, FormsModule$1, ReactiveFormsModule, PlatformConfigurationFormComponent], exports: [PlatformConfigurationFormComponent] }); }
|
|
517
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: PlatformConfigurationModule, imports: [CommonModule, FormsModule$1, ReactiveFormsModule, PlatformConfigurationFormComponent] }); }
|
|
518
518
|
}
|
|
519
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
519
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: PlatformConfigurationModule, decorators: [{
|
|
520
520
|
type: NgModule,
|
|
521
521
|
args: [{
|
|
522
522
|
imports: [CommonModule, FormsModule$1, ReactiveFormsModule, PlatformConfigurationFormComponent],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"c8y-ngx-components-platform-configuration.mjs","sources":["../../platform-configuration/platform-configuration-form-provider.service.ts","../../platform-configuration/platform-configuration-form.component.ts","../../platform-configuration/platform-configuration-form.component.html","../../platform-configuration/platform-configuration.module.ts","../../platform-configuration/c8y-ngx-components-platform-configuration.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { DatePipe } from '@c8y/ngx-components';\nimport { FormControl, Validators } from '@angular/forms';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PlatformConfigurationFormProviderService {\n lineBreakHint = gettext('Use [Enter] or <br> tag to add a new line');\n\n exampleTomorrowDate = (() => {\n const tomorrow = new Date();\n tomorrow.setDate(tomorrow.getDate() + 1);\n return this.c8yDatePipe.transform(tomorrow, 'yyyy-MM-ddTHH:mm:ssZ');\n })();\n\n platformConfigurationFormDefinitions = {\n 'system.password.enforce.strength': {\n formId: 'system.password.enforce.strength',\n title: gettext('Enforce \"green\" passwords for all users'),\n type: 'boolean',\n control: new FormControl('')\n },\n 'system.password.limit.validity': {\n formId: 'system.password.limit.validity',\n title: gettext('Password validity limit (days)'),\n description: gettext(\n 'The number of days a password may be valid before it must be reset; minimum value is 0, maximum value is 999999. Leave empty to use the value from the tenant options.'\n ),\n type: 'number',\n control: new FormControl('', [Validators.min(0), Validators.max(999999)])\n },\n 'system.password.history.size': {\n formId: 'system.password.history.size',\n title: gettext('Password history size'),\n description: gettext(\n 'The number of times before the current password can be reused. Minimum value is 0, preset value is 10.'\n ),\n type: 'number',\n placeholder: `${gettext('e.g. {{ example }}')}`,\n placeholderParams: { example: '10' },\n control: new FormControl('', [Validators.min(0)])\n },\n 'system.password.green.min-length': {\n formId: 'system.password.green.min-length',\n title: gettext('Minimal length of \"green\" password'),\n description: gettext(\n 'The minimum number of characters which are required for a safe password. Minimum (and preset) value is 8, maximum value is 32. Leave empty to skip this constraint.'\n ),\n type: 'number',\n control: new FormControl('', [Validators.min(8), Validators.max(32)])\n },\n 'ui.email.protocolAndEncryption': {\n formId: 'ui.email.protocolAndEncryption',\n title: gettext('Protocol and encryption'),\n type: 'select',\n options: [\n {\n value: 'SMTP_PLAIN',\n name: gettext('SMTP (no encryption)')\n },\n {\n value: 'SMTP_ENCRYPTED',\n name: gettext('SMTP (STARTTLS)')\n },\n {\n value: 'SMTPS_ENCRYPTED',\n name: gettext('SMTPS (SSL/TLS)')\n }\n ],\n skipOnSave: true,\n control: new FormControl('')\n },\n 'email.protocol': {\n formId: 'email.protocol',\n title: gettext('Protocol'),\n type: 'select',\n options: [\n {\n value: 'smtp',\n name: 'SMTP'\n },\n {\n value: 'smtps',\n name: 'SMTPS'\n }\n ],\n control: new FormControl('')\n },\n 'email.connection.encrypted': {\n formId: 'email.connection.encrypted',\n title: gettext('Connection encrypted'),\n type: 'boolean',\n control: new FormControl('')\n },\n 'email.host': {\n formId: 'email.host',\n title: gettext('Host'),\n type: 'string',\n placeholder: `${gettext('e.g. {{ example }}')}`,\n placeholderParams: { example: 'localhost' },\n control: new FormControl('')\n },\n 'email.port': {\n formId: 'email.port',\n title: gettext('Port'),\n type: 'number',\n placeholder: `${gettext('e.g. {{ example }}')}`,\n placeholderParams: { example: '25' },\n control: new FormControl('', [Validators.min(1), Validators.max(65535)])\n },\n 'email.username': {\n formId: 'email.username',\n title: gettext('Username'),\n type: 'string',\n control: new FormControl('')\n },\n 'credentials.email.password': {\n formId: 'credentials.email.password',\n title: gettext('Password'),\n type: 'password',\n control: new FormControl('')\n },\n 'email.from': {\n formId: 'email.from',\n title: gettext('Sender address'),\n type: 'string',\n control: new FormControl('', [Validators.email])\n },\n 'passwordReset.sendNotificationToUnknownEmails': {\n formId: 'passwordReset.sendNotificationToUnknownEmails',\n title: gettext('Send notifications to unknown email addresses'),\n type: 'boolean',\n control: new FormControl('')\n },\n 'passwordReset.email.subject': {\n formId: 'passwordReset.email.subject',\n title: gettext('Email subject'),\n description: gettext('Subject used for all password reset related emails'),\n type: 'string',\n control: new FormControl('')\n },\n 'passwordReset.token.email.template': {\n formId: 'passwordReset.token.email.template',\n title: gettext('Password reset email template (when address is known)'),\n description: `${gettext(\n 'Placeholders: {tenant-domain}, {host}, {token}, {username}, {email}. Whole link to reset password can be, for example: {tenant-domain}/apps/devicemanagement/index.html?token={token}&email={email}'\n )}`,\n type: 'textarea',\n control: new FormControl(''),\n lineBreakHint: true\n },\n 'passwordReset.user.not.found.email.template': {\n formId: 'passwordReset.user.not.found.email.template',\n title: gettext('Password reset email template (when address is not known)'),\n type: 'textarea',\n control: new FormControl(''),\n lineBreakHint: true\n },\n 'passwordReset.success.email.template': {\n formId: 'passwordReset.success.email.template',\n title: gettext('Password change confirmation email template'),\n description: `${gettext('Placeholders: {host}, {tenant-domain}, {username}')}`,\n type: 'textarea',\n control: new FormControl(''),\n lineBreakHint: true\n },\n 'passwordReset.invite.template': {\n formId: 'passwordReset.invite.template',\n title: gettext('Invitation email template'),\n description: `${gettext(\n 'Placeholders: {tenant-domain}, {host}, {token}, {username}, {email}. Whole link to setup password can be, for example: {tenant-domain}/apps/devicemanagement/index.html?token={token}'\n )}`,\n type: 'textarea',\n control: new FormControl(''),\n lineBreakHint: true\n },\n 'export.data.mail.subject': {\n formId: 'export.data.mail.subject',\n title: gettext('Email subject'),\n description: gettext(\n 'Placeholders: {tenant-domain}, {host}, {binaryId}. Whole link to result file is: {tenant-domain}/inventory/binaries/{binaryId}'\n ),\n type: 'string',\n control: new FormControl('')\n },\n 'export.data.mail.text': {\n formId: 'export.data.mail.text',\n title: gettext('Email template'),\n description: `${gettext(\n 'Placeholders: {tenant-domain}, {host}, {binaryId}. Whole link to result file is: {tenant-domain}/inventory/binaries/{binaryId}'\n )}`,\n type: 'textarea',\n control: new FormControl(''),\n lineBreakHint: true\n },\n 'export.data.mail.text.userunauthorized': {\n formId: 'export.data.mail.text.userunauthorized',\n title: gettext('User unauthorized error message'),\n description: gettext('Placeholders: {user}, {exportApi}'),\n type: 'string',\n control: new FormControl('')\n },\n 'two-factor-authentication.token.sms.template': {\n formId: 'two-factor-authentication.token.sms.template',\n title: gettext('Verification token SMS template'),\n description: gettext('Placeholder: {token} - created token'),\n type: 'string',\n placeholder: gettext('e.g.: Verification code: {token}'),\n control: new FormControl('')\n },\n 'system.support.url': {\n formId: 'system.support.url',\n title: gettext('URL'),\n type: 'string',\n description: gettext(\n 'Possible values: URL string, \"false`KEEP_ORIGINAL`\" (hides the link) or leave empty (uses the default). Applications can override this setting by defining \"supportUrl`KEEP_ORIGINAL`\" application option.'\n ),\n control: new FormControl('')\n },\n 'storageLimit.warning.email.subject': {\n formId: 'storageLimit.warning.email.subject',\n title: gettext('Warning email subject'),\n description: gettext('Email which will be sent one day before data is deleted'),\n type: 'string',\n control: new FormControl('')\n },\n 'storageLimit.warning.email.template': {\n formId: 'storageLimit.warning.email.template',\n title: gettext('Warning email template'),\n description: `${gettext(\n 'Email which will be sent one day before data is deleted. Placeholders: {tenant-domain}, {tenant}, {size} - storage usage in %'\n )}`,\n type: 'textarea',\n control: new FormControl(''),\n lineBreakHint: true\n },\n 'storageLimit.process.email.subject': {\n formId: 'storageLimit.process.email.subject',\n title: gettext('Limit exceeded email subject'),\n description: gettext('Email which will be sent after over-limit data has been deleted'),\n type: 'string',\n control: new FormControl('')\n },\n 'storageLimit.process.email.template': {\n formId: 'storageLimit.process.email.template',\n title: gettext('Limit exceeded email template'),\n description: `${gettext(\n 'Email which will be sent after over-limit data has been deleted. Placeholders: {tenant-domain}, {tenant}, {size} - storage usage in %'\n )}`,\n type: 'textarea',\n control: new FormControl(''),\n lineBreakHint: true\n },\n 'tenantSuspend.mail.sendtosuspended': {\n formId: 'tenantSuspend.mail.sendtosuspended',\n title: gettext(\"Send email to suspended tenant's administrator\"),\n type: 'boolean',\n control: new FormControl('')\n },\n 'tenantSuspend.mail.additional.address': {\n formId: 'tenantSuspend.mail.additional.address',\n title: gettext('Tenant suspended email additional receiver'),\n type: 'string',\n control: new FormControl('', [Validators.email])\n },\n 'tenantSuspend.mail.subject': {\n formId: 'tenantSuspend.mail.subject',\n title: gettext('Tenant suspended email subject'),\n description: gettext(\n \"Placeholder: {tenant} - suspended tenant's ID; {tenant-domain} - tenant's domain\"\n ),\n type: 'string',\n control: new FormControl('')\n },\n 'tenantSuspend.mail.text': {\n formId: 'tenantSuspend.mail.text',\n title: gettext('Tenant suspended email template'),\n description: `${gettext(\n \"Placeholder: {tenant} - suspended tenant's ID; {tenant-domain} - tenant's domain\"\n )}`,\n type: 'textarea',\n control: new FormControl(''),\n lineBreakHint: true\n },\n 'system.support-user.enabled': {\n formId: 'system.support-user.enabled',\n title: gettext('Activate support user'),\n description: gettext(\n 'Possible values: \"true`KEEP_ORIGINAL`\", \"false`KEEP_ORIGINAL`\", or a specific date until the user should remain active, for example, \"{{ exampleDate }}\". Leaving it blank, will set the value to \"true`KEEP_ORIGINAL`\".'\n ),\n descriptionTranslateParams: {\n exampleDate: this.exampleTomorrowDate\n },\n type: 'string',\n control: new FormControl(''),\n placeholder: this.exampleTomorrowDate\n },\n 'system.support-user.validity-limit': {\n formId: 'system.support-user.validity-limit',\n title: gettext('Validity limit'),\n description: gettext(\n 'Each support user request from subtenant user will prolong support user access by the given number of hours (default: 24 hours). Leaving it blank, will set the value to \"24\".'\n ),\n type: 'number',\n placeholder: `${gettext('e.g. {{ example }}')}`,\n placeholderParams: { example: '24' },\n control: new FormControl('', [Validators.min(0)])\n }\n };\n\n optionsGroups = [\n {\n title: gettext('Passwords'),\n id: 'passwordsOptions',\n items: [\n this.platformConfigurationFormDefinitions['system.password.enforce.strength'],\n this.platformConfigurationFormDefinitions['system.password.limit.validity'],\n this.platformConfigurationFormDefinitions['system.password.history.size'],\n this.platformConfigurationFormDefinitions['system.password.green.min-length']\n ]\n },\n {\n title: gettext('Two-factor authentication'),\n id: 'twoFactorAuthenticationOptions',\n items: [\n this.platformConfigurationFormDefinitions['two-factor-authentication.token.sms.template']\n ]\n },\n {\n title: gettext('Support link'),\n id: 'supportLinkOptions',\n items: [this.platformConfigurationFormDefinitions['system.support.url']]\n },\n {\n title: gettext('Password reset'),\n id: 'passwordResetOptions',\n items: [\n this.platformConfigurationFormDefinitions['passwordReset.sendNotificationToUnknownEmails'],\n this.platformConfigurationFormDefinitions['passwordReset.token.email.template'],\n this.platformConfigurationFormDefinitions['passwordReset.user.not.found.email.template'],\n this.platformConfigurationFormDefinitions['passwordReset.email.subject'],\n this.platformConfigurationFormDefinitions['passwordReset.success.email.template'],\n this.platformConfigurationFormDefinitions['passwordReset.invite.template']\n ]\n },\n {\n title: gettext('Support user'),\n id: 'supportUserOptions',\n items: [\n this.platformConfigurationFormDefinitions['system.support-user.enabled'],\n this.platformConfigurationFormDefinitions['system.support-user.validity-limit']\n ]\n },\n {\n title: gettext('Email server'),\n id: 'emailServerOptions',\n items: [\n this.platformConfigurationFormDefinitions['ui.email.protocolAndEncryption'],\n this.platformConfigurationFormDefinitions['email.host'],\n this.platformConfigurationFormDefinitions['email.port'],\n this.platformConfigurationFormDefinitions['email.username'],\n this.platformConfigurationFormDefinitions['credentials.email.password'],\n this.platformConfigurationFormDefinitions['email.from']\n ]\n },\n {\n title: gettext('Data export'),\n id: 'dataExportOptions',\n items: [\n this.platformConfigurationFormDefinitions['export.data.mail.subject'],\n this.platformConfigurationFormDefinitions['export.data.mail.text'],\n this.platformConfigurationFormDefinitions['export.data.mail.text.userunauthorized']\n ]\n },\n {\n title: gettext('Storage limit'),\n id: 'storageLimitOptions',\n items: [\n this.platformConfigurationFormDefinitions['storageLimit.warning.email.subject'],\n this.platformConfigurationFormDefinitions['storageLimit.warning.email.template'],\n this.platformConfigurationFormDefinitions['storageLimit.process.email.subject'],\n this.platformConfigurationFormDefinitions['storageLimit.process.email.template']\n ]\n },\n {\n title: gettext('Suspending tenants'),\n id: 'suspendingTenantsOptions',\n items: [\n this.platformConfigurationFormDefinitions['tenantSuspend.mail.sendtosuspended'],\n this.platformConfigurationFormDefinitions['tenantSuspend.mail.additional.address'],\n this.platformConfigurationFormDefinitions['tenantSuspend.mail.subject'],\n this.platformConfigurationFormDefinitions['tenantSuspend.mail.text']\n ]\n }\n ];\n\n constructor(private c8yDatePipe: DatePipe) {}\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { PlatformConfigurationFormProviderService } from './platform-configuration-form-provider.service';\nimport { NgFor, NgSwitch, NgSwitchCase, NgTemplateOutlet, NgIf } from '@angular/common';\nimport {\n C8yTranslateDirective,\n FormGroupComponent,\n RequiredInputPlaceholderDirective,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\n\n@Component({\n selector: 'c8y-platform-configuration-form',\n templateUrl: './platform-configuration-form.component.html',\n imports: [\n FormsModule,\n ReactiveFormsModule,\n NgFor,\n NgSwitch,\n NgSwitchCase,\n NgTemplateOutlet,\n C8yTranslateDirective,\n FormGroupComponent,\n RequiredInputPlaceholderDirective,\n NgIf,\n C8yTranslatePipe\n ]\n})\nexport class PlatformConfigurationFormComponent {\n @Input('optionsGroups')\n set _optionsGroups(groupIds: string[]) {\n if (groupIds === undefined) {\n return;\n }\n this.optionsGroups = groupIds.map(groupId =>\n this.formProviderService.optionsGroups.find(option => option.id === groupId)\n );\n }\n\n @Input()\n set readOnly(disabled: boolean) {\n disabled ? this.form.disable() : this.form.enable();\n }\n\n @Input()\n set formValue(value) {\n if (value) {\n const convertedValue = this.afterLoad(value);\n this.form.patchValue(convertedValue, { emitEvent: false });\n this.form.markAsUntouched();\n this.form.markAsPristine();\n }\n }\n optionsGroups = [];\n\n @Output()\n onSave = new EventEmitter();\n\n form = new FormGroup({});\n\n lineBreakHint = this.formProviderService.lineBreakHint;\n\n constructor(private formProviderService: PlatformConfigurationFormProviderService) {\n Object.keys(formProviderService.platformConfigurationFormDefinitions).forEach(fieldId => {\n this.form.addControl(\n fieldId,\n formProviderService.platformConfigurationFormDefinitions[fieldId].control\n );\n });\n }\n\n /**\n * Parses provided object's property values\n * @param options\n */\n parseConfiguration(options: object): void {\n const definitions: object = this.formProviderService.platformConfigurationFormDefinitions;\n Object.entries(options).forEach(([key, rawValue]) => {\n if (\n definitions[key] &&\n (definitions[key].type === 'number' || definitions[key].type === 'boolean')\n ) {\n try {\n options[key] = JSON.parse(rawValue);\n } catch {\n options[key] = rawValue;\n }\n }\n });\n }\n\n /**\n * Parses incoming raw object before it is applied to FormGroup.\n */\n afterLoad(options: object): object {\n this.parseConfiguration(options);\n\n delete options['ui.email.protocolAndEncryption'];\n const emailProtocol = options['email.protocol'];\n const connectionEncrypted = options['email.connection.encrypted'] || false;\n if (emailProtocol === 'smtp') {\n if (connectionEncrypted) {\n options['ui.email.protocolAndEncryption'] = 'SMTP_ENCRYPTED';\n } else {\n options['ui.email.protocolAndEncryption'] = 'SMTP_PLAIN';\n }\n } else if (emailProtocol === 'smtps') {\n options['ui.email.protocolAndEncryption'] = 'SMTPS_ENCRYPTED';\n } else {\n options['ui.email.protocolAndEncryption'] = undefined;\n }\n return options;\n }\n\n /**\n * Translates ui.email.protocolAndEncryption field into\n * separate email.protocol and email.connection.encrypted\n */\n beforeSave(value): object {\n const protocolAndEncryption = value['ui.email.protocolAndEncryption'];\n if (protocolAndEncryption) {\n //email.protocol\n const protocol = protocolAndEncryption.match(/^(.+?)_(.+?)$/)[1];\n value['email.protocol'] = protocol ? protocol.toLowerCase() : protocol;\n\n // email.connection.encrypted\n const encryption = protocolAndEncryption.match(/^(.+?)_(.+?)$/)[2];\n value['email.connection.encrypted'] = encryption === 'ENCRYPTED';\n delete value['ui.email.protocolAndEncryption'];\n }\n\n return value;\n }\n\n getDirtyValues() {\n const dirtyValues = {};\n\n Object.keys(this.form.controls).forEach(key => {\n const currentControl = this.form.controls[key];\n\n if (currentControl.dirty) {\n dirtyValues[key] = currentControl.value;\n }\n });\n\n return dirtyValues;\n }\n\n emitForm() {\n if (this.form.valid) {\n const changedValues = this.getDirtyValues();\n const convertedValue = this.beforeSave(changedValues);\n this.onSave.emit(convertedValue);\n }\n }\n}\n","<form [formGroup]=\"form\">\n <div class=\"row\">\n <div class=\"col-lg-12 col-lg-max\">\n <div class=\"card card--fullpage\">\n <div class=\"card-header separator\">\n <div class=\"card-title\">\n {{ 'Configuration' | translate }}\n </div>\n </div>\n <div class=\"inner-scroll\">\n <div class=\"card-block\">\n <div>\n <fieldset\n class=\"row schema-form-fieldset separator-bottom p-t-24\"\n *ngFor=\"let category of optionsGroups\"\n >\n <div class=\"col-sm-3 col-md-2 p-l-24 p-l-xs-8 p-b-8\">\n <div\n class=\"h4 text-normal text-right text-left-xs\"\n data-cy=\"fieldset--section-title\"\n >\n {{ category.title | translate }}\n </div>\n </div>\n <div class=\"col-sm-9 col-md-8\">\n <div\n class=\"form-group\"\n *ngFor=\"let field of category.items\"\n >\n <ng-container [ngSwitch]=\"field.type\">\n <ng-container *ngSwitchCase=\"'string'\">\n <ng-container\n *ngTemplateOutlet=\"stringTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'number'\">\n <ng-container\n *ngTemplateOutlet=\"numberTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'password'\">\n <ng-container\n *ngTemplateOutlet=\"passwordTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'textarea'\">\n <ng-container\n *ngTemplateOutlet=\"textareaTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'boolean'\">\n <ng-container\n *ngTemplateOutlet=\"booleanTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'select'\">\n <ng-container\n *ngTemplateOutlet=\"selectTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n </fieldset>\n </div>\n </div>\n </div>\n\n <div class=\"card-footer separator\">\n <button\n class=\"btn btn-primary\"\n [title]=\"'Save configuration' | translate\"\n type=\"submit\"\n (click)=\"emitForm()\"\n [disabled]=\"!form.dirty || form.invalid || form.disabled\"\n >\n <span translate>Save</span>\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <ng-template\n #stringTemplate\n let-field\n >\n <c8y-form-group>\n <label\n title=\"{{ field.title | translate }}\"\n [for]=\"field.formId\"\n >\n {{ field.title | translate }}\n </label>\n <input\n class=\"text-truncate form-control\"\n [title]=\"field.title | translate\"\n type=\"text\"\n [id]=\"field.formId\"\n [formControlName]=\"field.formId\"\n [placeholder]=\"field.placeholder || '' | translate : field.placeholderParams\"\n />\n <div\n class=\"help-block\"\n *ngIf=\"field.description\"\n >\n {{ field.description | translate : field.descriptionTranslateParams }}\n </div>\n </c8y-form-group>\n </ng-template>\n\n <ng-template\n #passwordTemplate\n let-field\n >\n <c8y-form-group>\n <label\n title=\"{{ field.title | translate }}\"\n [for]=\"field.formId\"\n >\n {{ field.title | translate }}\n </label>\n <input\n class=\"text-truncate form-control\"\n [title]=\"field.title | translate\"\n type=\"password\"\n autocomplete=\"new-password\"\n [id]=\"field.formId\"\n [formControlName]=\"field.formId\"\n [placeholder]=\"field.placeholder || '' | translate : field.placeholderParams\"\n />\n <div\n class=\"help-block\"\n *ngIf=\"field.description\"\n >\n {{ field.description | translate : field.descriptionTranslateParams }}\n </div>\n </c8y-form-group>\n </ng-template>\n\n <ng-template\n #numberTemplate\n let-field\n >\n <c8y-form-group>\n <label\n title=\"{{ field.title | translate }}\"\n [for]=\"field.formId\"\n >\n {{ field.title | translate }}\n </label>\n <input\n class=\"text-truncate form-control\"\n [title]=\"field.title | translate\"\n type=\"number\"\n [id]=\"field.formId\"\n [formControlName]=\"field.formId\"\n [placeholder]=\"field.placeholder || '' | translate : field.placeholderParams\"\n />\n <div\n class=\"help-block\"\n *ngIf=\"field.description\"\n >\n {{ field.description | translate : field.descriptionTranslateParams }}\n </div>\n </c8y-form-group>\n </ng-template>\n\n <ng-template\n #textareaTemplate\n let-field\n >\n <c8y-form-group>\n <label\n title=\"{{ field.title | translate }}\"\n [for]=\"field.formId\"\n >\n {{ field.title | translate }}\n </label>\n <textarea\n class=\"form-control\"\n [title]=\"field.title | translate\"\n [id]=\"field.formId\"\n [formControlName]=\"field.formId\"\n [placeholder]=\"field.placeholder || '' | translate : field.placeholderParams\"\n [rows]=\"10\"\n ></textarea>\n <div\n class=\"help-block\"\n *ngIf=\"field.description || field.lineBreakHint\"\n >\n <span *ngIf=\"field.description\">\n {{ field.description | translate : field.descriptionTranslateParams }}\n </span>\n <span *ngIf=\"field.description && field.lineBreakHint\"><br /></span>\n <span *ngIf=\"field.lineBreakHint\">{{ lineBreakHint | translate }}</span>\n </div>\n </c8y-form-group>\n </ng-template>\n\n <ng-template\n #booleanTemplate\n let-field\n >\n <c8y-form-group>\n <label\n class=\"c8y-checkbox\"\n title=\"{{ field.title | translate }}\"\n >\n <input\n [title]=\"field.title | translate\"\n type=\"checkbox\"\n [formControlName]=\"field.formId\"\n />\n <span></span>\n <span>{{ field.title | translate }}</span>\n </label>\n\n <div\n class=\"help-block\"\n *ngIf=\"field.description\"\n >\n {{ field.description | translate : field.descriptionTranslateParams }}\n </div>\n </c8y-form-group>\n </ng-template>\n\n <ng-template\n #selectTemplate\n let-field\n >\n <c8y-form-group>\n <label\n title=\"{{ field.title | translate }}\"\n [for]=\"field.formId\"\n >\n <span>{{ field.title | translate }}</span>\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n [id]=\"field.formId\"\n [formControlName]=\"field.formId\"\n >\n <option></option>\n <option\n *ngFor=\"let option of field.options\"\n [value]=\"option.value\"\n >\n {{ option.name | translate }}\n </option>\n </select>\n <span></span>\n </div>\n\n <div\n class=\"help-block\"\n *ngIf=\"field.description\"\n >\n {{ field.description | translate : field.descriptionTranslateParams }}\n </div>\n </c8y-form-group>\n </ng-template>\n</form>\n","import { CommonModule, FormsModule } from '@c8y/ngx-components';\nimport { NgModule } from '@angular/core';\nimport { PlatformConfigurationFormComponent } from './platform-configuration-form.component';\nimport { ReactiveFormsModule } from '@angular/forms';\n\n@NgModule({\n imports: [CommonModule, FormsModule, ReactiveFormsModule, PlatformConfigurationFormComponent],\n exports: [PlatformConfigurationFormComponent]\n})\nexport class PlatformConfigurationModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.PlatformConfigurationFormProviderService","FormsModule"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"c8y-ngx-components-platform-configuration.mjs","sources":["../../platform-configuration/platform-configuration-form-provider.service.ts","../../platform-configuration/platform-configuration-form.component.ts","../../platform-configuration/platform-configuration-form.component.html","../../platform-configuration/platform-configuration.module.ts","../../platform-configuration/c8y-ngx-components-platform-configuration.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { DatePipe } from '@c8y/ngx-components';\nimport { FormControl, Validators } from '@angular/forms';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PlatformConfigurationFormProviderService {\n lineBreakHint = gettext('Use [Enter] or <br> tag to add a new line');\n\n exampleTomorrowDate = (() => {\n const tomorrow = new Date();\n tomorrow.setDate(tomorrow.getDate() + 1);\n return this.c8yDatePipe.transform(tomorrow, 'yyyy-MM-ddTHH:mm:ssZ');\n })();\n\n platformConfigurationFormDefinitions = {\n 'system.password.enforce.strength': {\n formId: 'system.password.enforce.strength',\n title: gettext('Enforce \"green\" passwords for all users'),\n type: 'boolean',\n control: new FormControl('')\n },\n 'system.password.limit.validity': {\n formId: 'system.password.limit.validity',\n title: gettext('Password validity limit (days)'),\n description: gettext(\n 'The number of days a password may be valid before it must be reset; minimum value is 0, maximum value is 999999. Leave empty to use the value from the tenant options.'\n ),\n type: 'number',\n control: new FormControl('', [Validators.min(0), Validators.max(999999)])\n },\n 'system.password.history.size': {\n formId: 'system.password.history.size',\n title: gettext('Password history size'),\n description: gettext(\n 'The number of times before the current password can be reused. Minimum value is 0, preset value is 10.'\n ),\n type: 'number',\n placeholder: `${gettext('e.g. {{ example }}')}`,\n placeholderParams: { example: '10' },\n control: new FormControl('', [Validators.min(0)])\n },\n 'system.password.green.min-length': {\n formId: 'system.password.green.min-length',\n title: gettext('Minimal length of \"green\" password'),\n description: gettext(\n 'The minimum number of characters which are required for a safe password. Minimum (and preset) value is 8, maximum value is 32. Leave empty to skip this constraint.'\n ),\n type: 'number',\n control: new FormControl('', [Validators.min(8), Validators.max(32)])\n },\n 'ui.email.protocolAndEncryption': {\n formId: 'ui.email.protocolAndEncryption',\n title: gettext('Protocol and encryption'),\n type: 'select',\n options: [\n {\n value: 'SMTP_PLAIN',\n name: gettext('SMTP (no encryption)')\n },\n {\n value: 'SMTP_ENCRYPTED',\n name: gettext('SMTP (STARTTLS)')\n },\n {\n value: 'SMTPS_ENCRYPTED',\n name: gettext('SMTPS (SSL/TLS)')\n }\n ],\n skipOnSave: true,\n control: new FormControl('')\n },\n 'email.protocol': {\n formId: 'email.protocol',\n title: gettext('Protocol'),\n type: 'select',\n options: [\n {\n value: 'smtp',\n name: 'SMTP'\n },\n {\n value: 'smtps',\n name: 'SMTPS'\n }\n ],\n control: new FormControl('')\n },\n 'email.connection.encrypted': {\n formId: 'email.connection.encrypted',\n title: gettext('Connection encrypted'),\n type: 'boolean',\n control: new FormControl('')\n },\n 'email.host': {\n formId: 'email.host',\n title: gettext('Host'),\n type: 'string',\n placeholder: `${gettext('e.g. {{ example }}')}`,\n placeholderParams: { example: 'localhost' },\n control: new FormControl('')\n },\n 'email.port': {\n formId: 'email.port',\n title: gettext('Port'),\n type: 'number',\n placeholder: `${gettext('e.g. {{ example }}')}`,\n placeholderParams: { example: '25' },\n control: new FormControl('', [Validators.min(1), Validators.max(65535)])\n },\n 'email.username': {\n formId: 'email.username',\n title: gettext('Username'),\n type: 'string',\n control: new FormControl('')\n },\n 'credentials.email.password': {\n formId: 'credentials.email.password',\n title: gettext('Password'),\n type: 'password',\n control: new FormControl('')\n },\n 'email.from': {\n formId: 'email.from',\n title: gettext('Sender address'),\n type: 'string',\n control: new FormControl('', [Validators.email])\n },\n 'passwordReset.sendNotificationToUnknownEmails': {\n formId: 'passwordReset.sendNotificationToUnknownEmails',\n title: gettext('Send notifications to unknown email addresses'),\n type: 'boolean',\n control: new FormControl('')\n },\n 'passwordReset.email.subject': {\n formId: 'passwordReset.email.subject',\n title: gettext('Email subject'),\n description: gettext('Subject used for all password reset related emails'),\n type: 'string',\n control: new FormControl('')\n },\n 'passwordReset.token.email.template': {\n formId: 'passwordReset.token.email.template',\n title: gettext('Password reset email template (when address is known)'),\n description: `${gettext(\n 'Placeholders: {tenant-domain}, {host}, {token}, {username}, {email}. Whole link to reset password can be, for example: {tenant-domain}/apps/devicemanagement/index.html?token={token}&email={email}'\n )}`,\n type: 'textarea',\n control: new FormControl(''),\n lineBreakHint: true\n },\n 'passwordReset.user.not.found.email.template': {\n formId: 'passwordReset.user.not.found.email.template',\n title: gettext('Password reset email template (when address is not known)'),\n type: 'textarea',\n control: new FormControl(''),\n lineBreakHint: true\n },\n 'passwordReset.success.email.template': {\n formId: 'passwordReset.success.email.template',\n title: gettext('Password change confirmation email template'),\n description: `${gettext('Placeholders: {host}, {tenant-domain}, {username}')}`,\n type: 'textarea',\n control: new FormControl(''),\n lineBreakHint: true\n },\n 'passwordReset.invite.template': {\n formId: 'passwordReset.invite.template',\n title: gettext('Invitation email template'),\n description: `${gettext(\n 'Placeholders: {tenant-domain}, {host}, {token}, {username}, {email}. Whole link to setup password can be, for example: {tenant-domain}/apps/devicemanagement/index.html?token={token}'\n )}`,\n type: 'textarea',\n control: new FormControl(''),\n lineBreakHint: true\n },\n 'export.data.mail.subject': {\n formId: 'export.data.mail.subject',\n title: gettext('Email subject'),\n description: gettext(\n 'Placeholders: {tenant-domain}, {host}, {binaryId}. Whole link to result file is: {tenant-domain}/inventory/binaries/{binaryId}'\n ),\n type: 'string',\n control: new FormControl('')\n },\n 'export.data.mail.text': {\n formId: 'export.data.mail.text',\n title: gettext('Email template'),\n description: `${gettext(\n 'Placeholders: {tenant-domain}, {host}, {binaryId}. Whole link to result file is: {tenant-domain}/inventory/binaries/{binaryId}'\n )}`,\n type: 'textarea',\n control: new FormControl(''),\n lineBreakHint: true\n },\n 'export.data.mail.text.userunauthorized': {\n formId: 'export.data.mail.text.userunauthorized',\n title: gettext('User unauthorized error message'),\n description: gettext('Placeholders: {user}, {exportApi}'),\n type: 'string',\n control: new FormControl('')\n },\n 'two-factor-authentication.token.sms.template': {\n formId: 'two-factor-authentication.token.sms.template',\n title: gettext('Verification token SMS template'),\n description: gettext('Placeholder: {token} - created token'),\n type: 'string',\n placeholder: gettext('e.g.: Verification code: {token}'),\n control: new FormControl('')\n },\n 'system.support.url': {\n formId: 'system.support.url',\n title: gettext('URL'),\n type: 'string',\n description: gettext(\n 'Possible values: URL string, \"false`KEEP_ORIGINAL`\" (hides the link) or leave empty (uses the default). Applications can override this setting by defining \"supportUrl`KEEP_ORIGINAL`\" application option.'\n ),\n control: new FormControl('')\n },\n 'storageLimit.warning.email.subject': {\n formId: 'storageLimit.warning.email.subject',\n title: gettext('Warning email subject'),\n description: gettext('Email which will be sent one day before data is deleted'),\n type: 'string',\n control: new FormControl('')\n },\n 'storageLimit.warning.email.template': {\n formId: 'storageLimit.warning.email.template',\n title: gettext('Warning email template'),\n description: `${gettext(\n 'Email which will be sent one day before data is deleted. Placeholders: {tenant-domain}, {tenant}, {size} - storage usage in %'\n )}`,\n type: 'textarea',\n control: new FormControl(''),\n lineBreakHint: true\n },\n 'storageLimit.process.email.subject': {\n formId: 'storageLimit.process.email.subject',\n title: gettext('Limit exceeded email subject'),\n description: gettext('Email which will be sent after over-limit data has been deleted'),\n type: 'string',\n control: new FormControl('')\n },\n 'storageLimit.process.email.template': {\n formId: 'storageLimit.process.email.template',\n title: gettext('Limit exceeded email template'),\n description: `${gettext(\n 'Email which will be sent after over-limit data has been deleted. Placeholders: {tenant-domain}, {tenant}, {size} - storage usage in %'\n )}`,\n type: 'textarea',\n control: new FormControl(''),\n lineBreakHint: true\n },\n 'tenantSuspend.mail.sendtosuspended': {\n formId: 'tenantSuspend.mail.sendtosuspended',\n title: gettext(\"Send email to suspended tenant's administrator\"),\n type: 'boolean',\n control: new FormControl('')\n },\n 'tenantSuspend.mail.additional.address': {\n formId: 'tenantSuspend.mail.additional.address',\n title: gettext('Tenant suspended email additional receiver'),\n type: 'string',\n control: new FormControl('', [Validators.email])\n },\n 'tenantSuspend.mail.subject': {\n formId: 'tenantSuspend.mail.subject',\n title: gettext('Tenant suspended email subject'),\n description: gettext(\n \"Placeholder: {tenant} - suspended tenant's ID; {tenant-domain} - tenant's domain\"\n ),\n type: 'string',\n control: new FormControl('')\n },\n 'tenantSuspend.mail.text': {\n formId: 'tenantSuspend.mail.text',\n title: gettext('Tenant suspended email template'),\n description: `${gettext(\n \"Placeholder: {tenant} - suspended tenant's ID; {tenant-domain} - tenant's domain\"\n )}`,\n type: 'textarea',\n control: new FormControl(''),\n lineBreakHint: true\n },\n 'system.support-user.enabled': {\n formId: 'system.support-user.enabled',\n title: gettext('Activate support user'),\n description: gettext(\n 'Possible values: \"true`KEEP_ORIGINAL`\", \"false`KEEP_ORIGINAL`\", or a specific date until the user should remain active, for example, \"{{ exampleDate }}\". Leaving it blank, will set the value to \"true`KEEP_ORIGINAL`\".'\n ),\n descriptionTranslateParams: {\n exampleDate: this.exampleTomorrowDate\n },\n type: 'string',\n control: new FormControl(''),\n placeholder: this.exampleTomorrowDate\n },\n 'system.support-user.validity-limit': {\n formId: 'system.support-user.validity-limit',\n title: gettext('Validity limit'),\n description: gettext(\n 'Each support user request from subtenant user will prolong support user access by the given number of hours (default: 24 hours). Leaving it blank, will set the value to \"24\".'\n ),\n type: 'number',\n placeholder: `${gettext('e.g. {{ example }}')}`,\n placeholderParams: { example: '24' },\n control: new FormControl('', [Validators.min(0)])\n }\n };\n\n optionsGroups = [\n {\n title: gettext('Passwords'),\n id: 'passwordsOptions',\n items: [\n this.platformConfigurationFormDefinitions['system.password.enforce.strength'],\n this.platformConfigurationFormDefinitions['system.password.limit.validity'],\n this.platformConfigurationFormDefinitions['system.password.history.size'],\n this.platformConfigurationFormDefinitions['system.password.green.min-length']\n ]\n },\n {\n title: gettext('Two-factor authentication'),\n id: 'twoFactorAuthenticationOptions',\n items: [\n this.platformConfigurationFormDefinitions['two-factor-authentication.token.sms.template']\n ]\n },\n {\n title: gettext('Support link'),\n id: 'supportLinkOptions',\n items: [this.platformConfigurationFormDefinitions['system.support.url']]\n },\n {\n title: gettext('Password reset'),\n id: 'passwordResetOptions',\n items: [\n this.platformConfigurationFormDefinitions['passwordReset.sendNotificationToUnknownEmails'],\n this.platformConfigurationFormDefinitions['passwordReset.token.email.template'],\n this.platformConfigurationFormDefinitions['passwordReset.user.not.found.email.template'],\n this.platformConfigurationFormDefinitions['passwordReset.email.subject'],\n this.platformConfigurationFormDefinitions['passwordReset.success.email.template'],\n this.platformConfigurationFormDefinitions['passwordReset.invite.template']\n ]\n },\n {\n title: gettext('Support user'),\n id: 'supportUserOptions',\n items: [\n this.platformConfigurationFormDefinitions['system.support-user.enabled'],\n this.platformConfigurationFormDefinitions['system.support-user.validity-limit']\n ]\n },\n {\n title: gettext('Email server'),\n id: 'emailServerOptions',\n items: [\n this.platformConfigurationFormDefinitions['ui.email.protocolAndEncryption'],\n this.platformConfigurationFormDefinitions['email.host'],\n this.platformConfigurationFormDefinitions['email.port'],\n this.platformConfigurationFormDefinitions['email.username'],\n this.platformConfigurationFormDefinitions['credentials.email.password'],\n this.platformConfigurationFormDefinitions['email.from']\n ]\n },\n {\n title: gettext('Data export'),\n id: 'dataExportOptions',\n items: [\n this.platformConfigurationFormDefinitions['export.data.mail.subject'],\n this.platformConfigurationFormDefinitions['export.data.mail.text'],\n this.platformConfigurationFormDefinitions['export.data.mail.text.userunauthorized']\n ]\n },\n {\n title: gettext('Storage limit'),\n id: 'storageLimitOptions',\n items: [\n this.platformConfigurationFormDefinitions['storageLimit.warning.email.subject'],\n this.platformConfigurationFormDefinitions['storageLimit.warning.email.template'],\n this.platformConfigurationFormDefinitions['storageLimit.process.email.subject'],\n this.platformConfigurationFormDefinitions['storageLimit.process.email.template']\n ]\n },\n {\n title: gettext('Suspending tenants'),\n id: 'suspendingTenantsOptions',\n items: [\n this.platformConfigurationFormDefinitions['tenantSuspend.mail.sendtosuspended'],\n this.platformConfigurationFormDefinitions['tenantSuspend.mail.additional.address'],\n this.platformConfigurationFormDefinitions['tenantSuspend.mail.subject'],\n this.platformConfigurationFormDefinitions['tenantSuspend.mail.text']\n ]\n }\n ];\n\n constructor(private c8yDatePipe: DatePipe) {}\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { PlatformConfigurationFormProviderService } from './platform-configuration-form-provider.service';\nimport { NgFor, NgSwitch, NgSwitchCase, NgTemplateOutlet, NgIf } from '@angular/common';\nimport {\n C8yTranslateDirective,\n FormGroupComponent,\n RequiredInputPlaceholderDirective,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\n\n@Component({\n selector: 'c8y-platform-configuration-form',\n templateUrl: './platform-configuration-form.component.html',\n imports: [\n FormsModule,\n ReactiveFormsModule,\n NgFor,\n NgSwitch,\n NgSwitchCase,\n NgTemplateOutlet,\n C8yTranslateDirective,\n FormGroupComponent,\n RequiredInputPlaceholderDirective,\n NgIf,\n C8yTranslatePipe\n ]\n})\nexport class PlatformConfigurationFormComponent {\n @Input('optionsGroups')\n set _optionsGroups(groupIds: string[]) {\n if (groupIds === undefined) {\n return;\n }\n this.optionsGroups = groupIds.map(groupId =>\n this.formProviderService.optionsGroups.find(option => option.id === groupId)\n );\n }\n\n @Input()\n set readOnly(disabled: boolean) {\n disabled ? this.form.disable() : this.form.enable();\n }\n\n @Input()\n set formValue(value) {\n if (value) {\n const convertedValue = this.afterLoad(value);\n this.form.patchValue(convertedValue, { emitEvent: false });\n this.form.markAsUntouched();\n this.form.markAsPristine();\n }\n }\n optionsGroups = [];\n\n @Output()\n onSave = new EventEmitter();\n\n form = new FormGroup({});\n\n lineBreakHint = this.formProviderService.lineBreakHint;\n\n constructor(private formProviderService: PlatformConfigurationFormProviderService) {\n Object.keys(formProviderService.platformConfigurationFormDefinitions).forEach(fieldId => {\n this.form.addControl(\n fieldId,\n formProviderService.platformConfigurationFormDefinitions[fieldId].control\n );\n });\n }\n\n /**\n * Parses provided object's property values\n * @param options\n */\n parseConfiguration(options: object): void {\n const definitions: object = this.formProviderService.platformConfigurationFormDefinitions;\n Object.entries(options).forEach(([key, rawValue]) => {\n if (\n definitions[key] &&\n (definitions[key].type === 'number' || definitions[key].type === 'boolean')\n ) {\n try {\n options[key] = JSON.parse(rawValue);\n } catch {\n options[key] = rawValue;\n }\n }\n });\n }\n\n /**\n * Parses incoming raw object before it is applied to FormGroup.\n */\n afterLoad(options: object): object {\n this.parseConfiguration(options);\n\n delete options['ui.email.protocolAndEncryption'];\n const emailProtocol = options['email.protocol'];\n const connectionEncrypted = options['email.connection.encrypted'] || false;\n if (emailProtocol === 'smtp') {\n if (connectionEncrypted) {\n options['ui.email.protocolAndEncryption'] = 'SMTP_ENCRYPTED';\n } else {\n options['ui.email.protocolAndEncryption'] = 'SMTP_PLAIN';\n }\n } else if (emailProtocol === 'smtps') {\n options['ui.email.protocolAndEncryption'] = 'SMTPS_ENCRYPTED';\n } else {\n options['ui.email.protocolAndEncryption'] = undefined;\n }\n return options;\n }\n\n /**\n * Translates ui.email.protocolAndEncryption field into\n * separate email.protocol and email.connection.encrypted\n */\n beforeSave(value): object {\n const protocolAndEncryption = value['ui.email.protocolAndEncryption'];\n if (protocolAndEncryption) {\n //email.protocol\n const protocol = protocolAndEncryption.match(/^(.+?)_(.+?)$/)[1];\n value['email.protocol'] = protocol ? protocol.toLowerCase() : protocol;\n\n // email.connection.encrypted\n const encryption = protocolAndEncryption.match(/^(.+?)_(.+?)$/)[2];\n value['email.connection.encrypted'] = encryption === 'ENCRYPTED';\n delete value['ui.email.protocolAndEncryption'];\n }\n\n return value;\n }\n\n getDirtyValues() {\n const dirtyValues = {};\n\n Object.keys(this.form.controls).forEach(key => {\n const currentControl = this.form.controls[key];\n\n if (currentControl.dirty) {\n dirtyValues[key] = currentControl.value;\n }\n });\n\n return dirtyValues;\n }\n\n emitForm() {\n if (this.form.valid) {\n const changedValues = this.getDirtyValues();\n const convertedValue = this.beforeSave(changedValues);\n this.onSave.emit(convertedValue);\n }\n }\n}\n","<form [formGroup]=\"form\">\n <div class=\"row\">\n <div class=\"col-lg-12 col-lg-max\">\n <div class=\"card card--fullpage\">\n <div class=\"card-header separator\">\n <div class=\"card-title\">\n {{ 'Configuration' | translate }}\n </div>\n </div>\n <div class=\"inner-scroll\">\n <div class=\"card-block\">\n <div>\n <fieldset\n class=\"row schema-form-fieldset separator-bottom p-t-24\"\n *ngFor=\"let category of optionsGroups\"\n >\n <div class=\"col-sm-3 col-md-2 p-l-24 p-l-xs-8 p-b-8\">\n <div\n class=\"h4 text-normal text-right text-left-xs\"\n data-cy=\"fieldset--section-title\"\n >\n {{ category.title | translate }}\n </div>\n </div>\n <div class=\"col-sm-9 col-md-8\">\n <div\n class=\"form-group\"\n *ngFor=\"let field of category.items\"\n >\n <ng-container [ngSwitch]=\"field.type\">\n <ng-container *ngSwitchCase=\"'string'\">\n <ng-container\n *ngTemplateOutlet=\"stringTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'number'\">\n <ng-container\n *ngTemplateOutlet=\"numberTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'password'\">\n <ng-container\n *ngTemplateOutlet=\"passwordTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'textarea'\">\n <ng-container\n *ngTemplateOutlet=\"textareaTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'boolean'\">\n <ng-container\n *ngTemplateOutlet=\"booleanTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'select'\">\n <ng-container\n *ngTemplateOutlet=\"selectTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n </fieldset>\n </div>\n </div>\n </div>\n\n <div class=\"card-footer separator\">\n <button\n class=\"btn btn-primary\"\n [title]=\"'Save configuration' | translate\"\n type=\"submit\"\n (click)=\"emitForm()\"\n [disabled]=\"!form.dirty || form.invalid || form.disabled\"\n >\n <span translate>Save</span>\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <ng-template\n #stringTemplate\n let-field\n >\n <c8y-form-group>\n <label\n title=\"{{ field.title | translate }}\"\n [for]=\"field.formId\"\n >\n {{ field.title | translate }}\n </label>\n <input\n class=\"text-truncate form-control\"\n [title]=\"field.title | translate\"\n type=\"text\"\n [id]=\"field.formId\"\n [formControlName]=\"field.formId\"\n [placeholder]=\"field.placeholder || '' | translate : field.placeholderParams\"\n />\n <div\n class=\"help-block\"\n *ngIf=\"field.description\"\n >\n {{ field.description | translate : field.descriptionTranslateParams }}\n </div>\n </c8y-form-group>\n </ng-template>\n\n <ng-template\n #passwordTemplate\n let-field\n >\n <c8y-form-group>\n <label\n title=\"{{ field.title | translate }}\"\n [for]=\"field.formId\"\n >\n {{ field.title | translate }}\n </label>\n <input\n class=\"text-truncate form-control\"\n [title]=\"field.title | translate\"\n type=\"password\"\n autocomplete=\"new-password\"\n [id]=\"field.formId\"\n [formControlName]=\"field.formId\"\n [placeholder]=\"field.placeholder || '' | translate : field.placeholderParams\"\n />\n <div\n class=\"help-block\"\n *ngIf=\"field.description\"\n >\n {{ field.description | translate : field.descriptionTranslateParams }}\n </div>\n </c8y-form-group>\n </ng-template>\n\n <ng-template\n #numberTemplate\n let-field\n >\n <c8y-form-group>\n <label\n title=\"{{ field.title | translate }}\"\n [for]=\"field.formId\"\n >\n {{ field.title | translate }}\n </label>\n <input\n class=\"text-truncate form-control\"\n [title]=\"field.title | translate\"\n type=\"number\"\n [id]=\"field.formId\"\n [formControlName]=\"field.formId\"\n [placeholder]=\"field.placeholder || '' | translate : field.placeholderParams\"\n />\n <div\n class=\"help-block\"\n *ngIf=\"field.description\"\n >\n {{ field.description | translate : field.descriptionTranslateParams }}\n </div>\n </c8y-form-group>\n </ng-template>\n\n <ng-template\n #textareaTemplate\n let-field\n >\n <c8y-form-group>\n <label\n title=\"{{ field.title | translate }}\"\n [for]=\"field.formId\"\n >\n {{ field.title | translate }}\n </label>\n <textarea\n class=\"form-control\"\n [title]=\"field.title | translate\"\n [id]=\"field.formId\"\n [formControlName]=\"field.formId\"\n [placeholder]=\"field.placeholder || '' | translate : field.placeholderParams\"\n [rows]=\"10\"\n ></textarea>\n <div\n class=\"help-block\"\n *ngIf=\"field.description || field.lineBreakHint\"\n >\n <span *ngIf=\"field.description\">\n {{ field.description | translate : field.descriptionTranslateParams }}\n </span>\n <span *ngIf=\"field.description && field.lineBreakHint\"><br /></span>\n <span *ngIf=\"field.lineBreakHint\">{{ lineBreakHint | translate }}</span>\n </div>\n </c8y-form-group>\n </ng-template>\n\n <ng-template\n #booleanTemplate\n let-field\n >\n <c8y-form-group>\n <label\n class=\"c8y-checkbox\"\n title=\"{{ field.title | translate }}\"\n >\n <input\n [title]=\"field.title | translate\"\n type=\"checkbox\"\n [formControlName]=\"field.formId\"\n />\n <span></span>\n <span>{{ field.title | translate }}</span>\n </label>\n\n <div\n class=\"help-block\"\n *ngIf=\"field.description\"\n >\n {{ field.description | translate : field.descriptionTranslateParams }}\n </div>\n </c8y-form-group>\n </ng-template>\n\n <ng-template\n #selectTemplate\n let-field\n >\n <c8y-form-group>\n <label\n title=\"{{ field.title | translate }}\"\n [for]=\"field.formId\"\n >\n <span>{{ field.title | translate }}</span>\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n [id]=\"field.formId\"\n [formControlName]=\"field.formId\"\n >\n <option></option>\n <option\n *ngFor=\"let option of field.options\"\n [value]=\"option.value\"\n >\n {{ option.name | translate }}\n </option>\n </select>\n <span></span>\n </div>\n\n <div\n class=\"help-block\"\n *ngIf=\"field.description\"\n >\n {{ field.description | translate : field.descriptionTranslateParams }}\n </div>\n </c8y-form-group>\n </ng-template>\n</form>\n","import { CommonModule, FormsModule } from '@c8y/ngx-components';\nimport { NgModule } from '@angular/core';\nimport { PlatformConfigurationFormComponent } from './platform-configuration-form.component';\nimport { ReactiveFormsModule } from '@angular/forms';\n\n@NgModule({\n imports: [CommonModule, FormsModule, ReactiveFormsModule, PlatformConfigurationFormComponent],\n exports: [PlatformConfigurationFormComponent]\n})\nexport class PlatformConfigurationModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.PlatformConfigurationFormProviderService","FormsModule"],"mappings":"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"}
|