@c8y/ngx-components 1022.35.1 → 1022.44.7
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/actility-device-registration/actility-device-registration.component.d.ts.map +1 -1
- package/actility-device-registration/actility-device-registration.service.d.ts.map +1 -1
- package/alarms/alarm-details.component.d.ts.map +1 -1
- package/alarms/alarm-info.component.d.ts.map +1 -1
- package/alarms/alarm-severity-to-icon-class.pipe.d.ts +9 -0
- package/alarms/alarm-severity-to-icon-class.pipe.d.ts.map +1 -0
- package/alarms/alarms-icon.component.d.ts.map +1 -1
- package/alarms/alarms-interval-refresh.component.d.ts.map +1 -1
- package/alarms/alarms-list.component.d.ts.map +1 -1
- package/alarms/alarms-view.service.d.ts.map +1 -1
- package/alarms/alarms.component.d.ts.map +1 -1
- package/alarms/alarms.helper.d.ts.map +1 -1
- package/alarms/alarms.model.d.ts.map +1 -1
- package/alarms/cockpit/index.d.ts.map +1 -1
- package/alarms/devicemanagement/index.d.ts.map +1 -1
- package/alarms/index.d.ts +1 -0
- package/alarms/index.d.ts.map +1 -1
- package/asset-properties/asset-properties.model.d.ts +77 -1
- package/asset-properties/asset-properties.model.d.ts.map +1 -1
- package/asset-properties/asset-properties.service.d.ts +17 -0
- package/asset-properties/asset-properties.service.d.ts.map +1 -1
- package/asset-properties/asset-property-list/asset-property-collapse-button-title.pipe.d.ts +14 -0
- package/asset-properties/asset-property-list/asset-property-collapse-button-title.pipe.d.ts.map +1 -0
- package/asset-properties/asset-property-list/asset-property-icon.pipe.d.ts +2 -1
- package/asset-properties/asset-property-list/asset-property-icon.pipe.d.ts.map +1 -1
- package/asset-properties/asset-property-list/asset-property-list.component.d.ts +52 -13
- package/asset-properties/asset-property-list/asset-property-list.component.d.ts.map +1 -1
- package/asset-properties/asset-property-list/asset-property-value.pipe.d.ts +7 -3
- package/asset-properties/asset-property-list/asset-property-value.pipe.d.ts.map +1 -1
- package/asset-properties/asset-property-list/tree-data-source.d.ts +1 -0
- package/asset-properties/asset-property-list/tree-data-source.d.ts.map +1 -1
- package/asset-properties/asset-property-selector-drawer/asset-property-selector-drawer.component.d.ts.map +1 -1
- package/asset-properties/computed-properties-config/computed-properties-config.component.d.ts +39 -0
- package/asset-properties/computed-properties-config/computed-properties-config.component.d.ts.map +1 -0
- package/asset-properties/computed-properties.service.d.ts +27 -0
- package/asset-properties/computed-properties.service.d.ts.map +1 -0
- package/asset-properties/custom-properties-drawer/custom-properties-drawer.component.d.ts +11 -6
- package/asset-properties/custom-properties-drawer/custom-properties-drawer.component.d.ts.map +1 -1
- package/asset-properties/custom-properties-drawer.service.d.ts +2 -1
- package/asset-properties/custom-properties-drawer.service.d.ts.map +1 -1
- package/asset-properties/index.d.ts +1 -0
- package/asset-properties/index.d.ts.map +1 -1
- package/assets-navigator/asset-node.d.ts.map +1 -1
- package/assets-navigator/asset-node.service.d.ts.map +1 -1
- package/assets-navigator/asset-selector/asset-selector-node.component.d.ts.map +1 -1
- package/assets-navigator/asset-selector/asset-selector.model.d.ts +1 -2
- package/assets-navigator/asset-selector/asset-selector.model.d.ts.map +1 -1
- package/assets-navigator/asset-selector/miller-view.component.d.ts +17 -5
- package/assets-navigator/asset-selector/miller-view.component.d.ts.map +1 -1
- package/assets-navigator/asset-selector/unassigned-devices-node.d.ts.map +1 -1
- package/assets-navigator/load-more-node.d.ts.map +1 -1
- package/auth-configuration/basic-settings/login-settings.component.d.ts.map +1 -1
- package/auth-configuration/basic-settings/session-configuration.component.d.ts.map +1 -1
- package/auth-configuration/factories/navigation.factory.d.ts.map +1 -1
- package/auth-configuration/factories/tabs.factory.d.ts.map +1 -1
- package/auth-configuration/sso-configuration/sso-configuration.component.d.ts.map +1 -1
- package/auth-configuration/sso-configuration/template-parts/access-mapping/inventory-roles-modal.component.d.ts.map +1 -1
- package/auth-configuration/sso-configuration/template-parts/signature-configuration.component.d.ts.map +1 -1
- package/auth-configuration/sso-configuration/template-parts/user-data-mapping.component.d.ts.map +1 -1
- package/binary-file-download/binary-file-download.service.d.ts.map +1 -1
- package/bookmarks/bookmarks.component.d.ts.map +1 -1
- package/bookmarks/bookmarks.service.d.ts.map +1 -1
- package/bookmarks/edit-bookmarks/edit-bookmarks.component.d.ts.map +1 -1
- package/branding/dark-theme/dark-theme-tab.factory.d.ts.map +1 -1
- package/branding/extra-css-branding-editor/extra-css-branding-editor-tab.factory.d.ts.map +1 -1
- package/branding/plain-branding-editor/plain-branding-editor-tab.factory.d.ts.map +1 -1
- package/branding/shared/lazy/branding-form/branding-form.component.d.ts.map +1 -1
- package/branding/shared/lazy/branding-import-modal/branding-import-modal.component.d.ts.map +1 -1
- package/branding/shared/lazy/edit-branding-router-outlet/edit-branding-router-outlet.component.d.ts.map +1 -1
- package/cockpit-config/cockpit-config.guard.d.ts.map +1 -1
- package/cockpit-config/cockpit-configuration.component.d.ts.map +1 -1
- package/computed-asset-properties/alarm-count/alarm-count-3-months-computed-property.d.ts +8 -0
- package/computed-asset-properties/alarm-count/alarm-count-3-months-computed-property.d.ts.map +1 -0
- package/computed-asset-properties/alarm-count/alarm-count-config.component.d.ts +26 -0
- package/computed-asset-properties/alarm-count/alarm-count-config.component.d.ts.map +1 -0
- package/computed-asset-properties/alarm-count/alarm-count-today-computed-property.d.ts +8 -0
- package/computed-asset-properties/alarm-count/alarm-count-today-computed-property.d.ts.map +1 -0
- package/computed-asset-properties/alarm-count/alarm-count-value.d.ts +17 -0
- package/computed-asset-properties/alarm-count/alarm-count-value.d.ts.map +1 -0
- package/computed-asset-properties/alarm-count/alarm-count.model.d.ts +6 -0
- package/computed-asset-properties/alarm-count/alarm-count.model.d.ts.map +1 -0
- package/computed-asset-properties/c8y-ngx-components-computed-asset-properties.d.ts.map +1 -0
- package/computed-asset-properties/child-count/child-assets-count-computed-property.d.ts +14 -0
- package/computed-asset-properties/child-count/child-assets-count-computed-property.d.ts.map +1 -0
- package/computed-asset-properties/child-count/child-count-value.d.ts +14 -0
- package/computed-asset-properties/child-count/child-count-value.d.ts.map +1 -0
- package/computed-asset-properties/child-count/child-devices-count-computed-property.d.ts +14 -0
- package/computed-asset-properties/child-count/child-devices-count-computed-property.d.ts.map +1 -0
- package/computed-asset-properties/common/realtime-value-base.d.ts +32 -0
- package/computed-asset-properties/common/realtime-value-base.d.ts.map +1 -0
- package/computed-asset-properties/common/realtime-value-handler.d.ts +19 -0
- package/computed-asset-properties/common/realtime-value-handler.d.ts.map +1 -0
- package/computed-asset-properties/configuration-snapshot/configuration-snapshot-computed-property.d.ts +7 -0
- package/computed-asset-properties/configuration-snapshot/configuration-snapshot-computed-property.d.ts.map +1 -0
- package/computed-asset-properties/configuration-snapshot/configuration-snapshot-config.component.d.ts +21 -0
- package/computed-asset-properties/configuration-snapshot/configuration-snapshot-config.component.d.ts.map +1 -0
- package/computed-asset-properties/configuration-snapshot/configuration-snapshot.model.d.ts +8 -0
- package/computed-asset-properties/configuration-snapshot/configuration-snapshot.model.d.ts.map +1 -0
- package/computed-asset-properties/event-count/event-count-3-months.d.ts +8 -0
- package/computed-asset-properties/event-count/event-count-3-months.d.ts.map +1 -0
- package/computed-asset-properties/event-count/event-count-config.component.d.ts +18 -0
- package/computed-asset-properties/event-count/event-count-config.component.d.ts.map +1 -0
- package/computed-asset-properties/event-count/event-count-today.d.ts +8 -0
- package/computed-asset-properties/event-count/event-count-today.d.ts.map +1 -0
- package/computed-asset-properties/event-count/event-count-value.d.ts +17 -0
- package/computed-asset-properties/event-count/event-count-value.d.ts.map +1 -0
- package/computed-asset-properties/event-count/event-count.model.d.ts +4 -0
- package/computed-asset-properties/event-count/event-count.model.d.ts.map +1 -0
- package/computed-asset-properties/index.d.ts +3 -0
- package/computed-asset-properties/index.d.ts.map +1 -0
- package/computed-asset-properties/last-device-message/last-device-message-computed-property.d.ts +3 -0
- package/computed-asset-properties/last-device-message/last-device-message-computed-property.d.ts.map +1 -0
- package/computed-asset-properties/last-device-message/last-device-message-value.d.ts +13 -0
- package/computed-asset-properties/last-device-message/last-device-message-value.d.ts.map +1 -0
- package/computed-asset-properties/last-measurement/last-measurement-computed-property.d.ts +8 -0
- package/computed-asset-properties/last-measurement/last-measurement-computed-property.d.ts.map +1 -0
- package/computed-asset-properties/last-measurement/last-measurement-config.component.d.ts +48 -0
- package/computed-asset-properties/last-measurement/last-measurement-config.component.d.ts.map +1 -0
- package/computed-asset-properties/last-measurement/last-measurement-value.d.ts +13 -0
- package/computed-asset-properties/last-measurement/last-measurement-value.d.ts.map +1 -0
- package/computed-asset-properties/last-measurement/last-measurement.model.d.ts +28 -0
- package/computed-asset-properties/last-measurement/last-measurement.model.d.ts.map +1 -0
- package/computed-asset-properties/strategies/alarm-count-strategy.d.ts +17 -0
- package/computed-asset-properties/strategies/alarm-count-strategy.d.ts.map +1 -0
- package/computed-asset-properties/strategies/child-count-strategy.d.ts +14 -0
- package/computed-asset-properties/strategies/child-count-strategy.d.ts.map +1 -0
- package/computed-asset-properties/strategies/count-strategy-base.d.ts +12 -0
- package/computed-asset-properties/strategies/count-strategy-base.d.ts.map +1 -0
- package/computed-asset-properties/strategies/event-count-strategy.d.ts +16 -0
- package/computed-asset-properties/strategies/event-count-strategy.d.ts.map +1 -0
- package/computed-asset-properties/strategies/last-device-message-strategy.d.ts +20 -0
- package/computed-asset-properties/strategies/last-device-message-strategy.d.ts.map +1 -0
- package/computed-asset-properties/strategies/last-measurement-strategy.d.ts +16 -0
- package/computed-asset-properties/strategies/last-measurement-strategy.d.ts.map +1 -0
- package/connectivity/abstract-connectivity-node.factory.d.ts.map +1 -1
- package/connectivity/actility/actility-tab.factory.d.ts.map +1 -1
- package/connectivity/sigfox/sigfox-tab.factory.d.ts.map +1 -1
- package/connectivity/sim/sim.module.d.ts.map +1 -1
- package/context-dashboard/cockpit-home-dashboard/cockpit-dashboard.component.d.ts.map +1 -1
- package/context-dashboard/cockpit-home-dashboard/cockpit-dashboard.model.d.ts.map +1 -1
- package/context-dashboard/cockpit-home-dashboard/cockpit-dashboard.module.d.ts.map +1 -1
- package/context-dashboard/context-dashboard.component.d.ts.map +1 -1
- package/context-dashboard/context-dashboard.model.d.ts +16 -0
- package/context-dashboard/context-dashboard.model.d.ts.map +1 -1
- package/context-dashboard/context-dashboard.service.d.ts.map +1 -1
- package/context-dashboard/dashboard-detail.component.d.ts.map +1 -1
- package/context-dashboard/dashboard-detail.service.d.ts.map +1 -1
- package/context-dashboard/dashboard-details-tabs.factory.d.ts.map +1 -1
- package/context-dashboard/dashboard-settings/dashboard-general-settings.component.d.ts.map +1 -1
- package/context-dashboard/dashboard-settings/dashboard-version-history.component.d.ts.map +1 -1
- package/context-dashboard/dashboard-settings/typed-dashboard-settings.component.d.ts.map +1 -1
- package/context-dashboard/device-info-dashboard/device-info-dashboard.component.d.ts.map +1 -1
- package/context-dashboard/device-info-dashboard/device-info-dashboard.module.d.ts.map +1 -1
- package/context-dashboard/device-management-home-dashboard/device-management-home-dashboard.component.d.ts.map +1 -1
- package/context-dashboard/device-management-home-dashboard/device-management-home-dashboard.module.d.ts.map +1 -1
- package/context-dashboard/new-dashboard.guard.d.ts.map +1 -1
- package/context-dashboard/widget-config/appearance-settings.component.d.ts.map +1 -1
- package/context-dashboard/widget-config.service.d.ts +11 -1
- package/context-dashboard/widget-config.service.d.ts.map +1 -1
- package/core/action/action.service.d.ts +1 -1
- package/core/action-bar/action-bar.service.d.ts +1 -1
- package/core/authentication/simplified-auth.service.d.ts +1 -1
- package/core/authentication/simplified-auth.service.d.ts.map +1 -1
- package/core/bottom-drawer/bottom-drawer.component.d.ts +16 -2
- package/core/bottom-drawer/bottom-drawer.component.d.ts.map +1 -1
- package/core/bottom-drawer/bottom-drawer.service.d.ts +13 -5
- package/core/bottom-drawer/bottom-drawer.service.d.ts.map +1 -1
- package/core/breadcrumb/breadcrumb.service.d.ts +1 -1
- package/core/common/extension-hooks.d.ts.map +1 -1
- package/core/common/options.service.d.ts +1 -1
- package/core/common/service-registry.service.d.ts +1 -1
- package/core/common/ui-state.service.d.ts +7 -7
- package/core/common/ui-state.service.d.ts.map +1 -1
- package/core/common/user-preferences/user-preferences.service.d.ts +4 -4
- package/core/common/user-preferences/user-preferences.service.d.ts.map +1 -1
- package/core/dashboard/widgets-dashboard.component.d.ts +9 -1
- package/core/dashboard/widgets-dashboard.component.d.ts.map +1 -1
- package/core/data-grid/action-controls-extension.service.d.ts +1 -1
- package/core/data-grid/filter-chip/filter-mapper.factory.d.ts +1 -1
- package/core/date-picker/date-picker.component.d.ts.map +1 -1
- package/core/docs/docs.models.d.ts +1 -1
- package/core/docs/docs.module.d.ts +1 -1
- package/core/docs/help-and-support-outlet/help-and-support-outlet.module.d.ts +1 -1
- package/core/docs/legal-notices-outlet/legal-notices-outlet.module.d.ts +1 -1
- package/core/docs/support-outlet/support-outlet.component.d.ts +4 -3
- package/core/docs/support-outlet/support-outlet.component.d.ts.map +1 -1
- package/core/docs/support-outlet/support-outlet.module.d.ts +1 -1
- package/core/drawer/drawer.service.d.ts +1 -1
- package/core/dynamic-component/dynamic-component.model.d.ts +18 -4
- package/core/dynamic-component/dynamic-component.model.d.ts.map +1 -1
- package/core/dynamic-forms/i18n/translate.extension.d.ts.map +1 -1
- package/core/feedback-form/feedback-form.component.d.ts +27 -0
- package/core/feedback-form/feedback-form.component.d.ts.map +1 -0
- package/core/feedback-form/feedback-form.model.d.ts +6 -0
- package/core/feedback-form/feedback-form.model.d.ts.map +1 -0
- package/core/feedback-form/index.d.ts +2 -0
- package/core/feedback-form/index.d.ts.map +1 -0
- package/core/i18n/gettext.d.ts +4 -1
- package/core/i18n/gettext.d.ts.map +1 -1
- package/core/i18n/pattern-messages.data.d.ts +61 -0
- package/core/i18n/pattern-messages.data.d.ts.map +1 -1
- package/core/i18n/patterns-message.hook.d.ts +1 -1
- package/core/index.d.ts +1 -0
- package/core/index.d.ts.map +1 -1
- package/core/modal/modal.service.d.ts +0 -1
- package/core/modal/modal.service.d.ts.map +1 -1
- package/core/navigator/navigator-bottom/navigator-bottom.module.d.ts +1 -1
- package/core/navigator/navigator-top/navigator-top.module.d.ts +1 -1
- package/core/navigator/navigator.module.d.ts +1 -1
- package/core/navigator/navigator.service.d.ts +1 -1
- package/core/plugins/index.d.ts +1 -0
- package/core/plugins/index.d.ts.map +1 -1
- package/core/plugins/plugins-injection-token.d.ts +14 -0
- package/core/plugins/plugins-injection-token.d.ts.map +1 -0
- package/core/plugins/plugins-loader.service.d.ts +7 -21
- package/core/plugins/plugins-loader.service.d.ts.map +1 -1
- package/core/plugins/plugins-resolve.service.d.ts +1 -0
- package/core/plugins/plugins-resolve.service.d.ts.map +1 -1
- package/core/preview-feature/preview-feature.component.d.ts.map +1 -1
- package/core/preview-feature/preview-feature.service.d.ts +1 -1
- package/core/provider-configuration/provider-configuration-hook.d.ts +1 -1
- package/core/query-param-handler/index.d.ts +1 -1
- package/core/query-param-handler/query-param-bottom-drawer.service.d.ts +1 -1
- package/core/query-param-handler/query-param-handler.service.d.ts +1 -1
- package/core/query-param-handler/query-param-modal-handler.service.d.ts +1 -1
- package/core/router/router.service.d.ts +1 -1
- package/core/search/search.service.d.ts +1 -1
- package/core/stepper/stepper.service.d.ts +1 -1
- package/core/tabs/tab.component.d.ts +2 -2
- package/core/tabs/tab.component.d.ts.map +1 -1
- package/core/tabs/tab.model.d.ts +2 -2
- package/core/tabs/tab.model.d.ts.map +1 -1
- package/core/tabs/tabs.service.d.ts +1 -1
- package/core/tabs/tabs.service.d.ts.map +1 -1
- package/core/ui-settings/ui-settings.module.d.ts +1 -1
- package/core/user/change-current-user-password.service.d.ts +10 -0
- package/core/user/change-current-user-password.service.d.ts.map +1 -0
- package/core/user/index.d.ts +1 -0
- package/core/user/index.d.ts.map +1 -1
- package/core/user/user-details-drawer/user-details-drawer.module.d.ts +1 -1
- package/core/user/user-menu.service.d.ts +1 -1
- package/core/user/user.module.d.ts +1 -1
- package/core/version/version.model.d.ts +1 -1
- package/core/version/version.module.d.ts +1 -1
- package/core/wizard/wizard.model.d.ts +1 -1
- package/dashboard-details-advanced-tab/advanced-tab.factory.d.ts.map +1 -1
- package/dashboard-details-advanced-tab/assign-widget-assets/assign-widget-asset-modal.component.d.ts.map +1 -1
- package/dashboard-details-advanced-tab/dashboard-json-editor/dashboard-json-editor.component.d.ts.map +1 -1
- package/dashboard-details-advanced-tab/dashboard-json-editor/import-export-widgets.service.d.ts.map +1 -1
- package/dashboard-manager/dashboard-manager-tabs.factory.d.ts.map +1 -1
- package/dashboard-manager/dashboard-manager.service.d.ts.map +1 -1
- package/dashboard-manager/devicemanagement/index.d.ts +1 -1
- package/dashboard-manager/type-dashboard-target-assets-grid/type-dashboard-target-assets-grid.component.d.ts.map +1 -1
- package/dashboard-manager/type-dashboard-target-assets-modal/type-dashboard-target-assets-modal.component.d.ts.map +1 -1
- package/dashboard-manager/type-dashboards-list/device-type-value.grid-column.d.ts.map +1 -1
- package/dashboard-manager/type-dashboards-list/type-dashboards-list.component.d.ts.map +1 -1
- package/data-grid-columns/asset-type/asset-type-grid-column.d.ts.map +1 -1
- package/data-grid-columns/asset-type/asset-type.cell-renderer.component.d.ts.map +1 -1
- package/datapoint-explorer/datapoint-explorer-navigation-factory.d.ts.map +1 -1
- package/datapoint-explorer/devicemanagement/index.d.ts +3 -0
- package/datapoint-explorer/devicemanagement/index.d.ts.map +1 -1
- package/datapoint-explorer/view/configuration/workspace-configuration.component.d.ts +4 -2
- package/datapoint-explorer/view/configuration/workspace-configuration.component.d.ts.map +1 -1
- package/datapoint-explorer/view/create-new-report-modal/create-new-report-modal.component.d.ts.map +1 -1
- package/datapoint-explorer/view/datapoint-explorer.model.d.ts +1 -0
- package/datapoint-explorer/view/datapoint-explorer.model.d.ts.map +1 -1
- package/datapoint-explorer/view/index.d.ts +3 -0
- package/datapoint-explorer/view/index.d.ts.map +1 -1
- package/datapoint-explorer/view/send-as-widget-to-dashboard-modal/send-as-widget-to-dashboard-modal.component.d.ts.map +1 -1
- package/datapoint-explorer/view/send-as-widget-to-report-modal/send-as-widget-to-report-modal.component.d.ts.map +1 -1
- package/datapoint-library/datapoint-library.module.d.ts.map +1 -1
- package/datapoint-library/details/datapoint-library-details.component.d.ts +1 -2
- package/datapoint-library/details/datapoint-library-details.component.d.ts.map +1 -1
- package/datapoint-library/list/datapoint-library-list.component.d.ts.map +1 -1
- package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form-validation.service.d.ts.map +1 -1
- package/datapoint-selector/datapoint-selector-modal/datapoint-selector-modal.component.d.ts.map +1 -1
- package/datapoint-selector/datapoint-template-popover/datapoint-template-popover.component.d.ts.map +1 -1
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.d.ts.map +1 -1
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.service.d.ts.map +1 -1
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-time-range/datapoints-exports-selector-time-range.component.d.ts.map +1 -1
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-modal.component.d.ts.map +1 -1
- package/datapoints-export-selector/datapoints-export-selector.model.d.ts.map +1 -1
- package/default-subscriptions/default-subscriptions-navigation.factory.d.ts.map +1 -1
- package/default-subscriptions/default-subscriptions.component.d.ts.map +1 -1
- package/device-grid/columns/alarms.cell-renderer.component.d.ts.map +1 -1
- package/device-grid/columns/alarms.device-grid-column.d.ts.map +1 -1
- package/device-grid/columns/group.device-grid-column.d.ts.map +1 -1
- package/device-grid/columns/imei.device-grid-column.d.ts.map +1 -1
- package/device-grid/columns/model.device-grid-column.d.ts.map +1 -1
- package/device-grid/columns/name.device-grid-column.d.ts.map +1 -1
- package/device-grid/columns/registration-date.device-grid-column.d.ts.map +1 -1
- package/device-grid/columns/serial-number.device-grid-column.d.ts.map +1 -1
- package/device-grid/columns/status.device-grid-column.d.ts.map +1 -1
- package/device-grid/columns/system-id.device-grid-column.d.ts.map +1 -1
- package/device-grid/columns/type.device-grid-column.d.ts.map +1 -1
- package/device-grid/device-grid.component.d.ts.map +1 -1
- package/device-grid/device-grid.service.d.ts.map +1 -1
- package/device-list/add-smart-group.component.d.ts.map +1 -1
- package/device-list/device-list-navigation.factory.d.ts.map +1 -1
- package/device-list/devices.breadcrumb-factory.d.ts.map +1 -1
- package/device-map/device-map-navigation.factory.d.ts.map +1 -1
- package/device-profile/add-device-profile.component.d.ts.map +1 -1
- package/device-profile/device-profile-list.component.d.ts.map +1 -1
- package/device-profile/device-profile-navigation.factory.d.ts.map +1 -1
- package/device-profile/device-profile.component.d.ts.map +1 -1
- package/device-profile/device-profile.service.d.ts.map +1 -1
- package/device-profile/device-tab-profile/device-tab-profile.component.d.ts.map +1 -1
- package/device-profile/select-configuration-modal.component.d.ts.map +1 -1
- package/device-protocols/device-protocols.guard.d.ts.map +1 -1
- package/device-provisioned-certificates/device-provisioned-certificates.module.d.ts.map +1 -1
- package/device-provisioned-certificates/device-tab-provisioned-certificates.component.d.ts.map +1 -1
- package/device-shell/device-shell.module.d.ts.map +1 -1
- package/device-shell/shared/device-shell.service.d.ts.map +1 -1
- package/device-shell/shell/shell.component.d.ts.map +1 -1
- package/diagnostics/diagnostics.module.d.ts.map +1 -1
- package/diagnostics/diagnostics.service.d.ts.map +1 -1
- package/echart/services/echarts-options.service.d.ts +2 -3
- package/echart/services/echarts-options.service.d.ts.map +1 -1
- package/ecosystem/application-plugins/application-plugins.component.d.ts.map +1 -1
- package/ecosystem/application-plugins/application-plugins.module.d.ts.map +1 -1
- package/ecosystem/application-plugins/apps-to-update-remotes-select.component.d.ts.map +1 -1
- package/ecosystem/application-plugins/only-latest-filter/only-latest-filter.component.d.ts.map +1 -1
- package/ecosystem/application-plugins/orphaned-status-cell-renderer.component.d.ts.map +1 -1
- package/ecosystem/application-plugins/plugin-list.service.d.ts.map +1 -1
- package/ecosystem/application-plugins/update-plugin-of-app/update-plugin-of-app.component.d.ts.map +1 -1
- package/ecosystem/application-properties/application-properties.component.d.ts.map +1 -1
- package/ecosystem/application-properties/subscription-modal/subscription-modal.component.d.ts.map +1 -1
- package/ecosystem/ecosystem-tabs.factory.d.ts.map +1 -1
- package/ecosystem/license-confirm/license-confirm-modal.component.d.ts.map +1 -1
- package/ecosystem/license-confirm/license-view.component.d.ts.map +1 -1
- package/ecosystem/microservices/add-microservice.component.d.ts.map +1 -1
- package/ecosystem/packages/add-package.component.d.ts.map +1 -1
- package/ecosystem/packages/deploy-application/deploy-application.component.d.ts.map +1 -1
- package/ecosystem/packages/package-list/packages-list.component.d.ts.map +1 -1
- package/ecosystem/packages/package-versions/package-versions-list/package-versions-list.component.d.ts.map +1 -1
- package/ecosystem/packages/package-versions/packages-versions.component.d.ts.map +1 -1
- package/ecosystem/plugin-setup-stepper/plugin-setup-stepper.module.d.ts.map +1 -1
- package/ecosystem/shared/add-application.component.d.ts.map +1 -1
- package/ecosystem/shared/application-card.component.d.ts.map +1 -1
- package/ecosystem/shared/archived-filter/archived-filter.component.d.ts.map +1 -1
- package/ecosystem/shared/ecosystem.constants.d.ts.map +1 -1
- package/ecosystem/shared/ecosystem.service.d.ts.map +1 -1
- package/ecosystem/shared/package-availability.service.d.ts.map +1 -1
- package/ecosystem/shared/package-version-select/package-version-select.component.d.ts.map +1 -1
- package/ecosystem/shared/upload-archive.component.d.ts.map +1 -1
- package/editor/editor.component.d.ts +16 -0
- package/editor/editor.component.d.ts.map +1 -1
- package/exports/index.d.ts +1 -1
- package/exports/index.d.ts.map +1 -1
- package/exports/list/exports-grid.service.d.ts.map +1 -1
- package/exports/list/exports-list/exports-list.component.d.ts.map +1 -1
- package/fesm2022/c8y-ngx-components-actility-device-registration.mjs +2 -1
- package/fesm2022/c8y-ngx-components-actility-device-registration.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs +8 -7
- package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs +2 -1
- package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-alarms-devicemanagement.mjs +2 -1
- package/fesm2022/c8y-ngx-components-alarms-devicemanagement.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-alarms.mjs +40 -2
- package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-asset-properties.mjs +608 -97
- package/fesm2022/c8y-ngx-components-asset-properties.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-asset-property-grid.component-CRnyUbyz.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-assets-navigator.mjs +70 -23
- package/fesm2022/c8y-ngx-components-assets-navigator.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-auth-configuration.mjs +2 -1
- package/fesm2022/c8y-ngx-components-auth-configuration.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-binary-file-download.mjs +2 -1
- package/fesm2022/c8y-ngx-components-binary-file-download.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-bookmarks.mjs +2 -1
- package/fesm2022/c8y-ngx-components-bookmarks.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-branding-dark-theme.mjs +2 -1
- package/fesm2022/c8y-ngx-components-branding-dark-theme.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-branding-extra-css-branding-editor.mjs +3 -3
- package/fesm2022/c8y-ngx-components-branding-extra-css-branding-editor.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-branding-plain-branding-editor.mjs +2 -1
- package/fesm2022/c8y-ngx-components-branding-plain-branding-editor.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs +22 -12
- package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-child-devices.mjs +2 -1
- package/fesm2022/c8y-ngx-components-child-devices.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-cockpit-config.mjs +2 -1
- package/fesm2022/c8y-ngx-components-cockpit-config.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-computed-asset-properties-alarm-count-config.component-BOpIFCYh.mjs +68 -0
- package/fesm2022/c8y-ngx-components-computed-asset-properties-alarm-count-config.component-BOpIFCYh.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-D8otkLI8.mjs +73 -0
- package/fesm2022/c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-D8otkLI8.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-computed-asset-properties-event-count-config.component-AVm6qa9k.mjs +44 -0
- package/fesm2022/c8y-ngx-components-computed-asset-properties-event-count-config.component-AVm6qa9k.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-computed-asset-properties-last-measurement-config.component-CtUoKGuU.mjs +91 -0
- package/fesm2022/c8y-ngx-components-computed-asset-properties-last-measurement-config.component-CtUoKGuU.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-computed-asset-properties.mjs +643 -0
- package/fesm2022/c8y-ngx-components-computed-asset-properties.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-connectivity.mjs +2 -1
- package/fesm2022/c8y-ngx-components-connectivity.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-context-dashboard-cockpit-home-dashboard.mjs +2 -1
- package/fesm2022/c8y-ngx-components-context-dashboard-cockpit-home-dashboard.mjs.map +1 -1
- package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-general-settings.component-DjlpSztw.mjs → c8y-ngx-components-context-dashboard-dashboard-general-settings.component-BkcNSexF.mjs} +3 -2
- package/fesm2022/c8y-ngx-components-context-dashboard-dashboard-general-settings.component-BkcNSexF.mjs.map +1 -0
- package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-version-history.component-B2zLhv0X.mjs → c8y-ngx-components-context-dashboard-dashboard-version-history.component-D9W68e7h.mjs} +3 -2
- package/fesm2022/c8y-ngx-components-context-dashboard-dashboard-version-history.component-D9W68e7h.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-context-dashboard.mjs +45 -12
- 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-CwfVxTSx.mjs → c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-D0lATUjO.mjs} +12 -8
- package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-D0lATUjO.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab.mjs +4 -3
- package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-dashboard-manager.mjs +2 -1
- package/fesm2022/c8y-ngx-components-dashboard-manager.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-data-broker.mjs +2 -1
- package/fesm2022/c8y-ngx-components-data-broker.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-data-grid-columns-asset-type.mjs +2 -1
- package/fesm2022/c8y-ngx-components-data-grid-columns-asset-type.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-data-grid-columns.mjs +2 -1
- package/fesm2022/c8y-ngx-components-data-grid-columns.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoint-explorer-devicemanagement.mjs +38 -9
- package/fesm2022/c8y-ngx-components-datapoint-explorer-devicemanagement.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs +58 -53
- package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs +2 -1
- package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoint-library-details.mjs +2 -1
- package/fesm2022/c8y-ngx-components-datapoint-library-details.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoint-library-list.mjs +2 -1
- package/fesm2022/c8y-ngx-components-datapoint-library-list.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoint-library.mjs +2 -1
- package/fesm2022/c8y-ngx-components-datapoint-library.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +2 -1
- package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs +2 -1
- package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-default-subscriptions.mjs +2 -1
- package/fesm2022/c8y-ngx-components-default-subscriptions.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-device-grid.mjs +3 -3
- package/fesm2022/c8y-ngx-components-device-grid.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-device-list.mjs +2 -1
- package/fesm2022/c8y-ngx-components-device-list.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-device-map.mjs +2 -1
- package/fesm2022/c8y-ngx-components-device-map.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-device-profile.mjs +2 -1
- package/fesm2022/c8y-ngx-components-device-profile.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-device-protocol-object-mappings.mjs +3 -2
- package/fesm2022/c8y-ngx-components-device-protocol-object-mappings.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-device-protocols.mjs +2 -1
- package/fesm2022/c8y-ngx-components-device-protocols.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs +2 -1
- package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-device-shell.mjs +2 -1
- package/fesm2022/c8y-ngx-components-device-shell.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-diagnostics.mjs +2 -1
- package/fesm2022/c8y-ngx-components-diagnostics.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-echart.mjs +6 -8
- package/fesm2022/c8y-ngx-components-echart.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs +2 -1
- package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-ecosystem-license-confirm.mjs +2 -1
- package/fesm2022/c8y-ngx-components-ecosystem-license-confirm.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-ecosystem-plugin-setup-stepper.mjs +2 -1
- package/fesm2022/c8y-ngx-components-ecosystem-plugin-setup-stepper.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs +2 -1
- package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-ecosystem.mjs +2 -1
- package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-editor.mjs +39 -1
- package/fesm2022/c8y-ngx-components-editor.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-events.mjs +1 -1
- package/fesm2022/c8y-ngx-components-events.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-exports-list.mjs +2 -1
- package/fesm2022/c8y-ngx-components-exports-list.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-exports.mjs +2 -1
- package/fesm2022/c8y-ngx-components-exports.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-file-preview.mjs +2 -1
- package/fesm2022/c8y-ngx-components-file-preview.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-files-repository.mjs +2 -1
- package/fesm2022/c8y-ngx-components-files-repository.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-icon-selector.mjs +2 -1
- package/fesm2022/c8y-ngx-components-icon-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-location.mjs +2 -1
- package/fesm2022/c8y-ngx-components-location.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-loriot-device-registration.mjs +2 -1
- package/fesm2022/c8y-ngx-components-loriot-device-registration.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-map.mjs +2 -1
- package/fesm2022/c8y-ngx-components-map.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-messaging-management.mjs +2 -1
- package/fesm2022/c8y-ngx-components-messaging-management.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-bulk-operation-list-item.mjs +2 -1
- package/fesm2022/c8y-ngx-components-operations-bulk-operation-list-item.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs +2 -1
- package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-bulk-operation-stepper.mjs +2 -1
- package/fesm2022/c8y-ngx-components-operations-bulk-operation-stepper.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-bulk-single-operations-list.mjs +2 -1
- 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 +2 -1
- package/fesm2022/c8y-ngx-components-operations-create-bulk-operation-details.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-grid-columns.mjs +2 -1
- package/fesm2022/c8y-ngx-components-operations-grid-columns.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-operations-list-item-details.mjs +2 -1
- package/fesm2022/c8y-ngx-components-operations-operations-list-item-details.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-operations-list.mjs +2 -1
- package/fesm2022/c8y-ngx-components-operations-operations-list.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-shared.mjs +2 -1
- package/fesm2022/c8y-ngx-components-operations-shared.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs +4 -4
- 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 +4 -4
- 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 +4 -4
- 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 +4 -4
- package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations.mjs +2 -1
- package/fesm2022/c8y-ngx-components-operations.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-pending-mo-request.mjs +2 -1
- package/fesm2022/c8y-ngx-components-pending-mo-request.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-platform-configuration.mjs +2 -1
- package/fesm2022/c8y-ngx-components-platform-configuration.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs +2 -1
- package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-protocol-opcua-mappings.mjs +1 -1
- package/fesm2022/c8y-ngx-components-protocol-opcua-mappings.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-protocol-opcua.mjs +2 -1
- package/fesm2022/c8y-ngx-components-protocol-opcua.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-register-device.mjs +2 -1
- package/fesm2022/c8y-ngx-components-register-device.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs +3 -3
- package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-remote-access-passthrough.mjs +2 -1
- package/fesm2022/c8y-ngx-components-remote-access-passthrough.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-remote-access-shared.mjs +2 -1
- package/fesm2022/c8y-ngx-components-remote-access-shared.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-remote-access-ssh.mjs +2 -1
- package/fesm2022/c8y-ngx-components-remote-access-ssh.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-remote-access-telnet.mjs +2 -1
- package/fesm2022/c8y-ngx-components-remote-access-telnet.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs +3 -3
- package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-remote-access-vnc.mjs +2 -1
- package/fesm2022/c8y-ngx-components-remote-access-vnc.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-replace-device-replace-device-wizard.mjs +2 -1
- package/fesm2022/c8y-ngx-components-replace-device-replace-device-wizard.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-replace-device.mjs +2 -1
- package/fesm2022/c8y-ngx-components-replace-device.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-report-dashboard.mjs +2 -1
- package/fesm2022/c8y-ngx-components-report-dashboard.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-reports.mjs +2 -1
- package/fesm2022/c8y-ngx-components-reports.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-repository-configuration.mjs +2 -1
- package/fesm2022/c8y-ngx-components-repository-configuration.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-repository-firmware.mjs +2 -1
- package/fesm2022/c8y-ngx-components-repository-firmware.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-repository-shared.mjs +3 -2
- package/fesm2022/c8y-ngx-components-repository-shared.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-repository-software.mjs +2 -1
- package/fesm2022/c8y-ngx-components-repository-software.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-search.mjs +2 -1
- package/fesm2022/c8y-ngx-components-search.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-sensor-phone-sensor-phone-modal.mjs +2 -1
- package/fesm2022/c8y-ngx-components-sensor-phone-sensor-phone-modal.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-sensor-phone.mjs +3 -2
- package/fesm2022/c8y-ngx-components-sensor-phone.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-services-service-command-tab.mjs +2 -1
- package/fesm2022/c8y-ngx-components-services-service-command-tab.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-services-shared.mjs +1 -1
- package/fesm2022/c8y-ngx-components-services-shared.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-services.mjs +2 -1
- package/fesm2022/c8y-ngx-components-services.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-sigfox-device-registration.mjs +2 -1
- package/fesm2022/c8y-ngx-components-sigfox-device-registration.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-sms-gateway.mjs +3 -2
- package/fesm2022/c8y-ngx-components-sms-gateway.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-sub-assets.mjs +13 -9
- package/fesm2022/c8y-ngx-components-sub-assets.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-tenants.mjs +37 -37
- package/fesm2022/c8y-ngx-components-tenants.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-tracking.mjs +2 -1
- package/fesm2022/c8y-ngx-components-tracking.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs +5 -5
- package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-trusted-certificates.mjs +2 -1
- package/fesm2022/c8y-ngx-components-trusted-certificates.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-upgrade.mjs +10 -3
- package/fesm2022/c8y-ngx-components-upgrade.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-user-roles.mjs +2 -1
- package/fesm2022/c8y-ngx-components-user-roles.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-all-critical-alarms.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-all-critical-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-recent-alarms.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-recent-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-applications.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-applications.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-asset-notes.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-asset-notes.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-cockpit-legacy-welcome.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-cockpit-legacy-welcome.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-cockpit-welcome.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-cockpit-welcome.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-device-control-message.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-device-control-message.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-device-management-welcome.mjs +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-device-management-welcome.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-help-and-service.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-help-and-service.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs +3 -3
- package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-image.mjs +3 -6
- package/fesm2022/c8y-ngx-components-widgets-definitions-image.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-info-gauge.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-info-gauge.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-kpi.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-kpi.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-linear-gauge.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-linear-gauge.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-map.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-map.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-markdown.mjs +2 -2
- package/fesm2022/c8y-ngx-components-widgets-definitions-markdown.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-quick-links.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-quick-links.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-radial-gauge.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-radial-gauge.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-silo.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-silo.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-three-d-rotation.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-three-d-rotation.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-asset-notes.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-asset-notes.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-welcome.mjs +9 -6
- package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-welcome.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-device-control-message.mjs +2 -1
- 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 +2 -1
- 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 +2 -1
- 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 +13 -8
- package/fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-image.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-image.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-markdown.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-markdown.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-quick-links.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-quick-links.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-import-export-config.mjs +3 -10
- package/fesm2022/c8y-ngx-components-widgets-import-export-config.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components.mjs +789 -531
- package/fesm2022/c8y-ngx-components.mjs.map +1 -1
- package/file-preview/file-preview.component.d.ts.map +1 -1
- package/files-repository/files-repository-navigation.factory.d.ts.map +1 -1
- package/files-repository/files-repository-upload.component.d.ts.map +1 -1
- package/files-repository/files-repository.component.d.ts.map +1 -1
- package/files-repository/files-repository.service.d.ts +1 -2
- package/files-repository/files-repository.service.d.ts.map +1 -1
- package/icon-selector/icon-selector-modal/icon-selector-modal.component.d.ts.map +1 -1
- package/icon-selector/icon-selector.component.d.ts.map +1 -1
- package/locales/de.po +105 -12
- package/locales/es.po +105 -12
- package/locales/fr.po +105 -12
- package/locales/ja_JP.po +99 -12
- package/locales/ko.po +104 -12
- package/locales/locales.pot +97 -12
- package/locales/nl.po +105 -12
- package/locales/pl.po +105 -12
- package/locales/pt_BR.po +105 -12
- package/locales/zh_CN.po +104 -12
- package/locales/zh_TW.po +104 -12
- package/location/location-tab.factory.d.ts.map +1 -1
- package/location/location.component.d.ts.map +1 -1
- package/loriot-device-registration/loriot-device-registration.component.d.ts.map +1 -1
- package/loriot-device-registration/loriot-provider.service.d.ts.map +1 -1
- package/map/map.component.d.ts.map +1 -1
- package/messaging-management/messaging/namespace-list/namespace-item/namespace-item-card/namespace-item-card.component.d.ts.map +1 -1
- package/messaging-management/messaging/shared/usage/usage.component.d.ts.map +1 -1
- package/messaging-management/messaging/topic/topic-list-view.component.d.ts.map +1 -1
- package/messaging-management/messaging/topic/topic-subscribers-view/topic-subscribers-data-grid.service.d.ts.map +1 -1
- package/messaging-management/messaging/topic/topic-subscribers-view/topic-subscribers-view.component.d.ts.map +1 -1
- package/messaging-management/messaging/topic/topics-data-grid.service.d.ts.map +1 -1
- package/messaging-management/navigator/messaging-navigator-factory.d.ts.map +1 -1
- package/messaging-management/navigator/topic-details-tab.factory.d.ts.map +1 -1
- package/operations/bulk-operation-list-item/bulk-operation-list-item.component.d.ts.map +1 -1
- package/operations/bulk-operation-list-item/modals/bulk-operations-reschedule-modal.component.d.ts.map +1 -1
- package/operations/bulk-operation-scheduler/operation-scheduler.component.d.ts.map +1 -1
- package/operations/bulk-operation-stepper/bulk-operation-stepper.component.d.ts.map +1 -1
- package/operations/bulk-single-operations-list/single-operation-item.component.d.ts.map +1 -1
- package/operations/bulk-single-operations-list/single-operations-list.component.d.ts.map +1 -1
- package/operations/factories/bulk-operations-tab.factory.d.ts.map +1 -1
- package/operations/grid-columns/creation-time.grid-column.d.ts.map +1 -1
- package/operations/grid-columns/device.grid-column.d.ts.map +1 -1
- package/operations/grid-columns/failure-reason.grid-column.d.ts.map +1 -1
- package/operations/grid-columns/status.grid-column.d.ts.map +1 -1
- package/operations/operations-list/device-control.feature.d.ts.map +1 -1
- package/operations/operations-list/operations-list-item.component.d.ts.map +1 -1
- package/operations/operations-list/operations-list.component.d.ts.map +1 -1
- package/operations/operations-list/single-operations-tab.factory.d.ts.map +1 -1
- package/operations/operations-list-item-details/operation-details-tabs.component.d.ts.map +1 -1
- package/operations/shared/nav.factory.d.ts.map +1 -1
- package/operations/shared/operations.service.d.ts.map +1 -1
- package/operations/stepper-bulk-type-configuration/stepper-bulk-type-configuration.component.d.ts.map +1 -1
- package/operations/stepper-bulk-type-device-profile/stepper-bulk-type-device-profile.component.d.ts.map +1 -1
- package/operations/stepper-bulk-type-firmware/stepper-bulk-type-firmware.component.d.ts.map +1 -1
- package/operations/stepper-bulk-type-software/select-software-step.component.d.ts.map +1 -1
- package/operations/stepper-bulk-type-software/stepper-bulk-type-software.component.d.ts.map +1 -1
- package/package.json +1 -1
- package/pending-mo-request/pending-mo-request-interceptor.d.ts.map +1 -1
- package/pending-mo-request/pending-mo-request.service.d.ts.map +1 -1
- package/platform-configuration/platform-configuration-form-provider.service.d.ts.map +1 -1
- package/protocol-lpwan/lpwan-protocol.module.d.ts.map +1 -1
- package/protocol-lpwan/lpwan-set-connections.component.d.ts.map +1 -1
- package/protocol-lpwan/lpwan-set-device-protocol.component.d.ts.map +1 -1
- package/protocol-lpwan/multiple-lns-connectors/actility-multiple-lns-connector.component.d.ts.map +1 -1
- package/protocol-lpwan/multiple-lns-connectors/connection-info-with-download-csv.component.d.ts.map +1 -1
- package/protocol-lpwan/multiple-lns-connectors/loriot/loriot-multiple-lns-connector.component.d.ts.map +1 -1
- package/protocol-lpwan/multiple-lns-connectors/no-connections-found.component.d.ts.map +1 -1
- package/protocol-lpwan/multiple-lns-connectors/sigfox-multiple-lns-connector.component.d.ts.map +1 -1
- package/protocol-opcua/opcua-address-space.component.d.ts.map +1 -1
- package/protocol-opcua/opcua-device-protocol-detail.component.d.ts.map +1 -1
- package/protocol-opcua/opcua-server-config.component.d.ts.map +1 -1
- package/protocol-opcua/opcua-servers.component.d.ts.map +1 -1
- package/register-device/bulk/bulk-device-registration-modal.component.d.ts.map +1 -1
- package/register-device/device-registration-view.component.d.ts.map +1 -1
- package/register-device/extensible/base-extensible-device-registration.service.d.ts.map +1 -1
- package/register-device/extensible/bulk/extensible-bulk-device-registration-modal.component.d.ts.map +1 -1
- package/register-device/extensible/bulk/extensible-bulk-device-registration.service.d.ts.map +1 -1
- package/register-device/extensible/single/extensible-device-registration-modal.component.d.ts.map +1 -1
- package/register-device/extensible/single/extensible-device-registration-stepper.component.d.ts.map +1 -1
- package/register-device/extensible/single/extensible-device-registration.service.d.ts.map +1 -1
- package/register-device/general/general-device-registration.component.d.ts.map +1 -1
- package/register-device/register-device-navigation.factory.d.ts.map +1 -1
- package/register-device/register-device.service.d.ts.map +1 -1
- package/remote-access/configurations/remote-access-configuration-list/remote-access-configuration-list.component.d.ts.map +1 -1
- package/remote-access/configurations/remote-access-pick-protocol-modal/remote-access-pick-protocol-modal.component.d.ts.map +1 -1
- package/remote-access/passthrough/index.d.ts +1 -1
- package/remote-access/passthrough/index.d.ts.map +1 -1
- package/remote-access/shared/remote-access-basic-endpoint-modal/remote-access-basic-endpoint-modal.component.d.ts.map +1 -1
- package/remote-access/ssh/index.d.ts.map +1 -1
- package/remote-access/telnet/index.d.ts.map +1 -1
- package/remote-access/vnc/index.d.ts.map +1 -1
- package/replace-device/replace-device-grid-action.factory.d.ts.map +1 -1
- package/replace-device/replace-device-wizard/replace-device-wizard.component.d.ts.map +1 -1
- package/replace-device/replace-device-wizard/replace-device-wizard.service.d.ts.map +1 -1
- package/replace-device/replace-device.service.d.ts.map +1 -1
- package/report-dashboard/report-dashboard-list.component.d.ts.map +1 -1
- package/report-dashboard/report-dashboard-navigation.factory.d.ts.map +1 -1
- package/reports/export-schedules.component.d.ts.map +1 -1
- package/repository/configuration/device-tab/configuration-repository-device-tab.module.d.ts.map +1 -1
- package/repository/configuration/device-tab/save-to-repository.component.d.ts.map +1 -1
- package/repository/configuration/device-tab/text-based-configuration.component.d.ts.map +1 -1
- package/repository/configuration/list/configuration-detail.component.d.ts.map +1 -1
- package/repository/configuration/list/configuration-list.component.d.ts.map +1 -1
- package/repository/configuration/list/configuration-repository-navigation-factory.d.ts.map +1 -1
- package/repository/firmware/device-tab/firmware-device-tab.component.d.ts.map +1 -1
- package/repository/firmware/device-tab/firmware-repository-device-tab.module.d.ts.map +1 -1
- package/repository/firmware/list/add-firmware-modal.component.d.ts.map +1 -1
- package/repository/firmware/list/add-firmware-patch-modal.component.d.ts.map +1 -1
- package/repository/firmware/list/firmware-details.component.d.ts.map +1 -1
- package/repository/firmware/list/firmware-list.component.d.ts.map +1 -1
- package/repository/firmware/list/firmware-repository-navigation-factory.d.ts.map +1 -1
- package/repository/shared/columns/description.grid-column.d.ts.map +1 -1
- package/repository/shared/columns/device-type.grid-column.d.ts.map +1 -1
- package/repository/shared/columns/file.grid-column.d.ts.map +1 -1
- package/repository/shared/columns/name.grid-column.d.ts.map +1 -1
- package/repository/shared/columns/type.filtering-form-renderer.component.d.ts.map +1 -1
- package/repository/shared/columns/type.grid-column.d.ts.map +1 -1
- package/repository/shared/columns/versions.grid-column.d.ts.map +1 -1
- package/repository/shared/repository.service.d.ts.map +1 -1
- package/repository/shared/select-modal/repository-select-modal.component.d.ts +1 -1
- package/repository/shared/select-modal/repository-select-modal.component.d.ts.map +1 -1
- package/repository/shared/software-type/software-type.component.d.ts.map +1 -1
- package/repository/software/device-tab/installed-software.component.d.ts.map +1 -1
- package/repository/software/device-tab/software-repository-device-tab.module.d.ts.map +1 -1
- package/repository/software/list/add-software-modal.component.d.ts.map +1 -1
- package/repository/software/list/software-details.component.d.ts.map +1 -1
- package/repository/software/list/software-list.component.d.ts.map +1 -1
- package/repository/software/list/software-repository-navigation-factory.d.ts.map +1 -1
- package/search/columns/asset-type-search-grid-column.d.ts.map +1 -1
- package/search/search-grid.component.d.ts.map +1 -1
- package/search/search-results.component.d.ts.map +1 -1
- package/sensor-phone/connect-smartphone.factory.d.ts.map +1 -1
- package/sensor-phone/sensor-phone-modal/sensor-phone-modal.component.d.ts.map +1 -1
- package/sensor-phone/sensor-phone-modal/sensor-phone.service.d.ts.map +1 -1
- package/services/service-command-tab/service-command.feature.d.ts.map +1 -1
- package/services/services-device-tab/columns/last-updated-date.device-grid-column.d.ts.map +1 -1
- package/services/services-device-tab/columns/name.grid-column.d.ts.map +1 -1
- package/services/services-device-tab/columns/service-type.grid-column.d.ts.map +1 -1
- package/services/services-device-tab/columns/status.grid-column.d.ts.map +1 -1
- package/services/services-device-tab/services-device-tab.component.d.ts.map +1 -1
- package/services/services-device-tab/services-device-tab.module.d.ts.map +1 -1
- package/services/services-device-tab/services.breadcrumb-factory.d.ts.map +1 -1
- package/services/shared/service-command.service.d.ts.map +1 -1
- package/services/status-options/status-options.model.d.ts.map +1 -1
- package/sigfox-device-registration/sigfox-device-registration.component.d.ts.map +1 -1
- package/sigfox-device-registration/sigfox-provider.service.d.ts.map +1 -1
- package/sms-gateway/sms-gateway.module.d.ts.map +1 -1
- package/sub-assets/add-group/add-group.component.d.ts.map +1 -1
- package/sub-assets/asset-properties-item.component.d.ts.map +1 -1
- package/sub-assets/asset-properties.component.d.ts.map +1 -1
- package/sub-assets/assign-devices/assign-child-devices.component.d.ts.map +1 -1
- package/sub-assets/assign-devices/assign-devices.component.d.ts.map +1 -1
- package/sub-assets/delete-assets-modal/delete-assets-modal.component.d.ts.map +1 -1
- package/sub-assets/group-info.component.d.ts.map +1 -1
- package/sub-assets/sub-assets-grid.component.d.ts.map +1 -1
- package/sub-assets/sub-assets.component.d.ts.map +1 -1
- package/sub-assets/sub-assets.module.d.ts.map +1 -1
- package/sub-assets/sub-assets.service.d.ts.map +1 -1
- package/sub-assets/unassign-assets-modal/unassign-modal.component.d.ts.map +1 -1
- package/tenants/custom-properties/custom-properties.component.d.ts.map +1 -1
- package/tenants/tenant-form/tenant-form.component.d.ts.map +1 -1
- package/tenants/tenant-limits/tenant-limits.component.d.ts.map +1 -1
- package/tenants/tenant-list/creation-time.filtering-form-renderer.component.d.ts.map +1 -1
- package/tenants/tenant-list/tenant-list.component.d.ts.map +1 -1
- package/tenants/tenants-navigation.factory.d.ts.map +1 -1
- package/tenants/tenants.module.d.ts.map +1 -1
- package/tracking/tracking.feature.d.ts.map +1 -1
- package/translation-editor/lazy/translation-editor/translation-editor.component.d.ts.map +1 -1
- package/trusted-certificates/crl/crl-check-settings.component.d.ts.map +1 -1
- package/trusted-certificates/crl/crl-settings.component.d.ts.map +1 -1
- package/trusted-certificates/factories/tabs.factory.d.ts.map +1 -1
- package/trusted-certificates/factories/trusted-certificates-navigation.factory.d.ts.map +1 -1
- package/trusted-certificates/list/add-trusted-certificate.component.d.ts.map +1 -1
- package/trusted-certificates/list/trusted-certificate-list.component.d.ts.map +1 -1
- package/upgrade/auth-bridge.service.d.ts.map +1 -1
- package/upgrade/bridge.service.d.ts.map +1 -1
- package/upgrade/ng1/downgraded.services.d.ts +1 -0
- package/upgrade/ng1/downgraded.services.d.ts.map +1 -1
- package/upgrade/ng1/index.d.ts.map +1 -1
- package/user-roles/roles-asset-tree/roles-asset-tree.component.d.ts.map +1 -1
- package/widgets/cockpit/index.d.ts +4 -4
- package/widgets/definitions/alarms/alarm-list/index.d.ts +1 -1
- package/widgets/definitions/alarms/alarm-list/index.d.ts.map +1 -1
- package/widgets/definitions/alarms/all-critical-alarms/index.d.ts +1 -1
- package/widgets/definitions/alarms/all-critical-alarms/index.d.ts.map +1 -1
- package/widgets/definitions/alarms/recent-alarms/index.d.ts +1 -1
- package/widgets/definitions/alarms/recent-alarms/index.d.ts.map +1 -1
- package/widgets/definitions/applications/index.d.ts +1 -1
- package/widgets/definitions/applications/index.d.ts.map +1 -1
- package/widgets/definitions/asset-notes/index.d.ts +1 -1
- package/widgets/definitions/asset-notes/index.d.ts.map +1 -1
- package/widgets/definitions/cockpit-legacy-welcome/index.d.ts +1 -1
- package/widgets/definitions/cockpit-legacy-welcome/index.d.ts.map +1 -1
- package/widgets/definitions/cockpit-welcome/index.d.ts +1 -1
- package/widgets/definitions/cockpit-welcome/index.d.ts.map +1 -1
- package/widgets/definitions/datapoints-graph/datapoint-graph-widget-factory.d.ts.map +1 -1
- package/widgets/definitions/datapoints-graph/index.d.ts +1 -1
- package/widgets/definitions/datapoints-table/index.d.ts +1 -1
- package/widgets/definitions/datapoints-table/index.d.ts.map +1 -1
- package/widgets/definitions/device-control-message/index.d.ts +1 -1
- package/widgets/definitions/device-control-message/index.d.ts.map +1 -1
- package/widgets/definitions/help-and-service/index.d.ts +1 -1
- package/widgets/definitions/help-and-service/index.d.ts.map +1 -1
- package/widgets/definitions/html-widget/html-widget.factory.d.ts.map +1 -1
- package/widgets/definitions/html-widget/index.d.ts +1 -1
- package/widgets/definitions/image/index.d.ts +5 -3
- package/widgets/definitions/image/index.d.ts.map +1 -1
- package/widgets/definitions/info-gauge/index.d.ts +2 -3
- package/widgets/definitions/info-gauge/index.d.ts.map +1 -1
- package/widgets/definitions/kpi/index.d.ts +1 -1
- package/widgets/definitions/kpi/index.d.ts.map +1 -1
- package/widgets/definitions/linear-gauge/index.d.ts +1 -1
- package/widgets/definitions/linear-gauge/index.d.ts.map +1 -1
- package/widgets/definitions/map/index.d.ts +1 -1
- package/widgets/definitions/map/index.d.ts.map +1 -1
- package/widgets/definitions/markdown/index.d.ts +5 -3
- package/widgets/definitions/markdown/index.d.ts.map +1 -1
- package/widgets/definitions/quick-links/index.d.ts +1 -1
- package/widgets/definitions/quick-links/index.d.ts.map +1 -1
- package/widgets/definitions/radial-gauge/index.d.ts +1 -1
- package/widgets/definitions/radial-gauge/index.d.ts.map +1 -1
- package/widgets/definitions/silo/index.d.ts +1 -1
- package/widgets/definitions/silo/index.d.ts.map +1 -1
- package/widgets/definitions/three-d-rotation/index.d.ts +1 -1
- package/widgets/definitions/three-d-rotation/index.d.ts.map +1 -1
- package/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.d.ts.map +1 -1
- package/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.d.ts.map +1 -1
- package/widgets/implementations/alarms/alarm-list-widget.model.d.ts.map +1 -1
- package/widgets/implementations/alarms/alarm-widget-alarms-reload.component.d.ts.map +1 -1
- package/widgets/implementations/cockpit-welcome/welcome.component.d.ts +3 -2
- package/widgets/implementations/cockpit-welcome/welcome.component.d.ts.map +1 -1
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.d.ts.map +1 -1
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/datapoints-table.component.d.ts.map +1 -1
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.d.ts.map +1 -1
- package/widgets/implementations/datapoints-table/datapoints-table-widget.model.d.ts.map +1 -1
- package/widgets/implementations/datapoints-table/date-range-picker.component.d.ts.map +1 -1
- package/widgets/implementations/device-control-message/device-control-message-widget-view/device-control-message-widget-view.component.d.ts.map +1 -1
- package/widgets/implementations/device-management-welcome/welcome.component.d.ts.map +1 -1
- package/widgets/implementations/help-and-service-widget/help-and-service-view/help-and-service-view.component.d.ts.map +1 -1
- package/widgets/implementations/html-widget/advanced-settings/advanced-settings.component.d.ts.map +1 -1
- package/widgets/implementations/html-widget/html-widget-config.service.d.ts.map +1 -1
- package/widgets/implementations/html-widget/widget-code-editor-section/widget-code-editor.component.d.ts +5 -3
- package/widgets/implementations/html-widget/widget-code-editor-section/widget-code-editor.component.d.ts.map +1 -1
- package/widgets/implementations/image/image-widget-config/image-widget-config.component.d.ts.map +1 -1
- package/widgets/implementations/image/image-widget.service.d.ts +1 -2
- package/widgets/implementations/image/image-widget.service.d.ts.map +1 -1
- package/widgets/implementations/info-gauge/info-gauge-widget-config/info-gauge-widget-config.component.d.ts.map +1 -1
- package/widgets/implementations/linear-gauge/linear-gauge-widget-view/linear-gauge-widget-view.component.d.ts.map +1 -1
- package/widgets/implementations/map/map-widget-config.component.d.ts.map +1 -1
- package/widgets/implementations/map/map-widget.component.d.ts.map +1 -1
- package/widgets/implementations/markdown/markdown-widget-config/markdown-widget-config.component.d.ts.map +1 -1
- package/widgets/implementations/markdown/markdown-widget.service.d.ts.map +1 -1
- package/widgets/implementations/quick-links/quick-links-widget-config/quick-links-widget-config.component.d.ts.map +1 -1
- package/widgets/import-export-config/config-target-export.d.ts +3 -1
- package/widgets/import-export-config/config-target-export.d.ts.map +1 -1
- package/widgets/import-export-config/config-target-import.d.ts +3 -1
- package/widgets/import-export-config/config-target-import.d.ts.map +1 -1
- package/widgets/import-export-config/device-import-export.d.ts +3 -1
- package/widgets/import-export-config/device-import-export.d.ts.map +1 -1
- package/fesm2022/c8y-ngx-components-context-dashboard-dashboard-general-settings.component-DjlpSztw.mjs.map +0 -1
- package/fesm2022/c8y-ngx-components-context-dashboard-dashboard-version-history.component-B2zLhv0X.mjs.map +0 -1
- package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-CwfVxTSx.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"c8y-ngx-components-ecosystem-shared.mjs","sources":["../../ecosystem/shared/ecosystem.model.ts","../../ecosystem/shared/ecosystem.constants.ts","../../ecosystem/shared/ecosystem-error.ts","../../ecosystem/shared/ecosystem.service.ts","../../ecosystem/shared/package-availability.service.ts","../../ecosystem/shared/add-application.component.ts","../../ecosystem/shared/add-application.component.html","../../ecosystem/shared/translate-package-label.pipe.ts","../../ecosystem/shared/application-card.component.ts","../../ecosystem/shared/application-card.component.html","../../ecosystem/shared/application-properties-form.component.ts","../../ecosystem/shared/application-properties-form.component.html","../../ecosystem/shared/duplicate-application/duplicate-application-list/duplicate-application-list.component.ts","../../ecosystem/shared/duplicate-application/duplicate-application-list/duplicate-application-list.component.html","../../ecosystem/shared/duplicate-application/duplicate-application-properties/duplicate-application-properties.component.ts","../../ecosystem/shared/duplicate-application/duplicate-application-properties/duplicate-application-properties.component.html","../../ecosystem/shared/duplicate-application/duplicate-application.component.ts","../../ecosystem/shared/duplicate-application/duplicate-application.component.html","../../ecosystem/shared/package-version-select/package-version-select.component.ts","../../ecosystem/shared/package-version-select/package-version-select.component.html","../../ecosystem/shared/upload-archive.component.ts","../../ecosystem/shared/upload-archive.component.html","../../ecosystem/shared/list-filters/list-filters.component.ts","../../ecosystem/shared/list-filters/list-filters.component.html","../../ecosystem/shared/archived-filter/archived-filter.component.ts","../../ecosystem/shared/archived-filter/archived-filter.component.html","../../ecosystem/shared/package-changelog/package-changelog.component.ts","../../ecosystem/shared/package-changelog/package-changelog.component.html","../../ecosystem/shared/shared-ecosystem.module.ts","../../ecosystem/shared/list-filters/list-filters.model.ts","../../ecosystem/shared/c8y-ngx-components-ecosystem-shared.ts"],"sourcesContent":["import { ApplicationPlugin } from '@c8y/ngx-components';\n\n/** Wizard types */\nexport enum EcosystemWizards {\n APPLICATION_UPLOAD = 'ecosystemApplicationUpload',\n MICROSERVICE_UPLOAD = 'ecosystemMicroserviceUpload',\n PACKAGE_UPLOAD = 'ecosystemPackageUpload',\n BLUEPRINT_DEPLOYMENT = 'ecosystemBlueprintDeployment',\n LICENSE_CONFIRM = 'ecosystemLicenseConfirm',\n ARCHIVED_CONFIRM = 'ecosystemArchivedConfirm'\n}\n\nexport enum ERROR_TYPE {\n TYPE_VALIDATION = 'TYPE_VALIDATION',\n ALREADY_SUBSCRIBED = 'ALREADY_SUBSCRIBED',\n ALREADY_EXIST = 'ALREADY_EXIST',\n INTERNAL_ERROR = 'INTERNAL_ERROR',\n NO_MANIFEST_FILE = 'NO_MANIFEST_FILE',\n INVALID_PACKAGE = 'INVALID_PACKAGE',\n INVALID_APPLICATION = 'INVALID_APPLICATION',\n MICROSERVICE_NAME_TOO_LONG = 'MICROSERVICE_NAME_TOO_LONG',\n APPLICATION_CREATION_FAILED = 'APPLICATION_CREATION_FAILED',\n KEY_OR_CONTEXT_PATH_MISMATCH = 'KEY_OR_CONTEXT_PATH_MISMATCH',\n VERSION_NOT_FOUND = 'VERSION_NOT_FOUND'\n}\n\nexport type LicensedApplicationPlugin = Pick<\n ApplicationPlugin,\n 'type' | 'license' | 'name' | 'version' | 'contextPath'\n>;\n\nexport const PRODUCT_EXPERIENCE_ECOSYSTEM = {\n APPLICATIONS: {\n EVENTS: {\n AVAILABILITY: 'availability',\n APPLICATION_CARD: 'applicationCard',\n APPLICATION_PROPERTIES: 'applicationProperties',\n DEPLOY_APPLICATION: 'deployApplication',\n DUPLICATE_APPLICATION: 'duplicateApplication',\n INSTALLED_PLUGINS: 'installedPlugins',\n PACKAGE_PLUGINS: 'packagePlugins',\n PACKAGE_VERSIONS: 'packageVersions',\n FILTER_LIST: 'filterList'\n },\n COMPONENTS: {\n APPLICATION_CARD: 'application-card',\n APPLICATION_PLUGINS: 'application-plugins',\n APPLICATION_PROPERTIES: 'application-properties',\n DEPLOY_APPLICATION: 'deploy-application',\n DUPLICATE_APPLICATION_PROPERTIES: 'duplicate-application-properties',\n PLUGIN_LIST: 'plugin-list',\n PACKAGE_VERSIONS: 'package-versions-list',\n UPDATE_PLUGIN_OF_APP: 'update-plugin-of-app',\n LIST_FILTERS: 'list-filters',\n PACKAGE_DETAILS: 'package-details'\n },\n ACTIONS: {\n AVAILABILITY_CHANGE: 'availabilityChange',\n CANCEL: 'cancel',\n CLONE: 'clone',\n CHANGE_PLUGIN_VERSION: 'changePluginVersion',\n DELETE: 'delete',\n DOWNLOAD: 'download',\n DEPLOY_APPLICATION: 'deployApplication',\n EDIT: 'edit',\n INSTALL_PLUGIN: 'installPlugin',\n INSTALL_PLUGINS: 'installPlugins',\n UNINSTALL_PLUGIN: 'uninstallPlugin',\n SELECT_VERSION: 'selectVersion',\n SET_AS_LATEST: 'setAsLatest',\n UPDATE_AVAILABLE: 'updateAvailable',\n UPLOAD: 'upload',\n SET_FILTER_TERM: 'setFilterTerm',\n SET_PREDEFINED_FILTERS: 'setPredefinedFilters',\n RESET_FILTER: 'resetFilter',\n INSTALL_PLUGINS_INITIATED: 'installPluginsInitiated',\n DEPLOY_APPLICATION_INITIATED: 'deployApplicationInitiated'\n },\n RESULTS: {\n DEPLOYED: 'deployed',\n DUPLICATED: 'duplicated',\n PLUGIN_INSTALLED: 'pluginInstalled',\n PLUGIN_REMOVED: 'pluginRemoved',\n PLUGIN_VERSION_CHANGED: 'pluginVersionChanged',\n SERVER_FAILURE: 'serverFailure',\n SUCCESS: 'success'\n }\n }\n} as const;\n","import { ERROR_TYPE } from './ecosystem.model';\nimport { gettext, PackageType, PropertiesListItem } from '@c8y/ngx-components';\n\nexport const ERROR_MESSAGES = {\n [ERROR_TYPE.ALREADY_EXIST]: gettext(\n 'Could not deploy the application, as an application with the same name`KEEP_ORIGINAL`, context-path`KEEP_ORIGINAL` or key`KEEP_ORIGINAL` exists already.'\n ),\n [ERROR_TYPE.TYPE_VALIDATION]: gettext(\n 'Wrong file format. Expected a *.zip file with a valid manifest.'\n ),\n [ERROR_TYPE.ALREADY_SUBSCRIBED]: gettext(\n 'Could not subscribe to the microservice because another application with the same context path is already subscribed.'\n ),\n [ERROR_TYPE.NO_MANIFEST_FILE]: gettext('Could not find a manifest.'),\n [ERROR_TYPE.INVALID_PACKAGE]: gettext('You have not uploaded a valid package.'),\n [ERROR_TYPE.INVALID_APPLICATION]: gettext('You have not uploaded a valid application.'),\n [ERROR_TYPE.INTERNAL_ERROR]: gettext('An internal error occurred, try to upload again.'),\n [ERROR_TYPE.MICROSERVICE_NAME_TOO_LONG]: gettext(\n 'Microservice name \"{{ name }}\" must not be longer than {{ maxChars }} characters.'\n ),\n [ERROR_TYPE.APPLICATION_CREATION_FAILED]: gettext('Application creation failed.'),\n [ERROR_TYPE.KEY_OR_CONTEXT_PATH_MISMATCH]: gettext(\n 'The \"contextPath`KEEP_ORIGINAL`\" or \"key`KEEP_ORIGINAL`\" of the uploaded archive do not match with the existing application.'\n ),\n [ERROR_TYPE.VERSION_NOT_FOUND]: gettext('The selected version was not found on the server.')\n};\n\nexport const APP_STATE = {\n SUBSCRIBED: {\n label: gettext('Subscribed`application`'),\n class: 'label-primary',\n tooltip: gettext('Provided by parent tenant.')\n },\n CUSTOM: {\n label: gettext('Custom`application`'),\n class: 'label-info',\n tooltip: gettext('Manually uploaded to the platform.')\n },\n EXTERNAL: {\n label: gettext('External`application`'),\n class: 'label-warning',\n tooltip: gettext('Application hosted outside of the platform.')\n },\n UNPACKED: {\n label: gettext('Unpacked`application`'),\n class: 'label-success',\n tooltip: gettext('Deployed from a package available under \"Packages\".')\n },\n PACKAGE_BLUEPRINT: {\n label: gettext('Blueprint'),\n class: 'label-success',\n tooltip: gettext('Contains an application and may include plugins.')\n },\n PACKAGE_PLUGIN: {\n label: gettext('Plugins'),\n class: 'label-info',\n tooltip: gettext('Contains only plugins.')\n },\n PACKAGE_UNKNOWN: {\n label: gettext('Unknown`package-type`'),\n class: 'label-info',\n tooltip: gettext('Package contents could not be determined.')\n }\n};\n\nexport type ApplicationState = (typeof APP_STATE)[keyof typeof APP_STATE];\n\nexport const PACKAGE_TYPE_LABELS = {\n [PackageType.COMMUNITY]: {\n label: gettext('COMMUNITY`Package created by the developer community.`'),\n tooltip: gettext('Package created by the developer community.')\n },\n [PackageType.OFFICIAL]: {\n label: gettext('OFFICIAL`Package maintained by Cumulocity.`'),\n tooltip: gettext('Package maintained by Cumulocity.')\n },\n [PackageType.UNKNOWN]: {\n label: gettext('CUSTOM`Package maintained by an unknown source.`'),\n tooltip: gettext('Package maintainer unknown.')\n },\n [PackageType.ARCHIVED]: {\n label: gettext('ARCHIVED`Package out of maintenance.`'),\n tooltip: gettext('The package was marked by the author as archived.')\n }\n};\n\nexport const packageProperties: PropertiesListItem[] = [\n {\n label: gettext('Latest version'),\n key: 'version'\n },\n {\n label: gettext('Author'),\n key: 'author'\n },\n {\n label: gettext('Keywords'),\n key: 'keywords'\n },\n {\n label: gettext('Source'),\n key: 'repository',\n transform: (repository: any) => (repository?.url ? repository.url : repository),\n type: 'link',\n action: (e, link: string) => window.open(link, '_blank', 'noopener,noreferrer')\n },\n {\n label: gettext('Homepage'),\n key: 'homepage',\n type: 'link',\n action: (e, link: string) => window.open(link, '_blank', 'noopener,noreferrer')\n },\n {\n label: gettext('License'),\n key: 'license'\n }\n];\n","import { ERROR_MESSAGES } from './ecosystem.constants';\nimport { ERROR_TYPE } from './ecosystem.model';\n\nexport class EcosystemError extends Error {\n constructor(public type: ERROR_TYPE) {\n super(ERROR_MESSAGES[type]);\n }\n}\n","import { EventEmitter, Injectable } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport {\n ApplicationAvailability,\n ApplicationService,\n ApplicationType,\n IApplication,\n IApplicationBinary,\n IApplicationVersion,\n IApplicationVersionDeleteParams,\n ICurrentTenant,\n IdReference,\n IFetchResponse,\n IIdentified,\n IManagedObject,\n IManifest,\n InventoryService,\n IResult,\n IResultList,\n IUploadParamsOverride,\n TenantService\n} from '@c8y/client';\nimport {\n AlertService,\n ApplicationPlugin,\n AppStateService,\n gettext,\n HumanizeAppNamePipe,\n ModalService,\n PackageType,\n PluginsService,\n Status,\n WizardModalService,\n ZipService\n} from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport { saveAs } from 'file-saver';\nimport { cloneDeep, get, groupBy, kebabCase, pick, uniqBy, omit, isUndefined } from 'lodash-es';\nimport { BehaviorSubject, Observable, defer } from 'rxjs';\nimport { debounceTime, take, map, filter, shareReplay } from 'rxjs/operators';\nimport { gt, coerce, satisfies } from 'semver';\nimport { EcosystemError } from './ecosystem-error';\nimport { ApplicationState, APP_STATE, ERROR_MESSAGES } from './ecosystem.constants';\nimport { EcosystemWizards, ERROR_TYPE, LicensedApplicationPlugin } from './ecosystem.model';\nimport { AppFilterProps } from './list-filters/list-filters.model';\n\nconst CUMULOCITY_JSON = 'cumulocity.json';\nconst MICROSERVICE_NAME_MAX_LENGTH = 23;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EcosystemService {\n appDeleted = new EventEmitter<IApplication>();\n progress: BehaviorSubject<number> = new BehaviorSubject<number>(null);\n private appsGroupedByContextPath$: Observable<Record<string, IApplication[]>>;\n private xhr: XMLHttpRequest;\n\n constructor(\n private modal: ModalService,\n private alertService: AlertService,\n private humanizeAppName: HumanizeAppNamePipe,\n private translateService: TranslateService,\n private applicationService: ApplicationService,\n private appStateService: AppStateService,\n private zipService: ZipService,\n private tenantService: TenantService,\n private inventoryService: InventoryService,\n private wizardModalService: WizardModalService,\n private pluginService: PluginsService\n ) {\n this.appsGroupedByContextPath$ = defer(() => this.getWebApplications()).pipe(\n map(webApps => groupBy(webApps, 'contextPath')),\n shareReplay({ bufferSize: 1, refCount: true })\n );\n }\n\n getUniqueAppConfig(srcApp: IApplication, existingApps: IApplication[]): IApplication {\n let app: IApplication = {\n name: srcApp.name,\n key: srcApp.key,\n contextPath: srcApp.contextPath\n };\n for (let retryNo = 0; retryNo < 9; ) {\n if (this.checkIfAppNameKeyPathExists(existingApps, app, retryNo)) {\n retryNo++;\n app = {\n name: [srcApp.name, retryNo].join('-'),\n key: [srcApp.key, retryNo].join('-'),\n contextPath: [srcApp.contextPath, retryNo].join('-')\n };\n } else {\n return app;\n }\n }\n return app;\n }\n\n /**\n * Verify versions compatibility for blueprints. If a blueprint version\n * is not compatible, a warning is shown.\n *\n * @param blueprint The blueprint to install.\n * @returns true if the installation can continue or false if it should be aborted.\n */\n async verifyBlueprintVersionsCompatibility(blueprint: Partial<IManifest>): Promise<boolean> {\n const api = await this.getPlatformVersion();\n if (blueprint.versioningMatrix) {\n try {\n const pluginApiVersion = blueprint.versioningMatrix[blueprint.version].api;\n if (!satisfies(api, pluginApiVersion)) {\n return await this.showModal(blueprint, false, api);\n }\n } catch {\n return await this.showModal(blueprint, false, api);\n }\n }\n return true;\n }\n\n /**\n * Verify versions compatibility for plugins. In case a version does not exist in the\n * versioningMatrix we don't do anything due to backward compatibility. If a plugin version\n * is not compatible, a warning is shown.\n *\n * @param pluginsToInstall The list of plugins to install.\n * @returns true if the installation can continue or false if it should be aborted.\n */\n async verifyPluginVersionsCompatibility(\n pluginsToInstall: ApplicationPlugin[],\n app: IApplication\n ): Promise<boolean> {\n const api = await this.getPlatformVersion();\n const sdk = app.manifest?.webSdkVersion;\n for (const plugin of pluginsToInstall) {\n if (plugin.versioningMatrix) {\n try {\n const pluginSdkVersion = plugin.versioningMatrix[plugin.version].sdk;\n const pluginApiVersion = plugin.versioningMatrix[plugin.version].api;\n if (!satisfies(sdk, pluginSdkVersion) || !satisfies(api, pluginApiVersion)) {\n return await this.showModal(plugin, true, api, sdk);\n }\n } catch {\n return await this.showModal(plugin, false, api, sdk);\n }\n }\n }\n\n return true;\n }\n\n /**\n * Community plugins need to verify the license agreement. If a package is a community\n * package, the license is shown.\n *\n * @param pluginsToInstall The list of plugins to install.\n * @returns true if the installation can continue.\n */\n async verifyLicenses(pluginsToInstall: Array<LicensedApplicationPlugin>) {\n let _resolve;\n const result: Promise<boolean> = new Promise(resolve => {\n _resolve = resolve;\n });\n\n pluginsToInstall = pluginsToInstall.filter(\n plugin => plugin.type !== PackageType.CUSTOM && plugin.type !== PackageType.OFFICIAL\n );\n\n if (pluginsToInstall.length === 0) {\n return Promise.resolve(true);\n }\n\n const initialState: any = {\n id: EcosystemWizards.LICENSE_CONFIRM,\n componentInitialState: {\n pluginsToInstall\n }\n };\n const modalOptions = { initialState };\n const wizard = this.wizardModalService.show(modalOptions);\n\n wizard.content.onClose.subscribe(confirmed => {\n _resolve(confirmed);\n });\n\n return result;\n }\n\n /**\n * If the plugin is archived, a warning should be shown.\n *\n * @param pluginsToInstall The list of plugins to install.\n * @returns true if the installation can continue.\n */\n async verifyArchived(pluginsToInstall: Array<LicensedApplicationPlugin>) {\n let _resolve;\n const result: Promise<boolean> = new Promise(resolve => {\n _resolve = resolve;\n });\n\n pluginsToInstall = pluginsToInstall.filter(plugin => plugin.type === PackageType.ARCHIVED);\n\n if (pluginsToInstall.length === 0) {\n return Promise.resolve(true);\n }\n\n const initialState: any = {\n id: EcosystemWizards.ARCHIVED_CONFIRM\n };\n const modalOptions = { initialState };\n const wizard = this.wizardModalService.show(modalOptions);\n\n wizard.content.onClose.subscribe(confirmed => {\n _resolve(confirmed);\n });\n\n return result;\n }\n\n /**\n * @description\n * Compares currently deployed application version with application version tagged as \"latest\"\n *\n * @param {string} currentApplicationVersion Deployed application version\n * @param {object} latestApp Latest application version object\n *\n * @returns {boolean} Returns true if latest version is greater than current, otherwise false\n */\n shouldUpgradePackage(currentApplicationVersion: string, latestApp: IApplicationVersion): boolean {\n const latestApplicationVersion = latestApp?.version;\n\n if (!latestApplicationVersion || !currentApplicationVersion) {\n return false;\n }\n\n return gt(coerce(latestApplicationVersion), coerce(currentApplicationVersion));\n }\n\n /**\n * @description\n * Gets an object that contains searched tag\n *\n * @param {array} applicationVersions Array with all available versions\n * @param {string} tagName Searched tag\n *\n * @returns {object} Returns an object with searched tag\n */\n getApplicationVersionObjectByTag(\n applicationVersions: IApplicationVersion[],\n tagName: string\n ): IApplicationVersion {\n return applicationVersions?.find(element => element.tags.includes(tagName));\n }\n\n async getApplication(appId: IdReference): Promise<IApplication> {\n return (await this.applicationService.detail(appId)).data;\n }\n\n getApplications(customFilter: any = {}): Promise<IResultList<IApplication>> {\n const filter: object = {\n pageSize: 2000,\n withTotalPages: true\n };\n Object.assign(filter, customFilter);\n const currentTenant = this.appStateService.currentTenant.value;\n return this.applicationService.listByTenant(currentTenant.name, filter);\n }\n\n async getMicroservices(): Promise<IApplication[]> {\n const apps = (await this.getApplications()).data;\n const microservices = apps.filter(app => this.isMicroservice(app));\n return microservices.sort((a, b) => a.name.localeCompare(b.name));\n }\n\n async getWebApplications(customFilter: any = {}): Promise<IApplication[]> {\n const apps = (await this.getApplications(customFilter)).data;\n const webApps = apps.filter(app => this.isApplication(app));\n return webApps.sort((a, b) => a.name.localeCompare(b.name));\n }\n\n async getFeatureApplications(customFilter: any = {}): Promise<IApplication[]> {\n const apps = (await this.getApplications(customFilter)).data;\n const webApps = apps.filter(app => this.isFeature(app));\n return webApps.sort((a, b) => a.name.localeCompare(b.name));\n }\n\n async getPackageApplications(customFilter: any = {}): Promise<IApplication[]> {\n const filterCallback = app => this.isPackage(app);\n return this.getApplicationsFiltered(customFilter, filterCallback);\n }\n\n async getHostedAndPackageApplications(customFilter: any = {}): Promise<IApplication[]> {\n const filterCallback = app => this.isPackage(app) || this.isApplication(app);\n return this.getApplicationsFiltered(customFilter, filterCallback);\n }\n\n async getApplicationsFiltered(\n customFilter: any = {},\n filterCallback = (app: IApplication) => !!app\n ): Promise<IApplication[]> {\n const filter = Object.assign({}, customFilter);\n const sharedFilter = Object.assign(\n {\n availability: ApplicationAvailability.SHARED,\n type: 'HOSTED',\n pageSize: 2000\n },\n customFilter\n );\n const [{ data: apps }, { data: shared }] = await Promise.all([\n this.getApplications(filter),\n this.applicationService.list(sharedFilter)\n ]);\n const webApps = [...apps, ...shared].filter(filterCallback);\n // an app could be subscribed to a tenant, but also have it's availability set to SHARED, in that case it would occur twice.\n const uniqWebApps = uniqBy(webApps, (app: IApplication) => app.id);\n return uniqWebApps.sort((a, b) => a.name.localeCompare(b.name));\n }\n\n async isMicroserviceHostingAllowed(): Promise<boolean> {\n const { data: apps } = await this.applicationService.listByName('feature-microservice-hosting');\n return !!apps.filter(app => app.owner?.tenant?.id === 'management').length;\n }\n\n canOpenAppInBrowser(app: IApplication): boolean {\n const isNotAFeature = !this.isFeature(app);\n const hasProperType = [ApplicationType.HOSTED, ApplicationType.EXTERNAL].includes(app.type);\n const isNotPackage = !this.isPackage(app);\n return isNotAFeature && hasProperType && isNotPackage;\n }\n\n openApp(app) {\n window.open(this.applicationService.getHref(app), '_blank', 'noopener,noreferrer');\n }\n\n async canDeleteApp(app: IApplication): Promise<boolean> {\n return (\n this.isOwner(app) && (!this.isCurrentApp(app) || (await this.hasSubscribedAppParent(app)))\n );\n }\n\n isOwner(app: IApplication): boolean {\n const currentTenant: ICurrentTenant = this.appStateService.currentTenant.value;\n const appOwner = get(app, 'owner.tenant.id');\n return currentTenant?.name === appOwner;\n }\n\n isFeature(app: IApplication): boolean {\n return !!app.name.match(/feature-/);\n }\n\n isMicroservice(app: IApplication): boolean {\n return app.type === 'MICROSERVICE';\n }\n\n isExternal(app: IApplication): boolean {\n return app.type === 'EXTERNAL';\n }\n\n isPackage(app: IApplication): boolean {\n return app.manifest?.isPackage === true;\n }\n\n isPlugin(app: IApplication): boolean {\n return app.manifest?.package === 'plugin';\n }\n\n cancelAppCreation(app: IApplication): void {\n if (this.xhr) {\n this.xhr.abort();\n }\n if (app) {\n this.applicationService.delete(app);\n }\n }\n\n updateUploadProgress(event): void {\n if (event.lengthComputable) {\n const currentProgress = this.progress.value;\n this.progress.next(currentProgress + (event.loaded / event.total) * (95 - currentProgress));\n }\n }\n\n setAppActiveVersion(app: IApplication, activeVersionId: string): Promise<IApplication> {\n return this.applicationService.update({ id: app.id, activeVersionId });\n }\n\n setPackageVersionTag(app: IApplication, version: string, tags: string[]) {\n return this.applicationService.setPackageVersionTag(app, version, tags);\n }\n\n deletePackageVersion(app: IApplication, params: IApplicationVersionDeleteParams) {\n return this.applicationService.deleteVersionPackage(app, params);\n }\n\n getHumanizedAppName(app: IApplication): Promise<string> {\n return this.humanizeAppName.transform(app.name).pipe(debounceTime(250), take(1)).toPromise();\n }\n\n createConfig(app: IApplication, formGroupValue: FormGroup): Partial<IApplication> {\n const { id, type, availability } = app;\n let config = pick(formGroupValue, ['name', 'key', 'contextPath']);\n config = {\n ...config,\n isSetup: true,\n id,\n type,\n availability\n };\n return config;\n }\n\n async listArchives(appId: string | number | IApplication): Promise<IApplicationBinary[]> {\n const filter = {\n pageSize: 100\n };\n return (await this.applicationService.binary(appId).list(filter)).data;\n }\n\n async deleteArchive(archive: IApplicationBinary, app: IApplication): Promise<void> {\n const humanizedArchiveName = await this.getHumanizedAppName(archive);\n try {\n await this.modal.confirm(\n gettext('Delete archive'),\n this.translateService.instant(\n gettext(\n `You are about to delete archive \"{{ humanizedArchiveName }}\". Do you want to proceed?`\n ),\n { humanizedArchiveName }\n ),\n Status.DANGER,\n { ok: gettext('Delete'), cancel: gettext('Cancel') }\n );\n await this.applicationService.binary(app).delete(archive.id);\n this.alertService.success(gettext('Archive deleted.'));\n } catch (ex) {\n if (ex) {\n this.alertService.danger(get(ex, 'data.message'), ex.data);\n }\n throw new Error('Cancelled');\n }\n }\n\n async getArchiveManagedObject(binaryId: string): Promise<IManagedObject> {\n return (await this.inventoryService.detail(binaryId)).data;\n }\n\n async downloadArchive(\n app: IApplication,\n archive: Pick<IApplicationBinary, 'name' | 'id'>\n ): Promise<void> {\n try {\n const binary = await this.getBinary(app, archive);\n const fileBinary = new Blob([binary], { type: 'application/x-zip-compressed' });\n saveAs(fileBinary, archive.name);\n } catch (e) {\n // empty\n }\n }\n\n async updateApp(app: IApplication, deleteOnFailure = false): Promise<IResult<IApplication>> {\n try {\n return await this.applicationService.update(app);\n } catch (ex) {\n this.alertError(ex);\n if (deleteOnFailure) {\n await this.applicationService.delete(app.id);\n throw new EcosystemError(ERROR_TYPE.APPLICATION_CREATION_FAILED);\n }\n }\n }\n\n async deleteApp(app: IApplication, silent = false): Promise<void> {\n const humanizedAppName = await this.getHumanizedAppName(app);\n if (!silent) {\n await this.modal.confirm(\n gettext('Delete application'),\n this.translateService.instant(\n gettext(\n `You are about to delete application \"{{ humanizedAppName }}\". Do you want to proceed?`\n ),\n { humanizedAppName }\n ),\n Status.DANGER,\n { ok: gettext('Delete'), cancel: gettext('Cancel') }\n );\n }\n await this.applicationService.delete(app.id);\n if (!silent) {\n this.alertService.success(gettext('Application deleted.'));\n }\n this.appDeleted.emit(app);\n }\n\n async checkIfSubscribed(app: IApplication): Promise<boolean> {\n const currentTenant = await this.tenantService.current();\n const subscribedApps = currentTenant.data.applications.references;\n return subscribedApps.some(application => application.application.id === app.id);\n }\n\n async subscribeApp(app: IApplication): Promise<void> {\n const currentTenant: ICurrentTenant = this.appStateService.currentTenant.value;\n try {\n await this.tenantService.subscribeApplication(currentTenant, app);\n this.alertService.success(gettext('Successfully subscribed to application.'));\n } catch (ex) {\n this.alertError(ex);\n }\n }\n\n async unsubscribeApp(app: IApplication): Promise<void> {\n const currentTenant: ICurrentTenant = this.appStateService.currentTenant.value;\n try {\n await this.tenantService.unsubscribeApplication(currentTenant, app);\n this.alertService.success(gettext('Successfully unsubscribed from application.'));\n } catch (ex) {\n this.alertError(ex);\n }\n }\n\n async isValidAppType(archive: File, appType: ApplicationType): Promise<boolean> {\n try {\n const currentType = await this.getAppType(archive);\n if (currentType !== appType) {\n throw new EcosystemError(ERROR_TYPE.TYPE_VALIDATION);\n } else {\n this.progress.next(this.progress.value + 10);\n return true;\n }\n } catch (ex) {\n throw new EcosystemError(ERROR_TYPE.TYPE_VALIDATION);\n }\n }\n\n async uploadArchiveToApp(\n archive: File,\n app: IApplication,\n isNewVersion = false\n ): Promise<IApplication> {\n let uploadOverrides: IUploadParamsOverride;\n if (isNewVersion) {\n uploadOverrides = await this.getUploadOverrides(archive, app);\n }\n const binaryService = this.applicationService.binary(app);\n this.xhr = binaryService.uploadWithProgressXhr(\n archive,\n this.updateUploadProgress.bind(this),\n '',\n uploadOverrides\n );\n\n const binaryMo = await binaryService.getXMLHttpResponse(this.xhr);\n // TODO commented it due to: https://cumulocity.atlassian.net/browse/MTM-48553\n // Add it back when BE fixes issues with activeVersion.\n // if (isNewVersion) {\n // return await this.getApplication(app);\n // }\n const notInitialPackage = app.applicationVersions?.length > 0;\n if (notInitialPackage) {\n return (await this.applicationService.update({ id: app.id })).data;\n }\n return (await this.setAppActiveVersion(app, (binaryMo.binaryId || binaryMo.id) as string)).data;\n }\n\n async validateArchiveToAppCompatibility(archive: File, app: IApplication): Promise<void> {\n const appType = await this.getAppType(archive);\n if (appType !== app.type) {\n throw new EcosystemError(ERROR_TYPE.INVALID_APPLICATION);\n } else {\n this.progress.next(this.progress.value + 10);\n }\n if (this.isMicroservice(app)) {\n return;\n }\n const manifest = await this.getCumulocityJson(archive);\n // A user can upload an app without a Cumulocity JSON file (e.g. a react app).\n // This is allowed and should not trigger a validation error.\n if (!manifest) {\n return;\n }\n await this.validatePackageKeyAndContextPath(manifest, app);\n }\n\n async getCumulocityJson(archive: File): Promise<IManifest | null> {\n try {\n const c8yManifest = await this.getCumulocityJson$(archive).toPromise();\n return c8yManifest;\n } catch (ex) {\n return null;\n }\n }\n\n async createAppForArchive(archive, isPackageTypeArchive = false): Promise<IApplication> {\n let isPackage = false;\n const appType = await this.getAppType(archive);\n let appModel: any = {};\n const supportedAppTypes = [ApplicationType.HOSTED, ApplicationType.MICROSERVICE];\n\n if (supportedAppTypes.includes(appType)) {\n try {\n appModel = await this.getCumulocityJson$(archive).toPromise();\n isPackage = appModel.isPackage;\n } catch (e) {\n // do nothing, we allow having HOSTED applications without the manifest file\n }\n }\n const name = this.getBaseNameFromArchiveOrAppModel(archive, appType, appModel);\n const clearedName = this.removeForbiddenCharacters(name);\n const key = this.getAppKey(appModel, clearedName);\n const contextPath = this.getContextPath(appModel, name);\n\n const appToSave = {\n type: appType,\n name,\n key,\n contextPath\n };\n\n if (isPackageTypeArchive && !isPackage) {\n throw new EcosystemError(ERROR_TYPE.INVALID_PACKAGE);\n } else if (!isPackageTypeArchive && isPackage) {\n throw new EcosystemError(ERROR_TYPE.INVALID_APPLICATION);\n } else if (this.isNameLengthExceeded(name, appType)) {\n const error = new Error();\n error.name = ERROR_TYPE.MICROSERVICE_NAME_TOO_LONG;\n error.message = this.translateService.instant(ERROR_MESSAGES[error.name], {\n name,\n maxChars: MICROSERVICE_NAME_MAX_LENGTH\n });\n throw error;\n }\n return (\n await this.applicationService.create({\n ...appToSave,\n manifest: {\n isPackage,\n ...(appModel?.package && { package: appModel.package })\n } as unknown as IManifest\n })\n ).data;\n }\n\n async reactivateArchive(app: IApplication): Promise<void> {\n try {\n await this.applicationService.reactivateArchive(app.id);\n this.alertService.success(gettext('Application reactivated.'));\n } catch (ex) {\n this.alertError(ex);\n }\n }\n\n async removeOldestArchive(app: IApplication, archives: IApplicationBinary[]): Promise<void> {\n try {\n await this.modal.confirm(\n gettext('Delete oldest archive and continue'),\n gettext(\n 'Up to 6 archives can be saved in the platform. If you upload a new archive, the oldest archive that is not active will be deleted. Do you want to proceed?'\n ),\n Status.INFO,\n { ok: gettext('Delete and continue') }\n );\n const archiveToDelete = archives[archives.length - 2];\n await this.applicationService.binary(app).delete(archiveToDelete.id);\n this.alertService.success(gettext('Archive deleted.'));\n } catch (ex) {\n if (ex) {\n this.alertError(ex);\n } else {\n return Promise.reject('cancelled');\n }\n }\n }\n\n async deployApp(selectedPackage: IApplication, formGroupValue, model): Promise<IApplication> {\n // Create new app config\n const config = this.createConfig(selectedPackage, formGroupValue);\n const requestedVersion = model.selected.version;\n let cleanManifest;\n try {\n const manifest = await this.applicationService.getAppManifest(\n selectedPackage,\n requestedVersion\n );\n cleanManifest = omit(manifest, ['name', 'contextPath', 'key']);\n } catch (ex) {\n throw new EcosystemError(ERROR_TYPE.VERSION_NOT_FOUND);\n }\n\n config.isSetup = true;\n config.manifest = cleanManifest;\n config.availability = ApplicationAvailability.PRIVATE;\n config.manifest.isPackage = false;\n config.manifest.source = selectedPackage.id;\n config.manifest.package = 'blueprint';\n\n // because of a issue with SHARED availability we always should check again\n // if the app not exist already\n const allExistingApps = await this.getHostedAndPackageApplications();\n const doesAppKeyOrContextPathExist = this.checkIfAppNameKeyPathExists(allExistingApps, config);\n if (doesAppKeyOrContextPathExist) {\n throw new EcosystemError(ERROR_TYPE.ALREADY_EXIST);\n }\n\n // Create new app\n const newApp = (await this.applicationService.create(config)).data;\n try {\n // Binary upload can fail if SHARED package\n // in this case, catch error and fall back to\n // clone API.\n await this.uploadBinaryFromOtherPackage(\n selectedPackage,\n newApp,\n model.selected.binaryId,\n requestedVersion\n );\n } catch (error) {\n if (error?.res?.status === 404) {\n await this.fallbackToClone(newApp, selectedPackage, requestedVersion);\n }\n }\n\n // update the icon if a custom one is selected\n if (formGroupValue.icon) {\n await this.applicationService.update({\n id: newApp.id,\n config: { icon: formGroupValue.icon }\n });\n }\n return newApp;\n }\n\n async fallbackToClone(\n application: IApplication,\n selectedPackage: IApplication,\n requestedVersion?: string\n ) {\n let wasSuccess = true;\n let clonedPkg;\n try {\n clonedPkg = (await this.applicationService.clone(selectedPackage, requestedVersion)).data;\n await this.uploadBinaryFromOtherPackage(\n selectedPackage,\n application,\n clonedPkg.activeVersionId,\n requestedVersion,\n clonedPkg\n );\n } catch (error) {\n this.alertError(error);\n wasSuccess = false;\n } finally {\n await this.deleteApp(clonedPkg, true);\n }\n return wasSuccess;\n }\n\n async uploadBinaryFromOtherPackage(\n selectedPackage: IApplication,\n applicationToUploadBinaryTo: IApplication,\n binaryId: string,\n requestedVersion?: string,\n useBinariesFrom?: IApplication\n ) {\n const { data: binaryDetails } = await this.inventoryService.detail(binaryId);\n\n // Get binary from specific package version\n const binary = await this.getBinary(useBinariesFrom || selectedPackage, {\n id: binaryId\n });\n // Create zip\n const fileBinary = new Blob([binary], { type: binaryDetails.contentType });\n const file = new File([fileBinary], binaryDetails.name, {\n type: binaryDetails.contentType\n });\n\n // Upload binary to new app\n await this.uploadArchiveToApp(file, applicationToUploadBinaryTo);\n\n // update the app manifest\n await this.updateAppManifest(applicationToUploadBinaryTo, selectedPackage, requestedVersion);\n }\n\n getAppState(app: IApplication): ApplicationState {\n if (!this.isOwner(app)) {\n return APP_STATE.SUBSCRIBED;\n } else if (this.isUnpacked(app)) {\n return APP_STATE.UNPACKED;\n } else if (app.type === ApplicationType.EXTERNAL) {\n return APP_STATE.EXTERNAL;\n }\n return APP_STATE.CUSTOM;\n }\n\n getPackageContentState(app: IApplication): ApplicationState {\n if (!this.isPackage(app)) {\n return;\n }\n if (this.isPackageBlueprint(app)) {\n return APP_STATE.PACKAGE_BLUEPRINT;\n }\n if (this.isPluginsPackage(app)) {\n return APP_STATE.PACKAGE_PLUGIN;\n }\n return APP_STATE.PACKAGE_UNKNOWN;\n }\n\n isPackageBlueprint(app: IApplication): boolean {\n return this.isPackage(app) && app.manifest.package === 'blueprint';\n }\n\n isPluginsPackage(app: IApplication): boolean {\n return this.isPackage(app) && app.manifest.package === 'plugin';\n }\n\n isUnpacked(app: IApplication): boolean {\n return !!app.manifest?.source;\n }\n\n hasExports(app: IApplication): boolean {\n return !!app.manifest?.exports?.length;\n }\n\n isApplication(app: IApplication): boolean {\n return (\n app.type !== ApplicationType.MICROSERVICE && !this.isFeature(app) && !this.isPackage(app)\n );\n }\n\n isCustomMicroservice(app: IApplication) {\n return this.isOwner(app) && app.type === ApplicationType.MICROSERVICE;\n }\n\n async getBinary(\n app: IApplication,\n archive: IApplicationBinary | IIdentified\n ): Promise<ArrayBuffer> {\n let binary;\n try {\n const res = await this.applicationService.binary(app).downloadArchive(archive.id);\n binary = await res.arrayBuffer();\n } catch (ex) {\n const msg = gettext('Could not get the binary.');\n this.alertService.danger(msg);\n }\n return binary;\n }\n\n async isOverwrittenByCustomApp(app: IApplication): Promise<boolean> {\n return !this.isOwner(app) && (await this.hasSubscribedAppParent(app));\n }\n\n async hasSubscribedAppParent(app: IApplication): Promise<boolean> {\n const appsGroupedByContextPath = await this.appsGroupedByContextPath$.pipe(take(1)).toPromise();\n return app.contextPath && appsGroupedByContextPath[app.contextPath]?.length === 2;\n }\n\n /**\n * @deprecated\n */\n setAvailabilityToPrivateIfNotSetAlready(app: IApplication): IApplication {\n app.availability = ApplicationAvailability.PRIVATE;\n return app;\n }\n\n /**\n * Shows an error dialog.\n * @param error Either a server error or an internal [[EcosystemError]].\n */\n alertError(error: Error | EcosystemError) {\n if (error instanceof EcosystemError) {\n this.alertService.danger(error.message);\n } else {\n this.alertService.addServerFailure(error);\n }\n }\n\n async validatePackageKeyAndContextPath(manifest: IManifest, app: IApplication) {\n const contextPath = get(manifest, 'contextPath');\n const appKey = get(manifest, 'key');\n if (contextPath !== app.contextPath || appKey !== app.key) {\n throw new EcosystemError(ERROR_TYPE.KEY_OR_CONTEXT_PATH_MISMATCH);\n }\n }\n\n filterContainString(name: string, filterTerm: string): boolean {\n const term = filterTerm.toLowerCase().trim();\n return name && name.toLowerCase().indexOf(term) > -1;\n }\n\n async updateAppManifest(\n application: IApplication,\n selectedPackage: IApplication,\n requestedVersion?: string\n ): Promise<{ res: IFetchResponse; data: any }> {\n const { id } = application;\n const cleanedApp = this.removeAppProperties(application);\n let manifest: Partial<IManifest> = selectedPackage.manifest || {};\n if (requestedVersion) {\n try {\n const versionedAppManifest = await this.applicationService.getAppManifest(\n selectedPackage,\n requestedVersion\n );\n manifest = versionedAppManifest;\n } catch (ex) {\n throw new EcosystemError(ERROR_TYPE.VERSION_NOT_FOUND);\n }\n }\n\n cleanedApp.manifest = manifest;\n cleanedApp.manifest.isPackage = false;\n cleanedApp.manifest.source = selectedPackage.id;\n\n return await this.applicationService\n .binary(id)\n .updateFiles([{ path: CUMULOCITY_JSON, contents: JSON.stringify(cleanedApp) }]);\n }\n\n /**\n * Creates object containing properties for filtering applications on lists.\n *\n * @param {object} app Application to create filter properties from.\n * @returns {object} Properties to filter by applications list.\n */\n getAppFilterProps(app: IApplication): AppFilterProps {\n return {\n type: this.pluginService.getPackageType(app),\n availability: this.getAppState(app)?.label,\n content: this.getPackageContentState(app)?.label\n };\n }\n\n private checkIfAppNameKeyPathExists(\n existingApps: IApplication[],\n app: IApplication,\n retryNo?: number\n ): IApplication {\n if (isUndefined(retryNo)) {\n return existingApps.find(\n existingApp =>\n existingApp.name === app.name ||\n existingApp.key === app.key ||\n existingApp.contextPath === app.contextPath\n );\n }\n return existingApps.find(\n existingApp =>\n existingApp.name === app.name ||\n existingApp.key === app.key ||\n existingApp.contextPath === app.contextPath ||\n existingApp.name === [app.name, retryNo].join('-') ||\n existingApp.key === [app.key, retryNo].join('-') ||\n existingApp.contextPath === [app.contextPath, retryNo].join('-')\n );\n }\n\n private async showModal(\n packageType: Partial<IManifest> | ApplicationPlugin,\n isPlugin: boolean,\n apiVersion: string,\n sdkVersion?: string\n ): Promise<boolean> {\n try {\n const messages = {\n plugin: {\n title: gettext('Plugin installation'),\n body: sdkVersion\n ? gettext(\n 'The current version of the plugin that you are trying to install does not satisfy the requirements for the following API version \"{{ apiVersion }}\" or SDK version \"{{ sdkVersion }}\". Do you want to proceed?'\n )\n : gettext(\n 'The current version of the plugin that you are trying to install does not satisfy the requirements for the following API version \"{{ apiVersion }}\". Do you want to proceed?'\n )\n },\n blueprint: {\n title: gettext('Blueprint installation'),\n body: sdkVersion\n ? gettext(\n 'The current version of the blueprint that you are trying to install does not satisfy the requirements for the following API version \"{{ apiVersion }}\" or SDK version \"{{ sdkVersion }}\". Do you want to proceed?'\n )\n : gettext(\n 'The current version of the blueprint that you are trying to install does not satisfy the requirements for the following API version \"{{ apiVersion }}\". Do you want to proceed?'\n )\n }\n };\n const entityType = isPlugin ? 'plugin' : 'blueprint';\n const selectedMessages = messages[entityType];\n const translatedBody = this.translateService.instant(selectedMessages.body, {\n name: packageType.name,\n apiVersion,\n sdkVersion\n });\n await this.modal.confirm(selectedMessages.title, translatedBody, 'warning', {\n ok: gettext('Continue'),\n cancel: gettext('Cancel')\n });\n } catch {\n // modal canceled\n return false;\n }\n\n return true;\n }\n\n private async getPlatformVersion() {\n return await this.appStateService.state$\n .pipe(\n take(1),\n map(state => state?.versions?.backend),\n filter(backendVersion => !!backendVersion)\n )\n .toPromise();\n }\n\n private getAppKey(appModel: IApplication, name: string): string {\n let key = appModel?.key;\n if (!key) {\n key = `${kebabCase(name)}-key`;\n }\n return key;\n }\n\n private getContextPath(appModel: IApplication, name: string): string {\n return appModel?.contextPath || name.toLowerCase();\n }\n\n private removeForbiddenCharacters(str: string): string {\n return str.replace(/[^a-zA-Z0-9-_]/g, '');\n }\n\n private isCurrentApp(app: IApplication): boolean {\n const currentApp = this.appStateService.state.app;\n return currentApp.contextPath === app.contextPath;\n }\n\n private getCumulocityJson$(archive: File): Observable<any> {\n return this.zipService.getJsonData(archive, {\n filename: CUMULOCITY_JSON\n });\n }\n\n private getAppType(archive: File): Promise<ApplicationType> {\n return this.getCumulocityJson$(archive)\n .toPromise()\n .then(\n data =>\n get(data, 'type') ||\n (get(data, 'apiVersion') ? ApplicationType.MICROSERVICE : ApplicationType.HOSTED)\n )\n .catch(() => ApplicationType.HOSTED);\n }\n\n private getBaseNameFromArchiveOrAppModel(\n archive: any,\n appType: ApplicationType,\n appModel?: IApplication\n ): string {\n let baseName = appModel?.name || archive.name.replace(/\\.zip$/i, '');\n if (appType === 'MICROSERVICE') {\n baseName = this.removeVersionFromName(baseName);\n }\n return baseName;\n }\n\n private removeAppProperties(app: IApplication): IApplication {\n const tempApp = cloneDeep(app);\n const propertiesToRemove = ['id', 'owner', 'activeVersionId', 'self', 'type'];\n\n propertiesToRemove.forEach(prop => delete tempApp[prop]);\n return tempApp;\n }\n\n private async getUploadOverrides(\n archive: File,\n app: IApplication\n ): Promise<IUploadParamsOverride> {\n const { version } = await this.getCumulocityJson$(archive).toPromise();\n const isInitialPackage = app.applicationVersions?.length === 0;\n return {\n listUrl: 'versions',\n headers: {\n Accept: 'application/vnd.com.nsn.cumulocity.applicationVersion+json;charset=UTF-8;ver=0.9'\n },\n bodyFileProperty: 'applicationBinary',\n requestBody: {\n applicationVersion: { version, ...(isInitialPackage && { tags: ['latest'] }) }\n }\n };\n }\n\n private removeVersionFromName(name: string) {\n const versionRegExp = /-\\d+\\.\\d+\\.\\d+(\\.\\d+)?(-\\d+)?(.*)$/;\n return name.replace(versionRegExp, '');\n }\n\n private isNameLengthExceeded(name, appType) {\n return name.length > MICROSERVICE_NAME_MAX_LENGTH && appType === ApplicationType.MICROSERVICE;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ApplicationAvailability, ApplicationService, IApplication } from '@c8y/client';\nimport { TranslateService } from '@ngx-translate/core';\nimport {\n AlertService,\n AppStateService,\n GainsightService,\n ModalService,\n gettext\n} from '@c8y/ngx-components';\nimport { PRODUCT_EXPERIENCE_ECOSYSTEM } from './ecosystem.model';\n\n@Injectable({ providedIn: 'root' })\nexport class PackageAvailabilityService {\n CURRENT_LOCATION = location.href;\n availabilities = [\n { label: gettext('Private`package availability`'), value: ApplicationAvailability.PRIVATE },\n { label: gettext('Market`package availability`'), value: ApplicationAvailability.MARKET },\n { label: gettext('Shared`package availability`'), value: ApplicationAvailability.SHARED }\n ];\n\n constructor(\n private appState: AppStateService,\n private alert: AlertService,\n private modal: ModalService,\n private application: ApplicationService,\n private gainsightService: GainsightService,\n private translateService: TranslateService\n ) {}\n\n async askIfAvailabilityShouldBeSetTo(\n applicationPackage: IApplication,\n availability: ApplicationAvailability\n ): Promise<IApplication> {\n // availability does not matter for tenant that do not have or can create subtenants\n if (!this.appState.currentTenant.value?.allowCreateTenants) {\n return applicationPackage;\n }\n try {\n await this.openAvailabilityModal(availability);\n // user confirmed changing availability\n return await this.setAvailability(applicationPackage, availability);\n } catch {\n // user canceled changing availability\n return applicationPackage;\n }\n }\n\n async setAvailability(\n applicationPackage: IApplication,\n availability: ApplicationAvailability\n ): Promise<IApplication> {\n try {\n const { data: app } = await this.application.updateApplicationAvailability(\n applicationPackage,\n availability\n );\n this.alert.success(gettext('Updated package availability.'));\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.AVAILABILITY,\n {\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.AVAILABILITY_CHANGE,\n result: availability.toString().toLocaleLowerCase(),\n url: this.CURRENT_LOCATION\n }\n );\n return app;\n } catch (e) {\n this.alert.warning(gettext('Failed to set package availability.'));\n this.alert.addServerFailure(e);\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.AVAILABILITY,\n {\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.AVAILABILITY_CHANGE,\n result: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.RESULTS.SERVER_FAILURE,\n url: this.CURRENT_LOCATION\n }\n );\n return applicationPackage;\n }\n }\n\n private getConfirmationBody(availability: ApplicationAvailability): string {\n switch (availability) {\n case ApplicationAvailability.SHARED:\n return gettext(\n 'Do you want to set the package availability to \"Shared\"? This will make the package available to all subtenants without explicitly subscribing the package.'\n );\n case ApplicationAvailability.MARKET:\n return gettext(\n 'Do you want to set the package availability to \"Market\"? This will make the package available to your own tenant and needs to be subscribed to subtenants individually.'\n );\n case ApplicationAvailability.PRIVATE:\n return gettext(\n 'Do you want to set the package availability to \"Private\"? This will make the package only available to your own tenant.'\n );\n default:\n return '';\n }\n }\n\n private async openAvailabilityModal(availability: ApplicationAvailability) {\n const body = this.getConfirmationBody(availability);\n const availabilityLabel = this.availabilities.find(obj => obj.value === availability).label;\n\n await this.modal.confirm(gettext('Package availability'), body, 'info', {\n ok: this.translateService.instant(gettext('Set to \"{{ packageAvailability }}\"'), {\n packageAvailability: this.translateService.instant(availabilityLabel)\n }),\n cancel: gettext('Cancel')\n });\n }\n}\n","import { Component, Input, ViewChild } from '@angular/core';\nimport { ApplicationService, IApplication, ApplicationAvailability } from '@c8y/client';\nimport {\n AlertService,\n DropAreaComponent,\n WizardComponent,\n gettext,\n WizardHeaderComponent,\n IconDirective,\n WizardBodyComponent,\n FormGroupComponent,\n MessagesComponent,\n MessageDirective,\n OperationResultComponent,\n WizardFooterComponent,\n C8yTranslateDirective,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { BehaviorSubject } from 'rxjs';\nimport { EcosystemService } from './ecosystem.service';\nimport { ERROR_MESSAGES } from './ecosystem.constants';\nimport { TranslateService } from '@ngx-translate/core';\nimport { PackageAvailabilityService } from './package-availability.service';\nimport { SupportedIconsSuggestions } from '@c8y/ngx-components/icon-selector/icons';\nimport { NgIf, NgFor, AsyncPipe } from '@angular/common';\n\nimport { PopoverDirective } from 'ngx-bootstrap/popover';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n selector: 'c8y-add-application',\n templateUrl: './add-application.component.html',\n imports: [\n WizardHeaderComponent,\n IconDirective,\n WizardBodyComponent,\n NgIf,\n FormGroupComponent,\n DropAreaComponent,\n MessagesComponent,\n MessageDirective,\n PopoverDirective,\n FormsModule,\n NgFor,\n OperationResultComponent,\n WizardFooterComponent,\n C8yTranslateDirective,\n C8yTranslatePipe,\n AsyncPipe\n ]\n})\nexport class AddApplicationComponent {\n @Input() headerText: string;\n @Input() headerIcon: SupportedIconsSuggestions;\n @Input() successText: string;\n @Input() createApplicationHandler: any;\n @Input() uploadApplicationHandler: any;\n @Input() canGoBack = false;\n @Input() applicationType: 'application' | 'package' = 'application';\n\n @ViewChild(DropAreaComponent) dropAreaComponent;\n\n isLoading: boolean;\n isAppCreated: boolean;\n createdApp: IApplication;\n canOpenInBrowser = false;\n errorMessage: string;\n selectedAvailability = ApplicationAvailability.PRIVATE;\n availabilityHelpPopoverText = gettext(`\n <p class=\"m-b-8\"><b>Shared</b> availability will make the package available to all subtenants without explicitly subscribing the package.</p>\n <p class=\"m-b-8\"><b>Market</b> availability will make the package available to your own tenant and needs to be subscribed to subtenants individually.</p>\n <p class=\"m-b-8\"><b>Private</b> availability will make the package only available to your own tenant.</p>\n `);\n private uploadCanceled = false;\n\n constructor(\n private ecosystemService: EcosystemService,\n private alertService: AlertService,\n private applicationService: ApplicationService,\n private wizardComponent: WizardComponent,\n private translateService: TranslateService,\n private packageAvailability: PackageAvailabilityService\n ) {}\n\n get progress(): BehaviorSubject<number> {\n return this.ecosystemService.progress;\n }\n\n onFileDroppedEvent(event) {\n if (event && event.length > 0) {\n const file = event[0].file;\n this.onFile(file);\n }\n }\n\n async onFile(file: File) {\n this.isLoading = true;\n this.errorMessage = null;\n this.progress.next(0);\n\n try {\n this.createdApp = await this.createApplicationHandler(file);\n if (this.applicationType === 'package') {\n this.createdApp = await this.packageAvailability.setAvailability(\n this.createdApp,\n this.selectedAvailability\n );\n }\n await this.uploadApplicationHandler(file, this.createdApp);\n this.canOpenInBrowser = this.ecosystemService.canOpenAppInBrowser(this.createdApp);\n this.isAppCreated = true;\n } catch (ex) {\n this.ecosystemService.cancelAppCreation(this.createdApp);\n this.createdApp = null;\n this.dropAreaComponent.onDelete();\n // prepare translation of static message if it exists\n const staticErrorMessage =\n ERROR_MESSAGES[ex.message] && this.translateService.instant(ERROR_MESSAGES[ex.message]);\n // if there is no static message, use dynamic one from the exception\n this.errorMessage = staticErrorMessage ?? ex.message;\n if (!this.errorMessage && !this.uploadCanceled) {\n this.alertService.addServerFailure(ex);\n }\n }\n this.progress.next(100);\n this.isLoading = false;\n }\n\n getHref(app: IApplication): string {\n return this.applicationService.getHref(app);\n }\n\n cancel() {\n this.cancelFileUpload();\n this.wizardComponent.close();\n }\n\n done() {\n this.wizardComponent.close();\n }\n\n back() {\n this.wizardComponent.reset();\n }\n\n private cancelFileUpload() {\n this.uploadCanceled = true;\n this.ecosystemService.cancelAppCreation(this.createdApp);\n this.createdApp = null;\n }\n}\n","<c8y-wizard-header>\n <i [c8yIcon]=\"headerIcon\"></i>\n <h4 id=\"modal-title\">{{ headerText | translate }}</h4>\n</c8y-wizard-header>\n\n<c8y-wizard-body>\n <p class=\"p-16 text-center text-medium separator-bottom sticky-top bg-component\">\n {{ 'Upload a *.zip file' | translate }}\n </p>\n <c8y-form-group\n class=\"m-t-16 m-l-auto m-r-auto\"\n style=\"max-width: 265px\"\n id=\"modal-body\"\n *ngIf=\"!isAppCreated; else appCreated\"\n [hasError]=\"!!errorMessage\"\n >\n <c8y-drop-area\n class=\"drop-area\"\n (dropped)=\"onFileDroppedEvent($event)\"\n [accept]=\"'.zip'\"\n [loading]=\"isLoading\"\n [maxAllowedFiles]=\"1\"\n [progress]=\"progress | async\"\n ></c8y-drop-area>\n <c8y-messages>\n <c8y-message *ngIf=\"errorMessage\">\n {{ errorMessage | translate }}\n </c8y-message>\n </c8y-messages>\n </c8y-form-group>\n <div class=\"card-block\" *ngIf=\"applicationType === 'package'\">\n <c8y-form-group>\n <label\n class=\"m-r-8 d-inline-block\"\n id=\"availabilitySelectorLabel\"\n for=\"availabilitySelector\"\n >\n {{ 'Select extension availability' | translate }}\n </label>\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"availabilityHelpPopover\"\n placement=\"top\"\n triggers=\"focus\"\n type=\"button\"\n ></button>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"availabilitySelector\"\n name=\"availabilitySelector\"\n [(ngModel)]=\"selectedAvailability\"\n >\n <option\n *ngFor=\"let availability of packageAvailability.availabilities\"\n [ngValue]=\"availability.value\"\n >\n {{ availability.label | translate }}\n </option>\n </select>\n </div>\n </c8y-form-group>\n </div>\n <ng-template #appCreated>\n <div\n class=\"d-flex a-i-center j-c-center\"\n style=\"min-height: 285px\"\n >\n <c8y-operation-result\n class=\"lead\"\n type=\"success\"\n text=\"{{ successText | translate }}\"\n [vertical]=\"true\"\n [size]=\"84\"\n ></c8y-operation-result>\n </div>\n </ng-template>\n <ng-template #availabilityHelpPopover>\n <div [innerHtml]=\"availabilityHelpPopoverText | translate\"></div>\n </ng-template>\n</c8y-wizard-body>\n\n<c8y-wizard-footer>\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Back' | translate }}\"\n type=\"button\"\n (click)=\"back()\"\n *ngIf=\"!isAppCreated && canGoBack\"\n translate\n >\n Back\n </button>\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n (click)=\"cancel()\"\n *ngIf=\"!isAppCreated\"\n translate\n >\n Cancel\n </button>\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Done' | translate }}\"\n type=\"button\"\n (click)=\"done()\"\n *ngIf=\"isAppCreated\"\n translate\n >\n Done\n </button>\n <a\n class=\"btn btn-primary\"\n title=\"{{ 'Open' | translate }}\"\n target=\"_blank\"\n (click)=\"$event.stopPropagation()\"\n *ngIf=\"isAppCreated && canOpenInBrowser\"\n [href]=\"getHref(createdApp)\"\n rel=\"noopener noreferrer\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"external-link\"\n ></i>\n {{ 'Open' | translate }}\n </a>\n</c8y-wizard-footer>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { PackageType } from '@c8y/ngx-components';\nimport { PACKAGE_TYPE_LABELS } from './ecosystem.constants';\n\n@Pipe({ name: 'translatePackageLabel' })\nexport class TranslatePackageLabelPipe implements PipeTransform {\n constructor(private translate: TranslateService) {}\n\n transform(\n rawPackageLabel: PackageType.OFFICIAL | PackageType.COMMUNITY | PackageType.ARCHIVED | string\n ): string {\n const isOneOfTheKnownOnes = !!PACKAGE_TYPE_LABELS[rawPackageLabel?.toUpperCase()];\n if (isOneOfTheKnownOnes) {\n return this.translate.instant(PACKAGE_TYPE_LABELS[rawPackageLabel?.toUpperCase()].label);\n }\n return rawPackageLabel;\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { ApplicationService, IApplication, IApplicationVersion } from '@c8y/client';\nimport {\n AlertService,\n GainsightService,\n gettext,\n PackageType,\n PluginsService,\n Wizard,\n WizardComponent,\n WizardConfig,\n WizardModalService,\n AppIconComponent,\n IconDirective,\n IfAllowedDirective,\n C8yTranslatePipe,\n HumanizeAppNamePipe\n} from '@c8y/ngx-components';\nimport { ModalOptions } from 'ngx-bootstrap/modal';\nimport { BehaviorSubject } from 'rxjs';\nimport { EcosystemService } from './ecosystem.service';\nimport { PRODUCT_EXPERIENCE_ECOSYSTEM } from './ecosystem.model';\nimport { DuplicateApplicationComponent } from './duplicate-application/duplicate-application.component';\nimport { APP_STATE, ApplicationState, PACKAGE_TYPE_LABELS } from './ecosystem.constants';\nimport { NgIf, NgClass, AsyncPipe } from '@angular/common';\nimport { TooltipDirective } from 'ngx-bootstrap/tooltip';\nimport {\n BsDropdownDirective,\n BsDropdownToggleDirective,\n BsDropdownMenuDirective\n} from 'ngx-bootstrap/dropdown';\nimport { CdkTrapFocus } from '@angular/cdk/a11y';\nimport { TranslatePackageLabelPipe } from './translate-package-label.pipe';\n\n@Component({\n selector: 'c8y-application-card',\n templateUrl: './application-card.component.html',\n imports: [\n NgIf,\n TooltipDirective,\n NgClass,\n AppIconComponent,\n IconDirective,\n BsDropdownDirective,\n CdkTrapFocus,\n BsDropdownToggleDirective,\n BsDropdownMenuDirective,\n IfAllowedDirective,\n C8yTranslatePipe,\n AsyncPipe,\n HumanizeAppNamePipe,\n TranslatePackageLabelPipe\n ]\n})\nexport class ApplicationCardComponent implements OnInit {\n CURRENT_LOCATION = location.href;\n\n @Input() app: IApplication;\n @Input() canEdit = true;\n @Output() onAppDeleted: EventEmitter<void> = new EventEmitter();\n @Output() onAppCloned: EventEmitter<void> = new EventEmitter();\n appState: ApplicationState;\n packageContentState: ApplicationState;\n packageType: PackageType;\n canOpenInBrowser: boolean;\n disableOpenInBrowser: boolean;\n canDelete: boolean;\n isPackage: boolean;\n isPlugin: boolean;\n isFeature: boolean;\n isExternal: boolean;\n isMicroservice: boolean;\n canClone: boolean;\n isUnpacked: boolean;\n shouldUpgradePackage: boolean;\n blueprintApplicationVersion: IApplicationVersion[];\n latestApplicationVersion: IApplicationVersion;\n isShowVersion: boolean;\n isOwnedByManagementTenant: boolean;\n get openButtonTitle() {\n return !this.disableOpenInBrowser\n ? gettext('Open')\n : gettext('This application is overridden.');\n }\n\n readonly packageTypeLabels = PACKAGE_TYPE_LABELS;\n readonly PACKAGE_TYPE = PackageType;\n readonly UNPACKED_LABEL = APP_STATE.UNPACKED.label;\n readonly CANNOT_DELETE_HINT = gettext(\n `Subscribed or current applications can't be deleted. Delete the application on the parent tenant or unsubscribe it from the current.`\n );\n readonly PACKAGE_CONTENT_UNDETERMINED_LABEL = gettext(\n 'Package contents could not be determined.'\n );\n\n constructor(\n private applicationService: ApplicationService,\n private ecosystemService: EcosystemService,\n private alertService: AlertService,\n private router: Router,\n private wizardModalService: WizardModalService,\n private alert: AlertService,\n private pluginService: PluginsService,\n private gainsightService: GainsightService\n ) {}\n\n async ngOnInit() {\n this.appState = this.ecosystemService.getAppState(this.app);\n this.canOpenInBrowser = this.ecosystemService.canOpenAppInBrowser(this.app);\n this.packageType = this.pluginService.getPackageType(this.app);\n this.disableOpenInBrowser =\n this.canOpenInBrowser && (await this.ecosystemService.isOverwrittenByCustomApp(this.app));\n this.canDelete = await this.ecosystemService.canDeleteApp(this.app);\n this.isPackage = this.ecosystemService.isPackage(this.app);\n this.packageContentState = this.ecosystemService.getPackageContentState(this.app);\n this.isPlugin = this.ecosystemService.isPlugin(this.app);\n this.isFeature = this.ecosystemService.isFeature(this.app);\n this.isMicroservice = this.ecosystemService.isMicroservice(this.app);\n this.isExternal = this.ecosystemService.isExternal(this.app);\n this.canClone = !this.isMicroservice && !this.isPlugin;\n this.isUnpacked = this.ecosystemService.isUnpacked(this.app);\n this.isShowVersion = this.shouldShowVersion();\n await this.applicationUpdateCheck();\n }\n\n shouldShowVersion() {\n return !!this.app.manifest?.version;\n }\n\n detail() {\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.APPLICATION_CARD,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.APPLICATION_CARD,\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.EDIT,\n url: this.CURRENT_LOCATION\n }\n );\n\n if (this.isMicroservice) {\n this.router.navigateByUrl(`/ecosystem/microservice/microservices/${this.app.id}`);\n return;\n }\n\n if (this.isPackage) {\n this.router.navigateByUrl(`/ecosystem/extension/extensions/${this.app.id}`);\n return;\n }\n\n if (this.isFeature) {\n this.router.navigateByUrl(`/ecosystem/application/features/${this.app.id}`);\n return;\n }\n\n this.router.navigateByUrl(`/ecosystem/application/applications/${this.app.id}`);\n }\n\n openApp() {\n this.ecosystemService.openApp(this.app);\n }\n\n async delete() {\n try {\n await this.ecosystemService.deleteApp(this.app);\n this.onAppDeleted.emit();\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.APPLICATION_CARD,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.APPLICATION_CARD,\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.DELETE,\n url: this.CURRENT_LOCATION\n }\n );\n } catch (ex) {\n if (ex) {\n this.alertService.addServerFailure(ex);\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.APPLICATION_CARD,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.APPLICATION_CARD,\n result: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.RESULTS.SERVER_FAILURE,\n url: this.CURRENT_LOCATION\n }\n );\n }\n }\n }\n\n async clone() {\n const wizardConfig: WizardConfig = {\n headerText: 'Add Application',\n headerIcon: 'c8y-atom'\n };\n\n const initialState: Wizard<DuplicateApplicationComponent> = {\n wizardConfig,\n componentInitialState: {\n selectedApp: new BehaviorSubject(this.app)\n },\n id: 'duplicateApplication'\n };\n\n const modalOptions: ModalOptions<WizardComponent> = { initialState };\n\n const modalRef = this.wizardModalService.show(modalOptions);\n modalRef.content.onClose.subscribe(() => {\n this.onAppCloned.next();\n });\n\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.APPLICATION_CARD,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.APPLICATION_CARD,\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.CLONE,\n url: this.CURRENT_LOCATION\n }\n );\n }\n\n private async applicationUpdateCheck(): Promise<void> {\n if (this.app.manifest?.source) {\n try {\n this.blueprintApplicationVersion = (\n await this.applicationService.listVersions(this.app.manifest?.source)\n ).data;\n\n this.latestApplicationVersion = this.ecosystemService.getApplicationVersionObjectByTag(\n this.blueprintApplicationVersion,\n 'latest'\n );\n this.shouldUpgradePackage = this.ecosystemService.shouldUpgradePackage(\n this.app.manifest?.version,\n this.latestApplicationVersion\n );\n } catch (error) {\n if (!this.blueprintApplicationVersion) {\n return;\n }\n this.alert.addServerFailure(error);\n }\n }\n }\n}\n","<div\n class=\"card pointer card--d-col notFeature\"\n data-cy=\"application-card--extensions-list\"\n *ngIf=\"!isFeature\"\n>\n <div\n class=\"card-block text-center card-column-40\"\n data-cy=\"application-card--package-name\"\n (click)=\"detail()\"\n >\n <button\n class=\"card__ribbon btn-clean\"\n [attr.aria-label]=\"\n (app.label || app.manifest?.label | translatePackageLabel) +\n ': ' +\n (packageTypeLabels[packageType].tooltip | translate)\n \"\n tooltip=\"{{ packageTypeLabels[packageType].tooltip | translate }}\"\n placement=\"right\"\n type=\"button\"\n *ngIf=\"packageType !== PACKAGE_TYPE.CUSTOM\"\n [delay]=\"500\"\n >\n <span\n [ngClass]=\"{\n 'bg-info': packageType === PACKAGE_TYPE.COMMUNITY,\n 'bg-primary': packageType === PACKAGE_TYPE.OFFICIAL,\n 'bg-warning': packageType === PACKAGE_TYPE.ARCHIVED\n }\"\n >\n {{ app.label || app.manifest?.label | translatePackageLabel }}\n </span>\n </button>\n <div class=\"card-appicon\">\n <c8y-app-icon\n *ngIf=\"!isPackage && !isFeature && !isMicroservice && !isExternal\"\n [app]=\"app\"\n [contextPath]=\"app.contextPath\"\n [name]=\"app.name\"\n ></c8y-app-icon>\n <i\n c8yIcon=\"big-parcel\"\n *ngIf=\"isPackage\"\n ></i>\n <i\n c8yIcon=\"microchip\"\n *ngIf=\"isMicroservice\"\n ></i>\n <i\n c8yIcon=\"globe1\"\n *ngIf=\"isExternal\"\n ></i>\n </div>\n <div style=\"line-height: 1.3\">\n <p class=\"e2e-appCardName text-medium text-break-word\">\n {{ app | humanizeAppName | async }}\n </p>\n <ng-container *ngIf=\"isShowVersion\">\n <p class=\"small text-muted\">\n <em>{{ app.manifest.version }}</em>\n <button\n class=\"btn-clean m-l-4\"\n [attr.aria-label]=\"'Update available' | translate\"\n [tooltip]=\"'Update available' | translate\"\n *ngIf=\"shouldUpgradePackage && isUnpacked\"\n >\n <i\n class=\"text-warning icon-16\"\n c8yIcon=\"exclamation-triangle\"\n ></i>\n </button>\n </p>\n </ng-container>\n <p\n class=\"small text-break-word\"\n *ngIf=\"app.manifest?.author\"\n >\n {{ app.manifest.author }}\n </p>\n </div>\n </div>\n <div\n class=\"card-block p-0 no-min-height card--d-col card-column-80 flex-grow\"\n (click)=\"detail()\"\n >\n <div class=\"card-block no-min-height p-t-0 p-b-0 card-column-80\">\n <div class=\"text-center-grid\">\n <div class=\"p-b-8 card-hidden-grid\"></div>\n <p\n class=\"small l-h-tight p-b-8 p-l-0 p-r-0 text-break-word\"\n *ngIf=\"app.description || app.manifest?.description\"\n >\n {{ app.description || app.manifest?.description | translate }}\n </p>\n <p\n class=\"small l-h-tight p-b-8 p-l-0 p-r-0\"\n *ngIf=\"!app.description && !app.manifest?.description\"\n >\n <em class=\"text-muted\">{{ 'No description available.' | translate }}</em>\n </p>\n </div>\n </div>\n <div\n class=\"card-block no-min-height p-t-0 p-b-0 d-flex card-column-20 text-center-grid flex-wrap gap-8\"\n >\n <button\n class=\"btn-clean\"\n [attr.aria-label]=\"\n ((isUnpacked ? UNPACKED_LABEL : appState?.label) | translate) +\n ': ' +\n (appState?.tooltip | translate)\n \"\n [tooltip]=\"appState?.tooltip | translate\"\n placement=\"top\"\n [delay]=\"500\"\n >\n <span\n class=\"label\"\n [ngClass]=\"appState?.class\"\n >\n {{ appState?.label | translate }}\n </span>\n </button>\n <button\n class=\"btn-clean\"\n [attr.aria-label]=\"\n (packageContentState?.label | translate) +\n ': ' +\n (packageContentState?.tooltip\n ? packageContentState?.tooltip\n : PACKAGE_CONTENT_UNDETERMINED_LABEL) | translate\n \"\n [tooltip]=\"\n (packageContentState?.tooltip\n ? packageContentState?.tooltip\n : PACKAGE_CONTENT_UNDETERMINED_LABEL\n ) | translate\n \"\n placement=\"top\"\n *ngIf=\"isPackage\"\n >\n <span\n class=\"label\"\n [ngClass]=\"packageContentState?.class ? packageContentState?.class : 'label-danger'\"\n >\n {{\n packageContentState?.label || packageTypeLabels[PACKAGE_TYPE.UNKNOWN].label | translate\n }}\n </span>\n </button>\n </div>\n <div class=\"card-footer no-min-height p-t-0 p-b-0 card-column-20 text-center-grid\">\n <div class=\"p-b-16 card-hidden-list\"></div>\n <button\n class=\"btn btn-sm btn-default\"\n [title]=\"openButtonTitle | translate\"\n type=\"button\"\n (click)=\"openApp(); $event.stopPropagation()\"\n *ngIf=\"canOpenInBrowser\"\n [disabled]=\"disableOpenInBrowser\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"external-link\"\n ></i>\n {{ 'Open' | translate }}\n </button>\n <div class=\"p-b-32 card-hidden-list\"></div>\n </div>\n </div>\n <div class=\"p-r-40 card-hidden-grid\"></div>\n <div\n class=\"card-actions m-t-0\"\n *ngIf=\"canEdit || canOpenInBrowser || canDelete\"\n >\n <div\n class=\"dropdown\"\n #appCardDropdown=\"bs-dropdown\"\n dropdown\n [cdkTrapFocus]=\"appCardDropdown.isOpen\"\n >\n <button\n class=\"dropdown-toggle c8y-dropdown\"\n title=\"{{ 'Settings' | translate }}\"\n data-cy=\"application-card--settings-button\"\n type=\"button\"\n dropdownToggle\n >\n <i c8yIcon=\"ellipsis-v\"></i>\n </button>\n <ul\n class=\"dropdown-menu dropdown-menu-right\"\n *dropdownMenu\n >\n <li *ngIf=\"canEdit\">\n <button\n title=\"{{ 'Edit' | translate }}\"\n data-cy=\"application-card--edit-button\"\n (click)=\"detail()\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"pencil\"\n ></i>\n {{ 'Edit' | translate }}\n </button>\n </li>\n <ng-container *c8yIfAllowed=\"['ROLE_APPLICATION_MANAGEMENT_ADMIN']\">\n <li>\n <button\n [title]=\"canDelete ? ('Delete' | translate) : (CANNOT_DELETE_HINT | translate)\"\n type=\"button\"\n data-cy=\"application-card--delete-button\"\n [disabled]=\"!canDelete\"\n (click)=\"delete()\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"delete\"\n ></i>\n {{ 'Delete' | translate }}\n </button>\n </li>\n <li *ngIf=\"canClone\">\n <button\n [title]=\"'Clone`package,verb`' | translate\"\n type=\"button\"\n *ngIf=\"isPackage\"\n (click)=\"clone()\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"copy\"\n ></i>\n {{ 'Clone`package,verb`' | translate }}\n </button>\n <button\n [title]=\"'Clone`application,verb`' | translate\"\n type=\"button\"\n *ngIf=\"!isPackage\"\n (click)=\"clone()\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"copy\"\n ></i>\n {{ 'Clone`application,verb`' | translate }}\n </button>\n </li>\n </ng-container>\n </ul>\n </div>\n </div>\n</div>\n\n<button\n class=\"card pointer card--d-col\"\n type=\"button\"\n (click)=\"detail()\"\n *ngIf=\"isFeature\"\n>\n <div class=\"card-block text-center card-column-40\">\n <div class=\"card-appicon\">\n <c8y-app-icon\n *ngIf=\"!isPackage && !isFeature && !isMicroservice && !isExternal\"\n [app]=\"app\"\n [contextPath]=\"app.contextPath\"\n [name]=\"app.name\"\n ></c8y-app-icon>\n <i c8yIcon=\"tab\"></i>\n </div>\n <div>\n <p\n class=\"e2e-appCardName text-medium\"\n title=\"{{ app | humanizeAppName | async }}\"\n >\n {{ app | humanizeAppName | async }}\n </p>\n <ng-container *ngIf=\"isShowVersion\">\n <p class=\"small text-muted\">\n <em>{{ app.manifest.version }}</em>\n <i\n class=\"text-warning m-l-4\"\n c8yIcon=\"exclamation-triangle\"\n [tooltip]=\"'Update available' | translate\"\n *ngIf=\"shouldUpgradePackage && isUnpacked\"\n ></i>\n </p>\n </ng-container>\n </div>\n </div>\n <div class=\"card-block p-0 no-min-height card--d-col card-column-80 flex-grow\">\n <div class=\"card-block no-min-height p-t-0 p-b-0 card-column-80\">\n <div\n class=\"text-center-grid\"\n *ngIf=\"app.description || app.manifest?.description\"\n >\n <div class=\"p-b-8 card-hidden-grid\"></div>\n <p class=\"small l-h-tight p-b-8 p-l-0 p-r-0\">\n {{ app.description || app.manifest?.description | translate }}\n </p>\n </div>\n </div>\n <div class=\"card-block no-min-height p-t-0 p-b-0 card-column-20 text-center-grid\">\n <span\n class=\"label\"\n [ngClass]=\"appState.class\"\n >\n {{ appState.label | translate }}\n </span>\n </div>\n <div\n class=\"card-block no-min-height p-t-0 p-b-0 card-column-20 text-center-grid\"\n *ngIf=\"isPackage\"\n >\n <span\n class=\"label\"\n [ngClass]=\"packageContentState.class\"\n >\n {{ packageContentState.label | translate }}\n </span>\n </div>\n <div class=\"p-b-32 card-hidden-list\"></div>\n </div>\n</button>\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport {\n FormBuilder,\n FormGroup,\n Validators,\n FormsModule,\n ReactiveFormsModule\n} from '@angular/forms';\nimport { IApplication } from '@c8y/client';\nimport {\n FormGroupComponent,\n C8yTranslateDirective,\n RequiredInputPlaceholderDirective,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { IconSelectorWrapperComponent } from '@c8y/ngx-components/icon-selector';\n\n@Component({\n selector: 'c8y-application-properties-form',\n templateUrl: './application-properties-form.component.html',\n imports: [\n FormsModule,\n ReactiveFormsModule,\n FormGroupComponent,\n C8yTranslateDirective,\n RequiredInputPlaceholderDirective,\n IconSelectorWrapperComponent,\n C8yTranslatePipe\n ]\n})\nexport class ApplicationPropertiesFormComponent implements OnChanges {\n formGroup: FormGroup;\n @Input() application: IApplication;\n @Input() disabled = false;\n\n constructor(private formBuilder: FormBuilder) {\n this.initForm();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (\n changes.application &&\n changes.application.currentValue !== changes.application.previousValue\n ) {\n this.setForm(this.application);\n }\n if (changes.disabled && changes.disabled.currentValue !== changes.disabled.previousValue) {\n changes.disabled.currentValue ? this.formGroup.disable() : this.formGroup.enable();\n }\n }\n\n private initForm() {\n this.formGroup = this.formBuilder.group({\n name: [Validators.required, Validators.maxLength(120)],\n key: [Validators.required, Validators.maxLength(120)],\n contextPath: [Validators.required, Validators.maxLength(120)],\n icon: [undefined, [Validators.minLength(1)]]\n });\n }\n\n private setForm(applicationConfig: IApplication) {\n this.formGroup.patchValue({ ...applicationConfig });\n }\n}\n","<form\n class=\"c8y-wizard-form text-left\"\n name=\"appDeployForm\"\n (ngSubmit)=\"(formGroup.valid)\"\n [formGroup]=\"formGroup\"\n novalidate\n>\n <c8y-form-group>\n <label\n for=\"name\"\n translate\n >\n Name\n </label>\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g. My application' | translate }}\"\n name=\"name\"\n type=\"text\"\n required\n formControlName=\"name\"\n />\n </c8y-form-group>\n <c8y-form-group>\n <label\n for=\"key\"\n translate\n >\n Application key\n </label>\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g. my-application-key' | translate }}\"\n name=\"key\"\n type=\"text\"\n required\n formControlName=\"key\"\n />\n </c8y-form-group>\n <c8y-form-group>\n <label\n for=\"contextPath\"\n translate\n >\n Path\n </label>\n <div class=\"input-group\">\n <span class=\"input-group-addon\">/apps/</span>\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g. my-application' | translate }}\"\n name=\"contextPath\"\n type=\"text\"\n required\n formControlName=\"contextPath\"\n />\n </div>\n </c8y-form-group>\n <c8y-form-group>\n <label>{{ 'Select icon' | translate }}</label>\n <c8y-icon-selector-wrapper\n name=\"icon\"\n formControlName=\"icon\"\n ></c8y-icon-selector-wrapper>\n </c8y-form-group>\n</form>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { IApplication } from '@c8y/client';\nimport {\n C8yStepper,\n WizardComponent,\n AppIconComponent,\n WizardFooterComponent,\n C8yTranslatePipe,\n HumanizeAppNamePipe\n} from '@c8y/ngx-components';\nimport { ApplicationState } from '../../ecosystem.constants';\nimport { EcosystemService } from '../../ecosystem.service';\nimport { NgFor, NgClass, AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'c8y-duplicate-application-list',\n templateUrl: './duplicate-application-list.component.html',\n imports: [\n NgFor,\n AppIconComponent,\n NgClass,\n WizardFooterComponent,\n C8yTranslatePipe,\n AsyncPipe,\n HumanizeAppNamePipe\n ]\n})\nexport class DuplicateApplicationListComponent {\n @Input() stepper: C8yStepper;\n @Input() existingApps: IApplication[];\n @Output() onSelectedApp = new EventEmitter<IApplication>();\n appState: ApplicationState;\n\n constructor(\n public ecosystemService: EcosystemService,\n private wizardComponent: WizardComponent\n ) {}\n\n select(selectedApp: IApplication) {\n this.onSelectedApp.emit(selectedApp);\n this.stepper.next();\n }\n\n cancel() {\n this.wizardComponent.close();\n }\n\n back() {\n this.wizardComponent.reset();\n }\n}\n","<div class=\"c8y-wizard-list-nav\">\n <button\n (click)=\"select(app)\"\n *ngFor=\"let app of existingApps\"\n class=\"list-group-item text-truncate p-t-8 p-b-8 bg-level-0\"\n type=\"button\"\n >\n <c8y-app-icon\n [app]=\"app\"\n [contextPath]=\"app.contextPath\"\n [name]=\"app.name\"\n class=\"list-group-icon\"\n ></c8y-app-icon>\n <span [innerText]=\"app | humanizeAppName | async\" class=\"pointer\"></span>\n <span [ngClass]=\"ecosystemService.getAppState(app).class\" class=\"label m-l-16\">\n {{ ecosystemService.getAppState(app).label | translate }}\n </span>\n </button>\n</div>\n<c8y-wizard-footer>\n <button (click)=\"back()\" class=\"btn btn-default\" title=\"{{ 'Back' | translate }}\" type=\"button\">\n {{ 'Back' | translate }}\n </button>\n <button\n (click)=\"cancel()\"\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n >\n {{ 'Cancel' | translate }}\n </button>\n</c8y-wizard-footer>\n","import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { ApplicationService, IApplication } from '@c8y/client';\nimport {\n C8yStepper,\n GainsightService,\n LoadingComponent,\n WizardFooterComponent,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { distinctUntilKeyChanged, map, tap } from 'rxjs/operators';\nimport { APP_STATE } from '../../ecosystem.constants';\nimport { EcosystemService } from '../../ecosystem.service';\nimport { ApplicationPropertiesFormComponent } from '../../application-properties-form.component';\nimport { PRODUCT_EXPERIENCE_ECOSYSTEM } from '../../ecosystem.model';\nimport { NgIf, AsyncPipe } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n selector: 'c8y-duplicate-application-properties',\n templateUrl: './duplicate-application-properties.component.html',\n imports: [\n NgIf,\n FormsModule,\n ApplicationPropertiesFormComponent,\n LoadingComponent,\n WizardFooterComponent,\n C8yTranslatePipe,\n AsyncPipe\n ]\n})\nexport class DuplicateApplicationPropertiesComponent {\n CURRENT_LOCATION = location.href;\n\n @Input() stepper: C8yStepper;\n @Input() existingApps: IApplication[];\n @Input() selectedApp: BehaviorSubject<IApplication>;\n @Input() isFirstStep = false;\n @Output() duplicatedApp = new EventEmitter<IApplication>();\n @ViewChild(ApplicationPropertiesFormComponent)\n applicationPropertiesForm: ApplicationPropertiesFormComponent;\n newAppConfig: IApplication;\n disableForm = false;\n isSubscribedApp$: Observable<boolean>;\n\n inProgress = false;\n\n constructor(\n private bsModalRef: BsModalRef,\n private ecosystemService: EcosystemService,\n private applicationService: ApplicationService,\n private gainsightService: GainsightService\n ) {}\n\n ngOnInit() {\n this.isSubscribedApp$ = this.selectedApp.pipe(\n distinctUntilKeyChanged('id'),\n map(app => (app ? this.ecosystemService.getAppState(app) === APP_STATE.SUBSCRIBED : true)),\n tap(isSubscribed => {\n this.disableForm = isSubscribed;\n this.getAppConfig();\n })\n );\n this.getAppConfig();\n }\n\n async duplicateApp() {\n const formGroupValue = this.applicationPropertiesForm.formGroup.getRawValue();\n this.inProgress = true;\n let { data: clonedApp } = await this.applicationService.clone(this.selectedApp.value);\n // TODO: remove once MTM-48474 has been merged\n clonedApp = this.ecosystemService.setAvailabilityToPrivateIfNotSetAlready(clonedApp);\n Object.assign(clonedApp, formGroupValue);\n if (formGroupValue.icon) {\n const icon = { class: formGroupValue.icon };\n clonedApp.config = { ...clonedApp.config, icon };\n if (clonedApp.manifest) {\n clonedApp.manifest.icon = icon;\n }\n }\n delete clonedApp.type;\n await this.updateApp(clonedApp);\n this.inProgress = false;\n\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.DUPLICATE_APPLICATION,\n {\n component:\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.DUPLICATE_APPLICATION_PROPERTIES,\n result: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.RESULTS.DUPLICATED,\n url: this.CURRENT_LOCATION\n }\n );\n }\n\n cancel() {\n this.bsModalRef.hide();\n\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.DUPLICATE_APPLICATION,\n {\n component:\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.DUPLICATE_APPLICATION_PROPERTIES,\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.CANCEL,\n url: this.CURRENT_LOCATION\n }\n );\n }\n\n back() {\n this.stepper.previous();\n }\n\n getAppConfig() {\n if (this.disableForm) {\n const { name, key, contextPath } = this.selectedApp.value;\n this.newAppConfig = { name, key, contextPath };\n } else {\n this.newAppConfig = this.ecosystemService.getUniqueAppConfig(\n this.selectedApp.value,\n this.existingApps\n );\n }\n }\n\n private async updateApp(clonedAppConfig: Partial<IApplication>) {\n try {\n const { data: app } = await this.ecosystemService.updateApp(clonedAppConfig, true);\n const manifest = await this.getAppManifest(app);\n if (manifest) {\n await this.updateManifest(app, manifest);\n }\n\n this.duplicatedApp.emit(app);\n this.stepper.next();\n } catch (err) {\n this.inProgress = false;\n }\n }\n\n private async updateManifest(app: IApplication, manifest: any) {\n const keysToUpdate: Array<keyof IApplication> = ['name', 'key', 'contextPath'];\n const someKeyDiffers = keysToUpdate.some(key => app[key] !== manifest[key]);\n if (someKeyDiffers) {\n keysToUpdate.forEach(key => {\n manifest[key] = app[key];\n });\n await this.applicationService.storeAppManifest(app, manifest);\n }\n }\n\n private async getAppManifest(app: IApplication) {\n if (!app?.contextPath) {\n return;\n }\n try {\n const manifest = await this.applicationService.getAppManifest(app);\n return manifest;\n } catch (ex) {\n return;\n }\n }\n}\n","<p\n class=\"p-16 text-center text-medium separator-bottom sticky-top bg-level-0 fit-w\"\n *ngIf=\"!inProgress\"\n>\n {{ 'Provide application details' | translate }}\n</p>\n\n<ng-container *ngIf=\"!inProgress\">\n <label class=\"c8y-switch\" *ngIf=\"isSubscribedApp$ | async\">\n <input type=\"checkbox\" [(ngModel)]=\"disableForm\" (change)=\"getAppConfig()\" />\n <span></span> {{ 'Overrule subscribed application' | translate }}\n </label>\n\n <c8y-application-properties-form\n [application]=\"newAppConfig\"\n class=\"d-block fit-w\"\n [disabled]=\"disableForm\"\n ></c8y-application-properties-form>\n</ng-container>\n<c8y-loading\n *ngIf=\"inProgress\"\n [message]=\"'Duplicating…' | translate\"\n layout=\"application\"\n class=\"text-center d-block\"\n></c8y-loading>\n\n<c8y-wizard-footer>\n <button\n *ngIf=\"!isFirstStep\"\n (click)=\"back()\"\n [disabled]=\"inProgress\"\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Back' | translate }}\"\n >\n {{ 'Back' | translate }}\n </button>\n <button (click)=\"cancel()\" class=\"btn btn-default\" title=\"{{ 'Cancel' | translate }}\">\n {{ 'Cancel' | translate }}\n </button>\n <button\n (click)=\"duplicateApp()\"\n [disabled]=\"inProgress\"\n class=\"btn btn-primary\"\n type=\"button\"\n title=\"{{ 'Duplicate' | translate }}\"\n >\n {{ 'Duplicate' | translate }}\n </button>\n</c8y-wizard-footer>\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { ApplicationService, IApplication } from '@c8y/client';\nimport {\n C8yStepper,\n WizardComponent,\n WizardHeaderComponent,\n IconDirective,\n C8yTranslateDirective,\n WizardBodyComponent,\n OperationResultComponent,\n WizardFooterComponent,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { BehaviorSubject } from 'rxjs';\nimport { EcosystemService } from '../ecosystem.service';\n\nimport { NgIf } from '@angular/common';\nimport { CdkStep } from '@angular/cdk/stepper';\nimport { DuplicateApplicationListComponent } from './duplicate-application-list/duplicate-application-list.component';\nimport { DuplicateApplicationPropertiesComponent } from './duplicate-application-properties/duplicate-application-properties.component';\n\n@Component({\n selector: 'c8y-duplicate-application',\n templateUrl: './duplicate-application.component.html',\n imports: [\n WizardHeaderComponent,\n IconDirective,\n C8yTranslateDirective,\n WizardBodyComponent,\n C8yStepper,\n NgIf,\n CdkStep,\n DuplicateApplicationListComponent,\n DuplicateApplicationPropertiesComponent,\n OperationResultComponent,\n WizardFooterComponent,\n C8yTranslatePipe\n ]\n})\nexport class DuplicateApplicationComponent implements OnInit {\n @ViewChild(C8yStepper, { static: true })\n stepper: C8yStepper;\n duplicatedApp: IApplication;\n selectedApp: BehaviorSubject<IApplication> = new BehaviorSubject<IApplication>(null);\n existingApps: IApplication[] = [];\n directlyMoveToSecondStep = false;\n noBackButton = false;\n\n constructor(\n private ecosystemService: EcosystemService,\n private applicationService: ApplicationService,\n private wizardComponent: WizardComponent\n ) {}\n\n async ngOnInit() {\n this.existingApps = await this.ecosystemService.getWebApplications();\n if (this.selectedApp.value) {\n this.directlyMoveToSecondStep = true;\n }\n }\n\n onSelectedApp(app: IApplication) {\n this.selectedApp.next(app);\n }\n\n getHref(app: IApplication): string {\n return this.applicationService.getHref(app);\n }\n\n done() {\n this.wizardComponent.close();\n }\n}\n","<c8y-wizard-header>\n <i [c8yIcon]=\"'copy'\"></i>\n <h4\n id=\"modal-title\"\n translate\n >\n Duplicate application\n </h4>\n</c8y-wizard-header>\n\n<c8y-wizard-body id=\"modal-body\">\n <c8y-stepper\n [disableDefaultIcons]=\"{ edit: true, done: false }\"\n [customClasses]=\"['hidden']\"\n linear\n >\n <!-- 1st step -->\n <cdk-step *ngIf=\"!directlyMoveToSecondStep\">\n <p class=\"p-16 text-center text-medium separator-bottom sticky-top bg-level-0\">\n {{ 'Select application to duplicate' | translate }}\n </p>\n <c8y-duplicate-application-list\n class=\"d-block\"\n style=\"min-height: 257px\"\n (onSelectedApp)=\"onSelectedApp($event)\"\n *ngIf=\"stepper.selectedIndex === 0\"\n [existingApps]=\"existingApps\"\n [stepper]=\"stepper\"\n ></c8y-duplicate-application-list>\n </cdk-step>\n <!-- 2nd step -->\n <cdk-step>\n <c8y-duplicate-application-properties\n class=\"d-flex d-col j-c-center a-i-center\"\n style=\"min-height: 257px\"\n (duplicatedApp)=\"duplicatedApp = $event\"\n *ngIf=\"\n stepper.selectedIndex === 1 || (stepper.selectedIndex === 0 && directlyMoveToSecondStep)\n \"\n [existingApps]=\"existingApps\"\n [selectedApp]=\"selectedApp\"\n [stepper]=\"stepper\"\n [isFirstStep]=\"directlyMoveToSecondStep\"\n ></c8y-duplicate-application-properties>\n </cdk-step>\n <!-- Final step -->\n <cdk-step>\n <ng-container\n *ngIf=\"\n stepper.selectedIndex === 2 || (stepper.selectedIndex === 1 && directlyMoveToSecondStep)\n \"\n >\n <div\n class=\"d-flex a-i-center j-c-center\"\n style=\"min-height: 257px\"\n *ngIf=\"duplicatedApp; else duplicateAppFailed\"\n >\n <c8y-operation-result\n type=\"success\"\n text=\"{{ 'Application created' | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n ></c8y-operation-result>\n </div>\n <ng-template #duplicateAppFailed>\n <div\n class=\"d-flex a-i-center j-c-center\"\n style=\"min-height: 257px\"\n >\n <c8y-operation-result\n type=\"error\"\n text=\"{{ 'Application creation failed' | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n ></c8y-operation-result>\n </div>\n </ng-template>\n </ng-container>\n </cdk-step>\n </c8y-stepper>\n</c8y-wizard-body>\n\n<c8y-wizard-footer *ngIf=\"stepper.selectedIndex === 0 && noBackButton\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n (click)=\"done()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n</c8y-wizard-footer>\n\n<c8y-wizard-footer\n *ngIf=\"stepper.selectedIndex === 2 || (stepper.selectedIndex === 1 && directlyMoveToSecondStep)\"\n>\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Done' | translate }}\"\n type=\"button\"\n (click)=\"done()\"\n >\n {{ 'Done' | translate }}\n </button>\n <a\n class=\"btn btn-primary\"\n title=\"{{ 'Open' | translate }}\"\n target=\"_blank\"\n (click)=\"$event.stopPropagation()\"\n [href]=\"getHref(duplicatedApp)\"\n rel=\"noopener noreferrer\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"external-link\"\n ></i>\n {{ 'Open' | translate }}\n </a>\n</c8y-wizard-footer>\n","import { Component, forwardRef, OnChanges, Input, SimpleChanges } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { ApplicationService, IApplicationVersion, IResultList } from '@c8y/client';\nimport {\n gettext,\n PluginsService,\n FormGroupComponent,\n TypeaheadComponent,\n ForOfDirective,\n ListItemComponent,\n ListItemIconComponent,\n HighlightComponent,\n C8yTranslateDirective,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { BehaviorSubject, Observable, combineLatest, merge } from 'rxjs';\nimport { filter, map, shareReplay, switchMap } from 'rxjs/operators';\nimport { NgFor, NgIf, AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'c8y-package-version-select',\n templateUrl: './package-version-select.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => PackageVersionSelectComponent)\n }\n ],\n imports: [\n FormGroupComponent,\n TypeaheadComponent,\n FormsModule,\n ForOfDirective,\n ListItemComponent,\n ListItemIconComponent,\n HighlightComponent,\n NgFor,\n NgIf,\n C8yTranslateDirective,\n C8yTranslatePipe,\n AsyncPipe\n ]\n})\nexport class PackageVersionSelectComponent implements OnChanges, ControlValueAccessor {\n @Input() label = gettext('Use plugin version');\n @Input() packageContextPath: string;\n @Input() packageId: string | number;\n selectedVersion: IApplicationVersion;\n onInput$: BehaviorSubject<string> = new BehaviorSubject<string>('');\n versions$: Observable<IResultList<IApplicationVersion>>;\n isDisabled = false;\n private packageContextPath$ = new BehaviorSubject('');\n private packageId$ = new BehaviorSubject<string | number>('');\n private onChange: (version: IApplicationVersion) => void;\n private onTouched: () => void;\n\n constructor(\n private applicationService: ApplicationService,\n private pluginsService: PluginsService\n ) {\n const packageIdFromContextPath$ = this.packageContextPath$.pipe(\n filter(path => !!path),\n switchMap(path => this.getPackageIdForContextPath(path))\n );\n const packageId$ = merge(packageIdFromContextPath$, this.packageId$.pipe(filter(id => !!id)));\n const packageVersions$ = packageId$.pipe(\n switchMap(id => this.getPackageVersions(id)),\n shareReplay(1)\n );\n this.versions$ = combineLatest([packageVersions$, this.onInput$.asObservable()]).pipe(\n map(([resultList, filterStr]) => this.applyFilterToResultList(resultList, filterStr))\n );\n }\n\n writeValue(obj: any): void {\n this.selectedVersion = obj;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.isDisabled = isDisabled;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.packageContextPath) {\n this.packageContextPath$.next(this.packageContextPath);\n }\n\n if (changes.packageId) {\n this.packageId$.next(this.packageId);\n }\n }\n\n async getPackageVersions(packageId: string | number): Promise<IResultList<IApplicationVersion>> {\n return await this.applicationService.listVersions(packageId);\n }\n\n onVersionSelect(version: IApplicationVersion) {\n this.selectedVersion = version;\n if (this.onChange) {\n this.onChange(version);\n }\n if (this.onTouched) {\n this.onTouched();\n }\n }\n\n private async getPackageIdForContextPath(contextPath: string): Promise<string | number> {\n const { data: application } =\n await this.applicationService.getManifestOfContextPath(contextPath);\n const packageAppId = application.id;\n return packageAppId;\n }\n\n private setInitialValueForInput(versions: IApplicationVersion[]) {\n if (!this.selectedVersion && versions.length > 0) {\n const latest = versions.find(v => v.tags.includes('latest'));\n this.selectedVersion = latest || versions[0];\n if (this.onChange) {\n this.onChange(this.selectedVersion);\n }\n }\n }\n\n private filterAppVersions(\n appVersions: IApplicationVersion[],\n filterStr: string\n ): IApplicationVersion[] {\n return filterStr === ''\n ? appVersions\n : appVersions.filter(\n appVersion =>\n appVersion.version.includes(filterStr) ||\n appVersion.tags?.some(tag => tag.includes(filterStr))\n );\n }\n\n private applyFilterToResultList(\n resultList: IResultList<IApplicationVersion>,\n filterStr: string\n ): IResultList<IApplicationVersion> {\n const versionsFilteredByStr = this.filterAppVersions(resultList.data, filterStr);\n const sortedAppVersions = this.pluginsService.sortVersions(\n {\n list: versionsFilteredByStr,\n path: ['version']\n },\n 'desc'\n );\n\n this.setInitialValueForInput(sortedAppVersions);\n return { data: sortedAppVersions, res: resultList.res };\n }\n}\n","<label for=\"packageVersion\">{{ label | translate }}</label>\n<c8y-form-group>\n <c8y-typeahead\n [(ngModel)]=\"selectedVersion\"\n name=\"packageVersion\"\n (onSearch)=\"onInput$.next($event)\"\n placeholder=\"{{ 'Select below or start typing' | translate }}\"\n [displayProperty]=\"'version'\"\n [required]=\"true\"\n [disabled]=\"isDisabled\"\n [hideNew]=\"true\"\n [container]=\"'body'\"\n >\n <c8y-li\n *c8yFor=\"let appVersion of versions$; loadMore: 'auto'; notFound: notFoundTemplate\"\n (click)=\"onVersionSelect(appVersion)\"\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n [active]=\"selectedVersion === appVersion\"\n >\n <c8y-li-icon icon=\"big-parcel\"></c8y-li-icon>\n <c8y-highlight\n [text]=\"appVersion.version || '--'\"\n [pattern]=\"onInput$ | async\"\n ></c8y-highlight>\n <span>\n <span *ngFor=\"let tag of appVersion.tags\" class=\"label label-info m-l-4\">\n {{ tag }}\n </span>\n </span>\n </c8y-li>\n <ng-template #notFoundTemplate>\n <c8y-li\n class=\"bg-gray-lighter p-8\"\n *ngIf=\"(onInput$ | async)?.length > 0 && (versions$ | async)?.data?.length === 0\"\n >\n <span translate>No match found.</span>\n </c8y-li>\n </ng-template>\n </c8y-typeahead>\n</c8y-form-group>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { IApplication, IApplicationBinary } from '@c8y/client';\nimport { AlertService, gettext, DropAreaComponent, C8yTranslatePipe } from '@c8y/ngx-components';\nimport { BehaviorSubject } from 'rxjs';\nimport { EcosystemService } from './ecosystem.service';\nimport { AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'c8y-upload-archive',\n templateUrl: 'upload-archive.component.html',\n imports: [DropAreaComponent, C8yTranslatePipe, AsyncPipe]\n})\nexport class UploadArchiveComponent {\n @Input() application: IApplication;\n @Input() uploadNewVersion = false;\n @Input() preUploadCallback: () => Promise<any>;\n @Output() applicationChange: EventEmitter<IApplication> = new EventEmitter<IApplication>();\n @Output() refresh: EventEmitter<any> = new EventEmitter();\n\n archives: IApplicationBinary[] = [];\n toActivateVersionId: string;\n last: IApplicationBinary;\n isLoading: boolean;\n fileList: FileList;\n uploadInProgress = false;\n canReactivate = false;\n\n constructor(\n private ecosystemService: EcosystemService,\n private alertService: AlertService\n ) {}\n\n get uploadProgress(): BehaviorSubject<number> {\n return this.ecosystemService.progress;\n }\n\n async onFileDroppedEvent(event) {\n if (this.preUploadCallback) {\n try {\n await this.preUploadCallback();\n } catch (e) {\n // do nothing, i.e. when confirm modal cancels and throws undefined\n return;\n }\n }\n if (event && event.length > 0) {\n const file = event[0].file;\n this.onFile(file);\n }\n }\n\n private async onFile(file: File): Promise<void> {\n try {\n await this.ecosystemService.validateArchiveToAppCompatibility(file, this.application);\n const isCustomMicroservice = this.ecosystemService.isCustomMicroservice(this.application);\n const isPackage = this.ecosystemService.isPackage(this.application);\n this.archives = isCustomMicroservice\n ? []\n : await this.ecosystemService.listArchives(this.application.id);\n this.archives.sort((a, b) => {\n return (new Date(b.created) as any) - (new Date(a.created) as any);\n });\n this.uploadInProgress = true;\n this.uploadProgress.next(0);\n if (this.archives.length === 6 && !isCustomMicroservice && !isPackage) {\n await this.ecosystemService.removeOldestArchive(this.application, this.archives);\n }\n const app = await this.ecosystemService.uploadArchiveToApp(\n file,\n this.application,\n this.uploadNewVersion\n );\n this.applicationChange.emit(app);\n this.uploadProgress.next(100);\n this.uploadInProgress = false;\n this.refresh.emit();\n if (this.uploadNewVersion) {\n return;\n }\n this.alertService.success(gettext('Archive uploaded and activated.'));\n } catch (ex) {\n this.uploadInProgress = false;\n if (ex === 'cancelled') {\n return;\n }\n this.ecosystemService.alertError(ex);\n }\n }\n}\n","<c8y-drop-area\n (dropped)=\"onFileDroppedEvent($event)\"\n [accept]=\"'.zip'\"\n [loading]=\"uploadInProgress\"\n [maxAllowedFiles]=\"1\"\n [message]=\"'Upload a *.zip file' | translate\"\n [progress]=\"uploadProgress | async\"\n [forceHideList]=\"true\"\n class=\"drop-area-sm\"\n>\n</c8y-drop-area>\n","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n FormsModule,\n ReactiveFormsModule\n} from '@angular/forms';\nimport { ActivatedRoute, Params, Router } from '@angular/router';\nimport {\n AppStateService,\n FilterInputComponent,\n GainsightService,\n internalApps,\n PackageType,\n IconDirective,\n FormGroupComponent,\n RequiredInputPlaceholderDirective,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport { pipe, Subject } from 'rxjs';\nimport { map, takeUntil } from 'rxjs/operators';\nimport { APP_STATE } from '../ecosystem.constants';\nimport { PRODUCT_EXPERIENCE_ECOSYSTEM } from '../ecosystem.model';\nimport { FilterableAppOrPlugin, FilterPipe, PackageFilters } from './list-filters.model';\n\nimport { NgIf, NgPlural, NgPluralCase, NgFor, TitleCasePipe } from '@angular/common';\nimport {\n BsDropdownDirective,\n BsDropdownToggleDirective,\n BsDropdownMenuDirective\n} from 'ngx-bootstrap/dropdown';\nimport { CdkTrapFocus } from '@angular/cdk/a11y';\n\n@Component({\n selector: 'c8y-list-filters',\n templateUrl: './list-filters.component.html',\n imports: [\n FormsModule,\n ReactiveFormsModule,\n FilterInputComponent,\n NgIf,\n BsDropdownDirective,\n CdkTrapFocus,\n BsDropdownToggleDirective,\n NgPlural,\n NgPluralCase,\n NgFor,\n IconDirective,\n BsDropdownMenuDirective,\n FormGroupComponent,\n RequiredInputPlaceholderDirective,\n C8yTranslatePipe,\n TitleCasePipe\n ]\n})\nexport class ListFiltersComponent implements OnInit {\n @Input() packageTypes: (keyof PackageFilters['type'])[] = [];\n @Input() packageAvailabilities: (keyof PackageFilters['availability'])[] = [];\n @Input() packageContents: (keyof PackageFilters['content'])[] = [];\n @Output() filterPipeChange = new EventEmitter<FilterPipe>();\n @ViewChild(FilterInputComponent) filterInput: FilterInputComponent;\n\n formGroup: ReturnType<ListFiltersComponent['initForm']>;\n chips: [string, FormControl][] = [];\n predefinedFiltersVisible: boolean;\n customFilters = new Map<string, (app: FilterableAppOrPlugin, enabled: boolean) => boolean>();\n currentFilterTerm: string;\n\n private currentLang: string;\n private data: FilterableAppOrPlugin[];\n private currentFiltersState: Partial<PackageFilters>;\n private CURRENT_LOCATION = location.href;\n private destroy$ = new Subject<void>();\n\n constructor(\n private formBuilder: FormBuilder,\n private ui: AppStateService,\n private translateService: TranslateService,\n private gainsightService: GainsightService,\n private router: Router,\n private activatedRoute: ActivatedRoute\n ) {\n this.formGroup = this.initForm();\n }\n\n ngOnInit(): void {\n this.currentFiltersState = this.formGroup.value;\n this.predefinedFiltersVisible =\n this.packageTypes?.length > 0 ||\n this.packageAvailabilities?.length > 0 ||\n this.packageContents?.length > 0;\n this.currentLang = this.ui.state.lang;\n this.subscribeToQueryParams();\n }\n\n setFilterTerm(filterTerm: string): void {\n this.currentFilterTerm = filterTerm;\n this.setPipe();\n\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.FILTER_LIST,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.LIST_FILTERS,\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.SET_FILTER_TERM,\n url: this.CURRENT_LOCATION\n }\n );\n }\n\n applyPredefinedFilters(): void {\n this.currentFiltersState = this.formGroup.value;\n this.setChips();\n this.setPipe();\n\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.FILTER_LIST,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.LIST_FILTERS,\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.SET_PREDEFINED_FILTERS,\n url: this.CURRENT_LOCATION,\n filters: this.currentFiltersState\n }\n );\n }\n\n reset(): void {\n this.formGroup.reset();\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.FILTER_LIST,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.LIST_FILTERS,\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.RESET_FILTER,\n url: this.CURRENT_LOCATION\n }\n );\n this.applyPredefinedFilters();\n }\n\n resetAllFilters() {\n this.reset();\n this.filterInput.reset();\n }\n\n toggleDropdown(isOpen: boolean): void {\n if (!isOpen) {\n this.formGroup.patchValue(this.currentFiltersState);\n }\n }\n\n deselectChip(chip: [string, FormControl]): void {\n chip[1].setValue(false);\n this.applyPredefinedFilters();\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n subscribeToQueryParams() {\n this.activatedRoute.queryParams\n .pipe(takeUntil(this.destroy$))\n .subscribe((queryParams: Params) => {\n const filters = this.parseQueryParams(queryParams);\n this.currentFilterTerm = queryParams.filterTerm || '';\n this.formGroup.patchValue(filters);\n this.applyPredefinedFilters();\n });\n }\n\n private setQueryParams() {\n if (!this.currentFiltersState) {\n return;\n }\n this.router.navigate([], {\n queryParams: {\n ...this.simplifyFilterObject(this.currentFiltersState),\n filterTerm: this.currentFilterTerm || null\n }\n });\n }\n\n private parseQueryParams(queryParams: Params): Partial<PackageFilters> {\n const filter: Partial<PackageFilters> = {};\n for (const fullKey in queryParams) {\n const [key, subKey] = fullKey.split('.');\n if (!filter[key]) {\n filter[key] = {};\n }\n filter[key][subKey] = queryParams[fullKey] === 'true';\n }\n return filter;\n }\n\n private simplifyFilterObject(currentFiltersState: Partial<PackageFilters>): Params {\n const keys = Object.keys(currentFiltersState);\n const result = {};\n for (const key of keys) {\n const subKeys = Object.keys(currentFiltersState[key]);\n for (const subKey of subKeys) {\n if (currentFiltersState[key][subKey]) {\n result[`${key}.${subKey}`] = currentFiltersState[key][subKey];\n }\n }\n }\n return result;\n }\n\n private initForm() {\n return this.formBuilder.group({\n type: this.formBuilder.group({\n [PackageType.OFFICIAL]: [false],\n [PackageType.COMMUNITY]: [false]\n }),\n availability: this.formBuilder.group({\n [APP_STATE.SUBSCRIBED.label]: [false],\n [APP_STATE.UNPACKED.label]: [false],\n [APP_STATE.EXTERNAL.label]: [false],\n [APP_STATE.CUSTOM.label]: [false]\n }),\n content: this.formBuilder.group({\n [APP_STATE.PACKAGE_BLUEPRINT.label]: [false],\n [APP_STATE.PACKAGE_PLUGIN.label]: [false]\n }),\n custom: this.formBuilder.group({})\n });\n }\n\n private setPipe(): void {\n this.setQueryParams();\n const filterPipe = pipe(\n map((data: FilterableAppOrPlugin[]) => {\n this.data = data.filter((app: FilterableAppOrPlugin) => {\n let matchesByString;\n if (!this.currentFilterTerm || this.currentFilterTerm.trim().length === 0) {\n matchesByString = true;\n } else {\n const appName =\n this.currentLang === 'en' || !app.name?.length || !internalApps[app.name]\n ? app.name\n : this.translateService.instant(internalApps[app.name]);\n matchesByString =\n this.filterContainString(appName, this.currentFilterTerm) ||\n this.filterContainString(app.description, this.currentFilterTerm);\n }\n\n const matchesByPredefinedProperty =\n this.appMatchesByPredefinedProperty(app, 'type') &&\n this.appMatchesByPredefinedProperty(app, 'availability') &&\n this.appMatchesByPredefinedProperty(app, 'content') &&\n this.appMatchesByPredefinedProperty(app, 'custom');\n\n return matchesByString && matchesByPredefinedProperty;\n });\n return this.data;\n })\n );\n this.filterPipeChange.emit(filterPipe);\n }\n\n private filterContainString(name: string, filterTerm: string): boolean {\n const term = filterTerm.toLowerCase().trim();\n return name && name.toLowerCase().indexOf(term) > -1;\n }\n\n private appMatchesByPredefinedProperty(\n app: FilterableAppOrPlugin,\n property: keyof PackageFilters\n ): boolean {\n if (property === 'custom' && this.currentFiltersState) {\n return Object.entries(this.currentFiltersState[property]).every(([key, value]) =>\n this.customFilters.get(key)(app, value)\n );\n }\n\n // if filter object does not contain property filters or all filters are false, filter is inactive\n const filterForPropertyIsActive =\n this.currentFiltersState?.[property] &&\n !Object.values(this.currentFiltersState[property]).every(v => !v);\n\n if (!filterForPropertyIsActive) {\n return true;\n } else if (!app.filterProps?.[property]) {\n return false;\n } else {\n return this.currentFiltersState[property][app.filterProps[property]];\n }\n }\n\n private setChips(): void {\n this.chips = [];\n Object.values(this.formGroup.controls).forEach((controlsGroup: FormGroup) => {\n Object.entries(controlsGroup.controls).forEach((entry: [string, FormControl]) => {\n if (entry[1].value) {\n this.chips.push(entry);\n }\n });\n });\n }\n}\n","<form\n class=\"d-flex a-i-center\"\n [formGroup]=\"formGroup\"\n>\n <c8y-filter\n [filterTerm]=\"currentFilterTerm\"\n (onSearch)=\"setFilterTerm($event)\"\n ></c8y-filter>\n\n <div\n class=\"dropdown m-l-8 m-r-4\"\n *ngIf=\"predefinedFiltersVisible\"\n dropdown\n (isOpenChange)=\"toggleDropdown($event)\"\n #filtersDropdown=\"bs-dropdown\"\n [cdkTrapFocus]=\"filtersDropdown.isOpen\"\n [insideClick]=\"true\"\n >\n <div class=\"input-group d-inline-flex\">\n <button\n class=\"btn-clean form-control p-l-8 p-r-16 a-s-stretch d-flex a-i-center gap-4 w-auto flex-no-shrink\"\n title=\"{{ 'Filters' | translate }}\"\n dropdownToggle\n >\n <span [ngPlural]=\"chips.length\">\n <ng-template ngPluralCase=\"=0\">\n {{ 'Filters' | translate }}\n </ng-template>\n <ng-template ngPluralCase=\"=1\">\n <span class=\"badge badge-info\">{{ chips.length }}</span>\n {{ 'Filter' | translate }}\n </ng-template>\n <ng-template ngPluralCase=\"other\">\n <span class=\"badge badge-info\">{{ chips.length }}</span>\n {{ 'Filters' | translate }}\n </ng-template>\n </span>\n <span class=\"caret\"></span>\n </button>\n <div\n class=\"input-group-addon p-t-0 p-b-0 d-flex gap-4 a-i-center inner-scroll\"\n *ngIf=\"chips.length > 0\"\n >\n <ng-container *ngFor=\"let chip of chips\">\n <span\n class=\"tag tag--info chip\"\n *ngIf=\"chip[1].value\"\n >\n <button\n class=\"btn btn-xs btn-clean text-10\"\n title=\"{{ 'Remove' | translate }}\"\n type=\"button\"\n (click)=\"deselectChip(chip)\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n {{ chip[0] | translate | titlecase }}\n </span>\n </ng-container>\n </div>\n </div>\n <div\n class=\"dropdown-menu\"\n *dropdownMenu\n >\n <div class=\"dropdown-form\">\n <c8y-form-group\n *ngIf=\"packageTypes.length\"\n formGroupName=\"type\"\n >\n <label class=\"m-b-16\">\n {{ 'Type' | translate }}\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"type | translate\"\n *ngFor=\"let type of packageTypes\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"type\"\n [value]=\"type\"\n />\n <span></span>\n <span>{{ type | translate | titlecase }}</span>\n </label>\n </c8y-form-group>\n\n <c8y-form-group\n *ngIf=\"packageAvailabilities.length\"\n formGroupName=\"availability\"\n >\n <label class=\"m-b-16\">\n {{ 'Availability`of package based on app state`' | translate }}\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"availability | translate\"\n *ngFor=\"let availability of packageAvailabilities\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"availability\"\n [value]=\"availability\"\n />\n <span></span>\n <span>{{ availability | translate }}</span>\n </label>\n </c8y-form-group>\n\n <c8y-form-group\n *ngIf=\"packageContents.length\"\n formGroupName=\"content\"\n >\n <label class=\"m-b-16\">\n {{ 'Content' | translate }}\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"content | translate\"\n *ngFor=\"let content of packageContents\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"content\"\n [value]=\"content\"\n />\n <span></span>\n <span>{{ content | translate }}</span>\n </label>\n </c8y-form-group>\n <c8y-form-group formGroupName=\"custom\">\n <ng-content></ng-content>\n </c8y-form-group>\n </div>\n <div class=\"p-16 d-flex gap-8 separator-top\">\n <button\n class=\"btn btn-default btn-sm flex-grow\"\n title=\"{{ 'Reset' | translate }}\"\n type=\"button\"\n (click)=\"reset(); filtersDropdown.isOpen = false\"\n >\n {{ 'Reset' | translate }}\n </button>\n\n <button\n class=\"btn btn-primary btn-sm flex-grow\"\n title=\"{{ 'Apply' | translate }}\"\n type=\"button\"\n (click)=\"applyPredefinedFilters(); filtersDropdown.isOpen = false\"\n [disabled]=\"formGroup.pristine && formGroup.untouched\"\n >\n {{ 'Apply' | translate }}\n </button>\n </div>\n </div>\n </div>\n</form>\n","import { Component } from '@angular/core';\nimport { FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { gettext, PackageType, C8yTranslatePipe } from '@c8y/ngx-components';\nimport { ListFiltersComponent } from '../list-filters/list-filters.component';\nimport { FilterableAppOrPlugin } from '../list-filters/list-filters.model';\n\n@Component({\n selector: 'c8y-archived-filter',\n templateUrl: './archived-filter.component.html',\n imports: [FormsModule, ReactiveFormsModule, C8yTranslatePipe]\n})\nexport class ArchivedFilterComponent {\n archivedFormControl: FormControl;\n private readonly filterLabel = gettext('Show archived packages');\n\n constructor(public filterComponent: ListFiltersComponent) {\n this.archivedFormControl = new FormControl();\n (this.filterComponent.formGroup.controls.custom as FormGroup).addControl(\n this.filterLabel,\n this.archivedFormControl\n );\n filterComponent.customFilters.set(\n this.filterLabel,\n (appOrPlugin: FilterableAppOrPlugin, enabled: boolean) => {\n return (\n appOrPlugin.filterProps.type !== PackageType.ARCHIVED ||\n (appOrPlugin.filterProps.type === PackageType.ARCHIVED && enabled)\n );\n }\n );\n }\n}\n","<label class=\"c8y-switch\">\n <input\n type=\"checkbox\"\n checked=\"checked\"\n [formControl]=\"archivedFormControl\"\n />\n <span></span>\n {{ 'Show archived packages' | translate }}\n</label>\n","import { AsyncPipe, NgIf } from '@angular/common';\nimport { Component, inject, Input, OnChanges } from '@angular/core';\nimport { IApplication } from '@c8y/client';\nimport {\n C8yTranslatePipe,\n EmptyStateComponent,\n LoadingComponent,\n MarkdownToHtmlPipe,\n PluginsService\n} from '@c8y/ngx-components';\nimport { lt } from 'semver';\n\n/**\n * Component to display the change log of a package.\n * It fetches the change log file from the package's repository and displays it.\n * It can fetch the change log for the latest version or a specific version if provided.\n * It can also compare the change log with the previous version if provided and display the difference between the two versions.\n */\n@Component({\n selector: 'c8y-contents-changelog',\n templateUrl: './package-changelog.component.html',\n standalone: true,\n imports: [\n LoadingComponent,\n MarkdownToHtmlPipe,\n EmptyStateComponent,\n AsyncPipe,\n C8yTranslatePipe,\n NgIf\n ]\n})\nexport class PackageChangelogComponent implements OnChanges {\n @Input() package: IApplication;\n @Input() selectedVersion = 'latest';\n @Input() previousVersion: string | null = null;\n changelog: string;\n baseUrl: string;\n isLoading = true;\n\n private pluginsService = inject(PluginsService);\n\n async ngOnChanges() {\n if (!this.package) {\n this.changelog = '';\n this.isLoading = false;\n return;\n }\n this.isLoading = true;\n this.changelog = await this.getChangeLog();\n this.isLoading = false;\n }\n\n private async getChangeLog(): Promise<string> {\n if (this.selectedVersion === this.previousVersion || !this.selectedVersion) {\n return '';\n }\n\n const selectedVersionChangelogUrl = this.baseUrlForVersion(this.selectedVersion);\n this.baseUrl = selectedVersionChangelogUrl;\n\n if (!this.previousVersion) {\n return await this.pluginsService.getChangelogFileContent(selectedVersionChangelogUrl);\n }\n\n const previousVersionChangelogUrl = this.baseUrlForVersion(this.previousVersion);\n\n const changelogsPromises = [\n this.pluginsService.getChangelogFileContent(previousVersionChangelogUrl),\n this.pluginsService.getChangelogFileContent(selectedVersionChangelogUrl)\n ];\n\n const [previousVersionChangelog, selectedVersionChangelog] =\n await Promise.all(changelogsPromises);\n\n // Determine if this is a downgrade using semver comparison\n let isDowngrade: boolean;\n try {\n isDowngrade = lt(this.selectedVersion, this.previousVersion);\n } catch {\n isDowngrade = false;\n }\n\n if (isDowngrade) {\n return previousVersionChangelog.replace(selectedVersionChangelog, '');\n } else {\n return selectedVersionChangelog.replace(previousVersionChangelog, '');\n }\n }\n\n private baseUrlForVersion(version: string): string {\n return `/apps/${this.package.contextPath}@${version}/`;\n }\n}\n","<c8y-loading *ngIf=\"isLoading\"></c8y-loading>\n\n<ng-container *ngIf=\"!isLoading\">\n <div\n *ngIf=\"changelog\"\n class=\"markdown-content markdown-content--to-h3\"\n [innerHTML]=\"changelog | markdownToHtml: { baseUrl } | async\"\n ></div>\n\n <c8y-ui-empty-state\n [icon]=\"'user-manual'\"\n [title]=\"'No CHANGELOG.md found for package version' | translate\"\n [subtitle]=\"\n 'To view the contents of "CHANGELOG", add the file "CHANGELOG.md" to the package.'\n | translate\n \"\n *ngIf=\"!changelog\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n</ng-container>\n","import { NgModule } from '@angular/core';\nimport { CoreModule, hookWizard } from '@c8y/ngx-components';\nimport { IconSelectorModule } from '@c8y/ngx-components/icon-selector';\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { AddApplicationComponent } from './add-application.component';\nimport { ApplicationCardComponent } from './application-card.component';\nimport { ApplicationPropertiesFormComponent } from './application-properties-form.component';\nimport { UploadArchiveComponent } from './upload-archive.component';\nimport { DuplicateApplicationListComponent } from './duplicate-application/duplicate-application-list/duplicate-application-list.component';\nimport { DuplicateApplicationPropertiesComponent } from './duplicate-application/duplicate-application-properties/duplicate-application-properties.component';\nimport { DuplicateApplicationComponent } from './duplicate-application/duplicate-application.component';\nimport { PackageVersionSelectComponent } from './package-version-select/package-version-select.component';\nimport { EcosystemWizards } from './ecosystem.model';\nimport { TranslatePackageLabelPipe } from './translate-package-label.pipe';\nimport { ListFiltersComponent } from './list-filters/list-filters.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ArchivedFilterComponent } from './archived-filter/archived-filter.component';\nimport { PackageChangelogComponent } from './package-changelog/package-changelog.component';\n\n@NgModule({\n imports: [\n CoreModule,\n BsDropdownModule,\n TooltipModule,\n A11yModule,\n FormsModule,\n PopoverModule,\n ReactiveFormsModule,\n IconSelectorModule,\n PackageChangelogComponent,\n AddApplicationComponent,\n ApplicationPropertiesFormComponent,\n UploadArchiveComponent,\n ApplicationCardComponent,\n DuplicateApplicationListComponent,\n DuplicateApplicationPropertiesComponent,\n DuplicateApplicationComponent,\n PackageVersionSelectComponent,\n TranslatePackageLabelPipe,\n ListFiltersComponent,\n ArchivedFilterComponent\n ],\n exports: [\n AddApplicationComponent,\n ApplicationPropertiesFormComponent,\n UploadArchiveComponent,\n ApplicationCardComponent,\n DuplicateApplicationListComponent,\n DuplicateApplicationPropertiesComponent,\n DuplicateApplicationComponent,\n PackageVersionSelectComponent,\n TranslatePackageLabelPipe,\n ListFiltersComponent,\n ArchivedFilterComponent,\n PackageChangelogComponent\n ],\n providers: [\n hookWizard({\n wizardId: EcosystemWizards.APPLICATION_UPLOAD,\n component: DuplicateApplicationComponent,\n name: 'Duplicate existing application',\n c8yIcon: 'copy'\n }),\n hookWizard({\n wizardId: 'duplicateApplication',\n component: DuplicateApplicationComponent,\n name: 'Duplicate existing application',\n c8yIcon: 'copy'\n })\n ]\n})\nexport class SharedEcosystemModule {}\n","import { ApplicationPlugin, PackageType } from '@c8y/ngx-components';\nimport { Observable, UnaryFunction } from 'rxjs';\nimport { IApplication } from '@c8y/client';\nimport { APP_STATE, ApplicationState } from '../ecosystem.constants';\n\nexport type FilterableAppOrPlugin = (IApplication | ApplicationPlugin) & {\n filterProps?: AppFilterProps;\n};\n\nexport type FilterPipe = UnaryFunction<\n Observable<FilterableAppOrPlugin[]>,\n Observable<FilterableAppOrPlugin[]>\n>;\n\nexport type PackageFilters = {\n type: {\n [PackageType.OFFICIAL]?: boolean;\n [PackageType.COMMUNITY]?: boolean;\n };\n availability: {\n [APP_STATE.SUBSCRIBED.label]?: boolean;\n [APP_STATE.UNPACKED.label]?: boolean;\n [APP_STATE.EXTERNAL.label]?: boolean;\n [APP_STATE.CUSTOM.label]?: boolean;\n };\n content: {\n [APP_STATE.PACKAGE_BLUEPRINT.label]?: boolean;\n [APP_STATE.PACKAGE_PLUGIN.label]?: boolean;\n };\n custom: {\n [key: string]: boolean;\n };\n};\n\nexport type AppFilterProps = {\n type: PackageType;\n availability: ApplicationState['label'];\n content: ApplicationState['label'];\n};\n\nexport const defaultPackageTypes: (keyof PackageFilters['type'])[] = [\n PackageType.OFFICIAL,\n PackageType.COMMUNITY\n];\n\nexport const defaultPackageAvailabilities: (keyof PackageFilters['availability'])[] = [\n APP_STATE.SUBSCRIBED.label,\n APP_STATE.UNPACKED.label,\n APP_STATE.EXTERNAL.label,\n APP_STATE.CUSTOM.label\n];\n\nexport const defaultPackageContents: (keyof PackageFilters['content'])[] = [\n APP_STATE.PACKAGE_BLUEPRINT.label,\n APP_STATE.PACKAGE_PLUGIN.label\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i3","i1.EcosystemService","i4","i5.PackageAvailabilityService","i1","i2.EcosystemService","i5","i1.ListFiltersComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"c8y-ngx-components-ecosystem-shared.mjs","sources":["../../ecosystem/shared/ecosystem.model.ts","../../ecosystem/shared/ecosystem.constants.ts","../../ecosystem/shared/ecosystem-error.ts","../../ecosystem/shared/ecosystem.service.ts","../../ecosystem/shared/package-availability.service.ts","../../ecosystem/shared/add-application.component.ts","../../ecosystem/shared/add-application.component.html","../../ecosystem/shared/translate-package-label.pipe.ts","../../ecosystem/shared/application-card.component.ts","../../ecosystem/shared/application-card.component.html","../../ecosystem/shared/application-properties-form.component.ts","../../ecosystem/shared/application-properties-form.component.html","../../ecosystem/shared/duplicate-application/duplicate-application-list/duplicate-application-list.component.ts","../../ecosystem/shared/duplicate-application/duplicate-application-list/duplicate-application-list.component.html","../../ecosystem/shared/duplicate-application/duplicate-application-properties/duplicate-application-properties.component.ts","../../ecosystem/shared/duplicate-application/duplicate-application-properties/duplicate-application-properties.component.html","../../ecosystem/shared/duplicate-application/duplicate-application.component.ts","../../ecosystem/shared/duplicate-application/duplicate-application.component.html","../../ecosystem/shared/package-version-select/package-version-select.component.ts","../../ecosystem/shared/package-version-select/package-version-select.component.html","../../ecosystem/shared/upload-archive.component.ts","../../ecosystem/shared/upload-archive.component.html","../../ecosystem/shared/list-filters/list-filters.component.ts","../../ecosystem/shared/list-filters/list-filters.component.html","../../ecosystem/shared/archived-filter/archived-filter.component.ts","../../ecosystem/shared/archived-filter/archived-filter.component.html","../../ecosystem/shared/package-changelog/package-changelog.component.ts","../../ecosystem/shared/package-changelog/package-changelog.component.html","../../ecosystem/shared/shared-ecosystem.module.ts","../../ecosystem/shared/list-filters/list-filters.model.ts","../../ecosystem/shared/c8y-ngx-components-ecosystem-shared.ts"],"sourcesContent":["import { ApplicationPlugin } from '@c8y/ngx-components';\n\n/** Wizard types */\nexport enum EcosystemWizards {\n APPLICATION_UPLOAD = 'ecosystemApplicationUpload',\n MICROSERVICE_UPLOAD = 'ecosystemMicroserviceUpload',\n PACKAGE_UPLOAD = 'ecosystemPackageUpload',\n BLUEPRINT_DEPLOYMENT = 'ecosystemBlueprintDeployment',\n LICENSE_CONFIRM = 'ecosystemLicenseConfirm',\n ARCHIVED_CONFIRM = 'ecosystemArchivedConfirm'\n}\n\nexport enum ERROR_TYPE {\n TYPE_VALIDATION = 'TYPE_VALIDATION',\n ALREADY_SUBSCRIBED = 'ALREADY_SUBSCRIBED',\n ALREADY_EXIST = 'ALREADY_EXIST',\n INTERNAL_ERROR = 'INTERNAL_ERROR',\n NO_MANIFEST_FILE = 'NO_MANIFEST_FILE',\n INVALID_PACKAGE = 'INVALID_PACKAGE',\n INVALID_APPLICATION = 'INVALID_APPLICATION',\n MICROSERVICE_NAME_TOO_LONG = 'MICROSERVICE_NAME_TOO_LONG',\n APPLICATION_CREATION_FAILED = 'APPLICATION_CREATION_FAILED',\n KEY_OR_CONTEXT_PATH_MISMATCH = 'KEY_OR_CONTEXT_PATH_MISMATCH',\n VERSION_NOT_FOUND = 'VERSION_NOT_FOUND'\n}\n\nexport type LicensedApplicationPlugin = Pick<\n ApplicationPlugin,\n 'type' | 'license' | 'name' | 'version' | 'contextPath'\n>;\n\nexport const PRODUCT_EXPERIENCE_ECOSYSTEM = {\n APPLICATIONS: {\n EVENTS: {\n AVAILABILITY: 'availability',\n APPLICATION_CARD: 'applicationCard',\n APPLICATION_PROPERTIES: 'applicationProperties',\n DEPLOY_APPLICATION: 'deployApplication',\n DUPLICATE_APPLICATION: 'duplicateApplication',\n INSTALLED_PLUGINS: 'installedPlugins',\n PACKAGE_PLUGINS: 'packagePlugins',\n PACKAGE_VERSIONS: 'packageVersions',\n FILTER_LIST: 'filterList'\n },\n COMPONENTS: {\n APPLICATION_CARD: 'application-card',\n APPLICATION_PLUGINS: 'application-plugins',\n APPLICATION_PROPERTIES: 'application-properties',\n DEPLOY_APPLICATION: 'deploy-application',\n DUPLICATE_APPLICATION_PROPERTIES: 'duplicate-application-properties',\n PLUGIN_LIST: 'plugin-list',\n PACKAGE_VERSIONS: 'package-versions-list',\n UPDATE_PLUGIN_OF_APP: 'update-plugin-of-app',\n LIST_FILTERS: 'list-filters',\n PACKAGE_DETAILS: 'package-details'\n },\n ACTIONS: {\n AVAILABILITY_CHANGE: 'availabilityChange',\n CANCEL: 'cancel',\n CLONE: 'clone',\n CHANGE_PLUGIN_VERSION: 'changePluginVersion',\n DELETE: 'delete',\n DOWNLOAD: 'download',\n DEPLOY_APPLICATION: 'deployApplication',\n EDIT: 'edit',\n INSTALL_PLUGIN: 'installPlugin',\n INSTALL_PLUGINS: 'installPlugins',\n UNINSTALL_PLUGIN: 'uninstallPlugin',\n SELECT_VERSION: 'selectVersion',\n SET_AS_LATEST: 'setAsLatest',\n UPDATE_AVAILABLE: 'updateAvailable',\n UPLOAD: 'upload',\n SET_FILTER_TERM: 'setFilterTerm',\n SET_PREDEFINED_FILTERS: 'setPredefinedFilters',\n RESET_FILTER: 'resetFilter',\n INSTALL_PLUGINS_INITIATED: 'installPluginsInitiated',\n DEPLOY_APPLICATION_INITIATED: 'deployApplicationInitiated'\n },\n RESULTS: {\n DEPLOYED: 'deployed',\n DUPLICATED: 'duplicated',\n PLUGIN_INSTALLED: 'pluginInstalled',\n PLUGIN_REMOVED: 'pluginRemoved',\n PLUGIN_VERSION_CHANGED: 'pluginVersionChanged',\n SERVER_FAILURE: 'serverFailure',\n SUCCESS: 'success'\n }\n }\n} as const;\n","import { ERROR_TYPE } from './ecosystem.model';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { PackageType, PropertiesListItem } from '@c8y/ngx-components';\n\nexport const ERROR_MESSAGES = {\n [ERROR_TYPE.ALREADY_EXIST]: gettext(\n 'Could not deploy the application, as an application with the same name`KEEP_ORIGINAL`, context-path`KEEP_ORIGINAL` or key`KEEP_ORIGINAL` exists already.'\n ),\n [ERROR_TYPE.TYPE_VALIDATION]: gettext(\n 'Wrong file format. Expected a *.zip file with a valid manifest.'\n ),\n [ERROR_TYPE.ALREADY_SUBSCRIBED]: gettext(\n 'Could not subscribe to the microservice because another application with the same context path is already subscribed.'\n ),\n [ERROR_TYPE.NO_MANIFEST_FILE]: gettext('Could not find a manifest.'),\n [ERROR_TYPE.INVALID_PACKAGE]: gettext('You have not uploaded a valid package.'),\n [ERROR_TYPE.INVALID_APPLICATION]: gettext('You have not uploaded a valid application.'),\n [ERROR_TYPE.INTERNAL_ERROR]: gettext('An internal error occurred, try to upload again.'),\n [ERROR_TYPE.MICROSERVICE_NAME_TOO_LONG]: gettext(\n 'Microservice name \"{{ name }}\" must not be longer than {{ maxChars }} characters.'\n ),\n [ERROR_TYPE.APPLICATION_CREATION_FAILED]: gettext('Application creation failed.'),\n [ERROR_TYPE.KEY_OR_CONTEXT_PATH_MISMATCH]: gettext(\n 'The \"contextPath`KEEP_ORIGINAL`\" or \"key`KEEP_ORIGINAL`\" of the uploaded archive do not match with the existing application.'\n ),\n [ERROR_TYPE.VERSION_NOT_FOUND]: gettext('The selected version was not found on the server.')\n};\n\nexport const APP_STATE = {\n SUBSCRIBED: {\n label: gettext('Subscribed`application`'),\n class: 'label-primary',\n tooltip: gettext('Provided by parent tenant.')\n },\n CUSTOM: {\n label: gettext('Custom`application`'),\n class: 'label-info',\n tooltip: gettext('Manually uploaded to the platform.')\n },\n EXTERNAL: {\n label: gettext('External`application`'),\n class: 'label-warning',\n tooltip: gettext('Application hosted outside of the platform.')\n },\n UNPACKED: {\n label: gettext('Unpacked`application`'),\n class: 'label-success',\n tooltip: gettext('Deployed from a package available under \"Packages\".')\n },\n PACKAGE_BLUEPRINT: {\n label: gettext('Blueprint'),\n class: 'label-success',\n tooltip: gettext('Contains an application and may include plugins.')\n },\n PACKAGE_PLUGIN: {\n label: gettext('Plugins'),\n class: 'label-info',\n tooltip: gettext('Contains only plugins.')\n },\n PACKAGE_UNKNOWN: {\n label: gettext('Unknown`package-type`'),\n class: 'label-info',\n tooltip: gettext('Package contents could not be determined.')\n }\n};\n\nexport type ApplicationState = (typeof APP_STATE)[keyof typeof APP_STATE];\n\nexport const PACKAGE_TYPE_LABELS = {\n [PackageType.COMMUNITY]: {\n label: gettext('COMMUNITY`Package created by the developer community.`'),\n tooltip: gettext('Package created by the developer community.')\n },\n [PackageType.OFFICIAL]: {\n label: gettext('OFFICIAL`Package maintained by Cumulocity.`'),\n tooltip: gettext('Package maintained by Cumulocity.')\n },\n [PackageType.UNKNOWN]: {\n label: gettext('CUSTOM`Package maintained by an unknown source.`'),\n tooltip: gettext('Package maintainer unknown.')\n },\n [PackageType.ARCHIVED]: {\n label: gettext('ARCHIVED`Package out of maintenance.`'),\n tooltip: gettext('The package was marked by the author as archived.')\n }\n};\n\nexport const packageProperties: PropertiesListItem[] = [\n {\n label: gettext('Latest version'),\n key: 'version'\n },\n {\n label: gettext('Author'),\n key: 'author'\n },\n {\n label: gettext('Keywords'),\n key: 'keywords'\n },\n {\n label: gettext('Source'),\n key: 'repository',\n transform: (repository: any) => (repository?.url ? repository.url : repository),\n type: 'link',\n action: (e, link: string) => window.open(link, '_blank', 'noopener,noreferrer')\n },\n {\n label: gettext('Homepage'),\n key: 'homepage',\n type: 'link',\n action: (e, link: string) => window.open(link, '_blank', 'noopener,noreferrer')\n },\n {\n label: gettext('License'),\n key: 'license'\n }\n];\n","import { ERROR_MESSAGES } from './ecosystem.constants';\nimport { ERROR_TYPE } from './ecosystem.model';\n\nexport class EcosystemError extends Error {\n constructor(public type: ERROR_TYPE) {\n super(ERROR_MESSAGES[type]);\n }\n}\n","import { EventEmitter, Injectable } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport {\n ApplicationAvailability,\n ApplicationService,\n ApplicationType,\n IApplication,\n IApplicationBinary,\n IApplicationVersion,\n IApplicationVersionDeleteParams,\n ICurrentTenant,\n IdReference,\n IFetchResponse,\n IIdentified,\n IManagedObject,\n IManifest,\n InventoryService,\n IResult,\n IResultList,\n IUploadParamsOverride,\n TenantService\n} from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n AlertService,\n ApplicationPlugin,\n AppStateService,\n HumanizeAppNamePipe,\n ModalService,\n PackageType,\n PluginsService,\n Status,\n WizardModalService,\n ZipService\n} from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport { saveAs } from 'file-saver';\nimport { cloneDeep, get, groupBy, kebabCase, pick, uniqBy, omit, isUndefined } from 'lodash-es';\nimport { BehaviorSubject, Observable, defer } from 'rxjs';\nimport { debounceTime, take, map, filter, shareReplay } from 'rxjs/operators';\nimport { gt, coerce, satisfies } from 'semver';\nimport { EcosystemError } from './ecosystem-error';\nimport { ApplicationState, APP_STATE, ERROR_MESSAGES } from './ecosystem.constants';\nimport { EcosystemWizards, ERROR_TYPE, LicensedApplicationPlugin } from './ecosystem.model';\nimport { AppFilterProps } from './list-filters/list-filters.model';\n\nconst CUMULOCITY_JSON = 'cumulocity.json';\nconst MICROSERVICE_NAME_MAX_LENGTH = 23;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EcosystemService {\n appDeleted = new EventEmitter<IApplication>();\n progress: BehaviorSubject<number> = new BehaviorSubject<number>(null);\n private appsGroupedByContextPath$: Observable<Record<string, IApplication[]>>;\n private xhr: XMLHttpRequest;\n\n constructor(\n private modal: ModalService,\n private alertService: AlertService,\n private humanizeAppName: HumanizeAppNamePipe,\n private translateService: TranslateService,\n private applicationService: ApplicationService,\n private appStateService: AppStateService,\n private zipService: ZipService,\n private tenantService: TenantService,\n private inventoryService: InventoryService,\n private wizardModalService: WizardModalService,\n private pluginService: PluginsService\n ) {\n this.appsGroupedByContextPath$ = defer(() => this.getWebApplications()).pipe(\n map(webApps => groupBy(webApps, 'contextPath')),\n shareReplay({ bufferSize: 1, refCount: true })\n );\n }\n\n getUniqueAppConfig(srcApp: IApplication, existingApps: IApplication[]): IApplication {\n let app: IApplication = {\n name: srcApp.name,\n key: srcApp.key,\n contextPath: srcApp.contextPath\n };\n for (let retryNo = 0; retryNo < 9; ) {\n if (this.checkIfAppNameKeyPathExists(existingApps, app, retryNo)) {\n retryNo++;\n app = {\n name: [srcApp.name, retryNo].join('-'),\n key: [srcApp.key, retryNo].join('-'),\n contextPath: [srcApp.contextPath, retryNo].join('-')\n };\n } else {\n return app;\n }\n }\n return app;\n }\n\n /**\n * Verify versions compatibility for blueprints. If a blueprint version\n * is not compatible, a warning is shown.\n *\n * @param blueprint The blueprint to install.\n * @returns true if the installation can continue or false if it should be aborted.\n */\n async verifyBlueprintVersionsCompatibility(blueprint: Partial<IManifest>): Promise<boolean> {\n const api = await this.getPlatformVersion();\n if (blueprint.versioningMatrix) {\n try {\n const pluginApiVersion = blueprint.versioningMatrix[blueprint.version].api;\n if (!satisfies(api, pluginApiVersion)) {\n return await this.showModal(blueprint, false, api);\n }\n } catch {\n return await this.showModal(blueprint, false, api);\n }\n }\n return true;\n }\n\n /**\n * Verify versions compatibility for plugins. In case a version does not exist in the\n * versioningMatrix we don't do anything due to backward compatibility. If a plugin version\n * is not compatible, a warning is shown.\n *\n * @param pluginsToInstall The list of plugins to install.\n * @returns true if the installation can continue or false if it should be aborted.\n */\n async verifyPluginVersionsCompatibility(\n pluginsToInstall: ApplicationPlugin[],\n app: IApplication\n ): Promise<boolean> {\n const api = await this.getPlatformVersion();\n const sdk = app.manifest?.webSdkVersion;\n for (const plugin of pluginsToInstall) {\n if (plugin.versioningMatrix) {\n try {\n const pluginSdkVersion = plugin.versioningMatrix[plugin.version].sdk;\n const pluginApiVersion = plugin.versioningMatrix[plugin.version].api;\n if (!satisfies(sdk, pluginSdkVersion) || !satisfies(api, pluginApiVersion)) {\n return await this.showModal(plugin, true, api, sdk);\n }\n } catch {\n return await this.showModal(plugin, false, api, sdk);\n }\n }\n }\n\n return true;\n }\n\n /**\n * Community plugins need to verify the license agreement. If a package is a community\n * package, the license is shown.\n *\n * @param pluginsToInstall The list of plugins to install.\n * @returns true if the installation can continue.\n */\n async verifyLicenses(pluginsToInstall: Array<LicensedApplicationPlugin>) {\n let _resolve;\n const result: Promise<boolean> = new Promise(resolve => {\n _resolve = resolve;\n });\n\n pluginsToInstall = pluginsToInstall.filter(\n plugin => plugin.type !== PackageType.CUSTOM && plugin.type !== PackageType.OFFICIAL\n );\n\n if (pluginsToInstall.length === 0) {\n return Promise.resolve(true);\n }\n\n const initialState: any = {\n id: EcosystemWizards.LICENSE_CONFIRM,\n componentInitialState: {\n pluginsToInstall\n }\n };\n const modalOptions = { initialState };\n const wizard = this.wizardModalService.show(modalOptions);\n\n wizard.content.onClose.subscribe(confirmed => {\n _resolve(confirmed);\n });\n\n return result;\n }\n\n /**\n * If the plugin is archived, a warning should be shown.\n *\n * @param pluginsToInstall The list of plugins to install.\n * @returns true if the installation can continue.\n */\n async verifyArchived(pluginsToInstall: Array<LicensedApplicationPlugin>) {\n let _resolve;\n const result: Promise<boolean> = new Promise(resolve => {\n _resolve = resolve;\n });\n\n pluginsToInstall = pluginsToInstall.filter(plugin => plugin.type === PackageType.ARCHIVED);\n\n if (pluginsToInstall.length === 0) {\n return Promise.resolve(true);\n }\n\n const initialState: any = {\n id: EcosystemWizards.ARCHIVED_CONFIRM\n };\n const modalOptions = { initialState };\n const wizard = this.wizardModalService.show(modalOptions);\n\n wizard.content.onClose.subscribe(confirmed => {\n _resolve(confirmed);\n });\n\n return result;\n }\n\n /**\n * @description\n * Compares currently deployed application version with application version tagged as \"latest\"\n *\n * @param {string} currentApplicationVersion Deployed application version\n * @param {object} latestApp Latest application version object\n *\n * @returns {boolean} Returns true if latest version is greater than current, otherwise false\n */\n shouldUpgradePackage(currentApplicationVersion: string, latestApp: IApplicationVersion): boolean {\n const latestApplicationVersion = latestApp?.version;\n\n if (!latestApplicationVersion || !currentApplicationVersion) {\n return false;\n }\n\n return gt(coerce(latestApplicationVersion), coerce(currentApplicationVersion));\n }\n\n /**\n * @description\n * Gets an object that contains searched tag\n *\n * @param {array} applicationVersions Array with all available versions\n * @param {string} tagName Searched tag\n *\n * @returns {object} Returns an object with searched tag\n */\n getApplicationVersionObjectByTag(\n applicationVersions: IApplicationVersion[],\n tagName: string\n ): IApplicationVersion {\n return applicationVersions?.find(element => element.tags.includes(tagName));\n }\n\n async getApplication(appId: IdReference): Promise<IApplication> {\n return (await this.applicationService.detail(appId)).data;\n }\n\n getApplications(customFilter: any = {}): Promise<IResultList<IApplication>> {\n const filter: object = {\n pageSize: 2000,\n withTotalPages: true\n };\n Object.assign(filter, customFilter);\n const currentTenant = this.appStateService.currentTenant.value;\n return this.applicationService.listByTenant(currentTenant.name, filter);\n }\n\n async getMicroservices(): Promise<IApplication[]> {\n const apps = (await this.getApplications()).data;\n const microservices = apps.filter(app => this.isMicroservice(app));\n return microservices.sort((a, b) => a.name.localeCompare(b.name));\n }\n\n async getWebApplications(customFilter: any = {}): Promise<IApplication[]> {\n const apps = (await this.getApplications(customFilter)).data;\n const webApps = apps.filter(app => this.isApplication(app));\n return webApps.sort((a, b) => a.name.localeCompare(b.name));\n }\n\n async getFeatureApplications(customFilter: any = {}): Promise<IApplication[]> {\n const apps = (await this.getApplications(customFilter)).data;\n const webApps = apps.filter(app => this.isFeature(app));\n return webApps.sort((a, b) => a.name.localeCompare(b.name));\n }\n\n async getPackageApplications(customFilter: any = {}): Promise<IApplication[]> {\n const filterCallback = app => this.isPackage(app);\n return this.getApplicationsFiltered(customFilter, filterCallback);\n }\n\n async getHostedAndPackageApplications(customFilter: any = {}): Promise<IApplication[]> {\n const filterCallback = app => this.isPackage(app) || this.isApplication(app);\n return this.getApplicationsFiltered(customFilter, filterCallback);\n }\n\n async getApplicationsFiltered(\n customFilter: any = {},\n filterCallback = (app: IApplication) => !!app\n ): Promise<IApplication[]> {\n const filter = Object.assign({}, customFilter);\n const sharedFilter = Object.assign(\n {\n availability: ApplicationAvailability.SHARED,\n type: 'HOSTED',\n pageSize: 2000\n },\n customFilter\n );\n const [{ data: apps }, { data: shared }] = await Promise.all([\n this.getApplications(filter),\n this.applicationService.list(sharedFilter)\n ]);\n const webApps = [...apps, ...shared].filter(filterCallback);\n // an app could be subscribed to a tenant, but also have it's availability set to SHARED, in that case it would occur twice.\n const uniqWebApps = uniqBy(webApps, (app: IApplication) => app.id);\n return uniqWebApps.sort((a, b) => a.name.localeCompare(b.name));\n }\n\n async isMicroserviceHostingAllowed(): Promise<boolean> {\n const { data: apps } = await this.applicationService.listByName('feature-microservice-hosting');\n return !!apps.filter(app => app.owner?.tenant?.id === 'management').length;\n }\n\n canOpenAppInBrowser(app: IApplication): boolean {\n const isNotAFeature = !this.isFeature(app);\n const hasProperType = [ApplicationType.HOSTED, ApplicationType.EXTERNAL].includes(app.type);\n const isNotPackage = !this.isPackage(app);\n return isNotAFeature && hasProperType && isNotPackage;\n }\n\n openApp(app) {\n window.open(this.applicationService.getHref(app), '_blank', 'noopener,noreferrer');\n }\n\n async canDeleteApp(app: IApplication): Promise<boolean> {\n return (\n this.isOwner(app) && (!this.isCurrentApp(app) || (await this.hasSubscribedAppParent(app)))\n );\n }\n\n isOwner(app: IApplication): boolean {\n const currentTenant: ICurrentTenant = this.appStateService.currentTenant.value;\n const appOwner = get(app, 'owner.tenant.id');\n return currentTenant?.name === appOwner;\n }\n\n isFeature(app: IApplication): boolean {\n return !!app.name.match(/feature-/);\n }\n\n isMicroservice(app: IApplication): boolean {\n return app.type === 'MICROSERVICE';\n }\n\n isExternal(app: IApplication): boolean {\n return app.type === 'EXTERNAL';\n }\n\n isPackage(app: IApplication): boolean {\n return app.manifest?.isPackage === true;\n }\n\n isPlugin(app: IApplication): boolean {\n return app.manifest?.package === 'plugin';\n }\n\n cancelAppCreation(app: IApplication): void {\n if (this.xhr) {\n this.xhr.abort();\n }\n if (app) {\n this.applicationService.delete(app);\n }\n }\n\n updateUploadProgress(event): void {\n if (event.lengthComputable) {\n const currentProgress = this.progress.value;\n this.progress.next(currentProgress + (event.loaded / event.total) * (95 - currentProgress));\n }\n }\n\n setAppActiveVersion(app: IApplication, activeVersionId: string): Promise<IApplication> {\n return this.applicationService.update({ id: app.id, activeVersionId });\n }\n\n setPackageVersionTag(app: IApplication, version: string, tags: string[]) {\n return this.applicationService.setPackageVersionTag(app, version, tags);\n }\n\n deletePackageVersion(app: IApplication, params: IApplicationVersionDeleteParams) {\n return this.applicationService.deleteVersionPackage(app, params);\n }\n\n getHumanizedAppName(app: IApplication): Promise<string> {\n return this.humanizeAppName.transform(app.name).pipe(debounceTime(250), take(1)).toPromise();\n }\n\n createConfig(app: IApplication, formGroupValue: FormGroup): Partial<IApplication> {\n const { id, type, availability } = app;\n let config = pick(formGroupValue, ['name', 'key', 'contextPath']);\n config = {\n ...config,\n isSetup: true,\n id,\n type,\n availability\n };\n return config;\n }\n\n async listArchives(appId: string | number | IApplication): Promise<IApplicationBinary[]> {\n const filter = {\n pageSize: 100\n };\n return (await this.applicationService.binary(appId).list(filter)).data;\n }\n\n async deleteArchive(archive: IApplicationBinary, app: IApplication): Promise<void> {\n const humanizedArchiveName = await this.getHumanizedAppName(archive);\n try {\n await this.modal.confirm(\n gettext('Delete archive'),\n this.translateService.instant(\n gettext(\n `You are about to delete archive \"{{ humanizedArchiveName }}\". Do you want to proceed?`\n ),\n { humanizedArchiveName }\n ),\n Status.DANGER,\n { ok: gettext('Delete'), cancel: gettext('Cancel') }\n );\n await this.applicationService.binary(app).delete(archive.id);\n this.alertService.success(gettext('Archive deleted.'));\n } catch (ex) {\n if (ex) {\n this.alertService.danger(get(ex, 'data.message'), ex.data);\n }\n throw new Error('Cancelled');\n }\n }\n\n async getArchiveManagedObject(binaryId: string): Promise<IManagedObject> {\n return (await this.inventoryService.detail(binaryId)).data;\n }\n\n async downloadArchive(\n app: IApplication,\n archive: Pick<IApplicationBinary, 'name' | 'id'>\n ): Promise<void> {\n try {\n const binary = await this.getBinary(app, archive);\n const fileBinary = new Blob([binary], { type: 'application/x-zip-compressed' });\n saveAs(fileBinary, archive.name);\n } catch (e) {\n // empty\n }\n }\n\n async updateApp(app: IApplication, deleteOnFailure = false): Promise<IResult<IApplication>> {\n try {\n return await this.applicationService.update(app);\n } catch (ex) {\n this.alertError(ex);\n if (deleteOnFailure) {\n await this.applicationService.delete(app.id);\n throw new EcosystemError(ERROR_TYPE.APPLICATION_CREATION_FAILED);\n }\n }\n }\n\n async deleteApp(app: IApplication, silent = false): Promise<void> {\n const humanizedAppName = await this.getHumanizedAppName(app);\n if (!silent) {\n await this.modal.confirm(\n gettext('Delete application'),\n this.translateService.instant(\n gettext(\n `You are about to delete application \"{{ humanizedAppName }}\". Do you want to proceed?`\n ),\n { humanizedAppName }\n ),\n Status.DANGER,\n { ok: gettext('Delete'), cancel: gettext('Cancel') }\n );\n }\n await this.applicationService.delete(app.id);\n if (!silent) {\n this.alertService.success(gettext('Application deleted.'));\n }\n this.appDeleted.emit(app);\n }\n\n async checkIfSubscribed(app: IApplication): Promise<boolean> {\n const currentTenant = await this.tenantService.current();\n const subscribedApps = currentTenant.data.applications.references;\n return subscribedApps.some(application => application.application.id === app.id);\n }\n\n async subscribeApp(app: IApplication): Promise<void> {\n const currentTenant: ICurrentTenant = this.appStateService.currentTenant.value;\n try {\n await this.tenantService.subscribeApplication(currentTenant, app);\n this.alertService.success(gettext('Successfully subscribed to application.'));\n } catch (ex) {\n this.alertError(ex);\n }\n }\n\n async unsubscribeApp(app: IApplication): Promise<void> {\n const currentTenant: ICurrentTenant = this.appStateService.currentTenant.value;\n try {\n await this.tenantService.unsubscribeApplication(currentTenant, app);\n this.alertService.success(gettext('Successfully unsubscribed from application.'));\n } catch (ex) {\n this.alertError(ex);\n }\n }\n\n async isValidAppType(archive: File, appType: ApplicationType): Promise<boolean> {\n try {\n const currentType = await this.getAppType(archive);\n if (currentType !== appType) {\n throw new EcosystemError(ERROR_TYPE.TYPE_VALIDATION);\n } else {\n this.progress.next(this.progress.value + 10);\n return true;\n }\n } catch (ex) {\n throw new EcosystemError(ERROR_TYPE.TYPE_VALIDATION);\n }\n }\n\n async uploadArchiveToApp(\n archive: File,\n app: IApplication,\n isNewVersion = false\n ): Promise<IApplication> {\n let uploadOverrides: IUploadParamsOverride;\n if (isNewVersion) {\n uploadOverrides = await this.getUploadOverrides(archive, app);\n }\n const binaryService = this.applicationService.binary(app);\n this.xhr = binaryService.uploadWithProgressXhr(\n archive,\n this.updateUploadProgress.bind(this),\n '',\n uploadOverrides\n );\n\n const binaryMo = await binaryService.getXMLHttpResponse(this.xhr);\n // TODO commented it due to: https://cumulocity.atlassian.net/browse/MTM-48553\n // Add it back when BE fixes issues with activeVersion.\n // if (isNewVersion) {\n // return await this.getApplication(app);\n // }\n const notInitialPackage = app.applicationVersions?.length > 0;\n if (notInitialPackage) {\n return (await this.applicationService.update({ id: app.id })).data;\n }\n return (await this.setAppActiveVersion(app, (binaryMo.binaryId || binaryMo.id) as string)).data;\n }\n\n async validateArchiveToAppCompatibility(archive: File, app: IApplication): Promise<void> {\n const appType = await this.getAppType(archive);\n if (appType !== app.type) {\n throw new EcosystemError(ERROR_TYPE.INVALID_APPLICATION);\n } else {\n this.progress.next(this.progress.value + 10);\n }\n if (this.isMicroservice(app)) {\n return;\n }\n const manifest = await this.getCumulocityJson(archive);\n // A user can upload an app without a Cumulocity JSON file (e.g. a react app).\n // This is allowed and should not trigger a validation error.\n if (!manifest) {\n return;\n }\n await this.validatePackageKeyAndContextPath(manifest, app);\n }\n\n async getCumulocityJson(archive: File): Promise<IManifest | null> {\n try {\n const c8yManifest = await this.getCumulocityJson$(archive).toPromise();\n return c8yManifest;\n } catch (ex) {\n return null;\n }\n }\n\n async createAppForArchive(archive, isPackageTypeArchive = false): Promise<IApplication> {\n let isPackage = false;\n const appType = await this.getAppType(archive);\n let appModel: any = {};\n const supportedAppTypes = [ApplicationType.HOSTED, ApplicationType.MICROSERVICE];\n\n if (supportedAppTypes.includes(appType)) {\n try {\n appModel = await this.getCumulocityJson$(archive).toPromise();\n isPackage = appModel.isPackage;\n } catch (e) {\n // do nothing, we allow having HOSTED applications without the manifest file\n }\n }\n const name = this.getBaseNameFromArchiveOrAppModel(archive, appType, appModel);\n const clearedName = this.removeForbiddenCharacters(name);\n const key = this.getAppKey(appModel, clearedName);\n const contextPath = this.getContextPath(appModel, name);\n\n const appToSave = {\n type: appType,\n name,\n key,\n contextPath\n };\n\n if (isPackageTypeArchive && !isPackage) {\n throw new EcosystemError(ERROR_TYPE.INVALID_PACKAGE);\n } else if (!isPackageTypeArchive && isPackage) {\n throw new EcosystemError(ERROR_TYPE.INVALID_APPLICATION);\n } else if (this.isNameLengthExceeded(name, appType)) {\n const error = new Error();\n error.name = ERROR_TYPE.MICROSERVICE_NAME_TOO_LONG;\n error.message = this.translateService.instant(ERROR_MESSAGES[error.name], {\n name,\n maxChars: MICROSERVICE_NAME_MAX_LENGTH\n });\n throw error;\n }\n return (\n await this.applicationService.create({\n ...appToSave,\n manifest: {\n isPackage,\n ...(appModel?.package && { package: appModel.package })\n } as unknown as IManifest\n })\n ).data;\n }\n\n async reactivateArchive(app: IApplication): Promise<void> {\n try {\n await this.applicationService.reactivateArchive(app.id);\n this.alertService.success(gettext('Application reactivated.'));\n } catch (ex) {\n this.alertError(ex);\n }\n }\n\n async removeOldestArchive(app: IApplication, archives: IApplicationBinary[]): Promise<void> {\n try {\n await this.modal.confirm(\n gettext('Delete oldest archive and continue'),\n gettext(\n 'Up to 6 archives can be saved in the platform. If you upload a new archive, the oldest archive that is not active will be deleted. Do you want to proceed?'\n ),\n Status.INFO,\n { ok: gettext('Delete and continue') }\n );\n const archiveToDelete = archives[archives.length - 2];\n await this.applicationService.binary(app).delete(archiveToDelete.id);\n this.alertService.success(gettext('Archive deleted.'));\n } catch (ex) {\n if (ex) {\n this.alertError(ex);\n } else {\n return Promise.reject('cancelled');\n }\n }\n }\n\n async deployApp(selectedPackage: IApplication, formGroupValue, model): Promise<IApplication> {\n // Create new app config\n const config = this.createConfig(selectedPackage, formGroupValue);\n const requestedVersion = model.selected.version;\n let cleanManifest;\n try {\n const manifest = await this.applicationService.getAppManifest(\n selectedPackage,\n requestedVersion\n );\n cleanManifest = omit(manifest, ['name', 'contextPath', 'key']);\n } catch (ex) {\n throw new EcosystemError(ERROR_TYPE.VERSION_NOT_FOUND);\n }\n\n config.isSetup = true;\n config.manifest = cleanManifest;\n config.availability = ApplicationAvailability.PRIVATE;\n config.manifest.isPackage = false;\n config.manifest.source = selectedPackage.id;\n config.manifest.package = 'blueprint';\n\n // because of a issue with SHARED availability we always should check again\n // if the app not exist already\n const allExistingApps = await this.getHostedAndPackageApplications();\n const doesAppKeyOrContextPathExist = this.checkIfAppNameKeyPathExists(allExistingApps, config);\n if (doesAppKeyOrContextPathExist) {\n throw new EcosystemError(ERROR_TYPE.ALREADY_EXIST);\n }\n\n // Create new app\n const newApp = (await this.applicationService.create(config)).data;\n try {\n // Binary upload can fail if SHARED package\n // in this case, catch error and fall back to\n // clone API.\n await this.uploadBinaryFromOtherPackage(\n selectedPackage,\n newApp,\n model.selected.binaryId,\n requestedVersion\n );\n } catch (error) {\n if (error?.res?.status === 404) {\n await this.fallbackToClone(newApp, selectedPackage, requestedVersion);\n }\n }\n\n // update the icon if a custom one is selected\n if (formGroupValue.icon) {\n await this.applicationService.update({\n id: newApp.id,\n config: { icon: formGroupValue.icon }\n });\n }\n return newApp;\n }\n\n async fallbackToClone(\n application: IApplication,\n selectedPackage: IApplication,\n requestedVersion?: string\n ) {\n let wasSuccess = true;\n let clonedPkg;\n try {\n clonedPkg = (await this.applicationService.clone(selectedPackage, requestedVersion)).data;\n await this.uploadBinaryFromOtherPackage(\n selectedPackage,\n application,\n clonedPkg.activeVersionId,\n requestedVersion,\n clonedPkg\n );\n } catch (error) {\n this.alertError(error);\n wasSuccess = false;\n } finally {\n await this.deleteApp(clonedPkg, true);\n }\n return wasSuccess;\n }\n\n async uploadBinaryFromOtherPackage(\n selectedPackage: IApplication,\n applicationToUploadBinaryTo: IApplication,\n binaryId: string,\n requestedVersion?: string,\n useBinariesFrom?: IApplication\n ) {\n const { data: binaryDetails } = await this.inventoryService.detail(binaryId);\n\n // Get binary from specific package version\n const binary = await this.getBinary(useBinariesFrom || selectedPackage, {\n id: binaryId\n });\n // Create zip\n const fileBinary = new Blob([binary], { type: binaryDetails.contentType });\n const file = new File([fileBinary], binaryDetails.name, {\n type: binaryDetails.contentType\n });\n\n // Upload binary to new app\n await this.uploadArchiveToApp(file, applicationToUploadBinaryTo);\n\n // update the app manifest\n await this.updateAppManifest(applicationToUploadBinaryTo, selectedPackage, requestedVersion);\n }\n\n getAppState(app: IApplication): ApplicationState {\n if (!this.isOwner(app)) {\n return APP_STATE.SUBSCRIBED;\n } else if (this.isUnpacked(app)) {\n return APP_STATE.UNPACKED;\n } else if (app.type === ApplicationType.EXTERNAL) {\n return APP_STATE.EXTERNAL;\n }\n return APP_STATE.CUSTOM;\n }\n\n getPackageContentState(app: IApplication): ApplicationState {\n if (!this.isPackage(app)) {\n return;\n }\n if (this.isPackageBlueprint(app)) {\n return APP_STATE.PACKAGE_BLUEPRINT;\n }\n if (this.isPluginsPackage(app)) {\n return APP_STATE.PACKAGE_PLUGIN;\n }\n return APP_STATE.PACKAGE_UNKNOWN;\n }\n\n isPackageBlueprint(app: IApplication): boolean {\n return this.isPackage(app) && app.manifest.package === 'blueprint';\n }\n\n isPluginsPackage(app: IApplication): boolean {\n return this.isPackage(app) && app.manifest.package === 'plugin';\n }\n\n isUnpacked(app: IApplication): boolean {\n return !!app.manifest?.source;\n }\n\n hasExports(app: IApplication): boolean {\n return !!app.manifest?.exports?.length;\n }\n\n isApplication(app: IApplication): boolean {\n return (\n app.type !== ApplicationType.MICROSERVICE && !this.isFeature(app) && !this.isPackage(app)\n );\n }\n\n isCustomMicroservice(app: IApplication) {\n return this.isOwner(app) && app.type === ApplicationType.MICROSERVICE;\n }\n\n async getBinary(\n app: IApplication,\n archive: IApplicationBinary | IIdentified\n ): Promise<ArrayBuffer> {\n let binary;\n try {\n const res = await this.applicationService.binary(app).downloadArchive(archive.id);\n binary = await res.arrayBuffer();\n } catch (ex) {\n const msg = gettext('Could not get the binary.');\n this.alertService.danger(msg);\n }\n return binary;\n }\n\n async isOverwrittenByCustomApp(app: IApplication): Promise<boolean> {\n return !this.isOwner(app) && (await this.hasSubscribedAppParent(app));\n }\n\n async hasSubscribedAppParent(app: IApplication): Promise<boolean> {\n const appsGroupedByContextPath = await this.appsGroupedByContextPath$.pipe(take(1)).toPromise();\n return app.contextPath && appsGroupedByContextPath[app.contextPath]?.length === 2;\n }\n\n /**\n * @deprecated\n */\n setAvailabilityToPrivateIfNotSetAlready(app: IApplication): IApplication {\n app.availability = ApplicationAvailability.PRIVATE;\n return app;\n }\n\n /**\n * Shows an error dialog.\n * @param error Either a server error or an internal [[EcosystemError]].\n */\n alertError(error: Error | EcosystemError) {\n if (error instanceof EcosystemError) {\n this.alertService.danger(error.message);\n } else {\n this.alertService.addServerFailure(error);\n }\n }\n\n async validatePackageKeyAndContextPath(manifest: IManifest, app: IApplication) {\n const contextPath = get(manifest, 'contextPath');\n const appKey = get(manifest, 'key');\n if (contextPath !== app.contextPath || appKey !== app.key) {\n throw new EcosystemError(ERROR_TYPE.KEY_OR_CONTEXT_PATH_MISMATCH);\n }\n }\n\n filterContainString(name: string, filterTerm: string): boolean {\n const term = filterTerm.toLowerCase().trim();\n return name && name.toLowerCase().indexOf(term) > -1;\n }\n\n async updateAppManifest(\n application: IApplication,\n selectedPackage: IApplication,\n requestedVersion?: string\n ): Promise<{ res: IFetchResponse; data: any }> {\n const { id } = application;\n const cleanedApp = this.removeAppProperties(application);\n let manifest: Partial<IManifest> = selectedPackage.manifest || {};\n if (requestedVersion) {\n try {\n const versionedAppManifest = await this.applicationService.getAppManifest(\n selectedPackage,\n requestedVersion\n );\n manifest = versionedAppManifest;\n } catch (ex) {\n throw new EcosystemError(ERROR_TYPE.VERSION_NOT_FOUND);\n }\n }\n\n cleanedApp.manifest = manifest;\n cleanedApp.manifest.isPackage = false;\n cleanedApp.manifest.source = selectedPackage.id;\n\n return await this.applicationService\n .binary(id)\n .updateFiles([{ path: CUMULOCITY_JSON, contents: JSON.stringify(cleanedApp) }]);\n }\n\n /**\n * Creates object containing properties for filtering applications on lists.\n *\n * @param {object} app Application to create filter properties from.\n * @returns {object} Properties to filter by applications list.\n */\n getAppFilterProps(app: IApplication): AppFilterProps {\n return {\n type: this.pluginService.getPackageType(app),\n availability: this.getAppState(app)?.label,\n content: this.getPackageContentState(app)?.label\n };\n }\n\n private checkIfAppNameKeyPathExists(\n existingApps: IApplication[],\n app: IApplication,\n retryNo?: number\n ): IApplication {\n if (isUndefined(retryNo)) {\n return existingApps.find(\n existingApp =>\n existingApp.name === app.name ||\n existingApp.key === app.key ||\n existingApp.contextPath === app.contextPath\n );\n }\n return existingApps.find(\n existingApp =>\n existingApp.name === app.name ||\n existingApp.key === app.key ||\n existingApp.contextPath === app.contextPath ||\n existingApp.name === [app.name, retryNo].join('-') ||\n existingApp.key === [app.key, retryNo].join('-') ||\n existingApp.contextPath === [app.contextPath, retryNo].join('-')\n );\n }\n\n private async showModal(\n packageType: Partial<IManifest> | ApplicationPlugin,\n isPlugin: boolean,\n apiVersion: string,\n sdkVersion?: string\n ): Promise<boolean> {\n try {\n const messages = {\n plugin: {\n title: gettext('Plugin installation'),\n body: sdkVersion\n ? gettext(\n 'The current version of the plugin that you are trying to install does not satisfy the requirements for the following API version \"{{ apiVersion }}\" or SDK version \"{{ sdkVersion }}\". Do you want to proceed?'\n )\n : gettext(\n 'The current version of the plugin that you are trying to install does not satisfy the requirements for the following API version \"{{ apiVersion }}\". Do you want to proceed?'\n )\n },\n blueprint: {\n title: gettext('Blueprint installation'),\n body: sdkVersion\n ? gettext(\n 'The current version of the blueprint that you are trying to install does not satisfy the requirements for the following API version \"{{ apiVersion }}\" or SDK version \"{{ sdkVersion }}\". Do you want to proceed?'\n )\n : gettext(\n 'The current version of the blueprint that you are trying to install does not satisfy the requirements for the following API version \"{{ apiVersion }}\". Do you want to proceed?'\n )\n }\n };\n const entityType = isPlugin ? 'plugin' : 'blueprint';\n const selectedMessages = messages[entityType];\n const translatedBody = this.translateService.instant(selectedMessages.body, {\n name: packageType.name,\n apiVersion,\n sdkVersion\n });\n await this.modal.confirm(selectedMessages.title, translatedBody, 'warning', {\n ok: gettext('Continue'),\n cancel: gettext('Cancel')\n });\n } catch {\n // modal canceled\n return false;\n }\n\n return true;\n }\n\n private async getPlatformVersion() {\n return await this.appStateService.state$\n .pipe(\n take(1),\n map(state => state?.versions?.backend),\n filter(backendVersion => !!backendVersion)\n )\n .toPromise();\n }\n\n private getAppKey(appModel: IApplication, name: string): string {\n let key = appModel?.key;\n if (!key) {\n key = `${kebabCase(name)}-key`;\n }\n return key;\n }\n\n private getContextPath(appModel: IApplication, name: string): string {\n return appModel?.contextPath || name.toLowerCase();\n }\n\n private removeForbiddenCharacters(str: string): string {\n return str.replace(/[^a-zA-Z0-9-_]/g, '');\n }\n\n private isCurrentApp(app: IApplication): boolean {\n const currentApp = this.appStateService.state.app;\n return currentApp.contextPath === app.contextPath;\n }\n\n private getCumulocityJson$(archive: File): Observable<any> {\n return this.zipService.getJsonData(archive, {\n filename: CUMULOCITY_JSON\n });\n }\n\n private getAppType(archive: File): Promise<ApplicationType> {\n return this.getCumulocityJson$(archive)\n .toPromise()\n .then(\n data =>\n get(data, 'type') ||\n (get(data, 'apiVersion') ? ApplicationType.MICROSERVICE : ApplicationType.HOSTED)\n )\n .catch(() => ApplicationType.HOSTED);\n }\n\n private getBaseNameFromArchiveOrAppModel(\n archive: any,\n appType: ApplicationType,\n appModel?: IApplication\n ): string {\n let baseName = appModel?.name || archive.name.replace(/\\.zip$/i, '');\n if (appType === 'MICROSERVICE') {\n baseName = this.removeVersionFromName(baseName);\n }\n return baseName;\n }\n\n private removeAppProperties(app: IApplication): IApplication {\n const tempApp = cloneDeep(app);\n const propertiesToRemove = ['id', 'owner', 'activeVersionId', 'self', 'type'];\n\n propertiesToRemove.forEach(prop => delete tempApp[prop]);\n return tempApp;\n }\n\n private async getUploadOverrides(\n archive: File,\n app: IApplication\n ): Promise<IUploadParamsOverride> {\n const { version } = await this.getCumulocityJson$(archive).toPromise();\n const isInitialPackage = app.applicationVersions?.length === 0;\n return {\n listUrl: 'versions',\n headers: {\n Accept: 'application/vnd.com.nsn.cumulocity.applicationVersion+json;charset=UTF-8;ver=0.9'\n },\n bodyFileProperty: 'applicationBinary',\n requestBody: {\n applicationVersion: { version, ...(isInitialPackage && { tags: ['latest'] }) }\n }\n };\n }\n\n private removeVersionFromName(name: string) {\n const versionRegExp = /-\\d+\\.\\d+\\.\\d+(\\.\\d+)?(-\\d+)?(.*)$/;\n return name.replace(versionRegExp, '');\n }\n\n private isNameLengthExceeded(name, appType) {\n return name.length > MICROSERVICE_NAME_MAX_LENGTH && appType === ApplicationType.MICROSERVICE;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ApplicationAvailability, ApplicationService, IApplication } from '@c8y/client';\nimport { TranslateService } from '@ngx-translate/core';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { AlertService, AppStateService, GainsightService, ModalService } from '@c8y/ngx-components';\nimport { PRODUCT_EXPERIENCE_ECOSYSTEM } from './ecosystem.model';\n\n@Injectable({ providedIn: 'root' })\nexport class PackageAvailabilityService {\n CURRENT_LOCATION = location.href;\n availabilities = [\n { label: gettext('Private`package availability`'), value: ApplicationAvailability.PRIVATE },\n { label: gettext('Market`package availability`'), value: ApplicationAvailability.MARKET },\n { label: gettext('Shared`package availability`'), value: ApplicationAvailability.SHARED }\n ];\n\n constructor(\n private appState: AppStateService,\n private alert: AlertService,\n private modal: ModalService,\n private application: ApplicationService,\n private gainsightService: GainsightService,\n private translateService: TranslateService\n ) {}\n\n async askIfAvailabilityShouldBeSetTo(\n applicationPackage: IApplication,\n availability: ApplicationAvailability\n ): Promise<IApplication> {\n // availability does not matter for tenant that do not have or can create subtenants\n if (!this.appState.currentTenant.value?.allowCreateTenants) {\n return applicationPackage;\n }\n try {\n await this.openAvailabilityModal(availability);\n // user confirmed changing availability\n return await this.setAvailability(applicationPackage, availability);\n } catch {\n // user canceled changing availability\n return applicationPackage;\n }\n }\n\n async setAvailability(\n applicationPackage: IApplication,\n availability: ApplicationAvailability\n ): Promise<IApplication> {\n try {\n const { data: app } = await this.application.updateApplicationAvailability(\n applicationPackage,\n availability\n );\n this.alert.success(gettext('Updated package availability.'));\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.AVAILABILITY,\n {\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.AVAILABILITY_CHANGE,\n result: availability.toString().toLocaleLowerCase(),\n url: this.CURRENT_LOCATION\n }\n );\n return app;\n } catch (e) {\n this.alert.warning(gettext('Failed to set package availability.'));\n this.alert.addServerFailure(e);\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.AVAILABILITY,\n {\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.AVAILABILITY_CHANGE,\n result: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.RESULTS.SERVER_FAILURE,\n url: this.CURRENT_LOCATION\n }\n );\n return applicationPackage;\n }\n }\n\n private getConfirmationBody(availability: ApplicationAvailability): string {\n switch (availability) {\n case ApplicationAvailability.SHARED:\n return gettext(\n 'Do you want to set the package availability to \"Shared\"? This will make the package available to all subtenants without explicitly subscribing the package.'\n );\n case ApplicationAvailability.MARKET:\n return gettext(\n 'Do you want to set the package availability to \"Market\"? This will make the package available to your own tenant and needs to be subscribed to subtenants individually.'\n );\n case ApplicationAvailability.PRIVATE:\n return gettext(\n 'Do you want to set the package availability to \"Private\"? This will make the package only available to your own tenant.'\n );\n default:\n return '';\n }\n }\n\n private async openAvailabilityModal(availability: ApplicationAvailability) {\n const body = this.getConfirmationBody(availability);\n const availabilityLabel = this.availabilities.find(obj => obj.value === availability).label;\n\n await this.modal.confirm(gettext('Package availability'), body, 'info', {\n ok: this.translateService.instant(gettext('Set to \"{{ packageAvailability }}\"'), {\n packageAvailability: this.translateService.instant(availabilityLabel)\n }),\n cancel: gettext('Cancel')\n });\n }\n}\n","import { Component, Input, ViewChild } from '@angular/core';\nimport { ApplicationService, IApplication, ApplicationAvailability } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n AlertService,\n DropAreaComponent,\n WizardComponent,\n WizardHeaderComponent,\n IconDirective,\n WizardBodyComponent,\n FormGroupComponent,\n MessagesComponent,\n MessageDirective,\n OperationResultComponent,\n WizardFooterComponent,\n C8yTranslateDirective,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { BehaviorSubject } from 'rxjs';\nimport { EcosystemService } from './ecosystem.service';\nimport { ERROR_MESSAGES } from './ecosystem.constants';\nimport { TranslateService } from '@ngx-translate/core';\nimport { PackageAvailabilityService } from './package-availability.service';\nimport { SupportedIconsSuggestions } from '@c8y/ngx-components/icon-selector/icons';\nimport { NgIf, NgFor, AsyncPipe } from '@angular/common';\n\nimport { PopoverDirective } from 'ngx-bootstrap/popover';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n selector: 'c8y-add-application',\n templateUrl: './add-application.component.html',\n imports: [\n WizardHeaderComponent,\n IconDirective,\n WizardBodyComponent,\n NgIf,\n FormGroupComponent,\n DropAreaComponent,\n MessagesComponent,\n MessageDirective,\n PopoverDirective,\n FormsModule,\n NgFor,\n OperationResultComponent,\n WizardFooterComponent,\n C8yTranslateDirective,\n C8yTranslatePipe,\n AsyncPipe\n ]\n})\nexport class AddApplicationComponent {\n @Input() headerText: string;\n @Input() headerIcon: SupportedIconsSuggestions;\n @Input() successText: string;\n @Input() createApplicationHandler: any;\n @Input() uploadApplicationHandler: any;\n @Input() canGoBack = false;\n @Input() applicationType: 'application' | 'package' = 'application';\n\n @ViewChild(DropAreaComponent) dropAreaComponent;\n\n isLoading: boolean;\n isAppCreated: boolean;\n createdApp: IApplication;\n canOpenInBrowser = false;\n errorMessage: string;\n selectedAvailability = ApplicationAvailability.PRIVATE;\n availabilityHelpPopoverText = gettext(`\n <p class=\"m-b-8\"><b>Shared</b> availability will make the package available to all subtenants without explicitly subscribing the package.</p>\n <p class=\"m-b-8\"><b>Market</b> availability will make the package available to your own tenant and needs to be subscribed to subtenants individually.</p>\n <p class=\"m-b-8\"><b>Private</b> availability will make the package only available to your own tenant.</p>\n `);\n private uploadCanceled = false;\n\n constructor(\n private ecosystemService: EcosystemService,\n private alertService: AlertService,\n private applicationService: ApplicationService,\n private wizardComponent: WizardComponent,\n private translateService: TranslateService,\n private packageAvailability: PackageAvailabilityService\n ) {}\n\n get progress(): BehaviorSubject<number> {\n return this.ecosystemService.progress;\n }\n\n onFileDroppedEvent(event) {\n if (event && event.length > 0) {\n const file = event[0].file;\n this.onFile(file);\n }\n }\n\n async onFile(file: File) {\n this.isLoading = true;\n this.errorMessage = null;\n this.progress.next(0);\n\n try {\n this.createdApp = await this.createApplicationHandler(file);\n if (this.applicationType === 'package') {\n this.createdApp = await this.packageAvailability.setAvailability(\n this.createdApp,\n this.selectedAvailability\n );\n }\n await this.uploadApplicationHandler(file, this.createdApp);\n this.canOpenInBrowser = this.ecosystemService.canOpenAppInBrowser(this.createdApp);\n this.isAppCreated = true;\n } catch (ex) {\n this.ecosystemService.cancelAppCreation(this.createdApp);\n this.createdApp = null;\n this.dropAreaComponent.onDelete();\n // prepare translation of static message if it exists\n const staticErrorMessage =\n ERROR_MESSAGES[ex.message] && this.translateService.instant(ERROR_MESSAGES[ex.message]);\n // if there is no static message, use dynamic one from the exception\n this.errorMessage = staticErrorMessage ?? ex.message;\n if (!this.errorMessage && !this.uploadCanceled) {\n this.alertService.addServerFailure(ex);\n }\n }\n this.progress.next(100);\n this.isLoading = false;\n }\n\n getHref(app: IApplication): string {\n return this.applicationService.getHref(app);\n }\n\n cancel() {\n this.cancelFileUpload();\n this.wizardComponent.close();\n }\n\n done() {\n this.wizardComponent.close();\n }\n\n back() {\n this.wizardComponent.reset();\n }\n\n private cancelFileUpload() {\n this.uploadCanceled = true;\n this.ecosystemService.cancelAppCreation(this.createdApp);\n this.createdApp = null;\n }\n}\n","<c8y-wizard-header>\n <i [c8yIcon]=\"headerIcon\"></i>\n <h4 id=\"modal-title\">{{ headerText | translate }}</h4>\n</c8y-wizard-header>\n\n<c8y-wizard-body>\n <p class=\"p-16 text-center text-medium separator-bottom sticky-top bg-component\">\n {{ 'Upload a *.zip file' | translate }}\n </p>\n <c8y-form-group\n class=\"m-t-16 m-l-auto m-r-auto\"\n style=\"max-width: 265px\"\n id=\"modal-body\"\n *ngIf=\"!isAppCreated; else appCreated\"\n [hasError]=\"!!errorMessage\"\n >\n <c8y-drop-area\n class=\"drop-area\"\n (dropped)=\"onFileDroppedEvent($event)\"\n [accept]=\"'.zip'\"\n [loading]=\"isLoading\"\n [maxAllowedFiles]=\"1\"\n [progress]=\"progress | async\"\n ></c8y-drop-area>\n <c8y-messages>\n <c8y-message *ngIf=\"errorMessage\">\n {{ errorMessage | translate }}\n </c8y-message>\n </c8y-messages>\n </c8y-form-group>\n <div class=\"card-block\" *ngIf=\"applicationType === 'package'\">\n <c8y-form-group>\n <label\n class=\"m-r-8 d-inline-block\"\n id=\"availabilitySelectorLabel\"\n for=\"availabilitySelector\"\n >\n {{ 'Select extension availability' | translate }}\n </label>\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"availabilityHelpPopover\"\n placement=\"top\"\n triggers=\"focus\"\n type=\"button\"\n ></button>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"availabilitySelector\"\n name=\"availabilitySelector\"\n [(ngModel)]=\"selectedAvailability\"\n >\n <option\n *ngFor=\"let availability of packageAvailability.availabilities\"\n [ngValue]=\"availability.value\"\n >\n {{ availability.label | translate }}\n </option>\n </select>\n </div>\n </c8y-form-group>\n </div>\n <ng-template #appCreated>\n <div\n class=\"d-flex a-i-center j-c-center\"\n style=\"min-height: 285px\"\n >\n <c8y-operation-result\n class=\"lead\"\n type=\"success\"\n text=\"{{ successText | translate }}\"\n [vertical]=\"true\"\n [size]=\"84\"\n ></c8y-operation-result>\n </div>\n </ng-template>\n <ng-template #availabilityHelpPopover>\n <div [innerHtml]=\"availabilityHelpPopoverText | translate\"></div>\n </ng-template>\n</c8y-wizard-body>\n\n<c8y-wizard-footer>\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Back' | translate }}\"\n type=\"button\"\n (click)=\"back()\"\n *ngIf=\"!isAppCreated && canGoBack\"\n translate\n >\n Back\n </button>\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n (click)=\"cancel()\"\n *ngIf=\"!isAppCreated\"\n translate\n >\n Cancel\n </button>\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Done' | translate }}\"\n type=\"button\"\n (click)=\"done()\"\n *ngIf=\"isAppCreated\"\n translate\n >\n Done\n </button>\n <a\n class=\"btn btn-primary\"\n title=\"{{ 'Open' | translate }}\"\n target=\"_blank\"\n (click)=\"$event.stopPropagation()\"\n *ngIf=\"isAppCreated && canOpenInBrowser\"\n [href]=\"getHref(createdApp)\"\n rel=\"noopener noreferrer\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"external-link\"\n ></i>\n {{ 'Open' | translate }}\n </a>\n</c8y-wizard-footer>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { PackageType } from '@c8y/ngx-components';\nimport { PACKAGE_TYPE_LABELS } from './ecosystem.constants';\n\n@Pipe({ name: 'translatePackageLabel' })\nexport class TranslatePackageLabelPipe implements PipeTransform {\n constructor(private translate: TranslateService) {}\n\n transform(\n rawPackageLabel: PackageType.OFFICIAL | PackageType.COMMUNITY | PackageType.ARCHIVED | string\n ): string {\n const isOneOfTheKnownOnes = !!PACKAGE_TYPE_LABELS[rawPackageLabel?.toUpperCase()];\n if (isOneOfTheKnownOnes) {\n return this.translate.instant(PACKAGE_TYPE_LABELS[rawPackageLabel?.toUpperCase()].label);\n }\n return rawPackageLabel;\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { ApplicationService, IApplication, IApplicationVersion } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n AlertService,\n GainsightService,\n PackageType,\n PluginsService,\n Wizard,\n WizardComponent,\n WizardConfig,\n WizardModalService,\n AppIconComponent,\n IconDirective,\n IfAllowedDirective,\n C8yTranslatePipe,\n HumanizeAppNamePipe\n} from '@c8y/ngx-components';\nimport { ModalOptions } from 'ngx-bootstrap/modal';\nimport { BehaviorSubject } from 'rxjs';\nimport { EcosystemService } from './ecosystem.service';\nimport { PRODUCT_EXPERIENCE_ECOSYSTEM } from './ecosystem.model';\nimport { DuplicateApplicationComponent } from './duplicate-application/duplicate-application.component';\nimport { APP_STATE, ApplicationState, PACKAGE_TYPE_LABELS } from './ecosystem.constants';\nimport { NgIf, NgClass, AsyncPipe } from '@angular/common';\nimport { TooltipDirective } from 'ngx-bootstrap/tooltip';\nimport {\n BsDropdownDirective,\n BsDropdownToggleDirective,\n BsDropdownMenuDirective\n} from 'ngx-bootstrap/dropdown';\nimport { CdkTrapFocus } from '@angular/cdk/a11y';\nimport { TranslatePackageLabelPipe } from './translate-package-label.pipe';\n\n@Component({\n selector: 'c8y-application-card',\n templateUrl: './application-card.component.html',\n imports: [\n NgIf,\n TooltipDirective,\n NgClass,\n AppIconComponent,\n IconDirective,\n BsDropdownDirective,\n CdkTrapFocus,\n BsDropdownToggleDirective,\n BsDropdownMenuDirective,\n IfAllowedDirective,\n C8yTranslatePipe,\n AsyncPipe,\n HumanizeAppNamePipe,\n TranslatePackageLabelPipe\n ]\n})\nexport class ApplicationCardComponent implements OnInit {\n CURRENT_LOCATION = location.href;\n\n @Input() app: IApplication;\n @Input() canEdit = true;\n @Output() onAppDeleted: EventEmitter<void> = new EventEmitter();\n @Output() onAppCloned: EventEmitter<void> = new EventEmitter();\n appState: ApplicationState;\n packageContentState: ApplicationState;\n packageType: PackageType;\n canOpenInBrowser: boolean;\n disableOpenInBrowser: boolean;\n canDelete: boolean;\n isPackage: boolean;\n isPlugin: boolean;\n isFeature: boolean;\n isExternal: boolean;\n isMicroservice: boolean;\n canClone: boolean;\n isUnpacked: boolean;\n shouldUpgradePackage: boolean;\n blueprintApplicationVersion: IApplicationVersion[];\n latestApplicationVersion: IApplicationVersion;\n isShowVersion: boolean;\n isOwnedByManagementTenant: boolean;\n get openButtonTitle() {\n return !this.disableOpenInBrowser\n ? gettext('Open')\n : gettext('This application is overridden.');\n }\n\n readonly packageTypeLabels = PACKAGE_TYPE_LABELS;\n readonly PACKAGE_TYPE = PackageType;\n readonly UNPACKED_LABEL = APP_STATE.UNPACKED.label;\n readonly CANNOT_DELETE_HINT = gettext(\n `Subscribed or current applications can't be deleted. Delete the application on the parent tenant or unsubscribe it from the current.`\n );\n readonly PACKAGE_CONTENT_UNDETERMINED_LABEL = gettext(\n 'Package contents could not be determined.'\n );\n\n constructor(\n private applicationService: ApplicationService,\n private ecosystemService: EcosystemService,\n private alertService: AlertService,\n private router: Router,\n private wizardModalService: WizardModalService,\n private alert: AlertService,\n private pluginService: PluginsService,\n private gainsightService: GainsightService\n ) {}\n\n async ngOnInit() {\n this.appState = this.ecosystemService.getAppState(this.app);\n this.canOpenInBrowser = this.ecosystemService.canOpenAppInBrowser(this.app);\n this.packageType = this.pluginService.getPackageType(this.app);\n this.disableOpenInBrowser =\n this.canOpenInBrowser && (await this.ecosystemService.isOverwrittenByCustomApp(this.app));\n this.canDelete = await this.ecosystemService.canDeleteApp(this.app);\n this.isPackage = this.ecosystemService.isPackage(this.app);\n this.packageContentState = this.ecosystemService.getPackageContentState(this.app);\n this.isPlugin = this.ecosystemService.isPlugin(this.app);\n this.isFeature = this.ecosystemService.isFeature(this.app);\n this.isMicroservice = this.ecosystemService.isMicroservice(this.app);\n this.isExternal = this.ecosystemService.isExternal(this.app);\n this.canClone = !this.isMicroservice && !this.isPlugin;\n this.isUnpacked = this.ecosystemService.isUnpacked(this.app);\n this.isShowVersion = this.shouldShowVersion();\n await this.applicationUpdateCheck();\n }\n\n shouldShowVersion() {\n return !!this.app.manifest?.version;\n }\n\n detail() {\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.APPLICATION_CARD,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.APPLICATION_CARD,\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.EDIT,\n url: this.CURRENT_LOCATION\n }\n );\n\n if (this.isMicroservice) {\n this.router.navigateByUrl(`/ecosystem/microservice/microservices/${this.app.id}`);\n return;\n }\n\n if (this.isPackage) {\n this.router.navigateByUrl(`/ecosystem/extension/extensions/${this.app.id}`);\n return;\n }\n\n if (this.isFeature) {\n this.router.navigateByUrl(`/ecosystem/application/features/${this.app.id}`);\n return;\n }\n\n this.router.navigateByUrl(`/ecosystem/application/applications/${this.app.id}`);\n }\n\n openApp() {\n this.ecosystemService.openApp(this.app);\n }\n\n async delete() {\n try {\n await this.ecosystemService.deleteApp(this.app);\n this.onAppDeleted.emit();\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.APPLICATION_CARD,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.APPLICATION_CARD,\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.DELETE,\n url: this.CURRENT_LOCATION\n }\n );\n } catch (ex) {\n if (ex) {\n this.alertService.addServerFailure(ex);\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.APPLICATION_CARD,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.APPLICATION_CARD,\n result: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.RESULTS.SERVER_FAILURE,\n url: this.CURRENT_LOCATION\n }\n );\n }\n }\n }\n\n async clone() {\n const wizardConfig: WizardConfig = {\n headerText: 'Add Application',\n headerIcon: 'c8y-atom'\n };\n\n const initialState: Wizard<DuplicateApplicationComponent> = {\n wizardConfig,\n componentInitialState: {\n selectedApp: new BehaviorSubject(this.app)\n },\n id: 'duplicateApplication'\n };\n\n const modalOptions: ModalOptions<WizardComponent> = { initialState };\n\n const modalRef = this.wizardModalService.show(modalOptions);\n modalRef.content.onClose.subscribe(() => {\n this.onAppCloned.next();\n });\n\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.APPLICATION_CARD,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.APPLICATION_CARD,\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.CLONE,\n url: this.CURRENT_LOCATION\n }\n );\n }\n\n private async applicationUpdateCheck(): Promise<void> {\n if (this.app.manifest?.source) {\n try {\n this.blueprintApplicationVersion = (\n await this.applicationService.listVersions(this.app.manifest?.source)\n ).data;\n\n this.latestApplicationVersion = this.ecosystemService.getApplicationVersionObjectByTag(\n this.blueprintApplicationVersion,\n 'latest'\n );\n this.shouldUpgradePackage = this.ecosystemService.shouldUpgradePackage(\n this.app.manifest?.version,\n this.latestApplicationVersion\n );\n } catch (error) {\n if (!this.blueprintApplicationVersion) {\n return;\n }\n this.alert.addServerFailure(error);\n }\n }\n }\n}\n","<div\n class=\"card pointer card--d-col notFeature\"\n data-cy=\"application-card--extensions-list\"\n *ngIf=\"!isFeature\"\n>\n <div\n class=\"card-block text-center card-column-40\"\n data-cy=\"application-card--package-name\"\n (click)=\"detail()\"\n >\n <button\n class=\"card__ribbon btn-clean\"\n [attr.aria-label]=\"\n (app.label || app.manifest?.label | translatePackageLabel) +\n ': ' +\n (packageTypeLabels[packageType].tooltip | translate)\n \"\n tooltip=\"{{ packageTypeLabels[packageType].tooltip | translate }}\"\n placement=\"right\"\n type=\"button\"\n *ngIf=\"packageType !== PACKAGE_TYPE.CUSTOM\"\n [delay]=\"500\"\n >\n <span\n [ngClass]=\"{\n 'bg-info': packageType === PACKAGE_TYPE.COMMUNITY,\n 'bg-primary': packageType === PACKAGE_TYPE.OFFICIAL,\n 'bg-warning': packageType === PACKAGE_TYPE.ARCHIVED\n }\"\n >\n {{ app.label || app.manifest?.label | translatePackageLabel }}\n </span>\n </button>\n <div class=\"card-appicon\">\n <c8y-app-icon\n *ngIf=\"!isPackage && !isFeature && !isMicroservice && !isExternal\"\n [app]=\"app\"\n [contextPath]=\"app.contextPath\"\n [name]=\"app.name\"\n ></c8y-app-icon>\n <i\n c8yIcon=\"big-parcel\"\n *ngIf=\"isPackage\"\n ></i>\n <i\n c8yIcon=\"microchip\"\n *ngIf=\"isMicroservice\"\n ></i>\n <i\n c8yIcon=\"globe1\"\n *ngIf=\"isExternal\"\n ></i>\n </div>\n <div style=\"line-height: 1.3\">\n <p class=\"e2e-appCardName text-medium text-break-word\">\n {{ app | humanizeAppName | async }}\n </p>\n <ng-container *ngIf=\"isShowVersion\">\n <p class=\"small text-muted\">\n <em>{{ app.manifest.version }}</em>\n <button\n class=\"btn-clean m-l-4\"\n [attr.aria-label]=\"'Update available' | translate\"\n [tooltip]=\"'Update available' | translate\"\n *ngIf=\"shouldUpgradePackage && isUnpacked\"\n >\n <i\n class=\"text-warning icon-16\"\n c8yIcon=\"exclamation-triangle\"\n ></i>\n </button>\n </p>\n </ng-container>\n <p\n class=\"small text-break-word\"\n *ngIf=\"app.manifest?.author\"\n >\n {{ app.manifest.author }}\n </p>\n </div>\n </div>\n <div\n class=\"card-block p-0 no-min-height card--d-col card-column-80 flex-grow\"\n (click)=\"detail()\"\n >\n <div class=\"card-block no-min-height p-t-0 p-b-0 card-column-80\">\n <div class=\"text-center-grid\">\n <div class=\"p-b-8 card-hidden-grid\"></div>\n <p\n class=\"small l-h-tight p-b-8 p-l-0 p-r-0 text-break-word\"\n *ngIf=\"app.description || app.manifest?.description\"\n >\n {{ app.description || app.manifest?.description | translate }}\n </p>\n <p\n class=\"small l-h-tight p-b-8 p-l-0 p-r-0\"\n *ngIf=\"!app.description && !app.manifest?.description\"\n >\n <em class=\"text-muted\">{{ 'No description available.' | translate }}</em>\n </p>\n </div>\n </div>\n <div\n class=\"card-block no-min-height p-t-0 p-b-0 d-flex card-column-20 text-center-grid flex-wrap gap-8\"\n >\n <button\n class=\"btn-clean\"\n [attr.aria-label]=\"\n ((isUnpacked ? UNPACKED_LABEL : appState?.label) | translate) +\n ': ' +\n (appState?.tooltip | translate)\n \"\n [tooltip]=\"appState?.tooltip | translate\"\n placement=\"top\"\n [delay]=\"500\"\n >\n <span\n class=\"label\"\n [ngClass]=\"appState?.class\"\n >\n {{ appState?.label | translate }}\n </span>\n </button>\n <button\n class=\"btn-clean\"\n [attr.aria-label]=\"\n (packageContentState?.label | translate) +\n ': ' +\n (packageContentState?.tooltip\n ? packageContentState?.tooltip\n : PACKAGE_CONTENT_UNDETERMINED_LABEL) | translate\n \"\n [tooltip]=\"\n (packageContentState?.tooltip\n ? packageContentState?.tooltip\n : PACKAGE_CONTENT_UNDETERMINED_LABEL\n ) | translate\n \"\n placement=\"top\"\n *ngIf=\"isPackage\"\n >\n <span\n class=\"label\"\n [ngClass]=\"packageContentState?.class ? packageContentState?.class : 'label-danger'\"\n >\n {{\n packageContentState?.label || packageTypeLabels[PACKAGE_TYPE.UNKNOWN].label | translate\n }}\n </span>\n </button>\n </div>\n <div class=\"card-footer no-min-height p-t-0 p-b-0 card-column-20 text-center-grid\">\n <div class=\"p-b-16 card-hidden-list\"></div>\n <button\n class=\"btn btn-sm btn-default\"\n [title]=\"openButtonTitle | translate\"\n type=\"button\"\n (click)=\"openApp(); $event.stopPropagation()\"\n *ngIf=\"canOpenInBrowser\"\n [disabled]=\"disableOpenInBrowser\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"external-link\"\n ></i>\n {{ 'Open' | translate }}\n </button>\n <div class=\"p-b-32 card-hidden-list\"></div>\n </div>\n </div>\n <div class=\"p-r-40 card-hidden-grid\"></div>\n <div\n class=\"card-actions m-t-0\"\n *ngIf=\"canEdit || canOpenInBrowser || canDelete\"\n >\n <div\n class=\"dropdown\"\n #appCardDropdown=\"bs-dropdown\"\n dropdown\n [cdkTrapFocus]=\"appCardDropdown.isOpen\"\n >\n <button\n class=\"dropdown-toggle c8y-dropdown\"\n title=\"{{ 'Settings' | translate }}\"\n data-cy=\"application-card--settings-button\"\n type=\"button\"\n dropdownToggle\n >\n <i c8yIcon=\"ellipsis-v\"></i>\n </button>\n <ul\n class=\"dropdown-menu dropdown-menu-right\"\n *dropdownMenu\n >\n <li *ngIf=\"canEdit\">\n <button\n title=\"{{ 'Edit' | translate }}\"\n data-cy=\"application-card--edit-button\"\n (click)=\"detail()\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"pencil\"\n ></i>\n {{ 'Edit' | translate }}\n </button>\n </li>\n <ng-container *c8yIfAllowed=\"['ROLE_APPLICATION_MANAGEMENT_ADMIN']\">\n <li>\n <button\n [title]=\"canDelete ? ('Delete' | translate) : (CANNOT_DELETE_HINT | translate)\"\n type=\"button\"\n data-cy=\"application-card--delete-button\"\n [disabled]=\"!canDelete\"\n (click)=\"delete()\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"delete\"\n ></i>\n {{ 'Delete' | translate }}\n </button>\n </li>\n <li *ngIf=\"canClone\">\n <button\n [title]=\"'Clone`package,verb`' | translate\"\n type=\"button\"\n *ngIf=\"isPackage\"\n (click)=\"clone()\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"copy\"\n ></i>\n {{ 'Clone`package,verb`' | translate }}\n </button>\n <button\n [title]=\"'Clone`application,verb`' | translate\"\n type=\"button\"\n *ngIf=\"!isPackage\"\n (click)=\"clone()\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"copy\"\n ></i>\n {{ 'Clone`application,verb`' | translate }}\n </button>\n </li>\n </ng-container>\n </ul>\n </div>\n </div>\n</div>\n\n<button\n class=\"card pointer card--d-col\"\n type=\"button\"\n (click)=\"detail()\"\n *ngIf=\"isFeature\"\n>\n <div class=\"card-block text-center card-column-40\">\n <div class=\"card-appicon\">\n <c8y-app-icon\n *ngIf=\"!isPackage && !isFeature && !isMicroservice && !isExternal\"\n [app]=\"app\"\n [contextPath]=\"app.contextPath\"\n [name]=\"app.name\"\n ></c8y-app-icon>\n <i c8yIcon=\"tab\"></i>\n </div>\n <div>\n <p\n class=\"e2e-appCardName text-medium\"\n title=\"{{ app | humanizeAppName | async }}\"\n >\n {{ app | humanizeAppName | async }}\n </p>\n <ng-container *ngIf=\"isShowVersion\">\n <p class=\"small text-muted\">\n <em>{{ app.manifest.version }}</em>\n <i\n class=\"text-warning m-l-4\"\n c8yIcon=\"exclamation-triangle\"\n [tooltip]=\"'Update available' | translate\"\n *ngIf=\"shouldUpgradePackage && isUnpacked\"\n ></i>\n </p>\n </ng-container>\n </div>\n </div>\n <div class=\"card-block p-0 no-min-height card--d-col card-column-80 flex-grow\">\n <div class=\"card-block no-min-height p-t-0 p-b-0 card-column-80\">\n <div\n class=\"text-center-grid\"\n *ngIf=\"app.description || app.manifest?.description\"\n >\n <div class=\"p-b-8 card-hidden-grid\"></div>\n <p class=\"small l-h-tight p-b-8 p-l-0 p-r-0\">\n {{ app.description || app.manifest?.description | translate }}\n </p>\n </div>\n </div>\n <div class=\"card-block no-min-height p-t-0 p-b-0 card-column-20 text-center-grid\">\n <span\n class=\"label\"\n [ngClass]=\"appState.class\"\n >\n {{ appState.label | translate }}\n </span>\n </div>\n <div\n class=\"card-block no-min-height p-t-0 p-b-0 card-column-20 text-center-grid\"\n *ngIf=\"isPackage\"\n >\n <span\n class=\"label\"\n [ngClass]=\"packageContentState.class\"\n >\n {{ packageContentState.label | translate }}\n </span>\n </div>\n <div class=\"p-b-32 card-hidden-list\"></div>\n </div>\n</button>\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport {\n FormBuilder,\n FormGroup,\n Validators,\n FormsModule,\n ReactiveFormsModule\n} from '@angular/forms';\nimport { IApplication } from '@c8y/client';\nimport {\n FormGroupComponent,\n C8yTranslateDirective,\n RequiredInputPlaceholderDirective,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { IconSelectorWrapperComponent } from '@c8y/ngx-components/icon-selector';\n\n@Component({\n selector: 'c8y-application-properties-form',\n templateUrl: './application-properties-form.component.html',\n imports: [\n FormsModule,\n ReactiveFormsModule,\n FormGroupComponent,\n C8yTranslateDirective,\n RequiredInputPlaceholderDirective,\n IconSelectorWrapperComponent,\n C8yTranslatePipe\n ]\n})\nexport class ApplicationPropertiesFormComponent implements OnChanges {\n formGroup: FormGroup;\n @Input() application: IApplication;\n @Input() disabled = false;\n\n constructor(private formBuilder: FormBuilder) {\n this.initForm();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (\n changes.application &&\n changes.application.currentValue !== changes.application.previousValue\n ) {\n this.setForm(this.application);\n }\n if (changes.disabled && changes.disabled.currentValue !== changes.disabled.previousValue) {\n changes.disabled.currentValue ? this.formGroup.disable() : this.formGroup.enable();\n }\n }\n\n private initForm() {\n this.formGroup = this.formBuilder.group({\n name: [Validators.required, Validators.maxLength(120)],\n key: [Validators.required, Validators.maxLength(120)],\n contextPath: [Validators.required, Validators.maxLength(120)],\n icon: [undefined, [Validators.minLength(1)]]\n });\n }\n\n private setForm(applicationConfig: IApplication) {\n this.formGroup.patchValue({ ...applicationConfig });\n }\n}\n","<form\n class=\"c8y-wizard-form text-left\"\n name=\"appDeployForm\"\n (ngSubmit)=\"(formGroup.valid)\"\n [formGroup]=\"formGroup\"\n novalidate\n>\n <c8y-form-group>\n <label\n for=\"name\"\n translate\n >\n Name\n </label>\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g. My application' | translate }}\"\n name=\"name\"\n type=\"text\"\n required\n formControlName=\"name\"\n />\n </c8y-form-group>\n <c8y-form-group>\n <label\n for=\"key\"\n translate\n >\n Application key\n </label>\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g. my-application-key' | translate }}\"\n name=\"key\"\n type=\"text\"\n required\n formControlName=\"key\"\n />\n </c8y-form-group>\n <c8y-form-group>\n <label\n for=\"contextPath\"\n translate\n >\n Path\n </label>\n <div class=\"input-group\">\n <span class=\"input-group-addon\">/apps/</span>\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g. my-application' | translate }}\"\n name=\"contextPath\"\n type=\"text\"\n required\n formControlName=\"contextPath\"\n />\n </div>\n </c8y-form-group>\n <c8y-form-group>\n <label>{{ 'Select icon' | translate }}</label>\n <c8y-icon-selector-wrapper\n name=\"icon\"\n formControlName=\"icon\"\n ></c8y-icon-selector-wrapper>\n </c8y-form-group>\n</form>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { IApplication } from '@c8y/client';\nimport {\n C8yStepper,\n WizardComponent,\n AppIconComponent,\n WizardFooterComponent,\n C8yTranslatePipe,\n HumanizeAppNamePipe\n} from '@c8y/ngx-components';\nimport { ApplicationState } from '../../ecosystem.constants';\nimport { EcosystemService } from '../../ecosystem.service';\nimport { NgFor, NgClass, AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'c8y-duplicate-application-list',\n templateUrl: './duplicate-application-list.component.html',\n imports: [\n NgFor,\n AppIconComponent,\n NgClass,\n WizardFooterComponent,\n C8yTranslatePipe,\n AsyncPipe,\n HumanizeAppNamePipe\n ]\n})\nexport class DuplicateApplicationListComponent {\n @Input() stepper: C8yStepper;\n @Input() existingApps: IApplication[];\n @Output() onSelectedApp = new EventEmitter<IApplication>();\n appState: ApplicationState;\n\n constructor(\n public ecosystemService: EcosystemService,\n private wizardComponent: WizardComponent\n ) {}\n\n select(selectedApp: IApplication) {\n this.onSelectedApp.emit(selectedApp);\n this.stepper.next();\n }\n\n cancel() {\n this.wizardComponent.close();\n }\n\n back() {\n this.wizardComponent.reset();\n }\n}\n","<div class=\"c8y-wizard-list-nav\">\n <button\n (click)=\"select(app)\"\n *ngFor=\"let app of existingApps\"\n class=\"list-group-item text-truncate p-t-8 p-b-8 bg-level-0\"\n type=\"button\"\n >\n <c8y-app-icon\n [app]=\"app\"\n [contextPath]=\"app.contextPath\"\n [name]=\"app.name\"\n class=\"list-group-icon\"\n ></c8y-app-icon>\n <span [innerText]=\"app | humanizeAppName | async\" class=\"pointer\"></span>\n <span [ngClass]=\"ecosystemService.getAppState(app).class\" class=\"label m-l-16\">\n {{ ecosystemService.getAppState(app).label | translate }}\n </span>\n </button>\n</div>\n<c8y-wizard-footer>\n <button (click)=\"back()\" class=\"btn btn-default\" title=\"{{ 'Back' | translate }}\" type=\"button\">\n {{ 'Back' | translate }}\n </button>\n <button\n (click)=\"cancel()\"\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n >\n {{ 'Cancel' | translate }}\n </button>\n</c8y-wizard-footer>\n","import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { ApplicationService, IApplication } from '@c8y/client';\nimport {\n C8yStepper,\n GainsightService,\n LoadingComponent,\n WizardFooterComponent,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { distinctUntilKeyChanged, map, tap } from 'rxjs/operators';\nimport { APP_STATE } from '../../ecosystem.constants';\nimport { EcosystemService } from '../../ecosystem.service';\nimport { ApplicationPropertiesFormComponent } from '../../application-properties-form.component';\nimport { PRODUCT_EXPERIENCE_ECOSYSTEM } from '../../ecosystem.model';\nimport { NgIf, AsyncPipe } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n selector: 'c8y-duplicate-application-properties',\n templateUrl: './duplicate-application-properties.component.html',\n imports: [\n NgIf,\n FormsModule,\n ApplicationPropertiesFormComponent,\n LoadingComponent,\n WizardFooterComponent,\n C8yTranslatePipe,\n AsyncPipe\n ]\n})\nexport class DuplicateApplicationPropertiesComponent {\n CURRENT_LOCATION = location.href;\n\n @Input() stepper: C8yStepper;\n @Input() existingApps: IApplication[];\n @Input() selectedApp: BehaviorSubject<IApplication>;\n @Input() isFirstStep = false;\n @Output() duplicatedApp = new EventEmitter<IApplication>();\n @ViewChild(ApplicationPropertiesFormComponent)\n applicationPropertiesForm: ApplicationPropertiesFormComponent;\n newAppConfig: IApplication;\n disableForm = false;\n isSubscribedApp$: Observable<boolean>;\n\n inProgress = false;\n\n constructor(\n private bsModalRef: BsModalRef,\n private ecosystemService: EcosystemService,\n private applicationService: ApplicationService,\n private gainsightService: GainsightService\n ) {}\n\n ngOnInit() {\n this.isSubscribedApp$ = this.selectedApp.pipe(\n distinctUntilKeyChanged('id'),\n map(app => (app ? this.ecosystemService.getAppState(app) === APP_STATE.SUBSCRIBED : true)),\n tap(isSubscribed => {\n this.disableForm = isSubscribed;\n this.getAppConfig();\n })\n );\n this.getAppConfig();\n }\n\n async duplicateApp() {\n const formGroupValue = this.applicationPropertiesForm.formGroup.getRawValue();\n this.inProgress = true;\n let { data: clonedApp } = await this.applicationService.clone(this.selectedApp.value);\n // TODO: remove once MTM-48474 has been merged\n clonedApp = this.ecosystemService.setAvailabilityToPrivateIfNotSetAlready(clonedApp);\n Object.assign(clonedApp, formGroupValue);\n if (formGroupValue.icon) {\n const icon = { class: formGroupValue.icon };\n clonedApp.config = { ...clonedApp.config, icon };\n if (clonedApp.manifest) {\n clonedApp.manifest.icon = icon;\n }\n }\n delete clonedApp.type;\n await this.updateApp(clonedApp);\n this.inProgress = false;\n\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.DUPLICATE_APPLICATION,\n {\n component:\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.DUPLICATE_APPLICATION_PROPERTIES,\n result: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.RESULTS.DUPLICATED,\n url: this.CURRENT_LOCATION\n }\n );\n }\n\n cancel() {\n this.bsModalRef.hide();\n\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.DUPLICATE_APPLICATION,\n {\n component:\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.DUPLICATE_APPLICATION_PROPERTIES,\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.CANCEL,\n url: this.CURRENT_LOCATION\n }\n );\n }\n\n back() {\n this.stepper.previous();\n }\n\n getAppConfig() {\n if (this.disableForm) {\n const { name, key, contextPath } = this.selectedApp.value;\n this.newAppConfig = { name, key, contextPath };\n } else {\n this.newAppConfig = this.ecosystemService.getUniqueAppConfig(\n this.selectedApp.value,\n this.existingApps\n );\n }\n }\n\n private async updateApp(clonedAppConfig: Partial<IApplication>) {\n try {\n const { data: app } = await this.ecosystemService.updateApp(clonedAppConfig, true);\n const manifest = await this.getAppManifest(app);\n if (manifest) {\n await this.updateManifest(app, manifest);\n }\n\n this.duplicatedApp.emit(app);\n this.stepper.next();\n } catch (err) {\n this.inProgress = false;\n }\n }\n\n private async updateManifest(app: IApplication, manifest: any) {\n const keysToUpdate: Array<keyof IApplication> = ['name', 'key', 'contextPath'];\n const someKeyDiffers = keysToUpdate.some(key => app[key] !== manifest[key]);\n if (someKeyDiffers) {\n keysToUpdate.forEach(key => {\n manifest[key] = app[key];\n });\n await this.applicationService.storeAppManifest(app, manifest);\n }\n }\n\n private async getAppManifest(app: IApplication) {\n if (!app?.contextPath) {\n return;\n }\n try {\n const manifest = await this.applicationService.getAppManifest(app);\n return manifest;\n } catch (ex) {\n return;\n }\n }\n}\n","<p\n class=\"p-16 text-center text-medium separator-bottom sticky-top bg-level-0 fit-w\"\n *ngIf=\"!inProgress\"\n>\n {{ 'Provide application details' | translate }}\n</p>\n\n<ng-container *ngIf=\"!inProgress\">\n <label class=\"c8y-switch\" *ngIf=\"isSubscribedApp$ | async\">\n <input type=\"checkbox\" [(ngModel)]=\"disableForm\" (change)=\"getAppConfig()\" />\n <span></span> {{ 'Overrule subscribed application' | translate }}\n </label>\n\n <c8y-application-properties-form\n [application]=\"newAppConfig\"\n class=\"d-block fit-w\"\n [disabled]=\"disableForm\"\n ></c8y-application-properties-form>\n</ng-container>\n<c8y-loading\n *ngIf=\"inProgress\"\n [message]=\"'Duplicating…' | translate\"\n layout=\"application\"\n class=\"text-center d-block\"\n></c8y-loading>\n\n<c8y-wizard-footer>\n <button\n *ngIf=\"!isFirstStep\"\n (click)=\"back()\"\n [disabled]=\"inProgress\"\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Back' | translate }}\"\n >\n {{ 'Back' | translate }}\n </button>\n <button (click)=\"cancel()\" class=\"btn btn-default\" title=\"{{ 'Cancel' | translate }}\">\n {{ 'Cancel' | translate }}\n </button>\n <button\n (click)=\"duplicateApp()\"\n [disabled]=\"inProgress\"\n class=\"btn btn-primary\"\n type=\"button\"\n title=\"{{ 'Duplicate' | translate }}\"\n >\n {{ 'Duplicate' | translate }}\n </button>\n</c8y-wizard-footer>\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { ApplicationService, IApplication } from '@c8y/client';\nimport {\n C8yStepper,\n WizardComponent,\n WizardHeaderComponent,\n IconDirective,\n C8yTranslateDirective,\n WizardBodyComponent,\n OperationResultComponent,\n WizardFooterComponent,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { BehaviorSubject } from 'rxjs';\nimport { EcosystemService } from '../ecosystem.service';\n\nimport { NgIf } from '@angular/common';\nimport { CdkStep } from '@angular/cdk/stepper';\nimport { DuplicateApplicationListComponent } from './duplicate-application-list/duplicate-application-list.component';\nimport { DuplicateApplicationPropertiesComponent } from './duplicate-application-properties/duplicate-application-properties.component';\n\n@Component({\n selector: 'c8y-duplicate-application',\n templateUrl: './duplicate-application.component.html',\n imports: [\n WizardHeaderComponent,\n IconDirective,\n C8yTranslateDirective,\n WizardBodyComponent,\n C8yStepper,\n NgIf,\n CdkStep,\n DuplicateApplicationListComponent,\n DuplicateApplicationPropertiesComponent,\n OperationResultComponent,\n WizardFooterComponent,\n C8yTranslatePipe\n ]\n})\nexport class DuplicateApplicationComponent implements OnInit {\n @ViewChild(C8yStepper, { static: true })\n stepper: C8yStepper;\n duplicatedApp: IApplication;\n selectedApp: BehaviorSubject<IApplication> = new BehaviorSubject<IApplication>(null);\n existingApps: IApplication[] = [];\n directlyMoveToSecondStep = false;\n noBackButton = false;\n\n constructor(\n private ecosystemService: EcosystemService,\n private applicationService: ApplicationService,\n private wizardComponent: WizardComponent\n ) {}\n\n async ngOnInit() {\n this.existingApps = await this.ecosystemService.getWebApplications();\n if (this.selectedApp.value) {\n this.directlyMoveToSecondStep = true;\n }\n }\n\n onSelectedApp(app: IApplication) {\n this.selectedApp.next(app);\n }\n\n getHref(app: IApplication): string {\n return this.applicationService.getHref(app);\n }\n\n done() {\n this.wizardComponent.close();\n }\n}\n","<c8y-wizard-header>\n <i [c8yIcon]=\"'copy'\"></i>\n <h4\n id=\"modal-title\"\n translate\n >\n Duplicate application\n </h4>\n</c8y-wizard-header>\n\n<c8y-wizard-body id=\"modal-body\">\n <c8y-stepper\n [disableDefaultIcons]=\"{ edit: true, done: false }\"\n [customClasses]=\"['hidden']\"\n linear\n >\n <!-- 1st step -->\n <cdk-step *ngIf=\"!directlyMoveToSecondStep\">\n <p class=\"p-16 text-center text-medium separator-bottom sticky-top bg-level-0\">\n {{ 'Select application to duplicate' | translate }}\n </p>\n <c8y-duplicate-application-list\n class=\"d-block\"\n style=\"min-height: 257px\"\n (onSelectedApp)=\"onSelectedApp($event)\"\n *ngIf=\"stepper.selectedIndex === 0\"\n [existingApps]=\"existingApps\"\n [stepper]=\"stepper\"\n ></c8y-duplicate-application-list>\n </cdk-step>\n <!-- 2nd step -->\n <cdk-step>\n <c8y-duplicate-application-properties\n class=\"d-flex d-col j-c-center a-i-center\"\n style=\"min-height: 257px\"\n (duplicatedApp)=\"duplicatedApp = $event\"\n *ngIf=\"\n stepper.selectedIndex === 1 || (stepper.selectedIndex === 0 && directlyMoveToSecondStep)\n \"\n [existingApps]=\"existingApps\"\n [selectedApp]=\"selectedApp\"\n [stepper]=\"stepper\"\n [isFirstStep]=\"directlyMoveToSecondStep\"\n ></c8y-duplicate-application-properties>\n </cdk-step>\n <!-- Final step -->\n <cdk-step>\n <ng-container\n *ngIf=\"\n stepper.selectedIndex === 2 || (stepper.selectedIndex === 1 && directlyMoveToSecondStep)\n \"\n >\n <div\n class=\"d-flex a-i-center j-c-center\"\n style=\"min-height: 257px\"\n *ngIf=\"duplicatedApp; else duplicateAppFailed\"\n >\n <c8y-operation-result\n type=\"success\"\n text=\"{{ 'Application created' | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n ></c8y-operation-result>\n </div>\n <ng-template #duplicateAppFailed>\n <div\n class=\"d-flex a-i-center j-c-center\"\n style=\"min-height: 257px\"\n >\n <c8y-operation-result\n type=\"error\"\n text=\"{{ 'Application creation failed' | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n ></c8y-operation-result>\n </div>\n </ng-template>\n </ng-container>\n </cdk-step>\n </c8y-stepper>\n</c8y-wizard-body>\n\n<c8y-wizard-footer *ngIf=\"stepper.selectedIndex === 0 && noBackButton\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n (click)=\"done()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n</c8y-wizard-footer>\n\n<c8y-wizard-footer\n *ngIf=\"stepper.selectedIndex === 2 || (stepper.selectedIndex === 1 && directlyMoveToSecondStep)\"\n>\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Done' | translate }}\"\n type=\"button\"\n (click)=\"done()\"\n >\n {{ 'Done' | translate }}\n </button>\n <a\n class=\"btn btn-primary\"\n title=\"{{ 'Open' | translate }}\"\n target=\"_blank\"\n (click)=\"$event.stopPropagation()\"\n [href]=\"getHref(duplicatedApp)\"\n rel=\"noopener noreferrer\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"external-link\"\n ></i>\n {{ 'Open' | translate }}\n </a>\n</c8y-wizard-footer>\n","import { Component, forwardRef, OnChanges, Input, SimpleChanges } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { ApplicationService, IApplicationVersion, IResultList } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n PluginsService,\n FormGroupComponent,\n TypeaheadComponent,\n ForOfDirective,\n ListItemComponent,\n ListItemIconComponent,\n HighlightComponent,\n C8yTranslateDirective,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { BehaviorSubject, Observable, combineLatest, merge } from 'rxjs';\nimport { filter, map, shareReplay, switchMap } from 'rxjs/operators';\nimport { NgFor, NgIf, AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'c8y-package-version-select',\n templateUrl: './package-version-select.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => PackageVersionSelectComponent)\n }\n ],\n imports: [\n FormGroupComponent,\n TypeaheadComponent,\n FormsModule,\n ForOfDirective,\n ListItemComponent,\n ListItemIconComponent,\n HighlightComponent,\n NgFor,\n NgIf,\n C8yTranslateDirective,\n C8yTranslatePipe,\n AsyncPipe\n ]\n})\nexport class PackageVersionSelectComponent implements OnChanges, ControlValueAccessor {\n @Input() label = gettext('Use plugin version');\n @Input() packageContextPath: string;\n @Input() packageId: string | number;\n selectedVersion: IApplicationVersion;\n onInput$: BehaviorSubject<string> = new BehaviorSubject<string>('');\n versions$: Observable<IResultList<IApplicationVersion>>;\n isDisabled = false;\n private packageContextPath$ = new BehaviorSubject('');\n private packageId$ = new BehaviorSubject<string | number>('');\n private onChange: (version: IApplicationVersion) => void;\n private onTouched: () => void;\n\n constructor(\n private applicationService: ApplicationService,\n private pluginsService: PluginsService\n ) {\n const packageIdFromContextPath$ = this.packageContextPath$.pipe(\n filter(path => !!path),\n switchMap(path => this.getPackageIdForContextPath(path))\n );\n const packageId$ = merge(packageIdFromContextPath$, this.packageId$.pipe(filter(id => !!id)));\n const packageVersions$ = packageId$.pipe(\n switchMap(id => this.getPackageVersions(id)),\n shareReplay(1)\n );\n this.versions$ = combineLatest([packageVersions$, this.onInput$.asObservable()]).pipe(\n map(([resultList, filterStr]) => this.applyFilterToResultList(resultList, filterStr))\n );\n }\n\n writeValue(obj: any): void {\n this.selectedVersion = obj;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.isDisabled = isDisabled;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.packageContextPath) {\n this.packageContextPath$.next(this.packageContextPath);\n }\n\n if (changes.packageId) {\n this.packageId$.next(this.packageId);\n }\n }\n\n async getPackageVersions(packageId: string | number): Promise<IResultList<IApplicationVersion>> {\n return await this.applicationService.listVersions(packageId);\n }\n\n onVersionSelect(version: IApplicationVersion) {\n this.selectedVersion = version;\n if (this.onChange) {\n this.onChange(version);\n }\n if (this.onTouched) {\n this.onTouched();\n }\n }\n\n private async getPackageIdForContextPath(contextPath: string): Promise<string | number> {\n const { data: application } =\n await this.applicationService.getManifestOfContextPath(contextPath);\n const packageAppId = application.id;\n return packageAppId;\n }\n\n private setInitialValueForInput(versions: IApplicationVersion[]) {\n if (!this.selectedVersion && versions.length > 0) {\n const latest = versions.find(v => v.tags.includes('latest'));\n this.selectedVersion = latest || versions[0];\n if (this.onChange) {\n this.onChange(this.selectedVersion);\n }\n }\n }\n\n private filterAppVersions(\n appVersions: IApplicationVersion[],\n filterStr: string\n ): IApplicationVersion[] {\n return filterStr === ''\n ? appVersions\n : appVersions.filter(\n appVersion =>\n appVersion.version.includes(filterStr) ||\n appVersion.tags?.some(tag => tag.includes(filterStr))\n );\n }\n\n private applyFilterToResultList(\n resultList: IResultList<IApplicationVersion>,\n filterStr: string\n ): IResultList<IApplicationVersion> {\n const versionsFilteredByStr = this.filterAppVersions(resultList.data, filterStr);\n const sortedAppVersions = this.pluginsService.sortVersions(\n {\n list: versionsFilteredByStr,\n path: ['version']\n },\n 'desc'\n );\n\n this.setInitialValueForInput(sortedAppVersions);\n return { data: sortedAppVersions, res: resultList.res };\n }\n}\n","<label for=\"packageVersion\">{{ label | translate }}</label>\n<c8y-form-group>\n <c8y-typeahead\n [(ngModel)]=\"selectedVersion\"\n name=\"packageVersion\"\n (onSearch)=\"onInput$.next($event)\"\n placeholder=\"{{ 'Select below or start typing' | translate }}\"\n [displayProperty]=\"'version'\"\n [required]=\"true\"\n [disabled]=\"isDisabled\"\n [hideNew]=\"true\"\n [container]=\"'body'\"\n >\n <c8y-li\n *c8yFor=\"let appVersion of versions$; loadMore: 'auto'; notFound: notFoundTemplate\"\n (click)=\"onVersionSelect(appVersion)\"\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n [active]=\"selectedVersion === appVersion\"\n >\n <c8y-li-icon icon=\"big-parcel\"></c8y-li-icon>\n <c8y-highlight\n [text]=\"appVersion.version || '--'\"\n [pattern]=\"onInput$ | async\"\n ></c8y-highlight>\n <span>\n <span *ngFor=\"let tag of appVersion.tags\" class=\"label label-info m-l-4\">\n {{ tag }}\n </span>\n </span>\n </c8y-li>\n <ng-template #notFoundTemplate>\n <c8y-li\n class=\"bg-gray-lighter p-8\"\n *ngIf=\"(onInput$ | async)?.length > 0 && (versions$ | async)?.data?.length === 0\"\n >\n <span translate>No match found.</span>\n </c8y-li>\n </ng-template>\n </c8y-typeahead>\n</c8y-form-group>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { IApplication, IApplicationBinary } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { AlertService, DropAreaComponent, C8yTranslatePipe } from '@c8y/ngx-components';\nimport { BehaviorSubject } from 'rxjs';\nimport { EcosystemService } from './ecosystem.service';\nimport { AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'c8y-upload-archive',\n templateUrl: 'upload-archive.component.html',\n imports: [DropAreaComponent, C8yTranslatePipe, AsyncPipe]\n})\nexport class UploadArchiveComponent {\n @Input() application: IApplication;\n @Input() uploadNewVersion = false;\n @Input() preUploadCallback: () => Promise<any>;\n @Output() applicationChange: EventEmitter<IApplication> = new EventEmitter<IApplication>();\n @Output() refresh: EventEmitter<any> = new EventEmitter();\n\n archives: IApplicationBinary[] = [];\n toActivateVersionId: string;\n last: IApplicationBinary;\n isLoading: boolean;\n fileList: FileList;\n uploadInProgress = false;\n canReactivate = false;\n\n constructor(\n private ecosystemService: EcosystemService,\n private alertService: AlertService\n ) {}\n\n get uploadProgress(): BehaviorSubject<number> {\n return this.ecosystemService.progress;\n }\n\n async onFileDroppedEvent(event) {\n if (this.preUploadCallback) {\n try {\n await this.preUploadCallback();\n } catch (e) {\n // do nothing, i.e. when confirm modal cancels and throws undefined\n return;\n }\n }\n if (event && event.length > 0) {\n const file = event[0].file;\n this.onFile(file);\n }\n }\n\n private async onFile(file: File): Promise<void> {\n try {\n await this.ecosystemService.validateArchiveToAppCompatibility(file, this.application);\n const isCustomMicroservice = this.ecosystemService.isCustomMicroservice(this.application);\n const isPackage = this.ecosystemService.isPackage(this.application);\n this.archives = isCustomMicroservice\n ? []\n : await this.ecosystemService.listArchives(this.application.id);\n this.archives.sort((a, b) => {\n return (new Date(b.created) as any) - (new Date(a.created) as any);\n });\n this.uploadInProgress = true;\n this.uploadProgress.next(0);\n if (this.archives.length === 6 && !isCustomMicroservice && !isPackage) {\n await this.ecosystemService.removeOldestArchive(this.application, this.archives);\n }\n const app = await this.ecosystemService.uploadArchiveToApp(\n file,\n this.application,\n this.uploadNewVersion\n );\n this.applicationChange.emit(app);\n this.uploadProgress.next(100);\n this.uploadInProgress = false;\n this.refresh.emit();\n if (this.uploadNewVersion) {\n return;\n }\n this.alertService.success(gettext('Archive uploaded and activated.'));\n } catch (ex) {\n this.uploadInProgress = false;\n if (ex === 'cancelled') {\n return;\n }\n this.ecosystemService.alertError(ex);\n }\n }\n}\n","<c8y-drop-area\n (dropped)=\"onFileDroppedEvent($event)\"\n [accept]=\"'.zip'\"\n [loading]=\"uploadInProgress\"\n [maxAllowedFiles]=\"1\"\n [message]=\"'Upload a *.zip file' | translate\"\n [progress]=\"uploadProgress | async\"\n [forceHideList]=\"true\"\n class=\"drop-area-sm\"\n>\n</c8y-drop-area>\n","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n FormsModule,\n ReactiveFormsModule\n} from '@angular/forms';\nimport { ActivatedRoute, Params, Router } from '@angular/router';\nimport {\n AppStateService,\n FilterInputComponent,\n GainsightService,\n internalApps,\n PackageType,\n IconDirective,\n FormGroupComponent,\n RequiredInputPlaceholderDirective,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport { pipe, Subject } from 'rxjs';\nimport { map, takeUntil } from 'rxjs/operators';\nimport { APP_STATE } from '../ecosystem.constants';\nimport { PRODUCT_EXPERIENCE_ECOSYSTEM } from '../ecosystem.model';\nimport { FilterableAppOrPlugin, FilterPipe, PackageFilters } from './list-filters.model';\n\nimport { NgIf, NgPlural, NgPluralCase, NgFor, TitleCasePipe } from '@angular/common';\nimport {\n BsDropdownDirective,\n BsDropdownToggleDirective,\n BsDropdownMenuDirective\n} from 'ngx-bootstrap/dropdown';\nimport { CdkTrapFocus } from '@angular/cdk/a11y';\n\n@Component({\n selector: 'c8y-list-filters',\n templateUrl: './list-filters.component.html',\n imports: [\n FormsModule,\n ReactiveFormsModule,\n FilterInputComponent,\n NgIf,\n BsDropdownDirective,\n CdkTrapFocus,\n BsDropdownToggleDirective,\n NgPlural,\n NgPluralCase,\n NgFor,\n IconDirective,\n BsDropdownMenuDirective,\n FormGroupComponent,\n RequiredInputPlaceholderDirective,\n C8yTranslatePipe,\n TitleCasePipe\n ]\n})\nexport class ListFiltersComponent implements OnInit {\n @Input() packageTypes: (keyof PackageFilters['type'])[] = [];\n @Input() packageAvailabilities: (keyof PackageFilters['availability'])[] = [];\n @Input() packageContents: (keyof PackageFilters['content'])[] = [];\n @Output() filterPipeChange = new EventEmitter<FilterPipe>();\n @ViewChild(FilterInputComponent) filterInput: FilterInputComponent;\n\n formGroup: ReturnType<ListFiltersComponent['initForm']>;\n chips: [string, FormControl][] = [];\n predefinedFiltersVisible: boolean;\n customFilters = new Map<string, (app: FilterableAppOrPlugin, enabled: boolean) => boolean>();\n currentFilterTerm: string;\n\n private currentLang: string;\n private data: FilterableAppOrPlugin[];\n private currentFiltersState: Partial<PackageFilters>;\n private CURRENT_LOCATION = location.href;\n private destroy$ = new Subject<void>();\n\n constructor(\n private formBuilder: FormBuilder,\n private ui: AppStateService,\n private translateService: TranslateService,\n private gainsightService: GainsightService,\n private router: Router,\n private activatedRoute: ActivatedRoute\n ) {\n this.formGroup = this.initForm();\n }\n\n ngOnInit(): void {\n this.currentFiltersState = this.formGroup.value;\n this.predefinedFiltersVisible =\n this.packageTypes?.length > 0 ||\n this.packageAvailabilities?.length > 0 ||\n this.packageContents?.length > 0;\n this.currentLang = this.ui.state.lang;\n this.subscribeToQueryParams();\n }\n\n setFilterTerm(filterTerm: string): void {\n this.currentFilterTerm = filterTerm;\n this.setPipe();\n\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.FILTER_LIST,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.LIST_FILTERS,\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.SET_FILTER_TERM,\n url: this.CURRENT_LOCATION\n }\n );\n }\n\n applyPredefinedFilters(): void {\n this.currentFiltersState = this.formGroup.value;\n this.setChips();\n this.setPipe();\n\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.FILTER_LIST,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.LIST_FILTERS,\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.SET_PREDEFINED_FILTERS,\n url: this.CURRENT_LOCATION,\n filters: this.currentFiltersState\n }\n );\n }\n\n reset(): void {\n this.formGroup.reset();\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.FILTER_LIST,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.LIST_FILTERS,\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.RESET_FILTER,\n url: this.CURRENT_LOCATION\n }\n );\n this.applyPredefinedFilters();\n }\n\n resetAllFilters() {\n this.reset();\n this.filterInput.reset();\n }\n\n toggleDropdown(isOpen: boolean): void {\n if (!isOpen) {\n this.formGroup.patchValue(this.currentFiltersState);\n }\n }\n\n deselectChip(chip: [string, FormControl]): void {\n chip[1].setValue(false);\n this.applyPredefinedFilters();\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n subscribeToQueryParams() {\n this.activatedRoute.queryParams\n .pipe(takeUntil(this.destroy$))\n .subscribe((queryParams: Params) => {\n const filters = this.parseQueryParams(queryParams);\n this.currentFilterTerm = queryParams.filterTerm || '';\n this.formGroup.patchValue(filters);\n this.applyPredefinedFilters();\n });\n }\n\n private setQueryParams() {\n if (!this.currentFiltersState) {\n return;\n }\n this.router.navigate([], {\n queryParams: {\n ...this.simplifyFilterObject(this.currentFiltersState),\n filterTerm: this.currentFilterTerm || null\n }\n });\n }\n\n private parseQueryParams(queryParams: Params): Partial<PackageFilters> {\n const filter: Partial<PackageFilters> = {};\n for (const fullKey in queryParams) {\n const [key, subKey] = fullKey.split('.');\n if (!filter[key]) {\n filter[key] = {};\n }\n filter[key][subKey] = queryParams[fullKey] === 'true';\n }\n return filter;\n }\n\n private simplifyFilterObject(currentFiltersState: Partial<PackageFilters>): Params {\n const keys = Object.keys(currentFiltersState);\n const result = {};\n for (const key of keys) {\n const subKeys = Object.keys(currentFiltersState[key]);\n for (const subKey of subKeys) {\n if (currentFiltersState[key][subKey]) {\n result[`${key}.${subKey}`] = currentFiltersState[key][subKey];\n }\n }\n }\n return result;\n }\n\n private initForm() {\n return this.formBuilder.group({\n type: this.formBuilder.group({\n [PackageType.OFFICIAL]: [false],\n [PackageType.COMMUNITY]: [false]\n }),\n availability: this.formBuilder.group({\n [APP_STATE.SUBSCRIBED.label]: [false],\n [APP_STATE.UNPACKED.label]: [false],\n [APP_STATE.EXTERNAL.label]: [false],\n [APP_STATE.CUSTOM.label]: [false]\n }),\n content: this.formBuilder.group({\n [APP_STATE.PACKAGE_BLUEPRINT.label]: [false],\n [APP_STATE.PACKAGE_PLUGIN.label]: [false]\n }),\n custom: this.formBuilder.group({})\n });\n }\n\n private setPipe(): void {\n this.setQueryParams();\n const filterPipe = pipe(\n map((data: FilterableAppOrPlugin[]) => {\n this.data = data.filter((app: FilterableAppOrPlugin) => {\n let matchesByString;\n if (!this.currentFilterTerm || this.currentFilterTerm.trim().length === 0) {\n matchesByString = true;\n } else {\n const appName =\n this.currentLang === 'en' || !app.name?.length || !internalApps[app.name]\n ? app.name\n : this.translateService.instant(internalApps[app.name]);\n matchesByString =\n this.filterContainString(appName, this.currentFilterTerm) ||\n this.filterContainString(app.description, this.currentFilterTerm);\n }\n\n const matchesByPredefinedProperty =\n this.appMatchesByPredefinedProperty(app, 'type') &&\n this.appMatchesByPredefinedProperty(app, 'availability') &&\n this.appMatchesByPredefinedProperty(app, 'content') &&\n this.appMatchesByPredefinedProperty(app, 'custom');\n\n return matchesByString && matchesByPredefinedProperty;\n });\n return this.data;\n })\n );\n this.filterPipeChange.emit(filterPipe);\n }\n\n private filterContainString(name: string, filterTerm: string): boolean {\n const term = filterTerm.toLowerCase().trim();\n return name && name.toLowerCase().indexOf(term) > -1;\n }\n\n private appMatchesByPredefinedProperty(\n app: FilterableAppOrPlugin,\n property: keyof PackageFilters\n ): boolean {\n if (property === 'custom' && this.currentFiltersState) {\n return Object.entries(this.currentFiltersState[property]).every(([key, value]) =>\n this.customFilters.get(key)(app, value)\n );\n }\n\n // if filter object does not contain property filters or all filters are false, filter is inactive\n const filterForPropertyIsActive =\n this.currentFiltersState?.[property] &&\n !Object.values(this.currentFiltersState[property]).every(v => !v);\n\n if (!filterForPropertyIsActive) {\n return true;\n } else if (!app.filterProps?.[property]) {\n return false;\n } else {\n return this.currentFiltersState[property][app.filterProps[property]];\n }\n }\n\n private setChips(): void {\n this.chips = [];\n Object.values(this.formGroup.controls).forEach((controlsGroup: FormGroup) => {\n Object.entries(controlsGroup.controls).forEach((entry: [string, FormControl]) => {\n if (entry[1].value) {\n this.chips.push(entry);\n }\n });\n });\n }\n}\n","<form\n class=\"d-flex a-i-center\"\n [formGroup]=\"formGroup\"\n>\n <c8y-filter\n [filterTerm]=\"currentFilterTerm\"\n (onSearch)=\"setFilterTerm($event)\"\n ></c8y-filter>\n\n <div\n class=\"dropdown m-l-8 m-r-4\"\n *ngIf=\"predefinedFiltersVisible\"\n dropdown\n (isOpenChange)=\"toggleDropdown($event)\"\n #filtersDropdown=\"bs-dropdown\"\n [cdkTrapFocus]=\"filtersDropdown.isOpen\"\n [insideClick]=\"true\"\n >\n <div class=\"input-group d-inline-flex\">\n <button\n class=\"btn-clean form-control p-l-8 p-r-16 a-s-stretch d-flex a-i-center gap-4 w-auto flex-no-shrink\"\n title=\"{{ 'Filters' | translate }}\"\n dropdownToggle\n >\n <span [ngPlural]=\"chips.length\">\n <ng-template ngPluralCase=\"=0\">\n {{ 'Filters' | translate }}\n </ng-template>\n <ng-template ngPluralCase=\"=1\">\n <span class=\"badge badge-info\">{{ chips.length }}</span>\n {{ 'Filter' | translate }}\n </ng-template>\n <ng-template ngPluralCase=\"other\">\n <span class=\"badge badge-info\">{{ chips.length }}</span>\n {{ 'Filters' | translate }}\n </ng-template>\n </span>\n <span class=\"caret\"></span>\n </button>\n <div\n class=\"input-group-addon p-t-0 p-b-0 d-flex gap-4 a-i-center inner-scroll\"\n *ngIf=\"chips.length > 0\"\n >\n <ng-container *ngFor=\"let chip of chips\">\n <span\n class=\"tag tag--info chip\"\n *ngIf=\"chip[1].value\"\n >\n <button\n class=\"btn btn-xs btn-clean text-10\"\n title=\"{{ 'Remove' | translate }}\"\n type=\"button\"\n (click)=\"deselectChip(chip)\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n {{ chip[0] | translate | titlecase }}\n </span>\n </ng-container>\n </div>\n </div>\n <div\n class=\"dropdown-menu\"\n *dropdownMenu\n >\n <div class=\"dropdown-form\">\n <c8y-form-group\n *ngIf=\"packageTypes.length\"\n formGroupName=\"type\"\n >\n <label class=\"m-b-16\">\n {{ 'Type' | translate }}\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"type | translate\"\n *ngFor=\"let type of packageTypes\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"type\"\n [value]=\"type\"\n />\n <span></span>\n <span>{{ type | translate | titlecase }}</span>\n </label>\n </c8y-form-group>\n\n <c8y-form-group\n *ngIf=\"packageAvailabilities.length\"\n formGroupName=\"availability\"\n >\n <label class=\"m-b-16\">\n {{ 'Availability`of package based on app state`' | translate }}\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"availability | translate\"\n *ngFor=\"let availability of packageAvailabilities\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"availability\"\n [value]=\"availability\"\n />\n <span></span>\n <span>{{ availability | translate }}</span>\n </label>\n </c8y-form-group>\n\n <c8y-form-group\n *ngIf=\"packageContents.length\"\n formGroupName=\"content\"\n >\n <label class=\"m-b-16\">\n {{ 'Content' | translate }}\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"content | translate\"\n *ngFor=\"let content of packageContents\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"content\"\n [value]=\"content\"\n />\n <span></span>\n <span>{{ content | translate }}</span>\n </label>\n </c8y-form-group>\n <c8y-form-group formGroupName=\"custom\">\n <ng-content></ng-content>\n </c8y-form-group>\n </div>\n <div class=\"p-16 d-flex gap-8 separator-top\">\n <button\n class=\"btn btn-default btn-sm flex-grow\"\n title=\"{{ 'Reset' | translate }}\"\n type=\"button\"\n (click)=\"reset(); filtersDropdown.isOpen = false\"\n >\n {{ 'Reset' | translate }}\n </button>\n\n <button\n class=\"btn btn-primary btn-sm flex-grow\"\n title=\"{{ 'Apply' | translate }}\"\n type=\"button\"\n (click)=\"applyPredefinedFilters(); filtersDropdown.isOpen = false\"\n [disabled]=\"formGroup.pristine && formGroup.untouched\"\n >\n {{ 'Apply' | translate }}\n </button>\n </div>\n </div>\n </div>\n</form>\n","import { Component } from '@angular/core';\nimport { FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { PackageType, C8yTranslatePipe } from '@c8y/ngx-components';\nimport { ListFiltersComponent } from '../list-filters/list-filters.component';\nimport { FilterableAppOrPlugin } from '../list-filters/list-filters.model';\n\n@Component({\n selector: 'c8y-archived-filter',\n templateUrl: './archived-filter.component.html',\n imports: [FormsModule, ReactiveFormsModule, C8yTranslatePipe]\n})\nexport class ArchivedFilterComponent {\n archivedFormControl: FormControl;\n private readonly filterLabel = gettext('Show archived packages');\n\n constructor(public filterComponent: ListFiltersComponent) {\n this.archivedFormControl = new FormControl();\n (this.filterComponent.formGroup.controls.custom as FormGroup).addControl(\n this.filterLabel,\n this.archivedFormControl\n );\n filterComponent.customFilters.set(\n this.filterLabel,\n (appOrPlugin: FilterableAppOrPlugin, enabled: boolean) => {\n return (\n appOrPlugin.filterProps.type !== PackageType.ARCHIVED ||\n (appOrPlugin.filterProps.type === PackageType.ARCHIVED && enabled)\n );\n }\n );\n }\n}\n","<label class=\"c8y-switch\">\n <input\n type=\"checkbox\"\n checked=\"checked\"\n [formControl]=\"archivedFormControl\"\n />\n <span></span>\n {{ 'Show archived packages' | translate }}\n</label>\n","import { AsyncPipe, NgIf } from '@angular/common';\nimport { Component, inject, Input, OnChanges } from '@angular/core';\nimport { IApplication } from '@c8y/client';\nimport {\n C8yTranslatePipe,\n EmptyStateComponent,\n LoadingComponent,\n MarkdownToHtmlPipe,\n PluginsService\n} from '@c8y/ngx-components';\nimport { lt } from 'semver';\n\n/**\n * Component to display the change log of a package.\n * It fetches the change log file from the package's repository and displays it.\n * It can fetch the change log for the latest version or a specific version if provided.\n * It can also compare the change log with the previous version if provided and display the difference between the two versions.\n */\n@Component({\n selector: 'c8y-contents-changelog',\n templateUrl: './package-changelog.component.html',\n standalone: true,\n imports: [\n LoadingComponent,\n MarkdownToHtmlPipe,\n EmptyStateComponent,\n AsyncPipe,\n C8yTranslatePipe,\n NgIf\n ]\n})\nexport class PackageChangelogComponent implements OnChanges {\n @Input() package: IApplication;\n @Input() selectedVersion = 'latest';\n @Input() previousVersion: string | null = null;\n changelog: string;\n baseUrl: string;\n isLoading = true;\n\n private pluginsService = inject(PluginsService);\n\n async ngOnChanges() {\n if (!this.package) {\n this.changelog = '';\n this.isLoading = false;\n return;\n }\n this.isLoading = true;\n this.changelog = await this.getChangeLog();\n this.isLoading = false;\n }\n\n private async getChangeLog(): Promise<string> {\n if (this.selectedVersion === this.previousVersion || !this.selectedVersion) {\n return '';\n }\n\n const selectedVersionChangelogUrl = this.baseUrlForVersion(this.selectedVersion);\n this.baseUrl = selectedVersionChangelogUrl;\n\n if (!this.previousVersion) {\n return await this.pluginsService.getChangelogFileContent(selectedVersionChangelogUrl);\n }\n\n const previousVersionChangelogUrl = this.baseUrlForVersion(this.previousVersion);\n\n const changelogsPromises = [\n this.pluginsService.getChangelogFileContent(previousVersionChangelogUrl),\n this.pluginsService.getChangelogFileContent(selectedVersionChangelogUrl)\n ];\n\n const [previousVersionChangelog, selectedVersionChangelog] =\n await Promise.all(changelogsPromises);\n\n // Determine if this is a downgrade using semver comparison\n let isDowngrade: boolean;\n try {\n isDowngrade = lt(this.selectedVersion, this.previousVersion);\n } catch {\n isDowngrade = false;\n }\n\n if (isDowngrade) {\n return previousVersionChangelog.replace(selectedVersionChangelog, '');\n } else {\n return selectedVersionChangelog.replace(previousVersionChangelog, '');\n }\n }\n\n private baseUrlForVersion(version: string): string {\n return `/apps/${this.package.contextPath}@${version}/`;\n }\n}\n","<c8y-loading *ngIf=\"isLoading\"></c8y-loading>\n\n<ng-container *ngIf=\"!isLoading\">\n <div\n *ngIf=\"changelog\"\n class=\"markdown-content markdown-content--to-h3\"\n [innerHTML]=\"changelog | markdownToHtml: { baseUrl } | async\"\n ></div>\n\n <c8y-ui-empty-state\n [icon]=\"'user-manual'\"\n [title]=\"'No CHANGELOG.md found for package version' | translate\"\n [subtitle]=\"\n 'To view the contents of "CHANGELOG", add the file "CHANGELOG.md" to the package.'\n | translate\n \"\n *ngIf=\"!changelog\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n</ng-container>\n","import { NgModule } from '@angular/core';\nimport { CoreModule, hookWizard } from '@c8y/ngx-components';\nimport { IconSelectorModule } from '@c8y/ngx-components/icon-selector';\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { AddApplicationComponent } from './add-application.component';\nimport { ApplicationCardComponent } from './application-card.component';\nimport { ApplicationPropertiesFormComponent } from './application-properties-form.component';\nimport { UploadArchiveComponent } from './upload-archive.component';\nimport { DuplicateApplicationListComponent } from './duplicate-application/duplicate-application-list/duplicate-application-list.component';\nimport { DuplicateApplicationPropertiesComponent } from './duplicate-application/duplicate-application-properties/duplicate-application-properties.component';\nimport { DuplicateApplicationComponent } from './duplicate-application/duplicate-application.component';\nimport { PackageVersionSelectComponent } from './package-version-select/package-version-select.component';\nimport { EcosystemWizards } from './ecosystem.model';\nimport { TranslatePackageLabelPipe } from './translate-package-label.pipe';\nimport { ListFiltersComponent } from './list-filters/list-filters.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ArchivedFilterComponent } from './archived-filter/archived-filter.component';\nimport { PackageChangelogComponent } from './package-changelog/package-changelog.component';\n\n@NgModule({\n imports: [\n CoreModule,\n BsDropdownModule,\n TooltipModule,\n A11yModule,\n FormsModule,\n PopoverModule,\n ReactiveFormsModule,\n IconSelectorModule,\n PackageChangelogComponent,\n AddApplicationComponent,\n ApplicationPropertiesFormComponent,\n UploadArchiveComponent,\n ApplicationCardComponent,\n DuplicateApplicationListComponent,\n DuplicateApplicationPropertiesComponent,\n DuplicateApplicationComponent,\n PackageVersionSelectComponent,\n TranslatePackageLabelPipe,\n ListFiltersComponent,\n ArchivedFilterComponent\n ],\n exports: [\n AddApplicationComponent,\n ApplicationPropertiesFormComponent,\n UploadArchiveComponent,\n ApplicationCardComponent,\n DuplicateApplicationListComponent,\n DuplicateApplicationPropertiesComponent,\n DuplicateApplicationComponent,\n PackageVersionSelectComponent,\n TranslatePackageLabelPipe,\n ListFiltersComponent,\n ArchivedFilterComponent,\n PackageChangelogComponent\n ],\n providers: [\n hookWizard({\n wizardId: EcosystemWizards.APPLICATION_UPLOAD,\n component: DuplicateApplicationComponent,\n name: 'Duplicate existing application',\n c8yIcon: 'copy'\n }),\n hookWizard({\n wizardId: 'duplicateApplication',\n component: DuplicateApplicationComponent,\n name: 'Duplicate existing application',\n c8yIcon: 'copy'\n })\n ]\n})\nexport class SharedEcosystemModule {}\n","import { ApplicationPlugin, PackageType } from '@c8y/ngx-components';\nimport { Observable, UnaryFunction } from 'rxjs';\nimport { IApplication } from '@c8y/client';\nimport { APP_STATE, ApplicationState } from '../ecosystem.constants';\n\nexport type FilterableAppOrPlugin = (IApplication | ApplicationPlugin) & {\n filterProps?: AppFilterProps;\n};\n\nexport type FilterPipe = UnaryFunction<\n Observable<FilterableAppOrPlugin[]>,\n Observable<FilterableAppOrPlugin[]>\n>;\n\nexport type PackageFilters = {\n type: {\n [PackageType.OFFICIAL]?: boolean;\n [PackageType.COMMUNITY]?: boolean;\n };\n availability: {\n [APP_STATE.SUBSCRIBED.label]?: boolean;\n [APP_STATE.UNPACKED.label]?: boolean;\n [APP_STATE.EXTERNAL.label]?: boolean;\n [APP_STATE.CUSTOM.label]?: boolean;\n };\n content: {\n [APP_STATE.PACKAGE_BLUEPRINT.label]?: boolean;\n [APP_STATE.PACKAGE_PLUGIN.label]?: boolean;\n };\n custom: {\n [key: string]: boolean;\n };\n};\n\nexport type AppFilterProps = {\n type: PackageType;\n availability: ApplicationState['label'];\n content: ApplicationState['label'];\n};\n\nexport const defaultPackageTypes: (keyof PackageFilters['type'])[] = [\n PackageType.OFFICIAL,\n PackageType.COMMUNITY\n];\n\nexport const defaultPackageAvailabilities: (keyof PackageFilters['availability'])[] = [\n APP_STATE.SUBSCRIBED.label,\n APP_STATE.UNPACKED.label,\n APP_STATE.EXTERNAL.label,\n APP_STATE.CUSTOM.label\n];\n\nexport const defaultPackageContents: (keyof PackageFilters['content'])[] = [\n APP_STATE.PACKAGE_BLUEPRINT.label,\n APP_STATE.PACKAGE_PLUGIN.label\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i3","i1.EcosystemService","i4","i5.PackageAvailabilityService","i1","i2.EcosystemService","i5","i1.ListFiltersComponent"],"mappings":"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"}
|