diff --git a/plugins/spreadsheet-view/src/SpreadsheetView/components/Spreadsheet.tsx b/plugins/spreadsheet-view/src/SpreadsheetView/components/Spreadsheet.tsx index 0be6409727..d76c5a21aa 100644 --- a/plugins/spreadsheet-view/src/SpreadsheetView/components/Spreadsheet.tsx +++ b/plugins/spreadsheet-view/src/SpreadsheetView/components/Spreadsheet.tsx @@ -34,6 +34,7 @@ const DataTable = observer(function ({ model }: { model: SpreadsheetModel }) { field: m, width: widths[i], })) + return (
() + const rows = lines.map(l => { + const [CHROM, POS, ID, REF, ALT, QUAL, FILTER, INFO, FORMAT] = l.split('\t') + const ret = Object.fromEntries( + INFO?.split(';').map(e => { + const [key, val = true] = e.split('=') + keys.add(key) + return [key, val] + }) || [], + ) + return { CHROM, POS, ID, REF, ALT, QUAL, FILTER, INFO, FORMAT, ...ret } + }) return { vcfParser, - rows: body.split(/\n|\r\n/).map((row, idx) => { - const [CHROM, POS, ID, REF, ALT, QUAL, FILTER, INFO, FORMAT] = - row.split('\t') + rows: rows.map((row, idx) => { return { - CHROM, - POS, - ID, - REF, - ALT, - QUAL, - FILTER, - INFO, - FORMAT, + ...row, id: idx, __lineData: row, } @@ -33,8 +37,8 @@ export function parseVcfBuffer(buffer: Buffer, options: ParseOptions = {}) { 'ALT', 'QUAL', 'FILTER', - 'INFO', 'FORMAT', + ...keys, ], assemblyName: selectedAssemblyName, }