@reltio/components 1.4.2096 → 1.4.2099

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 (41) hide show
  1. package/BasicTable/basicTableViewState.d.ts +3 -3
  2. package/HOCs/withErrorBoundary/index.d.ts +1 -0
  3. package/HOCs/withErrorBoundary/index.js +1 -0
  4. package/HOCs/withErrorBoundary/withErrorBoundary.d.ts +5 -0
  5. package/HOCs/withErrorBoundary/withErrorBoundary.js +23 -0
  6. package/cjs/BasicTable/basicTableViewState.d.ts +3 -3
  7. package/cjs/HOCs/withErrorBoundary/index.d.ts +1 -0
  8. package/cjs/HOCs/withErrorBoundary/index.js +5 -0
  9. package/cjs/HOCs/withErrorBoundary/withErrorBoundary.d.ts +5 -0
  10. package/cjs/HOCs/withErrorBoundary/withErrorBoundary.js +30 -0
  11. package/cjs/helpers/segments.js +2 -1
  12. package/cjs/hooks/useRelationsLoader/useRelationsLoader.d.ts +2 -5
  13. package/cjs/hooks/useSegmentsLoader/useSegmentsLoader.d.ts +1 -1
  14. package/cjs/hooks/useSegmentsLoader/useSegmentsLoader.js +27 -16
  15. package/cjs/hooks/useSegmentsSizesLoader/index.d.ts +1 -0
  16. package/cjs/hooks/useSegmentsSizesLoader/index.js +5 -0
  17. package/cjs/hooks/useSegmentsSizesLoader/useSegmentsSizesLoader.d.ts +6 -0
  18. package/{hooks/useSegmentsRequest/helper.js → cjs/hooks/useSegmentsSizesLoader/useSegmentsSizesLoader.js} +50 -11
  19. package/cjs/index.d.ts +1 -1
  20. package/cjs/types/basicTable.d.ts +1 -5
  21. package/helpers/segments.js +2 -1
  22. package/hooks/useRelationsLoader/useRelationsLoader.d.ts +2 -5
  23. package/hooks/useSegmentsLoader/useSegmentsLoader.d.ts +1 -1
  24. package/hooks/useSegmentsLoader/useSegmentsLoader.js +28 -17
  25. package/hooks/useSegmentsSizesLoader/index.d.ts +1 -0
  26. package/hooks/useSegmentsSizesLoader/index.js +1 -0
  27. package/hooks/useSegmentsSizesLoader/useSegmentsSizesLoader.d.ts +6 -0
  28. package/{cjs/hooks/useSegmentsRequest/helper.js → hooks/useSegmentsSizesLoader/useSegmentsSizesLoader.js} +46 -15
  29. package/index.d.ts +1 -1
  30. package/package.json +3 -3
  31. package/types/basicTable.d.ts +1 -5
  32. package/cjs/hooks/useSegmentsRequest/helper.d.ts +0 -2
  33. package/cjs/hooks/useSegmentsRequest/index.d.ts +0 -1
  34. package/cjs/hooks/useSegmentsRequest/index.js +0 -5
  35. package/cjs/hooks/useSegmentsRequest/useSegmentsRequest.d.ts +0 -42
  36. package/cjs/hooks/useSegmentsRequest/useSegmentsRequest.js +0 -146
  37. package/hooks/useSegmentsRequest/helper.d.ts +0 -2
  38. package/hooks/useSegmentsRequest/index.d.ts +0 -1
  39. package/hooks/useSegmentsRequest/index.js +0 -1
  40. package/hooks/useSegmentsRequest/useSegmentsRequest.d.ts +0 -42
  41. package/hooks/useSegmentsRequest/useSegmentsRequest.js +0 -142
