UNPKG

@c8y/ngx-components

Version:

Angular modules for Cumulocity IoT applications

93 lines 13.6 kB
import { Component } from '@angular/core'; import { DocsService, gettext, ModalService, Status } from '@c8y/ngx-components'; import { ApplicationType, TenantService } from '@c8y/client'; import { EcosystemService, ERROR_TYPE } from '@c8y/ngx-components/ecosystem/shared'; import * as i0 from "@angular/core"; import * as i1 from "@c8y/ngx-components/ecosystem/shared"; import * as i2 from "@c8y/ngx-components"; import * as i3 from "@c8y/client"; export class AddMicroserviceComponent { constructor(ecosystemService, modal, tenantService, docs) { this.ecosystemService = ecosystemService; this.modal = modal; this.tenantService = tenantService; this.docs = docs; this.slaHref = this.docs.getUserGuideLink('docs/service-terms/service-level/#microservices-sla'); this.headerText = gettext('Add microservice'); this.successText = gettext('Microservice created'); this.createMicroserviceApplicationHandler = (f) => this.createMicroserviceApplication(f); this.uploadMicroserviceHandler = (f, app) => this.uploadMicroservice(f, app); } async createMicroserviceApplication(file) { await this.ecosystemService.isValidAppType(file, ApplicationType.MICROSERVICE); return this.ecosystemService.createAppForArchive(file); } async uploadMicroservice(file, microservice) { const subscribeToCurrentTenant = await this.askIfActivationAfterUploadNeeded(); await this.ecosystemService.uploadArchiveToApp(file, microservice); await this.subscribeMicroservice(microservice, subscribeToCurrentTenant); } async askIfActivationAfterUploadNeeded() { try { await this.modal.confirm(gettext('Subscribe to microservice'), gettext('You are about to subscribe to the microservice after upload. Do you want to subscribe to it?'), Status.INFO, { ok: gettext('Subscribe'), cancel: gettext("Don't subscribe") }); return true; } catch (ex) { return false; } } async subscribeMicroservice(app, subscribeToCurrentTenant) { const tenant = (await this.tenantService.current()).data; const applications = tenant.applications.references; const isSubscribed = applications.some(({ application }) => application.id === app.id); if (!isSubscribed && subscribeToCurrentTenant) { try { return await this.tenantService.subscribeApplication(tenant, app); } catch (res) { if (res.status === 409) { throw Error(ERROR_TYPE.ALREADY_SUBSCRIBED); } } } else if (isSubscribed && !subscribeToCurrentTenant) { return this.tenantService.unsubscribeApplication(tenant, app); } } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AddMicroserviceComponent, deps: [{ token: i1.EcosystemService }, { token: i2.ModalService }, { token: i3.TenantService }, { token: i2.DocsService }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AddMicroserviceComponent, selector: "c8y-add-microservice", ngImport: i0, template: `<div class="p-16" translate [translateParams]="{ slaHref: slaHref }" ngNonBindable> By uploading a microservice, you agree to the <a href="{{ slaHref }}" target="_blank" rel="noopener noreferrer" >Microservice Deployment SLA</a > which outlines our microservices hosting terms, conditions, and performance standards. </div> <c8y-add-application [headerIcon]="'microchip'" [headerText]="headerText" [successText]="successText" [createApplicationHandler]="createMicroserviceApplicationHandler" [uploadApplicationHandler]="uploadMicroserviceHandler" ></c8y-add-application>`, isInline: true, dependencies: [{ kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: i1.AddApplicationComponent, selector: "c8y-add-application", inputs: ["headerText", "headerIcon", "successText", "createApplicationHandler", "uploadApplicationHandler", "canGoBack", "applicationType"] }] }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AddMicroserviceComponent, decorators: [{ type: Component, args: [{ selector: 'c8y-add-microservice', template: `<div class="p-16" translate [translateParams]="{ slaHref: slaHref }" ngNonBindable> By uploading a microservice, you agree to the <a href="{{ slaHref }}" target="_blank" rel="noopener noreferrer" >Microservice Deployment SLA</a > which outlines our microservices hosting terms, conditions, and performance standards. </div> <c8y-add-application [headerIcon]="'microchip'" [headerText]="headerText" [successText]="successText" [createApplicationHandler]="createMicroserviceApplicationHandler" [uploadApplicationHandler]="uploadMicroserviceHandler" ></c8y-add-application>` }] }], ctorParameters: () => [{ type: i1.EcosystemService }, { type: i2.ModalService }, { type: i3.TenantService }, { type: i2.DocsService }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLW1pY3Jvc2VydmljZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9lY29zeXN0ZW0vbWljcm9zZXJ2aWNlcy9hZGQtbWljcm9zZXJ2aWNlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRixPQUFPLEVBQUUsZUFBZSxFQUFnQixhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDM0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7OztBQW1CcEYsTUFBTSxPQUFPLHdCQUF3QjtJQU9uQyxZQUNVLGdCQUFrQyxFQUNsQyxLQUFtQixFQUNuQixhQUE0QixFQUM1QixJQUFpQjtRQUhqQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLFVBQUssR0FBTCxLQUFLLENBQWM7UUFDbkIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsU0FBSSxHQUFKLElBQUksQ0FBYTtRQVZsQixZQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FDM0MscURBQXFELENBQ3RELENBQUM7UUFDRixlQUFVLEdBQVcsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDakQsZ0JBQVcsR0FBVyxPQUFPLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQVN0RCx5Q0FBb0MsR0FBRyxDQUFDLENBQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFGLDhCQUF5QixHQUFHLENBQUMsQ0FBTyxFQUFFLEdBQWlCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFIekYsQ0FBQztJQUtKLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxJQUFVO1FBQzVDLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQy9FLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxLQUFLLENBQUMsa0JBQWtCLENBQUMsSUFBVSxFQUFFLFlBQTBCO1FBQzdELE1BQU0sd0JBQXdCLEdBQUcsTUFBTSxJQUFJLENBQUMsZ0NBQWdDLEVBQUUsQ0FBQztRQUMvRSxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDbkUsTUFBTSxJQUFJLENBQUMscUJBQXFCLENBQUMsWUFBWSxFQUFFLHdCQUF3QixDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVPLEtBQUssQ0FBQyxnQ0FBZ0M7UUFDNUMsSUFBSSxDQUFDO1lBQ0gsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FDdEIsT0FBTyxDQUFDLDJCQUEyQixDQUFDLEVBQ3BDLE9BQU8sQ0FDTCw4RkFBOEYsQ0FDL0YsRUFDRCxNQUFNLENBQUMsSUFBSSxFQUNYLEVBQUUsRUFBRSxFQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FDakUsQ0FBQztZQUNGLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDWixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO0lBRU8sS0FBSyxDQUFDLHFCQUFxQixDQUNqQyxHQUFpQixFQUNqQix3QkFBaUM7UUFFakMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDekQsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUM7UUFFcEQsTUFBTSxZQUFZLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZGLElBQUksQ0FBQyxZQUFZLElBQUksd0JBQXdCLEVBQUUsQ0FBQztZQUM5QyxJQUFJLENBQUM7Z0JBQ0gsT0FBTyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3BFLENBQUM7WUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO2dCQUNiLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztvQkFDdkIsTUFBTSxLQUFLLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLENBQUM7Z0JBQzdDLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQzthQUFNLElBQUksWUFBWSxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztZQUNyRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsc0JBQXNCLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2hFLENBQUM7SUFDSCxDQUFDOytHQS9EVSx3QkFBd0I7bUdBQXhCLHdCQUF3Qiw0REFmekI7Ozs7Ozs7Ozs7Ozs7NEJBYWdCOzs0RkFFZix3QkFBd0I7a0JBakJwQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs0QkFhZ0I7aUJBQzNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb2NzU2VydmljZSwgZ2V0dGV4dCwgTW9kYWxTZXJ2aWNlLCBTdGF0dXMgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uVHlwZSwgSUFwcGxpY2F0aW9uLCBUZW5hbnRTZXJ2aWNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgRWNvc3lzdGVtU2VydmljZSwgRVJST1JfVFlQRSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvZWNvc3lzdGVtL3NoYXJlZCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1hZGQtbWljcm9zZXJ2aWNlJyxcbiAgdGVtcGxhdGU6IGA8ZGl2IGNsYXNzPVwicC0xNlwiIHRyYW5zbGF0ZSBbdHJhbnNsYXRlUGFyYW1zXT1cInsgc2xhSHJlZjogc2xhSHJlZiB9XCIgbmdOb25CaW5kYWJsZT5cbiAgICAgIEJ5IHVwbG9hZGluZyBhIG1pY3Jvc2VydmljZSwgeW91IGFncmVlIHRvIHRoZVxuICAgICAgPGEgaHJlZj1cInt7IHNsYUhyZWYgfX1cIiB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgPk1pY3Jvc2VydmljZSBEZXBsb3ltZW50IFNMQTwvYVxuICAgICAgPlxuICAgICAgd2hpY2ggb3V0bGluZXMgb3VyIG1pY3Jvc2VydmljZXMgaG9zdGluZyB0ZXJtcywgY29uZGl0aW9ucywgYW5kIHBlcmZvcm1hbmNlIHN0YW5kYXJkcy5cbiAgICA8L2Rpdj5cbiAgICA8Yzh5LWFkZC1hcHBsaWNhdGlvblxuICAgICAgW2hlYWRlckljb25dPVwiJ21pY3JvY2hpcCdcIlxuICAgICAgW2hlYWRlclRleHRdPVwiaGVhZGVyVGV4dFwiXG4gICAgICBbc3VjY2Vzc1RleHRdPVwic3VjY2Vzc1RleHRcIlxuICAgICAgW2NyZWF0ZUFwcGxpY2F0aW9uSGFuZGxlcl09XCJjcmVhdGVNaWNyb3NlcnZpY2VBcHBsaWNhdGlvbkhhbmRsZXJcIlxuICAgICAgW3VwbG9hZEFwcGxpY2F0aW9uSGFuZGxlcl09XCJ1cGxvYWRNaWNyb3NlcnZpY2VIYW5kbGVyXCJcbiAgICA+PC9jOHktYWRkLWFwcGxpY2F0aW9uPmBcbn0pXG5leHBvcnQgY2xhc3MgQWRkTWljcm9zZXJ2aWNlQ29tcG9uZW50IHtcbiAgcmVhZG9ubHkgc2xhSHJlZiA9IHRoaXMuZG9jcy5nZXRVc2VyR3VpZGVMaW5rKFxuICAgICdkb2NzL3NlcnZpY2UtdGVybXMvc2VydmljZS1sZXZlbC8jbWljcm9zZXJ2aWNlcy1zbGEnXG4gICk7XG4gIGhlYWRlclRleHQ6IHN0cmluZyA9IGdldHRleHQoJ0FkZCBtaWNyb3NlcnZpY2UnKTtcbiAgc3VjY2Vzc1RleHQ6IHN0cmluZyA9IGdldHRleHQoJ01pY3Jvc2VydmljZSBjcmVhdGVkJyk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlY29zeXN0ZW1TZXJ2aWNlOiBFY29zeXN0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgbW9kYWw6IE1vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIHRlbmFudFNlcnZpY2U6IFRlbmFudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkb2NzOiBEb2NzU2VydmljZVxuICApIHt9XG5cbiAgY3JlYXRlTWljcm9zZXJ2aWNlQXBwbGljYXRpb25IYW5kbGVyID0gKGY6IEZpbGUpID0+IHRoaXMuY3JlYXRlTWljcm9zZXJ2aWNlQXBwbGljYXRpb24oZik7XG4gIHVwbG9hZE1pY3Jvc2VydmljZUhhbmRsZXIgPSAoZjogRmlsZSwgYXBwOiBJQXBwbGljYXRpb24pID0+IHRoaXMudXBsb2FkTWljcm9zZXJ2aWNlKGYsIGFwcCk7XG5cbiAgYXN5bmMgY3JlYXRlTWljcm9zZXJ2aWNlQXBwbGljYXRpb24oZmlsZTogRmlsZSk6IFByb21pc2U8SUFwcGxpY2F0aW9uPiB7XG4gICAgYXdhaXQgdGhpcy5lY29zeXN0ZW1TZXJ2aWNlLmlzVmFsaWRBcHBUeXBlKGZpbGUsIEFwcGxpY2F0aW9uVHlwZS5NSUNST1NFUlZJQ0UpO1xuICAgIHJldHVybiB0aGlzLmVjb3N5c3RlbVNlcnZpY2UuY3JlYXRlQXBwRm9yQXJjaGl2ZShmaWxlKTtcbiAgfVxuXG4gIGFzeW5jIHVwbG9hZE1pY3Jvc2VydmljZShmaWxlOiBGaWxlLCBtaWNyb3NlcnZpY2U6IElBcHBsaWNhdGlvbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHN1YnNjcmliZVRvQ3VycmVudFRlbmFudCA9IGF3YWl0IHRoaXMuYXNrSWZBY3RpdmF0aW9uQWZ0ZXJVcGxvYWROZWVkZWQoKTtcbiAgICBhd2FpdCB0aGlzLmVjb3N5c3RlbVNlcnZpY2UudXBsb2FkQXJjaGl2ZVRvQXBwKGZpbGUsIG1pY3Jvc2VydmljZSk7XG4gICAgYXdhaXQgdGhpcy5zdWJzY3JpYmVNaWNyb3NlcnZpY2UobWljcm9zZXJ2aWNlLCBzdWJzY3JpYmVUb0N1cnJlbnRUZW5hbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBhc2tJZkFjdGl2YXRpb25BZnRlclVwbG9hZE5lZWRlZCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5tb2RhbC5jb25maXJtKFxuICAgICAgICBnZXR0ZXh0KCdTdWJzY3JpYmUgdG8gbWljcm9zZXJ2aWNlJyksXG4gICAgICAgIGdldHRleHQoXG4gICAgICAgICAgJ1lvdSBhcmUgYWJvdXQgdG8gc3Vic2NyaWJlIHRvIHRoZSBtaWNyb3NlcnZpY2UgYWZ0ZXIgdXBsb2FkLiBEbyB5b3Ugd2FudCB0byBzdWJzY3JpYmUgdG8gaXQ/J1xuICAgICAgICApLFxuICAgICAgICBTdGF0dXMuSU5GTyxcbiAgICAgICAgeyBvazogZ2V0dGV4dCgnU3Vic2NyaWJlJyksIGNhbmNlbDogZ2V0dGV4dChcIkRvbid0IHN1YnNjcmliZVwiKSB9XG4gICAgICApO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHN1YnNjcmliZU1pY3Jvc2VydmljZShcbiAgICBhcHA6IElBcHBsaWNhdGlvbixcbiAgICBzdWJzY3JpYmVUb0N1cnJlbnRUZW5hbnQ6IGJvb2xlYW5cbiAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCB0ZW5hbnQgPSAoYXdhaXQgdGhpcy50ZW5hbnRTZXJ2aWNlLmN1cnJlbnQoKSkuZGF0YTtcbiAgICBjb25zdCBhcHBsaWNhdGlvbnMgPSB0ZW5hbnQuYXBwbGljYXRpb25zLnJlZmVyZW5jZXM7XG5cbiAgICBjb25zdCBpc1N1YnNjcmliZWQgPSBhcHBsaWNhdGlvbnMuc29tZSgoeyBhcHBsaWNhdGlvbiB9KSA9PiBhcHBsaWNhdGlvbi5pZCA9PT0gYXBwLmlkKTtcbiAgICBpZiAoIWlzU3Vic2NyaWJlZCAmJiBzdWJzY3JpYmVUb0N1cnJlbnRUZW5hbnQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnRlbmFudFNlcnZpY2Uuc3Vic2NyaWJlQXBwbGljYXRpb24odGVuYW50LCBhcHApO1xuICAgICAgfSBjYXRjaCAocmVzKSB7XG4gICAgICAgIGlmIChyZXMuc3RhdHVzID09PSA0MDkpIHtcbiAgICAgICAgICB0aHJvdyBFcnJvcihFUlJPUl9UWVBFLkFMUkVBRFlfU1VCU0NSSUJFRCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzU3Vic2NyaWJlZCAmJiAhc3Vic2NyaWJlVG9DdXJyZW50VGVuYW50KSB7XG4gICAgICByZXR1cm4gdGhpcy50ZW5hbnRTZXJ2aWNlLnVuc3Vic2NyaWJlQXBwbGljYXRpb24odGVuYW50LCBhcHApO1xuICAgIH1cbiAgfVxufVxuIl19