UNPKG

@iotize/ionic

Version:

Iotize specific building blocks on top of @ionic/angular.

115 lines 12.9 kB
import { Directive, EventEmitter, HostListener, Input, Output, } from '@angular/core'; import { AlertController, Platform } from '@ionic/angular'; import { ExportToCsv } from '@iotize/ionic'; import { ExportDataService } from './export-data.service'; import * as i0 from "@angular/core"; import * as i1 from "@ionic/angular"; import * as i2 from "./export-data.service"; export class ExportDataDirective { constructor(alertController, platform, dataToExportService) { this.alertController = alertController; this.platform = platform; this.dataToExportService = dataToExportService; this.exportDataError = new EventEmitter(); } async onClickEvent() { if (this.exportedFileName === undefined) { this.exportedFileName = 'data'; } let alert; let data = typeof this.dataToExport === 'function' ? this.dataToExport() : this.dataToExport; if (data?.length !== 0) { if (!this.format) { alert = await this.alertController.create({ header: 'Export data', cssClass: 'custom-alert', message: 'Select file format', buttons: [ { text: 'CSV', handler: async () => { this.exportToCsv(data); }, }, { text: 'JSON', handler: () => { this.exportToJson(data); }, }, ], }); await alert.present(); } else { switch (this.format) { case 'csv': await this.exportToCsv(data); break; case 'json': await this.exportToJson(data); break; } } } else { const alert = await this.alertController.create({ header: 'Export data', message: 'Cannot export empty data.', buttons: [ { text: 'OK', }, ], }); await alert.present(); } } exportToJson(data) { try { this.dataToExportService.triggerDownload(new Blob([JSON.stringify(data, null, 4)]), `${this.exportedFileName}.json`); } catch (e) { this.exportDataError.emit(e); } } async exportToCsv(data) { try { if (data) { if (!this.exportedFileName) { this.exportedFileName = 'data'; } const csvExport = new ExportToCsv(data, this.exportedFileName, { headers: Object.keys(data[0]), }); const csvString = csvExport.csvToString(); await this.dataToExportService.triggerDownload(new Blob([csvString]), `${this.exportedFileName}.csv`); } } catch (e) { this.exportDataError.emit(e); } } } /** @nocollapse */ ExportDataDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ExportDataDirective, deps: [{ token: i1.AlertController }, { token: i1.Platform }, { token: i2.ExportDataService }], target: i0.ɵɵFactoryTarget.Directive }); /** @nocollapse */ ExportDataDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: ExportDataDirective, selector: "[tapExportData]", inputs: { exportedFileName: "exportedFileName", dataToExport: "dataToExport", format: "format" }, outputs: { exportDataError: "exportDataError" }, host: { listeners: { "click": "onClickEvent()" } }, ngImport: i0 }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ExportDataDirective, decorators: [{ type: Directive, args: [{ selector: '[tapExportData]', }] }], ctorParameters: function () { return [{ type: i1.AlertController }, { type: i1.Platform }, { type: i2.ExportDataService }]; }, propDecorators: { exportDataError: [{ type: Output }], exportedFileName: [{ type: Input }], dataToExport: [{ type: Input }], format: [{ type: Input }], onClickEvent: [{ type: HostListener, args: ['click'] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LWRhdGEuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW90aXplLWlvbmljL21vbml0b3Jpbmcvc3JjL2xpYi91aS1kaXJlY3RpdmUvZXhwb3J0LWRhdGEuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7OztBQUsxRCxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLFlBQ1MsZUFBZ0MsRUFDaEMsUUFBa0IsRUFDakIsbUJBQXNDO1FBRnZDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2pCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBbUI7UUFHdEMsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBUyxDQUFDO0lBRm5ELENBQUM7SUFRSixLQUFLLENBQUMsWUFBWTtRQUNoQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTLEVBQUU7WUFDdkMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE1BQU0sQ0FBQztTQUNoQztRQUNELElBQUksS0FBMEIsQ0FBQztRQUMvQixJQUFJLElBQUksR0FDTixPQUFPLElBQUksQ0FBQyxZQUFZLEtBQUssVUFBVTtZQUNyQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNyQixDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUN4QixJQUFJLElBQUksRUFBRSxNQUFNLEtB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L0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsaUJBQWlCO2lCQUM1Qjs2SkFRVyxlQUFlO3NCQUF4QixNQUFNO2dCQUNFLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFHQSxZQUFZO3NCQURqQixZQUFZO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFsZXJ0Q29udHJvbGxlciwgUGxhdGZvcm0gfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBFeHBvcnRUb0NzdiB9IGZyb20gJ0Bpb3RpemUvaW9uaWMnO1xuaW1wb3J0IHsgRXhwb3J0RGF0YVNlcnZpY2UgfSBmcm9tICcuL2V4cG9ydC1kYXRhLnNlcnZpY2UnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbdGFwRXhwb3J0RGF0YV0nLFxufSlcbmV4cG9ydCBjbGFzcyBFeHBvcnREYXRhRGlyZWN0aXZlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGFsZXJ0Q29udHJvbGxlcjogQWxlcnRDb250cm9sbGVyLFxuICAgIHB1YmxpYyBwbGF0Zm9ybTogUGxhdGZvcm0sXG4gICAgcHJpdmF0ZSBkYXRhVG9FeHBvcnRTZXJ2aWNlOiBFeHBvcnREYXRhU2VydmljZVxuICApIHt9XG5cbiAgQE91dHB1dCgpIGV4cG9ydERhdGFFcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8RXJyb3I+KCk7XG4gIEBJbnB1dCgpIGV4cG9ydGVkRmlsZU5hbWU/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRhdGFUb0V4cG9ydD86IGFueVtdIHwgKCgpID0+IGFueVtdKTtcbiAgQElucHV0KCkgZm9ybWF0PzogJ2NzdicgfCAnanNvbic7XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxuICBhc3luYyBvbkNsaWNrRXZlbnQoKSB7XG4gICAgaWYgKHRoaXMuZXhwb3J0ZWRGaWxlTmFtZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmV4cG9ydGVkRmlsZU5hbWUgPSAnZGF0YSc7XG4gICAgfVxuICAgIGxldCBhbGVydDogSFRNTElvbkFsZXJ0RWxlbWVudDtcbiAgICBsZXQgZGF0YSA9XG4gICAgICB0eXBlb2YgdGhpcy5kYXRhVG9FeHBvcnQgPT09ICdmdW5jdGlvbidcbiAgICAgICAgPyB0aGlzLmRhdGFUb0V4cG9ydCgpXG4gICAgICAgIDogdGhpcy5kYXRhVG9FeHBvcnQ7XG4gICAgaWYgKGRhdGE/Lmxlbmd0aCAhPT0gMCkge1xuICAgICAgaWYgKCF0aGlzLmZvcm1hdCkge1xuICAgICAgICBhbGVydCA9IGF3YWl0IHRoaXMuYWxlcnRDb250cm9sbGVyLmNyZWF0ZSh7XG4gICAgICAgICAgaGVhZGVyOiAnRXhwb3J0IGRhdGEnLFxuICAgICAgICAgIGNzc0NsYXNzOiAnY3VzdG9tLWFsZXJ0JyxcbiAgICAgICAgICBtZXNzYWdlOiAnU2VsZWN0IGZpbGUgZm9ybWF0JyxcbiAgICAgICAgICBidXR0b25zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHRleHQ6ICdDU1YnLFxuICAgICAgICAgICAgICBoYW5kbGVyOiBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5leHBvcnRUb0NzdihkYXRhIGFzIGFueSk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0ZXh0OiAnSlNPTicsXG4gICAgICAgICAgICAgIGhhbmRsZXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmV4cG9ydFRvSnNvbihkYXRhKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSk7XG4gICAgICAgIGF3YWl0IGFsZXJ0LnByZXNlbnQoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5mb3JtYXQpIHtcbiAgICAgICAgICBjYXNlICdjc3YnOlxuICAgICAgICAgICAgYXdhaXQgdGhpcy5leHBvcnRUb0NzdihkYXRhKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ2pzb24nOlxuICAgICAgICAgICAgYXdhaXQgdGhpcy5leHBvcnRUb0pzb24oZGF0YSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBhbGVydCA9IGF3YWl0IHRoaXMuYWxlcnRDb250cm9sbGVyLmNyZWF0ZSh7XG4gICAgICAgIGhlYWRlcjogJ0V4cG9ydCBkYXRhJyxcbiAgICAgICAgbWVzc2FnZTogJ0Nhbm5vdCBleHBvcnQgZW1wdHkgZGF0YS4nLFxuICAgICAgICBidXR0b25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdGV4dDogJ09LJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG4gICAgICBhd2FpdCBhbGVydC5wcmVzZW50KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBleHBvcnRUb0pzb24oZGF0YTogYW55W10gfCB1bmRlZmluZWQpIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5kYXRhVG9FeHBvcnRTZXJ2aWNlLnRyaWdnZXJEb3dubG9hZChcbiAgICAgICAgbmV3IEJsb2IoW0pTT04uc3RyaW5naWZ5KGRhdGEsIG51bGwsIDQpXSksXG4gICAgICAgIGAke3RoaXMuZXhwb3J0ZWRGaWxlTmFtZX0uanNvbmBcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICB0aGlzLmV4cG9ydERhdGFFcnJvci5lbWl0KGUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZXhwb3J0VG9Dc3YoZGF0YTogYW55KSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgIGlmICghdGhpcy5leHBvcnRlZEZpbGVOYW1lKSB7XG4gICAgICAgICAgdGhpcy5leHBvcnRlZEZpbGVOYW1lID0gJ2RhdGEnO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNzdkV4cG9ydCA9IG5ldyBFeHBvcnRUb0NzdihkYXRhLCB0aGlzLmV4cG9ydGVkRmlsZU5hbWUsIHtcbiAgICAgICAgICBoZWFkZXJzOiBPYmplY3Qua2V5cyhkYXRhWzBdKSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGNzdlN0cmluZyA9IGNzdkV4cG9ydC5jc3ZUb1N0cmluZygpO1xuICAgICAgICBhd2FpdCB0aGlzLmRhdGFUb0V4cG9ydFNlcnZpY2UudHJpZ2dlckRvd25sb2FkKFxuICAgICAgICAgIG5ldyBCbG9iKFtjc3ZTdHJpbmddKSxcbiAgICAgICAgICBgJHt0aGlzLmV4cG9ydGVkRmlsZU5hbWV9LmNzdmBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIHRoaXMuZXhwb3J0RGF0YUVycm9yLmVtaXQoZSk7XG4gICAgfVxuICB9XG59XG4iXX0=