@reltio/components 1.4.1173 → 1.4.1174

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.
Files changed (31) hide show
  1. package/cjs/components/ModeSwitcherSelect/styles.d.ts +1 -1
  2. package/cjs/components/activityLog/ActivityFilterEditor/ActivityFilterEditor.js +16 -32
  3. package/cjs/components/activityLog/ActivityFilterEditor/ActivitySelector.js +5 -2
  4. package/cjs/components/activityLog/ActivityFilterEditor/DateRangeSelector.js +1 -1
  5. package/cjs/components/activityLog/ActivityFilterEditor/EntityChangedSelectors.d.ts +10 -0
  6. package/cjs/components/activityLog/ActivityFilterEditor/EntityChangedSelectors.js +27 -0
  7. package/cjs/components/activityLog/ActivityFilterEditor/EntityTypesSelector.d.ts +9 -0
  8. package/cjs/components/activityLog/ActivityFilterEditor/EntityTypesSelector.js +29 -0
  9. package/cjs/components/activityLog/ActivityFilterEditor/SourceSelector.js +1 -1
  10. package/cjs/components/activityLog/ActivityFilterEditor/styles.d.ts +1 -1
  11. package/cjs/components/activityLog/ActivityFilterEditor/styles.js +18 -7
  12. package/cjs/components/activityLog/ActivityLogFilter/helpers.js +4 -3
  13. package/cjs/components/activityLog/ActivityLogFilter/styles.js +2 -1
  14. package/cjs/components/activityLog/types/ActivitiesFilter.d.ts +2 -1
  15. package/cjs/components/activityLog/utils/filters.js +4 -0
  16. package/esm/components/ModeSwitcherSelect/styles.d.ts +1 -1
  17. package/esm/components/activityLog/ActivityFilterEditor/ActivityFilterEditor.js +16 -32
  18. package/esm/components/activityLog/ActivityFilterEditor/ActivitySelector.js +5 -2
  19. package/esm/components/activityLog/ActivityFilterEditor/DateRangeSelector.js +1 -1
  20. package/esm/components/activityLog/ActivityFilterEditor/EntityChangedSelectors.d.ts +10 -0
  21. package/esm/components/activityLog/ActivityFilterEditor/EntityChangedSelectors.js +22 -0
  22. package/esm/components/activityLog/ActivityFilterEditor/EntityTypesSelector.d.ts +9 -0
  23. package/esm/components/activityLog/ActivityFilterEditor/EntityTypesSelector.js +24 -0
  24. package/esm/components/activityLog/ActivityFilterEditor/SourceSelector.js +1 -1
  25. package/esm/components/activityLog/ActivityFilterEditor/styles.d.ts +1 -1
  26. package/esm/components/activityLog/ActivityFilterEditor/styles.js +18 -7
  27. package/esm/components/activityLog/ActivityLogFilter/helpers.js +5 -4
  28. package/esm/components/activityLog/ActivityLogFilter/styles.js +2 -1
  29. package/esm/components/activityLog/types/ActivitiesFilter.d.ts +2 -1
  30. package/esm/components/activityLog/utils/filters.js +4 -0
  31. package/package.json +3 -3
@@ -1 +1 @@
1
- export declare const useStyles: (props?: any) => import("@material-ui/core/styles/withStyles").ClassNameMap<"root" | "outlined" | "menuItem" | "currentValue" | "arrowIcon" | "currentValueIcon" | "currentValueText" | "firstMenuItemButton" | "menuItemInner" | "menuItemIcon" | "menuItemLabel" | "menuItemDescription">;
1
+ export declare const useStyles: (props?: any) => import("@material-ui/core/styles/withStyles").ClassNameMap<"root" | "outlined" | "menuItem" | "arrowIcon" | "currentValue" | "currentValueIcon" | "currentValueText" | "firstMenuItemButton" | "menuItemInner" | "menuItemIcon" | "menuItemLabel" | "menuItemDescription">;
@@ -1,15 +1,4 @@
1
1
  "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
3
  if (k2 === undefined) k2 = k;
15
4
  Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
@@ -34,49 +23,44 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
34
23
  };
35
24
  Object.defineProperty(exports, "__esModule", { value: true });
36
25
  var react_1 = __importStar(require("react"));
26
+ var ramda_1 = require("ramda");
37
27
  var react_redux_1 = require("react-redux");
38
28
  var mdm_module_1 = __importDefault(require("@reltio/mdm-module"));
39
29
  var ui_i18n_1 = __importDefault(require("ui-i18n"));
40
- var classnames_1 = __importDefault(require("classnames"));
41
30
  var Button_1 = __importDefault(require("@material-ui/core/Button"));
31
+ var Divider_1 = __importDefault(require("@material-ui/core/Divider"));
42
32
  var types_1 = require("../types");
43
33
  var getSelectorActivityTypes_1 = require("./utils/getSelectorActivityTypes");
44
34
  var ActivitySelector_1 = __importDefault(require("./ActivitySelector"));
45
- var AttributeSelector_1 = __importDefault(require("../../AttributeSelector/AttributeSelector"));
46
- var SourceSelector_1 = __importDefault(require("./SourceSelector"));
47
35
  var UserSelector_1 = __importDefault(require("../../UserSelector/UserSelector"));
48
36
  var DateRangeSelector_1 = __importDefault(require("./DateRangeSelector"));
37
+ var EntityChangedSelectors_1 = __importDefault(require("./EntityChangedSelectors"));
49
38
  var hooks_1 = require("../../../hooks");
50
- var ramda_1 = require("ramda");
51
39
  var styles_1 = require("./styles");
