@c8y/ngx-components 1016.0.379 → 1016.0.383
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/NOTICES +1 -1
- package/core/range-display/range-display.component.d.ts +19 -1
- package/core/realtime/realtime-subject.service.d.ts +4 -0
- package/core/realtime/realtime.service.d.ts +10 -0
- package/device-protocols/device-protocols.factory.d.ts +14 -0
- package/device-protocols/device-protocols.guard.d.ts +12 -0
- package/device-protocols/device-protocols.module.d.ts +8 -0
- package/device-protocols/device-type-detail-edited.service.d.ts +8 -0
- package/device-protocols/device-type-detail.component.d.ts +12 -0
- package/device-protocols/device-type-detail.directive.d.ts +9 -0
- package/device-protocols/index.d.ts +6 -0
- package/esm2020/core/range-display/range-display.component.mjs +87 -4
- package/esm2020/core/realtime/realtime-subject.service.mjs +47 -4
- package/esm2020/core/realtime/realtime.service.mjs +15 -1
- package/esm2020/device-protocols/c8y-ngx-components-device-protocols.mjs +5 -0
- package/esm2020/device-protocols/device-protocols.factory.mjs +31 -0
- package/esm2020/device-protocols/device-protocols.guard.mjs +40 -0
- package/esm2020/device-protocols/device-protocols.module.mjs +38 -0
- package/esm2020/device-protocols/device-type-detail-edited.service.mjs +19 -0
- package/esm2020/device-protocols/device-type-detail.component.mjs +45 -0
- package/esm2020/device-protocols/device-type-detail.directive.mjs +19 -0
- package/esm2020/device-protocols/index.mjs +7 -0
- package/esm2020/ecosystem/application-properties/subscription-modal/subscription-modal.component.mjs +4 -1
- package/esm2020/upgrade/ng1/downgraded.services.mjs +6 -4
- package/esm2020/upgrade/ng1/index.mjs +6 -5
- package/esm2020/upgrade/upgrade.module.mjs +10 -10
- package/fesm2015/c8y-ngx-components-device-protocols.mjs +180 -0
- package/fesm2015/c8y-ngx-components-device-protocols.mjs.map +1 -0
- package/fesm2015/c8y-ngx-components-ecosystem.mjs +3 -0
- package/fesm2015/c8y-ngx-components-ecosystem.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-upgrade.mjs +91 -88
- package/fesm2015/c8y-ngx-components-upgrade.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components.mjs +144 -4
- package/fesm2015/c8y-ngx-components.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-device-protocols.mjs +177 -0
- package/fesm2020/c8y-ngx-components-device-protocols.mjs.map +1 -0
- package/fesm2020/c8y-ngx-components-ecosystem.mjs +3 -0
- package/fesm2020/c8y-ngx-components-ecosystem.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-upgrade.mjs +90 -87
- package/fesm2020/c8y-ngx-components-upgrade.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components.mjs +142 -4
- package/fesm2020/c8y-ngx-components.mjs.map +1 -1
- package/locales/locales.pot +1 -1
- package/package.json +10 -2
- package/upgrade/ng1/downgraded.services.d.ts +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"c8y-ngx-components-ecosystem.mjs","sources":["../../ecosystem/ecosystem.model.ts","../../ecosystem/ecosystem.constants.ts","../../ecosystem/shared/ecosystem-error.ts","../../ecosystem/ecosystem.service.ts","../../ecosystem/shared/upload-archive.component.ts","../../ecosystem/shared/upload-archive.component.html","../../ecosystem/activity-log/activity-log.component.ts","../../ecosystem/activity-log/activity-log.component.html","../../ecosystem/application-properties/subscription-modal/subscription-modal.component.ts","../../ecosystem/application-properties/subscription-modal/subscription-modal.component.html","../../ecosystem/application-properties/application-properties.component.ts","../../ecosystem/application-properties/application-properties.component.html","../../ecosystem/application-properties/application-properties.guard.ts","../../ecosystem/applications/add-external-applicaiton/add-external-application.component.ts","../../ecosystem/applications/add-external-applicaiton/add-external-application.component.html","../../ecosystem/shared/add-application.component.ts","../../ecosystem/shared/add-application.component.html","../../ecosystem/applications/add-web-application/add-web-application.component.ts","../../ecosystem/shared/application-card.component.ts","../../ecosystem/shared/application-card.component.html","../../ecosystem/applications/application-list/application-list.component.ts","../../ecosystem/applications/application-list/application-list.component.html","../../ecosystem/applications/application-plugins/appState.pipe.ts","../../ecosystem/applications/application-plugins/install-plugin-to-app.component.ts","../../ecosystem/applications/application-plugins/install-plugin-to-app.component.html","../../ecosystem/applications/application-plugins/plugin-list-item.component.ts","../../ecosystem/applications/application-plugins/plugin-list-item.component.html","../../ecosystem/applications/application-plugins/plugin-list.component.ts","../../ecosystem/applications/application-plugins/plugin-list.component.html","../../ecosystem/applications/application-plugins/install-plugin.component.ts","../../ecosystem/applications/application-plugins/install-plugin.component.html","../../ecosystem/applications/application-plugins/label-cell-renderer.component.ts","../../ecosystem/applications/application-plugins/label-cell-renderer.component.html","../../ecosystem/applications/application-plugins/application-plugins.component.ts","../../ecosystem/applications/application-plugins/application-plugins.component.html","../../ecosystem/applications/application-plugins/application-plugins.guard.ts","../../ecosystem/applications/duplicate-application/duplicate-application-list/duplicate-application-list.component.ts","../../ecosystem/applications/duplicate-application/duplicate-application-list/duplicate-application-list.component.html","../../ecosystem/shared/application-properties-form.component.ts","../../ecosystem/shared/application-properties-form.component.html","../../ecosystem/applications/duplicate-application/duplicate-application-properties/duplicate-application-properties.component.ts","../../ecosystem/applications/duplicate-application/duplicate-application-properties/duplicate-application-properties.component.html","../../ecosystem/applications/duplicate-application/duplicate-application.component.ts","../../ecosystem/applications/duplicate-application/duplicate-application.component.html","../../ecosystem/applications/install-from-package/install-from-package.component.ts","../../ecosystem/applications/install-from-package/install-from-package.component.html","../../ecosystem/ecosystem-navigation.factory.ts","../../ecosystem/ecosystem-tabs.factory.ts","../../ecosystem/features/feature-list.component.ts","../../ecosystem/features/feature-list.component.html","../../ecosystem/microservices/add-microservice.component.ts","../../ecosystem/microservices/microservice-list.component.ts","../../ecosystem/microservices/microservice-list.component.html","../../ecosystem/packages/package-availability.service.ts","../../ecosystem/packages/add-package.component.ts","../../ecosystem/packages/deploy-application/deploy-application.component.ts","../../ecosystem/packages/deploy-application/deploy-application.component.html","../../ecosystem/packages/package-details/package-details.component.ts","../../ecosystem/packages/package-details/package-details.component.html","../../ecosystem/packages/package-list/packages-list.component.ts","../../ecosystem/packages/package-list/packages-list.component.html","../../ecosystem/packages/package-versions/package-contents/contents-plugins/contents-plugins.component.ts","../../ecosystem/packages/package-versions/package-contents/contents-plugins/contents-plugins.component.html","../../ecosystem/packages/package-versions/package-contents/contents-apps/contents-apps.component.ts","../../ecosystem/packages/package-versions/package-contents/contents-apps/contents-apps.component.html","../../ecosystem/packages/package-versions/package-contents/packages-contents.component.ts","../../ecosystem/packages/package-versions/package-contents/packages-contents.component.html","../../ecosystem/packages/package-versions/package-versions-list/package-versions-list.component.ts","../../ecosystem/packages/package-versions/package-versions-list/package-versions-list.component.html","../../ecosystem/packages/package-versions/packages-versions.component.ts","../../ecosystem/packages/package-versions/packages-versions.component.html","../../ecosystem/packages/package.guard.ts","../../ecosystem/packages/package-versions.guard.ts","../../ecosystem/ecosystem.module.ts","../../ecosystem/c8y-ngx-components-ecosystem.ts"],"sourcesContent":["export interface ApplicationState {\n label: string;\n class: string;\n}\n\n/** Wizard types */\nexport enum Wizards {\n APPLICATION_UPLOAD = 'applicationUpload',\n MICROSERVICE_UPLOAD = 'microserviceUpload'\n}\n\nexport enum ERROR_TYPE {\n TYPE_VALIDATION = 'TYPE_VALIDATION',\n ALREADY_SUBSCRIBED = 'ALREADY_SUBSCRIBED',\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}\n\nexport const PRODUCT_EXPERIENCE = {\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 },\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 },\n ACTIONS: {\n AVAILABILITY_CHANGE: 'availabilityChange',\n CANCEL: 'cancel',\n CLONE: 'clone',\n DELETE: 'delete',\n DOWNLOAD: 'download',\n DEPLOY_APPLICATION: 'deployApplication',\n EDIT: 'edit',\n INSTALL_PLUGIN: 'installPlugin',\n INSTALL_PLUGINS: 'installPlugins',\n SELECT_VERSION: 'selectVersion',\n SET_AS_LATEST: 'setAsLatest',\n UPDATE_AVAILABLE: 'updateAvailable',\n UPLOAD: 'upload'\n },\n RESULTS: {\n DEPLOYED: 'deployed',\n DUPLICATED: 'duplicated',\n PLUGIN_INSTALLED: 'pluginInstalled',\n PLUGIN_REMOVED: 'pluginRemoved',\n SERVER_FAILURE: 'serverFailure',\n SUCCESS: 'success'\n }\n }\n};\n","import { ERROR_TYPE } from './ecosystem.model';\nimport { gettext, PropertiesListItem } from '@c8y/ngx-components';\n\nexport const ERROR_MESSAGES = {\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 or key of the uploaded archive do not match with the existing app.'\n )\n};\n\nexport const APP_STATE = {\n SUBSCRIBED: {\n label: gettext('Subscribed`application`'),\n class: 'label-primary'\n },\n CUSTOM: {\n label: gettext('Custom`application`'),\n class: 'label-info'\n },\n EXTERNAL: {\n label: gettext('External`application`'),\n class: 'label-warning'\n },\n UNPACKED: {\n label: gettext('Unpacked`application`'),\n class: 'label-success'\n },\n PACKAGE_BLUEPRINT: {\n label: gettext('Blueprint'),\n class: 'label-success'\n },\n PACKAGE_PLUGIN: {\n label: gettext('Plugins'),\n class: 'label-info'\n }\n};\n\nexport const packageProperties: PropertiesListItem[] = [\n {\n label: gettext('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('Required platform version'),\n key: 'requiredPlatformVersion'\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 IManifest,\n IResult,\n IResultList,\n IUploadParamsOverride,\n TenantService\n} from '@c8y/client';\nimport {\n AlertService,\n AppStateService,\n gettext,\n HumanizeAppNamePipe,\n ModalService,\n Status,\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 } from 'lodash-es';\nimport { BehaviorSubject, Observable, defer } from 'rxjs';\nimport { debounceTime, take, map, shareReplay } from 'rxjs/operators';\nimport { gt, coerce } from 'semver';\nimport { EcosystemError } from './shared/ecosystem-error';\nimport { APP_STATE, ERROR_MESSAGES } from './ecosystem.constants';\nimport { ApplicationState, ERROR_TYPE } from './ecosystem.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 ) {\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 * @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 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(app => this.isPackage(app));\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 = [\n ApplicationType.HOSTED,\n ApplicationType.EXTERNAL,\n ApplicationType.REPOSITORY\n ].includes(app.type);\n const isNotAPackage = !this.isPackage(app);\n return isNotAFeature && hasProperType && isNotAPackage;\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 updateAppManifest(\n application: IApplication,\n sourcePackage: IApplication\n ): Promise<{ res: IFetchResponse; data: any }> {\n const { id } = application;\n const cleanedApp = this.removeAppProperties(application);\n if (!cleanedApp.manifest) {\n cleanedApp.manifest = {};\n }\n cleanedApp.manifest.isPackage = false;\n cleanedApp.manifest.source = sourcePackage.id;\n\n return await this.applicationService\n .binary(id)\n .updateFiles([{ path: CUMULOCITY_JSON, contents: JSON.stringify(cleanedApp) as any }]);\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 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(\n app: IApplication,\n deleteOnFailure: boolean = false\n ): 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: boolean = 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\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 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 resourcesUrl: '/',\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 this.alertError(ex);\n }\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 } else if (this.isPackageBlueprint(app)) {\n return APP_STATE.PACKAGE_BLUEPRINT;\n } else if (this.isPluginsPackage(app)) {\n return APP_STATE.PACKAGE_PLUGIN;\n }\n return APP_STATE.CUSTOM;\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 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 checkIfAppNameKeyPathExists(\n existingApps: IApplication[],\n app: IApplication,\n retryNo: number\n ): IApplication {\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 removeAppProperties(app: IApplication): IApplication {\n const tempApp = cloneDeep(app);\n const propertiesToRemove = ['id', 'owner', 'activeVersionId', 'self'];\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 { 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: boolean = false;\n canReactivate: boolean = false;\n\n constructor(private ecosystemService: EcosystemService, private alertService: AlertService) {}\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 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) {\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 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, Input, OnInit } from '@angular/core';\nimport { IApplication, IApplicationBinary } from '@c8y/client';\nimport { AlertService } from '@c8y/ngx-components';\nimport { BehaviorSubject } from 'rxjs';\nimport { EcosystemService } from '../ecosystem.service';\n\n@Component({\n selector: 'c8y-activity-log',\n templateUrl: './activity-log.component.html'\n})\nexport class ActivityLogComponent implements OnInit {\n @Input() application: IApplication;\n @Input() hasAdminPermissions = false;\n archives: IApplicationBinary[] = [];\n toActivateVersionId: string;\n last: IApplicationBinary;\n isLoading: boolean;\n canReactivate: boolean = false;\n\n constructor(private ecosystemService: EcosystemService, private alertService: AlertService) {}\n\n get uploadProgress(): BehaviorSubject<number> {\n return this.ecosystemService.progress;\n }\n\n async ngOnInit() {\n this.canReactivate = this.showReactivate();\n this.refresh();\n }\n\n isActive(archive: IApplicationBinary): boolean {\n return this.application.activeVersionId === archive.id;\n }\n\n toActivate(archive: IApplicationBinary): boolean {\n return this.toActivateVersionId === archive.id;\n }\n\n checkIfLast(archive: IApplicationBinary): boolean {\n return archive.id === this.last.id;\n }\n\n showReactivate(): boolean {\n return this.ecosystemService.isApplication(this.application);\n }\n\n async setActive(archive): Promise<void> {\n const id = archive.id || archive;\n this.toActivateVersionId = id;\n this.isLoading = true;\n try {\n this.application = (\n await this.ecosystemService.setAppActiveVersion(this.application, id)\n ).data;\n } catch (ex) {\n this.alertService.addServerFailure(ex);\n }\n this.isLoading = false;\n this.refresh();\n }\n\n async deleteArchive(archive: IApplicationBinary): Promise<void> {\n await this.ecosystemService.deleteArchive(archive, this.application);\n this.refresh();\n }\n\n async downloadArchive(archive: IApplicationBinary): Promise<void> {\n await this.ecosystemService.downloadArchive(this.application, archive);\n }\n\n async reactivateArchive(): Promise<void> {\n await this.ecosystemService.reactivateArchive(this.application);\n }\n\n async onRefresh() {\n await this.refresh();\n }\n\n private async refresh(): Promise<void> {\n this.isLoading = true;\n this.archives = await this.ecosystemService.listArchives(this.application.id);\n if (this.application.manifest?.package === 'blueprint') {\n // filter out entries without description because using them as active may break application's\n // manifest (changing isPackage property of deployed app to 'true')\n this.archives = this.archives.filter((archive: IApplicationBinary) => !!archive.description);\n }\n this.archives.sort((a, b) => {\n return (new Date(b.created) as any) - (new Date(a.created) as any);\n });\n this.last = this.archives[this.archives.length - 1];\n this.isLoading = false;\n }\n}\n","<div class=\"inner-scroll bg-gray-white flex-grow\">\n <div class=\"card-block overflow-visible\">\n <c8y-list-group>\n <c8y-li-timeline *ngFor=\"let archive of archives\" [ngClass]=\"{ active: isActive(archive) }\">\n {{ archive.created | date: 'd MMM YYYY' }}\n {{ archive.created | date: 'shortTime' }}\n <c8y-li>\n <c8y-li-icon\n [icon]=\"checkIfLast(archive) ? 'flag-checkered' : 'file-zip-o'\"\n ></c8y-li-icon>\n <c8y-li-body>\n <div class=\"d-flex a-i-start\">\n <div style=\"min-width: 0; flex: 1\">\n <span class=\"text-truncate-wrap\" title=\" {{ archive.description || archive.name }}\">\n {{ archive.description || archive.name }}\n </span>\n <small *ngIf=\"archive.description\" class=\"text-muted\">{{\n archive.description\n }}</small>\n </div>\n <i\n *ngIf=\"isLoading && toActivate(archive)\"\n [c8yIcon]=\"'circle-o-notch'\"\n class=\"icon-spin\"\n title=\"{{ 'Activating' | translate }}\"\n ></i>\n\n <span *ngIf=\"isActive(archive)\" class=\"label label-primary m-l-auto m-t-4\">{{\n 'Active' | translate\n }}</span>\n </div>\n </c8y-li-body>\n <c8y-li-action\n (click)=\"setActive(archive)\"\n *ngIf=\"hasAdminPermissions && !isLoading && !isActive(archive)\"\n icon=\"check-square-o\"\n >\n {{ 'Set as active`archive`' | translate }}\n </c8y-li-action>\n <c8y-li-action (click)=\"downloadArchive(archive)\" icon=\"download\">\n {{ 'Download`archive`' | translate }}\n </c8y-li-action>\n <c8y-li-action\n (click)=\"deleteArchive(archive)\"\n *ngIf=\"\n hasAdminPermissions &&\n archives.length > 1 &&\n !checkIfLast(archive) &&\n !isActive(archive)\n \"\n icon=\"trash\"\n >\n {{ 'Delete`archive`' | translate }}\n </c8y-li-action>\n <c8y-li-action\n (click)=\"reactivateArchive()\"\n *ngIf=\"hasAdminPermissions && canReactivate && isActive(archive)\"\n icon=\"undo\"\n >\n {{ 'Reactivate archive' | translate }}\n </c8y-li-action>\n </c8y-li>\n </c8y-li-timeline>\n </c8y-list-group>\n </div>\n</div>\n<div class=\"card-footer\">\n <c8y-form-group *ngIf=\"!isLoading && hasAdminPermissions\" class=\"m-auto\">\n <c8y-upload-archive [(application)]=\"application\" (refresh)=\"onRefresh()\"></c8y-upload-archive>\n </c8y-form-group>\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport { ApplicationService, IApplication, IApplicationManagedObject } from '@c8y/client';\nimport {\n AlertService,\n ContextRouteService,\n gettext,\n ModalService,\n Status,\n TabsService\n} from '@c8y/ngx-components';\nimport { isEmpty } from 'lodash';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { EcosystemService } from '../../ecosystem.service';\n\n@Component({\n selector: 'c8y-subscription-modal',\n templateUrl: './subscription-modal.component.html'\n})\nexport class SubscriptionModalComponent implements OnInit {\n readonly RETRY_TIMEOUT = 3000;\n application: IApplication;\n message: string;\n isLoading: boolean = false;\n result: Promise<void> = new Promise(resolve => {\n this._resolve = resolve;\n });\n isSubscribed: boolean;\n retryCounter = 0;\n\n private readonly TABS: string[] = ['Logs', 'Status'];\n private _resolve: (value: void | PromiseLike<void>) => void;\n\n constructor(\n private bsModalRef: BsModalRef,\n private ecosystemService: EcosystemService,\n private tabsService: TabsService,\n private modal: ModalService,\n private applicationService: ApplicationService,\n private alertService: AlertService,\n private contextRouteService: ContextRouteService\n ) {}\n\n ngOnInit() {\n if (this.isSubscribed) {\n this.unsubscribe();\n } else {\n this.subscribe();\n }\n }\n\n async subscribe(): Promise<void> {\n this.retryCounter = 0;\n this.isLoading = true;\n this.message = gettext('Subscribing…');\n await this.ecosystemService.subscribeApp(this.application);\n this.getStatusDetails('subscribe');\n }\n\n async unsubscribe(): Promise<void> {\n this.retryCounter = 0;\n this.isLoading = true;\n this.message = gettext('Unsubscribing…');\n await this.ecosystemService.unsubscribeApp(this.application);\n this.getStatusDetails('unsubscribe');\n }\n\n private async getStatusDetails(action: 'subscribe' | 'unsubscribe') {\n this.contextRouteService.refreshContext();\n const actionSuccessful =\n action === 'subscribe' ? await this.onSubscribe() : this.onUnsubscribe();\n if (actionSuccessful) {\n return this.hideSubscriptionModal();\n }\n if (this.retryCounter === 4) {\n this.showWarningModal(action);\n return this.hideSubscriptionModal();\n }\n this.retryCounter += 1;\n setTimeout(async () => {\n this.getStatusDetails(action);\n }, this.RETRY_TIMEOUT);\n }\n\n private async onSubscribe(): Promise<boolean> {\n try {\n const res: IApplicationManagedObject = (\n await this.applicationService.getStatusDetails(this.application)\n ).data[0];\n return this.shouldShowMSSpecificTabs(res);\n } catch (er) {\n this.alertService.addServerFailure(er);\n }\n }\n\n // Checks if the UI should show tabs with logs and status\n private shouldShowMSSpecificTabs(mo: IApplicationManagedObject): boolean {\n return !isEmpty(mo.c8y_Status?.instances) && !!mo.c8y_SupportedLogs;\n }\n\n private onUnsubscribe(): boolean {\n return !this.tabsService.areAvailable(this.TABS);\n }\n\n private hideSubscriptionModal(): void {\n this._resolve();\n this.bsModalRef.hide();\n this.isLoading = false;\n }\n\n private showWarningModal(action: string): void {\n const title = gettext('Warning');\n const body =\n action === 'subscribe'\n ? gettext('Something went wrong, please refresh the page or resubscribe the application.')\n : gettext(\n 'Something went wrong, please refresh the page or retry to unsubscribe from the application.'\n );\n this.modal.acknowledge(title, body, Status.WARNING, gettext('Close'));\n }\n}\n","<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i class=\"c8y-icon c8y-icon-atom\"></i>\n <h4>{{ message }}</h4>\n </div>\n <div class=\"modal-body\" *ngIf=\"isLoading\">\n <div class=\"p-16 text-center\">\n <c8y-loading></c8y-loading>\n </div>\n </div>\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport {\n ApplicationService,\n ApplicationType,\n BillingMode,\n IApplication,\n IManagedObject,\n InventoryService,\n Isolation\n} from '@c8y/client';\nimport {\n AlertService,\n GainsightService,\n gettext,\n ModalService,\n Permissions,\n PropertiesListItem,\n ViewContext\n} from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { packageProperties } from '../ecosystem.constants';\nimport { ApplicationState, PRODUCT_EXPERIENCE } from '../ecosystem.model';\nimport { EcosystemService } from '../ecosystem.service';\nimport { SubscriptionModalComponent } from './subscription-modal/subscription-modal.component';\n\nconst MICROSERVICES_BASE_PATH: string = '/microservices';\nconst APPLICATIONS_BASE_PATH: string = '/ecosystem';\n\n@Component({\n selector: 'c8y-application-properties',\n templateUrl: './application-properties.component.html'\n})\nexport class ApplicationPropertiesComponent implements OnInit {\n CURRENT_LOCATION = location.href;\n formGroup: FormGroup;\n application: IApplication;\n binaryMo: IManagedObject;\n singleTenant: boolean = false;\n subscription: boolean = false;\n canOpenInBrowser: boolean;\n disableOpenInBrowser: boolean;\n canDelete: boolean;\n isOwner: boolean;\n isSubscribed: boolean;\n isPackage: boolean;\n isMicroservice: boolean;\n isFeature: boolean;\n isExternal: boolean;\n isUnpacked: boolean;\n iconMap = {\n HOSTED: 'cloud',\n EXTERNAL: 'external-link-square',\n MICROSERVICE: 'microchip'\n };\n appState: ApplicationState;\n sourcePackage: IApplication;\n isLoading: boolean = true;\n isActivityLogSupported: boolean;\n isCustomMicroservice: boolean;\n hasAdminPermissions = false;\n\n breadcrumbConfig: { icon: string; label: string; path: string };\n packageProperties: PropertiesListItem[] = [...packageProperties];\n isUpdateAvailable = false;\n isUpdateOngoing = false;\n\n private blueprintApplicationVersion: string;\n\n constructor(\n private activatedRoute: ActivatedRoute,\n private ecosystemService: EcosystemService,\n private router: Router,\n private formBuilder: FormBuilder,\n private applicationService: ApplicationService,\n private alertService: AlertService,\n private inventoryService: InventoryService,\n private permissions: Permissions,\n private modalService: ModalService,\n private translate: TranslateService,\n private bsModalService: BsModalService,\n private gainsightService: GainsightService\n ) {}\n\n async ngOnInit() {\n this.hasAdminPermissions = this.permissions.hasRole('ROLE_APPLICATION_MANAGEMENT_ADMIN');\n await this.refresh();\n }\n\n async refresh() {\n await this.load();\n this.isUnpacked = this.ecosystemService.isUnpacked(this.application);\n this.isPackage = this.ecosystemService.isPackage(this.application);\n this.isFeature = this.ecosystemService.isFeature(this.application);\n this.isExternal = this.ecosystemService.isExternal(this.application);\n this.isMicroservice = this.ecosystemService.isMicroservice(this.application);\n this.appState = this.ecosystemService.getAppState(this.application);\n\n if (this.isUnpacked) {\n await this.resolveSourcePackageDetails();\n }\n\n this.setBreadcrumbConfig();\n\n if (this.isCustomMicroservice) {\n this.loadBinaryMo();\n }\n }\n\n async load() {\n this.isLoading = true;\n this.initForm();\n await this.loadApplication();\n this.isLoading = false;\n }\n\n onApplication(app: IApplication) {\n if (app.manifest) {\n this.singleTenant = app.manifest.isolation === Isolation.PER_TENANT;\n this.subscription = app.manifest.billingMode === BillingMode.SUBSCRIPTION;\n }\n }\n\n cancel() {\n if (this.application.type === ApplicationType.MICROSERVICE) {\n this.router.navigateByUrl(MICROSERVICES_BASE_PATH);\n } else {\n this.router.navigateByUrl(APPLICATIONS_BASE_PATH);\n }\n }\n\n openApp(app) {\n window.open(this.applicationService.getHref(app));\n }\n\n getPackage(entityOrId: string | number | IApplication) {\n return this.applicationService.detail(entityOrId);\n }\n\n async delete() {\n try {\n await this.ecosystemService.deleteApp(this.application);\n if (this.application.type === ApplicationType.MICROSERVICE) {\n this.router.navigateByUrl(MICROSERVICES_BASE_PATH);\n } else {\n this.router.navigateByUrl(APPLICATIONS_BASE_PATH);\n }\n } catch (ex) {\n if (ex) {\n this.alertService.addServerFailure(ex);\n }\n }\n }\n\n async subscribe() {\n const initialState = { application: this.application, isSubscribed: false };\n await this.confirmSubscriptionChange(initialState);\n this.loadApplication();\n }\n\n async unsubscribe() {\n const initialState = { application: this.application, isSubscribed: true };\n await this.confirmSubscriptionChange(initialState);\n this.loadApplication();\n }\n\n async loadApplication() {\n const { id } = this.activatedRoute.snapshot.parent.data.contextData;\n this.application = await this.ecosystemService.getApplication(id);\n if (this.application.type === ApplicationType.MICROSERVICE) {\n this.formGroup.get('name').disable();\n }\n this.formGroup.patchValue({ ...this.application });\n this.canOpenInBrowser = this.ecosystemService.canOpenAppInBrowser(this.application);\n this.disableOpenInBrowser =\n this.canOpenInBrowser &&\n (await this.ecosystemService.isOverwrittenByCustomApp(this.application));\n this.canDelete = await this.ecosystemService.canDeleteApp(this.application);\n this.isOwner = this.ecosystemService.isOwner(this.application);\n this.isActivityLogSupported = this.isActivityLogSupportedByApp(this.application);\n this.isCustomMicroservice = this.ecosystemService.isCustomMicroservice(this.application);\n this.isSubscribed = await this.ecosystemService.checkIfSubscribed(this.application);\n this.onApplication(this.application);\n }\n\n async save(app: IApplication) {\n app.id = this.application.id;\n try {\n await this.ecosystemService.updateApp(app);\n this.alertService.success(gettext('Application saved.'));\n this.formGroup.reset();\n this.loadApplication();\n } catch (ex) {\n // do nothing\n }\n }\n\n onNewArchive() {\n this.loadBinaryMo();\n }\n\n async updateToLatestVersion() {\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.APPLICATION_PROPERTIES,\n {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.APPLICATION_PROPERTIES,\n action: PRODUCT_EXPERIENCE.APPLICATIONS.ACTIONS.UPDATE_AVAILABLE,\n url: this.CURRENT_LOCATION\n }\n );\n try {\n const translatedBody = this.translate.instant(\n gettext(\n `You're using the version {{ currentVersion }} of the {{ packageName }} package, the latest version available is {{ latestVersion }}, do you want to update? You can always revert to a previous version in the Activity log panel.`\n ),\n {\n currentVersion: this.application.manifest?.version,\n latestVersion: this.blueprintApplicationVersion,\n packageName: this.sourcePackage.name\n }\n );\n await this.modalService.confirm(gettext('Update application'), translatedBody, 'warning', {\n ok: gettext('Update'),\n cancel: gettext('Cancel')\n });\n } catch {\n // modal canceled\n return;\n }\n\n this.isUpdateOngoing = true;\n\n try {\n // TODO: use the correct binaryMoId (activeVersionId of the version not application)\n const binaryMoId = this.sourcePackage.activeVersionId;\n await this.uploadNewBinary(binaryMoId);\n } catch (e) {\n if (e.res?.status === 404) {\n await this.fallBackToCloneUpdate();\n } else {\n this.alertService.danger(gettext('Failed to update application.'));\n }\n } finally {\n this.isUpdateOngoing = false;\n }\n }\n\n private async uploadNewBinary(binaryMoId: string) {\n const { data: binaryMo } = await this.inventoryService.detail(binaryMoId);\n const binary = await this.inventoryService.binary.download(binaryMo.id);\n const blob = await binary.blob();\n const file = new File([blob], binaryMo.name);\n const app = await this.ecosystemService.uploadArchiveToApp(file, this.application, false);\n await this.ecosystemService.updateAppManifest(app, this.sourcePackage);\n await this.refresh();\n this.alertService.success(gettext('Application updated.'));\n }\n\n private async fallBackToCloneUpdate() {\n try {\n const { data: clonedApp } = await this.applicationService.clone(this.sourcePackage);\n await this.uploadNewBinary(clonedApp.activeVersionId);\n this.ecosystemService.deleteApp(clonedApp, true);\n } catch (e) {\n this.alertService.addServerFailure(e);\n }\n }\n\n private async confirmSubscriptionChange(initialState: {\n application: IApplication;\n isSubscribed: boolean;\n }) {\n await (\n this.bsModalService.show(SubscriptionModalComponent, {\n class: 'modal-sm',\n initialState,\n ignoreBackdropClick: true\n }).content as SubscriptionModalComponent\n ).result;\n }\n\n private async resolveSourcePackageDetails() {\n try {\n this.sourcePackage = (await this.getPackage(this.application.manifest?.source)).data;\n if (this.sourcePackage) {\n this.packageProperties.push({\n label: gettext('Source package'),\n value: this.sourcePackage.name,\n type: 'link',\n action: () =>\n this.router.navigateByUrl(\n ViewContext.Application.replace(':id', this.sourcePackage.id.toString())\n )\n });\n }\n } catch {\n this.alertService.warning(gettext('Unable to resolve source package.'));\n return;\n }\n\n await this.extractVersionInformation(this.application);\n }\n\n private initForm(): void {\n this.formGroup = this.formBuilder.group({\n id: [{ value: '' }],\n name: [Validators.required, Validators.maxLength(120)],\n key: [Validators.required, Validators.maxLength(120)],\n contextPath: [Validators.required, Validators.maxLength(120)],\n description: ['', Validators.maxLength(200)],\n resourcesUrl: [Validators.required],\n username: [Validators.required],\n password: [Validators.required],\n externalUrl: [Validators.required]\n });\n if (!this.hasAdminPermissions) {\n this.formGroup.disable();\n }\n }\n\n private isActivityLogSupportedByApp(app: IApplication): boolean {\n return (\n this.ecosystemService.isOwner(app) &&\n app.type !== ApplicationType.MICROSERVICE &&\n app.type !== ApplicationType.EXTERNAL\n );\n }\n\n private setBreadcrumbConfig() {\n this.breadcrumbConfig = {\n icon: this.isMicroservice ? 'microchip' : this.isFeature ? 'tab' : 'c8y-modules',\n label: this.isMicroservice\n ? gettext('Microservices')\n : this.isFeature\n ? gettext('Features')\n : gettext('All applications'),\n path: this.isMicroservice\n ? 'microservices'\n : this.isFeature\n ? 'ecosystem/features'\n : 'ecosystem/applications'\n };\n }\n\n private async loadBinaryMo() {\n this.binaryMo = (await this.inventoryService.detail(this.application.activeVersionId)).data;\n }\n\n private async extractVersionInformation(application: IApplication) {\n if (!application.manifest.isPackage && !application.manifest.source) {\n return;\n }\n\n const blueprintApplicationId = application.manifest?.source;\n const currentVersion = application.manifest?.version;\n\n try {\n const { data: blueprintApplicationVersions } = await this.applicationService.listVersions(\n blueprintApplicationId\n );\n const blueprintLatestVersion = this.ecosystemService.getApplicationVersionObjectByTag(\n blueprintApplicationVersions,\n 'latest'\n );\n this.blueprintApplicationVersion = blueprintLatestVersion.version;\n this.isUpdateAvailable = this.ecosystemService.shouldUpgradePackage(\n currentVersion,\n blueprintLatestVersion\n );\n } catch {\n this.alertService.warning(gettext('Unable to resolve versions of source package.'));\n }\n }\n}\n","<c8y-title>{{ application | humanizeAppName | async }}</c8y-title>\n\n<c8y-breadcrumb *ngIf=\"!isMicroservice\">\n <c8y-breadcrumb-item [icon]=\"'c8y-atom'\" [label]=\"'Ecosystem' | translate\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-modules'\"\n [label]=\"'Applications' | translate\"\n [path]=\"'ecosystem/applications'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"breadcrumbConfig?.icon\"\n [label]=\"breadcrumbConfig?.label\"\n [path]=\"breadcrumbConfig?.path\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"application | humanizeAppName | async\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Properties' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-breadcrumb *ngIf=\"isMicroservice\">\n <c8y-breadcrumb-item [icon]=\"'c8y-atom'\" [label]=\"'Ecosystem' | translate\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"breadcrumbConfig?.icon\"\n [label]=\"breadcrumbConfig?.label\"\n [path]=\"breadcrumbConfig?.path\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"application | humanizeAppName | async\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Properties' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<div class=\"row\">\n <div [ngClass]=\"{ 'col-md-8': !isActivityLogSupported, 'col-md-12': isActivityLogSupported }\">\n <div\n *ngIf=\"application\"\n [ngClass]=\"{ 'd-grid grid__col--7-5--md': isActivityLogSupported }\"\n class=\"card content-fullpage\"\n >\n <form\n (ngSubmit)=\"formGroup.valid && save(formGroup.value)\"\n [formGroup]=\"formGroup\"\n class=\"d-flex d-col content-fullpage\"\n novalidate\n >\n <div *ngIf=\"!isLoading\" class=\"d-contents\">\n <div class=\"card-block separator-bottom large-padding flex-no-shrink\">\n <div class=\"d-flex-md a-i-start text-center text-left-md\">\n <c8y-app-icon\n *ngIf=\"!isPackage && !isFeature && !isMicroservice && !isExternal\"\n [app]=\"application\"\n [contextPath]=\"application.contextPath\"\n [name]=\"application.name\"\n class=\"icon-48\"\n ></c8y-app-icon>\n <i *ngIf=\"isPackage\" c8yIcon=\"big-parcel\" class=\"icon-48\"></i>\n <i *ngIf=\"isFeature\" c8yIcon=\"tab\" class=\"icon-48\"></i>\n <i *ngIf=\"isMicroservice\" c8yIcon=\"microchip\" class=\"icon-48\"></i>\n <i *ngIf=\"isExternal\" c8yIcon=\"globe1\" class=\"icon-48\"></i>\n\n <div class=\"p-t-md-16 p-l-md-16 p-r-md-32 flex-grow\">\n <h4 class=\"text-medium m-b-8\">{{ application | humanizeAppName | async }}</h4>\n <p *ngIf=\"!isOwner\">\n <em class=\"text-muted\">\n {{ application.description || ('No description available.' | translate) }}\n </em>\n </p>\n <div *ngIf=\"isOwner\" class=\"form-group m-b-0\">\n <label\n [ngClass]=\"{ updated: formGroup?.controls?.description?.dirty }\"\n class=\"editable\"\n >\n <textarea\n c8y-textarea-autoresize\n class=\"form-control no-resize\"\n formControlName=\"description\"\n name=\"description\"\n placeholder=\"{{ 'No description available.' | translate }}\"\n ></textarea>\n </label>\n </div>\n </div>\n <div class=\"text-right-md m-t-4\">\n <span [ngClass]=\"appState?.class\" class=\"label\">{{\n appState?.label | translate\n }}</span>\n <div class=\"fit-w m-t-2\" *ngIf=\"isPackage || isMicroservice\">\n <label class=\"text-label-small\" translate>Version:</label>\n <small class=\"p-l-4 text-bold\">{{ application.manifest?.version }}</small>\n </div>\n <div class=\"fit-w m-t-2\">\n <label class=\"text-label-small\" translate>Creation time:</label>\n <small class=\"p-l-4 text-bold\">{{ binaryMo?.creationTime | c8yDate }}</small>\n </div>\n <div class=\"m-t-8\">\n <button\n type=\"button\"\n *ngIf=\"isUpdateAvailable\"\n (click)=\"updateToLatestVersion()\"\n [ngClass]=\"{ 'btn-pending': isUpdateOngoing }\"\n class=\"btn btn-warning btn-xs\"\n >\n {{ 'Update available' | translate }}\n </button>\n <button\n (click)=\"openApp(application)\"\n [disabled]=\"disableOpenInBrowser\"\n *ngIf=\"canOpenInBrowser\"\n class=\"btn btn-default btn-xs\"\n title=\"{{ 'Open' | translate }}\"\n type=\"button\"\n >\n <i [c8yIcon]=\"'external-link'\"></i>\n {{ 'Open' | translate }}\n </button>\n <div *ngIf=\"canOpenInBrowser && disableOpenInBrowser\">\n <small class=\"text-muted\" translate\n >The application is overwritten by a custom application sharing the same\n path</small\n >\n </div>\n <span *ngIf=\"isCustomMicroservice\">\n <button\n (click)=\"subscribe()\"\n *ngIf=\"!isSubscribed\"\n class=\"btn btn-default btn-xs\"\n title=\"{{ 'Subscribe' | translate }}\"\n >\n <i [c8yIcon]=\"'check-circle-o'\"></i>\n {{ 'Subscribe' | translate }}\n </button>\n <button\n (click)=\"unsubscribe()\"\n *ngIf=\"isSubscribed\"\n class=\"btn btn-default btn-xs\"\n title=\"{{ 'Unsubscribe' | translate }}\"\n >\n <i [c8yIcon]=\"'minus-circle'\"></i>\n {{ 'Unsubscribe' | translate }}\n </button>\n </span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"inner-scroll bg-white flex-grow\">\n <div class=\"card-block large-padding\">\n <div *ngIf=\"isPackage\" class=\"row p-16\">\n <c8y-properties-list\n [data]=\"application.manifest\"\n [properties]=\"packageProperties\"\n [title]=\"'Package details' | translate\"\n [emptyLabel]=\"'---'\"\n icon=\"info\"\n ></c8y-properties-list>\n </div>\n <div *ngIf=\"sourcePackage\" class=\"row p-16\">\n <c8y-properties-list\n [data]=\"sourcePackage.manifest\"\n [properties]=\"packageProperties\"\n [title]=\"'Source package information' | translate\"\n [emptyLabel]=\"'---'\"\n icon=\"info\"\n ></c8y-properties-list>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-5\">\n <c8y-form-group>\n <label>ID</label>\n <input\n [readonly]=\"true\"\n autocomplete=\"off\"\n class=\"form-control\"\n formControlName=\"id\"\n name=\"id\"\n type=\"text\"\n />\n </c8y-form-group>\n </div>\n <div class=\"col-sm-7\">\n <c8y-form-group>\n <label>{{ 'Name' | translate }}</label>\n <input\n [readonly]=\"!isOwner\"\n class=\"form-control\"\n formControlName=\"name\"\n name=\"name\"\n placeholder=\"{{ 'e.g. My application' | translate }}\"\n required\n type=\"text\"\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-sm-5\">\n <c8y-form-group>\n <label>{{ 'Application key' | translate }}</label>\n <input\n [readonly]=\"application.id || !isOwner\"\n class=\"form-control\"\n name=\"key\"\n formControlName=\"key\"\n placeholder=\"{{ 'e.g. my-application-key' | translate }}\"\n required\n type=\"text\"\n />\n </c8y-form-group>\n </div>\n\n <div class=\"col-sm-7\">\n <c8y-form-group>\n <label>{{ 'Type' | translate }}</label>\n <div>\n <div *ngIf=\"application.id\">\n <p class=\"form-control-static\">\n <i [c8yIcon]=\"iconMap[application.type]\"></i>\n <span>\n {{ application.type | translate }}\n </span>\n </p>\n </div>\n </div>\n </c8y-form-group>\n </div>\n </div>\n\n <div [ngSwitch]=\"application.type\">\n <div *ngSwitchCase=\"'HOSTED'\">\n <c8y-form-group>\n <label>{{ 'Path' | translate }}</label>\n <div class=\"input-group\">\n <span class=\"input-group-addon\">/apps/</span>\n <input\n [readOnly]=\"application.id || !isOwner\"\n class=\"form-control\"\n name=\"contextPath\"\n placeholder=\"{{ 'e.g. my-application`used in URL`' | translate }}\"\n required\n type=\"text\"\n formControlName=\"contextPath\"\n />\n </div>\n </c8y-form-group>\n </div>\n\n <div *ngSwitchCase=\"'MICROSERVICE'\">\n <c8y-form-group>\n <label>{{ 'Path' | translate }}</label>\n <div class=\"input-group\">\n <span class=\"input-group-addon\">/service/</span>\n <input\n [readOnly]=\"application.id || !isOwner\"\n class=\"form-control\"\n name=\"contextPath\"\n placeholder=\"{{ 'e.g. my-microservice`used in URL`' | translate }}\"\n required\n type=\"text\"\n formControlName=\"contextPath\"\n />\n </div>\n </c8y-form-group>\n <div class=\"row\">\n <div *ngIf=\"application.manifest.version\" class=\"col-sm-4 m-b-16 flex-auto\">\n <label>{{ 'Version' | translate }}</label>\n <p class=\"form-control-static\">\n {{ application.manifest.version }}\n </p>\n </div>\n <div *ngIf=\"application.manifest.isolation\" class=\"col-sm-4 m-b-16 flex-auto\">\n <label>{{ 'Isolation' | translate }}</label>\n <p class=\"form-control-static\">\n <span *ngIf=\"singleTenant\">\n <i [c8yIcon]=\"'c8y-enterprise'\" class=\"c8y-icon-duocolor h4\"></i>\n {{ 'Single tenant' | translate }}\n </span>\n <span *ngIf=\"!singleTenant\">\n <i [c8yIcon]=\"'c8y-sub-tenants'\" class=\"c8y-icon-duocolor h4\"></i>\n {{ 'Multi tenant' | translate }}\n </span>\n </p>\n </div>\n <div *ngIf=\"application.manifest.isolation\" class=\"col-sm-4 m-b-16 flex-auto\">\n <label>{{ 'Billing mode' | translate }}</label>\n <p class=\"form-control-static\">\n <span\n *ngIf=\"subscription\"\n [tooltip]=\"'Resources usage assigned to: Owner' | translate\"\n >\n {{ 'Subscription' | translate }}\n </span>\n <span\n *ngIf=\"!subscription && singleTenant\"\n [tooltip]=\"'Resources usage assigned to: Subscriber | translate'\"\n >\n {{ 'Resources' | translate }}\n </span>\n <span\n *ngIf=\"!subscription && !singleTenant\"\n [tooltip]=\"'Resources usage assigned to: Owner' | translate\"\n >\n {{ 'Resources' | translate }}\n </span>\n </p>\n </div>\n </div>\n\n <div *ngIf=\"application.manifest.provider\" class=\"legend form-block m-t-40\">\n {{ 'Provider' | translate }}\n </div>\n <div class=\"list-inline\" *ngIf=\"application.manifest.provider\">\n <div *ngIf=\"application.manifest.provider.name\">\n <div class=\"col-sm-4 m-b-16\">\n <label>{{ 'Name' | translate }}</label>\n <p class=\"form-control-static\">\n {{ application.manifest.provider.name }}\n </p>\n </div>\n </div>\n <div *ngIf=\"application.manifest.provider.domain\">\n <div class=\"col-sm-4 m-b-16\">\n <label>{{ 'Domain' | translate }}</label>\n <p class=\"form-control-static\">\n {{ application.manifest.provider.domain }}\n </p>\n </div>\n </div>\n <div *ngIf=\"application.manifest.provider.support\">\n <div class=\"col-sm-4 m-b-16\">\n <label>{{ 'Support' | translate }}</label>\n <p class=\"form-control-static\">\n {{ application.manifest.provider.support }}\n </p>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'REPOSITORY'\">\n <c8y-form-group>\n <label>{{ 'Path' | translate }}</label>\n <div class=\"input-group\">\n <span class=\"input-group-addon\"> /apps/ </span>\n <input\n [readOnly]=\"application.id || !isOwner\"\n class=\"form-control\"\n formControlName=\"contextPath\"\n name=\"contextPath\"\n placeholder=\"{{ 'e.g. my-application`used in URL`' | translate }}\"\n required\n type=\"text\"\n />\n </div>\n </c8y-form-group>\n\n <c8y-form-group>\n <label>{{ 'Server URL' | translate }}</label>\n <input\n class=\"form-control\"\n name=\"resourcesUrl\"\n formControlName=\"resourcesUrl\"\n placeholder=\"{{ 'e.g. my-application`used in URL`' | translate }}\"\n required\n type=\"url\"\n />\n </c8y-form-group>\n\n <div class=\"form-group\">\n <label> {{ 'Username' | translate }}</label>\n <input\n class=\"form-control\"\n formControlName=\"username\"\n name=\"username\"\n type=\"text\"\n />\n </div>\n\n <div class=\"form-group\">\n <label>{{ 'Password' | translate }}</label>\n <input\n class=\"form-control\"\n formControlName=\"password\"\n name=\"password\"\n type=\"text\"\n />\n </div>\n </div>\n\n <div *ngSwitchCase=\"'EXTERNAL'\">\n <c8y-form-group>\n <label>{{ 'External URL' | translate }}</label>\n <input\n [pattern]=\"'^(?!javascript:).+'\"\n [readOnly]=\"!isOwner\"\n class=\"form-control\"\n formControlName=\"externalUrl\"\n name=\"externalUrl\"\n placeholder=\"{{ 'e.g.' | translate }} http://www.example.com/\"\n required\n type=\"url\"\n />\n <c8y-messages>\n <c8y-message\n [name]=\"'pattern'\"\n [text]=\"'Valid URL required.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n </div>\n </div>\n </div>\n <ng-container *ngIf=\"isCustomMicroservice\">\n <div *ngIf=\"!isLoading\" class=\"d-contents\">\n <c8y-upload-archive\n [(application)]=\"application\"\n (refresh)=\"onNewArchive()\"\n ></c8y-upload-archive>\n </div>\n </ng-container>\n <div\n *ngIf=\"application && !!isOwner && hasAdminPermissions\"\n class=\"card-footer separator\"\n >\n <button\n (click)=\"cancel()\"\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n (click)=\"delete()\"\n *ngIf=\"canDelete\"\n class=\"btn btn-danger\"\n title=\"{{ 'Delete' | translate }}\"\n type=\"button\"\n >\n {{ 'Delete' | translate }}\n </button>\n <button\n [disabled]=\"!application.type || formGroup.invalid || formGroup.pristine\"\n class=\"btn btn-primary btn-form\"\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </form>\n\n <div *ngIf=\"isActivityLogSupported\" class=\"content-fullpage d-flex d-col bg-gray-white\">\n <div class=\"card-header separator\">\n <h4 class=\"card-title\" translate>Activity log</h4>\n <div class=\"m-l-auto\">\n <button\n (click)=\"load()\"\n class=\"btn btn-link\"\n title=\"{{ 'Reload' | translate }}\"\n type=\"button\"\n >\n <i [ngClass]=\"{ 'icon-spin': isLoading }\" c8yIcon=\"refresh\"></i>\n {{ 'Reload' | translate }}\n </button>\n </div>\n </div>\n <div *ngIf=\"isLoading\" class=\"p-16 text-center\">\n <c8y-loading></c8y-loading>\n </div>\n <c8y-activity-log\n *ngIf=\"!isLoading\"\n [hasAdminPermissions]=\"hasAdminPermissions\"\n [application]=\"application\"\n class=\"d-contents\"\n ></c8y-activity-log>\n </div>\n </div>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate } from '@angular/router';\nimport { EcosystemService } from '../ecosystem.service';\n\n@Injectable()\nexport class ApplicationPropertiesGuard implements CanActivate {\n constructor(private ecosystemService: EcosystemService) {}\n\n canActivate(route: ActivatedRouteSnapshot) {\n const app = route.data.contextData || route.parent.data.contextData;\n if (!app) {\n return false;\n }\n return !this.ecosystemService.isPackage(app);\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { ApplicationService, ApplicationType, IApplication, IManifest } from '@c8y/client';\nimport { AlertService, WizardComponent } from '@c8y/ngx-components';\n\n@Component({\n selector: 'c8y-add-external-application',\n templateUrl: './add-external-application.component.html'\n})\nexport class AddExternalApplicationComponent implements OnInit {\n formGroup: FormGroup;\n createdApp: IApplication;\n\n constructor(\n private applicationService: ApplicationService,\n private formBuilder: FormBuilder,\n private alertService: AlertService,\n private wizardComponent: WizardComponent\n ) {}\n\n ngOnInit() {\n this.initForm();\n }\n\n back() {\n this.wizardComponent.reset();\n }\n\n cancel() {\n this.wizardComponent.close();\n }\n\n done() {\n this.wizardComponent.close();\n }\n\n async save(app: IApplication) {\n const appToSave = {\n manifest: {} as IManifest,\n externalUrl: app.externalUrl,\n type: ApplicationType.EXTERNAL,\n name: app.name,\n key: app.key\n };\n try {\n this.createdApp = await this.applicationService.create(appToSave);\n } catch (ex) {\n this.alertService.addServerFailure(ex);\n }\n }\n\n private initForm(): void {\n this.formGroup = this.formBuilder.group({\n name: ['', [Validators.required, Validators.maxLength(120)]],\n key: ['', [Validators.required, Validators.maxLength(120)]],\n externalUrl: ['', Validators.required]\n });\n }\n}\n","<form *ngIf=\"!createdApp; else appCreated\" [formGroup]=\"formGroup\" novalidate>\n <c8y-wizard-header>\n <h1 [c8yIcon]=\"'cloud-link'\"></h1>\n <h4 translate>Add external application</h4>\n </c8y-wizard-header>\n\n <c8y-wizard-body>\n <p class=\"p-16 text-medium text-center bg-white separator-bottom sticky-top\">\n {{ 'Provide external application details' | translate }}\n </p>\n <div class=\"modal-body p-t-8\">\n <c8y-form-group>\n <label style=\"text-align: left\">{{ 'Name' | translate }}</label>\n <input\n class=\"form-control\"\n formControlName=\"name\"\n name=\"name\"\n placeholder=\"{{ 'e.g. My application' | translate }}\"\n required\n type=\"text\"\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label style=\"text-align: left\">{{ 'Application key' | translate }}</label>\n <input\n class=\"form-control\"\n formControlName=\"key\"\n name=\"key\"\n placeholder=\"{{ 'e.g. my-external-application-key' | translate }}\"\n required\n type=\"text\"\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label style=\"text-align: left\">{{ 'External URL' | translate }}</label>\n <input\n [pattern]=\"'^(?!javascript:).+'\"\n class=\"form-control\"\n formControlName=\"externalUrl\"\n name=\"externalUrl\"\n placeholder=\"{{ 'e.g.' | translate }} https://www.example.com\"\n required\n type=\"url\"\n />\n </c8y-form-group>\n </div>\n </c8y-wizard-body>\n\n <c8y-wizard-footer>\n <button\n (click)=\"back()\"\n class=\"btn btn-default\"\n title=\"{{ 'Back' | translate }}\"\n translate\n type=\"button\"\n >\n Back\n </button>\n <button (click)=\"cancel()\" class=\"btn btn-default\" title=\"{{ 'Cancel' | translate }}\" translate>\n Cancel\n </button>\n <button\n (click)=\"save(formGroup.value)\"\n [disabled]=\"formGroup.invalid || formGroup.pristine\"\n class=\"btn btn-primary btn-form\"\n title=\"{{ 'Add application' | translate }}\"\n type=\"button\"\n >\n {{ 'Add application' | translate }}\n </button>\n </c8y-wizard-footer>\n</form>\n<ng-template #appCreated>\n <c8y-wizard-body>\n <div class=\"d-flex d-col j-c-center a-i-center\" style=\"min-height: 324px\">\n <c8y-operation-result\n text=\"{{ 'Application created' | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"success\"\n class=\"lead\"\n ></c8y-operation-result>\n </div>\n </c8y-wizard-body>\n <c8y-wizard-footer>\n <button (click)=\"done()\" class=\"btn btn-default\" title=\"{{ 'Done' | translate }}\" translate>\n Done\n </button>\n <a\n (click)=\"$event.stopPropagation()\"\n [href]=\"formGroup.value.externalUrl\"\n target=\"_blank\"\n class=\"btn btn-primary\"\n title=\"{{ 'Open' | translate }}\"\n >\n <i c8yIcon=\"external-link\" class=\"m-r-4\"></i>\n {{ 'Open' | translate }}\n </a>\n </c8y-wizard-footer>\n</ng-template>\n","import { Component, Input, ViewChild } from '@angular/core';\nimport { ApplicationService, IApplication } from '@c8y/client';\nimport { AlertService, DropAreaComponent, WizardComponent } from '@c8y/ngx-components';\nimport { BehaviorSubject } from 'rxjs';\nimport { ERROR_MESSAGES } from './../ecosystem.constants';\nimport { EcosystemService } from './../ecosystem.service';\nimport { TranslateService } from '@ngx-translate/core';\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: string;\n @Input() successText: string;\n @Input() createApplicationHandler: any;\n @Input() uploadApplicationHandler: any;\n @Input() canGoBack: boolean = false;\n\n @ViewChild(DropAreaComponent) dropAreaComponent;\n\n isLoading: boolean;\n isAppCreated: boolean;\n createdApp: IApplication;\n canOpenInBrowser: boolean = false;\n errorMessage: string;\n private uploadCanceled: boolean = 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 ) {}\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 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 <h1 [c8yIcon]=\"headerIcon\"></h1>\n <h4>{{ 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 *ngIf=\"!isAppCreated; else appCreated\"\n [hasError]=\"errorMessage\"\n class=\"m-t-16 m-l-auto m-r-auto\"\n style=\"max-width: 285px\"\n >\n <c8y-drop-area\n (dropped)=\"onFileDroppedEvent($event)\"\n [accept]=\"'.zip'\"\n [loading]=\"isLoading\"\n [maxAllowedFiles]=\"1\"\n [progress]=\"progress | async\"\n class=\"drop-area\"\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 <ng-template #appCreated>\n <div class=\"d-flex a-i-center j-c-center\" style=\"min-height: 285px\">\n <c8y-operation-result\n text=\"{{ successText | translate }}\"\n [vertical]=\"true\"\n [size]=\"84\"\n class=\"lead\"\n type=\"success\"\n ></c8y-operation-result>\n </div>\n </ng-template>\n</c8y-wizard-body>\n\n<c8y-wizard-footer>\n <button\n (click)=\"back()\"\n *ngIf=\"!isAppCreated && canGoBack\"\n class=\"btn btn-default\"\n title=\"{{ 'Back' | translate }}\"\n translate\n type=\"button\"\n >\n Back\n </button>\n <button\n (click)=\"cancel()\"\n *ngIf=\"!isAppCreated\"\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n translate\n type=\"button\"\n >\n Cancel\n </button>\n <button\n (click)=\"done()\"\n *ngIf=\"isAppCreated\"\n class=\"btn btn-default\"\n title=\"{{ 'Done' | translate }}\"\n translate\n type=\"button\"\n >\n Done\n </button>\n <a\n (click)=\"$event.stopPropagation()\"\n *ngIf=\"isAppCreated && canOpenInBrowser\"\n [href]=\"getHref(createdApp)\"\n target=\"_blank\"\n class=\"btn btn-primary\"\n title=\"{{ 'Open' | translate }}\"\n >\n <i c8yIcon=\"external-link\" class=\"m-r-4\"></i>\n {{ 'Open' | translate }}\n </a>\n</c8y-wizard-footer>\n","import { Component } from '@angular/core';\nimport { ApplicationType, IApplication } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components';\nimport { EcosystemService } from '../../ecosystem.service';\n\n@Component({\n selector: 'c8y-add-web-application',\n template: `<c8y-add-application\n [headerText]=\"headerText\"\n [headerIcon]=\"'upload'\"\n [successText]=\"successText\"\n [createApplicationHandler]=\"createApplicationHandler\"\n [uploadApplicationHandler]=\"uploadApplicationHandler\"\n [canGoBack]=\"true\"\n ></c8y-add-application>`\n})\nexport class AddWebApplicationComponent {\n headerText: string = gettext('Upload web application');\n successText: string = gettext('Application created');\n\n constructor(private ecosystemService: EcosystemService) {}\n\n createApplicationHandler = (f: File) => this.createApplication(f);\n uploadApplicationHandler = (f: File, app: IApplication) => this.uploadApplication(f, app);\n\n async createApplication(file: File): Promise<IApplication> {\n await this.ecosystemService.isValidAppType(file, ApplicationType.HOSTED);\n return this.ecosystemService.createAppForArchive(file);\n }\n\n async uploadApplication(file: File, app: IApplication): Promise<IApplication> {\n return this.ecosystemService.uploadArchiveToApp(file, app);\n }\n}\n","import { Component, 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 Wizard,\n WizardComponent,\n WizardConfig,\n WizardModalService\n} from '@c8y/ngx-components';\nimport { get } from 'lodash';\nimport { ModalOptions } from 'ngx-bootstrap/modal';\nimport { BehaviorSubject } from 'rxjs';\nimport { DuplicateApplicationComponent } from '../applications/duplicate-application/duplicate-application.component';\nimport { ApplicationState, PRODUCT_EXPERIENCE } from './../ecosystem.model';\nimport { EcosystemService } from './../ecosystem.service';\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: boolean = true;\n @Output() onAppDeleted: EventEmitter<void> = new EventEmitter();\n @Output() onAppCloned: EventEmitter<void> = new EventEmitter();\n appState: ApplicationState;\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 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\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 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.disableOpenInBrowser =\n this.canOpenInBrowser && (await this.ecosystemService.isOverwrittenByCustomApp(this.app));\n this.canDelete = await this.ecosystemService.canDeleteApp(this.app);\n this.isOwnedByManagementTenant = await this.isOwnedByManagement();\n this.isPackage = this.ecosystemService.isPackage(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 (\n this.app.manifest?.version &&\n (!!this.app.manifest?.isPackage || this.isMicroservice || !!this.app.manifest?.source)\n );\n }\n\n detail() {\n this.isMicroservice\n ? this.router.navigateByUrl(`/microservices/${this.app.id}`)\n : this.router.navigateByUrl(`/ecosystem/application/${this.app.id}`);\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.APPLICATION_CARD, {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.APPLICATION_CARD,\n action: PRODUCT_EXPERIENCE.APPLICATIONS.ACTIONS.EDIT,\n url: this.CURRENT_LOCATION\n });\n }\n\n openApp() {\n window.open(this.applicationService.getHref(this.app));\n }\n\n async delete() {\n try {\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.APPLICATION_CARD, {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.APPLICATION_CARD,\n action: PRODUCT_EXPERIENCE.APPLICATIONS.ACTIONS.DELETE,\n url: this.CURRENT_LOCATION\n });\n await this.ecosystemService.deleteApp(this.app);\n this.onAppDeleted.emit();\n } catch (ex) {\n if (ex) {\n this.alertService.addServerFailure(ex);\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.APPLICATION_CARD,\n {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.APPLICATION_CARD,\n result: PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.SERVER_FAILURE,\n url: this.CURRENT_LOCATION\n }\n );\n }\n }\n }\n\n async clone() {\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.APPLICATION_CARD, {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.APPLICATION_CARD,\n action: PRODUCT_EXPERIENCE.APPLICATIONS.ACTIONS.CLONE,\n url: this.CURRENT_LOCATION\n });\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\n private isOwnedByManagement(): boolean {\n const appOwner = get(this.app, 'owner.tenant.id');\n return appOwner === 'management';\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 class=\"card pointer card--d-col\">\n <div (click)=\"detail()\" 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 *ngIf=\"isPackage\" c8yIcon=\"big-parcel\"></i>\n <i *ngIf=\"isFeature\" c8yIcon=\"tab\"></i>\n <i *ngIf=\"isMicroservice\" c8yIcon=\"microchip\"></i>\n <i *ngIf=\"isExternal\" c8yIcon=\"globe1\"></i>\n </div>\n <p class=\"e2e-appCardName text-medium\" title=\"{{ app | humanizeAppName | async }}\">\n {{ app | humanizeAppName | async }}\n </p>\n <ng-container *ngIf=\"isShowVersion\">\n <small class=\"text-muted\">\n <em>{{ app.manifest.version }}</em>\n <i\n *ngIf=\"shouldUpgradePackage && isUnpacked\"\n [tooltip]=\"'Update available' | translate\"\n c8yIcon=\"exclamation-triangle\"\n class=\"text-warning m-l-4\"\n ></i>\n </small>\n </ng-container>\n </div>\n <div (click)=\"detail()\" 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 *ngIf=\"app.description || app.manifest?.description\" class=\"text-center-grid\">\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\n *ngIf=\"!app.label\"\n class=\"card-block no-min-height p-t-0 p-b-0 card-column-20 text-center-grid\"\n >\n <span [ngClass]=\"appState.class\" class=\"label\">\n {{ isUnpacked ? ('Unpacked' | translate) : (appState.label | translate) }}\n </span>\n </div>\n <div\n *ngIf=\"app.label\"\n class=\"card-block no-min-height p-t-0 p-b-0 card-column-20 text-center-grid\"\n >\n <span [ngClass]=\"appState.class\" class=\"label text-warning\">\n {{ isOwnedByManagementTenant ? app.label : ('COMMUNITY' | translate) }}\n </span>\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 (click)=\"openApp(); $event.stopPropagation()\"\n *ngIf=\"canOpenInBrowser\"\n [disabled]=\"disableOpenInBrowser\"\n class=\"btn btn-xs btn-default\"\n [title]=\"openButtonTitle | translate\"\n >\n <i c8yIcon=\"external-link\" class=\"m-r-4\"></i>\n {{ 'Open' | translate }}\n </button>\n <div class=\"p-b-32 card-hidden-list\"></div>\n </div>\n </div>\n\n <div *ngIf=\"canEdit || canOpenInBrowser || canDelete\" class=\"card-actions m-t-0\">\n <div class=\"dropdown\" dropdown>\n <button\n class=\"dropdown-toggle c8y-dropdown\"\n dropdownToggle\n title=\"{{ 'Settings' | translate }}\"\n >\n <i c8yIcon=\"ellipsis-v\"></i>\n </button>\n <ul *dropdownMenu class=\"dropdown-menu dropdown-menu-right\">\n <li *ngIf=\"canEdit\">\n <button (click)=\"detail()\" title=\"{{ 'Edit' | translate }}\">\n <i c8yIcon=\"pencil\" class=\"m-r-4\"></i>\n {{ 'Edit' | translate }}\n </button>\n </li>\n <ng-container *c8yIfAllowed=\"['ROLE_APPLICATION_MANAGEMENT_ADMIN']\">\n <li>\n <button\n (click)=\"delete()\"\n type=\"button\"\n [title]=\"canDelete ? ('Delete' | translate) : (CANNOT_DELETE_HINT | translate)\"\n [disabled]=\"!canDelete\"\n >\n <i c8yIcon=\"trash\" class=\"m-r-4\"></i>\n {{ 'Delete' | translate }}\n </button>\n </li>\n <li *ngIf=\"canClone\">\n <button (click)=\"clone()\" type=\"button\" [title]=\"'Clone application' | translate\">\n <i c8yIcon=\"copy\" class=\"m-r-4\"></i>\n {{ 'Clone application' | translate }}\n </button>\n </li>\n </ng-container>\n </ul>\n </div>\n </div>\n</div>\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { IApplication } from '@c8y/client';\nimport { WizardConfig, WizardModalService } from '@c8y/ngx-components';\nimport { ModalOptions } from 'ngx-bootstrap/modal';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { shareReplay, switchMap, takeUntil, tap } from 'rxjs/operators';\nimport { EcosystemService } from './../../ecosystem.service';\n\n@Component({\n selector: 'c8y-application-list',\n templateUrl: './application-list.component.html'\n})\nexport class ApplicationListComponent implements OnInit, OnDestroy {\n reloading: boolean = false;\n reload$: BehaviorSubject<void> = new BehaviorSubject(null);\n\n apps$: Observable<IApplication> = this.reload$.pipe(\n tap(() => (this.reloading = true)),\n switchMap(() => this.ecosystemService.getWebApplications()),\n tap(() => (this.reloading = false)),\n shareReplay()\n );\n\n listClass: string;\n private destroy$ = new Subject<void>();\n\n constructor(\n private ecosystemService: EcosystemService,\n private wizardModalService: WizardModalService\n ) {}\n\n ngOnInit() {\n this.loadApplications();\n }\n\n loadApplications() {\n this.reload$.next();\n }\n\n addApplication() {\n const wizardConfig: WizardConfig = {\n headerText: 'Add Application',\n headerIcon: 'c8y-atom'\n };\n\n const initialState: any = {\n wizardConfig,\n id: 'uploadApplication'\n };\n\n const modalOptions: ModalOptions = { initialState };\n\n const modalRef = this.wizardModalService.show(modalOptions);\n modalRef.content.onClose.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.loadApplications();\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","<c8y-title>{{ 'All applications' | translate }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item [icon]=\"'c8y-atom'\" [label]=\"'Ecosystem' | translate\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-modules'\"\n [label]=\"'Applications' | translate\"\n [path]=\"'ecosystem/applications'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-modules'\"\n [label]=\"'All applications' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\" *c8yIfAllowed=\"['ROLE_APPLICATION_MANAGEMENT_ADMIN']\">\n <button\n (click)=\"addApplication()\"\n class=\"btn btn-link\"\n title=\"{{ 'Add application' | translate }}\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add application' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button (click)=\"loadApplications()\" class=\"btn btn-link\" title=\"{{ 'Reload' | translate }}\">\n <i [ngClass]=\"{ 'icon-spin': reloading }\" c8yIcon=\"refresh\"></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'left'\" itemClass=\"navbar-form hidden-xs\">\n <c8y-list-display-switch\n (onListClassChange)=\"listClass = $event\"\n [listLength]=\"(apps$ | async)?.length\"\n ></c8y-list-display-switch>\n</c8y-action-bar-item>\n\n<c8y-help src=\"/users-guide/administration/#applications\"></c8y-help>\n\n<div *ngIf=\"(apps$ | async)?.length === 0\" class=\"c8y-empty-state text-center\">\n <h1 class=\"c8y-icon c8y-icon-modules c8y-icon-duocolor\"></h1>\n <h3 translate>No applications to display.</h3>\n <p translate>Add your first application by clicking below.</p>\n <p>\n <button\n (click)=\"addApplication()\"\n class=\"btn btn-primary\"\n title=\"{{ 'Add application' | translate }}\"\n >\n {{ 'Add application' | translate }}\n </button>\n </p>\n</div>\n\n<div [ngClass]=\"listClass\" class=\"card-group\">\n <div class=\"page-sticky-header hidden-xs flex-row\" *ngIf=\"(apps$ | async)?.length > 0\">\n <div class=\"card-block card-column-40\">\n <div class=\"card-appicon p-l-32 p-r-16 m-r-0 m-l-4\"></div>\n {{ 'Application' | translate }}\n </div>\n <div class=\"card-block p-0 card-column-80\">\n <div class=\"card-block card-column-80\">{{ 'Description' | translate }}</div>\n <div class=\"card-block card-column-20\">{{ 'Type' | translate }}</div>\n <div class=\"card-block card-column-20\"></div>\n </div>\n </div>\n <div *ngFor=\"let app of apps$ | async\" class=\"col-xs-12 col-sm-4 col-md-3\">\n <c8y-application-card\n (onAppDeleted)=\"loadApplications()\"\n (onAppCloned)=\"loadApplications()\"\n [app]=\"app\"\n class=\"d-contents\"\n ></c8y-application-card>\n </div>\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { IApplication } from '@c8y/client';\nimport { ApplicationState } from '../../ecosystem.model';\nimport { EcosystemService } from '../../ecosystem.service';\n@Pipe({\n name: 'appState',\n pure: true\n})\nexport class AppStatePipe implements PipeTransform {\n constructor(private ecosystemService: EcosystemService) {}\n\n transform(\n app: IApplication,\n arg: keyof ApplicationState\n ): ApplicationState[keyof ApplicationState] {\n const appState = this.ecosystemService.getAppState(app);\n return appState[arg];\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { ModalService, gettext, Status } from '@c8y/ngx-components';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { IApplication } from '@c8y/client';\n\n@Component({\n selector: 'c8y-install-plugin-to-app',\n templateUrl: './install-plugin-to-app.component.html'\n})\nexport class InstallPluginToAppComponent {\n @Input() apps: IApplication[];\n appsToInstall: IApplication[] = [];\n result: Promise<IApplication[]> = new Promise((resolve, reject) => {\n this._install = resolve;\n this._cancel = reject;\n });\n private _install: (apps: IApplication[]) => void;\n private _cancel: (reason?: any) => void;\n\n constructor(private bsModalRef: BsModalRef, private modal: ModalService) {}\n\n cancel() {\n this.bsModalRef.hide();\n this._cancel();\n }\n\n updateSelected(selected: boolean, app: IApplication) {\n selected\n ? this.appsToInstall.push(app)\n : (this.appsToInstall = this.appsToInstall.filter(\n application => app.key !== application.key\n ));\n }\n\n async install() {\n try {\n await this.modal.confirm(\n gettext('Install plugin'),\n gettext('Do you want to proceed?'),\n Status.INFO,\n { ok: gettext('Continue') }\n );\n this._install(this.appsToInstall);\n this.bsModalRef.hide();\n } catch (er) {\n return;\n }\n }\n}\n","<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i [c8yIcon]=\"'c8y-modules'\"></i>\n <h4 translate>Custom applications</h4>\n </div>\n <div class=\"inner-scroll\">\n <div class=\"p-16 text-center separator-bottom sticky-top bg-component\">\n <p class=\"text-medium\" translate>\n Select the applications to which the plugin will be installed.\n </p>\n </div>\n <c8y-list-group *ngIf=\"apps.length; else emptyList\">\n <c8y-li *ngFor=\"let app of apps\">\n <c8y-li-checkbox (onSelect)=\"updateSelected($event, app)\"> </c8y-li-checkbox>\n <c8y-li-icon class=\"p-l-0 icon-32\">\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 </c8y-li-icon>\n <div class=\"d-flex\">\n <div class=\"p-r-8\">\n <p [innerText]=\"app | humanizeAppName | async\" class=\"text-medium\"></p>\n <p class=\"small text-muted\">{{ app.description }}</p>\n </div>\n <span [ngClass]=\"app | appState: 'class'\" class=\"label m-l-auto a-s-start\">{{\n app | appState: 'label' | translate\n }}</span>\n </div>\n </c8y-li>\n </c8y-list-group>\n </div>\n <div class=\"modal-footer\">\n <button\n (click)=\"cancel()\"\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n [disabled]=\"appsToInstall.length === 0\"\n title=\"{{ 'Install' | translate }}\"\n (click)=\"install()\"\n >\n {{ 'Install' | translate }}\n </button>\n </div>\n</div>\n<ng-template #emptyList>\n <c8y-ui-empty-state\n [icon]=\"'c8y-modules'\"\n [title]=\"'No custom applications available.' | translate\"\n [subtitle]=\"'No custom applications available.' | translate\"\n [horizontal]=\"true\"\n >\n </c8y-ui-empty-state>\n</ng-template>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ApplicationPlugin } from '@c8y/ngx-components';\n\n@Component({\n selector: 'c8y-plugin-list-item',\n templateUrl: './plugin-list-item.component.html'\n})\nexport class PluginListItemComponent {\n @Input() plugin: ApplicationPlugin;\n @Input() selectable: boolean;\n @Output() isItemSelected: EventEmitter<boolean> = new EventEmitter();\n\n onChange(event) {\n this.isItemSelected.next(event);\n }\n}\n","\n <c8y-li-checkbox\n (change)=\"onChange($event.target.checked)\"\n *ngIf=\"selectable\"\n [disabled]=\"plugin.installed\"\n class=\"p-r-16 p-l-0\"\n ></c8y-li-checkbox>\n <c8y-li-icon class=\"p-l-0\">\n <i class=\"c8y-plugin-icon\">\n <span>{{ plugin.name?.substr(0, 2) }}</span>\n </i>\n </c8y-li-icon>\n <div class=\"d-flex\">\n <div [ngClass]=\"{'p-r-8' : selectable}\">\n <p>\n <span class=\"text-medium\">{{ plugin.name }}</span>\n <em class=\"text-muted small m-l-8\">{{ plugin.version }}</em>\n <span *ngIf=\"plugin.installed\">\n <i [c8yIcon]=\"'check-circle'\" class=\"text-success\"></i>\n <em class=\"text-muted small\" translate>Installed`plugins`</em>\n </span>\n </p>\n <p class=\"small l-h-tight\">{{ plugin.description }}</p>\n </div>\n <span *ngIf=\"selectable\" class=\"label label-info m-l-auto a-s-start\">{{\n plugin.contextPath\n }}</span>\n </div>\n \n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ApplicationRemotePlugins, ApplicationType, IApplication } from '@c8y/client';\nimport {\n AlertService,\n ApplicationPlugin,\n GainsightService,\n gettext,\n PluginsService\n} from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { BehaviorSubject } from 'rxjs';\nimport { PRODUCT_EXPERIENCE } from '../../ecosystem.model';\nimport { EcosystemService } from '../../ecosystem.service';\nimport { InstallPluginToAppComponent } from './install-plugin-to-app.component';\n\n@Component({\n selector: 'c8y-plugin-list',\n templateUrl: './plugin-list.component.html'\n})\nexport class PluginListComponent {\n CURRENT_LOCATION = location.href;\n @Input() plugins$: BehaviorSubject<ApplicationPlugin[]>;\n @Input() emptyListText: string = '';\n @Input() selectable: boolean;\n /**\n * Shows the install button for each plugin separately. Currently used in package-details view.\n */\n @Input() installable: boolean = false;\n @Input() package: IApplication;\n @Output() selectedItems: EventEmitter<string[]> = new EventEmitter();\n remotePlugins$: BehaviorSubject<ApplicationRemotePlugins> = new BehaviorSubject({});\n selectedPlugins: object = {};\n installingPluginId: string;\n\n constructor(\n private ecosystemService: EcosystemService,\n private bsModalService: BsModalService,\n private pluginsService: PluginsService,\n private alertService: AlertService,\n private translateService: TranslateService,\n private gainsightService: GainsightService\n ) {}\n\n updateSelectedItems(value: boolean, pluginId: string) {\n this.selectedPlugins[pluginId] = value;\n this.selectedItems.emit(Object.keys(this.selectedPlugins).filter(k => this.selectedPlugins[k]));\n }\n\n async installPlugin(plugin: ApplicationPlugin) {\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.PACKAGE_PLUGINS, {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.PLUGIN_LIST,\n action: PRODUCT_EXPERIENCE.APPLICATIONS.ACTIONS.INSTALL_PLUGIN,\n url: this.CURRENT_LOCATION\n });\n this.installingPluginId = plugin?.id;\n let initialState;\n try {\n initialState = {\n apps: (await this.ecosystemService.getWebApplications()).filter(\n app => this.ecosystemService.isOwner(app) && app.type !== ApplicationType.EXTERNAL\n )\n };\n } catch (e) {\n this.alertService.addServerFailure(e);\n this.installingPluginId = '';\n return;\n }\n\n let selectedApps: IApplication[];\n try {\n selectedApps = await this.selectApps(initialState);\n if (!selectedApps) {\n this.installingPluginId = '';\n return;\n }\n } catch {\n // unreached\n }\n\n for (const app of selectedApps) {\n try {\n await this.handleRemotesInstallation(app, plugin);\n const successText = this.translateService.instant(\n gettext('Plugin installed successfully to app \"{{ appName }}\".'),\n { appName: app.name }\n );\n this.alertService.success(successText);\n } catch {\n // nothing to do\n }\n }\n this.installingPluginId = '';\n }\n\n private async handleRemotesInstallation(application: IApplication, plugin: ApplicationPlugin) {\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.PACKAGE_PLUGINS, {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.PLUGIN_LIST,\n result: PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.PLUGIN_INSTALLED,\n url: this.CURRENT_LOCATION\n });\n try {\n // When remotes object is not set in the configuration object of an application.\n // Fallback to setInitialRemotes is triggered.\n let updatedRemotes = await this.pluginsService.addRemotes(application, plugin);\n if (!updatedRemotes) {\n // TODO discuss if we need to handle it like that.\n // Right now remotes from the cumulocity.json are taken into account when remotes object is missing in the configuration.\n updatedRemotes = await this.pluginsService.setInitialRemotes(application);\n // Fresh application MO is needed, after initial state was set.\n const app = await this.ecosystemService.getApplication(application.id);\n updatedRemotes = await this.pluginsService.addRemotes(app, plugin);\n }\n return this.emitRemotes(updatedRemotes);\n } catch (er) {\n if (er) {\n this.alertService.addServerFailure(er);\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.PACKAGE_PLUGINS, {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.PLUGIN_LIST,\n result: PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.SERVER_FAILURE,\n url: this.CURRENT_LOCATION\n });\n }\n throw er;\n }\n }\n\n private emitRemotes(remotes: ApplicationRemotePlugins): ApplicationRemotePlugins {\n this.remotePlugins$.next(remotes);\n return { ...this.remotePlugins$.value };\n }\n\n private async selectApps(\n initialState: Pick<InstallPluginToAppComponent, 'apps'>\n ): Promise<IApplication[]> {\n try {\n return await (\n this.bsModalService.show(InstallPluginToAppComponent, {\n class: 'modal-sm',\n initialState,\n ignoreBackdropClick: true\n }).content as InstallPluginToAppComponent\n ).result;\n } catch (er) {\n return;\n }\n }\n}\n","<c8y-list-group class=\"bg-inherit\">\n <ng-container *ngIf=\"(plugins$ | async)?.length !== 0; else emptyList\">\n <ng-container *ngFor=\"let plugin of plugins$ | async\">\n <c8y-li [ngClass]=\"{ disabled: plugin.installed }\" class=\"bg-inherit\">\n <c8y-plugin-list-item\n (isItemSelected)=\"updateSelectedItems($event, plugin?.id)\"\n [plugin]=\"plugin\"\n [selectable]=\"selectable\"\n class=\"d-flex\"\n ></c8y-plugin-list-item>\n <div class=\"p-l-40 m-t-4\">\n <button\n *ngIf=\"installable\"\n (click)=\"installPlugin(plugin)\"\n [ngClass]=\"{ 'btn-pending': plugin.id === installingPluginId }\"\n [disabled]=\"installingPluginId && plugin.id !== installingPluginId\"\n class=\"btn btn-default btn-sm m-l-4\"\n title=\"{{ 'Install plugin' | translate }}\"\n translate\n >\n Install plugin\n </button>\n </div>\n </c8y-li>\n </ng-container>\n </ng-container>\n</c8y-list-group>\n<ng-template #emptyList>\n <div class=\"c8y-empty-state text-left\" *ngIf=\"emptyListText\">\n <h1 c8yIcon=\"plugin\"></h1>\n <p>\n {{ emptyListText | translate }}\n </p>\n </div>\n</ng-template>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ModalService, gettext, Status, ApplicationPlugin } from '@c8y/ngx-components';\nimport { BehaviorSubject, combineLatest, Observable } from 'rxjs';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { map } from 'rxjs/operators';\n\n@Component({\n selector: 'c8y-install-plugin',\n templateUrl: './install-plugin.component.html'\n})\nexport class InstallPluginComponent implements OnInit {\n @Input() plugins$: BehaviorSubject<ApplicationPlugin[]>;\n filterTerm$: BehaviorSubject<string> = new BehaviorSubject('');\n filteredPlugins$: Observable<ApplicationPlugin[]> = new BehaviorSubject([]);\n selectedPlugins: string[] = [];\n result: Promise<void> = new Promise((resolve, reject) => {\n this._install = resolve;\n this._cancel = reject;\n });\n private _install;\n private _cancel;\n\n constructor(private bsModalRef: BsModalRef, private modal: ModalService) {}\n\n ngOnInit() {\n this.filteredPlugins$ = combineLatest(this.plugins$, this.filterTerm$).pipe(\n map(([plugins, filterTerm]) =>\n filterTerm.trim().length === 0\n ? plugins\n : plugins.filter((plugin: ApplicationPlugin) =>\n this.filterContainString(plugin.name, filterTerm)\n )\n )\n );\n }\n\n cancel() {\n this.bsModalRef.hide();\n this._cancel();\n }\n\n async install() {\n try {\n await this.modal.confirm(\n gettext('Install plugins'),\n gettext(\n 'The operation may take several minutes. During this time the application may be unavailable. Do you want to proceed?'\n ),\n Status.INFO,\n { ok: gettext('Continue') }\n );\n this._install(this.selectedPlugins);\n this.bsModalRef.hide();\n } catch (er) {\n return;\n }\n }\n\n private filterContainString(name: string, filterTerm: string) {\n const term = filterTerm.toLowerCase().trim();\n return name && name.toLowerCase().indexOf(term) > -1;\n }\n}\n","<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i [c8yIcon]=\"'plugin'\"></i>\n <h4 translate>Available plugins</h4>\n </div>\n <div class=\"p-t-8 p-16 text-center separator-bottom flex-no-shrink\">\n <p class=\"text-medium m-b-8\" translate>Select the compatible plugins to install</p>\n <c8y-filter (onSearch)=\"this.filterTerm$.next($event)\"></c8y-filter>\n </div>\n <div class=\"modal-inner-scroll\">\n <c8y-plugin-list\n (selectedItems)=\"selectedPlugins = $event\"\n [emptyListText]=\"'No plugins available' | translate\"\n [plugins$]=\"filteredPlugins$\"\n [selectable]=\"true\"\n class=\"m-t-16\"\n ></c8y-plugin-list>\n </div>\n\n <div class=\"modal-footer\">\n <button\n (click)=\"cancel()\"\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n (click)=\"install()\"\n [disabled]=\"selectedPlugins.length === 0\"\n class=\"btn btn-primary\"\n title=\"{{ 'Install' | translate }}\"\n type=\"button\"\n >\n {{ 'Install' | translate }}\n <span class=\"badge\" *ngIf=\"selectedPlugins.length as length\">{{ length }}</span>\n </button>\n </div>\n</div>\n","import { Component } from '@angular/core';\nimport { CellRendererContext } from '@c8y/ngx-components';\n\n@Component({\n selector: 'c8y-label-cell-renderer',\n templateUrl: './label-cell-renderer.component.html'\n})\nexport class LabelCellRendererComponent {\n constructor(public context: CellRendererContext) {}\n}\n","<span class=\"label label-info\">{{ context.value }}</span>\n","import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { ApplicationRemotePlugins, IApplication } from '@c8y/client';\nimport {\n AlertService,\n ApplicationPlugin,\n BulkActionControl,\n Column,\n DataGridComponent,\n DisplayOptions,\n GainsightService,\n gettext,\n ModalService,\n Pagination,\n PluginsService,\n Status\n} from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { BehaviorSubject, combineLatest, Observable, Subject } from 'rxjs';\nimport { map, shareReplay } from 'rxjs/operators';\nimport { PRODUCT_EXPERIENCE } from '../../ecosystem.model';\nimport { EcosystemService } from '../../ecosystem.service';\nimport { InstallPluginComponent } from './install-plugin.component';\nimport { LabelCellRendererComponent } from './label-cell-renderer.component';\n\n@Component({\n selector: 'c8y-app-plugins',\n templateUrl: './application-plugins.component.html'\n})\nexport class ApplicationPluginsComponent implements OnInit, OnDestroy {\n PRODUCT_EXPERIENCE = PRODUCT_EXPERIENCE;\n CURRENT_LOCATION = location.href;\n\n @ViewChild(DataGridComponent, { static: false })\n dataGrid: DataGridComponent;\n\n exportedPlugins$: BehaviorSubject<ApplicationPlugin[]> = new BehaviorSubject([]);\n remotePlugins$: BehaviorSubject<ApplicationRemotePlugins> = new BehaviorSubject({});\n allAvailablePlugins$: BehaviorSubject<ApplicationPlugin[]> = new BehaviorSubject([]);\n\n installedPlugins$: Observable<ApplicationPlugin[]> = combineLatest([\n this.remotePlugins$.pipe(map(remotes => this.convertInstalledRemotesToIds(remotes))),\n this.allAvailablePlugins$\n ]).pipe(\n map(([remotePlugins, allPlugins]) => allPlugins.filter(p => remotePlugins.includes(p.id))),\n shareReplay(1)\n );\n app: IApplication;\n isLoading: boolean;\n title: string = gettext('Installed plugins');\n loadMoreItemsLabel: string = gettext('Load more packages');\n loadingItemsLabel: string = gettext('Loading packages');\n bulkActionControls: BulkActionControl[] = this.getBulkActionControls();\n pagination: Pagination = {\n pageSize: 10,\n currentPage: 1\n };\n displayOptions: DisplayOptions = {\n bordered: false,\n striped: true,\n filter: true,\n gridHeader: true\n };\n columns: Column[] = [\n {\n name: 'name',\n header: gettext('Plugin name'),\n path: 'name',\n filterable: true\n },\n {\n name: 'Version',\n header: gettext('Version'),\n path: 'version',\n filterable: false\n },\n {\n name: 'description',\n header: gettext('Description'),\n path: 'description',\n filterable: false,\n cellCSSClassName: 'small'\n },\n {\n name: 'contextPath',\n header: gettext('Source'),\n path: 'contextPath',\n filterable: false,\n cellRendererComponent: LabelCellRendererComponent\n }\n ];\n private destroy$: Subject<any> = new Subject();\n\n constructor(\n private activatedRoute: ActivatedRoute,\n private ecosystemService: EcosystemService,\n private bsModalService: BsModalService,\n private modal: ModalService,\n private translateService: TranslateService,\n private pluginsService: PluginsService,\n private alertService: AlertService,\n private gainsightService: GainsightService\n ) {}\n\n ngOnInit() {\n this.loadData();\n }\n\n async loadData() {\n this.isLoading = true;\n await this.getApplicationMO();\n await this.getApplicationMFExports(this.app);\n await this.getApplicationMFRemotes(this.app);\n await this.getAllApplicationsMFExports();\n this.isLoading = false;\n }\n\n async installPlugins() {\n try {\n const pluginsToAdd: string[] = (await (\n this.bsModalService.show(InstallPluginComponent, {\n class: 'modal-sm',\n initialState: this.getInstallModalInitState(),\n ignoreBackdropClick: true\n }).content as InstallPluginComponent\n ).result) as any as string[];\n\n this.isLoading = true;\n await this.handleRemotesInstallation(pluginsToAdd);\n\n this.alertService.success(gettext('Plugins installed.'));\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.INSTALLED_PLUGINS, {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.APPLICATION_PLUGINS,\n result: PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.PLUGIN_INSTALLED,\n url: this.CURRENT_LOCATION\n });\n } catch (ex) {\n if (ex) {\n this.alertService.addServerFailure(ex);\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.INSTALLED_PLUGINS,\n {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.APPLICATION_PLUGINS,\n result: PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.SERVER_FAILURE,\n url: this.CURRENT_LOCATION\n }\n );\n }\n } finally {\n this.isLoading = false;\n }\n }\n\n async removePlugins(plugins: string[]) {\n const humanizedAppName = await this.ecosystemService.getHumanizedAppName(this.app);\n try {\n await this.modal.confirm(\n gettext('Remove plugins'),\n this.translateService.instant(\n gettext(\n 'You are about to remove plugins from application \"{{ humanizedAppName }}\". The operation may take several minutes. During this time the application may be unavailable. Do you want to proceed?'\n ),\n { humanizedAppName }\n ),\n Status.DANGER,\n {\n ok: gettext('Remove'),\n cancel: gettext('Cancel')\n }\n );\n this.isLoading = true;\n const updatedRemotes = await this.pluginsService.removeRemotes(\n this.app,\n plugins.map(id => ({ id } as ApplicationPlugin))\n );\n this.emitRemotes(updatedRemotes);\n\n this.isLoading = false;\n this.dataGrid.cancel();\n this.alertService.success(gettext('Plugins removed.'));\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.INSTALLED_PLUGINS, {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.APPLICATION_PLUGINS,\n result: PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.PLUGIN_REMOVED,\n url: this.CURRENT_LOCATION\n });\n } catch (ex) {\n if (ex) {\n this.alertService.addServerFailure(ex);\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.INSTALLED_PLUGINS,\n {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.APPLICATION_PLUGINS,\n result: PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.SERVER_FAILURE,\n url: this.CURRENT_LOCATION\n }\n );\n }\n } finally {\n this.isLoading = false;\n }\n }\n\n getBulkActionControls(): BulkActionControl[] {\n return [\n {\n type: 'customDelete',\n text: gettext('Remove'),\n icon: 'trash',\n callback: plugins => this.removePlugins(plugins)\n }\n ];\n }\n\n refresh() {\n this.loadData();\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private async handleRemotesInstallation(remotesIds: string[]) {\n // When remotes object is not set in the configuration object of an application.\n // Fallback to setInitialRemotes is triggered.\n let updatedRemotes = await this.pluginsService.addRemotes(\n this.app,\n remotesIds.map(id => ({ id } as ApplicationPlugin))\n );\n\n if (!updatedRemotes) {\n // TODO discuss if we need to handle it like that.\n // Right now remotes from the cumulocity.json are taken into account when remotes object is missing in the configuration.\n updatedRemotes = await this.pluginsService.setInitialRemotes(this.app);\n // Fresh application MO is needed, after initial state was set.\n await this.getApplicationMO();\n updatedRemotes = await this.pluginsService.addRemotes(\n this.app,\n remotesIds.map(id => ({ id } as ApplicationPlugin))\n );\n }\n return this.emitRemotes(updatedRemotes);\n }\n\n private emitRemotes(updatedRemotes: ApplicationRemotePlugins) {\n this.remotePlugins$.next(updatedRemotes);\n this.app.config.remotes = updatedRemotes;\n return { ...this.remotePlugins$.value };\n }\n\n private async getApplicationMO(): Promise<IApplication> {\n const { id } = this.activatedRoute.snapshot.parent.data.contextData;\n try {\n this.app = await this.ecosystemService.getApplication(id);\n } catch (er) {\n if (er) {\n this.alertService.addServerFailure(er);\n }\n }\n return this.app;\n }\n\n private async getApplicationMFExports(app: IApplication) {\n const exports = this.pluginsService.getMFExports(app);\n this.exportedPlugins$.next(exports);\n }\n\n private async getApplicationMFRemotes(app: IApplication) {\n let appConfigRemotes = this.pluginsService.getMFRemotes(app);\n\n if (!appConfigRemotes) {\n appConfigRemotes = await this.pluginsService.setInitialRemotes(app);\n this.app = await this.getApplicationMO();\n }\n this.remotePlugins$.next(appConfigRemotes || {});\n }\n\n private async getAllApplicationsMFExports() {\n const allAppsMFExports = await this.pluginsService.getAllMFExports();\n this.allAvailablePlugins$.next(allAppsMFExports);\n }\n\n private getInstallModalInitState(): any {\n return {\n plugins$: combineLatest([\n this.allAvailablePlugins$,\n this.installedPlugins$.pipe(map(plugins => plugins.map(p => p.id))),\n this.exportedPlugins$.pipe(map(plugins => plugins.map(p => p.id)))\n ]).pipe(\n map(([allPlugins, installedPlugins, exportedPluginNames]) => {\n const plugins = [];\n allPlugins\n .filter(p => !exportedPluginNames.includes(p.id))\n .map(p => plugins.push({ ...p, installed: !!installedPlugins.includes(p.id) }));\n return plugins;\n }),\n shareReplay(1)\n )\n };\n }\n\n private convertInstalledRemotesToIds(remotes: ApplicationRemotePlugins): string[] {\n if (!remotes) {\n return;\n }\n const importContextPaths = Object.keys(remotes);\n const plugins = [];\n importContextPaths.forEach(contextPath => {\n const moduleNames = remotes[contextPath];\n plugins.push(...moduleNames.map(module => this.createId(contextPath, module)));\n });\n return plugins;\n }\n\n private createId(contextPath: string, pluginModuleName: string): string {\n return `${contextPath}/${pluginModuleName}`;\n }\n}\n","<c8y-title>{{ app | humanizeAppName | async }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item [icon]=\"'c8y-atom'\" [label]=\"'Ecosystem' | translate\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-modules'\"\n [label]=\"'Applications' | translate\"\n [path]=\"'ecosystem/applications'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-modules'\"\n [label]=\"'All applications' | translate\"\n [path]=\"'ecosystem/applications'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"app | humanizeAppName | async\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Plugins' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n (click)=\"installPlugins()\"\n [ngClass]=\"{ 'btn-pending': isLoading }\"\n class=\"btn btn-link\"\n title=\"{{ 'Install plugins' | translate }}\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Install plugins' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<div class=\"content-fullpage d-flex d-col\">\n <c8y-data-grid\n [title]=\"title\"\n [loadMoreItemsLabel]=\"loadMoreItemsLabel\"\n [loadingItemsLabel]=\"loadingItemsLabel\"\n [displayOptions]=\"displayOptions\"\n [columns]=\"columns\"\n [rows]=\"installedPlugins$ | async\"\n [pagination]=\"pagination\"\n [selectable]=\"true\"\n [actionControls]=\"[]\"\n [bulkActionControls]=\"bulkActionControls\"\n (onReload)=\"refresh()\"\n class=\"d-contents\"\n >\n <!-- No search/filtered results empty state -->\n <c8y-ui-empty-state\n *ngIf=\"(installedPlugins$ | async)?.length\"\n [icon]=\"'search'\"\n [title]=\"'No plugins to display.' | translate\"\n [subtitle]=\"'Refine your search terms or check your spelling.' | translate\"\n [horizontal]=\"true\"\n >\n </c8y-ui-empty-state>\n <!-- No installed plugins empty state -->\n <c8y-ui-empty-state\n *ngIf=\"!(installedPlugins$ | async)?.length && !isLoading\"\n [icon]=\"'plugin'\"\n [title]=\"'No plugins installed.' | translate\"\n [subtitle]=\"'This application doesn\\'t have any plugin. Click below to install.' | translate\"\n [horizontal]=\"true\"\n >\n <div class=\"fit-w p-t-16\">\n <button\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.INSTALLED_PLUGINS\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.APPLICATION_PLUGINS,\n action: PRODUCT_EXPERIENCE.APPLICATIONS.ACTIONS.INSTALL_PLUGINS,\n url: CURRENT_LOCATION\n }\"\n (click)=\"installPlugins()\"\n [ngClass]=\"{ 'btn-pending': isLoading }\"\n class=\"btn btn-primary btn-sm\"\n title=\"{{ 'Install plugins' | translate }}\"\n translate\n >\n Install plugins\n </button>\n </div>\n </c8y-ui-empty-state>\n </c8y-data-grid>\n</div>\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate } from '@angular/router';\nimport { ApplicationType } from '@c8y/client';\nimport { EcosystemService } from '../../ecosystem.service';\n\n@Injectable()\nexport class ApplicationPluginsGuard implements CanActivate {\n constructor(private ecosystemService: EcosystemService) {}\n\n canActivate(route: ActivatedRouteSnapshot) {\n const app = route.data.contextData || route.parent.data.contextData;\n if (!app) {\n return false;\n }\n return (\n app.type === ApplicationType.HOSTED &&\n this.ecosystemService.isOwner(app) &&\n !this.ecosystemService.isPackage(app)\n );\n }\n}\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.model';\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\"\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\n (click)=\"back()\"\n class=\"btn btn-default\"\n title=\"{{ 'Back' | translate }}\"\n translate\n type=\"button\"\n >\n Back\n </button>\n <button (click)=\"cancel()\" class=\"btn btn-default\" title=\"{{ 'Cancel' | translate }}\" translate>\n Cancel\n </button>\n</c8y-wizard-footer>\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: boolean = 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 });\n }\n\n private setForm(applicationConfig: IApplication) {\n this.formGroup.patchValue({ ...applicationConfig });\n }\n}\n","<form\n (ngSubmit)=\"(formGroup.valid)\"\n [formGroup]=\"formGroup\"\n class=\"c8y-wizard-form text-left\"\n name=\"appDeployForm\"\n novalidate\n>\n <c8y-form-group>\n <label for=\"name\" translate>Name</label>\n <input\n class=\"form-control\"\n formControlName=\"name\"\n name=\"name\"\n placeholder=\"{{ 'e.g. My application' | translate }}\"\n required\n type=\"text\"\n />\n </c8y-form-group>\n <c8y-form-group>\n <label for=\"key\" translate>Application key</label>\n <input\n class=\"form-control\"\n formControlName=\"key\"\n name=\"key\"\n placeholder=\"{{ 'e.g. my-application-key' | translate }}\"\n required\n type=\"text\"\n />\n </c8y-form-group>\n <c8y-form-group>\n <label for=\"contextPath\" translate>Path</label>\n <div class=\"input-group\">\n <span class=\"input-group-addon\">/apps/</span>\n <input\n class=\"form-control\"\n formControlName=\"contextPath\"\n name=\"contextPath\"\n placeholder=\"{{ 'e.g. my-application' | translate }}\"\n required\n type=\"text\"\n />\n </div>\n </c8y-form-group>\n</form>\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 { PRODUCT_EXPERIENCE } from '../../../ecosystem.model';\nimport { EcosystemService } from '../../../ecosystem.service';\nimport { ApplicationPropertiesFormComponent } from '../../../shared/application-properties-form.component';\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 @Input() stepper: C8yStepper;\n @Input() existingApps: IApplication[];\n @Input() selectedApp: BehaviorSubject<IApplication>;\n @Input() isFirstStep: boolean = 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: boolean = 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\n Object.assign(clonedApp, formGroupValue);\n delete clonedApp.type;\n\n await this.updateApp(clonedApp);\n this.inProgress = false;\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.DUPLICATE_APPLICATION,\n {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.DUPLICATE_APPLICATION_PROPERTIES,\n result: PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.DUPLICATED,\n url: this.CURRENT_LOCATION\n }\n );\n }\n\n cancel() {\n this.bsModalRef.hide();\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.DUPLICATE_APPLICATION,\n {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.DUPLICATE_APPLICATION_PROPERTIES,\n action: PRODUCT_EXPERIENCE.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-white 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-progress-bar\n *ngIf=\"inProgress\"\n [message]=\"'Duplicating…' | translate\"\n class=\"text-center d-block\"\n></c8y-progress-bar>\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\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 <h1 [c8yIcon]=\"'copy'\"></h1>\n <h4 translate>Duplicate application</h4>\n</c8y-wizard-header>\n\n<c8y-wizard-body>\n <c8y-stepper\n [customClasses]=\"['hidden']\"\n [disableDefaultIcons]=\"{ edit: true, done: false }\"\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-white\">\n {{ 'Select application to duplicate' | translate }}\n </p>\n <c8y-duplicate-application-list\n (onSelectedApp)=\"onSelectedApp($event)\"\n *ngIf=\"stepper.selectedIndex === 0\"\n [existingApps]=\"existingApps\"\n [stepper]=\"stepper\"\n class=\"d-block\"\n style=\"min-height: 257px\"\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=\"stepper.selectedIndex === 1 || (stepper.selectedIndex === 0 && directlyMoveToSecondStep)\"\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 *ngIf=\"stepper.selectedIndex === 2 || (stepper.selectedIndex === 1 && directlyMoveToSecondStep)\">\n <div\n *ngIf=\"duplicatedApp; else duplicateAppFailed\"\n style=\"min-height: 257px\"\n class=\"d-flex a-i-center j-c-center\"\n >\n <c8y-operation-result\n text=\"{{ 'Application created' | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"success\"\n ></c8y-operation-result>\n </div>\n <ng-template #duplicateAppFailed>\n <div style=\"min-height: 257px\" class=\"d-flex a-i-center j-c-center\">\n <c8y-operation-result\n text=\"{{ 'Application creation failed' | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"error\"\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 === 2 || (stepper.selectedIndex === 1 && directlyMoveToSecondStep)\">\n <button type=\"button\" (click)=\"done()\" class=\"btn btn-default\" title=\"{{ 'Done' | translate }}\">\n {{ 'Done' | translate }}\n </button>\n <a\n (click)=\"$event.stopPropagation()\"\n [href]=\"getHref(duplicatedApp)\"\n target=\"_blank\"\n class=\"btn btn-primary\"\n title=\"{{ 'Open' | translate }}\"\n >\n <i c8yIcon=\"external-link\" class=\"m-r-4\"></i>\n {{ 'Open' | translate }}\n </a>\n</c8y-wizard-footer>\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport {\n ApplicationService,\n IApplication,\n IApplicationVersion,\n InventoryService,\n IResultList\n} from '@c8y/client';\nimport { PluginsService, WizardComponent } from '@c8y/ngx-components';\nimport { BehaviorSubject, combineLatest, from, Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { EcosystemService } from '../../ecosystem.service';\nimport { ApplicationPropertiesFormComponent } from '../../shared/application-properties-form.component';\n\n@Component({\n selector: 'c8y-install-from-package',\n templateUrl: './install-from-package.component.html'\n})\nexport class InstallFromPackageComponent implements OnInit {\n newAppConfig: IApplication;\n selectedPackage: IApplication;\n packages: IApplication[];\n inProgress: boolean;\n deployedWithSuccess: boolean = false;\n isDeployed: boolean = false;\n\n model = {\n selected: undefined,\n binary: {\n id: undefined\n }\n };\n canDeploy: boolean = false;\n onInput: BehaviorSubject<string> = new BehaviorSubject<string>('');\n versions$: Observable<IResultList<IApplicationVersion>>;\n @ViewChild(ApplicationPropertiesFormComponent)\n applicationPropertiesForm: ApplicationPropertiesFormComponent;\n\n constructor(\n private ecosystemService: EcosystemService,\n private applicationService: ApplicationService,\n private wizardComponent: WizardComponent,\n private pluginsService: PluginsService,\n private inventoryService: InventoryService\n ) {}\n\n async ngOnInit() {\n this.loadPackages();\n }\n\n back() {\n this.wizardComponent.reset();\n }\n\n clean() {\n this.selectedPackage = undefined;\n this.versions$ = undefined;\n this.model = {\n selected: undefined,\n binary: {\n id: undefined\n }\n };\n }\n\n cancel() {\n this.wizardComponent.close();\n }\n\n async deployApp() {\n this.inProgress = true;\n const formGroupValue = this.applicationPropertiesForm.formGroup.getRawValue();\n\n // Create new app config\n const config = await this.ecosystemService.createConfig(this.selectedPackage, formGroupValue);\n config.version = this.model.selected.version;\n config.isSetup = true;\n if (!config.manifest) {\n config.manifest = {};\n }\n config.manifest.isPackage = false;\n config.manifest.source = this.selectedPackage.id;\n config.manifest.package = 'blueprint';\n config.resourcesUrl = '/';\n\n // Create new app\n const newApp = (await this.applicationService.create(config)).data;\n // Binary\n try {\n // Get binary details\n const { data: binaryDetails } = await this.inventoryService.detail(\n this.model.selected.binaryId\n );\n\n // Get binary from specific package version\n const binary = await this.ecosystemService.getBinary(this.selectedPackage, {\n id: this.model.selected.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.ecosystemService.uploadArchiveToApp(file, newApp);\n // Update manifest\n await this.ecosystemService.updateAppManifest(newApp, this.selectedPackage);\n\n this.deployedWithSuccess = true;\n } catch (error) {\n if (error?.res?.status === 404) {\n await this.applicationService.delete(newApp.id);\n await this.fallbackToCloneLatest(config);\n }\n } finally {\n this.markAsDeployed();\n }\n }\n\n async fallbackToCloneLatest(config) {\n let clonedPkg;\n try {\n clonedPkg = (await this.applicationService.clone(this.selectedPackage)).data;\n\n // clean out all falsely cloned applicationVersions, we don't need them\n for (const appVersion of clonedPkg.applicationVersions as IApplicationVersion[]) {\n if (appVersion.tags.includes('latest')) {\n await this.ecosystemService.setPackageVersionTag(clonedPkg, appVersion.version, []);\n }\n await this.ecosystemService.deletePackageVersion(clonedPkg, {\n version: appVersion.version\n });\n }\n delete config.type;\n config.isPackage = false;\n const { data: newApp } = await this.ecosystemService.updateApp(\n {\n id: clonedPkg.id,\n activeVersionId: clonedPkg.activeVersionId,\n ...config\n },\n false\n );\n await this.ecosystemService.updateAppManifest(newApp, this.selectedPackage);\n this.deployedWithSuccess = true;\n } catch (error) {\n await this.ecosystemService.deleteApp(clonedPkg.id, true);\n }\n this.markAsDeployed();\n }\n\n onAppVersionSelect(appVersion: IApplicationVersion) {\n Object.assign(this.model, {\n selected: appVersion\n });\n this.canDeploy = true;\n }\n\n async selectPackage(selectedPackage: IApplication) {\n const apps = (await this.ecosystemService.getApplications()).data;\n this.newAppConfig = this.ecosystemService.getUniqueAppConfig(selectedPackage, apps);\n this.selectedPackage = selectedPackage;\n\n this.loadSelectedPackageVersions();\n }\n\n private loadSelectedPackageVersions() {\n this.versions$ = combineLatest([\n this.getAppVersions(this.selectPackage),\n this.onInput.asObservable()\n ]).pipe(\n map(([resultList, filterStr]) => {\n this.canDeploy = false;\n const versionsFilteredByStr = this.filterAppVersions(resultList.data, filterStr);\n const sortedAppVersions = this.pluginsService.sortVersions(\n {\n list: versionsFilteredByStr,\n path: ['version']\n },\n 'desc'\n );\n\n this.setInitialValueForInput(sortedAppVersions);\n return { data: sortedAppVersions, res: resultList.res };\n })\n );\n }\n\n private getAppVersions(mo: IApplication) {\n const versions = mo?.applicationVersions;\n return versions && versions.length > 0\n ? of({ data: versions, res: undefined })\n : from(this.applicationService.listVersions(this.selectedPackage.id));\n }\n\n private setInitialValueForInput(versions: IApplicationVersion[]) {\n if (!this.model.selected && versions.length > 0) {\n const latest = versions.find(v => v.tags.includes('latest'));\n this.model.selected = latest || versions[0];\n this.canDeploy = true;\n }\n }\n\n private filterAppVersions(\n appVersions: IApplicationVersion[],\n filterStr: string\n ): IApplicationVersion[] {\n return filterStr === ''\n ? appVersions\n : appVersions.filter(appVersion => appVersion.version.includes(filterStr));\n }\n\n private markAsDeployed() {\n this.isDeployed = true;\n this.inProgress = false;\n }\n\n private async loadPackages(): Promise<void> {\n const applications = await this.ecosystemService.getPackageApplications();\n this.packages = applications.filter(app => this.ecosystemService.isPackageBlueprint(app));\n }\n}\n","<c8y-wizard-header>\n <i [c8yIcon]=\"'big-parcel'\"></i>\n <h4 translate>Install from package</h4>\n</c8y-wizard-header>\n<c8y-wizard-body>\n <ng-container *ngIf=\"!selectedPackage\">\n <div class=\"modal-inner-scroll\">\n <p class=\"p-16 text-medium text-center separator-bottom sticky-top bg-white\">\n {{ 'Select from available packages' | translate }}\n </p>\n <div *ngIf=\"!packages?.length\" class=\"c8y-empty-state text-center\">\n <p class=\"text-center\">{{ 'No packages to display.' | translate }}</p>\n </div>\n <div *ngIf=\"packages?.length\" class=\"c8y-wizard-list-nav\" style=\"min-height: 257px\">\n <button\n class=\"list-group-item text-truncate\"\n *ngFor=\"let package of packages\"\n (click)=\"selectPackage(package)\"\n title=\"{{ package.name }}\"\n type=\"button\"\n >\n <i c8yIcon=\"big-parcel\" class=\"list-group-icon\"></i>\n <span [innerText]=\"package.name\"></span>\n </button>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!isDeployed && selectedPackage\">\n <p class=\"p-16 text-center text-medium separator-bottom sticky-top bg-white\">\n {{ 'Provide application details' | translate }}\n </p>\n <div class=\"d-flex d-col a-i-center j-c-center\" style=\"min-height: 257px\">\n <c8y-application-properties-form\n *ngIf=\"!inProgress\"\n [application]=\"newAppConfig\"\n class=\"d-block fit-w\"\n ></c8y-application-properties-form>\n\n <ng-container *ngIf=\"!inProgress\">\n <div [ngStyle]=\"{ padding: '0 16px' }\" class=\"d-block fit-w bg-gray-white\">\n <label for=\"packageVersion\" translate>Use package version</label>\n <c8y-form-group>\n <c8y-typeahead\n [(ngModel)]=\"model.selected\"\n name=\"packageVersion\"\n (onSearch)=\"onInput.next($event)\"\n placeholder=\"{{ 'Select or enter' | translate }}\"\n [displayProperty]=\"'version'\"\n [required]=\"true\"\n [hideNew]=\"true\"\n [container]=\"'body'\"\n >\n <c8y-li\n *c8yFor=\"let version of versions$; loadMore: 'auto'; notFound: notFoundTemplate\"\n (click)=\"onAppVersionSelect(version)\"\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n [active]=\"model.selected === version\"\n >\n <c8y-li-icon icon=\"big-parcel\"></c8y-li-icon>\n <span\n [ngStyle]=\"{\n display: 'flex',\n 'flex-direction': 'row',\n 'align-content': 'center',\n 'justify-content': 'space-between',\n 'align-items': 'center'\n }\"\n >\n <c8y-highlight\n [text]=\"version.version || '--'\"\n [pattern]=\"onInput | async\"\n ></c8y-highlight>\n\n <span>\n <span *ngFor=\"let tag of version.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 </div>\n </ng-container>\n\n <c8y-progress-bar\n [message]=\"'Installing…' | translate\"\n class=\"text-center d-block\"\n *ngIf=\"inProgress\"\n ></c8y-progress-bar>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"isDeployed\">\n <div\n *ngIf=\"deployedWithSuccess; else failedDeploy\"\n class=\"d-flex a-i-center j-c-center\"\n style=\"min-height: 257px\"\n >\n <c8y-operation-result\n text=\"{{ 'Application created' | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"success\"\n class=\"lead\"\n ></c8y-operation-result>\n </div>\n <ng-template #failedDeploy>\n <div class=\"d-flex a-i-center j-c-center\" style=\"min-height: 257px\">\n <c8y-operation-result\n text=\"{{ 'Application creation failed' | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"error\"\n class=\"lead\"\n ></c8y-operation-result>\n </div>\n </ng-template>\n </ng-container>\n</c8y-wizard-body>\n\n<c8y-wizard-footer>\n <button\n *ngIf=\"!isDeployed\"\n (click)=\"selectedPackage ? clean() : back()\"\n class=\"btn btn-default\"\n title=\"{{ 'Back' | translate }}\"\n translate\n [disabled]=\"inProgress\"\n type=\"button\"\n >\n Back\n </button>\n <button\n title=\"{{ isDeployed && deployedWithSuccess ? ('Close' | translate) : ('Cancel' | translate) }}\"\n class=\"btn btn-default\"\n type=\"button\"\n (click)=\"cancel()\"\n >\n {{ isDeployed && deployedWithSuccess ? ('Close' | translate) : ('Cancel' | translate) }}\n </button>\n\n <button\n title=\"{{ 'Install' | translate }}\"\n class=\"btn btn-primary\"\n type=\"button\"\n (click)=\"deployApp()\"\n [disabled]=\"inProgress || !packages?.length\"\n *ngIf=\"!isDeployed\"\n >\n {{ 'Install' | translate }}\n </button>\n</c8y-wizard-footer>\n","import { Injectable } from '@angular/core';\nimport { NavigatorNode, NavigatorNodeFactory, Permissions } from '@c8y/ngx-components';\n\n@Injectable()\nexport class EcosystemNavigationFactory implements NavigatorNodeFactory {\n private navs: NavigatorNode[] = [];\n private showNavigatorNodes: boolean;\n\n constructor(private permissions: Permissions) {\n this.showNavigatorNodes = this.permissions.hasAnyRole([\n 'ROLE_APPLICATION_MANAGEMENT_READ',\n 'ROLE_APPLICATION_MANAGEMENT_ADMIN'\n ]);\n }\n\n async get() {\n /*\nThe NavigatorNodes are added in AngularJS code to keep the Quick links widget working.\nAfter the Quick links widget is migrated to Angular, the logic of adding the NavigatorNodes can be migrated as well.\n if (this.navs.length === 0 && this.showNavigatorNodes) {\n const applicationsNode: NavigatorNode = new NavigatorNode({\n label: gettext('Applications'),\n icon: 'c8y-modules',\n path: '/ecosystem',\n priority: 300,\n routerLinkExact: false\n });\n\n const microservicesNode = new NavigatorNode({\n label: gettext('Microservices'),\n icon: 'microchip',\n path: '/microservices',\n priority: 200,\n routerLinkExact: false\n });\n\n this.navs.push(\n new NavigatorNode({\n label: gettext('Ecosystem'),\n icon: 'c8y-atom',\n priority: 3200,\n children: [applicationsNode, microservicesNode]\n })\n );\n }\n*/\n return this.navs;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { gettext, Tab, TabFactory } from '@c8y/ngx-components';\nimport { Router } from '@angular/router';\n\n@Injectable()\nexport class EcosystemTabs implements TabFactory {\n ecosystemTabs: Tab[] = [\n {\n icon: 'c8y-modules',\n priority: 1000,\n label: gettext('All applications'),\n path: 'ecosystem/applications'\n },\n {\n icon: 'big-parcel',\n priority: 999,\n label: gettext('Packages'),\n path: 'ecosystem/package-list'\n },\n {\n icon: 'tab',\n priority: 998,\n label: gettext('Features'),\n path: '/ecosystem/features'\n }\n ];\n\n constructor(public router: Router) {}\n\n get(): Tab[] {\n if (\n this.router.url === '/ecosystem/applications' ||\n this.router.url === '/ecosystem/package-list' ||\n this.router.url === '/ecosystem/features'\n ) {\n return this.ecosystemTabs;\n }\n return [];\n }\n}\n","import { Component } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { IApplication } from '@c8y/client';\nimport { shareReplay, switchMap, tap } from 'rxjs/operators';\nimport { EcosystemService } from '../ecosystem.service';\n\n@Component({\n selector: 'c8y-feature-list',\n templateUrl: './feature-list.component.html'\n})\nexport class FeatureListComponent {\n reloading: boolean = false;\n reload$: BehaviorSubject<void> = new BehaviorSubject(null);\n\n features$: Observable<IApplication> = this.reload$.pipe(\n tap(() => (this.reloading = true)),\n switchMap(() => this.ecosystemService.getFeatureApplications()),\n tap(() => (this.reloading = false)),\n shareReplay()\n );\n listClass: string;\n\n constructor(private ecosystemService: EcosystemService) {}\n\n ngOnInit() {\n this.loadFeatures();\n }\n\n loadFeatures() {\n this.reload$.next();\n }\n}\n","<c8y-title>{{ 'Features' | translate }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item [icon]=\"'c8y-atom'\" [label]=\"'Ecosystem' | translate\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-modules'\"\n [label]=\"'Applications' | translate\"\n [path]=\"'ecosystem/applications'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [icon]=\"'tab'\" [label]=\"'Features' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button (click)=\"reload$.next()\" class=\"btn btn-link\" title=\"{{ 'Reload' | translate }}\">\n <i [ngClass]=\"{ 'icon-spin': reloading }\" c8yIcon=\"refresh\"></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'left'\" itemClass=\"navbar-form hidden-xs\">\n <c8y-list-display-switch\n (onListClassChange)=\"listClass = $event\"\n [listLength]=\"(features$ | async)?.length\"\n ></c8y-list-display-switch>\n</c8y-action-bar-item>\n\n<div *ngIf=\"(features$ | async)?.length === 0\" class=\"c8y-empty-state text-center\">\n <h1 class=\"c8y-icon c8y-icon-modules c8y-icon-duocolor\"></h1>\n <h3 translate>No features to display.</h3>\n <p translate>No additional features are subscribed to the tenant.</p>\n</div>\n\n<div [ngClass]=\"listClass\" class=\"card-group\">\n <div class=\"page-sticky-header hidden-xs flex-row\" *ngIf=\"(features$ | async)?.length > 0\">\n <div class=\"card-block card-column-40\">\n <div class=\"card-appicon p-l-32 p-r-16 m-r-0 m-l-4\"></div>\n {{ 'Feature' | translate }}\n </div>\n <div class=\"card-block p-0 card-column-80\">\n <div class=\"card-block card-column-80\">{{ 'Description' | translate }}</div>\n <div class=\"card-block card-column-20\">{{ 'Type' | translate }}</div>\n <div class=\"card-block card-column-20\"></div>\n </div>\n </div>\n <div *ngFor=\"let feature of features$ | async\" class=\"col-xs-12 col-sm-4 col-md-3\">\n <c8y-application-card\n [app]=\"feature\"\n [canEdit]=\"false\"\n class=\"d-contents\"\n ></c8y-application-card>\n </div>\n</div>\n","import { Component } from '@angular/core';\nimport { gettext, ModalService, Status } from '@c8y/ngx-components';\nimport { ApplicationType, IApplication, TenantService } from '@c8y/client';\nimport { EcosystemService } from '../ecosystem.service';\nimport { ERROR_TYPE } from '../ecosystem.model';\n\n@Component({\n selector: 'c8y-add-microservice',\n template: `<c8y-add-application\n [headerText]=\"headerText\"\n [headerIcon]=\"'microchip'\"\n [successText]=\"successText\"\n [createApplicationHandler]=\"createMicroserviceApplicationHandler\"\n [uploadApplicationHandler]=\"uploadMicroserviceHandler\"\n ></c8y-add-application>`\n})\nexport class AddMicroserviceComponent {\n headerText: string = gettext('Add microservice');\n successText: string = gettext('Microservice created');\n\n constructor(\n private ecosystemService: EcosystemService,\n private modal: ModalService,\n private tenantService: TenantService\n ) {}\n\n createMicroserviceApplicationHandler = (f: File) => this.createMicroserviceApplication(f);\n uploadMicroserviceHandler = (f: File, app: IApplication) => this.uploadMicroservice(f, app);\n\n async createMicroserviceApplication(file: File): Promise<IApplication> {\n await this.ecosystemService.isValidAppType(file, ApplicationType.MICROSERVICE);\n return this.ecosystemService.createAppForArchive(file);\n }\n\n async uploadMicroservice(file: File, microservice: IApplication): Promise<void> {\n const subscribeToCurrentTenant = await this.askIfActivationAfterUploadNeeded();\n await this.ecosystemService.uploadArchiveToApp(file, microservice);\n await this.subscribeMicroservice(microservice, subscribeToCurrentTenant);\n }\n\n private async askIfActivationAfterUploadNeeded(): Promise<boolean> {\n try {\n await this.modal.confirm(\n gettext('Subscribe to microservice'),\n gettext(\n 'You are about to subscribe to the microservice after upload. Do you want to subscribe to it?'\n ),\n Status.INFO,\n { ok: gettext('Subscribe'), cancel: gettext(\"Don't subscribe\") }\n );\n return true;\n } catch (ex) {\n return false;\n }\n }\n\n private async subscribeMicroservice(\n app: IApplication,\n subscribeToCurrentTenant: boolean\n ): Promise<any> {\n const tenant = (await this.tenantService.current()).data;\n const applications = tenant.applications.references;\n\n const isSubscribed = applications.some(({ application }) => application.id === app.id);\n if (!isSubscribed && subscribeToCurrentTenant) {\n try {\n return await this.tenantService.subscribeApplication(tenant, app);\n } catch (res) {\n if (res.status === 409) {\n throw Error(ERROR_TYPE.ALREADY_SUBSCRIBED);\n }\n }\n } else if (isSubscribed && !subscribeToCurrentTenant) {\n return this.tenantService.unsubscribeApplication(tenant, app);\n }\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { IApplication } from '@c8y/client';\nimport { WizardModalService } from '@c8y/ngx-components';\nimport { ModalOptions } from 'ngx-bootstrap/modal';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { shareReplay, switchMap, tap } from 'rxjs/operators';\nimport { EcosystemService } from '../ecosystem.service';\n\n@Component({\n selector: 'c8y-microservice-list',\n templateUrl: './microservice-list.component.html'\n})\nexport class MicroserviceListComponent implements OnInit {\n reloading: boolean = false;\n reload$: BehaviorSubject<void> = new BehaviorSubject(null);\n microservices$: Observable<IApplication> = this.reload$.pipe(\n tap(() => (this.reloading = true)),\n switchMap(() => this.ecosystemService.getMicroservices()),\n tap(() => (this.reloading = false)),\n shareReplay()\n );\n isMicroserviceHostingAllowed$: Observable<boolean> = this.reload$.pipe(\n switchMap(() => this.ecosystemService.isMicroserviceHostingAllowed()),\n shareReplay()\n );\n listClass: string;\n\n constructor(\n private ecosystemService: EcosystemService,\n private wizardModalService: WizardModalService\n ) {}\n\n ngOnInit() {\n this.loadMicroservices();\n }\n\n loadMicroservices() {\n this.reload$.next();\n }\n\n addMicroservice() {\n const initialState: any = {\n id: 'uploadMicroservice'\n };\n const modalOptions: ModalOptions = { initialState };\n\n const modalRef = this.wizardModalService.show(modalOptions);\n modalRef.content.onClose.subscribe(() => {\n this.loadMicroservices();\n });\n }\n}\n","<c8y-title>{{ 'Microservices' | translate }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item [icon]=\"'c8y-atom'\" [label]=\"'Ecosystem' | translate\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'microchip'\"\n [label]=\"'Microservices' | translate\"\n [path]=\"'microservices'\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<ng-container *c8yIfAllowed=\"['ROLE_APPLICATION_MANAGEMENT_ADMIN']\">\n <c8y-action-bar-item\n [placement]=\"'right'\"\n [priority]=\"100\"\n *ngIf=\"isMicroserviceHostingAllowed$ | async\"\n >\n <button\n (click)=\"addMicroservice()\"\n class=\"btn btn-link\"\n title=\"{{ 'Add microservice' | translate }}\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add microservice' | translate }}\n </button>\n </c8y-action-bar-item>\n</ng-container>\n\n<!-- <c8y-help src=\"/users-guide/administration/#microservices\"></c8y-help> -->\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button (click)=\"reload$.next()\" class=\"btn btn-link\" title=\"{{ 'Reload' | translate }}\">\n <i [ngClass]=\"{ 'icon-spin': reloading }\" c8yIcon=\"refresh\"></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'left'\" itemClass=\"navbar-form hidden-xs\">\n <c8y-list-display-switch\n (onListClassChange)=\"listClass = $event\"\n [listLength]=\"(microservices$ | async)?.length\"\n ></c8y-list-display-switch>\n</c8y-action-bar-item>\n\n<div *ngIf=\"(microservices$ | async)?.length === 0\" class=\"c8y-empty-state text-center\">\n <h1 class=\"c8y-icon c8y-icon-modules c8y-icon-duocolor\"></h1>\n <h3 translate>No microservices to display.</h3>\n <p translate>Add your first microservice by clicking below.</p>\n <p>\n <button\n (click)=\"addMicroservice()\"\n class=\"btn btn-primary\"\n title=\"{{ 'Add microservice' | translate }}\"\n >\n {{ 'Add microservice' | translate }}\n </button>\n </p>\n</div>\n\n<div [ngClass]=\"listClass\" class=\"card-group\">\n <div class=\"page-sticky-header hidden-xs flex-row\" *ngIf=\"(microservices$ | async)?.length > 0\">\n <div class=\"card-block card-column-40\">\n <div class=\"card-appicon p-l-32 p-r-16 m-r-0 m-l-4\"></div>\n {{ 'Microservice' | translate }}\n </div>\n <div class=\"card-block p-0 card-column-80\">\n <div class=\"card-block card-column-80\">{{ 'Description' | translate }}</div>\n <div class=\"card-block card-column-20\">{{ 'Type' | translate }}</div>\n <div class=\"card-block card-column-20\"></div>\n </div>\n </div>\n <div *ngFor=\"let microservice of microservices$ | async\" class=\"col-xs-12 col-sm-4 col-md-3\">\n <c8y-application-card\n (onAppDeleted)=\"loadMicroservices()\"\n [app]=\"microservice\"\n class=\"d-contents\"\n ></c8y-application-card>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { ApplicationAvailability, ApplicationService, IApplication } from '@c8y/client';\nimport {\n AlertService,\n AppStateService,\n GainsightService,\n gettext,\n ModalService\n} from '@c8y/ngx-components';\nimport { PRODUCT_EXPERIENCE } from '../ecosystem.model';\n\n@Injectable({ providedIn: 'root' })\nexport class PackageAvailabilityService {\n CURRENT_LOCATION = location.href;\n\n constructor(\n private appState: AppStateService,\n private alert: AlertService,\n private modal: ModalService,\n private application: ApplicationService,\n private gainsightService: GainsightService\n ) {}\n\n async askIfAvailabilityShouldBeSetTo(\n applicationPackage: IApplication,\n availability: ApplicationAvailability\n ) {\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 } catch {\n // modal closed\n return applicationPackage;\n }\n\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(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.AVAILABILITY, {\n action: PRODUCT_EXPERIENCE.APPLICATIONS.ACTIONS.AVAILABILITY_CHANGE,\n result: availability.toString().toLocaleLowerCase(),\n url: this.CURRENT_LOCATION\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(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.AVAILABILITY, {\n action: PRODUCT_EXPERIENCE.APPLICATIONS.ACTIONS.AVAILABILITY_CHANGE,\n result: PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.SERVER_FAILURE,\n url: this.CURRENT_LOCATION\n });\n return applicationPackage;\n }\n }\n\n private async openAvailabilityModal(availability: ApplicationAvailability) {\n const body = this.getConfirmationBody(availability);\n\n await this.modal.confirm(gettext('Package availability'), body, 'info', {\n ok: gettext('Yes'),\n cancel: gettext('No')\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","import { Component } from '@angular/core';\nimport { ApplicationAvailability, ApplicationType, IApplication } from '@c8y/client';\nimport { EcosystemService } from '../ecosystem.service';\nimport { AppStateService, gettext } from '@c8y/ngx-components';\nimport { PackageAvailabilityService } from './package-availability.service';\n\n@Component({\n selector: 'c8y-add-package',\n template: `<c8y-add-application\n [headerText]=\"headerText\"\n [headerIcon]=\"'big-parcel'\"\n [successText]=\"successText\"\n [createApplicationHandler]=\"createPackageAppHandler\"\n [uploadApplicationHandler]=\"uploadPackageHandler\"\n ></c8y-add-application>`\n})\nexport class AddPackageComponent {\n headerText: string = gettext('Add package');\n successText: string = gettext('Package created');\n\n constructor(\n private ecosystemService: EcosystemService,\n private appState: AppStateService,\n private packageAvailability: PackageAvailabilityService\n ) {}\n\n createPackageAppHandler = (f: File) => this.createPackageApp(f);\n uploadPackageHandler = (f: File, app: IApplication) => this.uploadPackage(f, app);\n\n async createPackageApp(file: File): Promise<IApplication> {\n await this.ecosystemService.isValidAppType(file, ApplicationType.HOSTED);\n const applicationPackage = await this.ecosystemService.createAppForArchive(file, true);\n return await this.packageAvailability.askIfAvailabilityShouldBeSetTo(\n applicationPackage,\n ApplicationAvailability.SHARED\n );\n }\n\n uploadPackage(file: File, pckg: IApplication): Promise<IApplication> {\n return this.ecosystemService.uploadArchiveToApp(file, pckg, true);\n }\n}\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport {\n ApplicationService,\n IApplication,\n IApplicationVersion,\n InventoryService,\n IResultList\n} from '@c8y/client';\nimport { GainsightService, gettext, PluginsService, WizardComponent } from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BehaviorSubject, combineLatest, from, Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { PRODUCT_EXPERIENCE } from '../../ecosystem.model';\nimport { EcosystemService } from '../../ecosystem.service';\nimport { ApplicationPropertiesFormComponent } from '../../shared/application-properties-form.component';\n\n@Component({\n selector: 'c8y-deploy-application',\n templateUrl: './deploy-application.component.html'\n})\nexport class DeployApplicationComponent implements OnInit {\n CURRENT_LOCATION = location.href;\n\n inProgress: boolean = true;\n package: IApplication;\n isDeployed: boolean = false;\n deployedWithSuccess: boolean = false;\n newAppConfig: IApplication;\n\n model = {\n selected: undefined,\n binary: {\n id: undefined\n }\n };\n onInput: BehaviorSubject<string> = new BehaviorSubject<string>('');\n canDeploy: boolean = false;\n\n versions$: Observable<IResultList<IApplicationVersion>>;\n\n @ViewChild(ApplicationPropertiesFormComponent)\n applicationPropertiesForm: ApplicationPropertiesFormComponent;\n\n readonly descriptionTemplate: string = gettext(\n 'Deploy application using \"{{ packageName }}\" package'\n );\n readonly successMessageTemplate = gettext('Application \"{{ packageName }}\" created');\n readonly doneLabel = gettext('Done');\n readonly cancelLabel = gettext('Cancel');\n headerText: string;\n\n constructor(\n private ecosystemService: EcosystemService,\n private applicationService: ApplicationService,\n private wizardComponent: WizardComponent,\n private translate: TranslateService,\n private pluginsService: PluginsService,\n private inventoryService: InventoryService,\n private gainsightService: GainsightService\n ) {\n this.package = (this.wizardComponent as any).package;\n this.versions$ = combineLatest([\n this.getAppVersions(this.package),\n this.onInput.asObservable()\n ]).pipe(\n map(([resultList, filterStr]) => {\n this.canDeploy = false;\n const versionsFilteredByStr = this.filterAppVersions(resultList.data, filterStr);\n const sortedAppVersions = this.pluginsService.sortVersions(\n {\n list: versionsFilteredByStr,\n path: ['version']\n },\n 'desc'\n );\n\n this.setInitialValueForInput(sortedAppVersions);\n return { data: sortedAppVersions, res: resultList.res };\n })\n );\n }\n\n async ngOnInit() {\n const apps = (await this.ecosystemService.getApplications()).data;\n this.newAppConfig = this.ecosystemService.getUniqueAppConfig(this.package, apps);\n this.headerText = this.getHeaderText();\n this.inProgress = false;\n }\n\n async deployApp() {\n this.inProgress = true;\n const formGroupValue = this.applicationPropertiesForm.formGroup.getRawValue();\n\n // Create new app config\n const config = await this.ecosystemService.createConfig(this.package, formGroupValue);\n config.version = this.model.selected.version;\n config.isSetup = true;\n if (!config.manifest) {\n config.manifest = {};\n }\n config.manifest.isPackage = false;\n config.manifest.source = this.package.id;\n config.manifest.package = 'blueprint';\n config.resourcesUrl = '/';\n\n // Create new app\n const newApp = (await this.applicationService.create(config)).data;\n // Binary\n try {\n // Get binary details\n const { data: binaryDetails } = await this.inventoryService.detail(\n this.model.selected.binaryId\n );\n\n // Get binary from specific package version\n const binary = await this.ecosystemService.getBinary(this.package, {\n id: this.model.selected.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.ecosystemService.uploadArchiveToApp(file, newApp);\n // Update manifest\n await this.ecosystemService.updateAppManifest(newApp, this.package);\n\n this.deployedWithSuccess = true;\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.DEPLOY_APPLICATION,\n {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.DEPLOY_APPLICATION,\n action: PRODUCT_EXPERIENCE.APPLICATIONS.ACTIONS.DEPLOY_APPLICATION,\n result: PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.DEPLOYED,\n url: this.CURRENT_LOCATION\n }\n );\n } catch (error) {\n if (error?.res?.status === 404) {\n await this.applicationService.delete(newApp.id);\n await this.fallbackToCloneLatest(config);\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.DEPLOY_APPLICATION,\n {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.DEPLOY_APPLICATION,\n action: PRODUCT_EXPERIENCE.APPLICATIONS.ACTIONS.DEPLOY_APPLICATION,\n result: PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.SERVER_FAILURE,\n url: this.CURRENT_LOCATION\n }\n );\n }\n } finally {\n this.markAsDeployed();\n }\n }\n\n async fallbackToCloneLatest(config) {\n let clonedPkg;\n try {\n clonedPkg = (await this.applicationService.clone(this.package)).data;\n\n // clean out all falsely cloned applicationVersions, we don't need them\n for (const appVersion of clonedPkg.applicationVersions as IApplicationVersion[]) {\n if (appVersion.tags.includes('latest')) {\n await this.ecosystemService.setPackageVersionTag(clonedPkg, appVersion.version, []);\n }\n await this.ecosystemService.deletePackageVersion(clonedPkg, {\n version: appVersion.version\n });\n }\n delete config.type;\n config.isPackage = false;\n const { data: newApp } = await this.ecosystemService.updateApp(\n {\n id: clonedPkg.id,\n activeVersionId: clonedPkg.activeVersionId,\n ...config\n },\n false\n );\n await this.ecosystemService.updateAppManifest(newApp, this.package);\n this.deployedWithSuccess = true;\n } catch (error) {\n await this.ecosystemService.deleteApp(clonedPkg.id, true);\n }\n this.markAsDeployed();\n }\n\n cancel() {\n this.wizardComponent.close();\n }\n\n onAppVersionSelect(appVersion: IApplicationVersion) {\n Object.assign(this.model, {\n selected: appVersion\n });\n this.canDeploy = true;\n }\n\n private getAppVersions(mo: IApplication) {\n const versions = mo?.applicationVersions;\n return versions && versions.length > 0\n ? of({ data: versions, res: undefined })\n : from(this.applicationService.listVersions(this.package.id));\n }\n\n private setInitialValueForInput(versions: IApplicationVersion[]) {\n if (!this.model.selected && versions.length > 0) {\n const latest = versions.find(v => v.tags.includes('latest'));\n this.model.selected = latest || versions[0];\n this.canDeploy = true;\n }\n }\n\n private filterAppVersions(\n appVersions: IApplicationVersion[],\n filterStr: string\n ): IApplicationVersion[] {\n return filterStr === ''\n ? appVersions\n : appVersions.filter(appVersion => appVersion.version.includes(filterStr));\n }\n\n private markAsDeployed() {\n this.isDeployed = true;\n this.inProgress = false;\n }\n\n private getHeaderText() {\n return this.translate.instant(this.descriptionTemplate, {\n packageName: this.package.name\n });\n }\n}\n","<c8y-wizard-header>\n <div class=\"modal-header dialog-header\">\n <h1 c8yIcon=\"output\"></h1>\n <h4>{{ 'Deploy application' | translate }}</h4>\n </div>\n</c8y-wizard-header>\n\n<c8y-wizard-body>\n <ng-container *ngIf=\"!isDeployed\">\n <div class=\"fadeIn animated d-flex a-i-center j-c-center d-col\" style=\"min-height: 309px\">\n <p\n class=\"bg-white fit-w p-16 text-center text-medium sticky-top bg-white separator-bottom\"\n *ngIf=\"!inProgress\"\n >\n {{ headerText | translate }}\n </p>\n <c8y-application-properties-form\n *ngIf=\"!inProgress\"\n [application]=\"newAppConfig\"\n class=\"d-block fit-w bg-gray-white\"\n ></c8y-application-properties-form>\n\n <ng-container *ngIf=\"!inProgress\">\n <div [ngStyle]=\"{ padding: '0 16px' }\" class=\"d-block fit-w bg-gray-white\">\n <label for=\"packageVersion\" translate>Use package version</label>\n <c8y-form-group>\n <c8y-typeahead\n [(ngModel)]=\"model.selected\"\n name=\"packageVersion\"\n (onSearch)=\"onInput.next($event)\"\n placeholder=\"{{ 'Select or enter' | translate }}\"\n [displayProperty]=\"'version'\"\n [required]=\"true\"\n [hideNew]=\"true\"\n [container]=\"'body'\"\n >\n <c8y-li\n *c8yFor=\"let version of versions$; loadMore: 'auto'; notFound: notFoundTemplate\"\n (click)=\"onAppVersionSelect(version)\"\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n [active]=\"model.selected === version\"\n >\n <c8y-li-icon icon=\"big-parcel\"></c8y-li-icon>\n <span\n [ngStyle]=\"{\n display: 'flex',\n 'flex-direction': 'row',\n 'align-content': 'center',\n 'justify-content': 'space-between',\n 'align-items': 'center'\n }\"\n >\n <c8y-highlight\n [text]=\"version.version || '--'\"\n [pattern]=\"onInput | async\"\n ></c8y-highlight>\n <span>\n <span *ngFor=\"let tag of version.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 </div>\n </ng-container>\n\n <c8y-progress-bar\n *ngIf=\"inProgress\"\n [message]=\"'Deploying…' | translate\"\n class=\"text-center\"\n ></c8y-progress-bar>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"isDeployed\">\n <div\n *ngIf=\"deployedWithSuccess; else failedDeploy\"\n class=\"modal-body fadeIn animated\"\n style=\"min-height: 309px\"\n >\n <div class=\"d-flex a-i-center j-c-center d-col\">\n <c8y-operation-result\n type=\"success\"\n [size]=\"84\"\n [vertical]=\"true\"\n [text]=\"successMessageTemplate | translate: { packageName: package.name }\"\n class=\"lead d-block m-b-16\"\n ></c8y-operation-result>\n </div>\n </div>\n <ng-template #failedDeploy>\n <div class=\"modal-body fadeIn animated text-center\" style=\"min-height: 257px\">\n <c8y-operation-result\n type=\"error\"\n [size]=\"84\"\n [vertical]=\"true\"\n text=\"{{ 'Application creation failed' | translate }}\"\n class=\"lead\"\n ></c8y-operation-result>\n </div>\n </ng-template>\n </ng-container>\n</c8y-wizard-body>\n\n<c8y-wizard-footer>\n <button\n (click)=\"cancel()\"\n type=\"button\"\n class=\"btn btn-default\"\n title=\"{{ (isDeployed && deployedWithSuccess ? doneLabel : cancelLabel) | translate }}\"\n >\n {{ (isDeployed && deployedWithSuccess ? doneLabel : cancelLabel) | translate }}\n </button>\n\n <button\n (click)=\"deployApp()\"\n *ngIf=\"!isDeployed\"\n [disabled]=\"inProgress || !canDeploy\"\n [ngClass]=\"{ 'btn-pending': inProgress }\"\n class=\"btn btn-primary\"\n type=\"button\"\n title=\"{{ 'Deploy' | translate }}\"\n >\n {{ 'Deploy' | translate }}\n </button>\n</c8y-wizard-footer>\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport {\n ApplicationAvailability,\n FetchClient,\n IApplication,\n IFetchOptions,\n IFetchResponse\n} from '@c8y/client';\nimport {\n ApplicationPlugin,\n AppStateService,\n ContextRouteService,\n gettext,\n PluginsService,\n PropertiesListItem,\n WizardModalService\n} from '@c8y/ngx-components';\nimport { Renderer, parse } from 'marked';\nimport { ModalOptions } from 'ngx-bootstrap/modal';\nimport { BehaviorSubject } from 'rxjs';\nimport { packageProperties } from '../../ecosystem.constants';\nimport { ApplicationState } from '../../ecosystem.model';\nimport { EcosystemService } from '../../ecosystem.service';\nimport { PackageAvailabilityService } from '../package-availability.service';\n\n@Component({\n selector: 'c8y-package-details',\n templateUrl: './package-details.component.html'\n})\nexport class PackageDetailsComponent implements OnInit {\n readme: string;\n package: IApplication = {};\n name: string;\n description: string;\n appState: ApplicationState;\n isPackageBlueprint: boolean;\n exportedPlugins$: BehaviorSubject<ApplicationPlugin[]> = new BehaviorSubject([]);\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 isChangingAvailability = false;\n isOwnedByCurrentTenant = false;\n isAllowedToCreateSubtenants = false;\n\n readonly packageProperties: PropertiesListItem[] = packageProperties;\n private readonly headers: any = { 'Content-Type': 'text/markdown', responseType: 'blob' };\n private NOT_FOUND_ERROR_CODE = 404;\n\n constructor(\n private activatedRoute: ActivatedRoute,\n private client: FetchClient,\n private wizardModalService: WizardModalService,\n private ecosystemService: EcosystemService,\n private contextRouteService: ContextRouteService,\n private pluginsService: PluginsService,\n private packageAvailability: PackageAvailabilityService,\n private ui: AppStateService\n ) {}\n\n async ngOnInit() {\n this.isAllowedToCreateSubtenants = !!this.ui.currentTenant.value?.allowCreateTenants;\n this.loadData();\n }\n\n deploy() {\n const initialState: any = {\n wizardConfig: {},\n id: 'deployPackage',\n package: this.package\n };\n const modalOptions: ModalOptions = { initialState };\n this.wizardModalService.show(modalOptions);\n }\n\n async togglePackageAvailability(pckg: IApplication, newAvailability: ApplicationAvailability) {\n this.isChangingAvailability = true;\n pckg = await this.packageAvailability.askIfAvailabilityShouldBeSetTo(pckg, newAvailability);\n await this.loadData(pckg);\n this.isChangingAvailability = false;\n }\n\n private async loadData(pckg?: IApplication) {\n this.package = pckg\n ? pckg\n : this.contextRouteService.getContextData(this.activatedRoute)?.contextData;\n this.name = this.package?.name;\n this.description = this.package?.manifest?.description;\n this.readme = await this.getReadmeFileContentAsHtml();\n this.appState = this.ecosystemService.getAppState(this.package);\n this.isPackageBlueprint = this.ecosystemService.isPackageBlueprint(this.package);\n this.isOwnedByCurrentTenant =\n this.package?.owner?.tenant?.id === this.ui.currentTenant.value?.name;\n this.extractPackageMFExports();\n }\n\n private extractPackageMFExports() {\n const exports = this.pluginsService.getMFExports(this.package);\n this.exportedPlugins$.next(exports);\n }\n\n private async getReadmeFileContentAsHtml(): Promise<string> {\n const readmeFile = await this.getReadmeFile();\n\n const readmeContent = await readmeFile.text();\n if (readmeFile.status === 200) {\n const renderer = new Renderer();\n const baseUrl = this.getBaseUrl();\n const originalRendererImage = renderer.image.bind(renderer);\n renderer.image = (href, title, text) => {\n href = baseUrl + href;\n return originalRendererImage(href, title, text);\n };\n const html = parse(readmeContent, { renderer });\n return html;\n }\n }\n\n private async getReadmeFile(): Promise<IFetchResponse> {\n const baseUrl = this.getBaseUrl();\n let result: IFetchResponse;\n const options: IFetchOptions = {\n method: 'GET',\n headers: this.headers\n };\n result = await this.client.fetch(`${baseUrl}README.md`, options);\n\n if (result && result.status === this.NOT_FOUND_ERROR_CODE) {\n result = await this.client.fetch(`${baseUrl}readme.md`, options);\n }\n return result;\n }\n\n private getBaseUrl(): string {\n return `/apps/${this.package.contextPath}/`;\n }\n}\n","<c8y-title>{{ name | humanizeAppName | async }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item [icon]=\"'c8y-atom'\" [label]=\"'Ecosystem' | translate\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-modules'\"\n [label]=\"'Applications' | translate\"\n [path]=\"'ecosystem/applications'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'big-parcel'\"\n [label]=\"'Packages' | translate\"\n [path]=\"'ecosystem/package-list'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"name | humanizeAppName | async\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Info' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item placement=\"right\" itemClass=\"navbar-form\" *ngIf=\"isOwnedByCurrentTenant && isAllowedToCreateSubtenants\">\n <div class=\"form-horizontal\">\n <div class=\"form-group\">\n <label for=\"availability\" translate>Availability</label>\n <div class=\"c8y-select-wrapper\">\n <select\n id=\"availability\"\n class=\"form-control\"\n [ngModel]=\"package.availability\"\n [disabled]=\"isChangingAvailability\"\n (ngModelChange)=\"togglePackageAvailability(package, $event)\"\n >\n <option *ngFor=\"let availability of availabilities\" [ngValue]=\"availability.value\">\n {{ availability.label | translate }}\n </option>\n </select>\n <span></span>\n </div>\n </div>\n </div>\n</c8y-action-bar-item>\n\n<div class=\"card content-fullpage d-grid grid__col--8-4--md grid__row--fit-auto\">\n <div class=\"bg-gray-white grid__col--fullspan separator-bottom\">\n <div class=\"card-block p-t-24 p-b-24 large-padding\">\n <div class=\"content-flex-70\">\n <div class=\"text-center\">\n <i c8yIcon=\"big-parcel\" class=\"c8y-icon-duocolor icon-48\"></i>\n <p>\n <span [ngClass]=\"appState?.class\" class=\"label\">{{ appState?.label | translate }}</span>\n </p>\n </div>\n\n <div class=\"flex-grow col-10\">\n <div class=\"content-flex-80\">\n <div class=\"col-5\">\n <h4 class=\"card-title text-bold m-b-8\">{{ name | humanizeAppName | async }}</h4>\n <p *ngIf=\"description\">{{ description }}</p>\n <p *ngIf=\"!description\" class=\"text-muted\">\n <em>{{ 'No description available.' | translate }}</em>\n </p>\n </div>\n <div *ngIf=\"isPackageBlueprint\" class=\"col-3 text-right-md\">\n <button (click)=\"deploy()\" class=\"btn btn-primary btn-xs\">\n <i c8yIcon=\"output\" class=\"m-r-4\"></i>\n {{ 'Deploy application' | translate }}\n </button>\n </div>\n <div class=\"flex-grow\">\n <c8y-properties-list\n [data]=\"package.manifest\"\n [icon]=\"'info-circle'\"\n [properties]=\"packageProperties\"\n [title]=\"'Package info' | translate\"\n ></c8y-properties-list>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"inner-scroll\">\n <div class=\"card-header separator sticky-top\">\n <h4 class=\"card-title\">{{ 'Package overview' | translate }}</h4>\n </div>\n <div class=\"card-block p-l-16 p-r-16\">\n <div *ngIf=\"!readme\" class=\"c8y-empty-state text-center\">\n <h1 c8yIcon=\"user-manual\" class=\"c8y-icon-duocolor\"></h1>\n <div>\n <h3 translate>No README.md found.</h3>\n <p class=\"m-r-8\" translate>\n To view the contents of \"README\", add the file \"README.md\" to the package.\n </p>\n </div>\n </div>\n\n <div [innerHTML]=\"readme\" class=\"markdown-content\"></div>\n </div>\n <div class=\"separator-bottom visible-sm visible-xs\"></div>\n </div>\n\n <div class=\"inner-scroll d-flex d-col\">\n <div class=\"card-header separator sticky-top\">\n <h4 class=\"card-title\">{{ 'Package plugins' | translate }}</h4>\n </div>\n <div class=\"border-left flex-grow\">\n <!-- empty state -->\n <div class=\"p-16\" *ngIf=\"(exportedPlugins$ | async).length === 0\">\n <div class=\"c8y-empty-state text-left\">\n <i c8yIcon=\"plugin\"></i>\n <div>\n <p translate class=\"text-medium\">No plugins to display.</p>\n <p translate>This package doesn't contain plugins.</p>\n </div>\n </div>\n </div>\n <c8y-plugin-list\n [plugins$]=\"exportedPlugins$\"\n [selectable]=\"false\"\n [installable]=\"true\"\n [package]=\"package\"\n ></c8y-plugin-list>\n </div>\n </div>\n</div>\n","import { Component, OnDestroy } from '@angular/core';\nimport { IApplication } from '@c8y/client';\nimport { Permissions, WizardModalService } from '@c8y/ngx-components';\nimport { ModalOptions } from 'ngx-bootstrap/modal';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { shareReplay, switchMap, takeUntil, tap } from 'rxjs/operators';\nimport { EcosystemService } from '../../ecosystem.service';\n\n@Component({\n selector: 'c8y-packages-list',\n templateUrl: './packages-list.component.html'\n})\nexport class PackagesListComponent implements OnDestroy {\n reloading: boolean = false;\n reload$: BehaviorSubject<void> = new BehaviorSubject(null);\n\n packages$: Observable<IApplication>;\n listClass: string;\n hasAdminPermissions = false;\n private destroy$: Subject<boolean> = new Subject<boolean>();\n\n constructor(\n private ecosystemService: EcosystemService,\n private wizardModalService: WizardModalService,\n private permissions: Permissions\n ) {\n this.packages$ = this.reload$.pipe(\n takeUntil(this.destroy$),\n tap(() => (this.reloading = true)),\n switchMap(() => this.ecosystemService.getPackageApplications()),\n tap(() => (this.reloading = false)),\n shareReplay(1)\n );\n }\n\n ngOnInit() {\n this.hasAdminPermissions = this.permissions.hasRole('ROLE_APPLICATION_MANAGEMENT_ADMIN');\n this.loadPackages();\n }\n\n loadPackages() {\n this.reload$.next();\n }\n\n addPackage() {\n const initialState: any = {\n id: 'uploadPackage'\n };\n const modalOptions: ModalOptions = { initialState };\n\n const modalRef = this.wizardModalService.show(modalOptions);\n modalRef.content.onClose.subscribe(() => {\n this.loadPackages();\n });\n }\n\n ngOnDestroy() {\n this.destroy$.next(true);\n this.destroy$.complete();\n }\n}\n","<c8y-title>{{ 'Packages' | translate }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item [icon]=\"'c8y-atom'\" [label]=\"'Ecosystem' | translate\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-modules'\"\n [label]=\"'Applications' | translate\"\n [path]=\"'ecosystem/applications'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [icon]=\"'big-parcel'\" [label]=\"'Packages' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\" *ngIf=\"hasAdminPermissions\">\n <button (click)=\"addPackage()\" class=\"btn btn-link\" title=\"{{ 'Add package' | translate }}\">\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add package' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button (click)=\"loadPackages()\" class=\"btn btn-link\" title=\"{{ 'Reload' | translate }}\">\n <i [ngClass]=\"{ 'icon-spin': reloading }\" c8yIcon=\"refresh\"></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'left'\" itemClass=\"navbar-form hidden-xs\">\n <c8y-list-display-switch\n (onListClassChange)=\"listClass = $event\"\n [listLength]=\"(packages$ | async)?.length\"\n ></c8y-list-display-switch>\n</c8y-action-bar-item>\n\n<c8y-help src=\"/users-guide/administration/#extensions\"></c8y-help>\n\n<div [ngClass]=\"listClass\" class=\"card-group\">\n <div class=\"page-sticky-header hidden-xs flex-row\" *ngIf=\"(packages$ | async)?.length > 0\">\n <div class=\"card-block card-column-40\">\n <div class=\"card-appicon p-l-32 p-r-16 m-r-0 m-l-4\"></div>\n {{ 'Package' | translate }}\n </div>\n <div class=\"card-block p-0 card-column-80\">\n <div class=\"card-block card-column-80\">{{ 'Description' | translate }}</div>\n <div class=\"card-block card-column-20\">{{ 'Type' | translate }}</div>\n <div class=\"card-block card-column-20\"></div>\n </div>\n </div>\n <div *ngFor=\"let app of packages$ | async\" class=\"col-xs-12 col-sm-4 col-md-3\">\n <c8y-application-card\n (onAppDeleted)=\"loadPackages()\"\n (onAppCloned)=\"loadPackages()\"\n [app]=\"app\"\n class=\"d-contents\"\n ></c8y-application-card>\n </div>\n <div *ngIf=\"(packages$ | async)?.length === 0\" class=\"c8y-empty-state text-center\">\n <h1 c8yIcon=\"big-parcel\" class=\"c8y-icon-duocolor\"></h1>\n <h3 translate>No packages to display.</h3>\n <p *ngIf=\"hasAdminPermissions\" translate>Add your first package by clicking below.</p>\n <p *ngIf=\"hasAdminPermissions\">\n <button\n (click)=\"addPackage()\"\n class=\"btn btn-primary\"\n title=\"{{ 'Add package' | translate }}\"\n >\n {{ 'Add package' | translate }}\n </button>\n </p>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { IManifest } from '@c8y/client';\nimport { BehaviorSubject } from 'rxjs';\nimport { ApplicationPlugin } from '@c8y/ngx-components';\n\n@Component({\n selector: 'c8y-contents-plugins',\n templateUrl: './contents-plugins.component.html'\n})\nexport class PackageVersionsPluginsComponent {\n @Input('selectedVersionManifest') selectedVersionManifest: IManifest;\n exportedPlugins$: BehaviorSubject<ApplicationPlugin[]> = new BehaviorSubject([]);\n\n async ngOnChanges() {\n this.exportedPlugins$.next(this.getExportedPlugins());\n }\n\n private getExportedPlugins() {\n return this.selectedVersionManifest?.exports || [];\n }\n}\n","<p class=\"legend form-block\">\n {{ 'Plugins' | translate }}\n</p>\n<!-- empty state -->\n<c8y-ui-empty-state\n *ngIf=\"(exportedPlugins$ | async).length === 0\"\n [icon]=\"'plugin'\"\n [horizontal]=\"true\"\n [title]=\"'No plugins to display.' | translate\"\n [subtitle]=\"'This package doesn\\'t contain plugins.' | translate\"\n></c8y-ui-empty-state>\n\n<c8y-plugin-list [plugins$]=\"exportedPlugins$\" [selectable]=\"false\"></c8y-plugin-list>\n","import { IManifest } from '@c8y/client';\nimport { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'c8y-contents-apps',\n templateUrl: './contents-apps.component.html'\n})\nexport class PackageVersionsAppsComponent {\n @Input('selectedVersionManifest') selectedVersionManifest: IManifest;\n}\n","<p class=\"legend form-block\">\n {{ 'Application' | translate }}\n</p>\n\n<div *ngIf=\"selectedVersionManifest?.name; else emptyApp\">\n <c8y-li>\n <c8y-li-icon icon=\"big-parcel\"></c8y-li-icon>\n <h5 class=\"text-medium text-16 p-b-8\">\n {{ selectedVersionManifest?.name | humanizeAppName | async }}\n <small class=\"m-l-8\" *ngIf=\"selectedVersionManifest?.requiredPlatformVersion\">\n <em>{{ selectedVersionManifest?.requiredPlatformVersion }}</em>\n </small>\n </h5>\n <p *ngIf=\"selectedVersionManifest?.description; else notAvailable\">\n {{ selectedVersionManifest?.description }}\n </p>\n </c8y-li>\n</div>\n\n<ng-template #notAvailable>\n <p class=\"text-muted\">\n <em>{{ 'No description available.' | translate }}</em>\n </p>\n</ng-template>\n\n<ng-template #emptyApp>\n <c8y-ui-empty-state\n [icon]=\"'big-parcel'\"\n [horizontal]=\"true\"\n [title]=\"'No application.' | translate\"\n [subtitle]=\"'This package doesn\\'t contain an application.' | translate\"\n ></c8y-ui-empty-state>\n</ng-template>","import { Component, Input, SimpleChanges } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { ApplicationService, IApplication, IManifest } from '@c8y/client';\nimport { AlertService, ContextRouteService, PropertiesListItem } from '@c8y/ngx-components';\nimport { packageProperties } from '../../../ecosystem.constants';\n\n@Component({\n selector: 'c8y-package-contents',\n templateUrl: './packages-contents.component.html'\n})\nexport class PackageContentsComponent {\n @Input() selectedVersion: string;\n selectedVersionManifest: IManifest;\n package: IApplication = {};\n isLoading: boolean = false;\n\n readonly packageVersionProperties: PropertiesListItem[] = packageProperties;\n\n constructor(\n private activatedRoute: ActivatedRoute,\n private applicationService: ApplicationService,\n private alertService: AlertService,\n private contextRouteService: ContextRouteService\n ) {}\n\n async ngOnChanges(changes: SimpleChanges) {\n if (changes.selectedVersion.currentValue) {\n this.loadManifest(this.selectedVersion);\n }\n this.selectedVersionManifest = undefined;\n }\n\n async loadManifest(version: string) {\n this.package = this.contextRouteService.getContextData(this.activatedRoute)?.contextData;\n this.isLoading = true;\n this.selectedVersionManifest = await this.getManifest(version);\n this.isLoading = false;\n }\n\n private async getManifest(version: string): Promise<IManifest> {\n try {\n return await this.applicationService.getAppManifest(this.package, version);\n } catch (error) {\n this.alertService.addServerFailure(error);\n }\n return undefined;\n }\n}\n","<div class=\"inner-scroll\">\n <ng-container *ngIf=\"!selectedVersionManifest && !isLoading\">\n <div class=\"p-16\">\n <c8y-ui-empty-state\n [icon]=\"'big-parcel'\"\n [horizontal]=\"true\"\n [title]=\"'No package selected' | translate\"\n [subtitle]=\"'Select a package from the list to display the package contents.' | translate\"\n ></c8y-ui-empty-state>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"isLoading\">\n <c8y-loading></c8y-loading>\n </ng-container>\n\n <ng-container *ngIf=\"selectedVersionManifest && !isLoading\">\n <!-- DETAILS -->\n <div class=\"card-block p-t-0\">\n <c8y-properties-list\n [data]=\"selectedVersionManifest\"\n [emptyLabel]=\"'--'\"\n [properties]=\"packageVersionProperties\"\n >\n </c8y-properties-list>\n \n <!-- APPS -->\n <c8y-contents-apps\n class=\"p-t-16 d-block\"\n [selectedVersionManifest]=\"selectedVersionManifest\"\n ></c8y-contents-apps>\n\n <!-- PLUGINS -->\n <c8y-contents-plugins\n class=\"p-t-16 d-block\"\n [selectedVersionManifest]=\"selectedVersionManifest\"\n ></c8y-contents-plugins>\n </div>\n </ng-container>\n</div>\n","import { Component, EventEmitter, OnInit, Output } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { IApplication, IApplicationVersion } from '@c8y/client';\nimport {\n AlertService,\n GainsightService,\n gettext,\n ModalService,\n OptionsService,\n Permissions,\n PluginsService,\n Status\n} from '@c8y/ngx-components';\nimport { EcosystemService } from '../../../ecosystem.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { PRODUCT_EXPERIENCE } from '../../../ecosystem.model';\n\nconst DEFAULT_VERSIONS_LIMIT = 20;\n\n@Component({\n selector: 'c8y-package-versions-list',\n templateUrl: './package-versions-list.component.html'\n})\nexport class PackageVersionsListComponent implements OnInit {\n CURRENT_LOCATION = location.href;\n\n versionsLimit: number;\n isLoading = false;\n package: IApplication;\n sortedVersions: IApplicationVersion[];\n selectedVersion: string;\n preUploadCallback: () => Promise<any>;\n hasAdminPermissions = false;\n isPackageOwnedByCurrentTenant = false;\n\n @Output() onVersionSelect = new EventEmitter<string | null>();\n\n constructor(\n private activatedRoute: ActivatedRoute,\n private pluginsService: PluginsService,\n private ecosystemService: EcosystemService,\n private translateService: TranslateService,\n private modal: ModalService,\n private alertService: AlertService,\n private optionsService: OptionsService,\n private permissions: Permissions,\n private gainsightService: GainsightService\n ) {}\n\n async ngOnInit() {\n this.isLoading = true;\n this.hasAdminPermissions = this.permissions.hasRole('ROLE_APPLICATION_MANAGEMENT_ADMIN');\n this.package = this.activatedRoute?.snapshot?.parent?.data?.contextData;\n this.isPackageOwnedByCurrentTenant = this.ecosystemService.isOwner(this.package);\n this.versionsLimit = await this.optionsService.getSystemOption(\n 'application',\n 'versions.limit',\n DEFAULT_VERSIONS_LIMIT\n );\n this.sortVersions();\n this.isLoading = false;\n }\n\n async downloadArchive(appVersion: IApplicationVersion): Promise<void> {\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.PACKAGE_VERSIONS, {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.PACKAGE_VERSIONS,\n action: PRODUCT_EXPERIENCE.APPLICATIONS.ACTIONS.DOWNLOAD,\n url: this.CURRENT_LOCATION\n });\n await this.ecosystemService.downloadArchive(this.package, {\n id: (appVersion as any).binaryId,\n name: `${this.package.name}-${appVersion.version}.zip`\n });\n }\n\n packageVersionUploaded() {\n this.activatedRoute.snapshot.parent.data.contextData = this.package;\n this.sortVersions();\n this.setUploadedVersionAsLatest();\n }\n\n selectVersion(version: string | null): void {\n this.selectedVersion = version;\n this.onVersionSelect.emit(version);\n }\n\n async removeVersionPackage(version: string) {\n try {\n await this.ecosystemService.deletePackageVersion(this.package, { version });\n this.alertService.success(\n this.translateService.instant(gettext('Package version {{version}} has been removed'), {\n version\n })\n );\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.PACKAGE_VERSIONS, {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.PACKAGE_VERSIONS,\n action: PRODUCT_EXPERIENCE.APPLICATIONS.ACTIONS.DELETE,\n result: PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.SUCCESS,\n url: this.CURRENT_LOCATION\n });\n } catch (e) {\n this.alertService.addServerFailure(e);\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.PACKAGE_VERSIONS, {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.PACKAGE_VERSIONS,\n action: PRODUCT_EXPERIENCE.APPLICATIONS.ACTIONS.DELETE,\n result: PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.SERVER_FAILURE,\n url: this.CURRENT_LOCATION\n });\n }\n if (version === this.selectedVersion) {\n this.selectVersion(null);\n }\n await this.refreshPackage();\n }\n\n async setVersionAsLatest(appVersion: IApplicationVersion) {\n try {\n await this.ecosystemService.setPackageVersionTag(this.package, appVersion.version, [\n ...appVersion.tags,\n 'latest'\n ]);\n\n // TODO added it due to: https://cumulocity.atlassian.net/browse/MTM-48553\n // Remove it when BE fixes issues with activeVersion.\n await this.ecosystemService.setAppActiveVersion(this.package, appVersion.binaryId);\n this.alertService.success(gettext('Tag has been set.'));\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.PACKAGE_VERSIONS, {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.PACKAGE_VERSIONS,\n action: PRODUCT_EXPERIENCE.APPLICATIONS.ACTIONS.SET_AS_LATEST,\n result: PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.SUCCESS,\n url: this.CURRENT_LOCATION\n });\n } catch (e) {\n this.alertService.addServerFailure(e);\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.PACKAGE_VERSIONS, {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.PACKAGE_VERSIONS,\n action: PRODUCT_EXPERIENCE.APPLICATIONS.ACTIONS.SET_AS_LATEST,\n result: PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.SERVER_FAILURE,\n url: this.CURRENT_LOCATION\n });\n return;\n }\n await this.refreshPackage();\n }\n\n async acknowledgeLimitReached() {\n await this.modal.acknowledge(\n gettext('Package limit exceeded'),\n this.translateService.instant(\n gettext(\n `You have reached the maximum number of {{versionsLimit}} package versions. To add another package, first remove one from the list.`\n ),\n { versionsLimit: this.versionsLimit }\n ),\n Status.INFO,\n gettext('Close')\n );\n throw undefined;\n }\n\n private async refreshPackage() {\n this.isLoading = true;\n this.package = await this.ecosystemService.getApplication(this.package.id);\n this.activatedRoute.snapshot.parent.data.contextData = this.package;\n this.sortVersions();\n this.isLoading = false;\n }\n\n private sortVersions() {\n this.sortedVersions = this.pluginsService.sortVersions(\n {\n list: this.package.applicationVersions,\n path: ['version']\n },\n 'desc'\n );\n this.toggleUploadPossibility();\n }\n\n private async setUploadedVersionAsLatest() {\n const uploadedVersion =\n this.package.applicationVersions[this.package.applicationVersions.length - 1];\n try {\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.PACKAGE_VERSIONS, {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.PACKAGE_VERSIONS,\n action: PRODUCT_EXPERIENCE.APPLICATIONS.ACTIONS.UPLOAD,\n result: PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.SUCCESS,\n url: this.CURRENT_LOCATION\n });\n await this.modal.confirm(\n gettext('Upload successful'),\n this.translateService.instant(\n gettext(\n 'Do you want to set version {{version}} as the latest? Deploying a new app will always use this version.'\n ),\n { version: uploadedVersion.version }\n ),\n Status.SUCCESS,\n {\n ok: gettext('Set as latest`version`'),\n cancel: gettext('Keep unchanged`version`')\n }\n );\n } catch (e) {\n // on cancel: do nothing\n return;\n }\n await this.setVersionAsLatest(uploadedVersion);\n }\n\n private toggleUploadPossibility() {\n this.preUploadCallback =\n this.sortedVersions.length < this.versionsLimit\n ? null\n : this.acknowledgeLimitReached.bind(this);\n }\n}\n","<div class=\"inner-scroll split-view__list\">\n <div class=\"card-header separator sticky-top bg-component\">\n <h4 class=\"card-title\" translate>Versions</h4>\n </div>\n\n <div class=\"bg-gray-white flex-grow\">\n <div class=\"p-16\" *ngIf=\"isLoading\">\n <c8y-loading></c8y-loading>\n </div>\n <ul class=\"nav c8y-nav-stacked\" *ngIf=\"!isLoading\">\n <li\n class=\"c8y-stacked-item p-t-0 p-b-0 p-r-4\"\n [ngClass]=\"{ active: selectedVersion === applicationVersion.version }\"\n *ngFor=\"let applicationVersion of sortedVersions\"\n >\n <div\n class=\"flex-grow d-flex a-i-center gap-4 p-t-8 p-b-8\"\n (click)=\"selectVersion(applicationVersion.version)\"\n >\n <i c8yIcon=\"big-parcel\" class=\"icon-20\"></i>\n <span class=\"text-label-small\">\n {{ 'Version' | translate }}\n </span>\n <span class=\"text-medium\">{{ applicationVersion.version }}</span>\n <div class=\"text-truncate d-flex j-c-end flex-grow gap-4 flex-wrap m-l-auto\">\n <span *ngFor=\"let tag of applicationVersion.tags\" class=\"label label-info\">\n {{ tag }}\n </span>\n </div>\n </div>\n <div class=\"dropdown\" dropdown *ngIf=\"hasAdminPermissions && isPackageOwnedByCurrentTenant\">\n <button\n class=\"dropdown-toggle c8y-dropdown\"\n dropdownToggle\n title=\"{{ 'Settings' | translate }}\"\n >\n <i c8yIcon=\"ellipsis-v\"></i>\n </button>\n <ul *dropdownMenu class=\"dropdown-menu dropdown-menu-right\">\n <li>\n <button\n (click)=\"setVersionAsLatest(applicationVersion)\"\n [disabled]=\"applicationVersion.tags?.includes('latest')\"\n title=\"{{ 'Set as latest`version`' | translate }}\"\n >\n <i c8yIcon=\"collect\" class=\"m-r-4\"></i>\n {{ 'Set as latest`version`' | translate }}\n </button>\n </li>\n <li>\n <button\n (click)=\"downloadArchive(applicationVersion)\"\n title=\"{{ 'Download | translate }}\"\n >\n <i c8yIcon=\"download\" class=\"m-r-4\"></i>\n {{ 'Download' | translate }}\n </button>\n </li>\n <li>\n <button\n (click)=\"removeVersionPackage(applicationVersion.version)\"\n [disabled]=\"applicationVersion.tags?.includes('latest')\"\n title=\"{{ 'Delete' | translate }}\"\n >\n <i c8yIcon=\"trash\" class=\"m-r-4\"></i>\n {{ 'Delete' | translate }}\n </button>\n </li>\n </ul>\n </div>\n </li>\n </ul>\n </div>\n\n <div\n class=\"card-footer separator sticky-bottom\"\n *ngIf=\"!isLoading && isPackageOwnedByCurrentTenant\"\n >\n <div class=\"form-group m-b-0\">\n <label translate>Upload a new version</label>\n <c8y-upload-archive\n [(application)]=\"package\"\n [uploadNewVersion]=\"true\"\n (refresh)=\"packageVersionUploaded()\"\n [preUploadCallback]=\"preUploadCallback\"\n ></c8y-upload-archive>\n </div>\n </div>\n</div>\n","import { Component } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { IApplication } from '@c8y/client';\nimport { ContextRouteService } from '@c8y/ngx-components';\n\n@Component({\n selector: 'c8y-package-versions',\n templateUrl: './packages-versions.component.html'\n})\nexport class PackageVersionsComponent {\n package: IApplication = {};\n selectedVersion: string;\n\n constructor(\n private activatedRoute: ActivatedRoute,\n private contextRouteService: ContextRouteService\n ) {}\n\n async ngOnInit() {\n this.package = this.contextRouteService.getContextData(this.activatedRoute)?.contextData;\n }\n\n clearSelectedVersion() {\n this.selectedVersion = null;\n }\n\n selectVersion(version: string) {\n this.selectedVersion = version;\n }\n}\n","<c8y-title>{{ package?.name | humanizeAppName | async }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item [icon]=\"'c8y-atom'\" [label]=\"'Ecosystem' | translate\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-modules'\"\n [label]=\"'Applications' | translate\"\n [path]=\"'ecosystem/applications'\"\n >\n </c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'big-parcel'\"\n [label]=\"'Packages' | translate\"\n [path]=\"'ecosystem/package-list'\"\n >\n </c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"package?.name | humanizeAppName | async\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Versions' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<div class=\"card content-fullpage split-view--5-7 grid__row--1\">\n <c8y-package-versions-list\n class=\"d-contents\"\n (onVersionSelect)=\"selectVersion($event)\"\n ></c8y-package-versions-list>\n\n <div\n class=\"inner-scroll split-view__detail\"\n [ngClass]=\"{ 'split-view__detail--selected': selectedVersion }\"\n >\n <div class=\"large-padding card-header separator visible-sm visible-xs fit-w sticky-top\">\n <div class=\"d-flex a-i-center\">\n <button\n title=\"{{ 'Back' | translate }}\"\n class=\"btn btn-clean text-primary m-r-8\"\n (click)=\"clearSelectedVersion()\"\n >\n <i c8yIcon=\"chevron-left\"></i><span translate>Back</span>\n </button>\n <h4 class=\"card-title\" translate>Package contents</h4>\n </div>\n </div>\n <div class=\"card-header large-padding separator sticky-top visible-md visible-lg\">\n <h4 class=\"card-title\" translate>Package contents</h4>\n </div>\n <div class=\"inner-scroll split-view__list\">\n <c8y-package-contents [selectedVersion]=\"selectedVersion\"></c8y-package-contents>\n </div>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate } from '@angular/router';\nimport { EcosystemService } from '../ecosystem.service';\n\n@Injectable()\nexport class PackageGuard implements CanActivate {\n constructor(private ecosystemService: EcosystemService) {}\n\n canActivate(route: ActivatedRouteSnapshot) {\n const app = route.data.contextData || route.parent.data.contextData;\n if (!app) {\n return false;\n }\n return this.ecosystemService.isPackage(app);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate } from '@angular/router';\n\n@Injectable()\nexport class PackageVersionsGuard implements CanActivate {\n canActivate(route: ActivatedRouteSnapshot) {\n const app = route.data.contextData || route.parent.data.contextData;\n return !!app?.applicationVersions?.length;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport {\n CoreModule,\n FormsModule,\n gettext,\n HOOK_NAVIGATOR_NODES,\n HOOK_ROUTE,\n HOOK_TABS,\n HOOK_WIZARD,\n Route,\n ViewContext\n} from '@c8y/ngx-components';\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { ActivityLogComponent } from './activity-log/activity-log.component';\nimport { ApplicationPropertiesComponent } from './application-properties/application-properties.component';\nimport { ApplicationPropertiesGuard } from './application-properties/application-properties.guard';\nimport { AddExternalApplicationComponent } from './applications/add-external-applicaiton/add-external-application.component';\nimport { AddWebApplicationComponent } from './applications/add-web-application/add-web-application.component';\nimport { ApplicationListComponent } from './applications/application-list/application-list.component';\nimport { ApplicationPluginsComponent } from './applications/application-plugins/application-plugins.component';\nimport { ApplicationPluginsGuard } from './applications/application-plugins/application-plugins.guard';\nimport { AppStatePipe } from './applications/application-plugins/appState.pipe';\nimport { InstallPluginToAppComponent } from './applications/application-plugins/install-plugin-to-app.component';\nimport { InstallPluginComponent } from './applications/application-plugins/install-plugin.component';\nimport { LabelCellRendererComponent } from './applications/application-plugins/label-cell-renderer.component';\nimport { PluginListItemComponent } from './applications/application-plugins/plugin-list-item.component';\nimport { PluginListComponent } from './applications/application-plugins/plugin-list.component';\nimport { DuplicateApplicationListComponent } from './applications/duplicate-application/duplicate-application-list/duplicate-application-list.component';\nimport { DuplicateApplicationPropertiesComponent } from './applications/duplicate-application/duplicate-application-properties/duplicate-application-properties.component';\nimport { DuplicateApplicationComponent } from './applications/duplicate-application/duplicate-application.component';\nimport { InstallFromPackageComponent } from './applications/install-from-package/install-from-package.component';\nimport { EcosystemNavigationFactory } from './ecosystem-navigation.factory';\nimport { EcosystemTabs } from './ecosystem-tabs.factory';\nimport { EcosystemService } from './ecosystem.service';\nimport { FeatureListComponent } from './features/feature-list.component';\nimport { AddMicroserviceComponent } from './microservices/add-microservice.component';\nimport { MicroserviceListComponent } from './microservices/microservice-list.component';\nimport { AddPackageComponent } from './packages/add-package.component';\nimport { DeployApplicationComponent } from './packages/deploy-application/deploy-application.component';\nimport { PackageDetailsComponent } from './packages/package-details/package-details.component';\nimport { PackagesListComponent } from './packages/package-list/packages-list.component';\nimport { PackageVersionsComponent } from './packages/package-versions/packages-versions.component';\nimport { PackageContentsComponent } from './packages/package-versions/package-contents/packages-contents.component';\nimport { PackageVersionsPluginsComponent } from './packages/package-versions/package-contents/contents-plugins/contents-plugins.component';\nimport { PackageVersionsAppsComponent } from './packages/package-versions/package-contents/contents-apps/contents-apps.component';\nimport { PackageGuard } from './packages/package.guard';\nimport { AddApplicationComponent } from './shared/add-application.component';\nimport { ApplicationCardComponent } from './shared/application-card.component';\nimport { ApplicationPropertiesFormComponent } from './shared/application-properties-form.component';\nimport { UploadArchiveComponent } from './shared/upload-archive.component';\nimport { PackageVersionsListComponent } from './packages/package-versions/package-versions-list/package-versions-list.component';\nimport { PackageVersionsGuard } from './packages/package-versions.guard';\nimport { SubscriptionModalComponent } from './application-properties/subscription-modal/subscription-modal.component';\n\nconst ecosystemMainRoutes: Route[] = [\n {\n path: 'ecosystem/applications',\n component: ApplicationListComponent\n },\n {\n path: 'ecosystem/package-list',\n component: PackagesListComponent\n },\n {\n path: 'ecosystem/features',\n component: FeatureListComponent\n },\n {\n path: 'ecosystem',\n redirectTo: 'ecosystem/applications'\n },\n {\n path: 'microservices',\n component: MicroserviceListComponent\n }\n];\n\nconst applicationDetailsRoutes: Route[] = [\n {\n path: 'properties',\n component: ApplicationPropertiesComponent,\n icon: 'list',\n label: gettext('Properties'),\n context: ViewContext.Application,\n priority: 5,\n canActivate: [ApplicationPropertiesGuard]\n },\n {\n path: 'plugins',\n component: ApplicationPluginsComponent,\n icon: 'plugin',\n label: gettext('Plugins'),\n context: ViewContext.Application,\n priority: 3,\n canActivate: [ApplicationPluginsGuard]\n },\n {\n path: 'package-details',\n component: PackageDetailsComponent,\n icon: 'big-parcel',\n label: gettext('Info'),\n context: ViewContext.Application,\n priority: 10,\n canActivate: [PackageGuard]\n },\n {\n path: 'package-versions',\n component: PackageVersionsComponent,\n icon: 'c8y-modules',\n label: gettext('Versions'),\n context: ViewContext.Application,\n priority: 1,\n canActivate: [PackageGuard, PackageVersionsGuard]\n },\n {\n path: 'properties',\n component: ApplicationPropertiesComponent,\n icon: 'list',\n label: gettext('Properties'),\n context: ViewContext.Microservice,\n priority: 5,\n canActivate: [ApplicationPropertiesGuard]\n }\n];\n\n@NgModule({\n declarations: [\n ApplicationListComponent,\n MicroserviceListComponent,\n ApplicationCardComponent,\n ApplicationPropertiesComponent,\n AddMicroserviceComponent,\n ActivityLogComponent,\n ApplicationPluginsComponent,\n PluginListItemComponent,\n InstallPluginComponent,\n PluginListComponent,\n AddWebApplicationComponent,\n AddExternalApplicationComponent,\n DuplicateApplicationComponent,\n DuplicateApplicationListComponent,\n DuplicateApplicationPropertiesComponent,\n ApplicationPropertiesComponent,\n InstallFromPackageComponent,\n AddMicroserviceComponent,\n ApplicationPropertiesComponent,\n PackagesListComponent,\n PackageDetailsComponent,\n DeployApplicationComponent,\n AddPackageComponent,\n AddApplicationComponent,\n ApplicationPropertiesFormComponent,\n FeatureListComponent,\n UploadArchiveComponent,\n InstallPluginToAppComponent,\n AppStatePipe,\n LabelCellRendererComponent,\n PackageVersionsComponent,\n UploadArchiveComponent,\n PackageVersionsPluginsComponent,\n PackageVersionsAppsComponent,\n PackageContentsComponent,\n PackageVersionsListComponent,\n SubscriptionModalComponent\n ],\n entryComponents: [\n AddMicroserviceComponent,\n AddWebApplicationComponent,\n AddExternalApplicationComponent,\n DuplicateApplicationComponent,\n DuplicateApplicationListComponent,\n DuplicateApplicationPropertiesComponent,\n ApplicationPropertiesComponent,\n ActivityLogComponent,\n ApplicationPluginsComponent,\n InstallPluginComponent,\n PackagesListComponent,\n InstallFromPackageComponent,\n PackageDetailsComponent,\n DeployApplicationComponent,\n AddPackageComponent,\n FeatureListComponent,\n InstallPluginToAppComponent,\n PackageVersionsComponent\n ],\n imports: [\n CoreModule,\n BsDropdownModule,\n TooltipModule,\n FormsModule,\n ReactiveFormsModule,\n RouterModule.forChild(ecosystemMainRoutes),\n PopoverModule\n ],\n exports: [ApplicationPropertiesComponent],\n providers: [\n {\n provide: HOOK_TABS,\n useClass: EcosystemTabs,\n multi: true\n },\n {\n provide: HOOK_NAVIGATOR_NODES,\n useClass: EcosystemNavigationFactory,\n multi: true\n },\n {\n provide: HOOK_ROUTE,\n useValue: applicationDetailsRoutes,\n multi: true\n },\n EcosystemService,\n ApplicationPluginsGuard,\n PackageGuard,\n PackageVersionsGuard,\n ApplicationPropertiesGuard,\n {\n provide: HOOK_WIZARD,\n useValue: {\n wizardId: 'uploadApplication',\n component: AddWebApplicationComponent,\n name: 'Upload web application',\n c8yIcon: 'upload'\n },\n multi: true\n },\n {\n provide: HOOK_WIZARD,\n useValue: {\n wizardId: 'uploadPackage',\n component: AddPackageComponent\n },\n multi: true\n },\n {\n provide: HOOK_WIZARD,\n useValue: {\n wizardId: 'uploadApplication',\n component: AddExternalApplicationComponent,\n name: 'External application',\n c8yIcon: 'cloud-link'\n },\n multi: true\n },\n {\n provide: HOOK_WIZARD,\n useValue: {\n wizardId: 'deployPackage',\n component: DeployApplicationComponent,\n name: 'Deploy package',\n c8yIcon: 'big-parcel'\n },\n multi: true\n },\n {\n provide: HOOK_WIZARD,\n useValue: {\n wizardId: 'uploadApplication',\n component: InstallFromPackageComponent,\n name: 'Install from available packages',\n c8yIcon: 'big-parcel'\n },\n multi: true\n },\n {\n provide: HOOK_WIZARD,\n useValue: {\n wizardId: 'uploadApplication',\n component: DuplicateApplicationComponent,\n name: 'Duplicate existing application',\n c8yIcon: 'copy'\n },\n multi: true\n },\n {\n provide: HOOK_WIZARD,\n useValue: {\n wizardId: 'duplicateApplication',\n component: DuplicateApplicationComponent,\n name: 'Duplicate existing application',\n c8yIcon: 'copy'\n },\n multi: true\n },\n {\n provide: HOOK_WIZARD,\n useValue: {\n wizardId: 'uploadMicroservice',\n component: AddMicroserviceComponent\n },\n multi: true\n }\n ]\n})\nexport class EcosystemModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3","i1.EcosystemService","i4.UploadArchiveComponent","i2.EcosystemService","i4","i5","i6","i7","i8","i10.ActivityLogComponent","i11.UploadArchiveComponent","i2.AddApplicationComponent","get","i4.ApplicationCardComponent","i4.AppStatePipe","i6.PluginListItemComponent","i4.PluginListComponent","i7.ApplicationPropertiesFormComponent","i6.DuplicateApplicationListComponent","i7.DuplicateApplicationPropertiesComponent","i6.ApplicationPropertiesFormComponent","i4.AddApplicationComponent","i3.PackageAvailabilityService","i4.EcosystemService","i5.PackageAvailabilityService","i8.PluginListComponent","i3.PluginListComponent","i5.PackageVersionsPluginsComponent","i6.PackageVersionsAppsComponent","i3.EcosystemService","i7.UploadArchiveComponent","i4.PackageContentsComponent","i5.PackageVersionsListComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"c8y-ngx-components-ecosystem.mjs","sources":["../../ecosystem/ecosystem.model.ts","../../ecosystem/ecosystem.constants.ts","../../ecosystem/shared/ecosystem-error.ts","../../ecosystem/ecosystem.service.ts","../../ecosystem/shared/upload-archive.component.ts","../../ecosystem/shared/upload-archive.component.html","../../ecosystem/activity-log/activity-log.component.ts","../../ecosystem/activity-log/activity-log.component.html","../../ecosystem/application-properties/subscription-modal/subscription-modal.component.ts","../../ecosystem/application-properties/subscription-modal/subscription-modal.component.html","../../ecosystem/application-properties/application-properties.component.ts","../../ecosystem/application-properties/application-properties.component.html","../../ecosystem/application-properties/application-properties.guard.ts","../../ecosystem/applications/add-external-applicaiton/add-external-application.component.ts","../../ecosystem/applications/add-external-applicaiton/add-external-application.component.html","../../ecosystem/shared/add-application.component.ts","../../ecosystem/shared/add-application.component.html","../../ecosystem/applications/add-web-application/add-web-application.component.ts","../../ecosystem/shared/application-card.component.ts","../../ecosystem/shared/application-card.component.html","../../ecosystem/applications/application-list/application-list.component.ts","../../ecosystem/applications/application-list/application-list.component.html","../../ecosystem/applications/application-plugins/appState.pipe.ts","../../ecosystem/applications/application-plugins/install-plugin-to-app.component.ts","../../ecosystem/applications/application-plugins/install-plugin-to-app.component.html","../../ecosystem/applications/application-plugins/plugin-list-item.component.ts","../../ecosystem/applications/application-plugins/plugin-list-item.component.html","../../ecosystem/applications/application-plugins/plugin-list.component.ts","../../ecosystem/applications/application-plugins/plugin-list.component.html","../../ecosystem/applications/application-plugins/install-plugin.component.ts","../../ecosystem/applications/application-plugins/install-plugin.component.html","../../ecosystem/applications/application-plugins/label-cell-renderer.component.ts","../../ecosystem/applications/application-plugins/label-cell-renderer.component.html","../../ecosystem/applications/application-plugins/application-plugins.component.ts","../../ecosystem/applications/application-plugins/application-plugins.component.html","../../ecosystem/applications/application-plugins/application-plugins.guard.ts","../../ecosystem/applications/duplicate-application/duplicate-application-list/duplicate-application-list.component.ts","../../ecosystem/applications/duplicate-application/duplicate-application-list/duplicate-application-list.component.html","../../ecosystem/shared/application-properties-form.component.ts","../../ecosystem/shared/application-properties-form.component.html","../../ecosystem/applications/duplicate-application/duplicate-application-properties/duplicate-application-properties.component.ts","../../ecosystem/applications/duplicate-application/duplicate-application-properties/duplicate-application-properties.component.html","../../ecosystem/applications/duplicate-application/duplicate-application.component.ts","../../ecosystem/applications/duplicate-application/duplicate-application.component.html","../../ecosystem/applications/install-from-package/install-from-package.component.ts","../../ecosystem/applications/install-from-package/install-from-package.component.html","../../ecosystem/ecosystem-navigation.factory.ts","../../ecosystem/ecosystem-tabs.factory.ts","../../ecosystem/features/feature-list.component.ts","../../ecosystem/features/feature-list.component.html","../../ecosystem/microservices/add-microservice.component.ts","../../ecosystem/microservices/microservice-list.component.ts","../../ecosystem/microservices/microservice-list.component.html","../../ecosystem/packages/package-availability.service.ts","../../ecosystem/packages/add-package.component.ts","../../ecosystem/packages/deploy-application/deploy-application.component.ts","../../ecosystem/packages/deploy-application/deploy-application.component.html","../../ecosystem/packages/package-details/package-details.component.ts","../../ecosystem/packages/package-details/package-details.component.html","../../ecosystem/packages/package-list/packages-list.component.ts","../../ecosystem/packages/package-list/packages-list.component.html","../../ecosystem/packages/package-versions/package-contents/contents-plugins/contents-plugins.component.ts","../../ecosystem/packages/package-versions/package-contents/contents-plugins/contents-plugins.component.html","../../ecosystem/packages/package-versions/package-contents/contents-apps/contents-apps.component.ts","../../ecosystem/packages/package-versions/package-contents/contents-apps/contents-apps.component.html","../../ecosystem/packages/package-versions/package-contents/packages-contents.component.ts","../../ecosystem/packages/package-versions/package-contents/packages-contents.component.html","../../ecosystem/packages/package-versions/package-versions-list/package-versions-list.component.ts","../../ecosystem/packages/package-versions/package-versions-list/package-versions-list.component.html","../../ecosystem/packages/package-versions/packages-versions.component.ts","../../ecosystem/packages/package-versions/packages-versions.component.html","../../ecosystem/packages/package.guard.ts","../../ecosystem/packages/package-versions.guard.ts","../../ecosystem/ecosystem.module.ts","../../ecosystem/c8y-ngx-components-ecosystem.ts"],"sourcesContent":["export interface ApplicationState {\n label: string;\n class: string;\n}\n\n/** Wizard types */\nexport enum Wizards {\n APPLICATION_UPLOAD = 'applicationUpload',\n MICROSERVICE_UPLOAD = 'microserviceUpload'\n}\n\nexport enum ERROR_TYPE {\n TYPE_VALIDATION = 'TYPE_VALIDATION',\n ALREADY_SUBSCRIBED = 'ALREADY_SUBSCRIBED',\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}\n\nexport const PRODUCT_EXPERIENCE = {\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 },\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 },\n ACTIONS: {\n AVAILABILITY_CHANGE: 'availabilityChange',\n CANCEL: 'cancel',\n CLONE: 'clone',\n DELETE: 'delete',\n DOWNLOAD: 'download',\n DEPLOY_APPLICATION: 'deployApplication',\n EDIT: 'edit',\n INSTALL_PLUGIN: 'installPlugin',\n INSTALL_PLUGINS: 'installPlugins',\n SELECT_VERSION: 'selectVersion',\n SET_AS_LATEST: 'setAsLatest',\n UPDATE_AVAILABLE: 'updateAvailable',\n UPLOAD: 'upload'\n },\n RESULTS: {\n DEPLOYED: 'deployed',\n DUPLICATED: 'duplicated',\n PLUGIN_INSTALLED: 'pluginInstalled',\n PLUGIN_REMOVED: 'pluginRemoved',\n SERVER_FAILURE: 'serverFailure',\n SUCCESS: 'success'\n }\n }\n};\n","import { ERROR_TYPE } from './ecosystem.model';\nimport { gettext, PropertiesListItem } from '@c8y/ngx-components';\n\nexport const ERROR_MESSAGES = {\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 or key of the uploaded archive do not match with the existing app.'\n )\n};\n\nexport const APP_STATE = {\n SUBSCRIBED: {\n label: gettext('Subscribed`application`'),\n class: 'label-primary'\n },\n CUSTOM: {\n label: gettext('Custom`application`'),\n class: 'label-info'\n },\n EXTERNAL: {\n label: gettext('External`application`'),\n class: 'label-warning'\n },\n UNPACKED: {\n label: gettext('Unpacked`application`'),\n class: 'label-success'\n },\n PACKAGE_BLUEPRINT: {\n label: gettext('Blueprint'),\n class: 'label-success'\n },\n PACKAGE_PLUGIN: {\n label: gettext('Plugins'),\n class: 'label-info'\n }\n};\n\nexport const packageProperties: PropertiesListItem[] = [\n {\n label: gettext('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('Required platform version'),\n key: 'requiredPlatformVersion'\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 IManifest,\n IResult,\n IResultList,\n IUploadParamsOverride,\n TenantService\n} from '@c8y/client';\nimport {\n AlertService,\n AppStateService,\n gettext,\n HumanizeAppNamePipe,\n ModalService,\n Status,\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 } from 'lodash-es';\nimport { BehaviorSubject, Observable, defer } from 'rxjs';\nimport { debounceTime, take, map, shareReplay } from 'rxjs/operators';\nimport { gt, coerce } from 'semver';\nimport { EcosystemError } from './shared/ecosystem-error';\nimport { APP_STATE, ERROR_MESSAGES } from './ecosystem.constants';\nimport { ApplicationState, ERROR_TYPE } from './ecosystem.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 ) {\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 * @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 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(app => this.isPackage(app));\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 = [\n ApplicationType.HOSTED,\n ApplicationType.EXTERNAL,\n ApplicationType.REPOSITORY\n ].includes(app.type);\n const isNotAPackage = !this.isPackage(app);\n return isNotAFeature && hasProperType && isNotAPackage;\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 updateAppManifest(\n application: IApplication,\n sourcePackage: IApplication\n ): Promise<{ res: IFetchResponse; data: any }> {\n const { id } = application;\n const cleanedApp = this.removeAppProperties(application);\n if (!cleanedApp.manifest) {\n cleanedApp.manifest = {};\n }\n cleanedApp.manifest.isPackage = false;\n cleanedApp.manifest.source = sourcePackage.id;\n\n return await this.applicationService\n .binary(id)\n .updateFiles([{ path: CUMULOCITY_JSON, contents: JSON.stringify(cleanedApp) as any }]);\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 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(\n app: IApplication,\n deleteOnFailure: boolean = false\n ): 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: boolean = 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\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 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 resourcesUrl: '/',\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 this.alertError(ex);\n }\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 } else if (this.isPackageBlueprint(app)) {\n return APP_STATE.PACKAGE_BLUEPRINT;\n } else if (this.isPluginsPackage(app)) {\n return APP_STATE.PACKAGE_PLUGIN;\n }\n return APP_STATE.CUSTOM;\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 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 checkIfAppNameKeyPathExists(\n existingApps: IApplication[],\n app: IApplication,\n retryNo: number\n ): IApplication {\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 removeAppProperties(app: IApplication): IApplication {\n const tempApp = cloneDeep(app);\n const propertiesToRemove = ['id', 'owner', 'activeVersionId', 'self'];\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 { 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: boolean = false;\n canReactivate: boolean = false;\n\n constructor(private ecosystemService: EcosystemService, private alertService: AlertService) {}\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 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) {\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 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, Input, OnInit } from '@angular/core';\nimport { IApplication, IApplicationBinary } from '@c8y/client';\nimport { AlertService } from '@c8y/ngx-components';\nimport { BehaviorSubject } from 'rxjs';\nimport { EcosystemService } from '../ecosystem.service';\n\n@Component({\n selector: 'c8y-activity-log',\n templateUrl: './activity-log.component.html'\n})\nexport class ActivityLogComponent implements OnInit {\n @Input() application: IApplication;\n @Input() hasAdminPermissions = false;\n archives: IApplicationBinary[] = [];\n toActivateVersionId: string;\n last: IApplicationBinary;\n isLoading: boolean;\n canReactivate: boolean = false;\n\n constructor(private ecosystemService: EcosystemService, private alertService: AlertService) {}\n\n get uploadProgress(): BehaviorSubject<number> {\n return this.ecosystemService.progress;\n }\n\n async ngOnInit() {\n this.canReactivate = this.showReactivate();\n this.refresh();\n }\n\n isActive(archive: IApplicationBinary): boolean {\n return this.application.activeVersionId === archive.id;\n }\n\n toActivate(archive: IApplicationBinary): boolean {\n return this.toActivateVersionId === archive.id;\n }\n\n checkIfLast(archive: IApplicationBinary): boolean {\n return archive.id === this.last.id;\n }\n\n showReactivate(): boolean {\n return this.ecosystemService.isApplication(this.application);\n }\n\n async setActive(archive): Promise<void> {\n const id = archive.id || archive;\n this.toActivateVersionId = id;\n this.isLoading = true;\n try {\n this.application = (\n await this.ecosystemService.setAppActiveVersion(this.application, id)\n ).data;\n } catch (ex) {\n this.alertService.addServerFailure(ex);\n }\n this.isLoading = false;\n this.refresh();\n }\n\n async deleteArchive(archive: IApplicationBinary): Promise<void> {\n await this.ecosystemService.deleteArchive(archive, this.application);\n this.refresh();\n }\n\n async downloadArchive(archive: IApplicationBinary): Promise<void> {\n await this.ecosystemService.downloadArchive(this.application, archive);\n }\n\n async reactivateArchive(): Promise<void> {\n await this.ecosystemService.reactivateArchive(this.application);\n }\n\n async onRefresh() {\n await this.refresh();\n }\n\n private async refresh(): Promise<void> {\n this.isLoading = true;\n this.archives = await this.ecosystemService.listArchives(this.application.id);\n if (this.application.manifest?.package === 'blueprint') {\n // filter out entries without description because using them as active may break application's\n // manifest (changing isPackage property of deployed app to 'true')\n this.archives = this.archives.filter((archive: IApplicationBinary) => !!archive.description);\n }\n this.archives.sort((a, b) => {\n return (new Date(b.created) as any) - (new Date(a.created) as any);\n });\n this.last = this.archives[this.archives.length - 1];\n this.isLoading = false;\n }\n}\n","<div class=\"inner-scroll bg-gray-white flex-grow\">\n <div class=\"card-block overflow-visible\">\n <c8y-list-group>\n <c8y-li-timeline *ngFor=\"let archive of archives\" [ngClass]=\"{ active: isActive(archive) }\">\n {{ archive.created | date: 'd MMM YYYY' }}\n {{ archive.created | date: 'shortTime' }}\n <c8y-li>\n <c8y-li-icon\n [icon]=\"checkIfLast(archive) ? 'flag-checkered' : 'file-zip-o'\"\n ></c8y-li-icon>\n <c8y-li-body>\n <div class=\"d-flex a-i-start\">\n <div style=\"min-width: 0; flex: 1\">\n <span class=\"text-truncate-wrap\" title=\" {{ archive.description || archive.name }}\">\n {{ archive.description || archive.name }}\n </span>\n <small *ngIf=\"archive.description\" class=\"text-muted\">{{\n archive.description\n }}</small>\n </div>\n <i\n *ngIf=\"isLoading && toActivate(archive)\"\n [c8yIcon]=\"'circle-o-notch'\"\n class=\"icon-spin\"\n title=\"{{ 'Activating' | translate }}\"\n ></i>\n\n <span *ngIf=\"isActive(archive)\" class=\"label label-primary m-l-auto m-t-4\">{{\n 'Active' | translate\n }}</span>\n </div>\n </c8y-li-body>\n <c8y-li-action\n (click)=\"setActive(archive)\"\n *ngIf=\"hasAdminPermissions && !isLoading && !isActive(archive)\"\n icon=\"check-square-o\"\n >\n {{ 'Set as active`archive`' | translate }}\n </c8y-li-action>\n <c8y-li-action (click)=\"downloadArchive(archive)\" icon=\"download\">\n {{ 'Download`archive`' | translate }}\n </c8y-li-action>\n <c8y-li-action\n (click)=\"deleteArchive(archive)\"\n *ngIf=\"\n hasAdminPermissions &&\n archives.length > 1 &&\n !checkIfLast(archive) &&\n !isActive(archive)\n \"\n icon=\"trash\"\n >\n {{ 'Delete`archive`' | translate }}\n </c8y-li-action>\n <c8y-li-action\n (click)=\"reactivateArchive()\"\n *ngIf=\"hasAdminPermissions && canReactivate && isActive(archive)\"\n icon=\"undo\"\n >\n {{ 'Reactivate archive' | translate }}\n </c8y-li-action>\n </c8y-li>\n </c8y-li-timeline>\n </c8y-list-group>\n </div>\n</div>\n<div class=\"card-footer\">\n <c8y-form-group *ngIf=\"!isLoading && hasAdminPermissions\" class=\"m-auto\">\n <c8y-upload-archive [(application)]=\"application\" (refresh)=\"onRefresh()\"></c8y-upload-archive>\n </c8y-form-group>\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport { ApplicationService, IApplication, IApplicationManagedObject } from '@c8y/client';\nimport {\n AlertService,\n ContextRouteService,\n gettext,\n ModalService,\n Status,\n TabsService\n} from '@c8y/ngx-components';\nimport { isEmpty } from 'lodash';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { EcosystemService } from '../../ecosystem.service';\n\n@Component({\n selector: 'c8y-subscription-modal',\n templateUrl: './subscription-modal.component.html'\n})\nexport class SubscriptionModalComponent implements OnInit {\n readonly RETRY_TIMEOUT = 3000;\n application: IApplication;\n message: string;\n isLoading: boolean = false;\n result: Promise<void> = new Promise(resolve => {\n this._resolve = resolve;\n });\n isSubscribed: boolean;\n retryCounter = 0;\n\n private readonly TABS: string[] = ['Logs', 'Status'];\n private _resolve: (value: void | PromiseLike<void>) => void;\n\n constructor(\n private bsModalRef: BsModalRef,\n private ecosystemService: EcosystemService,\n private tabsService: TabsService,\n private modal: ModalService,\n private applicationService: ApplicationService,\n private alertService: AlertService,\n private contextRouteService: ContextRouteService\n ) {}\n\n ngOnInit() {\n if (this.isSubscribed) {\n this.unsubscribe();\n } else {\n this.subscribe();\n }\n }\n\n async subscribe(): Promise<void> {\n this.retryCounter = 0;\n this.isLoading = true;\n this.message = gettext('Subscribing…');\n await this.ecosystemService.subscribeApp(this.application);\n this.getStatusDetails('subscribe');\n }\n\n async unsubscribe(): Promise<void> {\n this.retryCounter = 0;\n this.isLoading = true;\n this.message = gettext('Unsubscribing…');\n await this.ecosystemService.unsubscribeApp(this.application);\n this.getStatusDetails('unsubscribe');\n }\n\n private async getStatusDetails(action: 'subscribe' | 'unsubscribe') {\n this.contextRouteService.refreshContext();\n const actionSuccessful =\n action === 'subscribe' ? await this.onSubscribe() : this.onUnsubscribe();\n if (actionSuccessful) {\n return this.hideSubscriptionModal();\n }\n if (this.retryCounter === 4) {\n this.showWarningModal(action);\n return this.hideSubscriptionModal();\n }\n this.retryCounter += 1;\n setTimeout(async () => {\n this.getStatusDetails(action);\n }, this.RETRY_TIMEOUT);\n }\n\n private async onSubscribe(): Promise<boolean> {\n try {\n if (!this.application.activeVersionId) {\n return true;\n }\n const res: IApplicationManagedObject = (\n await this.applicationService.getStatusDetails(this.application)\n ).data[0];\n return this.shouldShowMSSpecificTabs(res);\n } catch (er) {\n this.alertService.addServerFailure(er);\n }\n }\n\n // Checks if the UI should show tabs with logs and status\n private shouldShowMSSpecificTabs(mo: IApplicationManagedObject): boolean {\n return !isEmpty(mo.c8y_Status?.instances) && !!mo.c8y_SupportedLogs;\n }\n\n private onUnsubscribe(): boolean {\n return !this.tabsService.areAvailable(this.TABS);\n }\n\n private hideSubscriptionModal(): void {\n this._resolve();\n this.bsModalRef.hide();\n this.isLoading = false;\n }\n\n private showWarningModal(action: string): void {\n const title = gettext('Warning');\n const body =\n action === 'subscribe'\n ? gettext('Something went wrong, please refresh the page or resubscribe the application.')\n : gettext(\n 'Something went wrong, please refresh the page or retry to unsubscribe from the application.'\n );\n this.modal.acknowledge(title, body, Status.WARNING, gettext('Close'));\n }\n}\n","<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i class=\"c8y-icon c8y-icon-atom\"></i>\n <h4>{{ message }}</h4>\n </div>\n <div class=\"modal-body\" *ngIf=\"isLoading\">\n <div class=\"p-16 text-center\">\n <c8y-loading></c8y-loading>\n </div>\n </div>\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport {\n ApplicationService,\n ApplicationType,\n BillingMode,\n IApplication,\n IManagedObject,\n InventoryService,\n Isolation\n} from '@c8y/client';\nimport {\n AlertService,\n GainsightService,\n gettext,\n ModalService,\n Permissions,\n PropertiesListItem,\n ViewContext\n} from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { packageProperties } from '../ecosystem.constants';\nimport { ApplicationState, PRODUCT_EXPERIENCE } from '../ecosystem.model';\nimport { EcosystemService } from '../ecosystem.service';\nimport { SubscriptionModalComponent } from './subscription-modal/subscription-modal.component';\n\nconst MICROSERVICES_BASE_PATH: string = '/microservices';\nconst APPLICATIONS_BASE_PATH: string = '/ecosystem';\n\n@Component({\n selector: 'c8y-application-properties',\n templateUrl: './application-properties.component.html'\n})\nexport class ApplicationPropertiesComponent implements OnInit {\n CURRENT_LOCATION = location.href;\n formGroup: FormGroup;\n application: IApplication;\n binaryMo: IManagedObject;\n singleTenant: boolean = false;\n subscription: boolean = false;\n canOpenInBrowser: boolean;\n disableOpenInBrowser: boolean;\n canDelete: boolean;\n isOwner: boolean;\n isSubscribed: boolean;\n isPackage: boolean;\n isMicroservice: boolean;\n isFeature: boolean;\n isExternal: boolean;\n isUnpacked: boolean;\n iconMap = {\n HOSTED: 'cloud',\n EXTERNAL: 'external-link-square',\n MICROSERVICE: 'microchip'\n };\n appState: ApplicationState;\n sourcePackage: IApplication;\n isLoading: boolean = true;\n isActivityLogSupported: boolean;\n isCustomMicroservice: boolean;\n hasAdminPermissions = false;\n\n breadcrumbConfig: { icon: string; label: string; path: string };\n packageProperties: PropertiesListItem[] = [...packageProperties];\n isUpdateAvailable = false;\n isUpdateOngoing = false;\n\n private blueprintApplicationVersion: string;\n\n constructor(\n private activatedRoute: ActivatedRoute,\n private ecosystemService: EcosystemService,\n private router: Router,\n private formBuilder: FormBuilder,\n private applicationService: ApplicationService,\n private alertService: AlertService,\n private inventoryService: InventoryService,\n private permissions: Permissions,\n private modalService: ModalService,\n private translate: TranslateService,\n private bsModalService: BsModalService,\n private gainsightService: GainsightService\n ) {}\n\n async ngOnInit() {\n this.hasAdminPermissions = this.permissions.hasRole('ROLE_APPLICATION_MANAGEMENT_ADMIN');\n await this.refresh();\n }\n\n async refresh() {\n await this.load();\n this.isUnpacked = this.ecosystemService.isUnpacked(this.application);\n this.isPackage = this.ecosystemService.isPackage(this.application);\n this.isFeature = this.ecosystemService.isFeature(this.application);\n this.isExternal = this.ecosystemService.isExternal(this.application);\n this.isMicroservice = this.ecosystemService.isMicroservice(this.application);\n this.appState = this.ecosystemService.getAppState(this.application);\n\n if (this.isUnpacked) {\n await this.resolveSourcePackageDetails();\n }\n\n this.setBreadcrumbConfig();\n\n if (this.isCustomMicroservice) {\n this.loadBinaryMo();\n }\n }\n\n async load() {\n this.isLoading = true;\n this.initForm();\n await this.loadApplication();\n this.isLoading = false;\n }\n\n onApplication(app: IApplication) {\n if (app.manifest) {\n this.singleTenant = app.manifest.isolation === Isolation.PER_TENANT;\n this.subscription = app.manifest.billingMode === BillingMode.SUBSCRIPTION;\n }\n }\n\n cancel() {\n if (this.application.type === ApplicationType.MICROSERVICE) {\n this.router.navigateByUrl(MICROSERVICES_BASE_PATH);\n } else {\n this.router.navigateByUrl(APPLICATIONS_BASE_PATH);\n }\n }\n\n openApp(app) {\n window.open(this.applicationService.getHref(app));\n }\n\n getPackage(entityOrId: string | number | IApplication) {\n return this.applicationService.detail(entityOrId);\n }\n\n async delete() {\n try {\n await this.ecosystemService.deleteApp(this.application);\n if (this.application.type === ApplicationType.MICROSERVICE) {\n this.router.navigateByUrl(MICROSERVICES_BASE_PATH);\n } else {\n this.router.navigateByUrl(APPLICATIONS_BASE_PATH);\n }\n } catch (ex) {\n if (ex) {\n this.alertService.addServerFailure(ex);\n }\n }\n }\n\n async subscribe() {\n const initialState = { application: this.application, isSubscribed: false };\n await this.confirmSubscriptionChange(initialState);\n this.loadApplication();\n }\n\n async unsubscribe() {\n const initialState = { application: this.application, isSubscribed: true };\n await this.confirmSubscriptionChange(initialState);\n this.loadApplication();\n }\n\n async loadApplication() {\n const { id } = this.activatedRoute.snapshot.parent.data.contextData;\n this.application = await this.ecosystemService.getApplication(id);\n if (this.application.type === ApplicationType.MICROSERVICE) {\n this.formGroup.get('name').disable();\n }\n this.formGroup.patchValue({ ...this.application });\n this.canOpenInBrowser = this.ecosystemService.canOpenAppInBrowser(this.application);\n this.disableOpenInBrowser =\n this.canOpenInBrowser &&\n (await this.ecosystemService.isOverwrittenByCustomApp(this.application));\n this.canDelete = await this.ecosystemService.canDeleteApp(this.application);\n this.isOwner = this.ecosystemService.isOwner(this.application);\n this.isActivityLogSupported = this.isActivityLogSupportedByApp(this.application);\n this.isCustomMicroservice = this.ecosystemService.isCustomMicroservice(this.application);\n this.isSubscribed = await this.ecosystemService.checkIfSubscribed(this.application);\n this.onApplication(this.application);\n }\n\n async save(app: IApplication) {\n app.id = this.application.id;\n try {\n await this.ecosystemService.updateApp(app);\n this.alertService.success(gettext('Application saved.'));\n this.formGroup.reset();\n this.loadApplication();\n } catch (ex) {\n // do nothing\n }\n }\n\n onNewArchive() {\n this.loadBinaryMo();\n }\n\n async updateToLatestVersion() {\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.APPLICATION_PROPERTIES,\n {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.APPLICATION_PROPERTIES,\n action: PRODUCT_EXPERIENCE.APPLICATIONS.ACTIONS.UPDATE_AVAILABLE,\n url: this.CURRENT_LOCATION\n }\n );\n try {\n const translatedBody = this.translate.instant(\n gettext(\n `You're using the version {{ currentVersion }} of the {{ packageName }} package, the latest version available is {{ latestVersion }}, do you want to update? You can always revert to a previous version in the Activity log panel.`\n ),\n {\n currentVersion: this.application.manifest?.version,\n latestVersion: this.blueprintApplicationVersion,\n packageName: this.sourcePackage.name\n }\n );\n await this.modalService.confirm(gettext('Update application'), translatedBody, 'warning', {\n ok: gettext('Update'),\n cancel: gettext('Cancel')\n });\n } catch {\n // modal canceled\n return;\n }\n\n this.isUpdateOngoing = true;\n\n try {\n // TODO: use the correct binaryMoId (activeVersionId of the version not application)\n const binaryMoId = this.sourcePackage.activeVersionId;\n await this.uploadNewBinary(binaryMoId);\n } catch (e) {\n if (e.res?.status === 404) {\n await this.fallBackToCloneUpdate();\n } else {\n this.alertService.danger(gettext('Failed to update application.'));\n }\n } finally {\n this.isUpdateOngoing = false;\n }\n }\n\n private async uploadNewBinary(binaryMoId: string) {\n const { data: binaryMo } = await this.inventoryService.detail(binaryMoId);\n const binary = await this.inventoryService.binary.download(binaryMo.id);\n const blob = await binary.blob();\n const file = new File([blob], binaryMo.name);\n const app = await this.ecosystemService.uploadArchiveToApp(file, this.application, false);\n await this.ecosystemService.updateAppManifest(app, this.sourcePackage);\n await this.refresh();\n this.alertService.success(gettext('Application updated.'));\n }\n\n private async fallBackToCloneUpdate() {\n try {\n const { data: clonedApp } = await this.applicationService.clone(this.sourcePackage);\n await this.uploadNewBinary(clonedApp.activeVersionId);\n this.ecosystemService.deleteApp(clonedApp, true);\n } catch (e) {\n this.alertService.addServerFailure(e);\n }\n }\n\n private async confirmSubscriptionChange(initialState: {\n application: IApplication;\n isSubscribed: boolean;\n }) {\n await (\n this.bsModalService.show(SubscriptionModalComponent, {\n class: 'modal-sm',\n initialState,\n ignoreBackdropClick: true\n }).content as SubscriptionModalComponent\n ).result;\n }\n\n private async resolveSourcePackageDetails() {\n try {\n this.sourcePackage = (await this.getPackage(this.application.manifest?.source)).data;\n if (this.sourcePackage) {\n this.packageProperties.push({\n label: gettext('Source package'),\n value: this.sourcePackage.name,\n type: 'link',\n action: () =>\n this.router.navigateByUrl(\n ViewContext.Application.replace(':id', this.sourcePackage.id.toString())\n )\n });\n }\n } catch {\n this.alertService.warning(gettext('Unable to resolve source package.'));\n return;\n }\n\n await this.extractVersionInformation(this.application);\n }\n\n private initForm(): void {\n this.formGroup = this.formBuilder.group({\n id: [{ value: '' }],\n name: [Validators.required, Validators.maxLength(120)],\n key: [Validators.required, Validators.maxLength(120)],\n contextPath: [Validators.required, Validators.maxLength(120)],\n description: ['', Validators.maxLength(200)],\n resourcesUrl: [Validators.required],\n username: [Validators.required],\n password: [Validators.required],\n externalUrl: [Validators.required]\n });\n if (!this.hasAdminPermissions) {\n this.formGroup.disable();\n }\n }\n\n private isActivityLogSupportedByApp(app: IApplication): boolean {\n return (\n this.ecosystemService.isOwner(app) &&\n app.type !== ApplicationType.MICROSERVICE &&\n app.type !== ApplicationType.EXTERNAL\n );\n }\n\n private setBreadcrumbConfig() {\n this.breadcrumbConfig = {\n icon: this.isMicroservice ? 'microchip' : this.isFeature ? 'tab' : 'c8y-modules',\n label: this.isMicroservice\n ? gettext('Microservices')\n : this.isFeature\n ? gettext('Features')\n : gettext('All applications'),\n path: this.isMicroservice\n ? 'microservices'\n : this.isFeature\n ? 'ecosystem/features'\n : 'ecosystem/applications'\n };\n }\n\n private async loadBinaryMo() {\n this.binaryMo = (await this.inventoryService.detail(this.application.activeVersionId)).data;\n }\n\n private async extractVersionInformation(application: IApplication) {\n if (!application.manifest.isPackage && !application.manifest.source) {\n return;\n }\n\n const blueprintApplicationId = application.manifest?.source;\n const currentVersion = application.manifest?.version;\n\n try {\n const { data: blueprintApplicationVersions } = await this.applicationService.listVersions(\n blueprintApplicationId\n );\n const blueprintLatestVersion = this.ecosystemService.getApplicationVersionObjectByTag(\n blueprintApplicationVersions,\n 'latest'\n );\n this.blueprintApplicationVersion = blueprintLatestVersion.version;\n this.isUpdateAvailable = this.ecosystemService.shouldUpgradePackage(\n currentVersion,\n blueprintLatestVersion\n );\n } catch {\n this.alertService.warning(gettext('Unable to resolve versions of source package.'));\n }\n }\n}\n","<c8y-title>{{ application | humanizeAppName | async }}</c8y-title>\n\n<c8y-breadcrumb *ngIf=\"!isMicroservice\">\n <c8y-breadcrumb-item [icon]=\"'c8y-atom'\" [label]=\"'Ecosystem' | translate\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-modules'\"\n [label]=\"'Applications' | translate\"\n [path]=\"'ecosystem/applications'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"breadcrumbConfig?.icon\"\n [label]=\"breadcrumbConfig?.label\"\n [path]=\"breadcrumbConfig?.path\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"application | humanizeAppName | async\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Properties' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-breadcrumb *ngIf=\"isMicroservice\">\n <c8y-breadcrumb-item [icon]=\"'c8y-atom'\" [label]=\"'Ecosystem' | translate\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"breadcrumbConfig?.icon\"\n [label]=\"breadcrumbConfig?.label\"\n [path]=\"breadcrumbConfig?.path\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"application | humanizeAppName | async\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Properties' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<div class=\"row\">\n <div [ngClass]=\"{ 'col-md-8': !isActivityLogSupported, 'col-md-12': isActivityLogSupported }\">\n <div\n *ngIf=\"application\"\n [ngClass]=\"{ 'd-grid grid__col--7-5--md': isActivityLogSupported }\"\n class=\"card content-fullpage\"\n >\n <form\n (ngSubmit)=\"formGroup.valid && save(formGroup.value)\"\n [formGroup]=\"formGroup\"\n class=\"d-flex d-col content-fullpage\"\n novalidate\n >\n <div *ngIf=\"!isLoading\" class=\"d-contents\">\n <div class=\"card-block separator-bottom large-padding flex-no-shrink\">\n <div class=\"d-flex-md a-i-start text-center text-left-md\">\n <c8y-app-icon\n *ngIf=\"!isPackage && !isFeature && !isMicroservice && !isExternal\"\n [app]=\"application\"\n [contextPath]=\"application.contextPath\"\n [name]=\"application.name\"\n class=\"icon-48\"\n ></c8y-app-icon>\n <i *ngIf=\"isPackage\" c8yIcon=\"big-parcel\" class=\"icon-48\"></i>\n <i *ngIf=\"isFeature\" c8yIcon=\"tab\" class=\"icon-48\"></i>\n <i *ngIf=\"isMicroservice\" c8yIcon=\"microchip\" class=\"icon-48\"></i>\n <i *ngIf=\"isExternal\" c8yIcon=\"globe1\" class=\"icon-48\"></i>\n\n <div class=\"p-t-md-16 p-l-md-16 p-r-md-32 flex-grow\">\n <h4 class=\"text-medium m-b-8\">{{ application | humanizeAppName | async }}</h4>\n <p *ngIf=\"!isOwner\">\n <em class=\"text-muted\">\n {{ application.description || ('No description available.' | translate) }}\n </em>\n </p>\n <div *ngIf=\"isOwner\" class=\"form-group m-b-0\">\n <label\n [ngClass]=\"{ updated: formGroup?.controls?.description?.dirty }\"\n class=\"editable\"\n >\n <textarea\n c8y-textarea-autoresize\n class=\"form-control no-resize\"\n formControlName=\"description\"\n name=\"description\"\n placeholder=\"{{ 'No description available.' | translate }}\"\n ></textarea>\n </label>\n </div>\n </div>\n <div class=\"text-right-md m-t-4\">\n <span [ngClass]=\"appState?.class\" class=\"label\">{{\n appState?.label | translate\n }}</span>\n <div class=\"fit-w m-t-2\" *ngIf=\"isPackage || isMicroservice\">\n <label class=\"text-label-small\" translate>Version:</label>\n <small class=\"p-l-4 text-bold\">{{ application.manifest?.version }}</small>\n </div>\n <div class=\"fit-w m-t-2\">\n <label class=\"text-label-small\" translate>Creation time:</label>\n <small class=\"p-l-4 text-bold\">{{ binaryMo?.creationTime | c8yDate }}</small>\n </div>\n <div class=\"m-t-8\">\n <button\n type=\"button\"\n *ngIf=\"isUpdateAvailable\"\n (click)=\"updateToLatestVersion()\"\n [ngClass]=\"{ 'btn-pending': isUpdateOngoing }\"\n class=\"btn btn-warning btn-xs\"\n >\n {{ 'Update available' | translate }}\n </button>\n <button\n (click)=\"openApp(application)\"\n [disabled]=\"disableOpenInBrowser\"\n *ngIf=\"canOpenInBrowser\"\n class=\"btn btn-default btn-xs\"\n title=\"{{ 'Open' | translate }}\"\n type=\"button\"\n >\n <i [c8yIcon]=\"'external-link'\"></i>\n {{ 'Open' | translate }}\n </button>\n <div *ngIf=\"canOpenInBrowser && disableOpenInBrowser\">\n <small class=\"text-muted\" translate\n >The application is overwritten by a custom application sharing the same\n path</small\n >\n </div>\n <span *ngIf=\"isCustomMicroservice\">\n <button\n (click)=\"subscribe()\"\n *ngIf=\"!isSubscribed\"\n class=\"btn btn-default btn-xs\"\n title=\"{{ 'Subscribe' | translate }}\"\n >\n <i [c8yIcon]=\"'check-circle-o'\"></i>\n {{ 'Subscribe' | translate }}\n </button>\n <button\n (click)=\"unsubscribe()\"\n *ngIf=\"isSubscribed\"\n class=\"btn btn-default btn-xs\"\n title=\"{{ 'Unsubscribe' | translate }}\"\n >\n <i [c8yIcon]=\"'minus-circle'\"></i>\n {{ 'Unsubscribe' | translate }}\n </button>\n </span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"inner-scroll bg-white flex-grow\">\n <div class=\"card-block large-padding\">\n <div *ngIf=\"isPackage\" class=\"row p-16\">\n <c8y-properties-list\n [data]=\"application.manifest\"\n [properties]=\"packageProperties\"\n [title]=\"'Package details' | translate\"\n [emptyLabel]=\"'---'\"\n icon=\"info\"\n ></c8y-properties-list>\n </div>\n <div *ngIf=\"sourcePackage\" class=\"row p-16\">\n <c8y-properties-list\n [data]=\"sourcePackage.manifest\"\n [properties]=\"packageProperties\"\n [title]=\"'Source package information' | translate\"\n [emptyLabel]=\"'---'\"\n icon=\"info\"\n ></c8y-properties-list>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-5\">\n <c8y-form-group>\n <label>ID</label>\n <input\n [readonly]=\"true\"\n autocomplete=\"off\"\n class=\"form-control\"\n formControlName=\"id\"\n name=\"id\"\n type=\"text\"\n />\n </c8y-form-group>\n </div>\n <div class=\"col-sm-7\">\n <c8y-form-group>\n <label>{{ 'Name' | translate }}</label>\n <input\n [readonly]=\"!isOwner\"\n class=\"form-control\"\n formControlName=\"name\"\n name=\"name\"\n placeholder=\"{{ 'e.g. My application' | translate }}\"\n required\n type=\"text\"\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-sm-5\">\n <c8y-form-group>\n <label>{{ 'Application key' | translate }}</label>\n <input\n [readonly]=\"application.id || !isOwner\"\n class=\"form-control\"\n name=\"key\"\n formControlName=\"key\"\n placeholder=\"{{ 'e.g. my-application-key' | translate }}\"\n required\n type=\"text\"\n />\n </c8y-form-group>\n </div>\n\n <div class=\"col-sm-7\">\n <c8y-form-group>\n <label>{{ 'Type' | translate }}</label>\n <div>\n <div *ngIf=\"application.id\">\n <p class=\"form-control-static\">\n <i [c8yIcon]=\"iconMap[application.type]\"></i>\n <span>\n {{ application.type | translate }}\n </span>\n </p>\n </div>\n </div>\n </c8y-form-group>\n </div>\n </div>\n\n <div [ngSwitch]=\"application.type\">\n <div *ngSwitchCase=\"'HOSTED'\">\n <c8y-form-group>\n <label>{{ 'Path' | translate }}</label>\n <div class=\"input-group\">\n <span class=\"input-group-addon\">/apps/</span>\n <input\n [readOnly]=\"application.id || !isOwner\"\n class=\"form-control\"\n name=\"contextPath\"\n placeholder=\"{{ 'e.g. my-application`used in URL`' | translate }}\"\n required\n type=\"text\"\n formControlName=\"contextPath\"\n />\n </div>\n </c8y-form-group>\n </div>\n\n <div *ngSwitchCase=\"'MICROSERVICE'\">\n <c8y-form-group>\n <label>{{ 'Path' | translate }}</label>\n <div class=\"input-group\">\n <span class=\"input-group-addon\">/service/</span>\n <input\n [readOnly]=\"application.id || !isOwner\"\n class=\"form-control\"\n name=\"contextPath\"\n placeholder=\"{{ 'e.g. my-microservice`used in URL`' | translate }}\"\n required\n type=\"text\"\n formControlName=\"contextPath\"\n />\n </div>\n </c8y-form-group>\n <div class=\"row\">\n <div *ngIf=\"application.manifest.version\" class=\"col-sm-4 m-b-16 flex-auto\">\n <label>{{ 'Version' | translate }}</label>\n <p class=\"form-control-static\">\n {{ application.manifest.version }}\n </p>\n </div>\n <div *ngIf=\"application.manifest.isolation\" class=\"col-sm-4 m-b-16 flex-auto\">\n <label>{{ 'Isolation' | translate }}</label>\n <p class=\"form-control-static\">\n <span *ngIf=\"singleTenant\">\n <i [c8yIcon]=\"'c8y-enterprise'\" class=\"c8y-icon-duocolor h4\"></i>\n {{ 'Single tenant' | translate }}\n </span>\n <span *ngIf=\"!singleTenant\">\n <i [c8yIcon]=\"'c8y-sub-tenants'\" class=\"c8y-icon-duocolor h4\"></i>\n {{ 'Multi tenant' | translate }}\n </span>\n </p>\n </div>\n <div *ngIf=\"application.manifest.isolation\" class=\"col-sm-4 m-b-16 flex-auto\">\n <label>{{ 'Billing mode' | translate }}</label>\n <p class=\"form-control-static\">\n <span\n *ngIf=\"subscription\"\n [tooltip]=\"'Resources usage assigned to: Owner' | translate\"\n >\n {{ 'Subscription' | translate }}\n </span>\n <span\n *ngIf=\"!subscription && singleTenant\"\n [tooltip]=\"'Resources usage assigned to: Subscriber | translate'\"\n >\n {{ 'Resources' | translate }}\n </span>\n <span\n *ngIf=\"!subscription && !singleTenant\"\n [tooltip]=\"'Resources usage assigned to: Owner' | translate\"\n >\n {{ 'Resources' | translate }}\n </span>\n </p>\n </div>\n </div>\n\n <div *ngIf=\"application.manifest.provider\" class=\"legend form-block m-t-40\">\n {{ 'Provider' | translate }}\n </div>\n <div class=\"list-inline\" *ngIf=\"application.manifest.provider\">\n <div *ngIf=\"application.manifest.provider.name\">\n <div class=\"col-sm-4 m-b-16\">\n <label>{{ 'Name' | translate }}</label>\n <p class=\"form-control-static\">\n {{ application.manifest.provider.name }}\n </p>\n </div>\n </div>\n <div *ngIf=\"application.manifest.provider.domain\">\n <div class=\"col-sm-4 m-b-16\">\n <label>{{ 'Domain' | translate }}</label>\n <p class=\"form-control-static\">\n {{ application.manifest.provider.domain }}\n </p>\n </div>\n </div>\n <div *ngIf=\"application.manifest.provider.support\">\n <div class=\"col-sm-4 m-b-16\">\n <label>{{ 'Support' | translate }}</label>\n <p class=\"form-control-static\">\n {{ application.manifest.provider.support }}\n </p>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'REPOSITORY'\">\n <c8y-form-group>\n <label>{{ 'Path' | translate }}</label>\n <div class=\"input-group\">\n <span class=\"input-group-addon\"> /apps/ </span>\n <input\n [readOnly]=\"application.id || !isOwner\"\n class=\"form-control\"\n formControlName=\"contextPath\"\n name=\"contextPath\"\n placeholder=\"{{ 'e.g. my-application`used in URL`' | translate }}\"\n required\n type=\"text\"\n />\n </div>\n </c8y-form-group>\n\n <c8y-form-group>\n <label>{{ 'Server URL' | translate }}</label>\n <input\n class=\"form-control\"\n name=\"resourcesUrl\"\n formControlName=\"resourcesUrl\"\n placeholder=\"{{ 'e.g. my-application`used in URL`' | translate }}\"\n required\n type=\"url\"\n />\n </c8y-form-group>\n\n <div class=\"form-group\">\n <label> {{ 'Username' | translate }}</label>\n <input\n class=\"form-control\"\n formControlName=\"username\"\n name=\"username\"\n type=\"text\"\n />\n </div>\n\n <div class=\"form-group\">\n <label>{{ 'Password' | translate }}</label>\n <input\n class=\"form-control\"\n formControlName=\"password\"\n name=\"password\"\n type=\"text\"\n />\n </div>\n </div>\n\n <div *ngSwitchCase=\"'EXTERNAL'\">\n <c8y-form-group>\n <label>{{ 'External URL' | translate }}</label>\n <input\n [pattern]=\"'^(?!javascript:).+'\"\n [readOnly]=\"!isOwner\"\n class=\"form-control\"\n formControlName=\"externalUrl\"\n name=\"externalUrl\"\n placeholder=\"{{ 'e.g.' | translate }} http://www.example.com/\"\n required\n type=\"url\"\n />\n <c8y-messages>\n <c8y-message\n [name]=\"'pattern'\"\n [text]=\"'Valid URL required.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n </div>\n </div>\n </div>\n <ng-container *ngIf=\"isCustomMicroservice\">\n <div *ngIf=\"!isLoading\" class=\"d-contents\">\n <c8y-upload-archive\n [(application)]=\"application\"\n (refresh)=\"onNewArchive()\"\n ></c8y-upload-archive>\n </div>\n </ng-container>\n <div\n *ngIf=\"application && !!isOwner && hasAdminPermissions\"\n class=\"card-footer separator\"\n >\n <button\n (click)=\"cancel()\"\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n (click)=\"delete()\"\n *ngIf=\"canDelete\"\n class=\"btn btn-danger\"\n title=\"{{ 'Delete' | translate }}\"\n type=\"button\"\n >\n {{ 'Delete' | translate }}\n </button>\n <button\n [disabled]=\"!application.type || formGroup.invalid || formGroup.pristine\"\n class=\"btn btn-primary btn-form\"\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </form>\n\n <div *ngIf=\"isActivityLogSupported\" class=\"content-fullpage d-flex d-col bg-gray-white\">\n <div class=\"card-header separator\">\n <h4 class=\"card-title\" translate>Activity log</h4>\n <div class=\"m-l-auto\">\n <button\n (click)=\"load()\"\n class=\"btn btn-link\"\n title=\"{{ 'Reload' | translate }}\"\n type=\"button\"\n >\n <i [ngClass]=\"{ 'icon-spin': isLoading }\" c8yIcon=\"refresh\"></i>\n {{ 'Reload' | translate }}\n </button>\n </div>\n </div>\n <div *ngIf=\"isLoading\" class=\"p-16 text-center\">\n <c8y-loading></c8y-loading>\n </div>\n <c8y-activity-log\n *ngIf=\"!isLoading\"\n [hasAdminPermissions]=\"hasAdminPermissions\"\n [application]=\"application\"\n class=\"d-contents\"\n ></c8y-activity-log>\n </div>\n </div>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate } from '@angular/router';\nimport { EcosystemService } from '../ecosystem.service';\n\n@Injectable()\nexport class ApplicationPropertiesGuard implements CanActivate {\n constructor(private ecosystemService: EcosystemService) {}\n\n canActivate(route: ActivatedRouteSnapshot) {\n const app = route.data.contextData || route.parent.data.contextData;\n if (!app) {\n return false;\n }\n return !this.ecosystemService.isPackage(app);\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { ApplicationService, ApplicationType, IApplication, IManifest } from '@c8y/client';\nimport { AlertService, WizardComponent } from '@c8y/ngx-components';\n\n@Component({\n selector: 'c8y-add-external-application',\n templateUrl: './add-external-application.component.html'\n})\nexport class AddExternalApplicationComponent implements OnInit {\n formGroup: FormGroup;\n createdApp: IApplication;\n\n constructor(\n private applicationService: ApplicationService,\n private formBuilder: FormBuilder,\n private alertService: AlertService,\n private wizardComponent: WizardComponent\n ) {}\n\n ngOnInit() {\n this.initForm();\n }\n\n back() {\n this.wizardComponent.reset();\n }\n\n cancel() {\n this.wizardComponent.close();\n }\n\n done() {\n this.wizardComponent.close();\n }\n\n async save(app: IApplication) {\n const appToSave = {\n manifest: {} as IManifest,\n externalUrl: app.externalUrl,\n type: ApplicationType.EXTERNAL,\n name: app.name,\n key: app.key\n };\n try {\n this.createdApp = await this.applicationService.create(appToSave);\n } catch (ex) {\n this.alertService.addServerFailure(ex);\n }\n }\n\n private initForm(): void {\n this.formGroup = this.formBuilder.group({\n name: ['', [Validators.required, Validators.maxLength(120)]],\n key: ['', [Validators.required, Validators.maxLength(120)]],\n externalUrl: ['', Validators.required]\n });\n }\n}\n","<form *ngIf=\"!createdApp; else appCreated\" [formGroup]=\"formGroup\" novalidate>\n <c8y-wizard-header>\n <h1 [c8yIcon]=\"'cloud-link'\"></h1>\n <h4 translate>Add external application</h4>\n </c8y-wizard-header>\n\n <c8y-wizard-body>\n <p class=\"p-16 text-medium text-center bg-white separator-bottom sticky-top\">\n {{ 'Provide external application details' | translate }}\n </p>\n <div class=\"modal-body p-t-8\">\n <c8y-form-group>\n <label style=\"text-align: left\">{{ 'Name' | translate }}</label>\n <input\n class=\"form-control\"\n formControlName=\"name\"\n name=\"name\"\n placeholder=\"{{ 'e.g. My application' | translate }}\"\n required\n type=\"text\"\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label style=\"text-align: left\">{{ 'Application key' | translate }}</label>\n <input\n class=\"form-control\"\n formControlName=\"key\"\n name=\"key\"\n placeholder=\"{{ 'e.g. my-external-application-key' | translate }}\"\n required\n type=\"text\"\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label style=\"text-align: left\">{{ 'External URL' | translate }}</label>\n <input\n [pattern]=\"'^(?!javascript:).+'\"\n class=\"form-control\"\n formControlName=\"externalUrl\"\n name=\"externalUrl\"\n placeholder=\"{{ 'e.g.' | translate }} https://www.example.com\"\n required\n type=\"url\"\n />\n </c8y-form-group>\n </div>\n </c8y-wizard-body>\n\n <c8y-wizard-footer>\n <button\n (click)=\"back()\"\n class=\"btn btn-default\"\n title=\"{{ 'Back' | translate }}\"\n translate\n type=\"button\"\n >\n Back\n </button>\n <button (click)=\"cancel()\" class=\"btn btn-default\" title=\"{{ 'Cancel' | translate }}\" translate>\n Cancel\n </button>\n <button\n (click)=\"save(formGroup.value)\"\n [disabled]=\"formGroup.invalid || formGroup.pristine\"\n class=\"btn btn-primary btn-form\"\n title=\"{{ 'Add application' | translate }}\"\n type=\"button\"\n >\n {{ 'Add application' | translate }}\n </button>\n </c8y-wizard-footer>\n</form>\n<ng-template #appCreated>\n <c8y-wizard-body>\n <div class=\"d-flex d-col j-c-center a-i-center\" style=\"min-height: 324px\">\n <c8y-operation-result\n text=\"{{ 'Application created' | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"success\"\n class=\"lead\"\n ></c8y-operation-result>\n </div>\n </c8y-wizard-body>\n <c8y-wizard-footer>\n <button (click)=\"done()\" class=\"btn btn-default\" title=\"{{ 'Done' | translate }}\" translate>\n Done\n </button>\n <a\n (click)=\"$event.stopPropagation()\"\n [href]=\"formGroup.value.externalUrl\"\n target=\"_blank\"\n class=\"btn btn-primary\"\n title=\"{{ 'Open' | translate }}\"\n >\n <i c8yIcon=\"external-link\" class=\"m-r-4\"></i>\n {{ 'Open' | translate }}\n </a>\n </c8y-wizard-footer>\n</ng-template>\n","import { Component, Input, ViewChild } from '@angular/core';\nimport { ApplicationService, IApplication } from '@c8y/client';\nimport { AlertService, DropAreaComponent, WizardComponent } from '@c8y/ngx-components';\nimport { BehaviorSubject } from 'rxjs';\nimport { ERROR_MESSAGES } from './../ecosystem.constants';\nimport { EcosystemService } from './../ecosystem.service';\nimport { TranslateService } from '@ngx-translate/core';\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: string;\n @Input() successText: string;\n @Input() createApplicationHandler: any;\n @Input() uploadApplicationHandler: any;\n @Input() canGoBack: boolean = false;\n\n @ViewChild(DropAreaComponent) dropAreaComponent;\n\n isLoading: boolean;\n isAppCreated: boolean;\n createdApp: IApplication;\n canOpenInBrowser: boolean = false;\n errorMessage: string;\n private uploadCanceled: boolean = 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 ) {}\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 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 <h1 [c8yIcon]=\"headerIcon\"></h1>\n <h4>{{ 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 *ngIf=\"!isAppCreated; else appCreated\"\n [hasError]=\"errorMessage\"\n class=\"m-t-16 m-l-auto m-r-auto\"\n style=\"max-width: 285px\"\n >\n <c8y-drop-area\n (dropped)=\"onFileDroppedEvent($event)\"\n [accept]=\"'.zip'\"\n [loading]=\"isLoading\"\n [maxAllowedFiles]=\"1\"\n [progress]=\"progress | async\"\n class=\"drop-area\"\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 <ng-template #appCreated>\n <div class=\"d-flex a-i-center j-c-center\" style=\"min-height: 285px\">\n <c8y-operation-result\n text=\"{{ successText | translate }}\"\n [vertical]=\"true\"\n [size]=\"84\"\n class=\"lead\"\n type=\"success\"\n ></c8y-operation-result>\n </div>\n </ng-template>\n</c8y-wizard-body>\n\n<c8y-wizard-footer>\n <button\n (click)=\"back()\"\n *ngIf=\"!isAppCreated && canGoBack\"\n class=\"btn btn-default\"\n title=\"{{ 'Back' | translate }}\"\n translate\n type=\"button\"\n >\n Back\n </button>\n <button\n (click)=\"cancel()\"\n *ngIf=\"!isAppCreated\"\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n translate\n type=\"button\"\n >\n Cancel\n </button>\n <button\n (click)=\"done()\"\n *ngIf=\"isAppCreated\"\n class=\"btn btn-default\"\n title=\"{{ 'Done' | translate }}\"\n translate\n type=\"button\"\n >\n Done\n </button>\n <a\n (click)=\"$event.stopPropagation()\"\n *ngIf=\"isAppCreated && canOpenInBrowser\"\n [href]=\"getHref(createdApp)\"\n target=\"_blank\"\n class=\"btn btn-primary\"\n title=\"{{ 'Open' | translate }}\"\n >\n <i c8yIcon=\"external-link\" class=\"m-r-4\"></i>\n {{ 'Open' | translate }}\n </a>\n</c8y-wizard-footer>\n","import { Component } from '@angular/core';\nimport { ApplicationType, IApplication } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components';\nimport { EcosystemService } from '../../ecosystem.service';\n\n@Component({\n selector: 'c8y-add-web-application',\n template: `<c8y-add-application\n [headerText]=\"headerText\"\n [headerIcon]=\"'upload'\"\n [successText]=\"successText\"\n [createApplicationHandler]=\"createApplicationHandler\"\n [uploadApplicationHandler]=\"uploadApplicationHandler\"\n [canGoBack]=\"true\"\n ></c8y-add-application>`\n})\nexport class AddWebApplicationComponent {\n headerText: string = gettext('Upload web application');\n successText: string = gettext('Application created');\n\n constructor(private ecosystemService: EcosystemService) {}\n\n createApplicationHandler = (f: File) => this.createApplication(f);\n uploadApplicationHandler = (f: File, app: IApplication) => this.uploadApplication(f, app);\n\n async createApplication(file: File): Promise<IApplication> {\n await this.ecosystemService.isValidAppType(file, ApplicationType.HOSTED);\n return this.ecosystemService.createAppForArchive(file);\n }\n\n async uploadApplication(file: File, app: IApplication): Promise<IApplication> {\n return this.ecosystemService.uploadArchiveToApp(file, app);\n }\n}\n","import { Component, 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 Wizard,\n WizardComponent,\n WizardConfig,\n WizardModalService\n} from '@c8y/ngx-components';\nimport { get } from 'lodash';\nimport { ModalOptions } from 'ngx-bootstrap/modal';\nimport { BehaviorSubject } from 'rxjs';\nimport { DuplicateApplicationComponent } from '../applications/duplicate-application/duplicate-application.component';\nimport { ApplicationState, PRODUCT_EXPERIENCE } from './../ecosystem.model';\nimport { EcosystemService } from './../ecosystem.service';\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: boolean = true;\n @Output() onAppDeleted: EventEmitter<void> = new EventEmitter();\n @Output() onAppCloned: EventEmitter<void> = new EventEmitter();\n appState: ApplicationState;\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 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\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 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.disableOpenInBrowser =\n this.canOpenInBrowser && (await this.ecosystemService.isOverwrittenByCustomApp(this.app));\n this.canDelete = await this.ecosystemService.canDeleteApp(this.app);\n this.isOwnedByManagementTenant = await this.isOwnedByManagement();\n this.isPackage = this.ecosystemService.isPackage(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 (\n this.app.manifest?.version &&\n (!!this.app.manifest?.isPackage || this.isMicroservice || !!this.app.manifest?.source)\n );\n }\n\n detail() {\n this.isMicroservice\n ? this.router.navigateByUrl(`/microservices/${this.app.id}`)\n : this.router.navigateByUrl(`/ecosystem/application/${this.app.id}`);\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.APPLICATION_CARD, {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.APPLICATION_CARD,\n action: PRODUCT_EXPERIENCE.APPLICATIONS.ACTIONS.EDIT,\n url: this.CURRENT_LOCATION\n });\n }\n\n openApp() {\n window.open(this.applicationService.getHref(this.app));\n }\n\n async delete() {\n try {\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.APPLICATION_CARD, {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.APPLICATION_CARD,\n action: PRODUCT_EXPERIENCE.APPLICATIONS.ACTIONS.DELETE,\n url: this.CURRENT_LOCATION\n });\n await this.ecosystemService.deleteApp(this.app);\n this.onAppDeleted.emit();\n } catch (ex) {\n if (ex) {\n this.alertService.addServerFailure(ex);\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.APPLICATION_CARD,\n {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.APPLICATION_CARD,\n result: PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.SERVER_FAILURE,\n url: this.CURRENT_LOCATION\n }\n );\n }\n }\n }\n\n async clone() {\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.APPLICATION_CARD, {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.APPLICATION_CARD,\n action: PRODUCT_EXPERIENCE.APPLICATIONS.ACTIONS.CLONE,\n url: this.CURRENT_LOCATION\n });\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\n private isOwnedByManagement(): boolean {\n const appOwner = get(this.app, 'owner.tenant.id');\n return appOwner === 'management';\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 class=\"card pointer card--d-col\">\n <div (click)=\"detail()\" 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 *ngIf=\"isPackage\" c8yIcon=\"big-parcel\"></i>\n <i *ngIf=\"isFeature\" c8yIcon=\"tab\"></i>\n <i *ngIf=\"isMicroservice\" c8yIcon=\"microchip\"></i>\n <i *ngIf=\"isExternal\" c8yIcon=\"globe1\"></i>\n </div>\n <p class=\"e2e-appCardName text-medium\" title=\"{{ app | humanizeAppName | async }}\">\n {{ app | humanizeAppName | async }}\n </p>\n <ng-container *ngIf=\"isShowVersion\">\n <small class=\"text-muted\">\n <em>{{ app.manifest.version }}</em>\n <i\n *ngIf=\"shouldUpgradePackage && isUnpacked\"\n [tooltip]=\"'Update available' | translate\"\n c8yIcon=\"exclamation-triangle\"\n class=\"text-warning m-l-4\"\n ></i>\n </small>\n </ng-container>\n </div>\n <div (click)=\"detail()\" 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 *ngIf=\"app.description || app.manifest?.description\" class=\"text-center-grid\">\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\n *ngIf=\"!app.label\"\n class=\"card-block no-min-height p-t-0 p-b-0 card-column-20 text-center-grid\"\n >\n <span [ngClass]=\"appState.class\" class=\"label\">\n {{ isUnpacked ? ('Unpacked' | translate) : (appState.label | translate) }}\n </span>\n </div>\n <div\n *ngIf=\"app.label\"\n class=\"card-block no-min-height p-t-0 p-b-0 card-column-20 text-center-grid\"\n >\n <span [ngClass]=\"appState.class\" class=\"label text-warning\">\n {{ isOwnedByManagementTenant ? app.label : ('COMMUNITY' | translate) }}\n </span>\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 (click)=\"openApp(); $event.stopPropagation()\"\n *ngIf=\"canOpenInBrowser\"\n [disabled]=\"disableOpenInBrowser\"\n class=\"btn btn-xs btn-default\"\n [title]=\"openButtonTitle | translate\"\n >\n <i c8yIcon=\"external-link\" class=\"m-r-4\"></i>\n {{ 'Open' | translate }}\n </button>\n <div class=\"p-b-32 card-hidden-list\"></div>\n </div>\n </div>\n\n <div *ngIf=\"canEdit || canOpenInBrowser || canDelete\" class=\"card-actions m-t-0\">\n <div class=\"dropdown\" dropdown>\n <button\n class=\"dropdown-toggle c8y-dropdown\"\n dropdownToggle\n title=\"{{ 'Settings' | translate }}\"\n >\n <i c8yIcon=\"ellipsis-v\"></i>\n </button>\n <ul *dropdownMenu class=\"dropdown-menu dropdown-menu-right\">\n <li *ngIf=\"canEdit\">\n <button (click)=\"detail()\" title=\"{{ 'Edit' | translate }}\">\n <i c8yIcon=\"pencil\" class=\"m-r-4\"></i>\n {{ 'Edit' | translate }}\n </button>\n </li>\n <ng-container *c8yIfAllowed=\"['ROLE_APPLICATION_MANAGEMENT_ADMIN']\">\n <li>\n <button\n (click)=\"delete()\"\n type=\"button\"\n [title]=\"canDelete ? ('Delete' | translate) : (CANNOT_DELETE_HINT | translate)\"\n [disabled]=\"!canDelete\"\n >\n <i c8yIcon=\"trash\" class=\"m-r-4\"></i>\n {{ 'Delete' | translate }}\n </button>\n </li>\n <li *ngIf=\"canClone\">\n <button (click)=\"clone()\" type=\"button\" [title]=\"'Clone application' | translate\">\n <i c8yIcon=\"copy\" class=\"m-r-4\"></i>\n {{ 'Clone application' | translate }}\n </button>\n </li>\n </ng-container>\n </ul>\n </div>\n </div>\n</div>\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { IApplication } from '@c8y/client';\nimport { WizardConfig, WizardModalService } from '@c8y/ngx-components';\nimport { ModalOptions } from 'ngx-bootstrap/modal';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { shareReplay, switchMap, takeUntil, tap } from 'rxjs/operators';\nimport { EcosystemService } from './../../ecosystem.service';\n\n@Component({\n selector: 'c8y-application-list',\n templateUrl: './application-list.component.html'\n})\nexport class ApplicationListComponent implements OnInit, OnDestroy {\n reloading: boolean = false;\n reload$: BehaviorSubject<void> = new BehaviorSubject(null);\n\n apps$: Observable<IApplication> = this.reload$.pipe(\n tap(() => (this.reloading = true)),\n switchMap(() => this.ecosystemService.getWebApplications()),\n tap(() => (this.reloading = false)),\n shareReplay()\n );\n\n listClass: string;\n private destroy$ = new Subject<void>();\n\n constructor(\n private ecosystemService: EcosystemService,\n private wizardModalService: WizardModalService\n ) {}\n\n ngOnInit() {\n this.loadApplications();\n }\n\n loadApplications() {\n this.reload$.next();\n }\n\n addApplication() {\n const wizardConfig: WizardConfig = {\n headerText: 'Add Application',\n headerIcon: 'c8y-atom'\n };\n\n const initialState: any = {\n wizardConfig,\n id: 'uploadApplication'\n };\n\n const modalOptions: ModalOptions = { initialState };\n\n const modalRef = this.wizardModalService.show(modalOptions);\n modalRef.content.onClose.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.loadApplications();\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","<c8y-title>{{ 'All applications' | translate }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item [icon]=\"'c8y-atom'\" [label]=\"'Ecosystem' | translate\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-modules'\"\n [label]=\"'Applications' | translate\"\n [path]=\"'ecosystem/applications'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-modules'\"\n [label]=\"'All applications' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\" *c8yIfAllowed=\"['ROLE_APPLICATION_MANAGEMENT_ADMIN']\">\n <button\n (click)=\"addApplication()\"\n class=\"btn btn-link\"\n title=\"{{ 'Add application' | translate }}\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add application' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button (click)=\"loadApplications()\" class=\"btn btn-link\" title=\"{{ 'Reload' | translate }}\">\n <i [ngClass]=\"{ 'icon-spin': reloading }\" c8yIcon=\"refresh\"></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'left'\" itemClass=\"navbar-form hidden-xs\">\n <c8y-list-display-switch\n (onListClassChange)=\"listClass = $event\"\n [listLength]=\"(apps$ | async)?.length\"\n ></c8y-list-display-switch>\n</c8y-action-bar-item>\n\n<c8y-help src=\"/users-guide/administration/#applications\"></c8y-help>\n\n<div *ngIf=\"(apps$ | async)?.length === 0\" class=\"c8y-empty-state text-center\">\n <h1 class=\"c8y-icon c8y-icon-modules c8y-icon-duocolor\"></h1>\n <h3 translate>No applications to display.</h3>\n <p translate>Add your first application by clicking below.</p>\n <p>\n <button\n (click)=\"addApplication()\"\n class=\"btn btn-primary\"\n title=\"{{ 'Add application' | translate }}\"\n >\n {{ 'Add application' | translate }}\n </button>\n </p>\n</div>\n\n<div [ngClass]=\"listClass\" class=\"card-group\">\n <div class=\"page-sticky-header hidden-xs flex-row\" *ngIf=\"(apps$ | async)?.length > 0\">\n <div class=\"card-block card-column-40\">\n <div class=\"card-appicon p-l-32 p-r-16 m-r-0 m-l-4\"></div>\n {{ 'Application' | translate }}\n </div>\n <div class=\"card-block p-0 card-column-80\">\n <div class=\"card-block card-column-80\">{{ 'Description' | translate }}</div>\n <div class=\"card-block card-column-20\">{{ 'Type' | translate }}</div>\n <div class=\"card-block card-column-20\"></div>\n </div>\n </div>\n <div *ngFor=\"let app of apps$ | async\" class=\"col-xs-12 col-sm-4 col-md-3\">\n <c8y-application-card\n (onAppDeleted)=\"loadApplications()\"\n (onAppCloned)=\"loadApplications()\"\n [app]=\"app\"\n class=\"d-contents\"\n ></c8y-application-card>\n </div>\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { IApplication } from '@c8y/client';\nimport { ApplicationState } from '../../ecosystem.model';\nimport { EcosystemService } from '../../ecosystem.service';\n@Pipe({\n name: 'appState',\n pure: true\n})\nexport class AppStatePipe implements PipeTransform {\n constructor(private ecosystemService: EcosystemService) {}\n\n transform(\n app: IApplication,\n arg: keyof ApplicationState\n ): ApplicationState[keyof ApplicationState] {\n const appState = this.ecosystemService.getAppState(app);\n return appState[arg];\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { ModalService, gettext, Status } from '@c8y/ngx-components';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { IApplication } from '@c8y/client';\n\n@Component({\n selector: 'c8y-install-plugin-to-app',\n templateUrl: './install-plugin-to-app.component.html'\n})\nexport class InstallPluginToAppComponent {\n @Input() apps: IApplication[];\n appsToInstall: IApplication[] = [];\n result: Promise<IApplication[]> = new Promise((resolve, reject) => {\n this._install = resolve;\n this._cancel = reject;\n });\n private _install: (apps: IApplication[]) => void;\n private _cancel: (reason?: any) => void;\n\n constructor(private bsModalRef: BsModalRef, private modal: ModalService) {}\n\n cancel() {\n this.bsModalRef.hide();\n this._cancel();\n }\n\n updateSelected(selected: boolean, app: IApplication) {\n selected\n ? this.appsToInstall.push(app)\n : (this.appsToInstall = this.appsToInstall.filter(\n application => app.key !== application.key\n ));\n }\n\n async install() {\n try {\n await this.modal.confirm(\n gettext('Install plugin'),\n gettext('Do you want to proceed?'),\n Status.INFO,\n { ok: gettext('Continue') }\n );\n this._install(this.appsToInstall);\n this.bsModalRef.hide();\n } catch (er) {\n return;\n }\n }\n}\n","<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i [c8yIcon]=\"'c8y-modules'\"></i>\n <h4 translate>Custom applications</h4>\n </div>\n <div class=\"inner-scroll\">\n <div class=\"p-16 text-center separator-bottom sticky-top bg-component\">\n <p class=\"text-medium\" translate>\n Select the applications to which the plugin will be installed.\n </p>\n </div>\n <c8y-list-group *ngIf=\"apps.length; else emptyList\">\n <c8y-li *ngFor=\"let app of apps\">\n <c8y-li-checkbox (onSelect)=\"updateSelected($event, app)\"> </c8y-li-checkbox>\n <c8y-li-icon class=\"p-l-0 icon-32\">\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 </c8y-li-icon>\n <div class=\"d-flex\">\n <div class=\"p-r-8\">\n <p [innerText]=\"app | humanizeAppName | async\" class=\"text-medium\"></p>\n <p class=\"small text-muted\">{{ app.description }}</p>\n </div>\n <span [ngClass]=\"app | appState: 'class'\" class=\"label m-l-auto a-s-start\">{{\n app | appState: 'label' | translate\n }}</span>\n </div>\n </c8y-li>\n </c8y-list-group>\n </div>\n <div class=\"modal-footer\">\n <button\n (click)=\"cancel()\"\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n [disabled]=\"appsToInstall.length === 0\"\n title=\"{{ 'Install' | translate }}\"\n (click)=\"install()\"\n >\n {{ 'Install' | translate }}\n </button>\n </div>\n</div>\n<ng-template #emptyList>\n <c8y-ui-empty-state\n [icon]=\"'c8y-modules'\"\n [title]=\"'No custom applications available.' | translate\"\n [subtitle]=\"'No custom applications available.' | translate\"\n [horizontal]=\"true\"\n >\n </c8y-ui-empty-state>\n</ng-template>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ApplicationPlugin } from '@c8y/ngx-components';\n\n@Component({\n selector: 'c8y-plugin-list-item',\n templateUrl: './plugin-list-item.component.html'\n})\nexport class PluginListItemComponent {\n @Input() plugin: ApplicationPlugin;\n @Input() selectable: boolean;\n @Output() isItemSelected: EventEmitter<boolean> = new EventEmitter();\n\n onChange(event) {\n this.isItemSelected.next(event);\n }\n}\n","\n <c8y-li-checkbox\n (change)=\"onChange($event.target.checked)\"\n *ngIf=\"selectable\"\n [disabled]=\"plugin.installed\"\n class=\"p-r-16 p-l-0\"\n ></c8y-li-checkbox>\n <c8y-li-icon class=\"p-l-0\">\n <i class=\"c8y-plugin-icon\">\n <span>{{ plugin.name?.substr(0, 2) }}</span>\n </i>\n </c8y-li-icon>\n <div class=\"d-flex\">\n <div [ngClass]=\"{'p-r-8' : selectable}\">\n <p>\n <span class=\"text-medium\">{{ plugin.name }}</span>\n <em class=\"text-muted small m-l-8\">{{ plugin.version }}</em>\n <span *ngIf=\"plugin.installed\">\n <i [c8yIcon]=\"'check-circle'\" class=\"text-success\"></i>\n <em class=\"text-muted small\" translate>Installed`plugins`</em>\n </span>\n </p>\n <p class=\"small l-h-tight\">{{ plugin.description }}</p>\n </div>\n <span *ngIf=\"selectable\" class=\"label label-info m-l-auto a-s-start\">{{\n plugin.contextPath\n }}</span>\n </div>\n \n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ApplicationRemotePlugins, ApplicationType, IApplication } from '@c8y/client';\nimport {\n AlertService,\n ApplicationPlugin,\n GainsightService,\n gettext,\n PluginsService\n} from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { BehaviorSubject } from 'rxjs';\nimport { PRODUCT_EXPERIENCE } from '../../ecosystem.model';\nimport { EcosystemService } from '../../ecosystem.service';\nimport { InstallPluginToAppComponent } from './install-plugin-to-app.component';\n\n@Component({\n selector: 'c8y-plugin-list',\n templateUrl: './plugin-list.component.html'\n})\nexport class PluginListComponent {\n CURRENT_LOCATION = location.href;\n @Input() plugins$: BehaviorSubject<ApplicationPlugin[]>;\n @Input() emptyListText: string = '';\n @Input() selectable: boolean;\n /**\n * Shows the install button for each plugin separately. Currently used in package-details view.\n */\n @Input() installable: boolean = false;\n @Input() package: IApplication;\n @Output() selectedItems: EventEmitter<string[]> = new EventEmitter();\n remotePlugins$: BehaviorSubject<ApplicationRemotePlugins> = new BehaviorSubject({});\n selectedPlugins: object = {};\n installingPluginId: string;\n\n constructor(\n private ecosystemService: EcosystemService,\n private bsModalService: BsModalService,\n private pluginsService: PluginsService,\n private alertService: AlertService,\n private translateService: TranslateService,\n private gainsightService: GainsightService\n ) {}\n\n updateSelectedItems(value: boolean, pluginId: string) {\n this.selectedPlugins[pluginId] = value;\n this.selectedItems.emit(Object.keys(this.selectedPlugins).filter(k => this.selectedPlugins[k]));\n }\n\n async installPlugin(plugin: ApplicationPlugin) {\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.PACKAGE_PLUGINS, {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.PLUGIN_LIST,\n action: PRODUCT_EXPERIENCE.APPLICATIONS.ACTIONS.INSTALL_PLUGIN,\n url: this.CURRENT_LOCATION\n });\n this.installingPluginId = plugin?.id;\n let initialState;\n try {\n initialState = {\n apps: (await this.ecosystemService.getWebApplications()).filter(\n app => this.ecosystemService.isOwner(app) && app.type !== ApplicationType.EXTERNAL\n )\n };\n } catch (e) {\n this.alertService.addServerFailure(e);\n this.installingPluginId = '';\n return;\n }\n\n let selectedApps: IApplication[];\n try {\n selectedApps = await this.selectApps(initialState);\n if (!selectedApps) {\n this.installingPluginId = '';\n return;\n }\n } catch {\n // unreached\n }\n\n for (const app of selectedApps) {\n try {\n await this.handleRemotesInstallation(app, plugin);\n const successText = this.translateService.instant(\n gettext('Plugin installed successfully to app \"{{ appName }}\".'),\n { appName: app.name }\n );\n this.alertService.success(successText);\n } catch {\n // nothing to do\n }\n }\n this.installingPluginId = '';\n }\n\n private async handleRemotesInstallation(application: IApplication, plugin: ApplicationPlugin) {\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.PACKAGE_PLUGINS, {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.PLUGIN_LIST,\n result: PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.PLUGIN_INSTALLED,\n url: this.CURRENT_LOCATION\n });\n try {\n // When remotes object is not set in the configuration object of an application.\n // Fallback to setInitialRemotes is triggered.\n let updatedRemotes = await this.pluginsService.addRemotes(application, plugin);\n if (!updatedRemotes) {\n // TODO discuss if we need to handle it like that.\n // Right now remotes from the cumulocity.json are taken into account when remotes object is missing in the configuration.\n updatedRemotes = await this.pluginsService.setInitialRemotes(application);\n // Fresh application MO is needed, after initial state was set.\n const app = await this.ecosystemService.getApplication(application.id);\n updatedRemotes = await this.pluginsService.addRemotes(app, plugin);\n }\n return this.emitRemotes(updatedRemotes);\n } catch (er) {\n if (er) {\n this.alertService.addServerFailure(er);\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.PACKAGE_PLUGINS, {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.PLUGIN_LIST,\n result: PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.SERVER_FAILURE,\n url: this.CURRENT_LOCATION\n });\n }\n throw er;\n }\n }\n\n private emitRemotes(remotes: ApplicationRemotePlugins): ApplicationRemotePlugins {\n this.remotePlugins$.next(remotes);\n return { ...this.remotePlugins$.value };\n }\n\n private async selectApps(\n initialState: Pick<InstallPluginToAppComponent, 'apps'>\n ): Promise<IApplication[]> {\n try {\n return await (\n this.bsModalService.show(InstallPluginToAppComponent, {\n class: 'modal-sm',\n initialState,\n ignoreBackdropClick: true\n }).content as InstallPluginToAppComponent\n ).result;\n } catch (er) {\n return;\n }\n }\n}\n","<c8y-list-group class=\"bg-inherit\">\n <ng-container *ngIf=\"(plugins$ | async)?.length !== 0; else emptyList\">\n <ng-container *ngFor=\"let plugin of plugins$ | async\">\n <c8y-li [ngClass]=\"{ disabled: plugin.installed }\" class=\"bg-inherit\">\n <c8y-plugin-list-item\n (isItemSelected)=\"updateSelectedItems($event, plugin?.id)\"\n [plugin]=\"plugin\"\n [selectable]=\"selectable\"\n class=\"d-flex\"\n ></c8y-plugin-list-item>\n <div class=\"p-l-40 m-t-4\">\n <button\n *ngIf=\"installable\"\n (click)=\"installPlugin(plugin)\"\n [ngClass]=\"{ 'btn-pending': plugin.id === installingPluginId }\"\n [disabled]=\"installingPluginId && plugin.id !== installingPluginId\"\n class=\"btn btn-default btn-sm m-l-4\"\n title=\"{{ 'Install plugin' | translate }}\"\n translate\n >\n Install plugin\n </button>\n </div>\n </c8y-li>\n </ng-container>\n </ng-container>\n</c8y-list-group>\n<ng-template #emptyList>\n <div class=\"c8y-empty-state text-left\" *ngIf=\"emptyListText\">\n <h1 c8yIcon=\"plugin\"></h1>\n <p>\n {{ emptyListText | translate }}\n </p>\n </div>\n</ng-template>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ModalService, gettext, Status, ApplicationPlugin } from '@c8y/ngx-components';\nimport { BehaviorSubject, combineLatest, Observable } from 'rxjs';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { map } from 'rxjs/operators';\n\n@Component({\n selector: 'c8y-install-plugin',\n templateUrl: './install-plugin.component.html'\n})\nexport class InstallPluginComponent implements OnInit {\n @Input() plugins$: BehaviorSubject<ApplicationPlugin[]>;\n filterTerm$: BehaviorSubject<string> = new BehaviorSubject('');\n filteredPlugins$: Observable<ApplicationPlugin[]> = new BehaviorSubject([]);\n selectedPlugins: string[] = [];\n result: Promise<void> = new Promise((resolve, reject) => {\n this._install = resolve;\n this._cancel = reject;\n });\n private _install;\n private _cancel;\n\n constructor(private bsModalRef: BsModalRef, private modal: ModalService) {}\n\n ngOnInit() {\n this.filteredPlugins$ = combineLatest(this.plugins$, this.filterTerm$).pipe(\n map(([plugins, filterTerm]) =>\n filterTerm.trim().length === 0\n ? plugins\n : plugins.filter((plugin: ApplicationPlugin) =>\n this.filterContainString(plugin.name, filterTerm)\n )\n )\n );\n }\n\n cancel() {\n this.bsModalRef.hide();\n this._cancel();\n }\n\n async install() {\n try {\n await this.modal.confirm(\n gettext('Install plugins'),\n gettext(\n 'The operation may take several minutes. During this time the application may be unavailable. Do you want to proceed?'\n ),\n Status.INFO,\n { ok: gettext('Continue') }\n );\n this._install(this.selectedPlugins);\n this.bsModalRef.hide();\n } catch (er) {\n return;\n }\n }\n\n private filterContainString(name: string, filterTerm: string) {\n const term = filterTerm.toLowerCase().trim();\n return name && name.toLowerCase().indexOf(term) > -1;\n }\n}\n","<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i [c8yIcon]=\"'plugin'\"></i>\n <h4 translate>Available plugins</h4>\n </div>\n <div class=\"p-t-8 p-16 text-center separator-bottom flex-no-shrink\">\n <p class=\"text-medium m-b-8\" translate>Select the compatible plugins to install</p>\n <c8y-filter (onSearch)=\"this.filterTerm$.next($event)\"></c8y-filter>\n </div>\n <div class=\"modal-inner-scroll\">\n <c8y-plugin-list\n (selectedItems)=\"selectedPlugins = $event\"\n [emptyListText]=\"'No plugins available' | translate\"\n [plugins$]=\"filteredPlugins$\"\n [selectable]=\"true\"\n class=\"m-t-16\"\n ></c8y-plugin-list>\n </div>\n\n <div class=\"modal-footer\">\n <button\n (click)=\"cancel()\"\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n (click)=\"install()\"\n [disabled]=\"selectedPlugins.length === 0\"\n class=\"btn btn-primary\"\n title=\"{{ 'Install' | translate }}\"\n type=\"button\"\n >\n {{ 'Install' | translate }}\n <span class=\"badge\" *ngIf=\"selectedPlugins.length as length\">{{ length }}</span>\n </button>\n </div>\n</div>\n","import { Component } from '@angular/core';\nimport { CellRendererContext } from '@c8y/ngx-components';\n\n@Component({\n selector: 'c8y-label-cell-renderer',\n templateUrl: './label-cell-renderer.component.html'\n})\nexport class LabelCellRendererComponent {\n constructor(public context: CellRendererContext) {}\n}\n","<span class=\"label label-info\">{{ context.value }}</span>\n","import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { ApplicationRemotePlugins, IApplication } from '@c8y/client';\nimport {\n AlertService,\n ApplicationPlugin,\n BulkActionControl,\n Column,\n DataGridComponent,\n DisplayOptions,\n GainsightService,\n gettext,\n ModalService,\n Pagination,\n PluginsService,\n Status\n} from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { BehaviorSubject, combineLatest, Observable, Subject } from 'rxjs';\nimport { map, shareReplay } from 'rxjs/operators';\nimport { PRODUCT_EXPERIENCE } from '../../ecosystem.model';\nimport { EcosystemService } from '../../ecosystem.service';\nimport { InstallPluginComponent } from './install-plugin.component';\nimport { LabelCellRendererComponent } from './label-cell-renderer.component';\n\n@Component({\n selector: 'c8y-app-plugins',\n templateUrl: './application-plugins.component.html'\n})\nexport class ApplicationPluginsComponent implements OnInit, OnDestroy {\n PRODUCT_EXPERIENCE = PRODUCT_EXPERIENCE;\n CURRENT_LOCATION = location.href;\n\n @ViewChild(DataGridComponent, { static: false })\n dataGrid: DataGridComponent;\n\n exportedPlugins$: BehaviorSubject<ApplicationPlugin[]> = new BehaviorSubject([]);\n remotePlugins$: BehaviorSubject<ApplicationRemotePlugins> = new BehaviorSubject({});\n allAvailablePlugins$: BehaviorSubject<ApplicationPlugin[]> = new BehaviorSubject([]);\n\n installedPlugins$: Observable<ApplicationPlugin[]> = combineLatest([\n this.remotePlugins$.pipe(map(remotes => this.convertInstalledRemotesToIds(remotes))),\n this.allAvailablePlugins$\n ]).pipe(\n map(([remotePlugins, allPlugins]) => allPlugins.filter(p => remotePlugins.includes(p.id))),\n shareReplay(1)\n );\n app: IApplication;\n isLoading: boolean;\n title: string = gettext('Installed plugins');\n loadMoreItemsLabel: string = gettext('Load more packages');\n loadingItemsLabel: string = gettext('Loading packages');\n bulkActionControls: BulkActionControl[] = this.getBulkActionControls();\n pagination: Pagination = {\n pageSize: 10,\n currentPage: 1\n };\n displayOptions: DisplayOptions = {\n bordered: false,\n striped: true,\n filter: true,\n gridHeader: true\n };\n columns: Column[] = [\n {\n name: 'name',\n header: gettext('Plugin name'),\n path: 'name',\n filterable: true\n },\n {\n name: 'Version',\n header: gettext('Version'),\n path: 'version',\n filterable: false\n },\n {\n name: 'description',\n header: gettext('Description'),\n path: 'description',\n filterable: false,\n cellCSSClassName: 'small'\n },\n {\n name: 'contextPath',\n header: gettext('Source'),\n path: 'contextPath',\n filterable: false,\n cellRendererComponent: LabelCellRendererComponent\n }\n ];\n private destroy$: Subject<any> = new Subject();\n\n constructor(\n private activatedRoute: ActivatedRoute,\n private ecosystemService: EcosystemService,\n private bsModalService: BsModalService,\n private modal: ModalService,\n private translateService: TranslateService,\n private pluginsService: PluginsService,\n private alertService: AlertService,\n private gainsightService: GainsightService\n ) {}\n\n ngOnInit() {\n this.loadData();\n }\n\n async loadData() {\n this.isLoading = true;\n await this.getApplicationMO();\n await this.getApplicationMFExports(this.app);\n await this.getApplicationMFRemotes(this.app);\n await this.getAllApplicationsMFExports();\n this.isLoading = false;\n }\n\n async installPlugins() {\n try {\n const pluginsToAdd: string[] = (await (\n this.bsModalService.show(InstallPluginComponent, {\n class: 'modal-sm',\n initialState: this.getInstallModalInitState(),\n ignoreBackdropClick: true\n }).content as InstallPluginComponent\n ).result) as any as string[];\n\n this.isLoading = true;\n await this.handleRemotesInstallation(pluginsToAdd);\n\n this.alertService.success(gettext('Plugins installed.'));\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.INSTALLED_PLUGINS, {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.APPLICATION_PLUGINS,\n result: PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.PLUGIN_INSTALLED,\n url: this.CURRENT_LOCATION\n });\n } catch (ex) {\n if (ex) {\n this.alertService.addServerFailure(ex);\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.INSTALLED_PLUGINS,\n {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.APPLICATION_PLUGINS,\n result: PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.SERVER_FAILURE,\n url: this.CURRENT_LOCATION\n }\n );\n }\n } finally {\n this.isLoading = false;\n }\n }\n\n async removePlugins(plugins: string[]) {\n const humanizedAppName = await this.ecosystemService.getHumanizedAppName(this.app);\n try {\n await this.modal.confirm(\n gettext('Remove plugins'),\n this.translateService.instant(\n gettext(\n 'You are about to remove plugins from application \"{{ humanizedAppName }}\". The operation may take several minutes. During this time the application may be unavailable. Do you want to proceed?'\n ),\n { humanizedAppName }\n ),\n Status.DANGER,\n {\n ok: gettext('Remove'),\n cancel: gettext('Cancel')\n }\n );\n this.isLoading = true;\n const updatedRemotes = await this.pluginsService.removeRemotes(\n this.app,\n plugins.map(id => ({ id } as ApplicationPlugin))\n );\n this.emitRemotes(updatedRemotes);\n\n this.isLoading = false;\n this.dataGrid.cancel();\n this.alertService.success(gettext('Plugins removed.'));\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.INSTALLED_PLUGINS, {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.APPLICATION_PLUGINS,\n result: PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.PLUGIN_REMOVED,\n url: this.CURRENT_LOCATION\n });\n } catch (ex) {\n if (ex) {\n this.alertService.addServerFailure(ex);\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.INSTALLED_PLUGINS,\n {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.APPLICATION_PLUGINS,\n result: PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.SERVER_FAILURE,\n url: this.CURRENT_LOCATION\n }\n );\n }\n } finally {\n this.isLoading = false;\n }\n }\n\n getBulkActionControls(): BulkActionControl[] {\n return [\n {\n type: 'customDelete',\n text: gettext('Remove'),\n icon: 'trash',\n callback: plugins => this.removePlugins(plugins)\n }\n ];\n }\n\n refresh() {\n this.loadData();\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private async handleRemotesInstallation(remotesIds: string[]) {\n // When remotes object is not set in the configuration object of an application.\n // Fallback to setInitialRemotes is triggered.\n let updatedRemotes = await this.pluginsService.addRemotes(\n this.app,\n remotesIds.map(id => ({ id } as ApplicationPlugin))\n );\n\n if (!updatedRemotes) {\n // TODO discuss if we need to handle it like that.\n // Right now remotes from the cumulocity.json are taken into account when remotes object is missing in the configuration.\n updatedRemotes = await this.pluginsService.setInitialRemotes(this.app);\n // Fresh application MO is needed, after initial state was set.\n await this.getApplicationMO();\n updatedRemotes = await this.pluginsService.addRemotes(\n this.app,\n remotesIds.map(id => ({ id } as ApplicationPlugin))\n );\n }\n return this.emitRemotes(updatedRemotes);\n }\n\n private emitRemotes(updatedRemotes: ApplicationRemotePlugins) {\n this.remotePlugins$.next(updatedRemotes);\n this.app.config.remotes = updatedRemotes;\n return { ...this.remotePlugins$.value };\n }\n\n private async getApplicationMO(): Promise<IApplication> {\n const { id } = this.activatedRoute.snapshot.parent.data.contextData;\n try {\n this.app = await this.ecosystemService.getApplication(id);\n } catch (er) {\n if (er) {\n this.alertService.addServerFailure(er);\n }\n }\n return this.app;\n }\n\n private async getApplicationMFExports(app: IApplication) {\n const exports = this.pluginsService.getMFExports(app);\n this.exportedPlugins$.next(exports);\n }\n\n private async getApplicationMFRemotes(app: IApplication) {\n let appConfigRemotes = this.pluginsService.getMFRemotes(app);\n\n if (!appConfigRemotes) {\n appConfigRemotes = await this.pluginsService.setInitialRemotes(app);\n this.app = await this.getApplicationMO();\n }\n this.remotePlugins$.next(appConfigRemotes || {});\n }\n\n private async getAllApplicationsMFExports() {\n const allAppsMFExports = await this.pluginsService.getAllMFExports();\n this.allAvailablePlugins$.next(allAppsMFExports);\n }\n\n private getInstallModalInitState(): any {\n return {\n plugins$: combineLatest([\n this.allAvailablePlugins$,\n this.installedPlugins$.pipe(map(plugins => plugins.map(p => p.id))),\n this.exportedPlugins$.pipe(map(plugins => plugins.map(p => p.id)))\n ]).pipe(\n map(([allPlugins, installedPlugins, exportedPluginNames]) => {\n const plugins = [];\n allPlugins\n .filter(p => !exportedPluginNames.includes(p.id))\n .map(p => plugins.push({ ...p, installed: !!installedPlugins.includes(p.id) }));\n return plugins;\n }),\n shareReplay(1)\n )\n };\n }\n\n private convertInstalledRemotesToIds(remotes: ApplicationRemotePlugins): string[] {\n if (!remotes) {\n return;\n }\n const importContextPaths = Object.keys(remotes);\n const plugins = [];\n importContextPaths.forEach(contextPath => {\n const moduleNames = remotes[contextPath];\n plugins.push(...moduleNames.map(module => this.createId(contextPath, module)));\n });\n return plugins;\n }\n\n private createId(contextPath: string, pluginModuleName: string): string {\n return `${contextPath}/${pluginModuleName}`;\n }\n}\n","<c8y-title>{{ app | humanizeAppName | async }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item [icon]=\"'c8y-atom'\" [label]=\"'Ecosystem' | translate\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-modules'\"\n [label]=\"'Applications' | translate\"\n [path]=\"'ecosystem/applications'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-modules'\"\n [label]=\"'All applications' | translate\"\n [path]=\"'ecosystem/applications'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"app | humanizeAppName | async\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Plugins' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n (click)=\"installPlugins()\"\n [ngClass]=\"{ 'btn-pending': isLoading }\"\n class=\"btn btn-link\"\n title=\"{{ 'Install plugins' | translate }}\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Install plugins' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<div class=\"content-fullpage d-flex d-col\">\n <c8y-data-grid\n [title]=\"title\"\n [loadMoreItemsLabel]=\"loadMoreItemsLabel\"\n [loadingItemsLabel]=\"loadingItemsLabel\"\n [displayOptions]=\"displayOptions\"\n [columns]=\"columns\"\n [rows]=\"installedPlugins$ | async\"\n [pagination]=\"pagination\"\n [selectable]=\"true\"\n [actionControls]=\"[]\"\n [bulkActionControls]=\"bulkActionControls\"\n (onReload)=\"refresh()\"\n class=\"d-contents\"\n >\n <!-- No search/filtered results empty state -->\n <c8y-ui-empty-state\n *ngIf=\"(installedPlugins$ | async)?.length\"\n [icon]=\"'search'\"\n [title]=\"'No plugins to display.' | translate\"\n [subtitle]=\"'Refine your search terms or check your spelling.' | translate\"\n [horizontal]=\"true\"\n >\n </c8y-ui-empty-state>\n <!-- No installed plugins empty state -->\n <c8y-ui-empty-state\n *ngIf=\"!(installedPlugins$ | async)?.length && !isLoading\"\n [icon]=\"'plugin'\"\n [title]=\"'No plugins installed.' | translate\"\n [subtitle]=\"'This application doesn\\'t have any plugin. Click below to install.' | translate\"\n [horizontal]=\"true\"\n >\n <div class=\"fit-w p-t-16\">\n <button\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.INSTALLED_PLUGINS\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.APPLICATION_PLUGINS,\n action: PRODUCT_EXPERIENCE.APPLICATIONS.ACTIONS.INSTALL_PLUGINS,\n url: CURRENT_LOCATION\n }\"\n (click)=\"installPlugins()\"\n [ngClass]=\"{ 'btn-pending': isLoading }\"\n class=\"btn btn-primary btn-sm\"\n title=\"{{ 'Install plugins' | translate }}\"\n translate\n >\n Install plugins\n </button>\n </div>\n </c8y-ui-empty-state>\n </c8y-data-grid>\n</div>\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate } from '@angular/router';\nimport { ApplicationType } from '@c8y/client';\nimport { EcosystemService } from '../../ecosystem.service';\n\n@Injectable()\nexport class ApplicationPluginsGuard implements CanActivate {\n constructor(private ecosystemService: EcosystemService) {}\n\n canActivate(route: ActivatedRouteSnapshot) {\n const app = route.data.contextData || route.parent.data.contextData;\n if (!app) {\n return false;\n }\n return (\n app.type === ApplicationType.HOSTED &&\n this.ecosystemService.isOwner(app) &&\n !this.ecosystemService.isPackage(app)\n );\n }\n}\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.model';\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\"\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\n (click)=\"back()\"\n class=\"btn btn-default\"\n title=\"{{ 'Back' | translate }}\"\n translate\n type=\"button\"\n >\n Back\n </button>\n <button (click)=\"cancel()\" class=\"btn btn-default\" title=\"{{ 'Cancel' | translate }}\" translate>\n Cancel\n </button>\n</c8y-wizard-footer>\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: boolean = 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 });\n }\n\n private setForm(applicationConfig: IApplication) {\n this.formGroup.patchValue({ ...applicationConfig });\n }\n}\n","<form\n (ngSubmit)=\"(formGroup.valid)\"\n [formGroup]=\"formGroup\"\n class=\"c8y-wizard-form text-left\"\n name=\"appDeployForm\"\n novalidate\n>\n <c8y-form-group>\n <label for=\"name\" translate>Name</label>\n <input\n class=\"form-control\"\n formControlName=\"name\"\n name=\"name\"\n placeholder=\"{{ 'e.g. My application' | translate }}\"\n required\n type=\"text\"\n />\n </c8y-form-group>\n <c8y-form-group>\n <label for=\"key\" translate>Application key</label>\n <input\n class=\"form-control\"\n formControlName=\"key\"\n name=\"key\"\n placeholder=\"{{ 'e.g. my-application-key' | translate }}\"\n required\n type=\"text\"\n />\n </c8y-form-group>\n <c8y-form-group>\n <label for=\"contextPath\" translate>Path</label>\n <div class=\"input-group\">\n <span class=\"input-group-addon\">/apps/</span>\n <input\n class=\"form-control\"\n formControlName=\"contextPath\"\n name=\"contextPath\"\n placeholder=\"{{ 'e.g. my-application' | translate }}\"\n required\n type=\"text\"\n />\n </div>\n </c8y-form-group>\n</form>\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 { PRODUCT_EXPERIENCE } from '../../../ecosystem.model';\nimport { EcosystemService } from '../../../ecosystem.service';\nimport { ApplicationPropertiesFormComponent } from '../../../shared/application-properties-form.component';\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 @Input() stepper: C8yStepper;\n @Input() existingApps: IApplication[];\n @Input() selectedApp: BehaviorSubject<IApplication>;\n @Input() isFirstStep: boolean = 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: boolean = 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\n Object.assign(clonedApp, formGroupValue);\n delete clonedApp.type;\n\n await this.updateApp(clonedApp);\n this.inProgress = false;\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.DUPLICATE_APPLICATION,\n {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.DUPLICATE_APPLICATION_PROPERTIES,\n result: PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.DUPLICATED,\n url: this.CURRENT_LOCATION\n }\n );\n }\n\n cancel() {\n this.bsModalRef.hide();\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.DUPLICATE_APPLICATION,\n {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.DUPLICATE_APPLICATION_PROPERTIES,\n action: PRODUCT_EXPERIENCE.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-white 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-progress-bar\n *ngIf=\"inProgress\"\n [message]=\"'Duplicating…' | translate\"\n class=\"text-center d-block\"\n></c8y-progress-bar>\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\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 <h1 [c8yIcon]=\"'copy'\"></h1>\n <h4 translate>Duplicate application</h4>\n</c8y-wizard-header>\n\n<c8y-wizard-body>\n <c8y-stepper\n [customClasses]=\"['hidden']\"\n [disableDefaultIcons]=\"{ edit: true, done: false }\"\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-white\">\n {{ 'Select application to duplicate' | translate }}\n </p>\n <c8y-duplicate-application-list\n (onSelectedApp)=\"onSelectedApp($event)\"\n *ngIf=\"stepper.selectedIndex === 0\"\n [existingApps]=\"existingApps\"\n [stepper]=\"stepper\"\n class=\"d-block\"\n style=\"min-height: 257px\"\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=\"stepper.selectedIndex === 1 || (stepper.selectedIndex === 0 && directlyMoveToSecondStep)\"\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 *ngIf=\"stepper.selectedIndex === 2 || (stepper.selectedIndex === 1 && directlyMoveToSecondStep)\">\n <div\n *ngIf=\"duplicatedApp; else duplicateAppFailed\"\n style=\"min-height: 257px\"\n class=\"d-flex a-i-center j-c-center\"\n >\n <c8y-operation-result\n text=\"{{ 'Application created' | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"success\"\n ></c8y-operation-result>\n </div>\n <ng-template #duplicateAppFailed>\n <div style=\"min-height: 257px\" class=\"d-flex a-i-center j-c-center\">\n <c8y-operation-result\n text=\"{{ 'Application creation failed' | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"error\"\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 === 2 || (stepper.selectedIndex === 1 && directlyMoveToSecondStep)\">\n <button type=\"button\" (click)=\"done()\" class=\"btn btn-default\" title=\"{{ 'Done' | translate }}\">\n {{ 'Done' | translate }}\n </button>\n <a\n (click)=\"$event.stopPropagation()\"\n [href]=\"getHref(duplicatedApp)\"\n target=\"_blank\"\n class=\"btn btn-primary\"\n title=\"{{ 'Open' | translate }}\"\n >\n <i c8yIcon=\"external-link\" class=\"m-r-4\"></i>\n {{ 'Open' | translate }}\n </a>\n</c8y-wizard-footer>\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport {\n ApplicationService,\n IApplication,\n IApplicationVersion,\n InventoryService,\n IResultList\n} from '@c8y/client';\nimport { PluginsService, WizardComponent } from '@c8y/ngx-components';\nimport { BehaviorSubject, combineLatest, from, Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { EcosystemService } from '../../ecosystem.service';\nimport { ApplicationPropertiesFormComponent } from '../../shared/application-properties-form.component';\n\n@Component({\n selector: 'c8y-install-from-package',\n templateUrl: './install-from-package.component.html'\n})\nexport class InstallFromPackageComponent implements OnInit {\n newAppConfig: IApplication;\n selectedPackage: IApplication;\n packages: IApplication[];\n inProgress: boolean;\n deployedWithSuccess: boolean = false;\n isDeployed: boolean = false;\n\n model = {\n selected: undefined,\n binary: {\n id: undefined\n }\n };\n canDeploy: boolean = false;\n onInput: BehaviorSubject<string> = new BehaviorSubject<string>('');\n versions$: Observable<IResultList<IApplicationVersion>>;\n @ViewChild(ApplicationPropertiesFormComponent)\n applicationPropertiesForm: ApplicationPropertiesFormComponent;\n\n constructor(\n private ecosystemService: EcosystemService,\n private applicationService: ApplicationService,\n private wizardComponent: WizardComponent,\n private pluginsService: PluginsService,\n private inventoryService: InventoryService\n ) {}\n\n async ngOnInit() {\n this.loadPackages();\n }\n\n back() {\n this.wizardComponent.reset();\n }\n\n clean() {\n this.selectedPackage = undefined;\n this.versions$ = undefined;\n this.model = {\n selected: undefined,\n binary: {\n id: undefined\n }\n };\n }\n\n cancel() {\n this.wizardComponent.close();\n }\n\n async deployApp() {\n this.inProgress = true;\n const formGroupValue = this.applicationPropertiesForm.formGroup.getRawValue();\n\n // Create new app config\n const config = await this.ecosystemService.createConfig(this.selectedPackage, formGroupValue);\n config.version = this.model.selected.version;\n config.isSetup = true;\n if (!config.manifest) {\n config.manifest = {};\n }\n config.manifest.isPackage = false;\n config.manifest.source = this.selectedPackage.id;\n config.manifest.package = 'blueprint';\n config.resourcesUrl = '/';\n\n // Create new app\n const newApp = (await this.applicationService.create(config)).data;\n // Binary\n try {\n // Get binary details\n const { data: binaryDetails } = await this.inventoryService.detail(\n this.model.selected.binaryId\n );\n\n // Get binary from specific package version\n const binary = await this.ecosystemService.getBinary(this.selectedPackage, {\n id: this.model.selected.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.ecosystemService.uploadArchiveToApp(file, newApp);\n // Update manifest\n await this.ecosystemService.updateAppManifest(newApp, this.selectedPackage);\n\n this.deployedWithSuccess = true;\n } catch (error) {\n if (error?.res?.status === 404) {\n await this.applicationService.delete(newApp.id);\n await this.fallbackToCloneLatest(config);\n }\n } finally {\n this.markAsDeployed();\n }\n }\n\n async fallbackToCloneLatest(config) {\n let clonedPkg;\n try {\n clonedPkg = (await this.applicationService.clone(this.selectedPackage)).data;\n\n // clean out all falsely cloned applicationVersions, we don't need them\n for (const appVersion of clonedPkg.applicationVersions as IApplicationVersion[]) {\n if (appVersion.tags.includes('latest')) {\n await this.ecosystemService.setPackageVersionTag(clonedPkg, appVersion.version, []);\n }\n await this.ecosystemService.deletePackageVersion(clonedPkg, {\n version: appVersion.version\n });\n }\n delete config.type;\n config.isPackage = false;\n const { data: newApp } = await this.ecosystemService.updateApp(\n {\n id: clonedPkg.id,\n activeVersionId: clonedPkg.activeVersionId,\n ...config\n },\n false\n );\n await this.ecosystemService.updateAppManifest(newApp, this.selectedPackage);\n this.deployedWithSuccess = true;\n } catch (error) {\n await this.ecosystemService.deleteApp(clonedPkg.id, true);\n }\n this.markAsDeployed();\n }\n\n onAppVersionSelect(appVersion: IApplicationVersion) {\n Object.assign(this.model, {\n selected: appVersion\n });\n this.canDeploy = true;\n }\n\n async selectPackage(selectedPackage: IApplication) {\n const apps = (await this.ecosystemService.getApplications()).data;\n this.newAppConfig = this.ecosystemService.getUniqueAppConfig(selectedPackage, apps);\n this.selectedPackage = selectedPackage;\n\n this.loadSelectedPackageVersions();\n }\n\n private loadSelectedPackageVersions() {\n this.versions$ = combineLatest([\n this.getAppVersions(this.selectPackage),\n this.onInput.asObservable()\n ]).pipe(\n map(([resultList, filterStr]) => {\n this.canDeploy = false;\n const versionsFilteredByStr = this.filterAppVersions(resultList.data, filterStr);\n const sortedAppVersions = this.pluginsService.sortVersions(\n {\n list: versionsFilteredByStr,\n path: ['version']\n },\n 'desc'\n );\n\n this.setInitialValueForInput(sortedAppVersions);\n return { data: sortedAppVersions, res: resultList.res };\n })\n );\n }\n\n private getAppVersions(mo: IApplication) {\n const versions = mo?.applicationVersions;\n return versions && versions.length > 0\n ? of({ data: versions, res: undefined })\n : from(this.applicationService.listVersions(this.selectedPackage.id));\n }\n\n private setInitialValueForInput(versions: IApplicationVersion[]) {\n if (!this.model.selected && versions.length > 0) {\n const latest = versions.find(v => v.tags.includes('latest'));\n this.model.selected = latest || versions[0];\n this.canDeploy = true;\n }\n }\n\n private filterAppVersions(\n appVersions: IApplicationVersion[],\n filterStr: string\n ): IApplicationVersion[] {\n return filterStr === ''\n ? appVersions\n : appVersions.filter(appVersion => appVersion.version.includes(filterStr));\n }\n\n private markAsDeployed() {\n this.isDeployed = true;\n this.inProgress = false;\n }\n\n private async loadPackages(): Promise<void> {\n const applications = await this.ecosystemService.getPackageApplications();\n this.packages = applications.filter(app => this.ecosystemService.isPackageBlueprint(app));\n }\n}\n","<c8y-wizard-header>\n <i [c8yIcon]=\"'big-parcel'\"></i>\n <h4 translate>Install from package</h4>\n</c8y-wizard-header>\n<c8y-wizard-body>\n <ng-container *ngIf=\"!selectedPackage\">\n <div class=\"modal-inner-scroll\">\n <p class=\"p-16 text-medium text-center separator-bottom sticky-top bg-white\">\n {{ 'Select from available packages' | translate }}\n </p>\n <div *ngIf=\"!packages?.length\" class=\"c8y-empty-state text-center\">\n <p class=\"text-center\">{{ 'No packages to display.' | translate }}</p>\n </div>\n <div *ngIf=\"packages?.length\" class=\"c8y-wizard-list-nav\" style=\"min-height: 257px\">\n <button\n class=\"list-group-item text-truncate\"\n *ngFor=\"let package of packages\"\n (click)=\"selectPackage(package)\"\n title=\"{{ package.name }}\"\n type=\"button\"\n >\n <i c8yIcon=\"big-parcel\" class=\"list-group-icon\"></i>\n <span [innerText]=\"package.name\"></span>\n </button>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!isDeployed && selectedPackage\">\n <p class=\"p-16 text-center text-medium separator-bottom sticky-top bg-white\">\n {{ 'Provide application details' | translate }}\n </p>\n <div class=\"d-flex d-col a-i-center j-c-center\" style=\"min-height: 257px\">\n <c8y-application-properties-form\n *ngIf=\"!inProgress\"\n [application]=\"newAppConfig\"\n class=\"d-block fit-w\"\n ></c8y-application-properties-form>\n\n <ng-container *ngIf=\"!inProgress\">\n <div [ngStyle]=\"{ padding: '0 16px' }\" class=\"d-block fit-w bg-gray-white\">\n <label for=\"packageVersion\" translate>Use package version</label>\n <c8y-form-group>\n <c8y-typeahead\n [(ngModel)]=\"model.selected\"\n name=\"packageVersion\"\n (onSearch)=\"onInput.next($event)\"\n placeholder=\"{{ 'Select or enter' | translate }}\"\n [displayProperty]=\"'version'\"\n [required]=\"true\"\n [hideNew]=\"true\"\n [container]=\"'body'\"\n >\n <c8y-li\n *c8yFor=\"let version of versions$; loadMore: 'auto'; notFound: notFoundTemplate\"\n (click)=\"onAppVersionSelect(version)\"\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n [active]=\"model.selected === version\"\n >\n <c8y-li-icon icon=\"big-parcel\"></c8y-li-icon>\n <span\n [ngStyle]=\"{\n display: 'flex',\n 'flex-direction': 'row',\n 'align-content': 'center',\n 'justify-content': 'space-between',\n 'align-items': 'center'\n }\"\n >\n <c8y-highlight\n [text]=\"version.version || '--'\"\n [pattern]=\"onInput | async\"\n ></c8y-highlight>\n\n <span>\n <span *ngFor=\"let tag of version.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 </div>\n </ng-container>\n\n <c8y-progress-bar\n [message]=\"'Installing…' | translate\"\n class=\"text-center d-block\"\n *ngIf=\"inProgress\"\n ></c8y-progress-bar>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"isDeployed\">\n <div\n *ngIf=\"deployedWithSuccess; else failedDeploy\"\n class=\"d-flex a-i-center j-c-center\"\n style=\"min-height: 257px\"\n >\n <c8y-operation-result\n text=\"{{ 'Application created' | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"success\"\n class=\"lead\"\n ></c8y-operation-result>\n </div>\n <ng-template #failedDeploy>\n <div class=\"d-flex a-i-center j-c-center\" style=\"min-height: 257px\">\n <c8y-operation-result\n text=\"{{ 'Application creation failed' | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"error\"\n class=\"lead\"\n ></c8y-operation-result>\n </div>\n </ng-template>\n </ng-container>\n</c8y-wizard-body>\n\n<c8y-wizard-footer>\n <button\n *ngIf=\"!isDeployed\"\n (click)=\"selectedPackage ? clean() : back()\"\n class=\"btn btn-default\"\n title=\"{{ 'Back' | translate }}\"\n translate\n [disabled]=\"inProgress\"\n type=\"button\"\n >\n Back\n </button>\n <button\n title=\"{{ isDeployed && deployedWithSuccess ? ('Close' | translate) : ('Cancel' | translate) }}\"\n class=\"btn btn-default\"\n type=\"button\"\n (click)=\"cancel()\"\n >\n {{ isDeployed && deployedWithSuccess ? ('Close' | translate) : ('Cancel' | translate) }}\n </button>\n\n <button\n title=\"{{ 'Install' | translate }}\"\n class=\"btn btn-primary\"\n type=\"button\"\n (click)=\"deployApp()\"\n [disabled]=\"inProgress || !packages?.length\"\n *ngIf=\"!isDeployed\"\n >\n {{ 'Install' | translate }}\n </button>\n</c8y-wizard-footer>\n","import { Injectable } from '@angular/core';\nimport { NavigatorNode, NavigatorNodeFactory, Permissions } from '@c8y/ngx-components';\n\n@Injectable()\nexport class EcosystemNavigationFactory implements NavigatorNodeFactory {\n private navs: NavigatorNode[] = [];\n private showNavigatorNodes: boolean;\n\n constructor(private permissions: Permissions) {\n this.showNavigatorNodes = this.permissions.hasAnyRole([\n 'ROLE_APPLICATION_MANAGEMENT_READ',\n 'ROLE_APPLICATION_MANAGEMENT_ADMIN'\n ]);\n }\n\n async get() {\n /*\nThe NavigatorNodes are added in AngularJS code to keep the Quick links widget working.\nAfter the Quick links widget is migrated to Angular, the logic of adding the NavigatorNodes can be migrated as well.\n if (this.navs.length === 0 && this.showNavigatorNodes) {\n const applicationsNode: NavigatorNode = new NavigatorNode({\n label: gettext('Applications'),\n icon: 'c8y-modules',\n path: '/ecosystem',\n priority: 300,\n routerLinkExact: false\n });\n\n const microservicesNode = new NavigatorNode({\n label: gettext('Microservices'),\n icon: 'microchip',\n path: '/microservices',\n priority: 200,\n routerLinkExact: false\n });\n\n this.navs.push(\n new NavigatorNode({\n label: gettext('Ecosystem'),\n icon: 'c8y-atom',\n priority: 3200,\n children: [applicationsNode, microservicesNode]\n })\n );\n }\n*/\n return this.navs;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { gettext, Tab, TabFactory } from '@c8y/ngx-components';\nimport { Router } from '@angular/router';\n\n@Injectable()\nexport class EcosystemTabs implements TabFactory {\n ecosystemTabs: Tab[] = [\n {\n icon: 'c8y-modules',\n priority: 1000,\n label: gettext('All applications'),\n path: 'ecosystem/applications'\n },\n {\n icon: 'big-parcel',\n priority: 999,\n label: gettext('Packages'),\n path: 'ecosystem/package-list'\n },\n {\n icon: 'tab',\n priority: 998,\n label: gettext('Features'),\n path: '/ecosystem/features'\n }\n ];\n\n constructor(public router: Router) {}\n\n get(): Tab[] {\n if (\n this.router.url === '/ecosystem/applications' ||\n this.router.url === '/ecosystem/package-list' ||\n this.router.url === '/ecosystem/features'\n ) {\n return this.ecosystemTabs;\n }\n return [];\n }\n}\n","import { Component } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { IApplication } from '@c8y/client';\nimport { shareReplay, switchMap, tap } from 'rxjs/operators';\nimport { EcosystemService } from '../ecosystem.service';\n\n@Component({\n selector: 'c8y-feature-list',\n templateUrl: './feature-list.component.html'\n})\nexport class FeatureListComponent {\n reloading: boolean = false;\n reload$: BehaviorSubject<void> = new BehaviorSubject(null);\n\n features$: Observable<IApplication> = this.reload$.pipe(\n tap(() => (this.reloading = true)),\n switchMap(() => this.ecosystemService.getFeatureApplications()),\n tap(() => (this.reloading = false)),\n shareReplay()\n );\n listClass: string;\n\n constructor(private ecosystemService: EcosystemService) {}\n\n ngOnInit() {\n this.loadFeatures();\n }\n\n loadFeatures() {\n this.reload$.next();\n }\n}\n","<c8y-title>{{ 'Features' | translate }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item [icon]=\"'c8y-atom'\" [label]=\"'Ecosystem' | translate\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-modules'\"\n [label]=\"'Applications' | translate\"\n [path]=\"'ecosystem/applications'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [icon]=\"'tab'\" [label]=\"'Features' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button (click)=\"reload$.next()\" class=\"btn btn-link\" title=\"{{ 'Reload' | translate }}\">\n <i [ngClass]=\"{ 'icon-spin': reloading }\" c8yIcon=\"refresh\"></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'left'\" itemClass=\"navbar-form hidden-xs\">\n <c8y-list-display-switch\n (onListClassChange)=\"listClass = $event\"\n [listLength]=\"(features$ | async)?.length\"\n ></c8y-list-display-switch>\n</c8y-action-bar-item>\n\n<div *ngIf=\"(features$ | async)?.length === 0\" class=\"c8y-empty-state text-center\">\n <h1 class=\"c8y-icon c8y-icon-modules c8y-icon-duocolor\"></h1>\n <h3 translate>No features to display.</h3>\n <p translate>No additional features are subscribed to the tenant.</p>\n</div>\n\n<div [ngClass]=\"listClass\" class=\"card-group\">\n <div class=\"page-sticky-header hidden-xs flex-row\" *ngIf=\"(features$ | async)?.length > 0\">\n <div class=\"card-block card-column-40\">\n <div class=\"card-appicon p-l-32 p-r-16 m-r-0 m-l-4\"></div>\n {{ 'Feature' | translate }}\n </div>\n <div class=\"card-block p-0 card-column-80\">\n <div class=\"card-block card-column-80\">{{ 'Description' | translate }}</div>\n <div class=\"card-block card-column-20\">{{ 'Type' | translate }}</div>\n <div class=\"card-block card-column-20\"></div>\n </div>\n </div>\n <div *ngFor=\"let feature of features$ | async\" class=\"col-xs-12 col-sm-4 col-md-3\">\n <c8y-application-card\n [app]=\"feature\"\n [canEdit]=\"false\"\n class=\"d-contents\"\n ></c8y-application-card>\n </div>\n</div>\n","import { Component } from '@angular/core';\nimport { gettext, ModalService, Status } from '@c8y/ngx-components';\nimport { ApplicationType, IApplication, TenantService } from '@c8y/client';\nimport { EcosystemService } from '../ecosystem.service';\nimport { ERROR_TYPE } from '../ecosystem.model';\n\n@Component({\n selector: 'c8y-add-microservice',\n template: `<c8y-add-application\n [headerText]=\"headerText\"\n [headerIcon]=\"'microchip'\"\n [successText]=\"successText\"\n [createApplicationHandler]=\"createMicroserviceApplicationHandler\"\n [uploadApplicationHandler]=\"uploadMicroserviceHandler\"\n ></c8y-add-application>`\n})\nexport class AddMicroserviceComponent {\n headerText: string = gettext('Add microservice');\n successText: string = gettext('Microservice created');\n\n constructor(\n private ecosystemService: EcosystemService,\n private modal: ModalService,\n private tenantService: TenantService\n ) {}\n\n createMicroserviceApplicationHandler = (f: File) => this.createMicroserviceApplication(f);\n uploadMicroserviceHandler = (f: File, app: IApplication) => this.uploadMicroservice(f, app);\n\n async createMicroserviceApplication(file: File): Promise<IApplication> {\n await this.ecosystemService.isValidAppType(file, ApplicationType.MICROSERVICE);\n return this.ecosystemService.createAppForArchive(file);\n }\n\n async uploadMicroservice(file: File, microservice: IApplication): Promise<void> {\n const subscribeToCurrentTenant = await this.askIfActivationAfterUploadNeeded();\n await this.ecosystemService.uploadArchiveToApp(file, microservice);\n await this.subscribeMicroservice(microservice, subscribeToCurrentTenant);\n }\n\n private async askIfActivationAfterUploadNeeded(): Promise<boolean> {\n try {\n await this.modal.confirm(\n gettext('Subscribe to microservice'),\n gettext(\n 'You are about to subscribe to the microservice after upload. Do you want to subscribe to it?'\n ),\n Status.INFO,\n { ok: gettext('Subscribe'), cancel: gettext(\"Don't subscribe\") }\n );\n return true;\n } catch (ex) {\n return false;\n }\n }\n\n private async subscribeMicroservice(\n app: IApplication,\n subscribeToCurrentTenant: boolean\n ): Promise<any> {\n const tenant = (await this.tenantService.current()).data;\n const applications = tenant.applications.references;\n\n const isSubscribed = applications.some(({ application }) => application.id === app.id);\n if (!isSubscribed && subscribeToCurrentTenant) {\n try {\n return await this.tenantService.subscribeApplication(tenant, app);\n } catch (res) {\n if (res.status === 409) {\n throw Error(ERROR_TYPE.ALREADY_SUBSCRIBED);\n }\n }\n } else if (isSubscribed && !subscribeToCurrentTenant) {\n return this.tenantService.unsubscribeApplication(tenant, app);\n }\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { IApplication } from '@c8y/client';\nimport { WizardModalService } from '@c8y/ngx-components';\nimport { ModalOptions } from 'ngx-bootstrap/modal';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { shareReplay, switchMap, tap } from 'rxjs/operators';\nimport { EcosystemService } from '../ecosystem.service';\n\n@Component({\n selector: 'c8y-microservice-list',\n templateUrl: './microservice-list.component.html'\n})\nexport class MicroserviceListComponent implements OnInit {\n reloading: boolean = false;\n reload$: BehaviorSubject<void> = new BehaviorSubject(null);\n microservices$: Observable<IApplication> = this.reload$.pipe(\n tap(() => (this.reloading = true)),\n switchMap(() => this.ecosystemService.getMicroservices()),\n tap(() => (this.reloading = false)),\n shareReplay()\n );\n isMicroserviceHostingAllowed$: Observable<boolean> = this.reload$.pipe(\n switchMap(() => this.ecosystemService.isMicroserviceHostingAllowed()),\n shareReplay()\n );\n listClass: string;\n\n constructor(\n private ecosystemService: EcosystemService,\n private wizardModalService: WizardModalService\n ) {}\n\n ngOnInit() {\n this.loadMicroservices();\n }\n\n loadMicroservices() {\n this.reload$.next();\n }\n\n addMicroservice() {\n const initialState: any = {\n id: 'uploadMicroservice'\n };\n const modalOptions: ModalOptions = { initialState };\n\n const modalRef = this.wizardModalService.show(modalOptions);\n modalRef.content.onClose.subscribe(() => {\n this.loadMicroservices();\n });\n }\n}\n","<c8y-title>{{ 'Microservices' | translate }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item [icon]=\"'c8y-atom'\" [label]=\"'Ecosystem' | translate\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'microchip'\"\n [label]=\"'Microservices' | translate\"\n [path]=\"'microservices'\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<ng-container *c8yIfAllowed=\"['ROLE_APPLICATION_MANAGEMENT_ADMIN']\">\n <c8y-action-bar-item\n [placement]=\"'right'\"\n [priority]=\"100\"\n *ngIf=\"isMicroserviceHostingAllowed$ | async\"\n >\n <button\n (click)=\"addMicroservice()\"\n class=\"btn btn-link\"\n title=\"{{ 'Add microservice' | translate }}\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add microservice' | translate }}\n </button>\n </c8y-action-bar-item>\n</ng-container>\n\n<!-- <c8y-help src=\"/users-guide/administration/#microservices\"></c8y-help> -->\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button (click)=\"reload$.next()\" class=\"btn btn-link\" title=\"{{ 'Reload' | translate }}\">\n <i [ngClass]=\"{ 'icon-spin': reloading }\" c8yIcon=\"refresh\"></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'left'\" itemClass=\"navbar-form hidden-xs\">\n <c8y-list-display-switch\n (onListClassChange)=\"listClass = $event\"\n [listLength]=\"(microservices$ | async)?.length\"\n ></c8y-list-display-switch>\n</c8y-action-bar-item>\n\n<div *ngIf=\"(microservices$ | async)?.length === 0\" class=\"c8y-empty-state text-center\">\n <h1 class=\"c8y-icon c8y-icon-modules c8y-icon-duocolor\"></h1>\n <h3 translate>No microservices to display.</h3>\n <p translate>Add your first microservice by clicking below.</p>\n <p>\n <button\n (click)=\"addMicroservice()\"\n class=\"btn btn-primary\"\n title=\"{{ 'Add microservice' | translate }}\"\n >\n {{ 'Add microservice' | translate }}\n </button>\n </p>\n</div>\n\n<div [ngClass]=\"listClass\" class=\"card-group\">\n <div class=\"page-sticky-header hidden-xs flex-row\" *ngIf=\"(microservices$ | async)?.length > 0\">\n <div class=\"card-block card-column-40\">\n <div class=\"card-appicon p-l-32 p-r-16 m-r-0 m-l-4\"></div>\n {{ 'Microservice' | translate }}\n </div>\n <div class=\"card-block p-0 card-column-80\">\n <div class=\"card-block card-column-80\">{{ 'Description' | translate }}</div>\n <div class=\"card-block card-column-20\">{{ 'Type' | translate }}</div>\n <div class=\"card-block card-column-20\"></div>\n </div>\n </div>\n <div *ngFor=\"let microservice of microservices$ | async\" class=\"col-xs-12 col-sm-4 col-md-3\">\n <c8y-application-card\n (onAppDeleted)=\"loadMicroservices()\"\n [app]=\"microservice\"\n class=\"d-contents\"\n ></c8y-application-card>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { ApplicationAvailability, ApplicationService, IApplication } from '@c8y/client';\nimport {\n AlertService,\n AppStateService,\n GainsightService,\n gettext,\n ModalService\n} from '@c8y/ngx-components';\nimport { PRODUCT_EXPERIENCE } from '../ecosystem.model';\n\n@Injectable({ providedIn: 'root' })\nexport class PackageAvailabilityService {\n CURRENT_LOCATION = location.href;\n\n constructor(\n private appState: AppStateService,\n private alert: AlertService,\n private modal: ModalService,\n private application: ApplicationService,\n private gainsightService: GainsightService\n ) {}\n\n async askIfAvailabilityShouldBeSetTo(\n applicationPackage: IApplication,\n availability: ApplicationAvailability\n ) {\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 } catch {\n // modal closed\n return applicationPackage;\n }\n\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(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.AVAILABILITY, {\n action: PRODUCT_EXPERIENCE.APPLICATIONS.ACTIONS.AVAILABILITY_CHANGE,\n result: availability.toString().toLocaleLowerCase(),\n url: this.CURRENT_LOCATION\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(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.AVAILABILITY, {\n action: PRODUCT_EXPERIENCE.APPLICATIONS.ACTIONS.AVAILABILITY_CHANGE,\n result: PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.SERVER_FAILURE,\n url: this.CURRENT_LOCATION\n });\n return applicationPackage;\n }\n }\n\n private async openAvailabilityModal(availability: ApplicationAvailability) {\n const body = this.getConfirmationBody(availability);\n\n await this.modal.confirm(gettext('Package availability'), body, 'info', {\n ok: gettext('Yes'),\n cancel: gettext('No')\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","import { Component } from '@angular/core';\nimport { ApplicationAvailability, ApplicationType, IApplication } from '@c8y/client';\nimport { EcosystemService } from '../ecosystem.service';\nimport { AppStateService, gettext } from '@c8y/ngx-components';\nimport { PackageAvailabilityService } from './package-availability.service';\n\n@Component({\n selector: 'c8y-add-package',\n template: `<c8y-add-application\n [headerText]=\"headerText\"\n [headerIcon]=\"'big-parcel'\"\n [successText]=\"successText\"\n [createApplicationHandler]=\"createPackageAppHandler\"\n [uploadApplicationHandler]=\"uploadPackageHandler\"\n ></c8y-add-application>`\n})\nexport class AddPackageComponent {\n headerText: string = gettext('Add package');\n successText: string = gettext('Package created');\n\n constructor(\n private ecosystemService: EcosystemService,\n private appState: AppStateService,\n private packageAvailability: PackageAvailabilityService\n ) {}\n\n createPackageAppHandler = (f: File) => this.createPackageApp(f);\n uploadPackageHandler = (f: File, app: IApplication) => this.uploadPackage(f, app);\n\n async createPackageApp(file: File): Promise<IApplication> {\n await this.ecosystemService.isValidAppType(file, ApplicationType.HOSTED);\n const applicationPackage = await this.ecosystemService.createAppForArchive(file, true);\n return await this.packageAvailability.askIfAvailabilityShouldBeSetTo(\n applicationPackage,\n ApplicationAvailability.SHARED\n );\n }\n\n uploadPackage(file: File, pckg: IApplication): Promise<IApplication> {\n return this.ecosystemService.uploadArchiveToApp(file, pckg, true);\n }\n}\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport {\n ApplicationService,\n IApplication,\n IApplicationVersion,\n InventoryService,\n IResultList\n} from '@c8y/client';\nimport { GainsightService, gettext, PluginsService, WizardComponent } from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BehaviorSubject, combineLatest, from, Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { PRODUCT_EXPERIENCE } from '../../ecosystem.model';\nimport { EcosystemService } from '../../ecosystem.service';\nimport { ApplicationPropertiesFormComponent } from '../../shared/application-properties-form.component';\n\n@Component({\n selector: 'c8y-deploy-application',\n templateUrl: './deploy-application.component.html'\n})\nexport class DeployApplicationComponent implements OnInit {\n CURRENT_LOCATION = location.href;\n\n inProgress: boolean = true;\n package: IApplication;\n isDeployed: boolean = false;\n deployedWithSuccess: boolean = false;\n newAppConfig: IApplication;\n\n model = {\n selected: undefined,\n binary: {\n id: undefined\n }\n };\n onInput: BehaviorSubject<string> = new BehaviorSubject<string>('');\n canDeploy: boolean = false;\n\n versions$: Observable<IResultList<IApplicationVersion>>;\n\n @ViewChild(ApplicationPropertiesFormComponent)\n applicationPropertiesForm: ApplicationPropertiesFormComponent;\n\n readonly descriptionTemplate: string = gettext(\n 'Deploy application using \"{{ packageName }}\" package'\n );\n readonly successMessageTemplate = gettext('Application \"{{ packageName }}\" created');\n readonly doneLabel = gettext('Done');\n readonly cancelLabel = gettext('Cancel');\n headerText: string;\n\n constructor(\n private ecosystemService: EcosystemService,\n private applicationService: ApplicationService,\n private wizardComponent: WizardComponent,\n private translate: TranslateService,\n private pluginsService: PluginsService,\n private inventoryService: InventoryService,\n private gainsightService: GainsightService\n ) {\n this.package = (this.wizardComponent as any).package;\n this.versions$ = combineLatest([\n this.getAppVersions(this.package),\n this.onInput.asObservable()\n ]).pipe(\n map(([resultList, filterStr]) => {\n this.canDeploy = false;\n const versionsFilteredByStr = this.filterAppVersions(resultList.data, filterStr);\n const sortedAppVersions = this.pluginsService.sortVersions(\n {\n list: versionsFilteredByStr,\n path: ['version']\n },\n 'desc'\n );\n\n this.setInitialValueForInput(sortedAppVersions);\n return { data: sortedAppVersions, res: resultList.res };\n })\n );\n }\n\n async ngOnInit() {\n const apps = (await this.ecosystemService.getApplications()).data;\n this.newAppConfig = this.ecosystemService.getUniqueAppConfig(this.package, apps);\n this.headerText = this.getHeaderText();\n this.inProgress = false;\n }\n\n async deployApp() {\n this.inProgress = true;\n const formGroupValue = this.applicationPropertiesForm.formGroup.getRawValue();\n\n // Create new app config\n const config = await this.ecosystemService.createConfig(this.package, formGroupValue);\n config.version = this.model.selected.version;\n config.isSetup = true;\n if (!config.manifest) {\n config.manifest = {};\n }\n config.manifest.isPackage = false;\n config.manifest.source = this.package.id;\n config.manifest.package = 'blueprint';\n config.resourcesUrl = '/';\n\n // Create new app\n const newApp = (await this.applicationService.create(config)).data;\n // Binary\n try {\n // Get binary details\n const { data: binaryDetails } = await this.inventoryService.detail(\n this.model.selected.binaryId\n );\n\n // Get binary from specific package version\n const binary = await this.ecosystemService.getBinary(this.package, {\n id: this.model.selected.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.ecosystemService.uploadArchiveToApp(file, newApp);\n // Update manifest\n await this.ecosystemService.updateAppManifest(newApp, this.package);\n\n this.deployedWithSuccess = true;\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.DEPLOY_APPLICATION,\n {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.DEPLOY_APPLICATION,\n action: PRODUCT_EXPERIENCE.APPLICATIONS.ACTIONS.DEPLOY_APPLICATION,\n result: PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.DEPLOYED,\n url: this.CURRENT_LOCATION\n }\n );\n } catch (error) {\n if (error?.res?.status === 404) {\n await this.applicationService.delete(newApp.id);\n await this.fallbackToCloneLatest(config);\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.DEPLOY_APPLICATION,\n {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.DEPLOY_APPLICATION,\n action: PRODUCT_EXPERIENCE.APPLICATIONS.ACTIONS.DEPLOY_APPLICATION,\n result: PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.SERVER_FAILURE,\n url: this.CURRENT_LOCATION\n }\n );\n }\n } finally {\n this.markAsDeployed();\n }\n }\n\n async fallbackToCloneLatest(config) {\n let clonedPkg;\n try {\n clonedPkg = (await this.applicationService.clone(this.package)).data;\n\n // clean out all falsely cloned applicationVersions, we don't need them\n for (const appVersion of clonedPkg.applicationVersions as IApplicationVersion[]) {\n if (appVersion.tags.includes('latest')) {\n await this.ecosystemService.setPackageVersionTag(clonedPkg, appVersion.version, []);\n }\n await this.ecosystemService.deletePackageVersion(clonedPkg, {\n version: appVersion.version\n });\n }\n delete config.type;\n config.isPackage = false;\n const { data: newApp } = await this.ecosystemService.updateApp(\n {\n id: clonedPkg.id,\n activeVersionId: clonedPkg.activeVersionId,\n ...config\n },\n false\n );\n await this.ecosystemService.updateAppManifest(newApp, this.package);\n this.deployedWithSuccess = true;\n } catch (error) {\n await this.ecosystemService.deleteApp(clonedPkg.id, true);\n }\n this.markAsDeployed();\n }\n\n cancel() {\n this.wizardComponent.close();\n }\n\n onAppVersionSelect(appVersion: IApplicationVersion) {\n Object.assign(this.model, {\n selected: appVersion\n });\n this.canDeploy = true;\n }\n\n private getAppVersions(mo: IApplication) {\n const versions = mo?.applicationVersions;\n return versions && versions.length > 0\n ? of({ data: versions, res: undefined })\n : from(this.applicationService.listVersions(this.package.id));\n }\n\n private setInitialValueForInput(versions: IApplicationVersion[]) {\n if (!this.model.selected && versions.length > 0) {\n const latest = versions.find(v => v.tags.includes('latest'));\n this.model.selected = latest || versions[0];\n this.canDeploy = true;\n }\n }\n\n private filterAppVersions(\n appVersions: IApplicationVersion[],\n filterStr: string\n ): IApplicationVersion[] {\n return filterStr === ''\n ? appVersions\n : appVersions.filter(appVersion => appVersion.version.includes(filterStr));\n }\n\n private markAsDeployed() {\n this.isDeployed = true;\n this.inProgress = false;\n }\n\n private getHeaderText() {\n return this.translate.instant(this.descriptionTemplate, {\n packageName: this.package.name\n });\n }\n}\n","<c8y-wizard-header>\n <div class=\"modal-header dialog-header\">\n <h1 c8yIcon=\"output\"></h1>\n <h4>{{ 'Deploy application' | translate }}</h4>\n </div>\n</c8y-wizard-header>\n\n<c8y-wizard-body>\n <ng-container *ngIf=\"!isDeployed\">\n <div class=\"fadeIn animated d-flex a-i-center j-c-center d-col\" style=\"min-height: 309px\">\n <p\n class=\"bg-white fit-w p-16 text-center text-medium sticky-top bg-white separator-bottom\"\n *ngIf=\"!inProgress\"\n >\n {{ headerText | translate }}\n </p>\n <c8y-application-properties-form\n *ngIf=\"!inProgress\"\n [application]=\"newAppConfig\"\n class=\"d-block fit-w bg-gray-white\"\n ></c8y-application-properties-form>\n\n <ng-container *ngIf=\"!inProgress\">\n <div [ngStyle]=\"{ padding: '0 16px' }\" class=\"d-block fit-w bg-gray-white\">\n <label for=\"packageVersion\" translate>Use package version</label>\n <c8y-form-group>\n <c8y-typeahead\n [(ngModel)]=\"model.selected\"\n name=\"packageVersion\"\n (onSearch)=\"onInput.next($event)\"\n placeholder=\"{{ 'Select or enter' | translate }}\"\n [displayProperty]=\"'version'\"\n [required]=\"true\"\n [hideNew]=\"true\"\n [container]=\"'body'\"\n >\n <c8y-li\n *c8yFor=\"let version of versions$; loadMore: 'auto'; notFound: notFoundTemplate\"\n (click)=\"onAppVersionSelect(version)\"\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n [active]=\"model.selected === version\"\n >\n <c8y-li-icon icon=\"big-parcel\"></c8y-li-icon>\n <span\n [ngStyle]=\"{\n display: 'flex',\n 'flex-direction': 'row',\n 'align-content': 'center',\n 'justify-content': 'space-between',\n 'align-items': 'center'\n }\"\n >\n <c8y-highlight\n [text]=\"version.version || '--'\"\n [pattern]=\"onInput | async\"\n ></c8y-highlight>\n <span>\n <span *ngFor=\"let tag of version.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 </div>\n </ng-container>\n\n <c8y-progress-bar\n *ngIf=\"inProgress\"\n [message]=\"'Deploying…' | translate\"\n class=\"text-center\"\n ></c8y-progress-bar>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"isDeployed\">\n <div\n *ngIf=\"deployedWithSuccess; else failedDeploy\"\n class=\"modal-body fadeIn animated\"\n style=\"min-height: 309px\"\n >\n <div class=\"d-flex a-i-center j-c-center d-col\">\n <c8y-operation-result\n type=\"success\"\n [size]=\"84\"\n [vertical]=\"true\"\n [text]=\"successMessageTemplate | translate: { packageName: package.name }\"\n class=\"lead d-block m-b-16\"\n ></c8y-operation-result>\n </div>\n </div>\n <ng-template #failedDeploy>\n <div class=\"modal-body fadeIn animated text-center\" style=\"min-height: 257px\">\n <c8y-operation-result\n type=\"error\"\n [size]=\"84\"\n [vertical]=\"true\"\n text=\"{{ 'Application creation failed' | translate }}\"\n class=\"lead\"\n ></c8y-operation-result>\n </div>\n </ng-template>\n </ng-container>\n</c8y-wizard-body>\n\n<c8y-wizard-footer>\n <button\n (click)=\"cancel()\"\n type=\"button\"\n class=\"btn btn-default\"\n title=\"{{ (isDeployed && deployedWithSuccess ? doneLabel : cancelLabel) | translate }}\"\n >\n {{ (isDeployed && deployedWithSuccess ? doneLabel : cancelLabel) | translate }}\n </button>\n\n <button\n (click)=\"deployApp()\"\n *ngIf=\"!isDeployed\"\n [disabled]=\"inProgress || !canDeploy\"\n [ngClass]=\"{ 'btn-pending': inProgress }\"\n class=\"btn btn-primary\"\n type=\"button\"\n title=\"{{ 'Deploy' | translate }}\"\n >\n {{ 'Deploy' | translate }}\n </button>\n</c8y-wizard-footer>\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport {\n ApplicationAvailability,\n FetchClient,\n IApplication,\n IFetchOptions,\n IFetchResponse\n} from '@c8y/client';\nimport {\n ApplicationPlugin,\n AppStateService,\n ContextRouteService,\n gettext,\n PluginsService,\n PropertiesListItem,\n WizardModalService\n} from '@c8y/ngx-components';\nimport { Renderer, parse } from 'marked';\nimport { ModalOptions } from 'ngx-bootstrap/modal';\nimport { BehaviorSubject } from 'rxjs';\nimport { packageProperties } from '../../ecosystem.constants';\nimport { ApplicationState } from '../../ecosystem.model';\nimport { EcosystemService } from '../../ecosystem.service';\nimport { PackageAvailabilityService } from '../package-availability.service';\n\n@Component({\n selector: 'c8y-package-details',\n templateUrl: './package-details.component.html'\n})\nexport class PackageDetailsComponent implements OnInit {\n readme: string;\n package: IApplication = {};\n name: string;\n description: string;\n appState: ApplicationState;\n isPackageBlueprint: boolean;\n exportedPlugins$: BehaviorSubject<ApplicationPlugin[]> = new BehaviorSubject([]);\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 isChangingAvailability = false;\n isOwnedByCurrentTenant = false;\n isAllowedToCreateSubtenants = false;\n\n readonly packageProperties: PropertiesListItem[] = packageProperties;\n private readonly headers: any = { 'Content-Type': 'text/markdown', responseType: 'blob' };\n private NOT_FOUND_ERROR_CODE = 404;\n\n constructor(\n private activatedRoute: ActivatedRoute,\n private client: FetchClient,\n private wizardModalService: WizardModalService,\n private ecosystemService: EcosystemService,\n private contextRouteService: ContextRouteService,\n private pluginsService: PluginsService,\n private packageAvailability: PackageAvailabilityService,\n private ui: AppStateService\n ) {}\n\n async ngOnInit() {\n this.isAllowedToCreateSubtenants = !!this.ui.currentTenant.value?.allowCreateTenants;\n this.loadData();\n }\n\n deploy() {\n const initialState: any = {\n wizardConfig: {},\n id: 'deployPackage',\n package: this.package\n };\n const modalOptions: ModalOptions = { initialState };\n this.wizardModalService.show(modalOptions);\n }\n\n async togglePackageAvailability(pckg: IApplication, newAvailability: ApplicationAvailability) {\n this.isChangingAvailability = true;\n pckg = await this.packageAvailability.askIfAvailabilityShouldBeSetTo(pckg, newAvailability);\n await this.loadData(pckg);\n this.isChangingAvailability = false;\n }\n\n private async loadData(pckg?: IApplication) {\n this.package = pckg\n ? pckg\n : this.contextRouteService.getContextData(this.activatedRoute)?.contextData;\n this.name = this.package?.name;\n this.description = this.package?.manifest?.description;\n this.readme = await this.getReadmeFileContentAsHtml();\n this.appState = this.ecosystemService.getAppState(this.package);\n this.isPackageBlueprint = this.ecosystemService.isPackageBlueprint(this.package);\n this.isOwnedByCurrentTenant =\n this.package?.owner?.tenant?.id === this.ui.currentTenant.value?.name;\n this.extractPackageMFExports();\n }\n\n private extractPackageMFExports() {\n const exports = this.pluginsService.getMFExports(this.package);\n this.exportedPlugins$.next(exports);\n }\n\n private async getReadmeFileContentAsHtml(): Promise<string> {\n const readmeFile = await this.getReadmeFile();\n\n const readmeContent = await readmeFile.text();\n if (readmeFile.status === 200) {\n const renderer = new Renderer();\n const baseUrl = this.getBaseUrl();\n const originalRendererImage = renderer.image.bind(renderer);\n renderer.image = (href, title, text) => {\n href = baseUrl + href;\n return originalRendererImage(href, title, text);\n };\n const html = parse(readmeContent, { renderer });\n return html;\n }\n }\n\n private async getReadmeFile(): Promise<IFetchResponse> {\n const baseUrl = this.getBaseUrl();\n let result: IFetchResponse;\n const options: IFetchOptions = {\n method: 'GET',\n headers: this.headers\n };\n result = await this.client.fetch(`${baseUrl}README.md`, options);\n\n if (result && result.status === this.NOT_FOUND_ERROR_CODE) {\n result = await this.client.fetch(`${baseUrl}readme.md`, options);\n }\n return result;\n }\n\n private getBaseUrl(): string {\n return `/apps/${this.package.contextPath}/`;\n }\n}\n","<c8y-title>{{ name | humanizeAppName | async }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item [icon]=\"'c8y-atom'\" [label]=\"'Ecosystem' | translate\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-modules'\"\n [label]=\"'Applications' | translate\"\n [path]=\"'ecosystem/applications'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'big-parcel'\"\n [label]=\"'Packages' | translate\"\n [path]=\"'ecosystem/package-list'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"name | humanizeAppName | async\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Info' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item placement=\"right\" itemClass=\"navbar-form\" *ngIf=\"isOwnedByCurrentTenant && isAllowedToCreateSubtenants\">\n <div class=\"form-horizontal\">\n <div class=\"form-group\">\n <label for=\"availability\" translate>Availability</label>\n <div class=\"c8y-select-wrapper\">\n <select\n id=\"availability\"\n class=\"form-control\"\n [ngModel]=\"package.availability\"\n [disabled]=\"isChangingAvailability\"\n (ngModelChange)=\"togglePackageAvailability(package, $event)\"\n >\n <option *ngFor=\"let availability of availabilities\" [ngValue]=\"availability.value\">\n {{ availability.label | translate }}\n </option>\n </select>\n <span></span>\n </div>\n </div>\n </div>\n</c8y-action-bar-item>\n\n<div class=\"card content-fullpage d-grid grid__col--8-4--md grid__row--fit-auto\">\n <div class=\"bg-gray-white grid__col--fullspan separator-bottom\">\n <div class=\"card-block p-t-24 p-b-24 large-padding\">\n <div class=\"content-flex-70\">\n <div class=\"text-center\">\n <i c8yIcon=\"big-parcel\" class=\"c8y-icon-duocolor icon-48\"></i>\n <p>\n <span [ngClass]=\"appState?.class\" class=\"label\">{{ appState?.label | translate }}</span>\n </p>\n </div>\n\n <div class=\"flex-grow col-10\">\n <div class=\"content-flex-80\">\n <div class=\"col-5\">\n <h4 class=\"card-title text-bold m-b-8\">{{ name | humanizeAppName | async }}</h4>\n <p *ngIf=\"description\">{{ description }}</p>\n <p *ngIf=\"!description\" class=\"text-muted\">\n <em>{{ 'No description available.' | translate }}</em>\n </p>\n </div>\n <div *ngIf=\"isPackageBlueprint\" class=\"col-3 text-right-md\">\n <button (click)=\"deploy()\" class=\"btn btn-primary btn-xs\">\n <i c8yIcon=\"output\" class=\"m-r-4\"></i>\n {{ 'Deploy application' | translate }}\n </button>\n </div>\n <div class=\"flex-grow\">\n <c8y-properties-list\n [data]=\"package.manifest\"\n [icon]=\"'info-circle'\"\n [properties]=\"packageProperties\"\n [title]=\"'Package info' | translate\"\n ></c8y-properties-list>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"inner-scroll\">\n <div class=\"card-header separator sticky-top\">\n <h4 class=\"card-title\">{{ 'Package overview' | translate }}</h4>\n </div>\n <div class=\"card-block p-l-16 p-r-16\">\n <div *ngIf=\"!readme\" class=\"c8y-empty-state text-center\">\n <h1 c8yIcon=\"user-manual\" class=\"c8y-icon-duocolor\"></h1>\n <div>\n <h3 translate>No README.md found.</h3>\n <p class=\"m-r-8\" translate>\n To view the contents of \"README\", add the file \"README.md\" to the package.\n </p>\n </div>\n </div>\n\n <div [innerHTML]=\"readme\" class=\"markdown-content\"></div>\n </div>\n <div class=\"separator-bottom visible-sm visible-xs\"></div>\n </div>\n\n <div class=\"inner-scroll d-flex d-col\">\n <div class=\"card-header separator sticky-top\">\n <h4 class=\"card-title\">{{ 'Package plugins' | translate }}</h4>\n </div>\n <div class=\"border-left flex-grow\">\n <!-- empty state -->\n <div class=\"p-16\" *ngIf=\"(exportedPlugins$ | async).length === 0\">\n <div class=\"c8y-empty-state text-left\">\n <i c8yIcon=\"plugin\"></i>\n <div>\n <p translate class=\"text-medium\">No plugins to display.</p>\n <p translate>This package doesn't contain plugins.</p>\n </div>\n </div>\n </div>\n <c8y-plugin-list\n [plugins$]=\"exportedPlugins$\"\n [selectable]=\"false\"\n [installable]=\"true\"\n [package]=\"package\"\n ></c8y-plugin-list>\n </div>\n </div>\n</div>\n","import { Component, OnDestroy } from '@angular/core';\nimport { IApplication } from '@c8y/client';\nimport { Permissions, WizardModalService } from '@c8y/ngx-components';\nimport { ModalOptions } from 'ngx-bootstrap/modal';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { shareReplay, switchMap, takeUntil, tap } from 'rxjs/operators';\nimport { EcosystemService } from '../../ecosystem.service';\n\n@Component({\n selector: 'c8y-packages-list',\n templateUrl: './packages-list.component.html'\n})\nexport class PackagesListComponent implements OnDestroy {\n reloading: boolean = false;\n reload$: BehaviorSubject<void> = new BehaviorSubject(null);\n\n packages$: Observable<IApplication>;\n listClass: string;\n hasAdminPermissions = false;\n private destroy$: Subject<boolean> = new Subject<boolean>();\n\n constructor(\n private ecosystemService: EcosystemService,\n private wizardModalService: WizardModalService,\n private permissions: Permissions\n ) {\n this.packages$ = this.reload$.pipe(\n takeUntil(this.destroy$),\n tap(() => (this.reloading = true)),\n switchMap(() => this.ecosystemService.getPackageApplications()),\n tap(() => (this.reloading = false)),\n shareReplay(1)\n );\n }\n\n ngOnInit() {\n this.hasAdminPermissions = this.permissions.hasRole('ROLE_APPLICATION_MANAGEMENT_ADMIN');\n this.loadPackages();\n }\n\n loadPackages() {\n this.reload$.next();\n }\n\n addPackage() {\n const initialState: any = {\n id: 'uploadPackage'\n };\n const modalOptions: ModalOptions = { initialState };\n\n const modalRef = this.wizardModalService.show(modalOptions);\n modalRef.content.onClose.subscribe(() => {\n this.loadPackages();\n });\n }\n\n ngOnDestroy() {\n this.destroy$.next(true);\n this.destroy$.complete();\n }\n}\n","<c8y-title>{{ 'Packages' | translate }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item [icon]=\"'c8y-atom'\" [label]=\"'Ecosystem' | translate\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-modules'\"\n [label]=\"'Applications' | translate\"\n [path]=\"'ecosystem/applications'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [icon]=\"'big-parcel'\" [label]=\"'Packages' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\" *ngIf=\"hasAdminPermissions\">\n <button (click)=\"addPackage()\" class=\"btn btn-link\" title=\"{{ 'Add package' | translate }}\">\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add package' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button (click)=\"loadPackages()\" class=\"btn btn-link\" title=\"{{ 'Reload' | translate }}\">\n <i [ngClass]=\"{ 'icon-spin': reloading }\" c8yIcon=\"refresh\"></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'left'\" itemClass=\"navbar-form hidden-xs\">\n <c8y-list-display-switch\n (onListClassChange)=\"listClass = $event\"\n [listLength]=\"(packages$ | async)?.length\"\n ></c8y-list-display-switch>\n</c8y-action-bar-item>\n\n<c8y-help src=\"/users-guide/administration/#extensions\"></c8y-help>\n\n<div [ngClass]=\"listClass\" class=\"card-group\">\n <div class=\"page-sticky-header hidden-xs flex-row\" *ngIf=\"(packages$ | async)?.length > 0\">\n <div class=\"card-block card-column-40\">\n <div class=\"card-appicon p-l-32 p-r-16 m-r-0 m-l-4\"></div>\n {{ 'Package' | translate }}\n </div>\n <div class=\"card-block p-0 card-column-80\">\n <div class=\"card-block card-column-80\">{{ 'Description' | translate }}</div>\n <div class=\"card-block card-column-20\">{{ 'Type' | translate }}</div>\n <div class=\"card-block card-column-20\"></div>\n </div>\n </div>\n <div *ngFor=\"let app of packages$ | async\" class=\"col-xs-12 col-sm-4 col-md-3\">\n <c8y-application-card\n (onAppDeleted)=\"loadPackages()\"\n (onAppCloned)=\"loadPackages()\"\n [app]=\"app\"\n class=\"d-contents\"\n ></c8y-application-card>\n </div>\n <div *ngIf=\"(packages$ | async)?.length === 0\" class=\"c8y-empty-state text-center\">\n <h1 c8yIcon=\"big-parcel\" class=\"c8y-icon-duocolor\"></h1>\n <h3 translate>No packages to display.</h3>\n <p *ngIf=\"hasAdminPermissions\" translate>Add your first package by clicking below.</p>\n <p *ngIf=\"hasAdminPermissions\">\n <button\n (click)=\"addPackage()\"\n class=\"btn btn-primary\"\n title=\"{{ 'Add package' | translate }}\"\n >\n {{ 'Add package' | translate }}\n </button>\n </p>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { IManifest } from '@c8y/client';\nimport { BehaviorSubject } from 'rxjs';\nimport { ApplicationPlugin } from '@c8y/ngx-components';\n\n@Component({\n selector: 'c8y-contents-plugins',\n templateUrl: './contents-plugins.component.html'\n})\nexport class PackageVersionsPluginsComponent {\n @Input('selectedVersionManifest') selectedVersionManifest: IManifest;\n exportedPlugins$: BehaviorSubject<ApplicationPlugin[]> = new BehaviorSubject([]);\n\n async ngOnChanges() {\n this.exportedPlugins$.next(this.getExportedPlugins());\n }\n\n private getExportedPlugins() {\n return this.selectedVersionManifest?.exports || [];\n }\n}\n","<p class=\"legend form-block\">\n {{ 'Plugins' | translate }}\n</p>\n<!-- empty state -->\n<c8y-ui-empty-state\n *ngIf=\"(exportedPlugins$ | async).length === 0\"\n [icon]=\"'plugin'\"\n [horizontal]=\"true\"\n [title]=\"'No plugins to display.' | translate\"\n [subtitle]=\"'This package doesn\\'t contain plugins.' | translate\"\n></c8y-ui-empty-state>\n\n<c8y-plugin-list [plugins$]=\"exportedPlugins$\" [selectable]=\"false\"></c8y-plugin-list>\n","import { IManifest } from '@c8y/client';\nimport { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'c8y-contents-apps',\n templateUrl: './contents-apps.component.html'\n})\nexport class PackageVersionsAppsComponent {\n @Input('selectedVersionManifest') selectedVersionManifest: IManifest;\n}\n","<p class=\"legend form-block\">\n {{ 'Application' | translate }}\n</p>\n\n<div *ngIf=\"selectedVersionManifest?.name; else emptyApp\">\n <c8y-li>\n <c8y-li-icon icon=\"big-parcel\"></c8y-li-icon>\n <h5 class=\"text-medium text-16 p-b-8\">\n {{ selectedVersionManifest?.name | humanizeAppName | async }}\n <small class=\"m-l-8\" *ngIf=\"selectedVersionManifest?.requiredPlatformVersion\">\n <em>{{ selectedVersionManifest?.requiredPlatformVersion }}</em>\n </small>\n </h5>\n <p *ngIf=\"selectedVersionManifest?.description; else notAvailable\">\n {{ selectedVersionManifest?.description }}\n </p>\n </c8y-li>\n</div>\n\n<ng-template #notAvailable>\n <p class=\"text-muted\">\n <em>{{ 'No description available.' | translate }}</em>\n </p>\n</ng-template>\n\n<ng-template #emptyApp>\n <c8y-ui-empty-state\n [icon]=\"'big-parcel'\"\n [horizontal]=\"true\"\n [title]=\"'No application.' | translate\"\n [subtitle]=\"'This package doesn\\'t contain an application.' | translate\"\n ></c8y-ui-empty-state>\n</ng-template>","import { Component, Input, SimpleChanges } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { ApplicationService, IApplication, IManifest } from '@c8y/client';\nimport { AlertService, ContextRouteService, PropertiesListItem } from '@c8y/ngx-components';\nimport { packageProperties } from '../../../ecosystem.constants';\n\n@Component({\n selector: 'c8y-package-contents',\n templateUrl: './packages-contents.component.html'\n})\nexport class PackageContentsComponent {\n @Input() selectedVersion: string;\n selectedVersionManifest: IManifest;\n package: IApplication = {};\n isLoading: boolean = false;\n\n readonly packageVersionProperties: PropertiesListItem[] = packageProperties;\n\n constructor(\n private activatedRoute: ActivatedRoute,\n private applicationService: ApplicationService,\n private alertService: AlertService,\n private contextRouteService: ContextRouteService\n ) {}\n\n async ngOnChanges(changes: SimpleChanges) {\n if (changes.selectedVersion.currentValue) {\n this.loadManifest(this.selectedVersion);\n }\n this.selectedVersionManifest = undefined;\n }\n\n async loadManifest(version: string) {\n this.package = this.contextRouteService.getContextData(this.activatedRoute)?.contextData;\n this.isLoading = true;\n this.selectedVersionManifest = await this.getManifest(version);\n this.isLoading = false;\n }\n\n private async getManifest(version: string): Promise<IManifest> {\n try {\n return await this.applicationService.getAppManifest(this.package, version);\n } catch (error) {\n this.alertService.addServerFailure(error);\n }\n return undefined;\n }\n}\n","<div class=\"inner-scroll\">\n <ng-container *ngIf=\"!selectedVersionManifest && !isLoading\">\n <div class=\"p-16\">\n <c8y-ui-empty-state\n [icon]=\"'big-parcel'\"\n [horizontal]=\"true\"\n [title]=\"'No package selected' | translate\"\n [subtitle]=\"'Select a package from the list to display the package contents.' | translate\"\n ></c8y-ui-empty-state>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"isLoading\">\n <c8y-loading></c8y-loading>\n </ng-container>\n\n <ng-container *ngIf=\"selectedVersionManifest && !isLoading\">\n <!-- DETAILS -->\n <div class=\"card-block p-t-0\">\n <c8y-properties-list\n [data]=\"selectedVersionManifest\"\n [emptyLabel]=\"'--'\"\n [properties]=\"packageVersionProperties\"\n >\n </c8y-properties-list>\n \n <!-- APPS -->\n <c8y-contents-apps\n class=\"p-t-16 d-block\"\n [selectedVersionManifest]=\"selectedVersionManifest\"\n ></c8y-contents-apps>\n\n <!-- PLUGINS -->\n <c8y-contents-plugins\n class=\"p-t-16 d-block\"\n [selectedVersionManifest]=\"selectedVersionManifest\"\n ></c8y-contents-plugins>\n </div>\n </ng-container>\n</div>\n","import { Component, EventEmitter, OnInit, Output } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { IApplication, IApplicationVersion } from '@c8y/client';\nimport {\n AlertService,\n GainsightService,\n gettext,\n ModalService,\n OptionsService,\n Permissions,\n PluginsService,\n Status\n} from '@c8y/ngx-components';\nimport { EcosystemService } from '../../../ecosystem.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { PRODUCT_EXPERIENCE } from '../../../ecosystem.model';\n\nconst DEFAULT_VERSIONS_LIMIT = 20;\n\n@Component({\n selector: 'c8y-package-versions-list',\n templateUrl: './package-versions-list.component.html'\n})\nexport class PackageVersionsListComponent implements OnInit {\n CURRENT_LOCATION = location.href;\n\n versionsLimit: number;\n isLoading = false;\n package: IApplication;\n sortedVersions: IApplicationVersion[];\n selectedVersion: string;\n preUploadCallback: () => Promise<any>;\n hasAdminPermissions = false;\n isPackageOwnedByCurrentTenant = false;\n\n @Output() onVersionSelect = new EventEmitter<string | null>();\n\n constructor(\n private activatedRoute: ActivatedRoute,\n private pluginsService: PluginsService,\n private ecosystemService: EcosystemService,\n private translateService: TranslateService,\n private modal: ModalService,\n private alertService: AlertService,\n private optionsService: OptionsService,\n private permissions: Permissions,\n private gainsightService: GainsightService\n ) {}\n\n async ngOnInit() {\n this.isLoading = true;\n this.hasAdminPermissions = this.permissions.hasRole('ROLE_APPLICATION_MANAGEMENT_ADMIN');\n this.package = this.activatedRoute?.snapshot?.parent?.data?.contextData;\n this.isPackageOwnedByCurrentTenant = this.ecosystemService.isOwner(this.package);\n this.versionsLimit = await this.optionsService.getSystemOption(\n 'application',\n 'versions.limit',\n DEFAULT_VERSIONS_LIMIT\n );\n this.sortVersions();\n this.isLoading = false;\n }\n\n async downloadArchive(appVersion: IApplicationVersion): Promise<void> {\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.PACKAGE_VERSIONS, {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.PACKAGE_VERSIONS,\n action: PRODUCT_EXPERIENCE.APPLICATIONS.ACTIONS.DOWNLOAD,\n url: this.CURRENT_LOCATION\n });\n await this.ecosystemService.downloadArchive(this.package, {\n id: (appVersion as any).binaryId,\n name: `${this.package.name}-${appVersion.version}.zip`\n });\n }\n\n packageVersionUploaded() {\n this.activatedRoute.snapshot.parent.data.contextData = this.package;\n this.sortVersions();\n this.setUploadedVersionAsLatest();\n }\n\n selectVersion(version: string | null): void {\n this.selectedVersion = version;\n this.onVersionSelect.emit(version);\n }\n\n async removeVersionPackage(version: string) {\n try {\n await this.ecosystemService.deletePackageVersion(this.package, { version });\n this.alertService.success(\n this.translateService.instant(gettext('Package version {{version}} has been removed'), {\n version\n })\n );\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.PACKAGE_VERSIONS, {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.PACKAGE_VERSIONS,\n action: PRODUCT_EXPERIENCE.APPLICATIONS.ACTIONS.DELETE,\n result: PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.SUCCESS,\n url: this.CURRENT_LOCATION\n });\n } catch (e) {\n this.alertService.addServerFailure(e);\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.PACKAGE_VERSIONS, {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.PACKAGE_VERSIONS,\n action: PRODUCT_EXPERIENCE.APPLICATIONS.ACTIONS.DELETE,\n result: PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.SERVER_FAILURE,\n url: this.CURRENT_LOCATION\n });\n }\n if (version === this.selectedVersion) {\n this.selectVersion(null);\n }\n await this.refreshPackage();\n }\n\n async setVersionAsLatest(appVersion: IApplicationVersion) {\n try {\n await this.ecosystemService.setPackageVersionTag(this.package, appVersion.version, [\n ...appVersion.tags,\n 'latest'\n ]);\n\n // TODO added it due to: https://cumulocity.atlassian.net/browse/MTM-48553\n // Remove it when BE fixes issues with activeVersion.\n await this.ecosystemService.setAppActiveVersion(this.package, appVersion.binaryId);\n this.alertService.success(gettext('Tag has been set.'));\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.PACKAGE_VERSIONS, {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.PACKAGE_VERSIONS,\n action: PRODUCT_EXPERIENCE.APPLICATIONS.ACTIONS.SET_AS_LATEST,\n result: PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.SUCCESS,\n url: this.CURRENT_LOCATION\n });\n } catch (e) {\n this.alertService.addServerFailure(e);\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.PACKAGE_VERSIONS, {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.PACKAGE_VERSIONS,\n action: PRODUCT_EXPERIENCE.APPLICATIONS.ACTIONS.SET_AS_LATEST,\n result: PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.SERVER_FAILURE,\n url: this.CURRENT_LOCATION\n });\n return;\n }\n await this.refreshPackage();\n }\n\n async acknowledgeLimitReached() {\n await this.modal.acknowledge(\n gettext('Package limit exceeded'),\n this.translateService.instant(\n gettext(\n `You have reached the maximum number of {{versionsLimit}} package versions. To add another package, first remove one from the list.`\n ),\n { versionsLimit: this.versionsLimit }\n ),\n Status.INFO,\n gettext('Close')\n );\n throw undefined;\n }\n\n private async refreshPackage() {\n this.isLoading = true;\n this.package = await this.ecosystemService.getApplication(this.package.id);\n this.activatedRoute.snapshot.parent.data.contextData = this.package;\n this.sortVersions();\n this.isLoading = false;\n }\n\n private sortVersions() {\n this.sortedVersions = this.pluginsService.sortVersions(\n {\n list: this.package.applicationVersions,\n path: ['version']\n },\n 'desc'\n );\n this.toggleUploadPossibility();\n }\n\n private async setUploadedVersionAsLatest() {\n const uploadedVersion =\n this.package.applicationVersions[this.package.applicationVersions.length - 1];\n try {\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.PACKAGE_VERSIONS, {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.PACKAGE_VERSIONS,\n action: PRODUCT_EXPERIENCE.APPLICATIONS.ACTIONS.UPLOAD,\n result: PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.SUCCESS,\n url: this.CURRENT_LOCATION\n });\n await this.modal.confirm(\n gettext('Upload successful'),\n this.translateService.instant(\n gettext(\n 'Do you want to set version {{version}} as the latest? Deploying a new app will always use this version.'\n ),\n { version: uploadedVersion.version }\n ),\n Status.SUCCESS,\n {\n ok: gettext('Set as latest`version`'),\n cancel: gettext('Keep unchanged`version`')\n }\n );\n } catch (e) {\n // on cancel: do nothing\n return;\n }\n await this.setVersionAsLatest(uploadedVersion);\n }\n\n private toggleUploadPossibility() {\n this.preUploadCallback =\n this.sortedVersions.length < this.versionsLimit\n ? null\n : this.acknowledgeLimitReached.bind(this);\n }\n}\n","<div class=\"inner-scroll split-view__list\">\n <div class=\"card-header separator sticky-top bg-component\">\n <h4 class=\"card-title\" translate>Versions</h4>\n </div>\n\n <div class=\"bg-gray-white flex-grow\">\n <div class=\"p-16\" *ngIf=\"isLoading\">\n <c8y-loading></c8y-loading>\n </div>\n <ul class=\"nav c8y-nav-stacked\" *ngIf=\"!isLoading\">\n <li\n class=\"c8y-stacked-item p-t-0 p-b-0 p-r-4\"\n [ngClass]=\"{ active: selectedVersion === applicationVersion.version }\"\n *ngFor=\"let applicationVersion of sortedVersions\"\n >\n <div\n class=\"flex-grow d-flex a-i-center gap-4 p-t-8 p-b-8\"\n (click)=\"selectVersion(applicationVersion.version)\"\n >\n <i c8yIcon=\"big-parcel\" class=\"icon-20\"></i>\n <span class=\"text-label-small\">\n {{ 'Version' | translate }}\n </span>\n <span class=\"text-medium\">{{ applicationVersion.version }}</span>\n <div class=\"text-truncate d-flex j-c-end flex-grow gap-4 flex-wrap m-l-auto\">\n <span *ngFor=\"let tag of applicationVersion.tags\" class=\"label label-info\">\n {{ tag }}\n </span>\n </div>\n </div>\n <div class=\"dropdown\" dropdown *ngIf=\"hasAdminPermissions && isPackageOwnedByCurrentTenant\">\n <button\n class=\"dropdown-toggle c8y-dropdown\"\n dropdownToggle\n title=\"{{ 'Settings' | translate }}\"\n >\n <i c8yIcon=\"ellipsis-v\"></i>\n </button>\n <ul *dropdownMenu class=\"dropdown-menu dropdown-menu-right\">\n <li>\n <button\n (click)=\"setVersionAsLatest(applicationVersion)\"\n [disabled]=\"applicationVersion.tags?.includes('latest')\"\n title=\"{{ 'Set as latest`version`' | translate }}\"\n >\n <i c8yIcon=\"collect\" class=\"m-r-4\"></i>\n {{ 'Set as latest`version`' | translate }}\n </button>\n </li>\n <li>\n <button\n (click)=\"downloadArchive(applicationVersion)\"\n title=\"{{ 'Download | translate }}\"\n >\n <i c8yIcon=\"download\" class=\"m-r-4\"></i>\n {{ 'Download' | translate }}\n </button>\n </li>\n <li>\n <button\n (click)=\"removeVersionPackage(applicationVersion.version)\"\n [disabled]=\"applicationVersion.tags?.includes('latest')\"\n title=\"{{ 'Delete' | translate }}\"\n >\n <i c8yIcon=\"trash\" class=\"m-r-4\"></i>\n {{ 'Delete' | translate }}\n </button>\n </li>\n </ul>\n </div>\n </li>\n </ul>\n </div>\n\n <div\n class=\"card-footer separator sticky-bottom\"\n *ngIf=\"!isLoading && isPackageOwnedByCurrentTenant\"\n >\n <div class=\"form-group m-b-0\">\n <label translate>Upload a new version</label>\n <c8y-upload-archive\n [(application)]=\"package\"\n [uploadNewVersion]=\"true\"\n (refresh)=\"packageVersionUploaded()\"\n [preUploadCallback]=\"preUploadCallback\"\n ></c8y-upload-archive>\n </div>\n </div>\n</div>\n","import { Component } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { IApplication } from '@c8y/client';\nimport { ContextRouteService } from '@c8y/ngx-components';\n\n@Component({\n selector: 'c8y-package-versions',\n templateUrl: './packages-versions.component.html'\n})\nexport class PackageVersionsComponent {\n package: IApplication = {};\n selectedVersion: string;\n\n constructor(\n private activatedRoute: ActivatedRoute,\n private contextRouteService: ContextRouteService\n ) {}\n\n async ngOnInit() {\n this.package = this.contextRouteService.getContextData(this.activatedRoute)?.contextData;\n }\n\n clearSelectedVersion() {\n this.selectedVersion = null;\n }\n\n selectVersion(version: string) {\n this.selectedVersion = version;\n }\n}\n","<c8y-title>{{ package?.name | humanizeAppName | async }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item [icon]=\"'c8y-atom'\" [label]=\"'Ecosystem' | translate\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-modules'\"\n [label]=\"'Applications' | translate\"\n [path]=\"'ecosystem/applications'\"\n >\n </c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'big-parcel'\"\n [label]=\"'Packages' | translate\"\n [path]=\"'ecosystem/package-list'\"\n >\n </c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"package?.name | humanizeAppName | async\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Versions' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<div class=\"card content-fullpage split-view--5-7 grid__row--1\">\n <c8y-package-versions-list\n class=\"d-contents\"\n (onVersionSelect)=\"selectVersion($event)\"\n ></c8y-package-versions-list>\n\n <div\n class=\"inner-scroll split-view__detail\"\n [ngClass]=\"{ 'split-view__detail--selected': selectedVersion }\"\n >\n <div class=\"large-padding card-header separator visible-sm visible-xs fit-w sticky-top\">\n <div class=\"d-flex a-i-center\">\n <button\n title=\"{{ 'Back' | translate }}\"\n class=\"btn btn-clean text-primary m-r-8\"\n (click)=\"clearSelectedVersion()\"\n >\n <i c8yIcon=\"chevron-left\"></i><span translate>Back</span>\n </button>\n <h4 class=\"card-title\" translate>Package contents</h4>\n </div>\n </div>\n <div class=\"card-header large-padding separator sticky-top visible-md visible-lg\">\n <h4 class=\"card-title\" translate>Package contents</h4>\n </div>\n <div class=\"inner-scroll split-view__list\">\n <c8y-package-contents [selectedVersion]=\"selectedVersion\"></c8y-package-contents>\n </div>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate } from '@angular/router';\nimport { EcosystemService } from '../ecosystem.service';\n\n@Injectable()\nexport class PackageGuard implements CanActivate {\n constructor(private ecosystemService: EcosystemService) {}\n\n canActivate(route: ActivatedRouteSnapshot) {\n const app = route.data.contextData || route.parent.data.contextData;\n if (!app) {\n return false;\n }\n return this.ecosystemService.isPackage(app);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate } from '@angular/router';\n\n@Injectable()\nexport class PackageVersionsGuard implements CanActivate {\n canActivate(route: ActivatedRouteSnapshot) {\n const app = route.data.contextData || route.parent.data.contextData;\n return !!app?.applicationVersions?.length;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport {\n CoreModule,\n FormsModule,\n gettext,\n HOOK_NAVIGATOR_NODES,\n HOOK_ROUTE,\n HOOK_TABS,\n HOOK_WIZARD,\n Route,\n ViewContext\n} from '@c8y/ngx-components';\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { ActivityLogComponent } from './activity-log/activity-log.component';\nimport { ApplicationPropertiesComponent } from './application-properties/application-properties.component';\nimport { ApplicationPropertiesGuard } from './application-properties/application-properties.guard';\nimport { AddExternalApplicationComponent } from './applications/add-external-applicaiton/add-external-application.component';\nimport { AddWebApplicationComponent } from './applications/add-web-application/add-web-application.component';\nimport { ApplicationListComponent } from './applications/application-list/application-list.component';\nimport { ApplicationPluginsComponent } from './applications/application-plugins/application-plugins.component';\nimport { ApplicationPluginsGuard } from './applications/application-plugins/application-plugins.guard';\nimport { AppStatePipe } from './applications/application-plugins/appState.pipe';\nimport { InstallPluginToAppComponent } from './applications/application-plugins/install-plugin-to-app.component';\nimport { InstallPluginComponent } from './applications/application-plugins/install-plugin.component';\nimport { LabelCellRendererComponent } from './applications/application-plugins/label-cell-renderer.component';\nimport { PluginListItemComponent } from './applications/application-plugins/plugin-list-item.component';\nimport { PluginListComponent } from './applications/application-plugins/plugin-list.component';\nimport { DuplicateApplicationListComponent } from './applications/duplicate-application/duplicate-application-list/duplicate-application-list.component';\nimport { DuplicateApplicationPropertiesComponent } from './applications/duplicate-application/duplicate-application-properties/duplicate-application-properties.component';\nimport { DuplicateApplicationComponent } from './applications/duplicate-application/duplicate-application.component';\nimport { InstallFromPackageComponent } from './applications/install-from-package/install-from-package.component';\nimport { EcosystemNavigationFactory } from './ecosystem-navigation.factory';\nimport { EcosystemTabs } from './ecosystem-tabs.factory';\nimport { EcosystemService } from './ecosystem.service';\nimport { FeatureListComponent } from './features/feature-list.component';\nimport { AddMicroserviceComponent } from './microservices/add-microservice.component';\nimport { MicroserviceListComponent } from './microservices/microservice-list.component';\nimport { AddPackageComponent } from './packages/add-package.component';\nimport { DeployApplicationComponent } from './packages/deploy-application/deploy-application.component';\nimport { PackageDetailsComponent } from './packages/package-details/package-details.component';\nimport { PackagesListComponent } from './packages/package-list/packages-list.component';\nimport { PackageVersionsComponent } from './packages/package-versions/packages-versions.component';\nimport { PackageContentsComponent } from './packages/package-versions/package-contents/packages-contents.component';\nimport { PackageVersionsPluginsComponent } from './packages/package-versions/package-contents/contents-plugins/contents-plugins.component';\nimport { PackageVersionsAppsComponent } from './packages/package-versions/package-contents/contents-apps/contents-apps.component';\nimport { PackageGuard } from './packages/package.guard';\nimport { AddApplicationComponent } from './shared/add-application.component';\nimport { ApplicationCardComponent } from './shared/application-card.component';\nimport { ApplicationPropertiesFormComponent } from './shared/application-properties-form.component';\nimport { UploadArchiveComponent } from './shared/upload-archive.component';\nimport { PackageVersionsListComponent } from './packages/package-versions/package-versions-list/package-versions-list.component';\nimport { PackageVersionsGuard } from './packages/package-versions.guard';\nimport { SubscriptionModalComponent } from './application-properties/subscription-modal/subscription-modal.component';\n\nconst ecosystemMainRoutes: Route[] = [\n {\n path: 'ecosystem/applications',\n component: ApplicationListComponent\n },\n {\n path: 'ecosystem/package-list',\n component: PackagesListComponent\n },\n {\n path: 'ecosystem/features',\n component: FeatureListComponent\n },\n {\n path: 'ecosystem',\n redirectTo: 'ecosystem/applications'\n },\n {\n path: 'microservices',\n component: MicroserviceListComponent\n }\n];\n\nconst applicationDetailsRoutes: Route[] = [\n {\n path: 'properties',\n component: ApplicationPropertiesComponent,\n icon: 'list',\n label: gettext('Properties'),\n context: ViewContext.Application,\n priority: 5,\n canActivate: [ApplicationPropertiesGuard]\n },\n {\n path: 'plugins',\n component: ApplicationPluginsComponent,\n icon: 'plugin',\n label: gettext('Plugins'),\n context: ViewContext.Application,\n priority: 3,\n canActivate: [ApplicationPluginsGuard]\n },\n {\n path: 'package-details',\n component: PackageDetailsComponent,\n icon: 'big-parcel',\n label: gettext('Info'),\n context: ViewContext.Application,\n priority: 10,\n canActivate: [PackageGuard]\n },\n {\n path: 'package-versions',\n component: PackageVersionsComponent,\n icon: 'c8y-modules',\n label: gettext('Versions'),\n context: ViewContext.Application,\n priority: 1,\n canActivate: [PackageGuard, PackageVersionsGuard]\n },\n {\n path: 'properties',\n component: ApplicationPropertiesComponent,\n icon: 'list',\n label: gettext('Properties'),\n context: ViewContext.Microservice,\n priority: 5,\n canActivate: [ApplicationPropertiesGuard]\n }\n];\n\n@NgModule({\n declarations: [\n ApplicationListComponent,\n MicroserviceListComponent,\n ApplicationCardComponent,\n ApplicationPropertiesComponent,\n AddMicroserviceComponent,\n ActivityLogComponent,\n ApplicationPluginsComponent,\n PluginListItemComponent,\n InstallPluginComponent,\n PluginListComponent,\n AddWebApplicationComponent,\n AddExternalApplicationComponent,\n DuplicateApplicationComponent,\n DuplicateApplicationListComponent,\n DuplicateApplicationPropertiesComponent,\n ApplicationPropertiesComponent,\n InstallFromPackageComponent,\n AddMicroserviceComponent,\n ApplicationPropertiesComponent,\n PackagesListComponent,\n PackageDetailsComponent,\n DeployApplicationComponent,\n AddPackageComponent,\n AddApplicationComponent,\n ApplicationPropertiesFormComponent,\n FeatureListComponent,\n UploadArchiveComponent,\n InstallPluginToAppComponent,\n AppStatePipe,\n LabelCellRendererComponent,\n PackageVersionsComponent,\n UploadArchiveComponent,\n PackageVersionsPluginsComponent,\n PackageVersionsAppsComponent,\n PackageContentsComponent,\n PackageVersionsListComponent,\n SubscriptionModalComponent\n ],\n entryComponents: [\n AddMicroserviceComponent,\n AddWebApplicationComponent,\n AddExternalApplicationComponent,\n DuplicateApplicationComponent,\n DuplicateApplicationListComponent,\n DuplicateApplicationPropertiesComponent,\n ApplicationPropertiesComponent,\n ActivityLogComponent,\n ApplicationPluginsComponent,\n InstallPluginComponent,\n PackagesListComponent,\n InstallFromPackageComponent,\n PackageDetailsComponent,\n DeployApplicationComponent,\n AddPackageComponent,\n FeatureListComponent,\n InstallPluginToAppComponent,\n PackageVersionsComponent\n ],\n imports: [\n CoreModule,\n BsDropdownModule,\n TooltipModule,\n FormsModule,\n ReactiveFormsModule,\n RouterModule.forChild(ecosystemMainRoutes),\n PopoverModule\n ],\n exports: [ApplicationPropertiesComponent],\n providers: [\n {\n provide: HOOK_TABS,\n useClass: EcosystemTabs,\n multi: true\n },\n {\n provide: HOOK_NAVIGATOR_NODES,\n useClass: EcosystemNavigationFactory,\n multi: true\n },\n {\n provide: HOOK_ROUTE,\n useValue: applicationDetailsRoutes,\n multi: true\n },\n EcosystemService,\n ApplicationPluginsGuard,\n PackageGuard,\n PackageVersionsGuard,\n ApplicationPropertiesGuard,\n {\n provide: HOOK_WIZARD,\n useValue: {\n wizardId: 'uploadApplication',\n component: AddWebApplicationComponent,\n name: 'Upload web application',\n c8yIcon: 'upload'\n },\n multi: true\n },\n {\n provide: HOOK_WIZARD,\n useValue: {\n wizardId: 'uploadPackage',\n component: AddPackageComponent\n },\n multi: true\n },\n {\n provide: HOOK_WIZARD,\n useValue: {\n wizardId: 'uploadApplication',\n component: AddExternalApplicationComponent,\n name: 'External application',\n c8yIcon: 'cloud-link'\n },\n multi: true\n },\n {\n provide: HOOK_WIZARD,\n useValue: {\n wizardId: 'deployPackage',\n component: DeployApplicationComponent,\n name: 'Deploy package',\n c8yIcon: 'big-parcel'\n },\n multi: true\n },\n {\n provide: HOOK_WIZARD,\n useValue: {\n wizardId: 'uploadApplication',\n component: InstallFromPackageComponent,\n name: 'Install from available packages',\n c8yIcon: 'big-parcel'\n },\n multi: true\n },\n {\n provide: HOOK_WIZARD,\n useValue: {\n wizardId: 'uploadApplication',\n component: DuplicateApplicationComponent,\n name: 'Duplicate existing application',\n c8yIcon: 'copy'\n },\n multi: true\n },\n {\n provide: HOOK_WIZARD,\n useValue: {\n wizardId: 'duplicateApplication',\n component: DuplicateApplicationComponent,\n name: 'Duplicate existing application',\n c8yIcon: 'copy'\n },\n multi: true\n },\n {\n provide: HOOK_WIZARD,\n useValue: {\n wizardId: 'uploadMicroservice',\n component: AddMicroserviceComponent\n },\n multi: true\n }\n ]\n})\nexport class EcosystemModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3","i1.EcosystemService","i4.UploadArchiveComponent","i2.EcosystemService","i4","i5","i6","i7","i8","i10.ActivityLogComponent","i11.UploadArchiveComponent","i2.AddApplicationComponent","get","i4.ApplicationCardComponent","i4.AppStatePipe","i6.PluginListItemComponent","i4.PluginListComponent","i7.ApplicationPropertiesFormComponent","i6.DuplicateApplicationListComponent","i7.DuplicateApplicationPropertiesComponent","i6.ApplicationPropertiesFormComponent","i4.AddApplicationComponent","i3.PackageAvailabilityService","i4.EcosystemService","i5.PackageAvailabilityService","i8.PluginListComponent","i3.PluginListComponent","i5.PackageVersionsPluginsComponent","i6.PackageVersionsAppsComponent","i3.EcosystemService","i7.UploadArchiveComponent","i4.PackageContentsComponent","i5.PackageVersionsListComponent"],"mappings":"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"}
|