pne-ui 4.0.45 → 4.0.47
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/README.md +17 -0
- package/cjs/component/search-ui/SearchUI.js +15 -11
- package/cjs/component/search-ui/SearchUI.js.map +1 -1
- package/cjs/component/search-ui/SearchUIProvider.d.ts +5 -1
- package/cjs/component/search-ui/SearchUIProvider.js +1 -0
- package/cjs/component/search-ui/SearchUIProvider.js.map +1 -1
- package/cjs/component/search-ui/filters/CriterionContainer.js +3 -0
- package/cjs/component/search-ui/filters/CriterionContainer.js.map +1 -1
- package/cjs/component/search-ui/filters/SearchUIFilters.d.ts +1 -0
- package/cjs/component/search-ui/filters/SearchUIFilters.js +43 -18
- package/cjs/component/search-ui/filters/SearchUIFilters.js.map +1 -1
- package/cjs/component/search-ui/filters/component/criterion/CustomerLevelCriterion.d.ts +2 -0
- package/cjs/component/search-ui/filters/component/criterion/CustomerLevelCriterion.js +92 -0
- package/cjs/component/search-ui/filters/component/criterion/CustomerLevelCriterion.js.map +1 -0
- package/cjs/component/search-ui/filters/component/select/SearchUIAbstractEntityChipSelect.d.ts +12 -0
- package/cjs/component/search-ui/filters/component/select/SearchUIAbstractEntityChipSelect.js +29 -0
- package/cjs/component/search-ui/filters/component/select/SearchUIAbstractEntityChipSelect.js.map +1 -0
- package/cjs/component/search-ui/filters/component/select/SearchUICollapsableGroupSelect.js +1 -0
- package/cjs/component/search-ui/filters/component/select/SearchUICollapsableGroupSelect.js.map +1 -1
- package/cjs/component/search-ui/filters/component/select/SearchUIProcessorLogEntryTypeSelect.d.ts +1 -9
- package/cjs/component/search-ui/filters/component/select/SearchUIProcessorLogEntryTypeSelect.js +3 -19
- package/cjs/component/search-ui/filters/component/select/SearchUIProcessorLogEntryTypeSelect.js.map +1 -1
- package/cjs/component/search-ui/filters/customerLevelDependencies.d.ts +6 -0
- package/cjs/component/search-ui/filters/customerLevelDependencies.js +25 -0
- package/cjs/component/search-ui/filters/customerLevelDependencies.js.map +1 -0
- package/cjs/component/search-ui/filters/state/SearchUIFiltersStoreProvider.d.ts +7 -0
- package/cjs/component/search-ui/filters/state/SearchUIFiltersStoreProvider.js +30 -0
- package/cjs/component/search-ui/filters/state/SearchUIFiltersStoreProvider.js.map +1 -0
- package/cjs/component/search-ui/filters/state/actions.js +209 -51
- package/cjs/component/search-ui/filters/state/actions.js.map +1 -1
- package/cjs/component/search-ui/filters/state/initial.js +6 -0
- package/cjs/component/search-ui/filters/state/initial.js.map +1 -1
- package/cjs/component/search-ui/filters/state/retention.d.ts +5 -0
- package/cjs/component/search-ui/filters/state/retention.js +107 -0
- package/cjs/component/search-ui/filters/state/retention.js.map +1 -0
- package/cjs/component/search-ui/filters/state/store.d.ts +11 -1068
- package/cjs/component/search-ui/filters/state/store.js +22 -2
- package/cjs/component/search-ui/filters/state/store.js.map +1 -1
- package/cjs/component/search-ui/filters/state/type.d.ts +17 -1
- package/cjs/component/search-ui/filters/state/undo.js +1 -0
- package/cjs/component/search-ui/filters/state/undo.js.map +1 -1
- package/cjs/component/search-ui/filters/types.d.ts +18 -1
- package/cjs/component/search-ui/filters/types.js +8 -1
- package/cjs/component/search-ui/filters/types.js.map +1 -1
- package/cjs/component/search-ui/state/initial.js +1 -0
- package/cjs/component/search-ui/state/initial.js.map +1 -1
- package/cjs/component/search-ui/state/store.d.ts +2 -0
- package/cjs/exports/search.d.ts +1 -1
- package/cjs/exports/search.js +2 -1
- package/cjs/exports/search.js.map +1 -1
- package/esm/component/search-ui/SearchUI.js +13 -9
- package/esm/component/search-ui/SearchUI.js.map +1 -1
- package/esm/component/search-ui/SearchUIProvider.d.ts +5 -1
- package/esm/component/search-ui/SearchUIProvider.js +1 -0
- package/esm/component/search-ui/SearchUIProvider.js.map +1 -1
- package/esm/component/search-ui/filters/CriterionContainer.js +3 -0
- package/esm/component/search-ui/filters/CriterionContainer.js.map +1 -1
- package/esm/component/search-ui/filters/SearchUIFilters.d.ts +1 -0
- package/esm/component/search-ui/filters/SearchUIFilters.js +42 -18
- package/esm/component/search-ui/filters/SearchUIFilters.js.map +1 -1
- package/esm/component/search-ui/filters/component/criterion/CustomerLevelCriterion.d.ts +2 -0
- package/esm/component/search-ui/filters/component/criterion/CustomerLevelCriterion.js +87 -0
- package/esm/component/search-ui/filters/component/criterion/CustomerLevelCriterion.js.map +1 -0
- package/esm/component/search-ui/filters/component/select/SearchUIAbstractEntityChipSelect.d.ts +12 -0
- package/esm/component/search-ui/filters/component/select/SearchUIAbstractEntityChipSelect.js +26 -0
- package/esm/component/search-ui/filters/component/select/SearchUIAbstractEntityChipSelect.js.map +1 -0
- package/esm/component/search-ui/filters/component/select/SearchUICollapsableGroupSelect.js +1 -0
- package/esm/component/search-ui/filters/component/select/SearchUICollapsableGroupSelect.js.map +1 -1
- package/esm/component/search-ui/filters/component/select/SearchUIProcessorLogEntryTypeSelect.d.ts +1 -9
- package/esm/component/search-ui/filters/component/select/SearchUIProcessorLogEntryTypeSelect.js +1 -19
- package/esm/component/search-ui/filters/component/select/SearchUIProcessorLogEntryTypeSelect.js.map +1 -1
- package/esm/component/search-ui/filters/customerLevelDependencies.d.ts +6 -0
- package/esm/component/search-ui/filters/customerLevelDependencies.js +21 -0
- package/esm/component/search-ui/filters/customerLevelDependencies.js.map +1 -0
- package/esm/component/search-ui/filters/state/SearchUIFiltersStoreProvider.d.ts +7 -0
- package/esm/component/search-ui/filters/state/SearchUIFiltersStoreProvider.js +25 -0
- package/esm/component/search-ui/filters/state/SearchUIFiltersStoreProvider.js.map +1 -0
- package/esm/component/search-ui/filters/state/actions.js +210 -52
- package/esm/component/search-ui/filters/state/actions.js.map +1 -1
- package/esm/component/search-ui/filters/state/initial.js +6 -0
- package/esm/component/search-ui/filters/state/initial.js.map +1 -1
- package/esm/component/search-ui/filters/state/retention.d.ts +5 -0
- package/esm/component/search-ui/filters/state/retention.js +99 -0
- package/esm/component/search-ui/filters/state/retention.js.map +1 -0
- package/esm/component/search-ui/filters/state/store.d.ts +11 -1068
- package/esm/component/search-ui/filters/state/store.js +18 -2
- package/esm/component/search-ui/filters/state/store.js.map +1 -1
- package/esm/component/search-ui/filters/state/type.d.ts +17 -1
- package/esm/component/search-ui/filters/state/undo.js +1 -0
- package/esm/component/search-ui/filters/state/undo.js.map +1 -1
- package/esm/component/search-ui/filters/types.d.ts +18 -1
- package/esm/component/search-ui/filters/types.js +7 -0
- package/esm/component/search-ui/filters/types.js.map +1 -1
- package/esm/component/search-ui/state/initial.js +1 -0
- package/esm/component/search-ui/state/initial.js.map +1 -1
- package/esm/component/search-ui/state/store.d.ts +2 -0
- package/esm/exports/search.d.ts +1 -1
- package/esm/exports/search.js +1 -1
- package/esm/exports/search.js.map +1 -1
- package/package.json +1 -1
package/cjs/component/search-ui/filters/component/select/SearchUIProcessorLogEntryTypeSelect.d.ts
CHANGED
|
@@ -1,9 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import { AbstractEntity } from '../../../../..';
|
|
3
|
-
interface IProps {
|
|
4
|
-
value: AbstractEntity | null;
|
|
5
|
-
onChange: (value: AbstractEntity) => void;
|
|
6
|
-
options: AbstractEntity[];
|
|
7
|
-
}
|
|
8
|
-
declare const SearchUIProcessorLogEntryTypeSelect: (props: IProps) => React.JSX.Element;
|
|
9
|
-
export default SearchUIProcessorLogEntryTypeSelect;
|
|
1
|
+
export { default } from './SearchUIAbstractEntityChipSelect';
|
package/cjs/component/search-ui/filters/component/select/SearchUIProcessorLogEntryTypeSelect.js
CHANGED
|
@@ -1,23 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.default = void 0;
|
|
3
4
|
const tslib_1 = require("tslib");
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const ExpandMore_1 = tslib_1.__importDefault(require("@mui/icons-material/ExpandMore"));
|
|
7
|
-
const style_1 = require("./style");
|
|
8
|
-
const __1 = require("../../../../..");
|
|
9
|
-
const react_i18next_1 = require("react-i18next");
|
|
10
|
-
const NULL_OPTION = {
|
|
11
|
-
id: 0,
|
|
12
|
-
displayName: '',
|
|
13
|
-
};
|
|
14
|
-
const SearchUIProcessorLogEntryTypeSelect = (props) => {
|
|
15
|
-
const { t } = (0, react_i18next_1.useTranslation)();
|
|
16
|
-
const { value, onChange, options, } = props;
|
|
17
|
-
const [open, setOpen] = (0, react_1.useState)(false);
|
|
18
|
-
return react_1.default.createElement(material_1.Box, { sx: { position: 'relative' } },
|
|
19
|
-
react_1.default.createElement(material_1.Chip, { onDelete: () => setOpen(true), deleteIcon: react_1.default.createElement(ExpandMore_1.default, null), label: value ? value.displayName : t('react.chooseOne'), size: 'small' }),
|
|
20
|
-
react_1.default.createElement(__1.PneSelect, { open: open, onClose: () => setOpen(false), onOpen: () => setOpen(true), sx: style_1.selectUnderChipSx, getOptionLabel: opt => opt.label, value: value ? value : NULL_OPTION, onChange: (value) => onChange(value), options: options }));
|
|
21
|
-
};
|
|
22
|
-
exports.default = SearchUIProcessorLogEntryTypeSelect;
|
|
5
|
+
var SearchUIAbstractEntityChipSelect_1 = require("./SearchUIAbstractEntityChipSelect");
|
|
6
|
+
Object.defineProperty(exports, "default", { enumerable: true, get: function () { return tslib_1.__importDefault(SearchUIAbstractEntityChipSelect_1).default; } });
|
|
23
7
|
//# sourceMappingURL=SearchUIProcessorLogEntryTypeSelect.js.map
|
package/cjs/component/search-ui/filters/component/select/SearchUIProcessorLogEntryTypeSelect.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchUIProcessorLogEntryTypeSelect.js","sourceRoot":"","sources":["../../../../../../src/component/search-ui/filters/component/select/SearchUIProcessorLogEntryTypeSelect.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SearchUIProcessorLogEntryTypeSelect.js","sourceRoot":"","sources":["../../../../../../src/component/search-ui/filters/component/select/SearchUIProcessorLogEntryTypeSelect.tsx"],"names":[],"mappings":";;;;AAAA,uFAA4D;AAAnD,oJAAA,OAAO,OAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { MultigetCriterion } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Returns the merchant selected by an exact multiget criterion.
|
|
4
|
+
* Customer levels are intentionally unavailable for ALL, SEARCH or multi-selection.
|
|
5
|
+
*/
|
|
6
|
+
export declare const getConcreteCustomerLevelMerchantId: (multigetCriteria: readonly MultigetCriterion[]) => number | null;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getConcreteCustomerLevelMerchantId = void 0;
|
|
4
|
+
const types_1 = require("./types");
|
|
5
|
+
/**
|
|
6
|
+
* Returns the merchant selected by an exact multiget criterion.
|
|
7
|
+
* Customer levels are intentionally unavailable for ALL, SEARCH or multi-selection.
|
|
8
|
+
*/
|
|
9
|
+
const getConcreteCustomerLevelMerchantId = (multigetCriteria) => {
|
|
10
|
+
const merchantCriterion = multigetCriteria.find(criterion => criterion.entityType === types_1.LinkedEntityTypeEnum.MERCHANT);
|
|
11
|
+
if (!merchantCriterion || merchantCriterion.filterType !== types_1.MultichoiceFilterTypeEnum.NONE) {
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
const selectedIds = merchantCriterion.selectedItems
|
|
15
|
+
.split(',')
|
|
16
|
+
.map(value => value.trim())
|
|
17
|
+
.filter(Boolean);
|
|
18
|
+
if (selectedIds.length !== 1) {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
const merchantId = Number(selectedIds[0]);
|
|
22
|
+
return Number.isSafeInteger(merchantId) && merchantId > 0 ? merchantId : null;
|
|
23
|
+
};
|
|
24
|
+
exports.getConcreteCustomerLevelMerchantId = getConcreteCustomerLevelMerchantId;
|
|
25
|
+
//# sourceMappingURL=customerLevelDependencies.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"customerLevelDependencies.js","sourceRoot":"","sources":["../../../../src/component/search-ui/filters/customerLevelDependencies.ts"],"names":[],"mappings":";;;AAAA,mCAIgB;AAEhB;;;GAGG;AACI,MAAM,kCAAkC,GAAG,CAC9C,gBAA8C,EACjC,EAAE;IACf,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,IAAI,CAC3C,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,KAAK,4BAAoB,CAAC,QAAQ,CACtE,CAAA;IAED,IAAI,CAAC,iBAAiB,IAAI,iBAAiB,CAAC,UAAU,KAAK,iCAAyB,CAAC,IAAI,EAAE,CAAC;QACxF,OAAO,IAAI,CAAA;IACf,CAAC;IAED,MAAM,WAAW,GAAG,iBAAiB,CAAC,aAAa;SAC9C,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,OAAO,CAAC,CAAA;IAEpB,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAA;IACf,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;IACzC,OAAO,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAA;AACjF,CAAC,CAAA;AAtBY,QAAA,kCAAkC,sCAsB9C"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SearchUIFiltersStoreProvider = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const react_1 = tslib_1.__importStar(require("react"));
|
|
6
|
+
const store_1 = require("./store");
|
|
7
|
+
const retention_1 = require("./retention");
|
|
8
|
+
const SearchUIFiltersStoreProvider = ({ settingsContextName, children }) => {
|
|
9
|
+
const store = (0, react_1.useMemo)(store_1.createSearchUIFiltersStore, [settingsContextName]);
|
|
10
|
+
const instanceIdRef = (0, react_1.useRef)(Symbol(settingsContextName));
|
|
11
|
+
useStoreLifecycleEffect(() => {
|
|
12
|
+
const unregister = (0, retention_1.registerSearchUIInstance)(settingsContextName, instanceIdRef.current);
|
|
13
|
+
const persistState = () => (0, retention_1.retainSearchUIState)(settingsContextName, store.getState());
|
|
14
|
+
const unsubscribe = store.subscribe(persistState);
|
|
15
|
+
persistState();
|
|
16
|
+
return () => {
|
|
17
|
+
persistState();
|
|
18
|
+
unsubscribe();
|
|
19
|
+
unregister();
|
|
20
|
+
};
|
|
21
|
+
}, [settingsContextName, store]);
|
|
22
|
+
const contextValue = (0, react_1.useMemo)(() => ({
|
|
23
|
+
store,
|
|
24
|
+
instanceId: instanceIdRef.current,
|
|
25
|
+
}), [store]);
|
|
26
|
+
return react_1.default.createElement(store_1.SearchUIFiltersStoreContext.Provider, { value: contextValue }, children);
|
|
27
|
+
};
|
|
28
|
+
exports.SearchUIFiltersStoreProvider = SearchUIFiltersStoreProvider;
|
|
29
|
+
const useStoreLifecycleEffect = typeof window === 'undefined' ? react_1.useEffect : react_1.useLayoutEffect;
|
|
30
|
+
//# sourceMappingURL=SearchUIFiltersStoreProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchUIFiltersStoreProvider.js","sourceRoot":"","sources":["../../../../../src/component/search-ui/filters/state/SearchUIFiltersStoreProvider.tsx"],"names":[],"mappings":";;;;AAAA,uDAAwE;AACxE,mCAGgB;AAChB,2CAGoB;AAOb,MAAM,4BAA4B,GAAG,CAAC,EAAC,mBAAmB,EAAE,QAAQ,EAAQ,EAAE,EAAE;IACnF,MAAM,KAAK,GAAG,IAAA,eAAO,EAAC,kCAA0B,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAA;IACxE,MAAM,aAAa,GAAG,IAAA,cAAM,EAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAA;IAEzD,uBAAuB,CAAC,GAAG,EAAE;QACzB,MAAM,UAAU,GAAG,IAAA,oCAAwB,EAAC,mBAAmB,EAAE,aAAa,CAAC,OAAO,CAAC,CAAA;QACvF,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,IAAA,+BAAmB,EAAC,mBAAmB,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAA;QACrF,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;QAEjD,YAAY,EAAE,CAAA;QAEd,OAAO,GAAG,EAAE;YACR,YAAY,EAAE,CAAA;YACd,WAAW,EAAE,CAAA;YACb,UAAU,EAAE,CAAA;QAChB,CAAC,CAAA;IACL,CAAC,EAAE,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC,CAAA;IAEhC,MAAM,YAAY,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,CAAC;QAChC,KAAK;QACL,UAAU,EAAE,aAAa,CAAC,OAAO;KACpC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;IAEZ,OAAO,8BAAC,mCAA2B,CAAC,QAAQ,IAAC,KAAK,EAAE,YAAY,IAC3D,QAAQ,CAC0B,CAAA;AAC3C,CAAC,CAAA;AA1BY,QAAA,4BAA4B,gCA0BxC;AAED,MAAM,uBAAuB,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,iBAAS,CAAC,CAAC,CAAC,uBAAe,CAAA"}
|
|
@@ -14,6 +14,7 @@ const isoWeek_1 = tslib_1.__importDefault(require("dayjs/plugin/isoWeek"));
|
|
|
14
14
|
const cloneDeep_1 = tslib_1.__importDefault(require("lodash/cloneDeep"));
|
|
15
15
|
const isEqual_1 = tslib_1.__importDefault(require("lodash/isEqual"));
|
|
16
16
|
const dateRangeTimeZone_1 = require("../dateRangeTimeZone");
|
|
17
|
+
const customerLevelDependencies_1 = require("../customerLevelDependencies");
|
|
17
18
|
dayjs_1.default.extend(utc_1.default);
|
|
18
19
|
dayjs_1.default.extend(timezone_1.default);
|
|
19
20
|
dayjs_1.default.extend(isoWeek_1.default);
|
|
@@ -32,6 +33,7 @@ const criterionToLinkedEntityMap = {
|
|
|
32
33
|
const getLinkedEntityTypeByCriterion = (criterion) => {
|
|
33
34
|
return criterionToLinkedEntityMap[criterion] ?? null;
|
|
34
35
|
};
|
|
36
|
+
const isConfiguredCriterion = (draft, criterion) => draft.possibleCriteria.includes(criterion) || draft.predefinedCriteria.includes(criterion);
|
|
35
37
|
const getInitialMultigetCriterion = (entityType) => ({
|
|
36
38
|
entityType: entityType,
|
|
37
39
|
filterType: types_1.MultichoiceFilterTypeEnum.NONE,
|
|
@@ -82,58 +84,141 @@ const sanitizeMultigetCriteria = (incoming, activeCriteria) => {
|
|
|
82
84
|
});
|
|
83
85
|
return Array.from(uniqueByEntity.values());
|
|
84
86
|
};
|
|
87
|
+
const isRetainedSnapshotCompatible = (snapshot, state) => {
|
|
88
|
+
return (0, isEqual_1.default)(snapshot.possibleCriteria, state.possibleCriteria)
|
|
89
|
+
&& (0, isEqual_1.default)(snapshot.predefinedCriteria, state.predefinedCriteria)
|
|
90
|
+
&& (0, isEqual_1.default)(snapshot.exactSearchLabels, state.exactSearchLabels)
|
|
91
|
+
&& snapshot.manualSearch === !!state.config?.manualSearch;
|
|
92
|
+
};
|
|
93
|
+
const addCriterionReducer = (draft, criterion, configuredOnly = false) => {
|
|
94
|
+
if (configuredOnly && !isConfiguredCriterion(draft, criterion)) {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
if (draft.criteria.includes(criterion)) {
|
|
98
|
+
const entityType = getLinkedEntityTypeByCriterion(criterion);
|
|
99
|
+
if (entityType !== null
|
|
100
|
+
&& !draft.multigetCriteria.some(multigetCriterion => multigetCriterion.entityType === entityType)) {
|
|
101
|
+
draft.multigetCriteria.push(getInitialMultigetCriterion(entityType));
|
|
102
|
+
}
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
draft.criteria.push(criterion);
|
|
106
|
+
addInitialMultigetCriterionReducer(draft, criterion);
|
|
107
|
+
};
|
|
108
|
+
const ensureCustomerLevelDependenciesReducer = (draft) => {
|
|
109
|
+
if (!draft.criteria.includes(types_1.CriterionTypeEnum.CUSTOMER_LEVEL)) {
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
types_1.CUSTOMER_LEVEL_DEPENDENCIES.forEach(dependency => addCriterionReducer(draft, dependency, true));
|
|
113
|
+
};
|
|
114
|
+
const applyConditionsReducer = (draft, conditions) => {
|
|
115
|
+
const { criteria: incomingCriteria, multigetCriteria: incomingMultigetCriteria, ...rest } = conditions;
|
|
116
|
+
const prevCriteria = draft.criteria.slice();
|
|
117
|
+
Object.assign(draft, rest);
|
|
118
|
+
if (incomingCriteria !== undefined) {
|
|
119
|
+
const allowedCriteria = new Set([
|
|
120
|
+
...draft.predefinedCriteria,
|
|
121
|
+
...draft.possibleCriteria,
|
|
122
|
+
]);
|
|
123
|
+
const sanitizedIncoming = Array.from(new Set(incomingCriteria.filter(criterion => allowedCriteria.has(criterion))));
|
|
124
|
+
const mergedCriteria = Array.from(new Set([
|
|
125
|
+
...draft.predefinedCriteria,
|
|
126
|
+
...sanitizedIncoming,
|
|
127
|
+
]));
|
|
128
|
+
const removedCriteria = prevCriteria.filter(criterion => !mergedCriteria.includes(criterion));
|
|
129
|
+
removedCriteria.forEach(criterion => {
|
|
130
|
+
clearCriterionReducer(draft, criterion);
|
|
131
|
+
});
|
|
132
|
+
const addedCriteria = mergedCriteria.filter(criterion => !prevCriteria.includes(criterion));
|
|
133
|
+
if (incomingMultigetCriteria === undefined) {
|
|
134
|
+
addedCriteria.forEach(criterion => {
|
|
135
|
+
addInitialMultigetCriterionReducer(draft, criterion);
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
draft.criteria = mergedCriteria;
|
|
139
|
+
}
|
|
140
|
+
if (incomingMultigetCriteria !== undefined) {
|
|
141
|
+
const sanitizedMultigetCriteria = sanitizeMultigetCriteria(incomingMultigetCriteria, draft.criteria);
|
|
142
|
+
const missingEntityTypes = draft.criteria
|
|
143
|
+
.map(getLinkedEntityTypeByCriterion)
|
|
144
|
+
.filter((entityType) => entityType !== null)
|
|
145
|
+
.filter(entityType => !sanitizedMultigetCriteria.some(item => item.entityType === entityType));
|
|
146
|
+
missingEntityTypes.forEach(entityType => {
|
|
147
|
+
sanitizedMultigetCriteria.push(getInitialMultigetCriterion(entityType));
|
|
148
|
+
});
|
|
149
|
+
draft.multigetCriteria = sanitizedMultigetCriteria;
|
|
150
|
+
}
|
|
151
|
+
ensureCustomerLevelDependenciesReducer(draft);
|
|
152
|
+
};
|
|
153
|
+
const restoreAppliedSearchCriteria = (snapshot, retainedDraftSearchCriteria, currentSearchCriteria) => {
|
|
154
|
+
if (!snapshot.hasUnappliedFilters || !snapshot.appliedSearchCriteria) {
|
|
155
|
+
return currentSearchCriteria;
|
|
156
|
+
}
|
|
157
|
+
const retainedDraftWithoutDates = {
|
|
158
|
+
...retainedDraftSearchCriteria,
|
|
159
|
+
dateFrom: currentSearchCriteria.dateFrom,
|
|
160
|
+
dateTo: currentSearchCriteria.dateTo,
|
|
161
|
+
};
|
|
162
|
+
if (!(0, isEqual_1.default)(retainedDraftWithoutDates, currentSearchCriteria)) {
|
|
163
|
+
return currentSearchCriteria;
|
|
164
|
+
}
|
|
165
|
+
return {
|
|
166
|
+
...(0, cloneDeep_1.default)(snapshot.appliedSearchCriteria),
|
|
167
|
+
dateFrom: (0, isEqual_1.default)(snapshot.appliedSearchCriteria.dateFrom, retainedDraftSearchCriteria.dateFrom)
|
|
168
|
+
? currentSearchCriteria.dateFrom
|
|
169
|
+
: snapshot.appliedSearchCriteria.dateFrom,
|
|
170
|
+
dateTo: (0, isEqual_1.default)(snapshot.appliedSearchCriteria.dateTo, retainedDraftSearchCriteria.dateTo)
|
|
171
|
+
? currentSearchCriteria.dateTo
|
|
172
|
+
: snapshot.appliedSearchCriteria.dateTo,
|
|
173
|
+
};
|
|
174
|
+
};
|
|
85
175
|
const getSearchUIFiltersActions = (set, get) => ({
|
|
86
|
-
setInitialState: (state) => {
|
|
176
|
+
setInitialState: (state, retainedSnapshot) => {
|
|
87
177
|
set((draft) => {
|
|
88
|
-
|
|
178
|
+
const initialState = {
|
|
89
179
|
...draft,
|
|
90
180
|
...(0, initial_1.getSearchUIFiltersInitialState)(),
|
|
91
181
|
...(0, initial_1.getSearchUIInitialSearchCriteria)(state.defaults),
|
|
92
182
|
...state,
|
|
93
183
|
};
|
|
184
|
+
Object.assign(draft, initialState);
|
|
185
|
+
ensureCustomerLevelDependenciesReducer(draft);
|
|
186
|
+
if (retainedSnapshot && isRetainedSnapshotCompatible(retainedSnapshot, initialState)) {
|
|
187
|
+
applyConditionsReducer(draft, retainedSnapshot.searchConditions);
|
|
188
|
+
draft.activeTemplateName = retainedSnapshot.activeTemplateName;
|
|
189
|
+
draft.restoredFromRetention = true;
|
|
190
|
+
}
|
|
191
|
+
draft.initialized = true;
|
|
94
192
|
});
|
|
95
|
-
|
|
193
|
+
const retainedDraftSearchCriteria = get().restoredFromRetention
|
|
194
|
+
? extractSearchCriteriaFromState(get())
|
|
195
|
+
: null;
|
|
196
|
+
syncCriterionAvailability(set, get);
|
|
197
|
+
normalizeRetainedDateRange(set, get);
|
|
198
|
+
ensureTransactionSessionStatusesPrefetched(set, get);
|
|
199
|
+
if (get().restoredFromRetention && retainedSnapshot && retainedDraftSearchCriteria) {
|
|
200
|
+
const currentSearchCriteria = extractSearchCriteriaFromState(get());
|
|
201
|
+
const appliedSearchCriteria = get().config?.manualSearch
|
|
202
|
+
? restoreAppliedSearchCriteria(retainedSnapshot, retainedDraftSearchCriteria, currentSearchCriteria)
|
|
203
|
+
: currentSearchCriteria;
|
|
204
|
+
get().onFiltersUpdate(appliedSearchCriteria);
|
|
205
|
+
set((draft) => {
|
|
206
|
+
draft.prevSearchCriteria = currentSearchCriteria;
|
|
207
|
+
draft.appliedSearchCriteria = appliedSearchCriteria;
|
|
208
|
+
draft.hasUnappliedFilters = !!draft.config?.manualSearch
|
|
209
|
+
&& !(0, isEqual_1.default)(currentSearchCriteria, appliedSearchCriteria);
|
|
210
|
+
});
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
checkIfFiltersChanged(set, get);
|
|
96
214
|
},
|
|
97
215
|
updateConditions: (conditions, options) => {
|
|
98
216
|
set((draft) => {
|
|
99
|
-
|
|
100
|
-
const prevCriteria = draft.criteria.slice();
|
|
101
|
-
Object.assign(draft, rest);
|
|
102
|
-
if (incomingCriteria !== undefined) {
|
|
103
|
-
const allowedCriteria = new Set([
|
|
104
|
-
...draft.predefinedCriteria,
|
|
105
|
-
...draft.possibleCriteria,
|
|
106
|
-
]);
|
|
107
|
-
const sanitizedIncoming = Array.from(new Set(incomingCriteria.filter(criterion => allowedCriteria.has(criterion))));
|
|
108
|
-
const mergedCriteria = Array.from(new Set([
|
|
109
|
-
...draft.predefinedCriteria,
|
|
110
|
-
...sanitizedIncoming,
|
|
111
|
-
]));
|
|
112
|
-
const removedCriteria = prevCriteria.filter(criterion => !mergedCriteria.includes(criterion));
|
|
113
|
-
removedCriteria.forEach(criterion => {
|
|
114
|
-
clearCriterionReducer(draft, criterion);
|
|
115
|
-
});
|
|
116
|
-
const addedCriteria = mergedCriteria.filter(criterion => !prevCriteria.includes(criterion));
|
|
117
|
-
if (incomingMultigetCriteria === undefined) {
|
|
118
|
-
addedCriteria.forEach(criterion => {
|
|
119
|
-
addInitialMultigetCriterionReducer(draft, criterion);
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
draft.criteria = mergedCriteria;
|
|
123
|
-
}
|
|
124
|
-
if (incomingMultigetCriteria !== undefined) {
|
|
125
|
-
const sanitizedMultigetCriteria = sanitizeMultigetCriteria(incomingMultigetCriteria, draft.criteria);
|
|
126
|
-
const missingEntityTypes = draft.criteria
|
|
127
|
-
.map(getLinkedEntityTypeByCriterion)
|
|
128
|
-
.filter((entityType) => entityType !== null)
|
|
129
|
-
.filter(entityType => !sanitizedMultigetCriteria.some(item => item.entityType === entityType));
|
|
130
|
-
missingEntityTypes.forEach(entityType => {
|
|
131
|
-
sanitizedMultigetCriteria.push(getInitialMultigetCriterion(entityType));
|
|
132
|
-
});
|
|
133
|
-
draft.multigetCriteria = sanitizedMultigetCriteria;
|
|
134
|
-
}
|
|
217
|
+
applyConditionsReducer(draft, conditions);
|
|
135
218
|
if (options?.resetTemplate) {
|
|
136
219
|
draft.template = null;
|
|
220
|
+
draft.activeTemplateName = null;
|
|
221
|
+
draft.skipLastTemplateAutoApply = true;
|
|
137
222
|
}
|
|
138
223
|
});
|
|
139
224
|
postUpdate(set, get, options);
|
|
@@ -150,6 +235,8 @@ const getSearchUIFiltersActions = (set, get) => ({
|
|
|
150
235
|
set(draft => {
|
|
151
236
|
Object.assign(draft, conditions);
|
|
152
237
|
draft.template = template;
|
|
238
|
+
draft.activeTemplateName = template?.name ?? null;
|
|
239
|
+
ensureCustomerLevelDependenciesReducer(draft);
|
|
153
240
|
});
|
|
154
241
|
syncCriterionAvailability(set, get);
|
|
155
242
|
const currentSearchCriteria = extractSearchCriteriaFromState(get());
|
|
@@ -158,19 +245,23 @@ const getSearchUIFiltersActions = (set, get) => ({
|
|
|
158
245
|
}
|
|
159
246
|
set(draft => {
|
|
160
247
|
draft.prevSearchCriteria = currentSearchCriteria;
|
|
248
|
+
if (!hasUnappliedFilters) {
|
|
249
|
+
draft.appliedSearchCriteria = currentSearchCriteria;
|
|
250
|
+
}
|
|
161
251
|
draft.hasUnappliedFilters = hasUnappliedFilters;
|
|
162
252
|
});
|
|
163
253
|
},
|
|
164
254
|
clearCriteria: () => {
|
|
165
255
|
localStorage.removeItem(LAST_TEMPLATE_NAME + get().settingsContextName);
|
|
166
256
|
set((draft) => {
|
|
167
|
-
|
|
168
|
-
...draft,
|
|
257
|
+
Object.assign(draft, {
|
|
169
258
|
...(0, initial_1.getSearchUIInitialSearchCriteria)(draft.defaults),
|
|
170
259
|
exactSearchLabel: draft.exactSearchLabels[0],
|
|
171
260
|
template: null,
|
|
261
|
+
activeTemplateName: null,
|
|
172
262
|
criteria: draft.predefinedCriteria,
|
|
173
|
-
};
|
|
263
|
+
});
|
|
264
|
+
ensureCustomerLevelDependenciesReducer(draft);
|
|
174
265
|
});
|
|
175
266
|
postUpdate(set, get);
|
|
176
267
|
},
|
|
@@ -183,8 +274,10 @@ const getSearchUIFiltersActions = (set, get) => ({
|
|
|
183
274
|
},
|
|
184
275
|
addCriterion: (criterionType) => {
|
|
185
276
|
set((draft) => {
|
|
186
|
-
|
|
187
|
-
|
|
277
|
+
if (criterionType === types_1.CriterionTypeEnum.CUSTOMER_LEVEL) {
|
|
278
|
+
types_1.CUSTOMER_LEVEL_DEPENDENCIES.forEach(dependency => addCriterionReducer(draft, dependency, true));
|
|
279
|
+
}
|
|
280
|
+
addCriterionReducer(draft, criterionType);
|
|
188
281
|
});
|
|
189
282
|
get().setJustAddedCriterion(criterionType);
|
|
190
283
|
postUpdate(set, get);
|
|
@@ -209,6 +302,7 @@ const getSearchUIFiltersActions = (set, get) => ({
|
|
|
209
302
|
set((draft) => {
|
|
210
303
|
draft.templates.push(template);
|
|
211
304
|
draft.template = template;
|
|
305
|
+
draft.activeTemplateName = template.name;
|
|
212
306
|
});
|
|
213
307
|
})
|
|
214
308
|
// .catch(raiseUIError)
|
|
@@ -226,6 +320,7 @@ const getSearchUIFiltersActions = (set, get) => ({
|
|
|
226
320
|
const index = draft.templates.findIndex(t => t.name === templateName);
|
|
227
321
|
draft.templates[index].searchConditions = template.searchConditions;
|
|
228
322
|
draft.template = template;
|
|
323
|
+
draft.activeTemplateName = template.name;
|
|
229
324
|
});
|
|
230
325
|
})
|
|
231
326
|
// .catch(raiseUIError)
|
|
@@ -247,7 +342,9 @@ const getSearchUIFiltersActions = (set, get) => ({
|
|
|
247
342
|
if (draft.template?.name === template.name) {
|
|
248
343
|
Object.assign(draft, (0, initial_1.getSearchUIInitialSearchCriteria)(draft.defaults));
|
|
249
344
|
draft.template = null;
|
|
345
|
+
draft.activeTemplateName = null;
|
|
250
346
|
draft.criteria = draft.predefinedCriteria;
|
|
347
|
+
ensureCustomerLevelDependenciesReducer(draft);
|
|
251
348
|
}
|
|
252
349
|
});
|
|
253
350
|
postUpdate(set, get);
|
|
@@ -265,22 +362,37 @@ const getSearchUIFiltersActions = (set, get) => ({
|
|
|
265
362
|
}
|
|
266
363
|
localStorage.setItem(LAST_TEMPLATE_NAME + get().settingsContextName, template.name);
|
|
267
364
|
set((draft) => {
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
};
|
|
365
|
+
Object.assign(draft, defaults);
|
|
366
|
+
draft.template = template;
|
|
367
|
+
draft.activeTemplateName = template.name;
|
|
368
|
+
applyConditionsReducer(draft, conditions);
|
|
273
369
|
});
|
|
274
370
|
postUpdate(set, get, options);
|
|
275
371
|
},
|
|
276
372
|
loadTemplates: () => {
|
|
277
|
-
get().
|
|
373
|
+
const settingsContextName = get().settingsContextName;
|
|
374
|
+
const defaults = get().defaults;
|
|
375
|
+
defaults.getSearchTemplates(settingsContextName)
|
|
278
376
|
.then(templates => {
|
|
377
|
+
if (get().settingsContextName !== settingsContextName) {
|
|
378
|
+
return;
|
|
379
|
+
}
|
|
279
380
|
const normalizedTemplates = templates.map(normalizeSearchUITemplate);
|
|
280
381
|
set((draft) => {
|
|
281
382
|
draft.templates = normalizedTemplates;
|
|
282
383
|
});
|
|
283
|
-
|
|
384
|
+
if (get().restoredFromRetention) {
|
|
385
|
+
const activeTemplate = normalizedTemplates.find(t => t.name === get().activeTemplateName) ?? null;
|
|
386
|
+
set((draft) => {
|
|
387
|
+
draft.template = activeTemplate;
|
|
388
|
+
draft.activeTemplateName = activeTemplate?.name ?? null;
|
|
389
|
+
});
|
|
390
|
+
return;
|
|
391
|
+
}
|
|
392
|
+
if (get().skipLastTemplateAutoApply) {
|
|
393
|
+
return;
|
|
394
|
+
}
|
|
395
|
+
const lastTemplateName = localStorage.getItem(LAST_TEMPLATE_NAME + settingsContextName);
|
|
284
396
|
const lastTemplate = normalizedTemplates.find(t => t.name === lastTemplateName);
|
|
285
397
|
if (lastTemplate) {
|
|
286
398
|
get().setTemplate(lastTemplate, { forceSearch: true });
|
|
@@ -296,8 +408,15 @@ const getSearchUIFiltersActions = (set, get) => ({
|
|
|
296
408
|
},
|
|
297
409
|
setMultigetCriterion: (criterion) => {
|
|
298
410
|
set((draft) => {
|
|
411
|
+
const previousMerchantId = criterion.entityType === types_1.LinkedEntityTypeEnum.MERCHANT
|
|
412
|
+
? (0, customerLevelDependencies_1.getConcreteCustomerLevelMerchantId)(draft.multigetCriteria)
|
|
413
|
+
: null;
|
|
299
414
|
const index = draft.multigetCriteria.findIndex(c => c.entityType === criterion.entityType);
|
|
300
415
|
draft.multigetCriteria[index] = criterion;
|
|
416
|
+
if (criterion.entityType === types_1.LinkedEntityTypeEnum.MERCHANT
|
|
417
|
+
&& previousMerchantId !== (0, customerLevelDependencies_1.getConcreteCustomerLevelMerchantId)(draft.multigetCriteria)) {
|
|
418
|
+
draft.customerLevel = null;
|
|
419
|
+
}
|
|
301
420
|
});
|
|
302
421
|
postUpdate(set, get);
|
|
303
422
|
},
|
|
@@ -344,8 +463,19 @@ const getSearchUIFiltersActions = (set, get) => ({
|
|
|
344
463
|
});
|
|
345
464
|
postUpdate(set, get);
|
|
346
465
|
},
|
|
466
|
+
setCustomerLevelCriterion: customerLevel => {
|
|
467
|
+
set((draft) => {
|
|
468
|
+
draft.customerLevel = (0, customerLevelDependencies_1.getConcreteCustomerLevelMerchantId)(draft.multigetCriteria) === null
|
|
469
|
+
? null
|
|
470
|
+
: customerLevel;
|
|
471
|
+
});
|
|
472
|
+
postUpdate(set, get);
|
|
473
|
+
},
|
|
347
474
|
setCurrenciesCriterion: (currencies) => {
|
|
348
475
|
set((draft) => {
|
|
476
|
+
if (!(0, isEqual_1.default)(draft.currencies, currencies)) {
|
|
477
|
+
draft.customerLevel = null;
|
|
478
|
+
}
|
|
349
479
|
draft.currencies = currencies;
|
|
350
480
|
});
|
|
351
481
|
postUpdate(set, get);
|
|
@@ -490,6 +620,7 @@ const getSearchUIFiltersActions = (set, get) => ({
|
|
|
490
620
|
const currentSearchCriteria = extractSearchCriteriaFromState(get());
|
|
491
621
|
get().onFiltersUpdate(currentSearchCriteria);
|
|
492
622
|
set((draft) => {
|
|
623
|
+
draft.appliedSearchCriteria = currentSearchCriteria;
|
|
493
624
|
draft.hasUnappliedFilters = false;
|
|
494
625
|
});
|
|
495
626
|
},
|
|
@@ -524,6 +655,7 @@ const addInitialMultigetCriterionReducer = (draft, criterionType) => {
|
|
|
524
655
|
case types_1.CriterionTypeEnum.RESELLER:
|
|
525
656
|
draft.multigetCriteria.push(getInitialMultigetCriterion(types_1.LinkedEntityTypeEnum.RESELLER));
|
|
526
657
|
break;
|
|
658
|
+
case types_1.CriterionTypeEnum.CUSTOMER_LEVEL:
|
|
527
659
|
case types_1.CriterionTypeEnum.CURRENCY:
|
|
528
660
|
case types_1.CriterionTypeEnum.EXACT:
|
|
529
661
|
case types_1.CriterionTypeEnum.ORDERS_SEARCH:
|
|
@@ -567,8 +699,12 @@ const clearCriterionReducer = (draft, criterionType) => {
|
|
|
567
699
|
draft.ordersSearchLabel = 'merchant_invoice_id';
|
|
568
700
|
draft.ordersSearchValue = '';
|
|
569
701
|
break;
|
|
702
|
+
case types_1.CriterionTypeEnum.CUSTOMER_LEVEL:
|
|
703
|
+
draft.customerLevel = null;
|
|
704
|
+
break;
|
|
570
705
|
case types_1.CriterionTypeEnum.CURRENCY:
|
|
571
706
|
draft.currencies = initial_1.searchUIInitialAllableCollection;
|
|
707
|
+
draft.customerLevel = null;
|
|
572
708
|
break;
|
|
573
709
|
case types_1.CriterionTypeEnum.COUNTRIES:
|
|
574
710
|
draft.countries = initial_1.searchUICountriesInitialAllableCollection;
|
|
@@ -600,6 +736,7 @@ const clearCriterionReducer = (draft, criterionType) => {
|
|
|
600
736
|
break;
|
|
601
737
|
case types_1.CriterionTypeEnum.MERCHANT:
|
|
602
738
|
removeMultigetCriterionReducer(draft, types_1.LinkedEntityTypeEnum.MERCHANT);
|
|
739
|
+
draft.customerLevel = null;
|
|
603
740
|
break;
|
|
604
741
|
case types_1.CriterionTypeEnum.RESELLER:
|
|
605
742
|
removeMultigetCriterionReducer(draft, types_1.LinkedEntityTypeEnum.RESELLER);
|
|
@@ -845,6 +982,17 @@ const postUpdate = (set, get, options) => {
|
|
|
845
982
|
ensureTransactionSessionStatusesPrefetched(set, get);
|
|
846
983
|
checkIfFiltersChanged(set, get, options);
|
|
847
984
|
};
|
|
985
|
+
const normalizeRetainedDateRange = (set, get) => {
|
|
986
|
+
const state = get();
|
|
987
|
+
if (!state.restoredFromRetention || state.dateRangeSpec.dateRangeSpecType === 'EXACTLY') {
|
|
988
|
+
return;
|
|
989
|
+
}
|
|
990
|
+
const timeSelectionEnabled = isDateRangeTimeSelectionEnabled(state.criteria, state.config);
|
|
991
|
+
const normalizedDateRange = calculateNonExactDates(state.dateRangeSpec, getNonExactDateRangeTimeZone(state.config, timeSelectionEnabled));
|
|
992
|
+
set(draft => {
|
|
993
|
+
draft.dateRangeSpec = normalizedDateRange;
|
|
994
|
+
});
|
|
995
|
+
};
|
|
848
996
|
const syncCriterionAvailability = (set, get) => {
|
|
849
997
|
const criteriaWithRules = (0, criterionAvailability_1.getCriteriaWithAvailabilityRules)(get().config);
|
|
850
998
|
if (!criteriaWithRules.length) {
|
|
@@ -900,6 +1048,7 @@ const checkIfFiltersChanged = (set, get, options) => {
|
|
|
900
1048
|
get().onFiltersUpdate(currentSearchCriteria);
|
|
901
1049
|
set((draft) => {
|
|
902
1050
|
draft.prevSearchCriteria = currentSearchCriteria;
|
|
1051
|
+
draft.appliedSearchCriteria = currentSearchCriteria;
|
|
903
1052
|
draft.hasUnappliedFilters = false;
|
|
904
1053
|
});
|
|
905
1054
|
}
|
|
@@ -908,12 +1057,19 @@ const checkIfFiltersChanged = (set, get, options) => {
|
|
|
908
1057
|
const extractSearchCriteriaFromState = (state) => {
|
|
909
1058
|
const timeSelectionEnabled = isDateRangeTimeSelectionEnabled(state.criteria, state.config);
|
|
910
1059
|
const dateOnlyTimeZone = getConfiguredDateOnlyTimeZone(state.config);
|
|
1060
|
+
const customerLevelDependenciesSatisfied = state.criteria.includes(types_1.CriterionTypeEnum.CUSTOMER_LEVEL)
|
|
1061
|
+
&& state.criteria.includes(types_1.CriterionTypeEnum.MERCHANT)
|
|
1062
|
+
&& state.criteria.includes(types_1.CriterionTypeEnum.CURRENCY)
|
|
1063
|
+
&& (0, customerLevelDependencies_1.getConcreteCustomerLevelMerchantId)(state.multigetCriteria) !== null;
|
|
911
1064
|
return {
|
|
912
1065
|
initialized: true,
|
|
913
1066
|
exactSearchLabel: extractExactSearchLabel(state.exactSearchLabel),
|
|
914
1067
|
exactSearchValue: state.exactSearchValue,
|
|
915
1068
|
ordersSearchLabel: state.ordersSearchLabel,
|
|
916
1069
|
ordersSearchValue: state.ordersSearchValue,
|
|
1070
|
+
customerLevelId: customerLevelDependenciesSatisfied
|
|
1071
|
+
? state.customerLevel?.id ?? null
|
|
1072
|
+
: null,
|
|
917
1073
|
status: extractStatus(state.status),
|
|
918
1074
|
threeD: extract3D(state.threeD),
|
|
919
1075
|
currencies: extractEntitiesIds(state.currencies),
|
|
@@ -947,6 +1103,7 @@ const getTemplate = (templateName, store) => ({
|
|
|
947
1103
|
exactSearchValue: store.exactSearchValue,
|
|
948
1104
|
ordersSearchLabel: store.ordersSearchLabel,
|
|
949
1105
|
ordersSearchValue: store.ordersSearchValue,
|
|
1106
|
+
customerLevel: store.customerLevel,
|
|
950
1107
|
status: store.status,
|
|
951
1108
|
currencies: store.currencies,
|
|
952
1109
|
countries: store.countries,
|
|
@@ -1045,6 +1202,7 @@ exports.OrdersSearchLabelsConfig = {
|
|
|
1045
1202
|
'customer_billing_country': { type: 'country', maxLength: 128 },
|
|
1046
1203
|
'customer_dna_id': { type: 'integer', maxLength: 10 },
|
|
1047
1204
|
'customer_id': { type: 'integer', maxLength: 10 },
|
|
1205
|
+
'merchant_customer_identifier': { type: 'string', maxLength: 128 },
|
|
1048
1206
|
'batch_id': { type: 'integer', maxLength: 10 },
|
|
1049
1207
|
'source_bank_name': { type: 'string', maxLength: 128 },
|
|
1050
1208
|
'source_country': { type: 'country', maxLength: 128 },
|