@truedat/core 7.5.13 → 7.6.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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@truedat/core",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.6.0",
|
|
4
4
|
"description": "Truedat Web Core",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"module": "src/index.js",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"@testing-library/jest-dom": "^6.6.3",
|
|
49
49
|
"@testing-library/react": "^16.3.0",
|
|
50
50
|
"@testing-library/user-event": "^14.6.1",
|
|
51
|
-
"@truedat/test": "7.
|
|
51
|
+
"@truedat/test": "7.6.0",
|
|
52
52
|
"identity-obj-proxy": "^3.0.0",
|
|
53
53
|
"jest": "^29.7.0",
|
|
54
54
|
"redux-saga-test-plan": "^4.0.6"
|
|
@@ -80,11 +80,10 @@
|
|
|
80
80
|
"redux-saga": "^1.3.0",
|
|
81
81
|
"redux-saga-routines": "^3.2.3",
|
|
82
82
|
"reselect": "^5.1.1",
|
|
83
|
-
"semantic-ui-calendar-react": "^0.15.3",
|
|
84
83
|
"semantic-ui-react": "^3.0.0-beta.2",
|
|
85
84
|
"slate": "^0.47.9",
|
|
86
85
|
"slate-react": "^0.22.10",
|
|
87
86
|
"swr": "^2.3.3"
|
|
88
87
|
},
|
|
89
|
-
"gitHead": "
|
|
88
|
+
"gitHead": "0d9c5ee7b864fe3dc87def2be0f68191c04dee57"
|
|
90
89
|
}
|
|
@@ -3,7 +3,6 @@ import moment from "moment";
|
|
|
3
3
|
import PropTypes from "prop-types";
|
|
4
4
|
import { useIntl } from "react-intl";
|
|
5
5
|
import { Form, Input, Label, Dropdown } from "semantic-ui-react";
|
|
6
|
-
import { DatesRangeInput } from "semantic-ui-calendar-react";
|
|
7
6
|
|
|
8
7
|
const typeOptions = ({ formatMessage }) => [
|
|
9
8
|
{
|
|
@@ -47,8 +46,6 @@ const dateUnitOptions = ({ formatMessage }) => [
|
|
|
47
46
|
];
|
|
48
47
|
|
|
49
48
|
const validNumber = (value) => RegExp("^\\d+$").test(value);
|
|
50
|
-
const validRange = (value) =>
|
|
51
|
-
RegExp("^\\d{4}-\\d\\d-\\d\\d *- *\\d{4}-\\d\\d-\\d\\d$").test(value);
|
|
52
49
|
|
|
53
50
|
export const DateFilter = ({
|
|
54
51
|
label,
|
|
@@ -56,20 +53,20 @@ export const DateFilter = ({
|
|
|
56
53
|
defaultValues,
|
|
57
54
|
size = "small",
|
|
58
55
|
name = "date",
|
|
59
|
-
dateFormat = "YYYY-MM-DD",
|
|
60
56
|
}) => {
|
|
61
57
|
const intl = useIntl();
|
|
62
58
|
const [type, setType] = useState(defaultValues?.type || "since");
|
|
63
59
|
const [unit, setUnit] = useState(defaultValues?.unit || "d");
|
|
64
60
|
const [value, setValue] = useState(defaultValues?.value || "1");
|
|
65
|
-
const [
|
|
61
|
+
const [rangeStart, setRangeStart] = useState(defaultValues?.rangeStart || "");
|
|
62
|
+
const [rangeEnd, setRangeEnd] = useState(defaultValues?.rangeEnd || "");
|
|
66
63
|
|
|
67
64
|
useEffect(() => {
|
|
68
|
-
const valid = type === "range"
|
|
65
|
+
const valid = type === "range" || validNumber(value);
|
|
69
66
|
if (valid) {
|
|
70
|
-
onChange({ name, type,
|
|
67
|
+
onChange({ name, type, unit, value, rangeStart, rangeEnd });
|
|
71
68
|
}
|
|
72
|
-
}, [name, type, unit, value,
|
|
69
|
+
}, [name, type, unit, value, rangeStart, rangeEnd]);
|
|
73
70
|
|
|
74
71
|
const currentDate = moment();
|
|
75
72
|
return (
|
|
@@ -86,18 +83,18 @@ export const DateFilter = ({
|
|
|
86
83
|
</Form.Field>
|
|
87
84
|
<Form.Field className={type}>
|
|
88
85
|
{type === "range" ? (
|
|
89
|
-
<
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
86
|
+
<Form.Group>
|
|
87
|
+
<Form.Input
|
|
88
|
+
onChange={(_e, { value }) => setRangeStart(value)}
|
|
89
|
+
value={rangeStart}
|
|
90
|
+
type="date"
|
|
91
|
+
/>
|
|
92
|
+
<Form.Input
|
|
93
|
+
onChange={(_e, { value }) => setRangeEnd(value)}
|
|
94
|
+
value={rangeEnd}
|
|
95
|
+
type="date"
|
|
96
|
+
/>
|
|
97
|
+
</Form.Group>
|
|
101
98
|
) : (
|
|
102
99
|
<Input
|
|
103
100
|
labelPosition="right"
|
|
@@ -1,42 +1,26 @@
|
|
|
1
1
|
import { useEffect, useState } from "react";
|
|
2
|
-
import moment from "moment";
|
|
3
2
|
import PropTypes from "prop-types";
|
|
4
|
-
import {
|
|
3
|
+
import { Form } from "semantic-ui-react";
|
|
5
4
|
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
export const DateRangeFilter = ({
|
|
11
|
-
onChange,
|
|
12
|
-
defaultValues,
|
|
13
|
-
name = "date",
|
|
14
|
-
dateFormat = "YYYY-MM-DD",
|
|
15
|
-
}) => {
|
|
16
|
-
const type = "range";
|
|
17
|
-
const unit = defaultValues?.unit || "d";
|
|
18
|
-
const value = defaultValues?.value || "1";
|
|
19
|
-
const [range, setRange] = useState(defaultValues?.range || "");
|
|
5
|
+
export const DateRangeFilter = ({ onChange, defaultValues, name = "date" }) => {
|
|
6
|
+
const [rangeStart, setRangeStart] = useState(defaultValues?.rangeStart || "");
|
|
7
|
+
const [rangeEnd, setRangeEnd] = useState(defaultValues?.rangeEnd || "");
|
|
20
8
|
useEffect(() => {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
onChange({ name, type, range, unit, value });
|
|
24
|
-
}
|
|
25
|
-
}, [name, type, unit, value, range, onChange]);
|
|
26
|
-
const currentDate = moment();
|
|
9
|
+
onChange({ name, type: "range", rangeStart, rangeEnd });
|
|
10
|
+
}, [name, rangeStart, rangeEnd, onChange]);
|
|
27
11
|
return (
|
|
28
|
-
<
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
12
|
+
<Form.Group inline>
|
|
13
|
+
<Form.Input
|
|
14
|
+
onChange={(_e, { value }) => setRangeStart(value)}
|
|
15
|
+
value={rangeStart}
|
|
16
|
+
type="date"
|
|
17
|
+
/>
|
|
18
|
+
<Form.Input
|
|
19
|
+
onChange={(_e, { value }) => setRangeEnd(value)}
|
|
20
|
+
value={rangeEnd}
|
|
21
|
+
type="date"
|
|
22
|
+
/>
|
|
23
|
+
</Form.Group>
|
|
40
24
|
);
|
|
41
25
|
};
|
|
42
26
|
|
package/src/components/Graph.js
CHANGED
|
@@ -50,8 +50,8 @@ const LayoutFlow = ({ initialNodes, initialEdges, onNodeClick }) => {
|
|
|
50
50
|
layoutOptions: layoutOptions,
|
|
51
51
|
children: getNodes().map((node) => ({
|
|
52
52
|
...node,
|
|
53
|
-
width: node.measured
|
|
54
|
-
height: node.measured
|
|
53
|
+
width: node.measured?.width,
|
|
54
|
+
height: node.measured?.height,
|
|
55
55
|
})),
|
|
56
56
|
edges: getEdges(),
|
|
57
57
|
};
|
|
@@ -34,7 +34,8 @@ describe("selectors: makeDateFiltersSelector", () => {
|
|
|
34
34
|
active: true,
|
|
35
35
|
name,
|
|
36
36
|
type: "range",
|
|
37
|
-
|
|
37
|
+
rangeStart: "2020-01-01",
|
|
38
|
+
rangeEnd: "2020-02-02",
|
|
38
39
|
};
|
|
39
40
|
const state = { foo };
|
|
40
41
|
expect(selector(state)).toEqual({
|
|
@@ -9,25 +9,26 @@ import {
|
|
|
9
9
|
} from "lodash/fp";
|
|
10
10
|
|
|
11
11
|
const relativeDate = ({ unit, value }) => `now-${value}${unit}`;
|
|
12
|
-
const toDateRange = ([from, to]) => ({ gte: from, lt: `${to}||+1d` });
|
|
13
12
|
const sinceDate = ({ name, ...props }) => ({
|
|
14
13
|
[name]: { gte: relativeDate(props) },
|
|
15
14
|
});
|
|
16
15
|
const untilDate = ({ name, ...props }) => ({
|
|
17
16
|
[name]: { lt: relativeDate(props) },
|
|
18
17
|
});
|
|
19
|
-
const dateRange = ({ name,
|
|
20
|
-
[name]:
|
|
18
|
+
const dateRange = ({ name, rangeStart, rangeEnd }) => ({
|
|
19
|
+
[name]: {
|
|
20
|
+
...(rangeStart ? { gte: rangeStart } : {}),
|
|
21
|
+
...(rangeEnd ? { lt: `${rangeEnd}||+1d` } : {}),
|
|
22
|
+
},
|
|
21
23
|
});
|
|
22
24
|
|
|
23
|
-
const grantDateRange = ({ name,
|
|
25
|
+
const grantDateRange = ({ name, rangeStart, rangeEnd }) => {
|
|
24
26
|
const [start_date, end_date] = split(",")(name);
|
|
25
|
-
const [from, to] = split(" - ")(range);
|
|
26
27
|
|
|
27
|
-
return
|
|
28
|
+
return rangeStart || rangeEnd
|
|
28
29
|
? {
|
|
29
|
-
[start_date]: { gte:
|
|
30
|
-
[end_date]: { lt:
|
|
30
|
+
...(rangeStart ? { [start_date]: { gte: rangeStart } } : {}),
|
|
31
|
+
...(rangeEnd ? { [end_date]: { lt: rangeEnd } } : {}),
|
|
31
32
|
}
|
|
32
33
|
: constant(empty);
|
|
33
34
|
};
|