@jbrowse/plugin-spreadsheet-view 2.17.0 → 2.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/LaunchSpreadsheetView/index.d.ts +1 -1
- package/dist/LaunchSpreadsheetView/index.js +1 -3
- package/dist/SpreadsheetView/ImportWizard.d.ts +51 -0
- package/dist/SpreadsheetView/ImportWizard.js +240 -0
- package/dist/SpreadsheetView/SpreadsheetModel.d.ts +79 -0
- package/dist/SpreadsheetView/SpreadsheetModel.js +133 -0
- package/dist/SpreadsheetView/SpreadsheetViewModel.d.ts +299 -0
- package/dist/SpreadsheetView/SpreadsheetViewModel.js +94 -0
- package/dist/SpreadsheetView/components/BreakendMultiLevelOptionDialog.d.ts +1 -0
- package/dist/SpreadsheetView/components/BreakendMultiLevelOptionDialog.js +5 -0
- package/dist/SpreadsheetView/components/BreakendSingleLevelOptionDialog.d.ts +1 -0
- package/dist/SpreadsheetView/components/BreakendSingleLevelOptionDialog.js +5 -0
- package/dist/SpreadsheetView/components/FeatureMenu.d.ts +8 -0
- package/dist/SpreadsheetView/components/FeatureMenu.js +95 -0
- package/dist/SpreadsheetView/components/ImportWizard.d.ts +2 -2
- package/dist/SpreadsheetView/components/ImportWizard.js +40 -43
- package/dist/SpreadsheetView/components/LocationCell.d.ts +8 -0
- package/dist/SpreadsheetView/components/LocationCell.js +31 -0
- package/dist/SpreadsheetView/components/NumberEditor.d.ts +1 -1
- package/dist/SpreadsheetView/components/NumberEditor.js +1 -3
- package/dist/SpreadsheetView/components/SpreadsheetDataGrid.d.ts +6 -0
- package/dist/SpreadsheetView/components/SpreadsheetDataGrid.js +27 -0
- package/dist/SpreadsheetView/components/SpreadsheetView.d.ts +3 -3
- package/dist/SpreadsheetView/components/SpreadsheetView.js +23 -44
- package/dist/SpreadsheetView/components/TrackSelector.d.ts +7 -0
- package/dist/SpreadsheetView/components/TrackSelector.js +49 -0
- package/dist/SpreadsheetView/importAdapters/BedImport.d.ts +26 -17
- package/dist/SpreadsheetView/importAdapters/BedImport.js +53 -139
- package/dist/SpreadsheetView/importAdapters/BedpeImport.d.ts +36 -0
- package/dist/SpreadsheetView/importAdapters/BedpeImport.js +79 -0
- package/dist/SpreadsheetView/importAdapters/STARFusionImport.d.ts +25 -9
- package/dist/SpreadsheetView/importAdapters/STARFusionImport.js +27 -62
- package/dist/SpreadsheetView/importAdapters/VcfImport.d.ts +19 -12
- package/dist/SpreadsheetView/importAdapters/VcfImport.js +53 -98
- package/dist/SpreadsheetView/importAdapters/isNumber.d.ts +1 -0
- package/dist/SpreadsheetView/importAdapters/isNumber.js +14 -0
- package/dist/SpreadsheetView/importAdapters/util.d.ts +2 -0
- package/dist/SpreadsheetView/importAdapters/util.js +22 -0
- package/dist/SpreadsheetView/index.d.ts +2 -2
- package/dist/SpreadsheetView/index.js +2 -2
- package/dist/SpreadsheetView/util.d.ts +7 -0
- package/dist/SpreadsheetView/util.js +13 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -3
- package/esm/LaunchSpreadsheetView/index.d.ts +1 -1
- package/esm/LaunchSpreadsheetView/index.js +1 -3
- package/esm/SpreadsheetView/ImportWizard.d.ts +51 -0
- package/esm/SpreadsheetView/ImportWizard.js +214 -0
- package/esm/SpreadsheetView/SpreadsheetModel.d.ts +79 -0
- package/esm/SpreadsheetView/SpreadsheetModel.js +127 -0
- package/esm/SpreadsheetView/SpreadsheetViewModel.d.ts +299 -0
- package/esm/SpreadsheetView/SpreadsheetViewModel.js +88 -0
- package/esm/SpreadsheetView/components/BreakendMultiLevelOptionDialog.d.ts +1 -0
- package/esm/SpreadsheetView/components/BreakendMultiLevelOptionDialog.js +1 -0
- package/esm/SpreadsheetView/components/BreakendSingleLevelOptionDialog.d.ts +1 -0
- package/esm/SpreadsheetView/components/BreakendSingleLevelOptionDialog.js +1 -0
- package/esm/SpreadsheetView/components/FeatureMenu.d.ts +8 -0
- package/esm/SpreadsheetView/components/FeatureMenu.js +66 -0
- package/esm/SpreadsheetView/components/ImportWizard.d.ts +2 -2
- package/esm/SpreadsheetView/components/ImportWizard.js +41 -44
- package/esm/SpreadsheetView/components/LocationCell.d.ts +8 -0
- package/esm/SpreadsheetView/components/LocationCell.js +25 -0
- package/esm/SpreadsheetView/components/NumberEditor.d.ts +1 -1
- package/esm/SpreadsheetView/components/NumberEditor.js +2 -4
- package/esm/SpreadsheetView/components/SpreadsheetDataGrid.d.ts +6 -0
- package/esm/SpreadsheetView/components/SpreadsheetDataGrid.js +22 -0
- package/esm/SpreadsheetView/components/SpreadsheetView.d.ts +3 -3
- package/esm/SpreadsheetView/components/SpreadsheetView.js +24 -45
- package/esm/SpreadsheetView/components/TrackSelector.d.ts +7 -0
- package/esm/SpreadsheetView/components/TrackSelector.js +24 -0
- package/esm/SpreadsheetView/importAdapters/BedImport.d.ts +26 -17
- package/esm/SpreadsheetView/importAdapters/BedImport.js +53 -137
- package/esm/SpreadsheetView/importAdapters/BedpeImport.d.ts +36 -0
- package/esm/SpreadsheetView/importAdapters/BedpeImport.js +76 -0
- package/esm/SpreadsheetView/importAdapters/STARFusionImport.d.ts +25 -9
- package/esm/SpreadsheetView/importAdapters/STARFusionImport.js +27 -62
- package/esm/SpreadsheetView/importAdapters/VcfImport.d.ts +19 -12
- package/esm/SpreadsheetView/importAdapters/VcfImport.js +53 -97
- package/esm/SpreadsheetView/importAdapters/isNumber.d.ts +1 -0
- package/esm/SpreadsheetView/importAdapters/isNumber.js +11 -0
- package/esm/SpreadsheetView/importAdapters/util.d.ts +2 -0
- package/esm/SpreadsheetView/importAdapters/util.js +18 -0
- package/esm/SpreadsheetView/index.d.ts +2 -2
- package/esm/SpreadsheetView/index.js +2 -2
- package/esm/SpreadsheetView/util.d.ts +7 -0
- package/esm/SpreadsheetView/util.js +10 -0
- package/esm/index.d.ts +1 -1
- package/esm/index.js +1 -3
- package/package.json +6 -6
- package/dist/SpreadsheetView/components/CellData.d.ts +0 -9
- package/dist/SpreadsheetView/components/CellData.js +0 -14
- package/dist/SpreadsheetView/components/ColumnFilterControls.d.ts +0 -3
- package/dist/SpreadsheetView/components/ColumnFilterControls.js +0 -58
- package/dist/SpreadsheetView/components/ColumnMenu.d.ts +0 -16
- package/dist/SpreadsheetView/components/ColumnMenu.js +0 -140
- package/dist/SpreadsheetView/components/DataRow.d.ts +0 -12
- package/dist/SpreadsheetView/components/DataRow.js +0 -81
- package/dist/SpreadsheetView/components/DataTable.d.ts +0 -10
- package/dist/SpreadsheetView/components/DataTable.js +0 -42
- package/dist/SpreadsheetView/components/DataTableHeader.d.ts +0 -6
- package/dist/SpreadsheetView/components/DataTableHeader.js +0 -104
- package/dist/SpreadsheetView/components/GlobalFilterControls.d.ts +0 -5
- package/dist/SpreadsheetView/components/GlobalFilterControls.js +0 -68
- package/dist/SpreadsheetView/components/RowCountMessage.d.ts +0 -6
- package/dist/SpreadsheetView/components/RowCountMessage.js +0 -33
- package/dist/SpreadsheetView/components/RowMenu.d.ts +0 -9
- package/dist/SpreadsheetView/components/RowMenu.js +0 -39
- package/dist/SpreadsheetView/components/SortIndicator.d.ts +0 -6
- package/dist/SpreadsheetView/components/SortIndicator.js +0 -27
- package/dist/SpreadsheetView/components/Spreadsheet.d.ts +0 -11
- package/dist/SpreadsheetView/components/Spreadsheet.js +0 -25
- package/dist/SpreadsheetView/components/StatusBar.d.ts +0 -11
- package/dist/SpreadsheetView/components/StatusBar.js +0 -44
- package/dist/SpreadsheetView/importAdapters/ImportUtils.d.ts +0 -42
- package/dist/SpreadsheetView/importAdapters/ImportUtils.js +0 -123
- package/dist/SpreadsheetView/models/ColumnDataTypes/LocEnd.d.ts +0 -12
- package/dist/SpreadsheetView/models/ColumnDataTypes/LocEnd.js +0 -20
- package/dist/SpreadsheetView/models/ColumnDataTypes/LocRef.d.ts +0 -12
- package/dist/SpreadsheetView/models/ColumnDataTypes/LocRef.js +0 -20
- package/dist/SpreadsheetView/models/ColumnDataTypes/LocStart.d.ts +0 -12
- package/dist/SpreadsheetView/models/ColumnDataTypes/LocStart.js +0 -20
- package/dist/SpreadsheetView/models/ColumnDataTypes/LocString.d.ts +0 -13
- package/dist/SpreadsheetView/models/ColumnDataTypes/LocString.js +0 -183
- package/dist/SpreadsheetView/models/ColumnDataTypes/MakeSpreadsheetColumnType.d.ts +0 -19
- package/dist/SpreadsheetView/models/ColumnDataTypes/MakeSpreadsheetColumnType.js +0 -23
- package/dist/SpreadsheetView/models/ColumnDataTypes/Number.d.ts +0 -30
- package/dist/SpreadsheetView/models/ColumnDataTypes/Number.js +0 -126
- package/dist/SpreadsheetView/models/ColumnDataTypes/Text.d.ts +0 -28
- package/dist/SpreadsheetView/models/ColumnDataTypes/Text.js +0 -129
- package/dist/SpreadsheetView/models/ColumnDataTypes/index.d.ts +0 -71
- package/dist/SpreadsheetView/models/ColumnDataTypes/index.js +0 -37
- package/dist/SpreadsheetView/models/FilterControls.d.ts +0 -26
- package/dist/SpreadsheetView/models/FilterControls.js +0 -85
- package/dist/SpreadsheetView/models/ImportWizard.d.ts +0 -31
- package/dist/SpreadsheetView/models/ImportWizard.js +0 -186
- package/dist/SpreadsheetView/models/Row.d.ts +0 -17
- package/dist/SpreadsheetView/models/Row.js +0 -43
- package/dist/SpreadsheetView/models/Spreadsheet.d.ts +0 -260
- package/dist/SpreadsheetView/models/Spreadsheet.js +0 -174
- package/dist/SpreadsheetView/models/SpreadsheetView.d.ts +0 -482
- package/dist/SpreadsheetView/models/SpreadsheetView.js +0 -199
- package/dist/SpreadsheetView/models/StaticRowSet.d.ts +0 -163
- package/dist/SpreadsheetView/models/StaticRowSet.js +0 -56
- package/esm/SpreadsheetView/components/CellData.d.ts +0 -9
- package/esm/SpreadsheetView/components/CellData.js +0 -9
- package/esm/SpreadsheetView/components/ColumnFilterControls.d.ts +0 -3
- package/esm/SpreadsheetView/components/ColumnFilterControls.js +0 -53
- package/esm/SpreadsheetView/components/ColumnMenu.d.ts +0 -16
- package/esm/SpreadsheetView/components/ColumnMenu.js +0 -135
- package/esm/SpreadsheetView/components/DataRow.d.ts +0 -12
- package/esm/SpreadsheetView/components/DataRow.js +0 -76
- package/esm/SpreadsheetView/components/DataTable.d.ts +0 -10
- package/esm/SpreadsheetView/components/DataTable.js +0 -37
- package/esm/SpreadsheetView/components/DataTableHeader.d.ts +0 -6
- package/esm/SpreadsheetView/components/DataTableHeader.js +0 -76
- package/esm/SpreadsheetView/components/GlobalFilterControls.d.ts +0 -5
- package/esm/SpreadsheetView/components/GlobalFilterControls.js +0 -40
- package/esm/SpreadsheetView/components/RowCountMessage.d.ts +0 -6
- package/esm/SpreadsheetView/components/RowCountMessage.js +0 -28
- package/esm/SpreadsheetView/components/RowMenu.d.ts +0 -9
- package/esm/SpreadsheetView/components/RowMenu.js +0 -34
- package/esm/SpreadsheetView/components/SortIndicator.d.ts +0 -6
- package/esm/SpreadsheetView/components/SortIndicator.js +0 -21
- package/esm/SpreadsheetView/components/Spreadsheet.d.ts +0 -11
- package/esm/SpreadsheetView/components/Spreadsheet.js +0 -20
- package/esm/SpreadsheetView/components/StatusBar.d.ts +0 -11
- package/esm/SpreadsheetView/components/StatusBar.js +0 -39
- package/esm/SpreadsheetView/importAdapters/ImportUtils.d.ts +0 -42
- package/esm/SpreadsheetView/importAdapters/ImportUtils.js +0 -95
- package/esm/SpreadsheetView/models/ColumnDataTypes/LocEnd.d.ts +0 -12
- package/esm/SpreadsheetView/models/ColumnDataTypes/LocEnd.js +0 -15
- package/esm/SpreadsheetView/models/ColumnDataTypes/LocRef.d.ts +0 -12
- package/esm/SpreadsheetView/models/ColumnDataTypes/LocRef.js +0 -15
- package/esm/SpreadsheetView/models/ColumnDataTypes/LocStart.d.ts +0 -12
- package/esm/SpreadsheetView/models/ColumnDataTypes/LocStart.js +0 -15
- package/esm/SpreadsheetView/models/ColumnDataTypes/LocString.d.ts +0 -13
- package/esm/SpreadsheetView/models/ColumnDataTypes/LocString.js +0 -178
- package/esm/SpreadsheetView/models/ColumnDataTypes/MakeSpreadsheetColumnType.d.ts +0 -19
- package/esm/SpreadsheetView/models/ColumnDataTypes/MakeSpreadsheetColumnType.js +0 -20
- package/esm/SpreadsheetView/models/ColumnDataTypes/Number.d.ts +0 -30
- package/esm/SpreadsheetView/models/ColumnDataTypes/Number.js +0 -119
- package/esm/SpreadsheetView/models/ColumnDataTypes/Text.d.ts +0 -28
- package/esm/SpreadsheetView/models/ColumnDataTypes/Text.js +0 -122
- package/esm/SpreadsheetView/models/ColumnDataTypes/index.d.ts +0 -71
- package/esm/SpreadsheetView/models/ColumnDataTypes/index.js +0 -29
- package/esm/SpreadsheetView/models/FilterControls.d.ts +0 -26
- package/esm/SpreadsheetView/models/FilterControls.js +0 -83
- package/esm/SpreadsheetView/models/ImportWizard.d.ts +0 -31
- package/esm/SpreadsheetView/models/ImportWizard.js +0 -161
- package/esm/SpreadsheetView/models/Row.d.ts +0 -17
- package/esm/SpreadsheetView/models/Row.js +0 -41
- package/esm/SpreadsheetView/models/Spreadsheet.d.ts +0 -260
- package/esm/SpreadsheetView/models/Spreadsheet.js +0 -169
- package/esm/SpreadsheetView/models/SpreadsheetView.d.ts +0 -482
- package/esm/SpreadsheetView/models/SpreadsheetView.js +0 -194
- package/esm/SpreadsheetView/models/StaticRowSet.d.ts +0 -163
- package/esm/SpreadsheetView/models/StaticRowSet.js +0 -51
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { Checkbox, IconButton, FormControlLabel } from '@mui/material';
|
|
3
|
-
import { observer } from 'mobx-react';
|
|
4
|
-
import { indigo } from '@mui/material/colors';
|
|
5
|
-
import { makeStyles } from 'tss-react/mui';
|
|
6
|
-
// icons
|
|
7
|
-
import ArrowDropDown from '@mui/icons-material/ArrowDropDown';
|
|
8
|
-
import CellData from './CellData';
|
|
9
|
-
const useStyles = makeStyles()(theme => ({
|
|
10
|
-
rowNumCell: {
|
|
11
|
-
textAlign: 'left',
|
|
12
|
-
border: `1px solid ${theme.palette.action.disabledBackground}`,
|
|
13
|
-
position: 'relative',
|
|
14
|
-
padding: '0 2px 0 0',
|
|
15
|
-
whiteSpace: 'nowrap',
|
|
16
|
-
userSelect: 'none',
|
|
17
|
-
},
|
|
18
|
-
rowNumber: {
|
|
19
|
-
fontWeight: 'normal',
|
|
20
|
-
display: 'inline-block',
|
|
21
|
-
flex: 'none',
|
|
22
|
-
paddingRight: '20px',
|
|
23
|
-
margin: 0,
|
|
24
|
-
whiteSpace: 'nowrap',
|
|
25
|
-
},
|
|
26
|
-
rowMenuButton: {
|
|
27
|
-
padding: 0,
|
|
28
|
-
margin: 0,
|
|
29
|
-
position: 'absolute',
|
|
30
|
-
right: 0,
|
|
31
|
-
display: 'inline-block',
|
|
32
|
-
whiteSpace: 'nowrap',
|
|
33
|
-
flex: 'none',
|
|
34
|
-
},
|
|
35
|
-
rowMenuButtonIcon: {},
|
|
36
|
-
rowSelector: {
|
|
37
|
-
position: 'relative',
|
|
38
|
-
top: '-2px',
|
|
39
|
-
margin: 0,
|
|
40
|
-
padding: '0 0.2rem',
|
|
41
|
-
},
|
|
42
|
-
dataRowSelected: {
|
|
43
|
-
background: indigo[100],
|
|
44
|
-
'& th': {
|
|
45
|
-
background: indigo[100],
|
|
46
|
-
},
|
|
47
|
-
},
|
|
48
|
-
}));
|
|
49
|
-
const DataRow = observer(function ({ rowModel, rowNumber, spreadsheetModel, }) {
|
|
50
|
-
const { classes } = useStyles();
|
|
51
|
-
const { hideRowSelection, columnDisplayOrder } = spreadsheetModel;
|
|
52
|
-
let rowClass = '';
|
|
53
|
-
if (rowModel.isSelected) {
|
|
54
|
-
rowClass += classes.dataRowSelected;
|
|
55
|
-
}
|
|
56
|
-
function labelClick(evt) {
|
|
57
|
-
rowModel.toggleSelect();
|
|
58
|
-
evt.stopPropagation();
|
|
59
|
-
evt.preventDefault();
|
|
60
|
-
}
|
|
61
|
-
return (React.createElement("tr", { className: rowClass },
|
|
62
|
-
React.createElement("td", { className: classes.rowNumCell, onClick: labelClick },
|
|
63
|
-
hideRowSelection ? (React.createElement(FormControlLabel, { className: classes.rowNumber, control: React.createElement(Checkbox, { className: classes.rowSelector, checked: rowModel.isSelected, onClick: labelClick }), label: rowModel.id })) : null,
|
|
64
|
-
React.createElement(IconButton, { className: classes.rowMenuButton, onClick: event => {
|
|
65
|
-
spreadsheetModel.setRowMenuPosition({
|
|
66
|
-
anchorEl: event.currentTarget,
|
|
67
|
-
rowNumber,
|
|
68
|
-
});
|
|
69
|
-
event.preventDefault();
|
|
70
|
-
event.stopPropagation();
|
|
71
|
-
} },
|
|
72
|
-
React.createElement(ArrowDropDown, { className: classes.rowMenuButtonIcon }))),
|
|
73
|
-
columnDisplayOrder.map(colNumber => (React.createElement("td", { key: colNumber },
|
|
74
|
-
React.createElement(CellData, { cell: rowModel.cellsWithDerived[colNumber], spreadsheetModel: spreadsheetModel, columnNumber: colNumber }))))));
|
|
75
|
-
});
|
|
76
|
-
export default DataRow;
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { Instance } from 'mobx-state-tree';
|
|
3
|
-
import type SpreadsheetStateModel from '../models/Spreadsheet';
|
|
4
|
-
type SpreadsheetModel = Instance<typeof SpreadsheetStateModel>;
|
|
5
|
-
declare const DataTable: ({ model, page, rowsPerPage, }: {
|
|
6
|
-
model: SpreadsheetModel;
|
|
7
|
-
page: number;
|
|
8
|
-
rowsPerPage: number;
|
|
9
|
-
}) => React.JSX.Element;
|
|
10
|
-
export default DataTable;
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { observer } from 'mobx-react';
|
|
3
|
-
import { getParent } from 'mobx-state-tree';
|
|
4
|
-
import { makeStyles } from 'tss-react/mui';
|
|
5
|
-
import RowMenu from './RowMenu';
|
|
6
|
-
import DataRow from './DataRow';
|
|
7
|
-
import DataTableHeader from './DataTableHeader';
|
|
8
|
-
const useStyles = makeStyles()(theme => ({
|
|
9
|
-
dataTable: {
|
|
10
|
-
borderCollapse: 'collapse',
|
|
11
|
-
'& td': {
|
|
12
|
-
border: `1px solid ${theme.palette.action.disabledBackground}`,
|
|
13
|
-
padding: '0.2rem',
|
|
14
|
-
maxWidth: '50em',
|
|
15
|
-
overflow: 'hidden',
|
|
16
|
-
textOverflow: 'ellipsis',
|
|
17
|
-
},
|
|
18
|
-
},
|
|
19
|
-
emptyMessage: {
|
|
20
|
-
captionSide: 'bottom',
|
|
21
|
-
},
|
|
22
|
-
}));
|
|
23
|
-
const DataTableBody = observer(function ({ rows, spreadsheetModel, page, rowsPerPage, }) {
|
|
24
|
-
return (React.createElement("tbody", null, rows.slice(rowsPerPage * page, rowsPerPage * (page + 1)).map(row => (React.createElement(DataRow, { key: row.id, rowNumber: row.id, spreadsheetModel: spreadsheetModel, rowModel: row })))));
|
|
25
|
-
});
|
|
26
|
-
const DataTable = observer(function ({ model, page, rowsPerPage, }) {
|
|
27
|
-
const { rowSet } = model;
|
|
28
|
-
const { classes } = useStyles();
|
|
29
|
-
const rows = rowSet.sortedFilteredRows;
|
|
30
|
-
return (React.createElement(React.Fragment, null,
|
|
31
|
-
React.createElement(RowMenu, { viewModel: getParent(model), spreadsheetModel: model }),
|
|
32
|
-
React.createElement("table", { className: classes.dataTable },
|
|
33
|
-
React.createElement(DataTableHeader, { model: model }),
|
|
34
|
-
React.createElement(DataTableBody, { rows: rows, spreadsheetModel: model, page: page, rowsPerPage: rowsPerPage }),
|
|
35
|
-
!rows.length ? (React.createElement("caption", { className: classes.emptyMessage }, rowSet.count ? 'no rows match criteria' : 'no rows present')) : null)));
|
|
36
|
-
});
|
|
37
|
-
export default DataTable;
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import React, { useState } from 'react';
|
|
2
|
-
import { IconButton, Tooltip } from '@mui/material';
|
|
3
|
-
import { observer } from 'mobx-react';
|
|
4
|
-
import { getParent } from 'mobx-state-tree';
|
|
5
|
-
import { makeStyles } from 'tss-react/mui';
|
|
6
|
-
// icons
|
|
7
|
-
import CropFreeIcon from '@mui/icons-material/CropFree';
|
|
8
|
-
import ArrowDropDown from '@mui/icons-material/ArrowDropDown';
|
|
9
|
-
import ColumnMenu from './ColumnMenu';
|
|
10
|
-
import SortIndicator from './SortIndicator';
|
|
11
|
-
import { numToColName } from './util';
|
|
12
|
-
const useStyles = makeStyles()(theme => ({
|
|
13
|
-
columnHead: {
|
|
14
|
-
fontWeight: 'normal',
|
|
15
|
-
background: theme.palette.mode === 'dark' ? '#333' : '#eee',
|
|
16
|
-
position: 'sticky',
|
|
17
|
-
top: 0,
|
|
18
|
-
zIndex: 2,
|
|
19
|
-
whiteSpace: 'nowrap',
|
|
20
|
-
},
|
|
21
|
-
columnButtonContainer: {
|
|
22
|
-
display: 'none',
|
|
23
|
-
position: 'absolute',
|
|
24
|
-
right: 0,
|
|
25
|
-
top: 0,
|
|
26
|
-
background: theme.palette.background.paper,
|
|
27
|
-
height: '100%',
|
|
28
|
-
},
|
|
29
|
-
topLeftCorner: {
|
|
30
|
-
background: theme.palette.mode === 'dark' ? '#333' : '#eee',
|
|
31
|
-
zIndex: 2,
|
|
32
|
-
position: 'sticky',
|
|
33
|
-
top: 0,
|
|
34
|
-
minWidth: theme.spacing(2),
|
|
35
|
-
textAlign: 'left',
|
|
36
|
-
},
|
|
37
|
-
}));
|
|
38
|
-
const DataTableHeader = observer(function ({ model, }) {
|
|
39
|
-
const { classes } = useStyles();
|
|
40
|
-
const { columnDisplayOrder, columns, hasColumnNames, rowSet } = model;
|
|
41
|
-
const [currentColumnMenu, setColumnMenu] = useState();
|
|
42
|
-
const [currentHoveredColumn, setHoveredColumn] = useState();
|
|
43
|
-
return (React.createElement(React.Fragment, null,
|
|
44
|
-
React.createElement("thead", null,
|
|
45
|
-
React.createElement("tr", null,
|
|
46
|
-
React.createElement("th", { className: classes.topLeftCorner },
|
|
47
|
-
React.createElement(Tooltip, { title: "Unselect all", placement: "right" },
|
|
48
|
-
React.createElement("span", null,
|
|
49
|
-
React.createElement(IconButton, { onClick: () => {
|
|
50
|
-
model.unselectAll();
|
|
51
|
-
}, disabled: !rowSet.selectedCount },
|
|
52
|
-
React.createElement(CropFreeIcon, null))))),
|
|
53
|
-
columnDisplayOrder.map(colNumber => (React.createElement("th", { className: classes.columnHead, key: colNumber, onMouseOver: () => {
|
|
54
|
-
setHoveredColumn(colNumber);
|
|
55
|
-
}, onMouseOut: () => {
|
|
56
|
-
setHoveredColumn(undefined);
|
|
57
|
-
} },
|
|
58
|
-
React.createElement(SortIndicator, { model: model, columnNumber: colNumber }),
|
|
59
|
-
(hasColumnNames && columns[colNumber].name) ||
|
|
60
|
-
numToColName(colNumber),
|
|
61
|
-
React.createElement("div", { className: classes.columnButtonContainer, style: {
|
|
62
|
-
display: currentHoveredColumn === colNumber ||
|
|
63
|
-
(currentColumnMenu === null || currentColumnMenu === void 0 ? void 0 : currentColumnMenu.colNumber) === colNumber
|
|
64
|
-
? 'block'
|
|
65
|
-
: 'none',
|
|
66
|
-
} },
|
|
67
|
-
React.createElement(IconButton, { onClick: evt => {
|
|
68
|
-
setColumnMenu({
|
|
69
|
-
colNumber,
|
|
70
|
-
anchorEl: evt.currentTarget,
|
|
71
|
-
});
|
|
72
|
-
} },
|
|
73
|
-
React.createElement(ArrowDropDown, null)))))))),
|
|
74
|
-
React.createElement(ColumnMenu, { viewModel: getParent(model), spreadsheetModel: model, currentColumnMenu: currentColumnMenu, setColumnMenu: setColumnMenu })));
|
|
75
|
-
});
|
|
76
|
-
export default DataTableHeader;
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import React, { useState, useEffect } from 'react';
|
|
2
|
-
import { IconButton, InputAdornment, TextField } from '@mui/material';
|
|
3
|
-
import ClearIcon from '@mui/icons-material/Clear';
|
|
4
|
-
import FilterIcon from '@mui/icons-material/FilterList';
|
|
5
|
-
import { observer } from 'mobx-react';
|
|
6
|
-
import { makeStyles } from 'tss-react/mui';
|
|
7
|
-
import { useDebounce } from '@jbrowse/core/util';
|
|
8
|
-
const useStyles = makeStyles()({
|
|
9
|
-
textFilterControlEndAdornment: {
|
|
10
|
-
marginRight: '-18px',
|
|
11
|
-
},
|
|
12
|
-
});
|
|
13
|
-
const TextFilter = observer(function ({ textFilter, }) {
|
|
14
|
-
const { classes } = useStyles();
|
|
15
|
-
// this paragraph is silliness to debounce the text filter input
|
|
16
|
-
const [textFilterValue, setTextFilterValue] = useState(textFilter.stringToFind);
|
|
17
|
-
const debouncedTextFilter = useDebounce(textFilterValue, 500);
|
|
18
|
-
useEffect(() => {
|
|
19
|
-
textFilter.setString(debouncedTextFilter);
|
|
20
|
-
}, [debouncedTextFilter, textFilter]);
|
|
21
|
-
return (React.createElement("div", null,
|
|
22
|
-
React.createElement(TextField, { label: "text filter", value: textFilterValue, onChange: evt => {
|
|
23
|
-
setTextFilterValue(evt.target.value);
|
|
24
|
-
}, variant: "outlined", slotProps: {
|
|
25
|
-
input: {
|
|
26
|
-
startAdornment: (React.createElement(InputAdornment, { position: "start" },
|
|
27
|
-
React.createElement(FilterIcon, null))),
|
|
28
|
-
endAdornment: (React.createElement(InputAdornment, { className: classes.textFilterControlEndAdornment, position: "end" },
|
|
29
|
-
React.createElement(IconButton, { "aria-label": "clear filter", onClick: () => {
|
|
30
|
-
setTextFilterValue('');
|
|
31
|
-
} },
|
|
32
|
-
React.createElement(ClearIcon, null)))),
|
|
33
|
-
},
|
|
34
|
-
} })));
|
|
35
|
-
});
|
|
36
|
-
const GlobalFilterControls = observer(({ model }) => {
|
|
37
|
-
const textFilter = model.filterControls.rowFullText;
|
|
38
|
-
return React.createElement(TextFilter, { textFilter: textFilter });
|
|
39
|
-
});
|
|
40
|
-
export default GlobalFilterControls;
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { observer } from 'mobx-react';
|
|
3
|
-
const RowCountMessage = observer(function ({ spreadsheet, }) {
|
|
4
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
5
|
-
if (spreadsheet.rowSet.isLoaded) {
|
|
6
|
-
const { passingFiltersCount, count, selectedCount, selectedAndPassingFiltersCount, } = spreadsheet.rowSet;
|
|
7
|
-
let rowMessage;
|
|
8
|
-
if (passingFiltersCount !== count) {
|
|
9
|
-
rowMessage = `${spreadsheet.rowSet.passingFiltersCount} rows of ${spreadsheet.rowSet.count} total`;
|
|
10
|
-
if (selectedCount) {
|
|
11
|
-
rowMessage += `, ${selectedAndPassingFiltersCount} selected`;
|
|
12
|
-
const selectedAndNotPassingFiltersCount = selectedCount - selectedAndPassingFiltersCount;
|
|
13
|
-
if (selectedAndNotPassingFiltersCount) {
|
|
14
|
-
rowMessage += ` (${selectedAndNotPassingFiltersCount} selected rows do not pass filters)`;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
else {
|
|
19
|
-
rowMessage = `${spreadsheet.rowSet.count} rows`;
|
|
20
|
-
if (selectedCount) {
|
|
21
|
-
rowMessage += `, ${selectedCount} selected`;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
return React.createElement(React.Fragment, null, rowMessage);
|
|
25
|
-
}
|
|
26
|
-
return null;
|
|
27
|
-
});
|
|
28
|
-
export default RowCountMessage;
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { Instance } from 'mobx-state-tree';
|
|
3
|
-
import type SpreadsheetModel from '../models/Spreadsheet';
|
|
4
|
-
import type ViewModel from '../models/SpreadsheetView';
|
|
5
|
-
declare const RowMenu: ({ viewModel, spreadsheetModel, }: {
|
|
6
|
-
viewModel: Instance<typeof ViewModel>;
|
|
7
|
-
spreadsheetModel: Instance<typeof SpreadsheetModel>;
|
|
8
|
-
}) => React.JSX.Element | null;
|
|
9
|
-
export default RowMenu;
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { observer } from 'mobx-react';
|
|
3
|
-
import { Menu } from '@jbrowse/core/ui';
|
|
4
|
-
const RowMenu = observer(function ({ viewModel, spreadsheetModel, }) {
|
|
5
|
-
var _a;
|
|
6
|
-
const currentRowMenu = spreadsheetModel.rowMenuPosition;
|
|
7
|
-
const { setRowMenuPosition } = spreadsheetModel;
|
|
8
|
-
const rowMenuClose = () => {
|
|
9
|
-
setRowMenuPosition(null);
|
|
10
|
-
};
|
|
11
|
-
const rowNumber = (_a = spreadsheetModel.rowMenuPosition) === null || _a === void 0 ? void 0 : _a.rowNumber;
|
|
12
|
-
if (rowNumber === undefined) {
|
|
13
|
-
return null;
|
|
14
|
-
}
|
|
15
|
-
const row = spreadsheetModel.rowSet.rows[+rowNumber - 1];
|
|
16
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
|
|
17
|
-
function handleMenuItemClick(_event, callback) {
|
|
18
|
-
callback(viewModel, spreadsheetModel, rowNumber, row);
|
|
19
|
-
rowMenuClose();
|
|
20
|
-
}
|
|
21
|
-
// got through and evaluate all the `disabled` callbacks of the menu items
|
|
22
|
-
const menuItems = viewModel.rowMenuItems.map(item => {
|
|
23
|
-
if (typeof item.disabled === 'function') {
|
|
24
|
-
const disabled = item.disabled(viewModel, spreadsheetModel, +rowNumber, row);
|
|
25
|
-
return { ...item, disabled };
|
|
26
|
-
}
|
|
27
|
-
return item;
|
|
28
|
-
});
|
|
29
|
-
return (React.createElement(Menu, { anchorEl: currentRowMenu === null || currentRowMenu === void 0 ? void 0 : currentRowMenu.anchorEl, open: Boolean(currentRowMenu), onMenuItemClick: handleMenuItemClick, onClose: rowMenuClose, menuItems: menuItems, anchorOrigin: {
|
|
30
|
-
vertical: 'bottom',
|
|
31
|
-
horizontal: 'right',
|
|
32
|
-
} }));
|
|
33
|
-
});
|
|
34
|
-
export default RowMenu;
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { makeStyles } from 'tss-react/mui';
|
|
3
|
-
// icons
|
|
4
|
-
import KeyboardArrowUpIcon from '@mui/icons-material/KeyboardArrowUp';
|
|
5
|
-
import KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';
|
|
6
|
-
const useStyles = makeStyles()({
|
|
7
|
-
sortIndicator: {
|
|
8
|
-
position: 'relative',
|
|
9
|
-
top: '0.2rem',
|
|
10
|
-
fontSize: '1rem',
|
|
11
|
-
},
|
|
12
|
-
});
|
|
13
|
-
export default function SortIndicator({ model, columnNumber, }) {
|
|
14
|
-
const { classes } = useStyles();
|
|
15
|
-
const sortSpec = model.sortColumns.find(c => c.columnNumber === columnNumber);
|
|
16
|
-
if (sortSpec) {
|
|
17
|
-
const { descending } = sortSpec;
|
|
18
|
-
return descending ? (React.createElement(KeyboardArrowUpIcon, { className: classes.sortIndicator })) : (React.createElement(KeyboardArrowDownIcon, { className: classes.sortIndicator }));
|
|
19
|
-
}
|
|
20
|
-
return null;
|
|
21
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { Instance } from 'mobx-state-tree';
|
|
3
|
-
import type SpreadsheetStateModel from '../models/Spreadsheet';
|
|
4
|
-
type SpreadsheetModel = Instance<typeof SpreadsheetStateModel>;
|
|
5
|
-
declare const Spreadsheet: ({ model, height, page, rowsPerPage, }: {
|
|
6
|
-
model: SpreadsheetModel;
|
|
7
|
-
height: number;
|
|
8
|
-
page: number;
|
|
9
|
-
rowsPerPage: number;
|
|
10
|
-
}) => React.JSX.Element;
|
|
11
|
-
export default Spreadsheet;
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { observer } from 'mobx-react';
|
|
3
|
-
import { makeStyles } from 'tss-react/mui';
|
|
4
|
-
import { LoadingEllipses } from '@jbrowse/core/ui';
|
|
5
|
-
import DataTable from './DataTable';
|
|
6
|
-
const useStyles = makeStyles()(theme => ({
|
|
7
|
-
root: {
|
|
8
|
-
position: 'relative',
|
|
9
|
-
marginBottom: theme.spacing(1),
|
|
10
|
-
background: theme.palette.background.paper,
|
|
11
|
-
overflow: 'auto',
|
|
12
|
-
},
|
|
13
|
-
}));
|
|
14
|
-
const Spreadsheet = observer(function ({ model, height, page, rowsPerPage, }) {
|
|
15
|
-
const { classes } = useStyles();
|
|
16
|
-
return (React.createElement("div", { className: classes.root, style: { height } },
|
|
17
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
18
|
-
model.rowSet.isLoaded && model.initialized ? (React.createElement(DataTable, { model: model, page: page, rowsPerPage: rowsPerPage })) : (React.createElement(LoadingEllipses, { variant: "h6" }))));
|
|
19
|
-
});
|
|
20
|
-
export default Spreadsheet;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { SpreadsheetModel } from '../models/Spreadsheet';
|
|
3
|
-
declare const StatusBar: ({ page, rowsPerPage, setPage, setRowsPerPage, spreadsheet, mode, }: {
|
|
4
|
-
page: number;
|
|
5
|
-
mode: string;
|
|
6
|
-
spreadsheet: SpreadsheetModel;
|
|
7
|
-
rowsPerPage: number;
|
|
8
|
-
setPage: (arg: number) => void;
|
|
9
|
-
setRowsPerPage: (arg: number) => void;
|
|
10
|
-
}) => React.JSX.Element;
|
|
11
|
-
export default StatusBar;
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { FormGroup, TablePagination } from '@mui/material';
|
|
3
|
-
import { makeStyles } from 'tss-react/mui';
|
|
4
|
-
// locals
|
|
5
|
-
import RowCountMessage from './RowCountMessage';
|
|
6
|
-
import { observer } from 'mobx-react';
|
|
7
|
-
const statusBarHeight = 40;
|
|
8
|
-
const useStyles = makeStyles()(theme => ({
|
|
9
|
-
statusBar: {
|
|
10
|
-
height: statusBarHeight,
|
|
11
|
-
boxSizing: 'border-box',
|
|
12
|
-
borderTop: '1px outset #b1b1b1',
|
|
13
|
-
paddingLeft: theme.spacing(1),
|
|
14
|
-
},
|
|
15
|
-
verticallyCenter: {
|
|
16
|
-
display: 'flex',
|
|
17
|
-
justifyContent: 'center',
|
|
18
|
-
flexDirection: 'column',
|
|
19
|
-
},
|
|
20
|
-
spacer: {
|
|
21
|
-
flexGrow: 1,
|
|
22
|
-
},
|
|
23
|
-
}));
|
|
24
|
-
const StatusBar = observer(function StatusBar({ page, rowsPerPage, setPage, setRowsPerPage, spreadsheet, mode, }) {
|
|
25
|
-
const { classes } = useStyles();
|
|
26
|
-
return (React.createElement("div", { className: classes.statusBar, style: { display: mode === 'display' ? undefined : 'none' } },
|
|
27
|
-
React.createElement(FormGroup, { row: true },
|
|
28
|
-
React.createElement("div", { className: classes.verticallyCenter },
|
|
29
|
-
React.createElement(RowCountMessage, { spreadsheet: spreadsheet })),
|
|
30
|
-
React.createElement("div", { className: classes.spacer }),
|
|
31
|
-
React.createElement(TablePagination, { rowsPerPageOptions: [10, 25, 100, 1000], count: spreadsheet.rowSet.count, component: "div", rowsPerPage: rowsPerPage, page: page, onPageChange: (_, newPage) => {
|
|
32
|
-
setPage(newPage);
|
|
33
|
-
}, onRowsPerPageChange: event => {
|
|
34
|
-
setRowsPerPage(+event.target.value);
|
|
35
|
-
setPage(0);
|
|
36
|
-
} }),
|
|
37
|
-
React.createElement("div", { className: classes.spacer }))));
|
|
38
|
-
});
|
|
39
|
-
export default StatusBar;
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import type { Buffer } from 'buffer';
|
|
2
|
-
export declare function bufferToString(buffer: Buffer): string;
|
|
3
|
-
export interface Row {
|
|
4
|
-
id: string;
|
|
5
|
-
extendedData?: any;
|
|
6
|
-
cells: {
|
|
7
|
-
text: string;
|
|
8
|
-
extendedData?: any;
|
|
9
|
-
}[];
|
|
10
|
-
}
|
|
11
|
-
export interface RowSet {
|
|
12
|
-
isLoaded: boolean;
|
|
13
|
-
rows: Row[];
|
|
14
|
-
}
|
|
15
|
-
export interface ParseOptions {
|
|
16
|
-
hasColumnNameLine?: boolean;
|
|
17
|
-
columnNameLineNumber?: number;
|
|
18
|
-
selectedAssemblyName?: string;
|
|
19
|
-
isValidRefName?: (refName: string, assemblyName?: string) => boolean;
|
|
20
|
-
}
|
|
21
|
-
export interface Column {
|
|
22
|
-
name: string;
|
|
23
|
-
dataType: {
|
|
24
|
-
type: string;
|
|
25
|
-
};
|
|
26
|
-
isDerived?: boolean;
|
|
27
|
-
derivationFunctionText?: string;
|
|
28
|
-
}
|
|
29
|
-
export declare function parseCsvBuffer(buffer: Buffer, options?: ParseOptions): Promise<{
|
|
30
|
-
rowSet: RowSet;
|
|
31
|
-
columnDisplayOrder: number[];
|
|
32
|
-
hasColumnNames: boolean;
|
|
33
|
-
columns: Column[];
|
|
34
|
-
assemblyName: string | undefined;
|
|
35
|
-
}>;
|
|
36
|
-
export declare function parseTsvBuffer(buffer: Buffer, options?: ParseOptions): Promise<{
|
|
37
|
-
rowSet: RowSet;
|
|
38
|
-
columnDisplayOrder: number[];
|
|
39
|
-
hasColumnNames: boolean;
|
|
40
|
-
columns: Column[];
|
|
41
|
-
assemblyName: string | undefined;
|
|
42
|
-
}>;
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
import { parseLocString } from '@jbrowse/core/util';
|
|
2
|
-
export function bufferToString(buffer) {
|
|
3
|
-
return new TextDecoder('utf8', { fatal: true }).decode(buffer);
|
|
4
|
-
}
|
|
5
|
-
async function parseWith(buffer, options = {}) {
|
|
6
|
-
const csv = await import('csvtojson').then(module => module.default);
|
|
7
|
-
return csv({ noheader: true, output: 'csv', ...options }).fromString(bufferToString(buffer));
|
|
8
|
-
}
|
|
9
|
-
function guessColumnType(rowSet, columnNumber, isValidRefName) {
|
|
10
|
-
const text = rowSet.rows[0].cells[columnNumber].text || '';
|
|
11
|
-
let guessedType = 'Text';
|
|
12
|
-
let parsedLoc;
|
|
13
|
-
try {
|
|
14
|
-
parsedLoc = parseLocString(text, isValidRefName);
|
|
15
|
-
}
|
|
16
|
-
catch (error) {
|
|
17
|
-
//
|
|
18
|
-
}
|
|
19
|
-
if ((parsedLoc === null || parsedLoc === void 0 ? void 0 : parsedLoc.refName) && typeof parsedLoc.start === 'number') {
|
|
20
|
-
guessedType = 'LocString';
|
|
21
|
-
}
|
|
22
|
-
else if (/^\d+(\.\d+)?$/.test(text)) {
|
|
23
|
-
guessedType = 'Number';
|
|
24
|
-
}
|
|
25
|
-
// MAYBE TODO: iterate over the rest of the rows to confirm
|
|
26
|
-
// the type for all the rows
|
|
27
|
-
return guessedType;
|
|
28
|
-
}
|
|
29
|
-
function dataToSpreadsheetSnapshot(rows, options = {}) {
|
|
30
|
-
const { hasColumnNameLine = false, columnNameLineNumber = 1, isValidRefName = () => false, selectedAssemblyName, } = options;
|
|
31
|
-
// rows is an array of row objects and columnNames
|
|
32
|
-
// is an array of column names (in import order)
|
|
33
|
-
let maxCols = 0;
|
|
34
|
-
const rowSet = {
|
|
35
|
-
isLoaded: true,
|
|
36
|
-
rows: rows.map((row, rowNumber) => {
|
|
37
|
-
const id = rowNumber + (hasColumnNameLine ? 0 : 1);
|
|
38
|
-
if (row.length > maxCols) {
|
|
39
|
-
maxCols = row.length;
|
|
40
|
-
}
|
|
41
|
-
return {
|
|
42
|
-
id: String(id),
|
|
43
|
-
cells: row.map((text, columnNumber) => {
|
|
44
|
-
return { columnNumber, text };
|
|
45
|
-
}),
|
|
46
|
-
};
|
|
47
|
-
}),
|
|
48
|
-
};
|
|
49
|
-
// process the column names row if present
|
|
50
|
-
const columnNames = {};
|
|
51
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
52
|
-
if (hasColumnNameLine && columnNameLineNumber !== undefined) {
|
|
53
|
-
const [colNamesRow] = rowSet.rows.splice(columnNameLineNumber - 1, 1);
|
|
54
|
-
if (colNamesRow) {
|
|
55
|
-
colNamesRow.cells.forEach((cell, columnNumber) => {
|
|
56
|
-
columnNames[columnNumber] = cell.text || '';
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
// make our column definitions
|
|
61
|
-
const columns = [];
|
|
62
|
-
const columnDisplayOrder = [];
|
|
63
|
-
for (let columnNumber = 0; columnNumber < maxCols; columnNumber += 1) {
|
|
64
|
-
columnDisplayOrder.push(columnNumber);
|
|
65
|
-
const guessedType = guessColumnType(rowSet, columnNumber, isValidRefName);
|
|
66
|
-
// store extendeddata for LocString column
|
|
67
|
-
if (guessedType === 'LocString') {
|
|
68
|
-
for (const row of rowSet.rows) {
|
|
69
|
-
const cell = row.cells[columnNumber];
|
|
70
|
-
cell.extendedData = parseLocString(cell.text, isValidRefName);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
columns[columnNumber] = {
|
|
74
|
-
name: columnNames[columnNumber],
|
|
75
|
-
dataType: {
|
|
76
|
-
type: guessedType,
|
|
77
|
-
},
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
return {
|
|
81
|
-
rowSet,
|
|
82
|
-
columnDisplayOrder,
|
|
83
|
-
hasColumnNames: !!hasColumnNameLine,
|
|
84
|
-
columns,
|
|
85
|
-
assemblyName: selectedAssemblyName,
|
|
86
|
-
};
|
|
87
|
-
}
|
|
88
|
-
export async function parseCsvBuffer(buffer, options) {
|
|
89
|
-
const rows = await parseWith(buffer);
|
|
90
|
-
return dataToSpreadsheetSnapshot(rows, options);
|
|
91
|
-
}
|
|
92
|
-
export async function parseTsvBuffer(buffer, options) {
|
|
93
|
-
const rows = await parseWith(buffer, { delimiter: '\t' });
|
|
94
|
-
return dataToSpreadsheetSnapshot(rows, options);
|
|
95
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
declare const LocEnd: import("mobx-state-tree").IModelType<{
|
|
2
|
-
type: import("mobx-state-tree").ISimpleType<string>;
|
|
3
|
-
}, {
|
|
4
|
-
DataCellReactComponent: import("react").FC<any> | null;
|
|
5
|
-
FilterModelType: any;
|
|
6
|
-
displayName: string;
|
|
7
|
-
categoryName: string | undefined;
|
|
8
|
-
} & {
|
|
9
|
-
compare: any;
|
|
10
|
-
readonly hasFilter: boolean;
|
|
11
|
-
}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
|
|
12
|
-
export default LocEnd;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import MakeSpreadsheetColumnType from './MakeSpreadsheetColumnType';
|
|
2
|
-
import { FilterModelType as NumberFilterModel } from './Number';
|
|
3
|
-
import { types } from 'mobx-state-tree';
|
|
4
|
-
const FilterModelType = types.compose(NumberFilterModel, types.model({
|
|
5
|
-
type: types.literal('LocEnd'),
|
|
6
|
-
}));
|
|
7
|
-
const LocEnd = MakeSpreadsheetColumnType('LocEnd', {
|
|
8
|
-
categoryName: 'Location',
|
|
9
|
-
displayName: 'End',
|
|
10
|
-
compare(cellA, cellB) {
|
|
11
|
-
return Number.parseFloat(cellA.text) - Number.parseFloat(cellB.text);
|
|
12
|
-
},
|
|
13
|
-
FilterModelType,
|
|
14
|
-
});
|
|
15
|
-
export default LocEnd;
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
declare const LocRef: import("mobx-state-tree").IModelType<{
|
|
2
|
-
type: import("mobx-state-tree").ISimpleType<string>;
|
|
3
|
-
}, {
|
|
4
|
-
DataCellReactComponent: import("react").FC<any> | null;
|
|
5
|
-
FilterModelType: any;
|
|
6
|
-
displayName: string;
|
|
7
|
-
categoryName: string | undefined;
|
|
8
|
-
} & {
|
|
9
|
-
compare: any;
|
|
10
|
-
readonly hasFilter: boolean;
|
|
11
|
-
}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
|
|
12
|
-
export default LocRef;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import MakeSpreadsheetColumnType from './MakeSpreadsheetColumnType';
|
|
2
|
-
import { FilterModelType as NumberFilterModel } from './Text';
|
|
3
|
-
import { types } from 'mobx-state-tree';
|
|
4
|
-
const FilterModelType = types.compose(NumberFilterModel, types.model({
|
|
5
|
-
type: types.literal('LocRef'),
|
|
6
|
-
}));
|
|
7
|
-
const LocRef = MakeSpreadsheetColumnType('LocRef', {
|
|
8
|
-
categoryName: 'Location',
|
|
9
|
-
displayName: 'Reference seq',
|
|
10
|
-
compare(cellA, cellB) {
|
|
11
|
-
return cellA.text.localeCompare(cellB.text);
|
|
12
|
-
},
|
|
13
|
-
FilterModelType,
|
|
14
|
-
});
|
|
15
|
-
export default LocRef;
|