@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 +380 -182
- package/dist/index.js.map +1 -1
- package/dist/index.umd.cjs +2 -2
- package/dist/index.umd.cjs.map +1 -1
- package/package.json +6 -6
package/dist/index.js
CHANGED
|
@@ -1,14 +1,23 @@
|
|
|
1
1
|
var __defProp = Object.defineProperty;
|
|
2
|
-
var
|
|
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"
|
|
7
|
-
|
|
8
|
-
const
|
|
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, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """);
|
|
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
|
-
|
|
29
|
-
|
|
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
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
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
|
|
59
|
+
} else {
|
|
60
|
+
this._columnIdx[column.field] = this._flattenedColumns.length;
|
|
61
|
+
this._flattenedColumns.push(column.field);
|
|
62
|
+
}
|
|
46
63
|
}
|
|
47
64
|
format(row) {
|
|
48
|
-
|
|
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
|
|
55
|
-
|
|
56
|
-
|
|
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
|
-
|
|
66
|
-
|
|
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
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
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
|
-
|
|
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
|
-
|
|
148
|
+
if (!fields) return [];
|
|
149
|
+
return fields.map((field, idx) => {
|
|
150
|
+
const label = field.label();
|
|
101
151
|
const column = {
|
|
102
|
-
label
|
|
152
|
+
label,
|
|
103
153
|
leafID: "" + idx,
|
|
104
154
|
field: prefix + idx,
|
|
105
155
|
idx,
|
|
106
156
|
className: "resultGridCell",
|
|
107
157
|
sortable,
|
|
108
|
-
isSet:
|
|
158
|
+
isSet: false
|
|
109
159
|
};
|
|
110
160
|
switch (field.type()) {
|
|
111
161
|
case "nested":
|
|
112
|
-
column.children = this.db2Columns(
|
|
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
|
|
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(
|
|
131
|
-
return this._db.data().slice(opts.start, opts.end).map((row, idx) =>
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
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)
|
|
139
|
-
|
|
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
|
-
|
|
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
|
-
})
|
|
208
|
+
});
|
|
209
|
+
return this;
|
|
150
210
|
}
|
|
151
|
-
}
|
|
152
|
-
|
|
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 =
|
|
182
|
-
|
|
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 =
|
|
187
|
-
row2.element && first
|
|
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
|
-
})
|
|
255
|
+
});
|
|
256
|
+
this._supressEvents = false;
|
|
190
257
|
}
|
|
191
258
|
enter(domNode, element) {
|
|
192
|
-
super.enter(domNode, element)
|
|
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)
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
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
|
|
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",
|
|
323
|
+
Common.prototype.publish("pagination", false, "boolean", "Enable paging");
|
|
224
324
|
Common.prototype.publish("pageSize", 25, "number", "Page size");
|
|
225
|
-
Common.prototype.publish("sortable",
|
|
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:
|
|
229
|
-
Common.prototype.publish("sortByDescending",
|
|
230
|
-
Common.prototype.publish("multiSelect",
|
|
231
|
-
Common.prototype.publish("renderHtml",
|
|
232
|
-
class
|
|
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
|
-
|
|
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
|
-
|
|
365
|
+
if (!retVal) {
|
|
366
|
+
retVal = this._datasource.fetch(from, count);
|
|
367
|
+
this._fetchCache[cacheID] = retVal;
|
|
368
|
+
}
|
|
369
|
+
return retVal;
|
|
263
370
|
}
|
|
264
|
-
}
|
|
265
|
-
|
|
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
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
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
|
-
|
|
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:
|
|
285
|
-
isSet:
|
|
400
|
+
sortable: true,
|
|
401
|
+
isSet: false
|
|
286
402
|
};
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
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, " ");
|
|
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
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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())
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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()
|
|
518
|
+
const defaultRenderCell = this._owner.renderCellFunc();
|
|
519
|
+
const defaultFormatter = this.formatterFunc();
|
|
369
520
|
if (this.valid() && this.paletteID()) {
|
|
370
|
-
const columns = this._owner.columns()
|
|
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
|
-
|
|
373
|
-
|
|
374
|
-
|
|
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:
|
|
384
|
-
ColumnFormat.prototype.publish("width", null, "number", "Width", null, { optional:
|
|
385
|
-
ColumnFormat.prototype.publish("format", null, "string", "Format (d3-format)", null, { optional:
|
|
386
|
-
ColumnFormat.prototype.publish("paletteID", null, "set", "Color palette for this widget", ["", ...Palette.rainbow("default").switch()], { optional:
|
|
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:
|
|
392
|
-
class
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
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
|
|
442
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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,iVBORw0KGgoAAAANSUhEUgAAAQAAAADwCAMAAADYSUr5AAAA7VBMVEUkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiTww4gUAAAATnRSTlMAGBAyBAhQv4OZLiJUcEBmYBoSzQwgPBZCSEoeWiYwUiyFNIeBw2rJz8c4RBy9uXyrtaWNqa2zKP2fJO8KBgKPo2KVoa9s351GPm5+kWho0kj9AAAPhUlEQVR4nO1djWLbthEGyUiq5YSSLXtp7FpLOmfzkmxr126tmi2p03RJ1/Xe/3EGgARxPyAgRbIk2/hkSz4CJO4+HsE7AJSVysjI2AMUUOxahZ2iANhzBtZWr4BoIRSYAVN5u4QwDwQDRbcwfUi5KS3wFuDmFnQLa4Dtb//cqktwD5QEFFwfUs7PoCCA7y4bEJVFizcIob8KmhAplwwqVjt+9FBl3uINQniwEiryEyw9JHqGpQdEFNi+B4QQ7QOiHhysIPoAxUqxvdvvA9K42bsAv4S2fxfYOe57IJSRkZGRkZGxx7jxSHDHcRBXQMTyIjInBgHwBJ/bEx8PEANC+uhbpSSggCBAVODVabpI1S/k4WLZpTn6NpMhoX9Y40hxYERFpMcqUs4AloCtDQdID1YhnyXZ2hLjAYWiO9Dy1PDB7tPhIqLx+uMB8grZaR+Qxl2/C2RkZGRkZGRk7A7rBf7J0DR5/LUTjzUPIPSPGvQJiVJiB7kcQCiUOJrcFNtDZIf2xarQ3aGvLNxAVIFAabz90BFiBIlycTBhgWwOWCH0FLYHlPqwHaCvcIn2ZbosCevfPTRiFFcgvHukCjWwrc3GrGh1fsAof8EaUReKXkCB4/MzFNo97qLpFiKFYv/kNR5YQxQbQEofkZ2OuEOHqqT6gFTpru8CN7x/+jaZkZGRkZGRcV+x/rLUNcMMqUAscgnFocmpqkTzqymwVAPxfJ5PnIUUQOUKT04tEdWZyv3JCQSn96WS4pD97QfyW25A7NhSAbyhmVj0FEltA4vdiygBibXhoUYgykCUP7HwPTDeEqAIcHVMkZg7Zx4k0uFANs63hPQXCoRLAwdgGsr9Az7Qv7sgQGgg1aPl/BJLExBWgG4RFRLFImGmIquPC/klEGyCG0AuAXaJJC+B8FVe9NYQDEcXB8g6AQcjYJ1goJIggHWCrFR0S6kRHN5+4BzFi8NaoN35NRxUvL+JJdZr7PV4wK6fj8nIyMjIyNhr3OxdXAYq7FHZwB6bDSzSh4sF0utChqo0NAvaT1hLzXwFinmCzmeDucEQK18TTaQoFgP7bNC+RZ4OT4T6gQogDFYk+1QxQlj19QGSAWKiLYp8P0Ag1Gbz1ULfWHLg9iUnQNK5QQJcukm04blKLH2GgEJCY+HzXAZWCvHKco3Bp6MIaCjSXXRJyOxeqhnzEaF93MfFGW/O16ZvDL5TM4MJIjujz/cHypkQuuzRwWJ93BKdIt+wCRAPl9kpe2Ikkb2mFgGlxh/i40d3EHfdvoyMjIyMu43ylt/IAmGHnN5iIt7wKfbv01RAcJqFRl9lcjYQSnbQqKgC4fYOwSJt6N6trE0twZ9kN/PqNpTQeICvr4TLsDYC06U7BMjshS+v1/aT7IwQYD5LcgRQXMT2FrBfBLjZ6151jDElk9tPFfpUgk2yregusX25BJbwAFEfM+YI6vGAti4bTtizB+TjfQCrERyhKb2X8D6A9wX75P4t4neBYJeP6pdhg/gQl8MWvytzeSTjgOQBynQdh/iXKdxOrGJ/RkZGRsb9QmXihGr5+g8GGg9uTh+KoVZuNIzV+CwRucFBEyr1mVjx4irOxwM1BhirB6Q+2eNQi4eqR+aF6mELtoMzCR7V9RAFe/ZvQogNiyY8FPSUTFsLp8TeTmMui5mtw7bcaT0Yw2AA4wFRQIlkgq+1DQrNhkmoxS5Jq+u6bMAIGRECEANgXHTgWzwgBOhDH2l0oTQ4D8D5NMktBgNywAEMjo8rwATMZrPY7JGxBoJCkIBDQiAY09EGTUiBCWkUpISfGPR5AAwBfZiG2z7Ayc1yeKTxid39xBNwfHr4O0LA48ePFTvhYrF1r4tyAoz9n2MCqEuBtp/6GDR0oAYfG/R6wJExHYZHfhygsv7fEWCOj4bYmsP5A+pL4MkTfAnMlD4F+r3bobKvTyTA2P/w7PN+Agq2QW8piqMCpTBwenoKvX0AHGkGtP2YAPvTEWA7QUTAudn7/NxtOG46wWNmDtpBEkBzN7rBEvAFHp+YTB/q97qPAN4gHFqgBi8uLsC7qPCA6mg41G/+ErByPwEXDdoNxRhOx+M5jPEzQugS0ht+b1/Y3gEnYMAIAOIBE29/hIDucE8tmMsNOgK4B1RHFu4UCRlMHzv0xzcajcfdXWDs2h8TArBCkoDUJYDLmz6w7ip3BFS0ve5wTRwAn6keMA9I3QYbfSZ0DKbyt+7OXjGI1idPcfNyAyfAMlCrzaGqphYrxHocLHRJVycnfGUcbtT+jIyMjIw9x7Nn8fJSzG0TmFtO8rZT+XT3S3ub+tKJbbLd5diTVp50+zahyeHSslJ/YPrU0fuazrZO2CZ92/ZCCVXlGRiZKPJyPPRxyIFWeXLQBXJBKiq/3divEAN6ZwM200Qjm7EJBZeWm/PRWVCbYK7s7u2l4XaCz+lzgOfMfhMonXr7TWzeZb98dbgIzBT8Ub8eYYUqfZ4rVJ/MDbIDgPqTulJ/xvntWAtjIisqnwxOkGz0n077FARoY79GdA6HPE4rOy196NiMWHTZlSSApcOgXpy/fHV2joaNKu3ffsAnRcBf4K/6NcIG6tIxk3HyoXPjASqfUgXbYN5PzpL2njkR9QMjeDTVHDTCgRuxOegjoO0FvKzP/t/gmVdI24+G7NIe8JX6Wv3dDyldMA+4YB5wwTygtd+dwRqaTqrLb1l73zTSN52CNpnHuQOYPsDblybgxfkXh/oVtr+N1DEBJdhRJyd/Bd/q1z+cbNrD17iVKyajcnv9arhOkRPgsruuD6DmNPwpDNrLw2CoTgHni4yALr0L29+tiKAEIPn868ejx//8rpWP3OEOl5On9OwpcQm0MhafP/ey8f1uvDNIgGLQG8z4YO99ENgg95etwv4uYJYY8fUGHYH6j6fscHFZMftlAl9i+9XL73X3N/n+ZStOzfVfRvYXhrbdKOpEgVQTg/wsDuDD3kwOfQNMTJ5y+/ltUDWLunyxnRF46IqlBzGMY4X7inggREFioIyMjIyMHWCIB6ZNKAcXseo3vLTQTkVE7348dlwJJSz0+wLfmi8BhZqfw3D4ww/wHVLnEd5/fgYvXsDZ3MlsvYUbbnDjDZ3MN3TJG4+bxjAaDl8TBri9qxEw1ccao2wTNAMLHo2f+sjrXwb/9qHoYqgPMBXJTVfOpmrZH23y6uvo0LHSyY6fHGwKfHJlAuMFvObjDYrIqxBgQi20h7Hd/nYVLmno+eaNUm/eeH2GCuopntnhBJAlI2AHo9CCh1I1QxUdAbqqGY9BBLwyc3W4wYVhvY8A4BoIc1l5M7vnPWphZW9/Ses3n37y9a0uGqFwFQZsQQbd386DogpgEk+dzynsAZMJXq8+ns9NeukJ0PYrNATGGefJQlhkLo7DTXr+y3bNiOsDvrXTz/C2q1DXZH84iRNwrP88Nj+u2DjYEE6RBxD9Knj16ujVHC67A7422o02RwD3gB+t7EblWvu9geOFxSnd3ROmT+nJyQkhoPlsxVONc/3TEdBos+jtA+ZzcwHgTvD1cDjaYCcItA8w9i88A8b+mqSjc6Pvqd998QguEQPmQMeo23ODN86+p0/bn1buBkT6+oBhNZ/PYY4ZAHYb3PRd4LkZmPX68NRtMZn4ASvdA+qf0jMA5MP9eeg28Nug9QiLnj5A33U1MAES6xHAUNpz/9zFAYE1gqQDMT3G6xI9pwdw/aIgKoHCS1YGlRnSq9yCjdXjgN3j+N27YyROHxmuNAeNKPpYuXIyIyMjYy0M8eros59MF/PT2c602T7eA7zvhJ9dr/vzDjXaLp4Yc5+0wllzxzHv3gdmMMM7/CcQzKgVBqYTmFn+Z+mKm8J7k0A5F/jgCfjQ1WBhQyiOqD0lYuqBb+AyzMw9Ha2G3m6c8qQx+AlqnIceQp+Sb6i9UyQWbhr54+AjnZ0VzW2TAN0DmBT6PWmc6jDBE2PK2u+nF43dyP7Q0t1pOcX2fdRvH0mF2Q4JqN35rnHjVIeaXfIAVyUuw/aHCCiJy9iF5l1621zweI8KZrPZ9iJdb7DXJ3US0OSrtZ10imt7wHY7QesAzUMz1oZ3noB3qFJ/H18j97FYuw8QDN4oeKf30osvcSW2ExLo+VcbuAuo/sUIm8fMG9xocO3Ea19J9gFYivnHJ2KnyfovZlgW3v6ySx32abQiIyMjIyPjhlFDTLxpwIgFMnTp6A3g4IDKNY+stkwAMAoIAbasxBXqUWneSAWTMjt50lTqT29rFjvXohjsDNm2YPXDFlICmrJOZ3t6tHm8AiEAl0sCeLIIorIRt+cFbew/QRsoAXb4o1XSfoywzm0FTMAoYBNvLyFu8v8HpLBtD1iKgC17wHb7AI6d9wFbvguAIGTHd4E9wG7jgIyMjIyM+434c2R3HeV/Ffx6jtZu6ijl8h59T655jhR+rdHzDOP6beABCheb8O8/WFXeOyzgf5oAhVYnKxP7CwaAf1afJu8bSrhS6tdaXeGnrRenOqOlz9d6QwYnA/3TLd+GE7qe3chA5YF5DfY0vK3adfOX/gyNp2BW25MHdxAB9qvRiiP3/XpQQFGYDU4+Mi///XumXG8pjvaUAOsBGlf4jJt+YYEzeEzAdw06F19R3juM7D1wita86GR0CKfDHgLuXCc4Bri6vMLdfjMc4VNSUNsdodo2xu/1+Xl/K5+az8jIyMhYG/z5gJTMF1GtKq/a3rpyCvz5gJTMl9GtKq/a3rpyCmfQ4WwZmS+kXFVetb115ST48wEf/AGcfG1iw+tWbpbS2vJ3nQxcVr3lH3z5h972FUTLzYpOVk7l5hD+eYcYwDcAnewOotrZ4OtrPDucqi/LRX0/RR4qx7Nn4U8g+qjffvuN6Gf+nC85vwauHjaYyubqvWYKY4VEfSUMitdnBCT1Ue63R5439m+OgCn6DroAAaHPVQxKth/wkJgHmG8bmQMsT0D6EjDfvhVRKO3ywOQUgRA7nmL1uawZmHf1k+DPBwQ6NdcJ+k6Md1LA5f5ONdhJ8vZ5J0vLHT99srkGOjmJbd/G1r2Nriqnse1AZt1AalU5jW2HsuuG0qvKGRkZGRkZGRG0gcONyXsP9v8D0/IdJADiBNiXl3327WRGgOL/9HC/0XwlIURkRhC4tz6Z/fu7fUf2gHvfB9z3u0BGRkZGRkbGplHcnkgguQoSqtUXuhbs/wPtMwqV0HUJAvj5vk32b8IDuL23yn7qAXZ5u32hbRX7d3o82Df1FZXvbh9QOfhyxldr/+3xgXU9oKmvsHyr7F/XA269/eveBXrsv7N9QALe/tvjA0kPWAXGbvebkbHn+D/J5nMcHzx1UAAAAABJRU5ErkJggg==)}.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,iVBORw0KGgoAAAANSUhEUgAAAQAAAADwCAMAAADYSUr5AAAA7VBMVEUkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiTww4gUAAAATnRSTlMAGBAyBAhQv4OZLiJUcEBmYBoSzQwgPBZCSEoeWiYwUiyFNIeBw2rJz8c4RBy9uXyrtaWNqa2zKP2fJO8KBgKPo2KVoa9s351GPm5+kWho0kj9AAAPhUlEQVR4nO1djWLbthEGyUiq5YSSLXtp7FpLOmfzkmxr126tmi2p03RJ1/Xe/3EGgARxPyAgRbIk2/hkSz4CJO4+HsE7AJSVysjI2AMUUOxahZ2iANhzBtZWr4BoIRSYAVN5u4QwDwQDRbcwfUi5KS3wFuDmFnQLa4Dtb//cqktwD5QEFFwfUs7PoCCA7y4bEJVFizcIob8KmhAplwwqVjt+9FBl3uINQniwEiryEyw9JHqGpQdEFNi+B4QQ7QOiHhysIPoAxUqxvdvvA9K42bsAv4S2fxfYOe57IJSRkZGRkZGxx7jxSHDHcRBXQMTyIjInBgHwBJ/bEx8PEANC+uhbpSSggCBAVODVabpI1S/k4WLZpTn6NpMhoX9Y40hxYERFpMcqUs4AloCtDQdID1YhnyXZ2hLjAYWiO9Dy1PDB7tPhIqLx+uMB8grZaR+Qxl2/C2RkZGRkZGRk7A7rBf7J0DR5/LUTjzUPIPSPGvQJiVJiB7kcQCiUOJrcFNtDZIf2xarQ3aGvLNxAVIFAabz90BFiBIlycTBhgWwOWCH0FLYHlPqwHaCvcIn2ZbosCevfPTRiFFcgvHukCjWwrc3GrGh1fsAof8EaUReKXkCB4/MzFNo97qLpFiKFYv/kNR5YQxQbQEofkZ2OuEOHqqT6gFTpru8CN7x/+jaZkZGRkZGRcV+x/rLUNcMMqUAscgnFocmpqkTzqymwVAPxfJ5PnIUUQOUKT04tEdWZyv3JCQSn96WS4pD97QfyW25A7NhSAbyhmVj0FEltA4vdiygBibXhoUYgykCUP7HwPTDeEqAIcHVMkZg7Zx4k0uFANs63hPQXCoRLAwdgGsr9Az7Qv7sgQGgg1aPl/BJLExBWgG4RFRLFImGmIquPC/klEGyCG0AuAXaJJC+B8FVe9NYQDEcXB8g6AQcjYJ1goJIggHWCrFR0S6kRHN5+4BzFi8NaoN35NRxUvL+JJdZr7PV4wK6fj8nIyMjIyNhr3OxdXAYq7FHZwB6bDSzSh4sF0utChqo0NAvaT1hLzXwFinmCzmeDucEQK18TTaQoFgP7bNC+RZ4OT4T6gQogDFYk+1QxQlj19QGSAWKiLYp8P0Ag1Gbz1ULfWHLg9iUnQNK5QQJcukm04blKLH2GgEJCY+HzXAZWCvHKco3Bp6MIaCjSXXRJyOxeqhnzEaF93MfFGW/O16ZvDL5TM4MJIjujz/cHypkQuuzRwWJ93BKdIt+wCRAPl9kpe2Ikkb2mFgGlxh/i40d3EHfdvoyMjIyMu43ylt/IAmGHnN5iIt7wKfbv01RAcJqFRl9lcjYQSnbQqKgC4fYOwSJt6N6trE0twZ9kN/PqNpTQeICvr4TLsDYC06U7BMjshS+v1/aT7IwQYD5LcgRQXMT2FrBfBLjZ6151jDElk9tPFfpUgk2yregusX25BJbwAFEfM+YI6vGAti4bTtizB+TjfQCrERyhKb2X8D6A9wX75P4t4neBYJeP6pdhg/gQl8MWvytzeSTjgOQBynQdh/iXKdxOrGJ/RkZGRsb9QmXihGr5+g8GGg9uTh+KoVZuNIzV+CwRucFBEyr1mVjx4irOxwM1BhirB6Q+2eNQi4eqR+aF6mELtoMzCR7V9RAFe/ZvQogNiyY8FPSUTFsLp8TeTmMui5mtw7bcaT0Yw2AA4wFRQIlkgq+1DQrNhkmoxS5Jq+u6bMAIGRECEANgXHTgWzwgBOhDH2l0oTQ4D8D5NMktBgNywAEMjo8rwATMZrPY7JGxBoJCkIBDQiAY09EGTUiBCWkUpISfGPR5AAwBfZiG2z7Ayc1yeKTxid39xBNwfHr4O0LA48ePFTvhYrF1r4tyAoz9n2MCqEuBtp/6GDR0oAYfG/R6wJExHYZHfhygsv7fEWCOj4bYmsP5A+pL4MkTfAnMlD4F+r3bobKvTyTA2P/w7PN+Agq2QW8piqMCpTBwenoKvX0AHGkGtP2YAPvTEWA7QUTAudn7/NxtOG46wWNmDtpBEkBzN7rBEvAFHp+YTB/q97qPAN4gHFqgBi8uLsC7qPCA6mg41G/+ErByPwEXDdoNxRhOx+M5jPEzQugS0ht+b1/Y3gEnYMAIAOIBE29/hIDucE8tmMsNOgK4B1RHFu4UCRlMHzv0xzcajcfdXWDs2h8TArBCkoDUJYDLmz6w7ip3BFS0ve5wTRwAn6keMA9I3QYbfSZ0DKbyt+7OXjGI1idPcfNyAyfAMlCrzaGqphYrxHocLHRJVycnfGUcbtT+jIyMjIw9x7Nn8fJSzG0TmFtO8rZT+XT3S3ub+tKJbbLd5diTVp50+zahyeHSslJ/YPrU0fuazrZO2CZ92/ZCCVXlGRiZKPJyPPRxyIFWeXLQBXJBKiq/3divEAN6ZwM200Qjm7EJBZeWm/PRWVCbYK7s7u2l4XaCz+lzgOfMfhMonXr7TWzeZb98dbgIzBT8Ub8eYYUqfZ4rVJ/MDbIDgPqTulJ/xvntWAtjIisqnwxOkGz0n077FARoY79GdA6HPE4rOy196NiMWHTZlSSApcOgXpy/fHV2joaNKu3ffsAnRcBf4K/6NcIG6tIxk3HyoXPjASqfUgXbYN5PzpL2njkR9QMjeDTVHDTCgRuxOegjoO0FvKzP/t/gmVdI24+G7NIe8JX6Wv3dDyldMA+4YB5wwTygtd+dwRqaTqrLb1l73zTSN52CNpnHuQOYPsDblybgxfkXh/oVtr+N1DEBJdhRJyd/Bd/q1z+cbNrD17iVKyajcnv9arhOkRPgsruuD6DmNPwpDNrLw2CoTgHni4yALr0L29+tiKAEIPn868ejx//8rpWP3OEOl5On9OwpcQm0MhafP/ey8f1uvDNIgGLQG8z4YO99ENgg95etwv4uYJYY8fUGHYH6j6fscHFZMftlAl9i+9XL73X3N/n+ZStOzfVfRvYXhrbdKOpEgVQTg/wsDuDD3kwOfQNMTJ5y+/ltUDWLunyxnRF46IqlBzGMY4X7inggREFioIyMjIyMHWCIB6ZNKAcXseo3vLTQTkVE7348dlwJJSz0+wLfmi8BhZqfw3D4ww/wHVLnEd5/fgYvXsDZ3MlsvYUbbnDjDZ3MN3TJG4+bxjAaDl8TBri9qxEw1ccao2wTNAMLHo2f+sjrXwb/9qHoYqgPMBXJTVfOpmrZH23y6uvo0LHSyY6fHGwKfHJlAuMFvObjDYrIqxBgQi20h7Hd/nYVLmno+eaNUm/eeH2GCuopntnhBJAlI2AHo9CCh1I1QxUdAbqqGY9BBLwyc3W4wYVhvY8A4BoIc1l5M7vnPWphZW9/Ses3n37y9a0uGqFwFQZsQQbd386DogpgEk+dzynsAZMJXq8+ns9NeukJ0PYrNATGGefJQlhkLo7DTXr+y3bNiOsDvrXTz/C2q1DXZH84iRNwrP88Nj+u2DjYEE6RBxD9Knj16ujVHC67A7422o02RwD3gB+t7EblWvu9geOFxSnd3ROmT+nJyQkhoPlsxVONc/3TEdBos+jtA+ZzcwHgTvD1cDjaYCcItA8w9i88A8b+mqSjc6Pvqd998QguEQPmQMeo23ODN86+p0/bn1buBkT6+oBhNZ/PYY4ZAHYb3PRd4LkZmPX68NRtMZn4ASvdA+qf0jMA5MP9eeg28Nug9QiLnj5A33U1MAES6xHAUNpz/9zFAYE1gqQDMT3G6xI9pwdw/aIgKoHCS1YGlRnSq9yCjdXjgN3j+N27YyROHxmuNAeNKPpYuXIyIyMjYy0M8eros59MF/PT2c602T7eA7zvhJ9dr/vzDjXaLp4Yc5+0wllzxzHv3gdmMMM7/CcQzKgVBqYTmFn+Z+mKm8J7k0A5F/jgCfjQ1WBhQyiOqD0lYuqBb+AyzMw9Ha2G3m6c8qQx+AlqnIceQp+Sb6i9UyQWbhr54+AjnZ0VzW2TAN0DmBT6PWmc6jDBE2PK2u+nF43dyP7Q0t1pOcX2fdRvH0mF2Q4JqN35rnHjVIeaXfIAVyUuw/aHCCiJy9iF5l1621zweI8KZrPZ9iJdb7DXJ3US0OSrtZ10imt7wHY7QesAzUMz1oZ3noB3qFJ/H18j97FYuw8QDN4oeKf30osvcSW2ExLo+VcbuAuo/sUIm8fMG9xocO3Ea19J9gFYivnHJ2KnyfovZlgW3v6ySx32abQiIyMjIyPjhlFDTLxpwIgFMnTp6A3g4IDKNY+stkwAMAoIAbasxBXqUWneSAWTMjt50lTqT29rFjvXohjsDNm2YPXDFlICmrJOZ3t6tHm8AiEAl0sCeLIIorIRt+cFbew/QRsoAXb4o1XSfoywzm0FTMAoYBNvLyFu8v8HpLBtD1iKgC17wHb7AI6d9wFbvguAIGTHd4E9wG7jgIyMjIyM+434c2R3HeV/Ffx6jtZu6ijl8h59T655jhR+rdHzDOP6beABCheb8O8/WFXeOyzgf5oAhVYnKxP7CwaAf1afJu8bSrhS6tdaXeGnrRenOqOlz9d6QwYnA/3TLd+GE7qe3chA5YF5DfY0vK3adfOX/gyNp2BW25MHdxAB9qvRiiP3/XpQQFGYDU4+Mi///XumXG8pjvaUAOsBGlf4jJt+YYEzeEzAdw06F19R3juM7D1wita86GR0CKfDHgLuXCc4Bri6vMLdfjMc4VNSUNsdodo2xu/1+Xl/K5+az8jIyMhYG/z5gJTMF1GtKq/a3rpyCvz5gJTMl9GtKq/a3rpyCmfQ4WwZmS+kXFVetb115ST48wEf/AGcfG1iw+tWbpbS2vJ3nQxcVr3lH3z5h972FUTLzYpOVk7l5hD+eYcYwDcAnewOotrZ4OtrPDucqi/LRX0/RR4qx7Nn4U8g+qjffvuN6Gf+nC85vwauHjaYyubqvWYKY4VEfSUMitdnBCT1Ue63R5439m+OgCn6DroAAaHPVQxKth/wkJgHmG8bmQMsT0D6EjDfvhVRKO3ywOQUgRA7nmL1uawZmHf1k+DPBwQ6NdcJ+k6Md1LA5f5ONdhJ8vZ5J0vLHT99srkGOjmJbd/G1r2Nriqnse1AZt1AalU5jW2HsuuG0qvKGRkZGRkZGRG0gcONyXsP9v8D0/IdJADiBNiXl3327WRGgOL/9HC/0XwlIURkRhC4tz6Z/fu7fUf2gHvfB9z3u0BGRkZGRkbGplHcnkgguQoSqtUXuhbs/wPtMwqV0HUJAvj5vk32b8IDuL23yn7qAXZ5u32hbRX7d3o82Df1FZXvbh9QOfhyxldr/+3xgXU9oKmvsHyr7F/XA269/eveBXrsv7N9QALe/tvjA0kPWAXGbvebkbHn+D/J5nMcHzx1UAAAAABJRU5ErkJggg==)}.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)}}();
|