@@ -1,5 +1,5 @@
1
- import { createStandardAction } from '@reltio/mdm-sdk';
2
- import { ColumnData, ColumnFilter, ColumnSize, Sorting } from '../types/basicTable';
1
+ import { createStandardAction, SortingField } from '@reltio/mdm-sdk';
2
+ import { ColumnData, ColumnFilter, ColumnSize } from '../types/basicTable';
3
3
  export declare enum ActionTypes {
4
4
  CHANGE_COLUMNS = "CHANGE_COLUMNS",
5
5
  TOGGLE_FILTERS = "TOGGLE_FILTERS",
@@ -12,7 +12,7 @@ export type BasicTableState = {
12
12
  visibleColumns: ColumnData['id'][];
13
13
  columnsSize?: ColumnSize[];
14
14
  filters?: Record<ColumnData['id'], ColumnFilter>;
15
- sorting?: Sorting;
15
+ sorting?: SortingField;
16
16
  page: number;
17
17
  rowsPerPage: number;
18
18
  rowsPerPageOptions?: number[];
@@ -0,0 +1 @@
1
+ export { withErrorBoundary } from './withErrorBoundary';
@@ -0,0 +1 @@
1
+ export { withErrorBoundary } from './withErrorBoundary';
@@ -0,0 +1,5 @@
1
+ import React, { ComponentType } from 'react';
2
+ export declare const withErrorBoundary: <P extends Record<string, unknown>>(Component: ComponentType<P>) => {
3
+ (props: P): React.JSX.Element;
4
+ displayName: string;
5
+ };
@@ -0,0 +1,23 @@
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
+ import React from 'react';
13
+ import i18n from 'ui-i18n';
14
+ import { EMPTY_STATE_ICONS, EMPTY_STATE_VARIANTS, EmptyState } from '../../EmptyState';
15
+ import { ErrorBoundary } from '../../ErrorBoundary';
16
+ export var withErrorBoundary = function (Component) {
17
+ var WithErrorBoundary = function (props) {
18
+ return (React.createElement(ErrorBoundary, { error: React.createElement(EmptyState, { LogoRenderer: EMPTY_STATE_ICONS.ERROR, text: "", secondaryText: i18n.text('Something went wrong'), variant: EMPTY_STATE_VARIANTS.small }) },
19
+ React.createElement(Component, __assign({}, props))));
20
+ };
21
+ WithErrorBoundary.displayName = 'WithErrorBoundary';
22
+ return WithErrorBoundary;
23
+ };
@@ -1,5 +1,5 @@
1
- import { createStandardAction } from '@reltio/mdm-sdk';
2
- import { ColumnData, ColumnFilter, ColumnSize, Sorting } from '../types/basicTable';
1
+ import { createStandardAction, SortingField } from '@reltio/mdm-sdk';
2
+ import { ColumnData, ColumnFilter, ColumnSize } from '../types/basicTable';
3
3
  export declare enum ActionTypes {
4
4
  CHANGE_COLUMNS = "CHANGE_COLUMNS",
5
5
  TOGGLE_FILTERS = "TOGGLE_FILTERS",
@@ -12,7 +12,7 @@ export type BasicTableState = {
12
12
  visibleColumns: ColumnData['id'][];
13
13
  columnsSize?: ColumnSize[];
14
14
  filters?: Record<ColumnData['id'], ColumnFilter>;
15
- sorting?: Sorting;
15
+ sorting?: SortingField;
16
16
  page: number;
17
17
  rowsPerPage: number;
18
18
  rowsPerPageOptions?: number[];
@@ -0,0 +1 @@
1
+ export { withErrorBoundary } from './withErrorBoundary';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.withErrorBoundary = void 0;
4
+ var withErrorBoundary_1 = require("./withErrorBoundary");
5
+ Object.defineProperty(exports, "withErrorBoundary", { enumerable: true, get: function () { return withErrorBoundary_1.withErrorBoundary; } });
@@ -0,0 +1,5 @@
1
+ import React, { ComponentType } from 'react';
2
+ export declare const withErrorBoundary: <P extends Record<string, unknown>>(Component: ComponentType<P>) => {
3
+ (props: P): React.JSX.Element;
4
+ displayName: string;
5
+ };
@@ -0,0 +1,30 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.withErrorBoundary = void 0;
18
+ var react_1 = __importDefault(require("react"));
19
+ var ui_i18n_1 = __importDefault(require("ui-i18n"));
20
+ var EmptyState_1 = require("../../EmptyState");
21
+ var ErrorBoundary_1 = require("../../ErrorBoundary");
22
+ var withErrorBoundary = function (Component) {
23
+ var WithErrorBoundary = function (props) {
24
+ return (react_1.default.createElement(ErrorBoundary_1.ErrorBoundary, { error: react_1.default.createElement(EmptyState_1.EmptyState, { LogoRenderer: EmptyState_1.EMPTY_STATE_ICONS.ERROR, text: "", secondaryText: ui_i18n_1.default.text('Something went wrong'), variant: EmptyState_1.EMPTY_STATE_VARIANTS.small }) },
25
+ react_1.default.createElement(Component, __assign({}, props))));
26
+ };
27
+ WithErrorBoundary.displayName = 'WithErrorBoundary';
28
+ return WithErrorBoundary;
29
+ };
30
+ exports.withErrorBoundary = withErrorBoundary;
@@ -31,6 +31,7 @@ var getFilterClauseBuilder = (0, ramda_1.cond)([
31
31
  [(0, ramda_1.equals)('searchValue'), function () { return buildSearchValueFilterClause; }]
32
32
  ]);
33
33
  exports.buildSegmentsFilterString = (0, ramda_1.pipe)((0, ramda_1.defaultTo)({}), (0, ramda_1.reject)(mdm_sdk_1.isEmptyValue), ramda_1.toPairs, (0, ramda_1.map)(function (_a) {
34
+ var _b;
34
35
  var key = _a[0], value = _a[1];
35
- return getFilterClauseBuilder(key)(value);
36
+ return (_b = getFilterClauseBuilder(key)) === null || _b === void 0 ? void 0 : _b(value);
36
37
  }), (0, ramda_1.reject)(mdm_sdk_1.isEmptyValue), (0, ramda_1.map)(mdm_sdk_1.wrapInBrackets), (0, ramda_1.join)(' and '));
@@ -1,9 +1,6 @@
1
- import { ActivityFilter, Entity, Mode, RelationsViewConfig, RelationsTableViewConfig } from '@reltio/mdm-sdk';
1
+ import { ActivityFilter, Entity, Mode, RelationsViewConfig, RelationsTableViewConfig, SortingField } from '@reltio/mdm-sdk';
2
2
  type Props = {
3
- sorting?: {
4
- field: string;
5
- order: string;
6
- };
3
+ sorting?: SortingField;
7
4
  filter?: string;
8
5
  page: number;
9
6
  rowsPerPage: number;
@@ -7,7 +7,7 @@ type Props = {
7
7
  filters?: SegmentationFilters;
8
8
  };
9
9
  export declare const useSegmentsLoader: ({ sorting, rowsPerPage, page, filters }: Props) => {
10
- requestState: RequestStates;
10
+ state: RequestStates;
11
11
  segments: NewSegment[];
12
12
  total: number;
13
13
  reload: () => Promise<void>;
@@ -42,50 +42,61 @@ var ramda_1 = require("ramda");
42
42
  var mdm_sdk_1 = require("@reltio/mdm-sdk");
43
43
  var types_1 = require("../../types");
44
44
  var segments_1 = require("../../helpers/segments");
45
+ var PageRequestsAbortingContext_1 = require("../../contexts/PageRequestsAbortingContext");
45
46
  var useSegmentsLoader = function (_a) {
46
47
  var sorting = _a.sorting, rowsPerPage = _a.rowsPerPage, page = _a.page, filters = _a.filters;
48
+ var signal = (0, react_1.useContext)(PageRequestsAbortingContext_1.PageRequestsAbortingContext);
47
49
  var _b = (0, react_1.useState)(types_1.RequestStates.INIT), requestState = _b[0], setRequestState = _b[1];
48
50
  var _c = (0, react_1.useState)([]), segments = _c[0], setSegments = _c[1];
49
- var _d = (0, react_1.useState)(0), segmentsTotal = _d[0], setSegmentsTotal = _d[1];
51
+ var _d = (0, react_1.useState)(0), total = _d[0], setTotal = _d[1];
50
52
  var _e = sorting || {}, sort = _e.field, order = _e.order;
51
53
  var filterString = (0, segments_1.buildSegmentsFilterString)(filters);
52
- var segmentsRequestParams = (0, react_1.useMemo)(function () { return (0, ramda_1.reject)(mdm_sdk_1.isEmptyValue, { sort: sort, order: order, max: rowsPerPage, offset: page * rowsPerPage, filter: filterString }); }, [sort, order, rowsPerPage, page, filterString]);
54
+ var params = (0, react_1.useMemo)(function () {
55
+ return (0, ramda_1.reject)(mdm_sdk_1.isEmptyValue, {
56
+ signal: signal,
57
+ sort: sort,
58
+ order: order,
59
+ max: rowsPerPage,
60
+ offset: page * rowsPerPage,
61
+ filter: filterString
62
+ });
63
+ }, [sort, order, rowsPerPage, page, filterString, signal]);
53
64
  var loadRequest = (0, react_1.useCallback)(function () { return __awaiter(void 0, void 0, void 0, function () {
54
- var _a, segments_2, total, error_1;
55
- return __generator(this, function (_b) {
56
- switch (_b.label) {
65
+ var response, error_1;
66
+ return __generator(this, function (_a) {
67
+ switch (_a.label) {
57
68
  case 0:
58
69
  setRequestState(types_1.RequestStates.LOADING);
59
- _b.label = 1;
70
+ _a.label = 1;
60
71
  case 1:
61
- _b.trys.push([1, 3, , 4]);
62
- return [4 /*yield*/, (0, mdm_sdk_1.getSegments)(segmentsRequestParams)];
72
+ _a.trys.push([1, 3, , 4]);
73
+ return [4 /*yield*/, (0, mdm_sdk_1.getSegments)(params)];
63
74
  case 2:
64
- _a = _b.sent(), segments_2 = _a.segments, total = _a.total;
65
- setSegments(segments_2 !== null && segments_2 !== void 0 ? segments_2 : []);
66
- setSegmentsTotal(total);
75
+ response = _a.sent();
76
+ setSegments(response.segments || []);
77
+ setTotal(response.total);
67
78
  setRequestState(types_1.RequestStates.LOADED);
68
79
  return [3 /*break*/, 4];
69
80
  case 3:
70
- error_1 = _b.sent();
81
+ error_1 = _a.sent();
71
82
  console.warn(error_1);
72
83
  if (!(0, mdm_sdk_1.isAbortError)(error_1)) {
73
84
  setSegments([]);
74
- setSegmentsTotal(0);
85
+ setTotal(0);
75
86
  }
76
87
  setRequestState(types_1.RequestStates.ERROR);
77
88
  return [3 /*break*/, 4];
78
89
  case 4: return [2 /*return*/];
79
90
  }
80
91
  });
81
- }); }, [segmentsRequestParams]);
92
+ }); }, [params]);
82
93
  (0, react_1.useEffect)(function () {
83
94
  loadRequest();
84
95
  }, [loadRequest]);
85
96
  return {
86
- requestState: requestState,
97
+ state: requestState,
87
98
  segments: segments,
88
- total: segmentsTotal,
99
+ total: total,
89
100
  reload: loadRequest
90
101
  };
91
102
  };
@@ -0,0 +1 @@
1
+ export { useSegmentsSizesLoader } from './useSegmentsSizesLoader';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useSegmentsSizesLoader = void 0;
4
+ var useSegmentsSizesLoader_1 = require("./useSegmentsSizesLoader");
5
+ Object.defineProperty(exports, "useSegmentsSizesLoader", { enumerable: true, get: function () { return useSegmentsSizesLoader_1.useSegmentsSizesLoader; } });
@@ -0,0 +1,6 @@
1
+ import { NewSegment } from '@reltio/mdm-sdk';
2
+ type SegmentsSizes = {
3
+ [id: string]: number;
4
+ };
5
+ export declare const useSegmentsSizesLoader: (segments: NewSegment[]) => SegmentsSizes;
6
+ export {};
@@ -1,3 +1,15 @@
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
+ };
1
13
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
14
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
15
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -34,14 +46,41 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
34
46
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
47
  }
36
48
  };
37
- export var getAudienceCount = function (segments) { return __awaiter(void 0, void 0, void 0, function () {
38
- return __generator(this, function (_a) {
39
- return [2 /*return*/, segments.reduce(function (acc, segment) {
40
- acc[segment.uri] = {
41
- isLoading: false,
42
- count: Math.floor(Math.random() * 100000)
43
- };
44
- return acc;
45
- }, {})];
46
- });
47
- }); };
49
+ Object.defineProperty(exports, "__esModule", { value: true });
50
+ exports.useSegmentsSizesLoader = void 0;
51
+ var react_1 = require("react");
52
+ var mdm_sdk_1 = require("@reltio/mdm-sdk");
53
+ var PageRequestsAbortingContext_1 = require("../../contexts/PageRequestsAbortingContext");
54
+ var useSegmentsSizesLoader = function (segments) {
55
+ var _a = (0, react_1.useState)({}), segmentsSizes = _a[0], setSegmentsSizes = _a[1];
56
+ var signal = (0, react_1.useContext)(PageRequestsAbortingContext_1.PageRequestsAbortingContext);
57
+ (0, react_1.useEffect)(function () {
58
+ segments.forEach(function (segment) { return __awaiter(void 0, void 0, void 0, function () {
59
+ var total_1, _a;
60
+ return __generator(this, function (_b) {
61
+ switch (_b.label) {
62
+ case 0:
63
+ _b.trys.push([0, 2, , 3]);
64
+ return [4 /*yield*/, (0, mdm_sdk_1.getSegmentTotal)({ segmentId: segment.id, signal: signal })];
65
+ case 1:
66
+ total_1 = (_b.sent()).total;
67
+ setSegmentsSizes(function (prevSegmentsSize) {
68
+ var _a;
69
+ return __assign(__assign({}, prevSegmentsSize), (_a = {}, _a[segment.id] = total_1, _a));
70
+ });
71
+ return [3 /*break*/, 3];
72
+ case 2:
73
+ _a = _b.sent();
74
+ setSegmentsSizes(function (prevSegmentsSize) {
75
+ var _a;
76
+ return __assign(__assign({}, prevSegmentsSize), (_a = {}, _a[segment.id] = null, _a));
77
+ });
78
+ return [3 /*break*/, 3];
79
+ case 3: return [2 /*return*/];
80
+ }
81
+ });
82
+ }); });
83
+ }, [segments, signal]);
84
+ return segmentsSizes;
85
+ };
86
+ exports.useSegmentsSizesLoader = useSegmentsSizesLoader;
package/cjs/index.d.ts CHANGED
@@ -286,7 +286,7 @@ export { getNestedPathByColumnId, getAttributeHeight, getAttrPathFromColumnId }
286
286
  export type { AttributeFiltersComponentProps } from './AttributesFiltersBuilder';
287
287
  export type { ChartData } from './types/charts';
288
288
  export type { AddInlineAttributeEvent, DeleteInlineAttributeEvent, EditInlineAttributeEvent, IgnoreInlineAttributeEvent, PinInlineAttributeEvent } from './types/inlineAttributes';
289
- export type { ColumnData, ColumnSize, ColumnFilter, Sorting, GroupedColumnsData, GroupedColumns, RenderRowCellProps, RowId, ElementsRowsData, TableRowsData, RowValue, DraggableProps } from './types/basicTable';
289
+ export type { ColumnData, ColumnSize, ColumnFilter, GroupedColumnsData, GroupedColumns, RenderRowCellProps, RowId, ElementsRowsData, TableRowsData, RowValue, DraggableProps } from './types/basicTable';
290
290
  export * from './types/preferences';
291
291
  export * from './types';
292
292
  export * from './constants';
@@ -1,11 +1,7 @@
1
1
  import React from 'react';
2
- import { DataTypeDefinition, SearchValue, SortOrder } from '@reltio/mdm-sdk';
2
+ import { DataTypeDefinition, SearchValue } from '@reltio/mdm-sdk';
3
3
  import { useCollapsibleTableRows } from '../hooks/useCollapsibleTableRows';
4
4
  import { DraggableAttributes } from '@dnd-kit/core';
5
- export type Sorting = {
6
- field: string;
7
- order: SortOrder;
8
- };
9
5
  export type ColumnFilter = {
10
6
  filter: string;
11
7
  value?: SearchValue;
@@ -28,6 +28,7 @@ var getFilterClauseBuilder = cond([
28
28
  [equals('searchValue'), function () { return buildSearchValueFilterClause; }]
29
29
  ]);
30
30
  export var buildSegmentsFilterString = pipe(defaultTo({}), reject(isEmptyValue), toPairs, map(function (_a) {
31
+ var _b;
31
32
  var key = _a[0], value = _a[1];
32
- return getFilterClauseBuilder(key)(value);
33
+ return (_b = getFilterClauseBuilder(key)) === null || _b === void 0 ? void 0 : _b(value);
33
34
  }), reject(isEmptyValue), map(wrapInBrackets), join(' and '));
@@ -1,9 +1,6 @@
1
- import { ActivityFilter, Entity, Mode, RelationsViewConfig, RelationsTableViewConfig } from '@reltio/mdm-sdk';
1
+ import { ActivityFilter, Entity, Mode, RelationsViewConfig, RelationsTableViewConfig, SortingField } from '@reltio/mdm-sdk';
2
2
  type Props = {
3
- sorting?: {
4
- field: string;
5
- order: string;
6
- };
3
+ sorting?: SortingField;
7
4
  filter?: string;
8
5
  page: number;
9
6
  rowsPerPage: number;
@@ -7,7 +7,7 @@ type Props = {
7
7
  filters?: SegmentationFilters;
8
8
  };
9
9
  export declare const useSegmentsLoader: ({ sorting, rowsPerPage, page, filters }: Props) => {
10
- requestState: RequestStates;
10
+ state: RequestStates;
11
11
  segments: NewSegment[];
12
12
  total: number;
13
13
  reload: () => Promise<void>;
@@ -34,55 +34,66 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
34
34
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
35
  }
36
36
  };
37
- import { useCallback, useEffect, useMemo, useState } from 'react';
37
+ import { useCallback, useContext, useEffect, useMemo, useState } from 'react';
38
38
  import { reject } from 'ramda';
39
39
  import { getSegments, isAbortError, isEmptyValue } from '@reltio/mdm-sdk';
40
40
  import { RequestStates } from '../../types';
41
41
  import { buildSegmentsFilterString } from '../../helpers/segments';
42
+ import { PageRequestsAbortingContext } from '../../contexts/PageRequestsAbortingContext';
42
43
  export var useSegmentsLoader = function (_a) {
43
44
  var sorting = _a.sorting, rowsPerPage = _a.rowsPerPage, page = _a.page, filters = _a.filters;
45
+ var signal = useContext(PageRequestsAbortingContext);
44
46
  var _b = useState(RequestStates.INIT), requestState = _b[0], setRequestState = _b[1];
45
47
  var _c = useState([]), segments = _c[0], setSegments = _c[1];
46
- var _d = useState(0), segmentsTotal = _d[0], setSegmentsTotal = _d[1];
48
+ var _d = useState(0), total = _d[0], setTotal = _d[1];
47
49
  var _e = sorting || {}, sort = _e.field, order = _e.order;
48
50
  var filterString = buildSegmentsFilterString(filters);
49
- var segmentsRequestParams = useMemo(function () { return reject(isEmptyValue, { sort: sort, order: order, max: rowsPerPage, offset: page * rowsPerPage, filter: filterString }); }, [sort, order, rowsPerPage, page, filterString]);
51
+ var params = useMemo(function () {
52
+ return reject(isEmptyValue, {
53
+ signal: signal,
54
+ sort: sort,
55
+ order: order,
56
+ max: rowsPerPage,
57
+ offset: page * rowsPerPage,
58
+ filter: filterString
59
+ });
60
+ }, [sort, order, rowsPerPage, page, filterString, signal]);
50
61
  var loadRequest = useCallback(function () { return __awaiter(void 0, void 0, void 0, function () {
51
- var _a, segments_1, total, error_1;
52
- return __generator(this, function (_b) {
53
- switch (_b.label) {
62
+ var response, error_1;
63
+ return __generator(this, function (_a) {
64
+ switch (_a.label) {
54
65
  case 0:
55
66
  setRequestState(RequestStates.LOADING);
56
- _b.label = 1;
67
+ _a.label = 1;
57
68
  case 1:
58
- _b.trys.push([1, 3, , 4]);
59
- return [4 /*yield*/, getSegments(segmentsRequestParams)];
69
+ _a.trys.push([1, 3, , 4]);
70
+ return [4 /*yield*/, getSegments(params)];
60
71
  case 2:
61
- _a = _b.sent(), segments_1 = _a.segments, total = _a.total;
62
- setSegments(segments_1 !== null && segments_1 !== void 0 ? segments_1 : []);
63
- setSegmentsTotal(total);
72
+ response = _a.sent();
73
+ setSegments(response.segments || []);
74
+ setTotal(response.total);
64
75
  setRequestState(RequestStates.LOADED);
65
76
  return [3 /*break*/, 4];
66
77
  case 3:
67
- error_1 = _b.sent();
78
+ error_1 = _a.sent();
68
79
  console.warn(error_1);
69
80
  if (!isAbortError(error_1)) {
70
81
  setSegments([]);
71
- setSegmentsTotal(0);
82
+ setTotal(0);
72
83
  }
73
84
  setRequestState(RequestStates.ERROR);
74
85
  return [3 /*break*/, 4];
75
86
  case 4: return [2 /*return*/];
76
87
  }
77
88
  });
78
- }); }, [segmentsRequestParams]);
89
+ }); }, [params]);
79
90
  useEffect(function () {
80
91
  loadRequest();
81
92
  }, [loadRequest]);
82
93
  return {
83
- requestState: requestState,
94
+ state: requestState,
84
95
  segments: segments,
85
- total: segmentsTotal,
96
+ total: total,
86
97
  reload: loadRequest
87
98
  };
88
99
  };
@@ -0,0 +1 @@
1
+ export { useSegmentsSizesLoader } from './useSegmentsSizesLoader';
@@ -0,0 +1 @@
1
+ export { useSegmentsSizesLoader } from './useSegmentsSizesLoader';
@@ -0,0 +1,6 @@
1
+ import { NewSegment } from '@reltio/mdm-sdk';
2
+ type SegmentsSizes = {
3
+ [id: string]: number;
4
+ };
5
+ export declare const useSegmentsSizesLoader: (segments: NewSegment[]) => SegmentsSizes;
6
+ export {};
@@ -1,4 +1,14 @@
1
- "use strict";
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
+ };
2
12
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
13
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
14
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -35,17 +45,38 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
35
45
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
46
  }
