public downloadData()

in ui/projects/streampipes/shared-ui/src/lib/dialog/data-download-dialog/services/data-export.service.ts [44:105]


    public downloadData(
        exportConfig: ExportConfig,
        dataDownloadDialogModel: DataDownloadDialogModel,
    ) {
        let downloadRequest;

        if (
            exportConfig.dataExportConfig.dataRangeConfiguration === 'visible'
        ) {
            downloadRequest = this.dataLakeRestService.downloadQueriedData(
                exportConfig.dataExportConfig.measurement,
                exportConfig.formatExportConfig,
                exportConfig.dataExportConfig.missingValueBehaviour,
                this.generateQueryRequest(
                    exportConfig,
                    dataDownloadDialogModel,
                ),
            );
        } else {
            // case for 'all' and 'customInverval'
            let startTime,
                endTime = undefined;
            if (
                exportConfig.dataExportConfig.dataRangeConfiguration ===
                'customInterval'
            ) {
                startTime =
                    exportConfig.dataExportConfig.dateRange.startDate.getTime();
                endTime =
                    exportConfig.dataExportConfig.dateRange.endDate.getTime();
            }
            downloadRequest = this.dataLakeRestService.downloadRawData(
                exportConfig.dataExportConfig.measurement,
                exportConfig.formatExportConfig,
                exportConfig.dataExportConfig.missingValueBehaviour,
                startTime,
                endTime,
            );
        }

        downloadRequest.subscribe(event => {
            let downloadProgress: DownloadProgress;
            // progress
            if (event.type === HttpEventType.DownloadProgress) {
                downloadProgress = {
                    downloadedMBs: event.loaded / 1024 / 1014,
                    finished: false,
                };
                this.updateDownloadProgress.emit(downloadProgress);
            }

            // finished
            if (event.type === HttpEventType.Response) {
                this.createFile(event.body, exportConfig);
                downloadProgress = {
                    downloadedMBs: event.loaded / 1024 / 1014,
                    finished: true,
                };
                this.updateDownloadProgress.emit(downloadProgress);
            }
        });
    }