@hpcc-js/dgrid 3.2.10 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,14 +1,23 @@
1
1
  var __defProp = Object.defineProperty;
2
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: !0, configurable: !0, writable: !0, value }) : obj[key] = value;
3
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key != "symbol" ? key + "" : key, value);
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
4
3
  import { HTMLWidget, Palette, PropertyExt, format, select } from "@hpcc-js/common";
5
4
  import { hashSum } from "@hpcc-js/util";
6
- const PKG_NAME = "@hpcc-js/dgrid", PKG_VERSION = "3.1.0", BUILD_VERSION = "3.2.1";
7
- 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');
8
- const Deferred = globalThis["@hpcc-js/dgrid-shim"].Deferred, Memory = globalThis["@hpcc-js/dgrid-shim"].Memory, QueryResults = globalThis["@hpcc-js/dgrid-shim"].QueryResults, Grid = globalThis["@hpcc-js/dgrid-shim"].Grid, PagingGrid = globalThis["@hpcc-js/dgrid-shim"].PagingGrid, domConstruct = globalThis["@hpcc-js/dgrid-shim"].domConstruct;
5
+ const PKG_NAME = "@hpcc-js/dgrid";
6
+ const PKG_VERSION = "3.1.0";
7
+ const BUILD_VERSION = "3.2.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;
9
17
  function entitiesEncode(str) {
10
18
  return String(str).replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
11
19
  }
20
+ __name(entitiesEncode, "entitiesEncode");
12
21
  function safeEncode(item) {
13
22
  switch (Object.prototype.toString.call(item)) {
14
23
  case "[object Undefined]":
@@ -22,100 +31,143 @@ function safeEncode(item) {
22
31
  }
23
32
  return item;
24
33
  }
34
+ __name(safeEncode, "safeEncode");
25
35
  function isArray(obj) {
26
36
  return obj instanceof Array;
27
37
  }
28
- const LINE_SPLITTER = "<br><hr class='dgrid-fakeline'>", LINE_SPLITTER2 = "<br><hr class='dgrid-fakeline' style='visibility: hidden'>";
29
- class RowFormatter {
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 {
30
42
  constructor(columns, _renderHtml) {
31
- __publicField(this, "_columns");
32
- __publicField(this, "_flattenedColumns", []);
33
- __publicField(this, "_columnIdx", {});
34
- __publicField(this, "_formattedRow", {});
35
- this._renderHtml = _renderHtml, this._columns = columns, this.flattenColumns(columns);
36
- }
43
+ this._renderHtml = _renderHtml;
44
+ this._columns = columns;
45
+ this.flattenColumns(columns);
46
+ }
47
+ _columns;
48
+ _flattenedColumns = [];
49
+ _columnIdx = {};
50
+ _formattedRow = {};
37
51
  flattenColumns(columns) {
38
- for (const column of columns)
52
+ for (const column of columns) {
39
53
  this.flattenColumn(column);
54
+ }
40
55
  }
41
56
  flattenColumn(column) {
42
- if (column.children)
57
+ if (column.children) {
43
58
  for (const childColumn of column.children) this.flattenColumn(childColumn);
44
- else
45
- this._columnIdx[column.field] = this._flattenedColumns.length, this._flattenedColumns.push(column.field);
59
+ } else {
60
+ this._columnIdx[column.field] = this._flattenedColumns.length;
61
+ this._flattenedColumns.push(column.field);
62
+ }
46
63
  }
47
64
  format(row) {
48
- return this._formattedRow = {}, this.formatRow(this._columns, row), this.row();
65
+ this._formattedRow = {};
66
+ this.formatRow(this._columns, row);
67
+ return this.row();
49
68
  }
50
69
  calcDepth(columns, row) {
51
70
  let maxChildDepth = 1;
52
- for (const column of columns)
71
+ for (const column of columns) {
53
72
  if (column.children && row[column.leafID]) {
54
- let childDepth = 0, childRows = [];
55
- isArray(row[column.leafID]) ? childRows = row[column.leafID] : isArray(row[column.leafID].Row) && (childRows = row[column.leafID].Row);
56
- for (const childRow of childRows)
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) {
57
81
  childDepth += this.calcDepth(column.children, childRow);
82
+ }
58
83
  maxChildDepth = Math.max(maxChildDepth, childDepth);
59
84
  }
85
+ }
60
86
  return maxChildDepth;
61
87
  }
62
88
  formatCell(column, cell, maxChildDepth) {
63
89
  if (column.children) {
64
90
  let childDepth = 0;
65
- isArray(cell) || (isArray(cell.Row) ? cell = cell.Row : cell = [cell]);
66
- for (const row of cell)
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) {
67
99
  childDepth = Math.max(childDepth, this.formatRow(column.children, row));
68
- } else if (column.isSet && (cell = JSON.stringify(cell.Item)), this._formattedRow[column.field] === void 0 ? this._formattedRow[column.field] = "" + (cell === void 0 ? "" : this._renderHtml ? cell : safeEncode(cell)) : (this._formattedRow[column.field] += LINE_SPLITTER, this._formattedRow[column.field] += "" + (cell === void 0 ? "" : this._renderHtml ? cell : safeEncode(cell))), maxChildDepth > 1) {
69
- const paddingArr = [];
70
- paddingArr.length = maxChildDepth;
71
- const padding = paddingArr.join(LINE_SPLITTER2);
72
- this._formattedRow[column.field] += padding;
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
+ }
73
117
  }
74
118
  }
