UNPKG

@iotize/ionic

Version:

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

121 lines 13.1 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 { alertController; platform; dataToExportService; constructor(alertController, platform, dataToExportService) { this.alertController = alertController; this.platform = platform; this.dataToExportService = dataToExportService; } exportDataError = new EventEmitter(); exportedFileName; dataToExport; format; 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 */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ExportDataDirective, deps: [{ token: i1.AlertController }, { token: i1.Platform }, { token: i2.ExportDataService }], target: i0.ɵɵFactoryTarget.Directive }); /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", 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: "18.2.14", ngImport: i0, type: ExportDataDirective, decorators: [{ type: Directive, args: [{ selector: '[tapExportData]', }] }], ctorParameters: () => [{ 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LWRhdGEuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW90aXplLWlvbmljL21vbml0b3Jpbmcvc3JjL2xpYi91aS1kaXJlY3RpdmUvZXhwb3J0LWRhdGEuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7OztBQUsxRCxNQUFNLE9BQU8sbUJBQW1CO0lBRXJCO0lBQ0E7SUFDQztJQUhWLFlBQ1MsZUFBZ0MsRUFDaEMsUUFBa0IsRUFDakIsbUJBQXNDO1FBRnZDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2pCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBbUI7SUFDN0MsQ0FBQztJQUVNLGVBQWUsR0FBRyxJQUFJLFlBQVksRUFBUyxDQUFDO0lBQzdDLGdCQUFnQixDQUFVO0lBQzFCLFlBQVksQ0FBeUI7SUFDckMsTUFBTSxDQUFrQjtJQUdqQyxLQUFLLENBQUMsWUFBWTtRQUNoQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN4QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDO1FBQ2pDLENBQUM7UUFDRCxJQUFJLEtBQTBCLENBQUM7UUFDL0IsSUFBSSxJQUFJLEdBQ04sT0FBTyxJQUFJLENBQUMsWUFBWSxLQUFLLFVBQVU7WUFDckMsQ0FBQyxDQUFDLElBQUksQ0FB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LGdCQUFnQixNQUFNLENBQy9CLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztRQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0IsQ0FBQztJQUNILENBQUM7MkhBakdVLG1CQUFtQjsrR0FBbkIsbUJBQW1COzs0RkFBbkIsbUJBQW1CO2tCQUgvQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7aUJBQzVCOzJJQVFXLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0UsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUdBLFlBQVk7c0JBRGpCLFlBQVk7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWxlcnRDb250cm9sbGVyLCBQbGF0Zm9ybSB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IEV4cG9ydFRvQ3N2IH0gZnJvbSAnQGlvdGl6ZS9pb25pYyc7XG5pbXBvcnQgeyBFeHBvcnREYXRhU2VydmljZSB9IGZyb20gJy4vZXhwb3J0LWRhdGEuc2VydmljZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1t0YXBFeHBvcnREYXRhXScsXG59KVxuZXhwb3J0IGNsYXNzIEV4cG9ydERhdGFEaXJlY3RpdmUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgYWxlcnRDb250cm9sbGVyOiBBbGVydENvbnRyb2xsZXIsXG4gICAgcHVibGljIHBsYXRmb3JtOiBQbGF0Zm9ybSxcbiAgICBwcml2YXRlIGRhdGFUb0V4cG9ydFNlcnZpY2U6IEV4cG9ydERhdGFTZXJ2aWNlXG4gICkge31cblxuICBAT3V0cHV0KCkgZXhwb3J0RGF0YUVycm9yID0gbmV3IEV2ZW50RW1pdHRlcjxFcnJvcj4oKTtcbiAgQElucHV0KCkgZXhwb3J0ZWRGaWxlTmFtZT86IHN0cmluZztcbiAgQElucHV0KCkgZGF0YVRvRXhwb3J0PzogYW55W10gfCAoKCkgPT4gYW55W10pO1xuICBASW5wdXQoKSBmb3JtYXQ/OiAnY3N2JyB8ICdqc29uJztcblxuICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gIGFzeW5jIG9uQ2xpY2tFdmVudCgpIHtcbiAgICBpZiAodGhpcy5leHBvcnRlZEZpbGVOYW1lID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuZXhwb3J0ZWRGaWxlTmFtZSA9ICdkYXRhJztcbiAgICB9XG4gICAgbGV0IGFsZXJ0OiBIVE1MSW9uQWxlcnRFbGVtZW50O1xuICAgIGxldCBkYXRhID1cbiAgICAgIHR5cGVvZiB0aGlzLmRhdGFUb0V4cG9ydCA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICA/IHRoaXMuZGF0YVRvRXhwb3J0KClcbiAgICAgICAgOiB0aGlzLmRhdGFUb0V4cG9ydDtcbiAgICBpZiAoZGF0YT8ubGVuZ3RoICE9PSAwKSB7XG4gICAgICBpZiAoIXRoaXMuZm9ybWF0KSB7XG4gICAgICAgIGFsZXJ0ID0gYXdhaXQgdGhpcy5hbGVydENvbnRyb2xsZXIuY3JlYXRlKHtcbiAgICAgICAgICBoZWFkZXI6ICdFeHBvcnQgZGF0YScsXG4gICAgICAgICAgY3NzQ2xhc3M6ICdjdXN0b20tYWxlcnQnLFxuICAgICAgICAgIG1lc3NhZ2U6ICdTZWxlY3QgZmlsZSBmb3JtYXQnLFxuICAgICAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdGV4dDogJ0NTVicsXG4gICAgICAgICAgICAgIGhhbmRsZXI6IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmV4cG9ydFRvQ3N2KGRhdGEgYXMgYW55KTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHRleHQ6ICdKU09OJyxcbiAgICAgICAgICAgICAgaGFuZGxlcjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZXhwb3J0VG9Kc29uKGRhdGEpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9KTtcbiAgICAgICAgYXdhaXQgYWxlcnQucHJlc2VudCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3dpdGNoICh0aGlzLmZvcm1hdCkge1xuICAgICAgICAgIGNhc2UgJ2Nzdic6XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmV4cG9ydFRvQ3N2KGRhdGEpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnanNvbic6XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmV4cG9ydFRvSnNvbihkYXRhKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGFsZXJ0ID0gYXdhaXQgdGhpcy5hbGVydENvbnRyb2xsZXIuY3JlYXRlKHtcbiAgICAgICAgaGVhZGVyOiAnRXhwb3J0IGRhdGEnLFxuICAgICAgICBtZXNzYWdlOiAnQ2Fubm90IGV4cG9ydCBlbXB0eSBkYXRhLicsXG4gICAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0ZXh0OiAnT0snLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICAgIGF3YWl0IGFsZXJ0LnByZXNlbnQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGV4cG9ydFRvSnNvbihkYXRhOiBhbnlbXSB8IHVuZGVmaW5lZCkge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmRhdGFUb0V4cG9ydFNlcnZpY2UudHJpZ2dlckRvd25sb2FkKFxuICAgICAgICBuZXcgQmxvYihbSlNPTi5zdHJpbmdpZnkoZGF0YSwgbnVsbCwgNCldKSxcbiAgICAgICAgYCR7dGhpcy5leHBvcnRlZEZpbGVOYW1lfS5qc29uYFxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIHRoaXMuZXhwb3J0RGF0YUVycm9yLmVtaXQoZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBleHBvcnRUb0NzdihkYXRhOiBhbnkpIHtcbiAgICB0cnkge1xuICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgaWYgKCF0aGlzLmV4cG9ydGVkRmlsZU5hbWUpIHtcbiAgICAgICAgICB0aGlzLmV4cG9ydGVkRmlsZU5hbWUgPSAnZGF0YSc7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY3N2RXhwb3J0ID0gbmV3IEV4cG9ydFRvQ3N2KGRhdGEsIHRoaXMuZXhwb3J0ZWRGaWxlTmFtZSwge1xuICAgICAgICAgIGhlYWRlcnM6IE9iamVjdC5rZXlzKGRhdGFbMF0pLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgY3N2U3RyaW5nID0gY3N2RXhwb3J0LmNzdlRvU3RyaW5nKCk7XG4gICAgICAgIGF3YWl0IHRoaXMuZGF0YVRvRXhwb3J0U2VydmljZS50cmlnZ2VyRG93bmxvYWQoXG4gICAgICAgICAgbmV3IEJsb2IoW2NzdlN0cmluZ10pLFxuICAgICAgICAgIGAke3RoaXMuZXhwb3J0ZWRGaWxlTmFtZX0uY3N2YFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhpcy5leHBvcnREYXRhRXJyb3IuZW1pdChlKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==