@hpcc-js/dgrid 3.5.1 → 3.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,702 +1,3 @@
1
- var __defProp = Object.defineProperty;
2
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
- import { HTMLWidget, Palette, PropertyExt, format, select } from "@hpcc-js/common";
4
- import { hashSum } from "@hpcc-js/util";
5
- const PKG_NAME = "@hpcc-js/dgrid";
6
- const PKG_VERSION = "3.5.1";
7
- const BUILD_VERSION = "3.15.1";
8
- if (!globalThis["@hpcc-js/dgrid-shim"]) {
9
- console.error('dgrid-shim not loaded, please add `<script src="https://cdn.jsdelivr.net/npm/@hpcc-js/dgrid-shim/dist/index.min.js"><\/script>` or similar to your HTML file');
10
- }
11
- const Deferred = globalThis["@hpcc-js/dgrid-shim"].Deferred;
12
- const Memory = globalThis["@hpcc-js/dgrid-shim"].Memory;
13
- const QueryResults = globalThis["@hpcc-js/dgrid-shim"].QueryResults;
14
- const Grid = globalThis["@hpcc-js/dgrid-shim"].Grid;
15
- const PagingGrid = globalThis["@hpcc-js/dgrid-shim"].PagingGrid;
16
- const domConstruct = globalThis["@hpcc-js/dgrid-shim"].domConstruct;
17
- function entitiesEncode(str) {
18
- return String(str).replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
19
- }
20
- __name(entitiesEncode, "entitiesEncode");
21
- function safeEncode(item) {
22
- switch (Object.prototype.toString.call(item)) {
23
- case "[object Undefined]":
24
- case "[object Boolean]":
25
- case "[object Number]":
26
- return item;
27
- case "[object String]":
28
- return entitiesEncode(item);
29
- default:
30
- console.warn("Unknown cell type: " + Object.prototype.toString.call(item));
31
- }
32
- return item;
33
- }
34
- __name(safeEncode, "safeEncode");
35
- function isArray(obj) {
36
- return obj instanceof Array;
37
- }
38
- __name(isArray, "isArray");
39
- const LINE_SPLITTER = "<br><hr class='dgrid-fakeline'>";
40
- const LINE_SPLITTER2 = "<br><hr class='dgrid-fakeline' style='visibility: hidden'>";
41
- const _RowFormatter = class _RowFormatter {
42
- constructor(columns, _renderHtml) {
43
- this._renderHtml = _renderHtml;
44
- this._columns = columns;
45
- this.flattenColumns(columns);
46
- }
47
- _columns;
48
- _flattenedColumns = [];
49
- _columnIdx = {};
50
- _formattedRow = {};
51
- flattenColumns(columns) {
52
- for (const column of columns) {
53
- this.flattenColumn(column);
54
- }
55
- }
56
- flattenColumn(column) {
57
- if (column.children) {
58
- for (const childColumn of column.children) this.flattenColumn(childColumn);
59
- } else {
60
- this._columnIdx[column.field] = this._flattenedColumns.length;
61
- this._flattenedColumns.push(column.field);
62
- }
63
- }
64
- format(row) {
65
- this._formattedRow = {};
66
- this.formatRow(this._columns, row);
67
- return this.row();
68
- }
69
- calcDepth(columns, row) {
70
- let maxChildDepth = 1;
71
- for (const column of columns) {
72
- if (column.children && row[column.leafID]) {
73
- let childDepth = 0;
74
- let childRows = [];
75
- if (isArray(row[column.leafID])) {
76
- childRows = row[column.leafID];
77
- } else if (isArray(row[column.leafID].Row)) {
78
- childRows = row[column.leafID].Row;
79
- }
80
- for (const childRow of childRows) {
81
- childDepth += this.calcDepth(column.children, childRow);
82
- }
83
- maxChildDepth = Math.max(maxChildDepth, childDepth);
84
- }
85
- }
86
- return maxChildDepth;
87
- }
88
- formatCell(column, cell, maxChildDepth) {
89
- if (column.children) {
90
- let childDepth = 0;
91
- if (!isArray(cell)) {
92
- if (isArray(cell.Row)) {
93
- cell = cell.Row;
94
- } else {
95
- cell = [cell];
96
- }
97
- }
98
- for (const row of cell) {
99
- childDepth = Math.max(childDepth, this.formatRow(column.children, row));
100
- }
101
- } else {
102
- if (column.isSet) {
103
- cell = JSON.stringify(cell.Item);
104
- }
105
- if (this._formattedRow[column.field] === void 0) {
106
- this._formattedRow[column.field] = "" + (cell === void 0 ? "" : this._renderHtml ? cell : safeEncode(cell));
107
- } else {
108
- this._formattedRow[column.field] += LINE_SPLITTER;
109
- this._formattedRow[column.field] += "" + (cell === void 0 ? "" : this._renderHtml ? cell : safeEncode(cell));
110
- }
111
- if (maxChildDepth > 1) {
112
- const paddingArr = [];
113
- paddingArr.length = maxChildDepth;
114
- const padding = paddingArr.join(LINE_SPLITTER2);
115
- this._formattedRow[column.field] += padding;
116
- }
117
- }
118
- }
119
- formatRow(columns, row = [], rowIdx = 0) {
120
- const maxChildDepth = this.calcDepth(columns, row);
121
- for (const column of columns) {
122
- this.formatCell(column, row[column.leafID], maxChildDepth);
123
- }
124
- return maxChildDepth;
125
- }
126
- row() {
127
- const retVal = {};
128
- for (const column of this._flattenedColumns) {
129
- retVal[column] = this._formattedRow[column];
130
- }
131
- return retVal;
132
- }
133
- };
134
- __name(_RowFormatter, "RowFormatter");
135
- let RowFormatter = _RowFormatter;
136
- const _DBStore = class _DBStore {
137
- _db;
138
- Model;
139
- idProperty;
140
- constructor(db) {
141
- this._db = db;
142
- }
143
- _renderHtml = true;
144
- renderHtml(_) {
145
- this._renderHtml = _;
146
- }
147
- db2Columns(sortable, fields, prefix = "", formatter, renderCell) {
148
- if (!fields) return [];
149
- return fields.map((field, idx) => {
150
- const label = field.label();
151
- const column = {
152
- label,
153
- leafID: "" + idx,
154
- field: prefix + idx,
155
- idx,
156
- className: "resultGridCell",
157
- sortable,
158
- isSet: false
159
- };
160
- switch (field.type()) {
161
- case "nested":
162
- column.children = this.db2Columns(false, field.children(), prefix + idx + "_", formatter);
163
- column.sortable = false;
164
- break;
165
- default:
166
- column.formatter = formatter;
167
- column.renderCell = renderCell;
168
- }
169
- return column;
170
- });
171
- }
172
- columns(sortable, formatter, renderCell) {
173
- return this.db2Columns(sortable, this._db.fields(), "", formatter, renderCell);
174
- }
175
- getIdentity(object) {
176
- return object.__hpcc_id;
177
- }
178
- get(row) {
179
- return this._db.row(row + 1);
180
- }
181
- _fetchRange(opts) {
182
- const rowFormatter = new RowFormatter(this.columns(false), this._renderHtml);
183
- return this._db.data().slice(opts.start, opts.end).map((row, idx) => {
184
- const formattedRow = rowFormatter.format(row);
185
- return {
186
- ...formattedRow,
187
- __hpcc_id: opts.start + idx,
188
- __origRow: row
189
- };
190
- });
191
- }
192
- fetchRange(opts) {
193
- const data = this._fetchRange(opts);
194
- const retVal = new Deferred();
195
- retVal.totalLength = new Deferred();
196
- retVal.resolve(data);
197
- retVal.totalLength.resolve(this._db.length() - 1);
198
- return retVal;
199
- }
200
- sort(opts) {
201
- this._db.data().sort((l, r) => {
202
- for (const item of opts) {
203
- const idx = item.property;
204
- if (l[idx] === void 0 && r[idx] !== void 0 || l[idx] < r[idx]) return item.descending ? 1 : -1;
205
- if (l[idx] !== void 0 && r[idx] === void 0 || l[idx] > r[idx]) return item.descending ? -1 : 1;
206
- }
207
- return 0;
208
- });
209
- return this;
210
- }
211
- };
212
- __name(_DBStore, "DBStore");
213
- let DBStore = _DBStore;
214
- const _Common = class _Common extends HTMLWidget {
215
- _columns = [];
216
- _store = new DBStore(this._db);
217
- _dgridDiv;
218
- _dgrid;
219
- _prevPaging;
220
- _prevSortBy;
221
- _prevSortByDescending;
222
- _prevMultiSelect;
223
- constructor() {
224
- super();
225
- this._tag = "div";
226
- }
227
- formatSortBy() {
228
- const idx = this.columns().indexOf(this.sortBy());
229
- return idx >= 0 ? [{ property: idx.toString(), descending: this.sortByDescending() }] : void 0;
230
- }
231
- _supressEvents;
232
- selection(_) {
233
- if (!arguments.length) {
234
- const retVal = [];
235
- for (const id in this._dgrid.selection) {
236
- if (this._dgrid.selection[id]) {
237
- const storeItem = this._store.get(+id);
238
- retVal.push(this.rowToObj(storeItem));
239
- }
240
- }
241
- return retVal;
242
- }
243
- this._supressEvents = true;
244
- this._dgrid?.clearSelection();
245
- let first = true;
246
- this.data().forEach((row, idx) => {
247
- if (_.indexOf(row) >= 0) {
248
- const row2 = this._dgrid?.row(idx);
249
- if (row2.element && first) {
250
- first = false;
251
- row2.element.scrollIntoView();
252
- }
253
- this._dgrid?.select(idx);
254
- }
255
- });
256
- this._supressEvents = false;
257
- }
258
- enter(domNode, element) {
259
- super.enter(domNode, element);
260
- this._dgridDiv = element.append("div").attr("class", "flat");
261
- }
262
- update(domNode, element) {
263
- super.update(domNode, element);
264
- this._store.renderHtml(this.renderHtml());
265
- if (!this._dgrid || this._prevPaging !== this.pagination() || this._prevSortBy !== this.sortBy() || this._prevSortByDescending !== this.sortByDescending() || this._prevMultiSelect !== this.multiSelect()) {
266
- this._prevPaging = this.pagination();
267
- this._prevSortBy = this.sortBy();
268
- this._prevSortByDescending = this.sortByDescending();
269
- this._prevMultiSelect = this.multiSelect();
270
- if (this._dgrid) {
271
- this._dgrid.destroy();
272
- this._dgridDiv = element.append("div").attr("class", "flat");
273
- }
274
- this._dgrid = new (this._prevPaging ? PagingGrid : Grid)({
275
- columns: this._columns,
276
- collection: this._store,
277
- sort: this.formatSortBy(),
278
- selectionMode: this.multiSelect() ? "extended" : "single",
279
- deselectOnRefresh: true,
280
- cellNavigation: false,
281
- pagingLinks: 1,
282
- pagingTextBox: true,
283
- previousNextArrows: true,
284
- firstLastArrows: true,
285
- rowsPerPage: this.pageSize(),
286
- pageSizeOptions: [1, 10, 25, 50, 100, 1e3]
287
- }, this._dgridDiv.node());
288
- this._dgrid.on("dgrid-select", (evt) => {
289
- if (this._supressEvents) return;
290
- if (evt.rows && evt.rows.length && evt.rows[0].data) {
291
- this.click(this.rowToObj(evt.rows[0].data.__origRow), "", true, { selection: this.selection() });
292
- }
293
- });
294
- this._dgrid.on("dgrid-deselect", (evt) => {
295
- if (this._supressEvents) return;
296
- if (evt.rows && evt.rows.length && evt.rows[0].data) {
297
- this.click(this.rowToObj(evt.rows[0].data.__origRow), "", false, { selection: this.selection() });
298
- }
299
- });
300
- this._dgrid.refresh({});
301
- }
302
- this._dgrid.noDataMessage = `<span class='dojoxGridNoData'>${this.noDataMessage()}</span>`;
303
- this._dgrid.loadingMessage = `<span class='dojoxGridNoData'>${this.loadingMessage()}</span>`;
304
- this._dgridDiv.style("width", this.width() + "px").style("height", this.height() - 2 + "px");
305
- this._dgrid.resize();
306
- }
307
- exit(domNode, element) {
308
- delete this._prevPaging;
309
- if (this._dgrid) {
310
- this._dgrid.destroy();
311
- delete this._dgrid;
312
- }
313
- super.exit(domNode, element);
314
- }
315
- click(row, col, sel, more) {
316
- }
317
- };
318
- __name(_Common, "Common");
319
- let Common = _Common;
320
- Common.prototype._class += " dgrid_Common";
321
- Common.prototype.publish("noDataMessage", "...empty...", "string", "No Data Message");
322
- Common.prototype.publish("loadingMessage", "loading...", "string", "Loading Message");
323
- Common.prototype.publish("pagination", false, "boolean", "Enable paging");
324
- Common.prototype.publish("pageSize", 25, "number", "Page size");
325
- Common.prototype.publish("sortable", false, "boolean", "Enable sorting by column");
326
- Common.prototype.publish("sortBy", null, "set", "Default 'sort by' Column ID", function() {
327
- return this.columns();
328
- }, { optional: true });
329
- Common.prototype.publish("sortByDescending", false, "boolean", "Default 'sort by' descending", void 0, { disable: /* @__PURE__ */ __name((self) => !self.sortBy(), "disable") });
330
- Common.prototype.publish("multiSelect", false, "boolean", "Multiple Selection");
331
- Common.prototype.publish("renderHtml", true, "boolean", "Render HTML");
332
- const _DatasourceCache = class _DatasourceCache {
333
- _datasource;
334
- _prevHash;
335
- _fetchCache = {};
336
- constructor(datasource) {
337
- this._datasource = datasource;
338
- }
339
- validateCache() {
340
- const hash = this.hash();
341
- if (this._prevHash !== hash) {
342
- this._prevHash = hash;
343
- this._fetchCache = {};
344
- }
345
- }
346
- id() {
347
- return this._datasource.id();
348
- }
349
- hash() {
350
- return this._datasource.hash();
351
- }
352
- label() {
353
- return this._datasource.label();
354
- }
355
- outFields() {
356
- return this._datasource.outFields();
357
- }
358
- total() {
359
- return this._datasource.total();
360
- }
361
- fetch(from, count) {
362
- this.validateCache();
363
- const cacheID = `${from}->${count}`;
364
- let retVal = this._fetchCache[cacheID];
365
- if (!retVal) {
366
- retVal = this._datasource.fetch(from, count);
367
- this._fetchCache[cacheID] = retVal;
368
- }
369
- return retVal;
370
- }
371
- };
372
- __name(_DatasourceCache, "DatasourceCache");
373
- let DatasourceCache = _DatasourceCache;
374
- const _DatasourceStore = class _DatasourceStore {
375
- _datasource;
376
- _columnsIdx = {};
377
- _columns;
378
- rowFormatter;
379
- constructor(datasource, renderHtml) {
380
- this._datasource = new DatasourceCache(datasource);
381
- this._columnsIdx = {};
382
- this._columns = this.db2Columns(this._datasource.outFields()).map((column, idx) => {
383
- this._columnsIdx[column.field] = idx;
384
- return column;
385
- });
386
- this.rowFormatter = new RowFormatter(this._columns, renderHtml);
387
- }
388
- columns() {
389
- return this._columns;
390
- }
391
- db2Columns(fields, prefix = "") {
392
- if (!fields) return [];
393
- return fields.map((field, idx) => {
394
- const column = {
395
- field: prefix + field.id,
396
- leafID: field.id,
397
- label: field.id,
398
- idx,
399
- className: "resultGridCell",
400
- sortable: true,
401
- isSet: false
402
- };
403
- if (field.type === "dataset") {
404
- column.children = this.db2Columns(field.children, prefix + field.id + "_");
405
- } else {
406
- column.formatter = (cell, row) => {
407
- switch (typeof cell) {
408
- case "string":
409
- return cell.replace(/\t/g, "&nbsp;&nbsp;&nbsp;&nbsp;");
410
- }
411
- return cell;
412
- };
413
- }
414
- return column;
415
- });
416
- }
417
- getIdentity(row) {
418
- return row.__hpcc_id;
419
- }
420
- _request(start, end) {
421
- if (!this._datasource) return Promise.resolve({ totalLength: 0, data: [] });
422
- const retVal = this._datasource.fetch(start, end - start).then((response) => {
423
- return {
424
- totalLength: this._datasource.total(),
425
- data: response.map((row, idx) => {
426
- const formattedRow = this.rowFormatter.format(row);
427
- formattedRow.__hpcc_id = start + idx;
428
- formattedRow.__origRow = row;
429
- return formattedRow;
430
- })
431
- };
432
- });
433
- return retVal;
434
- }
435
- fetchRange(options) {
436
- const retVal = new Deferred();
437
- this._request(options.start, options.end).then((response) => retVal.resolve(response));
438
- return new QueryResults(retVal.then((response) => response.data), {
439
- totalLength: retVal.then((response) => response.totalLength)
440
- });
441
- }
442
- };
443
- __name(_DatasourceStore, "DatasourceStore");
444
- let DatasourceStore = _DatasourceStore;
445
- const _DatasourceTable = class _DatasourceTable extends Common {
446
- _prevDatasource;
447
- constructor() {
448
- super();
449
- }
450
- invalidate() {
451
- delete this._prevDatasource;
452
- return this;
453
- }
454
- enter(domNode, element) {
455
- super.enter(domNode, element);
456
- }
457
- update(domNode, element) {
458
- super.update(domNode, element);
459
- }
460
- render(callback) {
461
- return super.render((w) => {
462
- if (this._prevDatasource !== this.datasource()) {
463
- this._dgrid.set("collection", new Memory());
464
- this._dgrid.set("columns", []);
465
- this._prevDatasource = this.datasource();
466
- if (this._prevDatasource) {
467
- const store = new DatasourceStore(this._prevDatasource, this.renderHtml());
468
- this._dgrid.set("columns", store.columns());
469
- this._dgrid.set("collection", store);
470
- if (callback) {
471
- callback(w);
472
- }
473
- } else {
474
- if (callback) {
475
- callback(w);
476
- }
477
- }
478
- } else {
479
- if (callback) {
480
- callback(w);
481
- }
482
- }
483
- });
484
- }
485
- click(row, col, sel) {
486
- }
487
- };
488
- __name(_DatasourceTable, "DatasourceTable");
489
- let DatasourceTable = _DatasourceTable;
490
- DatasourceTable.prototype._class += " dgrid_DatasourceTable";
491
- DatasourceTable.prototype.publish("datasource", null, "object", "Datasource");
492
- const _ColumnFormat = class _ColumnFormat extends PropertyExt {
493
- _owner;
494
- constructor() {
495
- super();
496
- }
497
- owner(_) {
498
- if (!arguments.length) return this._owner;
499
- this._owner = _;
500
- return this;
501
- }
502
- valid() {
503
- return !!this.column();
504
- }
505
- formatterFunc() {
506
- const defaultFormatter = this._owner.formatterFunc();
507
- if (this.valid() && this.format()) {
508
- const numberFormatter = format(this.format());
509
- return function(cell, row) {
510
- if (typeof cell === "number")
511
- return numberFormatter(cell);
512
- return defaultFormatter.call(this, cell, row);
513
- };
514
- }
515
- return defaultFormatter;
516
- }
517
- renderCellFunc() {
518
- const defaultRenderCell = this._owner.renderCellFunc();
519
- const defaultFormatter = this.formatterFunc();
520
- if (this.valid() && this.paletteID()) {
521
- const columns = this._owner.columns();
522
- const palette = Palette.rainbow(this.paletteID());
523
- const min = this.min();
524
- const max = this.max();
525
- const valueColIdx = this.valueColumn() ? columns.indexOf(this.valueColumn()) : void 0;
526
- return function(row, cell, cellElement) {
527
- if (defaultRenderCell) {
528
- defaultRenderCell.call(this, row, cell, cellElement);
529
- }
530
- const value = valueColIdx ? row.__origRow[valueColIdx] : cell;
531
- const background = palette(value, min, max);
532
- const cellText = defaultFormatter.call(this, cell, row);
533
- select(cellElement).style("background", background).style("color", background && Palette.textColor(background)).text(cellText?.html ?? cellText ?? cell);
534
- };
535
- }
536
- return defaultRenderCell;
537
- }
538
- };
539
- __name(_ColumnFormat, "ColumnFormat");
540
- let ColumnFormat = _ColumnFormat;
541
- ColumnFormat.prototype._class += " dgrid_Table.ColumnFormat";
542
- ColumnFormat.prototype.publish("column", null, "set", "Column", function() {
543
- return this._owner.columns();
544
- }, { optional: true });
545
- ColumnFormat.prototype.publish("width", null, "number", "Width", null, { optional: true });
546
- ColumnFormat.prototype.publish("format", null, "string", "Format (d3-format)", null, { optional: true });
547
- ColumnFormat.prototype.publish("paletteID", null, "set", "Color palette for this widget", ["", ...Palette.rainbow("default").switch()], { optional: true });
548
- ColumnFormat.prototype.publish("min", 0, "number", "Min Value", null, { disable: /* @__PURE__ */ __name((cf) => !cf.paletteID(), "disable") });
549
- ColumnFormat.prototype.publish("max", 100, "number", "Max Value", null, { disable: /* @__PURE__ */ __name((cf) => !cf.paletteID(), "disable") });
550
- ColumnFormat.prototype.publish("valueColumn", null, "set", "Column", function() {
551
- return this._owner.columns();
552
- }, { optional: true, disable: /* @__PURE__ */ __name((cf) => !cf.paletteID(), "disable") });
553
- const _Table = class _Table extends Common {
554
- _prevColsHash;
555
- _prevFieldsHash;
556
- _colsRefresh = false;
557
- _dataRefresh = false;
558
- constructor() {
559
- super();
560
- }
561
- fields(_) {
562
- const retVal = super.fields.apply(this, arguments);
563
- if (arguments.length) {
564
- const hash = hashSum({ _ });
565
- if (this._prevFieldsHash !== hash) {
566
- this._prevFieldsHash = hash;
567
- this._colsRefresh = true;
568
- }
569
- }
570
- return retVal;
571
- }
572
- columns(_, asDefault) {
573
- const retVal = super.columns.apply(this, arguments);
574
- if (arguments.length) {
575
- const hash = hashSum({ _ });
576
- if (this._prevColsHash !== hash) {
577
- this._prevColsHash = hash;
578
- this._colsRefresh = true;
579
- }
580
- }
581
- return retVal;
582
- }
583
- data(_) {
584
- const retVal = super.data.apply(this, arguments);
585
- if (arguments.length) {
586
- this._dataRefresh = true;
587
- }
588
- return retVal;
589
- }
590
- enter(domNode, element) {
591
- super.enter(domNode, element);
592
- }
593
- guessWidth(columns, data) {
594
- const sortablePadding = this.sortable() ? 12 : 0;
595
- for (const column of columns) {
596
- if (column.children) {
597
- let sampleData = [];
598
- for (let i = 0; i < Math.min(3, data.length); ++i) {
599
- sampleData = sampleData.concat(data[i][column.idx]);
600
- }
601
- this.guessWidth(column.children, sampleData);
602
- } else {
603
- column.width = data.reduce((prevVal, row) => {
604
- const cell = ("" + row[column.idx]).trim();
605
- return Math.max(prevVal, this.textSize(cell).width);
606
- }, this.textSize("" + column.label, void 0, void 0, true).width + sortablePadding) + 8;
607
- }
608
- }
609
- }
610
- _prevHash;
611
- update(domNode, element) {
612
- super.update(domNode, element);
613
- const hash = this.hashSum();
614
- if (this._prevHash !== hash) {
615
- this._prevHash = hash;
616
- this._colsRefresh = true;
617
- }
618
- if (this._colsRefresh) {
619
- this._columns = this._store.columns(this.sortable(), this.formatterFunc(), this.renderCellFunc());
620
- switch (this.columnWidth()) {
621
- case "auto":
622
- const tenRows = this.data().filter((row, idx) => idx < 10);
623
- this.guessWidth(this._columns, tenRows);
624
- break;
625
- }
626
- const columns = this.columns();
627
- for (const columnFormat of this.columnFormats()) {
628
- if (columnFormat.valid()) {
629
- const colIdx = columns.indexOf(columnFormat.column());
630
- if (this._columns[colIdx]) {
631
- this._columns[colIdx].hidden = columnFormat.width() === 0;
632
- this._columns[colIdx].width = columnFormat.width() || this._columns[colIdx].width;
633
- this._columns[colIdx].formatter = columnFormat.formatterFunc();
634
- this._columns[colIdx].renderCell = columnFormat.renderCellFunc();
635
- }
636
- }
637
- }
638
- this._dgrid.set("columns", this._columns.filter((col) => !col.hidden));
639
- this._colsRefresh = false;
640
- }
641
- if (this._colsRefresh || this._dataRefresh) {
642
- if (this._colsRefresh) {
643
- this._dgrid.refresh({});
644
- } else {
645
- this._dgrid.refresh();
646
- }
647
- this._colsRefresh = false;
648
- this._dataRefresh = false;
649
- }
650
- }
651
- exit(domNode, element) {
652
- delete this._prevColsHash;
653
- delete this._prevFieldsHash;
654
- super.exit(domNode, element);
655
- }
656
- // Cell ---
657
- formatterFunc() {
658
- return function(cell, row) {
659
- switch (typeof cell) {
660
- case "string":
661
- return {
662
- html: cell.replace(/\t/g, "&nbsp;&nbsp;&nbsp;&nbsp;").trim()
663
- };
664
- case "undefined":
665
- return "";
666
- }
667
- return cell;
668
- };
669
- }
670
- renderCellFunc() {
671
- return void 0;
672
- }
673
- // Events ---
674
- click(row, col, sel) {
675
- }
676
- };
677
- __name(_Table, "Table");
678
- let Table = _Table;
679
- Table.prototype._class += " dgrid_Table";
680
- Table.prototype.publish("columnWidth", "auto", "set", "Default column width", ["auto", "none"]);
681
- Table.prototype.publish("columnFormats", [], "propertyArray", "Source Columns", null, { autoExpand: ColumnFormat });
682
- export {
683
- BUILD_VERSION,
684
- ColumnFormat,
685
- Common,
686
- DBStore,
687
- DatasourceCache,
688
- DatasourceStore,
689
- DatasourceTable,
690
- Deferred,
691
- Grid,
692
- Memory,
693
- PKG_NAME,
694
- PKG_VERSION,
695
- PagingGrid,
696
- QueryResults,
697
- RowFormatter,
698
- Table,
699
- domConstruct
700
- };
1
+ var t=Object.defineProperty,e=(e,s)=>t(e,"name",{value:s,configurable:!0});import{HTMLWidget as s,Palette as r,PropertyExt as i,format as o,select as n}from"@hpcc-js/common";import{hashSum as l}from"@hpcc-js/util";const a="@hpcc-js/dgrid",h="3.5.2",d="3.16.0";globalThis["@hpcc-js/dgrid-shim"]||console.error('dgrid-shim not loaded, please add `<script src="https://cdn.jsdelivr.net/npm/@hpcc-js/dgrid-shim/dist/index.min.js"><\/script>` or similar to your HTML file');const c=globalThis["@hpcc-js/dgrid-shim"].Deferred,u=globalThis["@hpcc-js/dgrid-shim"].Memory,p=globalThis["@hpcc-js/dgrid-shim"].QueryResults,_=globalThis["@hpcc-js/dgrid-shim"].Grid,m=globalThis["@hpcc-js/dgrid-shim"].PagingGrid,f=globalThis["@hpcc-js/dgrid-shim"].domConstruct;function g(t){return String(t).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function b(t){switch(Object.prototype.toString.call(t)){case"[object Undefined]":case"[object Boolean]":case"[object Number]":return t;case"[object String]":return g(t);default:console.warn("Unknown cell type: "+Object.prototype.toString.call(t))}return t}function w(t){return t instanceof Array}e(g,"entitiesEncode"),e(b,"safeEncode"),e(w,"isArray");const v=class _RowFormatter{constructor(t,e){this._renderHtml=e,this._columns=t,this.flattenColumns(t)}_columns;_flattenedColumns=[];_columnIdx={};_formattedRow={};flattenColumns(t){for(const e of t)this.flattenColumn(e)}flattenColumn(t){if(t.children)for(const e of t.children)this.flattenColumn(e);else this._columnIdx[t.field]=this._flattenedColumns.length,this._flattenedColumns.push(t.field)}format(t){return this._formattedRow={},this.formatRow(this._columns,t),this.row()}calcDepth(t,e){let s=1;for(const r of t)if(r.children&&e[r.leafID]){let t=0,i=[];w(e[r.leafID])?i=e[r.leafID]:w(e[r.leafID].Row)&&(i=e[r.leafID].Row);for(const e of i)t+=this.calcDepth(r.children,e);s=Math.max(s,t)}return s}formatCell(t,e,s){if(t.children){let s=0;w(e)||(e=w(e.Row)?e.Row:[e]);for(const r of e)s=Math.max(s,this.formatRow(t.children,r))}else if(t.isSet&&(e=JSON.stringify(e.Item)),void 0===this._formattedRow[t.field]?this._formattedRow[t.field]=""+(void 0===e?"":this._renderHtml?e:b(e)):(this._formattedRow[t.field]+="<br><hr class='dgrid-fakeline'>",this._formattedRow[t.field]+=""+(void 0===e?"":this._renderHtml?e:b(e))),s>1){const e=[];e.length=s;const r=e.join("<br><hr class='dgrid-fakeline' style='visibility: hidden'>");this._formattedRow[t.field]+=r}}formatRow(t,e=[],s=0){const r=this.calcDepth(t,e);for(const i of t)this.formatCell(i,e[i.leafID],r);return r}row(){const t={};for(const e of this._flattenedColumns)t[e]=this._formattedRow[e];return t}};e(v,"RowFormatter");let y=v;const D=class _DBStore{_db;Model;idProperty;constructor(t){this._db=t}_renderHtml=!0;renderHtml(t){this._renderHtml=t}db2Columns(t,e,s="",r,i){return e?e.map((e,o)=>{const n={label:e.label(),leafID:""+o,field:s+o,idx:o,className:"resultGridCell",sortable:t,isSet:!1};if("nested"===e.type())n.children=this.db2Columns(!1,e.children(),s+o+"_",r),n.sortable=!1;else n.formatter=r,n.renderCell=i;return n}):[]}columns(t,e,s){return this.db2Columns(t,this._db.fields(),"",e,s)}getIdentity(t){return t.__hpcc_id}get(t){return this._db.row(t+1)}_fetchRange(t){const e=new y(this.columns(!1),this._renderHtml);return this._db.data().slice(t.start,t.end).map((s,r)=>({...e.format(s),__hpcc_id:t.start+r,__origRow:s}))}fetchRange(t){const e=this._fetchRange(t),s=new c;return s.totalLength=new c,s.resolve(e),s.totalLength.resolve(this._db.length()-1),s}sort(t){return this._db.data().sort((e,s)=>{for(const r of t){const t=r.property;if(void 0===e[t]&&void 0!==s[t]||e[t]<s[t])return r.descending?1:-1;if(void 0!==e[t]&&void 0===s[t]||e[t]>s[t])return r.descending?-1:1}return 0}),this}};e(D,"DBStore");let C=D;const x=class _Common extends s{_columns=[];_store=new C(this._db);_dgridDiv;_dgrid;_prevPaging;_prevSortBy;_prevSortByDescending;_prevMultiSelect;constructor(){super(),this._tag="div"}formatSortBy(){const t=this.columns().indexOf(this.sortBy());return t>=0?[{property:t.toString(),descending:this.sortByDescending()}]:void 0}_supressEvents;selection(t){if(!arguments.length){const t=[];for(const e in this._dgrid.selection)if(this._dgrid.selection[e]){const s=this._store.get(+e);t.push(this.rowToObj(s))}return t}this._supressEvents=!0,this._dgrid?.clearSelection();let e=!0;this.data().forEach((s,r)=>{if(t.indexOf(s)>=0){const t=this._dgrid?.row(r);t.element&&e&&(e=!1,t.element.scrollIntoView()),this._dgrid?.select(r)}}),this._supressEvents=!1}enter(t,e){super.enter(t,e),this._dgridDiv=e.append("div").attr("class","flat")}update(t,e){super.update(t,e),this._store.renderHtml(this.renderHtml()),this._dgrid&&this._prevPaging===this.pagination()&&this._prevSortBy===this.sortBy()&&this._prevSortByDescending===this.sortByDescending()&&this._prevMultiSelect===this.multiSelect()||(this._prevPaging=this.pagination(),this._prevSortBy=this.sortBy(),this._prevSortByDescending=this.sortByDescending(),this._prevMultiSelect=this.multiSelect(),this._dgrid&&(this._dgrid.destroy(),this._dgridDiv=e.append("div").attr("class","flat")),this._dgrid=new(this._prevPaging?m:_)({columns:this._columns,collection:this._store,sort:this.formatSortBy(),selectionMode:this.multiSelect()?"extended":"single",deselectOnRefresh:!0,cellNavigation:!1,pagingLinks:1,pagingTextBox:!0,previousNextArrows:!0,firstLastArrows:!0,rowsPerPage:this.pageSize(),pageSizeOptions:[1,10,25,50,100,1e3]},this._dgridDiv.node()),this._dgrid.on("dgrid-select",t=>{this._supressEvents||t.rows&&t.rows.length&&t.rows[0].data&&this.click(this.rowToObj(t.rows[0].data.__origRow),"",!0,{selection:this.selection()})}),this._dgrid.on("dgrid-deselect",t=>{this._supressEvents||t.rows&&t.rows.length&&t.rows[0].data&&this.click(this.rowToObj(t.rows[0].data.__origRow),"",!1,{selection:this.selection()})}),this._dgrid.refresh({})),this._dgrid.noDataMessage=`<span class='dojoxGridNoData'>${this.noDataMessage()}</span>`,this._dgrid.loadingMessage=`<span class='dojoxGridNoData'>${this.loadingMessage()}</span>`,this._dgridDiv.style("width",this.width()+"px").style("height",this.height()-2+"px"),this._dgrid.resize()}exit(t,e){delete this._prevPaging,this._dgrid&&(this._dgrid.destroy(),delete this._dgrid),super.exit(t,e)}click(t,e,s,r){}};e(x,"Common");let R=x;R.prototype._class+=" dgrid_Common",R.prototype.publish("noDataMessage","...empty...","string","No Data Message"),R.prototype.publish("loadingMessage","loading...","string","Loading Message"),R.prototype.publish("pagination",!1,"boolean","Enable paging"),R.prototype.publish("pageSize",25,"number","Page size"),R.prototype.publish("sortable",!1,"boolean","Enable sorting by column"),R.prototype.publish("sortBy",null,"set","Default 'sort by' Column ID",function(){return this.columns()},{optional:!0}),R.prototype.publish("sortByDescending",!1,"boolean","Default 'sort by' descending",void 0,{disable:/* @__PURE__ */e(t=>!t.sortBy(),"disable")}),R.prototype.publish("multiSelect",!1,"boolean","Multiple Selection"),R.prototype.publish("renderHtml",!0,"boolean","Render HTML");const S=class _DatasourceCache{_datasource;_prevHash;_fetchCache={};constructor(t){this._datasource=t}validateCache(){const t=this.hash();this._prevHash!==t&&(this._prevHash=t,this._fetchCache={})}id(){return this._datasource.id()}hash(){return this._datasource.hash()}label(){return this._datasource.label()}outFields(){return this._datasource.outFields()}total(){return this._datasource.total()}fetch(t,e){this.validateCache();const s=`${t}->${e}`;let r=this._fetchCache[s];return r||(r=this._datasource.fetch(t,e),this._fetchCache[s]=r),r}};e(S,"DatasourceCache");let F=S;const j=class _DatasourceStore{_datasource;_columnsIdx={};_columns;rowFormatter;constructor(t,e){this._datasource=new F(t),this._columnsIdx={},this._columns=this.db2Columns(this._datasource.outFields()).map((t,e)=>(this._columnsIdx[t.field]=e,t)),this.rowFormatter=new y(this._columns,e)}columns(){return this._columns}db2Columns(t,e=""){return t?t.map((t,s)=>{const r={field:e+t.id,leafID:t.id,label:t.id,idx:s,className:"resultGridCell",sortable:!0,isSet:!1};return"dataset"===t.type?r.children=this.db2Columns(t.children,e+t.id+"_"):r.formatter=(t,e)=>"string"==typeof t?t.replace(/\t/g,"&nbsp;&nbsp;&nbsp;&nbsp;"):t,r}):[]}getIdentity(t){return t.__hpcc_id}_request(t,e){if(!this._datasource)return Promise.resolve({totalLength:0,data:[]});return this._datasource.fetch(t,e-t).then(e=>({totalLength:this._datasource.total(),data:e.map((e,s)=>{const r=this.rowFormatter.format(e);return r.__hpcc_id=t+s,r.__origRow=e,r})}))}fetchRange(t){const e=new c;return this._request(t.start,t.end).then(t=>e.resolve(t)),new p(e.then(t=>t.data),{totalLength:e.then(t=>t.totalLength)})}};e(j,"DatasourceStore");let H=j;const I=class _DatasourceTable extends R{_prevDatasource;constructor(){super()}invalidate(){return delete this._prevDatasource,this}enter(t,e){super.enter(t,e)}update(t,e){super.update(t,e)}render(t){return super.render(e=>{if(this._prevDatasource!==this.datasource())if(this._dgrid.set("collection",new u),this._dgrid.set("columns",[]),this._prevDatasource=this.datasource(),this._prevDatasource){const s=new H(this._prevDatasource,this.renderHtml());this._dgrid.set("columns",s.columns()),this._dgrid.set("collection",s),t&&t(e)}else t&&t(e);else t&&t(e)})}click(t,e,s){}};e(I,"DatasourceTable");let M=I;M.prototype._class+=" dgrid_DatasourceTable",M.prototype.publish("datasource",null,"object","Datasource");const B=class _ColumnFormat extends i{_owner;constructor(){super()}owner(t){return arguments.length?(this._owner=t,this):this._owner}valid(){return!!this.column()}formatterFunc(){const t=this._owner.formatterFunc();if(this.valid()&&this.format()){const e=o(this.format());return function(s,r){return"number"==typeof s?e(s):t.call(this,s,r)}}return t}renderCellFunc(){const t=this._owner.renderCellFunc(),e=this.formatterFunc();if(this.valid()&&this.paletteID()){const s=this._owner.columns(),i=r.rainbow(this.paletteID()),o=this.min(),l=this.max(),a=this.valueColumn()?s.indexOf(this.valueColumn()):void 0;return function(s,h,d){t&&t.call(this,s,h,d);const c=a?s.__origRow[a]:h,u=i(c,o,l),p=e.call(this,h,s);n(d).style("background",u).style("color",u&&r.textColor(u)).text(p?.html??p??h)}}return t}};e(B,"ColumnFormat");let T=B;T.prototype._class+=" dgrid_Table.ColumnFormat",T.prototype.publish("column",null,"set","Column",function(){return this._owner.columns()},{optional:!0}),T.prototype.publish("width",null,"number","Width",null,{optional:!0}),T.prototype.publish("format",null,"string","Format (d3-format)",null,{optional:!0}),T.prototype.publish("paletteID",null,"set","Color palette for this widget",["",...r.rainbow("default").switch()],{optional:!0}),T.prototype.publish("min",0,"number","Min Value",null,{disable:/* @__PURE__ */e(t=>!t.paletteID(),"disable")}),T.prototype.publish("max",100,"number","Max Value",null,{disable:/* @__PURE__ */e(t=>!t.paletteID(),"disable")}),T.prototype.publish("valueColumn",null,"set","Column",function(){return this._owner.columns()},{optional:!0,disable:/* @__PURE__ */e(t=>!t.paletteID(),"disable")});const O=class _Table extends R{_prevColsHash;_prevFieldsHash;_colsRefresh=!1;_dataRefresh=!1;constructor(){super()}fields(t){const e=super.fields.apply(this,arguments);if(arguments.length){const e=l({_:t});this._prevFieldsHash!==e&&(this._prevFieldsHash=e,this._colsRefresh=!0)}return e}columns(t,e){const s=super.columns.apply(this,arguments);if(arguments.length){const e=l({_:t});this._prevColsHash!==e&&(this._prevColsHash=e,this._colsRefresh=!0)}return s}data(t){const e=super.data.apply(this,arguments);return arguments.length&&(this._dataRefresh=!0),e}enter(t,e){super.enter(t,e)}guessWidth(t,e){const s=this.sortable()?12:0;for(const r of t)if(r.children){let t=[];for(let s=0;s<Math.min(3,e.length);++s)t=t.concat(e[s][r.idx]);this.guessWidth(r.children,t)}else r.width=e.reduce((t,e)=>{const s=(""+e[r.idx]).trim();return Math.max(t,this.textSize(s).width)},this.textSize(""+r.label,void 0,void 0,!0).width+s)+8}_prevHash;update(t,e){super.update(t,e);const s=this.hashSum();if(this._prevHash!==s&&(this._prevHash=s,this._colsRefresh=!0),this._colsRefresh){if(this._columns=this._store.columns(this.sortable(),this.formatterFunc(),this.renderCellFunc()),"auto"===this.columnWidth()){const t=this.data().filter((t,e)=>e<10);this.guessWidth(this._columns,t)}const t=this.columns();for(const e of this.columnFormats())if(e.valid()){const s=t.indexOf(e.column());this._columns[s]&&(this._columns[s].hidden=0===e.width(),this._columns[s].width=e.width()||this._columns[s].width,this._columns[s].formatter=e.formatterFunc(),this._columns[s].renderCell=e.renderCellFunc())}this._dgrid.set("columns",this._columns.filter(t=>!t.hidden)),this._colsRefresh=!1}(this._colsRefresh||this._dataRefresh)&&(this._colsRefresh?this._dgrid.refresh({}):this._dgrid.refresh(),this._colsRefresh=!1,this._dataRefresh=!1)}exit(t,e){delete this._prevColsHash,delete this._prevFieldsHash,super.exit(t,e)}formatterFunc(){return function(t,e){switch(typeof t){case"string":return{html:t.replace(/\t/g,"&nbsp;&nbsp;&nbsp;&nbsp;").trim()};case"undefined":return""}return t}}renderCellFunc(){}click(t,e,s){}};e(O,"Table");let P=O;P.prototype._class+=" dgrid_Table",P.prototype.publish("columnWidth","auto","set","Default column width",["auto","none"]),P.prototype.publish("columnFormats",[],"propertyArray","Source Columns",null,{autoExpand:T});export{d as BUILD_VERSION,T as ColumnFormat,R as Common,C as DBStore,F as DatasourceCache,H as DatasourceStore,M as DatasourceTable,c as Deferred,_ as Grid,u as Memory,a as PKG_NAME,h as PKG_VERSION,m as PagingGrid,p as QueryResults,y as RowFormatter,P as Table,f as domConstruct};
701
2
  //# sourceMappingURL=index.js.map
702
3
  !function(){"use strict";try{if("undefined"!=typeof document){var i=document.createElement("style");i.appendChild(document.createTextNode(".dijitTooltip{position:absolute;z-index:2000;display:block;left:0;top:-10000px;overflow:visible;font-family:Verdana,Geneva,sans-serif;font-size:12px}.dijitTooltipContainer{border:solid black 2px;background:#b8b5b5;color:#000;font-size:small}.dijitTooltipFocusNode{padding:2px}.dijitTooltipConnector{position:absolute}.dj_a11y .dijitTooltipConnector,.dijitTooltipData{display:none}.dijitTooltip{background:transparent}.dijitTooltipContainer{background-color:#424242;opacity:1;-ms-filter:none;filter:none;padding:4px 8px;border-radius:3px}.dijitTooltip .dijitTooltipContainer{color:#fff;border:0 none}.dijitTooltipConnector{z-index:2;width:auto;height:auto;opacity:1;-ms-filter:none;filter:none}.dijitTooltipABRight .dijitTooltipConnector{left:auto!important;right:8px}.dijitTooltipBelow{padding-top:4px}.dijitTooltipBelow .dijitTooltipConnector{top:0;left:8px;border-bottom:4px solid #424242;border-left:4px solid transparent;border-right:4px solid transparent;border-top:0}.dijitTooltipAbove{padding-bottom:4px}.dijitTooltipAbove .dijitTooltipConnector{bottom:0;left:8px;border-top:4px solid #424242;border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:0}.dijitTooltipLeft{padding-right:4px}.dijitTooltipLeft .dijitTooltipConnector{right:0;border-left:4px solid #424242;border-bottom:4px solid transparent;border-top:4px solid transparent;border-right:0}.dijitTooltipRight{padding-left:4px}.dijitTooltipRight .dijitTooltipConnector{left:0;border-bottom:4px solid transparent;border-top:4px solid transparent;border-right:4px solid #424242}.dgrid{position:relative;overflow:hidden;border:1px solid #ddd;height:30em;display:block}.dgrid-header{background-color:#eee}.dgrid-header-row{position:absolute;right:17px;left:0}.dgrid-header-scroll{position:absolute;top:0;right:0}.dgrid-footer{position:absolute;bottom:0;width:100%}.dgrid-header-hidden{font-size:0;height:0!important;border-top:none!important;border-bottom:none!important;margin-top:0!important;margin-bottom:0!important;padding-top:0!important;padding-bottom:0!important}.dgrid-footer-hidden{display:none}.dgrid-sortable{cursor:pointer}.dgrid-header,.dgrid-header-row,.dgrid-footer{overflow:hidden;background-color:#eee}.dgrid-row-table{border-collapse:collapse;border:none;table-layout:fixed;empty-cells:show;width:100%;height:100%}.dgrid-cell{padding:3px;text-align:left;overflow:hidden;vertical-align:top;border:1px solid #ddd;border-top-style:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;text-overflow:ellipsis;white-space:nowrap}.dgrid-content{position:relative;height:99%}.dgrid-scroller{overflow-x:auto;overflow-y:scroll;position:absolute;top:0;margin-top:25px;bottom:0;width:100%}.dgrid-preload{font-size:0;line-height:0}.dgrid-loading{position:relative;height:100%}.dgrid-above{position:absolute;bottom:0}.ui-icon{width:12px;height:16px;background-image:url(data:image/png;base64,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)}.dgrid-sort-arrow{background-position:-64px -16px;display:block;float:right;margin:0 4px 0 5px;height:12px}.dgrid-sort-up .dgrid-sort-arrow{background-position:0px -16px}.dgrid-selected{background-color:#bbb}.dgrid-input{width:99%}html.has-mozilla .dgrid .dgrid-row:focus,html.has-mozilla .dgrid .dgrid-cell:focus{outline:1px dotted}html.has-mozilla .dgrid-focus{outline-offset:-1px}.dgrid-scrollbar-measure{width:100px;height:100px;overflow:scroll;position:absolute;top:-9999px}.dgrid-autoheight{height:auto}.dgrid-autoheight .dgrid-scroller{position:relative;overflow-y:hidden}.dgrid-autoheight .dgrid-header-scroll{display:none}.dgrid-autoheight .dgrid-header{right:0}.dgrid-column-set{overflow:hidden;width:100%;position:relative;height:100%;-ms-touch-action:pan-y;touch-action:pan-y}.dgrid-column-set-cell{vertical-align:top;height:100%}.dgrid-column-set-scroller-container{font-size:0;position:absolute;bottom:0}.dgrid-autoheight .dgrid-column-set-scroller-container{position:relative}.dgrid-column-set-scroller{display:inline-block;overflow-x:auto;overflow-y:hidden}.dgrid-column-set-scroller-content{height:1px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.dgrid-expando-icon{width:16px;height:16px}.dgrid-tree-container{-webkit-transition-duration:.3s;-moz-transition-duration:.3s;-o-transition-duration:.3s;-ms-transition-duration:.3s;transition-duration:.3s;overflow:hidden}.dgrid-tree-container.dgrid-tree-resetting{-webkit-transition-duration:0;-moz-transition-duration:0;-o-transition-duration:0;-ms-transition-duration:0;transition-duration:0}.dgrid-hider-toggle{background-position:0 -192px;background-color:transparent;border:none;cursor:pointer;position:absolute;right:0;top:0}.dgrid-rtl-swap .dgrid-hider-toggle{right:auto;left:0}.dgrid-hider-menu{position:absolute;top:0;right:17px;width:184px;background-color:#fff;border:1px solid #000;z-index:99999;padding:4px;overflow-x:hidden;overflow-y:auto}.dgrid-rtl-swap .dgrid-hider-menu{right:auto;left:17px}.dgrid-hider-menu-row{position:relative;padding:2px}.dgrid-hider-menu-check{position:absolute;top:2px;left:2px;padding:0}.dgrid-hider-menu-label{display:block;padding-left:20px}.dgrid-header .dojoDndTarget .dgrid-cell{display:table-cell}.dgrid-header .dojoDndItemBefore{border-left:2px dotted #000!important}.dgrid-header .dojoDndItemAfter{border-right:2px dotted #000!important}.dgrid-column-resizer{cursor:col-resize;position:absolute;width:2px;background-color:#666;z-index:1000}.dgrid-resize-handle{height:100px;width:0;position:absolute;right:-4px;top:-4px;cursor:col-resize;z-index:999;border-left:5px solid transparent;outline:none}.dgrid-resize-header-container{height:100%}.dgrid-resize-guard{cursor:col-resize;position:absolute;inset:0}html.has-touch .dgrid-resize-handle{border-left:20px solid transparent}html.has-touch .dgrid-column-resizer{width:2px}.dgrid-resize-header-container{position:relative}.dgrid-header .dgrid-cell{overflow:hidden}.dgrid-spacer-row{height:0}.dgrid-spacer-row th{padding-top:0;padding-bottom:0;border-top:none;border-bottom:none}.dgrid-status{padding:2px}.dgrid-pagination .dgrid-status{float:left}.dgrid-pagination .dgrid-navigation,.dgrid-pagination .dgrid-page-size{float:right}.dgrid-navigation .dgrid-page-link{cursor:pointer;font-weight:700;text-decoration:none;color:inherit;padding:0 4px}.dgrid-first,.dgrid-last,.dgrid-next,.dgrid-previous{font-size:130%}.dgrid-pagination .dgrid-page-disabled{color:#aaa;cursor:default}.dgrid-page-input{margin-top:1px;width:2em;text-align:center}.dgrid-page-size{margin:1px 4px 0}.dgrid-rtl-swap .dgrid-header-row{right:0;left:17px}.dgrid-rtl-swap .dgrid-header-scroll{left:0;right:auto}.dgrid-rtl .dgrid-cell{text-align:right}.dgrid-rtl .dgrid-sort-arrow{float:left;margin:0 5px 0 4px}.dgrid-rtl .ui-icon-triangle-1-e{background-position:-96px -16px}.dgrid-rtl .ui-icon-triangle-1-se{background-position:-80px -16px}.dgrid-rtl .dgrid-pagination .dgrid-status,.dgrid-rtl .dgrid-pagination .dgrid-page-size{float:right}.dgrid-rtl .dgrid-pagination .dgrid-navigation{float:left}.dgrid-rtl.dgrid-autoheight .dgrid-header{left:0}.dgrid_Table .placeholder{border:none;padding:0;overflow:hidden}.dgrid_Table .dgrid-fakeline{border:0px;border-bottom:1px solid rgb(221,221,221);margin:2px -3px}.dgrid_Table .dgrid-sortable .dgrid-sort-arrow.ui-icon{margin:0}")),document.head.appendChild(i)}}catch(o){console.error("vite-plugin-css-injected-by-js",o)}}();
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/__package__.ts","../src/dgrid-shim.ts","../src/RowFormatter.ts","../src/DBStore.ts","../src/Common.ts","../src/DatasourceStore.ts","../src/DatasourceTable.ts","../src/Table.ts"],"sourcesContent":["export const PKG_NAME = \"__PACKAGE_NAME__\";\nexport const PKG_VERSION = \"__PACKAGE_VERSION__\";\nexport const BUILD_VERSION = \"__BUILD_VERSION__\";\n","import * as dgrid_shim from \"@hpcc-js/dgrid-shim\";\n\nif (!globalThis[\"@hpcc-js/dgrid-shim\"]) {\n console.error(\"dgrid-shim not loaded, please add `<script src=\\\"https://cdn.jsdelivr.net/npm/@hpcc-js/dgrid-shim/dist/index.min.js\\\"></script>` or similar to your HTML file\");\n}\n\nexport const Deferred = globalThis[\"@hpcc-js/dgrid-shim\"].Deferred as typeof dgrid_shim.Deferred;\nexport const Memory = globalThis[\"@hpcc-js/dgrid-shim\"].Memory as typeof dgrid_shim.Memory;\nexport const QueryResults = globalThis[\"@hpcc-js/dgrid-shim\"].QueryResults as typeof dgrid_shim.QueryResults;\nexport const Grid = globalThis[\"@hpcc-js/dgrid-shim\"].Grid as typeof dgrid_shim.Grid;\nexport const PagingGrid = globalThis[\"@hpcc-js/dgrid-shim\"].PagingGrid as typeof dgrid_shim.PagingGrid;\nexport const domConstruct = globalThis[\"@hpcc-js/dgrid-shim\"].domConstruct as typeof dgrid_shim.domConstruct;\n","function entitiesEncode(str) {\n return String(str).replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\").replace(/\"/g, \"&quot;\");\n}\n\nfunction safeEncode(item) {\n switch (Object.prototype.toString.call(item)) {\n case \"[object Undefined]\":\n case \"[object Boolean]\":\n case \"[object Number]\":\n return item;\n case \"[object String]\":\n return entitiesEncode(item);\n default:\n console.warn(\"Unknown cell type: \" + Object.prototype.toString.call(item));\n }\n return item;\n}\n\nfunction isArray(obj: any): obj is any[] {\n return obj instanceof Array;\n}\n\nconst LINE_SPLITTER = \"<br><hr class='dgrid-fakeline'>\";\nconst LINE_SPLITTER2 = \"<br><hr class='dgrid-fakeline' style='visibility: hidden'>\";\n\nexport interface ColumnType {\n field: string;\n leafID: string;\n label: string;\n idx: number;\n className: string;\n sortable: boolean;\n isSet: boolean;\n width?: number;\n formatter?: CellFormatter;\n renderCell?: CellRenderer;\n children?: ColumnType[];\n}\nexport interface RowType {\n __hpcc_id: number;\n __origRow: any[];\n [colIdx: number]: any;\n}\nexport type CellFormatter = (this: ColumnType, cell: any, row: RowType) => string;\nexport type CellRenderer = (this: ColumnType, row: RowType, cell: any, cellElement: HTMLElement) => HTMLElement | void;\n\nexport class RowFormatter {\n private _columns: ColumnType[];\n private _flattenedColumns = [];\n private _columnIdx = {};\n private _formattedRow = {};\n\n constructor(columns: ColumnType[], protected _renderHtml) {\n this._columns = columns;\n this.flattenColumns(columns);\n }\n\n flattenColumns(columns: ColumnType[]) {\n for (const column of columns) {\n this.flattenColumn(column);\n }\n }\n\n flattenColumn(column: ColumnType) {\n if (column.children) {\n for (const childColumn of column.children) this.flattenColumn(childColumn);\n } else {\n this._columnIdx[column.field] = this._flattenedColumns.length;\n this._flattenedColumns.push(column.field);\n }\n }\n\n format(row) {\n this._formattedRow = {};\n this.formatRow(this._columns, row);\n return this.row();\n }\n\n calcDepth(columns: ColumnType[], row) {\n let maxChildDepth = 1;\n for (const column of columns) {\n if (column.children && row[column.leafID]) {\n let childDepth = 0;\n let childRows = [];\n if (isArray(row[column.leafID])) {\n childRows = row[column.leafID];\n } else if (isArray(row[column.leafID].Row)) {\n childRows = row[column.leafID].Row;\n }\n for (const childRow of childRows) {\n childDepth += this.calcDepth(column.children, childRow);\n }\n maxChildDepth = Math.max(maxChildDepth, childDepth);\n }\n }\n return maxChildDepth;\n }\n\n formatCell(column: ColumnType, cell, maxChildDepth) {\n if (column.children) {\n let childDepth = 0;\n if (!isArray(cell)) {\n if (isArray(cell.Row)) {\n cell = cell.Row;\n } else {\n cell = [cell];\n }\n }\n for (const row of cell) {\n childDepth = Math.max(childDepth, this.formatRow(column.children, row));\n }\n } else {\n if (column.isSet) {\n cell = JSON.stringify(cell.Item);\n }\n if (this._formattedRow[column.field] === undefined) {\n this._formattedRow[column.field] = \"\" + (cell === undefined ? \"\" : (this._renderHtml ? cell : safeEncode(cell)));\n } else {\n this._formattedRow[column.field] += LINE_SPLITTER;\n this._formattedRow[column.field] += \"\" + (cell === undefined ? \"\" : (this._renderHtml ? cell : safeEncode(cell)));\n }\n if (maxChildDepth > 1) {\n const paddingArr = [];\n paddingArr.length = maxChildDepth;\n const padding = paddingArr.join(LINE_SPLITTER2);\n this._formattedRow[column.field] += padding;\n }\n }\n }\n\n formatRow(columns: ColumnType[], row: { [key: string]: any } = [], rowIdx: number = 0) {\n const maxChildDepth = this.calcDepth(columns, row);\n for (const column of columns) {\n this.formatCell(column, row[column.leafID], maxChildDepth);\n }\n return maxChildDepth;\n }\n\n row() {\n const retVal = {};\n for (const column of this._flattenedColumns) {\n retVal[column] = this._formattedRow[column];\n }\n return retVal;\n }\n}\n","import { Database } from \"@hpcc-js/common\";\nimport { Deferred } from \"./dgrid-shim.ts\";\nimport { CellFormatter, CellRenderer, ColumnType, RowFormatter } from \"./RowFormatter.ts\";\n\nexport class DBStore {\n private _db: Database.Grid;\n\n Model: null;\n idProperty: \"__hpcc_id\";\n\n constructor(db: Database.Grid) {\n this._db = db;\n }\n\n protected _renderHtml = true;\n renderHtml(_: boolean) {\n this._renderHtml = _;\n }\n\n db2Columns(sortable: boolean, fields: Database.Field[], prefix = \"\", formatter?: CellFormatter, renderCell?: CellRenderer): ColumnType[] {\n if (!fields) return [];\n return fields.map((field, idx) => {\n const label = field.label();\n const column: ColumnType = {\n label,\n leafID: \"\" + idx,\n field: prefix + idx,\n idx,\n className: \"resultGridCell\",\n sortable,\n isSet: false\n };\n switch (field.type()) {\n case \"nested\":\n column.children = this.db2Columns(false, field.children(), prefix + idx + \"_\", formatter);\n column.sortable = false;\n break;\n default:\n column.formatter = formatter;\n column.renderCell = renderCell;\n }\n return column;\n });\n }\n\n columns(sortable: boolean, formatter?: CellFormatter, renderCell?: CellRenderer) {\n return this.db2Columns(sortable, this._db.fields(), \"\", formatter, renderCell);\n }\n\n getIdentity(object) {\n return object.__hpcc_id;\n }\n\n get(row: number) {\n return this._db.row(row + 1);\n }\n\n _fetchRange(opts: { start: number, end: number }): object[] {\n const rowFormatter = new RowFormatter(this.columns(false), this._renderHtml);\n return this._db.data().slice(opts.start, opts.end).map((row, idx) => {\n const formattedRow: any = rowFormatter.format(row);\n return {\n ...formattedRow,\n __hpcc_id: opts.start + idx,\n __origRow: row\n };\n });\n }\n\n fetchRange(opts: { start: number, end: number }): Promise<object[]> {\n const data = this._fetchRange(opts);\n const retVal: any = new Deferred();\n retVal.totalLength = new Deferred();\n retVal.resolve(data);\n retVal.totalLength.resolve(this._db.length() - 1);\n return retVal;\n }\n\n sort(opts) {\n this._db.data().sort((l, r) => {\n for (const item of opts) {\n const idx = item.property;\n if ((l[idx] === undefined && r[idx] !== undefined) || l[idx] < r[idx]) return item.descending ? 1 : -1;\n if ((l[idx] !== undefined && r[idx] === undefined) || l[idx] > r[idx]) return item.descending ? -1 : 1;\n }\n return 0;\n });\n return this;\n }\n}\n","import { HTMLWidget } from \"@hpcc-js/common\";\nimport { Grid, PagingGrid } from \"./dgrid-shim.ts\";\nimport { DBStore } from \"./DBStore.ts\";\n\nimport \"../src/Common.css\";\n\nexport class Common extends HTMLWidget {\n protected _columns = [];\n protected _store = new DBStore(this._db);\n protected _dgridDiv;\n protected _dgrid;\n protected _prevPaging;\n private _prevSortBy: string;\n private _prevSortByDescending: boolean;\n private _prevMultiSelect: boolean;\n\n constructor() {\n super();\n this._tag = \"div\";\n }\n\n protected formatSortBy(): [{ property: string, descending: boolean }] | undefined {\n const idx = this.columns().indexOf(this.sortBy());\n return idx >= 0 ? [{ property: idx.toString(), descending: this.sortByDescending() }] : undefined;\n }\n\n protected _supressEvents;\n selection(): any[];\n selection(_: any[]): this;\n selection(_?: any[]): any[] | this {\n if (!arguments.length) {\n const retVal = [];\n for (const id in this._dgrid.selection) {\n if (this._dgrid.selection[id]) {\n const storeItem = this._store.get(+id);\n retVal.push(this.rowToObj(storeItem));\n }\n }\n return retVal;\n }\n this._supressEvents = true;\n this._dgrid?.clearSelection();\n let first = true;\n this.data().forEach((row, idx) => {\n if (_.indexOf(row) >= 0) {\n const row = this._dgrid?.row(idx);\n if (row.element && first) {\n first = false;\n row.element.scrollIntoView();\n }\n this._dgrid?.select(idx);\n }\n });\n this._supressEvents = false;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._dgridDiv = element.append(\"div\")\n .attr(\"class\", \"flat\")\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._store.renderHtml(this.renderHtml());\n\n if (!this._dgrid || this._prevPaging !== this.pagination() ||\n this._prevSortBy !== this.sortBy() ||\n this._prevSortByDescending !== this.sortByDescending() ||\n this._prevMultiSelect !== this.multiSelect()) {\n\n this._prevPaging = this.pagination();\n this._prevSortBy = this.sortBy();\n this._prevSortByDescending = this.sortByDescending();\n this._prevMultiSelect = this.multiSelect();\n if (this._dgrid) {\n this._dgrid.destroy();\n this._dgridDiv = element.append(\"div\")\n .attr(\"class\", \"flat\")\n ;\n }\n this._dgrid = new (this._prevPaging ? PagingGrid : Grid)({\n columns: this._columns,\n collection: this._store,\n sort: this.formatSortBy(),\n selectionMode: this.multiSelect() ? \"extended\" : \"single\",\n deselectOnRefresh: true,\n cellNavigation: false,\n pagingLinks: 1,\n pagingTextBox: true,\n previousNextArrows: true,\n firstLastArrows: true,\n rowsPerPage: this.pageSize(),\n pageSizeOptions: [1, 10, 25, 50, 100, 1000]\n }, this._dgridDiv.node());\n this._dgrid.on(\"dgrid-select\", (evt) => {\n if (this._supressEvents) return;\n if (evt.rows && evt.rows.length && evt.rows[0].data) {\n this.click(this.rowToObj(evt.rows[0].data.__origRow), \"\", true, { selection: this.selection() });\n }\n });\n this._dgrid.on(\"dgrid-deselect\", (evt) => {\n if (this._supressEvents) return;\n if (evt.rows && evt.rows.length && evt.rows[0].data) {\n this.click(this.rowToObj(evt.rows[0].data.__origRow), \"\", false, { selection: this.selection() });\n }\n });\n this._dgrid.refresh({});\n }\n this._dgrid.noDataMessage = `<span class='dojoxGridNoData'>${this.noDataMessage()}</span>`;\n this._dgrid.loadingMessage = `<span class='dojoxGridNoData'>${this.loadingMessage()}</span>`;\n\n this._dgridDiv\n .style(\"width\", this.width() + \"px\")\n .style(\"height\", this.height() - 2 + \"px\")\n ;\n this._dgrid.resize();\n }\n\n exit(domNode, element) {\n delete this._prevPaging;\n if (this._dgrid) {\n this._dgrid.destroy();\n delete this._dgrid;\n }\n super.exit(domNode, element);\n }\n\n click(row, col, sel, more) {\n }\n}\nCommon.prototype._class += \" dgrid_Common\";\n\nexport interface Common {\n noDataMessage(): string;\n noDataMessage(_: string): this;\n loadingMessage(): string;\n loadingMessage(_: string): this;\n pagination(): boolean;\n pagination(_: boolean): this;\n pageSize(): number;\n pageSize(_: number): this;\n sortable(): boolean;\n sortable(_: boolean): this;\n sortBy(): string;\n sortBy(_: string): this;\n sortByDescending(): boolean;\n sortByDescending(_: boolean): this;\n multiSelect(): boolean;\n multiSelect(_: boolean): this;\n renderHtml(): boolean;\n renderHtml(_: boolean): this;\n}\n\nCommon.prototype.publish(\"noDataMessage\", \"...empty...\", \"string\", \"No Data Message\");\nCommon.prototype.publish(\"loadingMessage\", \"loading...\", \"string\", \"Loading Message\");\nCommon.prototype.publish(\"pagination\", false, \"boolean\", \"Enable paging\");\nCommon.prototype.publish(\"pageSize\", 25, \"number\", \"Page size\");\nCommon.prototype.publish(\"sortable\", false, \"boolean\", \"Enable sorting by column\");\nCommon.prototype.publish(\"sortBy\", null, \"set\", \"Default 'sort by' Column ID\", function (this: Common) { return this.columns(); }, { optional: true });\nCommon.prototype.publish(\"sortByDescending\", false, \"boolean\", \"Default 'sort by' descending\", undefined, { disable: self => !self.sortBy() });\nCommon.prototype.publish(\"multiSelect\", false, \"boolean\", \"Multiple Selection\");\nCommon.prototype.publish(\"renderHtml\", true, \"boolean\", \"Render HTML\");\n\n","import type { DDL2 } from \"@hpcc-js/ddl-shim\";\nimport { Deferred, QueryResults } from \"./dgrid-shim.ts\";\nimport { ColumnType, RowFormatter } from \"./RowFormatter.ts\";\n\nexport interface IDatasource {\n id: () => string;\n hash: () => string;\n label: () => string;\n\n outFields: () => DDL2.IField[];\n total: () => number;\n fetch: (from: number, count: number) => Promise<ReadonlyArray<object>>;\n}\n\nexport class DatasourceCache implements IDatasource {\n protected _datasource: IDatasource;\n _prevHash: string;\n _fetchCache: { [key: string]: Promise<ReadonlyArray<object>> } = {};\n\n constructor(datasource: IDatasource) {\n this._datasource = datasource;\n }\n\n validateCache() {\n const hash = this.hash();\n if (this._prevHash !== hash) {\n this._prevHash = hash;\n this._fetchCache = {};\n }\n }\n\n id() { return this._datasource.id(); }\n hash() { return this._datasource.hash(); }\n label() { return this._datasource.label(); }\n\n outFields() { return this._datasource.outFields(); }\n total() { return this._datasource.total(); }\n fetch(from: number, count: number): Promise<ReadonlyArray<object>> {\n this.validateCache();\n const cacheID = `${from}->${count}`;\n let retVal = this._fetchCache[cacheID];\n if (!retVal) {\n retVal = this._datasource.fetch(from, count);\n this._fetchCache[cacheID] = retVal;\n }\n return retVal;\n }\n}\n\nexport class DatasourceStore {\n _datasource: DatasourceCache;\n _columnsIdx: { [key: string]: number } = {};\n _columns;\n\n private rowFormatter: RowFormatter;\n\n constructor(datasource: IDatasource, renderHtml: boolean) {\n this._datasource = new DatasourceCache(datasource);\n\n this._columnsIdx = {};\n this._columns = this.db2Columns(this._datasource.outFields()).map((column, idx) => {\n this._columnsIdx[column.field] = idx;\n return column;\n });\n this.rowFormatter = new RowFormatter(this._columns, renderHtml);\n }\n\n columns() {\n return this._columns;\n }\n\n db2Columns(fields: DDL2.IField[], prefix = \"\"): ColumnType[] {\n if (!fields) return [];\n return fields.map((field, idx) => {\n const column: ColumnType = {\n field: prefix + field.id,\n leafID: field.id,\n label: field.id,\n idx,\n className: \"resultGridCell\",\n sortable: true,\n isSet: false\n };\n if (field.type === \"dataset\") {\n column.children = this.db2Columns(field.children, prefix + field.id + \"_\");\n } else {\n column.formatter = (cell, row) => {\n switch (typeof cell) {\n case \"string\":\n return cell.replace(/\\t/g, \"&nbsp;&nbsp;&nbsp;&nbsp;\");\n }\n return cell;\n };\n }\n return column;\n });\n }\n\n getIdentity(row) {\n return row.__hpcc_id;\n }\n\n _request(start, end): Promise<{ totalLength: number, data: any[] }> {\n if (!this._datasource) return Promise.resolve({ totalLength: 0, data: [] });\n const retVal = this._datasource.fetch(start, end - start).then(response => {\n return {\n totalLength: this._datasource.total(),\n data: response.map((row, idx) => {\n const formattedRow: any = this.rowFormatter.format(row);\n formattedRow.__hpcc_id = start + idx;\n formattedRow.__origRow = row;\n return formattedRow;\n })\n };\n });\n return retVal;\n }\n\n fetchRange(options): Promise<any[]> {\n const retVal = new Deferred();\n this._request(options.start, options.end).then(response => retVal.resolve(response));\n return new QueryResults(retVal.then(response => response.data), {\n totalLength: retVal.then(response => response.totalLength)\n });\n }\n}\n","import { Widget } from \"@hpcc-js/common\";\nimport { Memory } from \"./dgrid-shim.ts\";\nimport { Common } from \"./Common.ts\";\nimport { DatasourceStore, IDatasource } from \"./DatasourceStore.ts\";\n\nexport class DatasourceTable extends Common {\n _prevDatasource?: IDatasource;\n\n constructor() {\n super();\n }\n\n invalidate(): this {\n delete this._prevDatasource;\n return this;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n }\n render(callback?: (w: Widget) => void): this {\n return super.render(w => {\n if (this._prevDatasource !== this.datasource()) {\n this._dgrid.set(\"collection\", new Memory());\n this._dgrid.set(\"columns\", []);\n this._prevDatasource = this.datasource();\n if (this._prevDatasource) {\n const store = new DatasourceStore(this._prevDatasource, this.renderHtml());\n this._dgrid.set(\"columns\", store.columns());\n this._dgrid.set(\"collection\", store);\n if (callback) {\n callback(w);\n }\n } else {\n if (callback) {\n callback(w);\n }\n }\n } else {\n if (callback) {\n callback(w);\n }\n }\n });\n }\n\n click(row, col, sel) {\n }\n}\nDatasourceTable.prototype._class += \" dgrid_DatasourceTable\";\n\nexport interface DatasourceTable {\n datasource(): IDatasource;\n datasource(_: IDatasource): this;\n}\n\nDatasourceTable.prototype.publish(\"datasource\", null, \"object\", \"Datasource\");\n\n","import { Palette, PropertyExt, Field } from \"@hpcc-js/common\";\nimport { hashSum } from \"@hpcc-js/util\";\nimport { format as d3Format } from \"d3-format\";\nimport { select as d3Select } from \"d3-selection\";\nimport { Common } from \"./Common.ts\";\nimport { CellFormatter, CellRenderer, ColumnType, RowType } from \"./RowFormatter.ts\";\n\n// ColumnPalette ---\nexport class ColumnFormat extends PropertyExt {\n _owner: Table;\n\n constructor() {\n super();\n }\n\n owner(): Table;\n owner(_: Table): this;\n owner(_?: Table): Table | this {\n if (!arguments.length) return this._owner;\n this._owner = _;\n return this;\n }\n\n valid(): boolean {\n return !!this.column();\n }\n\n formatterFunc(): CellFormatter | undefined {\n const defaultFormatter = this._owner.formatterFunc();\n if (this.valid() && this.format()) {\n const numberFormatter = d3Format(this.format());\n\n return function (this: ColumnType, cell: any, row: RowType): string {\n if (typeof cell === \"number\")\n return numberFormatter(cell);\n return defaultFormatter.call(this, cell, row);\n };\n }\n return defaultFormatter;\n }\n\n renderCellFunc(): CellRenderer | undefined {\n const defaultRenderCell = this._owner.renderCellFunc();\n const defaultFormatter = this.formatterFunc();\n if (this.valid() && this.paletteID()) {\n const columns = this._owner.columns();\n const palette = Palette.rainbow(this.paletteID());\n const min = this.min();\n const max = this.max();\n const valueColIdx = this.valueColumn() ? columns.indexOf(this.valueColumn()) : undefined;\n return function (this: ColumnType, row: RowType, cell: any, cellElement: HTMLElement): HTMLElement | void {\n if (defaultRenderCell) {\n defaultRenderCell.call(this, row, cell, cellElement);\n }\n const value = valueColIdx ? row.__origRow[valueColIdx] : cell;\n const background = palette(value, min, max);\n const cellText: any = defaultFormatter.call(this, cell, row);\n d3Select(cellElement)\n .style(\"background\", background)\n .style(\"color\", background && Palette.textColor(background))\n .text(cellText?.html ?? cellText ?? cell)\n ;\n };\n }\n return defaultRenderCell;\n }\n}\nColumnFormat.prototype._class += \" dgrid_Table.ColumnFormat\";\n\nexport interface ColumnFormat {\n column(): string;\n column(_: string): this;\n width(): number;\n width(_: number): this;\n format(): string;\n format(_: string): this;\n paletteID(): string;\n paletteID(_: string): this;\n min(): number;\n min(_: number): this;\n max(): number;\n max(_: number): this;\n valueColumn(): string;\n valueColumn(_: string): this;\n}\nColumnFormat.prototype.publish(\"column\", null, \"set\", \"Column\", function (this: ColumnFormat) { return this._owner.columns(); }, { optional: true });\nColumnFormat.prototype.publish(\"width\", null, \"number\", \"Width\", null, { optional: true });\nColumnFormat.prototype.publish(\"format\", null, \"string\", \"Format (d3-format)\", null, { optional: true });\nColumnFormat.prototype.publish(\"paletteID\", null, \"set\", \"Color palette for this widget\", [\"\", ...Palette.rainbow(\"default\").switch()], { optional: true });\nColumnFormat.prototype.publish(\"min\", 0, \"number\", \"Min Value\", null, { disable: (cf: ColumnFormat) => !cf.paletteID() });\nColumnFormat.prototype.publish(\"max\", 100, \"number\", \"Max Value\", null, { disable: (cf: ColumnFormat) => !cf.paletteID() });\nColumnFormat.prototype.publish(\"valueColumn\", null, \"set\", \"Column\", function (this: ColumnFormat) { return this._owner.columns(); }, { optional: true, disable: (cf: ColumnFormat) => !cf.paletteID() });\n\n// Table ---\nexport class Table extends Common {\n private _prevColsHash;\n private _prevFieldsHash;\n _colsRefresh = false;\n _dataRefresh = false;\n\n constructor() {\n super();\n }\n\n fields(): Field[];\n fields(_: Field[]): this;\n fields(_?: Field[]): Field[] | this {\n const retVal = super.fields.apply(this, arguments as any);\n if (arguments.length) {\n const hash = hashSum({ _ });\n if (this._prevFieldsHash !== hash) {\n this._prevFieldsHash = hash;\n this._colsRefresh = true;\n }\n }\n return retVal;\n }\n\n columns(): string[];\n columns(_: string[], asDefault?: boolean): this;\n columns(_?: string[], asDefault?: boolean): string[] | this {\n const retVal = super.columns.apply(this, arguments as any);\n if (arguments.length) {\n const hash = hashSum({ _ });\n if (this._prevColsHash !== hash) {\n this._prevColsHash = hash;\n this._colsRefresh = true;\n }\n }\n return retVal;\n }\n\n data(): any;\n data(_: any): this;\n data(_?: any): any | this {\n const retVal = super.data.apply(this, arguments as any);\n if (arguments.length) {\n this._dataRefresh = true;\n }\n return retVal;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n }\n\n guessWidth(columns, data) {\n const sortablePadding = this.sortable() ? 12 : 0;\n for (const column of columns) {\n if (column.children) {\n let sampleData = [];\n for (let i = 0; i < Math.min(3, data.length); ++i) {\n sampleData = sampleData.concat(data[i][column.idx]);\n }\n this.guessWidth(column.children, sampleData);\n } else {\n column.width = data.reduce((prevVal: number, row) => {\n const cell = (\"\" + row[column.idx]).trim();\n return Math.max(prevVal, this.textSize(cell).width);\n }, this.textSize(\"\" + column.label, undefined, undefined, true).width + sortablePadding) + 8; // +12 for the sort icon, +8 for the cell padding.\n }\n }\n }\n\n _prevHash;\n update(domNode, element) {\n super.update(domNode, element);\n const hash = this.hashSum();\n if (this._prevHash !== hash) {\n this._prevHash = hash;\n this._colsRefresh = true;\n }\n if (this._colsRefresh) {\n this._columns = this._store.columns(this.sortable(), this.formatterFunc(), this.renderCellFunc());\n switch (this.columnWidth()) {\n case \"auto\":\n const tenRows = this.data().filter((row, idx) => idx < 10);\n this.guessWidth(this._columns, tenRows);\n break;\n }\n const columns = this.columns();\n for (const columnFormat of this.columnFormats()) {\n if (columnFormat.valid()) {\n const colIdx = columns.indexOf(columnFormat.column());\n if (this._columns[colIdx]) {\n this._columns[colIdx].hidden = columnFormat.width() === 0;\n this._columns[colIdx].width = columnFormat.width() || this._columns[colIdx].width;\n this._columns[colIdx].formatter = columnFormat.formatterFunc();\n this._columns[colIdx].renderCell = columnFormat.renderCellFunc();\n }\n }\n }\n this._dgrid.set(\"columns\", this._columns.filter(col => !col.hidden));\n this._colsRefresh = false;\n }\n if (this._colsRefresh || this._dataRefresh) {\n if (this._colsRefresh) {\n this._dgrid.refresh({});\n } else {\n this._dgrid.refresh();\n }\n this._colsRefresh = false;\n this._dataRefresh = false;\n }\n }\n\n exit(domNode, element) {\n delete this._prevColsHash;\n delete this._prevFieldsHash;\n super.exit(domNode, element);\n }\n\n // Cell ---\n formatterFunc(): CellFormatter | undefined {\n return function (this: ColumnType, cell: any, row: RowType): string | any {\n switch (typeof cell) {\n case \"string\":\n return {\n html: cell.replace(/\\t/g, \"&nbsp;&nbsp;&nbsp;&nbsp;\").trim()\n };\n case \"undefined\":\n return \"\";\n }\n return cell;\n };\n }\n\n renderCellFunc(): CellRenderer | undefined {\n return undefined; // Undefined will defualt to formatter ---\n }\n\n // Events ---\n click(row, col, sel) {\n }\n}\nTable.prototype._class += \" dgrid_Table\";\n\nexport interface Table {\n columnWidth(): \"auto\" | \"none\";\n columnWidth(_: \"auto\" | \"none\"): this;\n columnFormats(): ColumnFormat[];\n columnFormats(_: ColumnFormat[]): this;\n}\n\nTable.prototype.publish(\"columnWidth\", \"auto\", \"set\", \"Default column width\", [\"auto\", \"none\"]);\nTable.prototype.publish(\"columnFormats\", [], \"propertyArray\", \"Source Columns\", null, { autoExpand: ColumnFormat });\n"],"names":["row","d3Format","d3Select"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/__package__.ts","../src/dgrid-shim.ts","../src/RowFormatter.ts","../src/DBStore.ts","../src/Common.ts","../src/DatasourceStore.ts","../src/DatasourceTable.ts","../src/Table.ts"],"sourcesContent":["export const PKG_NAME = \"__PACKAGE_NAME__\";\nexport const PKG_VERSION = \"__PACKAGE_VERSION__\";\nexport const BUILD_VERSION = \"__BUILD_VERSION__\";\n","import * as dgrid_shim from \"@hpcc-js/dgrid-shim\";\n\nif (!globalThis[\"@hpcc-js/dgrid-shim\"]) {\n console.error(\"dgrid-shim not loaded, please add `<script src=\\\"https://cdn.jsdelivr.net/npm/@hpcc-js/dgrid-shim/dist/index.min.js\\\"></script>` or similar to your HTML file\");\n}\n\nexport const Deferred = globalThis[\"@hpcc-js/dgrid-shim\"].Deferred as typeof dgrid_shim.Deferred;\nexport const Memory = globalThis[\"@hpcc-js/dgrid-shim\"].Memory as typeof dgrid_shim.Memory;\nexport const QueryResults = globalThis[\"@hpcc-js/dgrid-shim\"].QueryResults as typeof dgrid_shim.QueryResults;\nexport const Grid = globalThis[\"@hpcc-js/dgrid-shim\"].Grid as typeof dgrid_shim.Grid;\nexport const PagingGrid = globalThis[\"@hpcc-js/dgrid-shim\"].PagingGrid as typeof dgrid_shim.PagingGrid;\nexport const domConstruct = globalThis[\"@hpcc-js/dgrid-shim\"].domConstruct as typeof dgrid_shim.domConstruct;\n","function entitiesEncode(str) {\n return String(str).replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\").replace(/\"/g, \"&quot;\");\n}\n\nfunction safeEncode(item) {\n switch (Object.prototype.toString.call(item)) {\n case \"[object Undefined]\":\n case \"[object Boolean]\":\n case \"[object Number]\":\n return item;\n case \"[object String]\":\n return entitiesEncode(item);\n default:\n console.warn(\"Unknown cell type: \" + Object.prototype.toString.call(item));\n }\n return item;\n}\n\nfunction isArray(obj: any): obj is any[] {\n return obj instanceof Array;\n}\n\nconst LINE_SPLITTER = \"<br><hr class='dgrid-fakeline'>\";\nconst LINE_SPLITTER2 = \"<br><hr class='dgrid-fakeline' style='visibility: hidden'>\";\n\nexport interface ColumnType {\n field: string;\n leafID: string;\n label: string;\n idx: number;\n className: string;\n sortable: boolean;\n isSet: boolean;\n width?: number;\n formatter?: CellFormatter;\n renderCell?: CellRenderer;\n children?: ColumnType[];\n}\nexport interface RowType {\n __hpcc_id: number;\n __origRow: any[];\n [colIdx: number]: any;\n}\nexport type CellFormatter = (this: ColumnType, cell: any, row: RowType) => string;\nexport type CellRenderer = (this: ColumnType, row: RowType, cell: any, cellElement: HTMLElement) => HTMLElement | void;\n\nexport class RowFormatter {\n private _columns: ColumnType[];\n private _flattenedColumns = [];\n private _columnIdx = {};\n private _formattedRow = {};\n\n constructor(columns: ColumnType[], protected _renderHtml) {\n this._columns = columns;\n this.flattenColumns(columns);\n }\n\n flattenColumns(columns: ColumnType[]) {\n for (const column of columns) {\n this.flattenColumn(column);\n }\n }\n\n flattenColumn(column: ColumnType) {\n if (column.children) {\n for (const childColumn of column.children) this.flattenColumn(childColumn);\n } else {\n this._columnIdx[column.field] = this._flattenedColumns.length;\n this._flattenedColumns.push(column.field);\n }\n }\n\n format(row) {\n this._formattedRow = {};\n this.formatRow(this._columns, row);\n return this.row();\n }\n\n calcDepth(columns: ColumnType[], row) {\n let maxChildDepth = 1;\n for (const column of columns) {\n if (column.children && row[column.leafID]) {\n let childDepth = 0;\n let childRows = [];\n if (isArray(row[column.leafID])) {\n childRows = row[column.leafID];\n } else if (isArray(row[column.leafID].Row)) {\n childRows = row[column.leafID].Row;\n }\n for (const childRow of childRows) {\n childDepth += this.calcDepth(column.children, childRow);\n }\n maxChildDepth = Math.max(maxChildDepth, childDepth);\n }\n }\n return maxChildDepth;\n }\n\n formatCell(column: ColumnType, cell, maxChildDepth) {\n if (column.children) {\n let childDepth = 0;\n if (!isArray(cell)) {\n if (isArray(cell.Row)) {\n cell = cell.Row;\n } else {\n cell = [cell];\n }\n }\n for (const row of cell) {\n childDepth = Math.max(childDepth, this.formatRow(column.children, row));\n }\n } else {\n if (column.isSet) {\n cell = JSON.stringify(cell.Item);\n }\n if (this._formattedRow[column.field] === undefined) {\n this._formattedRow[column.field] = \"\" + (cell === undefined ? \"\" : (this._renderHtml ? cell : safeEncode(cell)));\n } else {\n this._formattedRow[column.field] += LINE_SPLITTER;\n this._formattedRow[column.field] += \"\" + (cell === undefined ? \"\" : (this._renderHtml ? cell : safeEncode(cell)));\n }\n if (maxChildDepth > 1) {\n const paddingArr = [];\n paddingArr.length = maxChildDepth;\n const padding = paddingArr.join(LINE_SPLITTER2);\n this._formattedRow[column.field] += padding;\n }\n }\n }\n\n formatRow(columns: ColumnType[], row: { [key: string]: any } = [], rowIdx: number = 0) {\n const maxChildDepth = this.calcDepth(columns, row);\n for (const column of columns) {\n this.formatCell(column, row[column.leafID], maxChildDepth);\n }\n return maxChildDepth;\n }\n\n row() {\n const retVal = {};\n for (const column of this._flattenedColumns) {\n retVal[column] = this._formattedRow[column];\n }\n return retVal;\n }\n}\n","import { Database } from \"@hpcc-js/common\";\nimport { Deferred } from \"./dgrid-shim.ts\";\nimport { CellFormatter, CellRenderer, ColumnType, RowFormatter } from \"./RowFormatter.ts\";\n\nexport class DBStore {\n private _db: Database.Grid;\n\n Model: null;\n idProperty: \"__hpcc_id\";\n\n constructor(db: Database.Grid) {\n this._db = db;\n }\n\n protected _renderHtml = true;\n renderHtml(_: boolean) {\n this._renderHtml = _;\n }\n\n db2Columns(sortable: boolean, fields: Database.Field[], prefix = \"\", formatter?: CellFormatter, renderCell?: CellRenderer): ColumnType[] {\n if (!fields) return [];\n return fields.map((field, idx) => {\n const label = field.label();\n const column: ColumnType = {\n label,\n leafID: \"\" + idx,\n field: prefix + idx,\n idx,\n className: \"resultGridCell\",\n sortable,\n isSet: false\n };\n switch (field.type()) {\n case \"nested\":\n column.children = this.db2Columns(false, field.children(), prefix + idx + \"_\", formatter);\n column.sortable = false;\n break;\n default:\n column.formatter = formatter;\n column.renderCell = renderCell;\n }\n return column;\n });\n }\n\n columns(sortable: boolean, formatter?: CellFormatter, renderCell?: CellRenderer) {\n return this.db2Columns(sortable, this._db.fields(), \"\", formatter, renderCell);\n }\n\n getIdentity(object) {\n return object.__hpcc_id;\n }\n\n get(row: number) {\n return this._db.row(row + 1);\n }\n\n _fetchRange(opts: { start: number, end: number }): object[] {\n const rowFormatter = new RowFormatter(this.columns(false), this._renderHtml);\n return this._db.data().slice(opts.start, opts.end).map((row, idx) => {\n const formattedRow: any = rowFormatter.format(row);\n return {\n ...formattedRow,\n __hpcc_id: opts.start + idx,\n __origRow: row\n };\n });\n }\n\n fetchRange(opts: { start: number, end: number }): Promise<object[]> {\n const data = this._fetchRange(opts);\n const retVal: any = new Deferred();\n retVal.totalLength = new Deferred();\n retVal.resolve(data);\n retVal.totalLength.resolve(this._db.length() - 1);\n return retVal;\n }\n\n sort(opts) {\n this._db.data().sort((l, r) => {\n for (const item of opts) {\n const idx = item.property;\n if ((l[idx] === undefined && r[idx] !== undefined) || l[idx] < r[idx]) return item.descending ? 1 : -1;\n if ((l[idx] !== undefined && r[idx] === undefined) || l[idx] > r[idx]) return item.descending ? -1 : 1;\n }\n return 0;\n });\n return this;\n }\n}\n","import { HTMLWidget } from \"@hpcc-js/common\";\nimport { Grid, PagingGrid } from \"./dgrid-shim.ts\";\nimport { DBStore } from \"./DBStore.ts\";\n\nimport \"../src/Common.css\";\n\nexport class Common extends HTMLWidget {\n protected _columns = [];\n protected _store = new DBStore(this._db);\n protected _dgridDiv;\n protected _dgrid;\n protected _prevPaging;\n private _prevSortBy: string;\n private _prevSortByDescending: boolean;\n private _prevMultiSelect: boolean;\n\n constructor() {\n super();\n this._tag = \"div\";\n }\n\n protected formatSortBy(): [{ property: string, descending: boolean }] | undefined {\n const idx = this.columns().indexOf(this.sortBy());\n return idx >= 0 ? [{ property: idx.toString(), descending: this.sortByDescending() }] : undefined;\n }\n\n protected _supressEvents;\n selection(): any[];\n selection(_: any[]): this;\n selection(_?: any[]): any[] | this {\n if (!arguments.length) {\n const retVal = [];\n for (const id in this._dgrid.selection) {\n if (this._dgrid.selection[id]) {\n const storeItem = this._store.get(+id);\n retVal.push(this.rowToObj(storeItem));\n }\n }\n return retVal;\n }\n this._supressEvents = true;\n this._dgrid?.clearSelection();\n let first = true;\n this.data().forEach((row, idx) => {\n if (_.indexOf(row) >= 0) {\n const row = this._dgrid?.row(idx);\n if (row.element && first) {\n first = false;\n row.element.scrollIntoView();\n }\n this._dgrid?.select(idx);\n }\n });\n this._supressEvents = false;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._dgridDiv = element.append(\"div\")\n .attr(\"class\", \"flat\")\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._store.renderHtml(this.renderHtml());\n\n if (!this._dgrid || this._prevPaging !== this.pagination() ||\n this._prevSortBy !== this.sortBy() ||\n this._prevSortByDescending !== this.sortByDescending() ||\n this._prevMultiSelect !== this.multiSelect()) {\n\n this._prevPaging = this.pagination();\n this._prevSortBy = this.sortBy();\n this._prevSortByDescending = this.sortByDescending();\n this._prevMultiSelect = this.multiSelect();\n if (this._dgrid) {\n this._dgrid.destroy();\n this._dgridDiv = element.append(\"div\")\n .attr(\"class\", \"flat\")\n ;\n }\n this._dgrid = new (this._prevPaging ? PagingGrid : Grid)({\n columns: this._columns,\n collection: this._store,\n sort: this.formatSortBy(),\n selectionMode: this.multiSelect() ? \"extended\" : \"single\",\n deselectOnRefresh: true,\n cellNavigation: false,\n pagingLinks: 1,\n pagingTextBox: true,\n previousNextArrows: true,\n firstLastArrows: true,\n rowsPerPage: this.pageSize(),\n pageSizeOptions: [1, 10, 25, 50, 100, 1000]\n }, this._dgridDiv.node());\n this._dgrid.on(\"dgrid-select\", (evt) => {\n if (this._supressEvents) return;\n if (evt.rows && evt.rows.length && evt.rows[0].data) {\n this.click(this.rowToObj(evt.rows[0].data.__origRow), \"\", true, { selection: this.selection() });\n }\n });\n this._dgrid.on(\"dgrid-deselect\", (evt) => {\n if (this._supressEvents) return;\n if (evt.rows && evt.rows.length && evt.rows[0].data) {\n this.click(this.rowToObj(evt.rows[0].data.__origRow), \"\", false, { selection: this.selection() });\n }\n });\n this._dgrid.refresh({});\n }\n this._dgrid.noDataMessage = `<span class='dojoxGridNoData'>${this.noDataMessage()}</span>`;\n this._dgrid.loadingMessage = `<span class='dojoxGridNoData'>${this.loadingMessage()}</span>`;\n\n this._dgridDiv\n .style(\"width\", this.width() + \"px\")\n .style(\"height\", this.height() - 2 + \"px\")\n ;\n this._dgrid.resize();\n }\n\n exit(domNode, element) {\n delete this._prevPaging;\n if (this._dgrid) {\n this._dgrid.destroy();\n delete this._dgrid;\n }\n super.exit(domNode, element);\n }\n\n click(row, col, sel, more) {\n }\n}\nCommon.prototype._class += \" dgrid_Common\";\n\nexport interface Common {\n noDataMessage(): string;\n noDataMessage(_: string): this;\n loadingMessage(): string;\n loadingMessage(_: string): this;\n pagination(): boolean;\n pagination(_: boolean): this;\n pageSize(): number;\n pageSize(_: number): this;\n sortable(): boolean;\n sortable(_: boolean): this;\n sortBy(): string;\n sortBy(_: string): this;\n sortByDescending(): boolean;\n sortByDescending(_: boolean): this;\n multiSelect(): boolean;\n multiSelect(_: boolean): this;\n renderHtml(): boolean;\n renderHtml(_: boolean): this;\n}\n\nCommon.prototype.publish(\"noDataMessage\", \"...empty...\", \"string\", \"No Data Message\");\nCommon.prototype.publish(\"loadingMessage\", \"loading...\", \"string\", \"Loading Message\");\nCommon.prototype.publish(\"pagination\", false, \"boolean\", \"Enable paging\");\nCommon.prototype.publish(\"pageSize\", 25, \"number\", \"Page size\");\nCommon.prototype.publish(\"sortable\", false, \"boolean\", \"Enable sorting by column\");\nCommon.prototype.publish(\"sortBy\", null, \"set\", \"Default 'sort by' Column ID\", function (this: Common) { return this.columns(); }, { optional: true });\nCommon.prototype.publish(\"sortByDescending\", false, \"boolean\", \"Default 'sort by' descending\", undefined, { disable: self => !self.sortBy() });\nCommon.prototype.publish(\"multiSelect\", false, \"boolean\", \"Multiple Selection\");\nCommon.prototype.publish(\"renderHtml\", true, \"boolean\", \"Render HTML\");\n\n","import type { DDL2 } from \"@hpcc-js/ddl-shim\";\nimport { Deferred, QueryResults } from \"./dgrid-shim.ts\";\nimport { ColumnType, RowFormatter } from \"./RowFormatter.ts\";\n\nexport interface IDatasource {\n id: () => string;\n hash: () => string;\n label: () => string;\n\n outFields: () => DDL2.IField[];\n total: () => number;\n fetch: (from: number, count: number) => Promise<ReadonlyArray<object>>;\n}\n\nexport class DatasourceCache implements IDatasource {\n protected _datasource: IDatasource;\n _prevHash: string;\n _fetchCache: { [key: string]: Promise<ReadonlyArray<object>> } = {};\n\n constructor(datasource: IDatasource) {\n this._datasource = datasource;\n }\n\n validateCache() {\n const hash = this.hash();\n if (this._prevHash !== hash) {\n this._prevHash = hash;\n this._fetchCache = {};\n }\n }\n\n id() { return this._datasource.id(); }\n hash() { return this._datasource.hash(); }\n label() { return this._datasource.label(); }\n\n outFields() { return this._datasource.outFields(); }\n total() { return this._datasource.total(); }\n fetch(from: number, count: number): Promise<ReadonlyArray<object>> {\n this.validateCache();\n const cacheID = `${from}->${count}`;\n let retVal = this._fetchCache[cacheID];\n if (!retVal) {\n retVal = this._datasource.fetch(from, count);\n this._fetchCache[cacheID] = retVal;\n }\n return retVal;\n }\n}\n\nexport class DatasourceStore {\n _datasource: DatasourceCache;\n _columnsIdx: { [key: string]: number } = {};\n _columns;\n\n private rowFormatter: RowFormatter;\n\n constructor(datasource: IDatasource, renderHtml: boolean) {\n this._datasource = new DatasourceCache(datasource);\n\n this._columnsIdx = {};\n this._columns = this.db2Columns(this._datasource.outFields()).map((column, idx) => {\n this._columnsIdx[column.field] = idx;\n return column;\n });\n this.rowFormatter = new RowFormatter(this._columns, renderHtml);\n }\n\n columns() {\n return this._columns;\n }\n\n db2Columns(fields: DDL2.IField[], prefix = \"\"): ColumnType[] {\n if (!fields) return [];\n return fields.map((field, idx) => {\n const column: ColumnType = {\n field: prefix + field.id,\n leafID: field.id,\n label: field.id,\n idx,\n className: \"resultGridCell\",\n sortable: true,\n isSet: false\n };\n if (field.type === \"dataset\") {\n column.children = this.db2Columns(field.children, prefix + field.id + \"_\");\n } else {\n column.formatter = (cell, row) => {\n switch (typeof cell) {\n case \"string\":\n return cell.replace(/\\t/g, \"&nbsp;&nbsp;&nbsp;&nbsp;\");\n }\n return cell;\n };\n }\n return column;\n });\n }\n\n getIdentity(row) {\n return row.__hpcc_id;\n }\n\n _request(start, end): Promise<{ totalLength: number, data: any[] }> {\n if (!this._datasource) return Promise.resolve({ totalLength: 0, data: [] });\n const retVal = this._datasource.fetch(start, end - start).then(response => {\n return {\n totalLength: this._datasource.total(),\n data: response.map((row, idx) => {\n const formattedRow: any = this.rowFormatter.format(row);\n formattedRow.__hpcc_id = start + idx;\n formattedRow.__origRow = row;\n return formattedRow;\n })\n };\n });\n return retVal;\n }\n\n fetchRange(options): Promise<any[]> {\n const retVal = new Deferred();\n this._request(options.start, options.end).then(response => retVal.resolve(response));\n return new QueryResults(retVal.then(response => response.data), {\n totalLength: retVal.then(response => response.totalLength)\n });\n }\n}\n","import { Widget } from \"@hpcc-js/common\";\nimport { Memory } from \"./dgrid-shim.ts\";\nimport { Common } from \"./Common.ts\";\nimport { DatasourceStore, IDatasource } from \"./DatasourceStore.ts\";\n\nexport class DatasourceTable extends Common {\n _prevDatasource?: IDatasource;\n\n constructor() {\n super();\n }\n\n invalidate(): this {\n delete this._prevDatasource;\n return this;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n }\n render(callback?: (w: Widget) => void): this {\n return super.render(w => {\n if (this._prevDatasource !== this.datasource()) {\n this._dgrid.set(\"collection\", new Memory());\n this._dgrid.set(\"columns\", []);\n this._prevDatasource = this.datasource();\n if (this._prevDatasource) {\n const store = new DatasourceStore(this._prevDatasource, this.renderHtml());\n this._dgrid.set(\"columns\", store.columns());\n this._dgrid.set(\"collection\", store);\n if (callback) {\n callback(w);\n }\n } else {\n if (callback) {\n callback(w);\n }\n }\n } else {\n if (callback) {\n callback(w);\n }\n }\n });\n }\n\n click(row, col, sel) {\n }\n}\nDatasourceTable.prototype._class += \" dgrid_DatasourceTable\";\n\nexport interface DatasourceTable {\n datasource(): IDatasource;\n datasource(_: IDatasource): this;\n}\n\nDatasourceTable.prototype.publish(\"datasource\", null, \"object\", \"Datasource\");\n\n","import { Palette, PropertyExt, Field } from \"@hpcc-js/common\";\nimport { hashSum } from \"@hpcc-js/util\";\nimport { format as d3Format } from \"d3-format\";\nimport { select as d3Select } from \"d3-selection\";\nimport { Common } from \"./Common.ts\";\nimport { CellFormatter, CellRenderer, ColumnType, RowType } from \"./RowFormatter.ts\";\n\n// ColumnPalette ---\nexport class ColumnFormat extends PropertyExt {\n _owner: Table;\n\n constructor() {\n super();\n }\n\n owner(): Table;\n owner(_: Table): this;\n owner(_?: Table): Table | this {\n if (!arguments.length) return this._owner;\n this._owner = _;\n return this;\n }\n\n valid(): boolean {\n return !!this.column();\n }\n\n formatterFunc(): CellFormatter | undefined {\n const defaultFormatter = this._owner.formatterFunc();\n if (this.valid() && this.format()) {\n const numberFormatter = d3Format(this.format());\n\n return function (this: ColumnType, cell: any, row: RowType): string {\n if (typeof cell === \"number\")\n return numberFormatter(cell);\n return defaultFormatter.call(this, cell, row);\n };\n }\n return defaultFormatter;\n }\n\n renderCellFunc(): CellRenderer | undefined {\n const defaultRenderCell = this._owner.renderCellFunc();\n const defaultFormatter = this.formatterFunc();\n if (this.valid() && this.paletteID()) {\n const columns = this._owner.columns();\n const palette = Palette.rainbow(this.paletteID());\n const min = this.min();\n const max = this.max();\n const valueColIdx = this.valueColumn() ? columns.indexOf(this.valueColumn()) : undefined;\n return function (this: ColumnType, row: RowType, cell: any, cellElement: HTMLElement): HTMLElement | void {\n if (defaultRenderCell) {\n defaultRenderCell.call(this, row, cell, cellElement);\n }\n const value = valueColIdx ? row.__origRow[valueColIdx] : cell;\n const background = palette(value, min, max);\n const cellText: any = defaultFormatter.call(this, cell, row);\n d3Select(cellElement)\n .style(\"background\", background)\n .style(\"color\", background && Palette.textColor(background))\n .text(cellText?.html ?? cellText ?? cell)\n ;\n };\n }\n return defaultRenderCell;\n }\n}\nColumnFormat.prototype._class += \" dgrid_Table.ColumnFormat\";\n\nexport interface ColumnFormat {\n column(): string;\n column(_: string): this;\n width(): number;\n width(_: number): this;\n format(): string;\n format(_: string): this;\n paletteID(): string;\n paletteID(_: string): this;\n min(): number;\n min(_: number): this;\n max(): number;\n max(_: number): this;\n valueColumn(): string;\n valueColumn(_: string): this;\n}\nColumnFormat.prototype.publish(\"column\", null, \"set\", \"Column\", function (this: ColumnFormat) { return this._owner.columns(); }, { optional: true });\nColumnFormat.prototype.publish(\"width\", null, \"number\", \"Width\", null, { optional: true });\nColumnFormat.prototype.publish(\"format\", null, \"string\", \"Format (d3-format)\", null, { optional: true });\nColumnFormat.prototype.publish(\"paletteID\", null, \"set\", \"Color palette for this widget\", [\"\", ...Palette.rainbow(\"default\").switch()], { optional: true });\nColumnFormat.prototype.publish(\"min\", 0, \"number\", \"Min Value\", null, { disable: (cf: ColumnFormat) => !cf.paletteID() });\nColumnFormat.prototype.publish(\"max\", 100, \"number\", \"Max Value\", null, { disable: (cf: ColumnFormat) => !cf.paletteID() });\nColumnFormat.prototype.publish(\"valueColumn\", null, \"set\", \"Column\", function (this: ColumnFormat) { return this._owner.columns(); }, { optional: true, disable: (cf: ColumnFormat) => !cf.paletteID() });\n\n// Table ---\nexport class Table extends Common {\n private _prevColsHash;\n private _prevFieldsHash;\n _colsRefresh = false;\n _dataRefresh = false;\n\n constructor() {\n super();\n }\n\n fields(): Field[];\n fields(_: Field[]): this;\n fields(_?: Field[]): Field[] | this {\n const retVal = super.fields.apply(this, arguments as any);\n if (arguments.length) {\n const hash = hashSum({ _ });\n if (this._prevFieldsHash !== hash) {\n this._prevFieldsHash = hash;\n this._colsRefresh = true;\n }\n }\n return retVal;\n }\n\n columns(): string[];\n columns(_: string[], asDefault?: boolean): this;\n columns(_?: string[], asDefault?: boolean): string[] | this {\n const retVal = super.columns.apply(this, arguments as any);\n if (arguments.length) {\n const hash = hashSum({ _ });\n if (this._prevColsHash !== hash) {\n this._prevColsHash = hash;\n this._colsRefresh = true;\n }\n }\n return retVal;\n }\n\n data(): any;\n data(_: any): this;\n data(_?: any): any | this {\n const retVal = super.data.apply(this, arguments as any);\n if (arguments.length) {\n this._dataRefresh = true;\n }\n return retVal;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n }\n\n guessWidth(columns, data) {\n const sortablePadding = this.sortable() ? 12 : 0;\n for (const column of columns) {\n if (column.children) {\n let sampleData = [];\n for (let i = 0; i < Math.min(3, data.length); ++i) {\n sampleData = sampleData.concat(data[i][column.idx]);\n }\n this.guessWidth(column.children, sampleData);\n } else {\n column.width = data.reduce((prevVal: number, row) => {\n const cell = (\"\" + row[column.idx]).trim();\n return Math.max(prevVal, this.textSize(cell).width);\n }, this.textSize(\"\" + column.label, undefined, undefined, true).width + sortablePadding) + 8; // +12 for the sort icon, +8 for the cell padding.\n }\n }\n }\n\n _prevHash;\n update(domNode, element) {\n super.update(domNode, element);\n const hash = this.hashSum();\n if (this._prevHash !== hash) {\n this._prevHash = hash;\n this._colsRefresh = true;\n }\n if (this._colsRefresh) {\n this._columns = this._store.columns(this.sortable(), this.formatterFunc(), this.renderCellFunc());\n switch (this.columnWidth()) {\n case \"auto\":\n const tenRows = this.data().filter((row, idx) => idx < 10);\n this.guessWidth(this._columns, tenRows);\n break;\n }\n const columns = this.columns();\n for (const columnFormat of this.columnFormats()) {\n if (columnFormat.valid()) {\n const colIdx = columns.indexOf(columnFormat.column());\n if (this._columns[colIdx]) {\n this._columns[colIdx].hidden = columnFormat.width() === 0;\n this._columns[colIdx].width = columnFormat.width() || this._columns[colIdx].width;\n this._columns[colIdx].formatter = columnFormat.formatterFunc();\n this._columns[colIdx].renderCell = columnFormat.renderCellFunc();\n }\n }\n }\n this._dgrid.set(\"columns\", this._columns.filter(col => !col.hidden));\n this._colsRefresh = false;\n }\n if (this._colsRefresh || this._dataRefresh) {\n if (this._colsRefresh) {\n this._dgrid.refresh({});\n } else {\n this._dgrid.refresh();\n }\n this._colsRefresh = false;\n this._dataRefresh = false;\n }\n }\n\n exit(domNode, element) {\n delete this._prevColsHash;\n delete this._prevFieldsHash;\n super.exit(domNode, element);\n }\n\n // Cell ---\n formatterFunc(): CellFormatter | undefined {\n return function (this: ColumnType, cell: any, row: RowType): string | any {\n switch (typeof cell) {\n case \"string\":\n return {\n html: cell.replace(/\\t/g, \"&nbsp;&nbsp;&nbsp;&nbsp;\").trim()\n };\n case \"undefined\":\n return \"\";\n }\n return cell;\n };\n }\n\n renderCellFunc(): CellRenderer | undefined {\n return undefined; // Undefined will defualt to formatter ---\n }\n\n // Events ---\n click(row, col, sel) {\n }\n}\nTable.prototype._class += \" dgrid_Table\";\n\nexport interface Table {\n columnWidth(): \"auto\" | \"none\";\n columnWidth(_: \"auto\" | \"none\"): this;\n columnFormats(): ColumnFormat[];\n columnFormats(_: ColumnFormat[]): this;\n}\n\nTable.prototype.publish(\"columnWidth\", \"auto\", \"set\", \"Default column width\", [\"auto\", \"none\"]);\nTable.prototype.publish(\"columnFormats\", [], \"propertyArray\", \"Source Columns\", null, { autoExpand: ColumnFormat });\n"],"names":["PKG_NAME","PKG_VERSION","BUILD_VERSION","globalThis","console","error","Deferred","Memory","QueryResults","Grid","PagingGrid","domConstruct","entitiesEncode","str","String","replace","safeEncode","item","Object","prototype","toString","call","warn","isArray","obj","Array","__name","_RowFormatter","constructor","columns","_renderHtml","this","_columns","flattenColumns","_flattenedColumns","_columnIdx","_formattedRow","column","flattenColumn","children","childColumn","field","length","push","format","row","formatRow","calcDepth","maxChildDepth","leafID","childDepth","childRows","Row","childRow","Math","max","formatCell","cell","isSet","JSON","stringify","Item","paddingArr","padding","join","rowIdx","retVal","RowFormatter","_DBStore","_db","Model","idProperty","db","renderHtml","_","db2Columns","sortable","fields","prefix","formatter","renderCell","map","idx","label","className","type","getIdentity","object","__hpcc_id","get","_fetchRange","opts","rowFormatter","data","slice","start","end","__origRow","fetchRange","totalLength","resolve","sort","l","r","property","descending","DBStore","_Common","HTMLWidget","_store","_dgridDiv","_dgrid","_prevPaging","_prevSortBy","_prevSortByDescending","_prevMultiSelect","super","_tag","formatSortBy","indexOf","sortBy","sortByDescending","_supressEvents","selection","arguments","id","storeItem","rowToObj","clearSelection","first","forEach","element","scrollIntoView","select","enter","domNode","append","attr","update","pagination","multiSelect","destroy","collection","selectionMode","deselectOnRefresh","cellNavigation","pagingLinks","pagingTextBox","previousNextArrows","firstLastArrows","rowsPerPage","pageSize","pageSizeOptions","node","on","evt","rows","click","refresh","noDataMessage","loadingMessage","style","width","height","resize","exit","col","sel","more","Common","_class","publish","optional","disable","self","_DatasourceCache","_datasource","_prevHash","_fetchCache","datasource","validateCache","hash","outFields","total","fetch","from","count","cacheID","DatasourceCache","_DatasourceStore","_columnsIdx","_request","Promise","then","response","formattedRow","options","DatasourceStore","_DatasourceTable","_prevDatasource","invalidate","render","callback","w","set","store","DatasourceTable","_ColumnFormat","PropertyExt","_owner","owner","valid","formatterFunc","defaultFormatter","numberFormatter","d3Format","renderCellFunc","defaultRenderCell","paletteID","palette","Palette","rainbow","min","valueColIdx","valueColumn","cellElement","value","background","cellText","d3Select","textColor","text","html","ColumnFormat","switch","cf","_Table","_prevColsHash","_prevFieldsHash","_colsRefresh","_dataRefresh","apply","hashSum","asDefault","guessWidth","sortablePadding","sampleData","i","concat","reduce","prevVal","trim","textSize","columnWidth","tenRows","filter","columnFormat","columnFormats","colIdx","hidden","Table","autoExpand"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@hpcc-js/common"),require("@hpcc-js/util")):"function"==typeof define&&define.amd?define(["exports","@hpcc-js/common","@hpcc-js/util"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self)["@hpcc-js/dgrid"]={},t["@hpcc-js/common"],t["@hpcc-js/util"])}(this,function(t,e,s){"use strict";var r=Object.defineProperty,i=(t,e)=>r(t,"name",{value:e,configurable:!0});globalThis["@hpcc-js/dgrid-shim"]||console.error('dgrid-shim not loaded, please add `<script src="https://cdn.jsdelivr.net/npm/@hpcc-js/dgrid-shim/dist/index.min.js"><\/script>` or similar to your HTML file');const o=globalThis["@hpcc-js/dgrid-shim"].Deferred,n=globalThis["@hpcc-js/dgrid-shim"].Memory,l=globalThis["@hpcc-js/dgrid-shim"].QueryResults,a=globalThis["@hpcc-js/dgrid-shim"].Grid,h=globalThis["@hpcc-js/dgrid-shim"].PagingGrid,c=globalThis["@hpcc-js/dgrid-shim"].domConstruct;function d(t){return String(t).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function u(t){switch(Object.prototype.toString.call(t)){case"[object Undefined]":case"[object Boolean]":case"[object Number]":return t;case"[object String]":return d(t);default:console.warn("Unknown cell type: "+Object.prototype.toString.call(t))}return t}function p(t){return t instanceof Array}i(d,"entitiesEncode"),i(u,"safeEncode"),i(p,"isArray");const _=class _RowFormatter{constructor(t,e){this._renderHtml=e,this._columns=t,this.flattenColumns(t)}_columns;_flattenedColumns=[];_columnIdx={};_formattedRow={};flattenColumns(t){for(const e of t)this.flattenColumn(e)}flattenColumn(t){if(t.children)for(const e of t.children)this.flattenColumn(e);else this._columnIdx[t.field]=this._flattenedColumns.length,this._flattenedColumns.push(t.field)}format(t){return this._formattedRow={},this.formatRow(this._columns,t),this.row()}calcDepth(t,e){let s=1;for(const r of t)if(r.children&&e[r.leafID]){let t=0,i=[];p(e[r.leafID])?i=e[r.leafID]:p(e[r.leafID].Row)&&(i=e[r.leafID].Row);for(const e of i)t+=this.calcDepth(r.children,e);s=Math.max(s,t)}return s}formatCell(t,e,s){if(t.children){let s=0;p(e)||(e=p(e.Row)?e.Row:[e]);for(const r of e)s=Math.max(s,this.formatRow(t.children,r))}else if(t.isSet&&(e=JSON.stringify(e.Item)),void 0===this._formattedRow[t.field]?this._formattedRow[t.field]=""+(void 0===e?"":this._renderHtml?e:u(e)):(this._formattedRow[t.field]+="<br><hr class='dgrid-fakeline'>",this._formattedRow[t.field]+=""+(void 0===e?"":this._renderHtml?e:u(e))),s>1){const e=[];e.length=s;const r=e.join("<br><hr class='dgrid-fakeline' style='visibility: hidden'>");this._formattedRow[t.field]+=r}}formatRow(t,e=[],s=0){const r=this.calcDepth(t,e);for(const i of t)this.formatCell(i,e[i.leafID],r);return r}row(){const t={};for(const e of this._flattenedColumns)t[e]=this._formattedRow[e];return t}};i(_,"RowFormatter");let m=_;const f=class _DBStore{_db;Model;idProperty;constructor(t){this._db=t}_renderHtml=!0;renderHtml(t){this._renderHtml=t}db2Columns(t,e,s="",r,i){return e?e.map((e,o)=>{const n={label:e.label(),leafID:""+o,field:s+o,idx:o,className:"resultGridCell",sortable:t,isSet:!1};if("nested"===e.type())n.children=this.db2Columns(!1,e.children(),s+o+"_",r),n.sortable=!1;else n.formatter=r,n.renderCell=i;return n}):[]}columns(t,e,s){return this.db2Columns(t,this._db.fields(),"",e,s)}getIdentity(t){return t.__hpcc_id}get(t){return this._db.row(t+1)}_fetchRange(t){const e=new m(this.columns(!1),this._renderHtml);return this._db.data().slice(t.start,t.end).map((s,r)=>({...e.format(s),__hpcc_id:t.start+r,__origRow:s}))}fetchRange(t){const e=this._fetchRange(t),s=new o;return s.totalLength=new o,s.resolve(e),s.totalLength.resolve(this._db.length()-1),s}sort(t){return this._db.data().sort((e,s)=>{for(const r of t){const t=r.property;if(void 0===e[t]&&void 0!==s[t]||e[t]<s[t])return r.descending?1:-1;if(void 0!==e[t]&&void 0===s[t]||e[t]>s[t])return r.descending?-1:1}return 0}),this}};i(f,"DBStore");let g=f;const b=class _Common extends e.HTMLWidget{_columns=[];_store=new g(this._db);_dgridDiv;_dgrid;_prevPaging;_prevSortBy;_prevSortByDescending;_prevMultiSelect;constructor(){super(),this._tag="div"}formatSortBy(){const t=this.columns().indexOf(this.sortBy());return t>=0?[{property:t.toString(),descending:this.sortByDescending()}]:void 0}_supressEvents;selection(t){if(!arguments.length){const t=[];for(const e in this._dgrid.selection)if(this._dgrid.selection[e]){const s=this._store.get(+e);t.push(this.rowToObj(s))}return t}this._supressEvents=!0,this._dgrid?.clearSelection();let e=!0;this.data().forEach((s,r)=>{if(t.indexOf(s)>=0){const t=this._dgrid?.row(r);t.element&&e&&(e=!1,t.element.scrollIntoView()),this._dgrid?.select(r)}}),this._supressEvents=!1}enter(t,e){super.enter(t,e),this._dgridDiv=e.append("div").attr("class","flat")}update(t,e){super.update(t,e),this._store.renderHtml(this.renderHtml()),this._dgrid&&this._prevPaging===this.pagination()&&this._prevSortBy===this.sortBy()&&this._prevSortByDescending===this.sortByDescending()&&this._prevMultiSelect===this.multiSelect()||(this._prevPaging=this.pagination(),this._prevSortBy=this.sortBy(),this._prevSortByDescending=this.sortByDescending(),this._prevMultiSelect=this.multiSelect(),this._dgrid&&(this._dgrid.destroy(),this._dgridDiv=e.append("div").attr("class","flat")),this._dgrid=new(this._prevPaging?h:a)({columns:this._columns,collection:this._store,sort:this.formatSortBy(),selectionMode:this.multiSelect()?"extended":"single",deselectOnRefresh:!0,cellNavigation:!1,pagingLinks:1,pagingTextBox:!0,previousNextArrows:!0,firstLastArrows:!0,rowsPerPage:this.pageSize(),pageSizeOptions:[1,10,25,50,100,1e3]},this._dgridDiv.node()),this._dgrid.on("dgrid-select",t=>{this._supressEvents||t.rows&&t.rows.length&&t.rows[0].data&&this.click(this.rowToObj(t.rows[0].data.__origRow),"",!0,{selection:this.selection()})}),this._dgrid.on("dgrid-deselect",t=>{this._supressEvents||t.rows&&t.rows.length&&t.rows[0].data&&this.click(this.rowToObj(t.rows[0].data.__origRow),"",!1,{selection:this.selection()})}),this._dgrid.refresh({})),this._dgrid.noDataMessage=`<span class='dojoxGridNoData'>${this.noDataMessage()}</span>`,this._dgrid.loadingMessage=`<span class='dojoxGridNoData'>${this.loadingMessage()}</span>`,this._dgridDiv.style("width",this.width()+"px").style("height",this.height()-2+"px"),this._dgrid.resize()}exit(t,e){delete this._prevPaging,this._dgrid&&(this._dgrid.destroy(),delete this._dgrid),super.exit(t,e)}click(t,e,s,r){}};i(b,"Common");let y=b;y.prototype._class+=" dgrid_Common",y.prototype.publish("noDataMessage","...empty...","string","No Data Message"),y.prototype.publish("loadingMessage","loading...","string","Loading Message"),y.prototype.publish("pagination",!1,"boolean","Enable paging"),y.prototype.publish("pageSize",25,"number","Page size"),y.prototype.publish("sortable",!1,"boolean","Enable sorting by column"),y.prototype.publish("sortBy",null,"set","Default 'sort by' Column ID",function(){return this.columns()},{optional:!0}),y.prototype.publish("sortByDescending",!1,"boolean","Default 'sort by' descending",void 0,{disable:i(t=>!t.sortBy(),"disable")}),y.prototype.publish("multiSelect",!1,"boolean","Multiple Selection"),y.prototype.publish("renderHtml",!0,"boolean","Render HTML");const w=class _DatasourceCache{_datasource;_prevHash;_fetchCache={};constructor(t){this._datasource=t}validateCache(){const t=this.hash();this._prevHash!==t&&(this._prevHash=t,this._fetchCache={})}id(){return this._datasource.id()}hash(){return this._datasource.hash()}label(){return this._datasource.label()}outFields(){return this._datasource.outFields()}total(){return this._datasource.total()}fetch(t,e){this.validateCache();const s=`${t}->${e}`;let r=this._fetchCache[s];return r||(r=this._datasource.fetch(t,e),this._fetchCache[s]=r),r}};i(w,"DatasourceCache");let v=w;const D=class _DatasourceStore{_datasource;_columnsIdx={};_columns;rowFormatter;constructor(t,e){this._datasource=new v(t),this._columnsIdx={},this._columns=this.db2Columns(this._datasource.outFields()).map((t,e)=>(this._columnsIdx[t.field]=e,t)),this.rowFormatter=new m(this._columns,e)}columns(){return this._columns}db2Columns(t,e=""){return t?t.map((t,s)=>{const r={field:e+t.id,leafID:t.id,label:t.id,idx:s,className:"resultGridCell",sortable:!0,isSet:!1};return"dataset"===t.type?r.children=this.db2Columns(t.children,e+t.id+"_"):r.formatter=(t,e)=>"string"==typeof t?t.replace(/\t/g,"&nbsp;&nbsp;&nbsp;&nbsp;"):t,r}):[]}getIdentity(t){return t.__hpcc_id}_request(t,e){if(!this._datasource)return Promise.resolve({totalLength:0,data:[]});return this._datasource.fetch(t,e-t).then(e=>({totalLength:this._datasource.total(),data:e.map((e,s)=>{const r=this.rowFormatter.format(e);return r.__hpcc_id=t+s,r.__origRow=e,r})}))}fetchRange(t){const e=new o;return this._request(t.start,t.end).then(t=>e.resolve(t)),new l(e.then(t=>t.data),{totalLength:e.then(t=>t.totalLength)})}};i(D,"DatasourceStore");let C=D;const R=class _DatasourceTable extends y{_prevDatasource;constructor(){super()}invalidate(){return delete this._prevDatasource,this}enter(t,e){super.enter(t,e)}update(t,e){super.update(t,e)}render(t){return super.render(e=>{if(this._prevDatasource!==this.datasource())if(this._dgrid.set("collection",new n),this._dgrid.set("columns",[]),this._prevDatasource=this.datasource(),this._prevDatasource){const s=new C(this._prevDatasource,this.renderHtml());this._dgrid.set("columns",s.columns()),this._dgrid.set("collection",s),t&&t(e)}else t&&t(e);else t&&t(e)})}click(t,e,s){}};i(R,"DatasourceTable");let x=R;x.prototype._class+=" dgrid_DatasourceTable",x.prototype.publish("datasource",null,"object","Datasource");const S=class _ColumnFormat extends e.PropertyExt{_owner;constructor(){super()}owner(t){return arguments.length?(this._owner=t,this):this._owner}valid(){return!!this.column()}formatterFunc(){const t=this._owner.formatterFunc();if(this.valid()&&this.format()){const s=e.format(this.format());return function(e,r){return"number"==typeof e?s(e):t.call(this,e,r)}}return t}renderCellFunc(){const t=this._owner.renderCellFunc(),s=this.formatterFunc();if(this.valid()&&this.paletteID()){const r=this._owner.columns(),i=e.Palette.rainbow(this.paletteID()),o=this.min(),n=this.max(),l=this.valueColumn()?r.indexOf(this.valueColumn()):void 0;return function(r,a,h){t&&t.call(this,r,a,h);const c=l?r.__origRow[l]:a,d=i(c,o,n),u=s.call(this,a,r);e.select(h).style("background",d).style("color",d&&e.Palette.textColor(d)).text(u?.html??u??a)}}return t}};i(S,"ColumnFormat");let j=S;j.prototype._class+=" dgrid_Table.ColumnFormat",j.prototype.publish("column",null,"set","Column",function(){return this._owner.columns()},{optional:!0}),j.prototype.publish("width",null,"number","Width",null,{optional:!0}),j.prototype.publish("format",null,"string","Format (d3-format)",null,{optional:!0}),j.prototype.publish("paletteID",null,"set","Color palette for this widget",["",...e.Palette.rainbow("default").switch()],{optional:!0}),j.prototype.publish("min",0,"number","Min Value",null,{disable:i(t=>!t.paletteID(),"disable")}),j.prototype.publish("max",100,"number","Max Value",null,{disable:i(t=>!t.paletteID(),"disable")}),j.prototype.publish("valueColumn",null,"set","Column",function(){return this._owner.columns()},{optional:!0,disable:i(t=>!t.paletteID(),"disable")});const F=class _Table extends y{_prevColsHash;_prevFieldsHash;_colsRefresh=!1;_dataRefresh=!1;constructor(){super()}fields(t){const e=super.fields.apply(this,arguments);if(arguments.length){const e=s.hashSum({_:t});this._prevFieldsHash!==e&&(this._prevFieldsHash=e,this._colsRefresh=!0)}return e}columns(t,e){const r=super.columns.apply(this,arguments);if(arguments.length){const e=s.hashSum({_:t});this._prevColsHash!==e&&(this._prevColsHash=e,this._colsRefresh=!0)}return r}data(t){const e=super.data.apply(this,arguments);return arguments.length&&(this._dataRefresh=!0),e}enter(t,e){super.enter(t,e)}guessWidth(t,e){const s=this.sortable()?12:0;for(const r of t)if(r.children){let t=[];for(let s=0;s<Math.min(3,e.length);++s)t=t.concat(e[s][r.idx]);this.guessWidth(r.children,t)}else r.width=e.reduce((t,e)=>{const s=(""+e[r.idx]).trim();return Math.max(t,this.textSize(s).width)},this.textSize(""+r.label,void 0,void 0,!0).width+s)+8}_prevHash;update(t,e){super.update(t,e);const s=this.hashSum();if(this._prevHash!==s&&(this._prevHash=s,this._colsRefresh=!0),this._colsRefresh){if(this._columns=this._store.columns(this.sortable(),this.formatterFunc(),this.renderCellFunc()),"auto"===this.columnWidth()){const t=this.data().filter((t,e)=>e<10);this.guessWidth(this._columns,t)}const t=this.columns();for(const e of this.columnFormats())if(e.valid()){const s=t.indexOf(e.column());this._columns[s]&&(this._columns[s].hidden=0===e.width(),this._columns[s].width=e.width()||this._columns[s].width,this._columns[s].formatter=e.formatterFunc(),this._columns[s].renderCell=e.renderCellFunc())}this._dgrid.set("columns",this._columns.filter(t=>!t.hidden)),this._colsRefresh=!1}(this._colsRefresh||this._dataRefresh)&&(this._colsRefresh?this._dgrid.refresh({}):this._dgrid.refresh(),this._colsRefresh=!1,this._dataRefresh=!1)}exit(t,e){delete this._prevColsHash,delete this._prevFieldsHash,super.exit(t,e)}formatterFunc(){return function(t,e){switch(typeof t){case"string":return{html:t.replace(/\t/g,"&nbsp;&nbsp;&nbsp;&nbsp;").trim()};case"undefined":return""}return t}}renderCellFunc(){}click(t,e,s){}};i(F,"Table");let H=F;H.prototype._class+=" dgrid_Table",H.prototype.publish("columnWidth","auto","set","Default column width",["auto","none"]),H.prototype.publish("columnFormats",[],"propertyArray","Source Columns",null,{autoExpand:j}),t.BUILD_VERSION="3.15.1",t.ColumnFormat=j,t.Common=y,t.DBStore=g,t.DatasourceCache=v,t.DatasourceStore=C,t.DatasourceTable=x,t.Deferred=o,t.Grid=a,t.Memory=n,t.PKG_NAME="@hpcc-js/dgrid",t.PKG_VERSION="3.5.1",t.PagingGrid=h,t.QueryResults=l,t.RowFormatter=m,t.Table=H,t.domConstruct=c,Object.defineProperty(t,Symbol.toStringTag,{value:"Module"})});
1
+ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@hpcc-js/common"),require("@hpcc-js/util")):"function"==typeof define&&define.amd?define(["exports","@hpcc-js/common","@hpcc-js/util"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self)["@hpcc-js/dgrid"]={},t["@hpcc-js/common"],t["@hpcc-js/util"])}(this,function(t,e,s){"use strict";var r=Object.defineProperty,i=(t,e)=>r(t,"name",{value:e,configurable:!0});globalThis["@hpcc-js/dgrid-shim"]||console.error('dgrid-shim not loaded, please add `<script src="https://cdn.jsdelivr.net/npm/@hpcc-js/dgrid-shim/dist/index.min.js"><\/script>` or similar to your HTML file');const o=globalThis["@hpcc-js/dgrid-shim"].Deferred,n=globalThis["@hpcc-js/dgrid-shim"].Memory,l=globalThis["@hpcc-js/dgrid-shim"].QueryResults,a=globalThis["@hpcc-js/dgrid-shim"].Grid,h=globalThis["@hpcc-js/dgrid-shim"].PagingGrid,c=globalThis["@hpcc-js/dgrid-shim"].domConstruct;function d(t){return String(t).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function u(t){switch(Object.prototype.toString.call(t)){case"[object Undefined]":case"[object Boolean]":case"[object Number]":return t;case"[object String]":return d(t);default:console.warn("Unknown cell type: "+Object.prototype.toString.call(t))}return t}function p(t){return t instanceof Array}i(d,"entitiesEncode"),i(u,"safeEncode"),i(p,"isArray");const _=class _RowFormatter{constructor(t,e){this._renderHtml=e,this._columns=t,this.flattenColumns(t)}_columns;_flattenedColumns=[];_columnIdx={};_formattedRow={};flattenColumns(t){for(const e of t)this.flattenColumn(e)}flattenColumn(t){if(t.children)for(const e of t.children)this.flattenColumn(e);else this._columnIdx[t.field]=this._flattenedColumns.length,this._flattenedColumns.push(t.field)}format(t){return this._formattedRow={},this.formatRow(this._columns,t),this.row()}calcDepth(t,e){let s=1;for(const r of t)if(r.children&&e[r.leafID]){let t=0,i=[];p(e[r.leafID])?i=e[r.leafID]:p(e[r.leafID].Row)&&(i=e[r.leafID].Row);for(const e of i)t+=this.calcDepth(r.children,e);s=Math.max(s,t)}return s}formatCell(t,e,s){if(t.children){let s=0;p(e)||(e=p(e.Row)?e.Row:[e]);for(const r of e)s=Math.max(s,this.formatRow(t.children,r))}else if(t.isSet&&(e=JSON.stringify(e.Item)),void 0===this._formattedRow[t.field]?this._formattedRow[t.field]=""+(void 0===e?"":this._renderHtml?e:u(e)):(this._formattedRow[t.field]+="<br><hr class='dgrid-fakeline'>",this._formattedRow[t.field]+=""+(void 0===e?"":this._renderHtml?e:u(e))),s>1){const e=[];e.length=s;const r=e.join("<br><hr class='dgrid-fakeline' style='visibility: hidden'>");this._formattedRow[t.field]+=r}}formatRow(t,e=[],s=0){const r=this.calcDepth(t,e);for(const i of t)this.formatCell(i,e[i.leafID],r);return r}row(){const t={};for(const e of this._flattenedColumns)t[e]=this._formattedRow[e];return t}};i(_,"RowFormatter");let m=_;const f=class _DBStore{_db;Model;idProperty;constructor(t){this._db=t}_renderHtml=!0;renderHtml(t){this._renderHtml=t}db2Columns(t,e,s="",r,i){return e?e.map((e,o)=>{const n={label:e.label(),leafID:""+o,field:s+o,idx:o,className:"resultGridCell",sortable:t,isSet:!1};if("nested"===e.type())n.children=this.db2Columns(!1,e.children(),s+o+"_",r),n.sortable=!1;else n.formatter=r,n.renderCell=i;return n}):[]}columns(t,e,s){return this.db2Columns(t,this._db.fields(),"",e,s)}getIdentity(t){return t.__hpcc_id}get(t){return this._db.row(t+1)}_fetchRange(t){const e=new m(this.columns(!1),this._renderHtml);return this._db.data().slice(t.start,t.end).map((s,r)=>({...e.format(s),__hpcc_id:t.start+r,__origRow:s}))}fetchRange(t){const e=this._fetchRange(t),s=new o;return s.totalLength=new o,s.resolve(e),s.totalLength.resolve(this._db.length()-1),s}sort(t){return this._db.data().sort((e,s)=>{for(const r of t){const t=r.property;if(void 0===e[t]&&void 0!==s[t]||e[t]<s[t])return r.descending?1:-1;if(void 0!==e[t]&&void 0===s[t]||e[t]>s[t])return r.descending?-1:1}return 0}),this}};i(f,"DBStore");let g=f;const b=class _Common extends e.HTMLWidget{_columns=[];_store=new g(this._db);_dgridDiv;_dgrid;_prevPaging;_prevSortBy;_prevSortByDescending;_prevMultiSelect;constructor(){super(),this._tag="div"}formatSortBy(){const t=this.columns().indexOf(this.sortBy());return t>=0?[{property:t.toString(),descending:this.sortByDescending()}]:void 0}_supressEvents;selection(t){if(!arguments.length){const t=[];for(const e in this._dgrid.selection)if(this._dgrid.selection[e]){const s=this._store.get(+e);t.push(this.rowToObj(s))}return t}this._supressEvents=!0,this._dgrid?.clearSelection();let e=!0;this.data().forEach((s,r)=>{if(t.indexOf(s)>=0){const t=this._dgrid?.row(r);t.element&&e&&(e=!1,t.element.scrollIntoView()),this._dgrid?.select(r)}}),this._supressEvents=!1}enter(t,e){super.enter(t,e),this._dgridDiv=e.append("div").attr("class","flat")}update(t,e){super.update(t,e),this._store.renderHtml(this.renderHtml()),this._dgrid&&this._prevPaging===this.pagination()&&this._prevSortBy===this.sortBy()&&this._prevSortByDescending===this.sortByDescending()&&this._prevMultiSelect===this.multiSelect()||(this._prevPaging=this.pagination(),this._prevSortBy=this.sortBy(),this._prevSortByDescending=this.sortByDescending(),this._prevMultiSelect=this.multiSelect(),this._dgrid&&(this._dgrid.destroy(),this._dgridDiv=e.append("div").attr("class","flat")),this._dgrid=new(this._prevPaging?h:a)({columns:this._columns,collection:this._store,sort:this.formatSortBy(),selectionMode:this.multiSelect()?"extended":"single",deselectOnRefresh:!0,cellNavigation:!1,pagingLinks:1,pagingTextBox:!0,previousNextArrows:!0,firstLastArrows:!0,rowsPerPage:this.pageSize(),pageSizeOptions:[1,10,25,50,100,1e3]},this._dgridDiv.node()),this._dgrid.on("dgrid-select",t=>{this._supressEvents||t.rows&&t.rows.length&&t.rows[0].data&&this.click(this.rowToObj(t.rows[0].data.__origRow),"",!0,{selection:this.selection()})}),this._dgrid.on("dgrid-deselect",t=>{this._supressEvents||t.rows&&t.rows.length&&t.rows[0].data&&this.click(this.rowToObj(t.rows[0].data.__origRow),"",!1,{selection:this.selection()})}),this._dgrid.refresh({})),this._dgrid.noDataMessage=`<span class='dojoxGridNoData'>${this.noDataMessage()}</span>`,this._dgrid.loadingMessage=`<span class='dojoxGridNoData'>${this.loadingMessage()}</span>`,this._dgridDiv.style("width",this.width()+"px").style("height",this.height()-2+"px"),this._dgrid.resize()}exit(t,e){delete this._prevPaging,this._dgrid&&(this._dgrid.destroy(),delete this._dgrid),super.exit(t,e)}click(t,e,s,r){}};i(b,"Common");let y=b;y.prototype._class+=" dgrid_Common",y.prototype.publish("noDataMessage","...empty...","string","No Data Message"),y.prototype.publish("loadingMessage","loading...","string","Loading Message"),y.prototype.publish("pagination",!1,"boolean","Enable paging"),y.prototype.publish("pageSize",25,"number","Page size"),y.prototype.publish("sortable",!1,"boolean","Enable sorting by column"),y.prototype.publish("sortBy",null,"set","Default 'sort by' Column ID",function(){return this.columns()},{optional:!0}),y.prototype.publish("sortByDescending",!1,"boolean","Default 'sort by' descending",void 0,{disable:i(t=>!t.sortBy(),"disable")}),y.prototype.publish("multiSelect",!1,"boolean","Multiple Selection"),y.prototype.publish("renderHtml",!0,"boolean","Render HTML");const w=class _DatasourceCache{_datasource;_prevHash;_fetchCache={};constructor(t){this._datasource=t}validateCache(){const t=this.hash();this._prevHash!==t&&(this._prevHash=t,this._fetchCache={})}id(){return this._datasource.id()}hash(){return this._datasource.hash()}label(){return this._datasource.label()}outFields(){return this._datasource.outFields()}total(){return this._datasource.total()}fetch(t,e){this.validateCache();const s=`${t}->${e}`;let r=this._fetchCache[s];return r||(r=this._datasource.fetch(t,e),this._fetchCache[s]=r),r}};i(w,"DatasourceCache");let v=w;const D=class _DatasourceStore{_datasource;_columnsIdx={};_columns;rowFormatter;constructor(t,e){this._datasource=new v(t),this._columnsIdx={},this._columns=this.db2Columns(this._datasource.outFields()).map((t,e)=>(this._columnsIdx[t.field]=e,t)),this.rowFormatter=new m(this._columns,e)}columns(){return this._columns}db2Columns(t,e=""){return t?t.map((t,s)=>{const r={field:e+t.id,leafID:t.id,label:t.id,idx:s,className:"resultGridCell",sortable:!0,isSet:!1};return"dataset"===t.type?r.children=this.db2Columns(t.children,e+t.id+"_"):r.formatter=(t,e)=>"string"==typeof t?t.replace(/\t/g,"&nbsp;&nbsp;&nbsp;&nbsp;"):t,r}):[]}getIdentity(t){return t.__hpcc_id}_request(t,e){if(!this._datasource)return Promise.resolve({totalLength:0,data:[]});return this._datasource.fetch(t,e-t).then(e=>({totalLength:this._datasource.total(),data:e.map((e,s)=>{const r=this.rowFormatter.format(e);return r.__hpcc_id=t+s,r.__origRow=e,r})}))}fetchRange(t){const e=new o;return this._request(t.start,t.end).then(t=>e.resolve(t)),new l(e.then(t=>t.data),{totalLength:e.then(t=>t.totalLength)})}};i(D,"DatasourceStore");let C=D;const R=class _DatasourceTable extends y{_prevDatasource;constructor(){super()}invalidate(){return delete this._prevDatasource,this}enter(t,e){super.enter(t,e)}update(t,e){super.update(t,e)}render(t){return super.render(e=>{if(this._prevDatasource!==this.datasource())if(this._dgrid.set("collection",new n),this._dgrid.set("columns",[]),this._prevDatasource=this.datasource(),this._prevDatasource){const s=new C(this._prevDatasource,this.renderHtml());this._dgrid.set("columns",s.columns()),this._dgrid.set("collection",s),t&&t(e)}else t&&t(e);else t&&t(e)})}click(t,e,s){}};i(R,"DatasourceTable");let x=R;x.prototype._class+=" dgrid_DatasourceTable",x.prototype.publish("datasource",null,"object","Datasource");const S=class _ColumnFormat extends e.PropertyExt{_owner;constructor(){super()}owner(t){return arguments.length?(this._owner=t,this):this._owner}valid(){return!!this.column()}formatterFunc(){const t=this._owner.formatterFunc();if(this.valid()&&this.format()){const s=e.format(this.format());return function(e,r){return"number"==typeof e?s(e):t.call(this,e,r)}}return t}renderCellFunc(){const t=this._owner.renderCellFunc(),s=this.formatterFunc();if(this.valid()&&this.paletteID()){const r=this._owner.columns(),i=e.Palette.rainbow(this.paletteID()),o=this.min(),n=this.max(),l=this.valueColumn()?r.indexOf(this.valueColumn()):void 0;return function(r,a,h){t&&t.call(this,r,a,h);const c=l?r.__origRow[l]:a,d=i(c,o,n),u=s.call(this,a,r);e.select(h).style("background",d).style("color",d&&e.Palette.textColor(d)).text(u?.html??u??a)}}return t}};i(S,"ColumnFormat");let j=S;j.prototype._class+=" dgrid_Table.ColumnFormat",j.prototype.publish("column",null,"set","Column",function(){return this._owner.columns()},{optional:!0}),j.prototype.publish("width",null,"number","Width",null,{optional:!0}),j.prototype.publish("format",null,"string","Format (d3-format)",null,{optional:!0}),j.prototype.publish("paletteID",null,"set","Color palette for this widget",["",...e.Palette.rainbow("default").switch()],{optional:!0}),j.prototype.publish("min",0,"number","Min Value",null,{disable:i(t=>!t.paletteID(),"disable")}),j.prototype.publish("max",100,"number","Max Value",null,{disable:i(t=>!t.paletteID(),"disable")}),j.prototype.publish("valueColumn",null,"set","Column",function(){return this._owner.columns()},{optional:!0,disable:i(t=>!t.paletteID(),"disable")});const F=class _Table extends y{_prevColsHash;_prevFieldsHash;_colsRefresh=!1;_dataRefresh=!1;constructor(){super()}fields(t){const e=super.fields.apply(this,arguments);if(arguments.length){const e=s.hashSum({_:t});this._prevFieldsHash!==e&&(this._prevFieldsHash=e,this._colsRefresh=!0)}return e}columns(t,e){const r=super.columns.apply(this,arguments);if(arguments.length){const e=s.hashSum({_:t});this._prevColsHash!==e&&(this._prevColsHash=e,this._colsRefresh=!0)}return r}data(t){const e=super.data.apply(this,arguments);return arguments.length&&(this._dataRefresh=!0),e}enter(t,e){super.enter(t,e)}guessWidth(t,e){const s=this.sortable()?12:0;for(const r of t)if(r.children){let t=[];for(let s=0;s<Math.min(3,e.length);++s)t=t.concat(e[s][r.idx]);this.guessWidth(r.children,t)}else r.width=e.reduce((t,e)=>{const s=(""+e[r.idx]).trim();return Math.max(t,this.textSize(s).width)},this.textSize(""+r.label,void 0,void 0,!0).width+s)+8}_prevHash;update(t,e){super.update(t,e);const s=this.hashSum();if(this._prevHash!==s&&(this._prevHash=s,this._colsRefresh=!0),this._colsRefresh){if(this._columns=this._store.columns(this.sortable(),this.formatterFunc(),this.renderCellFunc()),"auto"===this.columnWidth()){const t=this.data().filter((t,e)=>e<10);this.guessWidth(this._columns,t)}const t=this.columns();for(const e of this.columnFormats())if(e.valid()){const s=t.indexOf(e.column());this._columns[s]&&(this._columns[s].hidden=0===e.width(),this._columns[s].width=e.width()||this._columns[s].width,this._columns[s].formatter=e.formatterFunc(),this._columns[s].renderCell=e.renderCellFunc())}this._dgrid.set("columns",this._columns.filter(t=>!t.hidden)),this._colsRefresh=!1}(this._colsRefresh||this._dataRefresh)&&(this._colsRefresh?this._dgrid.refresh({}):this._dgrid.refresh(),this._colsRefresh=!1,this._dataRefresh=!1)}exit(t,e){delete this._prevColsHash,delete this._prevFieldsHash,super.exit(t,e)}formatterFunc(){return function(t,e){switch(typeof t){case"string":return{html:t.replace(/\t/g,"&nbsp;&nbsp;&nbsp;&nbsp;").trim()};case"undefined":return""}return t}}renderCellFunc(){}click(t,e,s){}};i(F,"Table");let H=F;H.prototype._class+=" dgrid_Table",H.prototype.publish("columnWidth","auto","set","Default column width",["auto","none"]),H.prototype.publish("columnFormats",[],"propertyArray","Source Columns",null,{autoExpand:j}),t.BUILD_VERSION="3.16.0",t.ColumnFormat=j,t.Common=y,t.DBStore=g,t.DatasourceCache=v,t.DatasourceStore=C,t.DatasourceTable=x,t.Deferred=o,t.Grid=a,t.Memory=n,t.PKG_NAME="@hpcc-js/dgrid",t.PKG_VERSION="3.5.2",t.PagingGrid=h,t.QueryResults=l,t.RowFormatter=m,t.Table=H,t.domConstruct=c,Object.defineProperty(t,Symbol.toStringTag,{value:"Module"})});
2
2
  //# sourceMappingURL=index.umd.cjs.map
3
3
  !function(){"use strict";try{if("undefined"!=typeof document){var i=document.createElement("style");i.appendChild(document.createTextNode(".dijitTooltip{position:absolute;z-index:2000;display:block;left:0;top:-10000px;overflow:visible;font-family:Verdana,Geneva,sans-serif;font-size:12px}.dijitTooltipContainer{border:solid black 2px;background:#b8b5b5;color:#000;font-size:small}.dijitTooltipFocusNode{padding:2px}.dijitTooltipConnector{position:absolute}.dj_a11y .dijitTooltipConnector,.dijitTooltipData{display:none}.dijitTooltip{background:transparent}.dijitTooltipContainer{background-color:#424242;opacity:1;-ms-filter:none;filter:none;padding:4px 8px;border-radius:3px}.dijitTooltip .dijitTooltipContainer{color:#fff;border:0 none}.dijitTooltipConnector{z-index:2;width:auto;height:auto;opacity:1;-ms-filter:none;filter:none}.dijitTooltipABRight .dijitTooltipConnector{left:auto!important;right:8px}.dijitTooltipBelow{padding-top:4px}.dijitTooltipBelow .dijitTooltipConnector{top:0;left:8px;border-bottom:4px solid #424242;border-left:4px solid transparent;border-right:4px solid transparent;border-top:0}.dijitTooltipAbove{padding-bottom:4px}.dijitTooltipAbove .dijitTooltipConnector{bottom:0;left:8px;border-top:4px solid #424242;border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:0}.dijitTooltipLeft{padding-right:4px}.dijitTooltipLeft .dijitTooltipConnector{right:0;border-left:4px solid #424242;border-bottom:4px solid transparent;border-top:4px solid transparent;border-right:0}.dijitTooltipRight{padding-left:4px}.dijitTooltipRight .dijitTooltipConnector{left:0;border-bottom:4px solid transparent;border-top:4px solid transparent;border-right:4px solid #424242}.dgrid{position:relative;overflow:hidden;border:1px solid #ddd;height:30em;display:block}.dgrid-header{background-color:#eee}.dgrid-header-row{position:absolute;right:17px;left:0}.dgrid-header-scroll{position:absolute;top:0;right:0}.dgrid-footer{position:absolute;bottom:0;width:100%}.dgrid-header-hidden{font-size:0;height:0!important;border-top:none!important;border-bottom:none!important;margin-top:0!important;margin-bottom:0!important;padding-top:0!important;padding-bottom:0!important}.dgrid-footer-hidden{display:none}.dgrid-sortable{cursor:pointer}.dgrid-header,.dgrid-header-row,.dgrid-footer{overflow:hidden;background-color:#eee}.dgrid-row-table{border-collapse:collapse;border:none;table-layout:fixed;empty-cells:show;width:100%;height:100%}.dgrid-cell{padding:3px;text-align:left;overflow:hidden;vertical-align:top;border:1px solid #ddd;border-top-style:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;text-overflow:ellipsis;white-space:nowrap}.dgrid-content{position:relative;height:99%}.dgrid-scroller{overflow-x:auto;overflow-y:scroll;position:absolute;top:0;margin-top:25px;bottom:0;width:100%}.dgrid-preload{font-size:0;line-height:0}.dgrid-loading{position:relative;height:100%}.dgrid-above{position:absolute;bottom:0}.ui-icon{width:12px;height:16px;background-image:url(data:image/png;base64,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)}.dgrid-sort-arrow{background-position:-64px -16px;display:block;float:right;margin:0 4px 0 5px;height:12px}.dgrid-sort-up .dgrid-sort-arrow{background-position:0px -16px}.dgrid-selected{background-color:#bbb}.dgrid-input{width:99%}html.has-mozilla .dgrid .dgrid-row:focus,html.has-mozilla .dgrid .dgrid-cell:focus{outline:1px dotted}html.has-mozilla .dgrid-focus{outline-offset:-1px}.dgrid-scrollbar-measure{width:100px;height:100px;overflow:scroll;position:absolute;top:-9999px}.dgrid-autoheight{height:auto}.dgrid-autoheight .dgrid-scroller{position:relative;overflow-y:hidden}.dgrid-autoheight .dgrid-header-scroll{display:none}.dgrid-autoheight .dgrid-header{right:0}.dgrid-column-set{overflow:hidden;width:100%;position:relative;height:100%;-ms-touch-action:pan-y;touch-action:pan-y}.dgrid-column-set-cell{vertical-align:top;height:100%}.dgrid-column-set-scroller-container{font-size:0;position:absolute;bottom:0}.dgrid-autoheight .dgrid-column-set-scroller-container{position:relative}.dgrid-column-set-scroller{display:inline-block;overflow-x:auto;overflow-y:hidden}.dgrid-column-set-scroller-content{height:1px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.dgrid-expando-icon{width:16px;height:16px}.dgrid-tree-container{-webkit-transition-duration:.3s;-moz-transition-duration:.3s;-o-transition-duration:.3s;-ms-transition-duration:.3s;transition-duration:.3s;overflow:hidden}.dgrid-tree-container.dgrid-tree-resetting{-webkit-transition-duration:0;-moz-transition-duration:0;-o-transition-duration:0;-ms-transition-duration:0;transition-duration:0}.dgrid-hider-toggle{background-position:0 -192px;background-color:transparent;border:none;cursor:pointer;position:absolute;right:0;top:0}.dgrid-rtl-swap .dgrid-hider-toggle{right:auto;left:0}.dgrid-hider-menu{position:absolute;top:0;right:17px;width:184px;background-color:#fff;border:1px solid #000;z-index:99999;padding:4px;overflow-x:hidden;overflow-y:auto}.dgrid-rtl-swap .dgrid-hider-menu{right:auto;left:17px}.dgrid-hider-menu-row{position:relative;padding:2px}.dgrid-hider-menu-check{position:absolute;top:2px;left:2px;padding:0}.dgrid-hider-menu-label{display:block;padding-left:20px}.dgrid-header .dojoDndTarget .dgrid-cell{display:table-cell}.dgrid-header .dojoDndItemBefore{border-left:2px dotted #000!important}.dgrid-header .dojoDndItemAfter{border-right:2px dotted #000!important}.dgrid-column-resizer{cursor:col-resize;position:absolute;width:2px;background-color:#666;z-index:1000}.dgrid-resize-handle{height:100px;width:0;position:absolute;right:-4px;top:-4px;cursor:col-resize;z-index:999;border-left:5px solid transparent;outline:none}.dgrid-resize-header-container{height:100%}.dgrid-resize-guard{cursor:col-resize;position:absolute;inset:0}html.has-touch .dgrid-resize-handle{border-left:20px solid transparent}html.has-touch .dgrid-column-resizer{width:2px}.dgrid-resize-header-container{position:relative}.dgrid-header .dgrid-cell{overflow:hidden}.dgrid-spacer-row{height:0}.dgrid-spacer-row th{padding-top:0;padding-bottom:0;border-top:none;border-bottom:none}.dgrid-status{padding:2px}.dgrid-pagination .dgrid-status{float:left}.dgrid-pagination .dgrid-navigation,.dgrid-pagination .dgrid-page-size{float:right}.dgrid-navigation .dgrid-page-link{cursor:pointer;font-weight:700;text-decoration:none;color:inherit;padding:0 4px}.dgrid-first,.dgrid-last,.dgrid-next,.dgrid-previous{font-size:130%}.dgrid-pagination .dgrid-page-disabled{color:#aaa;cursor:default}.dgrid-page-input{margin-top:1px;width:2em;text-align:center}.dgrid-page-size{margin:1px 4px 0}.dgrid-rtl-swap .dgrid-header-row{right:0;left:17px}.dgrid-rtl-swap .dgrid-header-scroll{left:0;right:auto}.dgrid-rtl .dgrid-cell{text-align:right}.dgrid-rtl .dgrid-sort-arrow{float:left;margin:0 5px 0 4px}.dgrid-rtl .ui-icon-triangle-1-e{background-position:-96px -16px}.dgrid-rtl .ui-icon-triangle-1-se{background-position:-80px -16px}.dgrid-rtl .dgrid-pagination .dgrid-status,.dgrid-rtl .dgrid-pagination .dgrid-page-size{float:right}.dgrid-rtl .dgrid-pagination .dgrid-navigation{float:left}.dgrid-rtl.dgrid-autoheight .dgrid-header{left:0}.dgrid_Table .placeholder{border:none;padding:0;overflow:hidden}.dgrid_Table .dgrid-fakeline{border:0px;border-bottom:1px solid rgb(221,221,221);margin:2px -3px}.dgrid_Table .dgrid-sortable .dgrid-sort-arrow.ui-icon{margin:0}")),document.head.appendChild(i)}}catch(o){console.error("vite-plugin-css-injected-by-js",o)}}();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hpcc-js/dgrid",
3
- "version": "3.5.1",
3
+ "version": "3.5.2",
4
4
  "description": "hpcc-js - Viz DGrid",
5
5
  "type": "module",
6
6
  "main": "./dist/index.umd.cjs",
@@ -37,15 +37,15 @@
37
37
  "update-major": "npx --yes npm-check-updates -u"
38
38
  },