75
119
  formatRow(columns, row = [], rowIdx = 0) {
76
120
  const maxChildDepth = this.calcDepth(columns, row);
77
- for (const column of columns)
121
+ for (const column of columns) {
78
122
  this.formatCell(column, row[column.leafID], maxChildDepth);
123
+ }
79
124
  return maxChildDepth;
80
125
  }
81
126
  row() {
82
127
  const retVal = {};
83
- for (const column of this._flattenedColumns)
128
+ for (const column of this._flattenedColumns) {
84
129
  retVal[column] = this._formattedRow[column];
130
+ }
85
131
  return retVal;
86
132
  }
87
- }
88
- class DBStore {
133
+ };
134
+ __name(_RowFormatter, "RowFormatter");
135
+ let RowFormatter = _RowFormatter;
136
+ const _DBStore = class _DBStore {
137
+ _db;
138
+ Model;
139
+ idProperty;
89
140
  constructor(db) {
90
- __publicField(this, "_db");
91
- __publicField(this, "Model");
92
- __publicField(this, "idProperty");
93
- __publicField(this, "_renderHtml", !0);
94
141
  this._db = db;
95
142
  }
143
+ _renderHtml = true;
96
144
  renderHtml(_) {
97
145
  this._renderHtml = _;
98
146
  }
99
147
  db2Columns(sortable, fields, prefix = "", formatter, renderCell) {
100
- return fields ? fields.map((field, idx) => {
148
+ if (!fields) return [];
149
+ return fields.map((field, idx) => {
150
+ const label = field.label();
101
151
  const column = {
102
- label: field.label(),
152
+ label,
103
153
  leafID: "" + idx,
104
154
  field: prefix + idx,
105
155
  idx,
106
156
  className: "resultGridCell",
107
157
  sortable,
108
- isSet: !1
158
+ isSet: false
109
159
  };
110
160
  switch (field.type()) {
111
161
  case "nested":
112
- column.children = this.db2Columns(!1, field.children(), prefix + idx + "_", formatter), column.sortable = !1;
162
+ column.children = this.db2Columns(false, field.children(), prefix + idx + "_", formatter);
163
+ column.sortable = false;
113
164
  break;
114
165
  default:
115
- column.formatter = formatter, column.renderCell = renderCell;
166
+ column.formatter = formatter;
167
+ column.renderCell = renderCell;
116
168
  }
117
169
  return column;
118
- }) : [];
170
+ });
119
171
  }
120
172
  columns(sortable, formatter, renderCell) {
121
173
  return this.db2Columns(sortable, this._db.fields(), "", formatter, renderCell);
@@ -127,118 +179,169 @@ class DBStore {
127
179
  return this._db.row(row + 1);
128
180
  }
129
181
  _fetchRange(opts) {
130
- const rowFormatter = new RowFormatter(this.columns(!1), this._renderHtml);
131
- return this._db.data().slice(opts.start, opts.end).map((row, idx) => ({
132
- ...rowFormatter.format(row),
133
- __hpcc_id: opts.start + idx,
134
- __origRow: row
135
- }));
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
+ });
136
191
  }