37
47
  };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.getAudienceCount = void 0;
40
- var getAudienceCount = function (segments) { return __awaiter(void 0, void 0, void 0, function () {
41
- return __generator(this, function (_a) {
42
- return [2 /*return*/, segments.reduce(function (acc, segment) {
43
- acc[segment.uri] = {
44
- isLoading: false,
45
- count: Math.floor(Math.random() * 100000)
46
- };
47
- return acc;
48
- }, {})];
49
- });
50
- }); };
51
- exports.getAudienceCount = getAudienceCount;
48
+ import { useContext, useEffect, useState } from 'react';
49
+ import { getSegmentTotal } from '@reltio/mdm-sdk';
50
+ import { PageRequestsAbortingContext } from '../../contexts/PageRequestsAbortingContext';
51
+ export var useSegmentsSizesLoader = function (segments) {
52
+ var _a = useState({}), segmentsSizes = _a[0], setSegmentsSizes = _a[1];
53
+ var signal = useContext(PageRequestsAbortingContext);
54
+ useEffect(function () {
55
+ segments.forEach(function (segment) { return __awaiter(void 0, void 0, void 0, function () {
56
+ var total_1, _a;
57
+ return __generator(this, function (_b) {
58
+ switch (_b.label) {
59
+ case 0:
60
+ _b.trys.push([0, 2, , 3]);
61
+ return [4 /*yield*/, getSegmentTotal({ segmentId: segment.id, signal: signal })];
62
+ case 1:
63
+ total_1 = (_b.sent()).total;
64
+ setSegmentsSizes(function (prevSegmentsSize) {
65
+ var _a;
66
+ return __assign(__assign({}, prevSegmentsSize), (_a = {}, _a[segment.id] = total_1, _a));
67
+ });
68
+ return [3 /*break*/, 3];
69
+ case 2:
70
+ _a = _b.sent();
71
+ setSegmentsSizes(function (prevSegmentsSize) {
72
+ var _a;
73
+ return __assign(__assign({}, prevSegmentsSize), (_a = {}, _a[segment.id] = null, _a));
74
+ });
75
+ return [3 /*break*/, 3];
76
+ case 3: return [2 /*return*/];
77
+ }
78
+ });
79
+ }); });
80
+ }, [segments, signal]);
81
+ return segmentsSizes;
82
+ };
package/index.d.ts CHANGED
@@ -286,7 +286,7 @@ export { getNestedPathByColumnId, getAttributeHeight, getAttrPathFromColumnId }
286
286
  export type { AttributeFiltersComponentProps } from './AttributesFiltersBuilder';
