@vuu-ui/vuu-data-local 0.8.34 → 0.8.35

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 (59) hide show
  1. package/package.json +7 -8
  2. package/types/array-data-source/aggregate-utils.d.ts +4 -4
  3. package/types/array-data-source/array-data-source.d.ts +2 -2
  4. package/types/array-data-source/array-data-utils.d.ts +1 -1
  5. package/types/array-data-source/group-utils.d.ts +2 -2
  6. package/types/array-data-source/sort-utils.d.ts +2 -2
  7. package/types/json-data-source/json-data-source.d.ts +3 -3
  8. package/cjs/node_modules/@lezer/common/dist/index.js +0 -1288
  9. package/cjs/node_modules/@lezer/common/dist/index.js.map +0 -1
  10. package/cjs/node_modules/@lezer/lr/dist/index.js +0 -1669
  11. package/cjs/node_modules/@lezer/lr/dist/index.js.map +0 -1
  12. package/cjs/packages/vuu-data-local/src/array-data-source/aggregate-utils.js +0 -243
  13. package/cjs/packages/vuu-data-local/src/array-data-source/aggregate-utils.js.map +0 -1
  14. package/cjs/packages/vuu-data-local/src/array-data-source/array-data-source.js +0 -542
  15. package/cjs/packages/vuu-data-local/src/array-data-source/array-data-source.js.map +0 -1
  16. package/cjs/packages/vuu-data-local/src/array-data-source/array-data-utils.js +0 -52
  17. package/cjs/packages/vuu-data-local/src/array-data-source/array-data-utils.js.map +0 -1
  18. package/cjs/packages/vuu-data-local/src/array-data-source/group-utils.js +0 -169
  19. package/cjs/packages/vuu-data-local/src/array-data-source/group-utils.js.map +0 -1
  20. package/cjs/packages/vuu-data-local/src/array-data-source/sort-utils.js +0 -54
  21. package/cjs/packages/vuu-data-local/src/array-data-source/sort-utils.js.map +0 -1
  22. package/cjs/packages/vuu-data-local/src/index.js.map +0 -1
  23. package/cjs/packages/vuu-data-local/src/json-data-source/json-data-source.js +0 -388
  24. package/cjs/packages/vuu-data-local/src/json-data-source/json-data-source.js.map +0 -1
  25. package/cjs/packages/vuu-filter-parser/src/FilterParser.js +0 -14
  26. package/cjs/packages/vuu-filter-parser/src/FilterParser.js.map +0 -1
  27. package/cjs/packages/vuu-filter-parser/src/FilterTreeWalker.js +0 -135
  28. package/cjs/packages/vuu-filter-parser/src/FilterTreeWalker.js.map +0 -1
  29. package/cjs/packages/vuu-filter-parser/src/filter-evaluation-utils.js +0 -86
  30. package/cjs/packages/vuu-filter-parser/src/filter-evaluation-utils.js.map +0 -1
  31. package/cjs/packages/vuu-filter-parser/src/generated/filter-parser.js +0 -21
  32. package/cjs/packages/vuu-filter-parser/src/generated/filter-parser.js.map +0 -1
  33. package/esm/node_modules/@lezer/common/dist/index.js +0 -1279
  34. package/esm/node_modules/@lezer/common/dist/index.js.map +0 -1
  35. package/esm/node_modules/@lezer/lr/dist/index.js +0 -1665
  36. package/esm/node_modules/@lezer/lr/dist/index.js.map +0 -1
  37. package/esm/packages/vuu-data-local/src/array-data-source/aggregate-utils.js +0 -241
  38. package/esm/packages/vuu-data-local/src/array-data-source/aggregate-utils.js.map +0 -1
  39. package/esm/packages/vuu-data-local/src/array-data-source/array-data-source.js +0 -540
  40. package/esm/packages/vuu-data-local/src/array-data-source/array-data-source.js.map +0 -1
  41. package/esm/packages/vuu-data-local/src/array-data-source/array-data-utils.js +0 -49
  42. package/esm/packages/vuu-data-local/src/array-data-source/array-data-utils.js.map +0 -1
  43. package/esm/packages/vuu-data-local/src/array-data-source/group-utils.js +0 -165
  44. package/esm/packages/vuu-data-local/src/array-data-source/group-utils.js.map +0 -1
  45. package/esm/packages/vuu-data-local/src/array-data-source/sort-utils.js +0 -52
  46. package/esm/packages/vuu-data-local/src/array-data-source/sort-utils.js.map +0 -1
  47. package/esm/packages/vuu-data-local/src/index.js +0 -3
  48. package/esm/packages/vuu-data-local/src/index.js.map +0 -1
  49. package/esm/packages/vuu-data-local/src/json-data-source/json-data-source.js +0 -386
  50. package/esm/packages/vuu-data-local/src/json-data-source/json-data-source.js.map +0 -1
  51. package/esm/packages/vuu-filter-parser/src/FilterParser.js +0 -12
  52. package/esm/packages/vuu-filter-parser/src/FilterParser.js.map +0 -1
  53. package/esm/packages/vuu-filter-parser/src/FilterTreeWalker.js +0 -133
  54. package/esm/packages/vuu-filter-parser/src/FilterTreeWalker.js.map +0 -1
  55. package/esm/packages/vuu-filter-parser/src/filter-evaluation-utils.js +0 -84
  56. package/esm/packages/vuu-filter-parser/src/filter-evaluation-utils.js.map +0 -1
  57. package/esm/packages/vuu-filter-parser/src/generated/filter-parser.js +0 -19
  58. package/esm/packages/vuu-filter-parser/src/generated/filter-parser.js.map +0 -1
  59. /package/cjs/{packages/vuu-data-local/src/index.js → index.js} +0 -0