137
192
  fetchRange(opts) {
138
- const data = this._fetchRange(opts), retVal = new Deferred();
139
- return retVal.totalLength = new Deferred(), retVal.resolve(data), retVal.totalLength.resolve(this._db.length() - 1), retVal;
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;
140
199
  }
141
200
  sort(opts) {
142
- return this._db.data().sort((l, r) => {
201
+ this._db.data().sort((l, r) => {
143
202
  for (const item of opts) {
144
203
  const idx = item.property;
145
204
  if (l[idx] === void 0 && r[idx] !== void 0 || l[idx] < r[idx]) return item.descending ? 1 : -1;
146
205
  if (l[idx] !== void 0 && r[idx] === void 0 || l[idx] > r[idx]) return item.descending ? -1 : 1;
147
206
  }
148
207
  return 0;
149
- }), this;
208
+ });
209
+ return this;
150
210
  }
151
- }
152
- class Common extends HTMLWidget {
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;
153
223
  constructor() {
154
224
  super();
155
- __publicField(this, "_columns", []);
156
- __publicField(this, "_store", new DBStore(this._db));
157
- __publicField(this, "_dgridDiv");
158
- __publicField(this, "_dgrid");
159
- __publicField(this, "_prevPaging");
160
- __publicField(this, "_prevSortBy");
161
- __publicField(this, "_prevSortByDescending");
162
- __publicField(this, "_prevMultiSelect");
163
- __publicField(this, "_supressEvents");
164
225
  this._tag = "div";
165
226
  }
166
227
  formatSortBy() {
167
228
  const idx = this.columns().indexOf(this.sortBy());
168
229
  return idx >= 0 ? [{ property: idx.toString(), descending: this.sortByDescending() }] : void 0;
169
230
  }
231
+ _supressEvents;
170
232
  selection(_) {
171
- var _a;
172
233
  if (!arguments.length) {
173
234
  const retVal = [];
174
- for (const id in this._dgrid.selection)
235
+ for (const id in this._dgrid.selection) {
175
236
  if (this._dgrid.selection[id]) {
176
237
  const storeItem = this._store.get(+id);
177
238
  retVal.push(this.rowToObj(storeItem));
178
239
  }
240
+ }
179
241
  return retVal;
180
242
  }
181
- this._supressEvents = !0, (_a = this._dgrid) == null || _a.clearSelection();
182
- let first = !0;
243
+ this._supressEvents = true;
244
+ this._dgrid?.clearSelection();
245
+ let first = true;
183
246
  this.data().forEach((row, idx) => {
184
- var _a2, _b;
185
247
  if (_.indexOf(row) >= 0) {
186
- const row2 = (_a2 = this._dgrid) == null ? void 0 : _a2.row(idx);
187
- row2.element && first && (first = !1, row2.element.scrollIntoView()), (_b = this._dgrid) == null || _b.select(idx);
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);
188
254
  }
189
- }), this._supressEvents = !1;
255
+ });
256
+ this._supressEvents = false;
190
257
  }
191
258
  enter(domNode, element) {
192
- super.enter(domNode, element), this._dgridDiv = element.append("div").attr("class", "flat");
259
+ super.enter(domNode, element);
260
+ this._dgridDiv = element.append("div").attr("class", "flat");
193
261
  }
194
262
  update(domNode, element) {
195
- super.update(domNode, element), 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 = element.append("div").attr("class", "flat")), this._dgrid = new (this._prevPaging ? PagingGrid : Grid)({
196
- columns: this._columns,
197
- collection: this._store,
198
- sort: this.formatSortBy(),
199
- selectionMode: this.multiSelect() ? "extended" : "single",
200
- deselectOnRefresh: !0,
201
- cellNavigation: !1,
202
- pagingLinks: 1,
203
- pagingTextBox: !0,
204
- previousNextArrows: !0,
205
- firstLastArrows: !0,
206
- rowsPerPage: this.pageSize(),
207
- pageSizeOptions: [1, 10, 25, 50, 100, 1e3]
208
- }, this._dgridDiv.node()), this._dgrid.on("dgrid-select", (evt) => {
209
- this._supressEvents || evt.rows && evt.rows.length && evt.rows[0].data && this.click(this.rowToObj(evt.rows[0].data.__origRow), "", !0, { selection: this.selection() });
210
- }), this._dgrid.on("dgrid-deselect", (evt) => {
211
- this._supressEvents || evt.rows && evt.rows.length && evt.rows[0].data && this.click(this.rowToObj(evt.rows[0].data.__origRow), "", !1, { selection: this.selection() });
212
- }), 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();
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();
213
306
  }