52
40
  var ActivityFilterEditor = function (_a) {
53
41
  var value = _a.value, open = _a.open, entityType = _a.entityType, onApply = _a.onApply, onCancel = _a.onCancel, onClear = _a.onClear;
54
42
  var styles = styles_1.useStyles();
55
43
  var metadata = react_redux_1.useSelector(mdm_module_1.default.selectors.getMetadata);
56
- var _b = react_1.useState(value), currentValue = _b[0], setCurrentValue = _b[1];
57
- var clearCurrentValue = function () { return setCurrentValue(null); };
44
+ var _b = react_1.useState(value), currentFilter = _b[0], setCurrentFilter = _b[1];
45
+ var clearCurrentFilter = function () { return setCurrentFilter(null); };
58
46
  var handlePropChange = ramda_1.curry(function (propName, value) {
59
- setCurrentValue(function (filterValue) {
60
- var _a;
61
- return (__assign(__assign({}, filterValue), (_a = {}, _a[propName] = value, _a)));
62
- });
47
+ setCurrentFilter(ramda_1.pipe(ramda_1.when(ramda_1.always(propName === 'entityTypes'), ramda_1.assoc('attributes', [])), ramda_1.when(ramda_1.always(propName === 'activities'), ramda_1.mergeLeft({ attributes: [], entityTypes: [], sources: [] })), ramda_1.assoc(propName, value)));
63
48
  });
64
49
  hooks_1.useDidUpdateEffect(function () {
65
- setCurrentValue(value);
50
+ setCurrentFilter(value);
66
51
  }, [value]);
67
- var _c = currentValue || {}, _d = _c.activities, activities = _d === void 0 ? [] : _d, _e = _c.attributes, attributes = _e === void 0 ? [] : _e, _f = _c.sources, sources = _f === void 0 ? [] : _f, _g = _c.dateRange, dateRange = _g === void 0 ? null : _g, _h = _c.users, users = _h === void 0 ? [] : _h;
68
- var hasEntityChanged = activities.includes(types_1.ActivityTypes.ENTITY_CHANGED);
69
- var ActivityFilterRenderer = (react_1.default.createElement(react_1.default.Fragment, null,
52
+ var _c = currentFilter || {}, _d = _c.activities, activities = _d === void 0 ? [] : _d, _e = _c.dateRange, dateRange = _e === void 0 ? null : _e, _f = _c.users, users = _f === void 0 ? [] : _f;
53
+ var isEntityChangedActivity = activities.length === 1 && activities.includes(types_1.ActivityTypes.ENTITY_CHANGED);
54
+ return open ? (react_1.default.createElement("div", { className: styles.container },
70
55
  react_1.default.createElement(ActivitySelector_1.default, { activityTypes: getSelectorActivityTypes_1.getSelectorActivityTypes(metadata, entityType), selectedActivityTypes: activities, onChange: handlePropChange('activities') }),
71
- hasEntityChanged && entityType && (react_1.default.createElement(react_1.default.Fragment, null,
72
- react_1.default.createElement(AttributeSelector_1.default, { selectedAttributes: attributes, entityType: entityType, onChange: handlePropChange('attributes'), className: styles.borderBottom, disableUnderline: true }),
73
- react_1.default.createElement(SourceSelector_1.default, { selectedSources: sources, onChange: handlePropChange('sources') }))),
56
+ isEntityChangedActivity && (react_1.default.createElement(EntityChangedSelectors_1.default, { filter: currentFilter, entityType: entityType, onPropChange: handlePropChange })),
57
+ react_1.default.createElement(Divider_1.default, { light: true, className: styles.divider }),
74
58
  react_1.default.createElement(DateRangeSelector_1.default, { value: dateRange, onChange: handlePropChange('dateRange') }),
59
+ react_1.default.createElement(Divider_1.default, { light: true, className: styles.divider }),
75
60
  react_1.default.createElement(UserSelector_1.default, { selectedUsers: users, onChange: handlePropChange('users'), disableUnderline: true }),
76
- react_1.default.createElement("div", { className: classnames_1.default(styles.borderBottom, styles.filterControls) },
77
- react_1.default.createElement(Button_1.default, { onClick: ramda_1.pipe(clearCurrentValue, onClear), className: styles.clearButton }, ui_i18n_1.default.text('Clear all')),
61
+ react_1.default.createElement("div", { className: styles.filterControls },
62
+ react_1.default.createElement(Button_1.default, { onClick: ramda_1.pipe(clearCurrentFilter, onClear), className: styles.clearButton }, ui_i18n_1.default.text('Clear all')),
78
63
  react_1.default.createElement(Button_1.default, { onClick: onCancel }, ui_i18n_1.default.text('Cancel')),
79
- react_1.default.createElement(Button_1.default, { color: "primary", onClick: function () { return onApply(currentValue); } }, ui_i18n_1.default.text('Apply')))));
80
- return open && react_1.default.createElement("div", { className: styles.container }, ActivityFilterRenderer);
64
+ react_1.default.createElement(Button_1.default, { color: "primary", onClick: function () { return onApply(currentFilter); } }, ui_i18n_1.default.text('Apply'))))) : null;
81
65
  };
82
66
  exports.default = ActivityFilterEditor;
@@ -8,6 +8,7 @@ var ui_i18n_1 = __importDefault(require("ui-i18n"));
8
8
  var ramda_1 = require("ramda");
9
9
  var classnames_1 = __importDefault(require("classnames"));
10
10
  var Typography_1 = __importDefault(require("@material-ui/core/Typography"));
11
+ var ActivityTypes_1 = require("../types/ActivityTypes");
11
12
  var MultiSelect_1 = __importDefault(require("../../ReactSelect/MultiSelect"));
12
13
  var DropdownIndicatorWithIconButton_1 = __importDefault(require("../../commonReactSelectComponents/DropdownIndicatorWithIconButton"));
13
14
  var activities_1 = require("../utils/activities");
@@ -17,14 +18,16 @@ var ActivitySelector = function (_a) {
17
18
  var styles = styles_1.useStyles();
18
19
  var valueToOption = function (value) { return ({ value: value, label: activities_1.getActivityLabel(value) }); };
19
20
  var prepareValues = function (values) { return values.map(valueToOption); };
21
+ var showHint = selectedActivityTypes.length > 1 && selectedActivityTypes.includes(ActivityTypes_1.ActivityTypes.ENTITY_CHANGED);
20
22
  var options = ramda_1.pipe(ramda_1.sortBy(function (option) { return activities_1.getActivityLabel(option); }), prepareValues)(activityTypes);
21
- return (react_1.default.createElement("div", { className: styles.borderBottom },
23
+ return (react_1.default.createElement("div", { className: styles.selectorWrapper },
22
24
  react_1.default.createElement(Typography_1.default, { className: classnames_1.default(styles.filterSubtitle, styles.labels), variant: 'subtitle1' }, ui_i18n_1.default.text('Activity')),
23
25
  react_1.default.createElement(MultiSelect_1.default, { value: prepareValues(selectedActivityTypes), onChange: ramda_1.pipe(ramda_1.defaultTo([]), ramda_1.pluck('value'), onChange), options: options, TextFieldProps: {
24
26
  InputProps: { disableUnderline: true },
25
27
  classes: { root: styles.dropDownInput }
26
28
  }, components: {
27
29
  DropdownIndicator: DropdownIndicatorWithIconButton_1.default
28
- }, styles: styles_1.customStyles, classes: styles, menuPlacement: "bottom" })));
30
+ }, styles: styles_1.customStyles, classes: styles, menuPlacement: "bottom" }),
31
+ showHint && (react_1.default.createElement("span", { className: styles.selectorHint }, ui_i18n_1.default.text('One at a time! Select a single Activity and any of its filters -OR- multiple Activities with no filters.')))));
29
32
  };
