@c8y/ngx-components 1021.63.2 → 1021.64.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.
Files changed (62) hide show
  1. package/core/bottom-drawer/bottom-drawer-ref.d.ts +4 -0
  2. package/core/bottom-drawer/bottom-drawer-ref.d.ts.map +1 -1
  3. package/core/plugins/plugins.model.d.ts +1 -0
  4. package/core/plugins/plugins.model.d.ts.map +1 -1
  5. package/core/plugins/plugins.service.d.ts +5 -2
  6. package/core/plugins/plugins.service.d.ts.map +1 -1
  7. package/ecosystem/application-plugins/application-plugin-readme.component.d.ts +15 -0
  8. package/ecosystem/application-plugins/application-plugin-readme.component.d.ts.map +1 -0
  9. package/ecosystem/application-plugins/application-plugins.component.d.ts +4 -2
  10. package/ecosystem/application-plugins/application-plugins.component.d.ts.map +1 -1
  11. package/ecosystem/application-plugins/application-plugins.module.d.ts +4 -3
  12. package/ecosystem/application-plugins/application-plugins.module.d.ts.map +1 -1
  13. package/ecosystem/application-plugins/install-plugin.component.d.ts +8 -4
  14. package/ecosystem/application-plugins/install-plugin.component.d.ts.map +1 -1
  15. package/ecosystem/application-plugins/plugin-list.component.d.ts +10 -26
  16. package/ecosystem/application-plugins/plugin-list.component.d.ts.map +1 -1
  17. package/ecosystem/application-plugins/plugin-list.service.d.ts +27 -0
  18. package/ecosystem/application-plugins/plugin-list.service.d.ts.map +1 -0
  19. package/ecosystem/packages/package-details/package-details.component.d.ts +7 -9
  20. package/ecosystem/packages/package-details/package-details.component.d.ts.map +1 -1
  21. package/ecosystem/packages/package-versions/package-contents/contents-plugins/contents-plugins.component.d.ts +5 -1
  22. package/ecosystem/packages/package-versions/package-contents/contents-plugins/contents-plugins.component.d.ts.map +1 -1
  23. package/ecosystem/packages/package-versions/package-contents/packages-contents.component.d.ts +6 -3
  24. package/ecosystem/packages/package-versions/package-contents/packages-contents.component.d.ts.map +1 -1
  25. package/ecosystem/packages/package-versions/packages-versions.component.d.ts +9 -2
  26. package/ecosystem/packages/package-versions/packages-versions.component.d.ts.map +1 -1
  27. package/esm2022/core/bottom-drawer/bottom-drawer-ref.mjs +9 -3
  28. package/esm2022/core/plugins/plugins.model.mjs +1 -1
  29. package/esm2022/core/plugins/plugins.service.mjs +25 -5
  30. package/esm2022/ecosystem/application-plugins/application-plugin-readme.component.mjs +26 -0
  31. package/esm2022/ecosystem/application-plugins/application-plugins.component.mjs +26 -11
  32. package/esm2022/ecosystem/application-plugins/application-plugins.module.mjs +6 -3
  33. package/esm2022/ecosystem/application-plugins/install-plugin.component.mjs +21 -15
  34. package/esm2022/ecosystem/application-plugins/plugin-list-item.component.mjs +3 -3
  35. package/esm2022/ecosystem/application-plugins/plugin-list.component.mjs +26 -202
  36. package/esm2022/ecosystem/application-plugins/plugin-list.service.mjs +200 -0
  37. package/esm2022/ecosystem/application-properties/update-application-modal/update-application-modal.component.mjs +1 -1
  38. package/esm2022/ecosystem/packages/package-details/package-details.component.mjs +25 -44
  39. package/esm2022/ecosystem/packages/package-versions/package-contents/contents-plugins/contents-plugins.component.mjs +14 -4
  40. package/esm2022/ecosystem/packages/package-versions/package-contents/packages-contents.component.mjs +13 -6
  41. package/esm2022/ecosystem/packages/package-versions/packages-versions.component.mjs +22 -8
  42. package/esm2022/ecosystem/shared/list-filters/list-filters.component.mjs +3 -3
  43. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs +205 -138
  44. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs.map +1 -1
  45. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs +2 -2
  46. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
  47. package/fesm2022/c8y-ngx-components-ecosystem.mjs +257 -176
  48. package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
  49. package/fesm2022/c8y-ngx-components.mjs +31 -5
  50. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  51. package/locales/de.po +3 -0
  52. package/locales/es.po +3 -0
  53. package/locales/fr.po +3 -0
  54. package/locales/ja_JP.po +3 -0
  55. package/locales/ko.po +3 -0
  56. package/locales/locales.pot +33 -6
  57. package/locales/nl.po +3 -0
  58. package/locales/pl.po +3 -0
  59. package/locales/pt_BR.po +3 -0
  60. package/locales/zh_CN.po +3 -0
  61. package/locales/zh_TW.po +3 -0
  62. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-ecosystem-shared.mjs","sources":["../../ecosystem/shared/ecosystem.model.ts","../../ecosystem/shared/ecosystem.constants.ts","../../ecosystem/shared/ecosystem-error.ts","../../ecosystem/shared/ecosystem.service.ts","../../ecosystem/shared/package-availability.service.ts","../../ecosystem/shared/add-application.component.ts","../../ecosystem/shared/add-application.component.html","../../ecosystem/shared/translate-package-label.pipe.ts","../../ecosystem/shared/application-card.component.ts","../../ecosystem/shared/application-card.component.html","../../ecosystem/shared/application-properties-form.component.ts","../../ecosystem/shared/application-properties-form.component.html","../../ecosystem/shared/duplicate-application/duplicate-application-list/duplicate-application-list.component.ts","../../ecosystem/shared/duplicate-application/duplicate-application-list/duplicate-application-list.component.html","../../ecosystem/shared/duplicate-application/duplicate-application-properties/duplicate-application-properties.component.ts","../../ecosystem/shared/duplicate-application/duplicate-application-properties/duplicate-application-properties.component.html","../../ecosystem/shared/duplicate-application/duplicate-application.component.ts","../../ecosystem/shared/duplicate-application/duplicate-application.component.html","../../ecosystem/shared/package-version-select/package-version-select.component.ts","../../ecosystem/shared/package-version-select/package-version-select.component.html","../../ecosystem/shared/upload-archive.component.ts","../../ecosystem/shared/upload-archive.component.html","../../ecosystem/shared/list-filters/list-filters.component.ts","../../ecosystem/shared/list-filters/list-filters.component.html","../../ecosystem/shared/archived-filter/archived-filter.component.ts","../../ecosystem/shared/archived-filter/archived-filter.component.html","../../ecosystem/shared/shared-ecosystem.module.ts","../../ecosystem/shared/list-filters/list-filters.model.ts","../../ecosystem/shared/c8y-ngx-components-ecosystem-shared.ts"],"sourcesContent":["import { ApplicationPlugin } from '@c8y/ngx-components';\n\n/** Wizard types */\nexport enum EcosystemWizards {\n APPLICATION_UPLOAD = 'ecosystemApplicationUpload',\n MICROSERVICE_UPLOAD = 'ecosystemMicroserviceUpload',\n PACKAGE_UPLOAD = 'ecosystemPackageUpload',\n BLUEPRINT_DEPLOYMENT = 'ecosystemBlueprintDeployment',\n LICENSE_CONFIRM = 'ecosystemLicenseConfirm',\n ARCHIVED_CONFIRM = 'ecosystemArchivedConfirm'\n}\n\nexport enum ERROR_TYPE {\n TYPE_VALIDATION = 'TYPE_VALIDATION',\n ALREADY_SUBSCRIBED = 'ALREADY_SUBSCRIBED',\n ALREADY_EXIST = 'ALREADY_EXIST',\n INTERNAL_ERROR = 'INTERNAL_ERROR',\n NO_MANIFEST_FILE = 'NO_MANIFEST_FILE',\n INVALID_PACKAGE = 'INVALID_PACKAGE',\n INVALID_APPLICATION = 'INVALID_APPLICATION',\n MICROSERVICE_NAME_TOO_LONG = 'MICROSERVICE_NAME_TOO_LONG',\n APPLICATION_CREATION_FAILED = 'APPLICATION_CREATION_FAILED',\n KEY_OR_CONTEXT_PATH_MISMATCH = 'KEY_OR_CONTEXT_PATH_MISMATCH',\n VERSION_NOT_FOUND = 'VERSION_NOT_FOUND'\n}\n\nexport type LicensedApplicationPlugin = Pick<\n ApplicationPlugin,\n 'type' | 'license' | 'name' | 'version' | 'contextPath'\n>;\n\nexport const PRODUCT_EXPERIENCE_ECOSYSTEM = {\n APPLICATIONS: {\n EVENTS: {\n AVAILABILITY: 'availability',\n APPLICATION_CARD: 'applicationCard',\n APPLICATION_PROPERTIES: 'applicationProperties',\n DEPLOY_APPLICATION: 'deployApplication',\n DUPLICATE_APPLICATION: 'duplicateApplication',\n INSTALLED_PLUGINS: 'installedPlugins',\n PACKAGE_PLUGINS: 'packagePlugins',\n PACKAGE_VERSIONS: 'packageVersions',\n FILTER_LIST: 'filterList'\n },\n COMPONENTS: {\n APPLICATION_CARD: 'application-card',\n APPLICATION_PLUGINS: 'application-plugins',\n APPLICATION_PROPERTIES: 'application-properties',\n DEPLOY_APPLICATION: 'deploy-application',\n DUPLICATE_APPLICATION_PROPERTIES: 'duplicate-application-properties',\n PLUGIN_LIST: 'plugin-list',\n PACKAGE_VERSIONS: 'package-versions-list',\n UPDATE_PLUGIN_OF_APP: 'update-plugin-of-app',\n LIST_FILTERS: 'list-filters',\n PACKAGE_DETAILS: 'package-details'\n },\n ACTIONS: {\n AVAILABILITY_CHANGE: 'availabilityChange',\n CANCEL: 'cancel',\n CLONE: 'clone',\n CHANGE_PLUGIN_VERSION: 'changePluginVersion',\n DELETE: 'delete',\n DOWNLOAD: 'download',\n DEPLOY_APPLICATION: 'deployApplication',\n EDIT: 'edit',\n INSTALL_PLUGIN: 'installPlugin',\n INSTALL_PLUGINS: 'installPlugins',\n UNINSTALL_PLUGIN: 'uninstallPlugin',\n SELECT_VERSION: 'selectVersion',\n SET_AS_LATEST: 'setAsLatest',\n UPDATE_AVAILABLE: 'updateAvailable',\n UPLOAD: 'upload',\n SET_FILTER_TERM: 'setFilterTerm',\n SET_PREDEFINED_FILTERS: 'setPredefinedFilters',\n RESET_FILTER: 'resetFilter',\n INSTALL_PLUGINS_INITIATED: 'installPluginsInitiated',\n DEPLOY_APPLICATION_INITIATED: 'deployApplicationInitiated'\n },\n RESULTS: {\n DEPLOYED: 'deployed',\n DUPLICATED: 'duplicated',\n PLUGIN_INSTALLED: 'pluginInstalled',\n PLUGIN_REMOVED: 'pluginRemoved',\n PLUGIN_VERSION_CHANGED: 'pluginVersionChanged',\n SERVER_FAILURE: 'serverFailure',\n SUCCESS: 'success'\n }\n }\n} as const;\n","import { ERROR_TYPE } from './ecosystem.model';\nimport { gettext, PackageType, PropertiesListItem } from '@c8y/ngx-components';\n\nexport const ERROR_MESSAGES = {\n [ERROR_TYPE.ALREADY_EXIST]: gettext(\n 'Could not deploy the application, as an application with the same name`KEEP_ORIGINAL`, context-path`KEEP_ORIGINAL` or key`KEEP_ORIGINAL` exists already.'\n ),\n [ERROR_TYPE.TYPE_VALIDATION]: gettext(\n 'Wrong file format. Expected a *.zip file with a valid manifest.'\n ),\n [ERROR_TYPE.ALREADY_SUBSCRIBED]: gettext(\n 'Could not subscribe to the microservice because another application with the same context path is already subscribed.'\n ),\n [ERROR_TYPE.NO_MANIFEST_FILE]: gettext('Could not find a manifest.'),\n [ERROR_TYPE.INVALID_PACKAGE]: gettext('You have not uploaded a valid package.'),\n [ERROR_TYPE.INVALID_APPLICATION]: gettext('You have not uploaded a valid application.'),\n [ERROR_TYPE.INTERNAL_ERROR]: gettext('An internal error occurred, try to upload again.'),\n [ERROR_TYPE.MICROSERVICE_NAME_TOO_LONG]: gettext(\n 'Microservice name \"{{ name }}\" must not be longer than {{ maxChars }} characters.'\n ),\n [ERROR_TYPE.APPLICATION_CREATION_FAILED]: gettext('Application creation failed.'),\n [ERROR_TYPE.KEY_OR_CONTEXT_PATH_MISMATCH]: gettext(\n 'The \"contextPath`KEEP_ORIGINAL`\" or \"key`KEEP_ORIGINAL`\" of the uploaded archive do not match with the existing application.'\n ),\n [ERROR_TYPE.VERSION_NOT_FOUND]: gettext('The selected version was not found on the server.')\n};\n\nexport const APP_STATE = {\n SUBSCRIBED: {\n label: gettext('Subscribed`application`'),\n class: 'label-primary',\n tooltip: gettext('Provided by parent tenant.')\n },\n CUSTOM: {\n label: gettext('Custom`application`'),\n class: 'label-info',\n tooltip: gettext('Manually uploaded to the platform.')\n },\n EXTERNAL: {\n label: gettext('External`application`'),\n class: 'label-warning',\n tooltip: gettext('Application hosted outside of the platform.')\n },\n UNPACKED: {\n label: gettext('Unpacked`application`'),\n class: 'label-success',\n tooltip: gettext('Deployed from a package available under \"Packages\".')\n },\n PACKAGE_BLUEPRINT: {\n label: gettext('Blueprint'),\n class: 'label-success',\n tooltip: gettext('Contains an application and may include plugins.')\n },\n PACKAGE_PLUGIN: {\n label: gettext('Plugins'),\n class: 'label-info',\n tooltip: gettext('Contains only plugins.')\n },\n PACKAGE_UNKNOWN: {\n label: gettext('Unknown`package-type`'),\n class: 'label-info',\n tooltip: gettext('Package contents could not be determined.')\n }\n};\n\nexport type ApplicationState = (typeof APP_STATE)[keyof typeof APP_STATE];\n\nexport const PACKAGE_TYPE_LABELS = {\n [PackageType.COMMUNITY]: {\n label: gettext('COMMUNITY`Package created by the developer community.`'),\n tooltip: gettext('Package created by the developer community.')\n },\n [PackageType.OFFICIAL]: {\n label: gettext('OFFICIAL`Package maintained by Software AG.`'),\n tooltip: gettext('Package maintained by Software AG.')\n },\n [PackageType.UNKNOWN]: {\n label: gettext('CUSTOM`Package maintained by an unknown source.`'),\n tooltip: gettext('Package maintainer unknown.')\n },\n [PackageType.ARCHIVED]: {\n label: gettext('ARCHIVED`Package out of maintenance.`'),\n tooltip: gettext('The package was marked by the author as archived.')\n }\n};\n\nexport const packageProperties: PropertiesListItem[] = [\n {\n label: gettext('Latest version'),\n key: 'version'\n },\n {\n label: gettext('Author'),\n key: 'author'\n },\n {\n label: gettext('Keywords'),\n key: 'keywords'\n },\n {\n label: gettext('Source'),\n key: 'repository',\n transform: (repository: any) => (repository?.url ? repository.url : repository),\n type: 'link',\n action: (e, link: string) => window.open(link, '_blank', 'noopener,noreferrer')\n },\n {\n label: gettext('Homepage'),\n key: 'homepage',\n type: 'link',\n action: (e, link: string) => window.open(link, '_blank', 'noopener,noreferrer')\n },\n {\n label: gettext('License'),\n key: 'license'\n }\n];\n","import { ERROR_MESSAGES } from './ecosystem.constants';\nimport { ERROR_TYPE } from './ecosystem.model';\n\nexport class EcosystemError extends Error {\n constructor(public type: ERROR_TYPE) {\n super(ERROR_MESSAGES[type]);\n }\n}\n","import { EventEmitter, Injectable } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport {\n ApplicationAvailability,\n ApplicationService,\n ApplicationType,\n IApplication,\n IApplicationBinary,\n IApplicationVersion,\n IApplicationVersionDeleteParams,\n ICurrentTenant,\n IdReference,\n IFetchResponse,\n IIdentified,\n IManagedObject,\n IManifest,\n InventoryService,\n IResult,\n IResultList,\n IUploadParamsOverride,\n TenantService\n} from '@c8y/client';\nimport {\n AlertService,\n ApplicationPlugin,\n AppStateService,\n gettext,\n HumanizeAppNamePipe,\n ModalService,\n PackageType,\n PluginsService,\n Status,\n WizardModalService,\n ZipService\n} from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport { saveAs } from 'file-saver';\nimport { cloneDeep, get, groupBy, kebabCase, pick, uniqBy, omit, isUndefined } from 'lodash-es';\nimport { BehaviorSubject, Observable, defer } from 'rxjs';\nimport { debounceTime, take, map, filter, shareReplay } from 'rxjs/operators';\nimport { gt, coerce, satisfies } from 'semver';\nimport { EcosystemError } from './ecosystem-error';\nimport { ApplicationState, APP_STATE, ERROR_MESSAGES } from './ecosystem.constants';\nimport { EcosystemWizards, ERROR_TYPE, LicensedApplicationPlugin } from './ecosystem.model';\nimport { AppFilterProps } from './list-filters/list-filters.model';\n\nconst CUMULOCITY_JSON = 'cumulocity.json';\nconst MICROSERVICE_NAME_MAX_LENGTH = 23;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EcosystemService {\n appDeleted = new EventEmitter<IApplication>();\n progress: BehaviorSubject<number> = new BehaviorSubject<number>(null);\n private appsGroupedByContextPath$: Observable<Record<string, IApplication[]>>;\n private xhr: XMLHttpRequest;\n\n constructor(\n private modal: ModalService,\n private alertService: AlertService,\n private humanizeAppName: HumanizeAppNamePipe,\n private translateService: TranslateService,\n private applicationService: ApplicationService,\n private appStateService: AppStateService,\n private zipService: ZipService,\n private tenantService: TenantService,\n private inventoryService: InventoryService,\n private wizardModalService: WizardModalService,\n private pluginService: PluginsService\n ) {\n this.appsGroupedByContextPath$ = defer(() => this.getWebApplications()).pipe(\n map(webApps => groupBy(webApps, 'contextPath')),\n shareReplay({ bufferSize: 1, refCount: true })\n );\n }\n\n getUniqueAppConfig(srcApp: IApplication, existingApps: IApplication[]): IApplication {\n let app: IApplication = {\n name: srcApp.name,\n key: srcApp.key,\n contextPath: srcApp.contextPath\n };\n for (let retryNo = 0; retryNo < 9; ) {\n if (this.checkIfAppNameKeyPathExists(existingApps, app, retryNo)) {\n retryNo++;\n app = {\n name: [srcApp.name, retryNo].join('-'),\n key: [srcApp.key, retryNo].join('-'),\n contextPath: [srcApp.contextPath, retryNo].join('-')\n };\n } else {\n return app;\n }\n }\n return app;\n }\n\n /**\n * Verify versions compatibility for blueprints. If a blueprint version\n * is not compatible, a warning is shown.\n *\n * @param blueprint The blueprint to install.\n * @returns true if the installation can continue or false if it should be aborted.\n */\n async verifyBlueprintVersionsCompatibility(blueprint: Partial<IManifest>): Promise<boolean> {\n const api = await this.getPlatformVersion();\n if (blueprint.versioningMatrix) {\n try {\n const pluginApiVersion = blueprint.versioningMatrix[blueprint.version].api;\n if (!satisfies(api, pluginApiVersion)) {\n return await this.showModal(blueprint, false, api);\n }\n } catch {\n return await this.showModal(blueprint, false, api);\n }\n }\n return true;\n }\n\n /**\n * Verify versions compatibility for plugins. In case a version does not exist in the\n * versioningMatrix we don't do anything due to backward compatibility. If a plugin version\n * is not compatible, a warning is shown.\n *\n * @param pluginsToInstall The list of plugins to install.\n * @returns true if the installation can continue or false if it should be aborted.\n */\n async verifyPluginVersionsCompatibility(\n pluginsToInstall: ApplicationPlugin[],\n app: IApplication\n ): Promise<boolean> {\n const api = await this.getPlatformVersion();\n const sdk = app.manifest?.webSdkVersion;\n for (const plugin of pluginsToInstall) {\n if (plugin.versioningMatrix) {\n try {\n const pluginSdkVersion = plugin.versioningMatrix[plugin.version].sdk;\n const pluginApiVersion = plugin.versioningMatrix[plugin.version].api;\n if (!satisfies(sdk, pluginSdkVersion) || !satisfies(api, pluginApiVersion)) {\n return await this.showModal(plugin, true, api, sdk);\n }\n } catch {\n return await this.showModal(plugin, false, api, sdk);\n }\n }\n }\n\n return true;\n }\n\n /**\n * Community plugins need to verify the license agreement. If a package is a community\n * package, the license is shown.\n *\n * @param pluginsToInstall The list of plugins to install.\n * @returns true if the installation can continue.\n */\n async verifyLicenses(pluginsToInstall: Array<LicensedApplicationPlugin>) {\n let _resolve;\n const result: Promise<boolean> = new Promise(resolve => {\n _resolve = resolve;\n });\n\n pluginsToInstall = pluginsToInstall.filter(\n plugin => plugin.type !== PackageType.CUSTOM && plugin.type !== PackageType.OFFICIAL\n );\n\n if (pluginsToInstall.length === 0) {\n return Promise.resolve(true);\n }\n\n const initialState: any = {\n id: EcosystemWizards.LICENSE_CONFIRM,\n componentInitialState: {\n pluginsToInstall\n }\n };\n const modalOptions = { initialState };\n const wizard = this.wizardModalService.show(modalOptions);\n\n wizard.content.onClose.subscribe(confirmed => {\n _resolve(confirmed);\n });\n\n return result;\n }\n\n /**\n * If the plugin is archived, a warning should be shown.\n *\n * @param pluginsToInstall The list of plugins to install.\n * @returns true if the installation can continue.\n */\n async verifyArchived(pluginsToInstall: Array<LicensedApplicationPlugin>) {\n let _resolve;\n const result: Promise<boolean> = new Promise(resolve => {\n _resolve = resolve;\n });\n\n pluginsToInstall = pluginsToInstall.filter(plugin => plugin.type === PackageType.ARCHIVED);\n\n if (pluginsToInstall.length === 0) {\n return Promise.resolve(true);\n }\n\n const initialState: any = {\n id: EcosystemWizards.ARCHIVED_CONFIRM\n };\n const modalOptions = { initialState };\n const wizard = this.wizardModalService.show(modalOptions);\n\n wizard.content.onClose.subscribe(confirmed => {\n _resolve(confirmed);\n });\n\n return result;\n }\n\n /**\n * @description\n * Compares currently deployed application version with application version tagged as \"latest\"\n *\n * @param {string} currentApplicationVersion Deployed application version\n * @param {object} latestApp Latest application version object\n *\n * @returns {boolean} Returns true if latest version is greater than current, otherwise false\n */\n shouldUpgradePackage(currentApplicationVersion: string, latestApp: IApplicationVersion): boolean {\n const latestApplicationVersion = latestApp?.version;\n\n if (!latestApplicationVersion || !currentApplicationVersion) {\n return false;\n }\n\n return gt(coerce(latestApplicationVersion), coerce(currentApplicationVersion));\n }\n\n /**\n * @description\n * Gets an object that contains searched tag\n *\n * @param {array} applicationVersions Array with all available versions\n * @param {string} tagName Searched tag\n *\n * @returns {object} Returns an object with searched tag\n */\n getApplicationVersionObjectByTag(\n applicationVersions: IApplicationVersion[],\n tagName: string\n ): IApplicationVersion {\n return applicationVersions?.find(element => element.tags.includes(tagName));\n }\n\n async getApplication(appId: IdReference): Promise<IApplication> {\n return (await this.applicationService.detail(appId)).data;\n }\n\n getApplications(customFilter: any = {}): Promise<IResultList<IApplication>> {\n const filter: object = {\n pageSize: 2000,\n withTotalPages: true\n };\n Object.assign(filter, customFilter);\n const currentTenant = this.appStateService.currentTenant.value;\n return this.applicationService.listByTenant(currentTenant.name, filter);\n }\n\n async getMicroservices(): Promise<IApplication[]> {\n const apps = (await this.getApplications()).data;\n const microservices = apps.filter(app => this.isMicroservice(app));\n return microservices.sort((a, b) => a.name.localeCompare(b.name));\n }\n\n async getWebApplications(customFilter: any = {}): Promise<IApplication[]> {\n const apps = (await this.getApplications(customFilter)).data;\n const webApps = apps.filter(app => this.isApplication(app));\n return webApps.sort((a, b) => a.name.localeCompare(b.name));\n }\n\n async getFeatureApplications(customFilter: any = {}): Promise<IApplication[]> {\n const apps = (await this.getApplications(customFilter)).data;\n const webApps = apps.filter(app => this.isFeature(app));\n return webApps.sort((a, b) => a.name.localeCompare(b.name));\n }\n\n async getPackageApplications(customFilter: any = {}): Promise<IApplication[]> {\n const filterCallback = app => this.isPackage(app);\n return this.getApplicationsFiltered(customFilter, filterCallback);\n }\n\n async getHostedAndPackageApplications(customFilter: any = {}): Promise<IApplication[]> {\n const filterCallback = app => this.isPackage(app) || this.isApplication(app);\n return this.getApplicationsFiltered(customFilter, filterCallback);\n }\n\n async getApplicationsFiltered(\n customFilter: any = {},\n filterCallback = (app: IApplication) => !!app\n ): Promise<IApplication[]> {\n const filter = Object.assign({}, customFilter);\n const sharedFilter = Object.assign(\n {\n availability: ApplicationAvailability.SHARED,\n type: 'HOSTED',\n pageSize: 2000\n },\n customFilter\n );\n const [{ data: apps }, { data: shared }] = await Promise.all([\n this.getApplications(filter),\n this.applicationService.list(sharedFilter)\n ]);\n const webApps = [...apps, ...shared].filter(filterCallback);\n // an app could be subscribed to a tenant, but also have it's availability set to SHARED, in that case it would occur twice.\n const uniqWebApps = uniqBy(webApps, (app: IApplication) => app.id);\n return uniqWebApps.sort((a, b) => a.name.localeCompare(b.name));\n }\n\n async isMicroserviceHostingAllowed(): Promise<boolean> {\n const { data: apps } = await this.applicationService.listByName('feature-microservice-hosting');\n return !!apps.filter(app => app.owner?.tenant?.id === 'management').length;\n }\n\n canOpenAppInBrowser(app: IApplication): boolean {\n const isNotAFeature = !this.isFeature(app);\n const hasProperType = [ApplicationType.HOSTED, ApplicationType.EXTERNAL].includes(app.type);\n const isNotPackage = !this.isPackage(app);\n return isNotAFeature && hasProperType && isNotPackage;\n }\n\n openApp(app) {\n window.open(this.applicationService.getHref(app), '_blank', 'noopener,noreferrer');\n }\n\n async canDeleteApp(app: IApplication): Promise<boolean> {\n return (\n this.isOwner(app) && (!this.isCurrentApp(app) || (await this.hasSubscribedAppParent(app)))\n );\n }\n\n isOwner(app: IApplication): boolean {\n const currentTenant: ICurrentTenant = this.appStateService.currentTenant.value;\n const appOwner = get(app, 'owner.tenant.id');\n return currentTenant?.name === appOwner;\n }\n\n isFeature(app: IApplication): boolean {\n return !!app.name.match(/feature-/);\n }\n\n isMicroservice(app: IApplication): boolean {\n return app.type === 'MICROSERVICE';\n }\n\n isExternal(app: IApplication): boolean {\n return app.type === 'EXTERNAL';\n }\n\n isPackage(app: IApplication): boolean {\n return app.manifest?.isPackage === true;\n }\n\n isPlugin(app: IApplication): boolean {\n return app.manifest?.package === 'plugin';\n }\n\n cancelAppCreation(app: IApplication): void {\n if (this.xhr) {\n this.xhr.abort();\n }\n if (app) {\n this.applicationService.delete(app);\n }\n }\n\n updateUploadProgress(event): void {\n if (event.lengthComputable) {\n const currentProgress = this.progress.value;\n this.progress.next(currentProgress + (event.loaded / event.total) * (95 - currentProgress));\n }\n }\n\n setAppActiveVersion(app: IApplication, activeVersionId: string): Promise<IApplication> {\n return this.applicationService.update({ id: app.id, activeVersionId });\n }\n\n setPackageVersionTag(app: IApplication, version: string, tags: string[]) {\n return this.applicationService.setPackageVersionTag(app, version, tags);\n }\n\n deletePackageVersion(app: IApplication, params: IApplicationVersionDeleteParams) {\n return this.applicationService.deleteVersionPackage(app, params);\n }\n\n getHumanizedAppName(app: IApplication): Promise<string> {\n return this.humanizeAppName.transform(app.name).pipe(debounceTime(250), take(1)).toPromise();\n }\n\n createConfig(app: IApplication, formGroupValue: FormGroup): Partial<IApplication> {\n const { id, type, availability } = app;\n let config = pick(formGroupValue, ['name', 'key', 'contextPath']);\n config = {\n ...config,\n isSetup: true,\n id,\n type,\n availability\n };\n return config;\n }\n\n async listArchives(appId: string | number | IApplication): Promise<IApplicationBinary[]> {\n const filter = {\n pageSize: 100\n };\n return (await this.applicationService.binary(appId).list(filter)).data;\n }\n\n async deleteArchive(archive: IApplicationBinary, app: IApplication): Promise<void> {\n const humanizedArchiveName = await this.getHumanizedAppName(archive);\n try {\n await this.modal.confirm(\n gettext('Delete archive'),\n this.translateService.instant(\n gettext(\n `You are about to delete archive \"{{ humanizedArchiveName }}\". Do you want to proceed?`\n ),\n { humanizedArchiveName }\n ),\n Status.DANGER,\n { ok: gettext('Delete'), cancel: gettext('Cancel') }\n );\n await this.applicationService.binary(app).delete(archive.id);\n this.alertService.success(gettext('Archive deleted.'));\n } catch (ex) {\n if (ex) {\n this.alertService.danger(get(ex, 'data.message'), ex.data);\n }\n throw new Error('Cancelled');\n }\n }\n\n async getArchiveManagedObject(binaryId: string): Promise<IManagedObject> {\n return (await this.inventoryService.detail(binaryId)).data;\n }\n\n async downloadArchive(\n app: IApplication,\n archive: Pick<IApplicationBinary, 'name' | 'id'>\n ): Promise<void> {\n try {\n const binary = await this.getBinary(app, archive);\n const fileBinary = new Blob([binary], { type: 'application/x-zip-compressed' });\n saveAs(fileBinary, archive.name);\n } catch (e) {\n // empty\n }\n }\n\n async updateApp(app: IApplication, deleteOnFailure = false): Promise<IResult<IApplication>> {\n try {\n return await this.applicationService.update(app);\n } catch (ex) {\n this.alertError(ex);\n if (deleteOnFailure) {\n await this.applicationService.delete(app.id);\n throw new EcosystemError(ERROR_TYPE.APPLICATION_CREATION_FAILED);\n }\n }\n }\n\n async deleteApp(app: IApplication, silent = false): Promise<void> {\n const humanizedAppName = await this.getHumanizedAppName(app);\n if (!silent) {\n await this.modal.confirm(\n gettext('Delete application'),\n this.translateService.instant(\n gettext(\n `You are about to delete application \"{{ humanizedAppName }}\". Do you want to proceed?`\n ),\n { humanizedAppName }\n ),\n Status.DANGER,\n { ok: gettext('Delete'), cancel: gettext('Cancel') }\n );\n }\n await this.applicationService.delete(app.id);\n if (!silent) {\n this.alertService.success(gettext('Application deleted.'));\n }\n this.appDeleted.emit(app);\n }\n\n async checkIfSubscribed(app: IApplication): Promise<boolean> {\n const currentTenant = await this.tenantService.current();\n const subscribedApps = currentTenant.data.applications.references;\n return subscribedApps.some(application => application.application.id === app.id);\n }\n\n async subscribeApp(app: IApplication): Promise<void> {\n const currentTenant: ICurrentTenant = this.appStateService.currentTenant.value;\n try {\n await this.tenantService.subscribeApplication(currentTenant, app);\n this.alertService.success(gettext('Successfully subscribed to application.'));\n } catch (ex) {\n this.alertError(ex);\n }\n }\n\n async unsubscribeApp(app: IApplication): Promise<void> {\n const currentTenant: ICurrentTenant = this.appStateService.currentTenant.value;\n try {\n await this.tenantService.unsubscribeApplication(currentTenant, app);\n this.alertService.success(gettext('Successfully unsubscribed from application.'));\n } catch (ex) {\n this.alertError(ex);\n }\n }\n\n async isValidAppType(archive: File, appType: ApplicationType): Promise<boolean> {\n try {\n const currentType = await this.getAppType(archive);\n if (currentType !== appType) {\n throw new EcosystemError(ERROR_TYPE.TYPE_VALIDATION);\n } else {\n this.progress.next(this.progress.value + 10);\n return true;\n }\n } catch (ex) {\n throw new EcosystemError(ERROR_TYPE.TYPE_VALIDATION);\n }\n }\n\n async uploadArchiveToApp(\n archive: File,\n app: IApplication,\n isNewVersion = false\n ): Promise<IApplication> {\n let uploadOverrides: IUploadParamsOverride;\n if (isNewVersion) {\n uploadOverrides = await this.getUploadOverrides(archive, app);\n }\n const binaryService = this.applicationService.binary(app);\n this.xhr = binaryService.uploadWithProgressXhr(\n archive,\n this.updateUploadProgress.bind(this),\n '',\n uploadOverrides\n );\n\n const binaryMo = await binaryService.getXMLHttpResponse(this.xhr);\n // TODO commented it due to: https://cumulocity.atlassian.net/browse/MTM-48553\n // Add it back when BE fixes issues with activeVersion.\n // if (isNewVersion) {\n // return await this.getApplication(app);\n // }\n const notInitialPackage = app.applicationVersions?.length > 0;\n if (notInitialPackage) {\n return (await this.applicationService.update({ id: app.id })).data;\n }\n return (await this.setAppActiveVersion(app, (binaryMo.binaryId || binaryMo.id) as string)).data;\n }\n\n async validateArchiveToAppCompatibility(archive: File, app: IApplication): Promise<void> {\n const appType = await this.getAppType(archive);\n if (appType !== app.type) {\n throw new EcosystemError(ERROR_TYPE.INVALID_APPLICATION);\n } else {\n this.progress.next(this.progress.value + 10);\n }\n if (this.isMicroservice(app)) {\n return;\n }\n const manifest = await this.getCumulocityJson(archive);\n // A user can upload an app without a Cumulocity JSON file (e.g. a react app).\n // This is allowed and should not trigger a validation error.\n if (!manifest) {\n return;\n }\n await this.validatePackageKeyAndContextPath(manifest, app);\n }\n\n async getCumulocityJson(archive: File): Promise<IManifest | null> {\n try {\n const c8yManifest = await this.getCumulocityJson$(archive).toPromise();\n return c8yManifest;\n } catch (ex) {\n return null;\n }\n }\n\n async createAppForArchive(archive, isPackageTypeArchive = false): Promise<IApplication> {\n let isPackage = false;\n const appType = await this.getAppType(archive);\n let appModel: any = {};\n const supportedAppTypes = [ApplicationType.HOSTED, ApplicationType.MICROSERVICE];\n\n if (supportedAppTypes.includes(appType)) {\n try {\n appModel = await this.getCumulocityJson$(archive).toPromise();\n isPackage = appModel.isPackage;\n } catch (e) {\n // do nothing, we allow having HOSTED applications without the manifest file\n }\n }\n const name = this.getBaseNameFromArchiveOrAppModel(archive, appType, appModel);\n const clearedName = this.removeForbiddenCharacters(name);\n const key = this.getAppKey(appModel, clearedName);\n const contextPath = this.getContextPath(appModel, name);\n\n const appToSave = {\n type: appType,\n name,\n key,\n contextPath\n };\n\n if (isPackageTypeArchive && !isPackage) {\n throw new EcosystemError(ERROR_TYPE.INVALID_PACKAGE);\n } else if (!isPackageTypeArchive && isPackage) {\n throw new EcosystemError(ERROR_TYPE.INVALID_APPLICATION);\n } else if (this.isNameLengthExceeded(name, appType)) {\n const error = new Error();\n error.name = ERROR_TYPE.MICROSERVICE_NAME_TOO_LONG;\n error.message = this.translateService.instant(ERROR_MESSAGES[error.name], {\n name,\n maxChars: MICROSERVICE_NAME_MAX_LENGTH\n });\n throw error;\n }\n return (\n await this.applicationService.create({\n ...appToSave,\n manifest: {\n isPackage,\n ...(appModel?.package && { package: appModel.package })\n } as unknown as IManifest\n })\n ).data;\n }\n\n async reactivateArchive(app: IApplication): Promise<void> {\n try {\n await this.applicationService.reactivateArchive(app.id);\n this.alertService.success(gettext('Application reactivated.'));\n } catch (ex) {\n this.alertError(ex);\n }\n }\n\n async removeOldestArchive(app: IApplication, archives: IApplicationBinary[]): Promise<void> {\n try {\n await this.modal.confirm(\n gettext('Delete oldest archive and continue'),\n gettext(\n 'Up to 6 archives can be saved in the platform. If you upload a new archive, the oldest archive that is not active will be deleted. Do you want to proceed?'\n ),\n Status.INFO,\n { ok: gettext('Delete and continue') }\n );\n const archiveToDelete = archives[archives.length - 2];\n await this.applicationService.binary(app).delete(archiveToDelete.id);\n this.alertService.success(gettext('Archive deleted.'));\n } catch (ex) {\n if (ex) {\n this.alertError(ex);\n } else {\n return Promise.reject('cancelled');\n }\n }\n }\n\n async deployApp(selectedPackage: IApplication, formGroupValue, model): Promise<IApplication> {\n // Create new app config\n const config = this.createConfig(selectedPackage, formGroupValue);\n const requestedVersion = model.selected.version;\n let cleanManifest;\n try {\n const manifest = await this.applicationService.getAppManifest(\n selectedPackage,\n requestedVersion\n );\n cleanManifest = omit(manifest, ['name', 'contextPath', 'key']);\n } catch (ex) {\n throw new EcosystemError(ERROR_TYPE.VERSION_NOT_FOUND);\n }\n\n config.isSetup = true;\n config.manifest = cleanManifest;\n config.availability = ApplicationAvailability.PRIVATE;\n config.manifest.isPackage = false;\n config.manifest.source = selectedPackage.id;\n config.manifest.package = 'blueprint';\n\n // because of a issue with SHARED availability we always should check again\n // if the app not exist already\n const allExistingApps = await this.getHostedAndPackageApplications();\n const doesAppKeyOrContextPathExist = this.checkIfAppNameKeyPathExists(allExistingApps, config);\n if (doesAppKeyOrContextPathExist) {\n throw new EcosystemError(ERROR_TYPE.ALREADY_EXIST);\n }\n\n // Create new app\n const newApp = (await this.applicationService.create(config)).data;\n try {\n // Binary upload can fail if SHARED package\n // in this case, catch error and fall back to\n // clone API.\n await this.uploadBinaryFromOtherPackage(\n selectedPackage,\n newApp,\n model.selected.binaryId,\n requestedVersion\n );\n } catch (error) {\n if (error?.res?.status === 404) {\n await this.fallbackToClone(newApp, selectedPackage, requestedVersion);\n }\n }\n\n // update the icon if a custom one is selected\n if (formGroupValue.icon) {\n await this.applicationService.update({\n id: newApp.id,\n config: { icon: formGroupValue.icon }\n });\n }\n return newApp;\n }\n\n async fallbackToClone(\n application: IApplication,\n selectedPackage: IApplication,\n requestedVersion?: string\n ) {\n let wasSuccess = true;\n let clonedPkg;\n try {\n clonedPkg = (await this.applicationService.clone(selectedPackage, requestedVersion)).data;\n await this.uploadBinaryFromOtherPackage(\n selectedPackage,\n application,\n clonedPkg.activeVersionId,\n requestedVersion,\n clonedPkg\n );\n } catch (error) {\n this.alertError(error);\n wasSuccess = false;\n } finally {\n await this.deleteApp(clonedPkg, true);\n }\n return wasSuccess;\n }\n\n async uploadBinaryFromOtherPackage(\n selectedPackage: IApplication,\n applicationToUploadBinaryTo: IApplication,\n binaryId: string,\n requestedVersion?: string,\n useBinariesFrom?: IApplication\n ) {\n const { data: binaryDetails } = await this.inventoryService.detail(binaryId);\n\n // Get binary from specific package version\n const binary = await this.getBinary(useBinariesFrom || selectedPackage, {\n id: binaryId\n });\n // Create zip\n const fileBinary = new Blob([binary], { type: binaryDetails.contentType });\n const file = new File([fileBinary], binaryDetails.name, {\n type: binaryDetails.contentType\n });\n\n // Upload binary to new app\n await this.uploadArchiveToApp(file, applicationToUploadBinaryTo);\n\n // update the app manifest\n await this.updateAppManifest(applicationToUploadBinaryTo, selectedPackage, requestedVersion);\n }\n\n getAppState(app: IApplication): ApplicationState {\n if (!this.isOwner(app)) {\n return APP_STATE.SUBSCRIBED;\n } else if (this.isUnpacked(app)) {\n return APP_STATE.UNPACKED;\n } else if (app.type === ApplicationType.EXTERNAL) {\n return APP_STATE.EXTERNAL;\n }\n return APP_STATE.CUSTOM;\n }\n\n getPackageContentState(app: IApplication): ApplicationState {\n if (!this.isPackage(app)) {\n return;\n }\n if (this.isPackageBlueprint(app)) {\n return APP_STATE.PACKAGE_BLUEPRINT;\n }\n if (this.isPluginsPackage(app)) {\n return APP_STATE.PACKAGE_PLUGIN;\n }\n return APP_STATE.PACKAGE_UNKNOWN;\n }\n\n isPackageBlueprint(app: IApplication): boolean {\n return this.isPackage(app) && app.manifest.package === 'blueprint';\n }\n\n isPluginsPackage(app: IApplication): boolean {\n return this.isPackage(app) && app.manifest.package === 'plugin';\n }\n\n isUnpacked(app: IApplication): boolean {\n return !!app.manifest?.source;\n }\n\n hasExports(app: IApplication): boolean {\n return !!app.manifest?.exports?.length;\n }\n\n isApplication(app: IApplication): boolean {\n return (\n app.type !== ApplicationType.MICROSERVICE && !this.isFeature(app) && !this.isPackage(app)\n );\n }\n\n isCustomMicroservice(app: IApplication) {\n return this.isOwner(app) && app.type === ApplicationType.MICROSERVICE;\n }\n\n async getBinary(\n app: IApplication,\n archive: IApplicationBinary | IIdentified\n ): Promise<ArrayBuffer> {\n let binary;\n try {\n const res = await this.applicationService.binary(app).downloadArchive(archive.id);\n binary = await res.arrayBuffer();\n } catch (ex) {\n const msg = gettext('Could not get the binary.');\n this.alertService.danger(msg);\n }\n return binary;\n }\n\n async isOverwrittenByCustomApp(app: IApplication): Promise<boolean> {\n return !this.isOwner(app) && (await this.hasSubscribedAppParent(app));\n }\n\n async hasSubscribedAppParent(app: IApplication): Promise<boolean> {\n const appsGroupedByContextPath = await this.appsGroupedByContextPath$.pipe(take(1)).toPromise();\n return app.contextPath && appsGroupedByContextPath[app.contextPath]?.length === 2;\n }\n\n /**\n * @deprecated\n */\n setAvailabilityToPrivateIfNotSetAlready(app: IApplication): IApplication {\n app.availability = ApplicationAvailability.PRIVATE;\n return app;\n }\n\n /**\n * Shows an error dialog.\n * @param error Either a server error or an internal [[EcosystemError]].\n */\n alertError(error: Error | EcosystemError) {\n if (error instanceof EcosystemError) {\n this.alertService.danger(error.message);\n } else {\n this.alertService.addServerFailure(error);\n }\n }\n\n async validatePackageKeyAndContextPath(manifest: IManifest, app: IApplication) {\n const contextPath = get(manifest, 'contextPath');\n const appKey = get(manifest, 'key');\n if (contextPath !== app.contextPath || appKey !== app.key) {\n throw new EcosystemError(ERROR_TYPE.KEY_OR_CONTEXT_PATH_MISMATCH);\n }\n }\n\n filterContainString(name: string, filterTerm: string): boolean {\n const term = filterTerm.toLowerCase().trim();\n return name && name.toLowerCase().indexOf(term) > -1;\n }\n\n async updateAppManifest(\n application: IApplication,\n selectedPackage: IApplication,\n requestedVersion?: string\n ): Promise<{ res: IFetchResponse; data: any }> {\n const { id } = application;\n const cleanedApp = this.removeAppProperties(application);\n let manifest: Partial<IManifest> = selectedPackage.manifest || {};\n if (requestedVersion) {\n try {\n const versionedAppManifest = await this.applicationService.getAppManifest(\n selectedPackage,\n requestedVersion\n );\n manifest = versionedAppManifest;\n } catch (ex) {\n throw new EcosystemError(ERROR_TYPE.VERSION_NOT_FOUND);\n }\n }\n\n cleanedApp.manifest = manifest;\n cleanedApp.manifest.isPackage = false;\n cleanedApp.manifest.source = selectedPackage.id;\n\n return await this.applicationService\n .binary(id)\n .updateFiles([{ path: CUMULOCITY_JSON, contents: JSON.stringify(cleanedApp) }]);\n }\n\n /**\n * Creates object containing properties for filtering applications on lists.\n *\n * @param {object} app Application to create filter properties from.\n * @returns {object} Properties to filter by applications list.\n */\n getAppFilterProps(app: IApplication): AppFilterProps {\n return {\n type: this.pluginService.getPackageType(app),\n availability: this.getAppState(app)?.label,\n content: this.getPackageContentState(app)?.label\n };\n }\n\n private checkIfAppNameKeyPathExists(\n existingApps: IApplication[],\n app: IApplication,\n retryNo?: number\n ): IApplication {\n if (isUndefined(retryNo)) {\n return existingApps.find(\n existingApp =>\n existingApp.name === app.name ||\n existingApp.key === app.key ||\n existingApp.contextPath === app.contextPath\n );\n }\n return existingApps.find(\n existingApp =>\n existingApp.name === app.name ||\n existingApp.key === app.key ||\n existingApp.contextPath === app.contextPath ||\n existingApp.name === [app.name, retryNo].join('-') ||\n existingApp.key === [app.key, retryNo].join('-') ||\n existingApp.contextPath === [app.contextPath, retryNo].join('-')\n );\n }\n\n private async showModal(\n packageType: Partial<IManifest> | ApplicationPlugin,\n isPlugin: boolean,\n apiVersion: string,\n sdkVersion?: string\n ): Promise<boolean> {\n try {\n const messages = {\n plugin: {\n title: gettext('Plugin installation'),\n body: sdkVersion\n ? gettext(\n 'The current version of the plugin that you are trying to install does not satisfy the requirements for the following API version \"{{ apiVersion }}\" or SDK version \"{{ sdkVersion }}\". Do you want to proceed?'\n )\n : gettext(\n 'The current version of the plugin that you are trying to install does not satisfy the requirements for the following API version \"{{ apiVersion }}\". Do you want to proceed?'\n )\n },\n blueprint: {\n title: gettext('Blueprint installation'),\n body: sdkVersion\n ? gettext(\n 'The current version of the blueprint that you are trying to install does not satisfy the requirements for the following API version \"{{ apiVersion }}\" or SDK version \"{{ sdkVersion }}\". Do you want to proceed?'\n )\n : gettext(\n 'The current version of the blueprint that you are trying to install does not satisfy the requirements for the following API version \"{{ apiVersion }}\". Do you want to proceed?'\n )\n }\n };\n const entityType = isPlugin ? 'plugin' : 'blueprint';\n const selectedMessages = messages[entityType];\n const translatedBody = this.translateService.instant(selectedMessages.body, {\n name: packageType.name,\n apiVersion,\n sdkVersion\n });\n await this.modal.confirm(selectedMessages.title, translatedBody, 'warning', {\n ok: gettext('Continue'),\n cancel: gettext('Cancel')\n });\n } catch {\n // modal canceled\n return false;\n }\n\n return true;\n }\n\n private async getPlatformVersion() {\n return await this.appStateService.state$\n .pipe(\n take(1),\n map(state => state?.versions?.backend),\n filter(backendVersion => !!backendVersion)\n )\n .toPromise();\n }\n\n private getAppKey(appModel: IApplication, name: string): string {\n let key = appModel?.key;\n if (!key) {\n key = `${kebabCase(name)}-key`;\n }\n return key;\n }\n\n private getContextPath(appModel: IApplication, name: string): string {\n return appModel?.contextPath || name.toLowerCase();\n }\n\n private removeForbiddenCharacters(str: string): string {\n return str.replace(/[^a-zA-Z0-9-_]/g, '');\n }\n\n private isCurrentApp(app: IApplication): boolean {\n const currentApp = this.appStateService.state.app;\n return currentApp.contextPath === app.contextPath;\n }\n\n private getCumulocityJson$(archive: File): Observable<any> {\n return this.zipService.getJsonData(archive, {\n filename: CUMULOCITY_JSON\n });\n }\n\n private getAppType(archive: File): Promise<ApplicationType> {\n return this.getCumulocityJson$(archive)\n .toPromise()\n .then(\n data =>\n get(data, 'type') ||\n (get(data, 'apiVersion') ? ApplicationType.MICROSERVICE : ApplicationType.HOSTED)\n )\n .catch(() => ApplicationType.HOSTED);\n }\n\n private getBaseNameFromArchiveOrAppModel(\n archive: any,\n appType: ApplicationType,\n appModel?: IApplication\n ): string {\n let baseName = appModel?.name || archive.name.replace(/\\.zip$/i, '');\n if (appType === 'MICROSERVICE') {\n baseName = this.removeVersionFromName(baseName);\n }\n return baseName;\n }\n\n private removeAppProperties(app: IApplication): IApplication {\n const tempApp = cloneDeep(app);\n const propertiesToRemove = ['id', 'owner', 'activeVersionId', 'self', 'type'];\n\n propertiesToRemove.forEach(prop => delete tempApp[prop]);\n return tempApp;\n }\n\n private async getUploadOverrides(\n archive: File,\n app: IApplication\n ): Promise<IUploadParamsOverride> {\n const { version } = await this.getCumulocityJson$(archive).toPromise();\n const isInitialPackage = app.applicationVersions?.length === 0;\n return {\n listUrl: 'versions',\n headers: {\n Accept: 'application/vnd.com.nsn.cumulocity.applicationVersion+json;charset=UTF-8;ver=0.9'\n },\n bodyFileProperty: 'applicationBinary',\n requestBody: {\n applicationVersion: { version, ...(isInitialPackage && { tags: ['latest'] }) }\n }\n };\n }\n\n private removeVersionFromName(name: string) {\n const versionRegExp = /-\\d+\\.\\d+\\.\\d+(\\.\\d+)?(-\\d+)?(.*)$/;\n return name.replace(versionRegExp, '');\n }\n\n private isNameLengthExceeded(name, appType) {\n return name.length > MICROSERVICE_NAME_MAX_LENGTH && appType === ApplicationType.MICROSERVICE;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ApplicationAvailability, ApplicationService, IApplication } from '@c8y/client';\nimport { TranslateService } from '@ngx-translate/core';\nimport {\n AlertService,\n AppStateService,\n GainsightService,\n ModalService,\n gettext\n} from '@c8y/ngx-components';\nimport { PRODUCT_EXPERIENCE_ECOSYSTEM } from './ecosystem.model';\n\n@Injectable({ providedIn: 'root' })\nexport class PackageAvailabilityService {\n CURRENT_LOCATION = location.href;\n availabilities = [\n { label: gettext('Private`package availability`'), value: ApplicationAvailability.PRIVATE },\n { label: gettext('Market`package availability`'), value: ApplicationAvailability.MARKET },\n { label: gettext('Shared`package availability`'), value: ApplicationAvailability.SHARED }\n ];\n\n constructor(\n private appState: AppStateService,\n private alert: AlertService,\n private modal: ModalService,\n private application: ApplicationService,\n private gainsightService: GainsightService,\n private translateService: TranslateService\n ) {}\n\n async askIfAvailabilityShouldBeSetTo(\n applicationPackage: IApplication,\n availability: ApplicationAvailability\n ): Promise<IApplication> {\n // availability does not matter for tenant that do not have or can create subtenants\n if (!this.appState.currentTenant.value?.allowCreateTenants) {\n return applicationPackage;\n }\n try {\n await this.openAvailabilityModal(availability);\n // user confirmed changing availability\n return await this.setAvailability(applicationPackage, availability);\n } catch {\n // user canceled changing availability\n return applicationPackage;\n }\n }\n\n async setAvailability(\n applicationPackage: IApplication,\n availability: ApplicationAvailability\n ): Promise<IApplication> {\n try {\n const { data: app } = await this.application.updateApplicationAvailability(\n applicationPackage,\n availability\n );\n this.alert.success(gettext('Updated package availability.'));\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.AVAILABILITY,\n {\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.AVAILABILITY_CHANGE,\n result: availability.toString().toLocaleLowerCase(),\n url: this.CURRENT_LOCATION\n }\n );\n return app;\n } catch (e) {\n this.alert.warning(gettext('Failed to set package availability.'));\n this.alert.addServerFailure(e);\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.AVAILABILITY,\n {\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.AVAILABILITY_CHANGE,\n result: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.RESULTS.SERVER_FAILURE,\n url: this.CURRENT_LOCATION\n }\n );\n return applicationPackage;\n }\n }\n\n private getConfirmationBody(availability: ApplicationAvailability): string {\n switch (availability) {\n case ApplicationAvailability.SHARED:\n return gettext(\n 'Do you want to set the package availability to \"Shared\"? This will make the package available to all subtenants without explicitly subscribing the package.'\n );\n case ApplicationAvailability.MARKET:\n return gettext(\n 'Do you want to set the package availability to \"Market\"? This will make the package available to your own tenant and needs to be subscribed to subtenants individually.'\n );\n case ApplicationAvailability.PRIVATE:\n return gettext(\n 'Do you want to set the package availability to \"Private\"? This will make the package only available to your own tenant.'\n );\n default:\n return '';\n }\n }\n\n private async openAvailabilityModal(availability: ApplicationAvailability) {\n const body = this.getConfirmationBody(availability);\n const availabilityLabel = this.availabilities.find(obj => obj.value === availability).label;\n\n await this.modal.confirm(gettext('Package availability'), body, 'info', {\n ok: this.translateService.instant(gettext('Set to \"{{ packageAvailability }}\"'), {\n packageAvailability: this.translateService.instant(availabilityLabel)\n }),\n cancel: gettext('Cancel')\n });\n }\n}\n","import { Component, Input, ViewChild } from '@angular/core';\nimport { ApplicationService, IApplication, ApplicationAvailability } from '@c8y/client';\nimport { AlertService, DropAreaComponent, WizardComponent, gettext } from '@c8y/ngx-components';\nimport { BehaviorSubject } from 'rxjs';\nimport { EcosystemService } from './ecosystem.service';\nimport { ERROR_MESSAGES } from './ecosystem.constants';\nimport { TranslateService } from '@ngx-translate/core';\nimport { PackageAvailabilityService } from './package-availability.service';\nimport { SupportedIconsSuggestions } from '@c8y/ngx-components/icon-selector/icons';\n\n@Component({\n selector: 'c8y-add-application',\n templateUrl: './add-application.component.html'\n})\nexport class AddApplicationComponent {\n @Input() headerText: string;\n @Input() headerIcon: SupportedIconsSuggestions;\n @Input() successText: string;\n @Input() createApplicationHandler: any;\n @Input() uploadApplicationHandler: any;\n @Input() canGoBack = false;\n @Input() applicationType: 'application' | 'package' = 'application';\n\n @ViewChild(DropAreaComponent) dropAreaComponent;\n\n isLoading: boolean;\n isAppCreated: boolean;\n createdApp: IApplication;\n canOpenInBrowser = false;\n errorMessage: string;\n selectedAvailability = ApplicationAvailability.PRIVATE;\n availabilityHelpPopoverText = gettext(`\n <p class=\"m-b-8\"><b>Shared</b> availability will make the package available to all subtenants without explicitly subscribing the package.</p>\n <p class=\"m-b-8\"><b>Market</b> availability will make the package available to your own tenant and needs to be subscribed to subtenants individually.</p>\n <p class=\"m-b-8\"><b>Private</b> availability will make the package only available to your own tenant.</p>\n `);\n private uploadCanceled = false;\n\n constructor(\n private ecosystemService: EcosystemService,\n private alertService: AlertService,\n private applicationService: ApplicationService,\n private wizardComponent: WizardComponent,\n private translateService: TranslateService,\n private packageAvailability: PackageAvailabilityService\n ) {}\n\n get progress(): BehaviorSubject<number> {\n return this.ecosystemService.progress;\n }\n\n onFileDroppedEvent(event) {\n if (event && event.length > 0) {\n const file = event[0].file;\n this.onFile(file);\n }\n }\n\n async onFile(file: File) {\n this.isLoading = true;\n this.errorMessage = null;\n this.progress.next(0);\n\n try {\n this.createdApp = await this.createApplicationHandler(file);\n if (this.applicationType === 'package') {\n this.createdApp = await this.packageAvailability.setAvailability(\n this.createdApp,\n this.selectedAvailability\n );\n }\n await this.uploadApplicationHandler(file, this.createdApp);\n this.canOpenInBrowser = this.ecosystemService.canOpenAppInBrowser(this.createdApp);\n this.isAppCreated = true;\n } catch (ex) {\n this.ecosystemService.cancelAppCreation(this.createdApp);\n this.createdApp = null;\n this.dropAreaComponent.onDelete();\n // prepare translation of static message if it exists\n const staticErrorMessage =\n ERROR_MESSAGES[ex.message] && this.translateService.instant(ERROR_MESSAGES[ex.message]);\n // if there is no static message, use dynamic one from the exception\n this.errorMessage = staticErrorMessage ?? ex.message;\n if (!this.errorMessage && !this.uploadCanceled) {\n this.alertService.addServerFailure(ex);\n }\n }\n this.progress.next(100);\n this.isLoading = false;\n }\n\n getHref(app: IApplication): string {\n return this.applicationService.getHref(app);\n }\n\n cancel() {\n this.cancelFileUpload();\n this.wizardComponent.close();\n }\n\n done() {\n this.wizardComponent.close();\n }\n\n back() {\n this.wizardComponent.reset();\n }\n\n private cancelFileUpload() {\n this.uploadCanceled = true;\n this.ecosystemService.cancelAppCreation(this.createdApp);\n this.createdApp = null;\n }\n}\n","<c8y-wizard-header>\n <i [c8yIcon]=\"headerIcon\"></i>\n <h4 id=\"modal-title\">{{ headerText | translate }}</h4>\n</c8y-wizard-header>\n\n<c8y-wizard-body>\n <p class=\"p-16 text-center text-medium separator-bottom sticky-top bg-component\">\n {{ 'Upload a *.zip file' | translate }}\n </p>\n <c8y-form-group\n class=\"m-t-16 m-l-auto m-r-auto\"\n style=\"max-width: 265px\"\n id=\"modal-body\"\n *ngIf=\"!isAppCreated; else appCreated\"\n [hasError]=\"!!errorMessage\"\n >\n <c8y-drop-area\n class=\"drop-area\"\n (dropped)=\"onFileDroppedEvent($event)\"\n [accept]=\"'.zip'\"\n [loading]=\"isLoading\"\n [maxAllowedFiles]=\"1\"\n [progress]=\"progress | async\"\n ></c8y-drop-area>\n <c8y-messages>\n <c8y-message *ngIf=\"errorMessage\">\n {{ errorMessage | translate }}\n </c8y-message>\n </c8y-messages>\n </c8y-form-group>\n <div class=\"card-block\" *ngIf=\"applicationType === 'package'\">\n <c8y-form-group>\n <label\n class=\"m-r-8 d-inline-block\"\n id=\"availabilitySelectorLabel\"\n for=\"availabilitySelector\"\n >\n {{ 'Select extension availability' | translate }}\n </label>\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"availabilityHelpPopover\"\n placement=\"top\"\n triggers=\"focus\"\n type=\"button\"\n ></button>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"availabilitySelector\"\n name=\"availabilitySelector\"\n [(ngModel)]=\"selectedAvailability\"\n >\n <option\n *ngFor=\"let availability of packageAvailability.availabilities\"\n [ngValue]=\"availability.value\"\n >\n {{ availability.label | translate }}\n </option>\n </select>\n </div>\n </c8y-form-group>\n </div>\n <ng-template #appCreated>\n <div\n class=\"d-flex a-i-center j-c-center\"\n style=\"min-height: 285px\"\n >\n <c8y-operation-result\n class=\"lead\"\n type=\"success\"\n text=\"{{ successText | translate }}\"\n [vertical]=\"true\"\n [size]=\"84\"\n ></c8y-operation-result>\n </div>\n </ng-template>\n <ng-template #availabilityHelpPopover>\n <div [innerHtml]=\"availabilityHelpPopoverText | translate\"></div>\n </ng-template>\n</c8y-wizard-body>\n\n<c8y-wizard-footer>\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Back' | translate }}\"\n type=\"button\"\n (click)=\"back()\"\n *ngIf=\"!isAppCreated && canGoBack\"\n translate\n >\n Back\n </button>\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n (click)=\"cancel()\"\n *ngIf=\"!isAppCreated\"\n translate\n >\n Cancel\n </button>\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Done' | translate }}\"\n type=\"button\"\n (click)=\"done()\"\n *ngIf=\"isAppCreated\"\n translate\n >\n Done\n </button>\n <a\n class=\"btn btn-primary\"\n title=\"{{ 'Open' | translate }}\"\n target=\"_blank\"\n (click)=\"$event.stopPropagation()\"\n *ngIf=\"isAppCreated && canOpenInBrowser\"\n [href]=\"getHref(createdApp)\"\n rel=\"noopener noreferrer\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"external-link\"\n ></i>\n {{ 'Open' | translate }}\n </a>\n</c8y-wizard-footer>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { PackageType } from '@c8y/ngx-components';\nimport { PACKAGE_TYPE_LABELS } from './ecosystem.constants';\n\n@Pipe({ name: 'translatePackageLabel' })\nexport class TranslatePackageLabelPipe implements PipeTransform {\n constructor(private translate: TranslateService) {}\n\n transform(\n rawPackageLabel: PackageType.OFFICIAL | PackageType.COMMUNITY | PackageType.ARCHIVED | string\n ): string {\n const isOneOfTheKnownOnes = !!PACKAGE_TYPE_LABELS[rawPackageLabel?.toUpperCase()];\n if (isOneOfTheKnownOnes) {\n return this.translate.instant(PACKAGE_TYPE_LABELS[rawPackageLabel?.toUpperCase()].label);\n }\n return rawPackageLabel;\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { ApplicationService, IApplication, IApplicationVersion } from '@c8y/client';\nimport {\n AlertService,\n GainsightService,\n gettext,\n PackageType,\n PluginsService,\n Wizard,\n WizardComponent,\n WizardConfig,\n WizardModalService\n} from '@c8y/ngx-components';\nimport { ModalOptions } from 'ngx-bootstrap/modal';\nimport { BehaviorSubject } from 'rxjs';\nimport { EcosystemService } from './ecosystem.service';\nimport { PRODUCT_EXPERIENCE_ECOSYSTEM } from './ecosystem.model';\nimport { DuplicateApplicationComponent } from './duplicate-application/duplicate-application.component';\nimport { APP_STATE, ApplicationState, PACKAGE_TYPE_LABELS } from './ecosystem.constants';\n\n@Component({\n selector: 'c8y-application-card',\n templateUrl: './application-card.component.html'\n})\nexport class ApplicationCardComponent implements OnInit {\n CURRENT_LOCATION = location.href;\n\n @Input() app: IApplication;\n @Input() canEdit = true;\n @Output() onAppDeleted: EventEmitter<void> = new EventEmitter();\n @Output() onAppCloned: EventEmitter<void> = new EventEmitter();\n appState: ApplicationState;\n packageContentState: ApplicationState;\n packageType: PackageType;\n canOpenInBrowser: boolean;\n disableOpenInBrowser: boolean;\n canDelete: boolean;\n isPackage: boolean;\n isPlugin: boolean;\n isFeature: boolean;\n isExternal: boolean;\n isMicroservice: boolean;\n canClone: boolean;\n isUnpacked: boolean;\n shouldUpgradePackage: boolean;\n blueprintApplicationVersion: IApplicationVersion[];\n latestApplicationVersion: IApplicationVersion;\n isShowVersion: boolean;\n isOwnedByManagementTenant: boolean;\n get openButtonTitle() {\n return !this.disableOpenInBrowser\n ? gettext('Open')\n : gettext('This application is overridden.');\n }\n\n readonly packageTypeLabels = PACKAGE_TYPE_LABELS;\n readonly PACKAGE_TYPE = PackageType;\n readonly UNPACKED_LABEL = APP_STATE.UNPACKED.label;\n readonly CANNOT_DELETE_HINT = gettext(\n `Subscribed or current applications can't be deleted. Delete the application on the parent tenant or unsubscribe it from the current.`\n );\n readonly PACKAGE_CONTENT_UNDETERMINED_LABEL = gettext(\n 'Package contents could not be determined.'\n );\n\n constructor(\n private applicationService: ApplicationService,\n private ecosystemService: EcosystemService,\n private alertService: AlertService,\n private router: Router,\n private wizardModalService: WizardModalService,\n private alert: AlertService,\n private pluginService: PluginsService,\n private gainsightService: GainsightService\n ) {}\n\n async ngOnInit() {\n this.appState = this.ecosystemService.getAppState(this.app);\n this.canOpenInBrowser = this.ecosystemService.canOpenAppInBrowser(this.app);\n this.packageType = this.pluginService.getPackageType(this.app);\n this.disableOpenInBrowser =\n this.canOpenInBrowser && (await this.ecosystemService.isOverwrittenByCustomApp(this.app));\n this.canDelete = await this.ecosystemService.canDeleteApp(this.app);\n this.isPackage = this.ecosystemService.isPackage(this.app);\n this.packageContentState = this.ecosystemService.getPackageContentState(this.app);\n this.isPlugin = this.ecosystemService.isPlugin(this.app);\n this.isFeature = this.ecosystemService.isFeature(this.app);\n this.isMicroservice = this.ecosystemService.isMicroservice(this.app);\n this.isExternal = this.ecosystemService.isExternal(this.app);\n this.canClone = !this.isMicroservice && !this.isPlugin;\n this.isUnpacked = this.ecosystemService.isUnpacked(this.app);\n this.isShowVersion = this.shouldShowVersion();\n await this.applicationUpdateCheck();\n }\n\n shouldShowVersion() {\n return !!this.app.manifest?.version;\n }\n\n detail() {\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.APPLICATION_CARD,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.APPLICATION_CARD,\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.EDIT,\n url: this.CURRENT_LOCATION\n }\n );\n\n if (this.isMicroservice) {\n this.router.navigateByUrl(`/ecosystem/microservice/microservices/${this.app.id}`);\n return;\n }\n\n if (this.isPackage) {\n this.router.navigateByUrl(`/ecosystem/extension/extensions/${this.app.id}`);\n return;\n }\n\n if (this.isFeature) {\n this.router.navigateByUrl(`/ecosystem/application/features/${this.app.id}`);\n return;\n }\n\n this.router.navigateByUrl(`/ecosystem/application/applications/${this.app.id}`);\n }\n\n openApp() {\n this.ecosystemService.openApp(this.app);\n }\n\n async delete() {\n try {\n await this.ecosystemService.deleteApp(this.app);\n this.onAppDeleted.emit();\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.APPLICATION_CARD,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.APPLICATION_CARD,\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.DELETE,\n url: this.CURRENT_LOCATION\n }\n );\n } catch (ex) {\n if (ex) {\n this.alertService.addServerFailure(ex);\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.APPLICATION_CARD,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.APPLICATION_CARD,\n result: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.RESULTS.SERVER_FAILURE,\n url: this.CURRENT_LOCATION\n }\n );\n }\n }\n }\n\n async clone() {\n const wizardConfig: WizardConfig = {\n headerText: 'Add Application',\n headerIcon: 'c8y-atom'\n };\n\n const initialState: Wizard<DuplicateApplicationComponent> = {\n wizardConfig,\n componentInitialState: {\n selectedApp: new BehaviorSubject(this.app)\n },\n id: 'duplicateApplication'\n };\n\n const modalOptions: ModalOptions<WizardComponent> = { initialState };\n\n const modalRef = this.wizardModalService.show(modalOptions);\n modalRef.content.onClose.subscribe(() => {\n this.onAppCloned.next();\n });\n\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.APPLICATION_CARD,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.APPLICATION_CARD,\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.CLONE,\n url: this.CURRENT_LOCATION\n }\n );\n }\n\n private async applicationUpdateCheck(): Promise<void> {\n if (this.app.manifest?.source) {\n try {\n this.blueprintApplicationVersion = (\n await this.applicationService.listVersions(this.app.manifest?.source)\n ).data;\n\n this.latestApplicationVersion = this.ecosystemService.getApplicationVersionObjectByTag(\n this.blueprintApplicationVersion,\n 'latest'\n );\n this.shouldUpgradePackage = this.ecosystemService.shouldUpgradePackage(\n this.app.manifest?.version,\n this.latestApplicationVersion\n );\n } catch (error) {\n if (!this.blueprintApplicationVersion) {\n return;\n }\n this.alert.addServerFailure(error);\n }\n }\n }\n}\n","<div\n class=\"card pointer card--d-col notFeature\"\n data-cy=\"application-card--extensions-list\"\n *ngIf=\"!isFeature\"\n>\n <div\n class=\"card-block text-center card-column-40\"\n data-cy=\"application-card--package-name\"\n (click)=\"detail()\"\n >\n <button\n class=\"card__ribbon btn-clean\"\n [attr.aria-label]=\"\n (app.label || app.manifest?.label | translatePackageLabel) +\n ': ' +\n (packageTypeLabels[packageType].tooltip | translate)\n \"\n tooltip=\"{{ packageTypeLabels[packageType].tooltip | translate }}\"\n placement=\"right\"\n type=\"button\"\n *ngIf=\"packageType !== PACKAGE_TYPE.CUSTOM\"\n [delay]=\"500\"\n >\n <span\n [ngClass]=\"{\n 'bg-info': packageType === PACKAGE_TYPE.COMMUNITY,\n 'bg-primary': packageType === PACKAGE_TYPE.OFFICIAL,\n 'bg-warning': packageType === PACKAGE_TYPE.ARCHIVED\n }\"\n >\n {{ app.label || app.manifest?.label | translatePackageLabel }}\n </span>\n </button>\n <div class=\"card-appicon\">\n <c8y-app-icon\n *ngIf=\"!isPackage && !isFeature && !isMicroservice && !isExternal\"\n [app]=\"app\"\n [contextPath]=\"app.contextPath\"\n [name]=\"app.name\"\n ></c8y-app-icon>\n <i\n c8yIcon=\"big-parcel\"\n *ngIf=\"isPackage\"\n ></i>\n <i\n c8yIcon=\"microchip\"\n *ngIf=\"isMicroservice\"\n ></i>\n <i\n c8yIcon=\"globe1\"\n *ngIf=\"isExternal\"\n ></i>\n </div>\n <div style=\"line-height: 1.3\">\n <p class=\"e2e-appCardName text-medium text-break-word\">\n {{ app | humanizeAppName | async }}\n </p>\n <ng-container *ngIf=\"isShowVersion\">\n <p class=\"small text-muted\">\n <em>{{ app.manifest.version }}</em>\n <button\n class=\"btn-clean m-l-4\"\n [attr.aria-label]=\"'Update available' | translate\"\n [tooltip]=\"'Update available' | translate\"\n *ngIf=\"shouldUpgradePackage && isUnpacked\"\n >\n <i\n class=\"text-warning icon-16\"\n c8yIcon=\"exclamation-triangle\"\n ></i>\n </button>\n </p>\n </ng-container>\n <p\n class=\"small text-break-word\"\n *ngIf=\"app.manifest?.author\"\n >\n {{ app.manifest.author }}\n </p>\n </div>\n </div>\n <div\n class=\"card-block p-0 no-min-height card--d-col card-column-80 flex-grow\"\n (click)=\"detail()\"\n >\n <div class=\"card-block no-min-height p-t-0 p-b-0 card-column-80\">\n <div class=\"text-center-grid\">\n <div class=\"p-b-8 card-hidden-grid\"></div>\n <p\n class=\"small l-h-tight p-b-8 p-l-0 p-r-0 text-break-word\"\n *ngIf=\"app.description || app.manifest?.description\"\n >\n {{ app.description || app.manifest?.description | translate }}\n </p>\n <p\n class=\"small l-h-tight p-b-8 p-l-0 p-r-0\"\n *ngIf=\"!app.description && !app.manifest?.description\"\n >\n <em class=\"text-muted\">{{ 'No description available.' | translate }}</em>\n </p>\n </div>\n </div>\n <div\n class=\"card-block no-min-height p-t-0 p-b-0 d-flex card-column-20 text-center-grid flex-wrap gap-8\"\n >\n <button\n class=\"btn-clean\"\n [attr.aria-label]=\"\n ((isUnpacked ? UNPACKED_LABEL : appState?.label) | translate) +\n ': ' +\n (appState?.tooltip | translate)\n \"\n [tooltip]=\"appState?.tooltip | translate\"\n placement=\"top\"\n [delay]=\"500\"\n >\n <span\n class=\"label\"\n [ngClass]=\"appState?.class\"\n >\n {{ appState?.label | translate }}\n </span>\n </button>\n <button\n class=\"btn-clean\"\n [attr.aria-label]=\"\n (packageContentState?.label | translate) +\n ': ' +\n (packageContentState?.tooltip\n ? packageContentState?.tooltip\n : PACKAGE_CONTENT_UNDETERMINED_LABEL) | translate\n \"\n [tooltip]=\"\n (packageContentState?.tooltip\n ? packageContentState?.tooltip\n : PACKAGE_CONTENT_UNDETERMINED_LABEL\n ) | translate\n \"\n placement=\"top\"\n *ngIf=\"isPackage\"\n >\n <span\n class=\"label\"\n [ngClass]=\"packageContentState?.class ? packageContentState?.class : 'label-danger'\"\n >\n {{\n packageContentState?.label || packageTypeLabels[PACKAGE_TYPE.UNKNOWN].label | translate\n }}\n </span>\n </button>\n </div>\n <div class=\"card-footer no-min-height p-t-0 p-b-0 card-column-20 text-center-grid\">\n <div class=\"p-b-16 card-hidden-list\"></div>\n <button\n class=\"btn btn-sm btn-default\"\n [title]=\"openButtonTitle | translate\"\n type=\"button\"\n (click)=\"openApp(); $event.stopPropagation()\"\n *ngIf=\"canOpenInBrowser\"\n [disabled]=\"disableOpenInBrowser\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"external-link\"\n ></i>\n {{ 'Open' | translate }}\n </button>\n <div class=\"p-b-32 card-hidden-list\"></div>\n </div>\n </div>\n <div class=\"p-r-40 card-hidden-grid\"></div>\n <div\n class=\"card-actions m-t-0\"\n *ngIf=\"canEdit || canOpenInBrowser || canDelete\"\n >\n <div\n class=\"dropdown\"\n #appCardDropdown=\"bs-dropdown\"\n dropdown\n [cdkTrapFocus]=\"appCardDropdown.isOpen\"\n >\n <button\n class=\"dropdown-toggle c8y-dropdown\"\n title=\"{{ 'Settings' | translate }}\"\n data-cy=\"application-card--settings-button\"\n type=\"button\"\n dropdownToggle\n >\n <i c8yIcon=\"ellipsis-v\"></i>\n </button>\n <ul\n class=\"dropdown-menu dropdown-menu-right\"\n *dropdownMenu\n >\n <li *ngIf=\"canEdit\">\n <button\n title=\"{{ 'Edit' | translate }}\"\n data-cy=\"application-card--edit-button\"\n (click)=\"detail()\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"pencil\"\n ></i>\n {{ 'Edit' | translate }}\n </button>\n </li>\n <ng-container *c8yIfAllowed=\"['ROLE_APPLICATION_MANAGEMENT_ADMIN']\">\n <li>\n <button\n [title]=\"canDelete ? ('Delete' | translate) : (CANNOT_DELETE_HINT | translate)\"\n type=\"button\"\n data-cy=\"application-card--delete-button\"\n [disabled]=\"!canDelete\"\n (click)=\"delete()\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"delete\"\n ></i>\n {{ 'Delete' | translate }}\n </button>\n </li>\n <li *ngIf=\"canClone\">\n <button\n [title]=\"'Clone`package,verb`' | translate\"\n type=\"button\"\n *ngIf=\"isPackage\"\n (click)=\"clone()\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"copy\"\n ></i>\n {{ 'Clone`package,verb`' | translate }}\n </button>\n <button\n [title]=\"'Clone`application,verb`' | translate\"\n type=\"button\"\n *ngIf=\"!isPackage\"\n (click)=\"clone()\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"copy\"\n ></i>\n {{ 'Clone`application,verb`' | translate }}\n </button>\n </li>\n </ng-container>\n </ul>\n </div>\n </div>\n</div>\n\n<button\n class=\"card pointer card--d-col\"\n type=\"button\"\n (click)=\"detail()\"\n *ngIf=\"isFeature\"\n>\n <div class=\"card-block text-center card-column-40\">\n <div class=\"card-appicon\">\n <c8y-app-icon\n *ngIf=\"!isPackage && !isFeature && !isMicroservice && !isExternal\"\n [app]=\"app\"\n [contextPath]=\"app.contextPath\"\n [name]=\"app.name\"\n ></c8y-app-icon>\n <i c8yIcon=\"tab\"></i>\n </div>\n <div>\n <p\n class=\"e2e-appCardName text-medium\"\n title=\"{{ app | humanizeAppName | async }}\"\n >\n {{ app | humanizeAppName | async }}\n </p>\n <ng-container *ngIf=\"isShowVersion\">\n <p class=\"small text-muted\">\n <em>{{ app.manifest.version }}</em>\n <i\n class=\"text-warning m-l-4\"\n c8yIcon=\"exclamation-triangle\"\n [tooltip]=\"'Update available' | translate\"\n *ngIf=\"shouldUpgradePackage && isUnpacked\"\n ></i>\n </p>\n </ng-container>\n </div>\n </div>\n <div class=\"card-block p-0 no-min-height card--d-col card-column-80 flex-grow\">\n <div class=\"card-block no-min-height p-t-0 p-b-0 card-column-80\">\n <div\n class=\"text-center-grid\"\n *ngIf=\"app.description || app.manifest?.description\"\n >\n <div class=\"p-b-8 card-hidden-grid\"></div>\n <p class=\"small l-h-tight p-b-8 p-l-0 p-r-0\">\n {{ app.description || app.manifest?.description | translate }}\n </p>\n </div>\n </div>\n <div class=\"card-block no-min-height p-t-0 p-b-0 card-column-20 text-center-grid\">\n <span\n class=\"label\"\n [ngClass]=\"appState.class\"\n >\n {{ appState.label | translate }}\n </span>\n </div>\n <div\n class=\"card-block no-min-height p-t-0 p-b-0 card-column-20 text-center-grid\"\n *ngIf=\"isPackage\"\n >\n <span\n class=\"label\"\n [ngClass]=\"packageContentState.class\"\n >\n {{ packageContentState.label | translate }}\n </span>\n </div>\n <div class=\"p-b-32 card-hidden-list\"></div>\n </div>\n</button>\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { IApplication } from '@c8y/client';\n\n@Component({\n selector: 'c8y-application-properties-form',\n templateUrl: './application-properties-form.component.html'\n})\nexport class ApplicationPropertiesFormComponent implements OnChanges {\n formGroup: FormGroup;\n @Input() application: IApplication;\n @Input() disabled = false;\n\n constructor(private formBuilder: FormBuilder) {\n this.initForm();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (\n changes.application &&\n changes.application.currentValue !== changes.application.previousValue\n ) {\n this.setForm(this.application);\n }\n if (changes.disabled && changes.disabled.currentValue !== changes.disabled.previousValue) {\n changes.disabled.currentValue ? this.formGroup.disable() : this.formGroup.enable();\n }\n }\n\n private initForm() {\n this.formGroup = this.formBuilder.group({\n name: [Validators.required, Validators.maxLength(120)],\n key: [Validators.required, Validators.maxLength(120)],\n contextPath: [Validators.required, Validators.maxLength(120)],\n icon: [undefined, [Validators.minLength(1)]]\n });\n }\n\n private setForm(applicationConfig: IApplication) {\n this.formGroup.patchValue({ ...applicationConfig });\n }\n}\n","<form\n class=\"c8y-wizard-form text-left\"\n name=\"appDeployForm\"\n (ngSubmit)=\"(formGroup.valid)\"\n [formGroup]=\"formGroup\"\n novalidate\n>\n <c8y-form-group>\n <label\n for=\"name\"\n translate\n >\n Name\n </label>\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g. My application' | translate }}\"\n name=\"name\"\n type=\"text\"\n required\n formControlName=\"name\"\n />\n </c8y-form-group>\n <c8y-form-group>\n <label\n for=\"key\"\n translate\n >\n Application key\n </label>\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g. my-application-key' | translate }}\"\n name=\"key\"\n type=\"text\"\n required\n formControlName=\"key\"\n />\n </c8y-form-group>\n <c8y-form-group>\n <label\n for=\"contextPath\"\n translate\n >\n Path\n </label>\n <div class=\"input-group\">\n <span class=\"input-group-addon\">/apps/</span>\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g. my-application' | translate }}\"\n name=\"contextPath\"\n type=\"text\"\n required\n formControlName=\"contextPath\"\n />\n </div>\n </c8y-form-group>\n <c8y-form-group>\n <label>{{ 'Select icon' | translate }}</label>\n <c8y-icon-selector-wrapper\n name=\"icon\"\n formControlName=\"icon\"\n ></c8y-icon-selector-wrapper>\n </c8y-form-group>\n</form>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { IApplication } from '@c8y/client';\nimport { C8yStepper, WizardComponent } from '@c8y/ngx-components';\nimport { ApplicationState } from '../../ecosystem.constants';\nimport { EcosystemService } from '../../ecosystem.service';\n\n@Component({\n selector: 'c8y-duplicate-application-list',\n templateUrl: './duplicate-application-list.component.html'\n})\nexport class DuplicateApplicationListComponent {\n @Input() stepper: C8yStepper;\n @Input() existingApps: IApplication[];\n @Output() onSelectedApp = new EventEmitter<IApplication>();\n appState: ApplicationState;\n\n constructor(\n public ecosystemService: EcosystemService,\n private wizardComponent: WizardComponent\n ) {}\n\n select(selectedApp: IApplication) {\n this.onSelectedApp.emit(selectedApp);\n this.stepper.next();\n }\n\n cancel() {\n this.wizardComponent.close();\n }\n\n back() {\n this.wizardComponent.reset();\n }\n}\n","<div class=\"c8y-wizard-list-nav\">\n <button\n (click)=\"select(app)\"\n *ngFor=\"let app of existingApps\"\n class=\"list-group-item text-truncate p-t-8 p-b-8 bg-level-0\"\n type=\"button\"\n >\n <c8y-app-icon\n [app]=\"app\"\n [contextPath]=\"app.contextPath\"\n [name]=\"app.name\"\n class=\"list-group-icon\"\n ></c8y-app-icon>\n <span [innerText]=\"app | humanizeAppName | async\" class=\"pointer\"></span>\n <span [ngClass]=\"ecosystemService.getAppState(app).class\" class=\"label m-l-16\">\n {{ ecosystemService.getAppState(app).label | translate }}\n </span>\n </button>\n</div>\n<c8y-wizard-footer>\n <button (click)=\"back()\" class=\"btn btn-default\" title=\"{{ 'Back' | translate }}\" type=\"button\">\n {{ 'Back' | translate }}\n </button>\n <button\n (click)=\"cancel()\"\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n >\n {{ 'Cancel' | translate }}\n </button>\n</c8y-wizard-footer>\n","import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { ApplicationService, IApplication } from '@c8y/client';\nimport { C8yStepper, GainsightService } from '@c8y/ngx-components';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { distinctUntilKeyChanged, map, tap } from 'rxjs/operators';\nimport { APP_STATE } from '../../ecosystem.constants';\nimport { EcosystemService } from '../../ecosystem.service';\nimport { ApplicationPropertiesFormComponent } from '../../../shared/application-properties-form.component';\nimport { PRODUCT_EXPERIENCE_ECOSYSTEM } from '../../ecosystem.model';\n\n@Component({\n selector: 'c8y-duplicate-application-properties',\n templateUrl: './duplicate-application-properties.component.html'\n})\nexport class DuplicateApplicationPropertiesComponent {\n CURRENT_LOCATION = location.href;\n\n @Input() stepper: C8yStepper;\n @Input() existingApps: IApplication[];\n @Input() selectedApp: BehaviorSubject<IApplication>;\n @Input() isFirstStep = false;\n @Output() duplicatedApp = new EventEmitter<IApplication>();\n @ViewChild(ApplicationPropertiesFormComponent)\n applicationPropertiesForm: ApplicationPropertiesFormComponent;\n newAppConfig: IApplication;\n disableForm = false;\n isSubscribedApp$: Observable<boolean>;\n\n inProgress = false;\n\n constructor(\n private bsModalRef: BsModalRef,\n private ecosystemService: EcosystemService,\n private applicationService: ApplicationService,\n private gainsightService: GainsightService\n ) {}\n\n ngOnInit() {\n this.isSubscribedApp$ = this.selectedApp.pipe(\n distinctUntilKeyChanged('id'),\n map(app => (app ? this.ecosystemService.getAppState(app) === APP_STATE.SUBSCRIBED : true)),\n tap(isSubscribed => {\n this.disableForm = isSubscribed;\n this.getAppConfig();\n })\n );\n this.getAppConfig();\n }\n\n async duplicateApp() {\n const formGroupValue = this.applicationPropertiesForm.formGroup.getRawValue();\n this.inProgress = true;\n let { data: clonedApp } = await this.applicationService.clone(this.selectedApp.value);\n // TODO: remove once MTM-48474 has been merged\n clonedApp = this.ecosystemService.setAvailabilityToPrivateIfNotSetAlready(clonedApp);\n Object.assign(clonedApp, formGroupValue);\n if (formGroupValue.icon) {\n const icon = { class: formGroupValue.icon };\n clonedApp.config = { ...clonedApp.config, icon };\n if (clonedApp.manifest) {\n clonedApp.manifest.icon = icon;\n }\n }\n delete clonedApp.type;\n await this.updateApp(clonedApp);\n this.inProgress = false;\n\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.DUPLICATE_APPLICATION,\n {\n component:\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.DUPLICATE_APPLICATION_PROPERTIES,\n result: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.RESULTS.DUPLICATED,\n url: this.CURRENT_LOCATION\n }\n );\n }\n\n cancel() {\n this.bsModalRef.hide();\n\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.DUPLICATE_APPLICATION,\n {\n component:\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.DUPLICATE_APPLICATION_PROPERTIES,\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.CANCEL,\n url: this.CURRENT_LOCATION\n }\n );\n }\n\n back() {\n this.stepper.previous();\n }\n\n getAppConfig() {\n if (this.disableForm) {\n const { name, key, contextPath } = this.selectedApp.value;\n this.newAppConfig = { name, key, contextPath };\n } else {\n this.newAppConfig = this.ecosystemService.getUniqueAppConfig(\n this.selectedApp.value,\n this.existingApps\n );\n }\n }\n\n private async updateApp(clonedAppConfig: Partial<IApplication>) {\n try {\n const { data: app } = await this.ecosystemService.updateApp(clonedAppConfig, true);\n const manifest = await this.getAppManifest(app);\n if (manifest) {\n await this.updateManifest(app, manifest);\n }\n\n this.duplicatedApp.emit(app);\n this.stepper.next();\n } catch (err) {\n this.inProgress = false;\n }\n }\n\n private async updateManifest(app: IApplication, manifest: any) {\n const keysToUpdate: Array<keyof IApplication> = ['name', 'key', 'contextPath'];\n const someKeyDiffers = keysToUpdate.some(key => app[key] !== manifest[key]);\n if (someKeyDiffers) {\n keysToUpdate.forEach(key => {\n manifest[key] = app[key];\n });\n await this.applicationService.storeAppManifest(app, manifest);\n }\n }\n\n private async getAppManifest(app: IApplication) {\n if (!app?.contextPath) {\n return;\n }\n try {\n const manifest = await this.applicationService.getAppManifest(app);\n return manifest;\n } catch (ex) {\n return;\n }\n }\n}\n","<p\n class=\"p-16 text-center text-medium separator-bottom sticky-top bg-level-0 fit-w\"\n *ngIf=\"!inProgress\"\n>\n {{ 'Provide application details' | translate }}\n</p>\n\n<ng-container *ngIf=\"!inProgress\">\n <label class=\"c8y-switch\" *ngIf=\"isSubscribedApp$ | async\">\n <input type=\"checkbox\" [(ngModel)]=\"disableForm\" (change)=\"getAppConfig()\" />\n <span></span> {{ 'Overrule subscribed application' | translate }}\n </label>\n\n <c8y-application-properties-form\n [application]=\"newAppConfig\"\n class=\"d-block fit-w\"\n [disabled]=\"disableForm\"\n ></c8y-application-properties-form>\n</ng-container>\n<c8y-loading\n *ngIf=\"inProgress\"\n [message]=\"'Duplicating…' | translate\"\n layout=\"application\"\n class=\"text-center d-block\"\n></c8y-loading>\n\n<c8y-wizard-footer>\n <button\n *ngIf=\"!isFirstStep\"\n (click)=\"back()\"\n [disabled]=\"inProgress\"\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Back' | translate }}\"\n >\n {{ 'Back' | translate }}\n </button>\n <button (click)=\"cancel()\" class=\"btn btn-default\" title=\"{{ 'Cancel' | translate }}\">\n {{ 'Cancel' | translate }}\n </button>\n <button\n (click)=\"duplicateApp()\"\n [disabled]=\"inProgress\"\n class=\"btn btn-primary\"\n type=\"button\"\n title=\"{{ 'Duplicate' | translate }}\"\n >\n {{ 'Duplicate' | translate }}\n </button>\n</c8y-wizard-footer>\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { ApplicationService, IApplication } from '@c8y/client';\nimport { C8yStepper, WizardComponent } from '@c8y/ngx-components';\nimport { BehaviorSubject } from 'rxjs';\nimport { EcosystemService } from '../ecosystem.service';\n\n@Component({\n selector: 'c8y-duplicate-application',\n templateUrl: './duplicate-application.component.html'\n})\nexport class DuplicateApplicationComponent implements OnInit {\n @ViewChild(C8yStepper, { static: true })\n stepper: C8yStepper;\n duplicatedApp: IApplication;\n selectedApp: BehaviorSubject<IApplication> = new BehaviorSubject<IApplication>(null);\n existingApps: IApplication[] = [];\n directlyMoveToSecondStep = false;\n noBackButton = false;\n\n constructor(\n private ecosystemService: EcosystemService,\n private applicationService: ApplicationService,\n private wizardComponent: WizardComponent\n ) {}\n\n async ngOnInit() {\n this.existingApps = await this.ecosystemService.getWebApplications();\n if (this.selectedApp.value) {\n this.directlyMoveToSecondStep = true;\n }\n }\n\n onSelectedApp(app: IApplication) {\n this.selectedApp.next(app);\n }\n\n getHref(app: IApplication): string {\n return this.applicationService.getHref(app);\n }\n\n done() {\n this.wizardComponent.close();\n }\n}\n","<c8y-wizard-header>\n <i [c8yIcon]=\"'copy'\"></i>\n <h4\n id=\"modal-title\"\n translate\n >\n Duplicate application\n </h4>\n</c8y-wizard-header>\n\n<c8y-wizard-body id=\"modal-body\">\n <c8y-stepper\n [disableDefaultIcons]=\"{ edit: true, done: false }\"\n [customClasses]=\"['hidden']\"\n linear\n >\n <!-- 1st step -->\n <cdk-step *ngIf=\"!directlyMoveToSecondStep\">\n <p class=\"p-16 text-center text-medium separator-bottom sticky-top bg-level-0\">\n {{ 'Select application to duplicate' | translate }}\n </p>\n <c8y-duplicate-application-list\n class=\"d-block\"\n style=\"min-height: 257px\"\n (onSelectedApp)=\"onSelectedApp($event)\"\n *ngIf=\"stepper.selectedIndex === 0\"\n [existingApps]=\"existingApps\"\n [stepper]=\"stepper\"\n ></c8y-duplicate-application-list>\n </cdk-step>\n <!-- 2nd step -->\n <cdk-step>\n <c8y-duplicate-application-properties\n class=\"d-flex d-col j-c-center a-i-center\"\n style=\"min-height: 257px\"\n (duplicatedApp)=\"duplicatedApp = $event\"\n *ngIf=\"\n stepper.selectedIndex === 1 || (stepper.selectedIndex === 0 && directlyMoveToSecondStep)\n \"\n [existingApps]=\"existingApps\"\n [selectedApp]=\"selectedApp\"\n [stepper]=\"stepper\"\n [isFirstStep]=\"directlyMoveToSecondStep\"\n ></c8y-duplicate-application-properties>\n </cdk-step>\n <!-- Final step -->\n <cdk-step>\n <ng-container\n *ngIf=\"\n stepper.selectedIndex === 2 || (stepper.selectedIndex === 1 && directlyMoveToSecondStep)\n \"\n >\n <div\n class=\"d-flex a-i-center j-c-center\"\n style=\"min-height: 257px\"\n *ngIf=\"duplicatedApp; else duplicateAppFailed\"\n >\n <c8y-operation-result\n type=\"success\"\n text=\"{{ 'Application created' | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n ></c8y-operation-result>\n </div>\n <ng-template #duplicateAppFailed>\n <div\n class=\"d-flex a-i-center j-c-center\"\n style=\"min-height: 257px\"\n >\n <c8y-operation-result\n type=\"error\"\n text=\"{{ 'Application creation failed' | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n ></c8y-operation-result>\n </div>\n </ng-template>\n </ng-container>\n </cdk-step>\n </c8y-stepper>\n</c8y-wizard-body>\n\n<c8y-wizard-footer *ngIf=\"stepper.selectedIndex === 0 && noBackButton\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n (click)=\"done()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n</c8y-wizard-footer>\n\n<c8y-wizard-footer\n *ngIf=\"stepper.selectedIndex === 2 || (stepper.selectedIndex === 1 && directlyMoveToSecondStep)\"\n>\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Done' | translate }}\"\n type=\"button\"\n (click)=\"done()\"\n >\n {{ 'Done' | translate }}\n </button>\n <a\n class=\"btn btn-primary\"\n title=\"{{ 'Open' | translate }}\"\n target=\"_blank\"\n (click)=\"$event.stopPropagation()\"\n [href]=\"getHref(duplicatedApp)\"\n rel=\"noopener noreferrer\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"external-link\"\n ></i>\n {{ 'Open' | translate }}\n </a>\n</c8y-wizard-footer>\n","import { Component, forwardRef, OnChanges, Input, SimpleChanges } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ApplicationService, IApplicationVersion, IResultList } from '@c8y/client';\nimport { gettext, PluginsService } from '@c8y/ngx-components';\nimport { BehaviorSubject, Observable, combineLatest, merge } from 'rxjs';\nimport { filter, map, shareReplay, switchMap } from 'rxjs/operators';\n\n@Component({\n selector: 'c8y-package-version-select',\n templateUrl: './package-version-select.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => PackageVersionSelectComponent)\n }\n ]\n})\nexport class PackageVersionSelectComponent implements OnChanges, ControlValueAccessor {\n @Input() label = gettext('Use plugin version');\n @Input() packageContextPath: string;\n @Input() packageId: string | number;\n selectedVersion: IApplicationVersion;\n onInput$: BehaviorSubject<string> = new BehaviorSubject<string>('');\n versions$: Observable<IResultList<IApplicationVersion>>;\n isDisabled = false;\n private packageContextPath$ = new BehaviorSubject('');\n private packageId$ = new BehaviorSubject<string | number>('');\n private onChange: (version: IApplicationVersion) => void;\n private onTouched: () => void;\n\n constructor(\n private applicationService: ApplicationService,\n private pluginsService: PluginsService\n ) {\n const packageIdFromContextPath$ = this.packageContextPath$.pipe(\n filter(path => !!path),\n switchMap(path => this.getPackageIdForContextPath(path))\n );\n const packageId$ = merge(packageIdFromContextPath$, this.packageId$.pipe(filter(id => !!id)));\n const packageVersions$ = packageId$.pipe(\n switchMap(id => this.getPackageVersions(id)),\n shareReplay(1)\n );\n this.versions$ = combineLatest([packageVersions$, this.onInput$.asObservable()]).pipe(\n map(([resultList, filterStr]) => this.applyFilterToResultList(resultList, filterStr))\n );\n }\n\n writeValue(obj: any): void {\n this.selectedVersion = obj;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.isDisabled = isDisabled;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.packageContextPath) {\n this.packageContextPath$.next(this.packageContextPath);\n }\n\n if (changes.packageId) {\n this.packageId$.next(this.packageId);\n }\n }\n\n async getPackageVersions(packageId: string | number): Promise<IResultList<IApplicationVersion>> {\n return await this.applicationService.listVersions(packageId);\n }\n\n onVersionSelect(version: IApplicationVersion) {\n this.selectedVersion = version;\n if (this.onChange) {\n this.onChange(version);\n }\n if (this.onTouched) {\n this.onTouched();\n }\n }\n\n private async getPackageIdForContextPath(contextPath: string): Promise<string | number> {\n const { data: application } = await this.applicationService.getManifestOfContextPath(\n contextPath\n );\n const packageAppId = application.id;\n return packageAppId;\n }\n\n private setInitialValueForInput(versions: IApplicationVersion[]) {\n if (!this.selectedVersion && versions.length > 0) {\n const latest = versions.find(v => v.tags.includes('latest'));\n this.selectedVersion = latest || versions[0];\n if (this.onChange) {\n this.onChange(this.selectedVersion);\n }\n }\n }\n\n private filterAppVersions(\n appVersions: IApplicationVersion[],\n filterStr: string\n ): IApplicationVersion[] {\n return filterStr === ''\n ? appVersions\n : appVersions.filter(\n appVersion =>\n appVersion.version.includes(filterStr) ||\n appVersion.tags?.some(tag => tag.includes(filterStr))\n );\n }\n\n private applyFilterToResultList(\n resultList: IResultList<IApplicationVersion>,\n filterStr: string\n ): IResultList<IApplicationVersion> {\n const versionsFilteredByStr = this.filterAppVersions(resultList.data, filterStr);\n const sortedAppVersions = this.pluginsService.sortVersions(\n {\n list: versionsFilteredByStr,\n path: ['version']\n },\n 'desc'\n );\n\n this.setInitialValueForInput(sortedAppVersions);\n return { data: sortedAppVersions, res: resultList.res };\n }\n}\n","<label for=\"packageVersion\">{{ label | translate }}</label>\n<c8y-form-group>\n <c8y-typeahead\n [(ngModel)]=\"selectedVersion\"\n name=\"packageVersion\"\n (onSearch)=\"onInput$.next($event)\"\n placeholder=\"{{ 'Select below or start typing' | translate }}\"\n [displayProperty]=\"'version'\"\n [required]=\"true\"\n [disabled]=\"isDisabled\"\n [hideNew]=\"true\"\n [container]=\"'body'\"\n >\n <c8y-li\n *c8yFor=\"let appVersion of versions$; loadMore: 'auto'; notFound: notFoundTemplate\"\n (click)=\"onVersionSelect(appVersion)\"\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n [active]=\"selectedVersion === appVersion\"\n >\n <c8y-li-icon icon=\"big-parcel\"></c8y-li-icon>\n <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]=\"appVersion.version || '--'\"\n [pattern]=\"onInput$ | async\"\n ></c8y-highlight>\n <span>\n <span *ngFor=\"let tag of appVersion.tags\" class=\"label label-info m-l-4\">\n {{ tag }}\n </span>\n </span>\n </span>\n </c8y-li>\n <ng-template #notFoundTemplate>\n <c8y-li\n class=\"bg-gray-lighter p-8\"\n *ngIf=\"(onInput$ | async)?.length > 0 && (versions$ | async)?.data?.length === 0\"\n >\n <span translate>No match found.</span>\n </c8y-li>\n </ng-template>\n </c8y-typeahead>\n</c8y-form-group>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { IApplication, IApplicationBinary } from '@c8y/client';\nimport { AlertService, gettext } from '@c8y/ngx-components';\nimport { BehaviorSubject } from 'rxjs';\nimport { EcosystemService } from './ecosystem.service';\n\n@Component({\n selector: 'c8y-upload-archive',\n templateUrl: 'upload-archive.component.html'\n})\nexport class UploadArchiveComponent {\n @Input() application: IApplication;\n @Input() uploadNewVersion = false;\n @Input() preUploadCallback: () => Promise<any>;\n @Output() applicationChange: EventEmitter<IApplication> = new EventEmitter<IApplication>();\n @Output() refresh: EventEmitter<any> = new EventEmitter();\n\n archives: IApplicationBinary[] = [];\n toActivateVersionId: string;\n last: IApplicationBinary;\n isLoading: boolean;\n fileList: FileList;\n uploadInProgress = false;\n canReactivate = false;\n\n constructor(\n private ecosystemService: EcosystemService,\n private alertService: AlertService\n ) {}\n\n get uploadProgress(): BehaviorSubject<number> {\n return this.ecosystemService.progress;\n }\n\n async onFileDroppedEvent(event) {\n if (this.preUploadCallback) {\n try {\n await this.preUploadCallback();\n } catch (e) {\n // do nothing, i.e. when confirm modal cancels and throws undefined\n return;\n }\n }\n if (event && event.length > 0) {\n const file = event[0].file;\n this.onFile(file);\n }\n }\n\n private async onFile(file: File): Promise<void> {\n try {\n await this.ecosystemService.validateArchiveToAppCompatibility(file, this.application);\n const isCustomMicroservice = this.ecosystemService.isCustomMicroservice(this.application);\n const isPackage = this.ecosystemService.isPackage(this.application);\n this.archives = isCustomMicroservice\n ? []\n : await this.ecosystemService.listArchives(this.application.id);\n this.archives.sort((a, b) => {\n return (new Date(b.created) as any) - (new Date(a.created) as any);\n });\n this.uploadInProgress = true;\n this.uploadProgress.next(0);\n if (this.archives.length === 6 && !isCustomMicroservice && !isPackage) {\n await this.ecosystemService.removeOldestArchive(this.application, this.archives);\n }\n const app = await this.ecosystemService.uploadArchiveToApp(\n file,\n this.application,\n this.uploadNewVersion\n );\n this.applicationChange.emit(app);\n this.uploadProgress.next(100);\n this.uploadInProgress = false;\n this.refresh.emit();\n if (this.uploadNewVersion) {\n return;\n }\n this.alertService.success(gettext('Archive uploaded and activated.'));\n } catch (ex) {\n this.uploadInProgress = false;\n if (ex === 'cancelled') {\n return;\n }\n this.ecosystemService.alertError(ex);\n }\n }\n}\n","<c8y-drop-area\n (dropped)=\"onFileDroppedEvent($event)\"\n [accept]=\"'.zip'\"\n [loading]=\"uploadInProgress\"\n [maxAllowedFiles]=\"1\"\n [message]=\"'Upload a *.zip file' | translate\"\n [progress]=\"uploadProgress | async\"\n [forceHideList]=\"true\"\n class=\"drop-area-sm\"\n>\n</c8y-drop-area>\n","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup } from '@angular/forms';\nimport { ActivatedRoute, Params, Router } from '@angular/router';\nimport {\n AppStateService,\n FilterInputComponent,\n GainsightService,\n internalApps,\n PackageType\n} from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport { pipe, Subject } from 'rxjs';\nimport { map, takeUntil } from 'rxjs/operators';\nimport { APP_STATE } from '../ecosystem.constants';\nimport { PRODUCT_EXPERIENCE_ECOSYSTEM } from '../ecosystem.model';\nimport { FilterableAppOrPlugin, FilterPipe, PackageFilters } from './list-filters.model';\n\n@Component({\n selector: 'c8y-list-filters',\n templateUrl: './list-filters.component.html'\n})\nexport class ListFiltersComponent implements OnInit {\n @Input() packageTypes: (keyof PackageFilters['type'])[] = [];\n @Input() packageAvailabilities: (keyof PackageFilters['availability'])[] = [];\n @Input() packageContents: (keyof PackageFilters['content'])[] = [];\n @Output() filterPipeChange = new EventEmitter<FilterPipe>();\n @ViewChild(FilterInputComponent) filterInput: FilterInputComponent;\n\n formGroup: ReturnType<ListFiltersComponent['initForm']>;\n chips: [string, FormControl][] = [];\n predefinedFiltersVisible: boolean;\n customFilters = new Map<string, (app: FilterableAppOrPlugin, enabled: boolean) => boolean>();\n currentFilterTerm: string;\n\n private currentLang: string;\n private data: FilterableAppOrPlugin[];\n private currentFiltersState: Partial<PackageFilters>;\n private CURRENT_LOCATION = location.href;\n private destroy$ = new Subject<void>();\n\n constructor(\n private formBuilder: FormBuilder,\n private ui: AppStateService,\n private translateService: TranslateService,\n private gainsightService: GainsightService,\n private router: Router,\n private activatedRoute: ActivatedRoute\n ) {\n this.formGroup = this.initForm();\n }\n\n ngOnInit(): void {\n this.currentFiltersState = this.formGroup.value;\n this.predefinedFiltersVisible =\n this.packageTypes?.length > 0 ||\n this.packageAvailabilities?.length > 0 ||\n this.packageContents?.length > 0;\n this.currentLang = this.ui.state.lang;\n this.subscribeToQueryParams();\n }\n\n setFilterTerm(filterTerm: string): void {\n this.currentFilterTerm = filterTerm;\n this.setPipe();\n\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.FILTER_LIST,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.LIST_FILTERS,\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.SET_FILTER_TERM,\n url: this.CURRENT_LOCATION\n }\n );\n }\n\n applyPredefinedFilters(): void {\n this.currentFiltersState = this.formGroup.value;\n this.setChips();\n this.setPipe();\n\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.FILTER_LIST,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.LIST_FILTERS,\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.SET_PREDEFINED_FILTERS,\n url: this.CURRENT_LOCATION,\n filters: this.currentFiltersState\n }\n );\n }\n\n reset(): void {\n this.formGroup.reset();\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.FILTER_LIST,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.LIST_FILTERS,\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.RESET_FILTER,\n url: this.CURRENT_LOCATION\n }\n );\n this.applyPredefinedFilters();\n }\n\n resetAllFilters() {\n this.reset();\n this.filterInput.reset();\n }\n\n toggleDropdown(isOpen: boolean): void {\n if (!isOpen) {\n this.formGroup.patchValue(this.currentFiltersState);\n }\n }\n\n deselectChip(chip: [string, FormControl]): void {\n chip[1].setValue(false);\n this.applyPredefinedFilters();\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n subscribeToQueryParams() {\n this.activatedRoute.queryParams\n .pipe(takeUntil(this.destroy$))\n .subscribe((queryParams: Params) => {\n const filters = this.parseQueryParams(queryParams);\n this.currentFilterTerm = queryParams.filterTerm || '';\n this.formGroup.patchValue(filters);\n this.applyPredefinedFilters();\n });\n }\n\n private setQueryParams() {\n if (!this.currentFiltersState) {\n return;\n }\n this.router.navigate([], {\n queryParams: {\n ...this.simplifyFilterObject(this.currentFiltersState),\n filterTerm: this.currentFilterTerm || null\n }\n });\n }\n\n private parseQueryParams(queryParams: Params): Partial<PackageFilters> {\n const filter: Partial<PackageFilters> = {};\n for (const fullKey in queryParams) {\n const [key, subKey] = fullKey.split('.');\n if (!filter[key]) {\n filter[key] = {};\n }\n filter[key][subKey] = queryParams[fullKey] === 'true';\n }\n return filter;\n }\n\n private simplifyFilterObject(currentFiltersState: Partial<PackageFilters>): Params {\n const keys = Object.keys(currentFiltersState);\n const result = {};\n for (const key of keys) {\n const subKeys = Object.keys(currentFiltersState[key]);\n for (const subKey of subKeys) {\n if (currentFiltersState[key][subKey]) {\n result[`${key}.${subKey}`] = currentFiltersState[key][subKey];\n }\n }\n }\n return result;\n }\n\n private initForm() {\n return this.formBuilder.group({\n type: this.formBuilder.group({\n [PackageType.OFFICIAL]: [false],\n [PackageType.COMMUNITY]: [false]\n }),\n availability: this.formBuilder.group({\n [APP_STATE.SUBSCRIBED.label]: [false],\n [APP_STATE.UNPACKED.label]: [false],\n [APP_STATE.EXTERNAL.label]: [false],\n [APP_STATE.CUSTOM.label]: [false]\n }),\n content: this.formBuilder.group({\n [APP_STATE.PACKAGE_BLUEPRINT.label]: [false],\n [APP_STATE.PACKAGE_PLUGIN.label]: [false]\n }),\n custom: this.formBuilder.group({})\n });\n }\n\n private setPipe(): void {\n this.setQueryParams();\n const filterPipe = pipe(\n map((data: FilterableAppOrPlugin[]) => {\n this.data = data.filter((app: FilterableAppOrPlugin) => {\n let matchesByString;\n if (!this.currentFilterTerm || this.currentFilterTerm.trim().length === 0) {\n matchesByString = true;\n } else {\n const appName =\n this.currentLang === 'en' || !app.name?.length || !internalApps[app.name]\n ? app.name\n : this.translateService.instant(internalApps[app.name]);\n matchesByString =\n this.filterContainString(appName, this.currentFilterTerm) ||\n this.filterContainString(app.description, this.currentFilterTerm);\n }\n\n const matchesByPredefinedProperty =\n this.appMatchesByPredefinedProperty(app, 'type') &&\n this.appMatchesByPredefinedProperty(app, 'availability') &&\n this.appMatchesByPredefinedProperty(app, 'content') &&\n this.appMatchesByPredefinedProperty(app, 'custom');\n\n return matchesByString && matchesByPredefinedProperty;\n });\n return this.data;\n })\n );\n this.filterPipeChange.emit(filterPipe);\n }\n\n private filterContainString(name: string, filterTerm: string): boolean {\n const term = filterTerm.toLowerCase().trim();\n return name && name.toLowerCase().indexOf(term) > -1;\n }\n\n private appMatchesByPredefinedProperty(\n app: FilterableAppOrPlugin,\n property: keyof PackageFilters\n ): boolean {\n if (property === 'custom' && this.currentFiltersState) {\n return Object.entries(this.currentFiltersState[property]).every(([key, value]) =>\n this.customFilters.get(key)(app, value)\n );\n }\n\n // if filter object does not contain property filters or all filters are false, filter is inactive\n const filterForPropertyIsActive =\n this.currentFiltersState?.[property] &&\n !Object.values(this.currentFiltersState[property]).every(v => !v);\n\n if (!filterForPropertyIsActive) {\n return true;\n } else if (!app.filterProps?.[property]) {\n return false;\n } else {\n return this.currentFiltersState[property][app.filterProps[property]];\n }\n }\n\n private setChips(): void {\n this.chips = [];\n Object.values(this.formGroup.controls).forEach((controlsGroup: FormGroup) => {\n Object.entries(controlsGroup.controls).forEach((entry: [string, FormControl]) => {\n if (entry[1].value) {\n this.chips.push(entry);\n }\n });\n });\n }\n}\n","<form\n class=\"d-flex a-i-center\"\n [formGroup]=\"formGroup\"\n>\n <c8y-filter\n [filterTerm]=\"currentFilterTerm\"\n (onSearch)=\"setFilterTerm($event)\"\n ></c8y-filter>\n\n <div\n class=\"dropdown m-l-8 m-r-4\"\n *ngIf=\"predefinedFiltersVisible\"\n dropdown\n (isOpenChange)=\"toggleDropdown($event)\"\n #filtersDropdown=\"bs-dropdown\"\n [cdkTrapFocus]=\"filtersDropdown.isOpen\"\n [insideClick]=\"true\"\n >\n <div class=\"input-group d-inline-flex\">\n <button\n class=\"btn-clean form-control p-l-8 p-r-16 a-s-stretch d-flex a-i-center w-auto flex-no-shrink\"\n title=\"{{ 'Filters' | translate }}\"\n dropdownToggle\n >\n <span [ngPlural]=\"chips.length\">\n <ng-template ngPluralCase=\"=0\">\n {{ 'Filters' | translate }}\n </ng-template>\n <ng-template ngPluralCase=\"=1\">\n <span class=\"badge badge-info\">{{ chips.length }}</span>\n {{ 'Filter' | translate }}\n </ng-template>\n <ng-template ngPluralCase=\"other\">\n <span class=\"badge badge-info\">{{ chips.length }}</span>\n {{ 'Filters' | translate }}\n </ng-template>\n </span>\n <span class=\"caret\"></span>\n </button>\n <div\n class=\"input-group-addon p-t-0 p-b-0 d-flex gap-4 a-i-center inner-scroll\"\n *ngIf=\"chips.length > 0\"\n >\n <ng-container *ngFor=\"let chip of chips\">\n <span\n class=\"tag tag--info chip\"\n *ngIf=\"chip[1].value\"\n >\n <button\n class=\"btn btn-xs btn-clean text-10\"\n title=\"{{ 'Remove' | translate }}\"\n type=\"button\"\n (click)=\"deselectChip(chip)\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n {{ chip[0] | translate | titlecase }}\n </span>\n </ng-container>\n </div>\n </div>\n <div\n class=\"dropdown-menu\"\n *dropdownMenu\n >\n <div class=\"dropdown-form\">\n <c8y-form-group\n *ngIf=\"packageTypes.length\"\n formGroupName=\"type\"\n >\n <label class=\"m-b-16\">\n {{ 'Type' | translate }}\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"type | translate\"\n *ngFor=\"let type of packageTypes\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"type\"\n [value]=\"type\"\n />\n <span></span>\n <span>{{ type | translate | titlecase }}</span>\n </label>\n </c8y-form-group>\n\n <c8y-form-group\n *ngIf=\"packageAvailabilities.length\"\n formGroupName=\"availability\"\n >\n <label class=\"m-b-16\">\n {{ 'Availability`of package based on app state`' | translate }}\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"availability | translate\"\n *ngFor=\"let availability of packageAvailabilities\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"availability\"\n [value]=\"availability\"\n />\n <span></span>\n <span>{{ availability | translate }}</span>\n </label>\n </c8y-form-group>\n\n <c8y-form-group\n *ngIf=\"packageContents.length\"\n formGroupName=\"content\"\n >\n <label class=\"m-b-16\">\n {{ 'Content' | translate }}\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"content | translate\"\n *ngFor=\"let content of packageContents\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"content\"\n [value]=\"content\"\n />\n <span></span>\n <span>{{ content | translate }}</span>\n </label>\n </c8y-form-group>\n <c8y-form-group formGroupName=\"custom\">\n <ng-content></ng-content>\n </c8y-form-group>\n </div>\n <div class=\"p-16 d-flex gap-8 separator-top\">\n <button\n class=\"btn btn-default btn-sm flex-grow\"\n title=\"{{ 'Reset' | translate }}\"\n type=\"button\"\n (click)=\"reset(); filtersDropdown.isOpen = false\"\n >\n {{ 'Reset' | translate }}\n </button>\n\n <button\n class=\"btn btn-primary btn-sm flex-grow\"\n title=\"{{ 'Apply' | translate }}\"\n type=\"button\"\n (click)=\"applyPredefinedFilters(); filtersDropdown.isOpen = false\"\n [disabled]=\"formGroup.pristine && formGroup.untouched\"\n >\n {{ 'Apply' | translate }}\n </button>\n </div>\n </div>\n </div>\n</form>\n","import { Component } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { gettext, PackageType } from '@c8y/ngx-components';\nimport { ListFiltersComponent } from '../list-filters/list-filters.component';\nimport { FilterableAppOrPlugin } from '../list-filters/list-filters.model';\n\n@Component({\n selector: 'c8y-archived-filter',\n templateUrl: './archived-filter.component.html'\n})\nexport class ArchivedFilterComponent {\n archivedFormControl: FormControl;\n private readonly filterLabel = gettext('Show archived packages');\n\n constructor(public filterComponent: ListFiltersComponent) {\n this.archivedFormControl = new FormControl();\n (this.filterComponent.formGroup.controls.custom as FormGroup).addControl(\n this.filterLabel,\n this.archivedFormControl\n );\n filterComponent.customFilters.set(\n this.filterLabel,\n (appOrPlugin: FilterableAppOrPlugin, enabled: boolean) => {\n return (\n appOrPlugin.filterProps.type !== PackageType.ARCHIVED ||\n (appOrPlugin.filterProps.type === PackageType.ARCHIVED && enabled)\n );\n }\n );\n }\n}\n","<label class=\"c8y-switch\">\n <input\n type=\"checkbox\"\n checked=\"checked\"\n [formControl]=\"archivedFormControl\"\n />\n <span></span>\n {{ 'Show archived packages' | translate }}\n</label>\n","import { NgModule } from '@angular/core';\nimport { CoreModule, hookWizard } from '@c8y/ngx-components';\nimport { IconSelectorModule } from '@c8y/ngx-components/icon-selector';\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { AddApplicationComponent } from './add-application.component';\nimport { ApplicationCardComponent } from './application-card.component';\nimport { ApplicationPropertiesFormComponent } from './application-properties-form.component';\nimport { UploadArchiveComponent } from './upload-archive.component';\nimport { DuplicateApplicationListComponent } from './duplicate-application/duplicate-application-list/duplicate-application-list.component';\nimport { DuplicateApplicationPropertiesComponent } from './duplicate-application/duplicate-application-properties/duplicate-application-properties.component';\nimport { DuplicateApplicationComponent } from './duplicate-application/duplicate-application.component';\nimport { PackageVersionSelectComponent } from './package-version-select/package-version-select.component';\nimport { EcosystemWizards } from './ecosystem.model';\nimport { TranslatePackageLabelPipe } from './translate-package-label.pipe';\nimport { ListFiltersComponent } from './list-filters/list-filters.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ArchivedFilterComponent } from './archived-filter/archived-filter.component';\n\n@NgModule({\n imports: [\n CoreModule,\n BsDropdownModule,\n TooltipModule,\n A11yModule,\n FormsModule,\n PopoverModule,\n ReactiveFormsModule,\n IconSelectorModule\n ],\n declarations: [\n AddApplicationComponent,\n ApplicationPropertiesFormComponent,\n UploadArchiveComponent,\n ApplicationCardComponent,\n DuplicateApplicationListComponent,\n DuplicateApplicationPropertiesComponent,\n DuplicateApplicationComponent,\n PackageVersionSelectComponent,\n TranslatePackageLabelPipe,\n ListFiltersComponent,\n ArchivedFilterComponent\n ],\n exports: [\n AddApplicationComponent,\n ApplicationPropertiesFormComponent,\n UploadArchiveComponent,\n ApplicationCardComponent,\n DuplicateApplicationListComponent,\n DuplicateApplicationPropertiesComponent,\n DuplicateApplicationComponent,\n PackageVersionSelectComponent,\n TranslatePackageLabelPipe,\n ListFiltersComponent,\n ArchivedFilterComponent\n ],\n providers: [\n hookWizard({\n wizardId: EcosystemWizards.APPLICATION_UPLOAD,\n component: DuplicateApplicationComponent,\n name: 'Duplicate existing application',\n c8yIcon: 'copy'\n }),\n hookWizard({\n wizardId: 'duplicateApplication',\n component: DuplicateApplicationComponent,\n name: 'Duplicate existing application',\n c8yIcon: 'copy'\n })\n ]\n})\nexport class SharedEcosystemModule {}\n","import { ApplicationPlugin, PackageType } from '@c8y/ngx-components';\nimport { Observable, UnaryFunction } from 'rxjs';\nimport { IApplication } from '@c8y/client';\nimport { APP_STATE, ApplicationState } from '../ecosystem.constants';\n\nexport type FilterableAppOrPlugin = (IApplication | ApplicationPlugin) & {\n filterProps?: AppFilterProps;\n};\n\nexport type FilterPipe = UnaryFunction<\n Observable<FilterableAppOrPlugin[]>,\n Observable<FilterableAppOrPlugin[]>\n>;\n\nexport type PackageFilters = {\n type: {\n [PackageType.OFFICIAL]?: boolean;\n [PackageType.COMMUNITY]?: boolean;\n };\n availability: {\n [APP_STATE.SUBSCRIBED.label]?: boolean;\n [APP_STATE.UNPACKED.label]?: boolean;\n [APP_STATE.EXTERNAL.label]?: boolean;\n [APP_STATE.CUSTOM.label]?: boolean;\n };\n content: {\n [APP_STATE.PACKAGE_BLUEPRINT.label]?: boolean;\n [APP_STATE.PACKAGE_PLUGIN.label]?: boolean;\n };\n custom: {\n [key: string]: boolean;\n };\n};\n\nexport type AppFilterProps = {\n type: PackageType;\n availability: ApplicationState['label'];\n content: ApplicationState['label'];\n};\n\nexport const defaultPackageTypes: (keyof PackageFilters['type'])[] = [\n PackageType.OFFICIAL,\n PackageType.COMMUNITY\n];\n\nexport const defaultPackageAvailabilities: (keyof PackageFilters['availability'])[] = [\n APP_STATE.SUBSCRIBED.label,\n APP_STATE.UNPACKED.label,\n APP_STATE.EXTERNAL.label,\n APP_STATE.CUSTOM.label\n];\n\nexport const defaultPackageContents: (keyof PackageFilters['content'])[] = [\n APP_STATE.PACKAGE_BLUEPRINT.label,\n APP_STATE.PACKAGE_PLUGIN.label\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3","i1.EcosystemService","i4","i5.PackageAvailabilityService","i6","i7","i2.EcosystemService","i8","i9.TranslatePackageLabelPipe","i7.ApplicationPropertiesFormComponent","i5","i6.DuplicateApplicationListComponent","i7.DuplicateApplicationPropertiesComponent","i1.ListFiltersComponent"],"mappings":"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"}
1
+ {"version":3,"file":"c8y-ngx-components-ecosystem-shared.mjs","sources":["../../ecosystem/shared/ecosystem.model.ts","../../ecosystem/shared/ecosystem.constants.ts","../../ecosystem/shared/ecosystem-error.ts","../../ecosystem/shared/ecosystem.service.ts","../../ecosystem/shared/package-availability.service.ts","../../ecosystem/shared/add-application.component.ts","../../ecosystem/shared/add-application.component.html","../../ecosystem/shared/translate-package-label.pipe.ts","../../ecosystem/shared/application-card.component.ts","../../ecosystem/shared/application-card.component.html","../../ecosystem/shared/application-properties-form.component.ts","../../ecosystem/shared/application-properties-form.component.html","../../ecosystem/shared/duplicate-application/duplicate-application-list/duplicate-application-list.component.ts","../../ecosystem/shared/duplicate-application/duplicate-application-list/duplicate-application-list.component.html","../../ecosystem/shared/duplicate-application/duplicate-application-properties/duplicate-application-properties.component.ts","../../ecosystem/shared/duplicate-application/duplicate-application-properties/duplicate-application-properties.component.html","../../ecosystem/shared/duplicate-application/duplicate-application.component.ts","../../ecosystem/shared/duplicate-application/duplicate-application.component.html","../../ecosystem/shared/package-version-select/package-version-select.component.ts","../../ecosystem/shared/package-version-select/package-version-select.component.html","../../ecosystem/shared/upload-archive.component.ts","../../ecosystem/shared/upload-archive.component.html","../../ecosystem/shared/list-filters/list-filters.component.ts","../../ecosystem/shared/list-filters/list-filters.component.html","../../ecosystem/shared/archived-filter/archived-filter.component.ts","../../ecosystem/shared/archived-filter/archived-filter.component.html","../../ecosystem/shared/shared-ecosystem.module.ts","../../ecosystem/shared/list-filters/list-filters.model.ts","../../ecosystem/shared/c8y-ngx-components-ecosystem-shared.ts"],"sourcesContent":["import { ApplicationPlugin } from '@c8y/ngx-components';\n\n/** Wizard types */\nexport enum EcosystemWizards {\n APPLICATION_UPLOAD = 'ecosystemApplicationUpload',\n MICROSERVICE_UPLOAD = 'ecosystemMicroserviceUpload',\n PACKAGE_UPLOAD = 'ecosystemPackageUpload',\n BLUEPRINT_DEPLOYMENT = 'ecosystemBlueprintDeployment',\n LICENSE_CONFIRM = 'ecosystemLicenseConfirm',\n ARCHIVED_CONFIRM = 'ecosystemArchivedConfirm'\n}\n\nexport enum ERROR_TYPE {\n TYPE_VALIDATION = 'TYPE_VALIDATION',\n ALREADY_SUBSCRIBED = 'ALREADY_SUBSCRIBED',\n ALREADY_EXIST = 'ALREADY_EXIST',\n INTERNAL_ERROR = 'INTERNAL_ERROR',\n NO_MANIFEST_FILE = 'NO_MANIFEST_FILE',\n INVALID_PACKAGE = 'INVALID_PACKAGE',\n INVALID_APPLICATION = 'INVALID_APPLICATION',\n MICROSERVICE_NAME_TOO_LONG = 'MICROSERVICE_NAME_TOO_LONG',\n APPLICATION_CREATION_FAILED = 'APPLICATION_CREATION_FAILED',\n KEY_OR_CONTEXT_PATH_MISMATCH = 'KEY_OR_CONTEXT_PATH_MISMATCH',\n VERSION_NOT_FOUND = 'VERSION_NOT_FOUND'\n}\n\nexport type LicensedApplicationPlugin = Pick<\n ApplicationPlugin,\n 'type' | 'license' | 'name' | 'version' | 'contextPath'\n>;\n\nexport const PRODUCT_EXPERIENCE_ECOSYSTEM = {\n APPLICATIONS: {\n EVENTS: {\n AVAILABILITY: 'availability',\n APPLICATION_CARD: 'applicationCard',\n APPLICATION_PROPERTIES: 'applicationProperties',\n DEPLOY_APPLICATION: 'deployApplication',\n DUPLICATE_APPLICATION: 'duplicateApplication',\n INSTALLED_PLUGINS: 'installedPlugins',\n PACKAGE_PLUGINS: 'packagePlugins',\n PACKAGE_VERSIONS: 'packageVersions',\n FILTER_LIST: 'filterList'\n },\n COMPONENTS: {\n APPLICATION_CARD: 'application-card',\n APPLICATION_PLUGINS: 'application-plugins',\n APPLICATION_PROPERTIES: 'application-properties',\n DEPLOY_APPLICATION: 'deploy-application',\n DUPLICATE_APPLICATION_PROPERTIES: 'duplicate-application-properties',\n PLUGIN_LIST: 'plugin-list',\n PACKAGE_VERSIONS: 'package-versions-list',\n UPDATE_PLUGIN_OF_APP: 'update-plugin-of-app',\n LIST_FILTERS: 'list-filters',\n PACKAGE_DETAILS: 'package-details'\n },\n ACTIONS: {\n AVAILABILITY_CHANGE: 'availabilityChange',\n CANCEL: 'cancel',\n CLONE: 'clone',\n CHANGE_PLUGIN_VERSION: 'changePluginVersion',\n DELETE: 'delete',\n DOWNLOAD: 'download',\n DEPLOY_APPLICATION: 'deployApplication',\n EDIT: 'edit',\n INSTALL_PLUGIN: 'installPlugin',\n INSTALL_PLUGINS: 'installPlugins',\n UNINSTALL_PLUGIN: 'uninstallPlugin',\n SELECT_VERSION: 'selectVersion',\n SET_AS_LATEST: 'setAsLatest',\n UPDATE_AVAILABLE: 'updateAvailable',\n UPLOAD: 'upload',\n SET_FILTER_TERM: 'setFilterTerm',\n SET_PREDEFINED_FILTERS: 'setPredefinedFilters',\n RESET_FILTER: 'resetFilter',\n INSTALL_PLUGINS_INITIATED: 'installPluginsInitiated',\n DEPLOY_APPLICATION_INITIATED: 'deployApplicationInitiated'\n },\n RESULTS: {\n DEPLOYED: 'deployed',\n DUPLICATED: 'duplicated',\n PLUGIN_INSTALLED: 'pluginInstalled',\n PLUGIN_REMOVED: 'pluginRemoved',\n PLUGIN_VERSION_CHANGED: 'pluginVersionChanged',\n SERVER_FAILURE: 'serverFailure',\n SUCCESS: 'success'\n }\n }\n} as const;\n","import { ERROR_TYPE } from './ecosystem.model';\nimport { gettext, PackageType, PropertiesListItem } from '@c8y/ngx-components';\n\nexport const ERROR_MESSAGES = {\n [ERROR_TYPE.ALREADY_EXIST]: gettext(\n 'Could not deploy the application, as an application with the same name`KEEP_ORIGINAL`, context-path`KEEP_ORIGINAL` or key`KEEP_ORIGINAL` exists already.'\n ),\n [ERROR_TYPE.TYPE_VALIDATION]: gettext(\n 'Wrong file format. Expected a *.zip file with a valid manifest.'\n ),\n [ERROR_TYPE.ALREADY_SUBSCRIBED]: gettext(\n 'Could not subscribe to the microservice because another application with the same context path is already subscribed.'\n ),\n [ERROR_TYPE.NO_MANIFEST_FILE]: gettext('Could not find a manifest.'),\n [ERROR_TYPE.INVALID_PACKAGE]: gettext('You have not uploaded a valid package.'),\n [ERROR_TYPE.INVALID_APPLICATION]: gettext('You have not uploaded a valid application.'),\n [ERROR_TYPE.INTERNAL_ERROR]: gettext('An internal error occurred, try to upload again.'),\n [ERROR_TYPE.MICROSERVICE_NAME_TOO_LONG]: gettext(\n 'Microservice name \"{{ name }}\" must not be longer than {{ maxChars }} characters.'\n ),\n [ERROR_TYPE.APPLICATION_CREATION_FAILED]: gettext('Application creation failed.'),\n [ERROR_TYPE.KEY_OR_CONTEXT_PATH_MISMATCH]: gettext(\n 'The \"contextPath`KEEP_ORIGINAL`\" or \"key`KEEP_ORIGINAL`\" of the uploaded archive do not match with the existing application.'\n ),\n [ERROR_TYPE.VERSION_NOT_FOUND]: gettext('The selected version was not found on the server.')\n};\n\nexport const APP_STATE = {\n SUBSCRIBED: {\n label: gettext('Subscribed`application`'),\n class: 'label-primary',\n tooltip: gettext('Provided by parent tenant.')\n },\n CUSTOM: {\n label: gettext('Custom`application`'),\n class: 'label-info',\n tooltip: gettext('Manually uploaded to the platform.')\n },\n EXTERNAL: {\n label: gettext('External`application`'),\n class: 'label-warning',\n tooltip: gettext('Application hosted outside of the platform.')\n },\n UNPACKED: {\n label: gettext('Unpacked`application`'),\n class: 'label-success',\n tooltip: gettext('Deployed from a package available under \"Packages\".')\n },\n PACKAGE_BLUEPRINT: {\n label: gettext('Blueprint'),\n class: 'label-success',\n tooltip: gettext('Contains an application and may include plugins.')\n },\n PACKAGE_PLUGIN: {\n label: gettext('Plugins'),\n class: 'label-info',\n tooltip: gettext('Contains only plugins.')\n },\n PACKAGE_UNKNOWN: {\n label: gettext('Unknown`package-type`'),\n class: 'label-info',\n tooltip: gettext('Package contents could not be determined.')\n }\n};\n\nexport type ApplicationState = (typeof APP_STATE)[keyof typeof APP_STATE];\n\nexport const PACKAGE_TYPE_LABELS = {\n [PackageType.COMMUNITY]: {\n label: gettext('COMMUNITY`Package created by the developer community.`'),\n tooltip: gettext('Package created by the developer community.')\n },\n [PackageType.OFFICIAL]: {\n label: gettext('OFFICIAL`Package maintained by Software AG.`'),\n tooltip: gettext('Package maintained by Software AG.')\n },\n [PackageType.UNKNOWN]: {\n label: gettext('CUSTOM`Package maintained by an unknown source.`'),\n tooltip: gettext('Package maintainer unknown.')\n },\n [PackageType.ARCHIVED]: {\n label: gettext('ARCHIVED`Package out of maintenance.`'),\n tooltip: gettext('The package was marked by the author as archived.')\n }\n};\n\nexport const packageProperties: PropertiesListItem[] = [\n {\n label: gettext('Latest version'),\n key: 'version'\n },\n {\n label: gettext('Author'),\n key: 'author'\n },\n {\n label: gettext('Keywords'),\n key: 'keywords'\n },\n {\n label: gettext('Source'),\n key: 'repository',\n transform: (repository: any) => (repository?.url ? repository.url : repository),\n type: 'link',\n action: (e, link: string) => window.open(link, '_blank', 'noopener,noreferrer')\n },\n {\n label: gettext('Homepage'),\n key: 'homepage',\n type: 'link',\n action: (e, link: string) => window.open(link, '_blank', 'noopener,noreferrer')\n },\n {\n label: gettext('License'),\n key: 'license'\n }\n];\n","import { ERROR_MESSAGES } from './ecosystem.constants';\nimport { ERROR_TYPE } from './ecosystem.model';\n\nexport class EcosystemError extends Error {\n constructor(public type: ERROR_TYPE) {\n super(ERROR_MESSAGES[type]);\n }\n}\n","import { EventEmitter, Injectable } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport {\n ApplicationAvailability,\n ApplicationService,\n ApplicationType,\n IApplication,\n IApplicationBinary,\n IApplicationVersion,\n IApplicationVersionDeleteParams,\n ICurrentTenant,\n IdReference,\n IFetchResponse,\n IIdentified,\n IManagedObject,\n IManifest,\n InventoryService,\n IResult,\n IResultList,\n IUploadParamsOverride,\n TenantService\n} from '@c8y/client';\nimport {\n AlertService,\n ApplicationPlugin,\n AppStateService,\n gettext,\n HumanizeAppNamePipe,\n ModalService,\n PackageType,\n PluginsService,\n Status,\n WizardModalService,\n ZipService\n} from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport { saveAs } from 'file-saver';\nimport { cloneDeep, get, groupBy, kebabCase, pick, uniqBy, omit, isUndefined } from 'lodash-es';\nimport { BehaviorSubject, Observable, defer } from 'rxjs';\nimport { debounceTime, take, map, filter, shareReplay } from 'rxjs/operators';\nimport { gt, coerce, satisfies } from 'semver';\nimport { EcosystemError } from './ecosystem-error';\nimport { ApplicationState, APP_STATE, ERROR_MESSAGES } from './ecosystem.constants';\nimport { EcosystemWizards, ERROR_TYPE, LicensedApplicationPlugin } from './ecosystem.model';\nimport { AppFilterProps } from './list-filters/list-filters.model';\n\nconst CUMULOCITY_JSON = 'cumulocity.json';\nconst MICROSERVICE_NAME_MAX_LENGTH = 23;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EcosystemService {\n appDeleted = new EventEmitter<IApplication>();\n progress: BehaviorSubject<number> = new BehaviorSubject<number>(null);\n private appsGroupedByContextPath$: Observable<Record<string, IApplication[]>>;\n private xhr: XMLHttpRequest;\n\n constructor(\n private modal: ModalService,\n private alertService: AlertService,\n private humanizeAppName: HumanizeAppNamePipe,\n private translateService: TranslateService,\n private applicationService: ApplicationService,\n private appStateService: AppStateService,\n private zipService: ZipService,\n private tenantService: TenantService,\n private inventoryService: InventoryService,\n private wizardModalService: WizardModalService,\n private pluginService: PluginsService\n ) {\n this.appsGroupedByContextPath$ = defer(() => this.getWebApplications()).pipe(\n map(webApps => groupBy(webApps, 'contextPath')),\n shareReplay({ bufferSize: 1, refCount: true })\n );\n }\n\n getUniqueAppConfig(srcApp: IApplication, existingApps: IApplication[]): IApplication {\n let app: IApplication = {\n name: srcApp.name,\n key: srcApp.key,\n contextPath: srcApp.contextPath\n };\n for (let retryNo = 0; retryNo < 9; ) {\n if (this.checkIfAppNameKeyPathExists(existingApps, app, retryNo)) {\n retryNo++;\n app = {\n name: [srcApp.name, retryNo].join('-'),\n key: [srcApp.key, retryNo].join('-'),\n contextPath: [srcApp.contextPath, retryNo].join('-')\n };\n } else {\n return app;\n }\n }\n return app;\n }\n\n /**\n * Verify versions compatibility for blueprints. If a blueprint version\n * is not compatible, a warning is shown.\n *\n * @param blueprint The blueprint to install.\n * @returns true if the installation can continue or false if it should be aborted.\n */\n async verifyBlueprintVersionsCompatibility(blueprint: Partial<IManifest>): Promise<boolean> {\n const api = await this.getPlatformVersion();\n if (blueprint.versioningMatrix) {\n try {\n const pluginApiVersion = blueprint.versioningMatrix[blueprint.version].api;\n if (!satisfies(api, pluginApiVersion)) {\n return await this.showModal(blueprint, false, api);\n }\n } catch {\n return await this.showModal(blueprint, false, api);\n }\n }\n return true;\n }\n\n /**\n * Verify versions compatibility for plugins. In case a version does not exist in the\n * versioningMatrix we don't do anything due to backward compatibility. If a plugin version\n * is not compatible, a warning is shown.\n *\n * @param pluginsToInstall The list of plugins to install.\n * @returns true if the installation can continue or false if it should be aborted.\n */\n async verifyPluginVersionsCompatibility(\n pluginsToInstall: ApplicationPlugin[],\n app: IApplication\n ): Promise<boolean> {\n const api = await this.getPlatformVersion();\n const sdk = app.manifest?.webSdkVersion;\n for (const plugin of pluginsToInstall) {\n if (plugin.versioningMatrix) {\n try {\n const pluginSdkVersion = plugin.versioningMatrix[plugin.version].sdk;\n const pluginApiVersion = plugin.versioningMatrix[plugin.version].api;\n if (!satisfies(sdk, pluginSdkVersion) || !satisfies(api, pluginApiVersion)) {\n return await this.showModal(plugin, true, api, sdk);\n }\n } catch {\n return await this.showModal(plugin, false, api, sdk);\n }\n }\n }\n\n return true;\n }\n\n /**\n * Community plugins need to verify the license agreement. If a package is a community\n * package, the license is shown.\n *\n * @param pluginsToInstall The list of plugins to install.\n * @returns true if the installation can continue.\n */\n async verifyLicenses(pluginsToInstall: Array<LicensedApplicationPlugin>) {\n let _resolve;\n const result: Promise<boolean> = new Promise(resolve => {\n _resolve = resolve;\n });\n\n pluginsToInstall = pluginsToInstall.filter(\n plugin => plugin.type !== PackageType.CUSTOM && plugin.type !== PackageType.OFFICIAL\n );\n\n if (pluginsToInstall.length === 0) {\n return Promise.resolve(true);\n }\n\n const initialState: any = {\n id: EcosystemWizards.LICENSE_CONFIRM,\n componentInitialState: {\n pluginsToInstall\n }\n };\n const modalOptions = { initialState };\n const wizard = this.wizardModalService.show(modalOptions);\n\n wizard.content.onClose.subscribe(confirmed => {\n _resolve(confirmed);\n });\n\n return result;\n }\n\n /**\n * If the plugin is archived, a warning should be shown.\n *\n * @param pluginsToInstall The list of plugins to install.\n * @returns true if the installation can continue.\n */\n async verifyArchived(pluginsToInstall: Array<LicensedApplicationPlugin>) {\n let _resolve;\n const result: Promise<boolean> = new Promise(resolve => {\n _resolve = resolve;\n });\n\n pluginsToInstall = pluginsToInstall.filter(plugin => plugin.type === PackageType.ARCHIVED);\n\n if (pluginsToInstall.length === 0) {\n return Promise.resolve(true);\n }\n\n const initialState: any = {\n id: EcosystemWizards.ARCHIVED_CONFIRM\n };\n const modalOptions = { initialState };\n const wizard = this.wizardModalService.show(modalOptions);\n\n wizard.content.onClose.subscribe(confirmed => {\n _resolve(confirmed);\n });\n\n return result;\n }\n\n /**\n * @description\n * Compares currently deployed application version with application version tagged as \"latest\"\n *\n * @param {string} currentApplicationVersion Deployed application version\n * @param {object} latestApp Latest application version object\n *\n * @returns {boolean} Returns true if latest version is greater than current, otherwise false\n */\n shouldUpgradePackage(currentApplicationVersion: string, latestApp: IApplicationVersion): boolean {\n const latestApplicationVersion = latestApp?.version;\n\n if (!latestApplicationVersion || !currentApplicationVersion) {\n return false;\n }\n\n return gt(coerce(latestApplicationVersion), coerce(currentApplicationVersion));\n }\n\n /**\n * @description\n * Gets an object that contains searched tag\n *\n * @param {array} applicationVersions Array with all available versions\n * @param {string} tagName Searched tag\n *\n * @returns {object} Returns an object with searched tag\n */\n getApplicationVersionObjectByTag(\n applicationVersions: IApplicationVersion[],\n tagName: string\n ): IApplicationVersion {\n return applicationVersions?.find(element => element.tags.includes(tagName));\n }\n\n async getApplication(appId: IdReference): Promise<IApplication> {\n return (await this.applicationService.detail(appId)).data;\n }\n\n getApplications(customFilter: any = {}): Promise<IResultList<IApplication>> {\n const filter: object = {\n pageSize: 2000,\n withTotalPages: true\n };\n Object.assign(filter, customFilter);\n const currentTenant = this.appStateService.currentTenant.value;\n return this.applicationService.listByTenant(currentTenant.name, filter);\n }\n\n async getMicroservices(): Promise<IApplication[]> {\n const apps = (await this.getApplications()).data;\n const microservices = apps.filter(app => this.isMicroservice(app));\n return microservices.sort((a, b) => a.name.localeCompare(b.name));\n }\n\n async getWebApplications(customFilter: any = {}): Promise<IApplication[]> {\n const apps = (await this.getApplications(customFilter)).data;\n const webApps = apps.filter(app => this.isApplication(app));\n return webApps.sort((a, b) => a.name.localeCompare(b.name));\n }\n\n async getFeatureApplications(customFilter: any = {}): Promise<IApplication[]> {\n const apps = (await this.getApplications(customFilter)).data;\n const webApps = apps.filter(app => this.isFeature(app));\n return webApps.sort((a, b) => a.name.localeCompare(b.name));\n }\n\n async getPackageApplications(customFilter: any = {}): Promise<IApplication[]> {\n const filterCallback = app => this.isPackage(app);\n return this.getApplicationsFiltered(customFilter, filterCallback);\n }\n\n async getHostedAndPackageApplications(customFilter: any = {}): Promise<IApplication[]> {\n const filterCallback = app => this.isPackage(app) || this.isApplication(app);\n return this.getApplicationsFiltered(customFilter, filterCallback);\n }\n\n async getApplicationsFiltered(\n customFilter: any = {},\n filterCallback = (app: IApplication) => !!app\n ): Promise<IApplication[]> {\n const filter = Object.assign({}, customFilter);\n const sharedFilter = Object.assign(\n {\n availability: ApplicationAvailability.SHARED,\n type: 'HOSTED',\n pageSize: 2000\n },\n customFilter\n );\n const [{ data: apps }, { data: shared }] = await Promise.all([\n this.getApplications(filter),\n this.applicationService.list(sharedFilter)\n ]);\n const webApps = [...apps, ...shared].filter(filterCallback);\n // an app could be subscribed to a tenant, but also have it's availability set to SHARED, in that case it would occur twice.\n const uniqWebApps = uniqBy(webApps, (app: IApplication) => app.id);\n return uniqWebApps.sort((a, b) => a.name.localeCompare(b.name));\n }\n\n async isMicroserviceHostingAllowed(): Promise<boolean> {\n const { data: apps } = await this.applicationService.listByName('feature-microservice-hosting');\n return !!apps.filter(app => app.owner?.tenant?.id === 'management').length;\n }\n\n canOpenAppInBrowser(app: IApplication): boolean {\n const isNotAFeature = !this.isFeature(app);\n const hasProperType = [ApplicationType.HOSTED, ApplicationType.EXTERNAL].includes(app.type);\n const isNotPackage = !this.isPackage(app);\n return isNotAFeature && hasProperType && isNotPackage;\n }\n\n openApp(app) {\n window.open(this.applicationService.getHref(app), '_blank', 'noopener,noreferrer');\n }\n\n async canDeleteApp(app: IApplication): Promise<boolean> {\n return (\n this.isOwner(app) && (!this.isCurrentApp(app) || (await this.hasSubscribedAppParent(app)))\n );\n }\n\n isOwner(app: IApplication): boolean {\n const currentTenant: ICurrentTenant = this.appStateService.currentTenant.value;\n const appOwner = get(app, 'owner.tenant.id');\n return currentTenant?.name === appOwner;\n }\n\n isFeature(app: IApplication): boolean {\n return !!app.name.match(/feature-/);\n }\n\n isMicroservice(app: IApplication): boolean {\n return app.type === 'MICROSERVICE';\n }\n\n isExternal(app: IApplication): boolean {\n return app.type === 'EXTERNAL';\n }\n\n isPackage(app: IApplication): boolean {\n return app.manifest?.isPackage === true;\n }\n\n isPlugin(app: IApplication): boolean {\n return app.manifest?.package === 'plugin';\n }\n\n cancelAppCreation(app: IApplication): void {\n if (this.xhr) {\n this.xhr.abort();\n }\n if (app) {\n this.applicationService.delete(app);\n }\n }\n\n updateUploadProgress(event): void {\n if (event.lengthComputable) {\n const currentProgress = this.progress.value;\n this.progress.next(currentProgress + (event.loaded / event.total) * (95 - currentProgress));\n }\n }\n\n setAppActiveVersion(app: IApplication, activeVersionId: string): Promise<IApplication> {\n return this.applicationService.update({ id: app.id, activeVersionId });\n }\n\n setPackageVersionTag(app: IApplication, version: string, tags: string[]) {\n return this.applicationService.setPackageVersionTag(app, version, tags);\n }\n\n deletePackageVersion(app: IApplication, params: IApplicationVersionDeleteParams) {\n return this.applicationService.deleteVersionPackage(app, params);\n }\n\n getHumanizedAppName(app: IApplication): Promise<string> {\n return this.humanizeAppName.transform(app.name).pipe(debounceTime(250), take(1)).toPromise();\n }\n\n createConfig(app: IApplication, formGroupValue: FormGroup): Partial<IApplication> {\n const { id, type, availability } = app;\n let config = pick(formGroupValue, ['name', 'key', 'contextPath']);\n config = {\n ...config,\n isSetup: true,\n id,\n type,\n availability\n };\n return config;\n }\n\n async listArchives(appId: string | number | IApplication): Promise<IApplicationBinary[]> {\n const filter = {\n pageSize: 100\n };\n return (await this.applicationService.binary(appId).list(filter)).data;\n }\n\n async deleteArchive(archive: IApplicationBinary, app: IApplication): Promise<void> {\n const humanizedArchiveName = await this.getHumanizedAppName(archive);\n try {\n await this.modal.confirm(\n gettext('Delete archive'),\n this.translateService.instant(\n gettext(\n `You are about to delete archive \"{{ humanizedArchiveName }}\". Do you want to proceed?`\n ),\n { humanizedArchiveName }\n ),\n Status.DANGER,\n { ok: gettext('Delete'), cancel: gettext('Cancel') }\n );\n await this.applicationService.binary(app).delete(archive.id);\n this.alertService.success(gettext('Archive deleted.'));\n } catch (ex) {\n if (ex) {\n this.alertService.danger(get(ex, 'data.message'), ex.data);\n }\n throw new Error('Cancelled');\n }\n }\n\n async getArchiveManagedObject(binaryId: string): Promise<IManagedObject> {\n return (await this.inventoryService.detail(binaryId)).data;\n }\n\n async downloadArchive(\n app: IApplication,\n archive: Pick<IApplicationBinary, 'name' | 'id'>\n ): Promise<void> {\n try {\n const binary = await this.getBinary(app, archive);\n const fileBinary = new Blob([binary], { type: 'application/x-zip-compressed' });\n saveAs(fileBinary, archive.name);\n } catch (e) {\n // empty\n }\n }\n\n async updateApp(app: IApplication, deleteOnFailure = false): Promise<IResult<IApplication>> {\n try {\n return await this.applicationService.update(app);\n } catch (ex) {\n this.alertError(ex);\n if (deleteOnFailure) {\n await this.applicationService.delete(app.id);\n throw new EcosystemError(ERROR_TYPE.APPLICATION_CREATION_FAILED);\n }\n }\n }\n\n async deleteApp(app: IApplication, silent = false): Promise<void> {\n const humanizedAppName = await this.getHumanizedAppName(app);\n if (!silent) {\n await this.modal.confirm(\n gettext('Delete application'),\n this.translateService.instant(\n gettext(\n `You are about to delete application \"{{ humanizedAppName }}\". Do you want to proceed?`\n ),\n { humanizedAppName }\n ),\n Status.DANGER,\n { ok: gettext('Delete'), cancel: gettext('Cancel') }\n );\n }\n await this.applicationService.delete(app.id);\n if (!silent) {\n this.alertService.success(gettext('Application deleted.'));\n }\n this.appDeleted.emit(app);\n }\n\n async checkIfSubscribed(app: IApplication): Promise<boolean> {\n const currentTenant = await this.tenantService.current();\n const subscribedApps = currentTenant.data.applications.references;\n return subscribedApps.some(application => application.application.id === app.id);\n }\n\n async subscribeApp(app: IApplication): Promise<void> {\n const currentTenant: ICurrentTenant = this.appStateService.currentTenant.value;\n try {\n await this.tenantService.subscribeApplication(currentTenant, app);\n this.alertService.success(gettext('Successfully subscribed to application.'));\n } catch (ex) {\n this.alertError(ex);\n }\n }\n\n async unsubscribeApp(app: IApplication): Promise<void> {\n const currentTenant: ICurrentTenant = this.appStateService.currentTenant.value;\n try {\n await this.tenantService.unsubscribeApplication(currentTenant, app);\n this.alertService.success(gettext('Successfully unsubscribed from application.'));\n } catch (ex) {\n this.alertError(ex);\n }\n }\n\n async isValidAppType(archive: File, appType: ApplicationType): Promise<boolean> {\n try {\n const currentType = await this.getAppType(archive);\n if (currentType !== appType) {\n throw new EcosystemError(ERROR_TYPE.TYPE_VALIDATION);\n } else {\n this.progress.next(this.progress.value + 10);\n return true;\n }\n } catch (ex) {\n throw new EcosystemError(ERROR_TYPE.TYPE_VALIDATION);\n }\n }\n\n async uploadArchiveToApp(\n archive: File,\n app: IApplication,\n isNewVersion = false\n ): Promise<IApplication> {\n let uploadOverrides: IUploadParamsOverride;\n if (isNewVersion) {\n uploadOverrides = await this.getUploadOverrides(archive, app);\n }\n const binaryService = this.applicationService.binary(app);\n this.xhr = binaryService.uploadWithProgressXhr(\n archive,\n this.updateUploadProgress.bind(this),\n '',\n uploadOverrides\n );\n\n const binaryMo = await binaryService.getXMLHttpResponse(this.xhr);\n // TODO commented it due to: https://cumulocity.atlassian.net/browse/MTM-48553\n // Add it back when BE fixes issues with activeVersion.\n // if (isNewVersion) {\n // return await this.getApplication(app);\n // }\n const notInitialPackage = app.applicationVersions?.length > 0;\n if (notInitialPackage) {\n return (await this.applicationService.update({ id: app.id })).data;\n }\n return (await this.setAppActiveVersion(app, (binaryMo.binaryId || binaryMo.id) as string)).data;\n }\n\n async validateArchiveToAppCompatibility(archive: File, app: IApplication): Promise<void> {\n const appType = await this.getAppType(archive);\n if (appType !== app.type) {\n throw new EcosystemError(ERROR_TYPE.INVALID_APPLICATION);\n } else {\n this.progress.next(this.progress.value + 10);\n }\n if (this.isMicroservice(app)) {\n return;\n }\n const manifest = await this.getCumulocityJson(archive);\n // A user can upload an app without a Cumulocity JSON file (e.g. a react app).\n // This is allowed and should not trigger a validation error.\n if (!manifest) {\n return;\n }\n await this.validatePackageKeyAndContextPath(manifest, app);\n }\n\n async getCumulocityJson(archive: File): Promise<IManifest | null> {\n try {\n const c8yManifest = await this.getCumulocityJson$(archive).toPromise();\n return c8yManifest;\n } catch (ex) {\n return null;\n }\n }\n\n async createAppForArchive(archive, isPackageTypeArchive = false): Promise<IApplication> {\n let isPackage = false;\n const appType = await this.getAppType(archive);\n let appModel: any = {};\n const supportedAppTypes = [ApplicationType.HOSTED, ApplicationType.MICROSERVICE];\n\n if (supportedAppTypes.includes(appType)) {\n try {\n appModel = await this.getCumulocityJson$(archive).toPromise();\n isPackage = appModel.isPackage;\n } catch (e) {\n // do nothing, we allow having HOSTED applications without the manifest file\n }\n }\n const name = this.getBaseNameFromArchiveOrAppModel(archive, appType, appModel);\n const clearedName = this.removeForbiddenCharacters(name);\n const key = this.getAppKey(appModel, clearedName);\n const contextPath = this.getContextPath(appModel, name);\n\n const appToSave = {\n type: appType,\n name,\n key,\n contextPath\n };\n\n if (isPackageTypeArchive && !isPackage) {\n throw new EcosystemError(ERROR_TYPE.INVALID_PACKAGE);\n } else if (!isPackageTypeArchive && isPackage) {\n throw new EcosystemError(ERROR_TYPE.INVALID_APPLICATION);\n } else if (this.isNameLengthExceeded(name, appType)) {\n const error = new Error();\n error.name = ERROR_TYPE.MICROSERVICE_NAME_TOO_LONG;\n error.message = this.translateService.instant(ERROR_MESSAGES[error.name], {\n name,\n maxChars: MICROSERVICE_NAME_MAX_LENGTH\n });\n throw error;\n }\n return (\n await this.applicationService.create({\n ...appToSave,\n manifest: {\n isPackage,\n ...(appModel?.package && { package: appModel.package })\n } as unknown as IManifest\n })\n ).data;\n }\n\n async reactivateArchive(app: IApplication): Promise<void> {\n try {\n await this.applicationService.reactivateArchive(app.id);\n this.alertService.success(gettext('Application reactivated.'));\n } catch (ex) {\n this.alertError(ex);\n }\n }\n\n async removeOldestArchive(app: IApplication, archives: IApplicationBinary[]): Promise<void> {\n try {\n await this.modal.confirm(\n gettext('Delete oldest archive and continue'),\n gettext(\n 'Up to 6 archives can be saved in the platform. If you upload a new archive, the oldest archive that is not active will be deleted. Do you want to proceed?'\n ),\n Status.INFO,\n { ok: gettext('Delete and continue') }\n );\n const archiveToDelete = archives[archives.length - 2];\n await this.applicationService.binary(app).delete(archiveToDelete.id);\n this.alertService.success(gettext('Archive deleted.'));\n } catch (ex) {\n if (ex) {\n this.alertError(ex);\n } else {\n return Promise.reject('cancelled');\n }\n }\n }\n\n async deployApp(selectedPackage: IApplication, formGroupValue, model): Promise<IApplication> {\n // Create new app config\n const config = this.createConfig(selectedPackage, formGroupValue);\n const requestedVersion = model.selected.version;\n let cleanManifest;\n try {\n const manifest = await this.applicationService.getAppManifest(\n selectedPackage,\n requestedVersion\n );\n cleanManifest = omit(manifest, ['name', 'contextPath', 'key']);\n } catch (ex) {\n throw new EcosystemError(ERROR_TYPE.VERSION_NOT_FOUND);\n }\n\n config.isSetup = true;\n config.manifest = cleanManifest;\n config.availability = ApplicationAvailability.PRIVATE;\n config.manifest.isPackage = false;\n config.manifest.source = selectedPackage.id;\n config.manifest.package = 'blueprint';\n\n // because of a issue with SHARED availability we always should check again\n // if the app not exist already\n const allExistingApps = await this.getHostedAndPackageApplications();\n const doesAppKeyOrContextPathExist = this.checkIfAppNameKeyPathExists(allExistingApps, config);\n if (doesAppKeyOrContextPathExist) {\n throw new EcosystemError(ERROR_TYPE.ALREADY_EXIST);\n }\n\n // Create new app\n const newApp = (await this.applicationService.create(config)).data;\n try {\n // Binary upload can fail if SHARED package\n // in this case, catch error and fall back to\n // clone API.\n await this.uploadBinaryFromOtherPackage(\n selectedPackage,\n newApp,\n model.selected.binaryId,\n requestedVersion\n );\n } catch (error) {\n if (error?.res?.status === 404) {\n await this.fallbackToClone(newApp, selectedPackage, requestedVersion);\n }\n }\n\n // update the icon if a custom one is selected\n if (formGroupValue.icon) {\n await this.applicationService.update({\n id: newApp.id,\n config: { icon: formGroupValue.icon }\n });\n }\n return newApp;\n }\n\n async fallbackToClone(\n application: IApplication,\n selectedPackage: IApplication,\n requestedVersion?: string\n ) {\n let wasSuccess = true;\n let clonedPkg;\n try {\n clonedPkg = (await this.applicationService.clone(selectedPackage, requestedVersion)).data;\n await this.uploadBinaryFromOtherPackage(\n selectedPackage,\n application,\n clonedPkg.activeVersionId,\n requestedVersion,\n clonedPkg\n );\n } catch (error) {\n this.alertError(error);\n wasSuccess = false;\n } finally {\n await this.deleteApp(clonedPkg, true);\n }\n return wasSuccess;\n }\n\n async uploadBinaryFromOtherPackage(\n selectedPackage: IApplication,\n applicationToUploadBinaryTo: IApplication,\n binaryId: string,\n requestedVersion?: string,\n useBinariesFrom?: IApplication\n ) {\n const { data: binaryDetails } = await this.inventoryService.detail(binaryId);\n\n // Get binary from specific package version\n const binary = await this.getBinary(useBinariesFrom || selectedPackage, {\n id: binaryId\n });\n // Create zip\n const fileBinary = new Blob([binary], { type: binaryDetails.contentType });\n const file = new File([fileBinary], binaryDetails.name, {\n type: binaryDetails.contentType\n });\n\n // Upload binary to new app\n await this.uploadArchiveToApp(file, applicationToUploadBinaryTo);\n\n // update the app manifest\n await this.updateAppManifest(applicationToUploadBinaryTo, selectedPackage, requestedVersion);\n }\n\n getAppState(app: IApplication): ApplicationState {\n if (!this.isOwner(app)) {\n return APP_STATE.SUBSCRIBED;\n } else if (this.isUnpacked(app)) {\n return APP_STATE.UNPACKED;\n } else if (app.type === ApplicationType.EXTERNAL) {\n return APP_STATE.EXTERNAL;\n }\n return APP_STATE.CUSTOM;\n }\n\n getPackageContentState(app: IApplication): ApplicationState {\n if (!this.isPackage(app)) {\n return;\n }\n if (this.isPackageBlueprint(app)) {\n return APP_STATE.PACKAGE_BLUEPRINT;\n }\n if (this.isPluginsPackage(app)) {\n return APP_STATE.PACKAGE_PLUGIN;\n }\n return APP_STATE.PACKAGE_UNKNOWN;\n }\n\n isPackageBlueprint(app: IApplication): boolean {\n return this.isPackage(app) && app.manifest.package === 'blueprint';\n }\n\n isPluginsPackage(app: IApplication): boolean {\n return this.isPackage(app) && app.manifest.package === 'plugin';\n }\n\n isUnpacked(app: IApplication): boolean {\n return !!app.manifest?.source;\n }\n\n hasExports(app: IApplication): boolean {\n return !!app.manifest?.exports?.length;\n }\n\n isApplication(app: IApplication): boolean {\n return (\n app.type !== ApplicationType.MICROSERVICE && !this.isFeature(app) && !this.isPackage(app)\n );\n }\n\n isCustomMicroservice(app: IApplication) {\n return this.isOwner(app) && app.type === ApplicationType.MICROSERVICE;\n }\n\n async getBinary(\n app: IApplication,\n archive: IApplicationBinary | IIdentified\n ): Promise<ArrayBuffer> {\n let binary;\n try {\n const res = await this.applicationService.binary(app).downloadArchive(archive.id);\n binary = await res.arrayBuffer();\n } catch (ex) {\n const msg = gettext('Could not get the binary.');\n this.alertService.danger(msg);\n }\n return binary;\n }\n\n async isOverwrittenByCustomApp(app: IApplication): Promise<boolean> {\n return !this.isOwner(app) && (await this.hasSubscribedAppParent(app));\n }\n\n async hasSubscribedAppParent(app: IApplication): Promise<boolean> {\n const appsGroupedByContextPath = await this.appsGroupedByContextPath$.pipe(take(1)).toPromise();\n return app.contextPath && appsGroupedByContextPath[app.contextPath]?.length === 2;\n }\n\n /**\n * @deprecated\n */\n setAvailabilityToPrivateIfNotSetAlready(app: IApplication): IApplication {\n app.availability = ApplicationAvailability.PRIVATE;\n return app;\n }\n\n /**\n * Shows an error dialog.\n * @param error Either a server error or an internal [[EcosystemError]].\n */\n alertError(error: Error | EcosystemError) {\n if (error instanceof EcosystemError) {\n this.alertService.danger(error.message);\n } else {\n this.alertService.addServerFailure(error);\n }\n }\n\n async validatePackageKeyAndContextPath(manifest: IManifest, app: IApplication) {\n const contextPath = get(manifest, 'contextPath');\n const appKey = get(manifest, 'key');\n if (contextPath !== app.contextPath || appKey !== app.key) {\n throw new EcosystemError(ERROR_TYPE.KEY_OR_CONTEXT_PATH_MISMATCH);\n }\n }\n\n filterContainString(name: string, filterTerm: string): boolean {\n const term = filterTerm.toLowerCase().trim();\n return name && name.toLowerCase().indexOf(term) > -1;\n }\n\n async updateAppManifest(\n application: IApplication,\n selectedPackage: IApplication,\n requestedVersion?: string\n ): Promise<{ res: IFetchResponse; data: any }> {\n const { id } = application;\n const cleanedApp = this.removeAppProperties(application);\n let manifest: Partial<IManifest> = selectedPackage.manifest || {};\n if (requestedVersion) {\n try {\n const versionedAppManifest = await this.applicationService.getAppManifest(\n selectedPackage,\n requestedVersion\n );\n manifest = versionedAppManifest;\n } catch (ex) {\n throw new EcosystemError(ERROR_TYPE.VERSION_NOT_FOUND);\n }\n }\n\n cleanedApp.manifest = manifest;\n cleanedApp.manifest.isPackage = false;\n cleanedApp.manifest.source = selectedPackage.id;\n\n return await this.applicationService\n .binary(id)\n .updateFiles([{ path: CUMULOCITY_JSON, contents: JSON.stringify(cleanedApp) }]);\n }\n\n /**\n * Creates object containing properties for filtering applications on lists.\n *\n * @param {object} app Application to create filter properties from.\n * @returns {object} Properties to filter by applications list.\n */\n getAppFilterProps(app: IApplication): AppFilterProps {\n return {\n type: this.pluginService.getPackageType(app),\n availability: this.getAppState(app)?.label,\n content: this.getPackageContentState(app)?.label\n };\n }\n\n private checkIfAppNameKeyPathExists(\n existingApps: IApplication[],\n app: IApplication,\n retryNo?: number\n ): IApplication {\n if (isUndefined(retryNo)) {\n return existingApps.find(\n existingApp =>\n existingApp.name === app.name ||\n existingApp.key === app.key ||\n existingApp.contextPath === app.contextPath\n );\n }\n return existingApps.find(\n existingApp =>\n existingApp.name === app.name ||\n existingApp.key === app.key ||\n existingApp.contextPath === app.contextPath ||\n existingApp.name === [app.name, retryNo].join('-') ||\n existingApp.key === [app.key, retryNo].join('-') ||\n existingApp.contextPath === [app.contextPath, retryNo].join('-')\n );\n }\n\n private async showModal(\n packageType: Partial<IManifest> | ApplicationPlugin,\n isPlugin: boolean,\n apiVersion: string,\n sdkVersion?: string\n ): Promise<boolean> {\n try {\n const messages = {\n plugin: {\n title: gettext('Plugin installation'),\n body: sdkVersion\n ? gettext(\n 'The current version of the plugin that you are trying to install does not satisfy the requirements for the following API version \"{{ apiVersion }}\" or SDK version \"{{ sdkVersion }}\". Do you want to proceed?'\n )\n : gettext(\n 'The current version of the plugin that you are trying to install does not satisfy the requirements for the following API version \"{{ apiVersion }}\". Do you want to proceed?'\n )\n },\n blueprint: {\n title: gettext('Blueprint installation'),\n body: sdkVersion\n ? gettext(\n 'The current version of the blueprint that you are trying to install does not satisfy the requirements for the following API version \"{{ apiVersion }}\" or SDK version \"{{ sdkVersion }}\". Do you want to proceed?'\n )\n : gettext(\n 'The current version of the blueprint that you are trying to install does not satisfy the requirements for the following API version \"{{ apiVersion }}\". Do you want to proceed?'\n )\n }\n };\n const entityType = isPlugin ? 'plugin' : 'blueprint';\n const selectedMessages = messages[entityType];\n const translatedBody = this.translateService.instant(selectedMessages.body, {\n name: packageType.name,\n apiVersion,\n sdkVersion\n });\n await this.modal.confirm(selectedMessages.title, translatedBody, 'warning', {\n ok: gettext('Continue'),\n cancel: gettext('Cancel')\n });\n } catch {\n // modal canceled\n return false;\n }\n\n return true;\n }\n\n private async getPlatformVersion() {\n return await this.appStateService.state$\n .pipe(\n take(1),\n map(state => state?.versions?.backend),\n filter(backendVersion => !!backendVersion)\n )\n .toPromise();\n }\n\n private getAppKey(appModel: IApplication, name: string): string {\n let key = appModel?.key;\n if (!key) {\n key = `${kebabCase(name)}-key`;\n }\n return key;\n }\n\n private getContextPath(appModel: IApplication, name: string): string {\n return appModel?.contextPath || name.toLowerCase();\n }\n\n private removeForbiddenCharacters(str: string): string {\n return str.replace(/[^a-zA-Z0-9-_]/g, '');\n }\n\n private isCurrentApp(app: IApplication): boolean {\n const currentApp = this.appStateService.state.app;\n return currentApp.contextPath === app.contextPath;\n }\n\n private getCumulocityJson$(archive: File): Observable<any> {\n return this.zipService.getJsonData(archive, {\n filename: CUMULOCITY_JSON\n });\n }\n\n private getAppType(archive: File): Promise<ApplicationType> {\n return this.getCumulocityJson$(archive)\n .toPromise()\n .then(\n data =>\n get(data, 'type') ||\n (get(data, 'apiVersion') ? ApplicationType.MICROSERVICE : ApplicationType.HOSTED)\n )\n .catch(() => ApplicationType.HOSTED);\n }\n\n private getBaseNameFromArchiveOrAppModel(\n archive: any,\n appType: ApplicationType,\n appModel?: IApplication\n ): string {\n let baseName = appModel?.name || archive.name.replace(/\\.zip$/i, '');\n if (appType === 'MICROSERVICE') {\n baseName = this.removeVersionFromName(baseName);\n }\n return baseName;\n }\n\n private removeAppProperties(app: IApplication): IApplication {\n const tempApp = cloneDeep(app);\n const propertiesToRemove = ['id', 'owner', 'activeVersionId', 'self', 'type'];\n\n propertiesToRemove.forEach(prop => delete tempApp[prop]);\n return tempApp;\n }\n\n private async getUploadOverrides(\n archive: File,\n app: IApplication\n ): Promise<IUploadParamsOverride> {\n const { version } = await this.getCumulocityJson$(archive).toPromise();\n const isInitialPackage = app.applicationVersions?.length === 0;\n return {\n listUrl: 'versions',\n headers: {\n Accept: 'application/vnd.com.nsn.cumulocity.applicationVersion+json;charset=UTF-8;ver=0.9'\n },\n bodyFileProperty: 'applicationBinary',\n requestBody: {\n applicationVersion: { version, ...(isInitialPackage && { tags: ['latest'] }) }\n }\n };\n }\n\n private removeVersionFromName(name: string) {\n const versionRegExp = /-\\d+\\.\\d+\\.\\d+(\\.\\d+)?(-\\d+)?(.*)$/;\n return name.replace(versionRegExp, '');\n }\n\n private isNameLengthExceeded(name, appType) {\n return name.length > MICROSERVICE_NAME_MAX_LENGTH && appType === ApplicationType.MICROSERVICE;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ApplicationAvailability, ApplicationService, IApplication } from '@c8y/client';\nimport { TranslateService } from '@ngx-translate/core';\nimport {\n AlertService,\n AppStateService,\n GainsightService,\n ModalService,\n gettext\n} from '@c8y/ngx-components';\nimport { PRODUCT_EXPERIENCE_ECOSYSTEM } from './ecosystem.model';\n\n@Injectable({ providedIn: 'root' })\nexport class PackageAvailabilityService {\n CURRENT_LOCATION = location.href;\n availabilities = [\n { label: gettext('Private`package availability`'), value: ApplicationAvailability.PRIVATE },\n { label: gettext('Market`package availability`'), value: ApplicationAvailability.MARKET },\n { label: gettext('Shared`package availability`'), value: ApplicationAvailability.SHARED }\n ];\n\n constructor(\n private appState: AppStateService,\n private alert: AlertService,\n private modal: ModalService,\n private application: ApplicationService,\n private gainsightService: GainsightService,\n private translateService: TranslateService\n ) {}\n\n async askIfAvailabilityShouldBeSetTo(\n applicationPackage: IApplication,\n availability: ApplicationAvailability\n ): Promise<IApplication> {\n // availability does not matter for tenant that do not have or can create subtenants\n if (!this.appState.currentTenant.value?.allowCreateTenants) {\n return applicationPackage;\n }\n try {\n await this.openAvailabilityModal(availability);\n // user confirmed changing availability\n return await this.setAvailability(applicationPackage, availability);\n } catch {\n // user canceled changing availability\n return applicationPackage;\n }\n }\n\n async setAvailability(\n applicationPackage: IApplication,\n availability: ApplicationAvailability\n ): Promise<IApplication> {\n try {\n const { data: app } = await this.application.updateApplicationAvailability(\n applicationPackage,\n availability\n );\n this.alert.success(gettext('Updated package availability.'));\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.AVAILABILITY,\n {\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.AVAILABILITY_CHANGE,\n result: availability.toString().toLocaleLowerCase(),\n url: this.CURRENT_LOCATION\n }\n );\n return app;\n } catch (e) {\n this.alert.warning(gettext('Failed to set package availability.'));\n this.alert.addServerFailure(e);\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.AVAILABILITY,\n {\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.AVAILABILITY_CHANGE,\n result: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.RESULTS.SERVER_FAILURE,\n url: this.CURRENT_LOCATION\n }\n );\n return applicationPackage;\n }\n }\n\n private getConfirmationBody(availability: ApplicationAvailability): string {\n switch (availability) {\n case ApplicationAvailability.SHARED:\n return gettext(\n 'Do you want to set the package availability to \"Shared\"? This will make the package available to all subtenants without explicitly subscribing the package.'\n );\n case ApplicationAvailability.MARKET:\n return gettext(\n 'Do you want to set the package availability to \"Market\"? This will make the package available to your own tenant and needs to be subscribed to subtenants individually.'\n );\n case ApplicationAvailability.PRIVATE:\n return gettext(\n 'Do you want to set the package availability to \"Private\"? This will make the package only available to your own tenant.'\n );\n default:\n return '';\n }\n }\n\n private async openAvailabilityModal(availability: ApplicationAvailability) {\n const body = this.getConfirmationBody(availability);\n const availabilityLabel = this.availabilities.find(obj => obj.value === availability).label;\n\n await this.modal.confirm(gettext('Package availability'), body, 'info', {\n ok: this.translateService.instant(gettext('Set to \"{{ packageAvailability }}\"'), {\n packageAvailability: this.translateService.instant(availabilityLabel)\n }),\n cancel: gettext('Cancel')\n });\n }\n}\n","import { Component, Input, ViewChild } from '@angular/core';\nimport { ApplicationService, IApplication, ApplicationAvailability } from '@c8y/client';\nimport { AlertService, DropAreaComponent, WizardComponent, gettext } from '@c8y/ngx-components';\nimport { BehaviorSubject } from 'rxjs';\nimport { EcosystemService } from './ecosystem.service';\nimport { ERROR_MESSAGES } from './ecosystem.constants';\nimport { TranslateService } from '@ngx-translate/core';\nimport { PackageAvailabilityService } from './package-availability.service';\nimport { SupportedIconsSuggestions } from '@c8y/ngx-components/icon-selector/icons';\n\n@Component({\n selector: 'c8y-add-application',\n templateUrl: './add-application.component.html'\n})\nexport class AddApplicationComponent {\n @Input() headerText: string;\n @Input() headerIcon: SupportedIconsSuggestions;\n @Input() successText: string;\n @Input() createApplicationHandler: any;\n @Input() uploadApplicationHandler: any;\n @Input() canGoBack = false;\n @Input() applicationType: 'application' | 'package' = 'application';\n\n @ViewChild(DropAreaComponent) dropAreaComponent;\n\n isLoading: boolean;\n isAppCreated: boolean;\n createdApp: IApplication;\n canOpenInBrowser = false;\n errorMessage: string;\n selectedAvailability = ApplicationAvailability.PRIVATE;\n availabilityHelpPopoverText = gettext(`\n <p class=\"m-b-8\"><b>Shared</b> availability will make the package available to all subtenants without explicitly subscribing the package.</p>\n <p class=\"m-b-8\"><b>Market</b> availability will make the package available to your own tenant and needs to be subscribed to subtenants individually.</p>\n <p class=\"m-b-8\"><b>Private</b> availability will make the package only available to your own tenant.</p>\n `);\n private uploadCanceled = false;\n\n constructor(\n private ecosystemService: EcosystemService,\n private alertService: AlertService,\n private applicationService: ApplicationService,\n private wizardComponent: WizardComponent,\n private translateService: TranslateService,\n private packageAvailability: PackageAvailabilityService\n ) {}\n\n get progress(): BehaviorSubject<number> {\n return this.ecosystemService.progress;\n }\n\n onFileDroppedEvent(event) {\n if (event && event.length > 0) {\n const file = event[0].file;\n this.onFile(file);\n }\n }\n\n async onFile(file: File) {\n this.isLoading = true;\n this.errorMessage = null;\n this.progress.next(0);\n\n try {\n this.createdApp = await this.createApplicationHandler(file);\n if (this.applicationType === 'package') {\n this.createdApp = await this.packageAvailability.setAvailability(\n this.createdApp,\n this.selectedAvailability\n );\n }\n await this.uploadApplicationHandler(file, this.createdApp);\n this.canOpenInBrowser = this.ecosystemService.canOpenAppInBrowser(this.createdApp);\n this.isAppCreated = true;\n } catch (ex) {\n this.ecosystemService.cancelAppCreation(this.createdApp);\n this.createdApp = null;\n this.dropAreaComponent.onDelete();\n // prepare translation of static message if it exists\n const staticErrorMessage =\n ERROR_MESSAGES[ex.message] && this.translateService.instant(ERROR_MESSAGES[ex.message]);\n // if there is no static message, use dynamic one from the exception\n this.errorMessage = staticErrorMessage ?? ex.message;\n if (!this.errorMessage && !this.uploadCanceled) {\n this.alertService.addServerFailure(ex);\n }\n }\n this.progress.next(100);\n this.isLoading = false;\n }\n\n getHref(app: IApplication): string {\n return this.applicationService.getHref(app);\n }\n\n cancel() {\n this.cancelFileUpload();\n this.wizardComponent.close();\n }\n\n done() {\n this.wizardComponent.close();\n }\n\n back() {\n this.wizardComponent.reset();\n }\n\n private cancelFileUpload() {\n this.uploadCanceled = true;\n this.ecosystemService.cancelAppCreation(this.createdApp);\n this.createdApp = null;\n }\n}\n","<c8y-wizard-header>\n <i [c8yIcon]=\"headerIcon\"></i>\n <h4 id=\"modal-title\">{{ headerText | translate }}</h4>\n</c8y-wizard-header>\n\n<c8y-wizard-body>\n <p class=\"p-16 text-center text-medium separator-bottom sticky-top bg-component\">\n {{ 'Upload a *.zip file' | translate }}\n </p>\n <c8y-form-group\n class=\"m-t-16 m-l-auto m-r-auto\"\n style=\"max-width: 265px\"\n id=\"modal-body\"\n *ngIf=\"!isAppCreated; else appCreated\"\n [hasError]=\"!!errorMessage\"\n >\n <c8y-drop-area\n class=\"drop-area\"\n (dropped)=\"onFileDroppedEvent($event)\"\n [accept]=\"'.zip'\"\n [loading]=\"isLoading\"\n [maxAllowedFiles]=\"1\"\n [progress]=\"progress | async\"\n ></c8y-drop-area>\n <c8y-messages>\n <c8y-message *ngIf=\"errorMessage\">\n {{ errorMessage | translate }}\n </c8y-message>\n </c8y-messages>\n </c8y-form-group>\n <div class=\"card-block\" *ngIf=\"applicationType === 'package'\">\n <c8y-form-group>\n <label\n class=\"m-r-8 d-inline-block\"\n id=\"availabilitySelectorLabel\"\n for=\"availabilitySelector\"\n >\n {{ 'Select extension availability' | translate }}\n </label>\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"availabilityHelpPopover\"\n placement=\"top\"\n triggers=\"focus\"\n type=\"button\"\n ></button>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"availabilitySelector\"\n name=\"availabilitySelector\"\n [(ngModel)]=\"selectedAvailability\"\n >\n <option\n *ngFor=\"let availability of packageAvailability.availabilities\"\n [ngValue]=\"availability.value\"\n >\n {{ availability.label | translate }}\n </option>\n </select>\n </div>\n </c8y-form-group>\n </div>\n <ng-template #appCreated>\n <div\n class=\"d-flex a-i-center j-c-center\"\n style=\"min-height: 285px\"\n >\n <c8y-operation-result\n class=\"lead\"\n type=\"success\"\n text=\"{{ successText | translate }}\"\n [vertical]=\"true\"\n [size]=\"84\"\n ></c8y-operation-result>\n </div>\n </ng-template>\n <ng-template #availabilityHelpPopover>\n <div [innerHtml]=\"availabilityHelpPopoverText | translate\"></div>\n </ng-template>\n</c8y-wizard-body>\n\n<c8y-wizard-footer>\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Back' | translate }}\"\n type=\"button\"\n (click)=\"back()\"\n *ngIf=\"!isAppCreated && canGoBack\"\n translate\n >\n Back\n </button>\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n (click)=\"cancel()\"\n *ngIf=\"!isAppCreated\"\n translate\n >\n Cancel\n </button>\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Done' | translate }}\"\n type=\"button\"\n (click)=\"done()\"\n *ngIf=\"isAppCreated\"\n translate\n >\n Done\n </button>\n <a\n class=\"btn btn-primary\"\n title=\"{{ 'Open' | translate }}\"\n target=\"_blank\"\n (click)=\"$event.stopPropagation()\"\n *ngIf=\"isAppCreated && canOpenInBrowser\"\n [href]=\"getHref(createdApp)\"\n rel=\"noopener noreferrer\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"external-link\"\n ></i>\n {{ 'Open' | translate }}\n </a>\n</c8y-wizard-footer>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { PackageType } from '@c8y/ngx-components';\nimport { PACKAGE_TYPE_LABELS } from './ecosystem.constants';\n\n@Pipe({ name: 'translatePackageLabel' })\nexport class TranslatePackageLabelPipe implements PipeTransform {\n constructor(private translate: TranslateService) {}\n\n transform(\n rawPackageLabel: PackageType.OFFICIAL | PackageType.COMMUNITY | PackageType.ARCHIVED | string\n ): string {\n const isOneOfTheKnownOnes = !!PACKAGE_TYPE_LABELS[rawPackageLabel?.toUpperCase()];\n if (isOneOfTheKnownOnes) {\n return this.translate.instant(PACKAGE_TYPE_LABELS[rawPackageLabel?.toUpperCase()].label);\n }\n return rawPackageLabel;\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { ApplicationService, IApplication, IApplicationVersion } from '@c8y/client';\nimport {\n AlertService,\n GainsightService,\n gettext,\n PackageType,\n PluginsService,\n Wizard,\n WizardComponent,\n WizardConfig,\n WizardModalService\n} from '@c8y/ngx-components';\nimport { ModalOptions } from 'ngx-bootstrap/modal';\nimport { BehaviorSubject } from 'rxjs';\nimport { EcosystemService } from './ecosystem.service';\nimport { PRODUCT_EXPERIENCE_ECOSYSTEM } from './ecosystem.model';\nimport { DuplicateApplicationComponent } from './duplicate-application/duplicate-application.component';\nimport { APP_STATE, ApplicationState, PACKAGE_TYPE_LABELS } from './ecosystem.constants';\n\n@Component({\n selector: 'c8y-application-card',\n templateUrl: './application-card.component.html'\n})\nexport class ApplicationCardComponent implements OnInit {\n CURRENT_LOCATION = location.href;\n\n @Input() app: IApplication;\n @Input() canEdit = true;\n @Output() onAppDeleted: EventEmitter<void> = new EventEmitter();\n @Output() onAppCloned: EventEmitter<void> = new EventEmitter();\n appState: ApplicationState;\n packageContentState: ApplicationState;\n packageType: PackageType;\n canOpenInBrowser: boolean;\n disableOpenInBrowser: boolean;\n canDelete: boolean;\n isPackage: boolean;\n isPlugin: boolean;\n isFeature: boolean;\n isExternal: boolean;\n isMicroservice: boolean;\n canClone: boolean;\n isUnpacked: boolean;\n shouldUpgradePackage: boolean;\n blueprintApplicationVersion: IApplicationVersion[];\n latestApplicationVersion: IApplicationVersion;\n isShowVersion: boolean;\n isOwnedByManagementTenant: boolean;\n get openButtonTitle() {\n return !this.disableOpenInBrowser\n ? gettext('Open')\n : gettext('This application is overridden.');\n }\n\n readonly packageTypeLabels = PACKAGE_TYPE_LABELS;\n readonly PACKAGE_TYPE = PackageType;\n readonly UNPACKED_LABEL = APP_STATE.UNPACKED.label;\n readonly CANNOT_DELETE_HINT = gettext(\n `Subscribed or current applications can't be deleted. Delete the application on the parent tenant or unsubscribe it from the current.`\n );\n readonly PACKAGE_CONTENT_UNDETERMINED_LABEL = gettext(\n 'Package contents could not be determined.'\n );\n\n constructor(\n private applicationService: ApplicationService,\n private ecosystemService: EcosystemService,\n private alertService: AlertService,\n private router: Router,\n private wizardModalService: WizardModalService,\n private alert: AlertService,\n private pluginService: PluginsService,\n private gainsightService: GainsightService\n ) {}\n\n async ngOnInit() {\n this.appState = this.ecosystemService.getAppState(this.app);\n this.canOpenInBrowser = this.ecosystemService.canOpenAppInBrowser(this.app);\n this.packageType = this.pluginService.getPackageType(this.app);\n this.disableOpenInBrowser =\n this.canOpenInBrowser && (await this.ecosystemService.isOverwrittenByCustomApp(this.app));\n this.canDelete = await this.ecosystemService.canDeleteApp(this.app);\n this.isPackage = this.ecosystemService.isPackage(this.app);\n this.packageContentState = this.ecosystemService.getPackageContentState(this.app);\n this.isPlugin = this.ecosystemService.isPlugin(this.app);\n this.isFeature = this.ecosystemService.isFeature(this.app);\n this.isMicroservice = this.ecosystemService.isMicroservice(this.app);\n this.isExternal = this.ecosystemService.isExternal(this.app);\n this.canClone = !this.isMicroservice && !this.isPlugin;\n this.isUnpacked = this.ecosystemService.isUnpacked(this.app);\n this.isShowVersion = this.shouldShowVersion();\n await this.applicationUpdateCheck();\n }\n\n shouldShowVersion() {\n return !!this.app.manifest?.version;\n }\n\n detail() {\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.APPLICATION_CARD,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.APPLICATION_CARD,\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.EDIT,\n url: this.CURRENT_LOCATION\n }\n );\n\n if (this.isMicroservice) {\n this.router.navigateByUrl(`/ecosystem/microservice/microservices/${this.app.id}`);\n return;\n }\n\n if (this.isPackage) {\n this.router.navigateByUrl(`/ecosystem/extension/extensions/${this.app.id}`);\n return;\n }\n\n if (this.isFeature) {\n this.router.navigateByUrl(`/ecosystem/application/features/${this.app.id}`);\n return;\n }\n\n this.router.navigateByUrl(`/ecosystem/application/applications/${this.app.id}`);\n }\n\n openApp() {\n this.ecosystemService.openApp(this.app);\n }\n\n async delete() {\n try {\n await this.ecosystemService.deleteApp(this.app);\n this.onAppDeleted.emit();\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.APPLICATION_CARD,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.APPLICATION_CARD,\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.DELETE,\n url: this.CURRENT_LOCATION\n }\n );\n } catch (ex) {\n if (ex) {\n this.alertService.addServerFailure(ex);\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.APPLICATION_CARD,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.APPLICATION_CARD,\n result: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.RESULTS.SERVER_FAILURE,\n url: this.CURRENT_LOCATION\n }\n );\n }\n }\n }\n\n async clone() {\n const wizardConfig: WizardConfig = {\n headerText: 'Add Application',\n headerIcon: 'c8y-atom'\n };\n\n const initialState: Wizard<DuplicateApplicationComponent> = {\n wizardConfig,\n componentInitialState: {\n selectedApp: new BehaviorSubject(this.app)\n },\n id: 'duplicateApplication'\n };\n\n const modalOptions: ModalOptions<WizardComponent> = { initialState };\n\n const modalRef = this.wizardModalService.show(modalOptions);\n modalRef.content.onClose.subscribe(() => {\n this.onAppCloned.next();\n });\n\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.APPLICATION_CARD,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.APPLICATION_CARD,\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.CLONE,\n url: this.CURRENT_LOCATION\n }\n );\n }\n\n private async applicationUpdateCheck(): Promise<void> {\n if (this.app.manifest?.source) {\n try {\n this.blueprintApplicationVersion = (\n await this.applicationService.listVersions(this.app.manifest?.source)\n ).data;\n\n this.latestApplicationVersion = this.ecosystemService.getApplicationVersionObjectByTag(\n this.blueprintApplicationVersion,\n 'latest'\n );\n this.shouldUpgradePackage = this.ecosystemService.shouldUpgradePackage(\n this.app.manifest?.version,\n this.latestApplicationVersion\n );\n } catch (error) {\n if (!this.blueprintApplicationVersion) {\n return;\n }\n this.alert.addServerFailure(error);\n }\n }\n }\n}\n","<div\n class=\"card pointer card--d-col notFeature\"\n data-cy=\"application-card--extensions-list\"\n *ngIf=\"!isFeature\"\n>\n <div\n class=\"card-block text-center card-column-40\"\n data-cy=\"application-card--package-name\"\n (click)=\"detail()\"\n >\n <button\n class=\"card__ribbon btn-clean\"\n [attr.aria-label]=\"\n (app.label || app.manifest?.label | translatePackageLabel) +\n ': ' +\n (packageTypeLabels[packageType].tooltip | translate)\n \"\n tooltip=\"{{ packageTypeLabels[packageType].tooltip | translate }}\"\n placement=\"right\"\n type=\"button\"\n *ngIf=\"packageType !== PACKAGE_TYPE.CUSTOM\"\n [delay]=\"500\"\n >\n <span\n [ngClass]=\"{\n 'bg-info': packageType === PACKAGE_TYPE.COMMUNITY,\n 'bg-primary': packageType === PACKAGE_TYPE.OFFICIAL,\n 'bg-warning': packageType === PACKAGE_TYPE.ARCHIVED\n }\"\n >\n {{ app.label || app.manifest?.label | translatePackageLabel }}\n </span>\n </button>\n <div class=\"card-appicon\">\n <c8y-app-icon\n *ngIf=\"!isPackage && !isFeature && !isMicroservice && !isExternal\"\n [app]=\"app\"\n [contextPath]=\"app.contextPath\"\n [name]=\"app.name\"\n ></c8y-app-icon>\n <i\n c8yIcon=\"big-parcel\"\n *ngIf=\"isPackage\"\n ></i>\n <i\n c8yIcon=\"microchip\"\n *ngIf=\"isMicroservice\"\n ></i>\n <i\n c8yIcon=\"globe1\"\n *ngIf=\"isExternal\"\n ></i>\n </div>\n <div style=\"line-height: 1.3\">\n <p class=\"e2e-appCardName text-medium text-break-word\">\n {{ app | humanizeAppName | async }}\n </p>\n <ng-container *ngIf=\"isShowVersion\">\n <p class=\"small text-muted\">\n <em>{{ app.manifest.version }}</em>\n <button\n class=\"btn-clean m-l-4\"\n [attr.aria-label]=\"'Update available' | translate\"\n [tooltip]=\"'Update available' | translate\"\n *ngIf=\"shouldUpgradePackage && isUnpacked\"\n >\n <i\n class=\"text-warning icon-16\"\n c8yIcon=\"exclamation-triangle\"\n ></i>\n </button>\n </p>\n </ng-container>\n <p\n class=\"small text-break-word\"\n *ngIf=\"app.manifest?.author\"\n >\n {{ app.manifest.author }}\n </p>\n </div>\n </div>\n <div\n class=\"card-block p-0 no-min-height card--d-col card-column-80 flex-grow\"\n (click)=\"detail()\"\n >\n <div class=\"card-block no-min-height p-t-0 p-b-0 card-column-80\">\n <div class=\"text-center-grid\">\n <div class=\"p-b-8 card-hidden-grid\"></div>\n <p\n class=\"small l-h-tight p-b-8 p-l-0 p-r-0 text-break-word\"\n *ngIf=\"app.description || app.manifest?.description\"\n >\n {{ app.description || app.manifest?.description | translate }}\n </p>\n <p\n class=\"small l-h-tight p-b-8 p-l-0 p-r-0\"\n *ngIf=\"!app.description && !app.manifest?.description\"\n >\n <em class=\"text-muted\">{{ 'No description available.' | translate }}</em>\n </p>\n </div>\n </div>\n <div\n class=\"card-block no-min-height p-t-0 p-b-0 d-flex card-column-20 text-center-grid flex-wrap gap-8\"\n >\n <button\n class=\"btn-clean\"\n [attr.aria-label]=\"\n ((isUnpacked ? UNPACKED_LABEL : appState?.label) | translate) +\n ': ' +\n (appState?.tooltip | translate)\n \"\n [tooltip]=\"appState?.tooltip | translate\"\n placement=\"top\"\n [delay]=\"500\"\n >\n <span\n class=\"label\"\n [ngClass]=\"appState?.class\"\n >\n {{ appState?.label | translate }}\n </span>\n </button>\n <button\n class=\"btn-clean\"\n [attr.aria-label]=\"\n (packageContentState?.label | translate) +\n ': ' +\n (packageContentState?.tooltip\n ? packageContentState?.tooltip\n : PACKAGE_CONTENT_UNDETERMINED_LABEL) | translate\n \"\n [tooltip]=\"\n (packageContentState?.tooltip\n ? packageContentState?.tooltip\n : PACKAGE_CONTENT_UNDETERMINED_LABEL\n ) | translate\n \"\n placement=\"top\"\n *ngIf=\"isPackage\"\n >\n <span\n class=\"label\"\n [ngClass]=\"packageContentState?.class ? packageContentState?.class : 'label-danger'\"\n >\n {{\n packageContentState?.label || packageTypeLabels[PACKAGE_TYPE.UNKNOWN].label | translate\n }}\n </span>\n </button>\n </div>\n <div class=\"card-footer no-min-height p-t-0 p-b-0 card-column-20 text-center-grid\">\n <div class=\"p-b-16 card-hidden-list\"></div>\n <button\n class=\"btn btn-sm btn-default\"\n [title]=\"openButtonTitle | translate\"\n type=\"button\"\n (click)=\"openApp(); $event.stopPropagation()\"\n *ngIf=\"canOpenInBrowser\"\n [disabled]=\"disableOpenInBrowser\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"external-link\"\n ></i>\n {{ 'Open' | translate }}\n </button>\n <div class=\"p-b-32 card-hidden-list\"></div>\n </div>\n </div>\n <div class=\"p-r-40 card-hidden-grid\"></div>\n <div\n class=\"card-actions m-t-0\"\n *ngIf=\"canEdit || canOpenInBrowser || canDelete\"\n >\n <div\n class=\"dropdown\"\n #appCardDropdown=\"bs-dropdown\"\n dropdown\n [cdkTrapFocus]=\"appCardDropdown.isOpen\"\n >\n <button\n class=\"dropdown-toggle c8y-dropdown\"\n title=\"{{ 'Settings' | translate }}\"\n data-cy=\"application-card--settings-button\"\n type=\"button\"\n dropdownToggle\n >\n <i c8yIcon=\"ellipsis-v\"></i>\n </button>\n <ul\n class=\"dropdown-menu dropdown-menu-right\"\n *dropdownMenu\n >\n <li *ngIf=\"canEdit\">\n <button\n title=\"{{ 'Edit' | translate }}\"\n data-cy=\"application-card--edit-button\"\n (click)=\"detail()\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"pencil\"\n ></i>\n {{ 'Edit' | translate }}\n </button>\n </li>\n <ng-container *c8yIfAllowed=\"['ROLE_APPLICATION_MANAGEMENT_ADMIN']\">\n <li>\n <button\n [title]=\"canDelete ? ('Delete' | translate) : (CANNOT_DELETE_HINT | translate)\"\n type=\"button\"\n data-cy=\"application-card--delete-button\"\n [disabled]=\"!canDelete\"\n (click)=\"delete()\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"delete\"\n ></i>\n {{ 'Delete' | translate }}\n </button>\n </li>\n <li *ngIf=\"canClone\">\n <button\n [title]=\"'Clone`package,verb`' | translate\"\n type=\"button\"\n *ngIf=\"isPackage\"\n (click)=\"clone()\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"copy\"\n ></i>\n {{ 'Clone`package,verb`' | translate }}\n </button>\n <button\n [title]=\"'Clone`application,verb`' | translate\"\n type=\"button\"\n *ngIf=\"!isPackage\"\n (click)=\"clone()\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"copy\"\n ></i>\n {{ 'Clone`application,verb`' | translate }}\n </button>\n </li>\n </ng-container>\n </ul>\n </div>\n </div>\n</div>\n\n<button\n class=\"card pointer card--d-col\"\n type=\"button\"\n (click)=\"detail()\"\n *ngIf=\"isFeature\"\n>\n <div class=\"card-block text-center card-column-40\">\n <div class=\"card-appicon\">\n <c8y-app-icon\n *ngIf=\"!isPackage && !isFeature && !isMicroservice && !isExternal\"\n [app]=\"app\"\n [contextPath]=\"app.contextPath\"\n [name]=\"app.name\"\n ></c8y-app-icon>\n <i c8yIcon=\"tab\"></i>\n </div>\n <div>\n <p\n class=\"e2e-appCardName text-medium\"\n title=\"{{ app | humanizeAppName | async }}\"\n >\n {{ app | humanizeAppName | async }}\n </p>\n <ng-container *ngIf=\"isShowVersion\">\n <p class=\"small text-muted\">\n <em>{{ app.manifest.version }}</em>\n <i\n class=\"text-warning m-l-4\"\n c8yIcon=\"exclamation-triangle\"\n [tooltip]=\"'Update available' | translate\"\n *ngIf=\"shouldUpgradePackage && isUnpacked\"\n ></i>\n </p>\n </ng-container>\n </div>\n </div>\n <div class=\"card-block p-0 no-min-height card--d-col card-column-80 flex-grow\">\n <div class=\"card-block no-min-height p-t-0 p-b-0 card-column-80\">\n <div\n class=\"text-center-grid\"\n *ngIf=\"app.description || app.manifest?.description\"\n >\n <div class=\"p-b-8 card-hidden-grid\"></div>\n <p class=\"small l-h-tight p-b-8 p-l-0 p-r-0\">\n {{ app.description || app.manifest?.description | translate }}\n </p>\n </div>\n </div>\n <div class=\"card-block no-min-height p-t-0 p-b-0 card-column-20 text-center-grid\">\n <span\n class=\"label\"\n [ngClass]=\"appState.class\"\n >\n {{ appState.label | translate }}\n </span>\n </div>\n <div\n class=\"card-block no-min-height p-t-0 p-b-0 card-column-20 text-center-grid\"\n *ngIf=\"isPackage\"\n >\n <span\n class=\"label\"\n [ngClass]=\"packageContentState.class\"\n >\n {{ packageContentState.label | translate }}\n </span>\n </div>\n <div class=\"p-b-32 card-hidden-list\"></div>\n </div>\n</button>\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { IApplication } from '@c8y/client';\n\n@Component({\n selector: 'c8y-application-properties-form',\n templateUrl: './application-properties-form.component.html'\n})\nexport class ApplicationPropertiesFormComponent implements OnChanges {\n formGroup: FormGroup;\n @Input() application: IApplication;\n @Input() disabled = false;\n\n constructor(private formBuilder: FormBuilder) {\n this.initForm();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (\n changes.application &&\n changes.application.currentValue !== changes.application.previousValue\n ) {\n this.setForm(this.application);\n }\n if (changes.disabled && changes.disabled.currentValue !== changes.disabled.previousValue) {\n changes.disabled.currentValue ? this.formGroup.disable() : this.formGroup.enable();\n }\n }\n\n private initForm() {\n this.formGroup = this.formBuilder.group({\n name: [Validators.required, Validators.maxLength(120)],\n key: [Validators.required, Validators.maxLength(120)],\n contextPath: [Validators.required, Validators.maxLength(120)],\n icon: [undefined, [Validators.minLength(1)]]\n });\n }\n\n private setForm(applicationConfig: IApplication) {\n this.formGroup.patchValue({ ...applicationConfig });\n }\n}\n","<form\n class=\"c8y-wizard-form text-left\"\n name=\"appDeployForm\"\n (ngSubmit)=\"(formGroup.valid)\"\n [formGroup]=\"formGroup\"\n novalidate\n>\n <c8y-form-group>\n <label\n for=\"name\"\n translate\n >\n Name\n </label>\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g. My application' | translate }}\"\n name=\"name\"\n type=\"text\"\n required\n formControlName=\"name\"\n />\n </c8y-form-group>\n <c8y-form-group>\n <label\n for=\"key\"\n translate\n >\n Application key\n </label>\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g. my-application-key' | translate }}\"\n name=\"key\"\n type=\"text\"\n required\n formControlName=\"key\"\n />\n </c8y-form-group>\n <c8y-form-group>\n <label\n for=\"contextPath\"\n translate\n >\n Path\n </label>\n <div class=\"input-group\">\n <span class=\"input-group-addon\">/apps/</span>\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g. my-application' | translate }}\"\n name=\"contextPath\"\n type=\"text\"\n required\n formControlName=\"contextPath\"\n />\n </div>\n </c8y-form-group>\n <c8y-form-group>\n <label>{{ 'Select icon' | translate }}</label>\n <c8y-icon-selector-wrapper\n name=\"icon\"\n formControlName=\"icon\"\n ></c8y-icon-selector-wrapper>\n </c8y-form-group>\n</form>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { IApplication } from '@c8y/client';\nimport { C8yStepper, WizardComponent } from '@c8y/ngx-components';\nimport { ApplicationState } from '../../ecosystem.constants';\nimport { EcosystemService } from '../../ecosystem.service';\n\n@Component({\n selector: 'c8y-duplicate-application-list',\n templateUrl: './duplicate-application-list.component.html'\n})\nexport class DuplicateApplicationListComponent {\n @Input() stepper: C8yStepper;\n @Input() existingApps: IApplication[];\n @Output() onSelectedApp = new EventEmitter<IApplication>();\n appState: ApplicationState;\n\n constructor(\n public ecosystemService: EcosystemService,\n private wizardComponent: WizardComponent\n ) {}\n\n select(selectedApp: IApplication) {\n this.onSelectedApp.emit(selectedApp);\n this.stepper.next();\n }\n\n cancel() {\n this.wizardComponent.close();\n }\n\n back() {\n this.wizardComponent.reset();\n }\n}\n","<div class=\"c8y-wizard-list-nav\">\n <button\n (click)=\"select(app)\"\n *ngFor=\"let app of existingApps\"\n class=\"list-group-item text-truncate p-t-8 p-b-8 bg-level-0\"\n type=\"button\"\n >\n <c8y-app-icon\n [app]=\"app\"\n [contextPath]=\"app.contextPath\"\n [name]=\"app.name\"\n class=\"list-group-icon\"\n ></c8y-app-icon>\n <span [innerText]=\"app | humanizeAppName | async\" class=\"pointer\"></span>\n <span [ngClass]=\"ecosystemService.getAppState(app).class\" class=\"label m-l-16\">\n {{ ecosystemService.getAppState(app).label | translate }}\n </span>\n </button>\n</div>\n<c8y-wizard-footer>\n <button (click)=\"back()\" class=\"btn btn-default\" title=\"{{ 'Back' | translate }}\" type=\"button\">\n {{ 'Back' | translate }}\n </button>\n <button\n (click)=\"cancel()\"\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n >\n {{ 'Cancel' | translate }}\n </button>\n</c8y-wizard-footer>\n","import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { ApplicationService, IApplication } from '@c8y/client';\nimport { C8yStepper, GainsightService } from '@c8y/ngx-components';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { distinctUntilKeyChanged, map, tap } from 'rxjs/operators';\nimport { APP_STATE } from '../../ecosystem.constants';\nimport { EcosystemService } from '../../ecosystem.service';\nimport { ApplicationPropertiesFormComponent } from '../../../shared/application-properties-form.component';\nimport { PRODUCT_EXPERIENCE_ECOSYSTEM } from '../../ecosystem.model';\n\n@Component({\n selector: 'c8y-duplicate-application-properties',\n templateUrl: './duplicate-application-properties.component.html'\n})\nexport class DuplicateApplicationPropertiesComponent {\n CURRENT_LOCATION = location.href;\n\n @Input() stepper: C8yStepper;\n @Input() existingApps: IApplication[];\n @Input() selectedApp: BehaviorSubject<IApplication>;\n @Input() isFirstStep = false;\n @Output() duplicatedApp = new EventEmitter<IApplication>();\n @ViewChild(ApplicationPropertiesFormComponent)\n applicationPropertiesForm: ApplicationPropertiesFormComponent;\n newAppConfig: IApplication;\n disableForm = false;\n isSubscribedApp$: Observable<boolean>;\n\n inProgress = false;\n\n constructor(\n private bsModalRef: BsModalRef,\n private ecosystemService: EcosystemService,\n private applicationService: ApplicationService,\n private gainsightService: GainsightService\n ) {}\n\n ngOnInit() {\n this.isSubscribedApp$ = this.selectedApp.pipe(\n distinctUntilKeyChanged('id'),\n map(app => (app ? this.ecosystemService.getAppState(app) === APP_STATE.SUBSCRIBED : true)),\n tap(isSubscribed => {\n this.disableForm = isSubscribed;\n this.getAppConfig();\n })\n );\n this.getAppConfig();\n }\n\n async duplicateApp() {\n const formGroupValue = this.applicationPropertiesForm.formGroup.getRawValue();\n this.inProgress = true;\n let { data: clonedApp } = await this.applicationService.clone(this.selectedApp.value);\n // TODO: remove once MTM-48474 has been merged\n clonedApp = this.ecosystemService.setAvailabilityToPrivateIfNotSetAlready(clonedApp);\n Object.assign(clonedApp, formGroupValue);\n if (formGroupValue.icon) {\n const icon = { class: formGroupValue.icon };\n clonedApp.config = { ...clonedApp.config, icon };\n if (clonedApp.manifest) {\n clonedApp.manifest.icon = icon;\n }\n }\n delete clonedApp.type;\n await this.updateApp(clonedApp);\n this.inProgress = false;\n\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.DUPLICATE_APPLICATION,\n {\n component:\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.DUPLICATE_APPLICATION_PROPERTIES,\n result: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.RESULTS.DUPLICATED,\n url: this.CURRENT_LOCATION\n }\n );\n }\n\n cancel() {\n this.bsModalRef.hide();\n\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.DUPLICATE_APPLICATION,\n {\n component:\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.DUPLICATE_APPLICATION_PROPERTIES,\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.CANCEL,\n url: this.CURRENT_LOCATION\n }\n );\n }\n\n back() {\n this.stepper.previous();\n }\n\n getAppConfig() {\n if (this.disableForm) {\n const { name, key, contextPath } = this.selectedApp.value;\n this.newAppConfig = { name, key, contextPath };\n } else {\n this.newAppConfig = this.ecosystemService.getUniqueAppConfig(\n this.selectedApp.value,\n this.existingApps\n );\n }\n }\n\n private async updateApp(clonedAppConfig: Partial<IApplication>) {\n try {\n const { data: app } = await this.ecosystemService.updateApp(clonedAppConfig, true);\n const manifest = await this.getAppManifest(app);\n if (manifest) {\n await this.updateManifest(app, manifest);\n }\n\n this.duplicatedApp.emit(app);\n this.stepper.next();\n } catch (err) {\n this.inProgress = false;\n }\n }\n\n private async updateManifest(app: IApplication, manifest: any) {\n const keysToUpdate: Array<keyof IApplication> = ['name', 'key', 'contextPath'];\n const someKeyDiffers = keysToUpdate.some(key => app[key] !== manifest[key]);\n if (someKeyDiffers) {\n keysToUpdate.forEach(key => {\n manifest[key] = app[key];\n });\n await this.applicationService.storeAppManifest(app, manifest);\n }\n }\n\n private async getAppManifest(app: IApplication) {\n if (!app?.contextPath) {\n return;\n }\n try {\n const manifest = await this.applicationService.getAppManifest(app);\n return manifest;\n } catch (ex) {\n return;\n }\n }\n}\n","<p\n class=\"p-16 text-center text-medium separator-bottom sticky-top bg-level-0 fit-w\"\n *ngIf=\"!inProgress\"\n>\n {{ 'Provide application details' | translate }}\n</p>\n\n<ng-container *ngIf=\"!inProgress\">\n <label class=\"c8y-switch\" *ngIf=\"isSubscribedApp$ | async\">\n <input type=\"checkbox\" [(ngModel)]=\"disableForm\" (change)=\"getAppConfig()\" />\n <span></span> {{ 'Overrule subscribed application' | translate }}\n </label>\n\n <c8y-application-properties-form\n [application]=\"newAppConfig\"\n class=\"d-block fit-w\"\n [disabled]=\"disableForm\"\n ></c8y-application-properties-form>\n</ng-container>\n<c8y-loading\n *ngIf=\"inProgress\"\n [message]=\"'Duplicating…' | translate\"\n layout=\"application\"\n class=\"text-center d-block\"\n></c8y-loading>\n\n<c8y-wizard-footer>\n <button\n *ngIf=\"!isFirstStep\"\n (click)=\"back()\"\n [disabled]=\"inProgress\"\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Back' | translate }}\"\n >\n {{ 'Back' | translate }}\n </button>\n <button (click)=\"cancel()\" class=\"btn btn-default\" title=\"{{ 'Cancel' | translate }}\">\n {{ 'Cancel' | translate }}\n </button>\n <button\n (click)=\"duplicateApp()\"\n [disabled]=\"inProgress\"\n class=\"btn btn-primary\"\n type=\"button\"\n title=\"{{ 'Duplicate' | translate }}\"\n >\n {{ 'Duplicate' | translate }}\n </button>\n</c8y-wizard-footer>\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { ApplicationService, IApplication } from '@c8y/client';\nimport { C8yStepper, WizardComponent } from '@c8y/ngx-components';\nimport { BehaviorSubject } from 'rxjs';\nimport { EcosystemService } from '../ecosystem.service';\n\n@Component({\n selector: 'c8y-duplicate-application',\n templateUrl: './duplicate-application.component.html'\n})\nexport class DuplicateApplicationComponent implements OnInit {\n @ViewChild(C8yStepper, { static: true })\n stepper: C8yStepper;\n duplicatedApp: IApplication;\n selectedApp: BehaviorSubject<IApplication> = new BehaviorSubject<IApplication>(null);\n existingApps: IApplication[] = [];\n directlyMoveToSecondStep = false;\n noBackButton = false;\n\n constructor(\n private ecosystemService: EcosystemService,\n private applicationService: ApplicationService,\n private wizardComponent: WizardComponent\n ) {}\n\n async ngOnInit() {\n this.existingApps = await this.ecosystemService.getWebApplications();\n if (this.selectedApp.value) {\n this.directlyMoveToSecondStep = true;\n }\n }\n\n onSelectedApp(app: IApplication) {\n this.selectedApp.next(app);\n }\n\n getHref(app: IApplication): string {\n return this.applicationService.getHref(app);\n }\n\n done() {\n this.wizardComponent.close();\n }\n}\n","<c8y-wizard-header>\n <i [c8yIcon]=\"'copy'\"></i>\n <h4\n id=\"modal-title\"\n translate\n >\n Duplicate application\n </h4>\n</c8y-wizard-header>\n\n<c8y-wizard-body id=\"modal-body\">\n <c8y-stepper\n [disableDefaultIcons]=\"{ edit: true, done: false }\"\n [customClasses]=\"['hidden']\"\n linear\n >\n <!-- 1st step -->\n <cdk-step *ngIf=\"!directlyMoveToSecondStep\">\n <p class=\"p-16 text-center text-medium separator-bottom sticky-top bg-level-0\">\n {{ 'Select application to duplicate' | translate }}\n </p>\n <c8y-duplicate-application-list\n class=\"d-block\"\n style=\"min-height: 257px\"\n (onSelectedApp)=\"onSelectedApp($event)\"\n *ngIf=\"stepper.selectedIndex === 0\"\n [existingApps]=\"existingApps\"\n [stepper]=\"stepper\"\n ></c8y-duplicate-application-list>\n </cdk-step>\n <!-- 2nd step -->\n <cdk-step>\n <c8y-duplicate-application-properties\n class=\"d-flex d-col j-c-center a-i-center\"\n style=\"min-height: 257px\"\n (duplicatedApp)=\"duplicatedApp = $event\"\n *ngIf=\"\n stepper.selectedIndex === 1 || (stepper.selectedIndex === 0 && directlyMoveToSecondStep)\n \"\n [existingApps]=\"existingApps\"\n [selectedApp]=\"selectedApp\"\n [stepper]=\"stepper\"\n [isFirstStep]=\"directlyMoveToSecondStep\"\n ></c8y-duplicate-application-properties>\n </cdk-step>\n <!-- Final step -->\n <cdk-step>\n <ng-container\n *ngIf=\"\n stepper.selectedIndex === 2 || (stepper.selectedIndex === 1 && directlyMoveToSecondStep)\n \"\n >\n <div\n class=\"d-flex a-i-center j-c-center\"\n style=\"min-height: 257px\"\n *ngIf=\"duplicatedApp; else duplicateAppFailed\"\n >\n <c8y-operation-result\n type=\"success\"\n text=\"{{ 'Application created' | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n ></c8y-operation-result>\n </div>\n <ng-template #duplicateAppFailed>\n <div\n class=\"d-flex a-i-center j-c-center\"\n style=\"min-height: 257px\"\n >\n <c8y-operation-result\n type=\"error\"\n text=\"{{ 'Application creation failed' | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n ></c8y-operation-result>\n </div>\n </ng-template>\n </ng-container>\n </cdk-step>\n </c8y-stepper>\n</c8y-wizard-body>\n\n<c8y-wizard-footer *ngIf=\"stepper.selectedIndex === 0 && noBackButton\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n (click)=\"done()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n</c8y-wizard-footer>\n\n<c8y-wizard-footer\n *ngIf=\"stepper.selectedIndex === 2 || (stepper.selectedIndex === 1 && directlyMoveToSecondStep)\"\n>\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Done' | translate }}\"\n type=\"button\"\n (click)=\"done()\"\n >\n {{ 'Done' | translate }}\n </button>\n <a\n class=\"btn btn-primary\"\n title=\"{{ 'Open' | translate }}\"\n target=\"_blank\"\n (click)=\"$event.stopPropagation()\"\n [href]=\"getHref(duplicatedApp)\"\n rel=\"noopener noreferrer\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"external-link\"\n ></i>\n {{ 'Open' | translate }}\n </a>\n</c8y-wizard-footer>\n","import { Component, forwardRef, OnChanges, Input, SimpleChanges } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ApplicationService, IApplicationVersion, IResultList } from '@c8y/client';\nimport { gettext, PluginsService } from '@c8y/ngx-components';\nimport { BehaviorSubject, Observable, combineLatest, merge } from 'rxjs';\nimport { filter, map, shareReplay, switchMap } from 'rxjs/operators';\n\n@Component({\n selector: 'c8y-package-version-select',\n templateUrl: './package-version-select.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => PackageVersionSelectComponent)\n }\n ]\n})\nexport class PackageVersionSelectComponent implements OnChanges, ControlValueAccessor {\n @Input() label = gettext('Use plugin version');\n @Input() packageContextPath: string;\n @Input() packageId: string | number;\n selectedVersion: IApplicationVersion;\n onInput$: BehaviorSubject<string> = new BehaviorSubject<string>('');\n versions$: Observable<IResultList<IApplicationVersion>>;\n isDisabled = false;\n private packageContextPath$ = new BehaviorSubject('');\n private packageId$ = new BehaviorSubject<string | number>('');\n private onChange: (version: IApplicationVersion) => void;\n private onTouched: () => void;\n\n constructor(\n private applicationService: ApplicationService,\n private pluginsService: PluginsService\n ) {\n const packageIdFromContextPath$ = this.packageContextPath$.pipe(\n filter(path => !!path),\n switchMap(path => this.getPackageIdForContextPath(path))\n );\n const packageId$ = merge(packageIdFromContextPath$, this.packageId$.pipe(filter(id => !!id)));\n const packageVersions$ = packageId$.pipe(\n switchMap(id => this.getPackageVersions(id)),\n shareReplay(1)\n );\n this.versions$ = combineLatest([packageVersions$, this.onInput$.asObservable()]).pipe(\n map(([resultList, filterStr]) => this.applyFilterToResultList(resultList, filterStr))\n );\n }\n\n writeValue(obj: any): void {\n this.selectedVersion = obj;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.isDisabled = isDisabled;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.packageContextPath) {\n this.packageContextPath$.next(this.packageContextPath);\n }\n\n if (changes.packageId) {\n this.packageId$.next(this.packageId);\n }\n }\n\n async getPackageVersions(packageId: string | number): Promise<IResultList<IApplicationVersion>> {\n return await this.applicationService.listVersions(packageId);\n }\n\n onVersionSelect(version: IApplicationVersion) {\n this.selectedVersion = version;\n if (this.onChange) {\n this.onChange(version);\n }\n if (this.onTouched) {\n this.onTouched();\n }\n }\n\n private async getPackageIdForContextPath(contextPath: string): Promise<string | number> {\n const { data: application } = await this.applicationService.getManifestOfContextPath(\n contextPath\n );\n const packageAppId = application.id;\n return packageAppId;\n }\n\n private setInitialValueForInput(versions: IApplicationVersion[]) {\n if (!this.selectedVersion && versions.length > 0) {\n const latest = versions.find(v => v.tags.includes('latest'));\n this.selectedVersion = latest || versions[0];\n if (this.onChange) {\n this.onChange(this.selectedVersion);\n }\n }\n }\n\n private filterAppVersions(\n appVersions: IApplicationVersion[],\n filterStr: string\n ): IApplicationVersion[] {\n return filterStr === ''\n ? appVersions\n : appVersions.filter(\n appVersion =>\n appVersion.version.includes(filterStr) ||\n appVersion.tags?.some(tag => tag.includes(filterStr))\n );\n }\n\n private applyFilterToResultList(\n resultList: IResultList<IApplicationVersion>,\n filterStr: string\n ): IResultList<IApplicationVersion> {\n const versionsFilteredByStr = this.filterAppVersions(resultList.data, filterStr);\n const sortedAppVersions = this.pluginsService.sortVersions(\n {\n list: versionsFilteredByStr,\n path: ['version']\n },\n 'desc'\n );\n\n this.setInitialValueForInput(sortedAppVersions);\n return { data: sortedAppVersions, res: resultList.res };\n }\n}\n","<label for=\"packageVersion\">{{ label | translate }}</label>\n<c8y-form-group>\n <c8y-typeahead\n [(ngModel)]=\"selectedVersion\"\n name=\"packageVersion\"\n (onSearch)=\"onInput$.next($event)\"\n placeholder=\"{{ 'Select below or start typing' | translate }}\"\n [displayProperty]=\"'version'\"\n [required]=\"true\"\n [disabled]=\"isDisabled\"\n [hideNew]=\"true\"\n [container]=\"'body'\"\n >\n <c8y-li\n *c8yFor=\"let appVersion of versions$; loadMore: 'auto'; notFound: notFoundTemplate\"\n (click)=\"onVersionSelect(appVersion)\"\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n [active]=\"selectedVersion === appVersion\"\n >\n <c8y-li-icon icon=\"big-parcel\"></c8y-li-icon>\n <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]=\"appVersion.version || '--'\"\n [pattern]=\"onInput$ | async\"\n ></c8y-highlight>\n <span>\n <span *ngFor=\"let tag of appVersion.tags\" class=\"label label-info m-l-4\">\n {{ tag }}\n </span>\n </span>\n </span>\n </c8y-li>\n <ng-template #notFoundTemplate>\n <c8y-li\n class=\"bg-gray-lighter p-8\"\n *ngIf=\"(onInput$ | async)?.length > 0 && (versions$ | async)?.data?.length === 0\"\n >\n <span translate>No match found.</span>\n </c8y-li>\n </ng-template>\n </c8y-typeahead>\n</c8y-form-group>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { IApplication, IApplicationBinary } from '@c8y/client';\nimport { AlertService, gettext } from '@c8y/ngx-components';\nimport { BehaviorSubject } from 'rxjs';\nimport { EcosystemService } from './ecosystem.service';\n\n@Component({\n selector: 'c8y-upload-archive',\n templateUrl: 'upload-archive.component.html'\n})\nexport class UploadArchiveComponent {\n @Input() application: IApplication;\n @Input() uploadNewVersion = false;\n @Input() preUploadCallback: () => Promise<any>;\n @Output() applicationChange: EventEmitter<IApplication> = new EventEmitter<IApplication>();\n @Output() refresh: EventEmitter<any> = new EventEmitter();\n\n archives: IApplicationBinary[] = [];\n toActivateVersionId: string;\n last: IApplicationBinary;\n isLoading: boolean;\n fileList: FileList;\n uploadInProgress = false;\n canReactivate = false;\n\n constructor(\n private ecosystemService: EcosystemService,\n private alertService: AlertService\n ) {}\n\n get uploadProgress(): BehaviorSubject<number> {\n return this.ecosystemService.progress;\n }\n\n async onFileDroppedEvent(event) {\n if (this.preUploadCallback) {\n try {\n await this.preUploadCallback();\n } catch (e) {\n // do nothing, i.e. when confirm modal cancels and throws undefined\n return;\n }\n }\n if (event && event.length > 0) {\n const file = event[0].file;\n this.onFile(file);\n }\n }\n\n private async onFile(file: File): Promise<void> {\n try {\n await this.ecosystemService.validateArchiveToAppCompatibility(file, this.application);\n const isCustomMicroservice = this.ecosystemService.isCustomMicroservice(this.application);\n const isPackage = this.ecosystemService.isPackage(this.application);\n this.archives = isCustomMicroservice\n ? []\n : await this.ecosystemService.listArchives(this.application.id);\n this.archives.sort((a, b) => {\n return (new Date(b.created) as any) - (new Date(a.created) as any);\n });\n this.uploadInProgress = true;\n this.uploadProgress.next(0);\n if (this.archives.length === 6 && !isCustomMicroservice && !isPackage) {\n await this.ecosystemService.removeOldestArchive(this.application, this.archives);\n }\n const app = await this.ecosystemService.uploadArchiveToApp(\n file,\n this.application,\n this.uploadNewVersion\n );\n this.applicationChange.emit(app);\n this.uploadProgress.next(100);\n this.uploadInProgress = false;\n this.refresh.emit();\n if (this.uploadNewVersion) {\n return;\n }\n this.alertService.success(gettext('Archive uploaded and activated.'));\n } catch (ex) {\n this.uploadInProgress = false;\n if (ex === 'cancelled') {\n return;\n }\n this.ecosystemService.alertError(ex);\n }\n }\n}\n","<c8y-drop-area\n (dropped)=\"onFileDroppedEvent($event)\"\n [accept]=\"'.zip'\"\n [loading]=\"uploadInProgress\"\n [maxAllowedFiles]=\"1\"\n [message]=\"'Upload a *.zip file' | translate\"\n [progress]=\"uploadProgress | async\"\n [forceHideList]=\"true\"\n class=\"drop-area-sm\"\n>\n</c8y-drop-area>\n","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup } from '@angular/forms';\nimport { ActivatedRoute, Params, Router } from '@angular/router';\nimport {\n AppStateService,\n FilterInputComponent,\n GainsightService,\n internalApps,\n PackageType\n} from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport { pipe, Subject } from 'rxjs';\nimport { map, takeUntil } from 'rxjs/operators';\nimport { APP_STATE } from '../ecosystem.constants';\nimport { PRODUCT_EXPERIENCE_ECOSYSTEM } from '../ecosystem.model';\nimport { FilterableAppOrPlugin, FilterPipe, PackageFilters } from './list-filters.model';\n\n@Component({\n selector: 'c8y-list-filters',\n templateUrl: './list-filters.component.html'\n})\nexport class ListFiltersComponent implements OnInit {\n @Input() packageTypes: (keyof PackageFilters['type'])[] = [];\n @Input() packageAvailabilities: (keyof PackageFilters['availability'])[] = [];\n @Input() packageContents: (keyof PackageFilters['content'])[] = [];\n @Output() filterPipeChange = new EventEmitter<FilterPipe>();\n @ViewChild(FilterInputComponent) filterInput: FilterInputComponent;\n\n formGroup: ReturnType<ListFiltersComponent['initForm']>;\n chips: [string, FormControl][] = [];\n predefinedFiltersVisible: boolean;\n customFilters = new Map<string, (app: FilterableAppOrPlugin, enabled: boolean) => boolean>();\n currentFilterTerm: string;\n\n private currentLang: string;\n private data: FilterableAppOrPlugin[];\n private currentFiltersState: Partial<PackageFilters>;\n private CURRENT_LOCATION = location.href;\n private destroy$ = new Subject<void>();\n\n constructor(\n private formBuilder: FormBuilder,\n private ui: AppStateService,\n private translateService: TranslateService,\n private gainsightService: GainsightService,\n private router: Router,\n private activatedRoute: ActivatedRoute\n ) {\n this.formGroup = this.initForm();\n }\n\n ngOnInit(): void {\n this.currentFiltersState = this.formGroup.value;\n this.predefinedFiltersVisible =\n this.packageTypes?.length > 0 ||\n this.packageAvailabilities?.length > 0 ||\n this.packageContents?.length > 0;\n this.currentLang = this.ui.state.lang;\n this.subscribeToQueryParams();\n }\n\n setFilterTerm(filterTerm: string): void {\n this.currentFilterTerm = filterTerm;\n this.setPipe();\n\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.FILTER_LIST,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.LIST_FILTERS,\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.SET_FILTER_TERM,\n url: this.CURRENT_LOCATION\n }\n );\n }\n\n applyPredefinedFilters(): void {\n this.currentFiltersState = this.formGroup.value;\n this.setChips();\n this.setPipe();\n\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.FILTER_LIST,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.LIST_FILTERS,\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.SET_PREDEFINED_FILTERS,\n url: this.CURRENT_LOCATION,\n filters: this.currentFiltersState\n }\n );\n }\n\n reset(): void {\n this.formGroup.reset();\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.FILTER_LIST,\n {\n component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.LIST_FILTERS,\n action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.RESET_FILTER,\n url: this.CURRENT_LOCATION\n }\n );\n this.applyPredefinedFilters();\n }\n\n resetAllFilters() {\n this.reset();\n this.filterInput.reset();\n }\n\n toggleDropdown(isOpen: boolean): void {\n if (!isOpen) {\n this.formGroup.patchValue(this.currentFiltersState);\n }\n }\n\n deselectChip(chip: [string, FormControl]): void {\n chip[1].setValue(false);\n this.applyPredefinedFilters();\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n subscribeToQueryParams() {\n this.activatedRoute.queryParams\n .pipe(takeUntil(this.destroy$))\n .subscribe((queryParams: Params) => {\n const filters = this.parseQueryParams(queryParams);\n this.currentFilterTerm = queryParams.filterTerm || '';\n this.formGroup.patchValue(filters);\n this.applyPredefinedFilters();\n });\n }\n\n private setQueryParams() {\n if (!this.currentFiltersState) {\n return;\n }\n this.router.navigate([], {\n queryParams: {\n ...this.simplifyFilterObject(this.currentFiltersState),\n filterTerm: this.currentFilterTerm || null\n }\n });\n }\n\n private parseQueryParams(queryParams: Params): Partial<PackageFilters> {\n const filter: Partial<PackageFilters> = {};\n for (const fullKey in queryParams) {\n const [key, subKey] = fullKey.split('.');\n if (!filter[key]) {\n filter[key] = {};\n }\n filter[key][subKey] = queryParams[fullKey] === 'true';\n }\n return filter;\n }\n\n private simplifyFilterObject(currentFiltersState: Partial<PackageFilters>): Params {\n const keys = Object.keys(currentFiltersState);\n const result = {};\n for (const key of keys) {\n const subKeys = Object.keys(currentFiltersState[key]);\n for (const subKey of subKeys) {\n if (currentFiltersState[key][subKey]) {\n result[`${key}.${subKey}`] = currentFiltersState[key][subKey];\n }\n }\n }\n return result;\n }\n\n private initForm() {\n return this.formBuilder.group({\n type: this.formBuilder.group({\n [PackageType.OFFICIAL]: [false],\n [PackageType.COMMUNITY]: [false]\n }),\n availability: this.formBuilder.group({\n [APP_STATE.SUBSCRIBED.label]: [false],\n [APP_STATE.UNPACKED.label]: [false],\n [APP_STATE.EXTERNAL.label]: [false],\n [APP_STATE.CUSTOM.label]: [false]\n }),\n content: this.formBuilder.group({\n [APP_STATE.PACKAGE_BLUEPRINT.label]: [false],\n [APP_STATE.PACKAGE_PLUGIN.label]: [false]\n }),\n custom: this.formBuilder.group({})\n });\n }\n\n private setPipe(): void {\n this.setQueryParams();\n const filterPipe = pipe(\n map((data: FilterableAppOrPlugin[]) => {\n this.data = data.filter((app: FilterableAppOrPlugin) => {\n let matchesByString;\n if (!this.currentFilterTerm || this.currentFilterTerm.trim().length === 0) {\n matchesByString = true;\n } else {\n const appName =\n this.currentLang === 'en' || !app.name?.length || !internalApps[app.name]\n ? app.name\n : this.translateService.instant(internalApps[app.name]);\n matchesByString =\n this.filterContainString(appName, this.currentFilterTerm) ||\n this.filterContainString(app.description, this.currentFilterTerm);\n }\n\n const matchesByPredefinedProperty =\n this.appMatchesByPredefinedProperty(app, 'type') &&\n this.appMatchesByPredefinedProperty(app, 'availability') &&\n this.appMatchesByPredefinedProperty(app, 'content') &&\n this.appMatchesByPredefinedProperty(app, 'custom');\n\n return matchesByString && matchesByPredefinedProperty;\n });\n return this.data;\n })\n );\n this.filterPipeChange.emit(filterPipe);\n }\n\n private filterContainString(name: string, filterTerm: string): boolean {\n const term = filterTerm.toLowerCase().trim();\n return name && name.toLowerCase().indexOf(term) > -1;\n }\n\n private appMatchesByPredefinedProperty(\n app: FilterableAppOrPlugin,\n property: keyof PackageFilters\n ): boolean {\n if (property === 'custom' && this.currentFiltersState) {\n return Object.entries(this.currentFiltersState[property]).every(([key, value]) =>\n this.customFilters.get(key)(app, value)\n );\n }\n\n // if filter object does not contain property filters or all filters are false, filter is inactive\n const filterForPropertyIsActive =\n this.currentFiltersState?.[property] &&\n !Object.values(this.currentFiltersState[property]).every(v => !v);\n\n if (!filterForPropertyIsActive) {\n return true;\n } else if (!app.filterProps?.[property]) {\n return false;\n } else {\n return this.currentFiltersState[property][app.filterProps[property]];\n }\n }\n\n private setChips(): void {\n this.chips = [];\n Object.values(this.formGroup.controls).forEach((controlsGroup: FormGroup) => {\n Object.entries(controlsGroup.controls).forEach((entry: [string, FormControl]) => {\n if (entry[1].value) {\n this.chips.push(entry);\n }\n });\n });\n }\n}\n","<form\n class=\"d-flex a-i-center\"\n [formGroup]=\"formGroup\"\n>\n <c8y-filter\n [filterTerm]=\"currentFilterTerm\"\n (onSearch)=\"setFilterTerm($event)\"\n ></c8y-filter>\n\n <div\n class=\"dropdown m-l-8 m-r-4\"\n *ngIf=\"predefinedFiltersVisible\"\n dropdown\n (isOpenChange)=\"toggleDropdown($event)\"\n #filtersDropdown=\"bs-dropdown\"\n [cdkTrapFocus]=\"filtersDropdown.isOpen\"\n [insideClick]=\"true\"\n >\n <div class=\"input-group d-inline-flex\">\n <button\n class=\"btn-clean form-control p-l-8 p-r-16 a-s-stretch d-flex a-i-center gap-4 w-auto flex-no-shrink\"\n title=\"{{ 'Filters' | translate }}\"\n dropdownToggle\n >\n <span [ngPlural]=\"chips.length\">\n <ng-template ngPluralCase=\"=0\">\n {{ 'Filters' | translate }}\n </ng-template>\n <ng-template ngPluralCase=\"=1\">\n <span class=\"badge badge-info\">{{ chips.length }}</span>\n {{ 'Filter' | translate }}\n </ng-template>\n <ng-template ngPluralCase=\"other\">\n <span class=\"badge badge-info\">{{ chips.length }}</span>\n {{ 'Filters' | translate }}\n </ng-template>\n </span>\n <span class=\"caret\"></span>\n </button>\n <div\n class=\"input-group-addon p-t-0 p-b-0 d-flex gap-4 a-i-center inner-scroll\"\n *ngIf=\"chips.length > 0\"\n >\n <ng-container *ngFor=\"let chip of chips\">\n <span\n class=\"tag tag--info chip\"\n *ngIf=\"chip[1].value\"\n >\n <button\n class=\"btn btn-xs btn-clean text-10\"\n title=\"{{ 'Remove' | translate }}\"\n type=\"button\"\n (click)=\"deselectChip(chip)\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n {{ chip[0] | translate | titlecase }}\n </span>\n </ng-container>\n </div>\n </div>\n <div\n class=\"dropdown-menu\"\n *dropdownMenu\n >\n <div class=\"dropdown-form\">\n <c8y-form-group\n *ngIf=\"packageTypes.length\"\n formGroupName=\"type\"\n >\n <label class=\"m-b-16\">\n {{ 'Type' | translate }}\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"type | translate\"\n *ngFor=\"let type of packageTypes\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"type\"\n [value]=\"type\"\n />\n <span></span>\n <span>{{ type | translate | titlecase }}</span>\n </label>\n </c8y-form-group>\n\n <c8y-form-group\n *ngIf=\"packageAvailabilities.length\"\n formGroupName=\"availability\"\n >\n <label class=\"m-b-16\">\n {{ 'Availability`of package based on app state`' | translate }}\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"availability | translate\"\n *ngFor=\"let availability of packageAvailabilities\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"availability\"\n [value]=\"availability\"\n />\n <span></span>\n <span>{{ availability | translate }}</span>\n </label>\n </c8y-form-group>\n\n <c8y-form-group\n *ngIf=\"packageContents.length\"\n formGroupName=\"content\"\n >\n <label class=\"m-b-16\">\n {{ 'Content' | translate }}\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"content | translate\"\n *ngFor=\"let content of packageContents\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"content\"\n [value]=\"content\"\n />\n <span></span>\n <span>{{ content | translate }}</span>\n </label>\n </c8y-form-group>\n <c8y-form-group formGroupName=\"custom\">\n <ng-content></ng-content>\n </c8y-form-group>\n </div>\n <div class=\"p-16 d-flex gap-8 separator-top\">\n <button\n class=\"btn btn-default btn-sm flex-grow\"\n title=\"{{ 'Reset' | translate }}\"\n type=\"button\"\n (click)=\"reset(); filtersDropdown.isOpen = false\"\n >\n {{ 'Reset' | translate }}\n </button>\n\n <button\n class=\"btn btn-primary btn-sm flex-grow\"\n title=\"{{ 'Apply' | translate }}\"\n type=\"button\"\n (click)=\"applyPredefinedFilters(); filtersDropdown.isOpen = false\"\n [disabled]=\"formGroup.pristine && formGroup.untouched\"\n >\n {{ 'Apply' | translate }}\n </button>\n </div>\n </div>\n </div>\n</form>\n","import { Component } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { gettext, PackageType } from '@c8y/ngx-components';\nimport { ListFiltersComponent } from '../list-filters/list-filters.component';\nimport { FilterableAppOrPlugin } from '../list-filters/list-filters.model';\n\n@Component({\n selector: 'c8y-archived-filter',\n templateUrl: './archived-filter.component.html'\n})\nexport class ArchivedFilterComponent {\n archivedFormControl: FormControl;\n private readonly filterLabel = gettext('Show archived packages');\n\n constructor(public filterComponent: ListFiltersComponent) {\n this.archivedFormControl = new FormControl();\n (this.filterComponent.formGroup.controls.custom as FormGroup).addControl(\n this.filterLabel,\n this.archivedFormControl\n );\n filterComponent.customFilters.set(\n this.filterLabel,\n (appOrPlugin: FilterableAppOrPlugin, enabled: boolean) => {\n return (\n appOrPlugin.filterProps.type !== PackageType.ARCHIVED ||\n (appOrPlugin.filterProps.type === PackageType.ARCHIVED && enabled)\n );\n }\n );\n }\n}\n","<label class=\"c8y-switch\">\n <input\n type=\"checkbox\"\n checked=\"checked\"\n [formControl]=\"archivedFormControl\"\n />\n <span></span>\n {{ 'Show archived packages' | translate }}\n</label>\n","import { NgModule } from '@angular/core';\nimport { CoreModule, hookWizard } from '@c8y/ngx-components';\nimport { IconSelectorModule } from '@c8y/ngx-components/icon-selector';\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { AddApplicationComponent } from './add-application.component';\nimport { ApplicationCardComponent } from './application-card.component';\nimport { ApplicationPropertiesFormComponent } from './application-properties-form.component';\nimport { UploadArchiveComponent } from './upload-archive.component';\nimport { DuplicateApplicationListComponent } from './duplicate-application/duplicate-application-list/duplicate-application-list.component';\nimport { DuplicateApplicationPropertiesComponent } from './duplicate-application/duplicate-application-properties/duplicate-application-properties.component';\nimport { DuplicateApplicationComponent } from './duplicate-application/duplicate-application.component';\nimport { PackageVersionSelectComponent } from './package-version-select/package-version-select.component';\nimport { EcosystemWizards } from './ecosystem.model';\nimport { TranslatePackageLabelPipe } from './translate-package-label.pipe';\nimport { ListFiltersComponent } from './list-filters/list-filters.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ArchivedFilterComponent } from './archived-filter/archived-filter.component';\n\n@NgModule({\n imports: [\n CoreModule,\n BsDropdownModule,\n TooltipModule,\n A11yModule,\n FormsModule,\n PopoverModule,\n ReactiveFormsModule,\n IconSelectorModule\n ],\n declarations: [\n AddApplicationComponent,\n ApplicationPropertiesFormComponent,\n UploadArchiveComponent,\n ApplicationCardComponent,\n DuplicateApplicationListComponent,\n DuplicateApplicationPropertiesComponent,\n DuplicateApplicationComponent,\n PackageVersionSelectComponent,\n TranslatePackageLabelPipe,\n ListFiltersComponent,\n ArchivedFilterComponent\n ],\n exports: [\n AddApplicationComponent,\n ApplicationPropertiesFormComponent,\n UploadArchiveComponent,\n ApplicationCardComponent,\n DuplicateApplicationListComponent,\n DuplicateApplicationPropertiesComponent,\n DuplicateApplicationComponent,\n PackageVersionSelectComponent,\n TranslatePackageLabelPipe,\n ListFiltersComponent,\n ArchivedFilterComponent\n ],\n providers: [\n hookWizard({\n wizardId: EcosystemWizards.APPLICATION_UPLOAD,\n component: DuplicateApplicationComponent,\n name: 'Duplicate existing application',\n c8yIcon: 'copy'\n }),\n hookWizard({\n wizardId: 'duplicateApplication',\n component: DuplicateApplicationComponent,\n name: 'Duplicate existing application',\n c8yIcon: 'copy'\n })\n ]\n})\nexport class SharedEcosystemModule {}\n","import { ApplicationPlugin, PackageType } from '@c8y/ngx-components';\nimport { Observable, UnaryFunction } from 'rxjs';\nimport { IApplication } from '@c8y/client';\nimport { APP_STATE, ApplicationState } from '../ecosystem.constants';\n\nexport type FilterableAppOrPlugin = (IApplication | ApplicationPlugin) & {\n filterProps?: AppFilterProps;\n};\n\nexport type FilterPipe = UnaryFunction<\n Observable<FilterableAppOrPlugin[]>,\n Observable<FilterableAppOrPlugin[]>\n>;\n\nexport type PackageFilters = {\n type: {\n [PackageType.OFFICIAL]?: boolean;\n [PackageType.COMMUNITY]?: boolean;\n };\n availability: {\n [APP_STATE.SUBSCRIBED.label]?: boolean;\n [APP_STATE.UNPACKED.label]?: boolean;\n [APP_STATE.EXTERNAL.label]?: boolean;\n [APP_STATE.CUSTOM.label]?: boolean;\n };\n content: {\n [APP_STATE.PACKAGE_BLUEPRINT.label]?: boolean;\n [APP_STATE.PACKAGE_PLUGIN.label]?: boolean;\n };\n custom: {\n [key: string]: boolean;\n };\n};\n\nexport type AppFilterProps = {\n type: PackageType;\n availability: ApplicationState['label'];\n content: ApplicationState['label'];\n};\n\nexport const defaultPackageTypes: (keyof PackageFilters['type'])[] = [\n PackageType.OFFICIAL,\n PackageType.COMMUNITY\n];\n\nexport const defaultPackageAvailabilities: (keyof PackageFilters['availability'])[] = [\n APP_STATE.SUBSCRIBED.label,\n APP_STATE.UNPACKED.label,\n APP_STATE.EXTERNAL.label,\n APP_STATE.CUSTOM.label\n];\n\nexport const defaultPackageContents: (keyof PackageFilters['content'])[] = [\n APP_STATE.PACKAGE_BLUEPRINT.label,\n APP_STATE.PACKAGE_PLUGIN.label\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3","i1.EcosystemService","i4","i5.PackageAvailabilityService","i6","i7","i2.EcosystemService","i8","i9.TranslatePackageLabelPipe","i7.ApplicationPropertiesFormComponent","i5","i6.DuplicateApplicationListComponent","i7.DuplicateApplicationPropertiesComponent","i1.ListFiltersComponent"],"mappings":"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"}