287
287
  export type { ChartData } from './types/charts';
288
288
  export type { AddInlineAttributeEvent, DeleteInlineAttributeEvent, EditInlineAttributeEvent, IgnoreInlineAttributeEvent, PinInlineAttributeEvent } from './types/inlineAttributes';
289
- export type { ColumnData, ColumnSize, ColumnFilter, Sorting, GroupedColumnsData, GroupedColumns, RenderRowCellProps, RowId, ElementsRowsData, TableRowsData, RowValue, DraggableProps } from './types/basicTable';
289
+ export type { ColumnData, ColumnSize, ColumnFilter, GroupedColumnsData, GroupedColumns, RenderRowCellProps, RowId, ElementsRowsData, TableRowsData, RowValue, DraggableProps } from './types/basicTable';
290
290
  export * from './types/preferences';
291
291
  export * from './types';
292
292
  export * from './constants';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reltio/components",
3
- "version": "1.4.2096",
3
+ "version": "1.4.2099",
4
4
  "license": "SEE LICENSE IN LICENSE FILE",
5
5
  "main": "./cjs/index.js",
6
6
  "module": "./index.js",
@@ -11,7 +11,7 @@
11
11
  "@fluentui/react-context-selector": "^9.1.26",
12
12
  "@googlemaps/markerclusterer": "^2.5.3",