30
33
  exports.default = ActivitySelector;
@@ -103,7 +103,7 @@ var DateRangeSelector = function (_a) {
103
103
  setAgoInterval(emptyInterval);
104
104
  }
105
105
  }, [value]);
106
- return (react_1.default.createElement("div", { className: styles.borderBottom },
106
+ return (react_1.default.createElement("div", { className: styles.selectorWrapper },
107
107
  react_1.default.createElement(Typography_1.default, { className: classnames_1.default(styles.filterSubtitle, styles.labels), variant: 'subtitle1' }, ui_i18n_1.default.text('Date')),
108
108
  react_1.default.createElement(RadioGroup_1.default, { value: (value === null || value === void 0 ? void 0 : value.type) || null, onChange: ramda_1.pipe(utils_1.getValue, changeType) },
109
109
  react_1.default.createElement("div", { className: styles.dateOptionWithin },
@@ -0,0 +1,10 @@
1
+ /// <reference types="react" />
2
+ import { TEntityType } from '@reltio/mdm-sdk';
3
+ import { ActivitiesFilter } from '../types';
4
+ declare type Props = {
5
+ filter: ActivitiesFilter;
6
+ entityType?: TEntityType;
7
+ onPropChange: (propName: string) => (value: unknown) => void;
8
+ };
9
+ declare const EntityChangedSelectors: ({ filter, entityType, onPropChange }: Props) => JSX.Element;
10
+ export default EntityChangedSelectors;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ var react_1 = __importDefault(require("react"));
7
+ var ramda_1 = require("ramda");
8
+ var react_redux_1 = require("react-redux");
9
+ var mdm_module_1 = __importDefault(require("@reltio/mdm-module"));
10
+ var mdm_sdk_1 = require("@reltio/mdm-sdk");
11
+ var AttributeSelector_1 = __importDefault(require("../../AttributeSelector/AttributeSelector"));
12
+ var EntityTypesSelector_1 = __importDefault(require("./EntityTypesSelector"));
13
+ var SourceSelector_1 = __importDefault(require("./SourceSelector"));
14
+ var styles_1 = require("./styles");
15
+ var EntityChangedSelectors = function (_a) {
16
+ var filter = _a.filter, entityType = _a.entityType, onPropChange = _a.onPropChange;
17
+ var styles = styles_1.useStyles();
18
+ var metadata = react_redux_1.useSelector(mdm_module_1.default.selectors.getMetadata);
19
+ var _b = filter || {}, _c = _b.attributes, attributes = _c === void 0 ? [] : _c, _d = _b.sources, sources = _d === void 0 ? [] : _d, _e = _b.entityTypes, entityTypes = _e === void 0 ? [] : _e;
20
+ var closestEntityTypeAncestor = mdm_sdk_1.findClosestCommonAncestor(metadata, ramda_1.map(ramda_1.prop('uri'), entityTypes));
21
+ var attributesEntityType = entityType || mdm_sdk_1.getEntityType(metadata, closestEntityTypeAncestor);
22
+ return (react_1.default.createElement("div", { className: styles.selectorsGroup },
23
+ !entityType && (react_1.default.createElement(EntityTypesSelector_1.default, { entityTypes: metadata.entityTypes, selectedEntityTypes: entityTypes, onChange: onPropChange('entityTypes') })),
24
+ react_1.default.createElement(AttributeSelector_1.default, { selectedAttributes: attributes, entityType: attributesEntityType, onChange: onPropChange('attributes'), className: styles.selectorWrapper, disableUnderline: true }),
25
+ react_1.default.createElement(SourceSelector_1.default, { selectedSources: sources, onChange: onPropChange('sources') })));
26
+ };
27
+ exports.default = EntityChangedSelectors;
@@ -0,0 +1,9 @@
1
+ /// <reference types="react" />
2
+ import { TEntityType } from '@reltio/mdm-sdk';
3
+ declare type Props = {
4
+ entityTypes: TEntityType[];
5
+ selectedEntityTypes: TEntityType[];
6
+ onChange: (entityTypes: TEntityType[]) => void;
7
+ };
8
+ declare const EntityTypesSelector: ({ entityTypes, selectedEntityTypes, onChange }: Props) => JSX.Element;
9
+ export default EntityTypesSelector;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ var react_1 = __importDefault(require("react"));
7
+ var ui_i18n_1 = __importDefault(require("ui-i18n"));
8
+ var ramda_1 = require("ramda");
9
+ var classnames_1 = __importDefault(require("classnames"));
10
+ var Typography_1 = __importDefault(require("@material-ui/core/Typography"));
11
+ var MultiSelect_1 = __importDefault(require("../../ReactSelect/MultiSelect"));
12
+ var DropdownIndicatorWithIconButton_1 = __importDefault(require("../../commonReactSelectComponents/DropdownIndicatorWithIconButton"));
13
+ var styles_1 = require("./styles");
14
+ var EntityTypesSelector = function (_a) {
15
+ var entityTypes = _a.entityTypes, selectedEntityTypes = _a.selectedEntityTypes, onChange = _a.onChange;
16
+ var styles = styles_1.useStyles();
17
+ var valueToOption = function (entityType) { return ({ value: entityType.uri, label: entityType.label, entityType: entityType }); };
18
+ var prepareValues = function (values) { return values.map(valueToOption); };
19
+ var options = ramda_1.pipe(ramda_1.sortBy(function (option) { return option.label; }), prepareValues)(entityTypes);
20
+ return (react_1.default.createElement("div", { className: styles.selectorWrapper },
21
+ react_1.default.createElement(Typography_1.default, { className: classnames_1.default(styles.filterSubtitle, styles.labels), variant: 'subtitle1' }, ui_i18n_1.default.text('Type')),
22
+ react_1.default.createElement(MultiSelect_1.default, { value: prepareValues(selectedEntityTypes), onChange: ramda_1.pipe(ramda_1.defaultTo([]), ramda_1.pluck('entityType'), onChange), options: options, TextFieldProps: {
23
+ InputProps: { disableUnderline: true },
24
+ classes: { root: styles.dropDownInput }
25
+ }, components: {
26
+ DropdownIndicator: DropdownIndicatorWithIconButton_1.default
27
+ }, styles: styles_1.customStyles, classes: styles, menuPlacement: "bottom" })));
28
+ };
29
+ exports.default = EntityTypesSelector;
@@ -18,7 +18,7 @@ var SourceSelector = function (_a) {
18
18
  var styles = styles_1.useStyles();
19
19
  var metadata = react_redux_1.useSelector(mdm_module_1.default.selectors.getMetadata);
20
20
  var options = ramda_1.sortBy(function (option) { return option.label; })(metadata.sources);
21
- return (react_1.default.createElement("div", { className: styles.borderBottom },
21
+ return (react_1.default.createElement("div", { className: styles.selectorWrapper },
22
22
  react_1.default.createElement(Typography_1.default, { className: classnames_1.default(styles.filterSubtitle, styles.labels), variant: 'subtitle1' }, ui_i18n_1.default.text('Source')),
23
23
  react_1.default.createElement(MultiSelect_1.default, { value: selectedSources, onChange: ramda_1.pipe(ramda_1.defaultTo([]), onChange), options: options, TextFieldProps: {
24
24
  InputProps: { disableUnderline: true },
@@ -1,4 +1,4 @@
1
1
  export declare const customStyles: {
2
2
  input: (currentStyles: any) => any;
3
3
  };
4
- export declare const useStyles: (props?: any) => import("@material-ui/core/styles/withStyles").ClassNameMap<"option" | "labels" | "borderBottom" | "container" | "filterSubtitle" | "agoLabel" | "dateOption" | "dateOptionAgo" | "dateOptionWithin" | "dateOptionLabel" | "dropDownInput" | "filterControls" | "clearButton">;
4
+ export declare const useStyles: (props?: any) => import("@material-ui/core/styles/withStyles").ClassNameMap<"option" | "labels" | "container" | "divider" | "filterSubtitle" | "agoLabel" | "dateOption" | "dateOptionAgo" | "dateOptionWithin" | "dateOptionLabel" | "dropDownInput" | "filterControls" | "clearButton" | "selectorWrapper" | "selectorsGroup" | "selectorHint">;
@@ -18,8 +18,8 @@ exports.customStyles = {
18
18
  };
19
19
  exports.useStyles = styles_1.makeStyles({
20
20
  container: {
21
- padding: '24px 10px 0px',
22
- margin: '0 6px'
21
+ padding: '12px 7px 0px',
22
+ borderBottom: 'solid 1px rgba(0, 0, 0, 0.12)'
23
23
  },
24
24
  labels: {
25
25
  fontSize: '14px'
@@ -57,18 +57,29 @@ exports.useStyles = styles_1.makeStyles({
57
57
  },
58
58
  filterControls: {
59
59
  display: 'flex',
60
- paddingTop: '30px'
60
+ paddingTop: '30px',
61
+ marginBottom: 8
61
62
  },
62
63
  clearButton: {
63
64
  marginRight: 'auto'
64
65
  },
65
- borderBottom: {
66
- borderBottom: 'solid 1px rgba(0, 0, 0, 0.12)',
67
- paddingBottom: '10px',
68
- marginBottom: '15px'
66
+ selectorWrapper: {
67
+ marginBottom: '12px'
69
68
  },
70
69
  option: {
71
70
  fontSize: '14px',
72
71
  height: '32px'
72
+ },
73
+ selectorsGroup: {
74
+ display: 'flex',
75
+ flexDirection: 'column'
76
+ },
77
+ selectorHint: {
78
+ fontSize: 12,
79
+ lineHeight: '16px',
80
+ color: 'rgba(0,0,0,0.54)'
81
+ },
82
+ divider: {
83
+ marginBottom: 12
73
84
  }
74
85
  });
@@ -17,8 +17,9 @@ var getFilterLabel = function (filters) {
17
17
  });
18
18
  var activityLabel = ramda_1.pipe(ramda_1.map(activities_1.getActivityLabel), getLabel(ui_i18n_1.default.text('activity'), ui_i18n_1.default.text('activities')))(filters.activities);
19
19
  var userLabel = getLabel(ui_i18n_1.default.text('user'), ui_i18n_1.default.text('users'), filters.users);
20
- var attributesLabel = ramda_1.pipe(ramda_1.defaultTo([]), ramda_1.map(function (attribute) { return attribute.label; }), ramda_1.sortBy(ramda_1.identity), getLabel(ui_i18n_1.default.text('attribute'), ui_i18n_1.default.text('attributes')))(filters.attributes);
21
- var sourcesLabel = ramda_1.pipe(ramda_1.defaultTo([]), ramda_1.map(function (source) { return source.label; }), getLabel(ui_i18n_1.default.text('source'), ui_i18n_1.default.text('sources')))(filters.sources);
20
+ var entityTypesLabel = ramda_1.pipe(ramda_1.defaultTo([]), ramda_1.pluck('label'), ramda_1.sortBy(ramda_1.identity), getLabel(ui_i18n_1.default.text('type'), ui_i18n_1.default.text('types')))(filters.entityTypes);
21
+ var attributesLabel = ramda_1.pipe(ramda_1.defaultTo([]), ramda_1.pluck('label'), ramda_1.sortBy(ramda_1.identity), getLabel(ui_i18n_1.default.text('attribute'), ui_i18n_1.default.text('attributes')))(filters.attributes);
22
+ var sourcesLabel = ramda_1.pipe(ramda_1.defaultTo([]), ramda_1.pluck('label'), getLabel(ui_i18n_1.default.text('source'), ui_i18n_1.default.text('sources')))(filters.sources);
22
23
  var getDateLabel = function (date) {
23
24
  var formatDateValue = function (value) {
24
25
  return "" + mdm_sdk_1.formatDataTypeValue({ dataTypeDefinition: { type: mdm_sdk_1.DataTypes.TYPE_ACTIVENESS_DATE } }, value);
@@ -37,6 +38,6 @@ var getFilterLabel = function (filters) {
37
38
  return null;
38
39
  }
39
40
  };
40
- return ramda_1.pipe(ramda_1.reject(ramda_1.isNil), ramda_1.join(' | '))([activityLabel, attributesLabel, sourcesLabel, getDateLabel(filters.dateRange), userLabel]);
41
+ return ramda_1.pipe(ramda_1.reject(ramda_1.isNil), ramda_1.join(' | '))([activityLabel, entityTypesLabel, attributesLabel, sourcesLabel, getDateLabel(filters.dateRange), userLabel]);
41
42
  };
42
43
  exports.getFilterLabel = getFilterLabel;
@@ -16,6 +16,7 @@ exports.useStyles = styles_1.makeStyles(function () { return ({
16
16
  margin: '4px'
17
17
  },
18
18
  buttonsWrapper: {
19
- marginLeft: 'auto'
19
+ marginLeft: 'auto',
20
+ display: 'flex'
20
21
  }
21
22
  }); });
@@ -1,4 +1,4 @@
1
- import { Source } from '@reltio/mdm-sdk';
1
+ import { Source, TEntityType } from '@reltio/mdm-sdk';
2
2
  import { ActivityTypes } from './ActivityTypes';
3
3
  import { AttributeOption, DateRangeFilter } from '../../../types';
4
4
  export declare type ActivitiesFilter = {
@@ -7,5 +7,6 @@ export declare type ActivitiesFilter = {
7
7
  dateRange: DateRangeFilter;
8
8
  attributes?: AttributeOption[];
9
9
  sources?: Source[];
10
+ entityTypes?: TEntityType[];
10
11
  entityUri?: string;
11
12
  };
@@ -22,6 +22,9 @@ var buildActivityFilterClause = function (activityType) {
22
22
  var buildSourceFilterClause = function (source) {
23
23
  return "equals(items.delta.sources, '" + source.abbreviation + "')";
24
24
  };
25
+ var buildEntityTypeFilterClause = function (entityType) {
26
+ return "equals(items.objectType, '" + entityType.uri + "')";
27
+ };
25
28
  var buildAttributeFilterClause = function (attribute) {
26
29
  return "equals(items.delta.attributeType, '" + attribute.value + "')";
27
30
  };
@@ -60,6 +63,7 @@ var getFilterClauseBuilder = ramda_1.cond([
60
63
  [ramda_1.equals('activities'), function () { return multiValueFilter(buildActivityFilterClause); }],
61
64
  [ramda_1.equals('sources'), function () { return multiValueFilter(buildSourceFilterClause); }],
62
65
  [ramda_1.equals('attributes'), function () { return multiValueFilter(buildAttributeFilterClause); }],
66
+ [ramda_1.equals('entityTypes'), function () { return multiValueFilter(buildEntityTypeFilterClause); }],
63
67
  [ramda_1.equals('dateRange'), function () { return buildDateRangeFilterClause; }],
64
68
  [ramda_1.equals('entityUri'), function () { return buildEntityUriFilterClause; }]
65
69
  ]);
@@ -1 +1 @@
1
- export declare const useStyles: (props?: any) => import("@material-ui/core/styles/withStyles").ClassNameMap<"root" | "outlined" | "menuItem" | "currentValue" | "arrowIcon" | "currentValueIcon" | "currentValueText" | "firstMenuItemButton" | "menuItemInner" | "menuItemIcon" | "menuItemLabel" | "menuItemDescription">;
1
+ export declare const useStyles: (props?: any) => import("@material-ui/core/styles/withStyles").ClassNameMap<"root" | "outlined" | "menuItem" | "arrowIcon" | "currentValue" | "currentValueIcon" | "currentValueText" | "firstMenuItemButton" | "menuItemInner" | "menuItemIcon" | "menuItemLabel" | "menuItemDescription">;
@@ -1,58 +1,42 @@
1
- var __assign = (this && this.__assign) || function () {
2
- __assign = Object.assign || function(t) {
3
- for (var s, i = 1, n = arguments.length; i < n; i++) {
4
- s = arguments[i];
5
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
- t[p] = s[p];
7
- }
8
- return t;
9
- };
10
- return __assign.apply(this, arguments);
11
- };
12
1
  import React, { useState } from 'react';
2
+ import { curry, pipe, assoc, when, mergeLeft, always } from 'ramda';
13
3
  import { useSelector } from 'react-redux';
14
4
  import mdmModule from '@reltio/mdm-module';
15
5
  import i18n from 'ui-i18n';
16
- import classnames from 'classnames';
17
6
  import Button from '@material-ui/core/Button';
7
+ import Divider from '@material-ui/core/Divider';
18
8
  import { ActivityTypes } from '../types';
19
9
  import { getSelectorActivityTypes } from './utils/getSelectorActivityTypes';
20
10
  import ActivitySelector from './ActivitySelector';
21
- import AttributeSelector from '../../AttributeSelector/AttributeSelector';
22
- import SourceSelector from './SourceSelector';
23
11
  import UserSelector from '../../UserSelector/UserSelector';
24
12
  import DateRangeSelector from './DateRangeSelector';
13
+ import EntityChangedSelectors from './EntityChangedSelectors';
25
14
  import { useDidUpdateEffect } from '../../../hooks';
26
- import { curry, pipe } from 'ramda';
27
15
  import { useStyles } from './styles';
28
16
  var ActivityFilterEditor = function (_a) {
29
17
  var value = _a.value, open = _a.open, entityType = _a.entityType, onApply = _a.onApply, onCancel = _a.onCancel, onClear = _a.onClear;
30
18
  var styles = useStyles();
31
19
  var metadata = useSelector(mdmModule.selectors.getMetadata);
32
- var _b = useState(value), currentValue = _b[0], setCurrentValue = _b[1];
33
- var clearCurrentValue = function () { return setCurrentValue(null); };
20
+ var _b = useState(value), currentFilter = _b[0], setCurrentFilter = _b[1];
21
+ var clearCurrentFilter = function () { return setCurrentFilter(null); };
34
22
  var handlePropChange = curry(function (propName, value) {
35
- setCurrentValue(function (filterValue) {
36
- var _a;
37
- return (__assign(__assign({}, filterValue), (_a = {}, _a[propName] = value, _a)));
38
- });
23
+ setCurrentFilter(pipe(when(always(propName === 'entityTypes'), assoc('attributes', [])), when(always(propName === 'activities'), mergeLeft({ attributes: [], entityTypes: [], sources: [] })), assoc(propName, value)));
39
24
  });
40
25
  useDidUpdateEffect(function () {
41
- setCurrentValue(value);
26
+ setCurrentFilter(value);
42
27
  }, [value]);
43
- var _c = currentValue || {}, _d = _c.activities, activities = _d === void 0 ? [] : _d, _e = _c.attributes, attributes = _e === void 0 ? [] : _e, _f = _c.sources, sources = _f === void 0 ? [] : _f, _g = _c.dateRange, dateRange = _g === void 0 ? null : _g, _h = _c.users, users = _h === void 0 ? [] : _h;
44
- var hasEntityChanged = activities.includes(ActivityTypes.ENTITY_CHANGED);
45
- var ActivityFilterRenderer = (React.createElement(React.Fragment, null,
28
+ var _c = currentFilter || {}, _d = _c.activities, activities = _d === void 0 ? [] : _d, _e = _c.dateRange, dateRange = _e === void 0 ? null : _e, _f = _c.users, users = _f === void 0 ? [] : _f;
29
+ var isEntityChangedActivity = activities.length === 1 && activities.includes(ActivityTypes.ENTITY_CHANGED);
30
+ return open ? (React.createElement("div", { className: styles.container },
46
31
  React.createElement(ActivitySelector, { activityTypes: getSelectorActivityTypes(metadata, entityType), selectedActivityTypes: activities, onChange: handlePropChange('activities') }),
47
- hasEntityChanged && entityType && (React.createElement(React.Fragment, null,
48
- React.createElement(AttributeSelector, { selectedAttributes: attributes, entityType: entityType, onChange: handlePropChange('attributes'), className: styles.borderBottom, disableUnderline: true }),
49
- React.createElement(SourceSelector, { selectedSources: sources, onChange: handlePropChange('sources') }))),
32
+ isEntityChangedActivity && (React.createElement(EntityChangedSelectors, { filter: currentFilter, entityType: entityType, onPropChange: handlePropChange })),
33
+ React.createElement(Divider, { light: true, className: styles.divider }),
50
34
  React.createElement(DateRangeSelector, { value: dateRange, onChange: handlePropChange('dateRange') }),
35
+ React.createElement(Divider, { light: true, className: styles.divider }),
51
36
  React.createElement(UserSelector, { selectedUsers: users, onChange: handlePropChange('users'), disableUnderline: true }),
52
- React.createElement("div", { className: classnames(styles.borderBottom, styles.filterControls) },
53
- React.createElement(Button, { onClick: pipe(clearCurrentValue, onClear), className: styles.clearButton }, i18n.text('Clear all')),
37
+ React.createElement("div", { className: styles.filterControls },
38
+ React.createElement(Button, { onClick: pipe(clearCurrentFilter, onClear), className: styles.clearButton }, i18n.text('Clear all')),
54
39
  React.createElement(Button, { onClick: onCancel }, i18n.text('Cancel')),
55
- React.createElement(Button, { color: "primary", onClick: function () { return onApply(currentValue); } }, i18n.text('Apply')))));
56
- return open && React.createElement("div", { className: styles.container }, ActivityFilterRenderer);
40
+ React.createElement(Button, { color: "primary", onClick: function () { return onApply(currentFilter); } }, i18n.text('Apply'))))) : null;
57
41
  };
58
42
  export default ActivityFilterEditor;
@@ -3,6 +3,7 @@ import i18n from 'ui-i18n';
3
3
  import { defaultTo, pipe, pluck, sortBy } from 'ramda';
4
4
  import classnames from 'classnames';
5
5
  import Typography from '@material-ui/core/Typography';
6
+ import { ActivityTypes } from '../types/ActivityTypes';
6
7
  import MultiSelect from '../../ReactSelect/MultiSelect';
7
8
  import DropdownIndicatorWithIconButton from '../../commonReactSelectComponents/DropdownIndicatorWithIconButton';
8
9
  import { getActivityLabel } from '../utils/activities';
@@ -12,14 +13,16 @@ var ActivitySelector = function (_a) {
12
13
  var styles = useStyles();
13
14
  var valueToOption = function (value) { return ({ value: value, label: getActivityLabel(value) }); };
14
15
  var prepareValues = function (values) { return values.map(valueToOption); };
16
+ var showHint = selectedActivityTypes.length > 1 && selectedActivityTypes.includes(ActivityTypes.ENTITY_CHANGED);
15
17
  var options = pipe(sortBy(function (option) { return getActivityLabel(option); }), prepareValues)(activityTypes);
16
- return (React.createElement("div", { className: styles.borderBottom },
18
+ return (React.createElement("div", { className: styles.selectorWrapper },
17
19
  React.createElement(Typography, { className: classnames(styles.filterSubtitle, styles.labels), variant: 'subtitle1' }, i18n.text('Activity')),
18
20
  React.createElement(MultiSelect, { value: prepareValues(selectedActivityTypes), onChange: pipe(defaultTo([]), pluck('value'), onChange), options: options, TextFieldProps: {
19
21
  InputProps: { disableUnderline: true },
20
22
  classes: { root: styles.dropDownInput }
21
23
  }, components: {
22
24
  DropdownIndicator: DropdownIndicatorWithIconButton
23
- }, styles: customStyles, classes: styles, menuPlacement: "bottom" })));
25
+ }, styles: customStyles, classes: styles, menuPlacement: "bottom" }),
26
+ showHint && (React.createElement("span", { className: styles.selectorHint }, i18n.text('One at a time! Select a single Activity and any of its filters -OR- multiple Activities with no filters.')))));
24
27
  };
25
28
  export default ActivitySelector;
@@ -79,7 +79,7 @@ var DateRangeSelector = function (_a) {
79
79
  setAgoInterval(emptyInterval);
80
80
  }
81
81
  }, [value]);
82
- return (React.createElement("div", { className: styles.borderBottom },
82
+ return (React.createElement("div", { className: styles.selectorWrapper },
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 },
@@ -0,0 +1,10 @@
1
+ /// <reference types="react" />
2
+ import { TEntityType } from '@reltio/mdm-sdk';
3
+ import { ActivitiesFilter } from '../types';
4
+ declare type Props = {
5
+ filter: ActivitiesFilter;
6
+ entityType?: TEntityType;
7
+ onPropChange: (propName: string) => (value: unknown) => void;
8
+ };
9
+ declare const EntityChangedSelectors: ({ filter, entityType, onPropChange }: Props) => JSX.Element;
10
+ export default EntityChangedSelectors;
@@ -0,0 +1,22 @@
1
+ import React from 'react';
2
+ import { map, prop } from 'ramda';
3
+ import { useSelector } from 'react-redux';
4
+ import mdmModule from '@reltio/mdm-module';
5
+ import { findClosestCommonAncestor, getEntityType } from '@reltio/mdm-sdk';
6
+ import AttributeSelector from '../../AttributeSelector/AttributeSelector';
7
+ import EntityTypesSelector from './EntityTypesSelector';
8
+ import SourceSelector from './SourceSelector';
9
+ import { useStyles } from './styles';
10
+ var EntityChangedSelectors = function (_a) {
11
+ var filter = _a.filter, entityType = _a.entityType, onPropChange = _a.onPropChange;
12
+ var styles = useStyles();
13
+ var metadata = useSelector(mdmModule.selectors.getMetadata);
14
+ var _b = filter || {}, _c = _b.attributes, attributes = _c === void 0 ? [] : _c, _d = _b.sources, sources = _d === void 0 ? [] : _d, _e = _b.entityTypes, entityTypes = _e === void 0 ? [] : _e;
15
+ var closestEntityTypeAncestor = findClosestCommonAncestor(metadata, map(prop('uri'), entityTypes));
16
+ var attributesEntityType = entityType || getEntityType(metadata, closestEntityTypeAncestor);
17
+ return (React.createElement("div", { className: styles.selectorsGroup },
18
+ !entityType && (React.createElement(EntityTypesSelector, { entityTypes: metadata.entityTypes, selectedEntityTypes: entityTypes, onChange: onPropChange('entityTypes') })),
19
+ React.createElement(AttributeSelector, { selectedAttributes: attributes, entityType: attributesEntityType, onChange: onPropChange('attributes'), className: styles.selectorWrapper, disableUnderline: true }),
20
+ React.createElement(SourceSelector, { selectedSources: sources, onChange: onPropChange('sources') })));
21
+ };
22
+ export default EntityChangedSelectors;
@@ -0,0 +1,9 @@
1
+ /// <reference types="react" />
2
+ import { TEntityType } from '@reltio/mdm-sdk';
3
+ declare type Props = {
4
+ entityTypes: TEntityType[];
5
+ selectedEntityTypes: TEntityType[];
6
+ onChange: (entityTypes: TEntityType[]) => void;
7
+ };
8
+ declare const EntityTypesSelector: ({ entityTypes, selectedEntityTypes, onChange }: Props) => JSX.Element;
9
+ export default EntityTypesSelector;
@@ -0,0 +1,24 @@
1
+ import React from 'react';
2
+ import i18n from 'ui-i18n';
3
+ import { defaultTo, pipe, pluck, sortBy } from 'ramda';
4
+ import classnames from 'classnames';
5
+ import Typography from '@material-ui/core/Typography';
6
+ import MultiSelect from '../../ReactSelect/MultiSelect';
7
+ import DropdownIndicatorWithIconButton from '../../commonReactSelectComponents/DropdownIndicatorWithIconButton';
8
+ import { customStyles, useStyles } from './styles';
9
+ var EntityTypesSelector = function (_a) {
10
+ var entityTypes = _a.entityTypes, selectedEntityTypes = _a.selectedEntityTypes, onChange = _a.onChange;
11
+ var styles = useStyles();
12
+ var valueToOption = function (entityType) { return ({ value: entityType.uri, label: entityType.label, entityType: entityType }); };
13
+ var prepareValues = function (values) { return values.map(valueToOption); };
14
+ var options = pipe(sortBy(function (option) { return option.label; }), prepareValues)(entityTypes);
15
+ return (React.createElement("div", { className: styles.selectorWrapper },
16
+ React.createElement(Typography, { className: classnames(styles.filterSubtitle, styles.labels), variant: 'subtitle1' }, i18n.text('Type')),
17
+ React.createElement(MultiSelect, { value: prepareValues(selectedEntityTypes), onChange: pipe(defaultTo([]), pluck('entityType'), onChange), options: options, TextFieldProps: {
18
+ InputProps: { disableUnderline: true },
19
+ classes: { root: styles.dropDownInput }
20
+ }, components: {
21
+ DropdownIndicator: DropdownIndicatorWithIconButton
22
+ }, styles: customStyles, classes: styles, menuPlacement: "bottom" })));
23
+ };
24
+ export default EntityTypesSelector;
@@ -13,7 +13,7 @@ var SourceSelector = function (_a) {
13
13
  var styles = useStyles();
14
14
  var metadata = useSelector(mdmModule.selectors.getMetadata);
15
15
  var options = sortBy(function (option) { return option.label; })(metadata.sources);
16
- return (React.createElement("div", { className: styles.borderBottom },
16
+ return (React.createElement("div", { className: styles.selectorWrapper },
17
17
  React.createElement(Typography, { className: classnames(styles.filterSubtitle, styles.labels), variant: 'subtitle1' }, i18n.text('Source')),
18
18
  React.createElement(MultiSelect, { value: selectedSources, onChange: pipe(defaultTo([]), onChange), options: options, TextFieldProps: {
19
19
  InputProps: { disableUnderline: true },
@@ -1,4 +1,4 @@
1
1
  export declare const customStyles: {
2
2
  input: (currentStyles: any) => any;
3
3
  };
4
- export declare const useStyles: (props?: any) => import("@material-ui/core/styles/withStyles").ClassNameMap<"option" | "labels" | "borderBottom" | "container" | "filterSubtitle" | "agoLabel" | "dateOption" | "dateOptionAgo" | "dateOptionWithin" | "dateOptionLabel" | "dropDownInput" | "filterControls" | "clearButton">;
4
+ export declare const useStyles: (props?: any) => import("@material-ui/core/styles/withStyles").ClassNameMap<"option" | "labels" | "container" | "divider" | "filterSubtitle" | "agoLabel" | "dateOption" | "dateOptionAgo" | "dateOptionWithin" | "dateOptionLabel" | "dropDownInput" | "filterControls" | "clearButton" | "selectorWrapper" | "selectorsGroup" | "selectorHint">;
@@ -15,8 +15,8 @@ export var customStyles = {
15
15
  };
16
16
  export var useStyles = makeStyles({
17
17
  container: {
18
- padding: '24px 10px 0px',
19
- margin: '0 6px'
18
+ padding: '12px 7px 0px',
19
+ borderBottom: 'solid 1px rgba(0, 0, 0, 0.12)'
20
20
  },
21
21
  labels: {
22
22
  fontSize: '14px'
@@ -54,18 +54,29 @@ export var useStyles = makeStyles({
54
54
  },
55
55
  filterControls: {
56
56
  display: 'flex',
57
- paddingTop: '30px'
57
+ paddingTop: '30px',
58
+ marginBottom: 8
58
59
  },
59
60
  clearButton: {
60
61
  marginRight: 'auto'
61
62
  },
62
- borderBottom: {
63
- borderBottom: 'solid 1px rgba(0, 0, 0, 0.12)',
64
- paddingBottom: '10px',
65
- marginBottom: '15px'
63
+ selectorWrapper: {
64
+ marginBottom: '12px'
66
65
  },
67
66
  option: {
68
67
  fontSize: '14px',
69
68
  height: '32px'
69
+ },
70
+ selectorsGroup: {
71
+ display: 'flex',
72
+ flexDirection: 'column'
73
+ },
74
+ selectorHint: {
75
+ fontSize: 12,
76
+ lineHeight: '16px',
77
+ color: 'rgba(0,0,0,0.54)'
78
+ },
79
+ divider: {
80
+ marginBottom: 12
70
81
  }
71
82
  });
@@ -1,5 +1,5 @@
1
1
  import i18n from 'ui-i18n';
2
- import { curry, join, identity, isNil, map, pipe, reject, sortBy, defaultTo } from 'ramda';
2
+ import { curry, join, identity, isNil, map, pipe, reject, sortBy, defaultTo, pluck } from 'ramda';
3
3
  import { DataTypes, formatDataTypeValue } from '@reltio/mdm-sdk';
4
4
  import { DateRangeTypes } from '../../../types';
5
5
  import { getActivityLabel } from '../utils/activities';
@@ -11,8 +11,9 @@ export var getFilterLabel = function (filters) {
11
11
  });
12
12
  var activityLabel = pipe(map(getActivityLabel), getLabel(i18n.text('activity'), i18n.text('activities')))(filters.activities);
13
13
  var userLabel = getLabel(i18n.text('user'), i18n.text('users'), filters.users);
14
- var attributesLabel = pipe(defaultTo([]), map(function (attribute) { return attribute.label; }), sortBy(identity), getLabel(i18n.text('attribute'), i18n.text('attributes')))(filters.attributes);
15
- var sourcesLabel = pipe(defaultTo([]), map(function (source) { return source.label; }), getLabel(i18n.text('source'), i18n.text('sources')))(filters.sources);
14
+ var entityTypesLabel = pipe(defaultTo([]), pluck('label'), sortBy(identity), getLabel(i18n.text('type'), i18n.text('types')))(filters.entityTypes);
15
+ var attributesLabel = pipe(defaultTo([]), pluck('label'), sortBy(identity), getLabel(i18n.text('attribute'), i18n.text('attributes')))(filters.attributes);
16
+ var sourcesLabel = pipe(defaultTo([]), pluck('label'), getLabel(i18n.text('source'), i18n.text('sources')))(filters.sources);
16
17
  var getDateLabel = function (date) {
17
18
  var formatDateValue = function (value) {
18
19
  return "" + formatDataTypeValue({ dataTypeDefinition: { type: DataTypes.TYPE_ACTIVENESS_DATE } }, value);
@@ -31,5 +32,5 @@ export var getFilterLabel = function (filters) {
31
32
  return null;
32
33
  }
33
34
  };
34
- return pipe(reject(isNil), join(' | '))([activityLabel, attributesLabel, sourcesLabel, getDateLabel(filters.dateRange), userLabel]);
35
+ return pipe(reject(isNil), join(' | '))([activityLabel, entityTypesLabel, attributesLabel, sourcesLabel, getDateLabel(filters.dateRange), userLabel]);
35
36
  };
@@ -13,6 +13,7 @@ export var useStyles = makeStyles(function () { return ({
13
13
  margin: '4px'
14
14
  },
15
15
  buttonsWrapper: {
16
- marginLeft: 'auto'
16
+ marginLeft: 'auto',
17
+ display: 'flex'
17
18
  }
18
19
  }); });
@@ -1,4 +1,4 @@
1
- import { Source } from '@reltio/mdm-sdk';
1
+ import { Source, TEntityType } from '@reltio/mdm-sdk';
2
2
  import { ActivityTypes } from './ActivityTypes';
3
3
  import { AttributeOption, DateRangeFilter } from '../../../types';
4
4
  export declare type ActivitiesFilter = {
@@ -7,5 +7,6 @@ export declare type ActivitiesFilter = {
7
7
  dateRange: DateRangeFilter;
8
8
  attributes?: AttributeOption[];
9
9
  sources?: Source[];
10
+ entityTypes?: TEntityType[];
10
11
  entityUri?: string;
11
12
  };
@@ -16,6 +16,9 @@ var buildActivityFilterClause = function (activityType) {
16
16
  var buildSourceFilterClause = function (source) {
17
17
  return "equals(items.delta.sources, '" + source.abbreviation + "')";
18
18
  };
19
+ var buildEntityTypeFilterClause = function (entityType) {
20
+ return "equals(items.objectType, '" + entityType.uri + "')";
21
+ };
19
22
  var buildAttributeFilterClause = function (attribute) {
20
23
  return "equals(items.delta.attributeType, '" + attribute.value + "')";
21
24
  };
@@ -54,6 +57,7 @@ var getFilterClauseBuilder = cond([
54
57
  [equals('activities'), function () { return multiValueFilter(buildActivityFilterClause); }],
55
58
  [equals('sources'), function () { return multiValueFilter(buildSourceFilterClause); }],
56
59
  [equals('attributes'), function () { return multiValueFilter(buildAttributeFilterClause); }],
60
+ [equals('entityTypes'), function () { return multiValueFilter(buildEntityTypeFilterClause); }],
57
61
  [equals('dateRange'), function () { return buildDateRangeFilterClause; }],
58
62
  [equals('entityUri'), function () { return buildEntityUriFilterClause; }]
59
63
  ]);
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@reltio/components",
3
- "version": "1.4.1173",
3
+ "version": "1.4.1174",
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.1173",
11
- "@reltio/mdm-sdk": "^1.4.1173",
10
+ "@reltio/mdm-module": "^1.4.1174",
11
+ "@reltio/mdm-sdk": "^1.4.1174",
12
12
  "classnames": "^2.2.5",
13
13
  "d3-cloud": "^1.2.5",
14
14
  "d3-geo": "^2.0.1",