Submit
Path:
~
/
/
usr
/
share
/
grafana
/
public
/
app
/
features
/
dataframe-import
/
File Content:
utils.ts
import { Accept } from 'react-dropzone'; import { Observable } from 'rxjs'; import { toDataFrame } from '@grafana/data'; import { FileImportResult } from './types'; function getFileExtensions(acceptedFiles: Accept) { const fileExtentions = new Set<string>(); Object.keys(acceptedFiles).forEach((v) => { acceptedFiles[v].forEach((extension) => { fileExtentions.add(extension); }); }); return fileExtentions; } export function formatFileTypes(acceptedFiles: Accept) { const fileExtentions = Array.from(getFileExtensions(acceptedFiles)); if (fileExtentions.length === 1) { return fileExtentions[0]; } return `${fileExtentions.slice(0, -1).join(', ')} or ${fileExtentions.slice(-1)}`; } export function filesToDataframes(files: File[]): Observable<FileImportResult> { return new Observable<FileImportResult>((subscriber) => { let completedFiles = 0; 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'; }); }); }
Edit
Rename
Chmod
Delete
FILE
FOLDER
INFO
Name
Size
Permission
Action
constants.ts
465 bytes
0644
index.ts
54 bytes
0644
types.ts
123 bytes
0644
utils.test.ts
981 bytes
0644
utils.ts
1837 bytes
0644
N4ST4R_ID | Naxtarrr