UNPKG

@c8y/ngx-components

Version:

Angular modules for Cumulocity IoT applications

75 lines 10.6 kB
import { __decorate, __metadata } from "tslib"; import { AlertService } from '@c8y/ngx-components'; import { Component, Input } from '@angular/core'; import { RepositoryService } from '../repository.service'; import { memoize } from '@c8y/ngx-components'; import { saveAs } from 'file-saver'; import { InventoryBinaryService } from '@c8y/client'; import { LinkRenderType } from './link-render-type.enum'; import * as i0 from "@angular/core"; import * as i1 from "../repository.service"; import * as i2 from "@c8y/client"; import * as i3 from "@c8y/ngx-components"; import * as i4 from "@angular/common"; export class FileDownloadComponent { constructor(repositoryService, inventoryBinaryService, alertService) { this.repositoryService = repositoryService; this.inventoryBinaryService = inventoryBinaryService; this.alertService = alertService; this.linkRenderType = LinkRenderType; this.isDownloading = false; } getBinaryName$(binaryUrl) { return this.repositoryService.getBinaryName$(binaryUrl); } determineBehavior() { let result; if (this.inventoryBinaryService.getIdFromUrl(this.url)) { result = LinkRenderType.DOWNLOAD; } else if (this.url.match(/\/\//g)) { result = LinkRenderType.LINK; } else { result = LinkRenderType.TEXTONLY; } return result; } async downloadFile() { try { this.isDownloading = true; const binary = await this.repositoryService.getBinaryFile(this.url, { allowExternal: false }); this.isDownloading = false; saveAs(binary); } catch (ex) { this.isDownloading = false; if (ex) { this.alertService.addServerFailure(ex); } } } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FileDownloadComponent, deps: [{ token: i1.RepositoryService }, { token: i2.InventoryBinaryService }, { token: i3.AlertService }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FileDownloadComponent, selector: "c8y-file-download", inputs: { url: "url" }, ngImport: i0, template: "<a\n *ngIf=\"determineBehavior() === linkRenderType.LINK\"\n href=\"{{ url }}\"\n class=\"pointer\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n>\n {{ getBinaryName$(url) | async }}\n</a>\n\n<span *ngIf=\"determineBehavior() === linkRenderType.TEXTONLY\">{{\n getBinaryName$(url) | async\n}}</span>\n\n<span *ngIf=\"determineBehavior() === linkRenderType.DOWNLOAD\">\n <a *ngIf=\"!isDownloading\" class=\"pointer\" (click)=\"downloadFile()\">\n {{ getBinaryName$(url) | async }}\n </a>\n\n <span *ngIf=\"isDownloading\">\n <i c8yIcon=\"spinner\" class=\"icon-spin\"></i> {{ 'Downloading\u2026' | translate }}\n </span>\n</span>\n", dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }] }); } } __decorate([ memoize(), __metadata("design:type", Function), __metadata("design:paramtypes", [Object]), __metadata("design:returntype", void 0) ], FileDownloadComponent.prototype, "getBinaryName$", null); __decorate([ memoize(), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", Number) ], FileDownloadComponent.prototype, "determineBehavior", null); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FileDownloadComponent, decorators: [{ type: Component, args: [{ selector: 'c8y-file-download', template: "<a\n *ngIf=\"determineBehavior() === linkRenderType.LINK\"\n href=\"{{ url }}\"\n class=\"pointer\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n>\n {{ getBinaryName$(url) | async }}\n</a>\n\n<span *ngIf=\"determineBehavior() === linkRenderType.TEXTONLY\">{{\n getBinaryName$(url) | async\n}}</span>\n\n<span *ngIf=\"determineBehavior() === linkRenderType.DOWNLOAD\">\n <a *ngIf=\"!isDownloading\" class=\"pointer\" (click)=\"downloadFile()\">\n {{ getBinaryName$(url) | async }}\n </a>\n\n <span *ngIf=\"isDownloading\">\n <i c8yIcon=\"spinner\" class=\"icon-spin\"></i> {{ 'Downloading\u2026' | translate }}\n </span>\n</span>\n" }] }], ctorParameters: () => [{ type: i1.RepositoryService }, { type: i2.InventoryBinaryService }, { type: i3.AlertService }], propDecorators: { url: [{ type: Input }], getBinaryName$: [], determineBehavior: [] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1kb3dubG9hZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9yZXBvc2l0b3J5L3NoYXJlZC9maWxlLWRvd25sb2FkL2ZpbGUtZG93bmxvYWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcmVwb3NpdG9yeS9zaGFyZWQvZmlsZS1kb3dubG9hZC9maWxlLWRvd25sb2FkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7O0FBTXpELE1BQU0sT0FBTyxxQkFBcUI7SUFJaEMsWUFDVSxpQkFBb0MsRUFDcEMsc0JBQThDLEVBQzlDLFlBQTBCO1FBRjFCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUM5QyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUxwQyxtQkFBYyxHQUFHLGNBQWMsQ0FBQztRQUNoQyxrQkFBYSxHQUFHLEtBQUssQ0FBQztJQUtuQixDQUFDO0lBR0osY0FBYyxDQUFDLFNBQVM7UUFDdEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFHRCxpQkFBaUI7UUFDZixJQUFJLE1BQXNCLENBQUM7UUFDM0IsSUFBSSxJQUFJLENBQUMsc0JBQXNCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3ZELE1BQU0sR0FBRyxjQUFjLENBQUMsUUFBUSxDQUFDO1FBQ25DLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDbkMsTUFBTSxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUM7UUFDL0IsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLEdBQUcsY0FBYyxDQUFDLFFBQVEsQ0FBQztRQUNuQyxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELEtBQUssQ0FBQyxZQUFZO1FBQ2hCLElBQUksQ0FBQztZQUNILElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1lBQzFCLE1BQU0sTUFBTSxHQUFTLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUN4RSxhQUFhLEVBQUUsS0FBSzthQUNyQixDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztZQUMzQixNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakIsQ0FBQztRQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDWixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztZQUMzQixJQUFJLEVBQUUsRUFBRSxDQUFDO2dCQUNQLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDekMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDOytHQTFDVSxxQkFBcUI7bUdBQXJCLHFCQUFxQixpRkNabEMsK29CQXVCQTs7QURBRTtJQURDLE9BQU8sRUFBRTs7OzsyREFHVDtBQUdEO0lBREMsT0FBTyxFQUFFOzs7OzhEQVdUOzRGQTFCVSxxQkFBcUI7a0JBSmpDLFNBQVM7K0JBQ0UsbUJBQW1CO3NKQUlwQixHQUFHO3NCQUFYLEtBQUs7Z0JBVU4sY0FBYyxNQUtkLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVwb3NpdG9yeVNlcnZpY2UgfSBmcm9tICcuLi9yZXBvc2l0b3J5LnNlcnZpY2UnO1xuaW1wb3J0IHsgbWVtb2l6ZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgc2F2ZUFzIH0gZnJvbSAnZmlsZS1zYXZlcic7XG5pbXBvcnQgeyBJbnZlbnRvcnlCaW5hcnlTZXJ2aWNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgTGlua1JlbmRlclR5cGUgfSBmcm9tICcuL2xpbmstcmVuZGVyLXR5cGUuZW51bSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1maWxlLWRvd25sb2FkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbGUtZG93bmxvYWQuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVEb3dubG9hZENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHVybDogc3RyaW5nO1xuICBsaW5rUmVuZGVyVHlwZSA9IExpbmtSZW5kZXJUeXBlO1xuICBpc0Rvd25sb2FkaW5nID0gZmFsc2U7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVwb3NpdG9yeVNlcnZpY2U6IFJlcG9zaXRvcnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW52ZW50b3J5QmluYXJ5U2VydmljZTogSW52ZW50b3J5QmluYXJ5U2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlXG4gICkge31cblxuICBAbWVtb2l6ZSgpXG4gIGdldEJpbmFyeU5hbWUkKGJpbmFyeVVybCkge1xuICAgIHJldHVybiB0aGlzLnJlcG9zaXRvcnlTZXJ2aWNlLmdldEJpbmFyeU5hbWUkKGJpbmFyeVVybCk7XG4gIH1cblxuICBAbWVtb2l6ZSgpXG4gIGRldGVybWluZUJlaGF2aW9yKCk6IExpbmtSZW5kZXJUeXBlIHtcbiAgICBsZXQgcmVzdWx0OiBMaW5rUmVuZGVyVHlwZTtcbiAgICBpZiAodGhpcy5pbnZlbnRvcnlCaW5hcnlTZXJ2aWNlLmdldElkRnJvbVVybCh0aGlzLnVybCkpIHtcbiAgICAgIHJlc3VsdCA9IExpbmtSZW5kZXJUeXBlLkRPV05MT0FEO1xuICAgIH0gZWxzZSBpZiAodGhpcy51cmwubWF0Y2goL1xcL1xcLy9nKSkge1xuICAgICAgcmVzdWx0ID0gTGlua1JlbmRlclR5cGUuTElOSztcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0gTGlua1JlbmRlclR5cGUuVEVYVE9OTFk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBhc3luYyBkb3dubG9hZEZpbGUoKSB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuaXNEb3dubG9hZGluZyA9IHRydWU7XG4gICAgICBjb25zdCBiaW5hcnk6IEZpbGUgPSBhd2FpdCB0aGlzLnJlcG9zaXRvcnlTZXJ2aWNlLmdldEJpbmFyeUZpbGUodGhpcy51cmwsIHtcbiAgICAgICAgYWxsb3dFeHRlcm5hbDogZmFsc2VcbiAgICAgIH0pO1xuICAgICAgdGhpcy5pc0Rvd25sb2FkaW5nID0gZmFsc2U7XG4gICAgICBzYXZlQXMoYmluYXJ5KTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgdGhpcy5pc0Rvd25sb2FkaW5nID0gZmFsc2U7XG4gICAgICBpZiAoZXgpIHtcbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShleCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCI8YVxuICAqbmdJZj1cImRldGVybWluZUJlaGF2aW9yKCkgPT09IGxpbmtSZW5kZXJUeXBlLkxJTktcIlxuICBocmVmPVwie3sgdXJsIH19XCJcbiAgY2xhc3M9XCJwb2ludGVyXCJcbiAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4+XG4gIHt7IGdldEJpbmFyeU5hbWUkKHVybCkgfCBhc3luYyB9fVxuPC9hPlxuXG48c3BhbiAqbmdJZj1cImRldGVybWluZUJlaGF2aW9yKCkgPT09IGxpbmtSZW5kZXJUeXBlLlRFWFRPTkxZXCI+e3tcbiAgZ2V0QmluYXJ5TmFtZSQodXJsKSB8IGFzeW5jXG59fTwvc3Bhbj5cblxuPHNwYW4gKm5nSWY9XCJkZXRlcm1pbmVCZWhhdmlvcigpID09PSBsaW5rUmVuZGVyVHlwZS5ET1dOTE9BRFwiPlxuICA8YSAqbmdJZj1cIiFpc0Rvd25sb2FkaW5nXCIgY2xhc3M9XCJwb2ludGVyXCIgKGNsaWNrKT1cImRvd25sb2FkRmlsZSgpXCI+XG4gICAge3sgZ2V0QmluYXJ5TmFtZSQodXJsKSB8IGFzeW5jIH19XG4gIDwvYT5cblxuICA8c3BhbiAqbmdJZj1cImlzRG93bmxvYWRpbmdcIj5cbiAgICA8aSBjOHlJY29uPVwic3Bpbm5lclwiIGNsYXNzPVwiaWNvbi1zcGluXCI+PC9pPiB7eyAnRG93bmxvYWRpbmfigKYnIHwgdHJhbnNsYXRlIH19XG4gIDwvc3Bhbj5cbjwvc3Bhbj5cbiJdfQ==