From e0ce6c3a9496750c4e012e903bb1bc8b81586c49 Mon Sep 17 00:00:00 2001 From: Oscar Kilhed Date: Thu, 8 Jun 2023 10:24:49 +0200 Subject: [PATCH] Drag&Drop: Dynamically load sheets module (#69536) dynamically load sheets module --- public/app/features/dataframe-import/utils.ts | 45 ++++++++++--------- 1 file changed, 25 insertions(+), 20 deletions(-) diff --git a/public/app/features/dataframe-import/utils.ts b/public/app/features/dataframe-import/utils.ts index f69af7040f2..83bb58383a5 100644 --- a/public/app/features/dataframe-import/utils.ts +++ b/public/app/features/dataframe-import/utils.ts @@ -2,7 +2,6 @@ import { Accept } from 'react-dropzone'; import { Observable } from 'rxjs'; import { toDataFrame } from '@grafana/data'; -import { readSpreadsheet } from 'app/core/utils/sheet'; import { FileImportResult } from './types'; @@ -27,24 +26,30 @@ export function formatFileTypes(acceptedFiles: Accept) { export function filesToDataframes(files: File[]): Observable { return new Observable((subscriber) => { let completedFiles = 0; - files.forEach((file) => { - const reader = new FileReader(); - reader.readAsArrayBuffer(file); - reader.onload = () => { - const result = reader.result; - if (result && result instanceof ArrayBuffer) { - if (file.type === 'application/json') { - const decoder = new TextDecoder('utf-8'); - const json = JSON.parse(decoder.decode(result)); - subscriber.next({ dataFrames: [toDataFrame(json)], file: file }); - } else { - subscriber.next({ dataFrames: readSpreadsheet(result), file: file }); - } - if (++completedFiles >= files.length) { - subscriber.complete(); - } - } - }; - }); + import('app/core/utils/sheet') + .then((sheet) => { + files.forEach((file) => { + const reader = new FileReader(); + reader.readAsArrayBuffer(file); + reader.onload = () => { + const result = reader.result; + if (result && result instanceof ArrayBuffer) { + if (file.type === 'application/json') { + const decoder = new TextDecoder('utf-8'); + const json = JSON.parse(decoder.decode(result)); + subscriber.next({ dataFrames: [toDataFrame(json)], file: file }); + } else { + subscriber.next({ dataFrames: sheet.readSpreadsheet(result), file: file }); + } + if (++completedFiles >= files.length) { + subscriber.complete(); + } + } + }; + }); + }) + .catch(() => { + throw 'Failed to load sheets module'; + }); }); }