39
39
  "dependencies": {
40
- "@hpcc-js/common": "^3.5.1",
41
- "@hpcc-js/util": "^3.4.1"
40
+ "@hpcc-js/common": "^3.5.2",
41
+ "@hpcc-js/util": "^3.4.2"
42
42
  },
43
43
  "peerDependencies": {
44
44
  "@hpcc-js/dgrid-shim": "^3.1.0"
45
45
  },
46
46
  "devDependencies": {
47
- "@hpcc-js/ddl-shim": "^3.2.1",
48
- "@hpcc-js/esbuild-plugins": "^1.6.1",
47
+ "@hpcc-js/ddl-shim": "^3.2.2",
48
+ "@hpcc-js/esbuild-plugins": "^1.7.0",
49
49
  "@testing-library/dom": "10.4.1",
50
50
  "d3-format": "^1",
51
51
  "d3-selection": "^1"
@@ -61,5 +61,5 @@
61
61
  "url": "https://github.com/hpcc-systems/Visualization/issues"
62
62
  },
63
63
  "homepage": "https://github.com/hpcc-systems/Visualization",
64
- "gitHead": "d93d09e45945a39ab056bae20a3dcca3c918cd82"
64
+ "gitHead": "5e5fc8d746e6a42c58da2ec4f55f2f7cbaeff611"
65
65
  }