214
307
  exit(domNode, element) {
215
- delete this._prevPaging, this._dgrid && (this._dgrid.destroy(), delete this._dgrid), super.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);
216
314
  }
217
315
  click(row, col, sel, more) {
218
316
  }
219
- }
317
+ };
318
+ __name(_Common, "Common");
319
+ let Common = _Common;
220
320
  Common.prototype._class += " dgrid_Common";
221
321
  Common.prototype.publish("noDataMessage", "...empty...", "string", "No Data Message");
222
322
  Common.prototype.publish("loadingMessage", "loading...", "string", "Loading Message");
223
- Common.prototype.publish("pagination", !1, "boolean", "Enable paging");
323
+ Common.prototype.publish("pagination", false, "boolean", "Enable paging");
224
324
  Common.prototype.publish("pageSize", 25, "number", "Page size");
225
- Common.prototype.publish("sortable", !1, "boolean", "Enable sorting by column");
325
+ Common.prototype.publish("sortable", false, "boolean", "Enable sorting by column");
226
326
  Common.prototype.publish("sortBy", null, "set", "Default 'sort by' Column ID", function() {
227
327
  return this.columns();
228
- }, { optional: !0 });
229
- Common.prototype.publish("sortByDescending", !1, "boolean", "Default 'sort by' descending", void 0, { disable: (self) => !self.sortBy() });
230
- Common.prototype.publish("multiSelect", !1, "boolean", "Multiple Selection");
231
- Common.prototype.publish("renderHtml", !0, "boolean", "Render HTML");
232
- class DatasourceCache {
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 = {};
233
336
  constructor(datasource) {
234
- __publicField(this, "_datasource");
235
- __publicField(this, "_prevHash");
236
- __publicField(this, "_fetchCache", {});
237
337
  this._datasource = datasource;
238
338
  }
239
339
  validateCache() {
240
340
  const hash = this.hash();
241
- this._prevHash !== hash && (this._prevHash = hash, this._fetchCache = {});
341
+ if (this._prevHash !== hash) {
342
+ this._prevHash = hash;
343
+ this._fetchCache = {};
344
+ }
242
345
  }
243
346
  id() {
244
347
  return this._datasource.id();
@@ -259,66 +362,94 @@ class DatasourceCache {
259
362
  this.validateCache();
260
363
  const cacheID = `${from}->${count}`;
261
364
  let retVal = this._fetchCache[cacheID];
262
- return retVal || (retVal = this._datasource.fetch(from, count), this._fetchCache[cacheID] = retVal), retVal;
365
+ if (!retVal) {
366
+ retVal = this._datasource.fetch(from, count);
367
+ this._fetchCache[cacheID] = retVal;
368
+ }
369
+ return retVal;
263
370
  }
264
- }
265
- class DatasourceStore {
371
+ };
372
+ __name(_DatasourceCache, "DatasourceCache");
373
+ let DatasourceCache = _DatasourceCache;
374
+ const _DatasourceStore = class _DatasourceStore {
375
+ _datasource;
376
+ _columnsIdx = {};
377
+ _columns;
378
+ rowFormatter;
266
379
  constructor(datasource, renderHtml) {
267
- __publicField(this, "_datasource");
268
- __publicField(this, "_columnsIdx", {});
269
- __publicField(this, "_columns");
270
- __publicField(this, "rowFormatter");
271
- this._datasource = new DatasourceCache(datasource), this._columnsIdx = {}, this._columns = this.db2Columns(this._datasource.outFields()).map((column, idx) => (this._columnsIdx[column.field] = idx, column)), this.rowFormatter = new RowFormatter(this._columns, 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);
272
387
  }
273
388
  columns() {
274
389
  return this._columns;
275
390
  }
276
391
  db2Columns(fields, prefix = "") {
277
- return fields ? fields.map((field, idx) => {
392
+ if (!fields) return [];
393
+ return fields.map((field, idx) => {
278
394
  const column = {
279
395
  field: prefix + field.id,
280
396
  leafID: field.id,
281
397
  label: field.id,
282
398
  idx,
283
399
  className: "resultGridCell",
284
- sortable: !0,
285
- isSet: !1
400
+ sortable: true,
401
+ isSet: false
286
402
  };
287
- return field.type === "dataset" ? column.children = this.db2Columns(field.children, prefix + field.id + "_") : column.formatter = (cell, row) => {
288
- switch (typeof cell) {
289
- case "string":
290
- return cell.replace(/\t/g, "&nbsp;&nbsp;&nbsp;&nbsp;");
291
- }
292
- return cell;
293
- }, column;
294
- }) : [];
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
+ });
295
416
  }
296
417
  getIdentity(row) {
297
418
  return row.__hpcc_id;
298
419
  }
299
420
  _request(start, end) {
300
- return this._datasource ? this._datasource.fetch(start, end - start).then((response) => ({
301
- totalLength: this._datasource.total(),
302
- data: response.map((row, idx) => {
303
- const formattedRow = this.rowFormatter.format(row);
304
- return formattedRow.__hpcc_id = start + idx, formattedRow.__origRow = row, formattedRow;
305
- })
306
- })) : Promise.resolve({ totalLength: 0, data: [] });
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;
307
434
  }
308
435
  fetchRange(options) {
309
436
  const retVal = new Deferred();
310
- return this._request(options.start, options.end).then((response) => retVal.resolve(response)), new QueryResults(retVal.then((response) => response.data), {
437
+ this._request(options.start, options.end).then((response) => retVal.resolve(response));
438
+ return new QueryResults(retVal.then((response) => response.data), {
311
439
  totalLength: retVal.then((response) => response.totalLength)
312
440
  });
313
441
  }
314
- }
315
- class DatasourceTable extends Common {
442
+ };
443
+ __name(_DatasourceStore, "DatasourceStore");
444
+ let DatasourceStore = _DatasourceStore;
445
+ const _DatasourceTable = class _DatasourceTable extends Common {
446
+ _prevDatasource;
316
447
  constructor() {
317
448
  super();
318
- __publicField(this, "_prevDatasource");
319
449
  }
320
450
  invalidate() {
321
- return delete this._prevDatasource, this;
451
+ delete this._prevDatasource;
452
+ return this;
322
453
  }
323
454
  enter(domNode, element) {
324
455
  super.enter(domNode, element);
@@ -328,28 +459,45 @@ class DatasourceTable extends Common {
328
459
  }
329
460
  render(callback) {
330
461
  return super.render((w) => {
331
- if (this._prevDatasource !== this.datasource())
332
- if (this._dgrid.set("collection", new Memory()), this._dgrid.set("columns", []), this._prevDatasource = this.datasource(), this._prevDatasource) {
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) {
333
467
  const store = new DatasourceStore(this._prevDatasource, this.renderHtml());
334
- this._dgrid.set("columns", store.columns()), this._dgrid.set("collection", store), callback && callback(w);
335
- } else
336
- callback && callback(w);
337
- else
338
- callback && callback(w);
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
+ }
339
483
  });
340
484
  }
341
485
  click(row, col, sel) {
342
486
  }
343
- }
487
+ };
488
+ __name(_DatasourceTable, "DatasourceTable");
489
+ let DatasourceTable = _DatasourceTable;
344
490
  DatasourceTable.prototype._class += " dgrid_DatasourceTable";
345
491
  DatasourceTable.prototype.publish("datasource", null, "object", "Datasource");
346
- class ColumnFormat extends PropertyExt {
492
+ const _ColumnFormat = class _ColumnFormat extends PropertyExt {
493
+ _owner;
347
494
  constructor() {
348
495
  super();
349
- __publicField(this, "_owner");
350
496
  }
351
497
  owner(_) {
352
- return arguments.length ? (this._owner = _, this) : this._owner;
498
+ if (!arguments.length) return this._owner;
499
+ this._owner = _;
500
+ return this;
353
501
  }
354
502
  valid() {
355
503
  return !!this.column();
@@ -359,50 +507,65 @@ class ColumnFormat extends PropertyExt {
359
507
  if (this.valid() && this.format()) {
360
508
  const numberFormatter = format(this.format());
361
509
  return function(cell, row) {
362
- return typeof cell == "number" ? numberFormatter(cell) : defaultFormatter.call(this, cell, row);
510
+ if (typeof cell === "number")
511
+ return numberFormatter(cell);
512
+ return defaultFormatter.call(this, cell, row);
363
513
  };
364
514
  }
365
515
  return defaultFormatter;
366
516
  }
367
517
  renderCellFunc() {
368
- const defaultRenderCell = this._owner.renderCellFunc(), defaultFormatter = this.formatterFunc();
518
+ const defaultRenderCell = this._owner.renderCellFunc();
519
+ const defaultFormatter = this.formatterFunc();
369
520
  if (this.valid() && this.paletteID()) {
370
- const columns = this._owner.columns(), palette = Palette.rainbow(this.paletteID()), min = this.min(), max = this.max(), valueColIdx = this.valueColumn() ? columns.indexOf(this.valueColumn()) : void 0;
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;
371
526
  return function(row, cell, cellElement) {
372
- defaultRenderCell && defaultRenderCell.call(this, row, cell, cellElement);
373
- const value = valueColIdx ? row.__origRow[valueColIdx] : cell, background = palette(value, min, max), cellText = defaultFormatter.call(this, cell, row);
374
- select(cellElement).style("background", background).style("color", background && Palette.textColor(background)).text((cellText == null ? void 0 : cellText.html) ?? cellText ?? cell);
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);
375
534
  };
376
535
  }
377
536
  return defaultRenderCell;
378
537
  }
379
- }
538
+ };
539
+ __name(_ColumnFormat, "ColumnFormat");
540
+ let ColumnFormat = _ColumnFormat;
380
541
  ColumnFormat.prototype._class += " dgrid_Table.ColumnFormat";
381
542
  ColumnFormat.prototype.publish("column", null, "set", "Column", function() {
382
543
  return this._owner.columns();
383
- }, { optional: !0 });
384
- ColumnFormat.prototype.publish("width", null, "number", "Width", null, { optional: !0 });
385
- ColumnFormat.prototype.publish("format", null, "string", "Format (d3-format)", null, { optional: !0 });
386
- ColumnFormat.prototype.publish("paletteID", null, "set", "Color palette for this widget", ["", ...Palette.rainbow("default").switch()], { optional: !0 });
387
- ColumnFormat.prototype.publish("min", 0, "number", "Min Value", null, { disable: (cf) => !cf.paletteID() });
388
- ColumnFormat.prototype.publish("max", 100, "number", "Max Value", null, { disable: (cf) => !cf.paletteID() });
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") });
389
550
  ColumnFormat.prototype.publish("valueColumn", null, "set", "Column", function() {
390
551
  return this._owner.columns();
391
- }, { optional: !0, disable: (cf) => !cf.paletteID() });
392
- class Table extends Common {
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;
393
558
  constructor() {
394
559
  super();
395
- __publicField(this, "_prevColsHash");
396
- __publicField(this, "_prevFieldsHash");
397
- __publicField(this, "_colsRefresh", !1);
398
- __publicField(this, "_dataRefresh", !1);
399
- __publicField(this, "_prevHash");
400
560
  }
401
561
  fields(_) {
402
562
  const retVal = super.fields.apply(this, arguments);
403
563
  if (arguments.length) {
404
564
  const hash = hashSum({ _ });
405
- this._prevFieldsHash !== hash && (this._prevFieldsHash = hash, this._colsRefresh = !0);
565
+ if (this._prevFieldsHash !== hash) {
566
+ this._prevFieldsHash = hash;
567
+ this._colsRefresh = true;
568
+ }
406
569
  }
407
570
  return retVal;
408
571
  }
@@ -410,53 +573,85 @@ class Table extends Common {
410
573
  const retVal = super.columns.apply(this, arguments);
411
574
  if (arguments.length) {
412
575
  const hash = hashSum({ _ });
413
- this._prevColsHash !== hash && (this._prevColsHash = hash, this._colsRefresh = !0);
576
+ if (this._prevColsHash !== hash) {
577
+ this._prevColsHash = hash;
578
+ this._colsRefresh = true;
579
+ }
414
580
  }
415
581
  return retVal;
416
582
  }
417
583
  data(_) {
418
584
  const retVal = super.data.apply(this, arguments);
419
- return arguments.length && (this._dataRefresh = !0), retVal;
585
+ if (arguments.length) {
586
+ this._dataRefresh = true;
587
+ }
588
+ return retVal;
420
589
  }
421
590
  enter(domNode, element) {
422
591
  super.enter(domNode, element);
423
592
  }
424
593
  guessWidth(columns, data) {
425
594
  const sortablePadding = this.sortable() ? 12 : 0;
426
- for (const column of columns)
595
+ for (const column of columns) {
427
596
  if (column.children) {
428
597
  let sampleData = [];
429
- for (let i = 0; i < Math.min(3, data.length); ++i)
598
+ for (let i = 0; i < Math.min(3, data.length); ++i) {
430
599
  sampleData = sampleData.concat(data[i][column.idx]);
600
+ }
431
601
  this.guessWidth(column.children, sampleData);
432
- } else
602
+ } else {
433
603
  column.width = data.reduce((prevVal, row) => {
434
604
  const cell = ("" + row[column.idx]).trim();
435
605
  return Math.max(prevVal, this.textSize(cell).width);
436
- }, this.textSize("" + column.label, void 0, void 0, !0).width + sortablePadding) + 8;
606
+ }, this.textSize("" + column.label, void 0, void 0, true).width + sortablePadding) + 8;
607
+ }
608
+ }
437
609
  }
