react-science 3.1.0 → 4.1.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-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/button/Button.d.ts +1 -1
- package/lib/components/button/Button.d.ts.map +1 -1
- package/lib/components/button/Button.js +3 -2
- package/lib/components/button/Button.js.map +1 -1
- package/lib/components/color-picker/gradient-select/GradientSelect.d.ts +1 -1
- package/lib/components/color-picker/gradient-select/GradientSelect.d.ts.map +1 -1
- package/lib/components/color-picker/gradient-select/GradientSelect.js +45 -23
- package/lib/components/color-picker/gradient-select/GradientSelect.js.map +1 -1
- package/lib/components/hooks/useSelect.d.ts +7 -5
- package/lib/components/hooks/useSelect.d.ts.map +1 -1
- package/lib/components/hooks/useSelect.js +3 -1
- package/lib/components/hooks/useSelect.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 +78 -20
- 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/table/Table.d.ts +4 -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 +3 -1
- package/lib/components/table/TableHeader.d.ts.map +1 -1
- package/lib/components/table/TableHeader.js +8 -2
- package/lib/components/table/TableHeader.js.map +1 -1
- package/lib/components/table/TableRow.d.ts +1 -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/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-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/button/Button.d.ts +1 -1
- package/lib-esm/components/button/Button.d.ts.map +1 -1
- package/lib-esm/components/button/Button.js +3 -2
- package/lib-esm/components/button/Button.js.map +1 -1
- package/lib-esm/components/color-picker/gradient-select/GradientSelect.d.ts +1 -1
- package/lib-esm/components/color-picker/gradient-select/GradientSelect.d.ts.map +1 -1
- package/lib-esm/components/color-picker/gradient-select/GradientSelect.js +45 -23
- package/lib-esm/components/color-picker/gradient-select/GradientSelect.js.map +1 -1
- package/lib-esm/components/hooks/useSelect.d.ts +7 -5
- package/lib-esm/components/hooks/useSelect.d.ts.map +1 -1
- package/lib-esm/components/hooks/useSelect.js +3 -1
- package/lib-esm/components/hooks/useSelect.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 +52 -17
- 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/table/Table.d.ts +4 -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 +3 -1
- package/lib-esm/components/table/TableHeader.d.ts.map +1 -1
- package/lib-esm/components/table/TableHeader.js +8 -2
- package/lib-esm/components/table/TableHeader.js.map +1 -1
- package/lib-esm/components/table/TableRow.d.ts +1 -1
- package/lib-esm/components/table/TableRow.d.ts.map +1 -1
- package/lib-esm/components/table/TableRow.js +6 -19
- 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/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 +15 -13
- package/src/app/hooks/file-loading.ts +12 -10
- package/src/app/panels/SignalProcessingPanel.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/button/Button.tsx +12 -5
- package/src/components/color-picker/gradient-select/GradientSelect.tsx +82 -46
- package/src/components/hooks/useSelect.tsx +13 -8
- package/src/components/index.ts +2 -1
- package/src/components/info-panel/InfoPanel.tsx +88 -49
- 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/table/Table.tsx +1 -6
- package/src/components/table/TableHeader.tsx +15 -3
- package/src/components/table/TableRow.tsx +4 -23
- package/src/components/table/tableContext.ts +1 -1
- package/src/components/toolbar/TooltipHelpContent.tsx +173 -0
- package/src/components/toolbar/index.ts +1 -0
|
@@ -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
|
}
|
|
@@ -18,21 +18,28 @@ type BlueprintProps = {
|
|
|
18
18
|
BlueprintAnchorButtonProps[key];
|
|
19
19
|
};
|
|
20
20
|
export type ButtonProps = BlueprintProps & {
|
|
21
|
-
tooltipProps?: Omit<TooltipProps, 'children'
|
|
21
|
+
tooltipProps?: Partial<Omit<TooltipProps, 'children'>>;
|
|
22
22
|
tag?: ReactNode;
|
|
23
23
|
tagProps?: Omit<TagProps, 'children'>;
|
|
24
24
|
};
|
|
25
25
|
|
|
26
26
|
export function Button(props: ButtonProps) {
|
|
27
|
-
const { tooltipProps, children, tag, tagProps, ...buttonProps } = props;
|
|
28
|
-
|
|
27
|
+
const { tooltipProps = {}, children, tag, tagProps, ...buttonProps } = props;
|
|
28
|
+
const {
|
|
29
|
+
fill,
|
|
30
|
+
content = '',
|
|
31
|
+
disabled = !tooltipProps.content,
|
|
32
|
+
...otherToolTipProps
|
|
33
|
+
} = tooltipProps;
|
|
29
34
|
const InnerButton = buttonProps.disabled
|
|
30
35
|
? BlueprintAnchorButton
|
|
31
36
|
: BlueprintButton;
|
|
32
37
|
return (
|
|
33
38
|
<Tooltip
|
|
34
|
-
fill={
|
|
35
|
-
{
|
|
39
|
+
fill={fill || buttonProps.fill}
|
|
40
|
+
disabled={disabled}
|
|
41
|
+
content={content}
|
|
42
|
+
{...otherToolTipProps}
|
|
36
43
|
renderTarget={({ isOpen, ...targetProps }) => (
|
|
37
44
|
<div style={{ position: 'relative' }}>
|
|
38
45
|
{tag && (
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
+
/** @jsxImportSource @emotion/react */
|
|
2
|
+
import { css } from '@emotion/react';
|
|
1
3
|
import styled from '@emotion/styled';
|
|
2
|
-
|
|
3
|
-
// @ts-ignore This import fails when compiling to CJS.
|
|
4
|
-
import { Listbox } from '@headlessui/react';
|
|
4
|
+
import * as Select from '@radix-ui/react-select';
|
|
5
5
|
import * as scaleChromatic from 'd3-scale-chromatic';
|
|
6
|
-
import { Fragment } from 'react';
|
|
7
6
|
import { FaChevronDown } from 'react-icons/fa';
|
|
8
7
|
|
|
9
8
|
import FixedGradientPreview from '../preview/FixedGradientPreview';
|
|
@@ -24,16 +23,10 @@ const GradientSelectListbox = styled.div`
|
|
|
24
23
|
position: relative;
|
|
25
24
|
width: 100%;
|
|
26
25
|
border: 1px solid darkgray;
|
|
26
|
+
margin-top: 100px;
|
|
27
27
|
border-radius: 0.25rem;
|
|
28
28
|
`;
|
|
29
29
|
|
|
30
|
-
const GradientSelectButton = styled.button`
|
|
31
|
-
position: relative;
|
|
32
|
-
width: 100%;
|
|
33
|
-
height: 30px;
|
|
34
|
-
padding: 3px;
|
|
35
|
-
`;
|
|
36
|
-
|
|
37
30
|
const GradientSelectChevron = styled(FaChevronDown)`
|
|
38
31
|
position: absolute;
|
|
39
32
|
height: 100%;
|
|
@@ -41,23 +34,11 @@ const GradientSelectChevron = styled(FaChevronDown)`
|
|
|
41
34
|
right: 0.5rem;
|
|
42
35
|
`;
|
|
43
36
|
|
|
44
|
-
const
|
|
45
|
-
position: absolute;
|
|
46
|
-
width: 100%;
|
|
47
|
-
margin-top: 5px;
|
|
48
|
-
border: 1px solid darkgray;
|
|
49
|
-
border-radius: 0.25rem;
|
|
50
|
-
padding-inline: 3px;
|
|
51
|
-
padding-bottom: 5px;
|
|
52
|
-
`;
|
|
53
|
-
|
|
54
|
-
const GradientSelectOption = styled.li<{ active: boolean }>`
|
|
37
|
+
const GradientSelectOption = styled.li`
|
|
55
38
|
display: flex;
|
|
56
39
|
flex-direction: column;
|
|
57
40
|
padding-top: 5px;
|
|
58
41
|
cursor: pointer;
|
|
59
|
-
${(props) => !props.active && 'opacity: 0.8;'}
|
|
60
|
-
${(props) => props.active && 'font-weight: bold;'}
|
|
61
42
|
`;
|
|
62
43
|
|
|
63
44
|
export interface GradientSelectProps {
|
|
@@ -68,27 +49,82 @@ export interface GradientSelectProps {
|
|
|
68
49
|
export function GradientSelect(props: GradientSelectProps) {
|
|
69
50
|
const { value, onChange } = props;
|
|
70
51
|
return (
|
|
71
|
-
<
|
|
72
|
-
<
|
|
73
|
-
<
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
52
|
+
<GradientSelectListbox>
|
|
53
|
+
<Select.Root value={value} onValueChange={onChange}>
|
|
54
|
+
<Select.Trigger
|
|
55
|
+
css={css`
|
|
56
|
+
width: 100%;
|
|
57
|
+
height: 30px;
|
|
58
|
+
padding: 4px;
|
|
59
|
+
`}
|
|
60
|
+
>
|
|
61
|
+
<Select.Value>
|
|
62
|
+
<FixedGradientPreview gradient={value} />
|
|
63
|
+
<GradientSelectChevron />
|
|
64
|
+
</Select.Value>
|
|
65
|
+
</Select.Trigger>
|
|
66
|
+
<Select.Portal>
|
|
67
|
+
<Select.Content
|
|
68
|
+
position="popper"
|
|
69
|
+
sideOffset={10}
|
|
70
|
+
css={css`
|
|
71
|
+
background-color: white;
|
|
72
|
+
width: var(--radix-select-trigger-width);
|
|
73
|
+
border: 1px solid darkgray;
|
|
74
|
+
border-radius: 0.25rem;
|
|
75
|
+
padding: 4px;
|
|
76
|
+
`}
|
|
77
|
+
>
|
|
78
|
+
<Select.Viewport>
|
|
79
|
+
{scaleOptions.map((option) => (
|
|
80
|
+
<Select.Item
|
|
81
|
+
key={option}
|
|
82
|
+
value={option}
|
|
83
|
+
css={css`
|
|
84
|
+
outline: none;
|
|
85
|
+
padding: 8px 0 8px 0;
|
|
86
|
+
cursor: pointer;
|
|
87
|
+
margin-left: 20px;
|
|
88
|
+
&[data-state='checked'] {
|
|
89
|
+
font-weight: bold;
|
|
90
|
+
}
|
|
91
|
+
&[data-state='unchecked'] {
|
|
92
|
+
opacity: 1;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
&:not([data-highlighted]) span {
|
|
96
|
+
margin-left: 12px;
|
|
97
|
+
}
|
|
98
|
+
&[data-highlighted] {
|
|
99
|
+
span {
|
|
100
|
+
margin-left: 4px;
|
|
101
|
+
}
|
|
102
|
+
::before {
|
|
103
|
+
content: '';
|
|
104
|
+
display: inline-block;
|
|
105
|
+
width: 8px;
|
|
106
|
+
height: 8px;
|
|
107
|
+
border-radius: 1px;
|
|
108
|
+
filter: brightness(60%);
|
|
109
|
+
background-color: dimgray;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
`}
|
|
113
|
+
>
|
|
114
|
+
<Select.ItemText>
|
|
115
|
+
{option}
|
|
116
|
+
<GradientSelectOption>
|
|
117
|
+
<div style={{ height: 15 }}>
|
|
118
|
+
<FixedGradientPreview gradient={option} />
|
|
119
|
+
</div>
|
|
120
|
+
</GradientSelectOption>
|
|
121
|
+
</Select.ItemText>
|
|
122
|
+
</Select.Item>
|
|
123
|
+
))}
|
|
124
|
+
</Select.Viewport>
|
|
125
|
+
</Select.Content>
|
|
126
|
+
</Select.Portal>
|
|
127
|
+
</Select.Root>
|
|
128
|
+
</GradientSelectListbox>
|
|
93
129
|
);
|
|
94
130
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { MenuItem } from '@blueprintjs/core';
|
|
2
2
|
import { ItemRenderer } from '@blueprintjs/select';
|
|
3
|
-
import { useState } from 'react';
|
|
3
|
+
import { ReactNode, useState } from 'react';
|
|
4
4
|
|
|
5
5
|
type FilterType<SourceType, Type> = Pick<
|
|
6
6
|
SourceType,
|
|
@@ -9,14 +9,17 @@ type FilterType<SourceType, Type> = Pick<
|
|
|
9
9
|
}[keyof SourceType]
|
|
10
10
|
>;
|
|
11
11
|
|
|
12
|
-
interface
|
|
13
|
-
|
|
12
|
+
interface ItemOptions<T> {
|
|
13
|
+
renderItem?: (item: T) => ReactNode;
|
|
14
14
|
defaultSelectedItem?: T;
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
interface
|
|
17
|
+
interface BaseOptions<T> extends ItemOptions<T> {
|
|
18
|
+
itemTextKey: keyof FilterType<T, string>;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
interface RenderOptions<T> extends ItemOptions<T> {
|
|
18
22
|
getItemText: (item: T) => string;
|
|
19
|
-
defaultSelectedItem?: T;
|
|
20
23
|
}
|
|
21
24
|
|
|
22
25
|
type SelectOptions<T> = BaseOptions<T> | RenderOptions<T>;
|
|
@@ -91,16 +94,18 @@ function getItemRenderer<T>(value: T, options: SelectOptions<T>) {
|
|
|
91
94
|
{ handleClick, handleFocus, modifiers, index },
|
|
92
95
|
) => {
|
|
93
96
|
const label = getLabel(item, options);
|
|
97
|
+
const { renderItem } = options;
|
|
98
|
+
const { active, disabled } = modifiers;
|
|
94
99
|
return (
|
|
95
100
|
<MenuItem
|
|
96
|
-
active={
|
|
97
|
-
disabled={
|
|
101
|
+
active={active}
|
|
102
|
+
disabled={disabled}
|
|
98
103
|
selected={selectedLabel === label}
|
|
99
104
|
key={index}
|
|
100
105
|
onClick={handleClick}
|
|
101
106
|
onFocus={handleFocus}
|
|
102
107
|
roleStructure="listoption"
|
|
103
|
-
text={label}
|
|
108
|
+
text={renderItem?.(item) || label}
|
|
104
109
|
/>
|
|
105
110
|
);
|
|
106
111
|
};
|
package/src/components/index.ts
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
export * from './accordion/index';
|
|
2
2
|
export * from './button/index';
|
|
3
3
|
export * from './color-picker/index';
|
|
4
|
+
export * from './dialog/index';
|
|
4
5
|
export * from './drop-zone/index';
|
|
5
6
|
export * from './forms/index';
|
|
6
7
|
export * from './fullscreen/index';
|
|
7
8
|
export * from './header/index';
|
|
8
9
|
export * from './hooks/index';
|
|
9
10
|
export * from './info-panel/index';
|
|
10
|
-
export * from './
|
|
11
|
+
export * from './logger/index';
|
|
11
12
|
export * from './root-layout/index';
|
|
12
13
|
export * from './split-pane/index';
|
|
13
14
|
export * from './table/index';
|