13
13
  "@react-sigma/core": "3.4.0",
14
- "@reltio/mdm-sdk": "^1.4.1934",
14
+ "@reltio/mdm-sdk": "^1.4.1937",
15
15
  "@vis.gl/react-google-maps": "^1.3.0",
16
16
  "d3-cloud": "^1.2.5",
17
17
  "d3-geo": "^2.0.1",
@@ -28,7 +28,7 @@
28
28
  "react-dnd-html5-backend": "^10.0.2",
29
29
  "react-grid-layout": "1.4.2",
30
30
  "react-lifecycles-compat": "^3.0.4",
31
- "react-mentions": "4.3.0",
31
+ "react-mentions": "^4.3.0",
32
32
  "react-number-format": "^4.9.2",
33
33
  "react-resizable-panels": "^2.0.20",
34
34
  "react-router-dom": "^6.2.1",
@@ -1,11 +1,7 @@
1
1
  import React from 'react';
2
- import { DataTypeDefinition, SearchValue, SortOrder } from '@reltio/mdm-sdk';
2
+ import { DataTypeDefinition, SearchValue } from '@reltio/mdm-sdk';
3
3
  import { useCollapsibleTableRows } from '../hooks/useCollapsibleTableRows';
4
4
  import { DraggableAttributes } from '@dnd-kit/core';