610
+ _prevHash;
438
611
  update(domNode, element) {
439
612
  super.update(domNode, element);
440
613
  const hash = this.hashSum();
441
- if (this._prevHash !== hash && (this._prevHash = hash, this._colsRefresh = !0), this._colsRefresh) {
442
- switch (this._columns = this._store.columns(this.sortable(), this.formatterFunc(), this.renderCellFunc()), this.columnWidth()) {
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()) {
443
621
  case "auto":
444
622
  const tenRows = this.data().filter((row, idx) => idx < 10);
445
623
  this.guessWidth(this._columns, tenRows);
446
624
  break;
447
625
  }
448
626
  const columns = this.columns();
449
- for (const columnFormat of this.columnFormats())
627
+ for (const columnFormat of this.columnFormats()) {
450
628
  if (columnFormat.valid()) {
451
629
  const colIdx = columns.indexOf(columnFormat.column());
452
- this._columns[colIdx] && (this._columns[colIdx].hidden = columnFormat.width() === 0, this._columns[colIdx].width = columnFormat.width() || this._columns[colIdx].width, this._columns[colIdx].formatter = columnFormat.formatterFunc(), this._columns[colIdx].renderCell = columnFormat.renderCellFunc());
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
+ }
453
636
  }
454
- this._dgrid.set("columns", this._columns.filter((col) => !col.hidden)), this._colsRefresh = !1;
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;
455
649
  }
456
- (this._colsRefresh || this._dataRefresh) && (this._colsRefresh ? this._dgrid.refresh({}) : this._dgrid.refresh(), this._colsRefresh = !1, this._dataRefresh = !1);
457
650
  }
