@mui/x-data-grid-generator 8.0.0-beta.3 → 8.1.0

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 (108) hide show
  1. package/CHANGELOG.md +388 -96
  2. package/columns/commodities.columns.js +1 -1
  3. package/columns/employees.columns.js +1 -0
  4. package/constants/prompts.d.ts +1 -1
  5. package/constants/prompts.js +8 -4
  6. package/esm/columns/commodities.columns.js +1 -1
  7. package/esm/columns/employees.columns.js +1 -0
  8. package/esm/constants/prompts.d.ts +1 -1
  9. package/esm/constants/prompts.js +8 -4
  10. package/esm/hooks/serverUtils.js +15 -7
  11. package/esm/hooks/useDemoData.js +2 -2
  12. package/esm/hooks/useMockServer.d.ts +2 -2
  13. package/esm/hooks/useMockServer.js +64 -12
  14. package/esm/hooks/useQuery.d.ts +6 -3
  15. package/esm/index.js +1 -1
  16. package/esm/renderer/renderCountry.d.ts +1 -2
  17. package/esm/renderer/renderCountry.js +3 -0
  18. package/esm/services/prompt-resolver.d.ts +2 -2
  19. package/esm/services/prompt-resolver.js +3 -2
  20. package/hooks/serverUtils.js +15 -7
  21. package/hooks/useDemoData.js +2 -2
  22. package/hooks/useMockServer.d.ts +2 -2
  23. package/hooks/useMockServer.js +64 -12
  24. package/hooks/useQuery.d.ts +6 -3
  25. package/index.js +1 -1
  26. package/package.json +5 -14
  27. package/renderer/renderCountry.d.ts +1 -2
  28. package/renderer/renderCountry.js +3 -0
  29. package/services/prompt-resolver.d.ts +2 -2
  30. package/services/prompt-resolver.js +3 -2
  31. package/modern/columns/commodities.columns.d.ts +0 -2
  32. package/modern/columns/commodities.columns.js +0 -231
  33. package/modern/columns/employees.columns.d.ts +0 -2
  34. package/modern/columns/employees.columns.js +0 -134
  35. package/modern/columns/index.d.ts +0 -2
  36. package/modern/columns/index.js +0 -2
  37. package/modern/constants/prompts.d.ts +0 -2
  38. package/modern/constants/prompts.js +0 -49
  39. package/modern/hooks/index.d.ts +0 -8
  40. package/modern/hooks/index.js +0 -6
  41. package/modern/hooks/serverUtils.d.ts +0 -61
  42. package/modern/hooks/serverUtils.js +0 -527
  43. package/modern/hooks/useBasicDemoData.d.ts +0 -2
  44. package/modern/hooks/useBasicDemoData.js +0 -5
  45. package/modern/hooks/useDemoData.d.ts +0 -30
  46. package/modern/hooks/useDemoData.js +0 -159
  47. package/modern/hooks/useMockServer.d.ts +0 -31
  48. package/modern/hooks/useMockServer.js +0 -265
  49. package/modern/hooks/useMovieData.d.ts +0 -21
  50. package/modern/hooks/useMovieData.js +0 -500
  51. package/modern/hooks/useQuery.d.ts +0 -169
  52. package/modern/hooks/useQuery.js +0 -84
  53. package/modern/index.d.ts +0 -4
  54. package/modern/index.js +0 -11
  55. package/modern/package.json +0 -1
  56. package/modern/renderer/index.d.ts +0 -16
  57. package/modern/renderer/index.js +0 -16
  58. package/modern/renderer/renderAvatar.d.ts +0 -6
  59. package/modern/renderer/renderAvatar.js +0 -14
  60. package/modern/renderer/renderCountry.d.ts +0 -4
  61. package/modern/renderer/renderCountry.js +0 -57
  62. package/modern/renderer/renderEditCountry.d.ts +0 -4
  63. package/modern/renderer/renderEditCountry.js +0 -80
  64. package/modern/renderer/renderEditCurrency.d.ts +0 -3
  65. package/modern/renderer/renderEditCurrency.js +0 -78
  66. package/modern/renderer/renderEditIncoterm.d.ts +0 -3
  67. package/modern/renderer/renderEditIncoterm.js +0 -75
  68. package/modern/renderer/renderEditProgress.d.ts +0 -3
  69. package/modern/renderer/renderEditProgress.js +0 -109
  70. package/modern/renderer/renderEditRating.d.ts +0 -3
  71. package/modern/renderer/renderEditRating.js +0 -68
  72. package/modern/renderer/renderEditStatus.d.ts +0 -3
  73. package/modern/renderer/renderEditStatus.js +0 -98
  74. package/modern/renderer/renderEmail.d.ts +0 -3
  75. package/modern/renderer/renderEmail.js +0 -11
  76. package/modern/renderer/renderIncoterm.d.ts +0 -3
  77. package/modern/renderer/renderIncoterm.js +0 -40
  78. package/modern/renderer/renderLink.d.ts +0 -10
  79. package/modern/renderer/renderLink.js +0 -31
  80. package/modern/renderer/renderPnl.d.ts +0 -3
  81. package/modern/renderer/renderPnl.js +0 -41
  82. package/modern/renderer/renderProgress.d.ts +0 -3
  83. package/modern/renderer/renderProgress.js +0 -70
  84. package/modern/renderer/renderRating.d.ts +0 -3
  85. package/modern/renderer/renderRating.js +0 -38
  86. package/modern/renderer/renderStatus.d.ts +0 -3
  87. package/modern/renderer/renderStatus.js +0 -74
  88. package/modern/renderer/renderTotalPrice.d.ts +0 -3
  89. package/modern/renderer/renderTotalPrice.js +0 -49
  90. package/modern/services/asyncWorker.d.ts +0 -11
  91. package/modern/services/asyncWorker.js +0 -27
  92. package/modern/services/basic-data-service.d.ts +0 -13
  93. package/modern/services/basic-data-service.js +0 -37
  94. package/modern/services/gridColDefGenerator.d.ts +0 -23
  95. package/modern/services/gridColDefGenerator.js +0 -1
  96. package/modern/services/index.d.ts +0 -5
  97. package/modern/services/index.js +0 -5
  98. package/modern/services/prompt-resolver.d.ts +0 -2
  99. package/modern/services/prompt-resolver.js +0 -13
  100. package/modern/services/random-generator.d.ts +0 -49
  101. package/modern/services/random-generator.js +0 -124
  102. package/modern/services/real-data-service.d.ts +0 -8
  103. package/modern/services/real-data-service.js +0 -49
  104. package/modern/services/static-data.d.ts +0 -18
  105. package/modern/services/static-data.js +0 -1258
  106. package/modern/services/tree-data-generator.d.ts +0 -21
  107. package/modern/services/tree-data-generator.js +0 -70
  108. package/tsconfig.build.tsbuildinfo +0 -1
