@reltio/components 1.4.1428 → 1.4.1430
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/cjs/components/DropDownSelector/styles.js +1 -0
- package/cjs/components/activityLog/ActivityFilterButton/ActivityFilterButton.js +5 -1
- package/cjs/components/activityLog/ActivityFilterButton/styles.js +1 -1
- package/cjs/components/activityLog/ActivityFilterEditor/DateRangeSelector.d.ts +1 -1
- package/cjs/components/activityLog/ActivityFilterEditor/DateRangeSelector.js +18 -18
- package/cjs/components/activityLog/ActivityLog/items/ActivityItem/styles.js +1 -1
- package/cjs/components/activityLog/ActivityLogFilter/helpers.js +3 -4
- package/cjs/components/activityLog/activities/EntityObject/styles.js +1 -1
- package/cjs/components/activityLog/activities/RelationObject/styles.js +1 -1
- package/cjs/components/activityLog/activities/fields/commonStyles.js +1 -1
- package/cjs/components/activityLog/activities/styles.js +1 -1
- package/cjs/components/activityLog/types/ActivitiesFilter.d.ts +2 -2
- package/cjs/components/activityLog/utils/filters.d.ts +0 -2
- package/cjs/components/activityLog/utils/filters.js +9 -66
- package/cjs/components/history/DateRangeSelector/DateRangeSelector.d.ts +1 -1
- package/cjs/components/history/DateRangeSelector/DateRangeSelector.js +4 -4
- package/cjs/components/history/DateRangeSelector/utils.d.ts +1 -1
- package/cjs/components/history/DateRangeSelector/utils.js +5 -5
- package/cjs/components/history/HistoryFilterButton/HistoryFilterButton.js +2 -2
- package/cjs/components/history/types/HistoryFilter.d.ts +2 -1
- package/cjs/components/history/utils/filters.d.ts +0 -2
- package/cjs/components/history/utils/filters.js +6 -47
- package/cjs/types/index.d.ts +0 -9
- package/cjs/types/index.js +1 -7
- package/esm/components/DropDownSelector/styles.js +1 -0
- package/esm/components/activityLog/ActivityFilterButton/ActivityFilterButton.js +6 -2
- package/esm/components/activityLog/ActivityFilterButton/styles.js +1 -1
- package/esm/components/activityLog/ActivityFilterEditor/DateRangeSelector.d.ts +1 -1
- package/esm/components/activityLog/ActivityFilterEditor/DateRangeSelector.js +4 -4
- package/esm/components/activityLog/ActivityLog/items/ActivityItem/styles.js +1 -1
- package/esm/components/activityLog/ActivityLogFilter/helpers.js +1 -2
- package/esm/components/activityLog/activities/EntityObject/styles.js +1 -1
- package/esm/components/activityLog/activities/RelationObject/styles.js +1 -1
- package/esm/components/activityLog/activities/fields/commonStyles.js +1 -1
- package/esm/components/activityLog/activities/styles.js +1 -1
- package/esm/components/activityLog/types/ActivitiesFilter.d.ts +2 -2
- package/esm/components/activityLog/utils/filters.d.ts +0 -2
- package/esm/components/activityLog/utils/filters.js +2 -55
- package/esm/components/history/DateRangeSelector/DateRangeSelector.d.ts +1 -1
- package/esm/components/history/DateRangeSelector/DateRangeSelector.js +1 -1
- package/esm/components/history/DateRangeSelector/utils.d.ts +1 -1
- package/esm/components/history/DateRangeSelector/utils.js +1 -1
- package/esm/components/history/HistoryFilterButton/HistoryFilterButton.js +1 -1
- package/esm/components/history/types/HistoryFilter.d.ts +2 -1
- package/esm/components/history/utils/filters.d.ts +0 -2
- package/esm/components/history/utils/filters.js +2 -39
- package/esm/types/index.d.ts +0 -9
- package/esm/types/index.js +0 -6
- package/package.json +3 -3
|
@@ -18,6 +18,7 @@ exports.useStyles = (0, styles_1.makeStyles)({
|
|
|
18
18
|
height: 'auto'
|
|
19
19
|
},
|
|
20
20
|
dropdownIndicator: {
|
|
21
|
+
boxSizing: 'content-box',
|
|
21
22
|
transition: 'transform .15s ease',
|
|
22
23
|
padding: function (props) { return "".concat((props.height - 24) / 2, "px 12px"); },
|
|
23
24
|
cursor: 'pointer',
|
|
@@ -41,6 +41,7 @@ var react_1 = __importStar(require("react"));
|
|
|
41
41
|
var classnames_1 = __importDefault(require("classnames"));
|
|
42
42
|
var ui_i18n_1 = __importDefault(require("ui-i18n"));
|
|
43
43
|
var ramda_1 = require("ramda");
|
|
44
|
+
var mdm_sdk_1 = require("@reltio/mdm-sdk");
|
|
44
45
|
var FilterList_1 = __importDefault(require("@material-ui/icons/FilterList"));
|
|
45
46
|
var ActivityFilterEditor_1 = __importDefault(require("../ActivityFilterEditor/ActivityFilterEditor"));
|
|
46
47
|
var SmallIconButton_1 = require("../../SmallIconButton");
|
|
@@ -53,7 +54,10 @@ var ActivityFilterButton = function (_a) {
|
|
|
53
54
|
var _b = (0, react_1.useState)(false), isEditorOpen = _b[0], setIsEditorOpen = _b[1];
|
|
54
55
|
var isApplied = !(0, ramda_1.equals)(filter, initialValue.current);
|
|
55
56
|
var handleChange = function (value) {
|
|
56
|
-
|
|
57
|
+
var newValue = (0, ramda_1.pipe)((0, ramda_1.mergeRight)(initialValue.current), (0, ramda_1.evolve)({
|
|
58
|
+
dateRange: (0, ramda_1.unless)(mdm_sdk_1.isDateRangeValid, (0, ramda_1.always)(initialValue.current.dateRange))
|
|
59
|
+
}))(value);
|
|
60
|
+
onChange(newValue);
|
|
57
61
|
setIsEditorOpen(false);
|
|
58
62
|
};
|
|
59
63
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
@@ -41,11 +41,11 @@ var react_1 = __importStar(require("react"));
|
|
|
41
41
|
var ui_i18n_1 = __importDefault(require("ui-i18n"));
|
|
42
42
|
var ramda_1 = require("ramda");
|
|
43
43
|
var classnames_1 = __importDefault(require("classnames"));
|
|
44
|
+
var mdm_sdk_1 = require("@reltio/mdm-sdk");
|
|
44
45
|
var FormControlLabel_1 = __importDefault(require("@material-ui/core/FormControlLabel"));
|
|
45
46
|
var Radio_1 = __importDefault(require("@material-ui/core/Radio"));
|
|
46
47
|
var RadioGroup_1 = __importDefault(require("@material-ui/core/RadioGroup"));
|
|
47
48
|
var Typography_1 = __importDefault(require("@material-ui/core/Typography"));
|
|
48
|
-
var types_1 = require("../../../types");
|
|
49
49
|
var DateIntervalSelector_1 = __importDefault(require("../../DateIntervalSelector/DateIntervalSelector"));
|
|
50
50
|
var utils_1 = require("../../../core/utils");
|
|
51
51
|
var CustomDateRangeEditor_1 = __importDefault(require("../../editors/CustomDateRangeEditor/CustomDateRangeEditor"));
|
|
@@ -60,24 +60,24 @@ var DateRangeSelector = function (_a) {
|
|
|
60
60
|
if ((value === null || value === void 0 ? void 0 : value.type) === type) {
|
|
61
61
|
return value.period;
|
|
62
62
|
}
|
|
63
|
-
else if (type ===
|
|
63
|
+
else if (type === mdm_sdk_1.DateRangeTypes.WITHIN || type === mdm_sdk_1.DateRangeTypes.AGO) {
|
|
64
64
|
return emptyInterval;
|
|
65
65
|
}
|
|
66
|
-
else if (type ===
|
|
66
|
+
else if (type === mdm_sdk_1.DateRangeTypes.BETWEEN) {
|
|
67
67
|
return emptyDates;
|
|
68
68
|
}
|
|
69
69
|
};
|
|
70
|
-
var _b = (0, react_1.useState)(getInitPeriodByType(
|
|
71
|
-
var _c = (0, react_1.useState)(getInitPeriodByType(
|
|
72
|
-
var _d = (0, react_1.useState)(getInitPeriodByType(
|
|
70
|
+
var _b = (0, react_1.useState)(getInitPeriodByType(mdm_sdk_1.DateRangeTypes.BETWEEN)), datesInterval = _b[0], setDatesInterval = _b[1];
|
|
71
|
+
var _c = (0, react_1.useState)(getInitPeriodByType(mdm_sdk_1.DateRangeTypes.WITHIN)), withinInterval = _c[0], setWithinInterval = _c[1];
|
|
72
|
+
var _d = (0, react_1.useState)(getInitPeriodByType(mdm_sdk_1.DateRangeTypes.AGO)), agoInterval = _d[0], setAgoInterval = _d[1];
|
|
73
73
|
var getCurrentPeriodByType = function (type) {
|
|
74
|
-
if (type ===
|
|
74
|
+
if (type === mdm_sdk_1.DateRangeTypes.WITHIN) {
|
|
75
75
|
return withinInterval;
|
|
76
76
|
}
|
|
77
|
-
else if (type ===
|
|
77
|
+
else if (type === mdm_sdk_1.DateRangeTypes.AGO) {
|
|
78
78
|
return agoInterval;
|
|
79
79
|
}
|
|
80
|
-
else if (type ===
|
|
80
|
+
else if (type === mdm_sdk_1.DateRangeTypes.BETWEEN) {
|
|
81
81
|
return datesInterval;
|
|
82
82
|
}
|
|
83
83
|
};
|
|
@@ -91,13 +91,13 @@ var DateRangeSelector = function (_a) {
|
|
|
91
91
|
};
|
|
92
92
|
(0, hooks_1.useDidUpdateEffect)(function () {
|
|
93
93
|
if (value) {
|
|
94
|
-
if (value.type ===
|
|
94
|
+
if (value.type === mdm_sdk_1.DateRangeTypes.WITHIN) {
|
|
95
95
|
setWithinInterval(value.period);
|
|
96
96
|
}
|
|
97
|
-
else if (value.type ===
|
|
97
|
+
else if (value.type === mdm_sdk_1.DateRangeTypes.AGO) {
|
|
98
98
|
setAgoInterval(value.period);
|
|
99
99
|
}
|
|
100
|
-
else if (value.type ===
|
|
100
|
+
else if (value.type === mdm_sdk_1.DateRangeTypes.BETWEEN) {
|
|
101
101
|
setDatesInterval(value.period);
|
|
102
102
|
}
|
|
103
103
|
}
|
|
@@ -111,14 +111,14 @@ var DateRangeSelector = function (_a) {
|
|
|
111
111
|
react_1.default.createElement(Typography_1.default, { className: (0, classnames_1.default)(styles.filterSubtitle, styles.labels), variant: 'subtitle1' }, ui_i18n_1.default.text('Date')),
|
|
112
112
|
react_1.default.createElement(RadioGroup_1.default, { value: (value === null || value === void 0 ? void 0 : value.type) || null, onChange: (0, ramda_1.pipe)(utils_1.getValue, changeType) },
|
|
113
113
|
react_1.default.createElement("div", { className: styles.dateOptionWithin },
|
|
114
|
-
react_1.default.createElement(FormControlLabel_1.default, { value:
|
|
115
|
-
react_1.default.createElement(DateIntervalSelector_1.default, { interval: withinInterval, onChange: changePeriod, onFocus: function () { return changeType(
|
|
114
|
+
react_1.default.createElement(FormControlLabel_1.default, { value: mdm_sdk_1.DateRangeTypes.WITHIN, control: react_1.default.createElement(Radio_1.default, { color: "primary" }), label: ui_i18n_1.default.text('Within the last'), classes: { label: (0, classnames_1.default)(styles.dateOptionLabel, styles.labels) } }),
|
|
115
|
+
react_1.default.createElement(DateIntervalSelector_1.default, { interval: withinInterval, onChange: changePeriod, onFocus: function () { return changeType(mdm_sdk_1.DateRangeTypes.WITHIN); } })),
|
|
116
116
|
react_1.default.createElement("div", { className: styles.dateOptionAgo },
|
|
117
|
-
react_1.default.createElement(FormControlLabel_1.default, { value:
|
|
118
|
-
react_1.default.createElement(DateIntervalSelector_1.default, { interval: agoInterval, onChange: changePeriod, onFocus: function () { return changeType(
|
|
117
|
+
react_1.default.createElement(FormControlLabel_1.default, { value: mdm_sdk_1.DateRangeTypes.AGO, control: react_1.default.createElement(Radio_1.default, { color: "primary" }), label: ui_i18n_1.default.text('More than'), classes: { label: (0, classnames_1.default)(styles.dateOptionLabel, styles.labels) } }),
|
|
118
|
+
react_1.default.createElement(DateIntervalSelector_1.default, { interval: agoInterval, onChange: changePeriod, onFocus: function () { return changeType(mdm_sdk_1.DateRangeTypes.AGO); } }),
|
|
119
119
|
react_1.default.createElement(Typography_1.default, { className: (0, classnames_1.default)(styles.agoLabel, styles.labels), variant: 'subtitle1' }, ui_i18n_1.default.text('Ago'))),
|
|
120
120
|
react_1.default.createElement("div", { className: styles.dateOption },
|
|
121
|
-
react_1.default.createElement(FormControlLabel_1.default, { value:
|
|
122
|
-
react_1.default.createElement(CustomDateRangeEditor_1.default, { values: datesInterval, onChange: changePeriod, onFocus: function () { return changeType(
|
|
121
|
+
react_1.default.createElement(FormControlLabel_1.default, { value: mdm_sdk_1.DateRangeTypes.BETWEEN, control: react_1.default.createElement(Radio_1.default, { color: "primary" }), label: ui_i18n_1.default.text('Date range'), classes: { label: (0, classnames_1.default)(styles.dateOptionLabel, styles.labels) } }),
|
|
122
|
+
react_1.default.createElement(CustomDateRangeEditor_1.default, { values: datesInterval, onChange: changePeriod, onFocus: function () { return changeType(mdm_sdk_1.DateRangeTypes.BETWEEN); } })))));
|
|
123
123
|
};
|
|
124
124
|
exports.default = DateRangeSelector;
|
|
@@ -14,7 +14,7 @@ exports.useStyles = (0, styles_1.makeStyles)(function (theme) { return ({
|
|
|
14
14
|
marginRight: '15px',
|
|
15
15
|
width: '24px',
|
|
16
16
|
height: '24px',
|
|
17
|
-
background:
|
|
17
|
+
background: theme.palette.primary.main,
|
|
18
18
|
borderRadius: '50%',
|
|
19
19
|
border: '1px solid white',
|
|
20
20
|
display: 'flex',
|
|
@@ -7,7 +7,6 @@ exports.getFilterLabel = void 0;
|
|
|
7
7
|
var ui_i18n_1 = __importDefault(require("ui-i18n"));
|
|
8
8
|
var ramda_1 = require("ramda");
|
|
9
9
|
var mdm_sdk_1 = require("@reltio/mdm-sdk");
|
|
10
|
-
var types_1 = require("../../../types");
|
|
11
10
|
var activities_1 = require("../utils/activities");
|
|
12
11
|
var getFilterLabel = function (filters) {
|
|
13
12
|
var getLabel = (0, ramda_1.curry)(function (unit, pluralUnit, values) {
|
|
@@ -25,11 +24,11 @@ var getFilterLabel = function (filters) {
|
|
|
25
24
|
return "".concat((0, mdm_sdk_1.formatDataTypeValue)({ dataTypeDefinition: { type: mdm_sdk_1.DataTypes.TYPE_ACTIVENESS_DATE } }, value));
|
|
26
25
|
};
|
|
27
26
|
switch (date.type) {
|
|
28
|
-
case
|
|
27
|
+
case mdm_sdk_1.DateRangeTypes.WITHIN:
|
|
29
28
|
return ui_i18n_1.default.text('Within ${amount} ${unit}', { amount: date.period[0], unit: date.period[1] });
|
|
30
|
-
case
|
|
29
|
+
case mdm_sdk_1.DateRangeTypes.AGO:
|
|
31
30
|
return ui_i18n_1.default.text('More than ${amount} ${unit} ago', { amount: date.period[0], unit: date.period[1] });
|
|
32
|
-
case
|
|
31
|
+
case mdm_sdk_1.DateRangeTypes.BETWEEN:
|
|
33
32
|
return ui_i18n_1.default.text('${startDate} to ${endDate}', {
|
|
34
33
|
startDate: formatDateValue(date.period[0]),
|
|
35
34
|
endDate: formatDateValue(date.period[1])
|
|
@@ -4,7 +4,7 @@ exports.useStyles = void 0;
|
|
|
4
4
|
var styles_1 = require("@material-ui/core/styles");
|
|
5
5
|
exports.useStyles = (0, styles_1.makeStyles)(function (theme) { return ({
|
|
6
6
|
link: {
|
|
7
|
-
color:
|
|
7
|
+
color: theme.palette.primary.main,
|
|
8
8
|
textDecoration: 'none',
|
|
9
9
|
fontWeight: 400,
|
|
10
10
|
cursor: 'pointer'
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Source, TEntityType } from '@reltio/mdm-sdk';
|
|
1
|
+
import { Source, TEntityType, DateRangeFilter } from '@reltio/mdm-sdk';
|
|
2
2
|
import { ActivityTypes } from './ActivityTypes';
|
|
3
|
-
import { AttributeOption
|
|
3
|
+
import { AttributeOption } from '../../../types';
|
|
4
4
|
export declare type ActivitiesFilter = {
|
|
5
5
|
users: string[];
|
|
6
6
|
activities: ActivityTypes[];
|
|
@@ -1,27 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.buildActivitiesFilterString =
|
|
3
|
+
exports.buildActivitiesFilterString = void 0;
|
|
7
4
|
var ramda_1 = require("ramda");
|
|
8
|
-
var moment_1 = __importDefault(require("moment"));
|
|
9
|
-
var types_1 = require("../../../types");
|
|
10
5
|
var mdm_sdk_1 = require("@reltio/mdm-sdk");
|
|
11
|
-
var isDateRangeValid = function (value) {
|
|
12
|
-
if (value.type === types_1.DateRangeTypes.AGO || value.type === types_1.DateRangeTypes.WITHIN) {
|
|
13
|
-
var _a = value.period, amount = _a[0], unit = _a[1];
|
|
14
|
-
return (0, ramda_1.type)(amount) === 'Number' && (0, ramda_1.type)(unit) === 'String' && amount > 0;
|
|
15
|
-
}
|
|
16
|
-
else if (value.type === types_1.DateRangeTypes.BETWEEN) {
|
|
17
|
-
var _b = value.period, startDate = _b[0], endDate = _b[1];
|
|
18
|
-
return startDate instanceof Date && endDate instanceof Date;
|
|
19
|
-
}
|
|
20
|
-
};
|
|
21
|
-
exports.isDateRangeValid = isDateRangeValid;
|
|
22
|
-
var wrapInBrackets = function (str) { return "(".concat(str, ")"); };
|
|
23
|
-
var multiValueFilter = function (filterClauseFn) { return function (values) { return values.map(filterClauseFn).join(' or '); }; };
|
|
24
|
-
var buildUserFilterClause = function (user) { return "equals(user, '".concat((0, mdm_sdk_1.escapeQueryValue)(user), "')"); };
|
|
25
6
|
var buildActivityFilterClause = function (activityType) {
|
|
26
7
|
if (activityType.startsWith('USER_') || activityType.startsWith('COMMENT_') || activityType.startsWith('SFDC_')) {
|
|
27
8
|
return "startsWith(label, '".concat(activityType, "')");
|
|
@@ -30,58 +11,20 @@ var buildActivityFilterClause = function (activityType) {
|
|
|
30
11
|
return "equals(items.data.type, ".concat(activityType, ")");
|
|
31
12
|
}
|
|
32
13
|
};
|
|
33
|
-
var buildSourceFilterClause = function (source) {
|
|
34
|
-
return "equals(items.delta.sources, '".concat(source.abbreviation, "')");
|
|
35
|
-
};
|
|
36
|
-
var buildEntityTypeFilterClause = function (entityType) {
|
|
37
|
-
return "equals(items.objectType, '".concat(entityType.uri, "')");
|
|
38
|
-
};
|
|
39
14
|
var buildAttributeFilterClause = function (attribute) {
|
|
40
15
|
return "equals(items.delta.attributeType, '".concat(attribute.value, "')");
|
|
41
16
|
};
|
|
42
|
-
var durationToTimestamp = function (period) {
|
|
43
|
-
var amount = period[0], unit = period[1];
|
|
44
|
-
return (0, moment_1.default)().subtract(amount, unit).valueOf();
|
|
45
|
-
};
|
|
46
|
-
var buildDateRangeFilterClause = function (dateRange) {
|
|
47
|
-
var period = dateRange.period, type = dateRange.type;
|
|
48
|
-
if (!(0, exports.isDateRangeValid)(dateRange))
|
|
49
|
-
return '';
|
|
50
|
-
switch (type) {
|
|
51
|
-
case types_1.DateRangeTypes.WITHIN: {
|
|
52
|
-
return "gte(timestamp, ".concat(durationToTimestamp(period), ")");
|
|
53
|
-
}
|
|
54
|
-
case types_1.DateRangeTypes.AGO: {
|
|
55
|
-
return "lte(timestamp, ".concat(durationToTimestamp(period), ")");
|
|
56
|
-
}
|
|
57
|
-
case types_1.DateRangeTypes.BETWEEN: {
|
|
58
|
-
var start = period[0], end = period[1];
|
|
59
|
-
return "range(timestamp, ".concat(start.valueOf(), ", ").concat((0, moment_1.default)(end).endOf('date').valueOf(), ")");
|
|
60
|
-
}
|
|
61
|
-
default: {
|
|
62
|
-
return '';
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
};
|
|
66
|
-
var buildEntityUriFilterClause = function (entityUri) {
|
|
67
|
-
var filters = [
|
|
68
|
-
"equals(items.objectUri, '".concat(entityUri, "')"),
|
|
69
|
-
"equals(items.startObjectUri, '".concat(entityUri, "')"),
|
|
70
|
-
"equals(items.endObjectUri, '".concat(entityUri, "')")
|
|
71
|
-
];
|
|
72
|
-
return filters.join(' or ');
|
|
73
|
-
};
|
|
74
17
|
var getFilterClauseBuilder = (0, ramda_1.cond)([
|
|
75
|
-
[(0, ramda_1.equals)('users'), function () { return multiValueFilter(buildUserFilterClause); }],
|
|
76
|
-
[(0, ramda_1.equals)('activities'), function () { return multiValueFilter(buildActivityFilterClause); }],
|
|
77
|
-
[(0, ramda_1.equals)('sources'), function () { return multiValueFilter(buildSourceFilterClause); }],
|
|
78
|
-
[(0, ramda_1.equals)('attributes'), function () { return multiValueFilter(buildAttributeFilterClause); }],
|
|
79
|
-
[(0, ramda_1.equals)('entityTypes'), function () { return multiValueFilter(buildEntityTypeFilterClause); }],
|
|
80
|
-
[(0, ramda_1.equals)('dateRange'), function () { return buildDateRangeFilterClause; }],
|
|
81
|
-
[(0, ramda_1.equals)('entityUri'), function () { return buildEntityUriFilterClause; }],
|
|
18
|
+
[(0, ramda_1.equals)('users'), function () { return (0, mdm_sdk_1.multiValueFilter)(mdm_sdk_1.buildUserFilterClause); }],
|
|
19
|
+
[(0, ramda_1.equals)('activities'), function () { return (0, mdm_sdk_1.multiValueFilter)(buildActivityFilterClause); }],
|
|
20
|
+
[(0, ramda_1.equals)('sources'), function () { return (0, mdm_sdk_1.multiValueFilter)(mdm_sdk_1.buildSourceFilterClause); }],
|
|
21
|
+
[(0, ramda_1.equals)('attributes'), function () { return (0, mdm_sdk_1.multiValueFilter)(buildAttributeFilterClause); }],
|
|
22
|
+
[(0, ramda_1.equals)('entityTypes'), function () { return (0, mdm_sdk_1.multiValueFilter)(mdm_sdk_1.buildEntityTypeFilterClause); }],
|
|
23
|
+
[(0, ramda_1.equals)('dateRange'), function () { return mdm_sdk_1.buildDateRangeFilterClause; }],
|
|
24
|
+
[(0, ramda_1.equals)('entityUri'), function () { return mdm_sdk_1.buildEntityUriFilterClause; }],
|
|
82
25
|
[(0, ramda_1.equals)('rawFilter'), function () { return ramda_1.identity; }]
|
|
83
26
|
]);
|
|
84
27
|
exports.buildActivitiesFilterString = (0, ramda_1.pipe)((0, ramda_1.defaultTo)({}), (0, ramda_1.reject)(mdm_sdk_1.isEmptyValue), ramda_1.toPairs, (0, ramda_1.append)(['rawFilter', "not equals(user, 'collaboration-service')"]), (0, ramda_1.map)(function (_a) {
|
|
85
28
|
var key = _a[0], value = _a[1];
|
|
86
29
|
return getFilterClauseBuilder(key)(value);
|
|
87
|
-
}), (0, ramda_1.reject)(mdm_sdk_1.isEmptyValue), (0, ramda_1.map)(wrapInBrackets), (0, ramda_1.join)(' and '));
|
|
30
|
+
}), (0, ramda_1.reject)(mdm_sdk_1.isEmptyValue), (0, ramda_1.map)(mdm_sdk_1.wrapInBrackets), (0, ramda_1.join)(' and '));
|
|
@@ -29,26 +29,26 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
29
29
|
var react_1 = __importStar(require("react"));
|
|
30
30
|
var ui_i18n_1 = __importDefault(require("ui-i18n"));
|
|
31
31
|
var classnames_1 = __importDefault(require("classnames"));
|
|
32
|
+
var mdm_sdk_1 = require("@reltio/mdm-sdk");
|
|
32
33
|
var Typography_1 = __importDefault(require("@material-ui/core/Typography"));
|
|
33
34
|
var SimpleDropDownSelector_1 = __importDefault(require("../../SimpleDropDownSelector/SimpleDropDownSelector"));
|
|
34
35
|
var utils_1 = require("./utils");
|
|
35
36
|
var DateIntervalSelector_1 = __importDefault(require("../../DateIntervalSelector/DateIntervalSelector"));
|
|
36
37
|
var hooks_1 = require("../../../hooks");
|
|
37
38
|
var CustomDateRangeEditor_1 = __importDefault(require("../../editors/CustomDateRangeEditor/CustomDateRangeEditor"));
|
|
38
|
-
var types_1 = require("../../../types");
|
|
39
39
|
var styles_1 = require("./styles");
|
|
40
40
|
var emptyDates = [null, null];
|
|
41
41
|
var emptyInterval = [null, 'hours'];
|
|
42
42
|
var DateRangeSelector = function (_a) {
|
|
43
43
|
var value = _a.value, onChange = _a.onChange, className = _a.className;
|
|
44
44
|
var styles = (0, styles_1.useStyles)();
|
|
45
|
-
var isIntervalType = function (type) { return type ===
|
|
46
|
-
var isBetweenType = function (type) { return type ===
|
|
45
|
+
var isIntervalType = function (type) { return type === mdm_sdk_1.DateRangeTypes.WITHIN || type === mdm_sdk_1.DateRangeTypes.AGO; };
|
|
46
|
+
var isBetweenType = function (type) { return type === mdm_sdk_1.DateRangeTypes.BETWEEN; };
|
|
47
47
|
var initDatesInterval = isBetweenType(value === null || value === void 0 ? void 0 : value.type) ? value.period : emptyDates;
|
|
48
48
|
var initInterval = isIntervalType(value === null || value === void 0 ? void 0 : value.type) ? value.period : emptyInterval;
|
|
49
49
|
var _b = (0, react_1.useState)(initDatesInterval), datesInterval = _b[0], setDatesInterval = _b[1];
|
|
50
50
|
var _c = (0, react_1.useState)(initInterval), interval = _c[0], setInterval = _c[1];
|
|
51
|
-
var selectedType = (value === null || value === void 0 ? void 0 : value.type) ||
|
|
51
|
+
var selectedType = (value === null || value === void 0 ? void 0 : value.type) || mdm_sdk_1.DateRangeTypes.WITHIN;
|
|
52
52
|
var getCurrentPeriodByType = function (type) {
|
|
53
53
|
if (isIntervalType(type)) {
|
|
54
54
|
return interval;
|
|
@@ -5,14 +5,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.getDateRangeTypeLabel = exports.dateRangeTypeOptions = void 0;
|
|
7
7
|
var ui_i18n_1 = __importDefault(require("ui-i18n"));
|
|
8
|
-
var
|
|
9
|
-
exports.dateRangeTypeOptions = [
|
|
8
|
+
var mdm_sdk_1 = require("@reltio/mdm-sdk");
|
|
9
|
+
exports.dateRangeTypeOptions = [mdm_sdk_1.DateRangeTypes.WITHIN, mdm_sdk_1.DateRangeTypes.AGO, mdm_sdk_1.DateRangeTypes.BETWEEN];
|
|
10
10
|
var getDateRangeTypeLabel = function (type) {
|
|
11
11
|
var _a;
|
|
12
12
|
var labels = (_a = {},
|
|
13
|
-
_a[
|
|
14
|
-
_a[
|
|
15
|
-
_a[
|
|
13
|
+
_a[mdm_sdk_1.DateRangeTypes.WITHIN] = ui_i18n_1.default.text('Within the last'),
|
|
14
|
+
_a[mdm_sdk_1.DateRangeTypes.AGO] = ui_i18n_1.default.text('More than'),
|
|
15
|
+
_a[mdm_sdk_1.DateRangeTypes.BETWEEN] = ui_i18n_1.default.text('Date range'),
|
|
16
16
|
_a);
|
|
17
17
|
return labels[type] || '';
|
|
18
18
|
};
|
|
@@ -44,8 +44,8 @@ var FilterList_1 = __importDefault(require("@material-ui/icons/FilterList"));
|
|
|
44
44
|
var Button_1 = __importDefault(require("@material-ui/core/Button"));
|
|
45
45
|
var Popover_1 = __importDefault(require("@material-ui/core/Popover"));
|
|
46
46
|
var Typography_1 = __importDefault(require("@material-ui/core/Typography"));
|
|
47
|
+
var mdm_sdk_1 = require("@reltio/mdm-sdk");
|
|
47
48
|
var SmallIconButton_1 = require("../../SmallIconButton");
|
|
48
|
-
var filters_1 = require("../utils/filters");
|
|
49
49
|
var UserSelector_1 = __importDefault(require("../../UserSelector/UserSelector"));
|
|
50
50
|
var AttributeSelector_1 = __importDefault(require("../../AttributeSelector/AttributeSelector"));
|
|
51
51
|
var DateRangeSelector_1 = __importDefault(require("../DateRangeSelector/DateRangeSelector"));
|
|
@@ -75,7 +75,7 @@ var HistoryFilterButton = function (_a) {
|
|
|
75
75
|
setIsOpen(function (open) { return !open; });
|
|
76
76
|
}, []);
|
|
77
77
|
var applyButtonHandler = (0, react_1.useCallback)(function () {
|
|
78
|
-
dateRange && (0,
|
|
78
|
+
dateRange && (0, mdm_sdk_1.isDateRangeValid)(dateRange)
|
|
79
79
|
? onApplyFilter(currentValue)
|
|
80
80
|
: onApplyFilter((0, ramda_1.dissoc)('dateRange', currentValue));
|
|
81
81
|
togglePopup();
|
|
@@ -1,21 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
7
|
-
var moment_1 = __importDefault(require("moment"));
|
|
3
|
+
exports.buildHistoryFilterString = void 0;
|
|
8
4
|
var ramda_1 = require("ramda");
|
|
9
5
|
var mdm_sdk_1 = require("@reltio/mdm-sdk");
|
|
10
6
|
var HistoryFilter_1 = require("../types/HistoryFilter");
|
|
11
7
|
var ActivityTypes_1 = require("../../activityLog/types/ActivityTypes");
|
|
12
|
-
var types_1 = require("../../../types");
|
|
13
|
-
var wrapInBrackets = function (str) { return "(".concat(str, ")"); };
|
|
14
|
-
var multiValueFilter = function (filterClauseFn) { return (0, ramda_1.pipe)((0, ramda_1.map)(filterClauseFn), (0, ramda_1.join)(' or ')); };
|
|
15
|
-
var durationToTimestamp = function (period) {
|
|
16
|
-
var amount = period[0], unit = period[1];
|
|
17
|
-
return (0, moment_1.default)().subtract(amount, unit).valueOf();
|
|
18
|
-
};
|
|
19
8
|
var convertHistoryTypes = (0, ramda_1.chain)((0, ramda_1.cond)([
|
|
20
9
|
[
|
|
21
10
|
(0, ramda_1.equals)(HistoryFilter_1.HistoryActivityType.MERGE),
|
|
@@ -28,40 +17,10 @@ var convertHistoryTypes = (0, ramda_1.chain)((0, ramda_1.cond)([
|
|
|
28
17
|
[(0, ramda_1.equals)(HistoryFilter_1.HistoryActivityType.UNMERGE), function () { return [ActivityTypes_1.ActivityTypes.ENTITIES_SPLITTED]; }],
|
|
29
18
|
[(0, ramda_1.equals)(HistoryFilter_1.HistoryActivityType.UPDATE), function () { return [ActivityTypes_1.ActivityTypes.ENTITY_CHANGED]; }]
|
|
30
19
|
]));
|
|
31
|
-
var buildActivityFilterClause = (0, ramda_1.pipe)((0, ramda_1.defaultTo)([]), convertHistoryTypes, (0, ramda_1.concat)([ActivityTypes_1.ActivityTypes.ENTITY_CREATED, ActivityTypes_1.ActivityTypes.ENTITY_REMOVED, ActivityTypes_1.ActivityTypes.ENTITY_LOST_MERGE]), multiValueFilter(function (value) { return "equals(type, '".concat(value, "')"); }));
|
|
32
|
-
var buildUserFilterClause = function (user) { return "equals(user, '".concat((0, mdm_sdk_1.escapeQueryValue)(user), "')"); };
|
|
20
|
+
var buildActivityFilterClause = (0, ramda_1.pipe)((0, ramda_1.defaultTo)([]), convertHistoryTypes, (0, ramda_1.concat)([ActivityTypes_1.ActivityTypes.ENTITY_CREATED, ActivityTypes_1.ActivityTypes.ENTITY_REMOVED, ActivityTypes_1.ActivityTypes.ENTITY_LOST_MERGE]), (0, mdm_sdk_1.multiValueFilter)(function (value) { return "equals(type, '".concat(value, "')"); }));
|
|
33
21
|
var buildAttributeFilterClause = function (attribute) { return "changes(".concat((0, mdm_sdk_1.escapeQueryValue)(attribute.value), ")"); };
|
|
34
|
-
var buildDateRangeFilterClause = function (_a) {
|
|
35
|
-
var type = _a.type, period = _a.period;
|
|
36
|
-
switch (type) {
|
|
37
|
-
case types_1.DateRangeTypes.WITHIN: {
|
|
38
|
-
return "gte(timestamp, ".concat(durationToTimestamp(period), ")");
|
|
39
|
-
}
|
|
40
|
-
case types_1.DateRangeTypes.AGO: {
|
|
41
|
-
return "lte(timestamp, ".concat(durationToTimestamp(period), ")");
|
|
42
|
-
}
|
|
43
|
-
case types_1.DateRangeTypes.BETWEEN: {
|
|
44
|
-
var start = period[0], end = period[1];
|
|
45
|
-
return "gte(timestamp, ".concat(start.valueOf(), ") and lte(timestamp, ").concat((0, moment_1.default)(end).endOf('date').valueOf(), ")");
|
|
46
|
-
}
|
|
47
|
-
default: {
|
|
48
|
-
return '';
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
};
|
|
52
22
|
exports.buildHistoryFilterString = (0, ramda_1.pipe)((0, ramda_1.defaultTo)({}), (0, ramda_1.reject)(mdm_sdk_1.isEmptyValue), (0, ramda_1.evolve)({
|
|
53
|
-
users: multiValueFilter(buildUserFilterClause),
|
|
54
|
-
attributes: multiValueFilter(buildAttributeFilterClause),
|
|
55
|
-
dateRange: buildDateRangeFilterClause
|
|
56
|
-
}), (0, ramda_1.over)((0, ramda_1.lensProp)('activities'), buildActivityFilterClause), ramda_1.values, (0, ramda_1.reject)(mdm_sdk_1.isEmptyValue), (0, ramda_1.append)("not equals(user, 'collaboration-service')"), (0, ramda_1.map)(wrapInBrackets), (0, ramda_1.join)(' and '));
|
|
57
|
-
var isDateRangeValid = function (value) {
|
|
58
|
-
if (value.type === types_1.DateRangeTypes.AGO || value.type === types_1.DateRangeTypes.WITHIN) {
|
|
59
|
-
var _a = value.period, amount = _a[0], unit = _a[1];
|
|
60
|
-
return (0, ramda_1.type)(amount) === 'Number' && (0, ramda_1.type)(unit) === 'String' && amount > 0;
|
|
61
|
-
}
|
|
62
|
-
else if (value.type === types_1.DateRangeTypes.BETWEEN) {
|
|
63
|
-
var _b = value.period, startDate = _b[0], endDate = _b[1];
|
|
64
|
-
return startDate instanceof Date && endDate instanceof Date;
|
|
65
|
-
}
|
|
66
|
-
};
|
|
67
|
-
exports.isDateRangeValid = isDateRangeValid;
|
|
23
|
+
users: (0, mdm_sdk_1.multiValueFilter)(mdm_sdk_1.buildUserFilterClause),
|
|
24
|
+
attributes: (0, mdm_sdk_1.multiValueFilter)(buildAttributeFilterClause),
|
|
25
|
+
dateRange: mdm_sdk_1.buildDateRangeFilterClause
|
|
26
|
+
}), (0, ramda_1.over)((0, ramda_1.lensProp)('activities'), buildActivityFilterClause), ramda_1.values, (0, ramda_1.reject)(mdm_sdk_1.isEmptyValue), (0, ramda_1.append)("not equals(user, 'collaboration-service')"), (0, ramda_1.map)(mdm_sdk_1.wrapInBrackets), (0, ramda_1.join)(' and '));
|
package/cjs/types/index.d.ts
CHANGED
|
@@ -18,15 +18,6 @@ export declare type AttributeOption = {
|
|
|
18
18
|
chipLabel: string;
|
|
19
19
|
level: number;
|
|
20
20
|
};
|
|
21
|
-
export declare enum DateRangeTypes {
|
|
22
|
-
WITHIN = "within",
|
|
23
|
-
AGO = "ago",
|
|
24
|
-
BETWEEN = "between"
|
|
25
|
-
}
|
|
26
|
-
export declare type DateRangeFilter = {
|
|
27
|
-
type: DateRangeTypes;
|
|
28
|
-
period: [number, string] | [Date, Date];
|
|
29
|
-
};
|
|
30
21
|
export declare type QueryBuilderAttributeData = {
|
|
31
22
|
title: string;
|
|
32
23
|
pathToTitle: Array<string>;
|
package/cjs/types/index.js
CHANGED
|
@@ -1,12 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RequestStates =
|
|
4
|
-
var DateRangeTypes;
|
|
5
|
-
(function (DateRangeTypes) {
|
|
6
|
-
DateRangeTypes["WITHIN"] = "within";
|
|
7
|
-
DateRangeTypes["AGO"] = "ago";
|
|
8
|
-
DateRangeTypes["BETWEEN"] = "between";
|
|
9
|
-
})(DateRangeTypes = exports.DateRangeTypes || (exports.DateRangeTypes = {}));
|
|
3
|
+
exports.RequestStates = void 0;
|
|
10
4
|
var RequestStates;
|
|
11
5
|
(function (RequestStates) {
|
|
12
6
|
RequestStates["INIT"] = "init";
|
|
@@ -12,7 +12,8 @@ var __assign = (this && this.__assign) || function () {
|
|
|
12
12
|
import React, { useState, useRef } from 'react';
|
|
13
13
|
import classnames from 'classnames';
|
|
14
14
|
import i18n from 'ui-i18n';
|
|
15
|
-
import { equals } from 'ramda';
|
|
15
|
+
import { always, equals, evolve, pipe, mergeRight, unless } from 'ramda';
|
|
16
|
+
import { isDateRangeValid } from '@reltio/mdm-sdk';
|
|
16
17
|
import FilterListIcon from '@material-ui/icons/FilterList';
|
|
17
18
|
import ActivityFilterEditor from '../ActivityFilterEditor/ActivityFilterEditor';
|
|
18
19
|
import { SmallIconButtonWithTooltip } from '../../SmallIconButton';
|
|
@@ -25,7 +26,10 @@ var ActivityFilterButton = function (_a) {
|
|
|
25
26
|
var _b = useState(false), isEditorOpen = _b[0], setIsEditorOpen = _b[1];
|
|
26
27
|
var isApplied = !equals(filter, initialValue.current);
|
|
27
28
|
var handleChange = function (value) {
|
|
28
|
-
|
|
29
|
+
var newValue = pipe(mergeRight(initialValue.current), evolve({
|
|
30
|
+
dateRange: unless(isDateRangeValid, always(initialValue.current.dateRange))
|
|
31
|
+
}))(value);
|
|
32
|
+
onChange(newValue);
|
|
29
33
|
setIsEditorOpen(false);
|
|
30
34
|
};
|
|
31
35
|
return (React.createElement(React.Fragment, null,
|
|
@@ -13,11 +13,11 @@ import React, { useState } from 'react';
|
|
|
13
13
|
import i18n from 'ui-i18n';
|
|
14
14
|
import { pipe } from 'ramda';
|
|
15
15
|
import classnames from 'classnames';
|
|
16
|
+
import { DateRangeTypes } from '@reltio/mdm-sdk';
|
|
16
17
|
import FormControlLabel from '@material-ui/core/FormControlLabel';
|
|
17
18
|
import Radio from '@material-ui/core/Radio';
|
|
18
19
|
import RadioGroup from '@material-ui/core/RadioGroup';
|
|
19
20
|
import Typography from '@material-ui/core/Typography';
|
|
20
|
-
import { DateRangeTypes } from '../../../types';
|
|
21
21
|
import DateIntervalSelector from '../../DateIntervalSelector/DateIntervalSelector';
|
|
22
22
|
import { getValue } from '../../../core/utils';
|
|
23
23
|
import CustomDateRangeEditor from '../../editors/CustomDateRangeEditor/CustomDateRangeEditor';
|
|
@@ -83,14 +83,14 @@ var DateRangeSelector = function (_a) {
|
|
|
83
83
|
React.createElement(Typography, { className: classnames(styles.filterSubtitle, styles.labels), variant: 'subtitle1' }, i18n.text('Date')),
|
|
84
84
|
React.createElement(RadioGroup, { value: (value === null || value === void 0 ? void 0 : value.type) || null, onChange: pipe(getValue, changeType) },
|
|
85
85
|
React.createElement("div", { className: styles.dateOptionWithin },
|
|
86
|
-
React.createElement(FormControlLabel, { value: DateRangeTypes.WITHIN, control: React.createElement(Radio,
|
|
86
|
+
React.createElement(FormControlLabel, { value: DateRangeTypes.WITHIN, control: React.createElement(Radio, { color: "primary" }), label: i18n.text('Within the last'), classes: { label: classnames(styles.dateOptionLabel, styles.labels) } }),
|
|
87
87
|
React.createElement(DateIntervalSelector, { interval: withinInterval, onChange: changePeriod, onFocus: function () { return changeType(DateRangeTypes.WITHIN); } })),
|
|
88
88
|
React.createElement("div", { className: styles.dateOptionAgo },
|
|
89
|
-
React.createElement(FormControlLabel, { value: DateRangeTypes.AGO, control: React.createElement(Radio,
|
|
89
|
+
React.createElement(FormControlLabel, { value: DateRangeTypes.AGO, control: React.createElement(Radio, { color: "primary" }), label: i18n.text('More than'), classes: { label: classnames(styles.dateOptionLabel, styles.labels) } }),
|
|
90
90
|
React.createElement(DateIntervalSelector, { interval: agoInterval, onChange: changePeriod, onFocus: function () { return changeType(DateRangeTypes.AGO); } }),
|
|
91
91
|
React.createElement(Typography, { className: classnames(styles.agoLabel, styles.labels), variant: 'subtitle1' }, i18n.text('Ago'))),
|
|
92
92
|
React.createElement("div", { className: styles.dateOption },
|
|
93
|
-
React.createElement(FormControlLabel, { value: DateRangeTypes.BETWEEN, control: React.createElement(Radio,
|
|
93
|
+
React.createElement(FormControlLabel, { value: DateRangeTypes.BETWEEN, control: React.createElement(Radio, { color: "primary" }), label: i18n.text('Date range'), classes: { label: classnames(styles.dateOptionLabel, styles.labels) } }),
|
|
94
94
|
React.createElement(CustomDateRangeEditor, { values: datesInterval, onChange: changePeriod, onFocus: function () { return changeType(DateRangeTypes.BETWEEN); } })))));
|
|
95
95
|
};
|
|
96
96
|
export default DateRangeSelector;
|
|
@@ -11,7 +11,7 @@ export var useStyles = makeStyles(function (theme) { return ({
|
|
|
11
11
|
marginRight: '15px',
|
|
12
12
|
width: '24px',
|
|
13
13
|
height: '24px',
|
|
14
|
-
background:
|
|
14
|
+
background: theme.palette.primary.main,
|
|
15
15
|
borderRadius: '50%',
|
|
16
16
|
border: '1px solid white',
|
|
17
17
|
display: 'flex',
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import i18n from 'ui-i18n';
|
|
2
2
|
import { curry, join, identity, isNil, map, pipe, reject, sortBy, defaultTo, pluck } from 'ramda';
|
|
3
|
-
import { DataTypes, formatDataTypeValue } from '@reltio/mdm-sdk';
|
|
4
|
-
import { DateRangeTypes } from '../../../types';
|
|
3
|
+
import { DataTypes, formatDataTypeValue, DateRangeTypes } from '@reltio/mdm-sdk';
|
|
5
4
|
import { getActivityLabel } from '../utils/activities';
|
|
6
5
|
export var getFilterLabel = function (filters) {
|
|
7
6
|
var getLabel = curry(function (unit, pluralUnit, values) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Source, TEntityType } from '@reltio/mdm-sdk';
|
|
1
|
+
import { Source, TEntityType, DateRangeFilter } from '@reltio/mdm-sdk';
|
|
2
2
|
import { ActivityTypes } from './ActivityTypes';
|
|
3
|
-
import { AttributeOption
|
|
3
|
+
import { AttributeOption } from '../../../types';
|
|
4
4
|
export declare type ActivitiesFilter = {
|
|
5
5
|
users: string[];
|
|
6
6
|
activities: ActivityTypes[];
|
|
@@ -1,20 +1,5 @@
|
|
|
1
|
-
import { append, cond, defaultTo, equals, identity, join, map, pipe, reject, toPairs
|
|
2
|
-
import
|
|
3
|
-
import { DateRangeTypes } from '../../../types';
|
|
4
|
-
import { escapeQueryValue, isEmptyValue } from '@reltio/mdm-sdk';
|
|
5
|
-
export var isDateRangeValid = function (value) {
|
|
6
|
-
if (value.type === DateRangeTypes.AGO || value.type === DateRangeTypes.WITHIN) {
|
|
7
|
-
var _a = value.period, amount = _a[0], unit = _a[1];
|
|
8
|
-
return type(amount) === 'Number' && type(unit) === 'String' && amount > 0;
|
|
9
|
-
}
|
|
10
|
-
else if (value.type === DateRangeTypes.BETWEEN) {
|
|
11
|
-
var _b = value.period, startDate = _b[0], endDate = _b[1];
|
|
12
|
-
return startDate instanceof Date && endDate instanceof Date;
|
|
13
|
-
}
|
|
14
|
-
};
|
|
15
|
-
var wrapInBrackets = function (str) { return "(".concat(str, ")"); };
|
|
16
|
-
var multiValueFilter = function (filterClauseFn) { return function (values) { return values.map(filterClauseFn).join(' or '); }; };
|
|
17
|
-
var buildUserFilterClause = function (user) { return "equals(user, '".concat(escapeQueryValue(user), "')"); };
|
|
1
|
+
import { append, cond, defaultTo, equals, identity, join, map, pipe, reject, toPairs } from 'ramda';
|
|
2
|
+
import { isEmptyValue, wrapInBrackets, multiValueFilter, buildUserFilterClause, buildSourceFilterClause, buildEntityTypeFilterClause, buildDateRangeFilterClause, buildEntityUriFilterClause } from '@reltio/mdm-sdk';
|
|
18
3
|
var buildActivityFilterClause = function (activityType) {
|
|
19
4
|
if (activityType.startsWith('USER_') || activityType.startsWith('COMMENT_') || activityType.startsWith('SFDC_')) {
|
|
20
5
|
return "startsWith(label, '".concat(activityType, "')");
|
|
@@ -23,47 +8,9 @@ var buildActivityFilterClause = function (activityType) {
|
|
|
23
8
|
return "equals(items.data.type, ".concat(activityType, ")");
|
|
24
9
|
}
|
|
25
10
|
};
|
|
26
|
-
var buildSourceFilterClause = function (source) {
|
|
27
|
-
return "equals(items.delta.sources, '".concat(source.abbreviation, "')");
|
|
28
|
-
};
|
|
29
|
-
var buildEntityTypeFilterClause = function (entityType) {
|
|
30
|
-
return "equals(items.objectType, '".concat(entityType.uri, "')");
|
|
31
|
-
};
|
|
32
11
|
var buildAttributeFilterClause = function (attribute) {
|
|
33
12
|
return "equals(items.delta.attributeType, '".concat(attribute.value, "')");
|
|
34
13
|
};
|
|
35
|
-
var durationToTimestamp = function (period) {
|
|
36
|
-
var amount = period[0], unit = period[1];
|
|
37
|
-
return moment().subtract(amount, unit).valueOf();
|
|
38
|
-
};
|
|
39
|
-
var buildDateRangeFilterClause = function (dateRange) {
|
|
40
|
-
var period = dateRange.period, type = dateRange.type;
|
|
41
|
-
if (!isDateRangeValid(dateRange))
|
|
42
|
-
return '';
|
|
43
|
-
switch (type) {
|
|
44
|
-
case DateRangeTypes.WITHIN: {
|
|
45
|
-
return "gte(timestamp, ".concat(durationToTimestamp(period), ")");
|
|
46
|
-
}
|
|
47
|
-
case DateRangeTypes.AGO: {
|
|
48
|
-
return "lte(timestamp, ".concat(durationToTimestamp(period), ")");
|
|
49
|
-
}
|
|
50
|
-
case DateRangeTypes.BETWEEN: {
|
|
51
|
-
var start = period[0], end = period[1];
|
|
52
|
-
return "range(timestamp, ".concat(start.valueOf(), ", ").concat(moment(end).endOf('date').valueOf(), ")");
|
|
53
|
-
}
|
|
54
|
-
default: {
|
|
55
|
-
return '';
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
};
|
|
59
|
-
var buildEntityUriFilterClause = function (entityUri) {
|
|
60
|
-
var filters = [
|
|
61
|
-
"equals(items.objectUri, '".concat(entityUri, "')"),
|
|
62
|
-
"equals(items.startObjectUri, '".concat(entityUri, "')"),
|
|
63
|
-
"equals(items.endObjectUri, '".concat(entityUri, "')")
|
|
64
|
-
];
|
|
65
|
-
return filters.join(' or ');
|
|
66
|
-
};
|
|
67
14
|
var getFilterClauseBuilder = cond([
|
|
68
15
|
[equals('users'), function () { return multiValueFilter(buildUserFilterClause); }],
|
|
69
16
|
[equals('activities'), function () { return multiValueFilter(buildActivityFilterClause); }],
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import React, { useState } from 'react';
|
|
2
2
|
import i18n from 'ui-i18n';
|
|
3
3
|
import classnames from 'classnames';
|
|
4
|
+
import { DateRangeTypes } from '@reltio/mdm-sdk';
|
|
4
5
|
import Typography from '@material-ui/core/Typography';
|
|
5
6
|
import SimpleDropDownSelector from '../../SimpleDropDownSelector/SimpleDropDownSelector';
|
|
6
7
|
import { dateRangeTypeOptions, getDateRangeTypeLabel } from './utils';
|
|
7
8
|
import DateIntervalSelector from '../../DateIntervalSelector/DateIntervalSelector';
|
|
8
9
|
import { useDidUpdateEffect } from '../../../hooks';
|
|
9
10
|
import CustomDateRangeEditor from '../../editors/CustomDateRangeEditor/CustomDateRangeEditor';
|
|
10
|
-
import { DateRangeTypes } from '../../../types';
|
|
11
11
|
import { useStyles } from './styles';
|
|
12
12
|
var emptyDates = [null, null];
|
|
13
13
|
var emptyInterval = [null, 'hours'];
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import i18n from 'ui-i18n';
|
|
2
|
-
import { DateRangeTypes } from '
|
|
2
|
+
import { DateRangeTypes } from '@reltio/mdm-sdk';
|
|
3
3
|
export var dateRangeTypeOptions = [DateRangeTypes.WITHIN, DateRangeTypes.AGO, DateRangeTypes.BETWEEN];
|
|
4
4
|
export var getDateRangeTypeLabel = function (type) {
|
|
5
5
|
var _a;
|
|
@@ -16,8 +16,8 @@ import FilterListIcon from '@material-ui/icons/FilterList';
|
|
|
16
16
|
import Button from '@material-ui/core/Button';
|
|
17
17
|
import Popover from '@material-ui/core/Popover';
|
|
18
18
|
import Typography from '@material-ui/core/Typography';
|
|
19
|
+
import { isDateRangeValid } from '@reltio/mdm-sdk';
|
|
19
20
|
import { SmallIconButton } from '../../SmallIconButton';
|
|
20
|
-
import { isDateRangeValid } from '../utils/filters';
|
|
21
21
|
import UserSelector from '../../UserSelector/UserSelector';
|
|
22
22
|
import AttributeSelector from '../../AttributeSelector/AttributeSelector';
|
|
23
23
|
import DateRangeSelector from '../DateRangeSelector/DateRangeSelector';
|
|
@@ -1,15 +1,7 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import { isEmptyValue, escapeQueryValue } from '@reltio/mdm-sdk';
|
|
1
|
+
import { pipe, defaultTo, reject, map, join, cond, equals, append, concat, chain, evolve, values, over, lensProp } from 'ramda';
|
|
2
|
+
import { isEmptyValue, escapeQueryValue, wrapInBrackets, multiValueFilter, buildUserFilterClause, buildDateRangeFilterClause } from '@reltio/mdm-sdk';
|
|
4
3
|
import { HistoryActivityType } from '../types/HistoryFilter';
|
|
5
4
|
import { ActivityTypes } from '../../activityLog/types/ActivityTypes';
|
|
6
|
-
import { DateRangeTypes } from '../../../types';
|
|
7
|
-
var wrapInBrackets = function (str) { return "(".concat(str, ")"); };
|
|
8
|
-
var multiValueFilter = function (filterClauseFn) { return pipe(map(filterClauseFn), join(' or ')); };
|
|
9
|
-
var durationToTimestamp = function (period) {
|
|
10
|
-
var amount = period[0], unit = period[1];
|
|
11
|
-
return moment().subtract(amount, unit).valueOf();
|
|
12
|
-
};
|
|
13
5
|
var convertHistoryTypes = chain(cond([
|
|
14
6
|
[
|
|
15
7
|
equals(HistoryActivityType.MERGE),
|
|
@@ -23,38 +15,9 @@ var convertHistoryTypes = chain(cond([
|
|
|
23
15
|
[equals(HistoryActivityType.UPDATE), function () { return [ActivityTypes.ENTITY_CHANGED]; }]
|
|
24
16
|
]));
|
|
25
17
|
var buildActivityFilterClause = pipe(defaultTo([]), convertHistoryTypes, concat([ActivityTypes.ENTITY_CREATED, ActivityTypes.ENTITY_REMOVED, ActivityTypes.ENTITY_LOST_MERGE]), multiValueFilter(function (value) { return "equals(type, '".concat(value, "')"); }));
|
|
26
|
-
var buildUserFilterClause = function (user) { return "equals(user, '".concat(escapeQueryValue(user), "')"); };
|
|
27
18
|
var buildAttributeFilterClause = function (attribute) { return "changes(".concat(escapeQueryValue(attribute.value), ")"); };
|
|
28
|
-
var buildDateRangeFilterClause = function (_a) {
|
|
29
|
-
var type = _a.type, period = _a.period;
|
|
30
|
-
switch (type) {
|
|
31
|
-
case DateRangeTypes.WITHIN: {
|
|
32
|
-
return "gte(timestamp, ".concat(durationToTimestamp(period), ")");
|
|
33
|
-
}
|
|
34
|
-
case DateRangeTypes.AGO: {
|
|
35
|
-
return "lte(timestamp, ".concat(durationToTimestamp(period), ")");
|
|
36
|
-
}
|
|
37
|
-
case DateRangeTypes.BETWEEN: {
|
|
38
|
-
var start = period[0], end = period[1];
|
|
39
|
-
return "gte(timestamp, ".concat(start.valueOf(), ") and lte(timestamp, ").concat(moment(end).endOf('date').valueOf(), ")");
|
|
40
|
-
}
|
|
41
|
-
default: {
|
|
42
|
-
return '';
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
};
|
|
46
19
|
export var buildHistoryFilterString = pipe(defaultTo({}), reject(isEmptyValue), evolve({
|
|
47
20
|
users: multiValueFilter(buildUserFilterClause),
|
|
48
21
|
attributes: multiValueFilter(buildAttributeFilterClause),
|
|
49
22
|
dateRange: buildDateRangeFilterClause
|
|
50
23
|
}), over(lensProp('activities'), buildActivityFilterClause), values, reject(isEmptyValue), append("not equals(user, 'collaboration-service')"), map(wrapInBrackets), join(' and '));
|
|
51
|
-
export var isDateRangeValid = function (value) {
|
|
52
|
-
if (value.type === DateRangeTypes.AGO || value.type === DateRangeTypes.WITHIN) {
|
|
53
|
-
var _a = value.period, amount = _a[0], unit = _a[1];
|
|
54
|
-
return type(amount) === 'Number' && type(unit) === 'String' && amount > 0;
|
|
55
|
-
}
|
|
56
|
-
else if (value.type === DateRangeTypes.BETWEEN) {
|
|
57
|
-
var _b = value.period, startDate = _b[0], endDate = _b[1];
|
|
58
|
-
return startDate instanceof Date && endDate instanceof Date;
|
|
59
|
-
}
|
|
60
|
-
};
|
package/esm/types/index.d.ts
CHANGED
|
@@ -18,15 +18,6 @@ export declare type AttributeOption = {
|
|
|
18
18
|
chipLabel: string;
|
|
19
19
|
level: number;
|
|
20
20
|
};
|
|
21
|
-
export declare enum DateRangeTypes {
|
|
22
|
-
WITHIN = "within",
|
|
23
|
-
AGO = "ago",
|
|
24
|
-
BETWEEN = "between"
|
|
25
|
-
}
|
|
26
|
-
export declare type DateRangeFilter = {
|
|
27
|
-
type: DateRangeTypes;
|
|
28
|
-
period: [number, string] | [Date, Date];
|
|
29
|
-
};
|
|
30
21
|
export declare type QueryBuilderAttributeData = {
|
|
31
22
|
title: string;
|
|
32
23
|
pathToTitle: Array<string>;
|
package/esm/types/index.js
CHANGED
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
export var DateRangeTypes;
|
|
2
|
-
(function (DateRangeTypes) {
|
|
3
|
-
DateRangeTypes["WITHIN"] = "within";
|
|
4
|
-
DateRangeTypes["AGO"] = "ago";
|
|
5
|
-
DateRangeTypes["BETWEEN"] = "between";
|
|
6
|
-
})(DateRangeTypes || (DateRangeTypes = {}));
|
|
7
1
|
export var RequestStates;
|
|
8
2
|
(function (RequestStates) {
|
|
9
3
|
RequestStates["INIT"] = "init";
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@reltio/components",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.1430",
|
|
4
4
|
"license": "SEE LICENSE IN LICENSE FILE",
|
|
5
5
|
"main": "./cjs/index.js",
|
|
6
6
|
"module": "./esm/index.js",
|
|
7
7
|
"dependencies": {
|
|
8
8
|
"@date-io/moment": "^1.3.5",
|
|
9
9
|
"@react-google-maps/api": "2.7.0",
|
|
10
|
-
"@reltio/mdm-module": "^1.4.
|
|
11
|
-
"@reltio/mdm-sdk": "^1.4.
|
|
10
|
+
"@reltio/mdm-module": "^1.4.1430",
|
|
11
|
+
"@reltio/mdm-sdk": "^1.4.1430",
|
|
12
12
|
"classnames": "^2.2.5",
|
|
13
13
|
"d3-cloud": "^1.2.5",
|
|
14
14
|
"d3-geo": "^2.0.1",
|