@@ -1,542 +0,0 @@
1
- 'use strict';
2
-
3
- var FilterParser = require('../../../vuu-filter-parser/src/FilterParser.js');
4
- require('../../../vuu-filter-parser/src/generated/filter-parser.js');
5
- require('../../../vuu-filter-parser/src/FilterTreeWalker.js');
6
- var filterEvaluationUtils = require('../../../vuu-filter-parser/src/filter-evaluation-utils.js');
7
- var vuuUtils = require('@vuu-ui/vuu-utils');
8
- var aggregateUtils = require('./aggregate-utils.js');
9
- var arrayDataUtils = require('./array-data-utils.js');
10
- var groupUtils = require('./group-utils.js');
11
- var sortUtils = require('./sort-utils.js');
12
-
13
- var __accessCheck = (obj, member, msg) => {
14
- if (!member.has(obj))
15
- throw TypeError("Cannot " + msg);
16
- };
17
- var __privateGet = (obj, member, getter) => {
18
- __accessCheck(obj, member, "read from private field");
19
- return getter ? getter.call(obj) : member.get(obj);
20
- };
21
- var __privateAdd = (obj, member, value) => {
22
- if (member.has(obj))
23
- throw TypeError("Cannot add the same private member more than once");
24
- member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
25
- };
26
- var __privateSet = (obj, member, value, setter) => {
27
- __accessCheck(obj, member, "write to private field");
28
- setter ? setter.call(obj, value) : member.set(obj, value);
29
- return value;
30
- };
31
- var _columnMap, _config, _data, _links, _range, _selectedRowsCount, _size, _status, _title;
32
- const { debug, info } = vuuUtils.logger("ArrayDataSource");
33
- const { KEY } = vuuUtils.metadataKeys;
34
- const toDataSourceRow = (key) => (data, index) => {
35
- return [index, index, true, false, 1, 0, String(data[key]), 0, ...data];
36
- };
37
- const buildTableSchema = (columns, keyColumn) => {
38
- const schema = {
39
- columns: columns.map(({ name, serverDataType = "string" }) => ({
40
- name,
41
- serverDataType
42
- })),
43
- key: keyColumn ?? columns[0].name,
44
- table: { module: "", table: "Array" }
45
- };
46
- return schema;
47
- };
48
- class ArrayDataSource extends vuuUtils.EventEmitter {
49
- constructor({
50
- aggregations,
51
- // different from RemoteDataSource
52
- columnDescriptors,
53
- data,
54
- dataMap,
55
- filter,
56
- groupBy,
57
- keyColumn,
58
- rangeChangeRowset = "delta",
59
- sort,
60
- title,
61
- viewport
62
- }) {
63
- super();
64
- this.lastRangeServed = { from: 0, to: 0 };
65
- this.openTreeNodes = [];
66
- /** Map reflecting positions of columns in client data sent to user */
67
- __privateAdd(this, _columnMap, void 0);
68
- __privateAdd(this, _config, vuuUtils.vanillaConfig);
69
- __privateAdd(this, _data, void 0);
70
- __privateAdd(this, _links, void 0);
71
- __privateAdd(this, _range, vuuUtils.NULL_RANGE);
72
- __privateAdd(this, _selectedRowsCount, 0);
73
- __privateAdd(this, _size, 0);
74
- __privateAdd(this, _status, "initialising");
75
- __privateAdd(this, _title, void 0);
76
- this.selectedRows = [];
77
- this.keys = new vuuUtils.KeySet(__privateGet(this, _range));
78
- this.processedData = void 0;
79
- this.insert = (row) => {
80
- const dataSourceRow = toDataSourceRow(this.key)(row, this.size);
81
- __privateGet(this, _data).push(dataSourceRow);
82
- const { from, to } = __privateGet(this, _range);
83
- const [rowIdx] = dataSourceRow;
84
- if (rowIdx >= from && rowIdx < to) {
85
- this.sendRowsToClient();
86
- }
87
- };
88
- this.update = (row, columnName) => {
89
- const keyValue = row[this.key];
90
- const colIndex = __privateGet(this, _columnMap)[columnName];
91
- const dataColIndex = this.dataMap?.[columnName];
92
- const dataIndex = __privateGet(this, _data).findIndex((row2) => row2[KEY] === keyValue);
93
- if (dataIndex !== -1 && dataColIndex !== void 0) {
94
- const dataSourceRow = __privateGet(this, _data)[dataIndex];
95
- dataSourceRow[colIndex] = row[dataColIndex];
96
- const { from, to } = __privateGet(this, _range);
97
- const [rowIdx] = dataSourceRow;
98
- if (rowIdx >= from && rowIdx < to) {
99
- this.sendRowsToClient(false, dataSourceRow);
100
- }
101
- }
102
- };
103
- this.updateRow = (row) => {
104
- const keyValue = row[this.key];
105
- const dataIndex = __privateGet(this, _data).findIndex((row2) => row2[KEY] === keyValue);
106
- if (dataIndex !== -1) {
107
- const dataSourceRow = toDataSourceRow(this.key)(row, dataIndex);
108
- __privateGet(this, _data)[dataIndex] = dataSourceRow;
109
- const { from, to } = __privateGet(this, _range);
110
- if (dataIndex >= from && dataIndex < to) {
111
- this.sendRowsToClient(false, dataSourceRow);
112
- }
113
- }
114
- };
115
- if (!data || !columnDescriptors) {
116
- throw Error(
117
- "ArrayDataSource constructor called without data or without columnDescriptors"
118
- );
119
- }
120
- this.columnDescriptors = columnDescriptors;
121
- this.dataMap = dataMap;
122
- this.key = keyColumn ? this.columnDescriptors.findIndex((col) => col.name === keyColumn) : 0;
123
- this.rangeChangeRowset = rangeChangeRowset;
124
- this.tableSchema = buildTableSchema(columnDescriptors, keyColumn);
125
- this.viewport = viewport || vuuUtils.uuid();
126
- __privateSet(this, _size, data.length);
127
- __privateSet(this, _title, title);
128
- const columns = columnDescriptors.map((col) => col.name);
129
- __privateSet(this, _columnMap, vuuUtils.buildColumnMap(columns));
130
- this.dataIndices = arrayDataUtils.buildDataToClientMap(__privateGet(this, _columnMap), this.dataMap);
131
- __privateSet(this, _data, data.map(toDataSourceRow(this.key)));
132
- this.config = {
133
- ...__privateGet(this, _config),
134
- aggregations: aggregations || __privateGet(this, _config).aggregations,
135
- columns,
136
- filter: filter || __privateGet(this, _config).filter,
137
- groupBy: groupBy || __privateGet(this, _config).groupBy,
138
- sort: sort || __privateGet(this, _config).sort
139
- };
140
- debug?.(`columnMap: ${JSON.stringify(__privateGet(this, _columnMap))}`);
141
- }
142
- async subscribe({
143
- viewport = this.viewport ?? vuuUtils.uuid(),
144
- columns,
145
- aggregations,
146
- range,
147
- sort,
148
- groupBy,
149
- filter
150
- }, callback) {
151
- this.clientCallback = callback;
152
- this.viewport = viewport;
153
- __privateSet(this, _status, "subscribed");
154
- this.lastRangeServed = { from: 0, to: 0 };
155
- let config = __privateGet(this, _config);
156
- const hasConfigProps = aggregations || columns || filter || groupBy || sort;
157
- if (hasConfigProps) {
158
- if (range) {
159
- __privateSet(this, _range, range);
160
- }
161
- config = {
162
- ...config,
163
- aggregations: aggregations || __privateGet(this, _config).aggregations,
164
- columns: columns || __privateGet(this, _config).columns,
165
- filter: filter || __privateGet(this, _config).filter,
166
- groupBy: groupBy || __privateGet(this, _config).groupBy,
167
- sort: sort || __privateGet(this, _config).sort
168
- };
169
- }
170
- this.clientCallback?.({
171
- ...config,
172
- type: "subscribed",
173
- clientViewportId: this.viewport,
174
- range: __privateGet(this, _range),
175
- tableSchema: this.tableSchema
176
- });
177
- if (hasConfigProps) {
178
- this.config = config;
179
- } else {
180
- this.clientCallback({
181
- clientViewportId: this.viewport,
182
- mode: "size-only",
183
- type: "viewport-update",
184
- size: __privateGet(this, _data).length
185
- });
186
- if (range) {
187
- this.range = range;
188
- this.sendRowsToClient();
189
- } else if (__privateGet(this, _range) !== vuuUtils.NULL_RANGE) {
190
- this.sendRowsToClient();
191
- }
192
- }
193
- }
194
- unsubscribe() {
195
- console.log(`unsubscribe noop`);
196
- }
197
- suspend() {
198
- console.log(`suspend #${this.viewport}, current status ${__privateGet(this, _status)}`);
199
- info?.(`suspend #${this.viewport}, current status ${__privateGet(this, _status)}`);
200
- __privateSet(this, _status, "suspended");
201
- return this;
202
- }
203
- resume() {
204
- console.log(`resume #${this.viewport}, current status ${__privateGet(this, _status)}`);
205
- const isSuspended = __privateGet(this, _status) === "suspended";
206
- info?.(`resume #${this.viewport}, current status ${__privateGet(this, _status)}`);
207
- console.log(`resume noop`);
208
- if (isSuspended) {
209
- __privateSet(this, _status, "subscribed");
210
- }
211
- return this;
212
- }
213
- disable() {
214
- console.log(`disable noop`);
215
- return this;
216
- }
217
- enable() {
218
- console.log(`enable noop`);
219
- return this;
220
- }
221
- select(selected) {
222
- __privateSet(this, _selectedRowsCount, selected.length);
223
- debug?.(`select ${JSON.stringify(selected)}`);
224
- this.selectedRows = selected;
225
- this.setRange(vuuUtils.resetRange(__privateGet(this, _range)), true);
226
- }
227
- openTreeNode(key) {
228
- this.openTreeNodes.push(key);
229
- this.processedData = groupUtils.expandGroup(
230
- this.openTreeNodes,
231
- __privateGet(this, _data),
232
- __privateGet(this, _config).groupBy,
233
- __privateGet(this, _columnMap),
234
- this.groupMap,
235
- this.processedData
236
- );
237
- this.setRange(vuuUtils.resetRange(__privateGet(this, _range)), true);
238
- }
239
- closeTreeNode(key) {
240
- this.openTreeNodes = this.openTreeNodes.filter((value) => value !== key);
241
- if (this.processedData) {
242
- this.processedData = groupUtils.collapseGroup(key, this.processedData);
243
- this.setRange(vuuUtils.resetRange(__privateGet(this, _range)), true);
244
- }
245
- }
246
- get links() {
247
- return __privateGet(this, _links);
248
- }
249
- get menu() {
250
- return this._menu;
251
- }
252
- get status() {
253
- return __privateGet(this, _status);
254
- }
255
- get data() {
256
- return __privateGet(this, _data);
257
- }
258
- // Only used by the UpdateGenerator
259
- get currentData() {
260
- return this.processedData ?? __privateGet(this, _data);
261
- }
262
- get table() {
263
- return this.tableSchema.table;
264
- }
265
- get config() {
266
- return __privateGet(this, _config);
267
- }
268
- set config(config) {
269
- const configChanges = this.applyConfig(config);
270
- if (configChanges) {
271
- if (config) {
272
- const originalConfig = __privateGet(this, _config);
273
- const newConfig = config?.filter?.filter && config?.filter.filterStruct === void 0 ? {
274
- ...config,
275
- filter: {
276
- filter: config.filter.filter,
277
- filterStruct: FilterParser.parseFilter(config.filter.filter)
278
- }
279
- } : config;
280
- __privateSet(this, _config, vuuUtils.withConfigDefaults(newConfig));
281
- let processedData;
282
- if (vuuUtils.hasFilter(config)) {
283
- const { filter, filterStruct = FilterParser.parseFilter(filter) } = config.filter;
284
- if (filterStruct) {
285
- const fn = filterEvaluationUtils.filterPredicate(__privateGet(this, _columnMap), filterStruct);
286
- processedData = __privateGet(this, _data).filter(fn);
287
- } else {
288
- throw Error("filter must include filterStruct");
289
- }
290
- }
291
- if (vuuUtils.hasSort(config)) {
292
- processedData = sortUtils.sortRows(
293
- processedData ?? __privateGet(this, _data),
294
- config.sort,
295
- __privateGet(this, _columnMap)
296
- );
297
- }
298
- if (this.openTreeNodes.length > 0 && vuuUtils.isGroupByChanged(originalConfig, config)) {
299
- if (__privateGet(this, _config).groupBy.length === 0) {
300
- this.openTreeNodes.length = 0;
301
- } else {
302
- console.log("adjust the openTReeNodes groupBy changed ", {
303
- originalGroupBy: originalConfig.groupBy,
304
- newGroupBy: newConfig.groupBy
305
- });
306
- }
307
- }
308
- if (vuuUtils.hasGroupBy(config)) {
309
- const [groupedData, groupMap] = groupUtils.groupRows(
310
- processedData ?? __privateGet(this, _data),
311
- config.groupBy,
312
- __privateGet(this, _columnMap)
313
- );
314
- this.groupMap = groupMap;
315
- processedData = groupedData;
316
- if (this.openTreeNodes.length > 0) {
317
- processedData = groupUtils.expandGroup(
318
- this.openTreeNodes,
319
- __privateGet(this, _data),
320
- __privateGet(this, _config).groupBy,
321
- __privateGet(this, _columnMap),
322
- this.groupMap,
323
- processedData
324
- );
325
- }
326
- }
327
- this.processedData = processedData?.map((row, i) => {
328
- const dolly = row.slice();
329
- dolly[0] = i;
330
- dolly[1] = i;
331
- return dolly;
332
- });
333
- }
334
- this.setRange(vuuUtils.resetRange(__privateGet(this, _range)), true);
335
- this.emit("config", __privateGet(this, _config), void 0, configChanges);
336
- }
337
- }
338
- applyConfig(config) {
339
- const { noChanges, ...otherChanges } = vuuUtils.isConfigChanged(
340
- __privateGet(this, _config),
341
- config
342
- );
343
- if (noChanges !== true) {
344
- if (config) {
345
- const newConfig = config?.filter?.filter && config?.filter.filterStruct === void 0 ? {
346
- ...config,
347
- filter: {
348
- filter: config.filter.filter,
349
- filterStruct: FilterParser.parseFilter(config.filter.filter)
350
- }
351
- } : config;
352
- __privateSet(this, _config, vuuUtils.withConfigDefaults(newConfig));
353
- return otherChanges;
354
- }
355
- }
356
- }
357
- get selectedRowsCount() {
358
- return __privateGet(this, _selectedRowsCount);
359
- }
360
- get size() {
361
- return this.processedData?.length ?? __privateGet(this, _data).length;
362
- }
363
- get range() {
364
- return __privateGet(this, _range);
365
- }
366
- set range(range) {
367
- this.setRange(range);
368
- }
369
- delete(row) {
370
- console.log(`delete row ${row.join(",")}`);
371
- }
372
- setRange(range, forceFullRefresh = false) {
373
- if (range.from !== __privateGet(this, _range).from || range.to !== __privateGet(this, _range).to) {
374
- __privateSet(this, _range, range);
375
- const keysResequenced = this.keys.reset(range);
376
- this.sendRowsToClient(forceFullRefresh || keysResequenced);
377
- } else if (forceFullRefresh) {
378
- this.sendRowsToClient(forceFullRefresh);
379
- }
380
- }
381
- sendRowsToClient(forceFullRefresh = false, row) {
382
- if (row) {
383
- this.clientCallback?.({
384
- clientViewportId: this.viewport,
385
- mode: "update",
386
- rows: [
387
- arrayDataUtils.toClientRow(row, this.keys, this.selectedRows, this.dataIndices)
388
- ],
389
- type: "viewport-update"
390
- });
391
- } else {
392
- const rowRange = this.rangeChangeRowset === "delta" && !forceFullRefresh ? vuuUtils.rangeNewItems(this.lastRangeServed, __privateGet(this, _range)) : __privateGet(this, _range);
393
- const data = this.processedData ?? __privateGet(this, _data);
394
- const rowsWithinViewport = data.slice(rowRange.from, rowRange.to).map(
395
- (row2) => arrayDataUtils.toClientRow(row2, this.keys, this.selectedRows, this.dataIndices)
396
- );
397
- this.clientCallback?.({
398
- clientViewportId: this.viewport,
399
- mode: "batch",
400
- rows: rowsWithinViewport,
401
- size: data.length,
402
- type: "viewport-update"
403
- });
404
- this.lastRangeServed = {
405
- from: __privateGet(this, _range).from,
406
- to: Math.min(
407
- __privateGet(this, _range).to,
408
- __privateGet(this, _range).from + rowsWithinViewport.length
409
- )
410
- };
411
- }
412
- }
413
- get columns() {
414
- return __privateGet(this, _config).columns;
415
- }
416
- set columns(columns) {
417
- const addedColumns = vuuUtils.getAddedItems(this.config.columns, columns);
418
- if (addedColumns.length > 0) {
419
- const columnsWithoutDescriptors = vuuUtils.getMissingItems(
420
- this.columnDescriptors,
421
- addedColumns,
422
- (col) => col.name
423
- );
424
- console.log(`columnsWithoutDescriptors`, {
425
- columnsWithoutDescriptors
426
- });
427
- }
428
- __privateSet(this, _columnMap, vuuUtils.buildColumnMap(columns));
429
- this.dataIndices = arrayDataUtils.buildDataToClientMap(__privateGet(this, _columnMap), this.dataMap);
430
- this.config = {
431
- ...__privateGet(this, _config),
432
- columns
433
- };
434
- }
435
- get aggregations() {
436
- return __privateGet(this, _config).aggregations;
437
- }
438
- set aggregations(aggregations) {
439
- __privateSet(this, _config, {
440
- ...__privateGet(this, _config),
441
- aggregations
442
- });
443
- const targetData = this.processedData ?? __privateGet(this, _data);
444
- const leafData = __privateGet(this, _data);
445
- aggregateUtils.aggregateData(
446
- aggregations,
447
- targetData,
448
- __privateGet(this, _config).groupBy,
449
- leafData,
450
- __privateGet(this, _columnMap),
451
- this.groupMap
452
- );
453
- this.setRange(vuuUtils.resetRange(__privateGet(this, _range)), true);
454
- this.emit("config", __privateGet(this, _config));
455
- }
456
- get sort() {
457
- return __privateGet(this, _config).sort;
458
- }
459
- set sort(sort) {
460
- debug?.(`sort ${JSON.stringify(sort)}`);
461
- this.config = {
462
- ...__privateGet(this, _config),
463
- sort
464
- };
465
- }
466
- get filter() {
467
- return __privateGet(this, _config).filter;
468
- }
469
- set filter(filter) {
470
- debug?.(`filter ${JSON.stringify(filter)}`);
471
- this.config = {
472
- ...__privateGet(this, _config),
473
- filter
474
- };
475
- }
476
- get groupBy() {
477
- return __privateGet(this, _config).groupBy;
478
- }
479
- set groupBy(groupBy) {
480
- this.config = {
481
- ...__privateGet(this, _config),
482
- groupBy
483
- };
484
- }
485
- get title() {
486
- return __privateGet(this, _title);
487
- }
488
- set title(title) {
489
- __privateSet(this, _title, title);
490
- }
491
- get _clientCallback() {
492
- return this.clientCallback;
493
- }
494
- createLink({
495
- parentVpId,
496
- link: { fromColumn, toColumn }
497
- }) {
498
- console.log("create link", {
499
- parentVpId,
500
- fromColumn,
501
- toColumn
502
- });
503
- }
504
- removeLink() {
505
- console.log("remove link");
506
- }
507
- findRow(rowKey) {
508
- const row = __privateGet(this, _data)[rowKey];
509
- if (row) {
510
- return row;
511
- } else {
512
- throw `no row found for key ${rowKey}`;
513
- }
514
- }
515
- applyEdit(row, columnName, value) {
516
- console.log(`ArrayDataSource applyEdit ${row[0]} ${columnName} ${value}`);
517
- return Promise.resolve(true);
518
- }
519
- async menuRpcCall(rpcRequest) {
520
- return new Promise((resolve) => {
521
- const { type } = rpcRequest;
522
- switch (type) {
523
- case "VP_EDIT_CELL_RPC":
524
- break;
525
- default:
526
- resolve(void 0);
527
- }
528
- });
529
- }
530
- }
531
- _columnMap = new WeakMap();
532
- _config = new WeakMap();
533
- _data = new WeakMap();
534
- _links = new WeakMap();
535
- _range = new WeakMap();
536
- _selectedRowsCount = new WeakMap();
537
- _size = new WeakMap();
538
- _status = new WeakMap();
539
- _title = new WeakMap();
540
-
541
- exports.ArrayDataSource = ArrayDataSource;
542
- //# sourceMappingURL=array-data-source.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"array-data-source.js","sources":["../../../../../src/array-data-source/array-data-source.ts"],"sourcesContent":["import {\n DataSource,\n DataSourceConfig,\n DataSourceConstructorProps,\n DataSourceEvents,\n DataSourceFilter,\n DataSourceRow,\n DataSourceStatus,\n MenuRpcResponse,\n Selection,\n SubscribeCallback,\n SubscribeProps,\n TableSchema,\n VuuUIMessageInRPCEditReject,\n VuuUIMessageInRPCEditResponse,\n WithFullConfig,\n} from \"@vuu-ui/vuu-data-types\";\nimport { filterPredicate, parseFilter } from \"@vuu-ui/vuu-filter-parser\";\nimport {\n ClientToServerEditRpc,\n ClientToServerMenuRPC,\n LinkDescriptorWithLabel,\n VuuAggregation,\n VuuGroupBy,\n VuuMenu,\n VuuRange,\n VuuRowDataItemType,\n VuuSort,\n} from \"@vuu-ui/vuu-protocol-types\";\nimport { ColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport {\n buildColumnMap,\n ColumnMap,\n isConfigChanged,\n EventEmitter,\n getAddedItems,\n getMissingItems,\n isGroupByChanged,\n hasFilter,\n hasGroupBy,\n hasSort,\n KeySet,\n logger,\n metadataKeys,\n NULL_RANGE,\n rangeNewItems,\n resetRange,\n uuid,\n vanillaConfig,\n withConfigDefaults,\n DataSourceConfigChanges,\n} from \"@vuu-ui/vuu-utils\";\nimport { aggregateData } from \"./aggregate-utils\";\nimport { buildDataToClientMap, toClientRow } from \"./array-data-utils\";\nimport { collapseGroup, expandGroup, GroupMap, groupRows } from \"./group-utils\";\nimport { sortRows } from \"./sort-utils\";\n\nconst { debug, info } = logger(\"ArrayDataSource\");\n\nconst { KEY } = metadataKeys;\n\nexport interface ArrayDataSourceConstructorProps\n extends Omit<DataSourceConstructorProps, \"bufferSize\" | \"table\"> {\n columnDescriptors: ColumnDescriptor[];\n data: Array<VuuRowDataItemType[]>;\n dataMap?: ColumnMap;\n keyColumn?: string;\n rangeChangeRowset?: \"delta\" | \"full\";\n}\n\nconst toDataSourceRow =\n (key: number) =>\n (data: VuuRowDataItemType[], index: number): DataSourceRow => {\n return [index, index, true, false, 1, 0, String(data[key]), 0, ...data];\n };\n\nconst buildTableSchema = (\n columns: ColumnDescriptor[],\n keyColumn?: string\n): TableSchema => {\n const schema: TableSchema = {\n columns: columns.map(({ name, serverDataType = \"string\" }) => ({\n name,\n serverDataType,\n })),\n key: keyColumn ?? columns[0].name,\n table: { module: \"\", table: \"Array\" },\n };\n\n return schema;\n};\n\nexport class ArrayDataSource\n extends EventEmitter<DataSourceEvents>\n implements DataSource\n{\n private clientCallback: SubscribeCallback | undefined;\n private columnDescriptors: ColumnDescriptor[];\n /** sorted offsets of data within raw data, reflecting sort order\n * of columns specified by client.\n */\n private dataIndices: number[] | undefined;\n /** Map reflecting positions of data items in raw data */\n private dataMap: ColumnMap | undefined;\n private groupMap: undefined | GroupMap;\n /** the index of key field within raw data row */\n private key: number;\n private lastRangeServed: VuuRange = { from: 0, to: 0 };\n private rangeChangeRowset: \"delta\" | \"full\";\n private openTreeNodes: string[] = [];\n\n /** Map reflecting positions of columns in client data sent to user */\n #columnMap: ColumnMap;\n #config: WithFullConfig = vanillaConfig;\n #data: DataSourceRow[];\n #links: LinkDescriptorWithLabel[] | undefined;\n #range: VuuRange = NULL_RANGE;\n #selectedRowsCount = 0;\n #size = 0;\n #status: DataSourceStatus = \"initialising\";\n #title: string | undefined;\n\n protected _menu: VuuMenu | undefined;\n protected selectedRows: Selection = [];\n\n public tableSchema: TableSchema;\n public viewport: string;\n\n private keys = new KeySet(this.#range);\n protected processedData: DataSourceRow[] | undefined = undefined;\n\n constructor({\n aggregations,\n // different from RemoteDataSource\n columnDescriptors,\n data,\n dataMap,\n filter,\n groupBy,\n keyColumn,\n rangeChangeRowset = \"delta\",\n sort,\n title,\n viewport,\n }: ArrayDataSourceConstructorProps) {\n super();\n\n if (!data || !columnDescriptors) {\n throw Error(\n \"ArrayDataSource constructor called without data or without columnDescriptors\"\n );\n }\n\n this.columnDescriptors = columnDescriptors;\n this.dataMap = dataMap;\n this.key = keyColumn\n ? this.columnDescriptors.findIndex((col) => col.name === keyColumn)\n : 0;\n this.rangeChangeRowset = rangeChangeRowset;\n this.tableSchema = buildTableSchema(columnDescriptors, keyColumn);\n this.viewport = viewport || uuid();\n this.#size = data.length;\n this.#title = title;\n\n const columns = columnDescriptors.map((col) => col.name);\n this.#columnMap = buildColumnMap(columns);\n this.dataIndices = buildDataToClientMap(this.#columnMap, this.dataMap);\n this.#data = data.map<DataSourceRow>(toDataSourceRow(this.key));\n\n this.config = {\n ...this.#config,\n aggregations: aggregations || this.#config.aggregations,\n columns,\n filter: filter || this.#config.filter,\n groupBy: groupBy || this.#config.groupBy,\n sort: sort || this.#config.sort,\n };\n\n debug?.(`columnMap: ${JSON.stringify(this.#columnMap)}`);\n }\n\n async subscribe(\n {\n viewport = this.viewport ?? uuid(),\n columns,\n aggregations,\n range,\n sort,\n groupBy,\n filter,\n }: SubscribeProps,\n callback: SubscribeCallback\n ) {\n this.clientCallback = callback;\n this.viewport = viewport;\n this.#status = \"subscribed\";\n this.lastRangeServed = { from: 0, to: 0 };\n\n let config = this.#config;\n\n const hasConfigProps = aggregations || columns || filter || groupBy || sort;\n if (hasConfigProps) {\n if (range) {\n this.#range = range;\n }\n config = {\n ...config,\n aggregations: aggregations || this.#config.aggregations,\n columns: columns || this.#config.columns,\n filter: filter || this.#config.filter,\n groupBy: groupBy || this.#config.groupBy,\n sort: sort || this.#config.sort,\n };\n }\n\n this.clientCallback?.({\n ...config,\n type: \"subscribed\",\n clientViewportId: this.viewport,\n range: this.#range,\n tableSchema: this.tableSchema,\n });\n\n if (hasConfigProps) {\n // invoke setter to action config\n this.config = config;\n } else {\n this.clientCallback({\n clientViewportId: this.viewport,\n mode: \"size-only\",\n type: \"viewport-update\",\n size: this.#data.length,\n });\n if (range) {\n // set range and trigger dispatch of initial rows\n this.range = range;\n this.sendRowsToClient();\n } else if (this.#range !== NULL_RANGE) {\n this.sendRowsToClient();\n }\n }\n }\n\n unsubscribe() {\n console.log(`unsubscribe noop`);\n }\n\n suspend() {\n console.log(`suspend #${this.viewport}, current status ${this.#status}`);\n info?.(`suspend #${this.viewport}, current status ${this.#status}`);\n this.#status = \"suspended\";\n\n return this;\n }\n\n resume() {\n console.log(`resume #${this.viewport}, current status ${this.#status}`);\n // const isDisabled = this.#status.startsWith(\"disabl\");\n const isSuspended = this.#status === \"suspended\";\n info?.(`resume #${this.viewport}, current status ${this.#status}`);\n console.log(`resume noop`);\n if (isSuspended) {\n this.#status = \"subscribed\";\n }\n return this;\n }\n\n disable() {\n console.log(`disable noop`);\n return this;\n }\n\n enable() {\n console.log(`enable noop`);\n return this;\n }\n\n select(selected: Selection) {\n this.#selectedRowsCount = selected.length;\n debug?.(`select ${JSON.stringify(selected)}`);\n this.selectedRows = selected;\n this.setRange(resetRange(this.#range), true);\n }\n\n openTreeNode(key: string) {\n this.openTreeNodes.push(key);\n this.processedData = expandGroup(\n this.openTreeNodes,\n this.#data,\n this.#config.groupBy,\n this.#columnMap,\n this.groupMap as GroupMap,\n this.processedData as DataSourceRow[]\n );\n this.setRange(resetRange(this.#range), true);\n }\n\n closeTreeNode(key: string) {\n this.openTreeNodes = this.openTreeNodes.filter((value) => value !== key);\n if (this.processedData) {\n this.processedData = collapseGroup(key, this.processedData);\n this.setRange(resetRange(this.#range), true);\n }\n }\n\n get links() {\n return this.#links;\n }\n\n get menu() {\n return this._menu;\n }\n\n get status() {\n return this.#status;\n }\n\n get data() {\n return this.#data;\n }\n\n // Only used by the UpdateGenerator\n get currentData() {\n return this.processedData ?? this.#data;\n }\n\n get table() {\n return this.tableSchema.table;\n }\n\n get config() {\n return this.#config;\n }\n\n set config(config: DataSourceConfig) {\n const configChanges = this.applyConfig(config);\n if (configChanges) {\n if (config) {\n const originalConfig = this.#config;\n const newConfig: DataSourceConfig =\n config?.filter?.filter && config?.filter.filterStruct === undefined\n ? {\n ...config,\n filter: {\n filter: config.filter.filter,\n filterStruct: parseFilter(config.filter.filter),\n },\n }\n : config;\n\n this.#config = withConfigDefaults(newConfig);\n\n let processedData: DataSourceRow[] | undefined;\n\n if (hasFilter(config)) {\n const { filter, filterStruct = parseFilter(filter) } = config.filter;\n if (filterStruct) {\n const fn = filterPredicate(this.#columnMap, filterStruct);\n processedData = this.#data.filter(fn);\n } else {\n throw Error(\"filter must include filterStruct\");\n }\n }\n\n if (hasSort(config)) {\n processedData = sortRows(\n processedData ?? this.#data,\n config.sort,\n this.#columnMap\n );\n }\n\n if (\n this.openTreeNodes.length > 0 &&\n isGroupByChanged(originalConfig, config)\n ) {\n if (this.#config.groupBy.length === 0) {\n this.openTreeNodes.length = 0;\n } else {\n //TODO purge any openTreeNodes for a no-longer-present groupBy col\n console.log(\"adjust the openTReeNodes groupBy changed \", {\n originalGroupBy: originalConfig.groupBy,\n newGroupBy: newConfig.groupBy,\n });\n }\n }\n\n if (hasGroupBy(config)) {\n const [groupedData, groupMap] = groupRows(\n processedData ?? this.#data,\n config.groupBy,\n this.#columnMap\n );\n this.groupMap = groupMap;\n processedData = groupedData;\n\n if (this.openTreeNodes.length > 0) {\n processedData = expandGroup(\n this.openTreeNodes,\n this.#data,\n this.#config.groupBy,\n this.#columnMap,\n this.groupMap as GroupMap,\n processedData as DataSourceRow[]\n );\n }\n }\n\n this.processedData = processedData?.map((row, i) => {\n const dolly = row.slice() as DataSourceRow;\n dolly[0] = i;\n dolly[1] = i;\n return dolly;\n });\n }\n\n this.setRange(resetRange(this.#range), true);\n\n this.emit(\"config\", this.#config, undefined, configChanges);\n }\n }\n\n applyConfig(config: DataSourceConfig): DataSourceConfigChanges | undefined {\n const { noChanges, ...otherChanges } = isConfigChanged(\n this.#config,\n config\n );\n\n if (noChanges !== true) {\n if (config) {\n const newConfig: DataSourceConfig =\n config?.filter?.filter && config?.filter.filterStruct === undefined\n ? {\n ...config,\n filter: {\n filter: config.filter.filter,\n filterStruct: parseFilter(config.filter.filter),\n },\n }\n : config;\n this.#config = withConfigDefaults(newConfig);\n return otherChanges;\n }\n }\n }\n\n get selectedRowsCount() {\n return this.#selectedRowsCount;\n }\n\n get size() {\n // return this.#size;\n return this.processedData?.length ?? this.#data.length;\n }\n\n get range() {\n return this.#range;\n }\n\n set range(range: VuuRange) {\n this.setRange(range);\n }\n\n protected delete(row: VuuRowDataItemType[]) {\n console.log(`delete row ${row.join(\",\")}`);\n }\n\n protected insert = (row: VuuRowDataItemType[]) => {\n // TODO take sorting, filtering. grouping into account\n const dataSourceRow = toDataSourceRow(this.key)(row, this.size);\n (this.#data as DataSourceRow[]).push(dataSourceRow);\n const { from, to } = this.#range;\n const [rowIdx] = dataSourceRow;\n if (rowIdx >= from && rowIdx < to) {\n this.sendRowsToClient();\n }\n };\n\n protected update = (row: VuuRowDataItemType[], columnName: string) => {\n // TODO take sorting, filtering. grouping into account\n const keyValue = row[this.key];\n const colIndex = this.#columnMap[columnName];\n const dataColIndex = this.dataMap?.[columnName];\n const dataIndex = this.#data.findIndex((row) => row[KEY] === keyValue);\n if (dataIndex !== -1 && dataColIndex !== undefined) {\n const dataSourceRow = this.#data[dataIndex];\n dataSourceRow[colIndex] = row[dataColIndex];\n const { from, to } = this.#range;\n const [rowIdx] = dataSourceRow;\n if (rowIdx >= from && rowIdx < to) {\n this.sendRowsToClient(false, dataSourceRow);\n }\n }\n };\n\n protected updateRow = (row: VuuRowDataItemType[]) => {\n // TODO take sorting, filtering. grouping into account\n const keyValue = row[this.key];\n const dataIndex = this.#data.findIndex((row) => row[KEY] === keyValue);\n if (dataIndex !== -1) {\n const dataSourceRow = toDataSourceRow(this.key)(row, dataIndex);\n // maybe update this in place\n this.#data[dataIndex] = dataSourceRow;\n const { from, to } = this.#range;\n if (dataIndex >= from && dataIndex < to) {\n this.sendRowsToClient(false, dataSourceRow);\n }\n }\n };\n\n private setRange(range: VuuRange, forceFullRefresh = false) {\n if (range.from !== this.#range.from || range.to !== this.#range.to) {\n this.#range = range;\n const keysResequenced = this.keys.reset(range);\n this.sendRowsToClient(forceFullRefresh || keysResequenced);\n } else if (forceFullRefresh) {\n this.sendRowsToClient(forceFullRefresh);\n }\n }\n\n sendRowsToClient(forceFullRefresh = false, row?: DataSourceRow) {\n if (row) {\n this.clientCallback?.({\n clientViewportId: this.viewport,\n mode: \"update\",\n rows: [\n toClientRow(row, this.keys, this.selectedRows, this.dataIndices),\n ],\n type: \"viewport-update\",\n });\n } else {\n const rowRange =\n this.rangeChangeRowset === \"delta\" && !forceFullRefresh\n ? rangeNewItems(this.lastRangeServed, this.#range)\n : this.#range;\n const data = this.processedData ?? this.#data;\n\n const rowsWithinViewport = data\n .slice(rowRange.from, rowRange.to)\n .map((row) =>\n toClientRow(row, this.keys, this.selectedRows, this.dataIndices)\n );\n\n this.clientCallback?.({\n clientViewportId: this.viewport,\n mode: \"batch\",\n rows: rowsWithinViewport,\n size: data.length,\n type: \"viewport-update\",\n });\n this.lastRangeServed = {\n from: this.#range.from,\n to: Math.min(\n this.#range.to,\n this.#range.from + rowsWithinViewport.length\n ),\n };\n }\n }\n\n get columns() {\n return this.#config.columns;\n }\n\n set columns(columns: string[]) {\n const addedColumns = getAddedItems(this.config.columns, columns);\n if (addedColumns.length > 0) {\n const columnsWithoutDescriptors = getMissingItems(\n this.columnDescriptors,\n addedColumns,\n (col) => col.name\n );\n console.log(`columnsWithoutDescriptors`, {\n columnsWithoutDescriptors,\n });\n }\n this.#columnMap = buildColumnMap(columns);\n this.dataIndices = buildDataToClientMap(this.#columnMap, this.dataMap);\n\n this.config = {\n ...this.#config,\n columns,\n };\n }\n\n get aggregations() {\n return this.#config.aggregations;\n }\n\n set aggregations(aggregations: VuuAggregation[]) {\n this.#config = {\n ...this.#config,\n aggregations,\n };\n\n const targetData = this.processedData ?? this.#data;\n const leafData = this.#data;\n\n aggregateData(\n aggregations,\n targetData,\n this.#config.groupBy,\n leafData,\n this.#columnMap,\n this.groupMap as GroupMap\n );\n this.setRange(resetRange(this.#range), true);\n\n this.emit(\"config\", this.#config);\n }\n\n get sort() {\n return this.#config.sort;\n }\n\n set sort(sort: VuuSort) {\n debug?.(`sort ${JSON.stringify(sort)}`);\n this.config = {\n ...this.#config,\n sort,\n };\n }\n\n get filter() {\n return this.#config.filter;\n }\n\n set filter(filter: DataSourceFilter) {\n debug?.(`filter ${JSON.stringify(filter)}`);\n // TODO check that filter has changed\n this.config = {\n ...this.#config,\n filter,\n };\n }\n\n get groupBy() {\n return this.#config.groupBy;\n }\n\n set groupBy(groupBy: VuuGroupBy) {\n this.config = {\n ...this.#config,\n groupBy,\n };\n }\n\n get title() {\n return this.#title;\n }\n\n set title(title: string | undefined) {\n this.#title = title;\n }\n\n get _clientCallback() {\n return this.clientCallback;\n }\n\n createLink({\n parentVpId,\n link: { fromColumn, toColumn },\n }: LinkDescriptorWithLabel) {\n console.log(\"create link\", {\n parentVpId,\n fromColumn,\n toColumn,\n });\n }\n\n removeLink() {\n console.log(\"remove link\");\n }\n\n private findRow(rowKey: number) {\n const row = this.#data[rowKey];\n if (row) {\n return row;\n } else {\n throw `no row found for key ${rowKey}`;\n }\n }\n\n applyEdit(\n row: DataSourceRow,\n columnName: string,\n value: VuuRowDataItemType\n ): Promise<true> {\n console.log(`ArrayDataSource applyEdit ${row[0]} ${columnName} ${value}`);\n return Promise.resolve(true);\n }\n\n async menuRpcCall(\n rpcRequest: Omit<ClientToServerMenuRPC, \"vpId\"> | ClientToServerEditRpc\n ): Promise<\n | MenuRpcResponse\n | VuuUIMessageInRPCEditReject\n | VuuUIMessageInRPCEditResponse\n | undefined\n > {\n return new Promise((resolve) => {\n const { type } = rpcRequest;\n switch (type) {\n case \"VP_EDIT_CELL_RPC\":\n {\n // TODO\n // const { rowKey, field, value } = rpcRequest;\n // try {\n // this.update(rowKey, field, value);\n // resolve(undefined);\n // } catch (error) {\n // resolve({ error: String(error), type: \"VP_EDIT_RPC_REJECT\" });\n // }\n }\n\n break;\n default:\n resolve(undefined);\n }\n });\n }\n}\n"],"names":["logger","metadataKeys","EventEmitter","vanillaConfig","NULL_RANGE","KeySet","row","uuid","buildColumnMap","buildDataToClientMap","resetRange","expandGroup","collapseGroup","parseFilter","withConfigDefaults","hasFilter","filterPredicate","hasSort","sortRows","isGroupByChanged","hasGroupBy","groupRows","isConfigChanged","toClientRow","rangeNewItems","getAddedItems","getMissingItems","aggregateData"],"mappings":"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"}
@@ -1,52 +0,0 @@
1
- 'use strict';
2
-
3
- var vuuUtils = require('@vuu-ui/vuu-utils');
4
-
5
- const { RENDER_IDX, SELECTED } = vuuUtils.metadataKeys;
6
- const toClientRow = (row, keys, selection, dataIndices) => {
7
- const [rowIndex] = row;
8
- let clientRow;
9
- if (dataIndices) {
10
- const { count } = vuuUtils.metadataKeys;
11
- clientRow = row.slice(0, count).concat(dataIndices.map((idx) => row[idx]));
12
- } else {
13
- clientRow = row.slice();
14
- }
15
- clientRow[RENDER_IDX] = keys.keyFor(rowIndex);
16
- clientRow[SELECTED] = vuuUtils.getSelectionStatus(selection, rowIndex);
17
- return clientRow;
18
- };
19
- const divergentMaps = (columnMap, dataMap) => {
20
- if (dataMap) {
21
- const { count: mapOffset } = vuuUtils.metadataKeys;
22
- for (const [columnName, index] of Object.entries(columnMap)) {
23
- const dataIdx = dataMap[columnName];
24
- if (dataIdx === void 0) {
25
- throw Error(
26
- `ArrayDataSource column ${columnName} is not in underlying data set`
27
- );
28
- } else if (dataIdx !== index - mapOffset) {
29
- return true;
30
- }
31
- }
32
- }
33
- return false;
34
- };
35
- const getDataIndices = (columnMap, dataMap) => {
36
- const { count: mapOffset } = vuuUtils.metadataKeys;
37
- const result = [];
38
- Object.entries(columnMap).forEach(([columnName]) => {
39
- result.push(dataMap[columnName] + mapOffset);
40
- });
41
- return result;
42
- };
43
- const buildDataToClientMap = (columnMap, dataMap) => {
44
- if (dataMap && divergentMaps(columnMap, dataMap)) {
45
- return getDataIndices(columnMap, dataMap);
46
- }
47
- return void 0;
48
- };
49
-
50
- exports.buildDataToClientMap = buildDataToClientMap;
51
- exports.toClientRow = toClientRow;
52
- //# sourceMappingURL=array-data-utils.js.map