react-science 3.0.0 → 4.0.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/lib/app/hooks/file-loading.d.ts +3 -2
- package/lib/app/hooks/file-loading.d.ts.map +1 -1
- package/lib/app/hooks/file-loading.js +12 -12
- package/lib/app/hooks/file-loading.js.map +1 -1
- package/lib/app/panels/SignalProcessingPanel.js +1 -1
- package/lib/app/panels/SignalProcessingPanel.js.map +1 -1
- package/lib/app/panels/measurement-info/MeasurementInfoPanelAccordion.js +1 -1
- package/lib/app/panels/measurement-info/MeasurementInfoPanelAccordion.js.map +1 -1
- package/lib/app-data/loaders/biologicLoader.d.ts +2 -2
- package/lib/app-data/loaders/biologicLoader.d.ts.map +1 -1
- package/lib/app-data/loaders/biologicLoader.js +4 -4
- package/lib/app-data/loaders/biologicLoader.js.map +1 -1
- package/lib/app-data/loaders/cdfLoader.d.ts +2 -2
- package/lib/app-data/loaders/cdfLoader.d.ts.map +1 -1
- package/lib/app-data/loaders/cdfLoader.js +6 -9
- package/lib/app-data/loaders/cdfLoader.js.map +1 -1
- package/lib/app-data/loaders/jcampLoader.d.ts +2 -2
- package/lib/app-data/loaders/jcampLoader.d.ts.map +1 -1
- package/lib/app-data/loaders/jcampLoader.js +10 -13
- package/lib/app-data/loaders/jcampLoader.js.map +1 -1
- package/lib/app-data/loaders/loadMeasurements.d.ts +4 -3
- package/lib/app-data/loaders/loadMeasurements.d.ts.map +1 -1
- package/lib/app-data/loaders/loadMeasurements.js +3 -3
- package/lib/app-data/loaders/loadMeasurements.js.map +1 -1
- package/lib/app-data/loaders/proprietary/agilent/cary500Loader.d.ts +3 -2
- package/lib/app-data/loaders/proprietary/agilent/cary500Loader.d.ts.map +1 -1
- package/lib/app-data/loaders/proprietary/agilent/cary500Loader.js +4 -9
- package/lib/app-data/loaders/proprietary/agilent/cary500Loader.js.map +1 -1
- package/lib/app-data/loaders/spcLoader.d.ts +2 -2
- package/lib/app-data/loaders/spcLoader.d.ts.map +1 -1
- package/lib/app-data/loaders/spcLoader.js +3 -8
- package/lib/app-data/loaders/spcLoader.js.map +1 -1
- package/lib/app-data/loaders/utility/measurementLoader.d.ts +2 -2
- package/lib/app-data/loaders/utility/measurementLoader.d.ts.map +1 -1
- package/lib/app-data/loaders/utility/measurementLoader.js.map +1 -1
- package/lib/app-data/loaders/wdfLoader.d.ts +2 -2
- package/lib/app-data/loaders/wdfLoader.d.ts.map +1 -1
- package/lib/app-data/loaders/wdfLoader.js +3 -9
- package/lib/app-data/loaders/wdfLoader.js.map +1 -1
- package/lib/components/accordion/Accordion.d.ts +1 -0
- package/lib/components/accordion/Accordion.d.ts.map +1 -1
- package/lib/components/accordion/Accordion.js +12 -11
- package/lib/components/accordion/Accordion.js.map +1 -1
- package/lib/components/index.d.ts +2 -1
- package/lib/components/index.d.ts.map +1 -1
- package/lib/components/index.js +2 -1
- package/lib/components/index.js.map +1 -1
- package/lib/components/info-panel/InfoPanel.d.ts.map +1 -1
- package/lib/components/info-panel/InfoPanel.js +2 -5
- package/lib/components/info-panel/InfoPanel.js.map +1 -1
- package/lib/components/logger/FifoLoggerDialog.d.ts +10 -0
- package/lib/components/logger/FifoLoggerDialog.d.ts.map +1 -0
- package/lib/components/logger/FifoLoggerDialog.js +55 -0
- package/lib/components/logger/FifoLoggerDialog.js.map +1 -0
- package/lib/components/logger/FifoLoggerProvider.d.ts +7 -0
- package/lib/components/logger/FifoLoggerProvider.d.ts.map +1 -0
- package/lib/components/logger/FifoLoggerProvider.js +10 -0
- package/lib/components/logger/FifoLoggerProvider.js.map +1 -0
- package/lib/components/logger/FifoLoggerToolbarItem.d.ts +2 -0
- package/lib/components/logger/FifoLoggerToolbarItem.d.ts.map +1 -0
- package/lib/components/logger/FifoLoggerToolbarItem.js +39 -0
- package/lib/components/logger/FifoLoggerToolbarItem.js.map +1 -0
- package/lib/components/logger/index.d.ts +5 -0
- package/lib/components/logger/index.d.ts.map +1 -0
- package/lib/components/logger/index.js +21 -0
- package/lib/components/logger/index.js.map +1 -0
- package/lib/components/logger/loggerContext.d.ts +4 -0
- package/lib/components/logger/loggerContext.d.ts.map +1 -0
- package/lib/components/logger/loggerContext.js +6 -0
- package/lib/components/logger/loggerContext.js.map +1 -0
- package/lib/components/logger/useFifoLogger.d.ts +3 -0
- package/lib/components/logger/useFifoLogger.d.ts.map +1 -0
- package/lib/components/logger/useFifoLogger.js +25 -0
- package/lib/components/logger/useFifoLogger.js.map +1 -0
- package/lib/components/root-layout/RootLayout.d.ts.map +1 -1
- package/lib/components/root-layout/RootLayout.js +6 -1
- package/lib/components/root-layout/RootLayout.js.map +1 -1
- package/lib/components/table/Table.d.ts +2 -3
- package/lib/components/table/Table.d.ts.map +1 -1
- package/lib/components/table/Table.js +2 -2
- package/lib/components/table/Table.js.map +1 -1
- package/lib/components/table/TableHeader.d.ts +1 -1
- package/lib/components/table/TableHeader.d.ts.map +1 -1
- package/lib/components/table/TableHeader.js +2 -2
- package/lib/components/table/TableHeader.js.map +1 -1
- package/lib/components/table/TableRow.d.ts +3 -1
- package/lib/components/table/TableRow.d.ts.map +1 -1
- package/lib/components/table/TableRow.js +9 -22
- package/lib/components/table/TableRow.js.map +1 -1
- package/lib/components/table/tableContext.d.ts +0 -2
- package/lib/components/table/tableContext.d.ts.map +1 -1
- package/lib/components/table/tableContext.js +1 -1
- package/lib/components/table/tableContext.js.map +1 -1
- package/lib/components/toolbar/Toolbar.d.ts +4 -2
- package/lib/components/toolbar/Toolbar.d.ts.map +1 -1
- package/lib/components/toolbar/Toolbar.js +2 -2
- package/lib/components/toolbar/Toolbar.js.map +1 -1
- package/lib/components/toolbar/TooltipHelpContent.d.ts +11 -0
- package/lib/components/toolbar/TooltipHelpContent.d.ts.map +1 -0
- package/lib/components/toolbar/TooltipHelpContent.js +102 -0
- package/lib/components/toolbar/TooltipHelpContent.js.map +1 -0
- package/lib/components/toolbar/index.d.ts +1 -0
- package/lib/components/toolbar/index.d.ts.map +1 -1
- package/lib/components/toolbar/index.js +1 -0
- package/lib/components/toolbar/index.js.map +1 -1
- package/lib-esm/app/hooks/file-loading.d.ts +3 -2
- package/lib-esm/app/hooks/file-loading.d.ts.map +1 -1
- package/lib-esm/app/hooks/file-loading.js +9 -9
- package/lib-esm/app/hooks/file-loading.js.map +1 -1
- package/lib-esm/app/panels/SignalProcessingPanel.js +1 -1
- package/lib-esm/app/panels/SignalProcessingPanel.js.map +1 -1
- package/lib-esm/app/panels/measurement-info/MeasurementInfoPanelAccordion.js +1 -1
- package/lib-esm/app/panels/measurement-info/MeasurementInfoPanelAccordion.js.map +1 -1
- package/lib-esm/app-data/loaders/biologicLoader.d.ts +2 -2
- package/lib-esm/app-data/loaders/biologicLoader.d.ts.map +1 -1
- package/lib-esm/app-data/loaders/biologicLoader.js +4 -4
- package/lib-esm/app-data/loaders/biologicLoader.js.map +1 -1
- package/lib-esm/app-data/loaders/cdfLoader.d.ts +2 -2
- package/lib-esm/app-data/loaders/cdfLoader.d.ts.map +1 -1
- package/lib-esm/app-data/loaders/cdfLoader.js +6 -9
- package/lib-esm/app-data/loaders/cdfLoader.js.map +1 -1
- package/lib-esm/app-data/loaders/jcampLoader.d.ts +2 -2
- package/lib-esm/app-data/loaders/jcampLoader.d.ts.map +1 -1
- package/lib-esm/app-data/loaders/jcampLoader.js +10 -13
- package/lib-esm/app-data/loaders/jcampLoader.js.map +1 -1
- package/lib-esm/app-data/loaders/loadMeasurements.d.ts +4 -3
- package/lib-esm/app-data/loaders/loadMeasurements.d.ts.map +1 -1
- package/lib-esm/app-data/loaders/loadMeasurements.js +3 -3
- package/lib-esm/app-data/loaders/loadMeasurements.js.map +1 -1
- package/lib-esm/app-data/loaders/proprietary/agilent/cary500Loader.d.ts +3 -2
- package/lib-esm/app-data/loaders/proprietary/agilent/cary500Loader.d.ts.map +1 -1
- package/lib-esm/app-data/loaders/proprietary/agilent/cary500Loader.js +5 -10
- package/lib-esm/app-data/loaders/proprietary/agilent/cary500Loader.js.map +1 -1
- package/lib-esm/app-data/loaders/spcLoader.d.ts +2 -2
- package/lib-esm/app-data/loaders/spcLoader.d.ts.map +1 -1
- package/lib-esm/app-data/loaders/spcLoader.js +4 -9
- package/lib-esm/app-data/loaders/spcLoader.js.map +1 -1
- package/lib-esm/app-data/loaders/utility/measurementLoader.d.ts +2 -2
- package/lib-esm/app-data/loaders/utility/measurementLoader.d.ts.map +1 -1
- package/lib-esm/app-data/loaders/utility/measurementLoader.js.map +1 -1
- package/lib-esm/app-data/loaders/wdfLoader.d.ts +2 -2
- package/lib-esm/app-data/loaders/wdfLoader.d.ts.map +1 -1
- package/lib-esm/app-data/loaders/wdfLoader.js +3 -9
- package/lib-esm/app-data/loaders/wdfLoader.js.map +1 -1
- package/lib-esm/components/accordion/Accordion.d.ts +1 -0
- package/lib-esm/components/accordion/Accordion.d.ts.map +1 -1
- package/lib-esm/components/accordion/Accordion.js +12 -11
- package/lib-esm/components/accordion/Accordion.js.map +1 -1
- package/lib-esm/components/index.d.ts +2 -1
- package/lib-esm/components/index.d.ts.map +1 -1
- package/lib-esm/components/index.js +2 -1
- package/lib-esm/components/index.js.map +1 -1
- package/lib-esm/components/info-panel/InfoPanel.d.ts.map +1 -1
- package/lib-esm/components/info-panel/InfoPanel.js +2 -5
- package/lib-esm/components/info-panel/InfoPanel.js.map +1 -1
- package/lib-esm/components/logger/FifoLoggerDialog.d.ts +10 -0
- package/lib-esm/components/logger/FifoLoggerDialog.d.ts.map +1 -0
- package/lib-esm/components/logger/FifoLoggerDialog.js +48 -0
- package/lib-esm/components/logger/FifoLoggerDialog.js.map +1 -0
- package/lib-esm/components/logger/FifoLoggerProvider.d.ts +7 -0
- package/lib-esm/components/logger/FifoLoggerProvider.d.ts.map +1 -0
- package/lib-esm/components/logger/FifoLoggerProvider.js +6 -0
- package/lib-esm/components/logger/FifoLoggerProvider.js.map +1 -0
- package/lib-esm/components/logger/FifoLoggerToolbarItem.d.ts +2 -0
- package/lib-esm/components/logger/FifoLoggerToolbarItem.d.ts.map +1 -0
- package/lib-esm/components/logger/FifoLoggerToolbarItem.js +35 -0
- package/lib-esm/components/logger/FifoLoggerToolbarItem.js.map +1 -0
- package/lib-esm/components/logger/index.d.ts +5 -0
- package/lib-esm/components/logger/index.d.ts.map +1 -0
- package/lib-esm/components/logger/index.js +5 -0
- package/lib-esm/components/logger/index.js.map +1 -0
- package/lib-esm/components/logger/loggerContext.d.ts +4 -0
- package/lib-esm/components/logger/loggerContext.d.ts.map +1 -0
- package/lib-esm/components/logger/loggerContext.js +3 -0
- package/lib-esm/components/logger/loggerContext.js.map +1 -0
- package/lib-esm/components/logger/useFifoLogger.d.ts +3 -0
- package/lib-esm/components/logger/useFifoLogger.d.ts.map +1 -0
- package/lib-esm/components/logger/useFifoLogger.js +20 -0
- package/lib-esm/components/logger/useFifoLogger.js.map +1 -0
- package/lib-esm/components/root-layout/RootLayout.d.ts.map +1 -1
- package/lib-esm/components/root-layout/RootLayout.js +6 -1
- package/lib-esm/components/root-layout/RootLayout.js.map +1 -1
- package/lib-esm/components/table/Table.d.ts +2 -3
- package/lib-esm/components/table/Table.d.ts.map +1 -1
- package/lib-esm/components/table/Table.js +2 -2
- package/lib-esm/components/table/Table.js.map +1 -1
- package/lib-esm/components/table/TableHeader.d.ts +1 -1
- package/lib-esm/components/table/TableHeader.d.ts.map +1 -1
- package/lib-esm/components/table/TableHeader.js +2 -2
- package/lib-esm/components/table/TableHeader.js.map +1 -1
- package/lib-esm/components/table/TableRow.d.ts +3 -1
- package/lib-esm/components/table/TableRow.d.ts.map +1 -1
- package/lib-esm/components/table/TableRow.js +7 -20
- package/lib-esm/components/table/TableRow.js.map +1 -1
- package/lib-esm/components/table/tableContext.d.ts +0 -2
- package/lib-esm/components/table/tableContext.d.ts.map +1 -1
- package/lib-esm/components/table/tableContext.js +1 -1
- package/lib-esm/components/table/tableContext.js.map +1 -1
- package/lib-esm/components/toolbar/Toolbar.d.ts +4 -2
- package/lib-esm/components/toolbar/Toolbar.d.ts.map +1 -1
- package/lib-esm/components/toolbar/Toolbar.js +2 -2
- package/lib-esm/components/toolbar/Toolbar.js.map +1 -1
- package/lib-esm/components/toolbar/TooltipHelpContent.d.ts +11 -0
- package/lib-esm/components/toolbar/TooltipHelpContent.d.ts.map +1 -0
- package/lib-esm/components/toolbar/TooltipHelpContent.js +95 -0
- package/lib-esm/components/toolbar/TooltipHelpContent.js.map +1 -0
- package/lib-esm/components/toolbar/index.d.ts +1 -0
- package/lib-esm/components/toolbar/index.d.ts.map +1 -1
- package/lib-esm/components/toolbar/index.js +1 -0
- package/lib-esm/components/toolbar/index.js.map +1 -1
- package/package.json +7 -5
- package/src/app/hooks/file-loading.ts +12 -10
- package/src/app/panels/SignalProcessingPanel.tsx +1 -1
- package/src/app/panels/measurement-info/MeasurementInfoPanelAccordion.tsx +1 -1
- package/src/app-data/loaders/biologicLoader.ts +6 -5
- package/src/app-data/loaders/cdfLoader.ts +8 -13
- package/src/app-data/loaders/jcampLoader.ts +11 -15
- package/src/app-data/loaders/loadMeasurements.ts +6 -5
- package/src/app-data/loaders/proprietary/agilent/cary500Loader.ts +8 -16
- package/src/app-data/loaders/spcLoader.ts +6 -12
- package/src/app-data/loaders/utility/measurementLoader.ts +2 -3
- package/src/app-data/loaders/wdfLoader.ts +5 -12
- package/src/components/accordion/Accordion.tsx +17 -12
- package/src/components/index.ts +2 -1
- package/src/components/info-panel/InfoPanel.tsx +2 -12
- package/src/components/logger/FifoLoggerDialog.tsx +129 -0
- package/src/components/logger/FifoLoggerProvider.tsx +15 -0
- package/src/components/logger/FifoLoggerToolbarItem.tsx +59 -0
- package/src/components/logger/index.ts +4 -0
- package/src/components/logger/loggerContext.ts +4 -0
- package/src/components/logger/useFifoLogger.ts +22 -0
- package/src/components/root-layout/RootLayout.tsx +20 -13
- package/src/components/table/Table.tsx +1 -6
- package/src/components/table/TableHeader.tsx +2 -2
- package/src/components/table/TableRow.tsx +17 -24
- package/src/components/table/tableContext.ts +1 -1
- package/src/components/toolbar/Toolbar.tsx +8 -3
- package/src/components/toolbar/TooltipHelpContent.tsx +173 -0
- package/src/components/toolbar/index.ts +1 -0
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import styled from '@emotion/styled';
|
|
3
|
+
const shortcutBoxSize = 1.5;
|
|
4
|
+
const FlexContainer = styled.div `
|
|
5
|
+
display: flex;
|
|
6
|
+
justify-content: space-between;
|
|
7
|
+
flex-wrap: wrap;
|
|
8
|
+
align-items: center;
|
|
9
|
+
`;
|
|
10
|
+
const Title = styled.span `
|
|
11
|
+
font-size: ${({ size }) => size};
|
|
12
|
+
flex: 1;
|
|
13
|
+
padding: 5px 0;
|
|
14
|
+
text-align: left;
|
|
15
|
+
`;
|
|
16
|
+
const Description = styled.p `
|
|
17
|
+
padding-top: 1rem;
|
|
18
|
+
font-size: 0.7rem;
|
|
19
|
+
text-align: left;
|
|
20
|
+
`;
|
|
21
|
+
const ShortcutItem = styled.div `
|
|
22
|
+
display: flex;
|
|
23
|
+
justify-content: center;
|
|
24
|
+
align-items: center;
|
|
25
|
+
padding: 0.2rem;
|
|
26
|
+
border: 1px solid;
|
|
27
|
+
border-radius: 4px;
|
|
28
|
+
height: ${shortcutBoxSize}rem;
|
|
29
|
+
min-width: ${shortcutBoxSize}rem;
|
|
30
|
+
margin-left: 5px;
|
|
31
|
+
font-size: 0.75rem;
|
|
32
|
+
font-weight: bold;
|
|
33
|
+
`;
|
|
34
|
+
const SubTitleItem = styled.div `
|
|
35
|
+
position: relative;
|
|
36
|
+
padding-left: 15px;
|
|
37
|
+
box-sizing: border-box;
|
|
38
|
+
|
|
39
|
+
&::before {
|
|
40
|
+
position: absolute;
|
|
41
|
+
top: ${shortcutBoxSize / 2}rem;
|
|
42
|
+
left: 0;
|
|
43
|
+
width: 10px;
|
|
44
|
+
height: 1px;
|
|
45
|
+
margin: auto;
|
|
46
|
+
content: '';
|
|
47
|
+
border-bottom: 1px solid;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
&::after {
|
|
51
|
+
position: absolute;
|
|
52
|
+
top: 0;
|
|
53
|
+
bottom: 0;
|
|
54
|
+
left: 0;
|
|
55
|
+
width: 1px;
|
|
56
|
+
height: 100%;
|
|
57
|
+
content: '';
|
|
58
|
+
border-left: 1px solid;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
&:last-child::after {
|
|
62
|
+
height: ${shortcutBoxSize / 2}rem;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
&:first-child {
|
|
66
|
+
margin: 0;
|
|
67
|
+
}
|
|
68
|
+
`;
|
|
69
|
+
export function TooltipHelpContent(props) {
|
|
70
|
+
const { title, shortcuts = [], subTitles = [], description = '', link, style = {}, } = props;
|
|
71
|
+
return (_jsxs("div", { style: {
|
|
72
|
+
color: 'white',
|
|
73
|
+
width: '250px',
|
|
74
|
+
padding: '0.5rem',
|
|
75
|
+
...style,
|
|
76
|
+
}, children: [_jsxs(FlexContainer, { children: [_jsx(Title, { size: "0.9rem", children: title }), _jsx(ShortCuts, { shortcuts: shortcuts })] }), _jsx(SubTitles, { items: subTitles }), (description || link) && (_jsxs(Description, { children: [description, link && (_jsx("a", { style: description ? { paddingLeft: '5px' } : {}, target: "_blank", href: link, rel: "noreferrer", children: "Learn more" }))] }))] }));
|
|
77
|
+
}
|
|
78
|
+
function ShortCuts({ shortcuts }) {
|
|
79
|
+
return (_jsx("div", { style: {
|
|
80
|
+
display: 'flex',
|
|
81
|
+
textWrap: 'nowrap',
|
|
82
|
+
}, children: shortcuts.map((key) => {
|
|
83
|
+
return (_jsx(ShortcutItem, { children: _jsx("span", { children: key }) }, key));
|
|
84
|
+
}) }));
|
|
85
|
+
}
|
|
86
|
+
function SubTitles({ items }) {
|
|
87
|
+
if (!items || items.length === 0) {
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
return (_jsx("ul", { style: {
|
|
91
|
+
paddingLeft: '5px',
|
|
92
|
+
listStyle: 'none',
|
|
93
|
+
}, children: items.map(({ shortcuts = [], title }) => (_jsx(SubTitleItem, { children: _jsxs(FlexContainer, { children: [_jsx(Title, { size: "0.7rem", children: title }), _jsx(ShortCuts, { shortcuts: shortcuts })] }) }, title))) }));
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=TooltipHelpContent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TooltipHelpContent.js","sourceRoot":"","sources":["../../../src/components/toolbar/TooltipHelpContent.tsx"],"names":[],"mappings":";AAAA,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAGrC,MAAM,eAAe,GAAG,GAAG,CAAC;AAE5B,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;CAK/B,CAAC;AAMF,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAY;eACtB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI;;;;CAIhC,CAAC;AACF,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAA;;;;CAI3B,CAAC;AAEF,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;YAOnB,eAAe;eACZ,eAAe;;;;CAI7B,CAAC;AAEF,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;WAOpB,eAAe,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;cAqBhB,eAAe,GAAG,CAAC;;;;;;CAMhC,CAAC;AAWF,MAAM,UAAU,kBAAkB,CAAC,KAAkB;IACnD,MAAM,EACJ,KAAK,EACL,SAAS,GAAG,EAAE,EACd,SAAS,GAAG,EAAE,EACd,WAAW,GAAG,EAAE,EAChB,IAAI,EACJ,KAAK,GAAG,EAAE,GACX,GAAG,KAAK,CAAC;IAEV,OAAO,CACL,eACE,KAAK,EAAE;YACL,KAAK,EAAE,OAAO;YACd,KAAK,EAAE,OAAO;YACd,OAAO,EAAE,QAAQ;YACjB,GAAG,KAAK;SACT,aAED,MAAC,aAAa,eACZ,KAAC,KAAK,IAAC,IAAI,EAAC,QAAQ,YAAE,KAAK,GAAS,EACpC,KAAC,SAAS,IAAC,SAAS,EAAE,SAAS,GAAI,IACrB,EAChB,KAAC,SAAS,IAAC,KAAK,EAAE,SAAS,GAAI,EAE9B,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,CACxB,MAAC,WAAW,eACT,WAAW,EACX,IAAI,IAAI,CACP,YACE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAChD,MAAM,EAAC,QAAQ,EACf,IAAI,EAAE,IAAI,EACV,GAAG,EAAC,YAAY,2BAGd,CACL,IACW,CACf,IACG,CACP,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,EAAE,SAAS,EAA2B;IACvD,OAAO,CACL,cACE,KAAK,EAAE;YACL,OAAO,EAAE,MAAM;YACf,QAAQ,EAAE,QAAQ;SACnB,YAEA,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACrB,OAAO,CACL,KAAC,YAAY,cACX,yBAAO,GAAG,GAAQ,IADD,GAAG,CAEP,CAChB,CAAC;QACJ,CAAC,CAAC,GACE,CACP,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,EAAE,KAAK,EAA4B;IACpD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,aACE,KAAK,EAAE;YACL,WAAW,EAAE,KAAK;YAClB,SAAS,EAAE,MAAM;SAClB,YAEA,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CACxC,KAAC,YAAY,cACX,MAAC,aAAa,eACZ,KAAC,KAAK,IAAC,IAAI,EAAC,QAAQ,YAAE,KAAK,GAAS,EACpC,KAAC,SAAS,IAAC,SAAS,EAAE,SAAS,GAAI,IACrB,IAJC,KAAK,CAKT,CAChB,CAAC,GACC,CACN,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/toolbar/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,2BAA2B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/toolbar/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/toolbar/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,2BAA2B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/toolbar/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-science",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.0",
|
|
4
4
|
"description": "React components to build scientific applications UI",
|
|
5
5
|
"exports": {
|
|
6
6
|
"./app": {
|
|
@@ -60,6 +60,7 @@
|
|
|
60
60
|
"peerDependencies": {
|
|
61
61
|
"@blueprintjs/core": "^5.3.2",
|
|
62
62
|
"@blueprintjs/icons": "^5.1.7",
|
|
63
|
+
"fifo-logger": "^1.0.0",
|
|
63
64
|
"react": ">=18.0.0",
|
|
64
65
|
"react-dom": ">=18.0.0"
|
|
65
66
|
},
|
|
@@ -80,18 +81,18 @@
|
|
|
80
81
|
"d3-scale-chromatic": "^3.1.0",
|
|
81
82
|
"filelist-utils": "^1.11.0",
|
|
82
83
|
"immer": "^10.0.4",
|
|
83
|
-
"jcampconverter": "^9.6.
|
|
84
|
+
"jcampconverter": "^9.6.4",
|
|
84
85
|
"lodash": "^4.17.21",
|
|
85
86
|
"ml-gsd": "^12.1.6",
|
|
86
87
|
"ml-peak-shape-generator": "^4.1.2",
|
|
87
88
|
"ml-signal-processing": "^1.0.4",
|
|
88
|
-
"ml-spectra-processing": "^14.
|
|
89
|
-
"ms-spectrum": "^3.
|
|
89
|
+
"ml-spectra-processing": "^14.5.0",
|
|
90
|
+
"ms-spectrum": "^3.5.2",
|
|
90
91
|
"netcdfjs": "^3.0.0",
|
|
91
92
|
"react-d3-utils": "^1.0.0",
|
|
92
93
|
"react-dropzone": "^14.2.3",
|
|
93
94
|
"react-error-boundary": "^4.0.13",
|
|
94
|
-
"react-icons": "^5.
|
|
95
|
+
"react-icons": "^5.2.1",
|
|
95
96
|
"react-inspector": "^6.0.2",
|
|
96
97
|
"react-kbs": "^2.1.1",
|
|
97
98
|
"react-plot": "^1.4.2",
|
|
@@ -128,6 +129,7 @@
|
|
|
128
129
|
"eslint": "^8.57.0",
|
|
129
130
|
"eslint-config-zakodium": "^8.1.0",
|
|
130
131
|
"eslint-plugin-storybook": "^0.8.0",
|
|
132
|
+
"fifo-logger": "^1.0.0",
|
|
131
133
|
"prettier": "^3.2.5",
|
|
132
134
|
"react": "^18.2.0",
|
|
133
135
|
"react-dom": "^18.2.0",
|
|
@@ -1,22 +1,25 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useQuery, UseQueryResult } from '@tanstack/react-query';
|
|
2
|
+
import type { FifoLogger } from 'fifo-logger';
|
|
2
3
|
import { FileCollection, fileCollectionFromWebSource } from 'filelist-utils';
|
|
3
4
|
import { useCallback } from 'react';
|
|
4
5
|
|
|
5
|
-
import { AppDispatch, useAppDispatch } from '../../app-data
|
|
6
|
-
import { useHashSearchParams } from '../../components
|
|
6
|
+
import { AppDispatch, useAppDispatch } from '../../app-data';
|
|
7
|
+
import { useFifoLogger, useHashSearchParams } from '../../components';
|
|
7
8
|
|
|
8
9
|
type LoadFn = (
|
|
9
10
|
files: File[] | FileCollection,
|
|
11
|
+
logger: FifoLogger,
|
|
10
12
|
dispatch: AppDispatch,
|
|
11
13
|
) => Promise<void>;
|
|
12
14
|
|
|
13
15
|
export function useLoadFileCollectionFromHash(
|
|
14
16
|
onLoad: LoadFn,
|
|
15
17
|
): UseQueryResult<true | null> {
|
|
18
|
+
const logger = useFifoLogger();
|
|
16
19
|
const appDispatch = useAppDispatch();
|
|
17
20
|
const hashParams = useHashSearchParams();
|
|
18
21
|
const filelistUrl = hashParams.get('filelist');
|
|
19
|
-
|
|
22
|
+
return useQuery({
|
|
20
23
|
queryKey: ['filelist', filelistUrl],
|
|
21
24
|
queryFn: async () => {
|
|
22
25
|
if (!filelistUrl) {
|
|
@@ -29,20 +32,19 @@ export function useLoadFileCollectionFromHash(
|
|
|
29
32
|
entries: data,
|
|
30
33
|
baseURL,
|
|
31
34
|
});
|
|
32
|
-
void onLoad(fileCollection, appDispatch);
|
|
35
|
+
void onLoad(fileCollection, logger, appDispatch);
|
|
33
36
|
return true;
|
|
34
37
|
},
|
|
35
38
|
});
|
|
36
|
-
return query;
|
|
37
39
|
}
|
|
38
40
|
|
|
39
41
|
export function useDropFiles(onLoad: LoadFn) {
|
|
40
42
|
const dispatch = useAppDispatch();
|
|
41
|
-
const
|
|
43
|
+
const logger = useFifoLogger();
|
|
44
|
+
return useCallback(
|
|
42
45
|
(files: File[]) => {
|
|
43
|
-
void onLoad(files, dispatch);
|
|
46
|
+
void onLoad(files, logger, dispatch);
|
|
44
47
|
},
|
|
45
|
-
[dispatch, onLoad],
|
|
48
|
+
[dispatch, onLoad, logger],
|
|
46
49
|
);
|
|
47
|
-
return onDrop;
|
|
48
50
|
}
|
|
@@ -47,7 +47,7 @@ export function SignalProcessingPanel(props: SignalProcessingPanelProps) {
|
|
|
47
47
|
<ValueRenderers.Header value="Options" />
|
|
48
48
|
</Table.Header>
|
|
49
49
|
{filters.map(({ name, options }, i) => (
|
|
50
|
-
<Table.Row key={name}
|
|
50
|
+
<Table.Row key={name} bordered>
|
|
51
51
|
<ValueRenderers.Component>
|
|
52
52
|
<div style={{ display: 'flex', gap: '3px' }}>
|
|
53
53
|
<Button
|
|
@@ -4,7 +4,7 @@ import { MeasurementInfoPanel } from './MeasurementInfoPanel';
|
|
|
4
4
|
|
|
5
5
|
export function MeasurementInfoPanelAccordion() {
|
|
6
6
|
return (
|
|
7
|
-
<Accordion.Item title="Measurement info">
|
|
7
|
+
<Accordion.Item title="Measurement info" defaultOpened>
|
|
8
8
|
<MeasurementInfoPanel />
|
|
9
9
|
</Accordion.Item>
|
|
10
10
|
);
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { parseMPR, parseMPT } from 'biologic-converter';
|
|
2
2
|
import type { MeasurementVariable } from 'cheminfo-types';
|
|
3
|
+
import type { FifoLogger } from 'fifo-logger';
|
|
3
4
|
import type { FileCollection } from 'filelist-utils';
|
|
4
5
|
|
|
5
|
-
import type {
|
|
6
|
+
import type { MeasurementBase, Measurements } from '../index';
|
|
6
7
|
|
|
7
8
|
import { getMeasurementInfoFromFile } from './utility/getMeasurementInfoFromFile';
|
|
8
|
-
import { createLogEntry, ParserLog } from './utility/parserLog';
|
|
9
9
|
|
|
10
10
|
/* the MeasurementBase has got a data key,
|
|
11
11
|
and inside a variable key, compatible with this type */
|
|
@@ -18,7 +18,7 @@ type MeasurementDataVariable = Record<string, MeasurementVariable>;
|
|
|
18
18
|
*/
|
|
19
19
|
export async function biologicLoader(
|
|
20
20
|
fileCollection: FileCollection,
|
|
21
|
-
|
|
21
|
+
logger?: FifoLogger,
|
|
22
22
|
): Promise<Partial<Measurements>> {
|
|
23
23
|
const measurements: Partial<Measurements> = {};
|
|
24
24
|
const entries: MeasurementBase[] = [];
|
|
@@ -67,14 +67,15 @@ export async function biologicLoader(
|
|
|
67
67
|
} catch (error) {
|
|
68
68
|
//send error to UI to show to User ?
|
|
69
69
|
if (error instanceof Error) {
|
|
70
|
-
if (
|
|
71
|
-
|
|
70
|
+
if (logger) {
|
|
71
|
+
logger.error(error);
|
|
72
72
|
} else {
|
|
73
73
|
throw error;
|
|
74
74
|
}
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
|
+
logger?.debug(`Loaded ${entries.length} entries with biologicLoader`);
|
|
78
79
|
measurements.iv = { entries };
|
|
79
80
|
return measurements;
|
|
80
81
|
}
|
|
@@ -1,18 +1,19 @@
|
|
|
1
|
+
import type { FifoLogger } from 'fifo-logger';
|
|
1
2
|
import type { FileCollection } from 'filelist-utils';
|
|
2
3
|
import { NetCDFReader } from 'netcdfjs';
|
|
3
4
|
|
|
4
5
|
import { assert } from '../../components/index';
|
|
5
|
-
import type { MeasurementBase,
|
|
6
|
+
import type { MeasurementBase, MeasurementKind, Measurements } from '../index';
|
|
6
7
|
|
|
7
8
|
import { getMeasurementInfoFromFile } from './utility/getMeasurementInfoFromFile';
|
|
8
|
-
import { ParserLog, createLogEntry } from './utility/parserLog';
|
|
9
9
|
|
|
10
10
|
export async function cdfLoader(
|
|
11
11
|
fileCollection: FileCollection,
|
|
12
|
-
|
|
12
|
+
logger?: FifoLogger,
|
|
13
13
|
): Promise<Partial<Measurements>> {
|
|
14
14
|
const newMeasurements: Partial<Measurements> = {};
|
|
15
15
|
let kind: MeasurementKind | undefined;
|
|
16
|
+
let count = 0;
|
|
16
17
|
for (const file of fileCollection) {
|
|
17
18
|
if (/\.cdf$/i.test(file.name)) {
|
|
18
19
|
try {
|
|
@@ -57,18 +58,12 @@ export async function cdfLoader(
|
|
|
57
58
|
: chromatogram(reader),
|
|
58
59
|
};
|
|
59
60
|
newMeasurements[kind]?.entries.push(newMeasurement);
|
|
61
|
+
count++;
|
|
60
62
|
} catch (error) {
|
|
61
63
|
if (error instanceof Error) {
|
|
62
64
|
//send error to UI ?
|
|
63
|
-
if (
|
|
64
|
-
|
|
65
|
-
createLogEntry({
|
|
66
|
-
error,
|
|
67
|
-
parser: 'cdfLoader',
|
|
68
|
-
message: 'error parsing file from cdfLoader',
|
|
69
|
-
relativePath: file.relativePath,
|
|
70
|
-
}),
|
|
71
|
-
);
|
|
65
|
+
if (logger) {
|
|
66
|
+
logger.error(error);
|
|
72
67
|
} else {
|
|
73
68
|
throw error;
|
|
74
69
|
}
|
|
@@ -76,7 +71,7 @@ export async function cdfLoader(
|
|
|
76
71
|
}
|
|
77
72
|
}
|
|
78
73
|
}
|
|
79
|
-
|
|
74
|
+
logger?.debug(`Loaded ${count} measurements with cdfLoader`);
|
|
80
75
|
return newMeasurements;
|
|
81
76
|
}
|
|
82
77
|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { FifoLogger } from 'fifo-logger';
|
|
1
2
|
import type { FileCollection } from 'filelist-utils';
|
|
2
3
|
import { convert } from 'jcampconverter';
|
|
3
4
|
|
|
@@ -5,7 +6,6 @@ import { assert } from '../../components/index';
|
|
|
5
6
|
import type { MeasurementKind, Measurements } from '../index';
|
|
6
7
|
|
|
7
8
|
import { getMeasurementInfoFromFile } from './utility/getMeasurementInfoFromFile';
|
|
8
|
-
import { createLogEntry, ParserLog } from './utility/parserLog';
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
*
|
|
@@ -15,8 +15,9 @@ import { createLogEntry, ParserLog } from './utility/parserLog';
|
|
|
15
15
|
*/
|
|
16
16
|
export async function jcampLoader(
|
|
17
17
|
fileCollection: FileCollection,
|
|
18
|
-
|
|
18
|
+
logger?: FifoLogger,
|
|
19
19
|
): Promise<Partial<Measurements>> {
|
|
20
|
+
let count = 0;
|
|
20
21
|
const newMeasurements: Partial<Measurements> = {};
|
|
21
22
|
for (const file of fileCollection) {
|
|
22
23
|
if (/(?:\.jdx|\.dx)$/i.test(file.name)) {
|
|
@@ -50,22 +51,15 @@ export async function jcampLoader(
|
|
|
50
51
|
meta: measurement.meta,
|
|
51
52
|
data: normalizeSpectra(measurement.spectra),
|
|
52
53
|
};
|
|
54
|
+
count++;
|
|
53
55
|
Object.assign(newMeasurement.info, measurement.info);
|
|
54
56
|
newMeasurements[kind]?.entries.push(newMeasurement);
|
|
55
57
|
}
|
|
56
58
|
}
|
|
57
59
|
} catch (error) {
|
|
58
|
-
// send error to UI ?
|
|
59
60
|
if (error instanceof Error) {
|
|
60
|
-
if (
|
|
61
|
-
|
|
62
|
-
createLogEntry({
|
|
63
|
-
error,
|
|
64
|
-
parser: 'jcamp converter',
|
|
65
|
-
relativePath: file.relativePath,
|
|
66
|
-
message: 'error parsing jdx or dx file',
|
|
67
|
-
}),
|
|
68
|
-
);
|
|
61
|
+
if (logger) {
|
|
62
|
+
logger?.error(error);
|
|
69
63
|
} else {
|
|
70
64
|
throw error;
|
|
71
65
|
}
|
|
@@ -74,6 +68,7 @@ export async function jcampLoader(
|
|
|
74
68
|
}
|
|
75
69
|
}
|
|
76
70
|
|
|
71
|
+
logger?.debug(`Loaded ${count} measurements with jcampLoader`);
|
|
77
72
|
return newMeasurements;
|
|
78
73
|
}
|
|
79
74
|
|
|
@@ -97,10 +92,11 @@ function normalizeSpectra(spectra: any) {
|
|
|
97
92
|
for (const key in variables) {
|
|
98
93
|
const variable = variables[key];
|
|
99
94
|
if (variable.label) continue;
|
|
100
|
-
|
|
101
|
-
if (variable.units && !
|
|
102
|
-
|
|
95
|
+
let label: string = variable.name || variable.symbol || key;
|
|
96
|
+
if (variable.units && !label.includes(variable.units)) {
|
|
97
|
+
label += ` [${variable.units}]`;
|
|
103
98
|
}
|
|
99
|
+
variable.label = label;
|
|
104
100
|
}
|
|
105
101
|
}
|
|
106
102
|
data.push({ variables });
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import type { FifoLogger } from 'fifo-logger';
|
|
1
2
|
import type { FileCollection } from 'filelist-utils';
|
|
2
3
|
import { xMinMaxValues } from 'ml-spectra-processing';
|
|
3
4
|
|
|
4
|
-
import {
|
|
5
|
+
import { enhance, Enhancers, MeasurementBase, Measurements } from '../index';
|
|
5
6
|
|
|
6
7
|
import {
|
|
7
8
|
MeasurementsLoader,
|
|
@@ -12,20 +13,20 @@ import type { ParserLog } from './utility/parserLog';
|
|
|
12
13
|
export interface LoadOptions {
|
|
13
14
|
loaders?: MeasurementsLoader[];
|
|
14
15
|
enhancers?: Partial<Enhancers>;
|
|
15
|
-
logger?:
|
|
16
|
+
logger?: FifoLogger;
|
|
16
17
|
}
|
|
17
18
|
|
|
18
19
|
export async function loadMeasurements(
|
|
19
20
|
fileCollection: FileCollection,
|
|
20
|
-
options: LoadOptions
|
|
21
|
+
options: LoadOptions,
|
|
21
22
|
) {
|
|
22
23
|
const measurements: Partial<Measurements> = {};
|
|
23
24
|
const logs: ParserLog[] = [];
|
|
24
|
-
const { loaders = [], enhancers = {}, logger
|
|
25
|
+
const { loaders = [], enhancers = {}, logger } = options;
|
|
25
26
|
for (const loader of loaders) {
|
|
26
27
|
// TODO: load in parallel
|
|
27
28
|
// eslint-disable-next-line no-await-in-loop
|
|
28
|
-
const loaderData = await loader(fileCollection, logger
|
|
29
|
+
const loaderData = await loader(fileCollection, logger);
|
|
29
30
|
for (const { entries } of Object.values(loaderData)) {
|
|
30
31
|
for (const entry of entries) {
|
|
31
32
|
computeMinMax(entry);
|
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { FifoLogger } from 'fifo-logger';
|
|
2
|
+
import type { FileCollection, FileCollectionItem } from 'filelist-utils';
|
|
2
3
|
|
|
3
4
|
import {
|
|
4
|
-
Measurements,
|
|
5
|
-
MeasurementBase,
|
|
6
5
|
getMeasurementInfoFromFile,
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
MeasurementBase,
|
|
7
|
+
Measurements,
|
|
9
8
|
} from '../../../index';
|
|
10
9
|
|
|
11
10
|
export async function cary500Loader(
|
|
12
11
|
fileCollection: FileCollection,
|
|
13
|
-
|
|
12
|
+
logger?: FifoLogger,
|
|
14
13
|
): Promise<Partial<Measurements>> {
|
|
15
14
|
const newMeasurements: Partial<Measurements> = {};
|
|
16
15
|
const entries: MeasurementBase[] = [];
|
|
@@ -26,16 +25,8 @@ export async function cary500Loader(
|
|
|
26
25
|
}
|
|
27
26
|
} catch (error) {
|
|
28
27
|
if (error instanceof Error) {
|
|
29
|
-
if (
|
|
30
|
-
|
|
31
|
-
createLogEntry({
|
|
32
|
-
kind: 'error',
|
|
33
|
-
parser: 'cary500Loader',
|
|
34
|
-
message: 'Error parsing cary500 experiment.',
|
|
35
|
-
error,
|
|
36
|
-
relativePath: file.relativePath,
|
|
37
|
-
}),
|
|
38
|
-
);
|
|
28
|
+
if (logger) {
|
|
29
|
+
logger.error(error);
|
|
39
30
|
} else {
|
|
40
31
|
throw error;
|
|
41
32
|
}
|
|
@@ -43,6 +34,7 @@ export async function cary500Loader(
|
|
|
43
34
|
}
|
|
44
35
|
}
|
|
45
36
|
}
|
|
37
|
+
logger?.debug(`Loaded ${entries.length} entries with cary500Loader`);
|
|
46
38
|
newMeasurements.uvvis = { entries };
|
|
47
39
|
return newMeasurements;
|
|
48
40
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
+
import type { FifoLogger } from 'fifo-logger';
|
|
1
2
|
import type { FileCollection } from 'filelist-utils';
|
|
2
|
-
import {
|
|
3
|
+
import { guessSpectraType, parse } from 'spc-parser';
|
|
3
4
|
|
|
4
5
|
import { assert } from '../../components/index';
|
|
5
|
-
import type { MeasurementKind, Measurements
|
|
6
|
+
import type { MeasurementBase, MeasurementKind, Measurements } from '../index';
|
|
6
7
|
|
|
7
8
|
import { getMeasurementInfoFromFile } from './utility/getMeasurementInfoFromFile';
|
|
8
|
-
import { ParserLog, createLogEntry } from './utility/parserLog';
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
*
|
|
@@ -15,7 +15,7 @@ import { ParserLog, createLogEntry } from './utility/parserLog';
|
|
|
15
15
|
*/
|
|
16
16
|
export async function spcLoader(
|
|
17
17
|
fileCollection: FileCollection,
|
|
18
|
-
|
|
18
|
+
logger?: FifoLogger,
|
|
19
19
|
): Promise<Partial<Measurements>> {
|
|
20
20
|
const measurements: Partial<Measurements> = {};
|
|
21
21
|
for (const file of fileCollection) {
|
|
@@ -38,14 +38,8 @@ export async function spcLoader(
|
|
|
38
38
|
data: parsed.spectra as unknown as MeasurementBase['data'],
|
|
39
39
|
});
|
|
40
40
|
} catch (error) {
|
|
41
|
-
if (error instanceof Error &&
|
|
42
|
-
|
|
43
|
-
createLogEntry({
|
|
44
|
-
parser: 'spc-parser',
|
|
45
|
-
relativePath: file.relativePath,
|
|
46
|
-
error,
|
|
47
|
-
}),
|
|
48
|
-
);
|
|
41
|
+
if (error instanceof Error && logger) {
|
|
42
|
+
logger.error(error);
|
|
49
43
|
} else {
|
|
50
44
|
throw error;
|
|
51
45
|
}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
+
import type { FifoLogger } from 'fifo-logger';
|
|
1
2
|
import type { FileCollection } from 'filelist-utils';
|
|
2
3
|
|
|
3
4
|
import { assert } from '../../../components/index';
|
|
4
5
|
import type { MeasurementBase, Measurements } from '../../index';
|
|
5
6
|
|
|
6
|
-
import type { ParserLog } from './parserLog';
|
|
7
|
-
|
|
8
7
|
export type MeasurementsLoader = (
|
|
9
8
|
fileCollection: FileCollection,
|
|
10
|
-
|
|
9
|
+
logger?: FifoLogger,
|
|
11
10
|
) => Promise<Partial<Measurements>>;
|
|
12
11
|
|
|
13
12
|
export function mergeMeasurements(
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { MeasurementVariable } from 'cheminfo-types';
|
|
2
|
+
import type { FifoLogger } from 'fifo-logger';
|
|
2
3
|
import type { FileCollection } from 'filelist-utils';
|
|
3
4
|
import { parse, Wdf } from 'wdf-parser';
|
|
4
5
|
|
|
5
|
-
import type {
|
|
6
|
+
import type { MeasurementBase, Measurements } from '../index';
|
|
6
7
|
|
|
7
8
|
import { getMeasurementInfoFromFile } from './utility/getMeasurementInfoFromFile';
|
|
8
|
-
import { ParserLog, createLogEntry } from './utility/parserLog';
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
*
|
|
@@ -15,7 +15,7 @@ import { ParserLog, createLogEntry } from './utility/parserLog';
|
|
|
15
15
|
*/
|
|
16
16
|
export async function wdfLoader(
|
|
17
17
|
fileCollection: FileCollection,
|
|
18
|
-
|
|
18
|
+
logger?: FifoLogger,
|
|
19
19
|
): Promise<Partial<Measurements>> {
|
|
20
20
|
const measurements: Partial<Measurements> = {};
|
|
21
21
|
const entries: MeasurementBase[] = [];
|
|
@@ -33,15 +33,8 @@ export async function wdfLoader(
|
|
|
33
33
|
});
|
|
34
34
|
} catch (error) {
|
|
35
35
|
if (error instanceof Error) {
|
|
36
|
-
if (
|
|
37
|
-
|
|
38
|
-
createLogEntry({
|
|
39
|
-
parser: 'wdf',
|
|
40
|
-
error,
|
|
41
|
-
message: 'error reading wdf file',
|
|
42
|
-
relativePath: file.relativePath,
|
|
43
|
-
}),
|
|
44
|
-
);
|
|
36
|
+
if (logger) {
|
|
37
|
+
logger.error(error);
|
|
45
38
|
} else {
|
|
46
39
|
throw error;
|
|
47
40
|
}
|
|
@@ -23,6 +23,7 @@ export interface AccordionItemProps {
|
|
|
23
23
|
title: string;
|
|
24
24
|
children: ReactNode;
|
|
25
25
|
defaultOpened?: boolean;
|
|
26
|
+
toolbar?: ReactNode;
|
|
26
27
|
}
|
|
27
28
|
|
|
28
29
|
const styles = {
|
|
@@ -62,7 +63,8 @@ export function Accordion(props: AccordionProps) {
|
|
|
62
63
|
}
|
|
63
64
|
|
|
64
65
|
Accordion.Item = function AccordionItem(props: AccordionItemProps) {
|
|
65
|
-
const {
|
|
66
|
+
const { title, children, defaultOpened, toolbar } = props;
|
|
67
|
+
const { item, utils } = useAccordionContext(title, defaultOpened);
|
|
66
68
|
|
|
67
69
|
const onClickHandle = useCallback(
|
|
68
70
|
(event: ReactMouseEvent<HTMLButtonElement>) => {
|
|
@@ -75,16 +77,10 @@ Accordion.Item = function AccordionItem(props: AccordionItemProps) {
|
|
|
75
77
|
[utils],
|
|
76
78
|
);
|
|
77
79
|
|
|
78
|
-
let displayable = false;
|
|
79
|
-
|
|
80
|
-
if (item) {
|
|
81
|
-
displayable = item.isOpen;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
80
|
return (
|
|
85
81
|
<div
|
|
86
82
|
style={{
|
|
87
|
-
flex:
|
|
83
|
+
flex: item?.isOpen ? '1 1 1px' : 'none',
|
|
88
84
|
display: 'flex',
|
|
89
85
|
flexDirection: 'column',
|
|
90
86
|
}}
|
|
@@ -97,15 +93,24 @@ Accordion.Item = function AccordionItem(props: AccordionItemProps) {
|
|
|
97
93
|
alignItems: 'center',
|
|
98
94
|
width: '100%',
|
|
99
95
|
userSelect: 'none',
|
|
96
|
+
justifyContent: 'space-between',
|
|
97
|
+
padding: '0px 12px',
|
|
100
98
|
}}
|
|
101
99
|
css={styles.header}
|
|
102
100
|
>
|
|
103
|
-
|
|
101
|
+
<div
|
|
102
|
+
style={{
|
|
103
|
+
padding: '5px 0px',
|
|
104
|
+
}}
|
|
105
|
+
>
|
|
106
|
+
{title}
|
|
107
|
+
</div>
|
|
108
|
+
{toolbar}
|
|
104
109
|
</button>
|
|
105
110
|
<div
|
|
106
111
|
style={{
|
|
107
|
-
display:
|
|
108
|
-
flex:
|
|
112
|
+
display: item?.isOpen ? 'flex' : 'none',
|
|
113
|
+
flex: item?.isOpen ? '1 1 1px' : 'none',
|
|
109
114
|
backgroundColor: 'white',
|
|
110
115
|
maxHeight: '100%',
|
|
111
116
|
overflow: 'hidden',
|
|
@@ -120,7 +125,7 @@ Accordion.Item = function AccordionItem(props: AccordionItemProps) {
|
|
|
120
125
|
flexDirection: 'column',
|
|
121
126
|
}}
|
|
122
127
|
>
|
|
123
|
-
{
|
|
128
|
+
{children}
|
|
124
129
|
</div>
|
|
125
130
|
</div>
|
|
126
131
|
</div>
|