@@ -1,49 +0,0 @@
1
- export const mockPrompts = new Map([['sort by name', {
2
- select: -1,
3
- filters: [],
4
- aggregation: {},
5
- sorting: [{
6
- column: 'name',
7
- direction: 'asc'
8
- }],
9
- grouping: [],
10
- error: null
11
- }], ['sort by company name and employee name', {
12
- select: -1,
13
- filters: [],
14
- aggregation: {},
15
- sorting: [{
16
- column: 'company',
17
- direction: 'asc'
18
- }, {
19
- column: 'name',
20
- direction: 'asc'
21
- }],
22
- grouping: [],
23
- error: null
24
- }], ['show people from the eu', {
25
- select: -1,
26
- filters: [{
27
- column: 'country',
28
- operator: 'isAnyOf',
29
- value: ['AT', 'BE', 'BG', 'CY', 'CZ', 'DE', 'DK', 'EE', 'ES', 'FI', 'FR', 'GR', 'HR', 'HU', 'IE', 'IT', 'LT', 'LU', 'LV', 'MT', 'NL', 'PL', 'PT', 'RO', 'SE', 'SI', 'SK']
30
- }],
31
- aggregation: {},
32
- sorting: [],
33
- grouping: [],
34
- error: null
35
- }], ['order companies by amount of people', {
36
- select: -1,
37
- filters: [],
38
- aggregation: {
39
- id: 'size'
40
- },
41
- sorting: [{
42
- column: 'id',
43
- direction: 'desc'
44
- }],
45
- grouping: [{
46
- column: 'company'
47
- }],
48
- error: null
49
- }]]);
@@ -1,8 +0,0 @@
1
- export * from "./useDemoData.js";
2
- export * from "./useBasicDemoData.js";
3
- export { useMovieData } from "./useMovieData.js";
4
- export type { Movie } from './useMovieData';
5
- export * from "./useQuery.js";
6
- export * from "./useMockServer.js";
7
- export { loadServerRows } from "./serverUtils.js";
8
- export type { QueryOptions } from './serverUtils';
@@ -1,6 +0,0 @@
1
- export * from "./useDemoData.js";
2
- export * from "./useBasicDemoData.js";
3
- export { useMovieData } from "./useMovieData.js";
4
- export * from "./useQuery.js";
5
- export * from "./useMockServer.js";
6
- export { loadServerRows } from "./serverUtils.js";
@@ -1,61 +0,0 @@
1
- import { GridRowModel, GridFilterModel, GridSortModel, GridColDef, GridRowId, GridPaginationModel, GridValidRowModel, GridAggregationModel } from '@mui/x-data-grid-premium';
2
- export interface FakeServerResponse {
3
- returnedRows: GridRowModel[];
4
- aggregateRow?: GridValidRowModel;
5
- nextCursor?: string;
6
- hasNextPage?: boolean;
7
- totalRowCount: number;
8
- }
9
- export interface PageInfo {
10
- totalRowCount?: number;
11
- nextCursor?: string;
12
- hasNextPage?: boolean;
13
- pageSize?: number;
14
- }
15
- export interface DefaultServerOptions {
16
- minDelay: number;
17
- maxDelay: number;
18
- useCursorPagination?: boolean;
19
- }
20
- export type ServerOptions = Partial<DefaultServerOptions>;
21
- export interface QueryOptions {
22
- cursor?: GridRowId;
23
- page?: number;
24
- pageSize?: number;
25
- filterModel?: GridFilterModel;
26
- aggregationModel?: GridAggregationModel;
27
- sortModel?: GridSortModel;
28
- start?: number;
29
- end?: number;
30
- }
31
- export interface ServerSideQueryOptions {
32
- cursor?: GridRowId;
33
- paginationModel?: GridPaginationModel;
34
- groupKeys?: string[];
35
- filterModel?: GridFilterModel;
36
- sortModel?: GridSortModel;
37
- aggregationModel?: GridAggregationModel;
38
- start?: number;
39
- end?: number;
40
- groupFields?: string[];
41
- }
42
- export declare const disableDelay: any;
43
- export declare const DEFAULT_SERVER_OPTIONS: DefaultServerOptions;
44
- /**
45
- * Simulates server data loading
46
- */
47
- export declare const loadServerRows: (rows: GridRowModel[], queryOptions: QueryOptions, serverOptions: ServerOptions, columnsWithDefaultColDef: GridColDef[]) => Promise<FakeServerResponse>;
48
- interface NestedDataRowsResponse {
49
- rows: GridRowModel[];
50
- rootRowCount: number;
51
- aggregateRow?: GridRowModel;
52
- }
53
- /**
54
- * Simulates server data for tree-data feature
55
- */
56
- export declare const processTreeDataRows: (rows: GridRowModel[], queryOptions: ServerSideQueryOptions, serverOptions: ServerOptions, columnsWithDefaultColDef: GridColDef[]) => Promise<NestedDataRowsResponse>;
57
- /**
58
- * Simulates server data for row grouping feature
59
- */
60
- export declare const processRowGroupingRows: (rows: GridValidRowModel[], queryOptions: ServerSideQueryOptions, serverOptions: ServerOptions, columnsWithDefaultColDef: GridColDef[]) => Promise<NestedDataRowsResponse>;
61
- export {};
@@ -1,527 +0,0 @@
1
- import _extends from "@babel/runtime/helpers/esm/extends";
2
- import { GridLogicOperator, GRID_AGGREGATION_FUNCTIONS } from '@mui/x-data-grid-premium';
3
- import { randomInt } from "../services/random-generator.js";
4
- const getAvailableAggregationFunctions = columnType => {
5
- const availableAggregationFunctions = new Map();
6
- Object.keys(GRID_AGGREGATION_FUNCTIONS).forEach(functionName => {
7
- const columnTypes = GRID_AGGREGATION_FUNCTIONS[functionName].columnTypes;
8
- if (!columnTypes || columnTypes.includes(columnType ?? 'string')) {
9
- availableAggregationFunctions.set(functionName, GRID_AGGREGATION_FUNCTIONS[functionName]);
10
- }
11
- });
12
- return availableAggregationFunctions;
13
- };
14
- export const disableDelay = typeof DISABLE_CHANCE_RANDOM !== 'undefined' && DISABLE_CHANCE_RANDOM;
15
- export const DEFAULT_SERVER_OPTIONS = {
16
- minDelay: disableDelay ? 0 : 100,
17
- maxDelay: disableDelay ? 0 : 300,
18
- useCursorPagination: true
19
- };
20
- const apiRef = {};
21
- const simplifiedValueGetter = (field, colDef) => row => {
22
- return colDef.valueGetter?.(row[row.id], row, colDef, apiRef) || row[field];
23
- };
24
- const getRowComparator = (sortModel, columnsWithDefaultColDef) => {
25
- if (!sortModel) {
26
- const comparator = () => 0;
27
- return comparator;
28
- }
29
- const sortOperators = sortModel.map(sortItem => {
30
- const columnField = sortItem.field;
31
- const colDef = columnsWithDefaultColDef.find(({
32
- field
33
- }) => field === columnField);
34
- return _extends({}, sortItem, {
35
- valueGetter: simplifiedValueGetter(columnField, colDef),
36
- sortComparator: colDef.sortComparator
37
- });
38
- });
39
- const comparator = (row1, row2) => sortOperators.reduce((acc, {
40
- valueGetter,
41
- sort,
42
- sortComparator
43
- }) => {
44
- if (acc !== 0) {
45
- return acc;
46
- }
47
- const v1 = valueGetter(row1);
48
- const v2 = valueGetter(row2);
49
- return sort === 'desc' ? -1 * sortComparator(v1, v2) : sortComparator(v1, v2);
50
- }, 0);
51
- return comparator;
52
- };
53
- const buildQuickFilterApplier = (filterModel, columns) => {
54
- const quickFilterValues = filterModel.quickFilterValues?.filter(Boolean) ?? [];
55
- if (quickFilterValues.length === 0) {
56
- return null;
57
- }
58
- const appliersPerField = [];
59
- const stubApiRef = {
60
- current: {
61
- getRowFormattedValue: (row, c) => {
62
- const field = c.field;
63
- return row[field];
64
- }
65
- }
66
- };
67
- columns.forEach(column => {
68
- const getApplyQuickFilterFn = column?.getApplyQuickFilterFn;
69
- if (getApplyQuickFilterFn) {
70
- appliersPerField.push({
71
- column,
72
- appliers: quickFilterValues.map(quickFilterValue => {
73
- return {
74
- fn: getApplyQuickFilterFn(quickFilterValue, column, stubApiRef)
75
- };
76
- })
77
- });
78
- }
79
- });
80
- return function isRowMatchingQuickFilter(row, shouldApplyFilter) {
81
- const result = {};
82
-
83
- /* eslint-disable no-labels */
84
- outer: for (let v = 0; v < quickFilterValues.length; v += 1) {
85
- const filterValue = quickFilterValues[v];
86
- for (let i = 0; i < appliersPerField.length; i += 1) {
87
- const {
88
- column,
89
- appliers
90
- } = appliersPerField[i];
91
- const {
92
- field
93
- } = column;
94
- if (shouldApplyFilter && !shouldApplyFilter(field)) {
95
- continue;
96
- }
97
- const applier = appliers[v];
98
- const value = row[field];
99
- if (applier.fn === null) {
100
- continue;
101
- }
102
- const isMatching = applier.fn(value, row, column, stubApiRef);
103
- if (isMatching) {
104
- result[filterValue] = true;
105
- continue outer;
106
- }
107
- }
108
- result[filterValue] = false;
109
- }
110
- /* eslint-enable no-labels */
111
-
112
- return result;
113
- };
114
- };
115
- const getQuicklyFilteredRows = (rows, filterModel, columnsWithDefaultColDef) => {
116
- if (filterModel === undefined || filterModel.quickFilterValues?.length === 0) {
117
- return rows;
118
- }
119
- const isRowMatchingQuickFilter = buildQuickFilterApplier(filterModel, columnsWithDefaultColDef);
120
- if (isRowMatchingQuickFilter) {
121
- return rows.filter(row => {
122
- const result = isRowMatchingQuickFilter(row);
123
- return filterModel.quickFilterLogicOperator === GridLogicOperator.And ? Object.values(result).every(Boolean) : Object.values(result).some(Boolean);
124
- });
125
- }
126
- return rows;
127
- };
128
- const getFilteredRows = (rows, filterModel, columnsWithDefaultColDef) => {
129
- if (filterModel === undefined || filterModel.items.length === 0) {
130
- return rows;
131
- }
132
- const valueGetters = filterModel.items.map(({
133
- field
134
- }) => simplifiedValueGetter(field, columnsWithDefaultColDef.find(column => column.field === field)));
135
- const filterFunctions = filterModel.items.map(filterItem => {
136
- const {
137
- field,
138
- operator
139
- } = filterItem;
140
- const colDef = columnsWithDefaultColDef.find(column => column.field === field);
141
- if (!colDef.filterOperators) {
142
- throw new Error(`MUI: No filter operator found for column '${field}'.`);
143
- }
144
- const filterOperator = colDef.filterOperators.find(({
145
- value
146
- }) => operator === value);
147
- let parsedValue = filterItem.value;
148
- if (colDef.valueParser) {
149
- const parser = colDef.valueParser;
150
- parsedValue = Array.isArray(filterItem.value) ? filterItem.value?.map(x => parser(x, {}, colDef, apiRef)) : parser(filterItem.value, {}, colDef, apiRef);
151
- }
152
- return filterOperator.getApplyFilterFn({
153
- filterItem,
154
- value: parsedValue
155
- }, colDef);
156
- });
157
- if (filterModel.logicOperator === GridLogicOperator.Or) {
158
- return rows.filter(row => filterModel.items.some((_, index) => {
159
- const value = valueGetters[index](row);
160
- return filterFunctions[index] === null ? true : filterFunctions[index](value);
161
- }));
162
- }
163
- return rows.filter(row => filterModel.items.every((_, index) => {
164
- const value = valueGetters[index](row);
165
- return filterFunctions[index] === null ? true : filterFunctions[index](value);
166
- }));
167
- };
168
- const applyAggregation = (aggregationModel, colDefs, rows, groupId = 'root') => {
169
- const columnsToAggregate = Object.keys(aggregationModel);
170
- if (columnsToAggregate.length === 0) {
171
- return {};
172
- }
173
- const aggregateValues = {};
174
- columnsToAggregate.forEach(field => {
175
- const type = colDefs.find(({
176
- field: f
177
- }) => f === field)?.type;
178
- if (!type) {
179
- return;
180
- }
181
- const availableAggregationFunctions = getAvailableAggregationFunctions(type);
182
- if (!availableAggregationFunctions.has(aggregationModel[field])) {
183
- return;
184
- }
185
- const aggregationFunction = availableAggregationFunctions.get(aggregationModel[field]);
186
- if (!aggregationFunction) {
187
- return;
188
- }
189
- const values = rows.map(row => row[field]);
190
- aggregateValues[`${field}Aggregate`] = aggregationFunction.apply({
191
- values,
192
- field,
193
- groupId
194
- });
195
- });
196
- return aggregateValues;
197
- };
198
-
199
- /**
200
- * Simulates server data loading
201
- */
202
- export const loadServerRows = (rows, queryOptions, serverOptions, columnsWithDefaultColDef) => {
203
- const {
204
- minDelay = 100,
205
- maxDelay = 300,
206
- useCursorPagination
207
- } = serverOptions;
208
- if (maxDelay < minDelay) {
209
- throw new Error('serverOptions.minDelay is larger than serverOptions.maxDelay ');
210
- }
211
- const delay = randomInt(minDelay, maxDelay);
212
- const {
213
- cursor,
214
- page = 0,
215
- pageSize,
216
- start,
217
- end
218
- } = queryOptions;
219
- let nextCursor;
220
- let firstRowIndex;
221
- let lastRowIndex;
222
- let filteredRows = getFilteredRows(rows, queryOptions.filterModel, columnsWithDefaultColDef);
223
- const rowComparator = getRowComparator(queryOptions.sortModel, columnsWithDefaultColDef);
224
- filteredRows = [...filteredRows].sort(rowComparator);
225
- let aggregateRow = {};
226
- if (queryOptions.aggregationModel) {
227
- aggregateRow = applyAggregation(queryOptions.aggregationModel, columnsWithDefaultColDef, filteredRows);
228
- }
229
- const totalRowCount = filteredRows.length;
230
- if (start !== undefined && end !== undefined) {
231
- firstRowIndex = start;
232
- lastRowIndex = end;
233
- } else if (!pageSize) {
234
- firstRowIndex = 0;
235
- lastRowIndex = filteredRows.length - 1;
236
- } else if (useCursorPagination) {
237
- firstRowIndex = cursor ? filteredRows.findIndex(({
238
- id
239
- }) => id === cursor) : 0;
240
- firstRowIndex = Math.max(firstRowIndex, 0); // if cursor not found return 0
241
- lastRowIndex = firstRowIndex + pageSize - 1;
242
- nextCursor = filteredRows[lastRowIndex + 1]?.id;
243
- } else {
244
- firstRowIndex = page * pageSize;
245
- lastRowIndex = (page + 1) * pageSize - 1;
246
- }
247
- const hasNextPage = lastRowIndex < filteredRows.length - 1;
248
- const response = _extends({
249
- returnedRows: filteredRows.slice(firstRowIndex, lastRowIndex + 1),
250
- hasNextPage,
251
- nextCursor,
252
- totalRowCount
253
- }, queryOptions.aggregationModel ? {
254
- aggregateRow
255
- } : {});
256
- return new Promise(resolve => {
257
- setTimeout(() => {
258
- resolve(response);
259
- }, delay); // simulate network latency
260
- });
261
- };
262
- const findTreeDataRowChildren = (allRows, parentPath, pathKey = 'path', depth = 1, rowQualifier) => {
263
- const parentDepth = parentPath.length;
264
- const children = [];
265
- for (let i = 0; i < allRows.length; i += 1) {
266
- const row = allRows[i];
267
- const rowPath = row[pathKey];
268
- if (!rowPath) {
269
- continue;
270
- }
271
- if ((depth < 0 && rowPath.length > parentDepth || rowPath.length === parentDepth + depth) && parentPath.every((value, index) => value === rowPath[index])) {
272
- if (!rowQualifier || rowQualifier(row)) {
273
- children.push(row);
274
- }
275
- }
276
- }
277
- return children;
278
- };
279
- const getTreeDataFilteredRows = (rows, filterModel, columnsWithDefaultColDef) => {
280
- let filteredRows = [...rows];
281
- if (filterModel && filterModel.quickFilterValues?.length > 0) {
282
- filteredRows = getQuicklyFilteredRows(rows, filterModel, columnsWithDefaultColDef);
283
- }
284
- if ((filterModel?.items.length ?? 0) > 0) {
285
- filteredRows = getFilteredRows(filteredRows, filterModel, columnsWithDefaultColDef);
286
- }
287
- if (filteredRows.length === rows.length || filteredRows.length === 0) {
288
- return filteredRows;
289
- }
290
- const pathsToIndexesMap = new Map();
291
- rows.forEach((row, index) => {
292
- pathsToIndexesMap.set(row.path.join(','), index);
293
- });
294
- const includedPaths = new Set();
295
- filteredRows.forEach(row => {
296
- includedPaths.add(row.path.join(','));
297
- });
298
- const missingChildren = [];
299
-
300
- // include missing children of filtered rows
301
- filteredRows.forEach(row => {
302
- const path = row.path;
303
- if (path) {
304
- const children = findTreeDataRowChildren(rows, path, 'path', -1);
305
- children.forEach(child => {
306
- const subPath = child.path.join(',');
307
- if (!includedPaths.has(subPath)) {
308
- missingChildren.push(child);
309
- }
310
- });
311
- }
312
- });
313
- filteredRows = missingChildren.concat(filteredRows);
314
- const missingParents = [];
315
-
316
- // include missing parents of filtered rows
317
- filteredRows.forEach(row => {
318
- const path = row.path;
319
- if (path) {
320
- includedPaths.add(path.join(','));
321
- for (let i = 0; i < path.length - 1; i += 1) {
322
- const subPath = path.slice(0, i + 1).join(',');
323
- if (!includedPaths.has(subPath)) {
324
- const index = pathsToIndexesMap.get(subPath);
325
- if (index !== undefined) {
326
- missingParents.push(rows[index]);
327
- includedPaths.add(subPath);
328
- }
329
- }
330
- }
331
- }
332
- });
333
- return missingParents.concat(filteredRows);
334
- };
335
-
336
- /**
337
- * Simulates server data for tree-data feature
338
- */
339
- export const processTreeDataRows = (rows, queryOptions, serverOptions, columnsWithDefaultColDef) => {
340
- const {
341
- minDelay = 100,
342
- maxDelay = 300
343
- } = serverOptions;
344
- const pathKey = 'path';
345
- // TODO: Support filtering and cursor based pagination
346
- if (maxDelay < minDelay) {
347
- throw new Error('serverOptions.minDelay is larger than serverOptions.maxDelay ');
348
- }
349
- if (queryOptions.groupKeys == null) {
350
- throw new Error('serverOptions.groupKeys must be defined to compute tree data ');
351
- }
352
- const delay = randomInt(minDelay, maxDelay);
353
-
354
- // apply plain filtering
355
- const filteredRows = getTreeDataFilteredRows(rows, queryOptions.filterModel, columnsWithDefaultColDef);
356
-
357
- // get root row count
358
- const rootRowCount = findTreeDataRowChildren(filteredRows, []).length;
359
-
360
- // find direct children referring to the `parentPath`
361
- const childRows = findTreeDataRowChildren(filteredRows, queryOptions.groupKeys);
362
- let childRowsWithDescendantCounts = childRows.map(row => {
363
- const descendants = findTreeDataRowChildren(filteredRows, row[pathKey], pathKey, -1);
364
- const descendantCount = descendants.length;
365
- if (descendantCount > 0 && queryOptions.aggregationModel) {
366
- // Parent row, compute aggregation
367
- return _extends({}, row, {
368
- descendantCount
369
- }, applyAggregation(queryOptions.aggregationModel, columnsWithDefaultColDef, descendants, row.id));
370
- }
371
- return _extends({}, row, {
372
- descendantCount
373
- });
374
- });
375
- if (queryOptions.sortModel) {
376
- // apply sorting
377
- const rowComparator = getRowComparator(queryOptions.sortModel, columnsWithDefaultColDef);
378
- childRowsWithDescendantCounts = [...childRowsWithDescendantCounts].sort(rowComparator);
379
- }
380
- let aggregateRow;
381
- if (queryOptions.aggregationModel) {
382
- aggregateRow = applyAggregation(queryOptions.aggregationModel, columnsWithDefaultColDef, filteredRows);
383
- }
384
- if (queryOptions.paginationModel && queryOptions.groupKeys.length === 0) {
385
- // Only paginate root rows, grid should refetch root rows when `paginationModel` updates
386
- const {
387
- pageSize,
388
- page
389
- } = queryOptions.paginationModel;
390
- if (pageSize < childRowsWithDescendantCounts.length) {
391
- childRowsWithDescendantCounts = childRowsWithDescendantCounts.slice(page * pageSize, (page + 1) * pageSize);
392
- }
393
- }
394
- return new Promise(resolve => {
395
- setTimeout(() => {
396
- resolve({
397
- rows: childRowsWithDescendantCounts,
398
- rootRowCount,
399
- aggregateRow
400
- });
401
- }, delay); // simulate network latency
402
- });
403
- };
404
-
405
- /**
406
- * Simulates server data for row grouping feature
407
- */
408
- export const processRowGroupingRows = (rows, queryOptions, serverOptions, columnsWithDefaultColDef) => {
409
- const {
410
- minDelay = 100,
411
- maxDelay = 300
412
- } = serverOptions;
413
- const pathKey = 'path';
414
- if (maxDelay < minDelay) {
415
- throw new Error('serverOptions.minDelay is larger than serverOptions.maxDelay ');
416
- }
417
- if (queryOptions.groupKeys == null) {
418
- throw new Error('serverOptions.groupKeys must be defined to compute row grouping data');
419
- }
420
- if (queryOptions.groupFields == null) {
421
- throw new Error('serverOptions.groupFields must be defined to compute row grouping data');
422
- }
423
- const delay = randomInt(minDelay, maxDelay);
424
- const pathsToAutogenerate = new Set();
425
- let rowsWithPaths = rows;
426
- const rowsWithMissingGroups = [];
427
-
428
- // add paths and generate parent rows based on `groupFields`
429
- const groupFields = queryOptions.groupFields;
430
- if (groupFields.length > 0) {
431
- rowsWithPaths = rows.reduce((acc, row) => {
432
- const partialPath = groupFields.map(field => String(row[field]));
433
- for (let index = 0; index < partialPath.length; index += 1) {
434
- const value = partialPath[index];
435
- if (value === undefined) {
436
- if (index === 0) {
437
- rowsWithMissingGroups.push(_extends({}, row, {
438
- group: false
439
- }));
440
- }
441
- return acc;
442
- }
443
- const parentPath = partialPath.slice(0, index + 1);
444
- const strigifiedPath = parentPath.join(',');
445
- if (!pathsToAutogenerate.has(strigifiedPath)) {
446
- pathsToAutogenerate.add(strigifiedPath);
447
- }
448
- }
449
- acc.push(_extends({}, row, {
450
- path: [...partialPath, '']
451
- }));
452
- return acc;
453
- }, []);
454
- } else {
455
- rowsWithPaths = rows.map(row => _extends({}, row, {
456
- path: ['']
457
- }));
458
- }
459
- const autogeneratedRows = Array.from(pathsToAutogenerate).map(path => {
460
- const pathArray = path.split(',');
461
- return {
462
- id: `auto-generated-parent-${pathArray.join('-')}`,
463
- path: pathArray.slice(0, pathArray.length),
464
- group: pathArray.slice(-1)[0]
465
- };
466
- });
467
-
468
- // apply plain filtering
469
- const filteredRows = getTreeDataFilteredRows([...autogeneratedRows, ...rowsWithPaths, ...rowsWithMissingGroups], queryOptions.filterModel, columnsWithDefaultColDef);
470
-
471
- // get root row count
472
- const rootRows = findTreeDataRowChildren(filteredRows, []);
473
- const rootRowCount = rootRows.length;
474
- let filteredRowsWithMissingGroups = [];
475
- let childRows = rootRows;
476
- if (queryOptions.groupKeys.length === 0) {
477
- filteredRowsWithMissingGroups = filteredRows.filter(({
478
- group
479
- }) => group === false);
480
- } else {
481
- childRows = findTreeDataRowChildren(filteredRows, queryOptions.groupKeys);
482
- }
483
- let childRowsWithDescendantCounts = childRows.map(row => {
484
- const descendants = findTreeDataRowChildren(filteredRows, row[pathKey], pathKey, -1, ({
485
- id
486
- }) => typeof id !== 'string' || !id.startsWith('auto-generated-parent-'));
487
- const descendantCount = descendants.length;
488
- if (descendantCount > 0 && queryOptions.aggregationModel) {
489
- // Parent row, compute aggregation
490
- return _extends({}, row, {
491
- descendantCount
492
- }, applyAggregation(queryOptions.aggregationModel, columnsWithDefaultColDef, descendants, row.id));
493
- }
494
- return _extends({}, row, {
495
- descendantCount
496
- });
497
- });
498
- if (queryOptions.sortModel) {
499
- const rowComparator = getRowComparator(queryOptions.sortModel, columnsWithDefaultColDef);
500
- const sortedMissingGroups = [...filteredRowsWithMissingGroups].sort(rowComparator);
501
- const sortedChildRows = [...childRowsWithDescendantCounts].sort(rowComparator);
502
- childRowsWithDescendantCounts = [...sortedMissingGroups, ...sortedChildRows];
503
- }
504
- let aggregateRow;
505
- if (queryOptions.aggregationModel) {
506
- aggregateRow = applyAggregation(queryOptions.aggregationModel, columnsWithDefaultColDef, filteredRows);
507
- }
508
- if (queryOptions.paginationModel && queryOptions.groupKeys.length === 0) {
509
- // Only paginate root rows, grid should refetch root rows when `paginationModel` updates
510
- const {
511
- pageSize,
512
- page
513
- } = queryOptions.paginationModel;
514
- if (pageSize < childRowsWithDescendantCounts.length) {
515
- childRowsWithDescendantCounts = childRowsWithDescendantCounts.slice(page * pageSize, (page + 1) * pageSize);
516
- }
517
- }
518
- return new Promise(resolve => {
519
- setTimeout(() => {
520
- resolve({
521
- rows: childRowsWithDescendantCounts,
522
- rootRowCount,
523
- aggregateRow
524
- });
525
- }, delay); // simulate network latency
526
- });
527
- };
@@ -1,2 +0,0 @@
1
- import { GridBasicData } from "../services/index.js";
2
- export declare const useBasicDemoData: (nbRows: number, nbCols: number) => GridBasicData;
@@ -1,5 +0,0 @@
1
- import * as React from 'react';
2
- import { getBasicGridData } from "../services/index.js";
3
- export const useBasicDemoData = (nbRows, nbCols) => {
4
- return React.useMemo(() => getBasicGridData(nbRows, nbCols), [nbRows, nbCols]);
5
- };
@@ -1,30 +0,0 @@
1
- import { GridColumnVisibilityModel } from '@mui/x-data-grid-premium';
2
- import { GridDemoData } from "../services/real-data-service.js";
3
- import { GridColDefGenerator } from "../services/gridColDefGenerator.js";
4
- import { AddPathToDemoDataOptions, DemoTreeDataValue } from "../services/tree-data-generator.js";
5
- export type DemoDataReturnType = {
6
- data: DemoTreeDataValue;
7
- loading: boolean;
8
- setRowLength: (count: number) => void;
9
- loadNewData: () => void;
10
- };
11
- type DataSet = 'Commodity' | 'Employee';
12
- export interface UseDemoDataOptions {
13
- dataSet: DataSet;
14
- rowLength: number;
15
- maxColumns?: number;
16
- visibleFields?: string[];
17
- editable?: boolean;
18
- treeData?: AddPathToDemoDataOptions;
19
- }
20
- export declare function extrapolateSeed(rowLength: number, data: GridDemoData): Promise<GridDemoData>;
21
- export declare const deepFreeze: <T>(object: T) => T;
22
- export interface ColumnsOptions extends Pick<UseDemoDataOptions, 'dataSet' | 'editable' | 'maxColumns' | 'visibleFields'> {}
23
- export declare const getColumnsFromOptions: (options: ColumnsOptions) => GridColDefGenerator[];
24
- export declare const getInitialState: (options: UseDemoDataOptions, columns: GridColDefGenerator[]) => {
25
- columns: {
26
- columnVisibilityModel: GridColumnVisibilityModel;
27
- };
28
- };
29
- export declare const useDemoData: (options: UseDemoDataOptions) => DemoDataReturnType;
30
- export {};