@insync-stageplayer/measurements 0.4.6 → 0.4.7
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/AsyncSubject.d.ts +23 -23
- package/lib/AsyncSubject.js +64 -64
- package/lib/client/MeasurementDataClient.d.ts +124 -124
- package/lib/client/MeasurementDataClient.js +99 -99
- package/lib/client/OnlineMeasurementDataClient.d.ts +42 -42
- package/lib/client/OnlineMeasurementDataClient.js +166 -166
- package/lib/client/debug.d.ts +1 -1
- package/lib/client/debug.js +4 -4
- package/lib/client/index.d.ts +2 -2
- package/lib/client/index.js +2 -2
- package/lib/client/offline/OfflineMeasurementDataClient.d.ts +14 -14
- package/lib/client/offline/OfflineMeasurementDataClient.js +41 -41
- package/lib/client/offline/offline.d.ts +16 -16
- package/lib/client/offline/offline.js +79 -79
- package/lib/client/sbf.d.ts +34 -34
- package/lib/client/sbf.js +88 -88
- package/lib/components/MeasurementsChooser.d.ts +34 -34
- package/lib/components/MeasurementsChooser.js +95 -95
- package/lib/components/MeasurementsModuleProvider.d.ts +34 -34
- package/lib/components/MeasurementsModuleProvider.js +73 -73
- package/lib/components/MeasurementsTable/CheckboxCell.d.ts +18 -18
- package/lib/components/MeasurementsTable/CheckboxCell.js +15 -15
- package/lib/components/MeasurementsTable/ColorCell.d.ts +29 -29
- package/lib/components/MeasurementsTable/ColorCell.js +57 -57
- package/lib/components/MeasurementsTable/ColorPicker.d.ts +3 -3
- package/lib/components/MeasurementsTable/ColorPicker.js +10 -10
- package/lib/components/MeasurementsTable/ColumnResizer.d.ts +4 -4
- package/lib/components/MeasurementsTable/ColumnResizer.js +5 -5
- package/lib/components/MeasurementsTable/ColumnSorting.d.ts +13 -13
- package/lib/components/MeasurementsTable/ColumnSorting.js +9 -9
- package/lib/components/MeasurementsTable/MeasurementsTable.d.ts +55 -55
- package/lib/components/MeasurementsTable/MeasurementsTable.js +182 -182
- package/lib/components/MeasurementsTable/SelectedContext.d.ts +9 -9
- package/lib/components/MeasurementsTable/SelectedContext.js +9 -9
- package/lib/components/MeasurementsTable/TextColumnFilter.d.ts +8 -8
- package/lib/components/MeasurementsTable/TextColumnFilter.js +15 -15
- package/lib/components/MeasurementsTable/filters.d.ts +2 -2
- package/lib/components/MeasurementsTable/filters.js +9 -9
- package/lib/components/MeasurementsTable/index.d.ts +1 -1
- package/lib/components/MeasurementsTable/index.js +1 -1
- package/lib/components/ModalMeasurementChooser.d.ts +19 -19
- package/lib/components/ModalMeasurementChooser.js +29 -29
- package/lib/hooks/useMeasurement.d.ts +17 -17
- package/lib/hooks/useMeasurement.js +41 -41
- package/lib/hooks/useMeasurements.d.ts +9 -9
- package/lib/hooks/useMeasurements.js +16 -16
- package/lib/hooks/useMeasurementsModule.d.ts +18 -18
- package/lib/hooks/useMeasurementsModule.js +12 -12
- package/lib/hooks/useTimedMeasurementData.d.ts +26 -26
- package/lib/hooks/useTimedMeasurementData.js +123 -123
- package/lib/hooks/useWindowedMeasurementData.d.ts +25 -25
- package/lib/hooks/useWindowedMeasurementData.js +119 -119
- package/lib/index.d.ts +12 -12
- package/lib/index.js +12 -12
- package/lib/redux/measurements.slice.d.ts +107 -107
- package/lib/redux/measurements.slice.js +71 -71
- package/lib/redux/reducer.d.ts +8 -8
- package/lib/redux/reducer.js +2 -2
- package/lib/types.d.ts +65 -65
- package/lib/types.js +46 -46
- package/package.json +6 -6
|
@@ -1,120 +1,120 @@
|
|
|
1
|
-
import { useEffect, useState, useMemo } from "react";
|
|
2
|
-
import { useMeasurements } from "./useMeasurements";
|
|
3
|
-
import { from } from "rxjs";
|
|
4
|
-
import { map, filter, groupBy, switchMap, toArray, scan } from "rxjs/operators";
|
|
5
|
-
import { useSelector } from "react-redux";
|
|
6
|
-
import { useMeasurementsModule } from "./useMeasurementsModule";
|
|
7
|
-
/**
|
|
8
|
-
* A hook that returns windowed data.
|
|
9
|
-
* @param options
|
|
10
|
-
* @returns
|
|
11
|
-
*/
|
|
12
|
-
export const useWindowedMeasurementData = (options) => {
|
|
13
|
-
const { rows, measurements: measurementIds, visibleWindow, unit, timer, } = options;
|
|
14
|
-
const { client, selector } = useMeasurementsModule();
|
|
15
|
-
// The timer will give back timestamps in "realtime" in microseconds, so for example: 1500635719101123 (Fri Jul 21 2017 13:15:19 GMT+0200 (Central European Summer Time) {}).
|
|
16
|
-
// We will need to use the measurement scale and the start of the measurementfiles to calculate the offset time for a given measurement.
|
|
17
|
-
const measurementScale = useSelector((s) => selector(s).measurementScale);
|
|
18
|
-
const { measurements } = useMeasurements();
|
|
19
|
-
const [state, setState] = useState({
|
|
20
|
-
loading: false,
|
|
21
|
-
});
|
|
22
|
-
/**
|
|
23
|
-
* Create a map with files, we need these to get the start time of a file. So that we can create a timer with an offset.
|
|
24
|
-
*/
|
|
25
|
-
const files = useSelector((s) => selector(s).files);
|
|
26
|
-
const filesById = useMemo(() => {
|
|
27
|
-
return files.reduce((acc, c) => (Object.assign(Object.assign({}, acc), { [c.path]: c })), {});
|
|
28
|
-
}, [files]);
|
|
29
|
-
useEffect(() => {
|
|
30
|
-
const observable$ = from(measurements).pipe(filter((m) => measurementIds.indexOf(m.id) !== -1),
|
|
31
|
-
// Request are on a per file basis.
|
|
32
|
-
groupBy((m) => m.file), switchMap((grouped) => grouped.pipe(toArray(), switchMap((measurements) => {
|
|
33
|
-
//
|
|
34
|
-
// The measurements in the app have an ID like (ROOT:/32322/WAVE) that
|
|
35
|
-
// is incompatible with the IDs of the API (just WAVE). So we keep track of a map
|
|
36
|
-
// that contains the mapping from the IDs used by the API to the ones used in the
|
|
37
|
-
// app so we can map them back later.
|
|
38
|
-
//
|
|
39
|
-
const nameIdMap = measurements.reduce((acc, c) => {
|
|
40
|
-
return Object.assign(Object.assign({}, acc), { [c.name]: c.id });
|
|
41
|
-
}, {});
|
|
42
|
-
// Retrieve the file in which theses measurements are stored.
|
|
43
|
-
const fileObj = filesById[grouped.key];
|
|
44
|
-
const start = fileObj.timing.start;
|
|
45
|
-
// We'll map the timer to have an offset and for the time to be scaled using the measurement scale.
|
|
46
|
-
const time$ = timer.state.pipe(map((timerState) => {
|
|
47
|
-
const offsetTime = timerState.time - start;
|
|
48
|
-
const scaledOffsetTime = offsetTime * Math.sqrt(measurementScale);
|
|
49
|
-
return scaledOffsetTime;
|
|
50
|
-
}));
|
|
51
|
-
return client
|
|
52
|
-
.createWindowedMeasurementDataObservable({
|
|
53
|
-
rows,
|
|
54
|
-
visibleWindow,
|
|
55
|
-
measurements: measurements.map((m) => m.name),
|
|
56
|
-
// times are on a per-file basis, so this will use the offset of the file
|
|
57
|
-
time$,
|
|
58
|
-
file: grouped.key,
|
|
59
|
-
unit,
|
|
60
|
-
})
|
|
61
|
-
.pipe(
|
|
62
|
-
// This is where we map back the IDs
|
|
63
|
-
map((v) => {
|
|
64
|
-
var _a;
|
|
65
|
-
return (Object.assign(Object.assign({}, v), {
|
|
66
|
-
// We add a file property so we can retrieve for which file this loading is.
|
|
67
|
-
file: grouped.key, data: Object.assign(Object.assign({}, v.data), { measurementData: ((_a = v.data) === null || _a === void 0 ? void 0 : _a.measurementData)
|
|
68
|
-
? Object.keys(v.data.measurementData).reduce((acc, c) => {
|
|
69
|
-
var _a, _b;
|
|
70
|
-
if ((_a = v.data) === null || _a === void 0 ? void 0 : _a.measurementData[c]) {
|
|
71
|
-
return Object.assign(Object.assign({}, acc), { [nameIdMap[c]]: (_b = v.data) === null || _b === void 0 ? void 0 : _b.measurementData[c] });
|
|
72
|
-
}
|
|
73
|
-
return acc;
|
|
74
|
-
}, {})
|
|
75
|
-
: undefined }) }));
|
|
76
|
-
}));
|
|
77
|
-
}))),
|
|
78
|
-
// We accumulate the data from all the files here.
|
|
79
|
-
scan((acc, c) => {
|
|
80
|
-
var _a, _b;
|
|
81
|
-
const loadingFiles = c.loading
|
|
82
|
-
? [...acc.loadingFiles, c.file]
|
|
83
|
-
: acc.loadingFiles.filter((f) => f !== c.file);
|
|
84
|
-
return {
|
|
85
|
-
loadingFiles,
|
|
86
|
-
data: Object.assign(Object.assign(Object.assign({}, acc.data), c.data), {
|
|
87
|
-
// We'll only return the new range if all files have finished loading.
|
|
88
|
-
range: loadingFiles.length > 0 || !c.data.range
|
|
89
|
-
? acc.data.range
|
|
90
|
-
: c.data.range, measurementData: Object.assign(Object.assign({}, (_a = acc.data) === null || _a === void 0 ? void 0 : _a.measurementData), (_b = c.data) === null || _b === void 0 ? void 0 : _b.measurementData) }),
|
|
91
|
-
error: c.error,
|
|
92
|
-
};
|
|
93
|
-
}, {
|
|
94
|
-
loadingFiles: [],
|
|
95
|
-
data: {},
|
|
96
|
-
}),
|
|
97
|
-
// We should not retrieve measurement data if still loading. So we clear the data here if some file is still loading.
|
|
98
|
-
map((state) => {
|
|
99
|
-
const loading = state.loadingFiles.length > 0;
|
|
100
|
-
return Object.assign(Object.assign({}, state), { loading, data: state.data });
|
|
101
|
-
}));
|
|
102
|
-
const subscription = observable$.subscribe(setState);
|
|
103
|
-
return () => {
|
|
104
|
-
subscription.unsubscribe();
|
|
105
|
-
};
|
|
106
|
-
}, [
|
|
107
|
-
client,
|
|
108
|
-
measurementIds,
|
|
109
|
-
measurements,
|
|
110
|
-
options,
|
|
111
|
-
rows,
|
|
112
|
-
visibleWindow,
|
|
113
|
-
measurementScale,
|
|
114
|
-
unit,
|
|
115
|
-
timer.state,
|
|
116
|
-
filesById,
|
|
117
|
-
]);
|
|
118
|
-
return state;
|
|
119
|
-
};
|
|
1
|
+
import { useEffect, useState, useMemo } from "react";
|
|
2
|
+
import { useMeasurements } from "./useMeasurements";
|
|
3
|
+
import { from } from "rxjs";
|
|
4
|
+
import { map, filter, groupBy, switchMap, toArray, scan } from "rxjs/operators";
|
|
5
|
+
import { useSelector } from "react-redux";
|
|
6
|
+
import { useMeasurementsModule } from "./useMeasurementsModule";
|
|
7
|
+
/**
|
|
8
|
+
* A hook that returns windowed data.
|
|
9
|
+
* @param options
|
|
10
|
+
* @returns
|
|
11
|
+
*/
|
|
12
|
+
export const useWindowedMeasurementData = (options) => {
|
|
13
|
+
const { rows, measurements: measurementIds, visibleWindow, unit, timer, } = options;
|
|
14
|
+
const { client, selector } = useMeasurementsModule();
|
|
15
|
+
// The timer will give back timestamps in "realtime" in microseconds, so for example: 1500635719101123 (Fri Jul 21 2017 13:15:19 GMT+0200 (Central European Summer Time) {}).
|
|
16
|
+
// We will need to use the measurement scale and the start of the measurementfiles to calculate the offset time for a given measurement.
|
|
17
|
+
const measurementScale = useSelector((s) => selector(s).measurementScale);
|
|
18
|
+
const { measurements } = useMeasurements();
|
|
19
|
+
const [state, setState] = useState({
|
|
20
|
+
loading: false,
|
|
21
|
+
});
|
|
22
|
+
/**
|
|
23
|
+
* Create a map with files, we need these to get the start time of a file. So that we can create a timer with an offset.
|
|
24
|
+
*/
|
|
25
|
+
const files = useSelector((s) => selector(s).files);
|
|
26
|
+
const filesById = useMemo(() => {
|
|
27
|
+
return files.reduce((acc, c) => (Object.assign(Object.assign({}, acc), { [c.path]: c })), {});
|
|
28
|
+
}, [files]);
|
|
29
|
+
useEffect(() => {
|
|
30
|
+
const observable$ = from(measurements).pipe(filter((m) => measurementIds.indexOf(m.id) !== -1),
|
|
31
|
+
// Request are on a per file basis.
|
|
32
|
+
groupBy((m) => m.file), switchMap((grouped) => grouped.pipe(toArray(), switchMap((measurements) => {
|
|
33
|
+
//
|
|
34
|
+
// The measurements in the app have an ID like (ROOT:/32322/WAVE) that
|
|
35
|
+
// is incompatible with the IDs of the API (just WAVE). So we keep track of a map
|
|
36
|
+
// that contains the mapping from the IDs used by the API to the ones used in the
|
|
37
|
+
// app so we can map them back later.
|
|
38
|
+
//
|
|
39
|
+
const nameIdMap = measurements.reduce((acc, c) => {
|
|
40
|
+
return Object.assign(Object.assign({}, acc), { [c.name]: c.id });
|
|
41
|
+
}, {});
|
|
42
|
+
// Retrieve the file in which theses measurements are stored.
|
|
43
|
+
const fileObj = filesById[grouped.key];
|
|
44
|
+
const start = fileObj.timing.start;
|
|
45
|
+
// We'll map the timer to have an offset and for the time to be scaled using the measurement scale.
|
|
46
|
+
const time$ = timer.state.pipe(map((timerState) => {
|
|
47
|
+
const offsetTime = timerState.time - start;
|
|
48
|
+
const scaledOffsetTime = offsetTime * Math.sqrt(measurementScale);
|
|
49
|
+
return scaledOffsetTime;
|
|
50
|
+
}));
|
|
51
|
+
return client
|
|
52
|
+
.createWindowedMeasurementDataObservable({
|
|
53
|
+
rows,
|
|
54
|
+
visibleWindow,
|
|
55
|
+
measurements: measurements.map((m) => m.name),
|
|
56
|
+
// times are on a per-file basis, so this will use the offset of the file
|
|
57
|
+
time$,
|
|
58
|
+
file: grouped.key,
|
|
59
|
+
unit,
|
|
60
|
+
})
|
|
61
|
+
.pipe(
|
|
62
|
+
// This is where we map back the IDs
|
|
63
|
+
map((v) => {
|
|
64
|
+
var _a;
|
|
65
|
+
return (Object.assign(Object.assign({}, v), {
|
|
66
|
+
// We add a file property so we can retrieve for which file this loading is.
|
|
67
|
+
file: grouped.key, data: Object.assign(Object.assign({}, v.data), { measurementData: ((_a = v.data) === null || _a === void 0 ? void 0 : _a.measurementData)
|
|
68
|
+
? Object.keys(v.data.measurementData).reduce((acc, c) => {
|
|
69
|
+
var _a, _b;
|
|
70
|
+
if ((_a = v.data) === null || _a === void 0 ? void 0 : _a.measurementData[c]) {
|
|
71
|
+
return Object.assign(Object.assign({}, acc), { [nameIdMap[c]]: (_b = v.data) === null || _b === void 0 ? void 0 : _b.measurementData[c] });
|
|
72
|
+
}
|
|
73
|
+
return acc;
|
|
74
|
+
}, {})
|
|
75
|
+
: undefined }) }));
|
|
76
|
+
}));
|
|
77
|
+
}))),
|
|
78
|
+
// We accumulate the data from all the files here.
|
|
79
|
+
scan((acc, c) => {
|
|
80
|
+
var _a, _b;
|
|
81
|
+
const loadingFiles = c.loading
|
|
82
|
+
? [...acc.loadingFiles, c.file]
|
|
83
|
+
: acc.loadingFiles.filter((f) => f !== c.file);
|
|
84
|
+
return {
|
|
85
|
+
loadingFiles,
|
|
86
|
+
data: Object.assign(Object.assign(Object.assign({}, acc.data), c.data), {
|
|
87
|
+
// We'll only return the new range if all files have finished loading.
|
|
88
|
+
range: loadingFiles.length > 0 || !c.data.range
|
|
89
|
+
? acc.data.range
|
|
90
|
+
: c.data.range, measurementData: Object.assign(Object.assign({}, (_a = acc.data) === null || _a === void 0 ? void 0 : _a.measurementData), (_b = c.data) === null || _b === void 0 ? void 0 : _b.measurementData) }),
|
|
91
|
+
error: c.error,
|
|
92
|
+
};
|
|
93
|
+
}, {
|
|
94
|
+
loadingFiles: [],
|
|
95
|
+
data: {},
|
|
96
|
+
}),
|
|
97
|
+
// We should not retrieve measurement data if still loading. So we clear the data here if some file is still loading.
|
|
98
|
+
map((state) => {
|
|
99
|
+
const loading = state.loadingFiles.length > 0;
|
|
100
|
+
return Object.assign(Object.assign({}, state), { loading, data: state.data });
|
|
101
|
+
}));
|
|
102
|
+
const subscription = observable$.subscribe(setState);
|
|
103
|
+
return () => {
|
|
104
|
+
subscription.unsubscribe();
|
|
105
|
+
};
|
|
106
|
+
}, [
|
|
107
|
+
client,
|
|
108
|
+
measurementIds,
|
|
109
|
+
measurements,
|
|
110
|
+
options,
|
|
111
|
+
rows,
|
|
112
|
+
visibleWindow,
|
|
113
|
+
measurementScale,
|
|
114
|
+
unit,
|
|
115
|
+
timer.state,
|
|
116
|
+
filesById,
|
|
117
|
+
]);
|
|
118
|
+
return state;
|
|
119
|
+
};
|
|
120
120
|
//# sourceMappingURL=useWindowedMeasurementData.js.map
|
package/lib/index.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
export * from "./types";
|
|
2
|
-
export * from "./client";
|
|
3
|
-
export * from "./hooks/useTimedMeasurementData";
|
|
4
|
-
export * from "./hooks/useWindowedMeasurementData";
|
|
5
|
-
export * from "./components/MeasurementsModuleProvider";
|
|
6
|
-
export * from "./components/MeasurementsTable";
|
|
7
|
-
export * from "./components/MeasurementsChooser";
|
|
8
|
-
export * from "./components/ModalMeasurementChooser";
|
|
9
|
-
export * from "./redux/reducer";
|
|
10
|
-
export * from "./hooks/useMeasurements";
|
|
11
|
-
export * from "./hooks/useMeasurement";
|
|
12
|
-
export * from "./hooks/useMeasurementsModule";
|
|
1
|
+
export * from "./types";
|
|
2
|
+
export * from "./client";
|
|
3
|
+
export * from "./hooks/useTimedMeasurementData";
|
|
4
|
+
export * from "./hooks/useWindowedMeasurementData";
|
|
5
|
+
export * from "./components/MeasurementsModuleProvider";
|
|
6
|
+
export * from "./components/MeasurementsTable";
|
|
7
|
+
export * from "./components/MeasurementsChooser";
|
|
8
|
+
export * from "./components/ModalMeasurementChooser";
|
|
9
|
+
export * from "./redux/reducer";
|
|
10
|
+
export * from "./hooks/useMeasurements";
|
|
11
|
+
export * from "./hooks/useMeasurement";
|
|
12
|
+
export * from "./hooks/useMeasurementsModule";
|
|
13
13
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/index.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
export * from "./types";
|
|
2
|
-
export * from "./client";
|
|
3
|
-
export * from "./hooks/useTimedMeasurementData";
|
|
4
|
-
export * from "./hooks/useWindowedMeasurementData";
|
|
5
|
-
export * from "./components/MeasurementsModuleProvider";
|
|
6
|
-
export * from "./components/MeasurementsTable";
|
|
7
|
-
export * from "./components/MeasurementsChooser";
|
|
8
|
-
export * from "./components/ModalMeasurementChooser";
|
|
9
|
-
export * from "./redux/reducer";
|
|
10
|
-
export * from "./hooks/useMeasurements";
|
|
11
|
-
export * from "./hooks/useMeasurement";
|
|
12
|
-
export * from "./hooks/useMeasurementsModule";
|
|
1
|
+
export * from "./types";
|
|
2
|
+
export * from "./client";
|
|
3
|
+
export * from "./hooks/useTimedMeasurementData";
|
|
4
|
+
export * from "./hooks/useWindowedMeasurementData";
|
|
5
|
+
export * from "./components/MeasurementsModuleProvider";
|
|
6
|
+
export * from "./components/MeasurementsTable";
|
|
7
|
+
export * from "./components/MeasurementsChooser";
|
|
8
|
+
export * from "./components/ModalMeasurementChooser";
|
|
9
|
+
export * from "./redux/reducer";
|
|
10
|
+
export * from "./hooks/useMeasurements";
|
|
11
|
+
export * from "./hooks/useMeasurement";
|
|
12
|
+
export * from "./hooks/useMeasurementsModule";
|
|
13
13
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,108 +1,108 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Creates reducers and actions for the "slices" of state of this module.
|
|
3
|
-
*/
|
|
4
|
-
import { EntityState, PayloadAction } from "@reduxjs/toolkit";
|
|
5
|
-
import { MeasurementsTypes } from "../types";
|
|
6
|
-
/**
|
|
7
|
-
* A file containing measurement data together with synchronisation and group information.
|
|
8
|
-
*/
|
|
9
|
-
export declare type MeasurementsFile = {
|
|
10
|
-
/**
|
|
11
|
-
* The path of the file.
|
|
12
|
-
*/
|
|
13
|
-
path: string;
|
|
14
|
-
/**
|
|
15
|
-
* Group of this file. Several groups of files might be present in a stage.
|
|
16
|
-
*/
|
|
17
|
-
group: string;
|
|
18
|
-
/**
|
|
19
|
-
* The synchronisation information for this file. Start and end should be absolute timestamps consisting of microseconds since epoch.
|
|
20
|
-
*/
|
|
21
|
-
timing: {
|
|
22
|
-
start: number;
|
|
23
|
-
end: number;
|
|
24
|
-
};
|
|
25
|
-
};
|
|
26
|
-
/**
|
|
27
|
-
* Please read up https://redux-toolkit.js.org/usage/usage-with-typescript#createentityadapter to understand what this is.
|
|
28
|
-
*/
|
|
29
|
-
export declare const measurementsAdapter: import("@reduxjs/toolkit").EntityAdapter<MeasurementsTypes.Measurement>;
|
|
30
|
-
declare type State = EntityState<MeasurementsTypes.Measurement> & {
|
|
31
|
-
/**
|
|
32
|
-
* All the files active in the app.
|
|
33
|
-
*/
|
|
34
|
-
files: MeasurementsFile[];
|
|
35
|
-
/**
|
|
36
|
-
* The scale of the model for which the measurements where recorded.
|
|
37
|
-
*/
|
|
38
|
-
measurementScale: number;
|
|
39
|
-
/**
|
|
40
|
-
* An error that might have occurred while retrieving metadata for measurements.
|
|
41
|
-
*/
|
|
42
|
-
error: Error | undefined;
|
|
43
|
-
/**
|
|
44
|
-
* If true, the app is busy loading metadata.
|
|
45
|
-
*/
|
|
46
|
-
loading: boolean;
|
|
47
|
-
/**
|
|
48
|
-
* If set to true, the app should start retrieving metadata for measurements.
|
|
49
|
-
*/
|
|
50
|
-
didInvalidate: boolean;
|
|
51
|
-
/**
|
|
52
|
-
* The list of colors that should be applied to the measurements when activated.
|
|
53
|
-
*/
|
|
54
|
-
colors: string[];
|
|
55
|
-
};
|
|
56
|
-
declare const measurementsSlice: import("@reduxjs/toolkit").Slice<EntityState<MeasurementsTypes.Measurement> & {
|
|
57
|
-
error: Error | undefined;
|
|
58
|
-
loading: boolean;
|
|
59
|
-
didInvalidate: boolean;
|
|
60
|
-
measurementScale: number;
|
|
61
|
-
files: MeasurementsFile[];
|
|
62
|
-
colors: string[];
|
|
63
|
-
}, {
|
|
64
|
-
createMeasurement: {
|
|
65
|
-
<S extends EntityState<MeasurementsTypes.Measurement>>(state: boolean extends (S extends never ? true : false) ? EntityState<MeasurementsTypes.Measurement> : S, entity: MeasurementsTypes.Measurement): S;
|
|
66
|
-
<S_1 extends EntityState<MeasurementsTypes.Measurement>>(state: boolean extends (S_1 extends never ? true : false) ? EntityState<MeasurementsTypes.Measurement> : S_1, action: {
|
|
67
|
-
payload: MeasurementsTypes.Measurement;
|
|
68
|
-
type: string;
|
|
69
|
-
}): S_1;
|
|
70
|
-
};
|
|
71
|
-
updateMeasurement: {
|
|
72
|
-
<S_2 extends EntityState<MeasurementsTypes.Measurement>>(state: boolean extends (S_2 extends never ? true : false) ? EntityState<MeasurementsTypes.Measurement> : S_2, update: import("@reduxjs/toolkit").Update<MeasurementsTypes.Measurement>): S_2;
|
|
73
|
-
<S_3 extends EntityState<MeasurementsTypes.Measurement>>(state: boolean extends (S_3 extends never ? true : false) ? EntityState<MeasurementsTypes.Measurement> : S_3, update: {
|
|
74
|
-
payload: import("@reduxjs/toolkit").Update<MeasurementsTypes.Measurement>;
|
|
75
|
-
type: string;
|
|
76
|
-
}): S_3;
|
|
77
|
-
};
|
|
78
|
-
updateMeasurements: {
|
|
79
|
-
<S_4 extends EntityState<MeasurementsTypes.Measurement>>(state: boolean extends (S_4 extends never ? true : false) ? EntityState<MeasurementsTypes.Measurement> : S_4, entities: MeasurementsTypes.Measurement[] | Record<import("@reduxjs/toolkit").EntityId, MeasurementsTypes.Measurement>): S_4;
|
|
80
|
-
<S_5 extends EntityState<MeasurementsTypes.Measurement>>(state: boolean extends (S_5 extends never ? true : false) ? EntityState<MeasurementsTypes.Measurement> : S_5, entities: {
|
|
81
|
-
payload: MeasurementsTypes.Measurement[] | Record<import("@reduxjs/toolkit").EntityId, MeasurementsTypes.Measurement>;
|
|
82
|
-
type: string;
|
|
83
|
-
}): S_5;
|
|
84
|
-
};
|
|
85
|
-
setFiles: (state: State, action: PayloadAction<MeasurementsFile[]>) => void;
|
|
86
|
-
measurementsReceived: (state: State, action: PayloadAction<MeasurementsTypes.Measurement[]>) => void;
|
|
87
|
-
measurementsLoading: (state: State) => void;
|
|
88
|
-
measurementsError: (state: State, action: PayloadAction<Error>) => void;
|
|
89
|
-
invalidate: (state: State) => void;
|
|
90
|
-
}, "measurements">;
|
|
91
|
-
export declare const setFiles: import("@reduxjs/toolkit").ActionCreatorWithPayload<MeasurementsFile[], string>, createMeasurement: import("@reduxjs/toolkit").ActionCreatorWithPayload<MeasurementsTypes.Measurement, string>, updateMeasurement: import("@reduxjs/toolkit").ActionCreatorWithPayload<import("@reduxjs/toolkit").Update<MeasurementsTypes.Measurement>, string>, updateMeasurements: import("@reduxjs/toolkit").ActionCreatorWithPayload<MeasurementsTypes.Measurement[] | Record<import("@reduxjs/toolkit").EntityId, MeasurementsTypes.Measurement>, string>, invalidate: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, measurementsReceived: import("@reduxjs/toolkit").ActionCreatorWithPayload<MeasurementsTypes.Measurement[], string>, measurementsLoading: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, measurementsError: import("@reduxjs/toolkit").ActionCreatorWithPayload<Error, string>;
|
|
92
|
-
/**
|
|
93
|
-
* Selects (from the state) the index of the color that should be applied to the next measurements
|
|
94
|
-
* @param state The state from which the value should be selected.
|
|
95
|
-
* @returns
|
|
96
|
-
*/
|
|
97
|
-
export declare const selectLastColorIndex: (state: State) => number;
|
|
98
|
-
export declare type MeasurementsModuleState = ReturnType<typeof measurementsSlice.reducer>;
|
|
99
|
-
declare const _default: import("redux").Reducer<EntityState<MeasurementsTypes.Measurement> & {
|
|
100
|
-
error: Error | undefined;
|
|
101
|
-
loading: boolean;
|
|
102
|
-
didInvalidate: boolean;
|
|
103
|
-
measurementScale: number;
|
|
104
|
-
files: MeasurementsFile[];
|
|
105
|
-
colors: string[];
|
|
106
|
-
}, import("redux").AnyAction>;
|
|
107
|
-
export default _default;
|
|
1
|
+
/**
|
|
2
|
+
* Creates reducers and actions for the "slices" of state of this module.
|
|
3
|
+
*/
|
|
4
|
+
import { EntityState, PayloadAction } from "@reduxjs/toolkit";
|
|
5
|
+
import { MeasurementsTypes } from "../types";
|
|
6
|
+
/**
|
|
7
|
+
* A file containing measurement data together with synchronisation and group information.
|
|
8
|
+
*/
|
|
9
|
+
export declare type MeasurementsFile = {
|
|
10
|
+
/**
|
|
11
|
+
* The path of the file.
|
|
12
|
+
*/
|
|
13
|
+
path: string;
|
|
14
|
+
/**
|
|
15
|
+
* Group of this file. Several groups of files might be present in a stage.
|
|
16
|
+
*/
|
|
17
|
+
group: string;
|
|
18
|
+
/**
|
|
19
|
+
* The synchronisation information for this file. Start and end should be absolute timestamps consisting of microseconds since epoch.
|
|
20
|
+
*/
|
|
21
|
+
timing: {
|
|
22
|
+
start: number;
|
|
23
|
+
end: number;
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Please read up https://redux-toolkit.js.org/usage/usage-with-typescript#createentityadapter to understand what this is.
|
|
28
|
+
*/
|
|
29
|
+
export declare const measurementsAdapter: import("@reduxjs/toolkit").EntityAdapter<MeasurementsTypes.Measurement>;
|
|
30
|
+
declare type State = EntityState<MeasurementsTypes.Measurement> & {
|
|
31
|
+
/**
|
|
32
|
+
* All the files active in the app.
|
|
33
|
+
*/
|
|
34
|
+
files: MeasurementsFile[];
|
|
35
|
+
/**
|
|
36
|
+
* The scale of the model for which the measurements where recorded.
|
|
37
|
+
*/
|
|
38
|
+
measurementScale: number;
|
|
39
|
+
/**
|
|
40
|
+
* An error that might have occurred while retrieving metadata for measurements.
|
|
41
|
+
*/
|
|
42
|
+
error: Error | undefined;
|
|
43
|
+
/**
|
|
44
|
+
* If true, the app is busy loading metadata.
|
|
45
|
+
*/
|
|
46
|
+
loading: boolean;
|
|
47
|
+
/**
|
|
48
|
+
* If set to true, the app should start retrieving metadata for measurements.
|
|
49
|
+
*/
|
|
50
|
+
didInvalidate: boolean;
|
|
51
|
+
/**
|
|
52
|
+
* The list of colors that should be applied to the measurements when activated.
|
|
53
|
+
*/
|
|
54
|
+
colors: string[];
|
|
55
|
+
};
|
|
56
|
+
declare const measurementsSlice: import("@reduxjs/toolkit").Slice<EntityState<MeasurementsTypes.Measurement> & {
|
|
57
|
+
error: Error | undefined;
|
|
58
|
+
loading: boolean;
|
|
59
|
+
didInvalidate: boolean;
|
|
60
|
+
measurementScale: number;
|
|
61
|
+
files: MeasurementsFile[];
|
|
62
|
+
colors: string[];
|
|
63
|
+
}, {
|
|
64
|
+
createMeasurement: {
|
|
65
|
+
<S extends EntityState<MeasurementsTypes.Measurement>>(state: boolean extends (S extends never ? true : false) ? EntityState<MeasurementsTypes.Measurement> : S, entity: MeasurementsTypes.Measurement): S;
|
|
66
|
+
<S_1 extends EntityState<MeasurementsTypes.Measurement>>(state: boolean extends (S_1 extends never ? true : false) ? EntityState<MeasurementsTypes.Measurement> : S_1, action: {
|
|
67
|
+
payload: MeasurementsTypes.Measurement;
|
|
68
|
+
type: string;
|
|
69
|
+
}): S_1;
|
|
70
|
+
};
|
|
71
|
+
updateMeasurement: {
|
|
72
|
+
<S_2 extends EntityState<MeasurementsTypes.Measurement>>(state: boolean extends (S_2 extends never ? true : false) ? EntityState<MeasurementsTypes.Measurement> : S_2, update: import("@reduxjs/toolkit").Update<MeasurementsTypes.Measurement>): S_2;
|
|
73
|
+
<S_3 extends EntityState<MeasurementsTypes.Measurement>>(state: boolean extends (S_3 extends never ? true : false) ? EntityState<MeasurementsTypes.Measurement> : S_3, update: {
|
|
74
|
+
payload: import("@reduxjs/toolkit").Update<MeasurementsTypes.Measurement>;
|
|
75
|
+
type: string;
|
|
76
|
+
}): S_3;
|
|
77
|
+
};
|
|
78
|
+
updateMeasurements: {
|
|
79
|
+
<S_4 extends EntityState<MeasurementsTypes.Measurement>>(state: boolean extends (S_4 extends never ? true : false) ? EntityState<MeasurementsTypes.Measurement> : S_4, entities: MeasurementsTypes.Measurement[] | Record<import("@reduxjs/toolkit").EntityId, MeasurementsTypes.Measurement>): S_4;
|
|
80
|
+
<S_5 extends EntityState<MeasurementsTypes.Measurement>>(state: boolean extends (S_5 extends never ? true : false) ? EntityState<MeasurementsTypes.Measurement> : S_5, entities: {
|
|
81
|
+
payload: MeasurementsTypes.Measurement[] | Record<import("@reduxjs/toolkit").EntityId, MeasurementsTypes.Measurement>;
|
|
82
|
+
type: string;
|
|
83
|
+
}): S_5;
|
|
84
|
+
};
|
|
85
|
+
setFiles: (state: State, action: PayloadAction<MeasurementsFile[]>) => void;
|
|
86
|
+
measurementsReceived: (state: State, action: PayloadAction<MeasurementsTypes.Measurement[]>) => void;
|
|
87
|
+
measurementsLoading: (state: State) => void;
|
|
88
|
+
measurementsError: (state: State, action: PayloadAction<Error>) => void;
|
|
89
|
+
invalidate: (state: State) => void;
|
|
90
|
+
}, "measurements">;
|
|
91
|
+
export declare const setFiles: import("@reduxjs/toolkit").ActionCreatorWithPayload<MeasurementsFile[], string>, createMeasurement: import("@reduxjs/toolkit").ActionCreatorWithPayload<MeasurementsTypes.Measurement, string>, updateMeasurement: import("@reduxjs/toolkit").ActionCreatorWithPayload<import("@reduxjs/toolkit").Update<MeasurementsTypes.Measurement>, string>, updateMeasurements: import("@reduxjs/toolkit").ActionCreatorWithPayload<MeasurementsTypes.Measurement[] | Record<import("@reduxjs/toolkit").EntityId, MeasurementsTypes.Measurement>, string>, invalidate: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, measurementsReceived: import("@reduxjs/toolkit").ActionCreatorWithPayload<MeasurementsTypes.Measurement[], string>, measurementsLoading: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, measurementsError: import("@reduxjs/toolkit").ActionCreatorWithPayload<Error, string>;
|
|
92
|
+
/**
|
|
93
|
+
* Selects (from the state) the index of the color that should be applied to the next measurements
|
|
94
|
+
* @param state The state from which the value should be selected.
|
|
95
|
+
* @returns
|
|
96
|
+
*/
|
|
97
|
+
export declare const selectLastColorIndex: (state: State) => number;
|
|
98
|
+
export declare type MeasurementsModuleState = ReturnType<typeof measurementsSlice.reducer>;
|
|
99
|
+
declare const _default: import("redux").Reducer<EntityState<MeasurementsTypes.Measurement> & {
|
|
100
|
+
error: Error | undefined;
|
|
101
|
+
loading: boolean;
|
|
102
|
+
didInvalidate: boolean;
|
|
103
|
+
measurementScale: number;
|
|
104
|
+
files: MeasurementsFile[];
|
|
105
|
+
colors: string[];
|
|
106
|
+
}, import("redux").AnyAction>;
|
|
107
|
+
export default _default;
|
|
108
108
|
//# sourceMappingURL=measurements.slice.d.ts.map
|