458
651
  exit(domNode, element) {
459
- delete this._prevColsHash, delete this._prevFieldsHash, super.exit(domNode, element);
652
+ delete this._prevColsHash;
653
+ delete this._prevFieldsHash;
654
+ super.exit(domNode, element);
460
655
  }
461
656
  // Cell ---
462
657
  formatterFunc() {
@@ -473,11 +668,14 @@ class Table extends Common {
473
668
  };
474
669
  }
475
670
  renderCellFunc() {
671
+ return void 0;
476
672
  }
477
673
  // Events ---
478
674
  click(row, col, sel) {
479
675
  }
480
- }
676
+ };
677
+ __name(_Table, "Table");
678
+ let Table = _Table;
481
679
  Table.prototype._class += " dgrid_Table";
482
680
  Table.prototype.publish("columnWidth", "auto", "set", "Default column width", ["auto", "none"]);
483
681
  Table.prototype.publish("columnFormats", [], "propertyArray", "Source Columns", null, { autoExpand: ColumnFormat });
@@ -501,4 +699,4 @@ export {
501
699
  domConstruct
502
700
  };
503
701
  //# sourceMappingURL=index.js.map
504
- (function(){"use strict";try{if(typeof document<"u"){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;bottom:0;left:0;right:0;top: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)}})();
702
+ !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)}}();