@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
93 lines • 13.6 kB
JavaScript
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