@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
49 lines • 14.6 kB
JavaScript
import { Component } from '@angular/core';
import { BsModalService } from 'ngx-bootstrap/modal';
import { distinctUntilChanged, filter, map } from 'rxjs/operators';
import { ClipboardService } from '../../clipboard/clipboard.service';
import { AppStateService } from '../../common/ui-state.service';
import { HeaderService } from '../../header/header.service';
import { VersionService } from '../version.service';
import saveAs from 'file-saver';
import { PlatformDetailsService } from '../platform-details.service';
import * as i0 from "@angular/core";
import * as i1 from "../version.service";
import * as i2 from "../../common/ui-state.service";
import * as i3 from "../../clipboard/clipboard.service";
import * as i4 from "ngx-bootstrap/modal";
import * as i5 from "../platform-details.service";
import * as i6 from "../../header/header.service";
import * as i7 from "../../common/icon.directive";
import * as i8 from "../../i18n/c8y-translate.directive";
import * as i9 from "@angular/common";
import * as i10 from "../../i18n/c8y-translate.pipe";
export class VersionListComponent {
constructor(version, appState, clipboardService, modalService, platformDetails, headerService) {
this.version = version;
this.appState = appState;
this.clipboardService = clipboardService;
this.modalService = modalService;
this.platformDetails = platformDetails;
this.headerService = headerService;
this.versionsToDirectlyDisplay$ = this.version.nonHiddenItems$;
this.currentTenantId$ = this.appState.currentTenant.pipe(map(tenant => tenant?.name), filter(tenantId => !!tenantId), distinctUntilChanged());
this.open$ = this.headerService.rightDrawerOpen$;
}
async downloadPlatformDetails() {
const obj = await this.platformDetails.getPlatformDetailsObject();
const json = JSON.stringify(obj, undefined, 2);
const blob = new Blob([json]);
saveAs(blob, 'platform-details.json');
}
copyIt(text) {
this.clipboardService.writeText(text);
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: VersionListComponent, deps: [{ token: i1.VersionService }, { token: i2.AppStateService }, { token: i3.ClipboardService }, { token: i4.BsModalService }, { token: i5.PlatformDetailsService }, { token: i6.HeaderService }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: VersionListComponent, selector: "c8y-version-list", ngImport: i0, template: "<div class=\"separator-top p-t-8 p-b-8\">\n <div class=\"c8y-right-drawer__item sticky-top\">\n <i c8yIcon=\"c8y-cumulocity-iot\"></i>\n <span class=\"text-bold\">{{ 'Platform info' | translate }}</span>\n </div>\n\n <ul class=\"list-unstyled\">\n <li\n class=\"c8y-right-drawer__item\"\n *ngIf=\"currentTenantId$ | async as tenantId\"\n >\n <span\n class=\"flex-grow text-muted m-0 text-12 text-truncate\"\n translate\n >\n Tenant ID\n </span>\n <button\n class=\"m-l-auto flex-no-shrink btn-clean p-0 btn-link\"\n title=\"{{ 'Copy tenant ID to the clipboard' | translate }}\"\n [attr.tabindex]=\"(open$ | async) ? '0' : '-1'\"\n type=\"button\"\n (click)=\"$event.stopPropagation(); copyIt(tenantId)\"\n >\n {{ tenantId }}\n <i\n class=\"text-14 m-0\"\n [c8yIcon]=\"'clipboard'\"\n ></i>\n </button>\n </li>\n <li\n class=\"c8y-right-drawer__item\"\n *ngFor=\"let versionEntry of versionsToDirectlyDisplay$ | async\"\n >\n <span\n class=\"flex-no-shrink text-muted text-12 text-truncate m-r-8\"\n [title]=\"versionEntry.label | translate\"\n >\n {{ versionEntry.label | translate }}\n </span>\n <span\n class=\"flex-grow text-right text-truncate\"\n [title]=\"versionEntry.version | translate\"\n >\n {{ versionEntry.version }}\n </span>\n </li>\n <li class=\"c8y-right-drawer__item\">\n <button\n class=\"btn btn-default btn-sm\"\n [attr.tabindex]=\"(open$ | async) ? '0' : '-1'\"\n title=\"{{ 'Download platform details' | translate }}\"\n translate\n (click)=\"downloadPlatformDetails()\"\n >\n Download platform details\n </button>\n </li>\n </ul>\n</div>\n", dependencies: [{ kind: "directive", type: i7.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i8.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i10.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i9.AsyncPipe, name: "async" }] }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: VersionListComponent, decorators: [{
type: Component,
args: [{ selector: 'c8y-version-list', template: "<div class=\"separator-top p-t-8 p-b-8\">\n <div class=\"c8y-right-drawer__item sticky-top\">\n <i c8yIcon=\"c8y-cumulocity-iot\"></i>\n <span class=\"text-bold\">{{ 'Platform info' | translate }}</span>\n </div>\n\n <ul class=\"list-unstyled\">\n <li\n class=\"c8y-right-drawer__item\"\n *ngIf=\"currentTenantId$ | async as tenantId\"\n >\n <span\n class=\"flex-grow text-muted m-0 text-12 text-truncate\"\n translate\n >\n Tenant ID\n </span>\n <button\n class=\"m-l-auto flex-no-shrink btn-clean p-0 btn-link\"\n title=\"{{ 'Copy tenant ID to the clipboard' | translate }}\"\n [attr.tabindex]=\"(open$ | async) ? '0' : '-1'\"\n type=\"button\"\n (click)=\"$event.stopPropagation(); copyIt(tenantId)\"\n >\n {{ tenantId }}\n <i\n class=\"text-14 m-0\"\n [c8yIcon]=\"'clipboard'\"\n ></i>\n </button>\n </li>\n <li\n class=\"c8y-right-drawer__item\"\n *ngFor=\"let versionEntry of versionsToDirectlyDisplay$ | async\"\n >\n <span\n class=\"flex-no-shrink text-muted text-12 text-truncate m-r-8\"\n [title]=\"versionEntry.label | translate\"\n >\n {{ versionEntry.label | translate }}\n </span>\n <span\n class=\"flex-grow text-right text-truncate\"\n [title]=\"versionEntry.version | translate\"\n >\n {{ versionEntry.version }}\n </span>\n </li>\n <li class=\"c8y-right-drawer__item\">\n <button\n class=\"btn btn-default btn-sm\"\n [attr.tabindex]=\"(open$ | async) ? '0' : '-1'\"\n title=\"{{ 'Download platform details' | translate }}\"\n translate\n (click)=\"downloadPlatformDetails()\"\n >\n Download platform details\n </button>\n </li>\n </ul>\n</div>\n" }]
}], ctorParameters: () => [{ type: i1.VersionService }, { type: i2.AppStateService }, { type: i3.ClipboardService }, { type: i4.BsModalService }, { type: i5.PlatformDetailsService }, { type: i6.HeaderService }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2NvcmUvdmVyc2lvbi92ZXJzaW9uLWxpc3QvdmVyc2lvbi1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2NvcmUvdmVyc2lvbi92ZXJzaW9uLWxpc3QvdmVyc2lvbi1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXJELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDckUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUU1RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxNQUFNLE1BQU0sWUFBWSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7Ozs7Ozs7QUFNckUsTUFBTSxPQUFPLG9CQUFvQjtJQUkvQixZQUNVLE9BQXVCLEVBQ3ZCLFFBQXlCLEVBQ3pCLGdCQUFrQyxFQUNsQyxZQUE0QixFQUM1QixlQUF1QyxFQUN2QyxhQUE0QjtRQUw1QixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUN2QixhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGlCQUFZLEdBQVosWUFBWSxDQUFnQjtRQUM1QixvQkFBZSxHQUFmLGVBQWUsQ0FBd0I7UUFDdkMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFFcEMsSUFBSSxDQUFDLDBCQUEwQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDO1FBQy9ELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ3RELEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsRUFDM0IsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUM5QixvQkFBb0IsRUFBRSxDQUN2QixDQUFDO1FBQ0YsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDO0lBQ25ELENBQUM7SUFFRCxLQUFLLENBQUMsdUJBQXVCO1FBQzNCLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQ2xFLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMvQyxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDOUIsTUFBTSxDQUFDLElBQUksRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxNQUFNLENBQUMsSUFBWTtRQUNqQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hDLENBQUM7K0dBOUJVLG9CQUFvQjttR0FBcEIsb0JBQW9CLHdEQ2hCakMsaTFEQTZEQTs7NEZEN0NhLG9CQUFvQjtrQkFKaEMsU0FBUzsrQkFDRSxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJzTW9kYWxTZXJ2aWNlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDbGlwYm9hcmRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY2xpcGJvYXJkL2NsaXBib2FyZC5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcFN0YXRlU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbW1vbi91aS1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IEhlYWRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9oZWFkZXIvaGVhZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgVmVyc2lvbiB9IGZyb20gJy4uL3ZlcnNpb24ubW9kZWwnO1xuaW1wb3J0IHsgVmVyc2lvblNlcnZpY2UgfSBmcm9tICcuLi92ZXJzaW9uLnNlcnZpY2UnO1xuaW1wb3J0IHNhdmVBcyBmcm9tICdmaWxlLXNhdmVyJztcbmltcG9ydCB7IFBsYXRmb3JtRGV0YWlsc1NlcnZpY2UgfSBmcm9tICcuLi9wbGF0Zm9ybS1kZXRhaWxzLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktdmVyc2lvbi1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ZlcnNpb24tbGlzdC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgVmVyc2lvbkxpc3RDb21wb25lbnQge1xuICBvcGVuJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgdmVyc2lvbnNUb0RpcmVjdGx5RGlzcGxheSQ6IE9ic2VydmFibGU8VmVyc2lvbltdPjtcbiAgY3VycmVudFRlbmFudElkJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHZlcnNpb246IFZlcnNpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgYXBwU3RhdGU6IEFwcFN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIGNsaXBib2FyZFNlcnZpY2U6IENsaXBib2FyZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IEJzTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGxhdGZvcm1EZXRhaWxzOiBQbGF0Zm9ybURldGFpbHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgaGVhZGVyU2VydmljZTogSGVhZGVyU2VydmljZVxuICApIHtcbiAgICB0aGlzLnZlcnNpb25zVG9EaXJlY3RseURpc3BsYXkkID0gdGhpcy52ZXJzaW9uLm5vbkhpZGRlbkl0ZW1zJDtcbiAgICB0aGlzLmN1cnJlbnRUZW5hbnRJZCQgPSB0aGlzLmFwcFN0YXRlLmN1cnJlbnRUZW5hbnQucGlwZShcbiAgICAgIG1hcCh0ZW5hbnQgPT4gdGVuYW50Py5uYW1lKSxcbiAgICAgIGZpbHRlcih0ZW5hbnRJZCA9PiAhIXRlbmFudElkKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICApO1xuICAgIHRoaXMub3BlbiQgPSB0aGlzLmhlYWRlclNlcnZpY2UucmlnaHREcmF3ZXJPcGVuJDtcbiAgfVxuXG4gIGFzeW5jIGRvd25sb2FkUGxhdGZvcm1EZXRhaWxzKCkge1xuICAgIGNvbnN0IG9iaiA9IGF3YWl0IHRoaXMucGxhdGZvcm1EZXRhaWxzLmdldFBsYXRmb3JtRGV0YWlsc09iamVjdCgpO1xuICAgIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShvYmosIHVuZGVmaW5lZCwgMik7XG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtqc29uXSk7XG4gICAgc2F2ZUFzKGJsb2IsICdwbGF0Zm9ybS1kZXRhaWxzLmpzb24nKTtcbiAgfVxuXG4gIGNvcHlJdCh0ZXh0OiBzdHJpbmcpIHtcbiAgICB0aGlzLmNsaXBib2FyZFNlcnZpY2Uud3JpdGVUZXh0KHRleHQpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic2VwYXJhdG9yLXRvcCBwLXQtOCBwLWItOFwiPlxuICA8ZGl2IGNsYXNzPVwiYzh5LXJpZ2h0LWRyYXdlcl9faXRlbSBzdGlja3ktdG9wXCI+XG4gICAgPGkgYzh5SWNvbj1cImM4eS1jdW11bG9jaXR5LWlvdFwiPjwvaT5cbiAgICA8c3BhbiBjbGFzcz1cInRleHQtYm9sZFwiPnt7ICdQbGF0Zm9ybSBpbmZvJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgPC9kaXY+XG5cbiAgPHVsIGNsYXNzPVwibGlzdC11bnN0eWxlZFwiPlxuICAgIDxsaVxuICAgICAgY2xhc3M9XCJjOHktcmlnaHQtZHJhd2VyX19pdGVtXCJcbiAgICAgICpuZ0lmPVwiY3VycmVudFRlbmFudElkJCB8IGFzeW5jIGFzIHRlbmFudElkXCJcbiAgICA+XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzcz1cImZsZXgtZ3JvdyB0ZXh0LW11dGVkIG0tMCB0ZXh0LTEyIHRleHQtdHJ1bmNhdGVcIlxuICAgICAgICB0cmFuc2xhdGVcbiAgICAgID5cbiAgICAgICAgVGVuYW50IElEXG4gICAgICA8L3NwYW4+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwibS1sLWF1dG8gZmxleC1uby1zaHJpbmsgYnRuLWNsZWFuIHAtMCBidG4tbGlua1wiXG4gICAgICAgIHRpdGxlPVwie3sgJ0NvcHkgdGVuYW50IElEIHRvIHRoZSBjbGlwYm9hcmQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiKG9wZW4kIHwgYXN5bmMpID8gJzAnIDogJy0xJ1wiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBjb3B5SXQodGVuYW50SWQpXCJcbiAgICAgID5cbiAgICAgICAge3sgdGVuYW50SWQgfX1cbiAgICAgICAgPGlcbiAgICAgICAgICBjbGFzcz1cInRleHQtMTQgbS0wXCJcbiAgICAgICAgICBbYzh5SWNvbl09XCInY2xpcGJvYXJkJ1wiXG4gICAgICAgID48L2k+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2xpPlxuICAgIDxsaVxuICAgICAgY2xhc3M9XCJjOHktcmlnaHQtZHJhd2VyX19pdGVtXCJcbiAgICAgICpuZ0Zvcj1cImxldCB2ZXJzaW9uRW50cnkgb2YgdmVyc2lvbnNUb0RpcmVjdGx5RGlzcGxheSQgfCBhc3luY1wiXG4gICAgPlxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3M9XCJmbGV4LW5vLXNocmluayB0ZXh0LW11dGVkIHRleHQtMTIgdGV4dC10cnVuY2F0ZSBtLXItOFwiXG4gICAgICAgIFt0aXRsZV09XCJ2ZXJzaW9uRW50cnkubGFiZWwgfCB0cmFuc2xhdGVcIlxuICAgICAgPlxuICAgICAgICB7eyB2ZXJzaW9uRW50cnkubGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzPVwiZmxleC1ncm93IHRleHQtcmlnaHQgdGV4dC10cnVuY2F0ZVwiXG4gICAgICAgIFt0aXRsZV09XCJ2ZXJzaW9uRW50cnkudmVyc2lvbiB8IHRyYW5zbGF0ZVwiXG4gICAgICA+XG4gICAgICAgIHt7IHZlcnNpb25FbnRyeS52ZXJzaW9uIH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9saT5cbiAgICA8bGkgY2xhc3M9XCJjOHktcmlnaHQtZHJhd2VyX19pdGVtXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1zbVwiXG4gICAgICAgIFthdHRyLnRhYmluZGV4XT1cIihvcGVuJCB8IGFzeW5jKSA/ICcwJyA6ICctMSdcIlxuICAgICAgICB0aXRsZT1cInt7ICdEb3dubG9hZCBwbGF0Zm9ybSBkZXRhaWxzJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAoY2xpY2spPVwiZG93bmxvYWRQbGF0Zm9ybURldGFpbHMoKVwiXG4gICAgICA+XG4gICAgICAgIERvd25sb2FkIHBsYXRmb3JtIGRldGFpbHNcbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbGk+XG4gIDwvdWw+XG48L2Rpdj5cbiJdfQ==