5
- export type Sorting = {
6
- field: string;
7
- order: SortOrder;
8
- };
9
5
  export type ColumnFilter = {
10
6
  filter: string;
11
7
  value?: SearchValue;
@@ -1,2 +0,0 @@
1
- import { Segment } from '@reltio/mdm-sdk';
2
- export declare const getAudienceCount: (segments: Segment[]) => Promise<{}>;
@@ -1 +0,0 @@
1
- export { useSegmentsRequest } from './useSegmentsRequest';
@@ -1,5 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useSegmentsRequest = void 0;
4
- var useSegmentsRequest_1 = require("./useSegmentsRequest");
5
- Object.defineProperty(exports, "useSegmentsRequest", { enumerable: true, get: function () { return useSegmentsRequest_1.useSegmentsRequest; } });
@@ -1,42 +0,0 @@
1
- import { SavedSearchesOptions, SavedSearchType, SortOrder } from '@reltio/mdm-sdk';
2
- import { RequestStates } from '../../types';
3
- type Props = {
4
- options?: SavedSearchesOptions;
5
- defaultRowsPerPage: number;
6
- };
7
- export declare const useSegmentsRequest: ({ options, defaultRowsPerPage }: Props) => {
8
- data: {
9
- uri: string;
10
- name: string;
11
- description?: string;
12
- query: string;
13
- isFavorite: boolean;
14
- uiState: Record<string, any>;
15
- createDate: number;
16
- updateDate: number;
17
- isPublic: boolean;
18
- count: number;
19
- owner: string;
20
- type: SavedSearchType;
21
- isLoadingTotal?: boolean;
22
- }[];
23
- total: number;
24
- page: number;
25
- rowsPerPage: number;
26
- audienceCountMap: Record<string, {
27
- isLoading?: boolean;
28
- count?: number;
29
- }>;
30
- loadingState: RequestStates;
31
- reload: () => void;
32
- updateRowsPerPage: import("react").Dispatch<import("react").SetStateAction<number>>;
33
- updatePage: import("react").Dispatch<import("react").SetStateAction<number>>;
34
- loadSegments: () => Promise<void>;
35
- nameSortOrder: SortOrder;
36
- setNameSortOrder: import("react").Dispatch<import("react").SetStateAction<SortOrder>>;
37
- favoriteOnly: boolean;
38
- setFavoriteOnly: import("react").Dispatch<import("react").SetStateAction<boolean>>;
39
- containsWordStartingWith: string;
40
- setContainsWordStartingWith: import("react").Dispatch<import("react").SetStateAction<string>>;
41
- };
42
- export {};
@@ -1,146 +0,0 @@
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
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
- return new (P || (P = Promise))(function (resolve, reject) {
16
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
- step((generator = generator.apply(thisArg, _arguments || [])).next());
20
- });
21
- };
22
- var __generator = (this && this.__generator) || function (thisArg, body) {
23
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
24
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
- function verb(n) { return function (v) { return step([n, v]); }; }
26
- function step(op) {
27
- if (f) throw new TypeError("Generator is already executing.");
28
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
29
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
- if (y = 0, t) op = [op[0] & 2, t.value];
31
- switch (op[0]) {
32
- case 0: case 1: t = op; break;
33
- case 4: _.label++; return { value: op[1], done: false };
34
- case 5: _.label++; y = op[1]; op = [0]; continue;
35
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
- default:
37
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
- if (t[2]) _.ops.pop();
42
- _.trys.pop(); continue;
43
- }
44
- op = body.call(thisArg, _);
45
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
- }
48
- };
49
- Object.defineProperty(exports, "__esModule", { value: true });
50
- exports.useSegmentsRequest = void 0;
51
- var react_1 = require("react");
52
- var ramda_1 = require("ramda");
53
- var PageRequestsAbortingContext_1 = require("../../contexts/PageRequestsAbortingContext");
54
- var mdm_sdk_1 = require("@reltio/mdm-sdk");
55
- var helper_1 = require("./helper");
56
- var types_1 = require("../../types");
57
- var useSegmentsRequest = function (_a) {
58
- var options = _a.options, defaultRowsPerPage = _a.defaultRowsPerPage;
59
- var _b = (0, react_1.useState)(0), page = _b[0], setPage = _b[1];
60
- var _c = (0, react_1.useState)(defaultRowsPerPage), rowsPerPage = _c[0], setRowsPerPage = _c[1];
61
- var _d = (0, react_1.useState)([]), data = _d[0], setData = _d[1];
62
- var _e = (0, react_1.useState)(0), total = _e[0], setTotal = _e[1];
63
- var _f = (0, react_1.useState)({}), audienceCountMap = _f[0], setAudienceCountMap = _f[1];
64
- var _g = (0, react_1.useState)(types_1.RequestStates.INIT), loadingState = _g[0], setLoadingState = _g[1];
65
- var _h = (0, react_1.useState)(null), nameSortOrder = _h[0], setNameSortOrder = _h[1];
66
- var _j = (0, react_1.useState)(false), favoriteOnly = _j[0], setFavoriteOnly = _j[1];
67
- var _k = (0, react_1.useState)(''), containsWordStartingWith = _k[0], setContainsWordStartingWith = _k[1];
68
- var signal = (0, react_1.useContext)(PageRequestsAbortingContext_1.PageRequestsAbortingContext);
69
- var allOptions = (0, react_1.useMemo)(function () { return (__assign(__assign({}, options), { containsWordStartingWith: containsWordStartingWith
70
- ? containsWordStartingWith
71
- : options === null || options === void 0 ? void 0 : options.containsWordStartingWith, sortBy: nameSortOrder ? 'NAME' : options === null || options === void 0 ? void 0 : options.sortBy, sortOrder: nameSortOrder ? nameSortOrder : options === null || options === void 0 ? void 0 : options.sortOrder, favoriteOnly: favoriteOnly ? favoriteOnly : options === null || options === void 0 ? void 0 : options.favoriteOnly, max: rowsPerPage, offset: rowsPerPage * page })); }, [options, page, rowsPerPage, containsWordStartingWith, nameSortOrder, favoriteOnly]);
72
- var loadSegments = (0, react_1.useCallback)(function () { return __awaiter(void 0, void 0, void 0, function () {
73
- var _a, _b, segments, total_1, audienceCountMap_1, error_1;
74
- return __generator(this, function (_c) {
75
- switch (_c.label) {
76
- case 0:
77
- setLoadingState(types_1.RequestStates.LOADING);
78
- _c.label = 1;
79
- case 1:
80
- _c.trys.push([1, 4, , 5]);
81
- return [4 /*yield*/, (0, mdm_sdk_1.getSavedSearches)(__assign(__assign({}, allOptions), { type: mdm_sdk_1.SavedSearchType.SEGMENTATION }), signal)];
82
- case 2:
83
- _a = _c.sent(), _b = _a.result, segments = _b === void 0 ? [] : _b, total_1 = _a.total;
84
- return [4 /*yield*/, (0, helper_1.getAudienceCount)(segments)];
85
- case 3:
86
- audienceCountMap_1 = _c.sent();
87
- setAudienceCountMap(audienceCountMap_1);
88
- setData(segments || []);
89
- setTotal(total_1);
90
- setLoadingState(types_1.RequestStates.LOADED);
91
- return [3 /*break*/, 5];
92
- case 4:
93
- error_1 = _c.sent();
94
- console.warn(error_1);
95
- if (!(0, mdm_sdk_1.isAbortError)(error_1)) {
96
- setLoadingState(types_1.RequestStates.ERROR);
97
- setData([]);
98
- }
99
- return [3 /*break*/, 5];
100
- case 5: return [2 /*return*/];
101
- }
102
- });
103
- }); }, [allOptions, signal]);
104
- var segmentsWithAudienceCount = (0, react_1.useMemo)(function () {
105
- return data.map(function (segment) {
106
- var _a;
107
- var _b = (_a = audienceCountMap[segment.uri]) !== null && _a !== void 0 ? _a : {}, count = _b.count, isLoading = _b.isLoading;
108
- var segmentWithAudienceCount = __assign({}, segment);
109
- if (!(0, ramda_1.isNil)(count))
110
- segmentWithAudienceCount.count = count;
111
- if (!(0, ramda_1.isNil)(isLoading))
112
- segmentWithAudienceCount.isLoadingTotal = isLoading;
113
- return segmentWithAudienceCount;
114
- });
115
- }, [data, audienceCountMap]);
116
- (0, react_1.useEffect)(function () {
117
- loadSegments();
118
- }, [loadSegments]);
119
- var reload = (0, react_1.useCallback)(function () {
120
- setPage(0);
121
- setRowsPerPage(defaultRowsPerPage);
122
- setNameSortOrder(null);
123
- setFavoriteOnly(false);
124
- setContainsWordStartingWith('');
125
- loadSegments();
126
- }, [defaultRowsPerPage, loadSegments]);
127
- return {
128
- data: segmentsWithAudienceCount,
129
- total: total,
130
- page: page,
131
- rowsPerPage: rowsPerPage,
132
- audienceCountMap: audienceCountMap,
133
- loadingState: loadingState,
134
- reload: reload,
135
- updateRowsPerPage: setRowsPerPage,
136
- updatePage: setPage,
137
- loadSegments: loadSegments,
138
- nameSortOrder: nameSortOrder,
139
- setNameSortOrder: setNameSortOrder,
140
- favoriteOnly: favoriteOnly,
141
- setFavoriteOnly: setFavoriteOnly,
142
- containsWordStartingWith: containsWordStartingWith,
143
- setContainsWordStartingWith: setContainsWordStartingWith
144
- };
145
- };
146
- exports.useSegmentsRequest = useSegmentsRequest;
@@ -1,2 +0,0 @@
1
- import { Segment } from '@reltio/mdm-sdk';
2
- export declare const getAudienceCount: (segments: Segment[]) => Promise<{}>;
@@ -1 +0,0 @@
1
- export { useSegmentsRequest } from './useSegmentsRequest';
@@ -1 +0,0 @@
1
- export { useSegmentsRequest } from './useSegmentsRequest';
@@ -1,42 +0,0 @@
1
- import { SavedSearchesOptions, SavedSearchType, SortOrder } from '@reltio/mdm-sdk';
2
- import { RequestStates } from '../../types';
3
- type Props = {
4
- options?: SavedSearchesOptions;
5
- defaultRowsPerPage: number;
6
- };
7
- export declare const useSegmentsRequest: ({ options, defaultRowsPerPage }: Props) => {
8
- data: {
9
- uri: string;
10
- name: string;
11
- description?: string;
12
- query: string;
13
- isFavorite: boolean;
14
- uiState: Record<string, any>;
15
- createDate: number;
16
- updateDate: number;
17
- isPublic: boolean;
18
- count: number;
19
- owner: string;
20
- type: SavedSearchType;
21
- isLoadingTotal?: boolean;
22
- }[];
23
- total: number;
24
- page: number;
25
- rowsPerPage: number;
26
- audienceCountMap: Record<string, {
27
- isLoading?: boolean;
28
- count?: number;
29
- }>;
30
- loadingState: RequestStates;
31
- reload: () => void;
32
- updateRowsPerPage: import("react").Dispatch<import("react").SetStateAction<number>>;
33
- updatePage: import("react").Dispatch<import("react").SetStateAction<number>>;
34
- loadSegments: () => Promise<void>;
35
- nameSortOrder: SortOrder;
36
- setNameSortOrder: import("react").Dispatch<import("react").SetStateAction<SortOrder>>;
37
- favoriteOnly: boolean;
38
- setFavoriteOnly: import("react").Dispatch<import("react").SetStateAction<boolean>>;
39
- containsWordStartingWith: string;
40
- setContainsWordStartingWith: import("react").Dispatch<import("react").SetStateAction<string>>;
41
- };
42
- export {};
@@ -1,142 +0,0 @@
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
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
13
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
14
- return new (P || (P = Promise))(function (resolve, reject) {
15
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
16
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
17
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
18
- step((generator = generator.apply(thisArg, _arguments || [])).next());
19
- });
20
- };
21
- var __generator = (this && this.__generator) || function (thisArg, body) {
22
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
23
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
24
- function verb(n) { return function (v) { return step([n, v]); }; }
25
- function step(op) {
26
- if (f) throw new TypeError("Generator is already executing.");
27
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
28
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
29
- if (y = 0, t) op = [op[0] & 2, t.value];
30
- switch (op[0]) {
31
- case 0: case 1: t = op; break;
32
- case 4: _.label++; return { value: op[1], done: false };
33
- case 5: _.label++; y = op[1]; op = [0]; continue;
34
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
35
- default:
36
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
37
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
38
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
39
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
40
- if (t[2]) _.ops.pop();
41
- _.trys.pop(); continue;
42
- }
43
- op = body.call(thisArg, _);
44
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
45
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
46
- }
47
- };
48
- import { useCallback, useContext, useEffect, useMemo, useState } from 'react';
49
- import { isNil } from 'ramda';
50
- import { PageRequestsAbortingContext } from '../../contexts/PageRequestsAbortingContext';
51
- import { getSavedSearches, isAbortError, SavedSearchType } from '@reltio/mdm-sdk';
52
- import { getAudienceCount } from './helper';
53
- import { RequestStates } from '../../types';
54
- export var useSegmentsRequest = function (_a) {
55
- var options = _a.options, defaultRowsPerPage = _a.defaultRowsPerPage;
56
- var _b = useState(0), page = _b[0], setPage = _b[1];
57
- var _c = useState(defaultRowsPerPage), rowsPerPage = _c[0], setRowsPerPage = _c[1];
58
- var _d = useState([]), data = _d[0], setData = _d[1];
59
- var _e = useState(0), total = _e[0], setTotal = _e[1];
60
- var _f = useState({}), audienceCountMap = _f[0], setAudienceCountMap = _f[1];
61
- var _g = useState(RequestStates.INIT), loadingState = _g[0], setLoadingState = _g[1];
62
- var _h = useState(null), nameSortOrder = _h[0], setNameSortOrder = _h[1];
63
- var _j = useState(false), favoriteOnly = _j[0], setFavoriteOnly = _j[1];
64
- var _k = useState(''), containsWordStartingWith = _k[0], setContainsWordStartingWith = _k[1];
65
- var signal = useContext(PageRequestsAbortingContext);
66
- var allOptions = useMemo(function () { return (__assign(__assign({}, options), { containsWordStartingWith: containsWordStartingWith
67
- ? containsWordStartingWith
68
- : options === null || options === void 0 ? void 0 : options.containsWordStartingWith, sortBy: nameSortOrder ? 'NAME' : options === null || options === void 0 ? void 0 : options.sortBy, sortOrder: nameSortOrder ? nameSortOrder : options === null || options === void 0 ? void 0 : options.sortOrder, favoriteOnly: favoriteOnly ? favoriteOnly : options === null || options === void 0 ? void 0 : options.favoriteOnly, max: rowsPerPage, offset: rowsPerPage * page })); }, [options, page, rowsPerPage, containsWordStartingWith, nameSortOrder, favoriteOnly]);
69
- var loadSegments = useCallback(function () { return __awaiter(void 0, void 0, void 0, function () {
70
- var _a, _b, segments, total_1, audienceCountMap_1, error_1;
71
- return __generator(this, function (_c) {
72
- switch (_c.label) {
73
- case 0:
74
- setLoadingState(RequestStates.LOADING);
75
- _c.label = 1;
76
- case 1:
77
- _c.trys.push([1, 4, , 5]);
78
- return [4 /*yield*/, getSavedSearches(__assign(__assign({}, allOptions), { type: SavedSearchType.SEGMENTATION }), signal)];
79
- case 2:
80
- _a = _c.sent(), _b = _a.result, segments = _b === void 0 ? [] : _b, total_1 = _a.total;
81
- return [4 /*yield*/, getAudienceCount(segments)];
82
- case 3:
83
- audienceCountMap_1 = _c.sent();
84
- setAudienceCountMap(audienceCountMap_1);
85
- setData(segments || []);
86
- setTotal(total_1);
87
- setLoadingState(RequestStates.LOADED);
88
- return [3 /*break*/, 5];
89
- case 4:
90
- error_1 = _c.sent();
91
- console.warn(error_1);
92
- if (!isAbortError(error_1)) {
93
- setLoadingState(RequestStates.ERROR);
94
- setData([]);
95
- }
96
- return [3 /*break*/, 5];
97
- case 5: return [2 /*return*/];
98
- }
99
- });
100
- }); }, [allOptions, signal]);
101
- var segmentsWithAudienceCount = useMemo(function () {
102
- return data.map(function (segment) {
103
- var _a;
104
- var _b = (_a = audienceCountMap[segment.uri]) !== null && _a !== void 0 ? _a : {}, count = _b.count, isLoading = _b.isLoading;
105
- var segmentWithAudienceCount = __assign({}, segment);
106
- if (!isNil(count))
107
- segmentWithAudienceCount.count = count;
108
- if (!isNil(isLoading))
109
- segmentWithAudienceCount.isLoadingTotal = isLoading;
110
- return segmentWithAudienceCount;
111
- });
112
- }, [data, audienceCountMap]);
113
- useEffect(function () {
114
- loadSegments();
115
- }, [loadSegments]);
116
- var reload = useCallback(function () {
117
- setPage(0);
118
- setRowsPerPage(defaultRowsPerPage);
119
- setNameSortOrder(null);
120
- setFavoriteOnly(false);
121
- setContainsWordStartingWith('');
122
- loadSegments();
123
- }, [defaultRowsPerPage, loadSegments]);
124
- return {
125
- data: segmentsWithAudienceCount,
126
- total: total,
127
- page: page,
128
- rowsPerPage: rowsPerPage,
129
- audienceCountMap: audienceCountMap,
130
- loadingState: loadingState,
131
- reload: reload,
132
- updateRowsPerPage: setRowsPerPage,
133
- updatePage: setPage,
134
- loadSegments: loadSegments,
135
- nameSortOrder: nameSortOrder,
136
- setNameSortOrder: setNameSortOrder,
137
- favoriteOnly: favoriteOnly,
138
- setFavoriteOnly: setFavoriteOnly,
139
- containsWordStartingWith: containsWordStartingWith,
140
- setContainsWordStartingWith: setContainsWordStartingWith
141
- };
142
- };