@c8y/ngx-components 1022.10.1 → 1022.13.0
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-button.component.d.ts +1 -1
- package/actility-device-registration/actility-device-registration-button.component.d.ts.map +1 -1
- package/actility-device-registration/actility-device-registration.component.d.ts +1 -1
- package/actility-device-registration/actility-device-registration.component.d.ts.map +1 -1
- package/actility-device-registration/actility-device-registration.module.d.ts +4 -4
- package/actility-device-registration/actility-device-registration.module.d.ts.map +1 -1
- package/alarm-event-selector/alarm-event-attributes-form/alarm-event-attributes-form.component.d.ts +1 -1
- package/alarm-event-selector/alarm-event-attributes-form/alarm-event-attributes-form.component.d.ts.map +1 -1
- package/alarm-event-selector/alarm-event-selection-list/alarm-event-selection-list.component.d.ts +25 -1
- package/alarm-event-selector/alarm-event-selection-list/alarm-event-selection-list.component.d.ts.map +1 -1
- package/alarm-event-selector/alarm-event-selector-list-item/alarm-event-selector-list-item.component.d.ts +1 -1
- package/alarm-event-selector/alarm-event-selector-list-item/alarm-event-selector-list-item.component.d.ts.map +1 -1
- package/alarm-event-selector/alarm-event-selector-modal/alarm-event-selector-modal.component.d.ts +1 -1
- package/alarm-event-selector/alarm-event-selector-modal/alarm-event-selector-modal.component.d.ts.map +1 -1
- package/alarm-event-selector/alarm-event-selector.component.d.ts +1 -1
- package/alarm-event-selector/alarm-event-selector.component.d.ts.map +1 -1
- package/alarm-event-selector/alarm-event-selector.module.d.ts +15 -15
- package/alarm-event-selector/alarm-event-selector.module.d.ts.map +1 -1
- package/alarm-event-selector/custom-alarm-event-form/custom-alarm-event-form.component.d.ts +1 -1
- package/alarm-event-selector/custom-alarm-event-form/custom-alarm-event-form.component.d.ts.map +1 -1
- package/alarm-event-selector/pipes/includes-alarm.pipe.d.ts +1 -1
- package/alarm-event-selector/pipes/includes-alarm.pipe.d.ts.map +1 -1
- package/alarms/alarm-details.component.d.ts +1 -1
- package/alarms/alarm-details.component.d.ts.map +1 -1
- package/alarms/alarm-empty.component.d.ts +1 -1
- package/alarms/alarm-empty.component.d.ts.map +1 -1
- package/alarms/alarm-info.component.d.ts +1 -1
- package/alarms/alarm-info.component.d.ts.map +1 -1
- package/alarms/alarm-severities-to-title.pipe.d.ts +1 -1
- package/alarms/alarm-severities-to-title.pipe.d.ts.map +1 -1
- package/alarms/alarm-severity-to-label.pipe.d.ts +1 -1
- package/alarms/alarm-severity-to-label.pipe.d.ts.map +1 -1
- package/alarms/alarm-status-to-icon.pipe.d.ts +1 -1
- package/alarms/alarm-status-to-icon.pipe.d.ts.map +1 -1
- package/alarms/alarm-status-to-label.pipe.d.ts +1 -1
- package/alarms/alarm-status-to-label.pipe.d.ts.map +1 -1
- package/alarms/alarms-date-filter.component.d.ts +1 -1
- package/alarms/alarms-date-filter.component.d.ts.map +1 -1
- package/alarms/alarms-filter.component.d.ts +1 -1
- package/alarms/alarms-filter.component.d.ts.map +1 -1
- package/alarms/alarms-icon.component.d.ts +1 -1
- package/alarms/alarms-icon.component.d.ts.map +1 -1
- package/alarms/alarms-interval-refresh.component.d.ts +1 -1
- package/alarms/alarms-interval-refresh.component.d.ts.map +1 -1
- package/alarms/alarms-list.component.d.ts +1 -1
- package/alarms/alarms-list.component.d.ts.map +1 -1
- package/alarms/alarms-type-filter.component.d.ts +1 -1
- package/alarms/alarms-type-filter.component.d.ts.map +1 -1
- package/alarms/alarms.component.d.ts +1 -1
- package/alarms/alarms.component.d.ts.map +1 -1
- package/alarms/alarms.module.d.ts +27 -27
- package/alarms/alarms.module.d.ts.map +1 -1
- package/alarms/audit-changes-message.pipe.d.ts +1 -1
- package/alarms/audit-changes-message.pipe.d.ts.map +1 -1
- package/api/api.service.d.ts +8 -0
- package/api/api.service.d.ts.map +1 -1
- package/app-logs/app-logs-auto-refresh.component.d.ts +1 -1
- package/app-logs/app-logs-auto-refresh.component.d.ts.map +1 -1
- package/app-logs/app-logs-auto-refresh.module.d.ts +4 -4
- package/app-logs/app-logs-auto-refresh.module.d.ts.map +1 -1
- package/assets-navigator/asset-selector/asset-selector-node.component.d.ts +1 -1
- package/assets-navigator/asset-selector/asset-selector-node.component.d.ts.map +1 -1
- package/assets-navigator/asset-selector/asset-selector.component.d.ts +12 -1
- package/assets-navigator/asset-selector/asset-selector.component.d.ts.map +1 -1
- package/assets-navigator/asset-selector/asset-selector.module.d.ts +8 -8
- package/assets-navigator/asset-selector/asset-selector.module.d.ts.map +1 -1
- package/assets-navigator/asset-selector/miller-view.component.d.ts +1 -1
- package/assets-navigator/asset-selector/miller-view.component.d.ts.map +1 -1
- package/auth-configuration/basic-settings/auth-configuration.component.d.ts +1 -1
- package/auth-configuration/basic-settings/auth-configuration.component.d.ts.map +1 -1
- package/auth-configuration/basic-settings/basic-auth-settings.component.d.ts +1 -1
- package/auth-configuration/basic-settings/basic-auth-settings.component.d.ts.map +1 -1
- package/auth-configuration/basic-settings/basic-settings.module.d.ts +8 -8
- package/auth-configuration/basic-settings/basic-settings.module.d.ts.map +1 -1
- package/auth-configuration/basic-settings/login-settings.component.d.ts +2 -2
- package/auth-configuration/basic-settings/login-settings.component.d.ts.map +1 -1
- package/auth-configuration/basic-settings/session-configuration.component.d.ts +1 -1
- package/auth-configuration/basic-settings/session-configuration.component.d.ts.map +1 -1
- package/auth-configuration/basic-settings/tfa-settings.component.d.ts +1 -1
- package/auth-configuration/basic-settings/tfa-settings.component.d.ts.map +1 -1
- package/auth-configuration/sso-configuration/sso-configuration.component.d.ts +1 -1
- package/auth-configuration/sso-configuration/sso-configuration.component.d.ts.map +1 -1
- package/auth-configuration/sso-configuration/sso-configuration.module.d.ts +24 -24
- package/auth-configuration/sso-configuration/sso-configuration.module.d.ts.map +1 -1
- package/auth-configuration/sso-configuration/template-parts/access-mapping/access-mapping.component.d.ts +1 -1
- package/auth-configuration/sso-configuration/template-parts/access-mapping/access-mapping.component.d.ts.map +1 -1
- package/auth-configuration/sso-configuration/template-parts/access-mapping/child-predicates.component.d.ts +1 -1
- package/auth-configuration/sso-configuration/template-parts/access-mapping/child-predicates.component.d.ts.map +1 -1
- package/auth-configuration/sso-configuration/template-parts/access-mapping/dynamic-access-mapping.component.d.ts +1 -1
- package/auth-configuration/sso-configuration/template-parts/access-mapping/dynamic-access-mapping.component.d.ts.map +1 -1
- package/auth-configuration/sso-configuration/template-parts/access-mapping/inventory-roles-mapping.component.d.ts +1 -1
- package/auth-configuration/sso-configuration/template-parts/access-mapping/inventory-roles-mapping.component.d.ts.map +1 -1
- package/auth-configuration/sso-configuration/template-parts/access-mapping/inventory-roles-modal.component.d.ts +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/basic-configuration.component.d.ts +1 -1
- package/auth-configuration/sso-configuration/template-parts/basic-configuration.component.d.ts.map +1 -1
- package/auth-configuration/sso-configuration/template-parts/external-token-config.component.d.ts +1 -1
- package/auth-configuration/sso-configuration/template-parts/external-token-config.component.d.ts.map +1 -1
- package/auth-configuration/sso-configuration/template-parts/logout-configuration.component.d.ts +1 -1
- package/auth-configuration/sso-configuration/template-parts/logout-configuration.component.d.ts.map +1 -1
- package/auth-configuration/sso-configuration/template-parts/request-configuration.component.d.ts +1 -1
- package/auth-configuration/sso-configuration/template-parts/request-configuration.component.d.ts.map +1 -1
- package/auth-configuration/sso-configuration/template-parts/signature-configuration.component.d.ts +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 +1 -1
- package/auth-configuration/sso-configuration/template-parts/user-data-mapping.component.d.ts.map +1 -1
- package/auth-configuration/sso-configuration/template-parts/user-id-configuration.component.d.ts +1 -1
- package/auth-configuration/sso-configuration/template-parts/user-id-configuration.component.d.ts.map +1 -1
- package/auth-configuration/sso-configuration/templates/aad-template.component.d.ts +1 -1
- package/auth-configuration/sso-configuration/templates/aad-template.component.d.ts.map +1 -1
- package/auth-configuration/sso-configuration/templates/custom-template.component.d.ts +1 -1
- package/auth-configuration/sso-configuration/templates/custom-template.component.d.ts.map +1 -1
- package/auth-configuration/sso-configuration/templates/key-cloak-template.component.d.ts +1 -1
- package/auth-configuration/sso-configuration/templates/key-cloak-template.component.d.ts.map +1 -1
- package/bookmarks/bookmarks.component.d.ts +1 -1
- package/bookmarks/bookmarks.component.d.ts.map +1 -1
- package/bookmarks/bookmarks.module.d.ts +7 -7
- package/bookmarks/bookmarks.module.d.ts.map +1 -1
- package/bookmarks/edit-bookmarks/edit-bookmarks.component.d.ts +1 -1
- package/bookmarks/edit-bookmarks/edit-bookmarks.component.d.ts.map +1 -1
- package/child-devices/child-devices.component.d.ts +1 -1
- package/child-devices/child-devices.component.d.ts.map +1 -1
- package/child-devices/child-devices.module.d.ts +5 -5
- package/child-devices/child-devices.module.d.ts.map +1 -1
- package/cockpit-config/cockpit-config.module.d.ts +17 -17
- package/cockpit-config/cockpit-config.module.d.ts.map +1 -1
- package/cockpit-config/cockpit-configuration.component.d.ts +1 -1
- package/cockpit-config/cockpit-configuration.component.d.ts.map +1 -1
- package/cockpit-config/feature-config.component.d.ts +1 -1
- package/cockpit-config/feature-config.component.d.ts.map +1 -1
- package/cockpit-config/home-dashboard-config.component.d.ts +1 -1
- package/cockpit-config/home-dashboard-config.component.d.ts.map +1 -1
- package/cockpit-config/misc-config.component.d.ts +1 -1
- package/cockpit-config/misc-config.component.d.ts.map +1 -1
- package/cockpit-config/root-node-config.component.d.ts +1 -1
- package/cockpit-config/root-node-config.component.d.ts.map +1 -1
- package/cockpit-config/setup/cockpit-setup-step1.component.d.ts +1 -1
- package/cockpit-config/setup/cockpit-setup-step1.component.d.ts.map +1 -1
- package/cockpit-config/setup/cockpit-setup-step2.component.d.ts +1 -1
- package/cockpit-config/setup/cockpit-setup-step2.component.d.ts.map +1 -1
- package/cockpit-config/setup/cockpit-setup-step3.component.d.ts +1 -1
- package/cockpit-config/setup/cockpit-setup-step3.component.d.ts.map +1 -1
- package/cockpit-config/setup/cockpit-setup-step4.component.d.ts +1 -1
- package/cockpit-config/setup/cockpit-setup-step4.component.d.ts.map +1 -1
- package/cockpit-config/setup/cockpit-setup-stepper-buttons.component.d.ts +1 -1
- package/cockpit-config/setup/cockpit-setup-stepper-buttons.component.d.ts.map +1 -1
- package/context-dashboard/add-dashboard.component.d.ts +1 -1
- package/context-dashboard/add-dashboard.component.d.ts.map +1 -1
- package/context-dashboard/context-dashboard.component.d.ts +2 -1
- package/context-dashboard/context-dashboard.component.d.ts.map +1 -1
- package/context-dashboard/context-dashboard.model.d.ts +0 -1
- package/context-dashboard/context-dashboard.model.d.ts.map +1 -1
- package/context-dashboard/context-dashboard.module.d.ts +26 -19
- package/context-dashboard/context-dashboard.module.d.ts.map +1 -1
- package/context-dashboard/context-dashboard.service.d.ts +6 -1
- package/context-dashboard/context-dashboard.service.d.ts.map +1 -1
- package/context-dashboard/dashboard-detail.component.d.ts +2 -2
- package/context-dashboard/dashboard-detail.component.d.ts.map +1 -1
- package/context-dashboard/device-info-dashboard/device-info-dashboard.component.d.ts +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 +5 -5
- 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 +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 +5 -5
- package/context-dashboard/device-management-home-dashboard/device-management-home-dashboard.module.d.ts.map +1 -1
- package/context-dashboard/paste-dashboard-action.component.d.ts +1 -1
- package/context-dashboard/paste-dashboard-action.component.d.ts.map +1 -1
- package/context-dashboard/widget-config.component.d.ts +1 -1
- package/context-dashboard/widget-config.component.d.ts.map +1 -1
- package/context-dashboard/widget-config.service.d.ts +1 -1
- package/core/alert/alert.service.d.ts +14 -5
- package/core/alert/alert.service.d.ts.map +1 -1
- package/core/bottom-drawer/bottom-drawer.component.d.ts +3 -0
- package/core/bottom-drawer/bottom-drawer.component.d.ts.map +1 -1
- package/core/breadcrumb/breadcrumb.module.d.ts +3 -3
- package/core/common/ApplicationOptions.d.ts +14 -12
- package/core/common/ApplicationOptions.d.ts.map +1 -1
- package/core/common/date.pipe.d.ts +1 -1
- package/core/common/forOf.directive.d.ts +16 -16
- package/core/common/forOf.directive.d.ts.map +1 -1
- package/core/common/humanize-app-name.pipe.d.ts +7 -0
- package/core/common/humanize-app-name.pipe.d.ts.map +1 -1
- package/core/common/humanize.pipe.d.ts +7 -0
- package/core/common/humanize.pipe.d.ts.map +1 -1
- package/core/common/icon.directive.d.ts +19 -0
- package/core/common/icon.directive.d.ts.map +1 -1
- package/core/common/markdown-to-html.pipe.d.ts +8 -0
- package/core/common/markdown-to-html.pipe.d.ts.map +1 -1
- package/core/common/options.service.d.ts +5 -5
- package/core/common/outlet.directive.d.ts +4 -6
- package/core/common/outlet.directive.d.ts.map +1 -1
- package/core/common/permissions.service.d.ts +12 -12
- package/core/common/service-registry.service.d.ts +2 -1
- package/core/common/service-registry.service.d.ts.map +1 -1
- package/core/common/user-name-initials.pipe.d.ts +7 -0
- package/core/common/user-name-initials.pipe.d.ts.map +1 -1
- package/core/common/user-preferences/user-preferences.service.d.ts +1 -1
- package/core/countdown-interval/countdown-interval.component.d.ts +7 -0
- package/core/countdown-interval/countdown-interval.component.d.ts.map +1 -1
- package/core/date-time-picker/date-time-picker.component.d.ts +20 -0
- package/core/date-time-picker/date-time-picker.component.d.ts.map +1 -1
- package/core/device-status/device-status.component.d.ts +3 -0
- package/core/device-status/device-status.component.d.ts.map +1 -1
- package/core/header/header.model.d.ts +3 -2
- package/core/header/header.model.d.ts.map +1 -1
- package/core/header/title/title.component.d.ts +2 -0
- package/core/header/title/title.component.d.ts.map +1 -1
- package/core/i18n/c8y-translate.directive.d.ts +2 -2
- package/core/list-display-switch/list-display-switch.component.d.ts +9 -0
- package/core/list-display-switch/list-display-switch.component.d.ts.map +1 -1
- package/core/preview-feature/preview-feature.service.d.ts +1 -0
- package/core/preview-feature/preview-feature.service.d.ts.map +1 -1
- package/core/range-display/range-display.component.d.ts +11 -0
- package/core/range-display/range-display.component.d.ts.map +1 -1
- package/core/realtime/realtime.service.d.ts +4 -4
- package/dashboard-manager/dashboard-manager.module.d.ts +8 -8
- package/dashboard-manager/dashboard-manager.module.d.ts.map +1 -1
- package/dashboard-manager/type-dashboard-target-assets-grid/type-dashboard-target-assets-grid.component.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 +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/type-dashboards-list.component.d.ts +1 -1
- package/dashboard-manager/type-dashboards-list/type-dashboards-list.component.d.ts.map +1 -1
- package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.d.ts +1 -1
- package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.d.ts.map +1 -1
- package/datapoint-selector/datapoint-selection-list/datapoint-selection-list.component.d.ts +10 -1
- package/datapoint-selector/datapoint-selection-list/datapoint-selection-list.component.d.ts.map +1 -1
- package/datapoint-selector/datapoint-selector-list-item/datapoint-selector-list-item.component.d.ts +1 -1
- package/datapoint-selector/datapoint-selector-list-item/datapoint-selector-list-item.component.d.ts.map +1 -1
- package/datapoint-selector/datapoint-selector-modal/datapoint-selector-modal.component.d.ts +1 -1
- package/datapoint-selector/datapoint-selector-modal/datapoint-selector-modal.component.d.ts.map +1 -1
- package/datapoint-selector/datapoint-selector.component.d.ts +1 -1
- package/datapoint-selector/datapoint-selector.component.d.ts.map +1 -1
- package/datapoint-selector/datapoint-selector.module.d.ts +18 -18
- package/datapoint-selector/datapoint-selector.module.d.ts.map +1 -1
- package/datapoint-selector/datapoint-template-popover/datapoint-template-popover.component.d.ts +1 -1
- package/datapoint-selector/datapoint-template-popover/datapoint-template-popover.component.d.ts.map +1 -1
- package/datapoint-selector/pipes/datapoint-label.pipe.d.ts +1 -1
- package/datapoint-selector/pipes/datapoint-label.pipe.d.ts.map +1 -1
- package/datapoint-selector/pipes/filter-datapoints.pipe.d.ts +1 -1
- package/datapoint-selector/pipes/filter-datapoints.pipe.d.ts.map +1 -1
- package/datapoint-selector/pipes/includes-datapoint.pipe.d.ts +1 -1
- package/datapoint-selector/pipes/includes-datapoint.pipe.d.ts.map +1 -1
- package/datapoints-export-selector/datapoints-export-selector.component.d.ts +7 -0
- package/datapoints-export-selector/datapoints-export-selector.component.d.ts.map +1 -1
- package/default-subscriptions/default-subscriptions.component.d.ts +1 -1
- package/default-subscriptions/default-subscriptions.component.d.ts.map +1 -1
- package/default-subscriptions/default-subscriptions.module.d.ts +4 -4
- package/default-subscriptions/default-subscriptions.module.d.ts.map +1 -1
- package/device-grid/columns/alarms.cell-renderer.component.d.ts +1 -1
- package/device-grid/columns/alarms.cell-renderer.component.d.ts.map +1 -1
- package/device-grid/columns/alarms.header-cell-renderer.component.d.ts +1 -1
- package/device-grid/columns/alarms.header-cell-renderer.component.d.ts.map +1 -1
- package/device-grid/columns/group.cell-renderer.component.d.ts +1 -1
- package/device-grid/columns/group.cell-renderer.component.d.ts.map +1 -1
- package/device-grid/columns/group.filtering-form-renderer.component.d.ts +1 -1
- package/device-grid/columns/group.filtering-form-renderer.component.d.ts.map +1 -1
- package/device-grid/columns/model.cell-renderer.component.d.ts +1 -1
- package/device-grid/columns/model.cell-renderer.component.d.ts.map +1 -1
- package/device-grid/columns/name.cell-renderer.component.d.ts +1 -1
- package/device-grid/columns/name.cell-renderer.component.d.ts.map +1 -1
- package/device-grid/columns/registration-date.cell-renderer.component.d.ts +1 -1
- package/device-grid/columns/registration-date.cell-renderer.component.d.ts.map +1 -1
- package/device-grid/columns/serial-number.cell-renderer.component.d.ts +1 -1
- package/device-grid/columns/serial-number.cell-renderer.component.d.ts.map +1 -1
- package/device-grid/columns/status.cell-renderer.component.d.ts +1 -1
- package/device-grid/columns/status.cell-renderer.component.d.ts.map +1 -1
- package/device-grid/device-grid.component.d.ts +1 -1
- package/device-grid/device-grid.component.d.ts.map +1 -1
- package/device-grid/device-grid.module.d.ts +15 -15
- package/device-grid/device-grid.module.d.ts.map +1 -1
- package/device-list/add-smart-group.component.d.ts +1 -1
- package/device-list/add-smart-group.component.d.ts.map +1 -1
- package/device-list/device-list.component.d.ts +1 -1
- package/device-list/device-list.component.d.ts.map +1 -1
- package/device-list/device-list.module.d.ts +8 -8
- package/device-list/device-list.module.d.ts.map +1 -1
- package/device-protocols/device-protocols.module.d.ts +1 -1
- package/device-protocols/device-type-detail.component.d.ts +1 -1
- package/device-protocols/device-type-detail.component.d.ts.map +1 -1
- package/device-protocols/device-type-detail.directive.d.ts +1 -1
- package/device-protocols/device-type-detail.directive.d.ts.map +1 -1
- package/device-provisioned-certificates/device-provisioned-certificates.module.d.ts +7 -7
- package/device-provisioned-certificates/device-provisioned-certificates.module.d.ts.map +1 -1
- package/device-provisioned-certificates/device-tab-provisioned-certificates.component.d.ts +1 -1
- package/device-provisioned-certificates/device-tab-provisioned-certificates.component.d.ts.map +1 -1
- package/ecosystem/activity-log/activity-log.component.d.ts +1 -1
- package/ecosystem/activity-log/activity-log.component.d.ts.map +1 -1
- package/ecosystem/application-plugins/appState.pipe.d.ts +1 -1
- package/ecosystem/application-plugins/appState.pipe.d.ts.map +1 -1
- package/ecosystem/application-plugins/application-plugin-readme.component.d.ts +1 -1
- package/ecosystem/application-plugins/application-plugin-readme.component.d.ts.map +1 -1
- package/ecosystem/application-plugins/application-plugins.component.d.ts +1 -1
- package/ecosystem/application-plugins/application-plugins.component.d.ts.map +1 -1
- package/ecosystem/application-plugins/application-plugins.module.d.ts +14 -14
- package/ecosystem/application-plugins/application-plugins.module.d.ts.map +1 -1
- package/ecosystem/application-plugins/apps-to-update-remotes-select.component.d.ts +2 -2
- package/ecosystem/application-plugins/apps-to-update-remotes-select.component.d.ts.map +1 -1
- package/ecosystem/application-plugins/install-plugin.component.d.ts +1 -1
- package/ecosystem/application-plugins/install-plugin.component.d.ts.map +1 -1
- package/ecosystem/application-plugins/label-cell-renderer.component.d.ts +1 -1
- package/ecosystem/application-plugins/label-cell-renderer.component.d.ts.map +1 -1
- package/ecosystem/application-plugins/only-latest-filter/only-latest-filter.component.d.ts +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 +1 -1
- package/ecosystem/application-plugins/orphaned-status-cell-renderer.component.d.ts.map +1 -1
- package/ecosystem/application-plugins/plugin-list-item.component.d.ts +1 -1
- package/ecosystem/application-plugins/plugin-list-item.component.d.ts.map +1 -1
- package/ecosystem/application-plugins/plugin-list.component.d.ts +1 -1
- package/ecosystem/application-plugins/plugin-list.component.d.ts.map +1 -1
- package/ecosystem/application-plugins/update-plugin-of-app/update-plugin-of-app.component.d.ts +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 +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 +1 -1
- package/ecosystem/application-properties/subscription-modal/subscription-modal.component.d.ts.map +1 -1
- package/ecosystem/application-properties/update-application-modal/update-application-modal.component.d.ts +1 -1
- package/ecosystem/application-properties/update-application-modal/update-application-modal.component.d.ts.map +1 -1
- package/ecosystem/applications/add-external-applicaiton/add-external-application.component.d.ts +1 -1
- package/ecosystem/applications/add-external-applicaiton/add-external-application.component.d.ts.map +1 -1
- package/ecosystem/applications/add-web-application/add-web-application.component.d.ts +1 -1
- package/ecosystem/applications/add-web-application/add-web-application.component.d.ts.map +1 -1
- package/ecosystem/applications/application-list/application-list.component.d.ts +1 -1
- package/ecosystem/applications/application-list/application-list.component.d.ts.map +1 -1
- package/ecosystem/applications/install-from-package/install-from-package.component.d.ts +2 -3
- package/ecosystem/applications/install-from-package/install-from-package.component.d.ts.map +1 -1
- package/ecosystem/archived-confirm/archived-confirm-modal.component.d.ts +1 -1
- package/ecosystem/archived-confirm/archived-confirm-modal.component.d.ts.map +1 -1
- package/ecosystem/archived-confirm/archived-confirm.module.d.ts +4 -4
- package/ecosystem/archived-confirm/archived-confirm.module.d.ts.map +1 -1
- package/ecosystem/ecosystem.module.d.ts +34 -34
- package/ecosystem/ecosystem.module.d.ts.map +1 -1
- package/ecosystem/features/feature-list.component.d.ts +1 -1
- package/ecosystem/features/feature-list.component.d.ts.map +1 -1
- package/ecosystem/license-confirm/license-confirm-modal.component.d.ts +1 -1
- package/ecosystem/license-confirm/license-confirm-modal.component.d.ts.map +1 -1
- package/ecosystem/license-confirm/license-confirm.module.d.ts +5 -5
- package/ecosystem/license-confirm/license-confirm.module.d.ts.map +1 -1
- package/ecosystem/license-confirm/license-view.component.d.ts +1 -1
- package/ecosystem/license-confirm/license-view.component.d.ts.map +1 -1
- package/ecosystem/microservices/add-microservice.component.d.ts +1 -1
- package/ecosystem/microservices/add-microservice.component.d.ts.map +1 -1
- package/ecosystem/microservices/microservice-list.component.d.ts +1 -1
- package/ecosystem/microservices/microservice-list.component.d.ts.map +1 -1
- package/ecosystem/packages/add-package.component.d.ts +1 -1
- package/ecosystem/packages/add-package.component.d.ts.map +1 -1
- package/ecosystem/packages/deploy-application/deploy-application.component.d.ts +1 -1
- package/ecosystem/packages/deploy-application/deploy-application.component.d.ts.map +1 -1
- package/ecosystem/packages/package-details/package-details.component.d.ts +1 -1
- package/ecosystem/packages/package-details/package-details.component.d.ts.map +1 -1
- package/ecosystem/packages/package-list/packages-list.component.d.ts +1 -1
- package/ecosystem/packages/package-list/packages-list.component.d.ts.map +1 -1
- package/ecosystem/packages/package-versions/package-contents/contents-apps/contents-apps.component.d.ts +1 -1
- package/ecosystem/packages/package-versions/package-contents/contents-apps/contents-apps.component.d.ts.map +1 -1
- package/ecosystem/packages/package-versions/package-contents/contents-plugins/contents-plugins.component.d.ts +1 -1
- package/ecosystem/packages/package-versions/package-contents/contents-plugins/contents-plugins.component.d.ts.map +1 -1
- package/ecosystem/packages/package-versions/package-contents/packages-contents.component.d.ts +1 -1
- package/ecosystem/packages/package-versions/package-contents/packages-contents.component.d.ts.map +1 -1
- package/ecosystem/packages/package-versions/package-versions-list/package-versions-list.component.d.ts +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 +1 -1
- package/ecosystem/packages/package-versions/packages-versions.component.d.ts.map +1 -1
- package/ecosystem/shared/add-application.component.d.ts +1 -1
- package/ecosystem/shared/add-application.component.d.ts.map +1 -1
- package/ecosystem/shared/application-card.component.d.ts +1 -1
- package/ecosystem/shared/application-card.component.d.ts.map +1 -1
- package/ecosystem/shared/application-properties-form.component.d.ts +1 -1
- package/ecosystem/shared/application-properties-form.component.d.ts.map +1 -1
- package/ecosystem/shared/archived-filter/archived-filter.component.d.ts +1 -1
- package/ecosystem/shared/archived-filter/archived-filter.component.d.ts.map +1 -1
- package/ecosystem/shared/duplicate-application/duplicate-application-list/duplicate-application-list.component.d.ts +1 -1
- package/ecosystem/shared/duplicate-application/duplicate-application-list/duplicate-application-list.component.d.ts.map +1 -1
- package/ecosystem/shared/duplicate-application/duplicate-application-properties/duplicate-application-properties.component.d.ts +2 -2
- package/ecosystem/shared/duplicate-application/duplicate-application-properties/duplicate-application-properties.component.d.ts.map +1 -1
- package/ecosystem/shared/duplicate-application/duplicate-application.component.d.ts +1 -1
- package/ecosystem/shared/duplicate-application/duplicate-application.component.d.ts.map +1 -1
- package/ecosystem/shared/list-filters/list-filters.component.d.ts +1 -1
- package/ecosystem/shared/list-filters/list-filters.component.d.ts.map +1 -1
- package/ecosystem/shared/package-version-select/package-version-select.component.d.ts +1 -1
- package/ecosystem/shared/package-version-select/package-version-select.component.d.ts.map +1 -1
- package/ecosystem/shared/shared-ecosystem.module.d.ts +20 -20
- package/ecosystem/shared/shared-ecosystem.module.d.ts.map +1 -1
- package/ecosystem/shared/translate-package-label.pipe.d.ts +1 -1
- package/ecosystem/shared/translate-package-label.pipe.d.ts.map +1 -1
- package/ecosystem/shared/upload-archive.component.d.ts +1 -1
- package/ecosystem/shared/upload-archive.component.d.ts.map +1 -1
- package/fesm2022/c8y-ngx-components-actility-device-registration.mjs +36 -12
- package/fesm2022/c8y-ngx-components-actility-device-registration.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs +195 -107
- package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-alarms.mjs +236 -96
- package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-api.mjs +8 -0
- package/fesm2022/c8y-ngx-components-api.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-app-logs.mjs +6 -8
- package/fesm2022/c8y-ngx-components-app-logs.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-assets-navigator.mjs +74 -26
- package/fesm2022/c8y-ngx-components-assets-navigator.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-auth-configuration.mjs +578 -366
- package/fesm2022/c8y-ngx-components-auth-configuration.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-bookmarks.mjs +36 -17
- package/fesm2022/c8y-ngx-components-bookmarks.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-child-devices.mjs +7 -9
- package/fesm2022/c8y-ngx-components-child-devices.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-cockpit-config.mjs +138 -67
- package/fesm2022/c8y-ngx-components-cockpit-config.mjs.map +1 -1
- package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-B7m2lsIe.mjs → c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-C-JLbcn5.mjs} +3 -3
- package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-B7m2lsIe.mjs.map → c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-C-JLbcn5.mjs.map} +1 -1
- package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-general-settings.component-BCG_pjJz.mjs → c8y-ngx-components-context-dashboard-dashboard-general-settings.component-RXvOcs04.mjs} +5 -5
- package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-general-settings.component-BCG_pjJz.mjs.map → c8y-ngx-components-context-dashboard-dashboard-general-settings.component-RXvOcs04.mjs.map} +1 -1
- package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-version-history.component-DjCdFkJw.mjs → c8y-ngx-components-context-dashboard-dashboard-version-history.component-DmPIJGXO.mjs} +3 -3
- package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-version-history.component-DjCdFkJw.mjs.map → c8y-ngx-components-context-dashboard-dashboard-version-history.component-DmPIJGXO.mjs.map} +1 -1
- package/fesm2022/c8y-ngx-components-context-dashboard.mjs +170 -94
- package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-dashboard-manager.mjs +44 -31
- package/fesm2022/c8y-ngx-components-dashboard-manager.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +132 -66
- package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-default-subscriptions.mjs +32 -16
- package/fesm2022/c8y-ngx-components-default-subscriptions.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-device-grid.mjs +50 -45
- package/fesm2022/c8y-ngx-components-device-grid.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-device-list.mjs +50 -25
- package/fesm2022/c8y-ngx-components-device-list.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-device-protocols.mjs +6 -9
- package/fesm2022/c8y-ngx-components-device-protocols.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs +36 -8
- package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs +155 -72
- package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-ecosystem-archived-confirm.mjs +13 -7
- package/fesm2022/c8y-ngx-components-ecosystem-archived-confirm.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-ecosystem-license-confirm.mjs +43 -12
- package/fesm2022/c8y-ngx-components-ecosystem-license-confirm.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs +179 -80
- package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-ecosystem.mjs +353 -1316
- package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-file-preview.mjs +17 -8
- package/fesm2022/c8y-ngx-components-file-preview.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-files-repository.mjs +55 -22
- package/fesm2022/c8y-ngx-components-files-repository.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-icon-selector.mjs +46 -28
- package/fesm2022/c8y-ngx-components-icon-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-location.mjs +28 -15
- package/fesm2022/c8y-ngx-components-location.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-loriot-device-registration.mjs +36 -12
- package/fesm2022/c8y-ngx-components-loriot-device-registration.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-map.mjs +260 -28
- package/fesm2022/c8y-ngx-components-map.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-platform-configuration.mjs +24 -13
- package/fesm2022/c8y-ngx-components-platform-configuration.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs +133 -26
- package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-register-device.mjs +314 -249
- package/fesm2022/c8y-ngx-components-register-device.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-report-dashboard.mjs +41 -17
- package/fesm2022/c8y-ngx-components-report-dashboard.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-reports.mjs +61 -21
- package/fesm2022/c8y-ngx-components-reports.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-search.mjs +34 -21
- package/fesm2022/c8y-ngx-components-search.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-sigfox-device-registration.mjs +43 -19
- package/fesm2022/c8y-ngx-components-sigfox-device-registration.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-sub-assets.mjs +207 -72
- package/fesm2022/c8y-ngx-components-sub-assets.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-tenants.mjs +96 -39
- package/fesm2022/c8y-ngx-components-tenants.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-trusted-certificates.mjs +173 -53
- package/fesm2022/c8y-ngx-components-trusted-certificates.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-upgrade.mjs +19 -10
- package/fesm2022/c8y-ngx-components-upgrade.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-user-roles.mjs +19 -14
- package/fesm2022/c8y-ngx-components-user-roles.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +76 -50
- package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-device-management-welcome.mjs +15 -8
- package/fesm2022/c8y-ngx-components-widgets-implementations-device-management-welcome.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs +2 -2
- package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components.mjs +166 -80
- package/fesm2022/c8y-ngx-components.mjs.map +1 -1
- package/file-preview/file-preview.component.d.ts +1 -1
- package/file-preview/file-preview.component.d.ts.map +1 -1
- package/file-preview/file-preview.module.d.ts +3 -3
- package/file-preview/file-preview.module.d.ts.map +1 -1
- package/files-repository/files-repository-upload.component.d.ts +1 -1
- package/files-repository/files-repository-upload.component.d.ts.map +1 -1
- package/files-repository/files-repository.component.d.ts +1 -1
- package/files-repository/files-repository.component.d.ts.map +1 -1
- package/files-repository/files-repository.module.d.ts +6 -6
- package/files-repository/files-repository.module.d.ts.map +1 -1
- package/icon-selector/icon-name.pipe.d.ts +1 -1
- package/icon-selector/icon-name.pipe.d.ts.map +1 -1
- package/icon-selector/icon-selector-modal/icon-selector-modal.component.d.ts +1 -1
- package/icon-selector/icon-selector-modal/icon-selector-modal.component.d.ts.map +1 -1
- package/icon-selector/icon-selector-wrapper/icon-selector-wrapper.component.d.ts +1 -1
- package/icon-selector/icon-selector-wrapper/icon-selector-wrapper.component.d.ts.map +1 -1
- package/icon-selector/icon-selector.component.d.ts +1 -1
- package/icon-selector/icon-selector.component.d.ts.map +1 -1
- package/icon-selector/icon-selector.module.d.ts +8 -8
- package/icon-selector/icon-selector.module.d.ts.map +1 -1
- package/locales/de.po +23 -2
- package/locales/es.po +23 -2
- package/locales/fr.po +23 -2
- package/locales/ja_JP.po +23 -2
- package/locales/ko.po +23 -2
- package/locales/locales.pot +22 -1
- package/locales/nl.po +23 -2
- package/locales/pl.po +23 -2
- package/locales/pt_BR.po +23 -2
- package/locales/zh_CN.po +23 -2
- package/locales/zh_TW.po +23 -2
- package/location/add-location.component.d.ts +1 -1
- package/location/add-location.component.d.ts.map +1 -1
- package/location/location.component.d.ts +1 -1
- package/location/location.component.d.ts.map +1 -1
- package/location/location.module.d.ts +6 -6
- package/location/location.module.d.ts.map +1 -1
- package/loriot-device-registration/loriot-device-registration-button.component.d.ts +1 -1
- package/loriot-device-registration/loriot-device-registration-button.component.d.ts.map +1 -1
- package/loriot-device-registration/loriot-device-registration.component.d.ts +1 -1
- package/loriot-device-registration/loriot-device-registration.component.d.ts.map +1 -1
- package/loriot-device-registration/loriot-device-registration.module.d.ts +4 -4
- package/loriot-device-registration/loriot-device-registration.module.d.ts.map +1 -1
- package/map/cluster-map.component.d.ts +61 -1
- package/map/cluster-map.component.d.ts.map +1 -1
- package/map/map-popup.directive.d.ts +1 -1
- package/map/map-popup.directive.d.ts.map +1 -1
- package/map/map-status.component.d.ts +86 -3
- package/map/map-status.component.d.ts.map +1 -1
- package/map/map.component.d.ts +100 -5
- package/map/map.component.d.ts.map +1 -1
- package/map/map.model.d.ts +98 -4
- package/map/map.model.d.ts.map +1 -1
- package/map/map.module.d.ts +9 -9
- package/map/map.module.d.ts.map +1 -1
- package/package.json +1 -1
- package/platform-configuration/platform-configuration-form.component.d.ts +1 -1
- package/platform-configuration/platform-configuration-form.component.d.ts.map +1 -1
- package/platform-configuration/platform-configuration.module.d.ts +4 -4
- package/platform-configuration/platform-configuration.module.d.ts.map +1 -1
- package/protocol-lpwan/lpwan-protocol.module.d.ts +4 -4
- package/protocol-lpwan/lpwan-protocol.module.d.ts.map +1 -1
- package/protocol-lpwan/lpwan-set-connections.component.d.ts +1 -1
- package/protocol-lpwan/lpwan-set-connections.component.d.ts.map +1 -1
- package/protocol-lpwan/lpwan-set-device-protocol.component.d.ts +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 +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 +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 +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/multiple-lns-connectors.module.d.ts +8 -8
- package/protocol-lpwan/multiple-lns-connectors/multiple-lns-connectors.module.d.ts.map +1 -1
- package/protocol-lpwan/multiple-lns-connectors/no-connections-found.component.d.ts +1 -1
- package/protocol-lpwan/multiple-lns-connectors/sigfox-multiple-lns-connector.component.d.ts +1 -1
- package/protocol-lpwan/multiple-lns-connectors/sigfox-multiple-lns-connector.component.d.ts.map +1 -1
- package/register-device/bulk/bulk-device-registration-button.component.d.ts +1 -1
- package/register-device/bulk/bulk-device-registration-button.component.d.ts.map +1 -1
- package/register-device/bulk/bulk-device-registration-modal.component.d.ts +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 +1 -1
- package/register-device/device-registration-view.component.d.ts.map +1 -1
- package/register-device/dropdown/register-device-dropdown.component.d.ts +1 -1
- package/register-device/dropdown/register-device-dropdown.component.d.ts.map +1 -1
- package/register-device/extensible/bulk/extensible-bulk-device-registration-button.component.d.ts +1 -1
- package/register-device/extensible/bulk/extensible-bulk-device-registration-button.component.d.ts.map +1 -1
- package/register-device/extensible/bulk/extensible-bulk-device-registration-modal.component.d.ts +1 -1
- package/register-device/extensible/bulk/extensible-bulk-device-registration-modal.component.d.ts.map +1 -1
- package/register-device/extensible/single/extensible-device-registration-button.component.d.ts +1 -1
- package/register-device/extensible/single/extensible-device-registration-button.component.d.ts.map +1 -1
- package/register-device/extensible/single/extensible-device-registration-modal.component.d.ts +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 +1 -1
- package/register-device/extensible/single/extensible-device-registration-stepper.component.d.ts.map +1 -1
- package/register-device/general/general-device-registration-button.component.d.ts +1 -1
- package/register-device/general/general-device-registration-button.component.d.ts.map +1 -1
- package/register-device/general/general-device-registration.component.d.ts +3 -6
- package/register-device/general/general-device-registration.component.d.ts.map +1 -1
- package/register-device/register-device.module.d.ts +16 -16
- package/register-device/register-device.module.d.ts.map +1 -1
- package/report-dashboard/report-dashboard-list.component.d.ts +1 -1
- package/report-dashboard/report-dashboard-list.component.d.ts.map +1 -1
- package/report-dashboard/report-dashboard.module.d.ts +7 -7
- package/reports/cron.component.d.ts +1 -1
- package/reports/cron.component.d.ts.map +1 -1
- package/reports/export-schedules.component.d.ts +2 -3
- package/reports/export-schedules.component.d.ts.map +1 -1
- package/reports/reports.module.d.ts +7 -7
- package/reports/reports.module.d.ts.map +1 -1
- package/reports/schedule-modal.component.d.ts +2 -3
- package/reports/schedule-modal.component.d.ts.map +1 -1
- package/search/search-action.component.d.ts +1 -1
- package/search/search-action.component.d.ts.map +1 -1
- package/search/search-custom-filters.component.d.ts +1 -1
- package/search/search-custom-filters.component.d.ts.map +1 -1
- package/search/search-grid.component.d.ts +1 -1
- package/search/search-grid.component.d.ts.map +1 -1
- package/search/search-results.component.d.ts +1 -1
- package/search/search-results.component.d.ts.map +1 -1
- package/search/search.module.d.ts +8 -8
- package/search/search.module.d.ts.map +1 -1
- package/sigfox-device-registration/sigfox-device-registration-button.component.d.ts +1 -1
- package/sigfox-device-registration/sigfox-device-registration-button.component.d.ts.map +1 -1
- package/sigfox-device-registration/sigfox-device-registration.component.d.ts +1 -1
- package/sigfox-device-registration/sigfox-device-registration.component.d.ts.map +1 -1
- package/sigfox-device-registration/sigfox-device-registration.module.d.ts +4 -4
- package/sigfox-device-registration/sigfox-device-registration.module.d.ts.map +1 -1
- package/sub-assets/add-group/add-group.component.d.ts +1 -1
- package/sub-assets/add-group/add-group.component.d.ts.map +1 -1
- package/sub-assets/add-group/add-group.module.d.ts +7 -7
- package/sub-assets/asset-properties-item.component.d.ts +1 -1
- package/sub-assets/asset-properties-item.component.d.ts.map +1 -1
- package/sub-assets/asset-properties.component.d.ts +1 -1
- package/sub-assets/asset-properties.component.d.ts.map +1 -1
- package/sub-assets/assign-devices/assign-child-devices.component.d.ts +2 -3
- package/sub-assets/assign-devices/assign-child-devices.component.d.ts.map +1 -1
- package/sub-assets/assign-devices/assign-devices.component.d.ts +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 +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 +1 -1
- package/sub-assets/group-info.component.d.ts.map +1 -1
- package/sub-assets/groups.component.d.ts +1 -1
- package/sub-assets/groups.component.d.ts.map +1 -1
- package/sub-assets/location/asset-location.component.d.ts +1 -1
- package/sub-assets/location/asset-location.component.d.ts.map +1 -1
- package/sub-assets/sub-assets-grid.component.d.ts +1 -1
- package/sub-assets/sub-assets-grid.component.d.ts.map +1 -1
- package/sub-assets/sub-assets-grids.module.d.ts +9 -9
- package/sub-assets/sub-assets-grids.module.d.ts.map +1 -1
- package/sub-assets/sub-assets.component.d.ts +1 -1
- package/sub-assets/sub-assets.component.d.ts.map +1 -1
- package/sub-assets/sub-assets.module.d.ts +18 -18
- package/sub-assets/sub-assets.module.d.ts.map +1 -1
- package/sub-assets/unassign-assets-modal/unassign-modal.component.d.ts +1 -1
- package/sub-assets/unassign-assets-modal/unassign-modal.component.d.ts.map +1 -1
- package/tenants/tenant-form/tenant-form.component.d.ts +1 -1
- package/tenants/tenant-form/tenant-form.component.d.ts.map +1 -1
- package/tenants/tenant-list/creation-time.filtering-form-renderer.component.d.ts +2 -3
- package/tenants/tenant-list/creation-time.filtering-form-renderer.component.d.ts.map +1 -1
- package/tenants/tenant-list/status.filtering-form-renderer.component.d.ts +1 -1
- package/tenants/tenant-list/status.filtering-form-renderer.component.d.ts.map +1 -1
- package/tenants/tenant-list/tenant-list.component.d.ts +1 -1
- package/tenants/tenant-list/tenant-list.component.d.ts.map +1 -1
- package/tenants/tenants.module.d.ts +9 -9
- package/tenants/tenants.module.d.ts.map +1 -1
- package/trusted-certificates/crl/crl-check-settings.component.d.ts +1 -1
- package/trusted-certificates/crl/crl-check-settings.component.d.ts.map +1 -1
- package/trusted-certificates/crl/crl-settings.component.d.ts +1 -1
- package/trusted-certificates/crl/crl-settings.component.d.ts.map +1 -1
- package/trusted-certificates/crl/crl-settings.module.d.ts +8 -8
- package/trusted-certificates/crl/crl-settings.module.d.ts.map +1 -1
- package/trusted-certificates/list/add-trusted-certificate.component.d.ts +4 -3
- package/trusted-certificates/list/add-trusted-certificate.component.d.ts.map +1 -1
- package/trusted-certificates/list/trusted-certificate-list.component.d.ts +11 -2
- package/trusted-certificates/list/trusted-certificate-list.component.d.ts.map +1 -1
- package/trusted-certificates/list/trusted-certificate-list.module.d.ts +10 -10
- package/trusted-certificates/list/trusted-certificate-list.module.d.ts.map +1 -1
- package/trusted-certificates/list/trusted-certificate.model.d.ts +2 -0
- package/trusted-certificates/list/trusted-certificate.model.d.ts.map +1 -1
- package/trusted-certificates/pattern-messages.data.d.ts +6 -0
- package/trusted-certificates/pattern-messages.data.d.ts.map +1 -1
- package/upgrade/dashboard/dashboard-upgrade.module.d.ts +6 -6
- package/upgrade/dashboard/dashboard-upgrade.module.d.ts.map +1 -1
- package/upgrade/dashboard/device-selector.component.d.ts +1 -1
- package/upgrade/dashboard/device-selector.component.d.ts.map +1 -1
- package/upgrade/dashboard/widget.component.d.ts +1 -1
- package/upgrade/dashboard/widget.component.d.ts.map +1 -1
- package/user-roles/inventory-role-selector/inventory-role-selector.component.d.ts +1 -1
- package/user-roles/inventory-role-selector/inventory-role-selector.component.d.ts.map +1 -1
- package/user-roles/roles-asset-tree/roles-asset-tree.component.d.ts +1 -1
- package/user-roles/roles-asset-tree/roles-asset-tree.component.d.ts.map +1 -1
- package/user-roles/user-roles.module.d.ts +4 -4
- package/user-roles/user-roles.module.d.ts.map +1 -1
- package/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.d.ts +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 +1 -1
- package/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.d.ts.map +1 -1
- package/widgets/implementations/alarms/alarm-widget-alarms-reload.component.d.ts +1 -1
- package/widgets/implementations/alarms/alarm-widget-alarms-reload.component.d.ts.map +1 -1
- package/widgets/implementations/alarms/alarms-widget.module.d.ts +13 -13
- package/widgets/implementations/alarms/alarms-widget.module.d.ts.map +1 -1
- package/widgets/implementations/alarms/severity-icon.pipe.d.ts +1 -1
- package/widgets/implementations/alarms/severity-icon.pipe.d.ts.map +1 -1
- package/widgets/implementations/alarms/sorting-description-popover-message.pipe.d.ts +1 -1
- package/widgets/implementations/alarms/sorting-description-popover-message.pipe.d.ts.map +1 -1
- package/widgets/implementations/device-management-welcome/device-management-welcome-widget.module.d.ts +4 -4
- package/widgets/implementations/device-management-welcome/device-management-welcome-widget.module.d.ts.map +1 -1
- package/widgets/implementations/device-management-welcome/welcome.component.d.ts +1 -1
- package/widgets/implementations/device-management-welcome/welcome.component.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"c8y-ngx-components-ecosystem.mjs","sources":["../../ecosystem/activity-log/activity-log.component.ts","../../ecosystem/activity-log/activity-log.component.html","../../ecosystem/application-properties/subscription-modal/subscription-modal.component.ts","../../ecosystem/application-properties/subscription-modal/subscription-modal.component.html","../../ecosystem/application-plugins/appState.pipe.ts","../../ecosystem/application-plugins/apps-to-update-remotes-select.component.ts","../../ecosystem/application-plugins/apps-to-update-remotes-select.component.html","../../ecosystem/application-plugins/plugin-list.service.ts","../../ecosystem/application-plugins/plugin-list-item.component.ts","../../ecosystem/application-plugins/plugin-list-item.component.html","../../ecosystem/application-plugins/plugin-list.component.ts","../../ecosystem/application-plugins/plugin-list.component.html","../../ecosystem/application-properties/update-application-modal/update-application-modal.component.ts","../../ecosystem/application-properties/update-application-modal/update-application-modal.component.html","../../ecosystem/application-properties/application-properties.component.ts","../../ecosystem/application-properties/application-properties.component.html","../../ecosystem/application-properties/application-properties.guard.ts","../../ecosystem/applications/add-external-applicaiton/add-external-application.component.ts","../../ecosystem/applications/add-external-applicaiton/add-external-application.component.html","../../ecosystem/applications/add-web-application/add-web-application.component.ts","../../ecosystem/applications/application-list/application-list.component.ts","../../ecosystem/applications/application-list/application-list.component.html","../../ecosystem/applications/install-from-package/install-from-package.component.ts","../../ecosystem/applications/install-from-package/install-from-package.component.html","../../ecosystem/ecosystem-tabs.factory.ts","../../ecosystem/application-plugins/only-latest-filter/only-latest-filter.component.ts","../../ecosystem/application-plugins/only-latest-filter/only-latest-filter.component.html","../../ecosystem/application-plugins/install-plugin.component.ts","../../ecosystem/application-plugins/install-plugin.component.html","../../ecosystem/application-plugins/label-cell-renderer.component.ts","../../ecosystem/application-plugins/label-cell-renderer.component.html","../../ecosystem/application-plugins/orphaned-status-cell-renderer.component.ts","../../ecosystem/application-plugins/orphaned-status-cell-renderer.component.html","../../ecosystem/application-plugins/update-plugin-of-app/update-plugin-of-app.component.ts","../../ecosystem/application-plugins/update-plugin-of-app/update-plugin-of-app.component.html","../../ecosystem/application-plugins/application-plugin-readme.component.ts","../../ecosystem/application-plugins/application-plugin-readme.component.html","../../ecosystem/application-plugins/application-plugins.component.ts","../../ecosystem/application-plugins/application-plugins.component.html","../../ecosystem/application-plugins/application-plugins.guard.ts","../../ecosystem/application-plugins/application-plugins.module.ts","../../ecosystem/features/feature-list.component.ts","../../ecosystem/features/feature-list.component.html","../../ecosystem/microservices/add-microservice.component.ts","../../ecosystem/microservices/microservice-list.component.ts","../../ecosystem/microservices/microservice-list.component.html","../../ecosystem/packages/add-package.component.ts","../../ecosystem/packages/deploy-application/deploy-application.component.ts","../../ecosystem/packages/deploy-application/deploy-application.component.html","../../ecosystem/packages/package-details/package-details.component.ts","../../ecosystem/packages/package-details/package-details.component.html","../../ecosystem/packages/package-list/packages-list.component.ts","../../ecosystem/packages/package-list/packages-list.component.html","../../ecosystem/packages/package-versions.guard.ts","../../ecosystem/packages/package-versions/package-contents/contents-apps/contents-apps.component.ts","../../ecosystem/packages/package-versions/package-contents/contents-apps/contents-apps.component.html","../../ecosystem/packages/package-versions/package-contents/contents-plugins/contents-plugins.component.ts","../../ecosystem/packages/package-versions/package-contents/contents-plugins/contents-plugins.component.html","../../ecosystem/packages/package-versions/package-contents/packages-contents.component.ts","../../ecosystem/packages/package-versions/package-contents/packages-contents.component.html","../../ecosystem/packages/package-versions/package-versions-list/package-versions-list.component.ts","../../ecosystem/packages/package-versions/package-versions-list/package-versions-list.component.html","../../ecosystem/packages/package-versions/packages-versions.component.ts","../../ecosystem/packages/package-versions/packages-versions.component.html","../../ecosystem/packages/package.guard.ts","../../ecosystem/packages/package-changelog-tab/package-changelog-tab.component.ts","../../ecosystem/packages/package-changelog-tab/package-changelog-tab.component.html","../../ecosystem/packages/package-changelog.guard.ts","../../ecosystem/ecosystem.module.ts","../../ecosystem/c8y-ngx-components-ecosystem.ts"],"sourcesContent":["import { Component, Input, OnInit } from '@angular/core';\nimport { IApplication, IApplicationBinary } from '@c8y/client';\nimport { AlertService } from '@c8y/ngx-components';\nimport { BehaviorSubject } from 'rxjs';\nimport { EcosystemService } from '@c8y/ngx-components/ecosystem/shared';\n\n@Component({\n selector: 'c8y-activity-log',\n templateUrl: './activity-log.component.html',\n standalone: false\n})\nexport class ActivityLogComponent implements OnInit {\n @Input() application: IApplication;\n @Input() hasAdminPermissions = false;\n archives: IApplicationBinary[] = [];\n toActivateVersionId: string;\n last: IApplicationBinary;\n isLoading: boolean;\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 ngOnInit() {\n this.canReactivate = this.showReactivate();\n this.refresh();\n }\n\n isActive(archive: IApplicationBinary): boolean {\n return this.application.activeVersionId === archive.id;\n }\n\n toActivate(archive: IApplicationBinary): boolean {\n return this.toActivateVersionId === archive.id;\n }\n\n checkIfLast(archive: IApplicationBinary): boolean {\n return archive.id === this.last.id;\n }\n\n showReactivate(): boolean {\n return this.ecosystemService.isApplication(this.application);\n }\n\n async setActive(archive): Promise<void> {\n const id = archive.id || archive;\n this.toActivateVersionId = id;\n this.isLoading = true;\n try {\n this.application = (\n await this.ecosystemService.setAppActiveVersion(this.application, id)\n ).data;\n } catch (ex) {\n this.alertService.addServerFailure(ex);\n }\n this.isLoading = false;\n this.refresh();\n }\n\n async deleteArchive(archive: IApplicationBinary): Promise<void> {\n await this.ecosystemService.deleteArchive(archive, this.application);\n this.refresh();\n }\n\n async downloadArchive(archive: IApplicationBinary): Promise<void> {\n await this.ecosystemService.downloadArchive(this.application, archive);\n }\n\n async reactivateArchive(): Promise<void> {\n await this.ecosystemService.reactivateArchive(this.application);\n }\n\n async onRefresh() {\n await this.refresh();\n }\n\n private async refresh(): Promise<void> {\n this.isLoading = true;\n this.archives = await this.ecosystemService.listArchives(this.application.id);\n if (this.application.manifest?.package === 'blueprint') {\n // filter out entries without description because using them as active may break application's\n // manifest (changing isPackage property of deployed app to 'true')\n this.archives = this.archives.filter((archive: IApplicationBinary) => !!archive.description);\n }\n this.archives.sort((a, b) => {\n return (new Date(b.created) as any) - (new Date(a.created) as any);\n });\n this.last = this.archives[this.archives.length - 1];\n this.isLoading = false;\n }\n}\n","<div class=\"inner-scroll bg-level-1 flex-grow inner-scroll--md overflow-visible-sm overflow-visible-xs\">\n <div class=\"card-block overflow-visible\">\n <c8y-list-group>\n <c8y-li-timeline *ngFor=\"let archive of archives\" [ngClass]=\"{ active: isActive(archive) }\">\n {{ archive.created | date: 'd MMM YYYY' }}\n {{ archive.created | date: 'shortTime' }}\n <c8y-li>\n <c8y-li-icon\n [icon]=\"checkIfLast(archive) ? 'flag-checkered' : 'file-zip-o'\"\n ></c8y-li-icon>\n <c8y-li-body>\n <div class=\"d-flex a-i-start\">\n <div style=\"min-width: 0; flex: 1\">\n <span class=\"text-truncate-wrap\" title=\" {{ archive.description || archive.name }}\">\n {{ archive.description || archive.name }}\n </span>\n <small *ngIf=\"archive.description\" class=\"text-muted\">{{\n archive.description\n }}</small>\n </div>\n <i\n *ngIf=\"isLoading && toActivate(archive)\"\n [c8yIcon]=\"'circle-o-notch'\"\n class=\"icon-spin\"\n title=\"{{ 'Activating' | translate }}\"\n ></i>\n\n <span *ngIf=\"isActive(archive)\" class=\"label label-primary m-l-auto m-t-4\">{{\n 'Active' | translate\n }}</span>\n </div>\n </c8y-li-body>\n <c8y-li-action\n (click)=\"setActive(archive)\"\n *ngIf=\"hasAdminPermissions && !isLoading && !isActive(archive)\"\n icon=\"check-square-o\"\n >\n {{ 'Set as active`archive`' | translate }}\n </c8y-li-action>\n <c8y-li-action (click)=\"downloadArchive(archive)\" icon=\"download\">\n {{ 'Download`archive`' | translate }}\n </c8y-li-action>\n <c8y-li-action\n (click)=\"deleteArchive(archive)\"\n *ngIf=\"\n hasAdminPermissions &&\n archives.length > 1 &&\n !checkIfLast(archive) &&\n !isActive(archive)\n \"\n icon=\"delete\"\n >\n {{ 'Delete`archive`' | translate }}\n </c8y-li-action>\n <c8y-li-action\n (click)=\"reactivateArchive()\"\n *ngIf=\"hasAdminPermissions && canReactivate && isActive(archive)\"\n icon=\"undo\"\n >\n {{ 'Reactivate archive' | translate }}\n </c8y-li-action>\n </c8y-li>\n </c8y-li-timeline>\n </c8y-list-group>\n </div>\n</div>\n<div class=\"card-footer\" *ngIf=\"!isLoading && hasAdminPermissions\">\n <c8y-form-group class=\"m-auto\">\n <c8y-upload-archive [(application)]=\"application\" (refresh)=\"onRefresh()\"></c8y-upload-archive>\n </c8y-form-group>\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport { ApplicationService, IApplication, IApplicationManagedObject } from '@c8y/client';\nimport {\n AlertService,\n ContextRouteService,\n gettext,\n ModalService,\n Status,\n TabsService\n} from '@c8y/ngx-components';\nimport { isEmpty } from 'lodash';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { EcosystemService } from '@c8y/ngx-components/ecosystem/shared';\n\n@Component({\n selector: 'c8y-subscription-modal',\n templateUrl: './subscription-modal.component.html',\n standalone: false\n})\nexport class SubscriptionModalComponent implements OnInit {\n readonly RETRY_TIMEOUT = 3000;\n application: IApplication;\n message: string;\n isLoading = false;\n result: Promise<void> = new Promise(resolve => {\n this._resolve = resolve;\n });\n isSubscribed: boolean;\n retryCounter = 0;\n\n private readonly TABS: string[] = ['Logs', 'Status'];\n private _resolve: (value: void | PromiseLike<void>) => void;\n\n constructor(\n private bsModalRef: BsModalRef,\n private ecosystemService: EcosystemService,\n private tabsService: TabsService,\n private modal: ModalService,\n private applicationService: ApplicationService,\n private alertService: AlertService,\n private contextRouteService: ContextRouteService\n ) {}\n\n ngOnInit() {\n if (this.isSubscribed) {\n this.unsubscribe();\n } else {\n this.subscribe();\n }\n }\n\n async subscribe(): Promise<void> {\n this.retryCounter = 0;\n this.isLoading = true;\n this.message = gettext('Subscribing…');\n await this.ecosystemService.subscribeApp(this.application);\n this.getStatusDetails('subscribe');\n }\n\n async unsubscribe(): Promise<void> {\n this.retryCounter = 0;\n this.isLoading = true;\n this.message = gettext('Unsubscribing…');\n await this.ecosystemService.unsubscribeApp(this.application);\n this.getStatusDetails('unsubscribe');\n }\n\n private async getStatusDetails(action: 'subscribe' | 'unsubscribe') {\n this.contextRouteService.refreshContext();\n const actionSuccessful =\n action === 'subscribe' ? await this.onSubscribe() : this.onUnsubscribe();\n if (actionSuccessful) {\n return this.hideSubscriptionModal();\n }\n if (this.retryCounter === 4) {\n this.showWarningModal(action);\n return this.hideSubscriptionModal();\n }\n this.retryCounter += 1;\n setTimeout(async () => {\n this.getStatusDetails(action);\n }, this.RETRY_TIMEOUT);\n }\n\n private async onSubscribe(): Promise<boolean> {\n try {\n if (!this.application.activeVersionId) {\n return true;\n }\n const res: IApplicationManagedObject = (\n await this.applicationService.getStatusDetails(this.application)\n ).data[0];\n return this.shouldShowMSSpecificTabs(res);\n } catch (er) {\n this.alertService.addServerFailure(er);\n }\n }\n\n // Checks if the UI should show tabs with logs and status\n private shouldShowMSSpecificTabs(mo: IApplicationManagedObject): boolean {\n return !isEmpty(mo.c8y_Status?.instances) && !!mo.c8y_SupportedLogs;\n }\n\n private onUnsubscribe(): boolean {\n return !this.tabsService.areAvailable(this.TABS);\n }\n\n private hideSubscriptionModal(): void {\n this._resolve();\n this.bsModalRef.hide();\n this.isLoading = false;\n }\n\n private showWarningModal(action: string): void {\n const title = gettext('Warning');\n const body =\n action === 'subscribe'\n ? gettext('Something went wrong, please refresh the page or resubscribe the application.')\n : gettext(\n 'Something went wrong, please refresh the page or retry to unsubscribe from the application.'\n );\n this.modal.acknowledge(title, body, Status.WARNING, gettext('Close'));\n }\n}\n","<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i c8yIcon=\"c8y-atom\"></i>\n <h4 id=\"modal-title\">{{ message | translate }}</h4>\n </div>\n <div class=\"modal-body\" id=\"modal-body\" *ngIf=\"isLoading\">\n <div class=\"p-16 text-center\">\n <c8y-loading></c8y-loading>\n </div>\n </div>\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { IApplication } from '@c8y/client';\nimport { ApplicationState, EcosystemService } from '@c8y/ngx-components/ecosystem/shared';\n@Pipe({\n name: 'appState',\n pure: true,\n standalone: false\n})\nexport class AppStatePipe implements PipeTransform {\n constructor(private ecosystemService: EcosystemService) {}\n\n transform(\n app: IApplication,\n arg: keyof ApplicationState\n ): ApplicationState[keyof ApplicationState] {\n const appState = this.ecosystemService.getAppState(app);\n return appState[arg];\n }\n}\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { WizardConfig, WizardModalService, gettext } from '@c8y/ngx-components';\nimport { EcosystemService } from '@c8y/ngx-components/ecosystem/shared';\nimport { ApplicationType } from '@c8y/client';\nimport { ModalOptions } from 'ngx-bootstrap/modal';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { IApplication } from '@c8y/client';\nimport { UpdateType } from './apps-to-update-remotes-select.model';\nimport { Subject, BehaviorSubject, combineLatest, Observable, of } from 'rxjs';\nimport { map, takeUntil } from 'rxjs/operators';\n\n@Component({\n templateUrl: './apps-to-update-remotes-select.component.html',\n selector: 'c8y-apps-to-update-remotes-select',\n standalone: false\n})\nexport class AppsToUpdateRemotesSelectComponent implements OnInit, OnDestroy {\n @Input() apps: IApplication[];\n @Input() updateType: UpdateType;\n @Input() pluginName: string;\n @Input() appsDisabled: Set<IApplication['id']>;\n private destroy$ = new Subject<void>();\n filterTerm$: BehaviorSubject<string> = new BehaviorSubject('');\n filteredApps$: Observable<IApplication[]> = new BehaviorSubject([]);\n textConfig: {\n header: string;\n applyButton: string;\n };\n appsToUpdateRemotes: IApplication[] = [];\n result: Promise<IApplication[]> = new Promise((resolve, reject) => {\n this._update = resolve;\n this._cancel = reject;\n });\n private _update: (apps: IApplication[]) => void;\n private _cancel: (reason?: any) => void;\n\n constructor(\n private bsModalRef: BsModalRef,\n private wizardModalService: WizardModalService,\n private ecosystemService: EcosystemService\n ) {}\n\n ngOnInit(): void {\n this.filteredApps$ = combineLatest([of(this.apps), this.filterTerm$]).pipe(\n map(([apps, filterTerm]) =>\n filterTerm.trim().length === 0\n ? apps\n : apps.filter((application: IApplication) =>\n this.ecosystemService.filterContainString(application.name, filterTerm)\n )\n )\n );\n this.textConfig =\n this.updateType === 'install'\n ? {\n header: gettext('Select applications to install the plugin to'),\n applyButton: gettext('Install')\n }\n : {\n header: gettext('Select applications to uninstall the plugin from'),\n applyButton: gettext('Uninstall')\n };\n }\n\n cancel() {\n this.bsModalRef.hide();\n this._cancel();\n }\n\n setSelectedApps(selected: boolean, app: IApplication) {\n selected\n ? this.appsToUpdateRemotes.push(app)\n : (this.appsToUpdateRemotes = this.appsToUpdateRemotes.filter(\n application => app.key !== application.key\n ));\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n async duplicateApp() {\n const wizardConfig: WizardConfig = {\n headerText: gettext('Duplicate application'),\n headerIcon: 'c8y-copy'\n };\n\n const initialState: Record<string, unknown> = {\n wizardConfig,\n componentInitialState: {\n noBackButton: true\n },\n id: 'duplicateApplication'\n };\n\n const modalOptions: ModalOptions = { initialState };\n\n const modalRef = this.wizardModalService.show(modalOptions);\n modalRef.content.onClose.pipe(takeUntil(this.destroy$)).subscribe(async () => {\n this.apps = await this.getOwnedHostedApps();\n this.ngOnInit();\n });\n }\n\n async apply() {\n this._update(this.appsToUpdateRemotes);\n this.bsModalRef.hide();\n }\n\n private async getOwnedHostedApps(): Promise<IApplication[]> {\n return (await this.ecosystemService.getWebApplications()).filter(\n app => this.ecosystemService.isOwner(app) && app.type !== ApplicationType.EXTERNAL\n );\n }\n}\n","<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i [c8yIcon]=\"'c8y-modules'\"></i>\n <div class=\"modal-title h4\" id=\"modal-title\" translate>Custom applications</div>\n </div>\n <div class=\"inner-scroll\" id=\"modal-body\">\n <div class=\"p-16 text-center separator-bottom sticky-top bg-component\">\n <p class=\"text-medium\">\n {{ textConfig.header | translate }}\n </p>\n <c8y-filter (onSearch)=\"filterTerm$.next($event)\"></c8y-filter>\n </div>\n <c8y-list-group *ngIf=\"apps.length; else emptyList\">\n <c8y-li\n [ngClass]=\"{ disabled: updateType === 'install' && appsDisabled.has(app.id) }\"\n *ngFor=\"let app of filteredApps$ | async\"\n data-cy=\"apps-to-update-remotes-select--applications-list\"\n >\n <c8y-li-checkbox (onSelect)=\"setSelectedApps($event, app)\" data-cy=\"apps-to-update-remotes-select--app-checkbox\"></c8y-li-checkbox>\n <c8y-li-icon class=\"p-l-0 icon-32\">\n <c8y-app-icon\n class=\"list-group-icon\"\n [app]=\"app\"\n [contextPath]=\"app.contextPath\"\n [name]=\"app.name\"\n ></c8y-app-icon>\n </c8y-li-icon>\n <div class=\"d-flex\">\n <div class=\"p-r-8\">\n <p class=\"text-medium\" [innerText]=\"app | humanizeAppName | async\"></p>\n <p class=\"small text-muted\">{{ app.description }}</p>\n </div>\n <span class=\"label m-l-auto a-s-start\" [ngClass]=\"app | appState: 'class'\">\n {{ app | appState: 'label' | translate }}\n </span>\n </div>\n </c8y-li>\n </c8y-list-group>\n </div>\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n (click)=\"cancel()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n title=\"{{ textConfig.applyButton | translate }}\"\n [disabled]=\"appsToUpdateRemotes.length === 0\"\n (click)=\"apply()\"\n >\n {{ textConfig.applyButton | translate }}\n </button>\n </div>\n</div>\n<ng-template #emptyList>\n <c8y-ui-empty-state\n [icon]=\"'c8y-modules'\"\n [title]=\"'No custom applications available.' | translate\"\n *ngIf=\"updateType !== 'install'\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n <ng-container *ngIf=\"updateType === 'install'\">\n <c8y-ui-empty-state\n [icon]=\"'c8y-modules'\"\n [title]=\"'No custom applications available.' | translate\"\n [subtitle]=\"'Create a custom application by duplicating an existing one.' | translate\"\n [horizontal]=\"true\"\n >\n <button\n class=\"btn btn-sm btn-default m-t-8\"\n title=\"{{ 'Duplicate' | translate }}\"\n (click)=\"duplicateApp()\"\n >\n {{ 'Duplicate' | translate }}\n </button>\n </c8y-ui-empty-state>\n </ng-container>\n</ng-template>\n","import { inject, Injectable } from '@angular/core';\nimport {\n AlertService,\n ApplicationPlugin,\n GainsightService,\n gettext,\n HumanizeAppNamePipe,\n PluginsService\n} from '@c8y/ngx-components';\nimport { UpdateType } from './apps-to-update-remotes-select.model';\nimport { ApplicationType, IApplication } from '@c8y/client';\nimport { AppsToUpdateRemotesSelectComponent } from './apps-to-update-remotes-select.component';\nimport { firstValueFrom } from 'rxjs';\nimport { TranslateService } from '@ngx-translate/core';\nimport { pick } from 'lodash-es';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport {\n EcosystemService,\n PRODUCT_EXPERIENCE_ECOSYSTEM\n} from '@c8y/ngx-components/ecosystem/shared';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PluginListService {\n CURRENT_LOCATION = location.href;\n updatingPluginId: Record<UpdateType, string> = { install: '', uninstall: '' };\n private appsDisabled: Set<IApplication['id']> = new Set<IApplication['id']>();\n\n private gainsightService = inject(GainsightService);\n private pluginsService = inject(PluginsService);\n private alertService = inject(AlertService);\n private ecosystemService = inject(EcosystemService);\n private humanizeAppNamePipe = inject(HumanizeAppNamePipe);\n private translateService = inject(TranslateService);\n private bsModalService = inject(BsModalService);\n\n async updateAppRemotes(\n plugin: ApplicationPlugin,\n updateType: UpdateType,\n pluginPackage: IApplication\n ) {\n this.updatingPluginId[updateType] = plugin?.id;\n let initialState: Pick<\n AppsToUpdateRemotesSelectComponent,\n 'apps' | 'updateType' | 'pluginName' | 'appsDisabled'\n >;\n try {\n const apps = await this.getAppsForUpdate(plugin, updateType);\n\n initialState = {\n apps,\n updateType,\n pluginName: plugin.name,\n appsDisabled: this.appsDisabled\n };\n } catch (e) {\n this.alertService.addServerFailure(e);\n this.updatingPluginId[updateType] = '';\n return;\n }\n\n let selectedApps: IApplication[];\n try {\n selectedApps = await this.selectApps(initialState);\n if (!selectedApps) {\n this.updatingPluginId[updateType] = '';\n return;\n }\n } catch {\n // unreached\n }\n\n if (updateType === 'install') {\n const isArchived = await this.ecosystemService.verifyArchived([plugin]);\n if (!isArchived) {\n this.updatingPluginId[updateType] = '';\n return;\n }\n\n const licensesVerifiedByUser = await this.ecosystemService.verifyLicenses([plugin]);\n if (!licensesVerifiedByUser) {\n this.updatingPluginId[updateType] = '';\n return;\n }\n }\n\n for (const app of selectedApps) {\n try {\n if (updateType === 'install') {\n const versionIsCompatible = await this.ecosystemService.verifyPluginVersionsCompatibility(\n [plugin],\n app\n );\n\n if (!versionIsCompatible) {\n continue;\n }\n }\n\n await this.handleRemotesUpdate(app, plugin, updateType, pluginPackage);\n const humanizedAppName = await firstValueFrom(this.humanizeAppNamePipe.transform(app));\n const successText =\n updateType === 'install'\n ? this.translateService.instant(\n gettext('Plugin installed to application \"{{ appName }}\".'),\n {\n appName: humanizedAppName\n }\n )\n : this.translateService.instant(\n gettext('Plugin uninstalled from application \"{{ appName }}\".'),\n { appName: humanizedAppName }\n );\n this.alertService.success(successText);\n this.onUpdateEventHandleGS(plugin, app, updateType);\n } catch (error) {\n this.onUpdateEventHandleGS(plugin, app, updateType, error);\n }\n }\n this.updatingPluginId[updateType] = '';\n }\n\n async getAppsForUpdate(plugin: ApplicationPlugin, updateType: UpdateType) {\n let apps = (await this.ecosystemService.getWebApplications()).filter(\n app => this.ecosystemService.isOwner(app) && app.type !== ApplicationType.EXTERNAL\n );\n\n if (updateType === 'install') {\n this.appsDisabled.clear();\n for (const app of apps) {\n if (this.isPluginInstalledInApp(plugin, app)) {\n this.appsDisabled.add(app.id);\n }\n }\n }\n\n if (updateType === 'uninstall') {\n const installedApps: IApplication[] = [];\n for (const app of apps) {\n if (this.isPluginInstalledInApp(plugin, app)) {\n installedApps.push(app);\n }\n }\n apps = installedApps;\n }\n return apps;\n }\n\n private onUpdateEventHandleGS(\n plugin: ApplicationPlugin,\n app: IApplication,\n updateType: UpdateType,\n error?: unknown\n ) {\n const pluginCustomEventInfo = pick(plugin, [\n 'name',\n 'contextPath',\n 'module',\n 'version',\n 'type',\n 'id'\n ] satisfies (keyof ApplicationPlugin)[]);\n\n const gsEventResult =\n updateType === 'install'\n ? PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.RESULTS.PLUGIN_INSTALLED\n : PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.RESULTS.PLUGIN_REMOVED;\n\n const eventData = {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.PLUGIN_LIST,\n result: error || gsEventResult,\n url: this.CURRENT_LOCATION,\n ...pluginCustomEventInfo,\n targetApplicationName: app.name,\n targetApplicationContextPath: app.contextPath,\n ...(error && { error })\n };\n\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.PACKAGE_PLUGINS,\n eventData\n );\n }\n\n private isPluginInstalledInApp(plugin: ApplicationPlugin, app: IApplication): boolean {\n const appRemotes = this.pluginsService.getMFRemotes(app) || {};\n\n for (const [remoteName, modules] of Object.entries(appRemotes)) {\n const pluginFromThisPackageIsInstalled =\n this.getPluginContextPathWithoutVersion(remoteName) === plugin.contextPath;\n const specificPluginModuleIsInstalled = modules.some(module => module === plugin.module);\n if (pluginFromThisPackageIsInstalled && specificPluginModuleIsInstalled) {\n return true;\n }\n }\n return false;\n }\n\n private getPluginContextPathWithoutVersion(remote: string) {\n return remote.split('@')[0];\n }\n\n private async handleRemotesUpdate(\n application: IApplication,\n plugin: ApplicationPlugin,\n updateType: UpdateType,\n pluginPackage: IApplication\n ) {\n try {\n // When remotes object is not set in the configuration object of an application.\n // Fallback to setInitialRemotes is triggered.\n const { remotes, excludedRemotes } = await (updateType === 'install'\n ? this.pluginsService.addRemotes(application, plugin)\n : this.pluginsService.removeRemotes(\n application,\n this.getAllPluginsToRemove(plugin, pluginPackage)\n ));\n if (!application.config) {\n application.config = {};\n }\n application.config.remotes = remotes;\n application.config.excludedRemotes = excludedRemotes;\n const actualRemotes = this.pluginsService.getMFRemotes(application);\n return actualRemotes;\n } catch (er) {\n if (er) {\n this.alertService.addServerFailure(er);\n }\n throw er;\n }\n }\n\n private getAllPluginsToRemove(\n plugin: ApplicationPlugin,\n pluginPackage: IApplication\n ): ApplicationPlugin[] {\n return pluginPackage.applicationVersions.map(av => ({\n id: `${plugin.contextPath}@${av.version}/${plugin.module}`,\n idLatest: `${plugin.contextPath}/${plugin.module}`,\n module: plugin.module,\n path: plugin.path\n }));\n }\n\n private async selectApps(\n initialState: Pick<\n AppsToUpdateRemotesSelectComponent,\n 'apps' | 'updateType' | 'pluginName' | 'appsDisabled'\n >\n ): Promise<IApplication[]> {\n try {\n return await (\n this.bsModalService.show(AppsToUpdateRemotesSelectComponent, {\n class: 'modal-sm',\n ariaDescribedby: 'modal-body',\n ariaLabelledBy: 'modal-title',\n initialState,\n ignoreBackdropClick: true,\n keyboard: false\n }).content as AppsToUpdateRemotesSelectComponent\n ).result;\n } catch (er) {\n return;\n }\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ApplicationPlugin, PackageType, PluginsService } from '@c8y/ngx-components';\n\n@Component({\n selector: 'c8y-plugin-list-item',\n templateUrl: './plugin-list-item.component.html',\n standalone: false\n})\nexport class PluginListItemComponent implements OnInit {\n @Input() plugin: ApplicationPlugin;\n @Input() selectable: boolean;\n @Input() hideSource = false;\n @Output() isItemSelected: EventEmitter<boolean> = new EventEmitter();\n\n packageType: PackageType = PackageType.UNKNOWN;\n\n readonly PACKAGE_TYPE = PackageType;\n\n constructor(private pluginService: PluginsService) {}\n\n ngOnInit() {\n this.packageType = this.pluginService.getPackageType(this.plugin.originApp);\n }\n\n onChange(event) {\n this.plugin.selected = !this.plugin.selected;\n this.isItemSelected.next(event);\n }\n}\n","<c8y-li-checkbox\n class=\"p-r-16 p-l-0\"\n (change)=\"onChange($event.target.checked)\"\n *ngIf=\"selectable\"\n [disabled]=\"plugin.installed\"\n [selected]=\"plugin.selected\"\n></c8y-li-checkbox>\n<c8y-li-icon class=\"p-l-0 text-center\">\n <i class=\"c8y-plugin-icon\">\n <span>{{ plugin.name?.substr(0, 2) }}</span>\n </i>\n</c8y-li-icon>\n<div class=\"p-relative flex-grow\">\n <div [ngClass]=\"{ 'p-r-8': selectable }\">\n <p>\n <span class=\"text-medium\">{{ plugin.name }}</span>\n <em class=\"text-muted small m-l-8\">{{ plugin.version }}</em>\n <span *ngIf=\"plugin.installed\">\n <i\n class=\"text-success\"\n [c8yIcon]=\"'check-circle'\"\n ></i>\n <em\n class=\"text-muted small\"\n translate\n >\n Installed`plugins`\n </em>\n </span>\n </p>\n <p class=\"small l-h-tight\">{{ plugin.description }}</p>\n </div>\n\n <span\n class=\"tag tag--info a-s-start m-t-8\"\n *ngIf=\"selectable && !hideSource\"\n >\n {{ plugin.contextPath }}\n </span>\n\n <span\n class=\"tag a-s-start m-t-8 m-l-4\"\n [ngClass]=\"{\n 'tag--default': packageType === PACKAGE_TYPE.COMMUNITY,\n 'tag--primary': packageType === PACKAGE_TYPE.OFFICIAL\n }\"\n >\n {{ plugin.originApp?.label || plugin.originApp?.manifest?.label | translatePackageLabel }}\n </span>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { IApplication } from '@c8y/client';\nimport { ApplicationPlugin } from '@c8y/ngx-components';\n\nimport { Observable } from 'rxjs';\n\nimport { PluginListService } from './plugin-list.service';\nimport { UpdateType } from './apps-to-update-remotes-select.model';\n\n@Component({\n selector: 'c8y-plugin-list',\n templateUrl: './plugin-list.component.html',\n standalone: false\n})\nexport class PluginListComponent {\n CURRENT_LOCATION = location.href;\n\n @Input() plugins$: Observable<ApplicationPlugin[]>;\n @Input() emptyListText = '';\n @Input() selectable: boolean;\n @Input() hideSource = false;\n /**\n * Shows the install button for each plugin separately. Currently used in package-details view.\n */\n @Input() installable = false;\n @Input() package: IApplication;\n @Input() selectedPlugin: ApplicationPlugin;\n @Output() selectedItems: EventEmitter<ApplicationPlugin[]> = new EventEmitter();\n @Output() showOverview = new EventEmitter<ApplicationPlugin>();\n selectedPlugins: { [key: string]: ApplicationPlugin } = {};\n updatingPluginId: Record<UpdateType, string>;\n\n constructor(private pluginListService: PluginListService) {\n this.updatingPluginId = this.pluginListService.updatingPluginId;\n }\n\n updateSelectedItems(selected: boolean, plugin: ApplicationPlugin) {\n this.selectedPlugins[plugin.id] = selected ? plugin : undefined;\n const onlyInstalledPlugins = Object.values(this.selectedPlugins).filter(Boolean);\n this.selectedItems.emit(onlyInstalledPlugins);\n }\n\n showPluginOverview(plugin: ApplicationPlugin): void {\n if (plugin?.id === this.selectedPlugin?.id) {\n return;\n }\n this.showOverview.emit(plugin);\n }\n\n async installPlugin(plugin: ApplicationPlugin) {\n await this.pluginListService.updateAppRemotes(plugin, 'install', this.package);\n }\n\n async uninstallPlugin(plugin: ApplicationPlugin) {\n await this.pluginListService.updateAppRemotes(plugin, 'uninstall', this.package);\n }\n}\n","<c8y-list-group class=\"bg-inherit\">\n <ng-container *ngIf=\"(plugins$ | async)?.length !== 0; else emptyList\">\n <ng-container *ngFor=\"let plugin of plugins$ | async\">\n <c8y-li\n [ngClass]=\"{\n disabled: plugin.installed,\n selected: selectedPlugin?.id === plugin?.id\n }\"\n >\n <div class=\"d-flex fit-w\">\n <ng-container *ngIf=\"plugin.readmePath\">\n <button\n class=\"c8y-list__item__btn d-flex fit-w gap-4\"\n title=\"{{ 'Details' | translate }}\"\n (click)=\"showPluginOverview(plugin)\"\n >\n <c8y-plugin-list-item\n class=\"d-contents\"\n (isItemSelected)=\"updateSelectedItems($event, plugin)\"\n [plugin]=\"plugin\"\n [selectable]=\"selectable\"\n [hideSource]=\"hideSource\"\n ></c8y-plugin-list-item>\n <i\n class=\"icon-24 m-l-auto a-s-center\"\n c8yIcon=\"forward\"\n ></i>\n </button>\n </ng-container>\n <ng-container *ngIf=\"!plugin.readmePath\">\n <c8y-plugin-list-item\n class=\"d-contents\"\n (isItemSelected)=\"updateSelectedItems($event, plugin)\"\n [plugin]=\"plugin\"\n [selectable]=\"selectable\"\n [hideSource]=\"hideSource\"\n ></c8y-plugin-list-item>\n </ng-container>\n </div>\n <div class=\"p-l-40 m-t-4 d-flex flex-wrap gap-8\">\n <button\n class=\"btn btn-danger btn-sm\"\n title=\"{{ 'Uninstall plugin' | translate }}\"\n *ngIf=\"installable\"\n (click)=\"uninstallPlugin(plugin)\"\n [ngClass]=\"{ 'btn-pending': plugin.id === updatingPluginId.uninstall }\"\n [disabled]=\"updatingPluginId.uninstall && plugin.id === updatingPluginId.uninstall\"\n data-cy=\"plugin-list--uninstall-plugin-button\"\n translate\n >\n Uninstall plugin\n </button>\n <button\n class=\"btn btn-default btn-sm m-0\"\n title=\"{{ 'Install plugin' | translate }}\"\n *ngIf=\"installable\"\n (click)=\"installPlugin(plugin)\"\n [ngClass]=\"{ 'btn-pending': plugin.id === updatingPluginId.install }\"\n [disabled]=\"updatingPluginId.install && plugin.id === updatingPluginId.install\"\n data-cy=\"plugin-list--install-plugin-button\"\n translate\n >\n Install plugin\n </button>\n </div>\n </c8y-li>\n </ng-container>\n </ng-container>\n</c8y-list-group>\n<ng-template #emptyList>\n <c8y-ui-empty-state\n [icon]=\"'plugin'\"\n [title]=\"emptyListText | translate\"\n [horizontal]=\"true\"\n *ngIf=\"emptyListText\"\n ></c8y-ui-empty-state>\n</ng-template>\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { IApplication, InventoryService } from '@c8y/client';\nimport { ApplicationPlugin, PluginsService } from '@c8y/ngx-components';\nimport { EcosystemService } from '@c8y/ngx-components/ecosystem/shared';\nimport { PluginsExportScopes } from '@c8y/ngx-components';\nimport { BehaviorSubject } from 'rxjs';\n\n@Component({\n selector: 'c8y-update-application-modal',\n templateUrl: './update-application-modal.component.html',\n standalone: false\n})\nexport class UpdateApplicationModalComponent implements OnInit {\n @ViewChild('modal', { static: false }) private modal;\n isUpdateOngoing = false;\n updateFailure = false;\n sourcePackage: IApplication;\n application: IApplication;\n result: Promise<void> = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n orphanedPlugins$: BehaviorSubject<ApplicationPlugin[]> = new BehaviorSubject([]);\n newPlugins$: BehaviorSubject<ApplicationPlugin[]> = new BehaviorSubject([]);\n\n private _resolve: (value: void | PromiseLike<void>) => void;\n private _reject: (value: void | PromiseLike<void>) => void;\n\n constructor(\n private inventoryService: InventoryService,\n private ecosystemService: EcosystemService,\n private pluginsService: PluginsService\n ) {}\n\n ngOnInit(): void {\n const hasDelta = this.getRemoteDelta();\n if (!hasDelta) {\n // start update directly if no remote delta detected\n this.updateApplication();\n }\n }\n\n /**\n * Checks if there is a delta between the current application and the source package remotes.\n * @returns {boolean} true if there is a delta between the current application and the source package remotes.\n */\n getRemoteDelta() {\n const currentRemotes = this.pluginsService.getMFExports(this.application, []);\n const possibleNewRemotes = this.pluginsService.getMFExports(this.sourcePackage, []);\n const installedRemotes = this.pluginsService.getMFRemotes(this.application);\n const installedRemotesIds = PluginsService.convertInstalledRemotesToIds(installedRemotes);\n\n const allRemotesToRemove = this.getAllRemotesToRemove(\n currentRemotes,\n possibleNewRemotes,\n installedRemotesIds\n );\n\n const allRemotesToAdd = this.getAllRemotesToAdd(possibleNewRemotes, currentRemotes);\n\n this.orphanedPlugins$.next(allRemotesToRemove);\n this.newPlugins$.next(allRemotesToAdd);\n\n return allRemotesToRemove.length !== 0 || allRemotesToAdd.length !== 0;\n }\n\n close() {\n this._reject();\n this.modal._dismiss();\n }\n\n done() {\n if (!this.updateFailure) {\n this._resolve();\n this.modal._dismiss();\n return;\n }\n this._reject();\n this.modal._dismiss();\n }\n\n async updateApplication() {\n try {\n this.isUpdateOngoing = true;\n const toInstallPlugins = this.newPlugins$.value.filter(({ selected }) => selected === true);\n const toRemovePlugins = this.orphanedPlugins$.value;\n this.orphanedPlugins$.next([]);\n this.newPlugins$.next([]);\n if (toRemovePlugins.length > 0) {\n const remotes = await this.pluginsService.removeRemotes(this.application, toRemovePlugins);\n this.application.config.remotes = remotes;\n }\n if (toInstallPlugins.length > 0) {\n const remotes = await this.pluginsService.addRemotes(this.application, toInstallPlugins);\n this.application.config.remotes = remotes;\n }\n const binaryMoId = this.sourcePackage.activeVersionId;\n await this.inventoryService.detail(binaryMoId); // only trying if we can access it\n await this.ecosystemService.uploadBinaryFromOtherPackage(\n this.sourcePackage,\n this.application,\n this.sourcePackage.activeVersionId\n );\n } catch (e) {\n if (e.res?.status === 404) {\n try {\n this.updateFailure = !(await this.ecosystemService.fallbackToClone(\n this.application,\n this.sourcePackage\n ));\n } catch (ex) {\n this.updateFailure = true;\n this.ecosystemService.alertError(e);\n }\n } else {\n this.updateFailure = true;\n this.ecosystemService.alertError(e);\n }\n } finally {\n this.isUpdateOngoing = false;\n }\n }\n\n private getAllRemotesToAdd(\n possibleNewRemotes: ApplicationPlugin[],\n currentRemotes: ApplicationPlugin[]\n ) {\n return possibleNewRemotes\n .filter(possibleNewRemote => {\n const isUnchanged = !!currentRemotes.some(\n currentRemote =>\n PluginsService.createPluginId(\n this.application.contextPath,\n possibleNewRemote.module,\n '',\n true\n ) === currentRemote.idLatest\n );\n\n const isSelf =\n possibleNewRemote.scope === PluginsExportScopes.SELF ||\n possibleNewRemote.scope === PluginsExportScopes.SELF_OPTIONAL;\n\n return !isUnchanged && isSelf;\n })\n .map(newRemote => {\n newRemote.contextPath = this.application.contextPath;\n newRemote.id = `${newRemote.contextPath}/${newRemote.module}`;\n newRemote.selected = newRemote.scope === PluginsExportScopes.SELF;\n return newRemote;\n });\n }\n\n private getAllRemotesToRemove(\n currentRemotes: ApplicationPlugin[],\n possibleNewRemotes: ApplicationPlugin[],\n installedRemotesIds: string[]\n ) {\n return currentRemotes\n .filter(currentRemote => {\n const isUnchanged = !!possibleNewRemotes.some(\n newRemote =>\n PluginsService.createPluginId(\n this.application.contextPath,\n newRemote.module,\n '',\n true\n ) === currentRemote.idLatest\n );\n const isInstalled = installedRemotesIds\n ? !!installedRemotesIds.some(\n currentInstalled =>\n currentRemote.id === currentInstalled || currentRemote.idLatest === currentInstalled\n )\n : false;\n\n const isSelf =\n currentRemote.scope === PluginsExportScopes.SELF ||\n currentRemote.scope === PluginsExportScopes.SELF_OPTIONAL;\n\n return !isUnchanged && isInstalled && isSelf;\n })\n .map(toRemoveRemote => {\n toRemoveRemote.contextPath = this.application.contextPath;\n toRemoveRemote.id = `${toRemoveRemote.contextPath}/${toRemoveRemote.module}`;\n toRemoveRemote.selected = true;\n return toRemoveRemote;\n });\n }\n}\n","<c8y-modal\n [title]=\"'Update application' | translate\"\n [headerClasses]=\"'dialog-header'\"\n [customFooter]=\"true\"\n #modal\n>\n <ng-container c8y-modal-title>\n <span class=\"dlt-c8y-icon-installing-updates\"></span>\n </ng-container>\n\n <ng-container\n *ngIf=\"\n (orphanedPlugins$ | async).length > 0 || (newPlugins$ | async).length > 0;\n else updateProgress\n \"\n >\n <p\n class=\"text-center text-break-word p-24 text-14\"\n translate\n >\n Updating this blueprint will change the default plugins. Review the plugin changes before\n proceeding.\n </p>\n <c8y-list-group *ngIf=\"(orphanedPlugins$ | async).length > 0\">\n <c8y-li [collapsed]=\"true\">\n <c8y-li-icon>\n <span class=\"badge badge-danger\">{{ (orphanedPlugins$ | async).length }}</span>\n </c8y-li-icon>\n <c8y-li-body>\n <div translate>Orphaned plugins</div>\n </c8y-li-body>\n <c8y-li-footer translate>\n Some plugins are not contained in the new version of this blueprint and will therefore get\n removed.\n </c8y-li-footer>\n <c8y-li-collapse>\n <c8y-plugin-list\n class=\"m-t-16\"\n [emptyListText]=\"'No plugins available' | translate\"\n [plugins$]=\"orphanedPlugins$\"\n [selectable]=\"false\"\n [hideSource]=\"true\"\n ></c8y-plugin-list>\n </c8y-li-collapse>\n </c8y-li>\n </c8y-list-group>\n\n <c8y-list-group *ngIf=\"(newPlugins$ | async).length > 0\">\n <c8y-li [collapsed]=\"false\">\n <c8y-li-icon>\n <span class=\"badge badge-success\">{{ (newPlugins$ | async).length }}</span>\n </c8y-li-icon>\n <c8y-li-body>\n <div translate>New plugins added</div>\n </c8y-li-body>\n <c8y-li-footer translate>\n This blueprint will add new plugins. Please choose which you want to install.\n </c8y-li-footer>\n <c8y-li-collapse>\n <c8y-plugin-list\n class=\"m-t-16\"\n [emptyListText]=\"'No plugins available' | translate\"\n [plugins$]=\"newPlugins$\"\n [selectable]=\"true\"\n [hideSource]=\"false\"\n ></c8y-plugin-list>\n </c8y-li-collapse>\n </c8y-li>\n </c8y-list-group>\n </ng-container>\n\n <ng-container c8y-modal-footer-custom>\n <div\n class=\"modal-footer\"\n *ngIf=\"\n (orphanedPlugins$ | async).length > 0 || (newPlugins$ | async).length > 0;\n else updateProgressButtons\n \"\n >\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Close' | translate }}\"\n (click)=\"close()\"\n [disabled]=\"isUpdateOngoing\"\n >\n {{ 'Close' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Continue' | translate }}\"\n (click)=\"updateApplication()\"\n *ngIf=\"(orphanedPlugins$ | async).length > 0 || (newPlugins$ | async).length > 0\"\n [disabled]=\"isUpdateOngoing\"\n >\n {{ 'Continue' | translate }}\n </button>\n </div>\n </ng-container>\n\n <ng-template #updateProgressButtons>\n <ng-container c8y-modal-footer-custom>\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Close' | translate }}\"\n (click)=\"done()\"\n [disabled]=\"isUpdateOngoing\"\n >\n {{ 'Close' | translate }}\n </button>\n </div>\n </ng-container>\n </ng-template>\n\n <ng-template #updateProgress>\n <c8y-loading\n class=\"text-center d-block p-t-56 p-b-56 m-t-4 m-b-4\"\n style=\"min-height: 180px\"\n layout=\"application\"\n *ngIf=\"isUpdateOngoing\"\n [message]=\"'Updating…' | translate\"\n ></c8y-loading>\n\n <c8y-operation-result\n type=\"success\"\n *ngIf=\"!isUpdateOngoing && !updateFailure\"\n text=\"{{ 'Update completed' | translate }}\"\n [size]=\"120\"\n [vertical]=\"true\"\n ></c8y-operation-result>\n <c8y-operation-result\n type=\"error\"\n *ngIf=\"!isUpdateOngoing && updateFailure\"\n text=\"{{ 'Failed to update application.' | translate }}\"\n [size]=\"120\"\n [vertical]=\"true\"\n ></c8y-operation-result>\n </ng-template>\n</c8y-modal>\n","import { Component, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport {\n ApplicationService,\n ApplicationType,\n BillingMode,\n IApplication,\n IManagedObject,\n InventoryService,\n Isolation\n} from '@c8y/client';\nimport {\n AlertService,\n GainsightService,\n ModalService,\n Permissions,\n PropertiesListItem,\n ViewContext,\n gettext\n} from '@c8y/ngx-components';\nimport {\n ApplicationState,\n EcosystemService,\n PRODUCT_EXPERIENCE_ECOSYSTEM,\n packageProperties\n} from '@c8y/ngx-components/ecosystem/shared';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { SubscriptionModalComponent } from './subscription-modal/subscription-modal.component';\nimport { UpdateApplicationModalComponent } from './update-application-modal/update-application-modal.component';\n\nconst MICROSERVICES_BASE_PATH = '/ecosystem/microservice/microservices';\nconst APPLICATIONS_BASE_PATH = '/ecosystem/application/applications';\n\n@Component({\n selector: 'c8y-application-properties',\n templateUrl: './application-properties.component.html',\n standalone: false\n})\nexport class ApplicationPropertiesComponent implements OnInit {\n CURRENT_LOCATION = location.href;\n formGroup: FormGroup;\n application: IApplication;\n binaryMo: IManagedObject;\n singleTenant = false;\n subscription = false;\n canOpenInBrowser: boolean;\n disableOpenInBrowser: boolean;\n canDelete: boolean;\n isOwner: boolean;\n isSubscribed: boolean;\n isPackage: boolean;\n isMicroservice: boolean;\n isFeature: boolean;\n isExternal: boolean;\n isUnpacked: boolean;\n iconMap = {\n HOSTED: 'cloud',\n EXTERNAL: 'external-link-square',\n MICROSERVICE: 'microchip'\n };\n appState: ApplicationState;\n sourcePackage: IApplication;\n isLoading = true;\n isActivityLogSupported: boolean;\n isCustomMicroservice: boolean;\n hasAdminPermissions = false;\n noDescriptionLabel = gettext('No description available.');\n\n breadcrumbConfig: { icon: string; label: string; path: string };\n packageProperties: PropertiesListItem[] = [...packageProperties];\n isUpdateAvailable = false;\n\n private blueprintApplicationVersion: string;\n\n constructor(\n private activatedRoute: ActivatedRoute,\n private ecosystemService: EcosystemService,\n private router: Router,\n private formBuilder: FormBuilder,\n private applicationService: ApplicationService,\n private alertService: AlertService,\n private inventoryService: InventoryService,\n private permissions: Permissions,\n private modalService: ModalService,\n private translate: TranslateService,\n private bsModalService: BsModalService,\n private gainsightService: GainsightService\n ) {}\n\n async ngOnInit() {\n this.hasAdminPermissions = this.permissions.hasRole(\n Permissions.ROLE_APPLICATION_MANAGEMENT_ADMIN\n );\n await this.refresh();\n }\n\n async refresh() {\n await this.load();\n this.isUnpacked = this.ecosystemService.isUnpacked(this.application);\n this.isPackage = this.ecosystemService.isPackage(this.application);\n this.isFeature = this.ecosystemService.isFeature(this.application);\n this.isExternal = this.ecosystemService.isExternal(this.application);\n this.isMicroservice = this.ecosystemService.isMicroservice(this.application);\n this.appState = this.ecosystemService.getAppState(this.application);\n\n if (this.isUnpacked) {\n await this.resolveSourcePackageDetails();\n }\n\n this.setBreadcrumbConfig();\n\n if (this.isCustomMicroservice) {\n this.loadBinaryMo();\n }\n }\n\n async load() {\n this.isLoading = true;\n this.initForm();\n await this.loadApplication();\n this.isLoading = false;\n }\n\n onApplication(app: IApplication) {\n if (app.manifest) {\n this.singleTenant = app.manifest.isolation === Isolation.PER_TENANT;\n this.subscription = app.manifest.billingMode === BillingMode.SUBSCRIPTION;\n }\n }\n\n cancel() {\n if (this.application.type === ApplicationType.MICROSERVICE) {\n this.router.navigateByUrl(MICROSERVICES_BASE_PATH);\n } else {\n this.router.navigateByUrl(APPLICATIONS_BASE_PATH);\n }\n }\n\n openApp(app) {\n this.ecosystemService.openApp(app);\n }\n\n getPackage(entityOrId: string | number | IApplication) {\n return this.applicationService.detail(entityOrId);\n }\n\n async delete() {\n try {\n await this.ecosystemService.deleteApp(this.application);\n if (this.application.type === ApplicationType.MICROSERVICE) {\n this.router.navigateByUrl(MICROSERVICES_BASE_PATH);\n } else {\n this.router.navigateByUrl(APPLICATIONS_BASE_PATH);\n }\n } catch (ex) {\n if (ex) {\n this.alertService.addServerFailure(ex);\n }\n }\n }\n\n async subscribe() {\n const initialState = { application: this.application, isSubscribed: false };\n await this.confirmSubscriptionChange(initialState);\n this.loadApplication();\n }\n\n async unsubscribe() {\n const initialState = { application: this.application, isSubscribed: true };\n await this.confirmSubscriptionChange(initialState);\n this.loadApplication();\n }\n\n async loadApplication() {\n const { id } = this.activatedRoute.snapshot.parent.data.contextData;\n this.application = await this.ecosystemService.getApplication(id);\n if (this.application.type === ApplicationType.MICROSERVICE) {\n this.formGroup.get('name').disable();\n }\n\n const updatedApplication = {\n ...this.application,\n description: this.getDescription(this.application),\n icon: this.application.config?.icon?.class || this.application.manifest?.icon?.class\n };\n\n this.formGroup.patchValue(updatedApplication);\n this.canOpenInBrowser = this.ecosystemService.canOpenAppInBrowser(this.application);\n this.disableOpenInBrowser =\n this.canOpenInBrowser &&\n (await this.ecosystemService.isOverwrittenByCustomApp(this.application));\n this.canDelete = await this.ecosystemService.canDeleteApp(this.application);\n this.isOwner = this.ecosystemService.isOwner(this.application);\n this.isActivityLogSupported = this.isActivityLogSupportedByApp(this.application);\n this.isCustomMicroservice = this.ecosystemService.isCustomMicroservice(this.application);\n this.isSubscribed = await this.ecosystemService.checkIfSubscribed(this.application);\n this.onApplication(this.application);\n }\n\n async save(app: IApplication) {\n const icon = this.formGroup.controls['icon'].value;\n const name = this.formGroup.controls['name'].value;\n if (icon) {\n app = {\n ...app,\n config: { ...this.application.config, icon: { class: icon }, appTitle: name }\n };\n } else if (this.application.config) {\n app = {\n ...app,\n config: { ...this.application.config, appTitle: name }\n };\n }\n app.id = this.application.id;\n try {\n const { data } = await this.ecosystemService.updateApp(app);\n this.formGroup.reset();\n this.loadApplication();\n if (data) {\n this.alertService.success(gettext('Application saved.'));\n }\n } catch (ex) {\n // do nothing\n }\n }\n\n onNewArchive() {\n this.loadBinaryMo();\n }\n\n async updateToLatestVersion() {\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.APPLICATION_PROPERTIES,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.APPLICATION_PROPERTIES,\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.UPDATE_AVAILABLE,\n url: this.CURRENT_LOCATION\n }\n );\n\n try {\n const translatedBody = this.translate.instant(\n gettext(\n `You're using the version {{ currentVersion }} of the {{ packageName }} package, the latest version available is {{ latestVersion }}, do you want to update? You can always revert to a previous version in the Activity log panel.`\n ),\n {\n currentVersion: this.application.manifest?.version,\n latestVersion: this.blueprintApplicationVersion,\n packageName: this.sourcePackage.name\n }\n );\n await this.modalService.confirm(gettext('Update application'), translatedBody, 'warning', {\n ok: gettext('Update'),\n cancel: gettext('Cancel')\n });\n } catch {\n // modal canceled\n return;\n }\n\n try {\n await this.bsModalService.show<UpdateApplicationModalComponent>(\n UpdateApplicationModalComponent,\n {\n ariaDescribedby: 'modal-body',\n ariaLabelledBy: 'modal-title',\n class: 'modal-sm',\n ignoreBackdropClick: true,\n initialState: {\n sourcePackage: this.sourcePackage,\n application: this.application\n }\n }\n ).content.result;\n } catch {\n // modal canceled\n return;\n }\n\n await this.refresh();\n this.alertService.success(gettext('Application updated.'));\n }\n\n private getDescription(application: IApplication): string | undefined {\n if (!application) {\n return;\n }\n return application.description || application.manifest?.description;\n }\n\n private async confirmSubscriptionChange(initialState: {\n application: IApplication;\n isSubscribed: boolean;\n }) {\n await (\n this.bsModalService.show(SubscriptionModalComponent, {\n class: 'modal-sm',\n ariaDescribedby: 'modal-body',\n ariaLabelledBy: 'modal-title',\n initialState,\n ignoreBackdropClick: true\n }).content as SubscriptionModalComponent\n ).result;\n }\n\n private async resolveSourcePackageDetails() {\n try {\n this.sourcePackage = (await this.getPackage(this.application.manifest?.source)).data;\n if (this.sourcePackage) {\n this.packageProperties.push({\n label: gettext('Source package'),\n value: this.sourcePackage.name,\n type: 'link',\n action: () =>\n this.router.navigateByUrl(\n ViewContext.Extension.replace(':id', this.sourcePackage.id.toString())\n )\n });\n }\n } catch {\n this.alertService.warning(gettext('Unable to resolve source package.'));\n return;\n }\n\n await this.extractVersionInformation(this.application);\n }\n\n private initForm(): void {\n this.formGroup = this.formBuilder.group({\n id: [{ value: '' }],\n name: [Validators.required, Validators.maxLength(120)],\n key: [Validators.required, Validators.maxLength(120)],\n contextPath: [Validators.required, Validators.maxLength(120)],\n description: ['', Validators.maxLength(200)],\n username: [Validators.required],\n password: [Validators.required],\n externalUrl: [Validators.required],\n icon: [undefined, [Validators.minLength(1)]]\n });\n if (!this.hasAdminPermissions) {\n this.formGroup.disable();\n }\n }\n\n private isActivityLogSupportedByApp(app: IApplication): boolean {\n return (\n this.ecosystemService.isOwner(app) &&\n app.type !== ApplicationType.MICROSERVICE &&\n app.type !== ApplicationType.EXTERNAL\n );\n }\n\n private setBreadcrumbConfig() {\n this.breadcrumbConfig = {\n icon: this.isMicroservice ? 'microchip' : this.isFeature ? 'tab' : 'c8y-modules',\n label: this.isMicroservice\n ? gettext('Microservices')\n : this.isFeature\n ? gettext('Features')\n : gettext('Applications'),\n path: this.isMicroservice\n ? '/ecosystem/microservice/microservices'\n : this.isFeature\n ? 'ecosystem/application/features'\n : 'ecosystem/application/applications'\n };\n }\n\n private async loadBinaryMo() {\n this.binaryMo = (await this.inventoryService.detail(this.application.activeVersionId)).data;\n }\n\n private async extractVersionInformation(application: IApplication) {\n if (!application.manifest.isPackage && !application.manifest.source) {\n return;\n }\n\n const blueprintApplicationId = application.manifest?.source;\n const currentVersion = application.manifest?.version;\n\n try {\n const { data: blueprintApplicationVersions } =\n await this.applicationService.listVersions(blueprintApplicationId);\n const blueprintLatestVersion = this.ecosystemService.getApplicationVersionObjectByTag(\n blueprintApplicationVersions,\n 'latest'\n );\n this.blueprintApplicationVersion = blueprintLatestVersion.version;\n this.isUpdateAvailable = this.ecosystemService.shouldUpgradePackage(\n currentVersion,\n blueprintLatestVersion\n );\n } catch {\n this.alertService.warning(gettext('Unable to resolve versions of source package.'));\n }\n }\n}\n","<c8y-title>{{ application | humanizeAppName | async }}</c8y-title>\n\n<c8y-breadcrumb *ngIf=\"!isMicroservice\">\n <c8y-breadcrumb-item\n [icon]=\"'c8y-atom'\"\n [label]=\"'Ecosystem' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-modules'\"\n [label]=\"'Applications' | translate\"\n [path]=\"'ecosystem/application/applications'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"breadcrumbConfig?.icon\"\n *ngIf=\"isFeature\"\n [label]=\"breadcrumbConfig?.label\"\n [path]=\"breadcrumbConfig?.path\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"application | humanizeAppName | async\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Properties' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-breadcrumb *ngIf=\"isMicroservice\">\n <c8y-breadcrumb-item\n [icon]=\"'c8y-atom'\"\n [label]=\"'Ecosystem' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"breadcrumbConfig?.icon\"\n [label]=\"breadcrumbConfig?.label\"\n [path]=\"breadcrumbConfig?.path\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"application | humanizeAppName | async\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Properties' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<div class=\"row\">\n <div [ngClass]=\"{ 'col-md-8': !isActivityLogSupported, 'col-md-12': isActivityLogSupported }\">\n <div\n class=\"card content-fullpage\"\n *ngIf=\"application\"\n [ngClass]=\"{ 'd-grid grid__col--7-5--md': isActivityLogSupported }\"\n >\n <form\n class=\"d-flex d-col content-fullpage\"\n (ngSubmit)=\"formGroup.valid && save(formGroup.value)\"\n [formGroup]=\"formGroup\"\n novalidate\n >\n <div\n class=\"d-contents\"\n *ngIf=\"!isLoading\"\n >\n <div class=\"card-block separator-bottom large-padding flex-no-shrink\">\n <div class=\"d-flex-md a-i-start text-center text-left-md\">\n <c8y-app-icon\n class=\"icon-48\"\n *ngIf=\"!isPackage && !isFeature && !isMicroservice && !isExternal\"\n [app]=\"application\"\n [contextPath]=\"application.contextPath\"\n [name]=\"application.name\"\n ></c8y-app-icon>\n <i\n class=\"icon-48\"\n c8yIcon=\"big-parcel\"\n *ngIf=\"isPackage\"\n ></i>\n <i\n class=\"icon-48\"\n c8yIcon=\"tab\"\n *ngIf=\"isFeature\"\n ></i>\n <i\n class=\"icon-48\"\n c8yIcon=\"microchip\"\n *ngIf=\"isMicroservice\"\n ></i>\n <i\n class=\"icon-48\"\n c8yIcon=\"globe1\"\n *ngIf=\"isExternal\"\n ></i>\n\n <div class=\"p-t-md-16 p-l-md-16 p-r-md-32 flex-grow\">\n <p class=\"h4 text-medium m-b-8\">{{ application | humanizeAppName | async }}</p>\n <p *ngIf=\"!isOwner\">\n <em class=\"text-muted\">\n {{\n formGroup?.controls?.description?.value || (noDescriptionLabel | translate)\n }}\n </em>\n </p>\n <div\n class=\"form-group m-b-0\"\n *ngIf=\"isOwner\"\n >\n <label\n class=\"editable\"\n [ngClass]=\"{ updated: formGroup?.controls?.description?.dirty }\"\n >\n <textarea\n class=\"form-control no-resize\"\n placeholder=\"{{ noDescriptionLabel | translate }}\"\n name=\"description\"\n c8y-textarea-autoresize\n formControlName=\"description\"\n ></textarea>\n </label>\n </div>\n </div>\n <div class=\"text-right-md m-t-4\">\n <span\n class=\"label\"\n [ngClass]=\"appState?.class\"\n >\n {{ appState?.label | translate }}\n </span>\n <div\n class=\"fit-w m-t-2\"\n *ngIf=\"application.manifest?.version\"\n data-cy=\"application-detail--version\"\n >\n <label\n class=\"text-label-small\"\n translate\n >\n Version:\n </label>\n <small class=\"p-l-4 text-bold\">{{ application.manifest?.version }}</small>\n </div>\n <div\n class=\"fit-w m-t-2\"\n *ngIf=\"!isUnpacked\"\n >\n <label\n class=\"text-label-small\"\n translate\n >\n Creation time:\n </label>\n <small class=\"p-l-4 text-bold\">\n {{ (binaryMo?.creationTime | c8yDate) || '---' }}\n </small>\n </div>\n <div class=\"m-t-8\">\n <button\n class=\"btn btn-default btn-sm\"\n [attr.aria-label]=\"\n 'There\\'s a newer version available, click to update' | translate\n \"\n tooltip=\"{{\n 'There\\'s a newer version available, click to update' | translate\n }}\"\n placement=\"top\"\n type=\"button\"\n *ngIf=\"isUpdateAvailable\"\n (click)=\"updateToLatestVersion()\"\n [delay]=\"300\"\n >\n <i [c8yIcon]=\"'installing-updates'\"></i>\n {{ 'Update available' | translate }}\n </button>\n <button\n class=\"btn btn-default btn-sm\"\n title=\"{{ 'Open' | translate }}\"\n type=\"button\"\n (click)=\"openApp(application)\"\n [disabled]=\"disableOpenInBrowser\"\n *ngIf=\"canOpenInBrowser\"\n >\n <i [c8yIcon]=\"'external-link'\"></i>\n {{ 'Open' | translate }}\n </button>\n <div *ngIf=\"canOpenInBrowser && disableOpenInBrowser\">\n <small\n class=\"text-muted\"\n translate\n >\n The application is overwritten by a custom application sharing the same path\n </small>\n </div>\n <span *ngIf=\"isCustomMicroservice\">\n <button\n class=\"btn btn-default btn-sm\"\n title=\"{{ 'Subscribe' | translate }}\"\n type=\"button\"\n (click)=\"subscribe()\"\n *ngIf=\"!isSubscribed\"\n >\n <i [c8yIcon]=\"'check-circle-o'\"></i>\n {{ 'Subscribe' | translate }}\n </button>\n <button\n class=\"btn btn-default btn-sm\"\n title=\"{{ 'Unsubscribe' | translate }}\"\n type=\"button\"\n (click)=\"unsubscribe()\"\n *ngIf=\"isSubscribed\"\n >\n <i [c8yIcon]=\"'minus-circle'\"></i>\n {{ 'Unsubscribe' | translate }}\n </button>\n </span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"inner-scroll bg-level-0 flex-grow\">\n <div class=\"card-block large-padding\">\n <div\n class=\"row p-16\"\n *ngIf=\"isPackage\"\n >\n <c8y-properties-list\n icon=\"info\"\n [title]=\"'Package details' | translate\"\n [data]=\"application.manifest\"\n [properties]=\"packageProperties\"\n [emptyLabel]=\"'---'\"\n ></c8y-properties-list>\n </div>\n <div\n class=\"row p-16\"\n *ngIf=\"sourcePackage\"\n >\n <c8y-properties-list\n icon=\"info\"\n [title]=\"'Source package information' | translate\"\n [data]=\"sourcePackage.manifest\"\n [properties]=\"packageProperties\"\n [emptyLabel]=\"'---'\"\n ></c8y-properties-list>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-5\">\n <c8y-form-group>\n <label for=\"appId\">ID</label>\n <input\n class=\"form-control\"\n id=\"appId\"\n name=\"id\"\n type=\"text\"\n autocomplete=\"off\"\n [readonly]=\"true\"\n formControlName=\"id\"\n />\n </c8y-form-group>\n </div>\n <div class=\"col-sm-7\">\n <c8y-form-group>\n <label>{{ 'Name' | translate }}</label>\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g. My application' | translate }}\"\n name=\"name\"\n type=\"text\"\n required\n [readonly]=\"!isOwner\"\n formControlName=\"name\"\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-sm-5\">\n <c8y-form-group>\n <label>{{ 'Application key' | translate }}</label>\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g. my-application-key' | translate }}\"\n name=\"key\"\n type=\"text\"\n required\n [readonly]=\"application.id || !isOwner\"\n formControlName=\"key\"\n />\n </c8y-form-group>\n </div>\n\n <div class=\"col-sm-7\" data-cy=\"application-detail--type\">\n <c8y-form-group>\n <label>{{ 'Type' | translate }}</label>\n <div>\n <div *ngIf=\"application.id\">\n <p class=\"form-control-static\">\n <i [c8yIcon]=\"iconMap[application.type]\"></i>\n <span>\n {{ application.type | translate }}\n </span>\n </p>\n </div>\n </div>\n </c8y-form-group>\n </div>\n </div>\n\n <div [ngSwitch]=\"application.type\">\n <div *ngSwitchCase=\"'HOSTED'\">\n <c8y-form-group>\n <label>{{ 'Path' | translate }}</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`used in URL`' | translate }}\"\n name=\"contextPath\"\n type=\"text\"\n required\n [readOnly]=\"application.id || !isOwner\"\n formControlName=\"contextPath\"\n />\n </div>\n </c8y-form-group>\n </div>\n\n <div *ngSwitchCase=\"'MICROSERVICE'\">\n <c8y-form-group>\n <label>{{ 'Path' | translate }}</label>\n <div class=\"input-group\">\n <span class=\"input-group-addon\">/service/</span>\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g. my-microservice`used in URL`' | translate }}\"\n name=\"contextPath\"\n type=\"text\"\n required\n [readOnly]=\"application.id || !isOwner\"\n formControlName=\"contextPath\"\n />\n </div>\n </c8y-form-group>\n <div class=\"row\">\n <div\n class=\"col-sm-4 m-b-16 flex-auto\"\n *ngIf=\"application.manifest.version\"\n data-cy=\"application-detail--version\"\n >\n <label>{{ 'Version' | translate }}</label>\n <p class=\"form-control-static\">\n {{ application.manifest.version }}\n </p>\n </div>\n <div\n class=\"col-sm-4 m-b-16 flex-auto\"\n *ngIf=\"application.manifest.isolation\"\n data-cy=\"application-detail--isolation\"\n >\n <label>{{ 'Isolation' | translate }}</label>\n <p class=\"form-control-static\">\n <span *ngIf=\"singleTenant\">\n <i\n class=\"c8y-icon-duocolor h4\"\n [c8yIcon]=\"'c8y-enterprise'\"\n ></i>\n {{ 'Single tenant' | translate }}\n </span>\n <span *ngIf=\"!singleTenant\">\n <i\n class=\"c8y-icon-duocolor icon-32\"\n [c8yIcon]=\"'c8y-sub-tenants'\"\n ></i>\n {{ 'Multi tenant' | translate }}\n </span>\n </p>\n </div>\n <div\n class=\"col-sm-4 m-b-16 flex-auto\"\n *ngIf=\"application.manifest.isolation\"\n data-cy=\"application-detail--billing-mode\"\n >\n <label>{{ 'Billing mode' | translate }}</label>\n <p class=\"form-control-static\">\n <span\n [tooltip]=\"'Resources usage assigned to: Owner' | translate\"\n *ngIf=\"subscription\"\n >\n {{ 'Subscription' | translate }}\n </span>\n <span\n [tooltip]=\"'Resources usage assigned to: Subscriber | translate'\"\n *ngIf=\"!subscription && singleTenant\"\n >\n {{ 'Resources' | translate }}\n </span>\n <span\n [tooltip]=\"'Resources usage assigned to: Owner' | translate\"\n *ngIf=\"!subscription && !singleTenant\"\n >\n {{ 'Resources' | translate }}\n </span>\n </p>\n </div>\n </div>\n\n <div\n class=\"legend form-block m-t-40\"\n *ngIf=\"application.manifest.provider\"\n >\n {{ 'Provider' | translate }}\n </div>\n <div\n class=\"list-inline\"\n *ngIf=\"application.manifest.provider\"\n data-cy=\"application-detail--provider\"\n >\n <div *ngIf=\"application.manifest.provider.name\">\n <div class=\"col-sm-4 m-b-16\">\n <label>{{ 'Name' | translate }}</label>\n <p class=\"form-control-static\">\n {{ application.manifest.provider.name }}\n </p>\n </div>\n </div>\n <div *ngIf=\"application.manifest.provider.domain\">\n <div class=\"col-sm-4 m-b-16\">\n <label>{{ 'Domain' | translate }}</label>\n <p class=\"form-control-static\">\n {{ application.manifest.provider.domain }}\n </p>\n </div>\n </div>\n <div *ngIf=\"application.manifest.provider.support\">\n <div class=\"col-sm-4 m-b-16\">\n <label>{{ 'Support' | translate }}</label>\n <p class=\"form-control-static\">\n {{ application.manifest.provider.support }}\n </p>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'EXTERNAL'\">\n <c8y-form-group>\n <label>{{ 'External URL' | translate }}</label>\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} http://www.example.com/\"\n name=\"externalUrl\"\n type=\"url\"\n required\n [pattern]=\"'^(?!javascript:).+'\"\n [readOnly]=\"!isOwner\"\n formControlName=\"externalUrl\"\n />\n <c8y-messages>\n <c8y-message\n [name]=\"'pattern'\"\n [text]=\"'Valid URL required.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n\n <div *ngIf=\"isOwner && !isCustomMicroservice\">\n <label>{{ 'Select icon' | translate }}</label>\n <c8y-icon-selector-wrapper\n name=\"icon\"\n formControlName=\"icon\"\n ></c8y-icon-selector-wrapper>\n </div>\n </div>\n </div>\n </div>\n <ng-container *ngIf=\"isCustomMicroservice\">\n <div\n class=\"d-contents\"\n *ngIf=\"!isLoading\"\n >\n <c8y-upload-archive\n [(application)]=\"application\"\n (refresh)=\"onNewArchive()\"\n ></c8y-upload-archive>\n </div>\n </ng-container>\n <div\n class=\"card-footer separator\"\n *ngIf=\"application && !!isOwner && hasAdminPermissions\"\n >\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n (click)=\"cancel()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-danger\"\n title=\"{{ 'Delete' | translate }}\"\n type=\"button\"\n (click)=\"delete()\"\n *ngIf=\"canDelete\"\n >\n {{ 'Delete' | translate }}\n </button>\n <button\n class=\"btn btn-primary btn-form\"\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n [disabled]=\"!application.type || formGroup.invalid || formGroup.pristine\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </form>\n\n <div\n class=\"content-fullpage d-flex d-col bg-level-1\"\n *ngIf=\"isActivityLogSupported\"\n >\n <div class=\"card-header separator\">\n <div\n class=\"card-title\"\n translate\n >\n Activity log\n </div>\n <div class=\"m-l-auto\">\n <button\n class=\"btn btn-link btn-sm\"\n title=\"{{ 'Reload' | translate }}\"\n type=\"button\"\n (click)=\"load()\"\n >\n <i\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': isLoading }\"\n ></i>\n {{ 'Reload' | translate }}\n </button>\n </div>\n </div>\n <div\n class=\"p-16 text-center\"\n *ngIf=\"isLoading\"\n >\n <c8y-loading></c8y-loading>\n </div>\n <c8y-activity-log\n class=\"d-contents\"\n *ngIf=\"!isLoading\"\n [hasAdminPermissions]=\"hasAdminPermissions\"\n [application]=\"application\"\n ></c8y-activity-log>\n </div>\n </div>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot } from '@angular/router';\nimport { EcosystemService } from '@c8y/ngx-components/ecosystem/shared';\n\n@Injectable()\nexport class ApplicationPropertiesGuard {\n constructor(private ecosystemService: EcosystemService) {}\n\n canActivate(route: ActivatedRouteSnapshot) {\n const app = route.data.contextData || route.parent.data.contextData;\n if (!app) {\n return false;\n }\n return !this.ecosystemService.isPackage(app);\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { ApplicationService, ApplicationType, IApplication, IManifest } from '@c8y/client';\nimport { AlertService, WizardComponent } from '@c8y/ngx-components';\n\n@Component({\n selector: 'c8y-add-external-application',\n templateUrl: './add-external-application.component.html',\n standalone: false\n})\nexport class AddExternalApplicationComponent implements OnInit {\n formGroup: FormGroup;\n createdApp: IApplication;\n\n constructor(\n private applicationService: ApplicationService,\n private formBuilder: FormBuilder,\n private alertService: AlertService,\n private wizardComponent: WizardComponent\n ) {}\n\n ngOnInit() {\n this.initForm();\n }\n\n back() {\n this.wizardComponent.reset();\n }\n\n cancel() {\n this.wizardComponent.close();\n }\n\n done() {\n this.wizardComponent.close();\n }\n\n async save(app: IApplication) {\n const appToSave = {\n manifest: {} as IManifest,\n externalUrl: app.externalUrl,\n type: ApplicationType.EXTERNAL,\n name: app.name,\n key: app.key\n };\n try {\n this.createdApp = await this.applicationService.create(appToSave);\n } catch (ex) {\n this.alertService.addServerFailure(ex);\n }\n }\n\n private initForm(): void {\n this.formGroup = this.formBuilder.group({\n name: ['', [Validators.required, Validators.maxLength(120)]],\n key: ['', [Validators.required, Validators.maxLength(120)]],\n externalUrl: ['', Validators.required]\n });\n }\n}\n","<form *ngIf=\"!createdApp; else appCreated\" [formGroup]=\"formGroup\" novalidate>\n <c8y-wizard-header>\n <i [c8yIcon]=\"'cloud-link'\"></i>\n <h4 translate id=\"modal-title\">Add external application</h4>\n </c8y-wizard-header>\n\n <c8y-wizard-body>\n <p class=\"p-16 text-medium text-center bg-level-0 separator-bottom sticky-top\">\n {{ 'Provide external application details' | translate }}\n </p>\n <div class=\"modal-body p-t-8\" id=\"modal-body\">\n <c8y-form-group>\n <label style=\"text-align: left\">{{ 'Name' | translate }}</label>\n <input\n class=\"form-control\"\n formControlName=\"name\"\n name=\"name\"\n placeholder=\"{{ 'e.g. My application' | translate }}\"\n required\n type=\"text\"\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label style=\"text-align: left\">{{ 'Application key' | translate }}</label>\n <input\n class=\"form-control\"\n formControlName=\"key\"\n name=\"key\"\n placeholder=\"{{ 'e.g. my-external-application-key' | translate }}\"\n required\n type=\"text\"\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label style=\"text-align: left\">{{ 'External URL' | translate }}</label>\n <input\n [pattern]=\"'^(?!javascript:).+'\"\n class=\"form-control\"\n formControlName=\"externalUrl\"\n name=\"externalUrl\"\n placeholder=\"{{ 'e.g.' | translate }} https://www.example.com\"\n required\n type=\"url\"\n />\n </c8y-form-group>\n </div>\n </c8y-wizard-body>\n\n <c8y-wizard-footer>\n <button\n (click)=\"back()\"\n class=\"btn btn-default\"\n title=\"{{ 'Back' | translate }}\"\n translate\n type=\"button\"\n >\n Back\n </button>\n <button (click)=\"cancel()\" class=\"btn btn-default\" title=\"{{ 'Cancel' | translate }}\" translate>\n Cancel\n </button>\n <button\n (click)=\"save(formGroup.value)\"\n [disabled]=\"formGroup.invalid || formGroup.pristine\"\n class=\"btn btn-primary btn-form\"\n title=\"{{ 'Add application' | translate }}\"\n type=\"button\"\n >\n {{ 'Add application' | translate }}\n </button>\n </c8y-wizard-footer>\n</form>\n<ng-template #appCreated>\n <c8y-wizard-body>\n <div class=\"d-flex d-col j-c-center a-i-center\" style=\"min-height: 324px\">\n <c8y-operation-result\n text=\"{{ 'Application created' | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"success\"\n class=\"lead\"\n ></c8y-operation-result>\n </div>\n </c8y-wizard-body>\n <c8y-wizard-footer>\n <button (click)=\"done()\" class=\"btn btn-default\" title=\"{{ 'Done' | translate }}\" translate>\n Done\n </button>\n <a\n (click)=\"$event.stopPropagation()\"\n [href]=\"formGroup.value.externalUrl\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n class=\"btn btn-primary\"\n title=\"{{ 'Open' | translate }}\"\n >\n <i c8yIcon=\"external-link\" class=\"m-r-4\"></i>\n {{ 'Open' | translate }}\n </a>\n </c8y-wizard-footer>\n</ng-template>\n","import { Component } from '@angular/core';\nimport { ApplicationType, IApplication } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components';\nimport { EcosystemService } from '@c8y/ngx-components/ecosystem/shared';\n\n@Component({\n selector: 'c8y-add-web-application',\n template: `<c8y-add-application\n [headerIcon]=\"'upload'\"\n [headerText]=\"headerText\"\n [successText]=\"successText\"\n [createApplicationHandler]=\"createApplicationHandler\"\n [uploadApplicationHandler]=\"uploadApplicationHandler\"\n [canGoBack]=\"true\"\n ></c8y-add-application>`,\n standalone: false\n})\nexport class AddWebApplicationComponent {\n headerText: string = gettext('Upload web application');\n successText: string = gettext('Application created');\n\n constructor(private ecosystemService: EcosystemService) {}\n\n createApplicationHandler = (f: File) => this.createApplication(f);\n uploadApplicationHandler = (f: File, app: IApplication) => this.uploadApplication(f, app);\n\n async createApplication(file: File): Promise<IApplication> {\n await this.ecosystemService.isValidAppType(file, ApplicationType.HOSTED);\n return this.ecosystemService.createAppForArchive(file);\n }\n\n async uploadApplication(file: File, app: IApplication): Promise<IApplication> {\n return this.ecosystemService.uploadArchiveToApp(file, app);\n }\n}\n","import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { IApplication } from '@c8y/client';\nimport { WizardConfig, WizardModalService } from '@c8y/ngx-components';\nimport { ModalOptions } from 'ngx-bootstrap/modal';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { shareReplay, switchMap, takeUntil, tap } from 'rxjs/operators';\nimport {\n EcosystemService,\n EcosystemWizards,\n defaultPackageAvailabilities,\n FilterPipe,\n ListFiltersComponent,\n FilterableAppOrPlugin\n} from '@c8y/ngx-components/ecosystem/shared';\n\n@Component({\n selector: 'c8y-application-list',\n templateUrl: './application-list.component.html',\n standalone: false\n})\nexport class ApplicationListComponent implements OnInit, OnDestroy {\n reloading = false;\n reload$: BehaviorSubject<void> = new BehaviorSubject(null);\n\n apps$: Observable<IApplication[]> = this.reload$.pipe(\n tap(() => (this.reloading = true)),\n switchMap(() => this.ecosystemService.getWebApplications()),\n tap(apps => {\n apps.forEach(app => {\n app.filterProps = this.ecosystemService.getAppFilterProps(app);\n });\n }),\n tap(() => (this.reloading = false)),\n shareReplay()\n );\n filteredApps$: Observable<FilterableAppOrPlugin[]>;\n listClass: string;\n packageAvailabilities = defaultPackageAvailabilities;\n @ViewChild(ListFiltersComponent) filtersComponent: ListFiltersComponent;\n private destroy$ = new Subject<void>();\n\n constructor(\n private ecosystemService: EcosystemService,\n private wizardModalService: WizardModalService\n ) {}\n\n ngOnInit() {\n this.loadApplications();\n }\n\n loadApplications() {\n this.reload$.next();\n }\n\n addApplication() {\n const wizardConfig: WizardConfig = {\n headerText: 'Add Application',\n headerIcon: 'c8y-atom'\n };\n\n const initialState: Record<string, unknown> = {\n wizardConfig,\n id: EcosystemWizards.APPLICATION_UPLOAD\n };\n\n const modalOptions: ModalOptions = { initialState };\n\n const modalRef = this.wizardModalService.show(modalOptions);\n modalRef.content.onClose.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.loadApplications();\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n setFilterPipe(pipe: FilterPipe) {\n this.filteredApps$ = this.apps$.pipe(src => pipe(src));\n }\n\n resetFilters() {\n this.filtersComponent.resetAllFilters();\n }\n}\n","<c8y-title>{{ 'Applications' | translate }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-atom'\"\n [label]=\"'Ecosystem' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-modules'\"\n [label]=\"'Applications' | translate\"\n [path]=\"'ecosystem/application/applications'\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n *c8yIfAllowed=\"['ROLE_APPLICATION_MANAGEMENT_ADMIN']\"\n>\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Add application' | translate }}\"\n (click)=\"addApplication()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add application' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Reload' | translate }}\"\n (click)=\"loadApplications()\"\n >\n <i\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': reloading }\"\n ></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'left'\">\n <c8y-list-filters\n *ngIf=\"apps$ | async\"\n (filterPipeChange)=\"setFilterPipe($event)\"\n [packageAvailabilities]=\"packageAvailabilities\"\n ></c8y-list-filters>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'left'\"\n itemClass=\"navbar-form hidden-xs\"\n>\n <c8y-list-display-switch\n (onListClassChange)=\"listClass = $event\"\n [listLength]=\"(apps$ | async)?.length\"\n ></c8y-list-display-switch>\n</c8y-action-bar-item>\n\n<c8y-help src=\"/docs/standard-tenant/ecosystem/#managing-applications\"></c8y-help>\n\n<div\n class=\"c8y-empty-state text-center\"\n *ngIf=\"(apps$ | async)?.length === 0\"\n>\n <h1 class=\"c8y-icon c8y-icon-modules c8y-icon-duocolor\"></h1>\n <h3 translate>No applications to display.</h3>\n <p translate>Add your first application by clicking below.</p>\n <p>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Add application' | translate }}\"\n (click)=\"addApplication()\"\n >\n {{ 'Add application' | translate }}\n </button>\n </p>\n</div>\n\n<div\n class=\"card-group\"\n [ngClass]=\"listClass\"\n>\n <div\n class=\"page-sticky-header hidden-xs d-flex\"\n *ngIf=\"(apps$ | async)?.length > 0\"\n >\n <div class=\"card-block card-column-40\">\n <div class=\"card-appicon p-l-32 p-r-16 m-r-0 m-l-4\"></div>\n {{ 'Application' | translate }}\n </div>\n <div class=\"card-block p-0 card-column-80 m-r-40\">\n <div class=\"card-block card-column-80\">{{ 'Description' | translate }}</div>\n <div class=\"card-block card-column-20\">{{ 'Type' | translate }}</div>\n <div class=\"card-block card-column-20\"></div>\n </div>\n </div>\n <div\n class=\"col-xs-12 col-sm-4 col-md-3\"\n *ngFor=\"let app of filteredApps$ | async\"\n >\n <c8y-application-card\n class=\"d-contents\"\n (onAppDeleted)=\"loadApplications()\"\n (onAppCloned)=\"loadApplications()\"\n [app]=\"app\"\n ></c8y-application-card>\n </div>\n</div>\n\n<c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No matching applications.' | translate\"\n [subtitle]=\"'Refine your search terms and/or the filters' | translate\"\n *ngIf=\"(apps$ | async)?.length > 0 && (filteredApps$ | async)?.length === 0\"\n>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Reset filters' | translate }}\"\n type=\"button\"\n (click)=\"resetFilters()\"\n >\n {{ 'Reset filters' | translate }}\n </button>\n</c8y-ui-empty-state>\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { ApplicationService, IApplication, IApplicationVersion, IResultList } from '@c8y/client';\nimport { PluginsService, WizardComponent } from '@c8y/ngx-components';\nimport { BehaviorSubject, combineLatest, from, Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { EcosystemService, LicensedApplicationPlugin } from '@c8y/ngx-components/ecosystem/shared';\nimport { ApplicationPropertiesFormComponent } from '@c8y/ngx-components/ecosystem/shared';\n\n@Component({\n selector: 'c8y-install-from-package',\n templateUrl: './install-from-package.component.html',\n standalone: false\n})\nexport class InstallFromPackageComponent implements OnInit {\n newAppConfig: IApplication;\n selectedPackage: IApplication;\n packages: IApplication[];\n inProgress: boolean;\n deployedWithSuccess = false;\n isDeployed = false;\n\n model = {\n selected: undefined,\n binary: {\n id: undefined\n }\n };\n canDeploy = false;\n onInput: BehaviorSubject<string> = new BehaviorSubject<string>('');\n versions$: Observable<IResultList<IApplicationVersion>>;\n @ViewChild(ApplicationPropertiesFormComponent)\n applicationPropertiesForm: ApplicationPropertiesFormComponent;\n\n constructor(\n private ecosystemService: EcosystemService,\n private applicationService: ApplicationService,\n private wizardComponent: WizardComponent,\n private pluginsService: PluginsService\n ) {}\n\n async ngOnInit() {\n this.loadPackages();\n }\n\n back() {\n this.wizardComponent.reset();\n }\n\n clean() {\n this.selectedPackage = undefined;\n this.versions$ = undefined;\n this.model = {\n selected: undefined,\n binary: {\n id: undefined\n }\n };\n }\n\n cancel() {\n this.wizardComponent.close();\n }\n\n async deployApp() {\n this.inProgress = true;\n const formGroupValue = this.applicationPropertiesForm.formGroup.getRawValue();\n const { contextPath, license, name } = this.selectedPackage;\n const type = this.pluginsService.getPackageType(this.selectedPackage);\n const licensedApp: LicensedApplicationPlugin = {\n contextPath,\n license,\n name,\n type,\n version: this.model.selected.version\n };\n const isArchived = await this.ecosystemService.verifyArchived([licensedApp]);\n if (!isArchived) {\n this.cancel();\n return;\n }\n\n const licensesVerifiedByUser = await this.ecosystemService.verifyLicenses([licensedApp]);\n if (!licensesVerifiedByUser) {\n this.cancel();\n return;\n }\n\n // Verify if selected package version is compatible with current platform versions.\n this.selectedPackage.manifest.version = this.model.selected.version;\n const verifyVersionCompatibility =\n await this.ecosystemService.verifyBlueprintVersionsCompatibility(\n this.selectedPackage.manifest\n );\n\n if (!verifyVersionCompatibility) {\n this.cancel();\n return;\n }\n\n try {\n await this.ecosystemService.deployApp(this.selectedPackage, formGroupValue, this.model);\n this.deployedWithSuccess = true;\n } catch (error) {\n this.ecosystemService.alertError(error);\n } finally {\n this.markAsDeployed();\n }\n }\n\n onAppVersionSelect(appVersion: IApplicationVersion) {\n Object.assign(this.model, {\n selected: appVersion\n });\n this.canDeploy = true;\n }\n\n async selectPackage(selectedPackage: IApplication) {\n const apps = await this.ecosystemService.getHostedAndPackageApplications();\n this.newAppConfig = this.ecosystemService.getUniqueAppConfig(selectedPackage, apps);\n this.selectedPackage = selectedPackage;\n\n this.loadSelectedPackageVersions();\n }\n\n private loadSelectedPackageVersions() {\n this.versions$ = combineLatest([\n this.getAppVersions(this.selectPackage),\n this.onInput.asObservable()\n ]).pipe(\n map(([resultList, filterStr]) => {\n this.canDeploy = false;\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 }\n\n private getAppVersions(mo: IApplication) {\n const versions = mo?.applicationVersions;\n return versions && versions.length > 0\n ? of({ data: versions, res: undefined })\n : from(this.applicationService.listVersions(this.selectedPackage.id));\n }\n\n private setInitialValueForInput(versions: IApplicationVersion[]) {\n if (!this.model.selected && versions.length > 0) {\n const latest = versions.find(v => v.tags.includes('latest'));\n this.model.selected = latest || versions[0];\n this.canDeploy = true;\n }\n }\n\n private filterAppVersions(\n appVersions: IApplicationVersion[],\n filterStr: string\n ): IApplicationVersion[] {\n return filterStr === ''\n ? appVersions\n : appVersions.filter(appVersion => appVersion.version.includes(filterStr));\n }\n\n private markAsDeployed() {\n this.isDeployed = true;\n this.inProgress = false;\n }\n\n private async loadPackages(): Promise<void> {\n const applications = await this.ecosystemService.getPackageApplications();\n this.packages = applications.filter(app => this.ecosystemService.isPackageBlueprint(app));\n }\n}\n","<c8y-wizard-header>\n <i [c8yIcon]=\"'big-parcel'\"></i>\n <h4\n id=\"modal-title\"\n translate\n >\n Install from extension package\n </h4>\n</c8y-wizard-header>\n<c8y-wizard-body>\n <ng-container *ngIf=\"!selectedPackage\">\n <div\n class=\"modal-inner-scroll\"\n id=\"modal-body\"\n >\n <p class=\"p-16 text-medium text-center separator-bottom sticky-top bg-level-0\">\n {{ 'Select from available extension packages' | translate }}\n </p>\n\n <c8y-ui-empty-state\n [icon]=\"'big-parcel'\"\n [title]=\"'No extension packages to display.' | translate\"\n *ngIf=\"!packages?.length\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n\n <div\n class=\"c8y-wizard-list-nav\"\n style=\"min-height: 257px\"\n *ngIf=\"packages?.length\"\n >\n <button\n class=\"list-group-item text-truncate bg-component\"\n title=\"{{ package.name }}\"\n type=\"button\"\n *ngFor=\"let package of packages\"\n (click)=\"selectPackage(package)\"\n >\n <i\n class=\"list-group-icon\"\n c8yIcon=\"big-parcel\"\n ></i>\n <span [innerText]=\"package.name\"></span>\n </button>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!isDeployed && selectedPackage\">\n <p class=\"p-16 text-center text-medium separator-bottom sticky-top bg-level-0\">\n {{ 'Provide application details' | translate }}\n </p>\n <div\n class=\"d-flex d-col a-i-center j-c-center\"\n style=\"min-height: 257px\"\n >\n <c8y-application-properties-form\n class=\"d-block fit-w\"\n *ngIf=\"!inProgress\"\n [application]=\"newAppConfig\"\n ></c8y-application-properties-form>\n\n <ng-container *ngIf=\"!inProgress\">\n <div\n class=\"d-block fit-w bg-gray-white\"\n [ngStyle]=\"{ padding: '0 16px' }\"\n >\n <label\n for=\"packageVersion\"\n translate\n >\n Use extension package version\n </label>\n <c8y-form-group>\n <c8y-typeahead\n placeholder=\"{{ 'Select or enter' | translate }}\"\n name=\"packageVersion\"\n [(ngModel)]=\"model.selected\"\n (onSearch)=\"onInput.next($event)\"\n [displayProperty]=\"'version'\"\n [required]=\"true\"\n [hideNew]=\"true\"\n [container]=\"'body'\"\n >\n <c8y-li\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n *c8yFor=\"let version of versions$; loadMore: 'auto'; notFound: notFoundTemplate\"\n (click)=\"onAppVersionSelect(version)\"\n [active]=\"model.selected === version\"\n >\n <c8y-li-icon icon=\"big-parcel\"></c8y-li-icon>\n <span\n [ngStyle]=\"{\n display: 'flex',\n 'flex-direction': 'row',\n 'align-content': 'center',\n 'justify-content': 'space-between',\n 'align-items': 'center'\n }\"\n >\n <c8y-highlight\n [text]=\"version.version || '--'\"\n [pattern]=\"onInput | async\"\n ></c8y-highlight>\n\n <span>\n <span\n class=\"label label-info m-l-4\"\n *ngFor=\"let tag of version.tags\"\n >\n {{ tag }}\n </span>\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 </div>\n </ng-container>\n\n <c8y-loading\n class=\"text-center d-block\"\n [message]=\"'Installing…' | translate\"\n *ngIf=\"inProgress\"\n layout=\"application\"\n ></c8y-loading>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"isDeployed\">\n <div\n class=\"d-flex a-i-center j-c-center\"\n style=\"min-height: 257px\"\n *ngIf=\"deployedWithSuccess; else failedDeploy\"\n >\n <c8y-operation-result\n class=\"lead\"\n type=\"success\"\n text=\"{{ 'Application created' | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n ></c8y-operation-result>\n </div>\n <ng-template #failedDeploy>\n <div\n class=\"d-flex a-i-center j-c-center\"\n style=\"min-height: 257px\"\n >\n <c8y-operation-result\n class=\"lead\"\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</c8y-wizard-body>\n\n<c8y-wizard-footer>\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Back' | translate }}\"\n type=\"button\"\n *ngIf=\"!isDeployed\"\n (click)=\"selectedPackage ? clean() : back()\"\n [disabled]=\"inProgress\"\n >\n {{ 'Back' | translate }}\n </button>\n <button\n class=\"btn btn-default\"\n title=\"{{ isDeployed && deployedWithSuccess ? ('Close' | translate) : ('Cancel' | translate) }}\"\n type=\"button\"\n (click)=\"cancel()\"\n >\n {{ isDeployed && deployedWithSuccess ? ('Close' | translate) : ('Cancel' | translate) }}\n </button>\n\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Install' | translate }}\"\n type=\"button\"\n (click)=\"deployApp()\"\n [disabled]=\"inProgress || !packages?.length\"\n *ngIf=\"!isDeployed\"\n >\n {{ 'Install' | translate }}\n </button>\n</c8y-wizard-footer>\n","import { Injectable } from '@angular/core';\nimport { gettext, Tab, TabFactory } from '@c8y/ngx-components';\nimport { Router } from '@angular/router';\n\n@Injectable()\nexport class EcosystemTabs implements TabFactory {\n ecosystemTabs: Tab[] = [\n {\n icon: 'c8y-modules',\n priority: 1000,\n label: gettext('Applications'),\n path: 'ecosystem/application/applications'\n },\n {\n icon: 'tab',\n priority: 998,\n label: gettext('Features'),\n path: 'ecosystem/application/features'\n }\n ];\n\n constructor(public router: Router) {}\n\n get(): Tab[] {\n if (\n this.router.url === '/ecosystem/application/applications' ||\n this.router.url === '/ecosystem/application/features'\n ) {\n return this.ecosystemTabs;\n }\n return [];\n }\n}\n","import { Component } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { ApplicationPlugin, gettext } from '@c8y/ngx-components';\nimport { ListFiltersComponent } from '@c8y/ngx-components/ecosystem/shared';\n\n@Component({\n selector: 'c8y-only-latest-filter',\n templateUrl: './only-latest-filter.component.html',\n standalone: false\n})\nexport class OnlyLatestFilterComponent {\n onlyLatestFormControl: FormControl;\n private readonly filterLabel = gettext('Only latest versions');\n\n constructor(public filterComponent: ListFiltersComponent) {\n this.onlyLatestFormControl = new FormControl(true);\n (this.filterComponent.formGroup.controls.custom as FormGroup).addControl(\n this.filterLabel,\n this.onlyLatestFormControl\n );\n filterComponent.customFilters.set(\n this.filterLabel,\n (plugin: ApplicationPlugin, enabled: boolean) => {\n return !enabled || !!plugin.tags?.includes('latest');\n }\n );\n }\n}\n","<label class=\"c8y-switch\">\n <input\n type=\"checkbox\"\n checked=\"checked\"\n [formControl]=\"onlyLatestFormControl\"\n />\n <span></span>\n {{ 'Show only latest version of plugins' | translate }}\n</label>\n","import { Component, Input } from '@angular/core';\nimport { ApplicationPlugin, BottomDrawerRef, PluginsService } from '@c8y/ngx-components';\nimport {\n defaultPackageTypes,\n EcosystemService,\n FilterableAppOrPlugin,\n FilterPipe\n} from '@c8y/ngx-components/ecosystem/shared';\nimport { BehaviorSubject, map, Observable } from 'rxjs';\n\n@Component({\n selector: 'c8y-install-plugin',\n host: { class: 'd-contents' },\n templateUrl: './install-plugin.component.html',\n standalone: false\n})\nexport class InstallPluginComponent {\n @Input() plugins$: Observable<FilterableAppOrPlugin[]>;\n filteredPlugins$: Observable<FilterableAppOrPlugin[]> = new BehaviorSubject([]);\n selectedPlugins: ApplicationPlugin[] = [];\n packageTypes = defaultPackageTypes;\n result: Promise<ApplicationPlugin[]> = new Promise((resolve, reject) => {\n this._install = resolve;\n this._cancel = reject;\n });\n onlyLatestPluginVersion = true;\n selectedPlugin: ApplicationPlugin;\n pluginBaseUrl: string;\n pluginMarkdown: string;\n\n private _install;\n private _cancel;\n\n constructor(\n private bottomDrawerRef: BottomDrawerRef<InstallPluginComponent>,\n private ecosystemService: EcosystemService,\n private pluginsService: PluginsService\n ) {}\n\n setFilterPipe(filterPipe: FilterPipe) {\n this.filteredPlugins$ = this.plugins$.pipe(\n map(plugins =>\n plugins.map(plugin => {\n plugin.filterProps = this.ecosystemService.getAppFilterProps(plugin.originApp);\n return plugin;\n })\n ),\n src => filterPipe(src)\n );\n }\n\n cancel() {\n this.bottomDrawerRef.close();\n this._cancel();\n }\n\n install() {\n this._install(this.selectedPlugins);\n this.bottomDrawerRef.close();\n }\n\n async showPluginOverview(plugin: ApplicationPlugin) {\n this.selectedPlugin = plugin;\n const baseUrl = `/apps/${plugin.id}/`;\n this.pluginBaseUrl = baseUrl;\n this.pluginMarkdown = await this.pluginsService.getReadmeFileContent(baseUrl);\n }\n}\n"," <div class=\"card-header gap-8 d-col p-l-24 p-r-24 separator-bottom flex-no-shrink\">\n <div\n class=\"card-title h4 text-center\"\n translate\n >\n Available plugins\n </div>\n <c8y-list-filters\n (filterPipeChange)=\"setFilterPipe($event)\"\n [packageTypes]=\"packageTypes\"\n >\n <c8y-archived-filter></c8y-archived-filter>\n <c8y-only-latest-filter></c8y-only-latest-filter>\n </c8y-list-filters>\n </div>\n <div class=\"d-grid grid__col--5-7--md min-height-0 flex-grow\">\n <c8y-plugin-list\n class=\"inner-scroll bg-level-1\"\n (selectedItems)=\"selectedPlugins = $event\"\n [emptyListText]=\"'No matching plugins' | translate\"\n [plugins$]=\"filteredPlugins$\"\n [selectable]=\"true\"\n [selectedPlugin]=\"selectedPlugin\"\n (showOverview)=\"showPluginOverview($event)\"\n ></c8y-plugin-list>\n <div class=\"inner-scroll bg-component\">\n <div class=\"card-header separator sticky-top bg-inherit\"\n *ngIf=\"pluginMarkdown\">\n <button\n class=\"m-l-auto btn-clean\"\n title=\"{{ 'Close' | translate }}\"\n type=\"button\"\n (click)=\"selectedPlugin = null; pluginMarkdown = null\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n </div>\n <div class=\"card-block p-l-24 p-r-24\">\n <div\n class=\"markdown-content\"\n *ngIf=\"pluginMarkdown\"\n [innerHTML]=\"pluginMarkdown | markdownToHtml: { baseUrl: pluginBaseUrl } | async\"\n ></div>\n <c8y-ui-empty-state\n [icon]=\"'user-manual'\"\n [title]=\"'No plugin selected' | translate\"\n [subtitle]=\"\n 'Select a plugin from the list to view its documentation.' | translate\"\n *ngIf=\"!pluginMarkdown\"\n [horizontal]=\"true\"\n >\n <p>\n <small >\n {{ 'Documentation availability varies by plugin.' | translate }}\n </small>\n </p>\n </c8y-ui-empty-state>\n </div>\n </div>\n </div>\n <div class=\"text-center card-footer p-24 separator\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n (click)=\"cancel()\"\n data-cy=\"install-plugin--cancel-button\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Install' | translate }}\"\n type=\"button\"\n (click)=\"install()\"\n [disabled]=\"selectedPlugins.length === 0\"\n data-cy=\"install-plugin--install-button\"\n >\n {{ 'Install' | translate }}\n <span\n class=\"badge\"\n *ngIf=\"selectedPlugins.length as length\"\n >\n {{ length }}\n </span>\n </button>\n </div>\n\n","import { Component } from '@angular/core';\nimport { CellRendererContext } from '@c8y/ngx-components';\n\n@Component({\n selector: 'c8y-label-cell-renderer',\n templateUrl: './label-cell-renderer.component.html',\n standalone: false\n})\nexport class LabelCellRendererComponent {\n constructor(public context: CellRendererContext) {}\n}\n","<span class=\"label label-info\">{{ context.value }}</span>\n","import { Component } from '@angular/core';\nimport { ApplicationPluginStatus, CellRendererContext, gettext } from '@c8y/ngx-components';\n\n@Component({\n selector: 'c8y-orphaned-status-cell-renderer',\n templateUrl: './orphaned-status-cell-renderer.component.html',\n standalone: false\n})\nexport class OrphanedStatusCellRendererComponent {\n label: { value: string; class: string; text: string } | null;\n constructor(public context: CellRendererContext) {\n this.label = this.getLabel(context.value);\n }\n\n private getLabel(statusValue: ApplicationPluginStatus): {\n value: string;\n class: string;\n text: string;\n } | null {\n switch (statusValue) {\n case ApplicationPluginStatus.OUTDATED:\n return {\n value: statusValue,\n text: gettext('OUTDATED`plugin status`'),\n class: 'label-warning'\n };\n case ApplicationPluginStatus.ORPHANED:\n return {\n value: statusValue,\n text: gettext('ORPHANED`plugin status`'),\n class: 'label-danger'\n };\n case ApplicationPluginStatus.REVOKED:\n return {\n value: statusValue,\n text: gettext('REVOKED`plugin status`'),\n class: 'label-danger'\n };\n case ApplicationPluginStatus.LATEST:\n return {\n value: statusValue,\n text: gettext('LATEST`plugin status`'),\n class: 'label-success'\n };\n case ApplicationPluginStatus.AUTO:\n return {\n value: statusValue,\n text: gettext('AUTO`plugin status`'),\n class: 'label-success'\n };\n default:\n return null;\n }\n }\n}\n","<span\n *ngIf=\"label\"\n class=\"label\"\n [ngClass]=\"label.class\"\n [title]=\"label.text | translate\"\n>\n {{ label.text | translate }}\n</span>\n","import { Component } from '@angular/core';\nimport { ApplicationRemotePlugins, IApplication, IApplicationVersion } from '@c8y/client';\nimport {\n AlertService,\n ApplicationPlugin,\n GainsightService,\n PluginsService,\n gettext\n} from '@c8y/ngx-components';\nimport { uniq } from 'lodash-es';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport {\n EcosystemService,\n PRODUCT_EXPERIENCE_ECOSYSTEM\n} from '@c8y/ngx-components/ecosystem/shared';\n\n@Component({\n selector: 'c8y-update-plugin-of-app',\n templateUrl: './update-plugin-of-app.component.html',\n standalone: false\n})\nexport class UpdatePluginOfAppComponent {\n CURRENT_LOCATION = location.href;\n\n app: IApplication;\n plugin: ApplicationPlugin;\n downgrade: boolean;\n result: Promise<void> = new Promise((resolve, reject) => {\n this._install = resolve;\n this._cancel = reject;\n });\n applicationVersion: IApplicationVersion;\n updateAll = true;\n\n private _install: () => void;\n private _cancel: (reason?: any) => void;\n\n constructor(\n private bsModalRef: BsModalRef,\n private pluginsService: PluginsService,\n private alert: AlertService,\n private ecosystemService: EcosystemService,\n private gainsightService: GainsightService\n ) {}\n\n async update() {\n const remotes = this.pluginsService.getMFRemotes(this.app);\n const oldRemotePath = `${this.plugin.contextPath}@${this.plugin.version}`;\n const newRemotePath = `${this.plugin.contextPath}@${this.applicationVersion.version}`;\n let oldRemoteModules = [...(remotes[oldRemotePath] || [])];\n if (!oldRemoteModules.length) {\n this.alert.warning(gettext('Could not change the version of plugin.'));\n this.cancel();\n return;\n }\n\n const isArchived = await this.ecosystemService.verifyArchived([this.plugin]);\n if (!isArchived) {\n this.alert.warning(gettext('Plugin update aborted by user.'));\n this.cancel();\n return;\n }\n\n const result = await this.ecosystemService.verifyLicenses([this.plugin]);\n if (!result) {\n this.alert.warning(gettext('Plugin update aborted by user.'));\n this.cancel();\n return;\n }\n\n let remoteModulesOfNewVersion = [...(remotes[newRemotePath] || [])];\n let olderVersions: ApplicationRemotePlugins = {};\n if (this.updateAll) {\n olderVersions = Object.keys(remotes)\n .filter(key => key.startsWith(`${this.plugin.contextPath}@`))\n .reduceRight((prev, curr) => {\n prev[curr] = undefined;\n return prev;\n }, {});\n\n oldRemoteModules = Object.keys(olderVersions)\n .map(version => remotes[version])\n .reduceRight((prev, curr) => {\n prev.push(...curr);\n return prev;\n }, []);\n remoteModulesOfNewVersion.push(...oldRemoteModules);\n } else {\n remoteModulesOfNewVersion.push(this.plugin.module);\n olderVersions[oldRemotePath] = oldRemoteModules.filter(\n module => module !== this.plugin.module\n );\n if (!olderVersions[oldRemotePath].length) {\n olderVersions[oldRemotePath] = undefined;\n }\n }\n\n remoteModulesOfNewVersion = uniq(remoteModulesOfNewVersion);\n const newRemotes: ApplicationRemotePlugins = {\n ...remotes,\n ...olderVersions,\n [newRemotePath]: remoteModulesOfNewVersion\n };\n\n try {\n await this.pluginsService.updateRemotesInAppConfig(this.app, newRemotes);\n this.alert.success(gettext(`Switched the version of plugin.`));\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.INSTALLED_PLUGINS,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.UPDATE_PLUGIN_OF_APP,\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.CHANGE_PLUGIN_VERSION,\n result: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.RESULTS.PLUGIN_VERSION_CHANGED,\n url: this.CURRENT_LOCATION\n }\n );\n } catch (e) {\n this.alert.addServerFailure(e);\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.INSTALLED_PLUGINS,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.UPDATE_PLUGIN_OF_APP,\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.CHANGE_PLUGIN_VERSION,\n result: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.RESULTS.SERVER_FAILURE,\n url: this.CURRENT_LOCATION\n }\n );\n }\n\n this.bsModalRef.hide();\n this._install();\n }\n\n cancel() {\n this.bsModalRef.hide();\n this._cancel();\n }\n}\n","<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i [c8yIcon]=\"'installing-updates'\"></i>\n <h4\n id=\"modal-title\"\n *ngIf=\"!downgrade\"\n translate\n >\n Update plugin\n </h4>\n <h4\n id=\"modal-title\"\n *ngIf=\"downgrade\"\n translate\n >\n Downgrade plugin\n </h4>\n </div>\n <div\n class=\"inner-scroll\"\n id=\"modal-body\"\n >\n <div class=\"card-block p-r-24 p-l-24 sticky-top bg-component separator-bottom\">\n <c8y-package-version-select\n [packageContextPath]=\"plugin?.contextPath\"\n [(ngModel)]=\"applicationVersion\"\n ></c8y-package-version-select>\n <div\n class=\"alert alert-info\"\n role=\"alert\"\n *ngIf=\"plugin?.version && plugin.version === applicationVersion?.version\"\n >\n <span\n translate\n ngNonBindable\n [translateParams]=\"applicationVersion\"\n >\n Select another version, as {{ version }} is currently used.\n </span>\n </div>\n <div class=\"form-group\">\n <label class=\"c8y-checkbox\">\n <input\n type=\"checkbox\"\n [(ngModel)]=\"updateAll\"\n />\n <span></span>\n <span\n translate\n ngNonBindable\n [translateParams]=\"plugin\"\n >\n Set version for all plugins using the same context path \"{{ contextPath }}\".\n </span>\n </label>\n </div>\n <p class=\"legend form-block\">\n {{ 'Change log' | translate }}\n </p>\n </div>\n <div class=\"card-block p-l-24 p-r-24\">\n\n <div\n class=\"markdown-content markdown-content--to-h3\"\n >\n <c8y-contents-changelog\n [package]=\"plugin.originApp\"\n [selectedVersion]=\"applicationVersion?.version\"\n [previousVersion]=\"plugin?.version\"\n ></c8y-contents-changelog>\n </div>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n (click)=\"cancel()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Set version' | translate }}\"\n [disabled]=\"!applicationVersion || plugin?.version === applicationVersion?.version\"\n (click)=\"update()\"\n >\n {{ 'Set version' | translate }}\n </button>\n </div>\n</div>","import { Component, inject, OnInit } from '@angular/core';\nimport { ApplicationPlugin, BottomDrawerRef, PluginsService } from '@c8y/ngx-components';\n\n@Component({\n selector: 'c8y-application-plugin-readme',\n host: { class: 'd-contents' },\n templateUrl: './application-plugin-readme.component.html',\n standalone: false\n})\nexport class ApplicationPluginReadmeComponent implements OnInit {\n pluginMarkdown: string;\n pluginBaseUrl: string;\n plugin: ApplicationPlugin;\n\n private bottomDrawerRef = inject(BottomDrawerRef);\n private pluginsService = inject(PluginsService);\n\n async ngOnInit() {\n const baseUrl = `/apps/${this.plugin.id}/`;\n this.pluginBaseUrl = baseUrl;\n this.pluginMarkdown = await this.pluginsService.getReadmeFileContent(baseUrl);\n }\n\n close() {\n this.bottomDrawerRef.close();\n }\n}\n","<div class=\"card-header gap-8 d-col p-l-24 p-r-24 separator-bottom flex-no-shrink\">\n <span class=\"card-title h4 text-center\">\n {{ plugin.name }}\n </span>\n</div>\n<div class=\"inner-scroll flex-grow\">\n <div\n class=\"markdown-content col-lg-8 p-24 m-l-auto m-r-auto\"\n style=\"float: none\"\n *ngIf=\"pluginMarkdown\"\n [innerHTML]=\"pluginMarkdown | markdownToHtml: { baseUrl: pluginBaseUrl } | async\"\n ></div>\n <div class=\"d-flex\">\n <c8y-ui-empty-state\n class=\"col-lg-3 col-sm-4 m-l-auto m-r-auto\"\n [icon]=\"'user-manual'\"\n [title]=\"'No README.md found for plugin' | translate\"\n [subtitle]=\"\n 'To view the contents of "README", add the file "README.md" to the plugin.'\n | translate\n \"\n *ngIf=\"!pluginMarkdown\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n</div>\n<div class=\"text-center card-footer p-24 separator\">\n <button\n class=\"btn btn-default\"\n (click)=\"close()\"\n >\n {{ 'Close' | translate }}\n </button>\n</div>\n","import { Component, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { ApplicationRemotePlugins, IApplication } from '@c8y/client';\nimport {\n ActionControl,\n AlertService,\n ApplicationPlugin,\n ApplicationPluginStatus,\n BulkActionControl,\n Column,\n DataGridComponent,\n DisplayOptions,\n GainsightService,\n gettext,\n HeaderActionControl,\n Pagination,\n PluginsConfig,\n PluginsService,\n PluginsExportScopes,\n BottomDrawerService\n} from '@c8y/ngx-components';\nimport {\n EcosystemService,\n PRODUCT_EXPERIENCE_ECOSYSTEM\n} from '@c8y/ngx-components/ecosystem/shared';\nimport { pick } from 'lodash-es';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { BehaviorSubject, combineLatest, firstValueFrom, Observable, Subject } from 'rxjs';\nimport { map, shareReplay } from 'rxjs/operators';\nimport { InstallPluginComponent } from './install-plugin.component';\nimport { LabelCellRendererComponent } from './label-cell-renderer.component';\nimport { OrphanedStatusCellRendererComponent } from './orphaned-status-cell-renderer.component';\nimport { UpdatePluginOfAppComponent } from './update-plugin-of-app/update-plugin-of-app.component';\nimport { ApplicationPluginReadmeComponent } from './application-plugin-readme.component';\n\n@Component({\n selector: 'c8y-app-plugins',\n templateUrl: './application-plugins.component.html',\n standalone: false\n})\nexport class ApplicationPluginsComponent implements OnInit, OnDestroy {\n PRODUCT_EXPERIENCE = PRODUCT_EXPERIENCE_ECOSYSTEM;\n CURRENT_LOCATION = location.href;\n\n @Input() appId: string | number;\n @ViewChild(DataGridComponent, { static: false })\n dataGrid: DataGridComponent;\n\n remotePlugins$: BehaviorSubject<ApplicationRemotePlugins> = new BehaviorSubject({});\n allAvailablePlugins$: BehaviorSubject<ApplicationPlugin[]> = new BehaviorSubject([]);\n selfPlugins$: BehaviorSubject<ApplicationPlugin[]> = new BehaviorSubject([]);\n\n installedPlugins$: Observable<ApplicationPlugin[]> = combineLatest([\n this.remotePlugins$.pipe(map(remotes => PluginsService.convertInstalledRemotesToIds(remotes))),\n this.allAvailablePlugins$\n ]).pipe(\n map(([remotePlugins, allPlugins]) => this.getInstalledPlugins(allPlugins, remotePlugins)),\n shareReplay(1)\n );\n orphanedPlugins$ = this.installedPlugins$.pipe(\n map(plugins => plugins.filter(p => p.status === ApplicationPluginStatus.ORPHANED))\n );\n isStandard$ = combineLatest([this.installedPlugins$, this.selfPlugins$]).pipe(\n map(([installedPlugins, selfPlugins]) => {\n const manifestRemotes = this.app?.manifest?.remotes || {};\n // ensure that every installed plugin is a self plugin or a plugin from the manifest\n const allInstalledPluginsAreSelf = installedPlugins.every(\n p =>\n selfPlugins.some(selfPlugin => selfPlugin.id === p.id) ||\n (Array.isArray(manifestRemotes[p.contextPath]) &&\n manifestRemotes[p.contextPath].includes(p.module))\n );\n\n // ensure that every self plugin is installed\n const allSelfPluginsAreInstalled = selfPlugins.every(selfPlugin =>\n installedPlugins.some(p => p.id === selfPlugin.id)\n );\n const configRemotes = this.app?.config?.remotes || {};\n\n // ensure that every remote from the manifest is in the config\n // if no config exists we are also all good\n const everyRemoteFromManifestIsInConfig =\n !this.app?.config?.remotes ||\n Object.keys(manifestRemotes).every(\n contextPath =>\n Array.isArray(configRemotes[contextPath]) &&\n Array.isArray(manifestRemotes[contextPath]) &&\n manifestRemotes[contextPath].every(module =>\n configRemotes[contextPath].includes(module)\n )\n );\n\n return (\n allInstalledPluginsAreSelf &&\n allSelfPluginsAreInstalled &&\n everyRemoteFromManifestIsInConfig\n );\n })\n );\n app: IApplication;\n isLoading: boolean;\n title: string = gettext('Installed plugins');\n loadMoreItemsLabel: string = gettext('Load more packages');\n loadingItemsLabel: string = gettext('Loading packages…');\n actionControls: ActionControl[] = this.getActionControls();\n bulkActionControls: BulkActionControl[] = this.getBulkActionControls();\n headerActionControls: HeaderActionControl[] = [];\n noResultsMessage = gettext('No plugins to display.');\n noDataMessage = gettext('No plugins installed.');\n noResultsSubtitle = gettext('Refine your search terms or check your spelling.');\n noDataSubtitle = gettext(\"This application doesn't have any plugin. Click below to install.\");\n pagination: Pagination = {\n pageSize: 10,\n currentPage: 1\n };\n displayOptions: DisplayOptions = {\n bordered: false,\n striped: true,\n filter: true,\n gridHeader: true,\n hover: true\n };\n columns: Column[] = [\n {\n name: 'name',\n header: gettext('Plugin name'),\n path: 'name',\n filterable: true\n },\n {\n name: 'Version',\n header: gettext('Version'),\n path: 'version',\n filterable: false\n },\n {\n name: 'Tag',\n header: gettext('Tag`noun`'),\n path: 'installedViaTag',\n filterable: false,\n cellRendererComponent: LabelCellRendererComponent\n },\n {\n name: 'description',\n header: gettext('Description'),\n path: 'description',\n filterable: false,\n cellCSSClassName: 'small'\n },\n {\n name: 'contextPath',\n header: gettext('Source'),\n path: 'contextPath',\n filterable: false,\n cellRendererComponent: LabelCellRendererComponent\n },\n {\n name: 'scope',\n header: gettext('Scope'),\n path: 'scope',\n filterable: false,\n visible: false,\n cellRendererComponent: LabelCellRendererComponent\n },\n {\n name: 'status',\n header: gettext('Status'),\n path: 'status',\n filterable: false,\n cellRendererComponent: OrphanedStatusCellRendererComponent\n }\n ];\n private destroy$: Subject<void> = new Subject();\n\n constructor(\n private activatedRoute: ActivatedRoute,\n private ecosystemService: EcosystemService,\n private bsModalService: BsModalService,\n private pluginsService: PluginsService,\n private alertService: AlertService,\n private gainsightService: GainsightService,\n private bottomDrawerService: BottomDrawerService\n ) {}\n\n ngOnInit() {\n this.addInstallButtonToHeaderActionControls();\n this.loadData();\n }\n\n async loadData() {\n this.isLoading = true;\n await this.getApplicationMO();\n await this.getApplicationMFRemotes(this.app);\n await this.getAllApplicationsMFExports(this.app);\n await this.getAllSelfMFExports(this.app);\n this.isLoading = false;\n }\n\n async resetToDefault() {\n this.isLoading = true;\n await this.pluginsService.resetRemotes(this.app);\n await this.loadData();\n this.alertService.success(gettext('The application was reset to its default plugins.'));\n }\n\n async installPlugins() {\n let currentPlugin: ApplicationPlugin | null = null;\n\n try {\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.INSTALLED_PLUGINS,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.APPLICATION_PLUGINS,\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.INSTALL_PLUGINS_INITIATED,\n url: this.CURRENT_LOCATION,\n targetApplicationName: this.app.name,\n targetApplicationContextPath: this.app.contextPath\n }\n );\n\n const drawer = this.bottomDrawerService.openDrawer<InstallPluginComponent>(\n InstallPluginComponent,\n {\n initialState: this.getInstallModalInitState(),\n closeOnNavigation: true\n }\n );\n\n const pluginsToAdd: ApplicationPlugin[] = await drawer.instance.result;\n\n const isArchived = await this.ecosystemService.verifyArchived(pluginsToAdd);\n if (!isArchived) {\n return;\n }\n\n const licensesVerifiedByUser = await this.ecosystemService.verifyLicenses(pluginsToAdd);\n if (!licensesVerifiedByUser) {\n return;\n }\n const verifyVersionCompatibility =\n await this.ecosystemService.verifyPluginVersionsCompatibility(pluginsToAdd, this.app);\n\n if (!verifyVersionCompatibility) {\n return;\n }\n\n this.isLoading = true;\n await this.handleRemotesInstallation(pluginsToAdd);\n\n this.alertService.success(gettext('Plugins installed.'));\n pluginsToAdd.forEach(plugin => {\n currentPlugin = plugin;\n\n this.triggerPluginEvent(\n plugin,\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.RESULTS.PLUGIN_INSTALLED\n );\n });\n } catch (ex) {\n if (ex) {\n this.alertService.addServerFailure(ex);\n this.triggerPluginEvent(\n currentPlugin,\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.RESULTS.SERVER_FAILURE\n );\n }\n } finally {\n this.isLoading = false;\n }\n }\n\n async removePlugins(plugins: string[]) {\n let currentPlugin: ApplicationPlugin | null = null;\n\n try {\n this.isLoading = true;\n const installedPlugins: ApplicationPlugin[] = await firstValueFrom(this.installedPlugins$);\n const pluginsToRemove: ApplicationPlugin[] = installedPlugins.filter(p =>\n plugins.includes(p.id)\n );\n const updatedRemotes = await this.pluginsService.removeRemotes(\n this.app,\n plugins.map(id => installedPlugins.find(p => p.id === id))\n );\n this.emitRemotes(updatedRemotes);\n\n this.isLoading = false;\n this.dataGrid.cancel();\n this.alertService.success(gettext('Plugins removed.'));\n\n pluginsToRemove.forEach(plugin => {\n currentPlugin = plugin;\n\n this.triggerPluginEvent(\n plugin,\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.RESULTS.PLUGIN_REMOVED\n );\n });\n } catch (ex) {\n if (ex) {\n this.alertService.addServerFailure(ex);\n this.triggerPluginEvent(\n currentPlugin,\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.RESULTS.SERVER_FAILURE\n );\n }\n } finally {\n this.isLoading = false;\n }\n }\n\n async cleanupOrphanedPlugins(plugins: ApplicationPlugin[]) {\n const pluginIds = plugins.map(p => p.id);\n await this.removePlugins(pluginIds);\n }\n\n getActionControls(): ActionControl[] {\n return [\n {\n type: 'showReadme',\n text: gettext('Show readme'),\n icon: 'documents',\n showIf: (plugin: ApplicationPlugin) => {\n return !!plugin.readmePath;\n },\n callback: plugin => this.showPluginReadme(plugin as ApplicationPlugin)\n },\n {\n type: 'customUpdate',\n text: gettext('Update'),\n icon: 'installing-updates',\n showIf: plugin => {\n return (\n plugin.status === ApplicationPluginStatus.OUTDATED ||\n plugin.status === ApplicationPluginStatus.REVOKED\n );\n },\n callback: plugin => this.updatePlugin(this.app, plugin as ApplicationPlugin)\n },\n {\n type: 'customDowngrade',\n text: gettext('Downgrade'),\n icon: 'installing-updates',\n showIf: (plugin: ApplicationPlugin) => {\n if (\n plugin.scope === PluginsExportScopes.SELF ||\n plugin.scope === PluginsExportScopes.SELF_OPTIONAL\n ) {\n return false;\n }\n return plugin.status === ApplicationPluginStatus.LATEST;\n },\n callback: plugin => this.updatePlugin(this.app, plugin as ApplicationPlugin, true)\n }\n ];\n }\n\n showPluginReadme(plugin: ApplicationPlugin): void {\n this.bottomDrawerService.openDrawer(ApplicationPluginReadmeComponent, {\n initialState: { plugin },\n closeOnNavigation: true\n });\n }\n\n getBulkActionControls(): BulkActionControl[] {\n return [\n {\n type: 'customDelete',\n text: gettext('Remove'),\n icon: 'trash',\n callback: plugins => this.removePlugins(plugins)\n }\n ];\n }\n\n async updatePlugin(app: IApplication, plugin: ApplicationPlugin, downgrade = false) {\n try {\n await (\n this.bsModalService.show(UpdatePluginOfAppComponent, {\n class: 'modal-md',\n ariaDescribedby: 'modal-body',\n ariaLabelledBy: 'modal-title',\n initialState: {\n app,\n plugin,\n downgrade\n },\n ignoreBackdropClick: true\n }).content as UpdatePluginOfAppComponent\n ).result;\n this.refresh();\n } catch (er) {\n return;\n }\n }\n\n refresh() {\n this.loadData();\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private addInstallButtonToHeaderActionControls() {\n if (this.appId) {\n this.headerActionControls = [\n {\n text: gettext('Install plugins'),\n callback: () => {\n this.installPlugins();\n },\n icon: 'plus-circle',\n type: 'custom'\n }\n ];\n }\n }\n\n private async handleRemotesInstallation(plugins: ApplicationPlugin[]) {\n const updatedRemotes = await this.pluginsService.addRemotes(this.app, plugins);\n return this.emitRemotes(updatedRemotes);\n }\n\n private emitRemotes(pluginsConfig: PluginsConfig) {\n const { remotes, excludedRemotes } = pluginsConfig;\n\n // needed for first time adding/removing a plugin\n if (!this.app.config) {\n this.app.config = {};\n }\n\n this.app.config.remotes = remotes;\n this.app.config.excludedRemotes = excludedRemotes;\n const actualRemotes = this.pluginsService.getMFRemotes(this.app);\n this.remotePlugins$.next(actualRemotes);\n return { ...this.remotePlugins$.value };\n }\n\n private async getApplicationMO(): Promise<IApplication> {\n let id = this.appId;\n if (!id) {\n const { id: routeId } = this.activatedRoute.snapshot.parent.data.contextData;\n id = routeId;\n }\n\n try {\n this.app = await this.ecosystemService.getApplication(id);\n } catch (er) {\n if (er) {\n this.alertService.addServerFailure(er);\n }\n }\n return this.app;\n }\n\n private async getApplicationMFExports(app: IApplication) {\n const exports = this.pluginsService.getMFExports(app, [], true);\n return exports;\n }\n\n private async getApplicationMFRemotes(app: IApplication) {\n const appConfigRemotes = this.pluginsService.getMFRemotes(app);\n this.remotePlugins$.next(appConfigRemotes || {});\n }\n\n private async getAllApplicationsMFExports(app: IApplication) {\n const exportedByCurrentApp = await this.getApplicationMFExports(app);\n const allAppsMFExports = await this.pluginsService.getAllMFExports(true);\n this.allAvailablePlugins$.next([...allAppsMFExports, ...exportedByCurrentApp]);\n }\n\n private async getAllSelfMFExports(app: IApplication) {\n const exportedByCurrentApp = await this.getApplicationMFExports(app);\n this.selfPlugins$.next(exportedByCurrentApp.filter(({ scope }) => scope === 'self'));\n }\n\n private getInstallModalInitState(): any {\n return {\n plugins$: combineLatest([this.allAvailablePlugins$, this.installedPlugins$]).pipe(\n map(([allPlugins, installedPlugins]) => {\n // to not mutate the original array and objects contained in it\n const allPluginsAsNewObjects = allPlugins.map(p => ({ ...p }));\n\n for (const plugin of installedPlugins) {\n let installedPlugin = allPluginsAsNewObjects.find(p => p.id === plugin.id);\n\n if (!installedPlugin && plugin.installedViaTag) {\n installedPlugin = allPluginsAsNewObjects.find(\n p =>\n p.contextPath === plugin.contextPath &&\n p.module === plugin.module &&\n p.tags?.includes(plugin.installedViaTag as string)\n );\n }\n\n if (installedPlugin) {\n installedPlugin.installed = true;\n continue;\n }\n }\n\n return allPluginsAsNewObjects.map(p => ({ ...p, installed: !!p.installed }));\n }),\n shareReplay(1)\n )\n };\n }\n\n private getOrphanedPlugins(\n orphanedPluginIds: string[],\n allPlugins: ApplicationPlugin[]\n ): ApplicationPlugin[] {\n const orphanedPlugins: ApplicationPlugin[] = orphanedPluginIds.map(p => this.extractDetails(p));\n const orphanedPluginsUpdated = orphanedPlugins.map(p => {\n const pluginWithMatchingTag = allPlugins.find(\n tmp =>\n tmp.contextPath === p.contextPath &&\n tmp.module === p.module &&\n tmp.tags?.includes(p.version || 'latest')\n );\n if (pluginWithMatchingTag) {\n return {\n ...pluginWithMatchingTag,\n id: p.id,\n status: ApplicationPluginStatus.AUTO,\n installedViaTag: p.version || 'latest'\n };\n }\n const pluginInDifferentVersion = allPlugins.find(\n tmp => tmp.contextPath === p.contextPath && tmp.module === p.module\n );\n if (pluginInDifferentVersion) {\n return {\n ...pluginInDifferentVersion,\n version: p.version,\n id: p.id,\n status: ApplicationPluginStatus.OUTDATED\n };\n }\n return p;\n });\n\n return orphanedPluginsUpdated;\n }\n\n private splitOrphanedPluginsIntoOrphanedAndRevokedPlugins(\n allPlugins: ApplicationPlugin[],\n orphanedPlugins: ApplicationPlugin[]\n ) {\n const revokedPlugins = new Array<ApplicationPlugin>();\n const actuallyOrphanedPlugins = new Array<ApplicationPlugin>();\n\n for (const plugin of orphanedPlugins) {\n const foundFamiliarPlugin = allPlugins.find(\n plugin1 => plugin.contextPath === plugin1.contextPath && plugin.module === plugin1.module\n );\n if (foundFamiliarPlugin) {\n revokedPlugins.push(\n Object.assign({}, foundFamiliarPlugin, plugin, {\n status: ApplicationPluginStatus.REVOKED\n })\n );\n } else {\n actuallyOrphanedPlugins.push(plugin);\n }\n }\n\n return { revokedPlugins, actuallyOrphanedPlugins };\n }\n\n private getInstalledPlugins(\n allPlugins: ApplicationPlugin[],\n remotePlugins: string[]\n ): ApplicationPlugin[] {\n const availablePlugins = allPlugins\n .filter(plugin => remotePlugins.includes(plugin.id))\n .map(plugin =>\n Object.assign(plugin, {\n status: plugin.tags?.includes('latest')\n ? ApplicationPluginStatus.LATEST\n : ApplicationPluginStatus.OUTDATED\n })\n );\n const orphanedPluginIds = remotePlugins.filter(\n r => !availablePlugins.find(plugin => plugin.id === r)\n );\n const orphanedPlugins: ApplicationPlugin[] = this.getOrphanedPlugins(\n orphanedPluginIds,\n allPlugins\n );\n\n const notActuallyOrphanedPlugins = orphanedPlugins.filter(\n p => p.status === ApplicationPluginStatus.AUTO\n );\n\n const orphanedOrRevokedPlugins = orphanedPlugins.filter(\n p => p.status !== ApplicationPluginStatus.AUTO\n );\n\n const { actuallyOrphanedPlugins, revokedPlugins } =\n this.splitOrphanedPluginsIntoOrphanedAndRevokedPlugins(allPlugins, orphanedOrRevokedPlugins);\n\n return [\n ...availablePlugins,\n ...notActuallyOrphanedPlugins,\n ...revokedPlugins,\n ...actuallyOrphanedPlugins\n ];\n }\n\n private extractDetails(pluginId: string): ApplicationPlugin {\n const contextPath = this.getStringMatchingRegex(pluginId, /^[^@]*(@|\\/)/);\n const version = this.getStringMatchingRegex(pluginId, /@.*\\//);\n const module = this.getStringMatchingRegex(pluginId, /\\/.*$/);\n const unavailable = gettext('unavailable`plugin`');\n return {\n id: pluginId,\n idLatest: `${contextPath}/${module}`,\n path: '',\n module,\n name: module,\n status: ApplicationPluginStatus.ORPHANED,\n contextPath: contextPath,\n description: unavailable,\n version: version\n };\n }\n\n private getStringMatchingRegex(\n str: string,\n regex: { [Symbol.match](string: string): RegExpMatchArray | null }\n ): string {\n const matches = str.match(regex);\n const value = matches ? matches[0] : '';\n\n return value.replace(/(@|\\/)/g, '');\n }\n\n private triggerPluginEvent(plugin: ApplicationPlugin, result: string): void {\n const pluginInfo = pick(plugin, [\n 'name',\n 'contextPath',\n 'module',\n 'version',\n 'type',\n 'id'\n ] satisfies (keyof ApplicationPlugin)[]);\n\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.INSTALLED_PLUGINS,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.APPLICATION_PLUGINS,\n result,\n url: this.CURRENT_LOCATION,\n ...pluginInfo,\n targetApplicationName: this.app.name,\n targetApplicationContextPath: this.app.contextPath\n }\n );\n }\n}\n","<c8y-title>{{ app | humanizeAppName | async }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-atom'\"\n [label]=\"'Ecosystem' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-modules'\"\n [label]=\"'Applications' | translate\"\n [path]=\"'ecosystem/application/applications'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"app | humanizeAppName | async\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Plugins' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n *ngIf=\"!(isStandard$ | async)\"\n>\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Reset to default plugins' | translate }}\"\n [ngClass]=\"{ 'btn-pending': isLoading }\"\n (click)=\"resetToDefault()\"\n >\n <i c8yIcon=\"undo\"></i>\n {{ 'Reset to default' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Install plugins' | translate }}\"\n (click)=\"installPlugins()\"\n [ngClass]=\"{ 'btn-pending': isLoading }\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Install plugins' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<ng-container *ngIf=\"orphanedPlugins$ | async as orphanedPlugins\">\n <c8y-action-bar-item\n *ngIf=\"orphanedPlugins?.length\"\n [placement]=\"'right'\"\n >\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Clean up orphaned plugins' | translate }}\"\n (click)=\"cleanupOrphanedPlugins(orphanedPlugins)\"\n [ngClass]=\"{ 'btn-pending': isLoading }\"\n >\n <i c8yIcon=\"erase\"></i>\n {{ 'Clean up orphaned plugins' | translate }}\n </button>\n </c8y-action-bar-item>\n</ng-container>\n\n<div class=\"content-fullpage d-flex d-col border-top\">\n <c8y-data-grid\n class=\"d-contents\"\n [title]=\"title\"\n [loadMoreItemsLabel]=\"loadMoreItemsLabel\"\n [loadingItemsLabel]=\"loadingItemsLabel\"\n [displayOptions]=\"displayOptions\"\n [columns]=\"columns\"\n [rows]=\"installedPlugins$ | async\"\n [pagination]=\"pagination\"\n [selectable]=\"true\"\n [actionControls]=\"actionControls\"\n [bulkActionControls]=\"bulkActionControls\"\n [headerActionControls]=\"headerActionControls\"\n (onReload)=\"refresh()\"\n >\n <c8y-ui-empty-state\n [icon]=\"stats?.size > 0 ? 'search' : 'plugin'\"\n [title]=\"stats?.size > 0 ? (noResultsMessage | translate) : (noDataMessage | translate)\"\n [subtitle]=\"stats?.size > 0 ? (noResultsSubtitle | translate) : (noDataSubtitle | translate)\"\n *emptyStateContext=\"let stats\"\n [horizontal]=\"stats?.size > 0\"\n >\n <p *ngIf=\"stats?.size === 0\">\n <button\n class=\"btn btn-primary btn-sm\"\n title=\"{{ 'Install plugins' | translate }}\"\n (click)=\"installPlugins()\"\n [ngClass]=\"{ 'btn-pending': isLoading }\"\n translate\n >\n Install plugins\n </button>\n </p>\n </c8y-ui-empty-state>\n </c8y-data-grid>\n</div>\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot } from '@angular/router';\nimport { ApplicationType, IApplication } from '@c8y/client';\nimport { EcosystemService } from '@c8y/ngx-components/ecosystem/shared';\n\n@Injectable()\nexport class ApplicationPluginsGuard {\n constructor(private ecosystemService: EcosystemService) {}\n\n canActivate(route: ActivatedRouteSnapshot) {\n const app: IApplication = route.data.contextData || route.parent.data.contextData;\n if (!app) {\n return false;\n }\n const manifest = app.manifest;\n if (!manifest) {\n return false;\n }\n return (\n app.type === ApplicationType.HOSTED &&\n this.ecosystemService.isOwner(app) &&\n !this.ecosystemService.isPackage(app) &&\n // apps like e.g. the public-options should not have the plugins tab\n !manifest.noAppSwitcher\n );\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@c8y/ngx-components';\nimport { SharedEcosystemModule } from '@c8y/ngx-components/ecosystem/shared';\nimport { ApplicationPluginsComponent } from './application-plugins.component';\nimport { UpdatePluginOfAppComponent } from './update-plugin-of-app/update-plugin-of-app.component';\nimport { AppStatePipe } from './appState.pipe';\nimport { AppsToUpdateRemotesSelectComponent } from './apps-to-update-remotes-select.component';\nimport { InstallPluginComponent } from './install-plugin.component';\nimport { OrphanedStatusCellRendererComponent } from './orphaned-status-cell-renderer.component';\nimport { PluginListItemComponent } from './plugin-list-item.component';\nimport { PluginListComponent } from './plugin-list.component';\nimport { LabelCellRendererComponent } from './label-cell-renderer.component';\nimport { gettext, hookRoute, ViewContext } from '@c8y/ngx-components';\nimport { ApplicationPluginsGuard } from './application-plugins.guard';\nimport { OnlyLatestFilterComponent } from './only-latest-filter/only-latest-filter.component';\nimport { ApplicationPluginReadmeComponent } from './application-plugin-readme.component';\n\n@NgModule({\n imports: [CoreModule, SharedEcosystemModule],\n declarations: [\n ApplicationPluginsComponent,\n PluginListItemComponent,\n InstallPluginComponent,\n PluginListComponent,\n AppsToUpdateRemotesSelectComponent,\n AppStatePipe,\n LabelCellRendererComponent,\n OrphanedStatusCellRendererComponent,\n UpdatePluginOfAppComponent,\n OnlyLatestFilterComponent,\n ApplicationPluginReadmeComponent\n ],\n exports: [\n ApplicationPluginsComponent,\n PluginListItemComponent,\n InstallPluginComponent,\n PluginListComponent,\n AppsToUpdateRemotesSelectComponent,\n AppStatePipe,\n LabelCellRendererComponent,\n OrphanedStatusCellRendererComponent,\n UpdatePluginOfAppComponent,\n OnlyLatestFilterComponent\n ],\n providers: [\n ApplicationPluginsGuard,\n hookRoute([\n {\n path: 'plugins',\n component: ApplicationPluginsComponent,\n icon: 'plugin',\n label: gettext('Plugins'),\n context: ViewContext.Application,\n priority: 3,\n canActivate: [ApplicationPluginsGuard]\n }\n ])\n ]\n})\nexport class ApplicationPluginsModule {}\n","import { Component, ViewChild } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { IApplication } from '@c8y/client';\nimport { shareReplay, switchMap, tap } from 'rxjs/operators';\nimport {\n EcosystemService,\n FilterableAppOrPlugin,\n FilterPipe,\n ListFiltersComponent\n} from '@c8y/ngx-components/ecosystem/shared';\n\n@Component({\n selector: 'c8y-feature-list',\n templateUrl: './feature-list.component.html',\n standalone: false\n})\nexport class FeatureListComponent {\n reloading = false;\n reload$: BehaviorSubject<void> = new BehaviorSubject(null);\n\n features$: Observable<IApplication[]> = this.reload$.pipe(\n tap(() => (this.reloading = true)),\n switchMap(() => this.ecosystemService.getFeatureApplications()),\n tap(() => (this.reloading = false)),\n shareReplay()\n );\n filteredFeatures$: Observable<FilterableAppOrPlugin[]>;\n listClass: string;\n @ViewChild(ListFiltersComponent) filtersComponent: ListFiltersComponent;\n\n constructor(private ecosystemService: EcosystemService) {}\n\n ngOnInit() {\n this.loadFeatures();\n }\n\n loadFeatures() {\n this.reload$.next();\n }\n\n setFilterPipe(pipe: FilterPipe) {\n this.filteredFeatures$ = this.features$.pipe(src => pipe(src));\n }\n\n resetFilters() {\n this.filtersComponent?.resetAllFilters();\n }\n}\n","<c8y-title>{{ 'Features' | translate }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item [icon]=\"'c8y-atom'\" [label]=\"'Ecosystem' | translate\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-modules'\"\n [label]=\"'Applications' | translate\"\n [path]=\"'ecosystem/application/applications'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [icon]=\"'tab'\" [label]=\"'Features' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button (click)=\"reload$.next()\" class=\"btn btn-link\" title=\"{{ 'Reload' | translate }}\">\n <i [ngClass]=\"{ 'icon-spin': reloading }\" c8yIcon=\"refresh\"></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'left'\">\n <c8y-list-filters\n *ngIf=\"features$ | async\"\n (filterPipeChange)=\"setFilterPipe($event)\"\n ></c8y-list-filters>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'left'\" itemClass=\"navbar-form hidden-xs\">\n <c8y-list-display-switch\n (onListClassChange)=\"listClass = $event\"\n [listLength]=\"(features$ | async)?.length\"\n ></c8y-list-display-switch>\n</c8y-action-bar-item>\n\n<div *ngIf=\"(features$ | async)?.length === 0\" class=\"c8y-empty-state text-center\">\n <h1 class=\"c8y-icon c8y-icon-modules c8y-icon-duocolor\"></h1>\n <h3 translate>No features to display.</h3>\n <p translate>No additional features are subscribed to the tenant.</p>\n</div>\n\n<div [ngClass]=\"listClass\" class=\"card-group\">\n <div class=\"page-sticky-header hidden-xs d-flex\" *ngIf=\"(features$ | async)?.length > 0\">\n <div class=\"card-block card-column-40\">\n <div class=\"card-appicon p-l-32 p-r-16 m-r-0 m-l-4\"></div>\n {{ 'Feature' | translate }}\n </div>\n <div class=\"card-block p-0 card-column-80\">\n <div class=\"card-block card-column-80\">{{ 'Description' | translate }}</div>\n <div class=\"card-block card-column-20\">{{ 'Type' | translate }}</div>\n </div>\n </div>\n <div *ngFor=\"let feature of filteredFeatures$ | async\" class=\"col-xs-12 col-sm-4 col-md-3\">\n <c8y-application-card\n [app]=\"feature\"\n [canEdit]=\"false\"\n class=\"d-contents\"\n ></c8y-application-card>\n </div>\n</div>\n\n<c8y-ui-empty-state\n *ngIf=\"(features$ | async)?.length > 0 && (filteredFeatures$ | async)?.length === 0\"\n [icon]=\"'search'\"\n [title]=\"'No matching features.' | translate\"\n [subtitle]=\"'Refine your search terms and/or the filters' | translate\"\n>\n <button\n class=\"btn btn-primary\"\n type=\"button\"\n title=\"{{ 'Reset filters' | translate }}\"\n (click)=\"resetFilters()\"\n >\n {{ 'Reset filters' | translate }}\n </button>\n</c8y-ui-empty-state>\n","import { Component } from '@angular/core';\nimport { DocsService, gettext, ModalService, Status } from '@c8y/ngx-components';\nimport { ApplicationType, IApplication, TenantService } from '@c8y/client';\nimport { EcosystemService, ERROR_TYPE } from '@c8y/ngx-components/ecosystem/shared';\n\n@Component({\n selector: 'c8y-add-microservice',\n template: `<div class=\"p-16\" translate [translateParams]=\"{ slaHref: slaHref }\" ngNonBindable>\n By uploading a microservice, you agree to the\n <a href=\"{{ slaHref }}\" target=\"_blank\" rel=\"noopener noreferrer\"\n >Microservice Deployment SLA</a\n >\n which outlines our microservices hosting terms, conditions, and performance standards.\n </div>\n <c8y-add-application\n [headerIcon]=\"'microchip'\"\n [headerText]=\"headerText\"\n [successText]=\"successText\"\n [createApplicationHandler]=\"createMicroserviceApplicationHandler\"\n [uploadApplicationHandler]=\"uploadMicroserviceHandler\"\n ></c8y-add-application>`,\n standalone: false\n})\nexport class AddMicroserviceComponent {\n readonly slaHref = this.docs.getUserGuideLink(\n 'docs/service-terms/service-level/#microservices-sla'\n );\n headerText: string = gettext('Add microservice');\n successText: string = gettext('Microservice created');\n\n constructor(\n private ecosystemService: EcosystemService,\n private modal: ModalService,\n private tenantService: TenantService,\n private docs: DocsService\n ) {}\n\n createMicroserviceApplicationHandler = (f: File) => this.createMicroserviceApplication(f);\n uploadMicroserviceHandler = (f: File, app: IApplication) => this.uploadMicroservice(f, app);\n\n async createMicroserviceApplication(file: File): Promise<IApplication> {\n await this.ecosystemService.isValidAppType(file, ApplicationType.MICROSERVICE);\n return this.ecosystemService.createAppForArchive(file);\n }\n\n async uploadMicroservice(file: File, microservice: IApplication): Promise<void> {\n const subscribeToCurrentTenant = await this.askIfActivationAfterUploadNeeded();\n await this.ecosystemService.uploadArchiveToApp(file, microservice);\n await this.subscribeMicroservice(microservice, subscribeToCurrentTenant);\n }\n\n private async askIfActivationAfterUploadNeeded(): Promise<boolean> {\n try {\n await this.modal.confirm(\n gettext('Subscribe to microservice'),\n gettext(\n 'You are about to subscribe to the microservice after upload. Do you want to subscribe to it?'\n ),\n Status.INFO,\n { ok: gettext('Subscribe'), cancel: gettext(\"Don't subscribe\") }\n );\n return true;\n } catch (ex) {\n return false;\n }\n }\n\n private async subscribeMicroservice(\n app: IApplication,\n subscribeToCurrentTenant: boolean\n ): Promise<any> {\n const tenant = (await this.tenantService.current()).data;\n const applications = tenant.applications.references;\n\n const isSubscribed = applications.some(({ application }) => application.id === app.id);\n if (!isSubscribed && subscribeToCurrentTenant) {\n try {\n return await this.tenantService.subscribeApplication(tenant, app);\n } catch (res) {\n if (res.status === 409) {\n throw Error(ERROR_TYPE.ALREADY_SUBSCRIBED);\n }\n }\n } else if (isSubscribed && !subscribeToCurrentTenant) {\n return this.tenantService.unsubscribeApplication(tenant, app);\n }\n }\n}\n","import { ChangeDetectorRef, Component, OnInit, ViewChild } from '@angular/core';\nimport { IApplication } from '@c8y/client';\nimport { WizardModalService } from '@c8y/ngx-components';\nimport { ModalOptions } from 'ngx-bootstrap/modal';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { shareReplay, switchMap, tap } from 'rxjs/operators';\nimport {\n APP_STATE,\n EcosystemService,\n EcosystemWizards,\n FilterPipe,\n PackageFilters,\n ListFiltersComponent,\n FilterableAppOrPlugin\n} from '@c8y/ngx-components/ecosystem/shared';\n\n@Component({\n selector: 'c8y-microservice-list',\n templateUrl: './microservice-list.component.html',\n standalone: false\n})\nexport class MicroserviceListComponent implements OnInit {\n reloading = false;\n reload$: BehaviorSubject<void> = new BehaviorSubject(null);\n microservices$: Observable<IApplication[]> = this.reload$.pipe(\n tap(() => (this.reloading = true)),\n switchMap(() => this.ecosystemService.getMicroservices()),\n tap(microservices => {\n microservices.forEach(microservice => {\n microservice.filterProps = this.ecosystemService.getAppFilterProps(microservice);\n });\n }),\n tap(() => (this.reloading = false)),\n shareReplay()\n );\n filteredMicroservices$: Observable<FilterableAppOrPlugin[]>;\n isMicroserviceHostingAllowed$: Observable<boolean> = this.reload$.pipe(\n switchMap(() => this.ecosystemService.isMicroserviceHostingAllowed()),\n shareReplay()\n );\n listClass: string;\n packageAvailabilities: (keyof PackageFilters['availability'])[] = [\n APP_STATE.SUBSCRIBED.label,\n APP_STATE.CUSTOM.label\n ];\n @ViewChild(ListFiltersComponent) filtersComponent: ListFiltersComponent;\n\n constructor(\n private ecosystemService: EcosystemService,\n private wizardModalService: WizardModalService,\n private cd: ChangeDetectorRef\n ) {}\n\n ngOnInit() {\n this.loadMicroservices();\n // manually trigger detection to not have ExpressionChangedAfterItHasBeenChecked error in spec file\n this.cd.detectChanges();\n }\n\n loadMicroservices() {\n this.reload$.next();\n }\n\n addMicroservice() {\n const initialState: Record<string, unknown> = {\n id: EcosystemWizards.MICROSERVICE_UPLOAD\n };\n const modalOptions: ModalOptions = { initialState };\n\n const modalRef = this.wizardModalService.show(modalOptions);\n modalRef.content.onClose.subscribe(() => {\n this.loadMicroservices();\n });\n }\n\n setFilterPipe(pipe: FilterPipe) {\n this.filteredMicroservices$ = this.microservices$.pipe(src => pipe(src));\n }\n\n resetFilters() {\n this.filtersComponent?.resetAllFilters();\n }\n}\n","<c8y-title>{{ 'Microservices' | translate }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-atom'\"\n [label]=\"'Ecosystem' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'microchip'\"\n [label]=\"'Microservices' | translate\"\n [path]=\"'ecosystem/microservice/microservices'\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<ng-container *c8yIfAllowed=\"['ROLE_APPLICATION_MANAGEMENT_ADMIN']\">\n <c8y-action-bar-item\n [placement]=\"'right'\"\n [priority]=\"100\"\n *ngIf=\"isMicroserviceHostingAllowed$ | async\"\n >\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Add microservice' | translate }}\"\n (click)=\"addMicroservice()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add microservice' | translate }}\n </button>\n </c8y-action-bar-item>\n</ng-container>\n\n<c8y-help src=\"/docs/standard-tenant/ecosystem/#managing-microservices\"></c8y-help>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Reload' | translate }}\"\n (click)=\"reload$.next()\"\n >\n <i\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': reloading }\"\n ></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'left'\">\n <c8y-list-filters\n *ngIf=\"microservices$ | async\"\n (filterPipeChange)=\"setFilterPipe($event)\"\n [packageAvailabilities]=\"packageAvailabilities\"\n ></c8y-list-filters>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'left'\"\n itemClass=\"navbar-form hidden-xs\"\n>\n <c8y-list-display-switch\n (onListClassChange)=\"listClass = $event\"\n [listLength]=\"(microservices$ | async)?.length\"\n ></c8y-list-display-switch>\n</c8y-action-bar-item>\n\n<div\n class=\"c8y-empty-state text-center\"\n *ngIf=\"(microservices$ | async)?.length === 0\"\n>\n <h1 class=\"c8y-icon c8y-icon-modules c8y-icon-duocolor\"></h1>\n <h3 translate>No microservices to display.</h3>\n <p translate>Add your first microservice by clicking below.</p>\n <p>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Add microservice' | translate }}\"\n (click)=\"addMicroservice()\"\n >\n {{ 'Add microservice' | translate }}\n </button>\n </p>\n</div>\n\n<div\n class=\"card-group\"\n [ngClass]=\"listClass\"\n>\n <div\n class=\"page-sticky-header hidden-xs d-flex\"\n *ngIf=\"(microservices$ | async)?.length > 0\"\n >\n <div class=\"card-block card-column-40\">\n <div class=\"card-appicon p-l-32 p-r-16 m-r-0 m-l-4\"></div>\n {{ 'Microservice' | translate }}\n </div>\n <div class=\"card-block p-0 card-column-80 m-r-40\">\n <div class=\"card-block card-column-80\">{{ 'Description' | translate }}</div>\n <div class=\"card-block card-column-20\">{{ 'Type' | translate }}</div>\n <div class=\"card-block card-column-20\"></div>\n </div>\n </div>\n <div\n class=\"col-xs-12 col-sm-4 col-md-3\"\n *ngFor=\"let microservice of filteredMicroservices$ | async\"\n >\n <c8y-application-card\n class=\"d-contents\"\n (onAppDeleted)=\"loadMicroservices()\"\n [app]=\"microservice\"\n ></c8y-application-card>\n </div>\n</div>\n\n<c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No matching microservices.' | translate\"\n [subtitle]=\"'Refine your search terms and/or the filters' | translate\"\n *ngIf=\"(microservices$ | async)?.length > 0 && (filteredMicroservices$ | async)?.length === 0\"\n>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Reset filters' | translate }}\"\n type=\"button\"\n (click)=\"resetFilters()\"\n >\n {{ 'Reset filters' | translate }}\n </button>\n</c8y-ui-empty-state>\n","import { Component, ViewChild } from '@angular/core';\nimport { ApplicationType, IApplication } from '@c8y/client';\nimport { C8yStepper, gettext } from '@c8y/ngx-components';\nimport { EcosystemService } from '@c8y/ngx-components/ecosystem/shared';\n\n@Component({\n selector: 'c8y-add-package',\n template: `<c8y-add-application\n [headerIcon]=\"'big-parcel'\"\n [headerText]=\"headerText\"\n [successText]=\"successText\"\n [createApplicationHandler]=\"createPackageAppHandler\"\n [uploadApplicationHandler]=\"uploadPackageHandler\"\n [applicationType]=\"'package'\"\n ></c8y-add-application>`,\n standalone: false\n})\nexport class AddPackageComponent {\n @ViewChild(C8yStepper, { static: true })\n stepper: C8yStepper;\n headerText: string = gettext('Add extension package');\n successText: string = gettext('Extension package created');\n\n constructor(private ecosystemService: EcosystemService) {}\n\n createPackageAppHandler = (f: File) => this.createPackageApp(f);\n uploadPackageHandler = (f: File, app: IApplication) => this.uploadPackage(f, app);\n\n async createPackageApp(file: File): Promise<IApplication> {\n await this.ecosystemService.isValidAppType(file, ApplicationType.HOSTED);\n return await this.ecosystemService.createAppForArchive(file, true);\n }\n\n uploadPackage(file: File, pckg: IApplication): Promise<IApplication> {\n return this.ecosystemService.uploadArchiveToApp(file, pckg, true);\n }\n\n next() {\n this.stepper.next();\n }\n}\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { IApplication, IApplicationVersion } from '@c8y/client';\nimport {\n GainsightService,\n PluginsService,\n ViewContext,\n WizardComponent,\n gettext\n} from '@c8y/ngx-components';\nimport {\n ApplicationPropertiesFormComponent,\n EcosystemService,\n LicensedApplicationPlugin,\n PRODUCT_EXPERIENCE_ECOSYSTEM\n} from '@c8y/ngx-components/ecosystem/shared';\nimport { TranslateService } from '@ngx-translate/core';\nimport { pick } from 'lodash-es';\n\n@Component({\n selector: 'c8y-deploy-application',\n templateUrl: './deploy-application.component.html',\n standalone: false\n})\nexport class DeployApplicationComponent implements OnInit {\n CURRENT_LOCATION = location.href;\n\n inProgress = true;\n package: IApplication;\n isDeployed = false;\n deployedWithSuccess = false;\n newAppConfig: IApplication;\n deployedApp: IApplication;\n applicationHref: string;\n\n model = {\n selected: undefined,\n binary: {\n id: undefined\n }\n };\n canDeploy = false;\n\n @ViewChild(ApplicationPropertiesFormComponent)\n applicationPropertiesForm: ApplicationPropertiesFormComponent;\n\n readonly descriptionTemplate: string = gettext(\n 'Deploy application using \"{{ packageName }}\" package'\n );\n readonly successMessageTemplate = gettext('Application \"{{ packageName }}\" created');\n readonly doneLabel = gettext('Done');\n readonly cancelLabel = gettext('Cancel');\n headerText: string;\n\n constructor(\n private ecosystemService: EcosystemService,\n private wizardComponent: WizardComponent,\n private translate: TranslateService,\n private pluginService: PluginsService,\n private gainsightService: GainsightService,\n private router: Router\n ) {\n this.package = (this.wizardComponent as any).package;\n }\n\n async ngOnInit() {\n const apps = await this.ecosystemService.getHostedAndPackageApplications();\n this.newAppConfig = this.ecosystemService.getUniqueAppConfig(this.package, apps);\n this.headerText = this.getHeaderText();\n this.inProgress = false;\n }\n\n async deployApp() {\n this.inProgress = true;\n const formGroupValue = this.applicationPropertiesForm.formGroup.getRawValue();\n // Verify if selected package version is compatible with current platform versions.\n this.package.manifest.version = this.model.selected.version;\n const verifyVersionCompatibility =\n await this.ecosystemService.verifyBlueprintVersionsCompatibility(this.package.manifest);\n\n if (!verifyVersionCompatibility) {\n this.cancel();\n return;\n }\n\n const { contextPath, license, name, manifest } = this.package;\n const type = this.pluginService.getPackageType(this.package);\n const licensedApp: LicensedApplicationPlugin = {\n contextPath,\n license: license || manifest.license,\n name,\n type,\n version: this.model.selected.version\n };\n\n const isArchived = await this.ecosystemService.verifyArchived([licensedApp]);\n if (!isArchived) {\n this.cancel();\n return;\n }\n\n const licensesVerifiedByUser = await this.ecosystemService.verifyLicenses([licensedApp]);\n if (!licensesVerifiedByUser) {\n this.cancel();\n return;\n }\n\n try {\n this.deployedApp = await this.ecosystemService.deployApp(\n this.package,\n formGroupValue,\n this.model\n );\n const applicationCustomEventInfo = pick(this.package, [\n 'id',\n 'name',\n 'contextPath',\n 'label',\n 'key'\n ] satisfies (keyof IApplication)[]);\n\n this.deployedWithSuccess = true;\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.DEPLOY_APPLICATION,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.DEPLOY_APPLICATION,\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.DEPLOY_APPLICATION,\n result: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.RESULTS.DEPLOYED,\n url: this.CURRENT_LOCATION,\n ...applicationCustomEventInfo,\n package: this.deployedApp?.manifest?.package ?? null\n }\n );\n } catch (error) {\n this.ecosystemService.alertError(error);\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.DEPLOY_APPLICATION,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.DEPLOY_APPLICATION,\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.DEPLOY_APPLICATION,\n result: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.RESULTS.SERVER_FAILURE,\n url: this.CURRENT_LOCATION,\n error\n }\n );\n } finally {\n this.markAsDeployed();\n }\n }\n\n cancel() {\n this.wizardComponent.close();\n }\n\n onAppVersionSelect(appVersion: IApplicationVersion) {\n Object.assign(this.model, {\n selected: appVersion\n });\n this.canDeploy = true;\n }\n\n open() {\n this.router.navigateByUrl(ViewContext.Application.replace(':id', `${this.deployedApp.id}`));\n this.cancel();\n }\n\n private markAsDeployed() {\n this.isDeployed = true;\n this.inProgress = false;\n }\n\n private getHeaderText() {\n return this.translate.instant(this.descriptionTemplate, {\n packageName: this.package.name\n });\n }\n}\n","<c8y-wizard-header>\n <div class=\"modal-header dialog-header\">\n <i c8yIcon=\"output\"></i>\n <h4 id=\"modal-title\">{{ 'Deploy application' | translate }}</h4>\n </div>\n</c8y-wizard-header>\n\n<c8y-wizard-body id=\"modal-body\">\n <ng-container *ngIf=\"!isDeployed\">\n <div class=\"fadeIn animated d-flex a-i-center j-c-center d-col\" style=\"min-height: 309px\">\n <p\n class=\"bg-level-0 fit-w p-16 text-center text-medium sticky-top bg-level-0 separator-bottom\"\n *ngIf=\"!inProgress\"\n >\n {{ headerText | translate }}\n </p>\n <c8y-application-properties-form\n *ngIf=\"!inProgress\"\n [application]=\"newAppConfig\"\n class=\"d-block fit-w bg-level-1\"\n ></c8y-application-properties-form>\n\n <ng-container *ngIf=\"!inProgress\">\n <div [ngStyle]=\"{ padding: '0 16px' }\" class=\"d-block fit-w bg-gray-white\">\n <c8y-package-version-select\n [ngModel]=\"model.selected\"\n (ngModelChange)=\"onAppVersionSelect($event)\"\n [packageId]=\"package?.id\"\n [label]=\"'Use extension package version' | translate\"\n ></c8y-package-version-select>\n </div>\n </ng-container>\n\n <c8y-loading\n *ngIf=\"inProgress\"\n [message]=\"'Deploying…' | translate\"\n class=\"text-center\"\n layout=\"application\"\n ></c8y-loading>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"isDeployed\">\n <div\n *ngIf=\"deployedWithSuccess; else failedDeploy\"\n class=\"modal-body fadeIn animated\"\n style=\"min-height: 309px\"\n >\n <div class=\"d-flex a-i-center j-c-center d-col\">\n <c8y-operation-result\n type=\"success\"\n [size]=\"84\"\n [vertical]=\"true\"\n [text]=\"successMessageTemplate | translate: { packageName: package.name }\"\n class=\"lead d-block m-b-16\"\n ></c8y-operation-result>\n </div>\n </div>\n <ng-template #failedDeploy>\n <div class=\"modal-body fadeIn animated text-center\" style=\"min-height: 257px\">\n <c8y-operation-result\n type=\"error\"\n [size]=\"84\"\n [vertical]=\"true\"\n text=\"{{ 'Application creation failed' | translate }}\"\n class=\"lead\"\n ></c8y-operation-result>\n </div>\n </ng-template>\n </ng-container>\n</c8y-wizard-body>\n\n<c8y-wizard-footer>\n <button\n (click)=\"cancel()\"\n type=\"button\"\n class=\"btn btn-default\"\n data-cy=\"c8y-deploy-application--cancel-blueprint-button\"\n title=\"{{ (isDeployed && deployedWithSuccess ? doneLabel : cancelLabel) | translate }}\"\n >\n {{ (isDeployed && deployedWithSuccess ? doneLabel : cancelLabel) | translate }}\n </button>\n\n <button\n (click)=\"deployApp()\"\n *ngIf=\"!isDeployed\"\n [disabled]=\"inProgress || !canDeploy\"\n [ngClass]=\"{ 'btn-pending': inProgress }\"\n class=\"btn btn-primary\"\n type=\"button\"\n data-cy=\"c8y-deploy-application--deploy-blueprint-button\"\n title=\"{{ 'Deploy' | translate }}\"\n >\n {{ 'Deploy' | translate }}\n </button>\n\n <button\n (click)=\"open()\"\n type=\"button\"\n class=\"btn btn-primary\"\n *ngIf=\"isDeployed && deployedWithSuccess\"\n title=\"{{ 'Open the application details' | translate }}\"\n translate\n >\n Open\n </button>\n</c8y-wizard-footer>\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { ApplicationAvailability, IApplication } from '@c8y/client';\nimport {\n ApplicationPlugin,\n AppStateService,\n ContextRouteService,\n GainsightService,\n PackageType,\n PluginsService,\n PropertiesListItem,\n WizardModalService\n} from '@c8y/ngx-components';\nimport { ModalOptions } from 'ngx-bootstrap/modal';\nimport { BehaviorSubject } from 'rxjs';\nimport {\n ApplicationState,\n EcosystemService,\n EcosystemWizards,\n packageProperties,\n PACKAGE_TYPE_LABELS,\n PackageAvailabilityService,\n PRODUCT_EXPERIENCE_ECOSYSTEM\n} from '@c8y/ngx-components/ecosystem/shared';\n\n@Component({\n selector: 'c8y-package-details',\n templateUrl: './package-details.component.html',\n standalone: false\n})\nexport class PackageDetailsComponent implements OnInit {\n markdown: string;\n pluginMarkdown: string;\n baseUrl: string;\n pluginBaseUrl: string;\n package: IApplication = {};\n name: string;\n description: string;\n appState: ApplicationState;\n isPackageBlueprint: boolean;\n exportedPlugins$: BehaviorSubject<ApplicationPlugin[]> = new BehaviorSubject([]);\n isChangingAvailability = false;\n isOwnedByCurrentTenant = false;\n isAllowedToCreateSubtenants = false;\n packageContentState: ApplicationState;\n packageType: PackageType;\n packageAvailability: ApplicationAvailability;\n selectedPlugin: ApplicationPlugin;\n\n readonly packageTypeLabels = PACKAGE_TYPE_LABELS;\n readonly PACKAGE_TYPE = PackageType;\n readonly packageProperties: PropertiesListItem[] = packageProperties;\n\n constructor(\n private activatedRoute: ActivatedRoute,\n private wizardModalService: WizardModalService,\n private ecosystemService: EcosystemService,\n private contextRouteService: ContextRouteService,\n private pluginsService: PluginsService,\n private packageAvailabilityService: PackageAvailabilityService,\n private ui: AppStateService,\n private gainsightService: GainsightService\n ) {}\n\n async ngOnInit() {\n this.isAllowedToCreateSubtenants = !!this.ui.currentTenant.value?.allowCreateTenants;\n await this.loadData();\n }\n\n deploy() {\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.PACKAGE_PLUGINS,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.PACKAGE_DETAILS,\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.DEPLOY_APPLICATION_INITIATED\n }\n );\n\n const initialState: any = {\n wizardConfig: {},\n id: EcosystemWizards.BLUEPRINT_DEPLOYMENT,\n package: this.package\n };\n const modalOptions: ModalOptions = { initialState };\n this.wizardModalService.show(modalOptions);\n }\n\n async togglePackageAvailability(pckg: IApplication, newAvailability: ApplicationAvailability) {\n this.isChangingAvailability = true;\n pckg = await this.packageAvailabilityService.askIfAvailabilityShouldBeSetTo(\n pckg,\n newAvailability\n );\n const availabilityHasChanged = pckg.availability === newAvailability;\n if (availabilityHasChanged) {\n await this.loadData(pckg);\n this.contextRouteService.setContext(this.activatedRoute, pckg);\n } else {\n this.packageAvailability = this.package.availability;\n }\n this.isChangingAvailability = false;\n }\n\n async showPluginOverview(plugin: ApplicationPlugin) {\n this.selectedPlugin = plugin;\n const baseUrl = `/apps/${plugin.id}/`;\n this.pluginBaseUrl = baseUrl;\n this.pluginMarkdown = await this.pluginsService.getReadmeFileContent(baseUrl);\n }\n\n closeOverview(): void {\n this.selectedPlugin = null;\n }\n\n private async loadData(pckg?: IApplication) {\n this.package = pckg\n ? pckg\n : this.contextRouteService.getContextData(this.activatedRoute)?.contextData;\n this.packageAvailability = this.package.availability;\n this.packageContentState = this.ecosystemService.getPackageContentState(this.package);\n this.packageType = this.pluginsService.getPackageType(this.package);\n this.name = this.package?.name;\n this.description = this.package?.manifest?.description;\n const baseUrl = `/apps/${this.package.contextPath}/`;\n this.markdown = await this.pluginsService.getReadmeFileContent(baseUrl);\n this.baseUrl = baseUrl;\n this.appState = this.ecosystemService.getAppState(this.package);\n this.isPackageBlueprint = this.ecosystemService.isPackageBlueprint(this.package);\n this.isOwnedByCurrentTenant =\n this.package?.owner?.tenant?.id === this.ui.currentTenant.value?.name;\n this.extractPackageMFExports();\n }\n\n private extractPackageMFExports() {\n const exports = this.pluginsService.getMFExports(this.package);\n this.exportedPlugins$.next(exports);\n }\n}\n","<c8y-title>{{ name | humanizeAppName | async }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-atom'\"\n [label]=\"'Ecosystem' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'big-parcel'\"\n [label]=\"'Extensions' | translate\"\n [path]=\"'ecosystem/extension/extensions'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"name | humanizeAppName | async\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Extension package' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item\n placement=\"right\"\n itemClass=\"navbar-form\"\n *ngIf=\"isOwnedByCurrentTenant && isAllowedToCreateSubtenants\"\n>\n <div class=\"d-flex a-i-center\">\n <label\n class=\"m-b-0 m-r-8\"\n for=\"availability\"\n translate\n >\n Availability`of package based on app state`\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"availability\"\n [(ngModel)]=\"packageAvailability\"\n [disabled]=\"isChangingAvailability\"\n (ngModelChange)=\"togglePackageAvailability(package, $event)\"\n >\n <option\n *ngFor=\"let availability of packageAvailabilityService.availabilities\"\n [ngValue]=\"availability.value\"\n >\n {{ availability.label | translate }}\n </option>\n </select>\n </div>\n </div>\n</c8y-action-bar-item>\n\n<div\n class=\"card content-fullpage d-grid grid__row--fit-auto\"\n [ngClass]=\"{ 'grid__col--8-4-0': !selectedPlugin, 'grid__col--0-4-8': !!selectedPlugin }\"\n>\n <div class=\"bg-level-1 grid__col--fullspan separator-bottom\">\n <div class=\"card-block p-t-24 p-b-24 large-padding\">\n <button\n class=\"card__ribbon btn-clean\"\n [attr.aria-label]=\"\n (package.label || package.manifest.label | translatePackageLabel) +\n ': ' +\n (packageTypeLabels[packageType].tooltip | translate)\n \"\n tooltip=\"{{ packageTypeLabels[packageType].tooltip | translate }}\"\n placement=\"bottom\"\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 {{ package.label || package.manifest.label | translatePackageLabel }}\n </span>\n </button>\n <div class=\"content-flex-70\">\n <div class=\"text-center\">\n <i\n class=\"c8y-icon-duocolor icon-48\"\n c8yIcon=\"big-parcel\"\n ></i>\n <button\n class=\"btn-clean\"\n [attr.aria-label]=\"\n (appState?.label | translate) + ': ' + (appState?.tooltip | translate)\n \"\n [tooltip]=\"appState?.tooltip | translate\"\n placement=\"top\"\n type=\"button\"\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 | translate)\n \"\n [tooltip]=\"packageContentState?.tooltip | translate\"\n placement=\"bottom\"\n type=\"button\"\n [delay]=\"500\"\n >\n <span\n class=\"label\"\n [ngClass]=\"packageContentState?.class\"\n >\n {{ packageContentState?.label | translate }}\n </span>\n </button>\n </div>\n\n <div class=\"flex-grow col-10\">\n <div class=\"content-flex-80\">\n <div class=\"col-8\">\n <div class=\"card-title h4 m-b-8\">{{ name | humanizeAppName | async }}</div>\n <p *ngIf=\"description\">{{ description }}</p>\n <p\n class=\"text-muted\"\n *ngIf=\"!description\"\n >\n <em>{{ 'No description available.' | translate }}</em>\n </p>\n </div>\n <div\n class=\"col-3 text-right-md p-r-md-40\"\n *ngIf=\"isPackageBlueprint\"\n >\n <button\n class=\"btn btn-primary btn-sm\"\n (click)=\"deploy()\"\n data-cy=\"c8y-package-details--deploy-application-button\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"output\"\n ></i>\n {{ 'Deploy application' | translate }}\n </button>\n </div>\n <div class=\"flex-grow\">\n <c8y-properties-list\n [data]=\"package.manifest\"\n [properties]=\"packageProperties\"\n ></c8y-properties-list>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"inner-scroll\">\n <div class=\"card-header separator sticky-top\">\n <div class=\"card-title\">{{ 'Extension package overview' | translate }}</div>\n </div>\n <div class=\"card-block p-l-16 p-r-16\">\n <div\n class=\"alert alert-warning m-b-16\"\n style=\"margin: auto\"\n *ngIf=\"packageType === PACKAGE_TYPE.ARCHIVED\"\n translate\n >\n The package was archived by the owner marking it as out of maintenance. It is not\n recommended to install the package.\n </div>\n <c8y-ui-empty-state\n [icon]=\"'user-manual'\"\n [title]=\"'No README.md found' | translate\"\n [subtitle]=\"\n 'To view the contents of "README", add the file "README.md" to the package.'\n | translate\n \"\n *ngIf=\"!markdown\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n <div\n class=\"markdown-content\"\n [innerHTML]=\"markdown | markdownToHtml: { baseUrl } | async\"\n ></div>\n </div>\n <div class=\"separator-bottom visible-sm visible-xs\"></div>\n </div>\n\n <div\n class=\"inner-scroll d-flex d-col bg-level-1 split-view__list\"\n [ngClass]=\"{ 'border-right': !!selectedPlugin }\"\n >\n <div class=\"card-header separator sticky-top\">\n <div class=\"card-title\">{{ 'Package plugins' | translate }}</div>\n </div>\n <div class=\"border-left flex-grow\">\n <!-- empty state -->\n <div\n class=\"p-16\"\n *ngIf=\"(exportedPlugins$ | async).length === 0\"\n >\n <c8y-ui-empty-state\n [icon]=\"'plugin'\"\n [title]=\"'No plugins to display.' | translate\"\n [subtitle]=\"'This package doesn\\'t contain plugins.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n <c8y-plugin-list\n [plugins$]=\"exportedPlugins$\"\n [selectable]=\"false\"\n [installable]=\"true\"\n [package]=\"package\"\n [selectedPlugin]=\"selectedPlugin\"\n (showOverview)=\"showPluginOverview($event)\"\n ></c8y-plugin-list>\n </div>\n </div>\n\n <div class=\"inner-scroll split-view__detail\"\n [ngClass]=\"{ 'split-view__detail--selected': selectedPlugin }\">\n <div\n class=\"card-header separator sticky-top\"\n *ngIf=\"selectedPlugin\"\n >\n <button\n class=\"btn-clean\"\n (click)=\"closeOverview()\"\n >\n <i c8yIcon=\"caret-back\"></i>\n {{ 'Back to package overview ' | translate }}\n </button>\n </div>\n <div\n class=\"card-block p-l-16 p-r-16 overflow-visible\"\n *ngIf=\"selectedPlugin\"\n >\n <div\n class=\"markdown-content\"\n *ngIf=\"pluginMarkdown\"\n [innerHTML]=\"pluginMarkdown | markdownToHtml: { baseUrl: pluginBaseUrl } | async\"\n ></div>\n <c8y-ui-empty-state\n [icon]=\"'user-manual'\"\n [title]=\"'No README.md found for plugin' | translate\"\n [subtitle]=\"\n 'To view the contents of "README", add the file "README.md" to the plugin.'\n | translate\n \"\n *ngIf=\"!pluginMarkdown\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n </div>\n</div>\n","import { Component, OnDestroy, ViewChild } from '@angular/core';\nimport { IApplication } from '@c8y/client';\nimport { gettext, Permissions, WizardModalService } from '@c8y/ngx-components';\nimport {\n APP_STATE,\n defaultPackageContents,\n defaultPackageTypes,\n EcosystemService,\n EcosystemWizards,\n FilterableAppOrPlugin,\n FilterPipe,\n ListFiltersComponent,\n PackageFilters\n} from '@c8y/ngx-components/ecosystem/shared';\nimport { ModalOptions } from 'ngx-bootstrap/modal';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { shareReplay, switchMap, takeUntil, tap } from 'rxjs/operators';\n\n@Component({\n selector: 'c8y-packages-list',\n templateUrl: './packages-list.component.html',\n standalone: false\n})\nexport class PackagesListComponent implements OnDestroy {\n reloading = false;\n reload$: BehaviorSubject<void> = new BehaviorSubject(null);\n\n packages$: Observable<IApplication[]>;\n filteredPackages$: Observable<FilterableAppOrPlugin[]>;\n listClass: string;\n hasAdminPermissions = false;\n emptyStateSubtitle = gettext('Add your first package by clicking below.');\n packageTypes = defaultPackageTypes;\n packageAvailabilities: (keyof PackageFilters['availability'])[] = [\n APP_STATE.SUBSCRIBED.label,\n APP_STATE.CUSTOM.label\n ];\n packageContents = defaultPackageContents;\n @ViewChild(ListFiltersComponent) filtersComponent: ListFiltersComponent;\n private destroy$: Subject<boolean> = new Subject<boolean>();\n\n constructor(\n private ecosystemService: EcosystemService,\n private wizardModalService: WizardModalService,\n private permissions: Permissions\n ) {\n this.packages$ = this.reload$.pipe(\n takeUntil(this.destroy$),\n tap(() => (this.reloading = true)),\n switchMap(() => this.ecosystemService.getPackageApplications()),\n tap(packages => {\n packages.forEach(pckg => {\n pckg.filterProps = this.ecosystemService.getAppFilterProps(pckg);\n });\n }),\n tap(() => (this.reloading = false)),\n shareReplay(1)\n );\n }\n\n ngOnInit() {\n this.hasAdminPermissions = this.permissions.hasRole(\n Permissions.ROLE_APPLICATION_MANAGEMENT_ADMIN\n );\n this.loadPackages();\n }\n\n loadPackages() {\n this.reload$.next();\n }\n\n addPackage() {\n const initialState: Record<string, unknown> = {\n id: EcosystemWizards.PACKAGE_UPLOAD\n };\n const modalOptions: ModalOptions = { initialState };\n\n const modalRef = this.wizardModalService.show(modalOptions);\n modalRef.content.onClose.subscribe(() => {\n this.loadPackages();\n });\n }\n\n ngOnDestroy() {\n this.destroy$.next(true);\n this.destroy$.complete();\n }\n\n setFilterPipe(pipe: FilterPipe) {\n this.filteredPackages$ = this.packages$.pipe(src => pipe(src));\n }\n\n resetFilters() {\n this.filtersComponent?.resetAllFilters();\n }\n}\n","<c8y-title>{{ 'Extensions' | translate }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-atom'\"\n [label]=\"'Ecosystem' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'big-parcel'\"\n [path]=\"'ecosystem/extension/extensions'\"\n [label]=\"'Extensions' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n *ngIf=\"hasAdminPermissions\"\n>\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Add extension package' | translate }}\"\n type=\"button\"\n data-cy=\"packages-list--add-extension-package\"\n (click)=\"addPackage()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add extension package' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Reload' | translate }}\"\n type=\"button\"\n (click)=\"loadPackages()\"\n >\n <i\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': reloading }\"\n ></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'left'\"\n itemClass=\"p-r-8 p-l-8\"\n>\n <c8y-list-filters\n *ngIf=\"packages$ | async\"\n [packageTypes]=\"packageTypes\"\n [packageAvailabilities]=\"packageAvailabilities\"\n [packageContents]=\"packageContents\"\n (filterPipeChange)=\"setFilterPipe($event)\"\n >\n <c8y-archived-filter></c8y-archived-filter>\n </c8y-list-filters>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'left'\"\n itemClass=\"navbar-form hidden-xs\"\n>\n <c8y-list-display-switch\n (onListClassChange)=\"listClass = $event\"\n [listLength]=\"(packages$ | async)?.length\"\n ></c8y-list-display-switch>\n</c8y-action-bar-item>\n\n<c8y-help src=\"/docs/standard-tenant/ecosystem/#extensions\"></c8y-help>\n\n<div\n class=\"card-group\"\n [ngClass]=\"listClass\"\n>\n <div\n class=\"page-sticky-header hidden-xs d-flex m-b-8\"\n *ngIf=\"(filteredPackages$ | async)?.length > 0\"\n >\n <div class=\"card-block card-column-40\">\n <div class=\"card-appicon p-l-32 p-r-16 m-r-0 m-l-4\"></div>\n {{ 'Package' | translate }}\n </div>\n <div class=\"card-block p-0 card-column-80 m-r-40\">\n <div class=\"card-block card-column-80\">{{ 'Description' | translate }}</div>\n <div class=\"card-block card-column-20\">{{ 'Type' | translate }}</div>\n <div class=\"card-block card-column-20\"></div>\n </div>\n </div>\n <div\n class=\"col-xs-12 col-sm-4 col-md-3\"\n *ngFor=\"let app of filteredPackages$ | async\"\n >\n <c8y-application-card\n class=\"d-contents\"\n (onAppDeleted)=\"loadPackages()\"\n (onAppCloned)=\"loadPackages()\"\n [app]=\"app\"\n ></c8y-application-card>\n </div>\n</div>\n\n<c8y-ui-empty-state\n [icon]=\"'big-parcel'\"\n [title]=\"'No extensions to display.' | translate\"\n [subtitle]=\"hasAdminPermissions ? (emptyStateSubtitle | translate) : ''\"\n *ngIf=\"(packages$ | async)?.length === 0\"\n>\n <div *ngIf=\"hasAdminPermissions\">\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Add extension package' | translate }}\"\n type=\"button\"\n (click)=\"addPackage()\"\n >\n {{ 'Add extension package' | translate }}\n </button>\n </div>\n</c8y-ui-empty-state>\n\n<c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No matching extensions.' | translate\"\n [subtitle]=\"'Refine your search terms and/or the filters' | translate\"\n *ngIf=\"(packages$ | async)?.length > 0 && (filteredPackages$ | async)?.length === 0\"\n>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Reset filters' | translate }}\"\n type=\"button\"\n (click)=\"resetFilters()\"\n >\n {{ 'Reset filters' | translate }}\n </button>\n</c8y-ui-empty-state>\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot } from '@angular/router';\n\n@Injectable()\nexport class PackageVersionsGuard {\n canActivate(route: ActivatedRouteSnapshot) {\n const app = route.data.contextData || route.parent.data.contextData;\n return !!app?.applicationVersions?.length;\n }\n}\n","import { IManifest } from '@c8y/client';\nimport { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'c8y-contents-apps',\n templateUrl: './contents-apps.component.html',\n standalone: false\n})\nexport class PackageVersionsAppsComponent {\n @Input('selectedVersionManifest') selectedVersionManifest: IManifest;\n}\n","<p class=\"legend form-block\">\n {{ 'Application' | translate }}\n</p>\n\n<div *ngIf=\"selectedVersionManifest?.name; else emptyApp\">\n <c8y-li>\n <c8y-li-icon icon=\"big-parcel\"></c8y-li-icon>\n <h5 class=\"text-medium text-16 p-b-8\">\n {{ selectedVersionManifest?.name | humanizeAppName | async }}\n <small class=\"m-l-8\" *ngIf=\"selectedVersionManifest?.requiredPlatformVersion\">\n <em>{{ selectedVersionManifest?.requiredPlatformVersion }}</em>\n </small>\n </h5>\n <p *ngIf=\"selectedVersionManifest?.description; else notAvailable\">\n {{ selectedVersionManifest?.description }}\n </p>\n </c8y-li>\n</div>\n\n<ng-template #notAvailable>\n <p class=\"text-muted\">\n <em>{{ 'No description available.' | translate }}</em>\n </p>\n</ng-template>\n\n<ng-template #emptyApp>\n <c8y-ui-empty-state\n [icon]=\"'big-parcel'\"\n [horizontal]=\"true\"\n [title]=\"'No application.' | translate\"\n [subtitle]=\"'This package doesn\\'t contain an application.' | translate\"\n ></c8y-ui-empty-state>\n</ng-template>","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { IApplication, IManifest } from '@c8y/client';\nimport { ApplicationPlugin, PluginsService } from '@c8y/ngx-components';\nimport { BehaviorSubject } from 'rxjs';\n\n@Component({\n selector: 'c8y-contents-plugins',\n templateUrl: './contents-plugins.component.html',\n standalone: false\n})\nexport class PackageVersionsPluginsComponent {\n @Input('selectedVersionManifest') selectedVersionManifest: IManifest;\n @Input() selectedPlugin: ApplicationPlugin;\n @Output() showOverview = new EventEmitter<ApplicationPlugin>();\n\n exportedPlugins$: BehaviorSubject<ApplicationPlugin[]> = new BehaviorSubject([]);\n\n private appParentData: IApplication;\n\n constructor(private activatedRoute: ActivatedRoute) {\n this.appParentData = this.activatedRoute.parent?.snapshot.data.contextData;\n }\n\n async ngOnChanges() {\n this.exportedPlugins$.next(this.getExportedPlugins());\n }\n\n showPluginOverview(plugin: ApplicationPlugin) {\n this.showOverview.emit(plugin);\n }\n\n private getExportedPlugins(): ApplicationPlugin[] {\n if (!this.selectedVersionManifest?.exports) {\n return [];\n }\n\n const originApp = {\n label: this.appParentData?.label || this.appParentData?.manifest.label,\n owner: this.appParentData?.owner\n };\n\n return this.selectedVersionManifest.exports.map(plugin => ({\n ...plugin,\n id: PluginsService.createPluginId(\n this.selectedVersionManifest.contextPath,\n plugin,\n this.selectedVersionManifest.version,\n false\n ),\n originApp\n }));\n }\n}\n","<p class=\"legend form-block\">\n {{ 'Plugins' | translate }}\n</p>\n<!-- empty state -->\n<c8y-ui-empty-state\n [icon]=\"'plugin'\"\n [title]=\"'No plugins to display.' | translate\"\n [subtitle]=\"'This package doesn\\'t contain plugins.' | translate\"\n *ngIf=\"(exportedPlugins$ | async).length === 0\"\n [horizontal]=\"true\"\n></c8y-ui-empty-state>\n\n<c8y-plugin-list\n [plugins$]=\"exportedPlugins$\"\n [selectable]=\"false\"\n [selectedPlugin]=\"selectedPlugin\"\n (showOverview)=\"showPluginOverview($event)\"\n></c8y-plugin-list>\n","import { Component, EventEmitter, Input, Output, SimpleChanges } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { ApplicationService, IApplication, IManifest } from '@c8y/client';\nimport {\n AlertService,\n ApplicationPlugin,\n ContextRouteService,\n PropertiesListItem\n} from '@c8y/ngx-components';\nimport { packageProperties } from '@c8y/ngx-components/ecosystem/shared';\n\n@Component({\n selector: 'c8y-package-contents',\n templateUrl: './packages-contents.component.html',\n standalone: false\n})\nexport class PackageContentsComponent {\n @Input() selectedVersion: string;\n @Input() selectedPlugin: ApplicationPlugin;\n @Output() showOverview = new EventEmitter<ApplicationPlugin>();\n\n selectedVersionManifest: IManifest;\n package: IApplication = {};\n isLoading = false;\n previousVersion: string | null;\n\n readonly packageVersionProperties: PropertiesListItem[] = packageProperties;\n\n constructor(\n private activatedRoute: ActivatedRoute,\n private applicationService: ApplicationService,\n private alertService: AlertService,\n private contextRouteService: ContextRouteService\n ) {}\n\n showPluginOverview(plugin: ApplicationPlugin) {\n this.showOverview.emit(plugin);\n }\n\n async ngOnChanges(changes: SimpleChanges) {\n if (changes.selectedVersion?.currentValue) {\n this.loadManifest(this.selectedVersion);\n this.previousVersion = this.getPreviousVersion();\n }\n }\n\n async loadManifest(version: string) {\n this.package = this.contextRouteService.getContextData(this.activatedRoute)?.contextData;\n this.isLoading = true;\n this.selectedVersionManifest = await this.getManifest(version);\n this.isLoading = false;\n }\n\n private async getManifest(version: string): Promise<IManifest> {\n try {\n return await this.applicationService.getAppManifest(this.package, version);\n } catch (error) {\n this.alertService.addServerFailure(error);\n }\n return undefined;\n }\n\n private getPreviousVersion() {\n if (this.package.applicationVersions.length === 1) {\n return null;\n }\n const selectedVersionIndex = this.package.applicationVersions.findIndex(\n version => version.version === this.selectedVersion\n );\n if (selectedVersionIndex === 0) {\n return null;\n }\n return this.package.applicationVersions[selectedVersionIndex - 1].version;\n }\n}\n","<ng-container *ngIf=\"!selectedVersionManifest && !isLoading\">\n <div class=\"p-16\">\n <c8y-ui-empty-state\n [icon]=\"'big-parcel'\"\n [title]=\"'No package selected' | translate\"\n [subtitle]=\"'Select a package from the list to display the package contents.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"isLoading\">\n <c8y-loading></c8y-loading>\n</ng-container>\n\n<ng-container *ngIf=\"selectedVersionManifest && !isLoading\">\n <!-- DETAILS -->\n <div class=\"card-block\">\n <c8y-properties-list\n [data]=\"selectedVersionManifest\"\n [emptyLabel]=\"'--'\"\n [properties]=\"packageVersionProperties\"\n ></c8y-properties-list>\n\n <!-- APPS -->\n <c8y-contents-apps\n class=\"p-t-16 d-block\"\n [selectedVersionManifest]=\"selectedVersionManifest\"\n ></c8y-contents-apps>\n\n <!-- PLUGINS -->\n <c8y-contents-plugins\n class=\"p-t-16 d-block\"\n [selectedVersionManifest]=\"selectedVersionManifest\"\n [selectedPlugin]=\"selectedPlugin\"\n (showOverview)=\"showPluginOverview($event)\"\n ></c8y-contents-plugins>\n\n <!-- CHANGELOG -->\n <p class=\"legend form-block\">\n {{ 'Change log' | translate }}\n </p>\n\n <c8y-contents-changelog\n [package]=\"package\"\n [selectedVersion]=\"selectedVersion\"\n [previousVersion]=\"previousVersion\"\n ></c8y-contents-changelog>\n </div>\n</ng-container>\n","import { Component, EventEmitter, OnInit, Output } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { IApplication, IApplicationVersion } from '@c8y/client';\nimport {\n AlertService,\n GainsightService,\n ModalService,\n OptionsService,\n Permissions,\n PluginsService,\n Status,\n gettext\n} from '@c8y/ngx-components';\nimport {\n EcosystemService,\n PRODUCT_EXPERIENCE_ECOSYSTEM\n} from '@c8y/ngx-components/ecosystem/shared';\nimport { TranslateService } from '@ngx-translate/core';\n\nconst DEFAULT_VERSIONS_LIMIT = 20;\n\n@Component({\n selector: 'c8y-package-versions-list',\n templateUrl: './package-versions-list.component.html',\n standalone: false\n})\nexport class PackageVersionsListComponent implements OnInit {\n CURRENT_LOCATION = location.href;\n\n versionsLimit: number;\n isLoading = false;\n package: IApplication;\n sortedVersions: IApplicationVersion[];\n selectedVersion: string;\n preUploadCallback: () => Promise<any>;\n hasAdminPermissions = false;\n isPackageOwnedByCurrentTenant = false;\n\n @Output() onVersionSelect = new EventEmitter<string | null>();\n\n constructor(\n private activatedRoute: ActivatedRoute,\n private pluginsService: PluginsService,\n private ecosystemService: EcosystemService,\n private translateService: TranslateService,\n private modal: ModalService,\n private alertService: AlertService,\n private optionsService: OptionsService,\n private permissions: Permissions,\n private gainsightService: GainsightService\n ) {}\n\n async ngOnInit() {\n this.isLoading = true;\n this.hasAdminPermissions = this.permissions.hasRole(\n Permissions.ROLE_APPLICATION_MANAGEMENT_ADMIN\n );\n this.package = this.activatedRoute?.snapshot?.parent?.data?.contextData;\n this.isPackageOwnedByCurrentTenant = this.ecosystemService.isOwner(this.package);\n this.versionsLimit = (await this.optionsService.getSystemOption(\n 'application',\n 'versions.limit',\n DEFAULT_VERSIONS_LIMIT\n )) as number;\n this.sortVersions();\n this.isLoading = false;\n }\n\n async downloadArchive(appVersion: IApplicationVersion): Promise<void> {\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.PACKAGE_VERSIONS,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.PACKAGE_VERSIONS,\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.DOWNLOAD,\n url: this.CURRENT_LOCATION\n }\n );\n const archiveMO = await this.ecosystemService.getArchiveManagedObject(appVersion.binaryId);\n await this.ecosystemService.downloadArchive(this.package, {\n id: appVersion.binaryId,\n name: archiveMO.name\n });\n }\n\n packageVersionUploaded() {\n this.activatedRoute.snapshot.parent.data.contextData = this.package;\n this.sortVersions();\n this.setUploadedVersionAsLatest();\n }\n\n selectVersion(version: string | null): void {\n this.selectedVersion = version;\n this.onVersionSelect.emit(version);\n }\n\n async removeVersionPackage(version: string) {\n try {\n await this.ecosystemService.deletePackageVersion(this.package, { version });\n this.alertService.success(\n this.translateService.instant(gettext('Package version {{version}} has been removed'), {\n version\n })\n );\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.PACKAGE_VERSIONS,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.PACKAGE_VERSIONS,\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.DELETE,\n result: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.RESULTS.SUCCESS,\n url: this.CURRENT_LOCATION\n }\n );\n } catch (e) {\n this.alertService.addServerFailure(e);\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.PACKAGE_VERSIONS,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.PACKAGE_VERSIONS,\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.DELETE,\n result: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.RESULTS.SERVER_FAILURE,\n url: this.CURRENT_LOCATION\n }\n );\n }\n if (version === this.selectedVersion) {\n this.selectVersion(null);\n }\n await this.refreshPackage();\n }\n\n async setVersionAsLatest(appVersion: IApplicationVersion) {\n try {\n await this.ecosystemService.setPackageVersionTag(this.package, appVersion.version, [\n ...appVersion.tags,\n 'latest'\n ]);\n\n // TODO added it due to: https://cumulocity.atlassian.net/browse/MTM-48553\n // Remove it when BE fixes issues with activeVersion.\n await this.ecosystemService.setAppActiveVersion(this.package, appVersion.binaryId);\n this.alertService.success(gettext('Tag has been set.'));\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.PACKAGE_VERSIONS,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.PACKAGE_VERSIONS,\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.SET_AS_LATEST,\n result: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.RESULTS.SUCCESS,\n url: this.CURRENT_LOCATION\n }\n );\n } catch (e) {\n this.alertService.addServerFailure(e);\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.PACKAGE_VERSIONS,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.PACKAGE_VERSIONS,\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.SET_AS_LATEST,\n result: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.RESULTS.SERVER_FAILURE,\n url: this.CURRENT_LOCATION\n }\n );\n return;\n }\n await this.refreshPackage();\n }\n\n async acknowledgeLimitReached() {\n await this.modal.acknowledge(\n gettext('Package limit exceeded'),\n this.translateService.instant(\n gettext(\n 'You have reached the maximum number of {{ versionsLimit }} package versions. To add another version, first delete one from the list.'\n ),\n { versionsLimit: this.versionsLimit }\n ),\n Status.INFO,\n gettext('Close')\n );\n throw undefined;\n }\n\n private async refreshPackage() {\n this.isLoading = true;\n this.package = await this.ecosystemService.getApplication(this.package.id);\n this.activatedRoute.snapshot.parent.data.contextData = this.package;\n this.sortVersions();\n this.isLoading = false;\n }\n\n private sortVersions() {\n this.sortedVersions = this.pluginsService.sortVersions(\n {\n list: this.package.applicationVersions,\n path: ['version']\n },\n 'desc'\n );\n this.toggleUploadPossibility();\n }\n\n private async setUploadedVersionAsLatest() {\n const uploadedVersion =\n this.package.applicationVersions[this.package.applicationVersions.length - 1];\n try {\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.PACKAGE_VERSIONS,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.PACKAGE_VERSIONS,\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.UPLOAD,\n result: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.RESULTS.SUCCESS,\n url: this.CURRENT_LOCATION\n }\n );\n await this.modal.confirm(\n gettext('Upload successful'),\n this.translateService.instant(\n gettext(\n 'Do you want to set version {{version}} as the latest? Deploying a new application will always use this version.'\n ),\n { version: uploadedVersion.version }\n ),\n Status.SUCCESS,\n {\n ok: gettext('Set as latest`version`'),\n cancel: gettext('Keep unchanged`version`')\n }\n );\n } catch (e) {\n await this.refreshPackage();\n return;\n }\n await this.setVersionAsLatest(uploadedVersion);\n }\n\n private toggleUploadPossibility() {\n this.preUploadCallback =\n this.sortedVersions.length < this.versionsLimit\n ? null\n : this.acknowledgeLimitReached.bind(this);\n }\n}\n","<div class=\"inner-scroll split-view__list\">\n <div class=\"card-header separator sticky-top bg-component\">\n <div class=\"card-title\" translate>Versions</div>\n </div>\n\n <div class=\"bg-level-1 flex-grow\">\n <div class=\"p-16\" *ngIf=\"isLoading\">\n <c8y-loading></c8y-loading>\n </div>\n <ul class=\"nav c8y-nav-stacked\" *ngIf=\"!isLoading\">\n <li\n class=\"c8y-stacked-item p-t-0 p-b-0 p-r-4\"\n [ngClass]=\"{ active: selectedVersion === applicationVersion.version }\"\n *ngFor=\"let applicationVersion of sortedVersions\"\n >\n <div\n class=\"flex-grow d-flex a-i-center gap-4 p-t-8 p-b-8\"\n (click)=\"selectVersion(applicationVersion.version)\"\n >\n <i c8yIcon=\"big-parcel\" class=\"icon-20\"></i>\n <span class=\"text-label-small\">\n {{ 'Version' | translate }}\n </span>\n <span class=\"text-medium\">{{ applicationVersion.version }}</span>\n <div class=\"text-truncate d-flex j-c-end flex-grow gap-4 flex-wrap m-l-auto\">\n <span *ngFor=\"let tag of applicationVersion.tags\" class=\"label label-info\">\n {{ tag }}\n </span>\n </div>\n </div>\n <div class=\"dropdown\" dropdown *ngIf=\"hasAdminPermissions && isPackageOwnedByCurrentTenant\">\n <button\n class=\"dropdown-toggle c8y-dropdown\"\n type=\"button\"\n title=\"{{ 'Settings' | translate }}\"\n dropdownToggle\n >\n <i c8yIcon=\"ellipsis-v\"></i>\n </button>\n <ul *dropdownMenu class=\"dropdown-menu dropdown-menu-right\">\n <li>\n <button\n type=\"button\"\n title=\"{{ 'Set as latest`version`' | translate }}\"\n (click)=\"setVersionAsLatest(applicationVersion)\"\n [disabled]=\"applicationVersion.tags?.includes('latest')\"\n >\n <i c8yIcon=\"collect\" class=\"m-r-4\"></i>\n {{ 'Set as latest`version`' | translate }}\n </button>\n </li>\n <li>\n <button\n type=\"button\"\n title=\"{{ 'Download' | translate }}\"\n (click)=\"downloadArchive(applicationVersion)\"\n >\n <i c8yIcon=\"download\" class=\"m-r-4\"></i>\n {{ 'Download' | translate }}\n </button>\n </li>\n <li>\n <button\n type=\"button\"\n title=\"{{ 'Delete' | translate }}\"\n (click)=\"removeVersionPackage(applicationVersion.version)\"\n [disabled]=\"applicationVersion.tags?.includes('latest')\"\n >\n <i c8yIcon=\"trash\" class=\"m-r-4\"></i>\n {{ 'Delete' | translate }}\n </button>\n </li>\n </ul>\n </div>\n </li>\n </ul>\n </div>\n\n <div\n class=\"card-footer separator sticky-bottom\"\n *ngIf=\"!isLoading && isPackageOwnedByCurrentTenant\"\n >\n <div class=\"form-group m-b-0\">\n <label translate>Upload a new version</label>\n <c8y-upload-archive\n [(application)]=\"package\"\n [uploadNewVersion]=\"true\"\n (refresh)=\"packageVersionUploaded()\"\n [preUploadCallback]=\"preUploadCallback\"\n ></c8y-upload-archive>\n </div>\n </div>\n</div>\n","import { Component } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { IApplication } from '@c8y/client';\nimport {\n ApplicationPlugin,\n ContextRouteService,\n gettext,\n PluginsService\n} from '@c8y/ngx-components';\n\n@Component({\n selector: 'c8y-package-versions',\n templateUrl: './packages-versions.component.html',\n standalone: false\n})\nexport class PackageVersionsComponent {\n package: IApplication = {};\n selectedVersion: string;\n selectedPlugin: ApplicationPlugin;\n pluginBaseUrl: string;\n pluginMarkdown: string;\n packageContentsTitle = gettext('Version {{ selectedVersion }} package contents');\n\n constructor(\n private activatedRoute: ActivatedRoute,\n private contextRouteService: ContextRouteService,\n private pluginsService: PluginsService\n ) {}\n\n async ngOnInit() {\n this.package = this.contextRouteService.getContextData(this.activatedRoute)?.contextData;\n }\n\n async showPluginOverview(plugin: ApplicationPlugin) {\n this.selectedPlugin = plugin;\n const baseUrl = `/apps/${plugin.id}/`;\n this.pluginBaseUrl = baseUrl;\n this.pluginMarkdown = await this.pluginsService.getReadmeFileContent(baseUrl);\n }\n\n closeOverview(): void {\n this.selectedPlugin = null;\n }\n\n clearSelectedVersion() {\n this.selectedVersion = null;\n }\n\n selectVersion(version: string) {\n if (this.selectedVersion !== version) {\n this.selectedVersion = version;\n this.closeOverview();\n }\n }\n}\n","<c8y-title>{{ package?.name | humanizeAppName | async }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-atom'\"\n [label]=\"'Ecosystem' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'big-parcel'\"\n [label]=\"'Extensions' | translate\"\n [path]=\"'ecosystem/extension/extensions'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"package?.name | humanizeAppName | async\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Versions' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<div\n class=\"card content-fullpage d-grid\"\n [ngClass]=\"{ 'grid__col--6-6-0': !selectedPlugin, 'grid__col--0-6-6': !!selectedPlugin }\"\n>\n <c8y-package-versions-list\n class=\"d-contents\"\n (onVersionSelect)=\"selectVersion($event)\"\n ></c8y-package-versions-list>\n\n <!-- Package contents -->\n <div\n class=\"inner-scroll split-view__detail\"\n [ngClass]=\"{ 'split-view__detail--selected': selectedVersion }\"\n >\n <div class=\"large-padding card-header separator visible-sm visible-xs fit-w sticky-top\">\n <div class=\"d-flex a-i-center\">\n <button\n class=\"btn-clean text-primary m-r-8\"\n title=\"{{ 'Back' | translate }}\"\n (click)=\"clearSelectedVersion()\"\n >\n <i c8yIcon=\"chevron-left\"></i>\n <span translate>Back</span>\n </button>\n <div class=\"card-title\">\n {{ packageContentsTitle | translate: { selectedVersion } }}\n </div>\n </div>\n </div>\n <div class=\"card-header large-padding separator sticky-top visible-md visible-lg\">\n <div class=\"card-title\">\n <ng-container *ngIf=\"selectedVersion\">\n {{ packageContentsTitle | translate: { selectedVersion } }}\n </ng-container>\n </div>\n </div>\n <div class=\"inner-scroll split-view__list\">\n <c8y-package-contents\n [selectedVersion]=\"selectedVersion\"\n [selectedPlugin]=\"selectedPlugin\"\n (showOverview)=\"showPluginOverview($event)\"\n ></c8y-package-contents>\n </div>\n </div>\n\n <!-- Plugin readme -->\n <div\n class=\"inner-scroll split-view__detail\"\n [ngClass]=\"{ 'split-view__detail--selected': selectedPlugin }\"\n >\n <div\n class=\"card-header separator sticky-top\"\n *ngIf=\"selectedPlugin\"\n >\n <button\n class=\"btn-clean\"\n (click)=\"closeOverview()\"\n >\n <i c8yIcon=\"caret-back\"></i>\n {{ 'Back to package versions overview ' | translate }}\n </button>\n </div>\n <div\n class=\"card-block p-l-16 p-r-16 overflow-visible\"\n *ngIf=\"selectedPlugin\"\n >\n <div\n class=\"markdown-content\"\n *ngIf=\"pluginMarkdown\"\n [innerHTML]=\"pluginMarkdown | markdownToHtml: { baseUrl: pluginBaseUrl } | async\"\n ></div>\n <c8y-ui-empty-state\n [icon]=\"'user-manual'\"\n [title]=\"'No README.md found for plugin' | translate\"\n [subtitle]=\"\n 'To view the contents of "README", add the file "README.md" to the plugin.'\n | translate\n \"\n *ngIf=\"!pluginMarkdown\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot } from '@angular/router';\nimport { EcosystemService } from '@c8y/ngx-components/ecosystem/shared';\n\n@Injectable()\nexport class PackageGuard {\n constructor(private ecosystemService: EcosystemService) {}\n\n canActivate(route: ActivatedRouteSnapshot) {\n const app = route.data.contextData || route.parent.data.contextData;\n if (!app) {\n return false;\n }\n return this.ecosystemService.isPackage(app);\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { IApplication } from '@c8y/client';\nimport {\n BreadcrumbComponent,\n BreadcrumbItemComponent,\n C8yTranslatePipe,\n ContextRouteService,\n HumanizeAppNamePipe,\n TitleComponent\n} from '@c8y/ngx-components';\nimport { AsyncPipe } from '@angular/common';\nimport { PackageChangelogComponent } from '@c8y/ngx-components/ecosystem/shared';\n\n@Component({\n selector: 'c8y-package-changelog-tab',\n templateUrl: './package-changelog-tab.component.html',\n standalone: true,\n imports: [\n PackageChangelogComponent,\n TitleComponent,\n HumanizeAppNamePipe,\n BreadcrumbComponent,\n BreadcrumbItemComponent,\n C8yTranslatePipe,\n AsyncPipe\n ]\n})\nexport class PackageChangelogTabComponent implements OnInit {\n package: IApplication = {};\n\n constructor(\n private activatedRoute: ActivatedRoute,\n private contextRouteService: ContextRouteService\n ) {}\n\n async ngOnInit() {\n this.package = this.contextRouteService.getContextData(this.activatedRoute)?.contextData;\n }\n}\n","<c8y-title>{{ package?.name | humanizeAppName | async }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-atom'\"\n [label]=\"'Ecosystem' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'big-parcel'\"\n [label]=\"'Extensions' | translate\"\n [path]=\"'ecosystem/extension/extensions'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"package?.name | humanizeAppName | async\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Change logs' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-contents-changelog [package]=\"package\"></c8y-contents-changelog>\n","import { inject, Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, Router } from '@angular/router';\nimport { PluginsService } from '@c8y/ngx-components';\n\n@Injectable()\nexport class PackageChangelogGuard {\n private pluginsService = inject(PluginsService);\n private router = inject(Router);\n\n async canActivate(route: ActivatedRouteSnapshot) {\n const app = route.data.contextData || route.parent.data.contextData;\n const packageChangelogUrl = `/apps/${app.contextPath}/`;\n const changelog = await this.pluginsService.getChangelogFileContent(packageChangelogUrl);\n\n return !!changelog;\n }\n}\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport {\n CoreModule,\n FormsModule,\n gettext,\n hookRoute,\n hookTab,\n hookWizard,\n Route,\n ViewContext\n} from '@c8y/ngx-components';\nimport { ArchivedConfirmModule } from '@c8y/ngx-components/ecosystem/archived-confirm';\nimport { LicenseConfirmModule } from '@c8y/ngx-components/ecosystem/license-confirm';\nimport { EcosystemWizards, SharedEcosystemModule } from '@c8y/ngx-components/ecosystem/shared';\nimport { IconSelectorModule } from '@c8y/ngx-components/icon-selector';\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { ActivityLogComponent } from './activity-log/activity-log.component';\nimport { ApplicationPluginsModule } from './application-plugins';\nimport { ApplicationPropertiesComponent } from './application-properties/application-properties.component';\nimport { ApplicationPropertiesGuard } from './application-properties/application-properties.guard';\nimport { SubscriptionModalComponent } from './application-properties/subscription-modal/subscription-modal.component';\nimport { UpdateApplicationModalComponent } from './application-properties/update-application-modal/update-application-modal.component';\nimport { AddExternalApplicationComponent } from './applications/add-external-applicaiton/add-external-application.component';\nimport { AddWebApplicationComponent } from './applications/add-web-application/add-web-application.component';\nimport { ApplicationListComponent } from './applications/application-list/application-list.component';\nimport { InstallFromPackageComponent } from './applications/install-from-package/install-from-package.component';\nimport { EcosystemTabs } from './ecosystem-tabs.factory';\nimport { FeatureListComponent } from './features/feature-list.component';\nimport { AddMicroserviceComponent } from './microservices/add-microservice.component';\nimport { MicroserviceListComponent } from './microservices/microservice-list.component';\nimport { AddPackageComponent } from './packages/add-package.component';\nimport { DeployApplicationComponent } from './packages/deploy-application/deploy-application.component';\nimport { PackageDetailsComponent } from './packages/package-details/package-details.component';\nimport { PackagesListComponent } from './packages/package-list/packages-list.component';\nimport { PackageVersionsGuard } from './packages/package-versions.guard';\nimport { PackageVersionsAppsComponent } from './packages/package-versions/package-contents/contents-apps/contents-apps.component';\nimport { PackageVersionsPluginsComponent } from './packages/package-versions/package-contents/contents-plugins/contents-plugins.component';\nimport { PackageContentsComponent } from './packages/package-versions/package-contents/packages-contents.component';\nimport { PackageVersionsListComponent } from './packages/package-versions/package-versions-list/package-versions-list.component';\nimport { PackageVersionsComponent } from './packages/package-versions/packages-versions.component';\nimport { PackageGuard } from './packages/package.guard';\nimport { PackageChangelogTabComponent } from './packages/package-changelog-tab/package-changelog-tab.component';\nimport { PackageChangelogGuard } from './packages/package-changelog.guard';\n\nconst ecosystemMainRoutes: Route[] = [\n {\n path: 'ecosystem/application',\n redirectTo: 'ecosystem/application/applications',\n pathMatch: 'full'\n },\n {\n // keeps legacy links functional\n path: 'ecosystem/applications',\n redirectTo: 'ecosystem/application/applications',\n pathMatch: 'full'\n },\n {\n path: 'ecosystem/application/applications',\n component: ApplicationListComponent\n },\n {\n path: 'ecosystem/extension/extensions',\n component: PackagesListComponent\n },\n {\n path: 'ecosystem/application/features',\n component: FeatureListComponent\n },\n {\n path: 'ecosystem/microservice/microservices',\n component: MicroserviceListComponent\n }\n];\n\nconst applicationDetailsRoutes: Route[] = [\n {\n path: 'properties',\n component: ApplicationPropertiesComponent,\n icon: 'list',\n label: gettext('Properties'),\n context: ViewContext.Application,\n priority: 5,\n canActivate: [ApplicationPropertiesGuard]\n },\n {\n path: 'application-versions',\n component: PackageVersionsComponent,\n icon: 'c8y-modules',\n label: gettext('Versions'),\n context: ViewContext.Application,\n priority: 1,\n canActivate: [PackageVersionsGuard]\n },\n {\n path: 'properties',\n component: ApplicationPropertiesComponent,\n icon: 'list',\n label: gettext('Properties'),\n context: ViewContext.Feature,\n priority: 5,\n canActivate: [ApplicationPropertiesGuard]\n },\n {\n path: 'package-details',\n component: PackageDetailsComponent,\n icon: 'big-parcel',\n label: gettext('Extension package'),\n context: ViewContext.Extension,\n priority: 10,\n canActivate: [PackageGuard]\n },\n {\n path: 'package-versions',\n component: PackageVersionsComponent,\n icon: 'c8y-modules',\n label: gettext('Versions'),\n context: ViewContext.Extension,\n priority: 5,\n canActivate: [PackageGuard, PackageVersionsGuard]\n },\n {\n path: 'package-changelog',\n component: PackageChangelogTabComponent,\n icon: 'list',\n label: gettext('Change log'),\n context: ViewContext.Extension,\n priority: 1,\n canActivate: [PackageGuard, PackageChangelogGuard]\n },\n {\n path: 'properties',\n component: ApplicationPropertiesComponent,\n icon: 'list',\n label: gettext('Properties'),\n context: ViewContext.Microservice,\n priority: 5,\n canActivate: [ApplicationPropertiesGuard]\n }\n];\n\n@NgModule({\n declarations: [\n ApplicationListComponent,\n MicroserviceListComponent,\n ApplicationPropertiesComponent,\n AddMicroserviceComponent,\n ActivityLogComponent,\n AddWebApplicationComponent,\n AddExternalApplicationComponent,\n InstallFromPackageComponent,\n PackagesListComponent,\n PackageDetailsComponent,\n DeployApplicationComponent,\n AddPackageComponent,\n FeatureListComponent,\n PackageVersionsComponent,\n PackageVersionsPluginsComponent,\n PackageVersionsAppsComponent,\n PackageContentsComponent,\n PackageVersionsListComponent,\n SubscriptionModalComponent,\n UpdateApplicationModalComponent\n ],\n imports: [\n CoreModule,\n BsDropdownModule,\n TooltipModule,\n FormsModule,\n ReactiveFormsModule,\n RouterModule.forChild(ecosystemMainRoutes),\n PopoverModule,\n ApplicationPluginsModule,\n SharedEcosystemModule,\n LicenseConfirmModule,\n IconSelectorModule,\n A11yModule,\n ArchivedConfirmModule,\n PackageChangelogTabComponent\n ],\n exports: [ApplicationPropertiesComponent, UpdateApplicationModalComponent],\n providers: [\n hookTab(EcosystemTabs),\n hookRoute(applicationDetailsRoutes),\n PackageGuard,\n PackageVersionsGuard,\n PackageChangelogGuard,\n ApplicationPropertiesGuard,\n hookWizard({\n wizardId: EcosystemWizards.APPLICATION_UPLOAD,\n component: AddWebApplicationComponent,\n name: gettext('Upload web application'),\n c8yIcon: 'upload'\n }),\n hookWizard({\n name: undefined,\n wizardId: EcosystemWizards.PACKAGE_UPLOAD,\n component: AddPackageComponent\n }),\n hookWizard({\n wizardId: EcosystemWizards.APPLICATION_UPLOAD,\n component: AddExternalApplicationComponent,\n name: gettext('External application'),\n c8yIcon: 'cloud-link'\n }),\n hookWizard({\n wizardId: EcosystemWizards.BLUEPRINT_DEPLOYMENT,\n component: DeployApplicationComponent,\n name: gettext('Deploy package'),\n c8yIcon: 'big-parcel'\n }),\n hookWizard({\n wizardId: EcosystemWizards.APPLICATION_UPLOAD,\n component: InstallFromPackageComponent,\n name: gettext('Install from available extension packages'),\n c8yIcon: 'big-parcel'\n }),\n hookWizard({\n name: undefined,\n wizardId: EcosystemWizards.MICROSERVICE_UPLOAD,\n component: AddMicroserviceComponent\n })\n ]\n})\nexport class EcosystemModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3","i5","i4","i5.AppStatePipe","i1.PluginListService","i4.PluginListItemComponent","i5.PluginListComponent","i7","i8","i11.ActivityLogComponent","map","i4.PluginListComponent","i5.OnlyLatestFilterComponent","i6","i7.PluginListComponent","i6.PackageVersionsPluginsComponent","i7.PackageVersionsAppsComponent","i4.PackageContentsComponent","i5.PackageVersionsListComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"c8y-ngx-components-ecosystem.mjs","sources":["../../ecosystem/activity-log/activity-log.component.ts","../../ecosystem/activity-log/activity-log.component.html","../../ecosystem/application-properties/subscription-modal/subscription-modal.component.ts","../../ecosystem/application-properties/subscription-modal/subscription-modal.component.html","../../ecosystem/application-properties/update-application-modal/update-application-modal.component.ts","../../ecosystem/application-properties/update-application-modal/update-application-modal.component.html","../../ecosystem/application-properties/application-properties.component.ts","../../ecosystem/application-properties/application-properties.component.html","../../ecosystem/application-properties/application-properties.guard.ts","../../ecosystem/applications/add-external-applicaiton/add-external-application.component.ts","../../ecosystem/applications/add-external-applicaiton/add-external-application.component.html","../../ecosystem/applications/add-web-application/add-web-application.component.ts","../../ecosystem/applications/application-list/application-list.component.ts","../../ecosystem/applications/application-list/application-list.component.html","../../ecosystem/applications/install-from-package/install-from-package.component.ts","../../ecosystem/applications/install-from-package/install-from-package.component.html","../../ecosystem/ecosystem-tabs.factory.ts","../../ecosystem/features/feature-list.component.ts","../../ecosystem/features/feature-list.component.html","../../ecosystem/microservices/add-microservice.component.ts","../../ecosystem/microservices/microservice-list.component.ts","../../ecosystem/microservices/microservice-list.component.html","../../ecosystem/packages/add-package.component.ts","../../ecosystem/packages/deploy-application/deploy-application.component.ts","../../ecosystem/packages/deploy-application/deploy-application.component.html","../../ecosystem/packages/package-details/package-details.component.ts","../../ecosystem/packages/package-details/package-details.component.html","../../ecosystem/packages/package-list/packages-list.component.ts","../../ecosystem/packages/package-list/packages-list.component.html","../../ecosystem/packages/package-versions.guard.ts","../../ecosystem/packages/package-versions/package-contents/contents-apps/contents-apps.component.ts","../../ecosystem/packages/package-versions/package-contents/contents-apps/contents-apps.component.html","../../ecosystem/packages/package-versions/package-contents/contents-plugins/contents-plugins.component.ts","../../ecosystem/packages/package-versions/package-contents/contents-plugins/contents-plugins.component.html","../../ecosystem/packages/package-versions/package-contents/packages-contents.component.ts","../../ecosystem/packages/package-versions/package-contents/packages-contents.component.html","../../ecosystem/packages/package-versions/package-versions-list/package-versions-list.component.ts","../../ecosystem/packages/package-versions/package-versions-list/package-versions-list.component.html","../../ecosystem/packages/package-versions/packages-versions.component.ts","../../ecosystem/packages/package-versions/packages-versions.component.html","../../ecosystem/packages/package.guard.ts","../../ecosystem/packages/package-changelog-tab/package-changelog-tab.component.ts","../../ecosystem/packages/package-changelog-tab/package-changelog-tab.component.html","../../ecosystem/packages/package-changelog.guard.ts","../../ecosystem/ecosystem.module.ts","../../ecosystem/c8y-ngx-components-ecosystem.ts"],"sourcesContent":["import { Component, Input, OnInit } from '@angular/core';\nimport { IApplication, IApplicationBinary } from '@c8y/client';\nimport {\n AlertService,\n DatePipe,\n ListGroupComponent,\n ListItemTimelineComponent,\n ListItemComponent,\n ListItemIconComponent,\n ListItemBodyComponent,\n IconDirective,\n ListItemActionComponent,\n FormGroupComponent,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { BehaviorSubject } from 'rxjs';\nimport { EcosystemService, UploadArchiveComponent } from '@c8y/ngx-components/ecosystem/shared';\nimport { NgFor, NgClass, NgIf } from '@angular/common';\n\n@Component({\n selector: 'c8y-activity-log',\n templateUrl: './activity-log.component.html',\n imports: [\n ListGroupComponent,\n NgFor,\n ListItemTimelineComponent,\n NgClass,\n ListItemComponent,\n ListItemIconComponent,\n ListItemBodyComponent,\n NgIf,\n IconDirective,\n ListItemActionComponent,\n FormGroupComponent,\n UploadArchiveComponent,\n C8yTranslatePipe,\n DatePipe\n ]\n})\nexport class ActivityLogComponent implements OnInit {\n @Input() application: IApplication;\n @Input() hasAdminPermissions = false;\n archives: IApplicationBinary[] = [];\n toActivateVersionId: string;\n last: IApplicationBinary;\n isLoading: boolean;\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 ngOnInit() {\n this.canReactivate = this.showReactivate();\n this.refresh();\n }\n\n isActive(archive: IApplicationBinary): boolean {\n return this.application.activeVersionId === archive.id;\n }\n\n toActivate(archive: IApplicationBinary): boolean {\n return this.toActivateVersionId === archive.id;\n }\n\n checkIfLast(archive: IApplicationBinary): boolean {\n return archive.id === this.last.id;\n }\n\n showReactivate(): boolean {\n return this.ecosystemService.isApplication(this.application);\n }\n\n async setActive(archive): Promise<void> {\n const id = archive.id || archive;\n this.toActivateVersionId = id;\n this.isLoading = true;\n try {\n this.application = (\n await this.ecosystemService.setAppActiveVersion(this.application, id)\n ).data;\n } catch (ex) {\n this.alertService.addServerFailure(ex);\n }\n this.isLoading = false;\n this.refresh();\n }\n\n async deleteArchive(archive: IApplicationBinary): Promise<void> {\n await this.ecosystemService.deleteArchive(archive, this.application);\n this.refresh();\n }\n\n async downloadArchive(archive: IApplicationBinary): Promise<void> {\n await this.ecosystemService.downloadArchive(this.application, archive);\n }\n\n async reactivateArchive(): Promise<void> {\n await this.ecosystemService.reactivateArchive(this.application);\n }\n\n async onRefresh() {\n await this.refresh();\n }\n\n private async refresh(): Promise<void> {\n this.isLoading = true;\n this.archives = await this.ecosystemService.listArchives(this.application.id);\n if (this.application.manifest?.package === 'blueprint') {\n // filter out entries without description because using them as active may break application's\n // manifest (changing isPackage property of deployed app to 'true')\n this.archives = this.archives.filter((archive: IApplicationBinary) => !!archive.description);\n }\n this.archives.sort((a, b) => {\n return (new Date(b.created) as any) - (new Date(a.created) as any);\n });\n this.last = this.archives[this.archives.length - 1];\n this.isLoading = false;\n }\n}\n","<div class=\"inner-scroll bg-level-1 flex-grow inner-scroll--md overflow-visible-sm overflow-visible-xs\">\n <div class=\"card-block overflow-visible\">\n <c8y-list-group>\n <c8y-li-timeline *ngFor=\"let archive of archives\" [ngClass]=\"{ active: isActive(archive) }\">\n {{ archive.created | c8yDate: 'd MMM YYYY' }}\n {{ archive.created | c8yDate: 'shortTime' }}\n <c8y-li>\n <c8y-li-icon\n [icon]=\"checkIfLast(archive) ? 'flag-checkered' : 'file-zip-o'\"\n ></c8y-li-icon>\n <c8y-li-body>\n <div class=\"d-flex a-i-start\">\n <div style=\"min-width: 0; flex: 1\">\n <span class=\"text-truncate-wrap\" title=\" {{ archive.description || archive.name }}\">\n {{ archive.description || archive.name }}\n </span>\n <small *ngIf=\"archive.description\" class=\"text-muted\">{{\n archive.description\n }}</small>\n </div>\n <i\n *ngIf=\"isLoading && toActivate(archive)\"\n [c8yIcon]=\"'circle-o-notch'\"\n class=\"icon-spin\"\n title=\"{{ 'Activating' | translate }}\"\n ></i>\n\n <span *ngIf=\"isActive(archive)\" class=\"label label-primary m-l-auto m-t-4\">{{\n 'Active' | translate\n }}</span>\n </div>\n </c8y-li-body>\n <c8y-li-action\n (click)=\"setActive(archive)\"\n *ngIf=\"hasAdminPermissions && !isLoading && !isActive(archive)\"\n icon=\"check-square-o\"\n >\n {{ 'Set as active`archive`' | translate }}\n </c8y-li-action>\n <c8y-li-action (click)=\"downloadArchive(archive)\" icon=\"download\">\n {{ 'Download`archive`' | translate }}\n </c8y-li-action>\n <c8y-li-action\n (click)=\"deleteArchive(archive)\"\n *ngIf=\"\n hasAdminPermissions &&\n archives.length > 1 &&\n !checkIfLast(archive) &&\n !isActive(archive)\n \"\n icon=\"delete\"\n >\n {{ 'Delete`archive`' | translate }}\n </c8y-li-action>\n <c8y-li-action\n (click)=\"reactivateArchive()\"\n *ngIf=\"hasAdminPermissions && canReactivate && isActive(archive)\"\n icon=\"undo\"\n >\n {{ 'Reactivate archive' | translate }}\n </c8y-li-action>\n </c8y-li>\n </c8y-li-timeline>\n </c8y-list-group>\n </div>\n</div>\n<div class=\"card-footer\" *ngIf=\"!isLoading && hasAdminPermissions\">\n <c8y-form-group class=\"m-auto\">\n <c8y-upload-archive [(application)]=\"application\" (refresh)=\"onRefresh()\"></c8y-upload-archive>\n </c8y-form-group>\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport { ApplicationService, IApplication, IApplicationManagedObject } from '@c8y/client';\nimport {\n AlertService,\n ContextRouteService,\n gettext,\n ModalService,\n Status,\n TabsService,\n IconDirective,\n LoadingComponent,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { isEmpty } from 'lodash';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { EcosystemService } from '@c8y/ngx-components/ecosystem/shared';\nimport { NgIf } from '@angular/common';\n\n@Component({\n selector: 'c8y-subscription-modal',\n templateUrl: './subscription-modal.component.html',\n imports: [IconDirective, NgIf, LoadingComponent, C8yTranslatePipe]\n})\nexport class SubscriptionModalComponent implements OnInit {\n readonly RETRY_TIMEOUT = 3000;\n application: IApplication;\n message: string;\n isLoading = false;\n result: Promise<void> = new Promise(resolve => {\n this._resolve = resolve;\n });\n isSubscribed: boolean;\n retryCounter = 0;\n\n private readonly TABS: string[] = ['Logs', 'Status'];\n private _resolve: (value: void | PromiseLike<void>) => void;\n\n constructor(\n private bsModalRef: BsModalRef,\n private ecosystemService: EcosystemService,\n private tabsService: TabsService,\n private modal: ModalService,\n private applicationService: ApplicationService,\n private alertService: AlertService,\n private contextRouteService: ContextRouteService\n ) {}\n\n ngOnInit() {\n if (this.isSubscribed) {\n this.unsubscribe();\n } else {\n this.subscribe();\n }\n }\n\n async subscribe(): Promise<void> {\n this.retryCounter = 0;\n this.isLoading = true;\n this.message = gettext('Subscribing…');\n await this.ecosystemService.subscribeApp(this.application);\n this.getStatusDetails('subscribe');\n }\n\n async unsubscribe(): Promise<void> {\n this.retryCounter = 0;\n this.isLoading = true;\n this.message = gettext('Unsubscribing…');\n await this.ecosystemService.unsubscribeApp(this.application);\n this.getStatusDetails('unsubscribe');\n }\n\n private async getStatusDetails(action: 'subscribe' | 'unsubscribe') {\n this.contextRouteService.refreshContext();\n const actionSuccessful =\n action === 'subscribe' ? await this.onSubscribe() : this.onUnsubscribe();\n if (actionSuccessful) {\n return this.hideSubscriptionModal();\n }\n if (this.retryCounter === 4) {\n this.showWarningModal(action);\n return this.hideSubscriptionModal();\n }\n this.retryCounter += 1;\n setTimeout(async () => {\n this.getStatusDetails(action);\n }, this.RETRY_TIMEOUT);\n }\n\n private async onSubscribe(): Promise<boolean> {\n try {\n if (!this.application.activeVersionId) {\n return true;\n }\n const res: IApplicationManagedObject = (\n await this.applicationService.getStatusDetails(this.application)\n ).data[0];\n return this.shouldShowMSSpecificTabs(res);\n } catch (er) {\n this.alertService.addServerFailure(er);\n }\n }\n\n // Checks if the UI should show tabs with logs and status\n private shouldShowMSSpecificTabs(mo: IApplicationManagedObject): boolean {\n return !isEmpty(mo.c8y_Status?.instances) && !!mo.c8y_SupportedLogs;\n }\n\n private onUnsubscribe(): boolean {\n return !this.tabsService.areAvailable(this.TABS);\n }\n\n private hideSubscriptionModal(): void {\n this._resolve();\n this.bsModalRef.hide();\n this.isLoading = false;\n }\n\n private showWarningModal(action: string): void {\n const title = gettext('Warning');\n const body =\n action === 'subscribe'\n ? gettext('Something went wrong, please refresh the page or resubscribe the application.')\n : gettext(\n 'Something went wrong, please refresh the page or retry to unsubscribe from the application.'\n );\n this.modal.acknowledge(title, body, Status.WARNING, gettext('Close'));\n }\n}\n","<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i c8yIcon=\"c8y-atom\"></i>\n <h4 id=\"modal-title\">{{ message | translate }}</h4>\n </div>\n <div class=\"modal-body\" id=\"modal-body\" *ngIf=\"isLoading\">\n <div class=\"p-16 text-center\">\n <c8y-loading></c8y-loading>\n </div>\n </div>\n</div>\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { IApplication, InventoryService } from '@c8y/client';\nimport {\n ApplicationPlugin,\n PluginsService,\n PluginsExportScopes,\n ModalComponent,\n C8yTranslateDirective,\n ListGroupComponent,\n ListItemComponent,\n ListItemIconComponent,\n ListItemBodyComponent,\n ListItemFooterComponent,\n ListItemCollapseComponent,\n LoadingComponent,\n OperationResultComponent,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { EcosystemService } from '@c8y/ngx-components/ecosystem/shared';\nimport { BehaviorSubject } from 'rxjs';\nimport { NgIf, AsyncPipe } from '@angular/common';\nimport { PluginListComponent } from '@c8y/ngx-components/ecosystem/application-plugins';\n\n@Component({\n selector: 'c8y-update-application-modal',\n templateUrl: './update-application-modal.component.html',\n imports: [\n ModalComponent,\n NgIf,\n C8yTranslateDirective,\n ListGroupComponent,\n ListItemComponent,\n ListItemIconComponent,\n ListItemBodyComponent,\n ListItemFooterComponent,\n ListItemCollapseComponent,\n PluginListComponent,\n LoadingComponent,\n OperationResultComponent,\n C8yTranslatePipe,\n AsyncPipe\n ]\n})\nexport class UpdateApplicationModalComponent implements OnInit {\n @ViewChild('modal', { static: false }) private modal;\n isUpdateOngoing = false;\n updateFailure = false;\n sourcePackage: IApplication;\n application: IApplication;\n result: Promise<void> = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n orphanedPlugins$: BehaviorSubject<ApplicationPlugin[]> = new BehaviorSubject([]);\n newPlugins$: BehaviorSubject<ApplicationPlugin[]> = new BehaviorSubject([]);\n\n private _resolve: (value: void | PromiseLike<void>) => void;\n private _reject: (value: void | PromiseLike<void>) => void;\n\n constructor(\n private inventoryService: InventoryService,\n private ecosystemService: EcosystemService,\n private pluginsService: PluginsService\n ) {}\n\n ngOnInit(): void {\n const hasDelta = this.getRemoteDelta();\n if (!hasDelta) {\n // start update directly if no remote delta detected\n this.updateApplication();\n }\n }\n\n /**\n * Checks if there is a delta between the current application and the source package remotes.\n * @returns {boolean} true if there is a delta between the current application and the source package remotes.\n */\n getRemoteDelta() {\n const currentRemotes = this.pluginsService.getMFExports(this.application, []);\n const possibleNewRemotes = this.pluginsService.getMFExports(this.sourcePackage, []);\n const installedRemotes = this.pluginsService.getMFRemotes(this.application);\n const installedRemotesIds = PluginsService.convertInstalledRemotesToIds(installedRemotes);\n\n const allRemotesToRemove = this.getAllRemotesToRemove(\n currentRemotes,\n possibleNewRemotes,\n installedRemotesIds\n );\n\n const allRemotesToAdd = this.getAllRemotesToAdd(possibleNewRemotes, currentRemotes);\n\n this.orphanedPlugins$.next(allRemotesToRemove);\n this.newPlugins$.next(allRemotesToAdd);\n\n return allRemotesToRemove.length !== 0 || allRemotesToAdd.length !== 0;\n }\n\n close() {\n this._reject();\n this.modal._dismiss();\n }\n\n done() {\n if (!this.updateFailure) {\n this._resolve();\n this.modal._dismiss();\n return;\n }\n this._reject();\n this.modal._dismiss();\n }\n\n async updateApplication() {\n try {\n this.isUpdateOngoing = true;\n const toInstallPlugins = this.newPlugins$.value.filter(({ selected }) => selected === true);\n const toRemovePlugins = this.orphanedPlugins$.value;\n this.orphanedPlugins$.next([]);\n this.newPlugins$.next([]);\n if (toRemovePlugins.length > 0) {\n const remotes = await this.pluginsService.removeRemotes(this.application, toRemovePlugins);\n this.application.config.remotes = remotes;\n }\n if (toInstallPlugins.length > 0) {\n const remotes = await this.pluginsService.addRemotes(this.application, toInstallPlugins);\n this.application.config.remotes = remotes;\n }\n const binaryMoId = this.sourcePackage.activeVersionId;\n await this.inventoryService.detail(binaryMoId); // only trying if we can access it\n await this.ecosystemService.uploadBinaryFromOtherPackage(\n this.sourcePackage,\n this.application,\n this.sourcePackage.activeVersionId\n );\n } catch (e) {\n if (e.res?.status === 404) {\n try {\n this.updateFailure = !(await this.ecosystemService.fallbackToClone(\n this.application,\n this.sourcePackage\n ));\n } catch (ex) {\n this.updateFailure = true;\n this.ecosystemService.alertError(e);\n }\n } else {\n this.updateFailure = true;\n this.ecosystemService.alertError(e);\n }\n } finally {\n this.isUpdateOngoing = false;\n }\n }\n\n private getAllRemotesToAdd(\n possibleNewRemotes: ApplicationPlugin[],\n currentRemotes: ApplicationPlugin[]\n ) {\n return possibleNewRemotes\n .filter(possibleNewRemote => {\n const isUnchanged = !!currentRemotes.some(\n currentRemote =>\n PluginsService.createPluginId(\n this.application.contextPath,\n possibleNewRemote.module,\n '',\n true\n ) === currentRemote.idLatest\n );\n\n const isSelf =\n possibleNewRemote.scope === PluginsExportScopes.SELF ||\n possibleNewRemote.scope === PluginsExportScopes.SELF_OPTIONAL;\n\n return !isUnchanged && isSelf;\n })\n .map(newRemote => {\n newRemote.contextPath = this.application.contextPath;\n newRemote.id = `${newRemote.contextPath}/${newRemote.module}`;\n newRemote.selected = newRemote.scope === PluginsExportScopes.SELF;\n return newRemote;\n });\n }\n\n private getAllRemotesToRemove(\n currentRemotes: ApplicationPlugin[],\n possibleNewRemotes: ApplicationPlugin[],\n installedRemotesIds: string[]\n ) {\n return currentRemotes\n .filter(currentRemote => {\n const isUnchanged = !!possibleNewRemotes.some(\n newRemote =>\n PluginsService.createPluginId(\n this.application.contextPath,\n newRemote.module,\n '',\n true\n ) === currentRemote.idLatest\n );\n const isInstalled = installedRemotesIds\n ? !!installedRemotesIds.some(\n currentInstalled =>\n currentRemote.id === currentInstalled || currentRemote.idLatest === currentInstalled\n )\n : false;\n\n const isSelf =\n currentRemote.scope === PluginsExportScopes.SELF ||\n currentRemote.scope === PluginsExportScopes.SELF_OPTIONAL;\n\n return !isUnchanged && isInstalled && isSelf;\n })\n .map(toRemoveRemote => {\n toRemoveRemote.contextPath = this.application.contextPath;\n toRemoveRemote.id = `${toRemoveRemote.contextPath}/${toRemoveRemote.module}`;\n toRemoveRemote.selected = true;\n return toRemoveRemote;\n });\n }\n}\n","<c8y-modal\n [title]=\"'Update application' | translate\"\n [headerClasses]=\"'dialog-header'\"\n [customFooter]=\"true\"\n #modal\n>\n <ng-container c8y-modal-title>\n <span class=\"dlt-c8y-icon-installing-updates\"></span>\n </ng-container>\n\n <ng-container\n *ngIf=\"\n (orphanedPlugins$ | async).length > 0 || (newPlugins$ | async).length > 0;\n else updateProgress\n \"\n >\n <p\n class=\"text-center text-break-word p-24 text-14\"\n translate\n >\n Updating this blueprint will change the default plugins. Review the plugin changes before\n proceeding.\n </p>\n <c8y-list-group *ngIf=\"(orphanedPlugins$ | async).length > 0\">\n <c8y-li [collapsed]=\"true\">\n <c8y-li-icon>\n <span class=\"badge badge-danger\">{{ (orphanedPlugins$ | async).length }}</span>\n </c8y-li-icon>\n <c8y-li-body>\n <div translate>Orphaned plugins</div>\n </c8y-li-body>\n <c8y-li-footer translate>\n Some plugins are not contained in the new version of this blueprint and will therefore get\n removed.\n </c8y-li-footer>\n <c8y-li-collapse>\n <c8y-plugin-list\n class=\"m-t-16\"\n [emptyListText]=\"'No plugins available' | translate\"\n [plugins$]=\"orphanedPlugins$\"\n [selectable]=\"false\"\n [hideSource]=\"true\"\n ></c8y-plugin-list>\n </c8y-li-collapse>\n </c8y-li>\n </c8y-list-group>\n\n <c8y-list-group *ngIf=\"(newPlugins$ | async).length > 0\">\n <c8y-li [collapsed]=\"false\">\n <c8y-li-icon>\n <span class=\"badge badge-success\">{{ (newPlugins$ | async).length }}</span>\n </c8y-li-icon>\n <c8y-li-body>\n <div translate>New plugins added</div>\n </c8y-li-body>\n <c8y-li-footer translate>\n This blueprint will add new plugins. Please choose which you want to install.\n </c8y-li-footer>\n <c8y-li-collapse>\n <c8y-plugin-list\n class=\"m-t-16\"\n [emptyListText]=\"'No plugins available' | translate\"\n [plugins$]=\"newPlugins$\"\n [selectable]=\"true\"\n [hideSource]=\"false\"\n ></c8y-plugin-list>\n </c8y-li-collapse>\n </c8y-li>\n </c8y-list-group>\n </ng-container>\n\n <ng-container c8y-modal-footer-custom>\n <div\n class=\"modal-footer\"\n *ngIf=\"\n (orphanedPlugins$ | async).length > 0 || (newPlugins$ | async).length > 0;\n else updateProgressButtons\n \"\n >\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Close' | translate }}\"\n (click)=\"close()\"\n [disabled]=\"isUpdateOngoing\"\n >\n {{ 'Close' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Continue' | translate }}\"\n (click)=\"updateApplication()\"\n *ngIf=\"(orphanedPlugins$ | async).length > 0 || (newPlugins$ | async).length > 0\"\n [disabled]=\"isUpdateOngoing\"\n >\n {{ 'Continue' | translate }}\n </button>\n </div>\n </ng-container>\n\n <ng-template #updateProgressButtons>\n <ng-container c8y-modal-footer-custom>\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Close' | translate }}\"\n (click)=\"done()\"\n [disabled]=\"isUpdateOngoing\"\n >\n {{ 'Close' | translate }}\n </button>\n </div>\n </ng-container>\n </ng-template>\n\n <ng-template #updateProgress>\n <c8y-loading\n class=\"text-center d-block p-t-56 p-b-56 m-t-4 m-b-4\"\n style=\"min-height: 180px\"\n layout=\"application\"\n *ngIf=\"isUpdateOngoing\"\n [message]=\"'Updating…' | translate\"\n ></c8y-loading>\n\n <c8y-operation-result\n type=\"success\"\n *ngIf=\"!isUpdateOngoing && !updateFailure\"\n text=\"{{ 'Update completed' | translate }}\"\n [size]=\"120\"\n [vertical]=\"true\"\n ></c8y-operation-result>\n <c8y-operation-result\n type=\"error\"\n *ngIf=\"!isUpdateOngoing && updateFailure\"\n text=\"{{ 'Failed to update application.' | translate }}\"\n [size]=\"120\"\n [vertical]=\"true\"\n ></c8y-operation-result>\n </ng-template>\n</c8y-modal>\n","import { Component, OnInit } from '@angular/core';\nimport {\n FormBuilder,\n FormGroup,\n Validators,\n FormsModule,\n ReactiveFormsModule\n} from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport {\n ApplicationService,\n ApplicationType,\n BillingMode,\n IApplication,\n IManagedObject,\n InventoryService,\n Isolation\n} from '@c8y/client';\nimport {\n AlertService,\n GainsightService,\n ModalService,\n Permissions,\n PropertiesListItem,\n ViewContext,\n gettext,\n TitleComponent,\n BreadcrumbComponent,\n BreadcrumbItemComponent,\n AppIconComponent,\n IconDirective,\n TextareaAutoresizeDirective,\n C8yTranslateDirective,\n PropertiesListComponent,\n FormGroupComponent,\n RequiredInputPlaceholderDirective,\n MessagesComponent,\n MessageDirective,\n LoadingComponent,\n C8yTranslatePipe,\n HumanizeAppNamePipe,\n DatePipe\n} from '@c8y/ngx-components';\nimport {\n ApplicationState,\n EcosystemService,\n PRODUCT_EXPERIENCE_ECOSYSTEM,\n packageProperties,\n UploadArchiveComponent\n} from '@c8y/ngx-components/ecosystem/shared';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { SubscriptionModalComponent } from './subscription-modal/subscription-modal.component';\nimport { UpdateApplicationModalComponent } from './update-application-modal/update-application-modal.component';\nimport { NgIf, NgClass, NgSwitch, NgSwitchCase, AsyncPipe } from '@angular/common';\nimport { TooltipDirective } from 'ngx-bootstrap/tooltip';\nimport { IconSelectorWrapperComponent } from '@c8y/ngx-components/icon-selector';\nimport { ActivityLogComponent } from '../activity-log/activity-log.component';\n\nconst MICROSERVICES_BASE_PATH = '/ecosystem/microservice/microservices';\nconst APPLICATIONS_BASE_PATH = '/ecosystem/application/applications';\n\n@Component({\n selector: 'c8y-application-properties',\n templateUrl: './application-properties.component.html',\n imports: [\n TitleComponent,\n NgIf,\n BreadcrumbComponent,\n BreadcrumbItemComponent,\n NgClass,\n FormsModule,\n ReactiveFormsModule,\n AppIconComponent,\n IconDirective,\n TextareaAutoresizeDirective,\n C8yTranslateDirective,\n TooltipDirective,\n PropertiesListComponent,\n FormGroupComponent,\n RequiredInputPlaceholderDirective,\n NgSwitch,\n NgSwitchCase,\n MessagesComponent,\n MessageDirective,\n IconSelectorWrapperComponent,\n UploadArchiveComponent,\n LoadingComponent,\n ActivityLogComponent,\n C8yTranslatePipe,\n AsyncPipe,\n HumanizeAppNamePipe,\n DatePipe\n ]\n})\nexport class ApplicationPropertiesComponent implements OnInit {\n CURRENT_LOCATION = location.href;\n formGroup: FormGroup;\n application: IApplication;\n binaryMo: IManagedObject;\n singleTenant = false;\n subscription = false;\n canOpenInBrowser: boolean;\n disableOpenInBrowser: boolean;\n canDelete: boolean;\n isOwner: boolean;\n isSubscribed: boolean;\n isPackage: boolean;\n isMicroservice: boolean;\n isFeature: boolean;\n isExternal: boolean;\n isUnpacked: boolean;\n iconMap = {\n HOSTED: 'cloud',\n EXTERNAL: 'external-link-square',\n MICROSERVICE: 'microchip'\n };\n appState: ApplicationState;\n sourcePackage: IApplication;\n isLoading = true;\n isActivityLogSupported: boolean;\n isCustomMicroservice: boolean;\n hasAdminPermissions = false;\n noDescriptionLabel = gettext('No description available.');\n\n breadcrumbConfig: { icon: string; label: string; path: string };\n packageProperties: PropertiesListItem[] = [...packageProperties];\n isUpdateAvailable = false;\n\n private blueprintApplicationVersion: string;\n\n constructor(\n private activatedRoute: ActivatedRoute,\n private ecosystemService: EcosystemService,\n private router: Router,\n private formBuilder: FormBuilder,\n private applicationService: ApplicationService,\n private alertService: AlertService,\n private inventoryService: InventoryService,\n private permissions: Permissions,\n private modalService: ModalService,\n private translate: TranslateService,\n private bsModalService: BsModalService,\n private gainsightService: GainsightService\n ) {}\n\n async ngOnInit() {\n this.hasAdminPermissions = this.permissions.hasRole(\n Permissions.ROLE_APPLICATION_MANAGEMENT_ADMIN\n );\n await this.refresh();\n }\n\n async refresh() {\n await this.load();\n this.isUnpacked = this.ecosystemService.isUnpacked(this.application);\n this.isPackage = this.ecosystemService.isPackage(this.application);\n this.isFeature = this.ecosystemService.isFeature(this.application);\n this.isExternal = this.ecosystemService.isExternal(this.application);\n this.isMicroservice = this.ecosystemService.isMicroservice(this.application);\n this.appState = this.ecosystemService.getAppState(this.application);\n\n if (this.isUnpacked) {\n await this.resolveSourcePackageDetails();\n }\n\n this.setBreadcrumbConfig();\n\n if (this.isCustomMicroservice) {\n this.loadBinaryMo();\n }\n }\n\n async load() {\n this.isLoading = true;\n this.initForm();\n await this.loadApplication();\n this.isLoading = false;\n }\n\n onApplication(app: IApplication) {\n if (app.manifest) {\n this.singleTenant = app.manifest.isolation === Isolation.PER_TENANT;\n this.subscription = app.manifest.billingMode === BillingMode.SUBSCRIPTION;\n }\n }\n\n cancel() {\n if (this.application.type === ApplicationType.MICROSERVICE) {\n this.router.navigateByUrl(MICROSERVICES_BASE_PATH);\n } else {\n this.router.navigateByUrl(APPLICATIONS_BASE_PATH);\n }\n }\n\n openApp(app) {\n this.ecosystemService.openApp(app);\n }\n\n getPackage(entityOrId: string | number | IApplication) {\n return this.applicationService.detail(entityOrId);\n }\n\n async delete() {\n try {\n await this.ecosystemService.deleteApp(this.application);\n if (this.application.type === ApplicationType.MICROSERVICE) {\n this.router.navigateByUrl(MICROSERVICES_BASE_PATH);\n } else {\n this.router.navigateByUrl(APPLICATIONS_BASE_PATH);\n }\n } catch (ex) {\n if (ex) {\n this.alertService.addServerFailure(ex);\n }\n }\n }\n\n async subscribe() {\n const initialState = { application: this.application, isSubscribed: false };\n await this.confirmSubscriptionChange(initialState);\n this.loadApplication();\n }\n\n async unsubscribe() {\n const initialState = { application: this.application, isSubscribed: true };\n await this.confirmSubscriptionChange(initialState);\n this.loadApplication();\n }\n\n async loadApplication() {\n const { id } = this.activatedRoute.snapshot.parent.data.contextData;\n this.application = await this.ecosystemService.getApplication(id);\n if (this.application.type === ApplicationType.MICROSERVICE) {\n this.formGroup.get('name').disable();\n }\n\n const updatedApplication = {\n ...this.application,\n description: this.getDescription(this.application),\n icon: this.application.config?.icon?.class || this.application.manifest?.icon?.class\n };\n\n this.formGroup.patchValue(updatedApplication);\n this.canOpenInBrowser = this.ecosystemService.canOpenAppInBrowser(this.application);\n this.disableOpenInBrowser =\n this.canOpenInBrowser &&\n (await this.ecosystemService.isOverwrittenByCustomApp(this.application));\n this.canDelete = await this.ecosystemService.canDeleteApp(this.application);\n this.isOwner = this.ecosystemService.isOwner(this.application);\n this.isActivityLogSupported = this.isActivityLogSupportedByApp(this.application);\n this.isCustomMicroservice = this.ecosystemService.isCustomMicroservice(this.application);\n this.isSubscribed = await this.ecosystemService.checkIfSubscribed(this.application);\n this.onApplication(this.application);\n }\n\n async save(app: IApplication) {\n const icon = this.formGroup.controls['icon'].value;\n const name = this.formGroup.controls['name'].value;\n if (icon) {\n app = {\n ...app,\n config: { ...this.application.config, icon: { class: icon }, appTitle: name }\n };\n } else if (this.application.config) {\n app = {\n ...app,\n config: { ...this.application.config, appTitle: name }\n };\n }\n app.id = this.application.id;\n try {\n const { data } = await this.ecosystemService.updateApp(app);\n this.formGroup.reset();\n this.loadApplication();\n if (data) {\n this.alertService.success(gettext('Application saved.'));\n }\n } catch (ex) {\n // do nothing\n }\n }\n\n onNewArchive() {\n this.loadBinaryMo();\n }\n\n async updateToLatestVersion() {\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.APPLICATION_PROPERTIES,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.APPLICATION_PROPERTIES,\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.UPDATE_AVAILABLE,\n url: this.CURRENT_LOCATION\n }\n );\n\n try {\n const translatedBody = this.translate.instant(\n gettext(\n `You're using the version {{ currentVersion }} of the {{ packageName }} package, the latest version available is {{ latestVersion }}, do you want to update? You can always revert to a previous version in the Activity log panel.`\n ),\n {\n currentVersion: this.application.manifest?.version,\n latestVersion: this.blueprintApplicationVersion,\n packageName: this.sourcePackage.name\n }\n );\n await this.modalService.confirm(gettext('Update application'), translatedBody, 'warning', {\n ok: gettext('Update'),\n cancel: gettext('Cancel')\n });\n } catch {\n // modal canceled\n return;\n }\n\n try {\n await this.bsModalService.show<UpdateApplicationModalComponent>(\n UpdateApplicationModalComponent,\n {\n ariaDescribedby: 'modal-body',\n ariaLabelledBy: 'modal-title',\n class: 'modal-sm',\n ignoreBackdropClick: true,\n initialState: {\n sourcePackage: this.sourcePackage,\n application: this.application\n }\n }\n ).content.result;\n } catch {\n // modal canceled\n return;\n }\n\n await this.refresh();\n this.alertService.success(gettext('Application updated.'));\n }\n\n private getDescription(application: IApplication): string | undefined {\n if (!application) {\n return;\n }\n return application.description || application.manifest?.description;\n }\n\n private async confirmSubscriptionChange(initialState: {\n application: IApplication;\n isSubscribed: boolean;\n }) {\n await (\n this.bsModalService.show(SubscriptionModalComponent, {\n class: 'modal-sm',\n ariaDescribedby: 'modal-body',\n ariaLabelledBy: 'modal-title',\n initialState,\n ignoreBackdropClick: true\n }).content as SubscriptionModalComponent\n ).result;\n }\n\n private async resolveSourcePackageDetails() {\n try {\n this.sourcePackage = (await this.getPackage(this.application.manifest?.source)).data;\n if (this.sourcePackage) {\n this.packageProperties.push({\n label: gettext('Source package'),\n value: this.sourcePackage.name,\n type: 'link',\n action: () =>\n this.router.navigateByUrl(\n ViewContext.Extension.replace(':id', this.sourcePackage.id.toString())\n )\n });\n }\n } catch {\n this.alertService.warning(gettext('Unable to resolve source package.'));\n return;\n }\n\n await this.extractVersionInformation(this.application);\n }\n\n private initForm(): void {\n this.formGroup = this.formBuilder.group({\n id: [{ value: '' }],\n name: [Validators.required, Validators.maxLength(120)],\n key: [Validators.required, Validators.maxLength(120)],\n contextPath: [Validators.required, Validators.maxLength(120)],\n description: ['', Validators.maxLength(200)],\n username: [Validators.required],\n password: [Validators.required],\n externalUrl: [Validators.required],\n icon: [undefined, [Validators.minLength(1)]]\n });\n if (!this.hasAdminPermissions) {\n this.formGroup.disable();\n }\n }\n\n private isActivityLogSupportedByApp(app: IApplication): boolean {\n return (\n this.ecosystemService.isOwner(app) &&\n app.type !== ApplicationType.MICROSERVICE &&\n app.type !== ApplicationType.EXTERNAL\n );\n }\n\n private setBreadcrumbConfig() {\n this.breadcrumbConfig = {\n icon: this.isMicroservice ? 'microchip' : this.isFeature ? 'tab' : 'c8y-modules',\n label: this.isMicroservice\n ? gettext('Microservices')\n : this.isFeature\n ? gettext('Features')\n : gettext('Applications'),\n path: this.isMicroservice\n ? '/ecosystem/microservice/microservices'\n : this.isFeature\n ? 'ecosystem/application/features'\n : 'ecosystem/application/applications'\n };\n }\n\n private async loadBinaryMo() {\n this.binaryMo = (await this.inventoryService.detail(this.application.activeVersionId)).data;\n }\n\n private async extractVersionInformation(application: IApplication) {\n if (!application.manifest.isPackage && !application.manifest.source) {\n return;\n }\n\n const blueprintApplicationId = application.manifest?.source;\n const currentVersion = application.manifest?.version;\n\n try {\n const { data: blueprintApplicationVersions } =\n await this.applicationService.listVersions(blueprintApplicationId);\n const blueprintLatestVersion = this.ecosystemService.getApplicationVersionObjectByTag(\n blueprintApplicationVersions,\n 'latest'\n );\n this.blueprintApplicationVersion = blueprintLatestVersion.version;\n this.isUpdateAvailable = this.ecosystemService.shouldUpgradePackage(\n currentVersion,\n blueprintLatestVersion\n );\n } catch {\n this.alertService.warning(gettext('Unable to resolve versions of source package.'));\n }\n }\n}\n","<c8y-title>{{ application | humanizeAppName | async }}</c8y-title>\n\n<c8y-breadcrumb *ngIf=\"!isMicroservice\">\n <c8y-breadcrumb-item\n [icon]=\"'c8y-atom'\"\n [label]=\"'Ecosystem' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-modules'\"\n [label]=\"'Applications' | translate\"\n [path]=\"'ecosystem/application/applications'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"breadcrumbConfig?.icon\"\n *ngIf=\"isFeature\"\n [label]=\"breadcrumbConfig?.label\"\n [path]=\"breadcrumbConfig?.path\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"application | humanizeAppName | async\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Properties' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-breadcrumb *ngIf=\"isMicroservice\">\n <c8y-breadcrumb-item\n [icon]=\"'c8y-atom'\"\n [label]=\"'Ecosystem' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"breadcrumbConfig?.icon\"\n [label]=\"breadcrumbConfig?.label\"\n [path]=\"breadcrumbConfig?.path\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"application | humanizeAppName | async\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Properties' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<div class=\"row\">\n <div [ngClass]=\"{ 'col-md-8': !isActivityLogSupported, 'col-md-12': isActivityLogSupported }\">\n <div\n class=\"card content-fullpage\"\n *ngIf=\"application\"\n [ngClass]=\"{ 'd-grid grid__col--7-5--md': isActivityLogSupported }\"\n >\n <form\n class=\"d-flex d-col content-fullpage\"\n (ngSubmit)=\"formGroup.valid && save(formGroup.value)\"\n [formGroup]=\"formGroup\"\n novalidate\n >\n <div\n class=\"d-contents\"\n *ngIf=\"!isLoading\"\n >\n <div class=\"card-block separator-bottom large-padding flex-no-shrink\">\n <div class=\"d-flex-md a-i-start text-center text-left-md\">\n <c8y-app-icon\n class=\"icon-48\"\n *ngIf=\"!isPackage && !isFeature && !isMicroservice && !isExternal\"\n [app]=\"application\"\n [contextPath]=\"application.contextPath\"\n [name]=\"application.name\"\n ></c8y-app-icon>\n <i\n class=\"icon-48\"\n c8yIcon=\"big-parcel\"\n *ngIf=\"isPackage\"\n ></i>\n <i\n class=\"icon-48\"\n c8yIcon=\"tab\"\n *ngIf=\"isFeature\"\n ></i>\n <i\n class=\"icon-48\"\n c8yIcon=\"microchip\"\n *ngIf=\"isMicroservice\"\n ></i>\n <i\n class=\"icon-48\"\n c8yIcon=\"globe1\"\n *ngIf=\"isExternal\"\n ></i>\n\n <div class=\"p-t-md-16 p-l-md-16 p-r-md-32 flex-grow\">\n <p class=\"h4 text-medium m-b-8\">{{ application | humanizeAppName | async }}</p>\n <p *ngIf=\"!isOwner\">\n <em class=\"text-muted\">\n {{\n formGroup?.controls?.description?.value || (noDescriptionLabel | translate)\n }}\n </em>\n </p>\n <div\n class=\"form-group m-b-0\"\n *ngIf=\"isOwner\"\n >\n <label\n class=\"editable\"\n [ngClass]=\"{ updated: formGroup?.controls?.description?.dirty }\"\n >\n <textarea\n class=\"form-control no-resize\"\n placeholder=\"{{ noDescriptionLabel | translate }}\"\n name=\"description\"\n c8y-textarea-autoresize\n formControlName=\"description\"\n ></textarea>\n </label>\n </div>\n </div>\n <div class=\"text-right-md m-t-4\">\n <span\n class=\"label\"\n [ngClass]=\"appState?.class\"\n >\n {{ appState?.label | translate }}\n </span>\n <div\n class=\"fit-w m-t-2\"\n *ngIf=\"application.manifest?.version\"\n data-cy=\"application-detail--version\"\n >\n <label\n class=\"text-label-small\"\n translate\n >\n Version:\n </label>\n <small class=\"p-l-4 text-bold\">{{ application.manifest?.version }}</small>\n </div>\n <div\n class=\"fit-w m-t-2\"\n *ngIf=\"!isUnpacked\"\n >\n <label\n class=\"text-label-small\"\n translate\n >\n Creation time:\n </label>\n <small class=\"p-l-4 text-bold\">\n {{ (binaryMo?.creationTime | c8yDate) || '---' }}\n </small>\n </div>\n <div class=\"m-t-8\">\n <button\n class=\"btn btn-default btn-sm\"\n [attr.aria-label]=\"\n 'There\\'s a newer version available, click to update' | translate\n \"\n tooltip=\"{{\n 'There\\'s a newer version available, click to update' | translate\n }}\"\n placement=\"top\"\n type=\"button\"\n *ngIf=\"isUpdateAvailable\"\n (click)=\"updateToLatestVersion()\"\n [delay]=\"300\"\n >\n <i [c8yIcon]=\"'installing-updates'\"></i>\n {{ 'Update available' | translate }}\n </button>\n <button\n class=\"btn btn-default btn-sm\"\n title=\"{{ 'Open' | translate }}\"\n type=\"button\"\n (click)=\"openApp(application)\"\n [disabled]=\"disableOpenInBrowser\"\n *ngIf=\"canOpenInBrowser\"\n >\n <i [c8yIcon]=\"'external-link'\"></i>\n {{ 'Open' | translate }}\n </button>\n <div *ngIf=\"canOpenInBrowser && disableOpenInBrowser\">\n <small\n class=\"text-muted\"\n translate\n >\n The application is overwritten by a custom application sharing the same path\n </small>\n </div>\n <span *ngIf=\"isCustomMicroservice\">\n <button\n class=\"btn btn-default btn-sm\"\n title=\"{{ 'Subscribe' | translate }}\"\n type=\"button\"\n (click)=\"subscribe()\"\n *ngIf=\"!isSubscribed\"\n >\n <i [c8yIcon]=\"'check-circle-o'\"></i>\n {{ 'Subscribe' | translate }}\n </button>\n <button\n class=\"btn btn-default btn-sm\"\n title=\"{{ 'Unsubscribe' | translate }}\"\n type=\"button\"\n (click)=\"unsubscribe()\"\n *ngIf=\"isSubscribed\"\n >\n <i [c8yIcon]=\"'minus-circle'\"></i>\n {{ 'Unsubscribe' | translate }}\n </button>\n </span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"inner-scroll bg-level-0 flex-grow\">\n <div class=\"card-block large-padding\">\n <div\n class=\"row p-16\"\n *ngIf=\"isPackage\"\n >\n <c8y-properties-list\n icon=\"info\"\n [title]=\"'Package details' | translate\"\n [data]=\"application.manifest\"\n [properties]=\"packageProperties\"\n [emptyLabel]=\"'---'\"\n ></c8y-properties-list>\n </div>\n <div\n class=\"row p-16\"\n *ngIf=\"sourcePackage\"\n >\n <c8y-properties-list\n icon=\"info\"\n [title]=\"'Source package information' | translate\"\n [data]=\"sourcePackage.manifest\"\n [properties]=\"packageProperties\"\n [emptyLabel]=\"'---'\"\n ></c8y-properties-list>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-5\">\n <c8y-form-group>\n <label for=\"appId\">ID</label>\n <input\n class=\"form-control\"\n id=\"appId\"\n name=\"id\"\n type=\"text\"\n autocomplete=\"off\"\n [readonly]=\"true\"\n formControlName=\"id\"\n />\n </c8y-form-group>\n </div>\n <div class=\"col-sm-7\">\n <c8y-form-group>\n <label>{{ 'Name' | translate }}</label>\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g. My application' | translate }}\"\n name=\"name\"\n type=\"text\"\n required\n [readonly]=\"!isOwner\"\n formControlName=\"name\"\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-sm-5\">\n <c8y-form-group>\n <label>{{ 'Application key' | translate }}</label>\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g. my-application-key' | translate }}\"\n name=\"key\"\n type=\"text\"\n required\n [readonly]=\"application.id || !isOwner\"\n formControlName=\"key\"\n />\n </c8y-form-group>\n </div>\n\n <div class=\"col-sm-7\" data-cy=\"application-detail--type\">\n <c8y-form-group>\n <label>{{ 'Type' | translate }}</label>\n <div>\n <div *ngIf=\"application.id\">\n <p class=\"form-control-static\">\n <i [c8yIcon]=\"iconMap[application.type]\"></i>\n <span>\n {{ application.type | translate }}\n </span>\n </p>\n </div>\n </div>\n </c8y-form-group>\n </div>\n </div>\n\n <div [ngSwitch]=\"application.type\">\n <div *ngSwitchCase=\"'HOSTED'\">\n <c8y-form-group>\n <label>{{ 'Path' | translate }}</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`used in URL`' | translate }}\"\n name=\"contextPath\"\n type=\"text\"\n required\n [readOnly]=\"application.id || !isOwner\"\n formControlName=\"contextPath\"\n />\n </div>\n </c8y-form-group>\n </div>\n\n <div *ngSwitchCase=\"'MICROSERVICE'\">\n <c8y-form-group>\n <label>{{ 'Path' | translate }}</label>\n <div class=\"input-group\">\n <span class=\"input-group-addon\">/service/</span>\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g. my-microservice`used in URL`' | translate }}\"\n name=\"contextPath\"\n type=\"text\"\n required\n [readOnly]=\"application.id || !isOwner\"\n formControlName=\"contextPath\"\n />\n </div>\n </c8y-form-group>\n <div class=\"row\">\n <div\n class=\"col-sm-4 m-b-16 flex-auto\"\n *ngIf=\"application.manifest.version\"\n data-cy=\"application-detail--version\"\n >\n <label>{{ 'Version' | translate }}</label>\n <p class=\"form-control-static\">\n {{ application.manifest.version }}\n </p>\n </div>\n <div\n class=\"col-sm-4 m-b-16 flex-auto\"\n *ngIf=\"application.manifest.isolation\"\n data-cy=\"application-detail--isolation\"\n >\n <label>{{ 'Isolation' | translate }}</label>\n <p class=\"form-control-static\">\n <span *ngIf=\"singleTenant\">\n <i\n class=\"c8y-icon-duocolor h4\"\n [c8yIcon]=\"'c8y-enterprise'\"\n ></i>\n {{ 'Single tenant' | translate }}\n </span>\n <span *ngIf=\"!singleTenant\">\n <i\n class=\"c8y-icon-duocolor icon-32\"\n [c8yIcon]=\"'c8y-sub-tenants'\"\n ></i>\n {{ 'Multi tenant' | translate }}\n </span>\n </p>\n </div>\n <div\n class=\"col-sm-4 m-b-16 flex-auto\"\n *ngIf=\"application.manifest.isolation\"\n data-cy=\"application-detail--billing-mode\"\n >\n <label>{{ 'Billing mode' | translate }}</label>\n <p class=\"form-control-static\">\n <span\n [tooltip]=\"'Resources usage assigned to: Owner' | translate\"\n *ngIf=\"subscription\"\n >\n {{ 'Subscription' | translate }}\n </span>\n <span\n [tooltip]=\"'Resources usage assigned to: Subscriber | translate'\"\n *ngIf=\"!subscription && singleTenant\"\n >\n {{ 'Resources' | translate }}\n </span>\n <span\n [tooltip]=\"'Resources usage assigned to: Owner' | translate\"\n *ngIf=\"!subscription && !singleTenant\"\n >\n {{ 'Resources' | translate }}\n </span>\n </p>\n </div>\n </div>\n\n <div\n class=\"legend form-block m-t-40\"\n *ngIf=\"application.manifest.provider\"\n >\n {{ 'Provider' | translate }}\n </div>\n <div\n class=\"list-inline\"\n *ngIf=\"application.manifest.provider\"\n data-cy=\"application-detail--provider\"\n >\n <div *ngIf=\"application.manifest.provider.name\">\n <div class=\"col-sm-4 m-b-16\">\n <label>{{ 'Name' | translate }}</label>\n <p class=\"form-control-static\">\n {{ application.manifest.provider.name }}\n </p>\n </div>\n </div>\n <div *ngIf=\"application.manifest.provider.domain\">\n <div class=\"col-sm-4 m-b-16\">\n <label>{{ 'Domain' | translate }}</label>\n <p class=\"form-control-static\">\n {{ application.manifest.provider.domain }}\n </p>\n </div>\n </div>\n <div *ngIf=\"application.manifest.provider.support\">\n <div class=\"col-sm-4 m-b-16\">\n <label>{{ 'Support' | translate }}</label>\n <p class=\"form-control-static\">\n {{ application.manifest.provider.support }}\n </p>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'EXTERNAL'\">\n <c8y-form-group>\n <label>{{ 'External URL' | translate }}</label>\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} http://www.example.com/\"\n name=\"externalUrl\"\n type=\"url\"\n required\n [pattern]=\"'^(?!javascript:).+'\"\n [readOnly]=\"!isOwner\"\n formControlName=\"externalUrl\"\n />\n <c8y-messages>\n <c8y-message\n [name]=\"'pattern'\"\n [text]=\"'Valid URL required.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n\n <div *ngIf=\"isOwner && !isCustomMicroservice\">\n <label>{{ 'Select icon' | translate }}</label>\n <c8y-icon-selector-wrapper\n name=\"icon\"\n formControlName=\"icon\"\n ></c8y-icon-selector-wrapper>\n </div>\n </div>\n </div>\n </div>\n <ng-container *ngIf=\"isCustomMicroservice\">\n <div\n class=\"d-contents\"\n *ngIf=\"!isLoading\"\n >\n <c8y-upload-archive\n [(application)]=\"application\"\n (refresh)=\"onNewArchive()\"\n ></c8y-upload-archive>\n </div>\n </ng-container>\n <div\n class=\"card-footer separator\"\n *ngIf=\"application && !!isOwner && hasAdminPermissions\"\n >\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n (click)=\"cancel()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-danger\"\n title=\"{{ 'Delete' | translate }}\"\n type=\"button\"\n (click)=\"delete()\"\n *ngIf=\"canDelete\"\n >\n {{ 'Delete' | translate }}\n </button>\n <button\n class=\"btn btn-primary btn-form\"\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n [disabled]=\"!application.type || formGroup.invalid || formGroup.pristine\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </form>\n\n <div\n class=\"content-fullpage d-flex d-col bg-level-1\"\n *ngIf=\"isActivityLogSupported\"\n >\n <div class=\"card-header separator\">\n <div\n class=\"card-title\"\n translate\n >\n Activity log\n </div>\n <div class=\"m-l-auto\">\n <button\n class=\"btn btn-link btn-sm\"\n title=\"{{ 'Reload' | translate }}\"\n type=\"button\"\n (click)=\"load()\"\n >\n <i\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': isLoading }\"\n ></i>\n {{ 'Reload' | translate }}\n </button>\n </div>\n </div>\n <div\n class=\"p-16 text-center\"\n *ngIf=\"isLoading\"\n >\n <c8y-loading></c8y-loading>\n </div>\n <c8y-activity-log\n class=\"d-contents\"\n *ngIf=\"!isLoading\"\n [hasAdminPermissions]=\"hasAdminPermissions\"\n [application]=\"application\"\n ></c8y-activity-log>\n </div>\n </div>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot } from '@angular/router';\nimport { EcosystemService } from '@c8y/ngx-components/ecosystem/shared';\n\n@Injectable()\nexport class ApplicationPropertiesGuard {\n constructor(private ecosystemService: EcosystemService) {}\n\n canActivate(route: ActivatedRouteSnapshot) {\n const app = route.data.contextData || route.parent.data.contextData;\n if (!app) {\n return false;\n }\n return !this.ecosystemService.isPackage(app);\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport {\n FormBuilder,\n FormGroup,\n Validators,\n FormsModule,\n ReactiveFormsModule\n} from '@angular/forms';\nimport { ApplicationService, ApplicationType, IApplication, IManifest } from '@c8y/client';\nimport {\n AlertService,\n WizardComponent,\n WizardHeaderComponent,\n IconDirective,\n C8yTranslateDirective,\n WizardBodyComponent,\n FormGroupComponent,\n RequiredInputPlaceholderDirective,\n WizardFooterComponent,\n OperationResultComponent,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { NgIf } from '@angular/common';\n\n@Component({\n selector: 'c8y-add-external-application',\n templateUrl: './add-external-application.component.html',\n imports: [\n NgIf,\n FormsModule,\n ReactiveFormsModule,\n WizardHeaderComponent,\n IconDirective,\n C8yTranslateDirective,\n WizardBodyComponent,\n FormGroupComponent,\n RequiredInputPlaceholderDirective,\n WizardFooterComponent,\n OperationResultComponent,\n C8yTranslatePipe\n ]\n})\nexport class AddExternalApplicationComponent implements OnInit {\n formGroup: FormGroup;\n createdApp: IApplication;\n\n constructor(\n private applicationService: ApplicationService,\n private formBuilder: FormBuilder,\n private alertService: AlertService,\n private wizardComponent: WizardComponent\n ) {}\n\n ngOnInit() {\n this.initForm();\n }\n\n back() {\n this.wizardComponent.reset();\n }\n\n cancel() {\n this.wizardComponent.close();\n }\n\n done() {\n this.wizardComponent.close();\n }\n\n async save(app: IApplication) {\n const appToSave = {\n manifest: {} as IManifest,\n externalUrl: app.externalUrl,\n type: ApplicationType.EXTERNAL,\n name: app.name,\n key: app.key\n };\n try {\n this.createdApp = await this.applicationService.create(appToSave);\n } catch (ex) {\n this.alertService.addServerFailure(ex);\n }\n }\n\n private initForm(): void {\n this.formGroup = this.formBuilder.group({\n name: ['', [Validators.required, Validators.maxLength(120)]],\n key: ['', [Validators.required, Validators.maxLength(120)]],\n externalUrl: ['', Validators.required]\n });\n }\n}\n","<form *ngIf=\"!createdApp; else appCreated\" [formGroup]=\"formGroup\" novalidate>\n <c8y-wizard-header>\n <i [c8yIcon]=\"'cloud-link'\"></i>\n <h4 translate id=\"modal-title\">Add external application</h4>\n </c8y-wizard-header>\n\n <c8y-wizard-body>\n <p class=\"p-16 text-medium text-center bg-level-0 separator-bottom sticky-top\">\n {{ 'Provide external application details' | translate }}\n </p>\n <div class=\"modal-body p-t-8\" id=\"modal-body\">\n <c8y-form-group>\n <label style=\"text-align: left\">{{ 'Name' | translate }}</label>\n <input\n class=\"form-control\"\n formControlName=\"name\"\n name=\"name\"\n placeholder=\"{{ 'e.g. My application' | translate }}\"\n required\n type=\"text\"\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label style=\"text-align: left\">{{ 'Application key' | translate }}</label>\n <input\n class=\"form-control\"\n formControlName=\"key\"\n name=\"key\"\n placeholder=\"{{ 'e.g. my-external-application-key' | translate }}\"\n required\n type=\"text\"\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label style=\"text-align: left\">{{ 'External URL' | translate }}</label>\n <input\n [pattern]=\"'^(?!javascript:).+'\"\n class=\"form-control\"\n formControlName=\"externalUrl\"\n name=\"externalUrl\"\n placeholder=\"{{ 'e.g.' | translate }} https://www.example.com\"\n required\n type=\"url\"\n />\n </c8y-form-group>\n </div>\n </c8y-wizard-body>\n\n <c8y-wizard-footer>\n <button\n (click)=\"back()\"\n class=\"btn btn-default\"\n title=\"{{ 'Back' | translate }}\"\n translate\n type=\"button\"\n >\n Back\n </button>\n <button (click)=\"cancel()\" class=\"btn btn-default\" title=\"{{ 'Cancel' | translate }}\" translate>\n Cancel\n </button>\n <button\n (click)=\"save(formGroup.value)\"\n [disabled]=\"formGroup.invalid || formGroup.pristine\"\n class=\"btn btn-primary btn-form\"\n title=\"{{ 'Add application' | translate }}\"\n type=\"button\"\n >\n {{ 'Add application' | translate }}\n </button>\n </c8y-wizard-footer>\n</form>\n<ng-template #appCreated>\n <c8y-wizard-body>\n <div class=\"d-flex d-col j-c-center a-i-center\" style=\"min-height: 324px\">\n <c8y-operation-result\n text=\"{{ 'Application created' | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"success\"\n class=\"lead\"\n ></c8y-operation-result>\n </div>\n </c8y-wizard-body>\n <c8y-wizard-footer>\n <button (click)=\"done()\" class=\"btn btn-default\" title=\"{{ 'Done' | translate }}\" translate>\n Done\n </button>\n <a\n (click)=\"$event.stopPropagation()\"\n [href]=\"formGroup.value.externalUrl\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n class=\"btn btn-primary\"\n title=\"{{ 'Open' | translate }}\"\n >\n <i c8yIcon=\"external-link\" class=\"m-r-4\"></i>\n {{ 'Open' | translate }}\n </a>\n </c8y-wizard-footer>\n</ng-template>\n","import { Component } from '@angular/core';\nimport { ApplicationType, IApplication } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components';\nimport { EcosystemService, AddApplicationComponent } from '@c8y/ngx-components/ecosystem/shared';\n\n@Component({\n selector: 'c8y-add-web-application',\n template: `<c8y-add-application\n [headerIcon]=\"'upload'\"\n [headerText]=\"headerText\"\n [successText]=\"successText\"\n [createApplicationHandler]=\"createApplicationHandler\"\n [uploadApplicationHandler]=\"uploadApplicationHandler\"\n [canGoBack]=\"true\"\n ></c8y-add-application>`,\n imports: [AddApplicationComponent]\n})\nexport class AddWebApplicationComponent {\n headerText: string = gettext('Upload web application');\n successText: string = gettext('Application created');\n\n constructor(private ecosystemService: EcosystemService) {}\n\n createApplicationHandler = (f: File) => this.createApplication(f);\n uploadApplicationHandler = (f: File, app: IApplication) => this.uploadApplication(f, app);\n\n async createApplication(file: File): Promise<IApplication> {\n await this.ecosystemService.isValidAppType(file, ApplicationType.HOSTED);\n return this.ecosystemService.createAppForArchive(file);\n }\n\n async uploadApplication(file: File, app: IApplication): Promise<IApplication> {\n return this.ecosystemService.uploadArchiveToApp(file, app);\n }\n}\n","import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { IApplication } from '@c8y/client';\nimport {\n WizardConfig,\n WizardModalService,\n TitleComponent,\n BreadcrumbComponent,\n BreadcrumbItemComponent,\n IfAllowedDirective,\n ActionBarItemComponent,\n IconDirective,\n ListDisplaySwitchComponent,\n HelpComponent,\n C8yTranslateDirective,\n EmptyStateComponent,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { ModalOptions } from 'ngx-bootstrap/modal';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { shareReplay, switchMap, takeUntil, tap } from 'rxjs/operators';\nimport {\n EcosystemService,\n EcosystemWizards,\n defaultPackageAvailabilities,\n FilterPipe,\n ListFiltersComponent,\n FilterableAppOrPlugin,\n ApplicationCardComponent\n} from '@c8y/ngx-components/ecosystem/shared';\nimport { NgClass, NgIf, NgFor, AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'c8y-application-list',\n templateUrl: './application-list.component.html',\n imports: [\n TitleComponent,\n BreadcrumbComponent,\n BreadcrumbItemComponent,\n IfAllowedDirective,\n ActionBarItemComponent,\n IconDirective,\n NgClass,\n NgIf,\n ListFiltersComponent,\n ListDisplaySwitchComponent,\n HelpComponent,\n C8yTranslateDirective,\n NgFor,\n ApplicationCardComponent,\n EmptyStateComponent,\n C8yTranslatePipe,\n AsyncPipe\n ]\n})\nexport class ApplicationListComponent implements OnInit, OnDestroy {\n reloading = false;\n reload$: BehaviorSubject<void> = new BehaviorSubject(null);\n\n apps$: Observable<IApplication[]> = this.reload$.pipe(\n tap(() => (this.reloading = true)),\n switchMap(() => this.ecosystemService.getWebApplications()),\n tap(apps => {\n apps.forEach(app => {\n app.filterProps = this.ecosystemService.getAppFilterProps(app);\n });\n }),\n tap(() => (this.reloading = false)),\n shareReplay()\n );\n filteredApps$: Observable<FilterableAppOrPlugin[]>;\n listClass: string;\n packageAvailabilities = defaultPackageAvailabilities;\n @ViewChild(ListFiltersComponent) filtersComponent: ListFiltersComponent;\n private destroy$ = new Subject<void>();\n\n constructor(\n private ecosystemService: EcosystemService,\n private wizardModalService: WizardModalService\n ) {}\n\n ngOnInit() {\n this.loadApplications();\n }\n\n loadApplications() {\n this.reload$.next();\n }\n\n addApplication() {\n const wizardConfig: WizardConfig = {\n headerText: 'Add Application',\n headerIcon: 'c8y-atom'\n };\n\n const initialState: Record<string, unknown> = {\n wizardConfig,\n id: EcosystemWizards.APPLICATION_UPLOAD\n };\n\n const modalOptions: ModalOptions = { initialState };\n\n const modalRef = this.wizardModalService.show(modalOptions);\n modalRef.content.onClose.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.loadApplications();\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n setFilterPipe(pipe: FilterPipe) {\n this.filteredApps$ = this.apps$.pipe(src => pipe(src));\n }\n\n resetFilters() {\n this.filtersComponent.resetAllFilters();\n }\n}\n","<c8y-title>{{ 'Applications' | translate }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-atom'\"\n [label]=\"'Ecosystem' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-modules'\"\n [label]=\"'Applications' | translate\"\n [path]=\"'ecosystem/application/applications'\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n *c8yIfAllowed=\"['ROLE_APPLICATION_MANAGEMENT_ADMIN']\"\n>\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Add application' | translate }}\"\n (click)=\"addApplication()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add application' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Reload' | translate }}\"\n (click)=\"loadApplications()\"\n >\n <i\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': reloading }\"\n ></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'left'\">\n <c8y-list-filters\n *ngIf=\"apps$ | async\"\n (filterPipeChange)=\"setFilterPipe($event)\"\n [packageAvailabilities]=\"packageAvailabilities\"\n ></c8y-list-filters>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'left'\"\n itemClass=\"navbar-form hidden-xs\"\n>\n <c8y-list-display-switch\n (onListClassChange)=\"listClass = $event\"\n [listLength]=\"(apps$ | async)?.length\"\n ></c8y-list-display-switch>\n</c8y-action-bar-item>\n\n<c8y-help src=\"/docs/standard-tenant/ecosystem/#managing-applications\"></c8y-help>\n\n<div\n class=\"c8y-empty-state text-center\"\n *ngIf=\"(apps$ | async)?.length === 0\"\n>\n <h1 class=\"c8y-icon c8y-icon-modules c8y-icon-duocolor\"></h1>\n <h3 translate>No applications to display.</h3>\n <p translate>Add your first application by clicking below.</p>\n <p>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Add application' | translate }}\"\n (click)=\"addApplication()\"\n >\n {{ 'Add application' | translate }}\n </button>\n </p>\n</div>\n\n<div\n class=\"card-group\"\n [ngClass]=\"listClass\"\n>\n <div\n class=\"page-sticky-header hidden-xs d-flex\"\n *ngIf=\"(apps$ | async)?.length > 0\"\n >\n <div class=\"card-block card-column-40\">\n <div class=\"card-appicon p-l-32 p-r-16 m-r-0 m-l-4\"></div>\n {{ 'Application' | translate }}\n </div>\n <div class=\"card-block p-0 card-column-80 m-r-40\">\n <div class=\"card-block card-column-80\">{{ 'Description' | translate }}</div>\n <div class=\"card-block card-column-20\">{{ 'Type' | translate }}</div>\n <div class=\"card-block card-column-20\"></div>\n </div>\n </div>\n <div\n class=\"col-xs-12 col-sm-4 col-md-3\"\n *ngFor=\"let app of filteredApps$ | async\"\n >\n <c8y-application-card\n class=\"d-contents\"\n (onAppDeleted)=\"loadApplications()\"\n (onAppCloned)=\"loadApplications()\"\n [app]=\"app\"\n ></c8y-application-card>\n </div>\n</div>\n\n<c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No matching applications.' | translate\"\n [subtitle]=\"'Refine your search terms and/or the filters' | translate\"\n *ngIf=\"(apps$ | async)?.length > 0 && (filteredApps$ | async)?.length === 0\"\n>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Reset filters' | translate }}\"\n type=\"button\"\n (click)=\"resetFilters()\"\n >\n {{ 'Reset filters' | translate }}\n </button>\n</c8y-ui-empty-state>\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { ApplicationService, IApplication, IApplicationVersion, IResultList } from '@c8y/client';\nimport {\n PluginsService,\n WizardComponent,\n WizardHeaderComponent,\n IconDirective,\n C8yTranslateDirective,\n WizardBodyComponent,\n EmptyStateComponent,\n FormGroupComponent,\n TypeaheadComponent,\n ForOfDirective,\n ListItemComponent,\n ListItemIconComponent,\n HighlightComponent,\n LoadingComponent,\n OperationResultComponent,\n WizardFooterComponent,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { BehaviorSubject, combineLatest, from, Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport {\n EcosystemService,\n LicensedApplicationPlugin,\n ApplicationPropertiesFormComponent\n} from '@c8y/ngx-components/ecosystem/shared';\nimport { NgIf, NgFor, NgStyle, AsyncPipe } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n selector: 'c8y-install-from-package',\n templateUrl: './install-from-package.component.html',\n imports: [\n WizardHeaderComponent,\n IconDirective,\n C8yTranslateDirective,\n WizardBodyComponent,\n NgIf,\n EmptyStateComponent,\n NgFor,\n ApplicationPropertiesFormComponent,\n NgStyle,\n FormGroupComponent,\n TypeaheadComponent,\n FormsModule,\n ForOfDirective,\n ListItemComponent,\n ListItemIconComponent,\n HighlightComponent,\n LoadingComponent,\n OperationResultComponent,\n WizardFooterComponent,\n C8yTranslatePipe,\n AsyncPipe\n ]\n})\nexport class InstallFromPackageComponent implements OnInit {\n newAppConfig: IApplication;\n selectedPackage: IApplication;\n packages: IApplication[];\n inProgress: boolean;\n deployedWithSuccess = false;\n isDeployed = false;\n\n model = {\n selected: undefined,\n binary: {\n id: undefined\n }\n };\n canDeploy = false;\n onInput: BehaviorSubject<string> = new BehaviorSubject<string>('');\n versions$: Observable<IResultList<IApplicationVersion>>;\n @ViewChild(ApplicationPropertiesFormComponent)\n applicationPropertiesForm: ApplicationPropertiesFormComponent;\n\n constructor(\n private ecosystemService: EcosystemService,\n private applicationService: ApplicationService,\n private wizardComponent: WizardComponent,\n private pluginsService: PluginsService\n ) {}\n\n async ngOnInit() {\n this.loadPackages();\n }\n\n back() {\n this.wizardComponent.reset();\n }\n\n clean() {\n this.selectedPackage = undefined;\n this.versions$ = undefined;\n this.model = {\n selected: undefined,\n binary: {\n id: undefined\n }\n };\n }\n\n cancel() {\n this.wizardComponent.close();\n }\n\n async deployApp() {\n this.inProgress = true;\n const formGroupValue = this.applicationPropertiesForm.formGroup.getRawValue();\n const { contextPath, license, name } = this.selectedPackage;\n const type = this.pluginsService.getPackageType(this.selectedPackage);\n const licensedApp: LicensedApplicationPlugin = {\n contextPath,\n license,\n name,\n type,\n version: this.model.selected.version\n };\n const isArchived = await this.ecosystemService.verifyArchived([licensedApp]);\n if (!isArchived) {\n this.cancel();\n return;\n }\n\n const licensesVerifiedByUser = await this.ecosystemService.verifyLicenses([licensedApp]);\n if (!licensesVerifiedByUser) {\n this.cancel();\n return;\n }\n\n // Verify if selected package version is compatible with current platform versions.\n this.selectedPackage.manifest.version = this.model.selected.version;\n const verifyVersionCompatibility =\n await this.ecosystemService.verifyBlueprintVersionsCompatibility(\n this.selectedPackage.manifest\n );\n\n if (!verifyVersionCompatibility) {\n this.cancel();\n return;\n }\n\n try {\n await this.ecosystemService.deployApp(this.selectedPackage, formGroupValue, this.model);\n this.deployedWithSuccess = true;\n } catch (error) {\n this.ecosystemService.alertError(error);\n } finally {\n this.markAsDeployed();\n }\n }\n\n onAppVersionSelect(appVersion: IApplicationVersion) {\n Object.assign(this.model, {\n selected: appVersion\n });\n this.canDeploy = true;\n }\n\n async selectPackage(selectedPackage: IApplication) {\n const apps = await this.ecosystemService.getHostedAndPackageApplications();\n this.newAppConfig = this.ecosystemService.getUniqueAppConfig(selectedPackage, apps);\n this.selectedPackage = selectedPackage;\n\n this.loadSelectedPackageVersions();\n }\n\n private loadSelectedPackageVersions() {\n this.versions$ = combineLatest([\n this.getAppVersions(this.selectPackage),\n this.onInput.asObservable()\n ]).pipe(\n map(([resultList, filterStr]) => {\n this.canDeploy = false;\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 }\n\n private getAppVersions(mo: IApplication) {\n const versions = mo?.applicationVersions;\n return versions && versions.length > 0\n ? of({ data: versions, res: undefined })\n : from(this.applicationService.listVersions(this.selectedPackage.id));\n }\n\n private setInitialValueForInput(versions: IApplicationVersion[]) {\n if (!this.model.selected && versions.length > 0) {\n const latest = versions.find(v => v.tags.includes('latest'));\n this.model.selected = latest || versions[0];\n this.canDeploy = true;\n }\n }\n\n private filterAppVersions(\n appVersions: IApplicationVersion[],\n filterStr: string\n ): IApplicationVersion[] {\n return filterStr === ''\n ? appVersions\n : appVersions.filter(appVersion => appVersion.version.includes(filterStr));\n }\n\n private markAsDeployed() {\n this.isDeployed = true;\n this.inProgress = false;\n }\n\n private async loadPackages(): Promise<void> {\n const applications = await this.ecosystemService.getPackageApplications();\n this.packages = applications.filter(app => this.ecosystemService.isPackageBlueprint(app));\n }\n}\n","<c8y-wizard-header>\n <i [c8yIcon]=\"'big-parcel'\"></i>\n <h4\n id=\"modal-title\"\n translate\n >\n Install from extension package\n </h4>\n</c8y-wizard-header>\n<c8y-wizard-body>\n <ng-container *ngIf=\"!selectedPackage\">\n <div\n class=\"modal-inner-scroll\"\n id=\"modal-body\"\n >\n <p class=\"p-16 text-medium text-center separator-bottom sticky-top bg-level-0\">\n {{ 'Select from available extension packages' | translate }}\n </p>\n\n <c8y-ui-empty-state\n [icon]=\"'big-parcel'\"\n [title]=\"'No extension packages to display.' | translate\"\n *ngIf=\"!packages?.length\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n\n <div\n class=\"c8y-wizard-list-nav\"\n style=\"min-height: 257px\"\n *ngIf=\"packages?.length\"\n >\n <button\n class=\"list-group-item text-truncate bg-component\"\n title=\"{{ package.name }}\"\n type=\"button\"\n *ngFor=\"let package of packages\"\n (click)=\"selectPackage(package)\"\n >\n <i\n class=\"list-group-icon\"\n c8yIcon=\"big-parcel\"\n ></i>\n <span [innerText]=\"package.name\"></span>\n </button>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!isDeployed && selectedPackage\">\n <p class=\"p-16 text-center text-medium separator-bottom sticky-top bg-level-0\">\n {{ 'Provide application details' | translate }}\n </p>\n <div\n class=\"d-flex d-col a-i-center j-c-center\"\n style=\"min-height: 257px\"\n >\n <c8y-application-properties-form\n class=\"d-block fit-w\"\n *ngIf=\"!inProgress\"\n [application]=\"newAppConfig\"\n ></c8y-application-properties-form>\n\n <ng-container *ngIf=\"!inProgress\">\n <div\n class=\"d-block fit-w bg-gray-white\"\n [ngStyle]=\"{ padding: '0 16px' }\"\n >\n <label\n for=\"packageVersion\"\n translate\n >\n Use extension package version\n </label>\n <c8y-form-group>\n <c8y-typeahead\n placeholder=\"{{ 'Select or enter' | translate }}\"\n name=\"packageVersion\"\n [(ngModel)]=\"model.selected\"\n (onSearch)=\"onInput.next($event)\"\n [displayProperty]=\"'version'\"\n [required]=\"true\"\n [hideNew]=\"true\"\n [container]=\"'body'\"\n >\n <c8y-li\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n *c8yFor=\"let version of versions$; loadMore: 'auto'; notFound: notFoundTemplate\"\n (click)=\"onAppVersionSelect(version)\"\n [active]=\"model.selected === version\"\n >\n <c8y-li-icon icon=\"big-parcel\"></c8y-li-icon>\n <span\n [ngStyle]=\"{\n display: 'flex',\n 'flex-direction': 'row',\n 'align-content': 'center',\n 'justify-content': 'space-between',\n 'align-items': 'center'\n }\"\n >\n <c8y-highlight\n [text]=\"version.version || '--'\"\n [pattern]=\"onInput | async\"\n ></c8y-highlight>\n\n <span>\n <span\n class=\"label label-info m-l-4\"\n *ngFor=\"let tag of version.tags\"\n >\n {{ tag }}\n </span>\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 </div>\n </ng-container>\n\n <c8y-loading\n class=\"text-center d-block\"\n [message]=\"'Installing…' | translate\"\n *ngIf=\"inProgress\"\n layout=\"application\"\n ></c8y-loading>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"isDeployed\">\n <div\n class=\"d-flex a-i-center j-c-center\"\n style=\"min-height: 257px\"\n *ngIf=\"deployedWithSuccess; else failedDeploy\"\n >\n <c8y-operation-result\n class=\"lead\"\n type=\"success\"\n text=\"{{ 'Application created' | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n ></c8y-operation-result>\n </div>\n <ng-template #failedDeploy>\n <div\n class=\"d-flex a-i-center j-c-center\"\n style=\"min-height: 257px\"\n >\n <c8y-operation-result\n class=\"lead\"\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</c8y-wizard-body>\n\n<c8y-wizard-footer>\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Back' | translate }}\"\n type=\"button\"\n *ngIf=\"!isDeployed\"\n (click)=\"selectedPackage ? clean() : back()\"\n [disabled]=\"inProgress\"\n >\n {{ 'Back' | translate }}\n </button>\n <button\n class=\"btn btn-default\"\n title=\"{{ isDeployed && deployedWithSuccess ? ('Close' | translate) : ('Cancel' | translate) }}\"\n type=\"button\"\n (click)=\"cancel()\"\n >\n {{ isDeployed && deployedWithSuccess ? ('Close' | translate) : ('Cancel' | translate) }}\n </button>\n\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Install' | translate }}\"\n type=\"button\"\n (click)=\"deployApp()\"\n [disabled]=\"inProgress || !packages?.length\"\n *ngIf=\"!isDeployed\"\n >\n {{ 'Install' | translate }}\n </button>\n</c8y-wizard-footer>\n","import { Injectable } from '@angular/core';\nimport { gettext, Tab, TabFactory } from '@c8y/ngx-components';\nimport { Router } from '@angular/router';\n\n@Injectable()\nexport class EcosystemTabs implements TabFactory {\n ecosystemTabs: Tab[] = [\n {\n icon: 'c8y-modules',\n priority: 1000,\n label: gettext('Applications'),\n path: 'ecosystem/application/applications'\n },\n {\n icon: 'tab',\n priority: 998,\n label: gettext('Features'),\n path: 'ecosystem/application/features'\n }\n ];\n\n constructor(public router: Router) {}\n\n get(): Tab[] {\n if (\n this.router.url === '/ecosystem/application/applications' ||\n this.router.url === '/ecosystem/application/features'\n ) {\n return this.ecosystemTabs;\n }\n return [];\n }\n}\n","import { Component, ViewChild } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { IApplication } from '@c8y/client';\nimport { shareReplay, switchMap, tap } from 'rxjs/operators';\nimport {\n EcosystemService,\n FilterableAppOrPlugin,\n FilterPipe,\n ListFiltersComponent,\n ApplicationCardComponent\n} from '@c8y/ngx-components/ecosystem/shared';\nimport {\n TitleComponent,\n BreadcrumbComponent,\n BreadcrumbItemComponent,\n ActionBarItemComponent,\n IconDirective,\n ListDisplaySwitchComponent,\n C8yTranslateDirective,\n EmptyStateComponent,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { NgClass, NgIf, NgFor, AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'c8y-feature-list',\n templateUrl: './feature-list.component.html',\n imports: [\n TitleComponent,\n BreadcrumbComponent,\n BreadcrumbItemComponent,\n ActionBarItemComponent,\n IconDirective,\n NgClass,\n NgIf,\n ListFiltersComponent,\n ListDisplaySwitchComponent,\n C8yTranslateDirective,\n NgFor,\n ApplicationCardComponent,\n EmptyStateComponent,\n C8yTranslatePipe,\n AsyncPipe\n ]\n})\nexport class FeatureListComponent {\n reloading = false;\n reload$: BehaviorSubject<void> = new BehaviorSubject(null);\n\n features$: Observable<IApplication[]> = this.reload$.pipe(\n tap(() => (this.reloading = true)),\n switchMap(() => this.ecosystemService.getFeatureApplications()),\n tap(() => (this.reloading = false)),\n shareReplay()\n );\n filteredFeatures$: Observable<FilterableAppOrPlugin[]>;\n listClass: string;\n @ViewChild(ListFiltersComponent) filtersComponent: ListFiltersComponent;\n\n constructor(private ecosystemService: EcosystemService) {}\n\n ngOnInit() {\n this.loadFeatures();\n }\n\n loadFeatures() {\n this.reload$.next();\n }\n\n setFilterPipe(pipe: FilterPipe) {\n this.filteredFeatures$ = this.features$.pipe(src => pipe(src));\n }\n\n resetFilters() {\n this.filtersComponent?.resetAllFilters();\n }\n}\n","<c8y-title>{{ 'Features' | translate }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item [icon]=\"'c8y-atom'\" [label]=\"'Ecosystem' | translate\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-modules'\"\n [label]=\"'Applications' | translate\"\n [path]=\"'ecosystem/application/applications'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [icon]=\"'tab'\" [label]=\"'Features' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button (click)=\"reload$.next()\" class=\"btn btn-link\" title=\"{{ 'Reload' | translate }}\">\n <i [ngClass]=\"{ 'icon-spin': reloading }\" c8yIcon=\"refresh\"></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'left'\">\n <c8y-list-filters\n *ngIf=\"features$ | async\"\n (filterPipeChange)=\"setFilterPipe($event)\"\n ></c8y-list-filters>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'left'\" itemClass=\"navbar-form hidden-xs\">\n <c8y-list-display-switch\n (onListClassChange)=\"listClass = $event\"\n [listLength]=\"(features$ | async)?.length\"\n ></c8y-list-display-switch>\n</c8y-action-bar-item>\n\n<div *ngIf=\"(features$ | async)?.length === 0\" class=\"c8y-empty-state text-center\">\n <h1 class=\"c8y-icon c8y-icon-modules c8y-icon-duocolor\"></h1>\n <h3 translate>No features to display.</h3>\n <p translate>No additional features are subscribed to the tenant.</p>\n</div>\n\n<div [ngClass]=\"listClass\" class=\"card-group\">\n <div class=\"page-sticky-header hidden-xs d-flex\" *ngIf=\"(features$ | async)?.length > 0\">\n <div class=\"card-block card-column-40\">\n <div class=\"card-appicon p-l-32 p-r-16 m-r-0 m-l-4\"></div>\n {{ 'Feature' | translate }}\n </div>\n <div class=\"card-block p-0 card-column-80\">\n <div class=\"card-block card-column-80\">{{ 'Description' | translate }}</div>\n <div class=\"card-block card-column-20\">{{ 'Type' | translate }}</div>\n </div>\n </div>\n <div *ngFor=\"let feature of filteredFeatures$ | async\" class=\"col-xs-12 col-sm-4 col-md-3\">\n <c8y-application-card\n [app]=\"feature\"\n [canEdit]=\"false\"\n class=\"d-contents\"\n ></c8y-application-card>\n </div>\n</div>\n\n<c8y-ui-empty-state\n *ngIf=\"(features$ | async)?.length > 0 && (filteredFeatures$ | async)?.length === 0\"\n [icon]=\"'search'\"\n [title]=\"'No matching features.' | translate\"\n [subtitle]=\"'Refine your search terms and/or the filters' | translate\"\n>\n <button\n class=\"btn btn-primary\"\n type=\"button\"\n title=\"{{ 'Reset filters' | translate }}\"\n (click)=\"resetFilters()\"\n >\n {{ 'Reset filters' | translate }}\n </button>\n</c8y-ui-empty-state>\n","import { Component } from '@angular/core';\nimport {\n DocsService,\n gettext,\n ModalService,\n Status,\n C8yTranslateDirective\n} from '@c8y/ngx-components';\nimport { ApplicationType, IApplication, TenantService } from '@c8y/client';\nimport {\n EcosystemService,\n ERROR_TYPE,\n AddApplicationComponent\n} from '@c8y/ngx-components/ecosystem/shared';\n\n@Component({\n selector: 'c8y-add-microservice',\n template: `<div class=\"p-16\" translate [translateParams]=\"{ slaHref: slaHref }\" ngNonBindable>\n By uploading a microservice, you agree to the\n <a href=\"{{ slaHref }}\" target=\"_blank\" rel=\"noopener noreferrer\"\n >Microservice Deployment SLA</a\n >\n which outlines our microservices hosting terms, conditions, and performance standards.\n </div>\n <c8y-add-application\n [headerIcon]=\"'microchip'\"\n [headerText]=\"headerText\"\n [successText]=\"successText\"\n [createApplicationHandler]=\"createMicroserviceApplicationHandler\"\n [uploadApplicationHandler]=\"uploadMicroserviceHandler\"\n ></c8y-add-application>`,\n imports: [C8yTranslateDirective, AddApplicationComponent]\n})\nexport class AddMicroserviceComponent {\n readonly slaHref = this.docs.getUserGuideLink(\n 'docs/service-terms/service-level/#microservices-sla'\n );\n headerText: string = gettext('Add microservice');\n successText: string = gettext('Microservice created');\n\n constructor(\n private ecosystemService: EcosystemService,\n private modal: ModalService,\n private tenantService: TenantService,\n private docs: DocsService\n ) {}\n\n createMicroserviceApplicationHandler = (f: File) => this.createMicroserviceApplication(f);\n uploadMicroserviceHandler = (f: File, app: IApplication) => this.uploadMicroservice(f, app);\n\n async createMicroserviceApplication(file: File): Promise<IApplication> {\n await this.ecosystemService.isValidAppType(file, ApplicationType.MICROSERVICE);\n return this.ecosystemService.createAppForArchive(file);\n }\n\n async uploadMicroservice(file: File, microservice: IApplication): Promise<void> {\n const subscribeToCurrentTenant = await this.askIfActivationAfterUploadNeeded();\n await this.ecosystemService.uploadArchiveToApp(file, microservice);\n await this.subscribeMicroservice(microservice, subscribeToCurrentTenant);\n }\n\n private async askIfActivationAfterUploadNeeded(): Promise<boolean> {\n try {\n await this.modal.confirm(\n gettext('Subscribe to microservice'),\n gettext(\n 'You are about to subscribe to the microservice after upload. Do you want to subscribe to it?'\n ),\n Status.INFO,\n { ok: gettext('Subscribe'), cancel: gettext(\"Don't subscribe\") }\n );\n return true;\n } catch (ex) {\n return false;\n }\n }\n\n private async subscribeMicroservice(\n app: IApplication,\n subscribeToCurrentTenant: boolean\n ): Promise<any> {\n const tenant = (await this.tenantService.current()).data;\n const applications = tenant.applications.references;\n\n const isSubscribed = applications.some(({ application }) => application.id === app.id);\n if (!isSubscribed && subscribeToCurrentTenant) {\n try {\n return await this.tenantService.subscribeApplication(tenant, app);\n } catch (res) {\n if (res.status === 409) {\n throw Error(ERROR_TYPE.ALREADY_SUBSCRIBED);\n }\n }\n } else if (isSubscribed && !subscribeToCurrentTenant) {\n return this.tenantService.unsubscribeApplication(tenant, app);\n }\n }\n}\n","import { ChangeDetectorRef, Component, OnInit, ViewChild } from '@angular/core';\nimport { IApplication } from '@c8y/client';\nimport {\n WizardModalService,\n TitleComponent,\n BreadcrumbComponent,\n BreadcrumbItemComponent,\n IfAllowedDirective,\n ActionBarItemComponent,\n IconDirective,\n HelpComponent,\n ListDisplaySwitchComponent,\n C8yTranslateDirective,\n EmptyStateComponent,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { ModalOptions } from 'ngx-bootstrap/modal';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { shareReplay, switchMap, tap } from 'rxjs/operators';\nimport {\n APP_STATE,\n EcosystemService,\n EcosystemWizards,\n FilterPipe,\n PackageFilters,\n ListFiltersComponent,\n FilterableAppOrPlugin,\n ApplicationCardComponent\n} from '@c8y/ngx-components/ecosystem/shared';\nimport { NgIf, NgClass, NgFor, AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'c8y-microservice-list',\n templateUrl: './microservice-list.component.html',\n imports: [\n TitleComponent,\n BreadcrumbComponent,\n BreadcrumbItemComponent,\n IfAllowedDirective,\n NgIf,\n ActionBarItemComponent,\n IconDirective,\n HelpComponent,\n NgClass,\n ListFiltersComponent,\n ListDisplaySwitchComponent,\n C8yTranslateDirective,\n NgFor,\n ApplicationCardComponent,\n EmptyStateComponent,\n C8yTranslatePipe,\n AsyncPipe\n ]\n})\nexport class MicroserviceListComponent implements OnInit {\n reloading = false;\n reload$: BehaviorSubject<void> = new BehaviorSubject(null);\n microservices$: Observable<IApplication[]> = this.reload$.pipe(\n tap(() => (this.reloading = true)),\n switchMap(() => this.ecosystemService.getMicroservices()),\n tap(microservices => {\n microservices.forEach(microservice => {\n microservice.filterProps = this.ecosystemService.getAppFilterProps(microservice);\n });\n }),\n tap(() => (this.reloading = false)),\n shareReplay()\n );\n filteredMicroservices$: Observable<FilterableAppOrPlugin[]>;\n isMicroserviceHostingAllowed$: Observable<boolean> = this.reload$.pipe(\n switchMap(() => this.ecosystemService.isMicroserviceHostingAllowed()),\n shareReplay()\n );\n listClass: string;\n packageAvailabilities: (keyof PackageFilters['availability'])[] = [\n APP_STATE.SUBSCRIBED.label,\n APP_STATE.CUSTOM.label\n ];\n @ViewChild(ListFiltersComponent) filtersComponent: ListFiltersComponent;\n\n constructor(\n private ecosystemService: EcosystemService,\n private wizardModalService: WizardModalService,\n private cd: ChangeDetectorRef\n ) {}\n\n ngOnInit() {\n this.loadMicroservices();\n // manually trigger detection to not have ExpressionChangedAfterItHasBeenChecked error in spec file\n this.cd.detectChanges();\n }\n\n loadMicroservices() {\n this.reload$.next();\n }\n\n addMicroservice() {\n const initialState: Record<string, unknown> = {\n id: EcosystemWizards.MICROSERVICE_UPLOAD\n };\n const modalOptions: ModalOptions = { initialState };\n\n const modalRef = this.wizardModalService.show(modalOptions);\n modalRef.content.onClose.subscribe(() => {\n this.loadMicroservices();\n });\n }\n\n setFilterPipe(pipe: FilterPipe) {\n this.filteredMicroservices$ = this.microservices$.pipe(src => pipe(src));\n }\n\n resetFilters() {\n this.filtersComponent?.resetAllFilters();\n }\n}\n","<c8y-title>{{ 'Microservices' | translate }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-atom'\"\n [label]=\"'Ecosystem' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'microchip'\"\n [label]=\"'Microservices' | translate\"\n [path]=\"'ecosystem/microservice/microservices'\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<ng-container *c8yIfAllowed=\"['ROLE_APPLICATION_MANAGEMENT_ADMIN']\">\n <c8y-action-bar-item\n [placement]=\"'right'\"\n [priority]=\"100\"\n *ngIf=\"isMicroserviceHostingAllowed$ | async\"\n >\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Add microservice' | translate }}\"\n (click)=\"addMicroservice()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add microservice' | translate }}\n </button>\n </c8y-action-bar-item>\n</ng-container>\n\n<c8y-help src=\"/docs/standard-tenant/ecosystem/#managing-microservices\"></c8y-help>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Reload' | translate }}\"\n (click)=\"reload$.next()\"\n >\n <i\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': reloading }\"\n ></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'left'\">\n <c8y-list-filters\n *ngIf=\"microservices$ | async\"\n (filterPipeChange)=\"setFilterPipe($event)\"\n [packageAvailabilities]=\"packageAvailabilities\"\n ></c8y-list-filters>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'left'\"\n itemClass=\"navbar-form hidden-xs\"\n>\n <c8y-list-display-switch\n (onListClassChange)=\"listClass = $event\"\n [listLength]=\"(microservices$ | async)?.length\"\n ></c8y-list-display-switch>\n</c8y-action-bar-item>\n\n<div\n class=\"c8y-empty-state text-center\"\n *ngIf=\"(microservices$ | async)?.length === 0\"\n>\n <h1 class=\"c8y-icon c8y-icon-modules c8y-icon-duocolor\"></h1>\n <h3 translate>No microservices to display.</h3>\n <p translate>Add your first microservice by clicking below.</p>\n <p>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Add microservice' | translate }}\"\n (click)=\"addMicroservice()\"\n >\n {{ 'Add microservice' | translate }}\n </button>\n </p>\n</div>\n\n<div\n class=\"card-group\"\n [ngClass]=\"listClass\"\n>\n <div\n class=\"page-sticky-header hidden-xs d-flex\"\n *ngIf=\"(microservices$ | async)?.length > 0\"\n >\n <div class=\"card-block card-column-40\">\n <div class=\"card-appicon p-l-32 p-r-16 m-r-0 m-l-4\"></div>\n {{ 'Microservice' | translate }}\n </div>\n <div class=\"card-block p-0 card-column-80 m-r-40\">\n <div class=\"card-block card-column-80\">{{ 'Description' | translate }}</div>\n <div class=\"card-block card-column-20\">{{ 'Type' | translate }}</div>\n <div class=\"card-block card-column-20\"></div>\n </div>\n </div>\n <div\n class=\"col-xs-12 col-sm-4 col-md-3\"\n *ngFor=\"let microservice of filteredMicroservices$ | async\"\n >\n <c8y-application-card\n class=\"d-contents\"\n (onAppDeleted)=\"loadMicroservices()\"\n [app]=\"microservice\"\n ></c8y-application-card>\n </div>\n</div>\n\n<c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No matching microservices.' | translate\"\n [subtitle]=\"'Refine your search terms and/or the filters' | translate\"\n *ngIf=\"(microservices$ | async)?.length > 0 && (filteredMicroservices$ | async)?.length === 0\"\n>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Reset filters' | translate }}\"\n type=\"button\"\n (click)=\"resetFilters()\"\n >\n {{ 'Reset filters' | translate }}\n </button>\n</c8y-ui-empty-state>\n","import { Component, ViewChild } from '@angular/core';\nimport { ApplicationType, IApplication } from '@c8y/client';\nimport { C8yStepper, gettext } from '@c8y/ngx-components';\nimport { EcosystemService, AddApplicationComponent } from '@c8y/ngx-components/ecosystem/shared';\n\n@Component({\n selector: 'c8y-add-package',\n template: `<c8y-add-application\n [headerIcon]=\"'big-parcel'\"\n [headerText]=\"headerText\"\n [successText]=\"successText\"\n [createApplicationHandler]=\"createPackageAppHandler\"\n [uploadApplicationHandler]=\"uploadPackageHandler\"\n [applicationType]=\"'package'\"\n ></c8y-add-application>`,\n imports: [AddApplicationComponent]\n})\nexport class AddPackageComponent {\n @ViewChild(C8yStepper, { static: true })\n stepper: C8yStepper;\n headerText: string = gettext('Add extension package');\n successText: string = gettext('Extension package created');\n\n constructor(private ecosystemService: EcosystemService) {}\n\n createPackageAppHandler = (f: File) => this.createPackageApp(f);\n uploadPackageHandler = (f: File, app: IApplication) => this.uploadPackage(f, app);\n\n async createPackageApp(file: File): Promise<IApplication> {\n await this.ecosystemService.isValidAppType(file, ApplicationType.HOSTED);\n return await this.ecosystemService.createAppForArchive(file, true);\n }\n\n uploadPackage(file: File, pckg: IApplication): Promise<IApplication> {\n return this.ecosystemService.uploadArchiveToApp(file, pckg, true);\n }\n\n next() {\n this.stepper.next();\n }\n}\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { IApplication, IApplicationVersion } from '@c8y/client';\nimport {\n GainsightService,\n PluginsService,\n ViewContext,\n WizardComponent,\n gettext,\n WizardHeaderComponent,\n IconDirective,\n WizardBodyComponent,\n LoadingComponent,\n OperationResultComponent,\n WizardFooterComponent,\n C8yTranslateDirective,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport {\n ApplicationPropertiesFormComponent,\n EcosystemService,\n LicensedApplicationPlugin,\n PRODUCT_EXPERIENCE_ECOSYSTEM,\n PackageVersionSelectComponent\n} from '@c8y/ngx-components/ecosystem/shared';\nimport { TranslateService } from '@ngx-translate/core';\nimport { pick } from 'lodash-es';\nimport { NgIf, NgStyle, NgClass } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n selector: 'c8y-deploy-application',\n templateUrl: './deploy-application.component.html',\n imports: [\n WizardHeaderComponent,\n IconDirective,\n WizardBodyComponent,\n NgIf,\n ApplicationPropertiesFormComponent,\n NgStyle,\n PackageVersionSelectComponent,\n FormsModule,\n LoadingComponent,\n OperationResultComponent,\n WizardFooterComponent,\n NgClass,\n C8yTranslateDirective,\n C8yTranslatePipe\n ]\n})\nexport class DeployApplicationComponent implements OnInit {\n CURRENT_LOCATION = location.href;\n\n inProgress = true;\n package: IApplication;\n isDeployed = false;\n deployedWithSuccess = false;\n newAppConfig: IApplication;\n deployedApp: IApplication;\n applicationHref: string;\n\n model = {\n selected: undefined,\n binary: {\n id: undefined\n }\n };\n canDeploy = false;\n\n @ViewChild(ApplicationPropertiesFormComponent)\n applicationPropertiesForm: ApplicationPropertiesFormComponent;\n\n readonly descriptionTemplate: string = gettext(\n 'Deploy application using \"{{ packageName }}\" package'\n );\n readonly successMessageTemplate = gettext('Application \"{{ packageName }}\" created');\n readonly doneLabel = gettext('Done');\n readonly cancelLabel = gettext('Cancel');\n headerText: string;\n\n constructor(\n private ecosystemService: EcosystemService,\n private wizardComponent: WizardComponent,\n private translate: TranslateService,\n private pluginService: PluginsService,\n private gainsightService: GainsightService,\n private router: Router\n ) {\n this.package = (this.wizardComponent as any).package;\n }\n\n async ngOnInit() {\n const apps = await this.ecosystemService.getHostedAndPackageApplications();\n this.newAppConfig = this.ecosystemService.getUniqueAppConfig(this.package, apps);\n this.headerText = this.getHeaderText();\n this.inProgress = false;\n }\n\n async deployApp() {\n this.inProgress = true;\n const formGroupValue = this.applicationPropertiesForm.formGroup.getRawValue();\n // Verify if selected package version is compatible with current platform versions.\n this.package.manifest.version = this.model.selected.version;\n const verifyVersionCompatibility =\n await this.ecosystemService.verifyBlueprintVersionsCompatibility(this.package.manifest);\n\n if (!verifyVersionCompatibility) {\n this.cancel();\n return;\n }\n\n const { contextPath, license, name, manifest } = this.package;\n const type = this.pluginService.getPackageType(this.package);\n const licensedApp: LicensedApplicationPlugin = {\n contextPath,\n license: license || manifest.license,\n name,\n type,\n version: this.model.selected.version\n };\n\n const isArchived = await this.ecosystemService.verifyArchived([licensedApp]);\n if (!isArchived) {\n this.cancel();\n return;\n }\n\n const licensesVerifiedByUser = await this.ecosystemService.verifyLicenses([licensedApp]);\n if (!licensesVerifiedByUser) {\n this.cancel();\n return;\n }\n\n try {\n this.deployedApp = await this.ecosystemService.deployApp(\n this.package,\n formGroupValue,\n this.model\n );\n const applicationCustomEventInfo = pick(this.package, [\n 'id',\n 'name',\n 'contextPath',\n 'label',\n 'key'\n ] satisfies (keyof IApplication)[]);\n\n this.deployedWithSuccess = true;\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.DEPLOY_APPLICATION,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.DEPLOY_APPLICATION,\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.DEPLOY_APPLICATION,\n result: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.RESULTS.DEPLOYED,\n url: this.CURRENT_LOCATION,\n ...applicationCustomEventInfo,\n package: this.deployedApp?.manifest?.package ?? null\n }\n );\n } catch (error) {\n this.ecosystemService.alertError(error);\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.DEPLOY_APPLICATION,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.DEPLOY_APPLICATION,\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.DEPLOY_APPLICATION,\n result: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.RESULTS.SERVER_FAILURE,\n url: this.CURRENT_LOCATION,\n error\n }\n );\n } finally {\n this.markAsDeployed();\n }\n }\n\n cancel() {\n this.wizardComponent.close();\n }\n\n onAppVersionSelect(appVersion: IApplicationVersion) {\n Object.assign(this.model, {\n selected: appVersion\n });\n this.canDeploy = true;\n }\n\n open() {\n this.router.navigateByUrl(ViewContext.Application.replace(':id', `${this.deployedApp.id}`));\n this.cancel();\n }\n\n private markAsDeployed() {\n this.isDeployed = true;\n this.inProgress = false;\n }\n\n private getHeaderText() {\n return this.translate.instant(this.descriptionTemplate, {\n packageName: this.package.name\n });\n }\n}\n","<c8y-wizard-header>\n <div class=\"modal-header dialog-header\">\n <i c8yIcon=\"output\"></i>\n <h4 id=\"modal-title\">{{ 'Deploy application' | translate }}</h4>\n </div>\n</c8y-wizard-header>\n\n<c8y-wizard-body id=\"modal-body\">\n <ng-container *ngIf=\"!isDeployed\">\n <div class=\"fadeIn animated d-flex a-i-center j-c-center d-col\" style=\"min-height: 309px\">\n <p\n class=\"bg-level-0 fit-w p-16 text-center text-medium sticky-top bg-level-0 separator-bottom\"\n *ngIf=\"!inProgress\"\n >\n {{ headerText | translate }}\n </p>\n <c8y-application-properties-form\n *ngIf=\"!inProgress\"\n [application]=\"newAppConfig\"\n class=\"d-block fit-w bg-level-1\"\n ></c8y-application-properties-form>\n\n <ng-container *ngIf=\"!inProgress\">\n <div [ngStyle]=\"{ padding: '0 16px' }\" class=\"d-block fit-w bg-gray-white\">\n <c8y-package-version-select\n [ngModel]=\"model.selected\"\n (ngModelChange)=\"onAppVersionSelect($event)\"\n [packageId]=\"package?.id\"\n [label]=\"'Use extension package version' | translate\"\n ></c8y-package-version-select>\n </div>\n </ng-container>\n\n <c8y-loading\n *ngIf=\"inProgress\"\n [message]=\"'Deploying…' | translate\"\n class=\"text-center\"\n layout=\"application\"\n ></c8y-loading>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"isDeployed\">\n <div\n *ngIf=\"deployedWithSuccess; else failedDeploy\"\n class=\"modal-body fadeIn animated\"\n style=\"min-height: 309px\"\n >\n <div class=\"d-flex a-i-center j-c-center d-col\">\n <c8y-operation-result\n type=\"success\"\n [size]=\"84\"\n [vertical]=\"true\"\n [text]=\"successMessageTemplate | translate: { packageName: package.name }\"\n class=\"lead d-block m-b-16\"\n ></c8y-operation-result>\n </div>\n </div>\n <ng-template #failedDeploy>\n <div class=\"modal-body fadeIn animated text-center\" style=\"min-height: 257px\">\n <c8y-operation-result\n type=\"error\"\n [size]=\"84\"\n [vertical]=\"true\"\n text=\"{{ 'Application creation failed' | translate }}\"\n class=\"lead\"\n ></c8y-operation-result>\n </div>\n </ng-template>\n </ng-container>\n</c8y-wizard-body>\n\n<c8y-wizard-footer>\n <button\n (click)=\"cancel()\"\n type=\"button\"\n class=\"btn btn-default\"\n data-cy=\"c8y-deploy-application--cancel-blueprint-button\"\n title=\"{{ (isDeployed && deployedWithSuccess ? doneLabel : cancelLabel) | translate }}\"\n >\n {{ (isDeployed && deployedWithSuccess ? doneLabel : cancelLabel) | translate }}\n </button>\n\n <button\n (click)=\"deployApp()\"\n *ngIf=\"!isDeployed\"\n [disabled]=\"inProgress || !canDeploy\"\n [ngClass]=\"{ 'btn-pending': inProgress }\"\n class=\"btn btn-primary\"\n type=\"button\"\n data-cy=\"c8y-deploy-application--deploy-blueprint-button\"\n title=\"{{ 'Deploy' | translate }}\"\n >\n {{ 'Deploy' | translate }}\n </button>\n\n <button\n (click)=\"open()\"\n type=\"button\"\n class=\"btn btn-primary\"\n *ngIf=\"isDeployed && deployedWithSuccess\"\n title=\"{{ 'Open the application details' | translate }}\"\n translate\n >\n Open\n </button>\n</c8y-wizard-footer>\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { ApplicationAvailability, IApplication } from '@c8y/client';\nimport {\n ApplicationPlugin,\n AppStateService,\n ContextRouteService,\n GainsightService,\n PackageType,\n PluginsService,\n PropertiesListItem,\n WizardModalService,\n TitleComponent,\n BreadcrumbComponent,\n BreadcrumbItemComponent,\n ActionBarItemComponent,\n C8yTranslateDirective,\n IconDirective,\n PropertiesListComponent,\n EmptyStateComponent,\n C8yTranslatePipe,\n HumanizeAppNamePipe,\n MarkdownToHtmlPipe\n} from '@c8y/ngx-components';\nimport { ModalOptions } from 'ngx-bootstrap/modal';\nimport { BehaviorSubject } from 'rxjs';\nimport {\n ApplicationState,\n EcosystemService,\n EcosystemWizards,\n packageProperties,\n PACKAGE_TYPE_LABELS,\n PackageAvailabilityService,\n PRODUCT_EXPERIENCE_ECOSYSTEM,\n TranslatePackageLabelPipe\n} from '@c8y/ngx-components/ecosystem/shared';\nimport { NgIf, NgFor, NgClass, AsyncPipe } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { TooltipDirective } from 'ngx-bootstrap/tooltip';\nimport { PluginListComponent } from '@c8y/ngx-components/ecosystem/application-plugins';\n\n@Component({\n selector: 'c8y-package-details',\n templateUrl: './package-details.component.html',\n imports: [\n TitleComponent,\n BreadcrumbComponent,\n BreadcrumbItemComponent,\n NgIf,\n ActionBarItemComponent,\n C8yTranslateDirective,\n FormsModule,\n NgFor,\n NgClass,\n TooltipDirective,\n IconDirective,\n PropertiesListComponent,\n EmptyStateComponent,\n PluginListComponent,\n C8yTranslatePipe,\n AsyncPipe,\n HumanizeAppNamePipe,\n MarkdownToHtmlPipe,\n TranslatePackageLabelPipe\n ]\n})\nexport class PackageDetailsComponent implements OnInit {\n markdown: string;\n pluginMarkdown: string;\n baseUrl: string;\n pluginBaseUrl: string;\n package: IApplication = {};\n name: string;\n description: string;\n appState: ApplicationState;\n isPackageBlueprint: boolean;\n exportedPlugins$: BehaviorSubject<ApplicationPlugin[]> = new BehaviorSubject([]);\n isChangingAvailability = false;\n isOwnedByCurrentTenant = false;\n isAllowedToCreateSubtenants = false;\n packageContentState: ApplicationState;\n packageType: PackageType;\n packageAvailability: ApplicationAvailability;\n selectedPlugin: ApplicationPlugin;\n\n readonly packageTypeLabels = PACKAGE_TYPE_LABELS;\n readonly PACKAGE_TYPE = PackageType;\n readonly packageProperties: PropertiesListItem[] = packageProperties;\n\n constructor(\n private activatedRoute: ActivatedRoute,\n private wizardModalService: WizardModalService,\n private ecosystemService: EcosystemService,\n private contextRouteService: ContextRouteService,\n private pluginsService: PluginsService,\n private packageAvailabilityService: PackageAvailabilityService,\n private ui: AppStateService,\n private gainsightService: GainsightService\n ) {}\n\n async ngOnInit() {\n this.isAllowedToCreateSubtenants = !!this.ui.currentTenant.value?.allowCreateTenants;\n await this.loadData();\n }\n\n deploy() {\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.PACKAGE_PLUGINS,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.PACKAGE_DETAILS,\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.DEPLOY_APPLICATION_INITIATED\n }\n );\n\n const initialState: any = {\n wizardConfig: {},\n id: EcosystemWizards.BLUEPRINT_DEPLOYMENT,\n package: this.package\n };\n const modalOptions: ModalOptions = { initialState };\n this.wizardModalService.show(modalOptions);\n }\n\n async togglePackageAvailability(pckg: IApplication, newAvailability: ApplicationAvailability) {\n this.isChangingAvailability = true;\n pckg = await this.packageAvailabilityService.askIfAvailabilityShouldBeSetTo(\n pckg,\n newAvailability\n );\n const availabilityHasChanged = pckg.availability === newAvailability;\n if (availabilityHasChanged) {\n await this.loadData(pckg);\n this.contextRouteService.setContext(this.activatedRoute, pckg);\n } else {\n this.packageAvailability = this.package.availability;\n }\n this.isChangingAvailability = false;\n }\n\n async showPluginOverview(plugin: ApplicationPlugin) {\n this.selectedPlugin = plugin;\n const baseUrl = `/apps/${plugin.id}/`;\n this.pluginBaseUrl = baseUrl;\n this.pluginMarkdown = await this.pluginsService.getReadmeFileContent(baseUrl);\n }\n\n closeOverview(): void {\n this.selectedPlugin = null;\n }\n\n private async loadData(pckg?: IApplication) {\n this.package = pckg\n ? pckg\n : this.contextRouteService.getContextData(this.activatedRoute)?.contextData;\n this.packageAvailability = this.package.availability;\n this.packageContentState = this.ecosystemService.getPackageContentState(this.package);\n this.packageType = this.pluginsService.getPackageType(this.package);\n this.name = this.package?.name;\n this.description = this.package?.manifest?.description;\n const baseUrl = `/apps/${this.package.contextPath}/`;\n this.markdown = await this.pluginsService.getReadmeFileContent(baseUrl);\n this.baseUrl = baseUrl;\n this.appState = this.ecosystemService.getAppState(this.package);\n this.isPackageBlueprint = this.ecosystemService.isPackageBlueprint(this.package);\n this.isOwnedByCurrentTenant =\n this.package?.owner?.tenant?.id === this.ui.currentTenant.value?.name;\n this.extractPackageMFExports();\n }\n\n private extractPackageMFExports() {\n const exports = this.pluginsService.getMFExports(this.package);\n this.exportedPlugins$.next(exports);\n }\n}\n","<c8y-title>{{ name | humanizeAppName | async }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-atom'\"\n [label]=\"'Ecosystem' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'big-parcel'\"\n [label]=\"'Extensions' | translate\"\n [path]=\"'ecosystem/extension/extensions'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"name | humanizeAppName | async\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Extension package' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item\n placement=\"right\"\n itemClass=\"navbar-form\"\n *ngIf=\"isOwnedByCurrentTenant && isAllowedToCreateSubtenants\"\n>\n <div class=\"d-flex a-i-center\">\n <label\n class=\"m-b-0 m-r-8\"\n for=\"availability\"\n translate\n >\n Availability`of package based on app state`\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"availability\"\n [(ngModel)]=\"packageAvailability\"\n [disabled]=\"isChangingAvailability\"\n (ngModelChange)=\"togglePackageAvailability(package, $event)\"\n >\n <option\n *ngFor=\"let availability of packageAvailabilityService.availabilities\"\n [ngValue]=\"availability.value\"\n >\n {{ availability.label | translate }}\n </option>\n </select>\n </div>\n </div>\n</c8y-action-bar-item>\n\n<div\n class=\"card content-fullpage d-grid grid__row--fit-auto\"\n [ngClass]=\"{ 'grid__col--8-4-0': !selectedPlugin, 'grid__col--0-4-8': !!selectedPlugin }\"\n>\n <div class=\"bg-level-1 grid__col--fullspan separator-bottom\">\n <div class=\"card-block p-t-24 p-b-24 large-padding\">\n <button\n class=\"card__ribbon btn-clean\"\n [attr.aria-label]=\"\n (package.label || package.manifest.label | translatePackageLabel) +\n ': ' +\n (packageTypeLabels[packageType].tooltip | translate)\n \"\n tooltip=\"{{ packageTypeLabels[packageType].tooltip | translate }}\"\n placement=\"bottom\"\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 {{ package.label || package.manifest.label | translatePackageLabel }}\n </span>\n </button>\n <div class=\"content-flex-70\">\n <div class=\"text-center\">\n <i\n class=\"c8y-icon-duocolor icon-48\"\n c8yIcon=\"big-parcel\"\n ></i>\n <button\n class=\"btn-clean\"\n [attr.aria-label]=\"\n (appState?.label | translate) + ': ' + (appState?.tooltip | translate)\n \"\n [tooltip]=\"appState?.tooltip | translate\"\n placement=\"top\"\n type=\"button\"\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 | translate)\n \"\n [tooltip]=\"packageContentState?.tooltip | translate\"\n placement=\"bottom\"\n type=\"button\"\n [delay]=\"500\"\n >\n <span\n class=\"label\"\n [ngClass]=\"packageContentState?.class\"\n >\n {{ packageContentState?.label | translate }}\n </span>\n </button>\n </div>\n\n <div class=\"flex-grow col-10\">\n <div class=\"content-flex-80\">\n <div class=\"col-8\">\n <div class=\"card-title h4 m-b-8\">{{ name | humanizeAppName | async }}</div>\n <p *ngIf=\"description\">{{ description }}</p>\n <p\n class=\"text-muted\"\n *ngIf=\"!description\"\n >\n <em>{{ 'No description available.' | translate }}</em>\n </p>\n </div>\n <div\n class=\"col-3 text-right-md p-r-md-40\"\n *ngIf=\"isPackageBlueprint\"\n >\n <button\n class=\"btn btn-primary btn-sm\"\n (click)=\"deploy()\"\n data-cy=\"c8y-package-details--deploy-application-button\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"output\"\n ></i>\n {{ 'Deploy application' | translate }}\n </button>\n </div>\n <div class=\"flex-grow\">\n <c8y-properties-list\n [data]=\"package.manifest\"\n [properties]=\"packageProperties\"\n ></c8y-properties-list>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"inner-scroll\">\n <div class=\"card-header separator sticky-top\">\n <div class=\"card-title\">{{ 'Extension package overview' | translate }}</div>\n </div>\n <div class=\"card-block p-l-16 p-r-16\">\n <div\n class=\"alert alert-warning m-b-16\"\n style=\"margin: auto\"\n *ngIf=\"packageType === PACKAGE_TYPE.ARCHIVED\"\n translate\n >\n The package was archived by the owner marking it as out of maintenance. It is not\n recommended to install the package.\n </div>\n <c8y-ui-empty-state\n [icon]=\"'user-manual'\"\n [title]=\"'No README.md found' | translate\"\n [subtitle]=\"\n 'To view the contents of "README", add the file "README.md" to the package.'\n | translate\n \"\n *ngIf=\"!markdown\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n <div\n class=\"markdown-content\"\n [innerHTML]=\"markdown | markdownToHtml: { baseUrl } | async\"\n ></div>\n </div>\n <div class=\"separator-bottom visible-sm visible-xs\"></div>\n </div>\n\n <div\n class=\"inner-scroll d-flex d-col bg-level-1 split-view__list\"\n [ngClass]=\"{ 'border-right': !!selectedPlugin }\"\n >\n <div class=\"card-header separator sticky-top\">\n <div class=\"card-title\">{{ 'Package plugins' | translate }}</div>\n </div>\n <div class=\"border-left flex-grow\">\n <!-- empty state -->\n <div\n class=\"p-16\"\n *ngIf=\"(exportedPlugins$ | async).length === 0\"\n >\n <c8y-ui-empty-state\n [icon]=\"'plugin'\"\n [title]=\"'No plugins to display.' | translate\"\n [subtitle]=\"'This package doesn\\'t contain plugins.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n <c8y-plugin-list\n [plugins$]=\"exportedPlugins$\"\n [selectable]=\"false\"\n [installable]=\"true\"\n [package]=\"package\"\n [selectedPlugin]=\"selectedPlugin\"\n (showOverview)=\"showPluginOverview($event)\"\n ></c8y-plugin-list>\n </div>\n </div>\n\n <div class=\"inner-scroll split-view__detail\"\n [ngClass]=\"{ 'split-view__detail--selected': selectedPlugin }\">\n <div\n class=\"card-header separator sticky-top\"\n *ngIf=\"selectedPlugin\"\n >\n <button\n class=\"btn-clean\"\n (click)=\"closeOverview()\"\n >\n <i c8yIcon=\"caret-back\"></i>\n {{ 'Back to package overview ' | translate }}\n </button>\n </div>\n <div\n class=\"card-block p-l-16 p-r-16 overflow-visible\"\n *ngIf=\"selectedPlugin\"\n >\n <div\n class=\"markdown-content\"\n *ngIf=\"pluginMarkdown\"\n [innerHTML]=\"pluginMarkdown | markdownToHtml: { baseUrl: pluginBaseUrl } | async\"\n ></div>\n <c8y-ui-empty-state\n [icon]=\"'user-manual'\"\n [title]=\"'No README.md found for plugin' | translate\"\n [subtitle]=\"\n 'To view the contents of "README", add the file "README.md" to the plugin.'\n | translate\n \"\n *ngIf=\"!pluginMarkdown\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n </div>\n</div>\n","import { Component, OnDestroy, ViewChild } from '@angular/core';\nimport { IApplication } from '@c8y/client';\nimport {\n gettext,\n Permissions,\n WizardModalService,\n TitleComponent,\n BreadcrumbComponent,\n BreadcrumbItemComponent,\n ActionBarItemComponent,\n IconDirective,\n ListDisplaySwitchComponent,\n HelpComponent,\n EmptyStateComponent,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport {\n APP_STATE,\n defaultPackageContents,\n defaultPackageTypes,\n EcosystemService,\n EcosystemWizards,\n FilterableAppOrPlugin,\n FilterPipe,\n ListFiltersComponent,\n PackageFilters,\n ArchivedFilterComponent,\n ApplicationCardComponent\n} from '@c8y/ngx-components/ecosystem/shared';\nimport { ModalOptions } from 'ngx-bootstrap/modal';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { shareReplay, switchMap, takeUntil, tap } from 'rxjs/operators';\nimport { NgIf, NgClass, NgFor, AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'c8y-packages-list',\n templateUrl: './packages-list.component.html',\n imports: [\n TitleComponent,\n BreadcrumbComponent,\n BreadcrumbItemComponent,\n NgIf,\n ActionBarItemComponent,\n IconDirective,\n NgClass,\n ListFiltersComponent,\n ArchivedFilterComponent,\n ListDisplaySwitchComponent,\n HelpComponent,\n NgFor,\n ApplicationCardComponent,\n EmptyStateComponent,\n C8yTranslatePipe,\n AsyncPipe\n ]\n})\nexport class PackagesListComponent implements OnDestroy {\n reloading = false;\n reload$: BehaviorSubject<void> = new BehaviorSubject(null);\n\n packages$: Observable<IApplication[]>;\n filteredPackages$: Observable<FilterableAppOrPlugin[]>;\n listClass: string;\n hasAdminPermissions = false;\n emptyStateSubtitle = gettext('Add your first package by clicking below.');\n packageTypes = defaultPackageTypes;\n packageAvailabilities: (keyof PackageFilters['availability'])[] = [\n APP_STATE.SUBSCRIBED.label,\n APP_STATE.CUSTOM.label\n ];\n packageContents = defaultPackageContents;\n @ViewChild(ListFiltersComponent) filtersComponent: ListFiltersComponent;\n private destroy$: Subject<boolean> = new Subject<boolean>();\n\n constructor(\n private ecosystemService: EcosystemService,\n private wizardModalService: WizardModalService,\n private permissions: Permissions\n ) {\n this.packages$ = this.reload$.pipe(\n takeUntil(this.destroy$),\n tap(() => (this.reloading = true)),\n switchMap(() => this.ecosystemService.getPackageApplications()),\n tap(packages => {\n packages.forEach(pckg => {\n pckg.filterProps = this.ecosystemService.getAppFilterProps(pckg);\n });\n }),\n tap(() => (this.reloading = false)),\n shareReplay(1)\n );\n }\n\n ngOnInit() {\n this.hasAdminPermissions = this.permissions.hasRole(\n Permissions.ROLE_APPLICATION_MANAGEMENT_ADMIN\n );\n this.loadPackages();\n }\n\n loadPackages() {\n this.reload$.next();\n }\n\n addPackage() {\n const initialState: Record<string, unknown> = {\n id: EcosystemWizards.PACKAGE_UPLOAD\n };\n const modalOptions: ModalOptions = { initialState };\n\n const modalRef = this.wizardModalService.show(modalOptions);\n modalRef.content.onClose.subscribe(() => {\n this.loadPackages();\n });\n }\n\n ngOnDestroy() {\n this.destroy$.next(true);\n this.destroy$.complete();\n }\n\n setFilterPipe(pipe: FilterPipe) {\n this.filteredPackages$ = this.packages$.pipe(src => pipe(src));\n }\n\n resetFilters() {\n this.filtersComponent?.resetAllFilters();\n }\n}\n","<c8y-title>{{ 'Extensions' | translate }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-atom'\"\n [label]=\"'Ecosystem' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'big-parcel'\"\n [path]=\"'ecosystem/extension/extensions'\"\n [label]=\"'Extensions' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n *ngIf=\"hasAdminPermissions\"\n>\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Add extension package' | translate }}\"\n type=\"button\"\n data-cy=\"packages-list--add-extension-package\"\n (click)=\"addPackage()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add extension package' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Reload' | translate }}\"\n type=\"button\"\n (click)=\"loadPackages()\"\n >\n <i\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': reloading }\"\n ></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'left'\"\n itemClass=\"p-r-8 p-l-8\"\n>\n <c8y-list-filters\n *ngIf=\"packages$ | async\"\n [packageTypes]=\"packageTypes\"\n [packageAvailabilities]=\"packageAvailabilities\"\n [packageContents]=\"packageContents\"\n (filterPipeChange)=\"setFilterPipe($event)\"\n >\n <c8y-archived-filter></c8y-archived-filter>\n </c8y-list-filters>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'left'\"\n itemClass=\"navbar-form hidden-xs\"\n>\n <c8y-list-display-switch\n (onListClassChange)=\"listClass = $event\"\n [listLength]=\"(packages$ | async)?.length\"\n ></c8y-list-display-switch>\n</c8y-action-bar-item>\n\n<c8y-help src=\"/docs/standard-tenant/ecosystem/#extensions\"></c8y-help>\n\n<div\n class=\"card-group\"\n [ngClass]=\"listClass\"\n>\n <div\n class=\"page-sticky-header hidden-xs d-flex m-b-8\"\n *ngIf=\"(filteredPackages$ | async)?.length > 0\"\n >\n <div class=\"card-block card-column-40\">\n <div class=\"card-appicon p-l-32 p-r-16 m-r-0 m-l-4\"></div>\n {{ 'Package' | translate }}\n </div>\n <div class=\"card-block p-0 card-column-80 m-r-40\">\n <div class=\"card-block card-column-80\">{{ 'Description' | translate }}</div>\n <div class=\"card-block card-column-20\">{{ 'Type' | translate }}</div>\n <div class=\"card-block card-column-20\"></div>\n </div>\n </div>\n <div\n class=\"col-xs-12 col-sm-4 col-md-3\"\n *ngFor=\"let app of filteredPackages$ | async\"\n >\n <c8y-application-card\n class=\"d-contents\"\n (onAppDeleted)=\"loadPackages()\"\n (onAppCloned)=\"loadPackages()\"\n [app]=\"app\"\n ></c8y-application-card>\n </div>\n</div>\n\n<c8y-ui-empty-state\n [icon]=\"'big-parcel'\"\n [title]=\"'No extensions to display.' | translate\"\n [subtitle]=\"hasAdminPermissions ? (emptyStateSubtitle | translate) : ''\"\n *ngIf=\"(packages$ | async)?.length === 0\"\n>\n <div *ngIf=\"hasAdminPermissions\">\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Add extension package' | translate }}\"\n type=\"button\"\n (click)=\"addPackage()\"\n >\n {{ 'Add extension package' | translate }}\n </button>\n </div>\n</c8y-ui-empty-state>\n\n<c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No matching extensions.' | translate\"\n [subtitle]=\"'Refine your search terms and/or the filters' | translate\"\n *ngIf=\"(packages$ | async)?.length > 0 && (filteredPackages$ | async)?.length === 0\"\n>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Reset filters' | translate }}\"\n type=\"button\"\n (click)=\"resetFilters()\"\n >\n {{ 'Reset filters' | translate }}\n </button>\n</c8y-ui-empty-state>\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot } from '@angular/router';\n\n@Injectable()\nexport class PackageVersionsGuard {\n canActivate(route: ActivatedRouteSnapshot) {\n const app = route.data.contextData || route.parent.data.contextData;\n return !!app?.applicationVersions?.length;\n }\n}\n","import { IManifest } from '@c8y/client';\nimport { Component, Input } from '@angular/core';\nimport { NgIf, AsyncPipe } from '@angular/common';\nimport {\n ListItemComponent,\n ListItemIconComponent,\n EmptyStateComponent,\n C8yTranslatePipe,\n HumanizeAppNamePipe\n} from '@c8y/ngx-components';\n\n@Component({\n selector: 'c8y-contents-apps',\n templateUrl: './contents-apps.component.html',\n imports: [\n NgIf,\n ListItemComponent,\n ListItemIconComponent,\n EmptyStateComponent,\n C8yTranslatePipe,\n AsyncPipe,\n HumanizeAppNamePipe\n ]\n})\nexport class PackageVersionsAppsComponent {\n @Input('selectedVersionManifest') selectedVersionManifest: IManifest;\n}\n","<p class=\"legend form-block\">\n {{ 'Application' | translate }}\n</p>\n\n<div *ngIf=\"selectedVersionManifest?.name; else emptyApp\">\n <c8y-li>\n <c8y-li-icon icon=\"big-parcel\"></c8y-li-icon>\n <h5 class=\"text-medium text-16 p-b-8\">\n {{ selectedVersionManifest?.name | humanizeAppName | async }}\n <small class=\"m-l-8\" *ngIf=\"selectedVersionManifest?.requiredPlatformVersion\">\n <em>{{ selectedVersionManifest?.requiredPlatformVersion }}</em>\n </small>\n </h5>\n <p *ngIf=\"selectedVersionManifest?.description; else notAvailable\">\n {{ selectedVersionManifest?.description }}\n </p>\n </c8y-li>\n</div>\n\n<ng-template #notAvailable>\n <p class=\"text-muted\">\n <em>{{ 'No description available.' | translate }}</em>\n </p>\n</ng-template>\n\n<ng-template #emptyApp>\n <c8y-ui-empty-state\n [icon]=\"'big-parcel'\"\n [horizontal]=\"true\"\n [title]=\"'No application.' | translate\"\n [subtitle]=\"'This package doesn\\'t contain an application.' | translate\"\n ></c8y-ui-empty-state>\n</ng-template>","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { IApplication, IManifest } from '@c8y/client';\nimport {\n ApplicationPlugin,\n PluginsService,\n EmptyStateComponent,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { BehaviorSubject } from 'rxjs';\nimport { NgIf, AsyncPipe } from '@angular/common';\nimport { PluginListComponent } from '@c8y/ngx-components/ecosystem/application-plugins';\n\n@Component({\n selector: 'c8y-contents-plugins',\n templateUrl: './contents-plugins.component.html',\n imports: [NgIf, EmptyStateComponent, PluginListComponent, C8yTranslatePipe, AsyncPipe]\n})\nexport class PackageVersionsPluginsComponent {\n @Input('selectedVersionManifest') selectedVersionManifest: IManifest;\n @Input() selectedPlugin: ApplicationPlugin;\n @Output() showOverview = new EventEmitter<ApplicationPlugin>();\n\n exportedPlugins$: BehaviorSubject<ApplicationPlugin[]> = new BehaviorSubject([]);\n\n private appParentData: IApplication;\n\n constructor(private activatedRoute: ActivatedRoute) {\n this.appParentData = this.activatedRoute.parent?.snapshot.data.contextData;\n }\n\n async ngOnChanges() {\n this.exportedPlugins$.next(this.getExportedPlugins());\n }\n\n showPluginOverview(plugin: ApplicationPlugin) {\n this.showOverview.emit(plugin);\n }\n\n private getExportedPlugins(): ApplicationPlugin[] {\n if (!this.selectedVersionManifest?.exports) {\n return [];\n }\n\n const originApp = {\n label: this.appParentData?.label || this.appParentData?.manifest.label,\n owner: this.appParentData?.owner\n };\n\n return this.selectedVersionManifest.exports.map(plugin => ({\n ...plugin,\n id: PluginsService.createPluginId(\n this.selectedVersionManifest.contextPath,\n plugin,\n this.selectedVersionManifest.version,\n false\n ),\n originApp\n }));\n }\n}\n","<p class=\"legend form-block\">\n {{ 'Plugins' | translate }}\n</p>\n<!-- empty state -->\n<c8y-ui-empty-state\n [icon]=\"'plugin'\"\n [title]=\"'No plugins to display.' | translate\"\n [subtitle]=\"'This package doesn\\'t contain plugins.' | translate\"\n *ngIf=\"(exportedPlugins$ | async).length === 0\"\n [horizontal]=\"true\"\n></c8y-ui-empty-state>\n\n<c8y-plugin-list\n [plugins$]=\"exportedPlugins$\"\n [selectable]=\"false\"\n [selectedPlugin]=\"selectedPlugin\"\n (showOverview)=\"showPluginOverview($event)\"\n></c8y-plugin-list>\n","import { Component, EventEmitter, Input, Output, SimpleChanges } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { ApplicationService, IApplication, IManifest } from '@c8y/client';\nimport {\n AlertService,\n ApplicationPlugin,\n ContextRouteService,\n PropertiesListItem,\n EmptyStateComponent,\n LoadingComponent,\n PropertiesListComponent,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { packageProperties, PackageChangelogComponent } from '@c8y/ngx-components/ecosystem/shared';\nimport { NgIf } from '@angular/common';\nimport { PackageVersionsAppsComponent } from './contents-apps/contents-apps.component';\nimport { PackageVersionsPluginsComponent } from './contents-plugins/contents-plugins.component';\n\n@Component({\n selector: 'c8y-package-contents',\n templateUrl: './packages-contents.component.html',\n imports: [\n NgIf,\n EmptyStateComponent,\n LoadingComponent,\n PropertiesListComponent,\n PackageVersionsAppsComponent,\n PackageVersionsPluginsComponent,\n PackageChangelogComponent,\n C8yTranslatePipe\n ]\n})\nexport class PackageContentsComponent {\n @Input() selectedVersion: string;\n @Input() selectedPlugin: ApplicationPlugin;\n @Output() showOverview = new EventEmitter<ApplicationPlugin>();\n\n selectedVersionManifest: IManifest;\n package: IApplication = {};\n isLoading = false;\n previousVersion: string | null;\n\n readonly packageVersionProperties: PropertiesListItem[] = packageProperties;\n\n constructor(\n private activatedRoute: ActivatedRoute,\n private applicationService: ApplicationService,\n private alertService: AlertService,\n private contextRouteService: ContextRouteService\n ) {}\n\n showPluginOverview(plugin: ApplicationPlugin) {\n this.showOverview.emit(plugin);\n }\n\n async ngOnChanges(changes: SimpleChanges) {\n if (changes.selectedVersion?.currentValue) {\n this.loadManifest(this.selectedVersion);\n this.previousVersion = this.getPreviousVersion();\n }\n }\n\n async loadManifest(version: string) {\n this.package = this.contextRouteService.getContextData(this.activatedRoute)?.contextData;\n this.isLoading = true;\n this.selectedVersionManifest = await this.getManifest(version);\n this.isLoading = false;\n }\n\n private async getManifest(version: string): Promise<IManifest> {\n try {\n return await this.applicationService.getAppManifest(this.package, version);\n } catch (error) {\n this.alertService.addServerFailure(error);\n }\n return undefined;\n }\n\n private getPreviousVersion() {\n if (this.package.applicationVersions.length === 1) {\n return null;\n }\n const selectedVersionIndex = this.package.applicationVersions.findIndex(\n version => version.version === this.selectedVersion\n );\n if (selectedVersionIndex === 0) {\n return null;\n }\n return this.package.applicationVersions[selectedVersionIndex - 1].version;\n }\n}\n","<ng-container *ngIf=\"!selectedVersionManifest && !isLoading\">\n <div class=\"p-16\">\n <c8y-ui-empty-state\n [icon]=\"'big-parcel'\"\n [title]=\"'No package selected' | translate\"\n [subtitle]=\"'Select a package from the list to display the package contents.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"isLoading\">\n <c8y-loading></c8y-loading>\n</ng-container>\n\n<ng-container *ngIf=\"selectedVersionManifest && !isLoading\">\n <!-- DETAILS -->\n <div class=\"card-block\">\n <c8y-properties-list\n [data]=\"selectedVersionManifest\"\n [emptyLabel]=\"'--'\"\n [properties]=\"packageVersionProperties\"\n ></c8y-properties-list>\n\n <!-- APPS -->\n <c8y-contents-apps\n class=\"p-t-16 d-block\"\n [selectedVersionManifest]=\"selectedVersionManifest\"\n ></c8y-contents-apps>\n\n <!-- PLUGINS -->\n <c8y-contents-plugins\n class=\"p-t-16 d-block\"\n [selectedVersionManifest]=\"selectedVersionManifest\"\n [selectedPlugin]=\"selectedPlugin\"\n (showOverview)=\"showPluginOverview($event)\"\n ></c8y-contents-plugins>\n\n <!-- CHANGELOG -->\n <p class=\"legend form-block\">\n {{ 'Change log' | translate }}\n </p>\n\n <c8y-contents-changelog\n [package]=\"package\"\n [selectedVersion]=\"selectedVersion\"\n [previousVersion]=\"previousVersion\"\n ></c8y-contents-changelog>\n </div>\n</ng-container>\n","import { Component, EventEmitter, OnInit, Output } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { IApplication, IApplicationVersion } from '@c8y/client';\nimport {\n AlertService,\n GainsightService,\n ModalService,\n OptionsService,\n Permissions,\n PluginsService,\n Status,\n gettext,\n C8yTranslateDirective,\n LoadingComponent,\n IconDirective,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport {\n EcosystemService,\n PRODUCT_EXPERIENCE_ECOSYSTEM,\n UploadArchiveComponent\n} from '@c8y/ngx-components/ecosystem/shared';\nimport { TranslateService } from '@ngx-translate/core';\nimport { NgIf, NgFor, NgClass } from '@angular/common';\nimport {\n BsDropdownDirective,\n BsDropdownToggleDirective,\n BsDropdownMenuDirective\n} from 'ngx-bootstrap/dropdown';\n\nconst DEFAULT_VERSIONS_LIMIT = 20;\n\n@Component({\n selector: 'c8y-package-versions-list',\n templateUrl: './package-versions-list.component.html',\n imports: [\n C8yTranslateDirective,\n NgIf,\n LoadingComponent,\n NgFor,\n NgClass,\n IconDirective,\n BsDropdownDirective,\n BsDropdownToggleDirective,\n BsDropdownMenuDirective,\n UploadArchiveComponent,\n C8yTranslatePipe\n ]\n})\nexport class PackageVersionsListComponent implements OnInit {\n CURRENT_LOCATION = location.href;\n\n versionsLimit: number;\n isLoading = false;\n package: IApplication;\n sortedVersions: IApplicationVersion[];\n selectedVersion: string;\n preUploadCallback: () => Promise<any>;\n hasAdminPermissions = false;\n isPackageOwnedByCurrentTenant = false;\n\n @Output() onVersionSelect = new EventEmitter<string | null>();\n\n constructor(\n private activatedRoute: ActivatedRoute,\n private pluginsService: PluginsService,\n private ecosystemService: EcosystemService,\n private translateService: TranslateService,\n private modal: ModalService,\n private alertService: AlertService,\n private optionsService: OptionsService,\n private permissions: Permissions,\n private gainsightService: GainsightService\n ) {}\n\n async ngOnInit() {\n this.isLoading = true;\n this.hasAdminPermissions = this.permissions.hasRole(\n Permissions.ROLE_APPLICATION_MANAGEMENT_ADMIN\n );\n this.package = this.activatedRoute?.snapshot?.parent?.data?.contextData;\n this.isPackageOwnedByCurrentTenant = this.ecosystemService.isOwner(this.package);\n this.versionsLimit = (await this.optionsService.getSystemOption(\n 'application',\n 'versions.limit',\n DEFAULT_VERSIONS_LIMIT\n )) as number;\n this.sortVersions();\n this.isLoading = false;\n }\n\n async downloadArchive(appVersion: IApplicationVersion): Promise<void> {\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.PACKAGE_VERSIONS,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.PACKAGE_VERSIONS,\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.DOWNLOAD,\n url: this.CURRENT_LOCATION\n }\n );\n const archiveMO = await this.ecosystemService.getArchiveManagedObject(appVersion.binaryId);\n await this.ecosystemService.downloadArchive(this.package, {\n id: appVersion.binaryId,\n name: archiveMO.name\n });\n }\n\n packageVersionUploaded() {\n this.activatedRoute.snapshot.parent.data.contextData = this.package;\n this.sortVersions();\n this.setUploadedVersionAsLatest();\n }\n\n selectVersion(version: string | null): void {\n this.selectedVersion = version;\n this.onVersionSelect.emit(version);\n }\n\n async removeVersionPackage(version: string) {\n try {\n await this.ecosystemService.deletePackageVersion(this.package, { version });\n this.alertService.success(\n this.translateService.instant(gettext('Package version {{version}} has been removed'), {\n version\n })\n );\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.PACKAGE_VERSIONS,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.PACKAGE_VERSIONS,\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.DELETE,\n result: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.RESULTS.SUCCESS,\n url: this.CURRENT_LOCATION\n }\n );\n } catch (e) {\n this.alertService.addServerFailure(e);\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.PACKAGE_VERSIONS,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.PACKAGE_VERSIONS,\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.DELETE,\n result: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.RESULTS.SERVER_FAILURE,\n url: this.CURRENT_LOCATION\n }\n );\n }\n if (version === this.selectedVersion) {\n this.selectVersion(null);\n }\n await this.refreshPackage();\n }\n\n async setVersionAsLatest(appVersion: IApplicationVersion) {\n try {\n await this.ecosystemService.setPackageVersionTag(this.package, appVersion.version, [\n ...appVersion.tags,\n 'latest'\n ]);\n\n // TODO added it due to: https://cumulocity.atlassian.net/browse/MTM-48553\n // Remove it when BE fixes issues with activeVersion.\n await this.ecosystemService.setAppActiveVersion(this.package, appVersion.binaryId);\n this.alertService.success(gettext('Tag has been set.'));\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.PACKAGE_VERSIONS,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.PACKAGE_VERSIONS,\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.SET_AS_LATEST,\n result: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.RESULTS.SUCCESS,\n url: this.CURRENT_LOCATION\n }\n );\n } catch (e) {\n this.alertService.addServerFailure(e);\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.PACKAGE_VERSIONS,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.PACKAGE_VERSIONS,\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.SET_AS_LATEST,\n result: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.RESULTS.SERVER_FAILURE,\n url: this.CURRENT_LOCATION\n }\n );\n return;\n }\n await this.refreshPackage();\n }\n\n async acknowledgeLimitReached() {\n await this.modal.acknowledge(\n gettext('Package limit exceeded'),\n this.translateService.instant(\n gettext(\n 'You have reached the maximum number of {{ versionsLimit }} package versions. To add another version, first delete one from the list.'\n ),\n { versionsLimit: this.versionsLimit }\n ),\n Status.INFO,\n gettext('Close')\n );\n throw undefined;\n }\n\n private async refreshPackage() {\n this.isLoading = true;\n this.package = await this.ecosystemService.getApplication(this.package.id);\n this.activatedRoute.snapshot.parent.data.contextData = this.package;\n this.sortVersions();\n this.isLoading = false;\n }\n\n private sortVersions() {\n this.sortedVersions = this.pluginsService.sortVersions(\n {\n list: this.package.applicationVersions,\n path: ['version']\n },\n 'desc'\n );\n this.toggleUploadPossibility();\n }\n\n private async setUploadedVersionAsLatest() {\n const uploadedVersion =\n this.package.applicationVersions[this.package.applicationVersions.length - 1];\n try {\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.PACKAGE_VERSIONS,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.PACKAGE_VERSIONS,\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.UPLOAD,\n result: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.RESULTS.SUCCESS,\n url: this.CURRENT_LOCATION\n }\n );\n await this.modal.confirm(\n gettext('Upload successful'),\n this.translateService.instant(\n gettext(\n 'Do you want to set version {{version}} as the latest? Deploying a new application will always use this version.'\n ),\n { version: uploadedVersion.version }\n ),\n Status.SUCCESS,\n {\n ok: gettext('Set as latest`version`'),\n cancel: gettext('Keep unchanged`version`')\n }\n );\n } catch (e) {\n await this.refreshPackage();\n return;\n }\n await this.setVersionAsLatest(uploadedVersion);\n }\n\n private toggleUploadPossibility() {\n this.preUploadCallback =\n this.sortedVersions.length < this.versionsLimit\n ? null\n : this.acknowledgeLimitReached.bind(this);\n }\n}\n","<div class=\"inner-scroll split-view__list\">\n <div class=\"card-header separator sticky-top bg-component\">\n <div class=\"card-title\" translate>Versions</div>\n </div>\n\n <div class=\"bg-level-1 flex-grow\">\n <div class=\"p-16\" *ngIf=\"isLoading\">\n <c8y-loading></c8y-loading>\n </div>\n <ul class=\"nav c8y-nav-stacked\" *ngIf=\"!isLoading\">\n <li\n class=\"c8y-stacked-item p-t-0 p-b-0 p-r-4\"\n [ngClass]=\"{ active: selectedVersion === applicationVersion.version }\"\n *ngFor=\"let applicationVersion of sortedVersions\"\n >\n <div\n class=\"flex-grow d-flex a-i-center gap-4 p-t-8 p-b-8\"\n (click)=\"selectVersion(applicationVersion.version)\"\n >\n <i c8yIcon=\"big-parcel\" class=\"icon-20\"></i>\n <span class=\"text-label-small\">\n {{ 'Version' | translate }}\n </span>\n <span class=\"text-medium\">{{ applicationVersion.version }}</span>\n <div class=\"text-truncate d-flex j-c-end flex-grow gap-4 flex-wrap m-l-auto\">\n <span *ngFor=\"let tag of applicationVersion.tags\" class=\"label label-info\">\n {{ tag }}\n </span>\n </div>\n </div>\n <div class=\"dropdown\" dropdown *ngIf=\"hasAdminPermissions && isPackageOwnedByCurrentTenant\">\n <button\n class=\"dropdown-toggle c8y-dropdown\"\n type=\"button\"\n title=\"{{ 'Settings' | translate }}\"\n dropdownToggle\n >\n <i c8yIcon=\"ellipsis-v\"></i>\n </button>\n <ul *dropdownMenu class=\"dropdown-menu dropdown-menu-right\">\n <li>\n <button\n type=\"button\"\n title=\"{{ 'Set as latest`version`' | translate }}\"\n (click)=\"setVersionAsLatest(applicationVersion)\"\n [disabled]=\"applicationVersion.tags?.includes('latest')\"\n >\n <i c8yIcon=\"collect\" class=\"m-r-4\"></i>\n {{ 'Set as latest`version`' | translate }}\n </button>\n </li>\n <li>\n <button\n type=\"button\"\n title=\"{{ 'Download' | translate }}\"\n (click)=\"downloadArchive(applicationVersion)\"\n >\n <i c8yIcon=\"download\" class=\"m-r-4\"></i>\n {{ 'Download' | translate }}\n </button>\n </li>\n <li>\n <button\n type=\"button\"\n title=\"{{ 'Delete' | translate }}\"\n (click)=\"removeVersionPackage(applicationVersion.version)\"\n [disabled]=\"applicationVersion.tags?.includes('latest')\"\n >\n <i c8yIcon=\"trash\" class=\"m-r-4\"></i>\n {{ 'Delete' | translate }}\n </button>\n </li>\n </ul>\n </div>\n </li>\n </ul>\n </div>\n\n <div\n class=\"card-footer separator sticky-bottom\"\n *ngIf=\"!isLoading && isPackageOwnedByCurrentTenant\"\n >\n <div class=\"form-group m-b-0\">\n <label translate>Upload a new version</label>\n <c8y-upload-archive\n [(application)]=\"package\"\n [uploadNewVersion]=\"true\"\n (refresh)=\"packageVersionUploaded()\"\n [preUploadCallback]=\"preUploadCallback\"\n ></c8y-upload-archive>\n </div>\n </div>\n</div>\n","import { Component } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { IApplication } from '@c8y/client';\nimport {\n ApplicationPlugin,\n ContextRouteService,\n gettext,\n PluginsService,\n TitleComponent,\n BreadcrumbComponent,\n BreadcrumbItemComponent,\n IconDirective,\n C8yTranslateDirective,\n EmptyStateComponent,\n C8yTranslatePipe,\n HumanizeAppNamePipe,\n MarkdownToHtmlPipe\n} from '@c8y/ngx-components';\nimport { NgClass, NgIf, AsyncPipe } from '@angular/common';\nimport { PackageVersionsListComponent } from './package-versions-list/package-versions-list.component';\nimport { PackageContentsComponent } from './package-contents/packages-contents.component';\n\n@Component({\n selector: 'c8y-package-versions',\n templateUrl: './packages-versions.component.html',\n imports: [\n TitleComponent,\n BreadcrumbComponent,\n BreadcrumbItemComponent,\n NgClass,\n PackageVersionsListComponent,\n IconDirective,\n C8yTranslateDirective,\n NgIf,\n PackageContentsComponent,\n EmptyStateComponent,\n C8yTranslatePipe,\n AsyncPipe,\n HumanizeAppNamePipe,\n MarkdownToHtmlPipe\n ]\n})\nexport class PackageVersionsComponent {\n package: IApplication = {};\n selectedVersion: string;\n selectedPlugin: ApplicationPlugin;\n pluginBaseUrl: string;\n pluginMarkdown: string;\n packageContentsTitle = gettext('Version {{ selectedVersion }} package contents');\n\n constructor(\n private activatedRoute: ActivatedRoute,\n private contextRouteService: ContextRouteService,\n private pluginsService: PluginsService\n ) {}\n\n async ngOnInit() {\n this.package = this.contextRouteService.getContextData(this.activatedRoute)?.contextData;\n }\n\n async showPluginOverview(plugin: ApplicationPlugin) {\n this.selectedPlugin = plugin;\n const baseUrl = `/apps/${plugin.id}/`;\n this.pluginBaseUrl = baseUrl;\n this.pluginMarkdown = await this.pluginsService.getReadmeFileContent(baseUrl);\n }\n\n closeOverview(): void {\n this.selectedPlugin = null;\n }\n\n clearSelectedVersion() {\n this.selectedVersion = null;\n }\n\n selectVersion(version: string) {\n if (this.selectedVersion !== version) {\n this.selectedVersion = version;\n this.closeOverview();\n }\n }\n}\n","<c8y-title>{{ package?.name | humanizeAppName | async }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-atom'\"\n [label]=\"'Ecosystem' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'big-parcel'\"\n [label]=\"'Extensions' | translate\"\n [path]=\"'ecosystem/extension/extensions'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"package?.name | humanizeAppName | async\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Versions' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<div\n class=\"card content-fullpage d-grid\"\n [ngClass]=\"{ 'grid__col--6-6-0': !selectedPlugin, 'grid__col--0-6-6': !!selectedPlugin }\"\n>\n <c8y-package-versions-list\n class=\"d-contents\"\n (onVersionSelect)=\"selectVersion($event)\"\n ></c8y-package-versions-list>\n\n <!-- Package contents -->\n <div\n class=\"inner-scroll split-view__detail\"\n [ngClass]=\"{ 'split-view__detail--selected': selectedVersion }\"\n >\n <div class=\"large-padding card-header separator visible-sm visible-xs fit-w sticky-top\">\n <div class=\"d-flex a-i-center\">\n <button\n class=\"btn-clean text-primary m-r-8\"\n title=\"{{ 'Back' | translate }}\"\n (click)=\"clearSelectedVersion()\"\n >\n <i c8yIcon=\"chevron-left\"></i>\n <span translate>Back</span>\n </button>\n <div class=\"card-title\">\n {{ packageContentsTitle | translate: { selectedVersion } }}\n </div>\n </div>\n </div>\n <div class=\"card-header large-padding separator sticky-top visible-md visible-lg\">\n <div class=\"card-title\">\n <ng-container *ngIf=\"selectedVersion\">\n {{ packageContentsTitle | translate: { selectedVersion } }}\n </ng-container>\n </div>\n </div>\n <div class=\"inner-scroll split-view__list\">\n <c8y-package-contents\n [selectedVersion]=\"selectedVersion\"\n [selectedPlugin]=\"selectedPlugin\"\n (showOverview)=\"showPluginOverview($event)\"\n ></c8y-package-contents>\n </div>\n </div>\n\n <!-- Plugin readme -->\n <div\n class=\"inner-scroll split-view__detail\"\n [ngClass]=\"{ 'split-view__detail--selected': selectedPlugin }\"\n >\n <div\n class=\"card-header separator sticky-top\"\n *ngIf=\"selectedPlugin\"\n >\n <button\n class=\"btn-clean\"\n (click)=\"closeOverview()\"\n >\n <i c8yIcon=\"caret-back\"></i>\n {{ 'Back to package versions overview ' | translate }}\n </button>\n </div>\n <div\n class=\"card-block p-l-16 p-r-16 overflow-visible\"\n *ngIf=\"selectedPlugin\"\n >\n <div\n class=\"markdown-content\"\n *ngIf=\"pluginMarkdown\"\n [innerHTML]=\"pluginMarkdown | markdownToHtml: { baseUrl: pluginBaseUrl } | async\"\n ></div>\n <c8y-ui-empty-state\n [icon]=\"'user-manual'\"\n [title]=\"'No README.md found for plugin' | translate\"\n [subtitle]=\"\n 'To view the contents of "README", add the file "README.md" to the plugin.'\n | translate\n \"\n *ngIf=\"!pluginMarkdown\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot } from '@angular/router';\nimport { EcosystemService } from '@c8y/ngx-components/ecosystem/shared';\n\n@Injectable()\nexport class PackageGuard {\n constructor(private ecosystemService: EcosystemService) {}\n\n canActivate(route: ActivatedRouteSnapshot) {\n const app = route.data.contextData || route.parent.data.contextData;\n if (!app) {\n return false;\n }\n return this.ecosystemService.isPackage(app);\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { IApplication } from '@c8y/client';\nimport {\n BreadcrumbComponent,\n BreadcrumbItemComponent,\n C8yTranslatePipe,\n ContextRouteService,\n HumanizeAppNamePipe,\n TitleComponent\n} from '@c8y/ngx-components';\nimport { AsyncPipe } from '@angular/common';\nimport { PackageChangelogComponent } from '@c8y/ngx-components/ecosystem/shared';\n\n@Component({\n selector: 'c8y-package-changelog-tab',\n templateUrl: './package-changelog-tab.component.html',\n standalone: true,\n imports: [\n PackageChangelogComponent,\n TitleComponent,\n HumanizeAppNamePipe,\n BreadcrumbComponent,\n BreadcrumbItemComponent,\n C8yTranslatePipe,\n AsyncPipe\n ]\n})\nexport class PackageChangelogTabComponent implements OnInit {\n package: IApplication = {};\n\n constructor(\n private activatedRoute: ActivatedRoute,\n private contextRouteService: ContextRouteService\n ) {}\n\n async ngOnInit() {\n this.package = this.contextRouteService.getContextData(this.activatedRoute)?.contextData;\n }\n}\n","<c8y-title>{{ package?.name | humanizeAppName | async }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-atom'\"\n [label]=\"'Ecosystem' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'big-parcel'\"\n [label]=\"'Extensions' | translate\"\n [path]=\"'ecosystem/extension/extensions'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"package?.name | humanizeAppName | async\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Change logs' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-contents-changelog [package]=\"package\"></c8y-contents-changelog>\n","import { inject, Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, Router } from '@angular/router';\nimport { PluginsService } from '@c8y/ngx-components';\n\n@Injectable()\nexport class PackageChangelogGuard {\n private pluginsService = inject(PluginsService);\n private router = inject(Router);\n\n async canActivate(route: ActivatedRouteSnapshot) {\n const app = route.data.contextData || route.parent.data.contextData;\n const packageChangelogUrl = `/apps/${app.contextPath}/`;\n const changelog = await this.pluginsService.getChangelogFileContent(packageChangelogUrl);\n\n return !!changelog;\n }\n}\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport {\n CoreModule,\n FormsModule,\n gettext,\n hookRoute,\n hookTab,\n hookWizard,\n Route,\n ViewContext\n} from '@c8y/ngx-components';\nimport { ArchivedConfirmModule } from '@c8y/ngx-components/ecosystem/archived-confirm';\nimport { LicenseConfirmModule } from '@c8y/ngx-components/ecosystem/license-confirm';\nimport { EcosystemWizards, SharedEcosystemModule } from '@c8y/ngx-components/ecosystem/shared';\nimport { IconSelectorModule } from '@c8y/ngx-components/icon-selector';\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { ActivityLogComponent } from './activity-log/activity-log.component';\nimport { ApplicationPluginsModule } from '@c8y/ngx-components/ecosystem/application-plugins';\nimport { ApplicationPropertiesComponent } from './application-properties/application-properties.component';\nimport { ApplicationPropertiesGuard } from './application-properties/application-properties.guard';\nimport { SubscriptionModalComponent } from './application-properties/subscription-modal/subscription-modal.component';\nimport { UpdateApplicationModalComponent } from './application-properties/update-application-modal/update-application-modal.component';\nimport { AddExternalApplicationComponent } from './applications/add-external-applicaiton/add-external-application.component';\nimport { AddWebApplicationComponent } from './applications/add-web-application/add-web-application.component';\nimport { ApplicationListComponent } from './applications/application-list/application-list.component';\nimport { InstallFromPackageComponent } from './applications/install-from-package/install-from-package.component';\nimport { EcosystemTabs } from './ecosystem-tabs.factory';\nimport { FeatureListComponent } from './features/feature-list.component';\nimport { AddMicroserviceComponent } from './microservices/add-microservice.component';\nimport { MicroserviceListComponent } from './microservices/microservice-list.component';\nimport { AddPackageComponent } from './packages/add-package.component';\nimport { DeployApplicationComponent } from './packages/deploy-application/deploy-application.component';\nimport { PackageDetailsComponent } from './packages/package-details/package-details.component';\nimport { PackagesListComponent } from './packages/package-list/packages-list.component';\nimport { PackageVersionsGuard } from './packages/package-versions.guard';\nimport { PackageVersionsAppsComponent } from './packages/package-versions/package-contents/contents-apps/contents-apps.component';\nimport { PackageVersionsPluginsComponent } from './packages/package-versions/package-contents/contents-plugins/contents-plugins.component';\nimport { PackageContentsComponent } from './packages/package-versions/package-contents/packages-contents.component';\nimport { PackageVersionsListComponent } from './packages/package-versions/package-versions-list/package-versions-list.component';\nimport { PackageVersionsComponent } from './packages/package-versions/packages-versions.component';\nimport { PackageGuard } from './packages/package.guard';\nimport { PackageChangelogTabComponent } from './packages/package-changelog-tab/package-changelog-tab.component';\nimport { PackageChangelogGuard } from './packages/package-changelog.guard';\n\nconst ecosystemMainRoutes: Route[] = [\n {\n path: 'ecosystem/application',\n redirectTo: 'ecosystem/application/applications',\n pathMatch: 'full'\n },\n {\n // keeps legacy links functional\n path: 'ecosystem/applications',\n redirectTo: 'ecosystem/application/applications',\n pathMatch: 'full'\n },\n {\n path: 'ecosystem/application/applications',\n component: ApplicationListComponent\n },\n {\n path: 'ecosystem/extension/extensions',\n component: PackagesListComponent\n },\n {\n path: 'ecosystem/application/features',\n component: FeatureListComponent\n },\n {\n path: 'ecosystem/microservice/microservices',\n component: MicroserviceListComponent\n }\n];\n\nconst applicationDetailsRoutes: Route[] = [\n {\n path: 'properties',\n component: ApplicationPropertiesComponent,\n icon: 'list',\n label: gettext('Properties'),\n context: ViewContext.Application,\n priority: 5,\n canActivate: [ApplicationPropertiesGuard]\n },\n {\n path: 'application-versions',\n component: PackageVersionsComponent,\n icon: 'c8y-modules',\n label: gettext('Versions'),\n context: ViewContext.Application,\n priority: 1,\n canActivate: [PackageVersionsGuard]\n },\n {\n path: 'properties',\n component: ApplicationPropertiesComponent,\n icon: 'list',\n label: gettext('Properties'),\n context: ViewContext.Feature,\n priority: 5,\n canActivate: [ApplicationPropertiesGuard]\n },\n {\n path: 'package-details',\n component: PackageDetailsComponent,\n icon: 'big-parcel',\n label: gettext('Extension package'),\n context: ViewContext.Extension,\n priority: 10,\n canActivate: [PackageGuard]\n },\n {\n path: 'package-versions',\n component: PackageVersionsComponent,\n icon: 'c8y-modules',\n label: gettext('Versions'),\n context: ViewContext.Extension,\n priority: 5,\n canActivate: [PackageGuard, PackageVersionsGuard]\n },\n {\n path: 'package-changelog',\n component: PackageChangelogTabComponent,\n icon: 'list',\n label: gettext('Change log'),\n context: ViewContext.Extension,\n priority: 1,\n canActivate: [PackageGuard, PackageChangelogGuard]\n },\n {\n path: 'properties',\n component: ApplicationPropertiesComponent,\n icon: 'list',\n label: gettext('Properties'),\n context: ViewContext.Microservice,\n priority: 5,\n canActivate: [ApplicationPropertiesGuard]\n }\n];\n\n@NgModule({\n imports: [\n CoreModule,\n BsDropdownModule,\n TooltipModule,\n FormsModule,\n ReactiveFormsModule,\n RouterModule.forChild(ecosystemMainRoutes),\n PopoverModule,\n ApplicationPluginsModule,\n SharedEcosystemModule,\n LicenseConfirmModule,\n IconSelectorModule,\n A11yModule,\n ArchivedConfirmModule,\n PackageChangelogTabComponent,\n ApplicationListComponent,\n MicroserviceListComponent,\n ApplicationPropertiesComponent,\n AddMicroserviceComponent,\n ActivityLogComponent,\n AddWebApplicationComponent,\n AddExternalApplicationComponent,\n InstallFromPackageComponent,\n PackagesListComponent,\n PackageDetailsComponent,\n DeployApplicationComponent,\n AddPackageComponent,\n FeatureListComponent,\n PackageVersionsComponent,\n PackageVersionsPluginsComponent,\n PackageVersionsAppsComponent,\n PackageContentsComponent,\n PackageVersionsListComponent,\n SubscriptionModalComponent,\n UpdateApplicationModalComponent\n ],\n exports: [ApplicationPropertiesComponent, UpdateApplicationModalComponent],\n providers: [\n hookTab(EcosystemTabs),\n hookRoute(applicationDetailsRoutes),\n PackageGuard,\n PackageVersionsGuard,\n PackageChangelogGuard,\n ApplicationPropertiesGuard,\n hookWizard({\n wizardId: EcosystemWizards.APPLICATION_UPLOAD,\n component: AddWebApplicationComponent,\n name: gettext('Upload web application'),\n c8yIcon: 'upload'\n }),\n hookWizard({\n name: undefined,\n wizardId: EcosystemWizards.PACKAGE_UPLOAD,\n component: AddPackageComponent\n }),\n hookWizard({\n wizardId: EcosystemWizards.APPLICATION_UPLOAD,\n component: AddExternalApplicationComponent,\n name: gettext('External application'),\n c8yIcon: 'cloud-link'\n }),\n hookWizard({\n wizardId: EcosystemWizards.BLUEPRINT_DEPLOYMENT,\n component: DeployApplicationComponent,\n name: gettext('Deploy package'),\n c8yIcon: 'big-parcel'\n }),\n hookWizard({\n wizardId: EcosystemWizards.APPLICATION_UPLOAD,\n component: InstallFromPackageComponent,\n name: gettext('Install from available extension packages'),\n c8yIcon: 'big-parcel'\n }),\n hookWizard({\n name: undefined,\n wizardId: EcosystemWizards.MICROSERVICE_UPLOAD,\n component: AddMicroserviceComponent\n })\n ]\n})\nexport class EcosystemModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3","i5","i7","i4","FormsModule"],"mappings":"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"}
|