@truedat/core 7.5.12 → 7.5.14
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 +3 -4
- package/src/components/DateFilter.js +17 -20
- package/src/components/DateRangeFilter.js +18 -34
- package/src/components/Graph.js +2 -2
- package/src/routes.js +3 -0
- package/src/selectors/__tests__/makeDateFiltersSelector.spec.js +2 -1
- package/src/services/dateFilterFormatter.js +9 -8
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@truedat/core",
|
|
3
|
-
"version": "7.5.
|
|
3
|
+
"version": "7.5.14",
|
|
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.5.
|
|
51
|
+
"@truedat/test": "7.5.14",
|
|
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": "46d017329f0f074db1feb2304c06ba696bb68a14"
|
|
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
|
};
|
package/src/routes.js
CHANGED
|
@@ -45,6 +45,8 @@ export const CONCEPT_LINKS_STRUCTURES =
|
|
|
45
45
|
"/concepts/:business_concept_id/versions/:id/links/structures";
|
|
46
46
|
export const CONCEPT_LINKS_STRUCTURES_NEW =
|
|
47
47
|
"/concepts/:business_concept_id/versions/:id/links/structures/new";
|
|
48
|
+
export const CONCEPT_LINKS_STRUCTURES_SUGGEST =
|
|
49
|
+
"/concepts/:business_concept_id/versions/:id/links/structures/suggest";
|
|
48
50
|
export const CONCEPT_RULES =
|
|
49
51
|
"/concepts/:business_concept_id/versions/:id/rules";
|
|
50
52
|
export const CONCEPT_RULES_NEW =
|
|
@@ -308,6 +310,7 @@ const routes = {
|
|
|
308
310
|
CONCEPT_LINKS_MANAGEMENT,
|
|
309
311
|
CONCEPT_LINKS_STRUCTURES,
|
|
310
312
|
CONCEPT_LINKS_STRUCTURES_NEW,
|
|
313
|
+
CONCEPT_LINKS_STRUCTURES_SUGGEST,
|
|
311
314
|
CONCEPT_RULES,
|
|
312
315
|
CONCEPT_RULES_NEW,
|
|
313
316
|
CONCEPT_VERSION,
|
|
@@ -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
|
};
|