@gzmjs/table 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/055-table/00-base.d.ts +127 -0
- package/dist/055-table/05-colWidthSetter.d.ts +13 -0
- package/dist/055-table/10-cell.d.ts +14 -0
- package/dist/055-table/16-row.d.ts +31 -0
- package/dist/055-table/17-rows.d.ts +21 -0
- package/dist/055-table/18-aggs.d.ts +16 -0
- package/dist/055-table/20-col.d.ts +197 -0
- package/dist/055-table/22-colgroup.d.ts +112 -0
- package/dist/055-table/25-cols.d.ts +25 -0
- package/dist/055-table/35-snapshot.d.ts +34 -0
- package/dist/055-table/46-tht-options.d.ts +37 -0
- package/dist/055-table/47-head-tail.d.ts +27 -0
- package/dist/055-table/48-col-head.d.ts +20 -0
- package/dist/055-table/48-col-tail.d.ts +20 -0
- package/dist/055-table/51-check.d.ts +89 -0
- package/dist/055-table/52-serial.d.ts +20 -0
- package/dist/055-table/53-action.d.ts +53 -0
- package/dist/055-table/54-menu.d.ts +27 -0
- package/dist/055-table/60-list.d.ts +41 -0
- package/dist/055-table/62-table.d.ts +175 -0
- package/dist/index.d.ts +10 -0
- package/dist/table.es.js +2969 -0
- package/dist/table.es.js.map +1 -0
- package/package.json +33 -0
package/dist/table.es.js
ADDED
|
@@ -0,0 +1,2969 @@
|
|
|
1
|
+
import * as B from "@gzmjs/ui-basic";
|
|
2
|
+
import { createStyleSheet, gzmHeader, createText, globalTexts, defineElement, strAttr, boolAttr, CornerHelper, xy } from "@gzmjs/ui-basic";
|
|
3
|
+
import * as M from "@gzmjs/mvvm";
|
|
4
|
+
import { ViewElement, handleModelEvent, ModelEventHandler } from "@gzmjs/mvvm";
|
|
5
|
+
import { createMenu } from "@gzmjs/menu";
|
|
6
|
+
import "@gzmjs/tooltip";
|
|
7
|
+
const tableViewTagName = "GZM-TABLE";
|
|
8
|
+
const tableListTagName = "GZM-TABLE-LIST";
|
|
9
|
+
const tableColStartTagName = "GZM-TABLE-COL-START";
|
|
10
|
+
const tableColHeadTagName = "GZM-TABLE-COL-HEAD";
|
|
11
|
+
const tableColMiddleTagName = "GZM-TABLE-COL-MIDDLE";
|
|
12
|
+
const tableColsTagName = "GZM-TABLE-COLS";
|
|
13
|
+
const tableColGroupTagName = "GZM-TABLE-COL-GROUP";
|
|
14
|
+
const tableColTagName = "GZM-TABLE-COL";
|
|
15
|
+
const tableColEndTagName = "GZM-TABLE-COL-END";
|
|
16
|
+
const tableColTailTagName = "GZM-TABLE-COL-TAIL";
|
|
17
|
+
const tableRowsTagName = "GZM-TABLE-ROWS";
|
|
18
|
+
const tableRowTagName = "GZM-TABLE-ROW";
|
|
19
|
+
const tableRowStartTagName = "GZM-TABLE-ROW-START";
|
|
20
|
+
const tableRowMiddleTagName = "GZM-TABLE-ROW-MIDDLE";
|
|
21
|
+
const tableRowEndTagName = "GZM-TABLE-ROW-END";
|
|
22
|
+
const tableCellTagName = "GZM-TABLE-CELL";
|
|
23
|
+
const tableAggsTagName = "GZM-TABLE-AGGS";
|
|
24
|
+
const tableAggStartTagName = "GZM-TABLE-AGG-START";
|
|
25
|
+
const tableAggMiddleTagName = "GZM-TABLE-AGG-MIDDLE";
|
|
26
|
+
const tableAggEndTagName = "GZM-TABLE-AGG-END";
|
|
27
|
+
const tableAggTagName = "GZM-TABLE-AGG";
|
|
28
|
+
const tableColWidthSetterTagName = "GZM-TABLE-COL-WIDTH-SETTER";
|
|
29
|
+
const tableColCheckTagName = "GZM-TABLE-COL-CHECK";
|
|
30
|
+
const tableRowCheckTagName = "GZM-TABLE-ROW-CHECK";
|
|
31
|
+
const tableColSerialTagName = "GZM-TABLE-COL-SERIAL";
|
|
32
|
+
const tableRowSerialTagName = "GZM-TABLE-ROW-SERIAL";
|
|
33
|
+
const tableColActionTagName = "GZM-TABLE-COL-ACTION";
|
|
34
|
+
const tableRowActionTagName = "GZM-TABLE-ROW-ACTION";
|
|
35
|
+
const tableColMenuTagName = "GZM-TABLE-COL-MENU";
|
|
36
|
+
const tableRowMenuTagName = "GZM-TABLE-ROW-MENU";
|
|
37
|
+
const styleSheet$1 = createStyleSheet({
|
|
38
|
+
//确保 section 能够显示滚动栏
|
|
39
|
+
":host": `
|
|
40
|
+
overflow: hidden;
|
|
41
|
+
display: block;
|
|
42
|
+
`,
|
|
43
|
+
//section 负责显示滚动栏
|
|
44
|
+
":host > section": `
|
|
45
|
+
display: grid;
|
|
46
|
+
grid-template-columns: auto auto;
|
|
47
|
+
gap: 0.5rem;
|
|
48
|
+
overflow: auto;
|
|
49
|
+
max-height: 100%;
|
|
50
|
+
|
|
51
|
+
--grid-row-serial: 0; /*行号从 1 开始*/
|
|
52
|
+
counter-reset: row-serial var(--grid-row-serial);
|
|
53
|
+
`,
|
|
54
|
+
[tableListTagName]: `
|
|
55
|
+
display: grid;
|
|
56
|
+
grid-auto-rows: max-content;/*每一行的高度都自动*/
|
|
57
|
+
gap: 0px;
|
|
58
|
+
|
|
59
|
+
/*3个span加在一起应该等于可见【列头+列+列尾】的数量*/
|
|
60
|
+
--grid-start-span: 0;
|
|
61
|
+
--grid-middle-span: 0;
|
|
62
|
+
--grid-end-span: 0;
|
|
63
|
+
|
|
64
|
+
/*列部分占用的行的数量*/
|
|
65
|
+
--grid-col-end: 0;
|
|
66
|
+
`,
|
|
67
|
+
/*下面 3 个占据了 grid-list 的上半部分。利用 subgrid 使其中元素占用 grid-list 的列。*/
|
|
68
|
+
[`${tableColStartTagName}, ${tableColMiddleTagName}, ${tableColEndTagName}`]: `
|
|
69
|
+
position: sticky;
|
|
70
|
+
top: 0px;
|
|
71
|
+
|
|
72
|
+
display: grid;
|
|
73
|
+
grid-template-columns: subgrid;
|
|
74
|
+
grid-template-rows: subgrid;
|
|
75
|
+
grid-row-start: 1;
|
|
76
|
+
grid-row-end: var(--grid-col-end);
|
|
77
|
+
`,
|
|
78
|
+
/*下面 3 个固定在左侧 */
|
|
79
|
+
[`${tableColStartTagName}, ${tableRowStartTagName}, ${tableAggStartTagName}`]: `
|
|
80
|
+
left: 0px;
|
|
81
|
+
grid-column-end: span var(--grid-start-span);
|
|
82
|
+
`,
|
|
83
|
+
[`${tableListTagName}[no-start] ${tableColStartTagName}, ${tableListTagName}[no-start] ${tableRowStartTagName}, ${tableListTagName}[no-start] ${tableAggStartTagName}`]: `
|
|
84
|
+
display: none;
|
|
85
|
+
`,
|
|
86
|
+
/*下面 3 个固定在右侧 */
|
|
87
|
+
[`${tableColEndTagName}, ${tableRowEndTagName}, ${tableAggEndTagName}`]: `
|
|
88
|
+
right: 0px;
|
|
89
|
+
grid-column-end: span var(--grid-end-span);
|
|
90
|
+
`,
|
|
91
|
+
[`${tableListTagName}[no-end] ${tableColEndTagName}, ${tableListTagName}[no-end] ${tableRowEndTagName}, ${tableListTagName}[no-end] ${tableAggEndTagName}`]: `
|
|
92
|
+
display: none;
|
|
93
|
+
`,
|
|
94
|
+
/* 中间的 上中下 3 个元素, 无 sticky,只设置宽度 */
|
|
95
|
+
[`${tableColMiddleTagName}, ${tableRowMiddleTagName}, ${tableAggMiddleTagName}`]: `
|
|
96
|
+
grid-column-end: span var(--grid-middle-span);
|
|
97
|
+
`,
|
|
98
|
+
/* 用来组织子元素的容器 */
|
|
99
|
+
[`${tableColHeadTagName}, ${tableColTailTagName}, ${tableColsTagName}, ${tableColGroupTagName}, ${tableRowsTagName}, ${tableRowTagName}, ${tableAggsTagName}`]: `
|
|
100
|
+
display: contents;
|
|
101
|
+
`,
|
|
102
|
+
/* 所有的列头和列尾,所有的列头和尾都只有一个元素 */
|
|
103
|
+
[`${tableColHeadTagName} > *, ${tableColTailTagName} > *`]: `
|
|
104
|
+
grid-row-start: 1;
|
|
105
|
+
grid-row-end: var(--grid-col-end);
|
|
106
|
+
text-align: center;
|
|
107
|
+
padding: 0.25rem 0.5rem;
|
|
108
|
+
`,
|
|
109
|
+
/* 不可滚动内容要求在 可滚动内容 的上面 */
|
|
110
|
+
[`${tableColStartTagName}, ${tableColEndTagName}`]: `
|
|
111
|
+
z-index: 40;
|
|
112
|
+
`,
|
|
113
|
+
/* COL */
|
|
114
|
+
[tableColTagName]: `
|
|
115
|
+
display: flex;
|
|
116
|
+
align-items: flex-end; /*1-col会跨行,这个使文本等靠底部显示。2-文本占用最大的地方,菜单⋮靠右*/
|
|
117
|
+
padding: 0.25rem 0.5rem;
|
|
118
|
+
|
|
119
|
+
position: sticky;
|
|
120
|
+
top: 0px;
|
|
121
|
+
z-index: 30;
|
|
122
|
+
|
|
123
|
+
grid-row-end: var(--grid-col-end);
|
|
124
|
+
|
|
125
|
+
white-space: nowrap;
|
|
126
|
+
` + gzmHeader,
|
|
127
|
+
/* 列排序 */
|
|
128
|
+
[tableColTagName + "::before"]: `
|
|
129
|
+
content: attr(sort);
|
|
130
|
+
`,
|
|
131
|
+
/* 列文本 */
|
|
132
|
+
[tableColTagName + ">span"]: `
|
|
133
|
+
flex: 1 1 auto;
|
|
134
|
+
margin-right: 0.25rem;
|
|
135
|
+
`,
|
|
136
|
+
/* 列按钮:菜单等。鼠标悬停时显示菜单按钮。 */
|
|
137
|
+
[tableColTagName + ">.gzm-txt-btn"]: `
|
|
138
|
+
visibility: hidden;
|
|
139
|
+
`,
|
|
140
|
+
[tableColTagName + ":hover >.gzm-txt-btn"]: `
|
|
141
|
+
visibility: visible;
|
|
142
|
+
`,
|
|
143
|
+
/* COL-GROUP */
|
|
144
|
+
/*不能换行,div 高度必须保持不变*/
|
|
145
|
+
[tableColGroupTagName + ">div"]: `
|
|
146
|
+
display: flex;
|
|
147
|
+
gap: 0.25rem;
|
|
148
|
+
padding: 0.25rem 0.5rem;
|
|
149
|
+
|
|
150
|
+
position: sticky;
|
|
151
|
+
top: 0px;
|
|
152
|
+
z-index: 30;
|
|
153
|
+
|
|
154
|
+
white-space: nowrap;
|
|
155
|
+
` + gzmHeader,
|
|
156
|
+
[tableColGroupTagName + ">div >span"]: `
|
|
157
|
+
flex: 1 1 auto;
|
|
158
|
+
`,
|
|
159
|
+
/* 列组按钮:菜单等。鼠标悬停时显示菜单按钮。 */
|
|
160
|
+
[tableColGroupTagName + ">div >.gzm-txt-btn"]: `
|
|
161
|
+
visibility: hidden;
|
|
162
|
+
`,
|
|
163
|
+
[tableColGroupTagName + ">div:hover >.gzm-txt-btn"]: `
|
|
164
|
+
visibility: visible;
|
|
165
|
+
`,
|
|
166
|
+
/* ROW */
|
|
167
|
+
[`${tableRowTagName}:hover >* >${tableCellTagName}`]: `
|
|
168
|
+
background: var(--gzm-h-btn-background);
|
|
169
|
+
border: var(--gzm-h-btn-border);
|
|
170
|
+
color: var(--gzm-h-btn-txt-color);
|
|
171
|
+
`,
|
|
172
|
+
[`${tableRowTagName}:active >* >${tableCellTagName}, ${tableRowTagName}[active] >* >${tableCellTagName}`]: `
|
|
173
|
+
color: var(--gzm-a-btn-txt-color) !important;
|
|
174
|
+
background: var(--gzm-a-btn-background) !important;
|
|
175
|
+
border: var(--gzm-a-btn-border) !important;
|
|
176
|
+
`,
|
|
177
|
+
[`${tableRowStartTagName}, ${tableRowMiddleTagName}, ${tableRowEndTagName}`]: `
|
|
178
|
+
display: grid;
|
|
179
|
+
grid-template-columns: subgrid;
|
|
180
|
+
grid-template-rows: subgrid;
|
|
181
|
+
`,
|
|
182
|
+
/*需要设置背景颜色,否则与可滚动内容字符重叠*/
|
|
183
|
+
[`${tableRowStartTagName}, ${tableRowEndTagName}`]: `
|
|
184
|
+
position: sticky;
|
|
185
|
+
z-index: 20;
|
|
186
|
+
background-color: var(--gzm-background-color);
|
|
187
|
+
`,
|
|
188
|
+
/* CELL */
|
|
189
|
+
[tableCellTagName]: `
|
|
190
|
+
padding: 0.25rem 0.5rem;
|
|
191
|
+
border: var(--gzm-header-border);
|
|
192
|
+
overflow: hidden;
|
|
193
|
+
text-overflow: ellipsis;
|
|
194
|
+
`,
|
|
195
|
+
[tableCellTagName + ">a"]: `
|
|
196
|
+
text-decoration: revert;
|
|
197
|
+
`,
|
|
198
|
+
/* AGGs */
|
|
199
|
+
[`${tableAggStartTagName}, ${tableAggMiddleTagName}, ${tableAggEndTagName}`]: `
|
|
200
|
+
display: grid;
|
|
201
|
+
grid-template-columns: subgrid;
|
|
202
|
+
grid-template-rows: subgrid;
|
|
203
|
+
|
|
204
|
+
position: sticky;
|
|
205
|
+
bottom: 0px;
|
|
206
|
+
`,
|
|
207
|
+
[tableAggTagName]: `
|
|
208
|
+
grid-row-end: -1;
|
|
209
|
+
`,
|
|
210
|
+
/*需要聚合的字段一定会设置聚合的名称*/
|
|
211
|
+
[tableAggTagName + "[title]"]: `
|
|
212
|
+
padding: 0.25rem 0.5rem;
|
|
213
|
+
white-space: nowrap;
|
|
214
|
+
z-index: 10;
|
|
215
|
+
` + gzmHeader,
|
|
216
|
+
[`${tableAggStartTagName}, ${tableAggEndTagName}`]: `
|
|
217
|
+
z-index: 30;
|
|
218
|
+
`,
|
|
219
|
+
/* HEAD, TAIL */
|
|
220
|
+
[`${tableColCheckTagName}, ${tableColSerialTagName}, ${tableColMenuTagName}, ${tableColActionTagName}`]: `
|
|
221
|
+
display: flex;
|
|
222
|
+
align-items: flex-end;
|
|
223
|
+
` + gzmHeader,
|
|
224
|
+
[`${tableColCheckTagName}, ${tableRowCheckTagName}`]: `
|
|
225
|
+
padding: 0.25rem 0.5rem;
|
|
226
|
+
text-align: center;
|
|
227
|
+
justify-content: center;
|
|
228
|
+
` + gzmHeader,
|
|
229
|
+
[`${tableColSerialTagName}, ${tableRowSerialTagName}`]: `
|
|
230
|
+
padding: 0.25rem 0.5rem;
|
|
231
|
+
text-align: right; /* row 靠右对齐 */
|
|
232
|
+
justify-content: flex-end; /* col 靠右对齐 */
|
|
233
|
+
` + gzmHeader,
|
|
234
|
+
[tableRowSerialTagName + "::after"]: `
|
|
235
|
+
counter-increment: row-serial; /*reset 在 :host 中*/
|
|
236
|
+
content: counter(row-serial);
|
|
237
|
+
`,
|
|
238
|
+
[tableRowMenuTagName]: `
|
|
239
|
+
padding: 0.25rem 0.5rem;
|
|
240
|
+
text-align: center;
|
|
241
|
+
` + gzmHeader,
|
|
242
|
+
[tableRowActionTagName]: `
|
|
243
|
+
padding: 0.25rem 0.5rem;
|
|
244
|
+
border: var(--gzm-header-border);
|
|
245
|
+
`
|
|
246
|
+
});
|
|
247
|
+
const zh = {
|
|
248
|
+
agg: "统计",
|
|
249
|
+
noAgg: "无统计",
|
|
250
|
+
sort: "行排序",
|
|
251
|
+
noSort: "无排序",
|
|
252
|
+
autoWidth: "自动宽度",
|
|
253
|
+
minWidth: "最小宽度",
|
|
254
|
+
maxWidth: "最大宽度",
|
|
255
|
+
pxWidth: "指定宽度",
|
|
256
|
+
textWrap: "文本换行",
|
|
257
|
+
autoWrap: "自动换行",
|
|
258
|
+
noWrap: "禁止换行",
|
|
259
|
+
mustWrap: "强制换行",
|
|
260
|
+
textAlign: "文本对齐",
|
|
261
|
+
startAlign: "左对齐",
|
|
262
|
+
endAlign: "右对齐",
|
|
263
|
+
centerAlign: "居中对齐",
|
|
264
|
+
justifyAlign: "两侧对齐",
|
|
265
|
+
//CAF.Scaffolding.FieldAggregation 按道理不应该放在这里,偷懒了!
|
|
266
|
+
COUNT: "计数",
|
|
267
|
+
MAX: "最大值",
|
|
268
|
+
MIN: "最小值",
|
|
269
|
+
AVG: "平均值",
|
|
270
|
+
SUM: "合计",
|
|
271
|
+
STDDEV_POP: "总体标准差",
|
|
272
|
+
STDDEV_SAMP: "样本标准差",
|
|
273
|
+
VAR_POP: "总体方差",
|
|
274
|
+
VAR_SAMP: "样本方差",
|
|
275
|
+
toggleCheck: "全选 / 全不选"
|
|
276
|
+
};
|
|
277
|
+
const texts = { zh };
|
|
278
|
+
const defaultTexts = createText(texts, globalTexts);
|
|
279
|
+
function getTexts($ele) {
|
|
280
|
+
if ($ele.isConnected) {
|
|
281
|
+
return $ele.getRootNode().host.T;
|
|
282
|
+
}
|
|
283
|
+
return defaultTexts;
|
|
284
|
+
}
|
|
285
|
+
var __create$f = Object.create;
|
|
286
|
+
var __defProp$f = Object.defineProperty;
|
|
287
|
+
var __getOwnPropDesc$f = Object.getOwnPropertyDescriptor;
|
|
288
|
+
var __knownSymbol$f = (name, symbol) => (symbol = Symbol[name]) ? symbol : /* @__PURE__ */ Symbol.for("Symbol." + name);
|
|
289
|
+
var __typeError$f = (msg) => {
|
|
290
|
+
throw TypeError(msg);
|
|
291
|
+
};
|
|
292
|
+
var __defNormalProp$f = (obj, key, value) => key in obj ? __defProp$f(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
293
|
+
var __name$f = (target, value) => __defProp$f(target, "name", { value, configurable: true });
|
|
294
|
+
var __decoratorStart$f = (base) => [, , , __create$f(base?.[__knownSymbol$f("metadata")] ?? null)];
|
|
295
|
+
var __decoratorStrings$f = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
|
|
296
|
+
var __expectFn$f = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError$f("Function expected") : fn;
|
|
297
|
+
var __decoratorContext$f = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings$f[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError$f("Already initialized") : fns.push(__expectFn$f(fn || null)) });
|
|
298
|
+
var __decoratorMetadata$f = (array, target) => __defNormalProp$f(target, __knownSymbol$f("metadata"), array[3]);
|
|
299
|
+
var __runInitializers$f = (array, flags, self, value) => {
|
|
300
|
+
for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);
|
|
301
|
+
return value;
|
|
302
|
+
};
|
|
303
|
+
var __decorateElement$f = (array, flags, name, decorators, target, extra) => {
|
|
304
|
+
var fn, it, done, ctx, access, k = flags & 7, s = !!(flags & 8), p = !!(flags & 16);
|
|
305
|
+
var j = k > 3 ? array.length + 1 : k ? s ? 1 : 2 : 0, key = __decoratorStrings$f[k + 5];
|
|
306
|
+
var initializers = k > 3 && (array[j - 1] = []), extraInitializers = array[j] || (array[j] = []);
|
|
307
|
+
var desc = k && (!p && !s && (target = target.prototype), k < 5 && (k > 3 || !p) && __getOwnPropDesc$f(k < 4 ? target : { get [name]() {
|
|
308
|
+
return __privateGet$3(this, extra);
|
|
309
|
+
}, set [name](x) {
|
|
310
|
+
return __privateSet$3(this, extra, x);
|
|
311
|
+
} }, name));
|
|
312
|
+
k ? p && k < 4 && __name$f(extra, (k > 2 ? "set " : k > 1 ? "get " : "") + name) : __name$f(target, name);
|
|
313
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
314
|
+
ctx = __decoratorContext$f(k, name, done = {}, array[3], extraInitializers);
|
|
315
|
+
if (k) {
|
|
316
|
+
ctx.static = s, ctx.private = p, access = ctx.access = { has: p ? (x) => __privateIn$3(target, x) : (x) => name in x };
|
|
317
|
+
if (k ^ 3) access.get = p ? (x) => (k ^ 1 ? __privateGet$3 : __privateMethod$3)(x, target, k ^ 4 ? extra : desc.get) : (x) => x[name];
|
|
318
|
+
if (k > 2) access.set = p ? (x, y) => __privateSet$3(x, target, y, k ^ 4 ? extra : desc.set) : (x, y) => x[name] = y;
|
|
319
|
+
}
|
|
320
|
+
it = (0, decorators[i])(k ? k < 4 ? p ? extra : desc[key] : k > 4 ? void 0 : { get: desc.get, set: desc.set } : target, ctx), done._ = 1;
|
|
321
|
+
if (k ^ 4 || it === void 0) __expectFn$f(it) && (k > 4 ? initializers.unshift(it) : k ? p ? extra = it : desc[key] = it : target = it);
|
|
322
|
+
else if (typeof it !== "object" || it === null) __typeError$f("Object expected");
|
|
323
|
+
else __expectFn$f(fn = it.get) && (desc.get = fn), __expectFn$f(fn = it.set) && (desc.set = fn), __expectFn$f(fn = it.init) && initializers.unshift(fn);
|
|
324
|
+
}
|
|
325
|
+
return k || __decoratorMetadata$f(array, target), desc && __defProp$f(target, name, desc), p ? k ^ 4 ? extra : desc : target;
|
|
326
|
+
};
|
|
327
|
+
var __accessCheck$3 = (obj, member, msg) => member.has(obj) || __typeError$f("Cannot " + msg);
|
|
328
|
+
var __privateIn$3 = (member, obj) => Object(obj) !== obj ? __typeError$f('Cannot use the "in" operator on this value') : member.has(obj);
|
|
329
|
+
var __privateGet$3 = (obj, member, getter) => (__accessCheck$3(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
|
|
330
|
+
var __privateAdd$3 = (obj, member, value) => member.has(obj) ? __typeError$f("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
331
|
+
var __privateSet$3 = (obj, member, value, setter) => (__accessCheck$3(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
|
|
332
|
+
var __privateMethod$3 = (obj, member, method) => (__accessCheck$3(obj, member, "access private method"), method);
|
|
333
|
+
var _colKey_dec, _a$f, _TableCell_decorators, _init$f, _colKey;
|
|
334
|
+
_TableCell_decorators = [defineElement({ tagName: tableCellTagName })];
|
|
335
|
+
class TableCell extends (_a$f = HTMLElement, _colKey_dec = [strAttr], _a$f) {
|
|
336
|
+
constructor() {
|
|
337
|
+
super(...arguments);
|
|
338
|
+
__privateAdd$3(this, _colKey, __runInitializers$f(_init$f, 8, this)), __runInitializers$f(_init$f, 11, this);
|
|
339
|
+
}
|
|
340
|
+
// #endregion
|
|
341
|
+
get $row() {
|
|
342
|
+
return this.closest(tableRowTagName);
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
_init$f = __decoratorStart$f(_a$f);
|
|
346
|
+
_colKey = /* @__PURE__ */ new WeakMap();
|
|
347
|
+
__decorateElement$f(_init$f, 4, "colKey", _colKey_dec, TableCell, _colKey);
|
|
348
|
+
TableCell = __decorateElement$f(_init$f, 0, "TableCell", _TableCell_decorators, TableCell);
|
|
349
|
+
__runInitializers$f(_init$f, 1, TableCell);
|
|
350
|
+
var __create$e = Object.create;
|
|
351
|
+
var __defProp$e = Object.defineProperty;
|
|
352
|
+
var __getOwnPropDesc$e = Object.getOwnPropertyDescriptor;
|
|
353
|
+
var __knownSymbol$e = (name, symbol) => (symbol = Symbol[name]) ? symbol : /* @__PURE__ */ Symbol.for("Symbol." + name);
|
|
354
|
+
var __typeError$e = (msg) => {
|
|
355
|
+
throw TypeError(msg);
|
|
356
|
+
};
|
|
357
|
+
var __defNormalProp$e = (obj, key, value) => key in obj ? __defProp$e(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
358
|
+
var __name$e = (target, value) => __defProp$e(target, "name", { value, configurable: true });
|
|
359
|
+
var __decoratorStart$e = (base) => [, , , __create$e(base?.[__knownSymbol$e("metadata")] ?? null)];
|
|
360
|
+
var __decoratorStrings$e = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
|
|
361
|
+
var __expectFn$e = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError$e("Function expected") : fn;
|
|
362
|
+
var __decoratorContext$e = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings$e[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError$e("Already initialized") : fns.push(__expectFn$e(fn || null)) });
|
|
363
|
+
var __decoratorMetadata$e = (array, target) => __defNormalProp$e(target, __knownSymbol$e("metadata"), array[3]);
|
|
364
|
+
var __runInitializers$e = (array, flags, self, value) => {
|
|
365
|
+
for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);
|
|
366
|
+
return value;
|
|
367
|
+
};
|
|
368
|
+
var __decorateElement$e = (array, flags, name, decorators, target, extra) => {
|
|
369
|
+
var fn, it, done, ctx, access, k = flags & 7, s = !!(flags & 8), p = !!(flags & 16);
|
|
370
|
+
var j = k > 3 ? array.length + 1 : k ? s ? 1 : 2 : 0, key = __decoratorStrings$e[k + 5];
|
|
371
|
+
var initializers = k > 3 && (array[j - 1] = []), extraInitializers = array[j] || (array[j] = []);
|
|
372
|
+
var desc = k && (!p && !s && (target = target.prototype), k < 5 && (k > 3 || !p) && __getOwnPropDesc$e(k < 4 ? target : { get [name]() {
|
|
373
|
+
return __privateGet$2(this, extra);
|
|
374
|
+
}, set [name](x) {
|
|
375
|
+
return __privateSet$2(this, extra, x);
|
|
376
|
+
} }, name));
|
|
377
|
+
k ? p && k < 4 && __name$e(extra, (k > 2 ? "set " : k > 1 ? "get " : "") + name) : __name$e(target, name);
|
|
378
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
379
|
+
ctx = __decoratorContext$e(k, name, done = {}, array[3], extraInitializers);
|
|
380
|
+
if (k) {
|
|
381
|
+
ctx.static = s, ctx.private = p, access = ctx.access = { has: p ? (x) => __privateIn$2(target, x) : (x) => name in x };
|
|
382
|
+
if (k ^ 3) access.get = p ? (x) => (k ^ 1 ? __privateGet$2 : __privateMethod$2)(x, target, k ^ 4 ? extra : desc.get) : (x) => x[name];
|
|
383
|
+
if (k > 2) access.set = p ? (x, y) => __privateSet$2(x, target, y, k ^ 4 ? extra : desc.set) : (x, y) => x[name] = y;
|
|
384
|
+
}
|
|
385
|
+
it = (0, decorators[i])(k ? k < 4 ? p ? extra : desc[key] : k > 4 ? void 0 : { get: desc.get, set: desc.set } : target, ctx), done._ = 1;
|
|
386
|
+
if (k ^ 4 || it === void 0) __expectFn$e(it) && (k > 4 ? initializers.unshift(it) : k ? p ? extra = it : desc[key] = it : target = it);
|
|
387
|
+
else if (typeof it !== "object" || it === null) __typeError$e("Object expected");
|
|
388
|
+
else __expectFn$e(fn = it.get) && (desc.get = fn), __expectFn$e(fn = it.set) && (desc.set = fn), __expectFn$e(fn = it.init) && initializers.unshift(fn);
|
|
389
|
+
}
|
|
390
|
+
return k || __decoratorMetadata$e(array, target), desc && __defProp$e(target, name, desc), p ? k ^ 4 ? extra : desc : target;
|
|
391
|
+
};
|
|
392
|
+
var __publicField$2 = (obj, key, value) => __defNormalProp$e(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
393
|
+
var __accessCheck$2 = (obj, member, msg) => member.has(obj) || __typeError$e("Cannot " + msg);
|
|
394
|
+
var __privateIn$2 = (member, obj) => Object(obj) !== obj ? __typeError$e('Cannot use the "in" operator on this value') : member.has(obj);
|
|
395
|
+
var __privateGet$2 = (obj, member, getter) => (__accessCheck$2(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
|
|
396
|
+
var __privateAdd$2 = (obj, member, value) => member.has(obj) ? __typeError$e("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
397
|
+
var __privateSet$2 = (obj, member, value, setter) => (__accessCheck$2(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
|
|
398
|
+
var __privateMethod$2 = (obj, member, method) => (__accessCheck$2(obj, member, "access private method"), method);
|
|
399
|
+
var _active_dec, _a$e, _TableRow_decorators, _TableRow_instances, setActive_fn, refreshHead_fn, refreshTail_fn, refresh_fn, findColumnCell_fn, _init$e, _active, _b$4;
|
|
400
|
+
const mutableAttributes$7 = ["active"];
|
|
401
|
+
_TableRow_decorators = [defineElement({ tagName: tableRowTagName, mutableAttributes: mutableAttributes$7 })];
|
|
402
|
+
class TableRow extends (_b$4 = ViewElement) {
|
|
403
|
+
constructor() {
|
|
404
|
+
super(...arguments);
|
|
405
|
+
__privateAdd$2(this, _TableRow_instances);
|
|
406
|
+
__publicField$2(this, "$start", document.createElement(tableRowStartTagName));
|
|
407
|
+
__publicField$2(this, "$middle", document.createElement(tableRowMiddleTagName));
|
|
408
|
+
__publicField$2(this, "$end", document.createElement(tableRowEndTagName));
|
|
409
|
+
__privateAdd$2(this, _active, __runInitializers$e(_init$e, 8, this, false)), __runInitializers$e(_init$e, 11, this);
|
|
410
|
+
}
|
|
411
|
+
setViewProperty(p, v) {
|
|
412
|
+
if (p === "active" && v && !this.active) {
|
|
413
|
+
__privateMethod$2(this, _TableRow_instances, setActive_fn).call(this);
|
|
414
|
+
return true;
|
|
415
|
+
}
|
|
416
|
+
return super.setViewProperty(p, v);
|
|
417
|
+
}
|
|
418
|
+
connectedCallback() {
|
|
419
|
+
if (this.childElementCount === 0) {
|
|
420
|
+
this.append(this.$start, this.$middle, this.$end);
|
|
421
|
+
}
|
|
422
|
+
if (this.model?.active && !this.active) {
|
|
423
|
+
__privateMethod$2(this, _TableRow_instances, setActive_fn).call(this);
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
// #endregion
|
|
427
|
+
// #region 数据展示
|
|
428
|
+
[(_a$e = handleModelEvent, _active_dec = [boolAttr], _a$e)](source, evt) {
|
|
429
|
+
return new RowModelEventHandler(this, source).handle(evt);
|
|
430
|
+
}
|
|
431
|
+
refresh(ss, refreshCellData = false) {
|
|
432
|
+
__privateMethod$2(this, _TableRow_instances, refresh_fn).call(this, ss.$startColumns, this.$start, refreshCellData);
|
|
433
|
+
__privateMethod$2(this, _TableRow_instances, refresh_fn).call(this, ss.$middleColumns, this.$middle, refreshCellData);
|
|
434
|
+
__privateMethod$2(this, _TableRow_instances, refresh_fn).call(this, ss.$endColumns, this.$end, refreshCellData);
|
|
435
|
+
__privateMethod$2(this, _TableRow_instances, refreshHead_fn).call(this, ss.$columnHeads, refreshCellData);
|
|
436
|
+
__privateMethod$2(this, _TableRow_instances, refreshTail_fn).call(this, ss.$columnTails, refreshCellData);
|
|
437
|
+
}
|
|
438
|
+
_active_set() {
|
|
439
|
+
this.model?.afterActiveChanged?.(this);
|
|
440
|
+
}
|
|
441
|
+
get checked() {
|
|
442
|
+
const $rc = this.querySelector(tableRowCheckTagName);
|
|
443
|
+
if (!$rc) return false;
|
|
444
|
+
return $rc.$chk.checked;
|
|
445
|
+
}
|
|
446
|
+
set checked(v) {
|
|
447
|
+
const $rc = this.querySelector(tableRowCheckTagName);
|
|
448
|
+
if ($rc) {
|
|
449
|
+
$rc.$chk.checked = v;
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
// #endregion
|
|
453
|
+
}
|
|
454
|
+
_init$e = __decoratorStart$e(_b$4);
|
|
455
|
+
_TableRow_instances = /* @__PURE__ */ new WeakSet();
|
|
456
|
+
setActive_fn = function() {
|
|
457
|
+
if (!this.isConnected) {
|
|
458
|
+
return;
|
|
459
|
+
}
|
|
460
|
+
this.dispatchEvent(new MouseEvent("click", { bubbles: true }));
|
|
461
|
+
};
|
|
462
|
+
refreshHead_fn = function($heads, refreshCellData = false) {
|
|
463
|
+
let $lastHead;
|
|
464
|
+
const $start = this.$start;
|
|
465
|
+
for (let i = 0; i < $heads.length; i++) {
|
|
466
|
+
const $h = $heads[i];
|
|
467
|
+
const $head = $h.findInRow(this) || $h.createInRow();
|
|
468
|
+
$head.hidden = !$h.visible;
|
|
469
|
+
if (i === 0) {
|
|
470
|
+
const $fec = $start.firstElementChild;
|
|
471
|
+
if (!$fec) {
|
|
472
|
+
$start.prepend($head);
|
|
473
|
+
} else if ($fec === $head) ;
|
|
474
|
+
else {
|
|
475
|
+
$fec.before($head);
|
|
476
|
+
}
|
|
477
|
+
} else if ($lastHead?.nextElementSibling !== $head) {
|
|
478
|
+
$lastHead?.after($head);
|
|
479
|
+
}
|
|
480
|
+
$lastHead = $head;
|
|
481
|
+
if ($h.dataAware && refreshCellData) {
|
|
482
|
+
$h.refresh(this, $head);
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
};
|
|
486
|
+
refreshTail_fn = function($tails, refreshCellData = false) {
|
|
487
|
+
let $lastTail;
|
|
488
|
+
const $end = this.$end;
|
|
489
|
+
for (let i = $tails.length - 1; i >= 0; i--) {
|
|
490
|
+
const $t = $tails[i];
|
|
491
|
+
const $tail = $t.findInRow(this) || $t.createInRow();
|
|
492
|
+
$tail.hidden = !$t.visible;
|
|
493
|
+
if (i === $tails.length - 1) {
|
|
494
|
+
const $lec = $end.lastElementChild;
|
|
495
|
+
if (!$lec) {
|
|
496
|
+
$end.append($tail);
|
|
497
|
+
} else if ($lec === $tail) ;
|
|
498
|
+
else {
|
|
499
|
+
$lec.after($tail);
|
|
500
|
+
}
|
|
501
|
+
} else if ($lastTail?.previousElementSibling !== $tail) {
|
|
502
|
+
$lastTail?.before($tail);
|
|
503
|
+
}
|
|
504
|
+
$lastTail = $tail;
|
|
505
|
+
if ($t.dataAware && refreshCellData) {
|
|
506
|
+
$t.refresh(this, $tail);
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
};
|
|
510
|
+
refresh_fn = function($columns, $cellParent, refreshCellData) {
|
|
511
|
+
const $cells = Array.from($cellParent.querySelectorAll(tableCellTagName));
|
|
512
|
+
const di = this.model.data;
|
|
513
|
+
let needInsert = false;
|
|
514
|
+
for (let i = 0; i < $columns.length; i++) {
|
|
515
|
+
const $col = $columns[i];
|
|
516
|
+
let $cell;
|
|
517
|
+
if (i >= $cells.length) {
|
|
518
|
+
$cell = $col.createCell(di);
|
|
519
|
+
$cells.push($cell);
|
|
520
|
+
needInsert = true;
|
|
521
|
+
} else {
|
|
522
|
+
const j = __privateMethod$2(this, _TableRow_instances, findColumnCell_fn).call(this, i, $col.key, $cells);
|
|
523
|
+
if (j === i) {
|
|
524
|
+
$cell = $cells[j];
|
|
525
|
+
if (refreshCellData) {
|
|
526
|
+
$col._setCellData($cell, di);
|
|
527
|
+
}
|
|
528
|
+
} else if (j > i) {
|
|
529
|
+
$cell = $cells.splice(j, 1)[0];
|
|
530
|
+
$cells.splice(i, 0, $cell);
|
|
531
|
+
needInsert = true;
|
|
532
|
+
} else {
|
|
533
|
+
$cell = $col.createCell(di);
|
|
534
|
+
$cells.splice(i, 0, $cell);
|
|
535
|
+
needInsert = true;
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
$cell.hidden = !$col.visible;
|
|
539
|
+
}
|
|
540
|
+
if ($cells.length > $columns.length) {
|
|
541
|
+
const $toDel = $cells.splice($columns.length, $cells.length - $columns.length);
|
|
542
|
+
$toDel.forEach(($x) => $x.remove());
|
|
543
|
+
}
|
|
544
|
+
if (needInsert) {
|
|
545
|
+
const $df = document.createDocumentFragment();
|
|
546
|
+
$df.append(...$cells);
|
|
547
|
+
void ($cellParent === this.$end ? $cellParent.prepend($df) : $cellParent.append($df));
|
|
548
|
+
}
|
|
549
|
+
};
|
|
550
|
+
findColumnCell_fn = function(i, colKey, $cells) {
|
|
551
|
+
for (let j = i; j < $cells.length; j++) {
|
|
552
|
+
const $cell = $cells[j];
|
|
553
|
+
if ($cell.colKey === colKey) {
|
|
554
|
+
return j;
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
return -1;
|
|
558
|
+
};
|
|
559
|
+
_active = /* @__PURE__ */ new WeakMap();
|
|
560
|
+
__decorateElement$e(_init$e, 4, "active", _active_dec, TableRow, _active);
|
|
561
|
+
TableRow = __decorateElement$e(_init$e, 0, "TableRow", _TableRow_decorators, TableRow);
|
|
562
|
+
__runInitializers$e(_init$e, 1, TableRow);
|
|
563
|
+
class RowModelEventHandler extends ModelEventHandler {
|
|
564
|
+
handle(arg) {
|
|
565
|
+
const ret = super.handle(arg);
|
|
566
|
+
if (!ret && arg.type === "item-update") {
|
|
567
|
+
const iu = arg;
|
|
568
|
+
if ("data" in iu.updated) {
|
|
569
|
+
const $list = this.$view.closest(tableListTagName);
|
|
570
|
+
if ($list) {
|
|
571
|
+
$list.getRowRefreshFunc()(this.$view, true);
|
|
572
|
+
return true;
|
|
573
|
+
}
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
return ret;
|
|
577
|
+
}
|
|
578
|
+
}
|
|
579
|
+
var __create$d = Object.create;
|
|
580
|
+
var __defProp$d = Object.defineProperty;
|
|
581
|
+
var __getOwnPropDesc$d = Object.getOwnPropertyDescriptor;
|
|
582
|
+
var __knownSymbol$d = (name, symbol) => (symbol = Symbol[name]) ? symbol : /* @__PURE__ */ Symbol.for("Symbol." + name);
|
|
583
|
+
var __typeError$d = (msg) => {
|
|
584
|
+
throw TypeError(msg);
|
|
585
|
+
};
|
|
586
|
+
var __defNormalProp$d = (obj, key, value) => key in obj ? __defProp$d(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
587
|
+
var __name$d = (target, value) => __defProp$d(target, "name", { value, configurable: true });
|
|
588
|
+
var __decoratorStart$d = (base) => [, , , __create$d(base?.[__knownSymbol$d("metadata")] ?? null)];
|
|
589
|
+
var __decoratorStrings$d = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
|
|
590
|
+
var __expectFn$d = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError$d("Function expected") : fn;
|
|
591
|
+
var __decoratorContext$d = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings$d[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError$d("Already initialized") : fns.push(__expectFn$d(fn || null)) });
|
|
592
|
+
var __decoratorMetadata$d = (array, target) => __defNormalProp$d(target, __knownSymbol$d("metadata"), array[3]);
|
|
593
|
+
var __runInitializers$d = (array, flags, self, value) => {
|
|
594
|
+
for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) fns[i].call(self);
|
|
595
|
+
return value;
|
|
596
|
+
};
|
|
597
|
+
var __decorateElement$d = (array, flags, name, decorators, target, extra) => {
|
|
598
|
+
var it, done, ctx, k = flags & 7, p = false;
|
|
599
|
+
var j = 0;
|
|
600
|
+
var extraInitializers = array[j] || (array[j] = []);
|
|
601
|
+
var desc = k && (target = target.prototype, k < 5 && (k > 3 || !p) && __getOwnPropDesc$d(target, name));
|
|
602
|
+
__name$d(target, name);
|
|
603
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
604
|
+
ctx = __decoratorContext$d(k, name, done = {}, array[3], extraInitializers);
|
|
605
|
+
it = (0, decorators[i])(target, ctx), done._ = 1;
|
|
606
|
+
__expectFn$d(it) && (target = it);
|
|
607
|
+
}
|
|
608
|
+
return __decoratorMetadata$d(array, target), desc && __defProp$d(target, name, desc), p ? k ^ 4 ? extra : desc : target;
|
|
609
|
+
};
|
|
610
|
+
var _TableColGroup_decorators, _init$d, _a$d;
|
|
611
|
+
const mutableAttributes$6 = ["hidden"];
|
|
612
|
+
_TableColGroup_decorators = [B.defineElement({ tagName: tableColGroupTagName, mutableAttributes: mutableAttributes$6 })];
|
|
613
|
+
let _TableColGroup = class _TableColGroup2 extends (_a$d = HTMLElement) {
|
|
614
|
+
// #region 子元素
|
|
615
|
+
constructor() {
|
|
616
|
+
super();
|
|
617
|
+
this.$lbl = document.createElement("span");
|
|
618
|
+
this.$menu = B.createTxtBtn("⋮");
|
|
619
|
+
this.$div = document.createElement("div");
|
|
620
|
+
this.$div.append(this.$lbl, this.$menu);
|
|
621
|
+
}
|
|
622
|
+
$div;
|
|
623
|
+
$lbl;
|
|
624
|
+
$menu;
|
|
625
|
+
/**
|
|
626
|
+
*
|
|
627
|
+
* @param {Number} start
|
|
628
|
+
* @returns 所有下级可见列的数量
|
|
629
|
+
*/
|
|
630
|
+
setRow(start) {
|
|
631
|
+
if (this.hidden) {
|
|
632
|
+
throw new Error("call group.setRow() when not hidden");
|
|
633
|
+
}
|
|
634
|
+
const $cols = this.$columns;
|
|
635
|
+
const $gs = this.$groups;
|
|
636
|
+
if ($cols.length === 0 && $gs.length === 0) {
|
|
637
|
+
this.#$p = void 0;
|
|
638
|
+
this.remove();
|
|
639
|
+
return 0;
|
|
640
|
+
}
|
|
641
|
+
this.$div.style.gridRowStart = start.toString();
|
|
642
|
+
start++;
|
|
643
|
+
let colVisible = 0;
|
|
644
|
+
for (const $col of $cols) {
|
|
645
|
+
if ($col.hidden) ;
|
|
646
|
+
else {
|
|
647
|
+
$col.setRow(start);
|
|
648
|
+
colVisible++;
|
|
649
|
+
}
|
|
650
|
+
}
|
|
651
|
+
for (const $group of $gs) {
|
|
652
|
+
if ($group.hidden) ;
|
|
653
|
+
else {
|
|
654
|
+
colVisible += $group.setRow(start);
|
|
655
|
+
}
|
|
656
|
+
}
|
|
657
|
+
if (colVisible === 0) {
|
|
658
|
+
this.hidden = true;
|
|
659
|
+
return 0;
|
|
660
|
+
}
|
|
661
|
+
this.$div.style.gridColumnEnd = "span " + colVisible;
|
|
662
|
+
return colVisible;
|
|
663
|
+
}
|
|
664
|
+
/**
|
|
665
|
+
* 只属于这个 group 的列
|
|
666
|
+
*/
|
|
667
|
+
get $columns() {
|
|
668
|
+
const ret = [];
|
|
669
|
+
for (const $c of this.children) {
|
|
670
|
+
if ($c instanceof TableCol) {
|
|
671
|
+
ret.push($c);
|
|
672
|
+
}
|
|
673
|
+
}
|
|
674
|
+
return ret;
|
|
675
|
+
}
|
|
676
|
+
/**
|
|
677
|
+
* 只属于这个 group 的下级 group
|
|
678
|
+
*/
|
|
679
|
+
get $groups() {
|
|
680
|
+
const ret = [];
|
|
681
|
+
for (const $c of this.children) {
|
|
682
|
+
if ($c instanceof _TableColGroup2) {
|
|
683
|
+
ret.push($c);
|
|
684
|
+
}
|
|
685
|
+
}
|
|
686
|
+
return ret;
|
|
687
|
+
}
|
|
688
|
+
/**
|
|
689
|
+
* 当前列组是否显示
|
|
690
|
+
*/
|
|
691
|
+
get visible() {
|
|
692
|
+
if (this.hidden) {
|
|
693
|
+
return false;
|
|
694
|
+
}
|
|
695
|
+
if (!this.isConnected) {
|
|
696
|
+
return false;
|
|
697
|
+
}
|
|
698
|
+
if (this.#$p instanceof _TableColGroup2) {
|
|
699
|
+
return this.#$p.visible;
|
|
700
|
+
}
|
|
701
|
+
return true;
|
|
702
|
+
}
|
|
703
|
+
/**
|
|
704
|
+
* 当直属于 table-cols,返回 1。
|
|
705
|
+
* grid-row-start 的值也是从 1 开始。
|
|
706
|
+
*/
|
|
707
|
+
get tier() {
|
|
708
|
+
if (this.#$p instanceof _TableColGroup2) {
|
|
709
|
+
return this.#$p.tier + 1;
|
|
710
|
+
}
|
|
711
|
+
return 1;
|
|
712
|
+
}
|
|
713
|
+
// #endregion
|
|
714
|
+
// #region 上级元素
|
|
715
|
+
connectedCallback() {
|
|
716
|
+
if (this.#$p === this.parentElement) return;
|
|
717
|
+
this.prepend(this.$div);
|
|
718
|
+
this.#$p = this.parentElement;
|
|
719
|
+
this.#$p.notify({ groupAdd: true, $group: this });
|
|
720
|
+
}
|
|
721
|
+
#$p;
|
|
722
|
+
//为了 disconnected
|
|
723
|
+
disconnectedCallback() {
|
|
724
|
+
if (this.#$p && !this.parentElement) {
|
|
725
|
+
this.#$p.notify({ groupDel: true, $group: this });
|
|
726
|
+
this.#$p = void 0;
|
|
727
|
+
}
|
|
728
|
+
}
|
|
729
|
+
// #endregion
|
|
730
|
+
// #region ColNoticeReceiver
|
|
731
|
+
notify(n) {
|
|
732
|
+
if ("colAdd" in n && n.colAdd) {
|
|
733
|
+
if (!n.$col.hidden && this.hidden) this.hidden = false;
|
|
734
|
+
}
|
|
735
|
+
this.#$p?.notify(n);
|
|
736
|
+
}
|
|
737
|
+
// #endregion
|
|
738
|
+
// #region 属性
|
|
739
|
+
get label() {
|
|
740
|
+
return this.$lbl.textContent;
|
|
741
|
+
}
|
|
742
|
+
set label(v) {
|
|
743
|
+
this.$lbl.textContent = v;
|
|
744
|
+
}
|
|
745
|
+
_hidden_set() {
|
|
746
|
+
this.notify({ groupHide: true, $group: this });
|
|
747
|
+
}
|
|
748
|
+
// #endregion
|
|
749
|
+
// #region 组菜单
|
|
750
|
+
handleClick(e) {
|
|
751
|
+
if (e.target === this.$menu) {
|
|
752
|
+
this.#showMenu();
|
|
753
|
+
}
|
|
754
|
+
}
|
|
755
|
+
#showMenu() {
|
|
756
|
+
const mis = [
|
|
757
|
+
{
|
|
758
|
+
tag: "click",
|
|
759
|
+
label: this.T.hide,
|
|
760
|
+
group: "action",
|
|
761
|
+
onclick: () => {
|
|
762
|
+
this.hidden = true;
|
|
763
|
+
}
|
|
764
|
+
}
|
|
765
|
+
/* 无法与 table-cols.modelList 同步,所以删除此功能
|
|
766
|
+
{
|
|
767
|
+
label: T.del!(),
|
|
768
|
+
group: 'action',
|
|
769
|
+
onclick: () => {
|
|
770
|
+
this.remove();
|
|
771
|
+
}
|
|
772
|
+
},*/
|
|
773
|
+
];
|
|
774
|
+
for (const $col of this.$columns) {
|
|
775
|
+
const colItem = {
|
|
776
|
+
tag: "check",
|
|
777
|
+
group: "table-col",
|
|
778
|
+
label: $col.label ?? "",
|
|
779
|
+
checked: !$col.hidden,
|
|
780
|
+
onclick() {
|
|
781
|
+
$col.setModelProperty("hidden", !$col.hidden);
|
|
782
|
+
}
|
|
783
|
+
};
|
|
784
|
+
mis.push(colItem);
|
|
785
|
+
}
|
|
786
|
+
const $sm = createMenu(...mis);
|
|
787
|
+
$sm.show(this.$menu, B.xy.rightBottom, B.xy.rightTop);
|
|
788
|
+
}
|
|
789
|
+
// #endregion
|
|
790
|
+
get T() {
|
|
791
|
+
return getTexts(this);
|
|
792
|
+
}
|
|
793
|
+
};
|
|
794
|
+
_init$d = __decoratorStart$d(_a$d);
|
|
795
|
+
_TableColGroup = __decorateElement$d(_init$d, 0, "TableColGroup", _TableColGroup_decorators, _TableColGroup);
|
|
796
|
+
__runInitializers$d(_init$d, 1, _TableColGroup);
|
|
797
|
+
let TableColGroup = _TableColGroup;
|
|
798
|
+
var __create$c = Object.create;
|
|
799
|
+
var __defProp$c = Object.defineProperty;
|
|
800
|
+
var __getOwnPropDesc$c = Object.getOwnPropertyDescriptor;
|
|
801
|
+
var __knownSymbol$c = (name, symbol) => (symbol = Symbol[name]) ? symbol : /* @__PURE__ */ Symbol.for("Symbol." + name);
|
|
802
|
+
var __typeError$c = (msg) => {
|
|
803
|
+
throw TypeError(msg);
|
|
804
|
+
};
|
|
805
|
+
var __defNormalProp$c = (obj, key, value) => key in obj ? __defProp$c(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
806
|
+
var __name$c = (target, value) => __defProp$c(target, "name", { value, configurable: true });
|
|
807
|
+
var __decoratorStart$c = (base) => [, , , __create$c(base?.[__knownSymbol$c("metadata")] ?? null)];
|
|
808
|
+
var __decoratorStrings$c = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
|
|
809
|
+
var __expectFn$c = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError$c("Function expected") : fn;
|
|
810
|
+
var __decoratorContext$c = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings$c[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError$c("Already initialized") : fns.push(__expectFn$c(fn || null)) });
|
|
811
|
+
var __decoratorMetadata$c = (array, target) => __defNormalProp$c(target, __knownSymbol$c("metadata"), array[3]);
|
|
812
|
+
var __runInitializers$c = (array, flags, self, value) => {
|
|
813
|
+
for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) fns[i].call(self);
|
|
814
|
+
return value;
|
|
815
|
+
};
|
|
816
|
+
var __decorateElement$c = (array, flags, name, decorators, target, extra) => {
|
|
817
|
+
var it, done, ctx, k = flags & 7, p = false;
|
|
818
|
+
var j = 0;
|
|
819
|
+
var extraInitializers = array[j] || (array[j] = []);
|
|
820
|
+
var desc = k && (target = target.prototype, k < 5 && (k > 3 || !p) && __getOwnPropDesc$c(target, name));
|
|
821
|
+
__name$c(target, name);
|
|
822
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
823
|
+
ctx = __decoratorContext$c(k, name, done = {}, array[3], extraInitializers);
|
|
824
|
+
it = (0, decorators[i])(target, ctx), done._ = 1;
|
|
825
|
+
__expectFn$c(it) && (target = it);
|
|
826
|
+
}
|
|
827
|
+
return __decoratorMetadata$c(array, target), desc && __defProp$c(target, name, desc), p ? k ^ 4 ? extra : desc : target;
|
|
828
|
+
};
|
|
829
|
+
var _TableColWidthSetter_decorators, _init$c, _a$c;
|
|
830
|
+
const styleSheet = createStyleSheet({
|
|
831
|
+
[tableColWidthSetterTagName]: `
|
|
832
|
+
position: absolute;
|
|
833
|
+
z-index: 100;
|
|
834
|
+
top: 0px;
|
|
835
|
+
left: 0px;
|
|
836
|
+
border: var(--gzm-header-border);
|
|
837
|
+
background: var(--gzm-a-btn-background);
|
|
838
|
+
`,
|
|
839
|
+
[tableColWidthSetterTagName + "> input[type=range]"]: `
|
|
840
|
+
outline-style: none;
|
|
841
|
+
`
|
|
842
|
+
});
|
|
843
|
+
_TableColWidthSetter_decorators = [defineElement({ tagName: tableColWidthSetterTagName, style: styleSheet })];
|
|
844
|
+
class TableColWidthSetter extends (_a$c = HTMLElement) {
|
|
845
|
+
get $range() {
|
|
846
|
+
if (!this.#range) {
|
|
847
|
+
this.#range = document.createElement("input");
|
|
848
|
+
this.#range.type = "range";
|
|
849
|
+
this.append(this.#range);
|
|
850
|
+
}
|
|
851
|
+
return this.#range;
|
|
852
|
+
}
|
|
853
|
+
#range;
|
|
854
|
+
show($col) {
|
|
855
|
+
this.#calcSize($col);
|
|
856
|
+
this.$range.onchange = (e) => {
|
|
857
|
+
const $t = e.target;
|
|
858
|
+
console.debug("table column width range value = " + $t.value);
|
|
859
|
+
$col.width = $t.value + "px";
|
|
860
|
+
this.remove();
|
|
861
|
+
};
|
|
862
|
+
this.setAttribute("popover", "auto");
|
|
863
|
+
new CornerHelper(this, xy.leftTop, $col, xy.leftBottom).pos();
|
|
864
|
+
}
|
|
865
|
+
#calcSize($col) {
|
|
866
|
+
const root = $col.getRootNode();
|
|
867
|
+
const $table = root.host;
|
|
868
|
+
const colRect = $col.getBoundingClientRect();
|
|
869
|
+
const gridRect = $table.getBoundingClientRect();
|
|
870
|
+
const colRight2gridRight = Math.floor(gridRect.right - colRect.right);
|
|
871
|
+
const colRightEmptyWidth = colRight2gridRight - (gridRect.width - $table.clientWidth);
|
|
872
|
+
const max = Math.floor(colRect.width + colRightEmptyWidth);
|
|
873
|
+
const $r = this.$range;
|
|
874
|
+
$r.style.width = max + "px";
|
|
875
|
+
$r.max = max.toString();
|
|
876
|
+
$r.value = colRect.width.toString();
|
|
877
|
+
}
|
|
878
|
+
}
|
|
879
|
+
_init$c = __decoratorStart$c(_a$c);
|
|
880
|
+
TableColWidthSetter = __decorateElement$c(_init$c, 0, "TableColWidthSetter", _TableColWidthSetter_decorators, TableColWidthSetter);
|
|
881
|
+
__runInitializers$c(_init$c, 1, TableColWidthSetter);
|
|
882
|
+
var __create$b = Object.create;
|
|
883
|
+
var __defProp$b = Object.defineProperty;
|
|
884
|
+
var __getOwnPropDesc$b = Object.getOwnPropertyDescriptor;
|
|
885
|
+
var __knownSymbol$b = (name, symbol) => (symbol = Symbol[name]) ? symbol : /* @__PURE__ */ Symbol.for("Symbol." + name);
|
|
886
|
+
var __typeError$b = (msg) => {
|
|
887
|
+
throw TypeError(msg);
|
|
888
|
+
};
|
|
889
|
+
var __defNormalProp$b = (obj, key, value) => key in obj ? __defProp$b(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
890
|
+
var __name$b = (target, value) => __defProp$b(target, "name", { value, configurable: true });
|
|
891
|
+
var __decoratorStart$b = (base) => [, , , __create$b(base?.[__knownSymbol$b("metadata")] ?? null)];
|
|
892
|
+
var __decoratorStrings$b = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
|
|
893
|
+
var __expectFn$b = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError$b("Function expected") : fn;
|
|
894
|
+
var __decoratorContext$b = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings$b[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError$b("Already initialized") : fns.push(__expectFn$b(fn || null)) });
|
|
895
|
+
var __decoratorMetadata$b = (array, target) => __defNormalProp$b(target, __knownSymbol$b("metadata"), array[3]);
|
|
896
|
+
var __runInitializers$b = (array, flags, self, value) => {
|
|
897
|
+
for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);
|
|
898
|
+
return value;
|
|
899
|
+
};
|
|
900
|
+
var __decorateElement$b = (array, flags, name, decorators, target, extra) => {
|
|
901
|
+
var fn, it, done, ctx, access, k = flags & 7, s = !!(flags & 8), p = !!(flags & 16);
|
|
902
|
+
var j = k > 3 ? array.length + 1 : k ? s ? 1 : 2 : 0, key = __decoratorStrings$b[k + 5];
|
|
903
|
+
var initializers = k > 3 && (array[j - 1] = []), extraInitializers = array[j] || (array[j] = []);
|
|
904
|
+
var desc = k && (!p && !s && (target = target.prototype), k < 5 && (k > 3 || !p) && __getOwnPropDesc$b(k < 4 ? target : { get [name]() {
|
|
905
|
+
return __privateGet$1(this, extra);
|
|
906
|
+
}, set [name](x) {
|
|
907
|
+
return __privateSet$1(this, extra, x);
|
|
908
|
+
} }, name));
|
|
909
|
+
k ? p && k < 4 && __name$b(extra, (k > 2 ? "set " : k > 1 ? "get " : "") + name) : __name$b(target, name);
|
|
910
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
911
|
+
ctx = __decoratorContext$b(k, name, done = {}, array[3], extraInitializers);
|
|
912
|
+
if (k) {
|
|
913
|
+
ctx.static = s, ctx.private = p, access = ctx.access = { has: p ? (x) => __privateIn$1(target, x) : (x) => name in x };
|
|
914
|
+
if (k ^ 3) access.get = p ? (x) => (k ^ 1 ? __privateGet$1 : __privateMethod$1)(x, target, k ^ 4 ? extra : desc.get) : (x) => x[name];
|
|
915
|
+
if (k > 2) access.set = p ? (x, y) => __privateSet$1(x, target, y, k ^ 4 ? extra : desc.set) : (x, y) => x[name] = y;
|
|
916
|
+
}
|
|
917
|
+
it = (0, decorators[i])(k ? k < 4 ? p ? extra : desc[key] : k > 4 ? void 0 : { get: desc.get, set: desc.set } : target, ctx), done._ = 1;
|
|
918
|
+
if (k ^ 4 || it === void 0) __expectFn$b(it) && (k > 4 ? initializers.unshift(it) : k ? p ? extra = it : desc[key] = it : target = it);
|
|
919
|
+
else if (typeof it !== "object" || it === null) __typeError$b("Object expected");
|
|
920
|
+
else __expectFn$b(fn = it.get) && (desc.get = fn), __expectFn$b(fn = it.set) && (desc.set = fn), __expectFn$b(fn = it.init) && initializers.unshift(fn);
|
|
921
|
+
}
|
|
922
|
+
return k || __decoratorMetadata$b(array, target), desc && __defProp$b(target, name, desc), p ? k ^ 4 ? extra : desc : target;
|
|
923
|
+
};
|
|
924
|
+
var __publicField$1 = (obj, key, value) => __defNormalProp$b(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
925
|
+
var __accessCheck$1 = (obj, member, msg) => member.has(obj) || __typeError$b("Cannot " + msg);
|
|
926
|
+
var __privateIn$1 = (member, obj) => Object(obj) !== obj ? __typeError$b('Cannot use the "in" operator on this value') : member.has(obj);
|
|
927
|
+
var __privateGet$1 = (obj, member, getter) => (__accessCheck$1(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
|
|
928
|
+
var __privateAdd$1 = (obj, member, value) => member.has(obj) ? __typeError$b("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
929
|
+
var __privateSet$1 = (obj, member, value, setter) => (__accessCheck$1(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
|
|
930
|
+
var __privateMethod$1 = (obj, member, method) => (__accessCheck$1(obj, member, "access private method"), method);
|
|
931
|
+
var _agg_dec, _align_dec, _sort_dec, _width_dec, _label_dec, _key_dec, _a$b, _TableCol_decorators, _lbl, _$p, _vm, _TableCol_instances, setCellData_fn, createCellLink_fn, getDisplayFromList_fn, setCellStyle_fn, _init$b, _key, _label, _width, _sort, _align, _wrap, _agg, _agg2, showAggMenu_fn, createAggMenu_fn, _menuBtn, showMenu_fn, createMenu_fn, createWrapMenu_fn, createSortMenu_fn, createAlignMenu_fn, showWidthPopup_fn, sort_fn;
|
|
932
|
+
const sortAsc = "▲";
|
|
933
|
+
const sortDesc = "▼";
|
|
934
|
+
const tableColSort = ["", sortAsc, sortDesc];
|
|
935
|
+
function isAscSort(s) {
|
|
936
|
+
return s === sortAsc;
|
|
937
|
+
}
|
|
938
|
+
const tableColAlign = ["start", "end", "center", "justify"];
|
|
939
|
+
const mutableAttributes$5 = ["key", "label", "width", "hidden", "sort", "agg", "align"];
|
|
940
|
+
_TableCol_decorators = [B.defineElement({ tagName: tableColTagName, mutableAttributes: mutableAttributes$5 })];
|
|
941
|
+
class TableCol extends (_a$b = M.ViewElement, _key_dec = [B.strAttr], _label_dec = [B.strAttr], _width_dec = [B.strAttr], _sort_dec = [B.strAttr], _align_dec = [B.strAttr], _agg_dec = [B.strAttr], _a$b) {
|
|
942
|
+
constructor() {
|
|
943
|
+
super(...arguments);
|
|
944
|
+
__privateAdd$1(this, _TableCol_instances);
|
|
945
|
+
__privateAdd$1(this, _lbl);
|
|
946
|
+
__publicField$1(this, "$btns");
|
|
947
|
+
__privateAdd$1(this, _$p);
|
|
948
|
+
__privateAdd$1(this, _vm);
|
|
949
|
+
__privateAdd$1(this, _key, __runInitializers$b(_init$b, 8, this)), __runInitializers$b(_init$b, 11, this);
|
|
950
|
+
__privateAdd$1(this, _label, __runInitializers$b(_init$b, 12, this)), __runInitializers$b(_init$b, 15, this);
|
|
951
|
+
__privateAdd$1(this, _width, __runInitializers$b(_init$b, 16, this, "auto")), __runInitializers$b(_init$b, 19, this);
|
|
952
|
+
__privateAdd$1(this, _sort, __runInitializers$b(_init$b, 20, this, tableColSort[0])), __runInitializers$b(_init$b, 23, this);
|
|
953
|
+
__privateAdd$1(this, _align, __runInitializers$b(_init$b, 24, this, tableColAlign[0])), __runInitializers$b(_init$b, 27, this);
|
|
954
|
+
__privateAdd$1(this, _wrap);
|
|
955
|
+
__privateAdd$1(this, _agg, __runInitializers$b(_init$b, 28, this)), __runInitializers$b(_init$b, 31, this);
|
|
956
|
+
__privateAdd$1(this, _agg2);
|
|
957
|
+
__publicField$1(this, "$aggBtn");
|
|
958
|
+
__privateAdd$1(this, _menuBtn);
|
|
959
|
+
}
|
|
960
|
+
// #region 子元素
|
|
961
|
+
get $lbl() {
|
|
962
|
+
if (!__privateGet$1(this, _lbl)) {
|
|
963
|
+
__privateSet$1(this, _lbl, document.createElement("span"));
|
|
964
|
+
this.prepend(__privateGet$1(this, _lbl));
|
|
965
|
+
}
|
|
966
|
+
return __privateGet$1(this, _lbl);
|
|
967
|
+
}
|
|
968
|
+
/**
|
|
969
|
+
* $lbl 之后允许有多个按钮,最后两个是 agg 按钮和 menu 按钮,但有可能不生成。
|
|
970
|
+
* btns 按钮在 $lbl 和 agg 按钮之间
|
|
971
|
+
*/
|
|
972
|
+
set btns(v) {
|
|
973
|
+
let $bs = this.$btns;
|
|
974
|
+
if (!v || !v.length) {
|
|
975
|
+
$bs?.forEach(($b) => $b.remove());
|
|
976
|
+
return;
|
|
977
|
+
}
|
|
978
|
+
const $df = document.createDocumentFragment();
|
|
979
|
+
for (const b of v) {
|
|
980
|
+
let $btn = $bs?.find(($b) => $b.textContent === b.icon);
|
|
981
|
+
if (!$btn) {
|
|
982
|
+
$btn = B.createTxtBtn(b.icon);
|
|
983
|
+
$btn.title = b.title;
|
|
984
|
+
}
|
|
985
|
+
$df.appendChild($btn);
|
|
986
|
+
}
|
|
987
|
+
$bs = this.$btns = Array.from($df.children);
|
|
988
|
+
this.$lbl.after(...$bs);
|
|
989
|
+
}
|
|
990
|
+
//生成的按钮数组
|
|
991
|
+
// #endregion
|
|
992
|
+
// #region 上级元素
|
|
993
|
+
connectedCallback() {
|
|
994
|
+
if (__privateGet$1(this, _$p) === this.parentElement) return;
|
|
995
|
+
__privateSet$1(this, _$p, this.parentElement);
|
|
996
|
+
__privateGet$1(this, _$p).notify({ colAdd: true, $col: this });
|
|
997
|
+
void this.$menuBtn;
|
|
998
|
+
}
|
|
999
|
+
//父元素, disconnectedCallback 的时候有用。
|
|
1000
|
+
disconnectedCallback() {
|
|
1001
|
+
if (!this.parentElement && __privateGet$1(this, _$p)) {
|
|
1002
|
+
this.$agg.remove();
|
|
1003
|
+
__privateGet$1(this, _$p).notify({ colDel: true, $col: this });
|
|
1004
|
+
__privateSet$1(this, _$p, void 0);
|
|
1005
|
+
}
|
|
1006
|
+
}
|
|
1007
|
+
get visible() {
|
|
1008
|
+
if (this.hidden) {
|
|
1009
|
+
return false;
|
|
1010
|
+
}
|
|
1011
|
+
const $p = __privateGet$1(this, _$p);
|
|
1012
|
+
if (!$p) {
|
|
1013
|
+
return false;
|
|
1014
|
+
}
|
|
1015
|
+
if ($p instanceof TableColGroup) {
|
|
1016
|
+
return $p.visible;
|
|
1017
|
+
}
|
|
1018
|
+
return true;
|
|
1019
|
+
}
|
|
1020
|
+
/**
|
|
1021
|
+
* 如果没有任何 group,那么每一列都应该调用 setRow(1)
|
|
1022
|
+
*/
|
|
1023
|
+
setRow(start) {
|
|
1024
|
+
this.style.gridRowStart = start.toString();
|
|
1025
|
+
}
|
|
1026
|
+
// #endregion
|
|
1027
|
+
// #region 数据展示
|
|
1028
|
+
get valueMember() {
|
|
1029
|
+
return __privateGet$1(this, _vm);
|
|
1030
|
+
}
|
|
1031
|
+
set valueMember(v) {
|
|
1032
|
+
if (!(v instanceof M.ObjMember)) {
|
|
1033
|
+
v = new M.ObjMember(v);
|
|
1034
|
+
}
|
|
1035
|
+
__privateSet$1(this, _vm, v);
|
|
1036
|
+
__privateGet$1(this, _$p)?.notify({ colRefresh: true, $col: this });
|
|
1037
|
+
}
|
|
1038
|
+
set listSource(_) {
|
|
1039
|
+
__privateGet$1(this, _$p)?.notify({ colRefresh: true, $col: this });
|
|
1040
|
+
}
|
|
1041
|
+
createCell(dataItem) {
|
|
1042
|
+
const ret = document.createElement(tableCellTagName);
|
|
1043
|
+
ret.colKey = this.key;
|
|
1044
|
+
ret.hidden = this.hidden;
|
|
1045
|
+
__privateMethod$1(this, _TableCol_instances, setCellStyle_fn).call(this, ret);
|
|
1046
|
+
this._setCellData(ret, dataItem);
|
|
1047
|
+
return ret;
|
|
1048
|
+
}
|
|
1049
|
+
_setCellData($cell, dataItem = $cell.$row.model.data) {
|
|
1050
|
+
$cell.textContent = "";
|
|
1051
|
+
if (!dataItem) return;
|
|
1052
|
+
const dv = this.valueMember?.getObjValue(dataItem) ?? new M.ObjValue(void 0);
|
|
1053
|
+
__privateMethod$1(this, _TableCol_instances, setCellData_fn).call(this, $cell, dv);
|
|
1054
|
+
__privateMethod$1(this, _TableCol_instances, createCellLink_fn).call(this, $cell, dataItem, dv);
|
|
1055
|
+
}
|
|
1056
|
+
_key_set() {
|
|
1057
|
+
__privateMethod$1(this, _TableCol_instances, setCellStyle_fn).call(this, this.$agg);
|
|
1058
|
+
const a = this.align;
|
|
1059
|
+
if (a !== tableColAlign[0]) {
|
|
1060
|
+
this._align_set(a);
|
|
1061
|
+
}
|
|
1062
|
+
this._wrap_set(this.wrap);
|
|
1063
|
+
}
|
|
1064
|
+
_label_set(nv) {
|
|
1065
|
+
this.$lbl.textContent = nv;
|
|
1066
|
+
}
|
|
1067
|
+
_width_set() {
|
|
1068
|
+
__privateGet$1(this, _$p)?.notify({ colWidth: true, $col: this });
|
|
1069
|
+
}
|
|
1070
|
+
_sort_set() {
|
|
1071
|
+
__privateGet$1(this, _$p)?.notify({ colSort: true, $col: this });
|
|
1072
|
+
}
|
|
1073
|
+
get isAscSort() {
|
|
1074
|
+
return isAscSort(this.sort);
|
|
1075
|
+
}
|
|
1076
|
+
_align_set(nv) {
|
|
1077
|
+
const key = this.key;
|
|
1078
|
+
const $list = this.closest(tableListTagName);
|
|
1079
|
+
$list?.style.setProperty(`--gzm-text-align-${key}`, nv);
|
|
1080
|
+
}
|
|
1081
|
+
//因为 attribute 中的 bool 属性无法实现 3 种状态,所以这里没有使用 attribute。
|
|
1082
|
+
get wrap() {
|
|
1083
|
+
return __privateGet$1(this, _wrap);
|
|
1084
|
+
}
|
|
1085
|
+
set wrap(v) {
|
|
1086
|
+
__privateSet$1(this, _wrap, v);
|
|
1087
|
+
this._wrap_set(v);
|
|
1088
|
+
}
|
|
1089
|
+
_wrap_set(nv) {
|
|
1090
|
+
let whiteSpace = "normal";
|
|
1091
|
+
let wordBreak = "normal";
|
|
1092
|
+
switch (nv) {
|
|
1093
|
+
case true:
|
|
1094
|
+
wordBreak = "break-all";
|
|
1095
|
+
break;
|
|
1096
|
+
case false:
|
|
1097
|
+
whiteSpace = "nowrap";
|
|
1098
|
+
break;
|
|
1099
|
+
}
|
|
1100
|
+
const key = this.key;
|
|
1101
|
+
const $list = this.closest(tableListTagName);
|
|
1102
|
+
$list?.style.setProperty(`--gzm-white-space-${key}`, whiteSpace);
|
|
1103
|
+
$list?.style.setProperty(`--gzm-word-break-${key}`, wordBreak);
|
|
1104
|
+
}
|
|
1105
|
+
_agg_set() {
|
|
1106
|
+
this.aggValue = new M.ObjValue(void 0);
|
|
1107
|
+
__privateGet$1(this, _$p)?.notify({ colAgg: true, $col: this });
|
|
1108
|
+
}
|
|
1109
|
+
_hidden_set() {
|
|
1110
|
+
this.$agg.hidden = this.hidden;
|
|
1111
|
+
__privateGet$1(this, _$p)?.notify({ colHide: true, $col: this });
|
|
1112
|
+
console.debug(`grid column ${this.label} hidden = ${this.hidden}.
|
|
1113
|
+
`);
|
|
1114
|
+
}
|
|
1115
|
+
// #endregion
|
|
1116
|
+
// #region 聚合
|
|
1117
|
+
/**
|
|
1118
|
+
* 这个元素由列生成,但是不会作为列的子元素
|
|
1119
|
+
*/
|
|
1120
|
+
get $agg() {
|
|
1121
|
+
if (!__privateGet$1(this, _agg2)) {
|
|
1122
|
+
const $agg = __privateSet$1(this, _agg2, document.createElement(tableAggTagName));
|
|
1123
|
+
$agg.hidden = this.hidden;
|
|
1124
|
+
}
|
|
1125
|
+
return __privateGet$1(this, _agg2);
|
|
1126
|
+
}
|
|
1127
|
+
set aggValue(v) {
|
|
1128
|
+
const $a = this.$agg;
|
|
1129
|
+
const agg = this.agg;
|
|
1130
|
+
if (agg) {
|
|
1131
|
+
$a.setAttribute("title", Reflect.get(this.T, agg));
|
|
1132
|
+
__privateMethod$1(this, _TableCol_instances, setCellData_fn).call(this, $a, v);
|
|
1133
|
+
} else {
|
|
1134
|
+
$a.removeAttribute("title");
|
|
1135
|
+
$a.textContent = "";
|
|
1136
|
+
}
|
|
1137
|
+
}
|
|
1138
|
+
/**
|
|
1139
|
+
* model.aggs 中的属性设置,无需保存在成员中。只是检查按钮是否存在。
|
|
1140
|
+
*/
|
|
1141
|
+
set aggs(v) {
|
|
1142
|
+
if (v && v.length) {
|
|
1143
|
+
let $btn = this.$aggBtn;
|
|
1144
|
+
if (!$btn) {
|
|
1145
|
+
$btn = this.$aggBtn = B.createTxtBtn("𝚺");
|
|
1146
|
+
this.$menuBtn.before($btn);
|
|
1147
|
+
}
|
|
1148
|
+
} else {
|
|
1149
|
+
this.$aggBtn?.remove();
|
|
1150
|
+
this.$aggBtn = void 0;
|
|
1151
|
+
}
|
|
1152
|
+
}
|
|
1153
|
+
// #endregion
|
|
1154
|
+
// #region 菜单
|
|
1155
|
+
get $menuBtn() {
|
|
1156
|
+
if (!__privateGet$1(this, _menuBtn)) {
|
|
1157
|
+
__privateSet$1(this, _menuBtn, B.createTxtBtn("⋮"));
|
|
1158
|
+
this.append(__privateGet$1(this, _menuBtn));
|
|
1159
|
+
}
|
|
1160
|
+
return __privateGet$1(this, _menuBtn);
|
|
1161
|
+
}
|
|
1162
|
+
get noMenu() {
|
|
1163
|
+
return this.$menuBtn.hidden;
|
|
1164
|
+
}
|
|
1165
|
+
set noMenu(b) {
|
|
1166
|
+
this.$menuBtn.hidden = b;
|
|
1167
|
+
}
|
|
1168
|
+
// #endregion
|
|
1169
|
+
// #region 鼠标点击
|
|
1170
|
+
handleClick(e) {
|
|
1171
|
+
const $t = e.target;
|
|
1172
|
+
if ($t === this.$aggBtn) {
|
|
1173
|
+
__privateMethod$1(this, _TableCol_instances, showAggMenu_fn).call(this);
|
|
1174
|
+
} else if ($t === this.$menuBtn) {
|
|
1175
|
+
__privateMethod$1(this, _TableCol_instances, showMenu_fn).call(this);
|
|
1176
|
+
} else if (e.target === this.$lbl) {
|
|
1177
|
+
__privateMethod$1(this, _TableCol_instances, sort_fn).call(this);
|
|
1178
|
+
} else if (this.$btns?.includes($t)) {
|
|
1179
|
+
const i = this.$btns.indexOf($t);
|
|
1180
|
+
const func = this.model?.btns?.[i]?.onclick;
|
|
1181
|
+
func?.(this, $t);
|
|
1182
|
+
}
|
|
1183
|
+
}
|
|
1184
|
+
// #endregion
|
|
1185
|
+
get T() {
|
|
1186
|
+
return getTexts(this);
|
|
1187
|
+
}
|
|
1188
|
+
}
|
|
1189
|
+
_init$b = __decoratorStart$b(_a$b);
|
|
1190
|
+
_lbl = /* @__PURE__ */ new WeakMap();
|
|
1191
|
+
_$p = /* @__PURE__ */ new WeakMap();
|
|
1192
|
+
_vm = /* @__PURE__ */ new WeakMap();
|
|
1193
|
+
_TableCol_instances = /* @__PURE__ */ new WeakSet();
|
|
1194
|
+
setCellData_fn = function($cell, dv) {
|
|
1195
|
+
dv = __privateMethod$1(this, _TableCol_instances, getDisplayFromList_fn).call(this, dv) || dv;
|
|
1196
|
+
$cell.textContent = dv.toString(this);
|
|
1197
|
+
};
|
|
1198
|
+
createCellLink_fn = function($cell, dataItem, dataValue) {
|
|
1199
|
+
this.model?.setCellContent?.({
|
|
1200
|
+
$cell,
|
|
1201
|
+
$col: this,
|
|
1202
|
+
dataItem,
|
|
1203
|
+
dataValue
|
|
1204
|
+
});
|
|
1205
|
+
};
|
|
1206
|
+
getDisplayFromList_fn = function(dv) {
|
|
1207
|
+
const ls = this.model?.listSource;
|
|
1208
|
+
return ls?.getListDisplay(dv);
|
|
1209
|
+
};
|
|
1210
|
+
setCellStyle_fn = function($cell) {
|
|
1211
|
+
const key = this.key;
|
|
1212
|
+
$cell.style.textAlign = `var(--gzm-text-align-${key}, start)`;
|
|
1213
|
+
$cell.style.whiteSpace = `var(--gzm-white-space-${key}, normal)`;
|
|
1214
|
+
$cell.style.wordBreak = `var(--gzm-word-break-${key}, normal)`;
|
|
1215
|
+
};
|
|
1216
|
+
_key = /* @__PURE__ */ new WeakMap();
|
|
1217
|
+
_label = /* @__PURE__ */ new WeakMap();
|
|
1218
|
+
_width = /* @__PURE__ */ new WeakMap();
|
|
1219
|
+
_sort = /* @__PURE__ */ new WeakMap();
|
|
1220
|
+
_align = /* @__PURE__ */ new WeakMap();
|
|
1221
|
+
_wrap = /* @__PURE__ */ new WeakMap();
|
|
1222
|
+
_agg = /* @__PURE__ */ new WeakMap();
|
|
1223
|
+
_agg2 = /* @__PURE__ */ new WeakMap();
|
|
1224
|
+
showAggMenu_fn = function() {
|
|
1225
|
+
const mis = __privateMethod$1(this, _TableCol_instances, createAggMenu_fn).call(this);
|
|
1226
|
+
if (!mis || !mis.length) {
|
|
1227
|
+
this.$aggBtn?.showTooltip({
|
|
1228
|
+
render: ($tt) => {
|
|
1229
|
+
$tt.textContent = this.T.noMenuSet;
|
|
1230
|
+
}
|
|
1231
|
+
});
|
|
1232
|
+
return;
|
|
1233
|
+
}
|
|
1234
|
+
const $m = createMenu(...mis);
|
|
1235
|
+
$m.show(this.$aggBtn, B.xy.rightBottom, B.xy.rightTop);
|
|
1236
|
+
};
|
|
1237
|
+
createAggMenu_fn = function() {
|
|
1238
|
+
let aggs = this.model?.aggs;
|
|
1239
|
+
if (!aggs || !aggs.length) {
|
|
1240
|
+
return [];
|
|
1241
|
+
}
|
|
1242
|
+
const ta = this.agg ?? "";
|
|
1243
|
+
if (ta && !aggs.includes(ta)) {
|
|
1244
|
+
aggs = [ta, ...aggs];
|
|
1245
|
+
}
|
|
1246
|
+
aggs = ["", ...aggs];
|
|
1247
|
+
const T = this.T;
|
|
1248
|
+
const group = "agg";
|
|
1249
|
+
const items = aggs.map((a) => {
|
|
1250
|
+
return {
|
|
1251
|
+
tag: "radio",
|
|
1252
|
+
label: a ? Reflect.get(T, a) : T.noAgg,
|
|
1253
|
+
group,
|
|
1254
|
+
checked: ta === a,
|
|
1255
|
+
onclick: () => {
|
|
1256
|
+
this.setModelProperty("agg", a);
|
|
1257
|
+
}
|
|
1258
|
+
};
|
|
1259
|
+
});
|
|
1260
|
+
return items;
|
|
1261
|
+
};
|
|
1262
|
+
_menuBtn = /* @__PURE__ */ new WeakMap();
|
|
1263
|
+
showMenu_fn = function() {
|
|
1264
|
+
const mis = __privateMethod$1(this, _TableCol_instances, createMenu_fn).call(this);
|
|
1265
|
+
if (!mis || !mis.length) {
|
|
1266
|
+
this.$menuBtn.showTooltip({
|
|
1267
|
+
render: ($tt) => {
|
|
1268
|
+
$tt.textContent = this.T.noMenuSet;
|
|
1269
|
+
}
|
|
1270
|
+
});
|
|
1271
|
+
return;
|
|
1272
|
+
}
|
|
1273
|
+
const $m = createMenu(...mis);
|
|
1274
|
+
$m.show(this.$menuBtn, B.xy.rightBottom, B.xy.rightTop);
|
|
1275
|
+
};
|
|
1276
|
+
createMenu_fn = function() {
|
|
1277
|
+
const T = this.T;
|
|
1278
|
+
const hideItem = { tag: "click", label: T.hide, group: "c", onclick: () => this.setModelProperty("hidden", true) };
|
|
1279
|
+
const alignItem = { tag: "menu", label: T.textAlign, subItems: __privateMethod$1(this, _TableCol_instances, createAlignMenu_fn).call(this), group: "m" };
|
|
1280
|
+
const wrapItem = { tag: "menu", label: T.textWrap, subItems: __privateMethod$1(this, _TableCol_instances, createWrapMenu_fn).call(this), group: "m" };
|
|
1281
|
+
const sortItem = { tag: "menu", label: T.sort, subItems: __privateMethod$1(this, _TableCol_instances, createSortMenu_fn).call(this), group: "m" };
|
|
1282
|
+
const autoWidthItem = { tag: "radio", label: T.autoWidth, group: "width", onclick: () => this.setModelProperty("width", "auto") };
|
|
1283
|
+
const minItem = { tag: "radio", label: T.minWidth, group: "width", onclick: () => this.setModelProperty("width", "min-content") };
|
|
1284
|
+
const maxItem = { tag: "radio", label: T.maxWidth, group: "width", onclick: () => this.setModelProperty("width", "max-content") };
|
|
1285
|
+
const pxItem = { tag: "radio", label: T.pxWidth, group: "width", onclick: () => __privateMethod$1(this, _TableCol_instances, showWidthPopup_fn).call(this) };
|
|
1286
|
+
switch (this.width) {
|
|
1287
|
+
case "min-content":
|
|
1288
|
+
minItem.checked = true;
|
|
1289
|
+
break;
|
|
1290
|
+
case "max-content":
|
|
1291
|
+
maxItem.checked = true;
|
|
1292
|
+
break;
|
|
1293
|
+
case "auto":
|
|
1294
|
+
autoWidthItem.checked = true;
|
|
1295
|
+
break;
|
|
1296
|
+
default:
|
|
1297
|
+
{
|
|
1298
|
+
const regex = /^\d+(\.\d+)?px$/;
|
|
1299
|
+
if (regex.test(this.width)) {
|
|
1300
|
+
pxItem.checked = true;
|
|
1301
|
+
}
|
|
1302
|
+
}
|
|
1303
|
+
break;
|
|
1304
|
+
}
|
|
1305
|
+
const menuItems = [hideItem, alignItem, wrapItem, sortItem, autoWidthItem, minItem, maxItem, pxItem];
|
|
1306
|
+
this.model?.beforeMenuShow?.(menuItems, this.model);
|
|
1307
|
+
return menuItems;
|
|
1308
|
+
};
|
|
1309
|
+
createWrapMenu_fn = function() {
|
|
1310
|
+
const T = this.T;
|
|
1311
|
+
const Ts = [
|
|
1312
|
+
T.autoWrap,
|
|
1313
|
+
T.mustWrap,
|
|
1314
|
+
//url,email 这类字符串不换行,强制其换行。
|
|
1315
|
+
T.noWrap
|
|
1316
|
+
//中文文本会自动换行,强制其不换行。
|
|
1317
|
+
];
|
|
1318
|
+
const tw = this.wrap;
|
|
1319
|
+
const tableColWrap = [void 0, true, false];
|
|
1320
|
+
const items = tableColWrap.map((w, i) => {
|
|
1321
|
+
return {
|
|
1322
|
+
tag: "radio",
|
|
1323
|
+
label: Ts[i],
|
|
1324
|
+
checked: tw === w,
|
|
1325
|
+
onclick: () => {
|
|
1326
|
+
this.setModelProperty("wrap", w);
|
|
1327
|
+
}
|
|
1328
|
+
};
|
|
1329
|
+
});
|
|
1330
|
+
return items;
|
|
1331
|
+
};
|
|
1332
|
+
createSortMenu_fn = function() {
|
|
1333
|
+
const T = this.T;
|
|
1334
|
+
const Ts = [
|
|
1335
|
+
T.noSort,
|
|
1336
|
+
T.asc,
|
|
1337
|
+
T.desc
|
|
1338
|
+
];
|
|
1339
|
+
const ta = this.sort;
|
|
1340
|
+
const items = tableColSort.map((s, i) => {
|
|
1341
|
+
return {
|
|
1342
|
+
tag: "radio",
|
|
1343
|
+
label: Ts[i],
|
|
1344
|
+
checked: ta === s,
|
|
1345
|
+
onclick: () => {
|
|
1346
|
+
this.setModelProperty("sort", s);
|
|
1347
|
+
}
|
|
1348
|
+
};
|
|
1349
|
+
});
|
|
1350
|
+
return items;
|
|
1351
|
+
};
|
|
1352
|
+
createAlignMenu_fn = function() {
|
|
1353
|
+
const T = this.T;
|
|
1354
|
+
const Ts = [
|
|
1355
|
+
T.startAlign,
|
|
1356
|
+
T.endAlign,
|
|
1357
|
+
T.centerAlign,
|
|
1358
|
+
T.justifyAlign
|
|
1359
|
+
];
|
|
1360
|
+
const ta = this.align;
|
|
1361
|
+
const items = tableColAlign.map((a, i) => {
|
|
1362
|
+
return {
|
|
1363
|
+
tag: "radio",
|
|
1364
|
+
label: Ts[i],
|
|
1365
|
+
checked: ta === a,
|
|
1366
|
+
onclick: () => {
|
|
1367
|
+
this.setModelProperty("align", a);
|
|
1368
|
+
}
|
|
1369
|
+
};
|
|
1370
|
+
});
|
|
1371
|
+
return items;
|
|
1372
|
+
};
|
|
1373
|
+
showWidthPopup_fn = function() {
|
|
1374
|
+
const $setter = document.createElement(tableColWidthSetterTagName);
|
|
1375
|
+
$setter.show(this);
|
|
1376
|
+
};
|
|
1377
|
+
sort_fn = function() {
|
|
1378
|
+
let s = this.sort;
|
|
1379
|
+
const i = tableColSort.indexOf(s);
|
|
1380
|
+
s = tableColSort[i + 1] ?? tableColSort[0];
|
|
1381
|
+
this.setModelProperty("sort", s);
|
|
1382
|
+
};
|
|
1383
|
+
__decorateElement$b(_init$b, 4, "key", _key_dec, TableCol, _key);
|
|
1384
|
+
__decorateElement$b(_init$b, 4, "label", _label_dec, TableCol, _label);
|
|
1385
|
+
__decorateElement$b(_init$b, 4, "width", _width_dec, TableCol, _width);
|
|
1386
|
+
__decorateElement$b(_init$b, 4, "sort", _sort_dec, TableCol, _sort);
|
|
1387
|
+
__decorateElement$b(_init$b, 4, "align", _align_dec, TableCol, _align);
|
|
1388
|
+
__decorateElement$b(_init$b, 4, "agg", _agg_dec, TableCol, _agg);
|
|
1389
|
+
TableCol = __decorateElement$b(_init$b, 0, "TableCol", _TableCol_decorators, TableCol);
|
|
1390
|
+
__runInitializers$b(_init$b, 1, TableCol);
|
|
1391
|
+
class Snapshot {
|
|
1392
|
+
constructor($t) {
|
|
1393
|
+
this.$t = $t;
|
|
1394
|
+
}
|
|
1395
|
+
$t;
|
|
1396
|
+
// #region 列
|
|
1397
|
+
get $startColumns() {
|
|
1398
|
+
return this.#startCols ??= Array.from(this.$t.$colStartCols.querySelectorAll(tableColTagName));
|
|
1399
|
+
}
|
|
1400
|
+
#startCols;
|
|
1401
|
+
get $startColumnsVisible() {
|
|
1402
|
+
return this.#startColsVisible ??= this.$startColumns.filter(($c) => $c.visible);
|
|
1403
|
+
}
|
|
1404
|
+
#startColsVisible;
|
|
1405
|
+
get $middleColumns() {
|
|
1406
|
+
return this.#middleCols ??= Array.from(this.$t.$colMiddleCols.querySelectorAll(tableColTagName));
|
|
1407
|
+
}
|
|
1408
|
+
#middleCols;
|
|
1409
|
+
get $middleColumnsVisible() {
|
|
1410
|
+
return this.#middleColsVisible ??= this.$middleColumns.filter(($c) => $c.visible);
|
|
1411
|
+
}
|
|
1412
|
+
#middleColsVisible;
|
|
1413
|
+
get $endColumns() {
|
|
1414
|
+
return this.#endCols ??= Array.from(this.$t.$colEndCols.querySelectorAll(tableColTagName));
|
|
1415
|
+
}
|
|
1416
|
+
#endCols;
|
|
1417
|
+
get $endColumnsVisible() {
|
|
1418
|
+
return this.#endColsVisible ??= this.$endColumns.filter(($c) => $c.visible);
|
|
1419
|
+
}
|
|
1420
|
+
#endColsVisible;
|
|
1421
|
+
get $columns() {
|
|
1422
|
+
return this.#cols ??= Array.from(this.$t.querySelectorAll(tableColTagName));
|
|
1423
|
+
}
|
|
1424
|
+
#cols;
|
|
1425
|
+
get $columnsVisible() {
|
|
1426
|
+
return this.#colsVisible ??= this.$columns.filter((c) => c.visible);
|
|
1427
|
+
}
|
|
1428
|
+
#colsVisible;
|
|
1429
|
+
get $columnsNeedAgg() {
|
|
1430
|
+
return this.#colsNeedAgg ??= this.$columnsVisible.filter((c) => c.agg);
|
|
1431
|
+
}
|
|
1432
|
+
#colsNeedAgg;
|
|
1433
|
+
get $columnsWantSort() {
|
|
1434
|
+
return this.#colsWantSort ??= this.$columnsVisible.filter((c) => c.sort);
|
|
1435
|
+
}
|
|
1436
|
+
#colsWantSort;
|
|
1437
|
+
// #endregion
|
|
1438
|
+
// #region 头和尾
|
|
1439
|
+
get $columnHeads() {
|
|
1440
|
+
return this.#colHeads ??= Array.from(this.$t.$colHead.children);
|
|
1441
|
+
}
|
|
1442
|
+
#colHeads;
|
|
1443
|
+
get $columnHeadsVisible() {
|
|
1444
|
+
return this.#colHeadsVisible ??= this.$columnHeads.filter(($c) => !$c.hidden);
|
|
1445
|
+
}
|
|
1446
|
+
#colHeadsVisible;
|
|
1447
|
+
get $columnTails() {
|
|
1448
|
+
return this.#colTails ??= Array.from(this.$t.$colTail.children);
|
|
1449
|
+
}
|
|
1450
|
+
#colTails;
|
|
1451
|
+
get $columnTailsVisible() {
|
|
1452
|
+
return this.#colTailsVisible ??= this.$columnTails.filter(($c) => !$c.hidden);
|
|
1453
|
+
}
|
|
1454
|
+
#colTailsVisible;
|
|
1455
|
+
// #endregion
|
|
1456
|
+
// #region 行
|
|
1457
|
+
get $rows() {
|
|
1458
|
+
return this.#rows ??= Array.from(this.$t.$rows.querySelectorAll(tableRowTagName));
|
|
1459
|
+
}
|
|
1460
|
+
#rows;
|
|
1461
|
+
get $rowsActive() {
|
|
1462
|
+
return this.#rowsActive ??= this.$rows.filter(($row) => $row.active);
|
|
1463
|
+
}
|
|
1464
|
+
#rowsActive;
|
|
1465
|
+
// #endregion
|
|
1466
|
+
// #region 列组
|
|
1467
|
+
/**
|
|
1468
|
+
* 顶层 column 和 group
|
|
1469
|
+
*/
|
|
1470
|
+
get $visibleTopColumnsAndGroups() {
|
|
1471
|
+
if (!this.#visibleTopColsAndGroups) {
|
|
1472
|
+
this.#visibleTopColsAndGroups = [];
|
|
1473
|
+
const tmp = this.#visibleTopColsAndGroups;
|
|
1474
|
+
const $colss = [this.$t.$colStartCols, this.$t.$colMiddleCols, this.$t.$colEndCols];
|
|
1475
|
+
for (const $cols of $colss) {
|
|
1476
|
+
for (const $c of $cols.children) {
|
|
1477
|
+
if ($c instanceof TableCol && $c.visible) {
|
|
1478
|
+
tmp.push($c);
|
|
1479
|
+
} else if ($c instanceof TableColGroup && $c.visible) {
|
|
1480
|
+
tmp.push($c);
|
|
1481
|
+
}
|
|
1482
|
+
}
|
|
1483
|
+
}
|
|
1484
|
+
}
|
|
1485
|
+
return this.#visibleTopColsAndGroups;
|
|
1486
|
+
}
|
|
1487
|
+
#visibleTopColsAndGroups;
|
|
1488
|
+
/**
|
|
1489
|
+
* 所有可见列所属的 group 的最大 level
|
|
1490
|
+
*/
|
|
1491
|
+
get groupsMaxTier() {
|
|
1492
|
+
if (this.#maxTier === void 0) {
|
|
1493
|
+
const tiers = this.$columnsVisible.map(($c) => $c.parentElement).filter(($c) => $c instanceof TableColGroup).map((c) => c.tier);
|
|
1494
|
+
if (tiers.length === 0) {
|
|
1495
|
+
this.#maxTier = 0;
|
|
1496
|
+
} else {
|
|
1497
|
+
this.#maxTier = Math.max(...tiers);
|
|
1498
|
+
}
|
|
1499
|
+
}
|
|
1500
|
+
return this.#maxTier;
|
|
1501
|
+
}
|
|
1502
|
+
#maxTier;
|
|
1503
|
+
// #endregion
|
|
1504
|
+
}
|
|
1505
|
+
class TableColHeadTailBase extends M.ViewElement {
|
|
1506
|
+
// #region 子元素
|
|
1507
|
+
_createUI() {
|
|
1508
|
+
}
|
|
1509
|
+
get $agg() {
|
|
1510
|
+
return this.#agg ??= document.createElement(tableAggTagName);
|
|
1511
|
+
}
|
|
1512
|
+
#agg;
|
|
1513
|
+
// #endregion
|
|
1514
|
+
// #region 父元素
|
|
1515
|
+
connectedCallback() {
|
|
1516
|
+
if (this.$p === this.parentElement) return;
|
|
1517
|
+
this.#checkUnique();
|
|
1518
|
+
this._createUI();
|
|
1519
|
+
this.$p = this.parentElement;
|
|
1520
|
+
this.$p.notifyConnected(this);
|
|
1521
|
+
}
|
|
1522
|
+
$p;
|
|
1523
|
+
//父元素,在 disconnectedCallback() 中使用
|
|
1524
|
+
disconnectedCallback() {
|
|
1525
|
+
if (!this.parentElement && this.$p) {
|
|
1526
|
+
this._clear();
|
|
1527
|
+
this.$agg.remove();
|
|
1528
|
+
this.$p.notifyDisconnected(this);
|
|
1529
|
+
this.$p = void 0;
|
|
1530
|
+
}
|
|
1531
|
+
}
|
|
1532
|
+
/**
|
|
1533
|
+
* 为了简化一种只允许在 grid 存在一个
|
|
1534
|
+
* 否则 findInRow() 就会非常复杂!
|
|
1535
|
+
*/
|
|
1536
|
+
#checkUnique() {
|
|
1537
|
+
const root = this.getRootNode();
|
|
1538
|
+
if (root.querySelectorAll(this.tagName).length > 1) {
|
|
1539
|
+
throw new Error(`grid already has ${this.tagName}`);
|
|
1540
|
+
}
|
|
1541
|
+
}
|
|
1542
|
+
_clear() {
|
|
1543
|
+
}
|
|
1544
|
+
// #endregion
|
|
1545
|
+
// #region 属性
|
|
1546
|
+
get width() {
|
|
1547
|
+
return "36px";
|
|
1548
|
+
}
|
|
1549
|
+
get visible() {
|
|
1550
|
+
const $p = this.$p;
|
|
1551
|
+
if (!$p) return false;
|
|
1552
|
+
return !(this.hidden || $p.hidden);
|
|
1553
|
+
}
|
|
1554
|
+
get dataAware() {
|
|
1555
|
+
return false;
|
|
1556
|
+
}
|
|
1557
|
+
_hidden_set() {
|
|
1558
|
+
this.$agg.hidden = this.hidden;
|
|
1559
|
+
this.$p?.notifyHide(this);
|
|
1560
|
+
}
|
|
1561
|
+
// #endregion
|
|
1562
|
+
// #region 行
|
|
1563
|
+
createInRow() {
|
|
1564
|
+
return document.createElement(this.rowTagName);
|
|
1565
|
+
}
|
|
1566
|
+
/**
|
|
1567
|
+
* dataAware = true 时会被调用,由子类重写。
|
|
1568
|
+
*/
|
|
1569
|
+
refresh($row, $headOrTail) {
|
|
1570
|
+
}
|
|
1571
|
+
findInRow($row) {
|
|
1572
|
+
return $row.querySelector(this.rowTagName);
|
|
1573
|
+
}
|
|
1574
|
+
getAllInRow() {
|
|
1575
|
+
const root = this.getRootNode();
|
|
1576
|
+
if (!root) return [];
|
|
1577
|
+
return Array.from(root.querySelectorAll(this.rowTagName));
|
|
1578
|
+
}
|
|
1579
|
+
// #endregion
|
|
1580
|
+
}
|
|
1581
|
+
var __create$a = Object.create;
|
|
1582
|
+
var __defProp$a = Object.defineProperty;
|
|
1583
|
+
var __getOwnPropDesc$a = Object.getOwnPropertyDescriptor;
|
|
1584
|
+
var __knownSymbol$a = (name, symbol) => (symbol = Symbol[name]) ? symbol : /* @__PURE__ */ Symbol.for("Symbol." + name);
|
|
1585
|
+
var __typeError$a = (msg) => {
|
|
1586
|
+
throw TypeError(msg);
|
|
1587
|
+
};
|
|
1588
|
+
var __defNormalProp$a = (obj, key, value) => key in obj ? __defProp$a(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
1589
|
+
var __name$a = (target, value) => __defProp$a(target, "name", { value, configurable: true });
|
|
1590
|
+
var __decoratorStart$a = (base) => [, , , __create$a(base?.[__knownSymbol$a("metadata")] ?? null)];
|
|
1591
|
+
var __decoratorStrings$a = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
|
|
1592
|
+
var __expectFn$a = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError$a("Function expected") : fn;
|
|
1593
|
+
var __decoratorContext$a = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings$a[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError$a("Already initialized") : fns.push(__expectFn$a(fn || null)) });
|
|
1594
|
+
var __decoratorMetadata$a = (array, target) => __defNormalProp$a(target, __knownSymbol$a("metadata"), array[3]);
|
|
1595
|
+
var __runInitializers$a = (array, flags, self, value) => {
|
|
1596
|
+
for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) fns[i].call(self);
|
|
1597
|
+
return value;
|
|
1598
|
+
};
|
|
1599
|
+
var __decorateElement$a = (array, flags, name, decorators, target, extra) => {
|
|
1600
|
+
var it, done, ctx, k = flags & 7, p = false;
|
|
1601
|
+
var j = 0;
|
|
1602
|
+
var extraInitializers = array[j] || (array[j] = []);
|
|
1603
|
+
var desc = k && (target = target.prototype, k < 5 && (k > 3 || !p) && __getOwnPropDesc$a(target, name));
|
|
1604
|
+
__name$a(target, name);
|
|
1605
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
1606
|
+
ctx = __decoratorContext$a(k, name, done = {}, array[3], extraInitializers);
|
|
1607
|
+
it = (0, decorators[i])(target, ctx), done._ = 1;
|
|
1608
|
+
__expectFn$a(it) && (target = it);
|
|
1609
|
+
}
|
|
1610
|
+
return __decoratorMetadata$a(array, target), desc && __defProp$a(target, name, desc), p ? k ^ 4 ? extra : desc : target;
|
|
1611
|
+
};
|
|
1612
|
+
var _TableColCheckbox_decorators, _init$a, _a$a, _TableRowCheckbox_decorators, _init2$2, _b$3;
|
|
1613
|
+
const mutableAttributes$4 = ["hidden"];
|
|
1614
|
+
_TableColCheckbox_decorators = [B.defineElement({ tagName: tableColCheckTagName, mutableAttributes: mutableAttributes$4 })];
|
|
1615
|
+
class TableColCheckbox extends (_a$a = TableColHeadTailBase) {
|
|
1616
|
+
$chk;
|
|
1617
|
+
_createUI() {
|
|
1618
|
+
const root = this.getRootNode();
|
|
1619
|
+
root.addEventListener("change", this.#changeHandler);
|
|
1620
|
+
if (!this.$chk) {
|
|
1621
|
+
const $chk = this.$chk = document.createElement("input");
|
|
1622
|
+
$chk.type = "checkbox";
|
|
1623
|
+
$chk.name = "0";
|
|
1624
|
+
const lbl = document.createElement("label");
|
|
1625
|
+
lbl.title = this.T.toggleCheck;
|
|
1626
|
+
lbl.append($chk);
|
|
1627
|
+
this.append(lbl);
|
|
1628
|
+
}
|
|
1629
|
+
}
|
|
1630
|
+
#changeHandler = (e) => {
|
|
1631
|
+
const $et = e.target;
|
|
1632
|
+
const checked = $et.checked;
|
|
1633
|
+
const $col = $et.closest(tableColCheckTagName);
|
|
1634
|
+
if ($col) {
|
|
1635
|
+
const $tl = $col.closest(tableListTagName);
|
|
1636
|
+
if ($tl) {
|
|
1637
|
+
$tl.createSnapshot().$rows.forEach(($row) => $row.setModelProperty("checked", checked));
|
|
1638
|
+
this.model?.rowsCheckChanged?.(checked);
|
|
1639
|
+
}
|
|
1640
|
+
return;
|
|
1641
|
+
}
|
|
1642
|
+
const $rc = $et.closest(tableRowCheckTagName);
|
|
1643
|
+
if ($rc) {
|
|
1644
|
+
const $row = $rc.closest(tableRowTagName);
|
|
1645
|
+
if ($row) {
|
|
1646
|
+
$row.setModelProperty("checked", checked);
|
|
1647
|
+
this.model?.rowCheckChanged?.($row, checked);
|
|
1648
|
+
}
|
|
1649
|
+
}
|
|
1650
|
+
};
|
|
1651
|
+
_clear() {
|
|
1652
|
+
const root = this.$p?.getRootNode();
|
|
1653
|
+
root?.removeEventListener("change", this.#changeHandler);
|
|
1654
|
+
}
|
|
1655
|
+
get rowTagName() {
|
|
1656
|
+
return tableRowCheckTagName;
|
|
1657
|
+
}
|
|
1658
|
+
get T() {
|
|
1659
|
+
return getTexts(this);
|
|
1660
|
+
}
|
|
1661
|
+
}
|
|
1662
|
+
_init$a = __decoratorStart$a(_a$a);
|
|
1663
|
+
TableColCheckbox = __decorateElement$a(_init$a, 0, "TableColCheckbox", _TableColCheckbox_decorators, TableColCheckbox);
|
|
1664
|
+
__runInitializers$a(_init$a, 1, TableColCheckbox);
|
|
1665
|
+
_TableRowCheckbox_decorators = [B.defineElement({ tagName: tableRowCheckTagName })];
|
|
1666
|
+
class TableRowCheckbox extends (_b$3 = HTMLElement) {
|
|
1667
|
+
constructor() {
|
|
1668
|
+
super();
|
|
1669
|
+
const $chk = this.$chk = document.createElement("input");
|
|
1670
|
+
$chk.type = "checkbox";
|
|
1671
|
+
$chk.name = "1";
|
|
1672
|
+
}
|
|
1673
|
+
$chk;
|
|
1674
|
+
connectedCallback() {
|
|
1675
|
+
this.append(this.$chk);
|
|
1676
|
+
}
|
|
1677
|
+
}
|
|
1678
|
+
_init2$2 = __decoratorStart$a(_b$3);
|
|
1679
|
+
TableRowCheckbox = __decorateElement$a(_init2$2, 0, "TableRowCheckbox", _TableRowCheckbox_decorators, TableRowCheckbox);
|
|
1680
|
+
__runInitializers$a(_init2$2, 1, TableRowCheckbox);
|
|
1681
|
+
var __create$9 = Object.create;
|
|
1682
|
+
var __defProp$9 = Object.defineProperty;
|
|
1683
|
+
var __getOwnPropDesc$9 = Object.getOwnPropertyDescriptor;
|
|
1684
|
+
var __knownSymbol$9 = (name, symbol) => (symbol = Symbol[name]) ? symbol : /* @__PURE__ */ Symbol.for("Symbol." + name);
|
|
1685
|
+
var __typeError$9 = (msg) => {
|
|
1686
|
+
throw TypeError(msg);
|
|
1687
|
+
};
|
|
1688
|
+
var __defNormalProp$9 = (obj, key, value) => key in obj ? __defProp$9(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
1689
|
+
var __name$9 = (target, value) => __defProp$9(target, "name", { value, configurable: true });
|
|
1690
|
+
var __decoratorStart$9 = (base) => [, , , __create$9(base?.[__knownSymbol$9("metadata")] ?? null)];
|
|
1691
|
+
var __decoratorStrings$9 = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
|
|
1692
|
+
var __expectFn$9 = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError$9("Function expected") : fn;
|
|
1693
|
+
var __decoratorContext$9 = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings$9[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError$9("Already initialized") : fns.push(__expectFn$9(fn || null)) });
|
|
1694
|
+
var __decoratorMetadata$9 = (array, target) => __defNormalProp$9(target, __knownSymbol$9("metadata"), array[3]);
|
|
1695
|
+
var __runInitializers$9 = (array, flags, self, value) => {
|
|
1696
|
+
for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) fns[i].call(self);
|
|
1697
|
+
return value;
|
|
1698
|
+
};
|
|
1699
|
+
var __decorateElement$9 = (array, flags, name, decorators, target, extra) => {
|
|
1700
|
+
var it, done, ctx, k = flags & 7, p = false;
|
|
1701
|
+
var j = 0;
|
|
1702
|
+
var extraInitializers = array[j] || (array[j] = []);
|
|
1703
|
+
var desc = k && (target = target.prototype, k < 5 && (k > 3 || !p) && __getOwnPropDesc$9(target, name));
|
|
1704
|
+
__name$9(target, name);
|
|
1705
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
1706
|
+
ctx = __decoratorContext$9(k, name, done = {}, array[3], extraInitializers);
|
|
1707
|
+
it = (0, decorators[i])(target, ctx), done._ = 1;
|
|
1708
|
+
__expectFn$9(it) && (target = it);
|
|
1709
|
+
}
|
|
1710
|
+
return __decoratorMetadata$9(array, target), desc && __defProp$9(target, name, desc), p ? k ^ 4 ? extra : desc : target;
|
|
1711
|
+
};
|
|
1712
|
+
var _TableColSerialNo_decorators, _init$9, _a$9;
|
|
1713
|
+
const mutableAttributes$3 = ["hidden"];
|
|
1714
|
+
_TableColSerialNo_decorators = [B.defineElement({ tagName: tableColSerialTagName, mutableAttributes: mutableAttributes$3 })];
|
|
1715
|
+
class TableColSerialNo extends (_a$9 = TableColHeadTailBase) {
|
|
1716
|
+
get rowTagName() {
|
|
1717
|
+
return tableRowSerialTagName;
|
|
1718
|
+
}
|
|
1719
|
+
_createUI() {
|
|
1720
|
+
this.textContent = "#";
|
|
1721
|
+
}
|
|
1722
|
+
get width() {
|
|
1723
|
+
return "minmax(36px, auto)";
|
|
1724
|
+
}
|
|
1725
|
+
}
|
|
1726
|
+
_init$9 = __decoratorStart$9(_a$9);
|
|
1727
|
+
TableColSerialNo = __decorateElement$9(_init$9, 0, "TableColSerialNo", _TableColSerialNo_decorators, TableColSerialNo);
|
|
1728
|
+
__runInitializers$9(_init$9, 1, TableColSerialNo);
|
|
1729
|
+
var __create$8 = Object.create;
|
|
1730
|
+
var __defProp$8 = Object.defineProperty;
|
|
1731
|
+
var __getOwnPropDesc$8 = Object.getOwnPropertyDescriptor;
|
|
1732
|
+
var __knownSymbol$8 = (name, symbol) => (symbol = Symbol[name]) ? symbol : /* @__PURE__ */ Symbol.for("Symbol." + name);
|
|
1733
|
+
var __typeError$8 = (msg) => {
|
|
1734
|
+
throw TypeError(msg);
|
|
1735
|
+
};
|
|
1736
|
+
var __defNormalProp$8 = (obj, key, value) => key in obj ? __defProp$8(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
1737
|
+
var __name$8 = (target, value) => __defProp$8(target, "name", { value, configurable: true });
|
|
1738
|
+
var __decoratorStart$8 = (base) => [, , , __create$8(base?.[__knownSymbol$8("metadata")] ?? null)];
|
|
1739
|
+
var __decoratorStrings$8 = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
|
|
1740
|
+
var __expectFn$8 = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError$8("Function expected") : fn;
|
|
1741
|
+
var __decoratorContext$8 = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings$8[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError$8("Already initialized") : fns.push(__expectFn$8(fn || null)) });
|
|
1742
|
+
var __decoratorMetadata$8 = (array, target) => __defNormalProp$8(target, __knownSymbol$8("metadata"), array[3]);
|
|
1743
|
+
var __runInitializers$8 = (array, flags, self, value) => {
|
|
1744
|
+
for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) fns[i].call(self);
|
|
1745
|
+
return value;
|
|
1746
|
+
};
|
|
1747
|
+
var __decorateElement$8 = (array, flags, name, decorators, target, extra) => {
|
|
1748
|
+
var it, done, ctx, k = flags & 7, p = false;
|
|
1749
|
+
var j = 0;
|
|
1750
|
+
var extraInitializers = array[j] || (array[j] = []);
|
|
1751
|
+
var desc = k && (target = target.prototype, k < 5 && (k > 3 || !p) && __getOwnPropDesc$8(target, name));
|
|
1752
|
+
__name$8(target, name);
|
|
1753
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
1754
|
+
ctx = __decoratorContext$8(k, name, done = {}, array[3], extraInitializers);
|
|
1755
|
+
it = (0, decorators[i])(target, ctx), done._ = 1;
|
|
1756
|
+
__expectFn$8(it) && (target = it);
|
|
1757
|
+
}
|
|
1758
|
+
return __decoratorMetadata$8(array, target), desc && __defProp$8(target, name, desc), p ? k ^ 4 ? extra : desc : target;
|
|
1759
|
+
};
|
|
1760
|
+
var _TableColAction_decorators, _init$8, _a$8, _TableRowAction_decorators, _init2$1, _b$2;
|
|
1761
|
+
const mutableAttributes$2 = ["hidden"];
|
|
1762
|
+
_TableColAction_decorators = [B.defineElement({ tagName: tableColActionTagName, mutableAttributes: mutableAttributes$2 })];
|
|
1763
|
+
class TableColAction extends (_a$8 = TableColHeadTailBase) {
|
|
1764
|
+
get rowTagName() {
|
|
1765
|
+
return tableRowActionTagName;
|
|
1766
|
+
}
|
|
1767
|
+
createInRow() {
|
|
1768
|
+
const $ret = super.createInRow();
|
|
1769
|
+
const acts = this.actions;
|
|
1770
|
+
if (acts) {
|
|
1771
|
+
for (const action in acts) {
|
|
1772
|
+
const $btn = B.createTxtBtn(action);
|
|
1773
|
+
$ret.append($btn);
|
|
1774
|
+
$ret.btns[action] = $btn;
|
|
1775
|
+
}
|
|
1776
|
+
}
|
|
1777
|
+
return $ret;
|
|
1778
|
+
}
|
|
1779
|
+
refresh($row, $headOrTail = this.findInRow($row)) {
|
|
1780
|
+
if (!$headOrTail) return;
|
|
1781
|
+
const $inRow = $headOrTail;
|
|
1782
|
+
this.model?.rowActionConfig?.($row, $inRow, $inRow.btns);
|
|
1783
|
+
}
|
|
1784
|
+
// #region 属性
|
|
1785
|
+
get width() {
|
|
1786
|
+
return "auto";
|
|
1787
|
+
}
|
|
1788
|
+
get dataAware() {
|
|
1789
|
+
return true;
|
|
1790
|
+
}
|
|
1791
|
+
actions;
|
|
1792
|
+
get label() {
|
|
1793
|
+
return this.textContent;
|
|
1794
|
+
}
|
|
1795
|
+
set label(v) {
|
|
1796
|
+
this.textContent = v;
|
|
1797
|
+
}
|
|
1798
|
+
// #endregion
|
|
1799
|
+
}
|
|
1800
|
+
_init$8 = __decoratorStart$8(_a$8);
|
|
1801
|
+
TableColAction = __decorateElement$8(_init$8, 0, "TableColAction", _TableColAction_decorators, TableColAction);
|
|
1802
|
+
__runInitializers$8(_init$8, 1, TableColAction);
|
|
1803
|
+
_TableRowAction_decorators = [B.defineElement({ tagName: tableRowActionTagName })];
|
|
1804
|
+
class TableRowAction extends (_b$2 = HTMLElement) {
|
|
1805
|
+
/**
|
|
1806
|
+
* 为了在 GridColAction.refresh() 中触发事件用,从功能上来说没有必要定义这个属性,可以临时生成 btns 对象。
|
|
1807
|
+
* 但是在触发事件时读取 button.innerText,导致在 _createRowsFromDataSource() 中调用时回流。
|
|
1808
|
+
* 因为按钮刚刚生成还未绘制,读取 innerText 就会回流,所以要避免读取 innerText。
|
|
1809
|
+
* 于是就在这里定义了这个属性。
|
|
1810
|
+
*/
|
|
1811
|
+
btns = {};
|
|
1812
|
+
handleClick(e, $list) {
|
|
1813
|
+
const $btn = e.target;
|
|
1814
|
+
if (!B.isTxtBtn($btn)) return;
|
|
1815
|
+
const $row = this.closest(tableRowTagName);
|
|
1816
|
+
if (!$row) return;
|
|
1817
|
+
const $ht = $list.querySelector(tableColActionTagName);
|
|
1818
|
+
if (!$ht) return;
|
|
1819
|
+
const acts = $ht.model?.actions;
|
|
1820
|
+
if (!acts) return;
|
|
1821
|
+
const action = $btn.textContent;
|
|
1822
|
+
const func = acts[action];
|
|
1823
|
+
func?.({
|
|
1824
|
+
$row,
|
|
1825
|
+
$rowAction: this,
|
|
1826
|
+
$btn
|
|
1827
|
+
});
|
|
1828
|
+
}
|
|
1829
|
+
}
|
|
1830
|
+
_init2$1 = __decoratorStart$8(_b$2);
|
|
1831
|
+
TableRowAction = __decorateElement$8(_init2$1, 0, "TableRowAction", _TableRowAction_decorators, TableRowAction);
|
|
1832
|
+
__runInitializers$8(_init2$1, 1, TableRowAction);
|
|
1833
|
+
var __create$7 = Object.create;
|
|
1834
|
+
var __defProp$7 = Object.defineProperty;
|
|
1835
|
+
var __getOwnPropDesc$7 = Object.getOwnPropertyDescriptor;
|
|
1836
|
+
var __knownSymbol$7 = (name, symbol) => (symbol = Symbol[name]) ? symbol : /* @__PURE__ */ Symbol.for("Symbol." + name);
|
|
1837
|
+
var __typeError$7 = (msg) => {
|
|
1838
|
+
throw TypeError(msg);
|
|
1839
|
+
};
|
|
1840
|
+
var __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
1841
|
+
var __name$7 = (target, value) => __defProp$7(target, "name", { value, configurable: true });
|
|
1842
|
+
var __decoratorStart$7 = (base) => [, , , __create$7(base?.[__knownSymbol$7("metadata")] ?? null)];
|
|
1843
|
+
var __decoratorStrings$7 = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
|
|
1844
|
+
var __expectFn$7 = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError$7("Function expected") : fn;
|
|
1845
|
+
var __decoratorContext$7 = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings$7[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError$7("Already initialized") : fns.push(__expectFn$7(fn || null)) });
|
|
1846
|
+
var __decoratorMetadata$7 = (array, target) => __defNormalProp$7(target, __knownSymbol$7("metadata"), array[3]);
|
|
1847
|
+
var __runInitializers$7 = (array, flags, self, value) => {
|
|
1848
|
+
for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) fns[i].call(self);
|
|
1849
|
+
return value;
|
|
1850
|
+
};
|
|
1851
|
+
var __decorateElement$7 = (array, flags, name, decorators, target, extra) => {
|
|
1852
|
+
var it, done, ctx, k = flags & 7, p = false;
|
|
1853
|
+
var j = 0;
|
|
1854
|
+
var extraInitializers = array[j] || (array[j] = []);
|
|
1855
|
+
var desc = k && (target = target.prototype, k < 5 && (k > 3 || !p) && __getOwnPropDesc$7(target, name));
|
|
1856
|
+
__name$7(target, name);
|
|
1857
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
1858
|
+
ctx = __decoratorContext$7(k, name, done = {}, array[3], extraInitializers);
|
|
1859
|
+
it = (0, decorators[i])(target, ctx), done._ = 1;
|
|
1860
|
+
__expectFn$7(it) && (target = it);
|
|
1861
|
+
}
|
|
1862
|
+
return __decoratorMetadata$7(array, target), desc && __defProp$7(target, name, desc), p ? k ^ 4 ? extra : desc : target;
|
|
1863
|
+
};
|
|
1864
|
+
var _TableColMenu_decorators, _init$7, _a$7, _TableRowMenu_decorators, _init2, _b$1;
|
|
1865
|
+
const mutableAttributes$1 = ["hidden"];
|
|
1866
|
+
_TableColMenu_decorators = [B.defineElement({ tagName: tableColMenuTagName, mutableAttributes: mutableAttributes$1 })];
|
|
1867
|
+
class TableColMenu extends (_a$7 = TableColHeadTailBase) {
|
|
1868
|
+
get rowTagName() {
|
|
1869
|
+
return tableRowMenuTagName;
|
|
1870
|
+
}
|
|
1871
|
+
createInRow() {
|
|
1872
|
+
const $btn = B.createTxtBtn("⋮");
|
|
1873
|
+
const $ret = super.createInRow();
|
|
1874
|
+
$ret.append($btn);
|
|
1875
|
+
return $ret;
|
|
1876
|
+
}
|
|
1877
|
+
}
|
|
1878
|
+
_init$7 = __decoratorStart$7(_a$7);
|
|
1879
|
+
TableColMenu = __decorateElement$7(_init$7, 0, "TableColMenu", _TableColMenu_decorators, TableColMenu);
|
|
1880
|
+
__runInitializers$7(_init$7, 1, TableColMenu);
|
|
1881
|
+
_TableRowMenu_decorators = [B.defineElement({ tagName: tableRowMenuTagName })];
|
|
1882
|
+
class TableRowMenu extends (_b$1 = HTMLElement) {
|
|
1883
|
+
handleClick(e, $list) {
|
|
1884
|
+
const $btn = e.target;
|
|
1885
|
+
if (!B.isTxtBtn($btn)) return;
|
|
1886
|
+
const $row = this.closest(tableRowTagName);
|
|
1887
|
+
if (!$row) {
|
|
1888
|
+
return;
|
|
1889
|
+
}
|
|
1890
|
+
const $cm = $list.querySelector(tableColMenuTagName);
|
|
1891
|
+
if (!$cm) {
|
|
1892
|
+
return;
|
|
1893
|
+
}
|
|
1894
|
+
$cm.model?.rowMenuClick?.($row, this, $btn);
|
|
1895
|
+
}
|
|
1896
|
+
}
|
|
1897
|
+
_init2 = __decoratorStart$7(_b$1);
|
|
1898
|
+
TableRowMenu = __decorateElement$7(_init2, 0, "TableRowMenu", _TableRowMenu_decorators, TableRowMenu);
|
|
1899
|
+
__runInitializers$7(_init2, 1, TableRowMenu);
|
|
1900
|
+
var __create$6 = Object.create;
|
|
1901
|
+
var __defProp$6 = Object.defineProperty;
|
|
1902
|
+
var __getOwnPropDesc$6 = Object.getOwnPropertyDescriptor;
|
|
1903
|
+
var __knownSymbol$6 = (name, symbol) => (symbol = Symbol[name]) ? symbol : /* @__PURE__ */ Symbol.for("Symbol." + name);
|
|
1904
|
+
var __typeError$6 = (msg) => {
|
|
1905
|
+
throw TypeError(msg);
|
|
1906
|
+
};
|
|
1907
|
+
var __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
1908
|
+
var __name$6 = (target, value) => __defProp$6(target, "name", { value, configurable: true });
|
|
1909
|
+
var __decoratorStart$6 = (base) => [, , , __create$6(base?.[__knownSymbol$6("metadata")] ?? null)];
|
|
1910
|
+
var __decoratorStrings$6 = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
|
|
1911
|
+
var __expectFn$6 = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError$6("Function expected") : fn;
|
|
1912
|
+
var __decoratorContext$6 = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings$6[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError$6("Already initialized") : fns.push(__expectFn$6(fn || null)) });
|
|
1913
|
+
var __decoratorMetadata$6 = (array, target) => __defNormalProp$6(target, __knownSymbol$6("metadata"), array[3]);
|
|
1914
|
+
var __runInitializers$6 = (array, flags, self, value) => {
|
|
1915
|
+
for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) fns[i].call(self);
|
|
1916
|
+
return value;
|
|
1917
|
+
};
|
|
1918
|
+
var __decorateElement$6 = (array, flags, name, decorators, target, extra) => {
|
|
1919
|
+
var it, done, ctx, k = flags & 7, p = false;
|
|
1920
|
+
var j = 0;
|
|
1921
|
+
var extraInitializers = array[j] || (array[j] = []);
|
|
1922
|
+
var desc = k && (target = target.prototype, k < 5 && (k > 3 || !p) && __getOwnPropDesc$6(target, name));
|
|
1923
|
+
__name$6(target, name);
|
|
1924
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
1925
|
+
ctx = __decoratorContext$6(k, name, done = {}, array[3], extraInitializers);
|
|
1926
|
+
it = (0, decorators[i])(target, ctx), done._ = 1;
|
|
1927
|
+
__expectFn$6(it) && (target = it);
|
|
1928
|
+
}
|
|
1929
|
+
return __decoratorMetadata$6(array, target), desc && __defProp$6(target, name, desc), p ? k ^ 4 ? extra : desc : target;
|
|
1930
|
+
};
|
|
1931
|
+
var _TableRows_decorators, _init$6, _a$6;
|
|
1932
|
+
_TableRows_decorators = [defineElement({ tagName: tableRowsTagName })];
|
|
1933
|
+
class TableRows extends (_a$6 = M.ViewListElement) {
|
|
1934
|
+
// #region ViewListElement
|
|
1935
|
+
_getViewItemTagName() {
|
|
1936
|
+
return tableRowTagName;
|
|
1937
|
+
}
|
|
1938
|
+
[M.handleModelEvent](source, evt) {
|
|
1939
|
+
if (source === this.modelList) {
|
|
1940
|
+
return new RowsModelListEventHandler(this, source).handle(evt);
|
|
1941
|
+
}
|
|
1942
|
+
return super[M.handleModelEvent](source, evt);
|
|
1943
|
+
}
|
|
1944
|
+
// #endregion
|
|
1945
|
+
/**
|
|
1946
|
+
* 根据数据源排序
|
|
1947
|
+
*/
|
|
1948
|
+
sortDataSource(ss) {
|
|
1949
|
+
const ds = this.modelList;
|
|
1950
|
+
if (!ds || ds.length === 0) {
|
|
1951
|
+
return false;
|
|
1952
|
+
}
|
|
1953
|
+
const $cols = ss.$columnsWantSort;
|
|
1954
|
+
if ($cols.length === 0) {
|
|
1955
|
+
return false;
|
|
1956
|
+
}
|
|
1957
|
+
const func = getSortFunc($cols);
|
|
1958
|
+
ds.sort(func);
|
|
1959
|
+
if (M.modelEventPaused in ds) ;
|
|
1960
|
+
else {
|
|
1961
|
+
const ev = new M.ModelListSortEvent(ds);
|
|
1962
|
+
this[M.handleModelEvent](ds, ev);
|
|
1963
|
+
}
|
|
1964
|
+
return true;
|
|
1965
|
+
}
|
|
1966
|
+
}
|
|
1967
|
+
_init$6 = __decoratorStart$6(_a$6);
|
|
1968
|
+
TableRows = __decorateElement$6(_init$6, 0, "TableRows", _TableRows_decorators, TableRows);
|
|
1969
|
+
__runInitializers$6(_init$6, 1, TableRows);
|
|
1970
|
+
class RowsModelListEventHandler extends M.ModelListEventHandler {
|
|
1971
|
+
constructor($rows, source) {
|
|
1972
|
+
super($rows, source);
|
|
1973
|
+
this.$rows = $rows;
|
|
1974
|
+
this.$list = $rows.parentElement;
|
|
1975
|
+
this.#ss = this.$list.createSnapshot();
|
|
1976
|
+
}
|
|
1977
|
+
$rows;
|
|
1978
|
+
$list;
|
|
1979
|
+
#ss;
|
|
1980
|
+
#refreshFunc;
|
|
1981
|
+
refreshRow($row) {
|
|
1982
|
+
const rf = this.#refreshFunc ??= this.$list.getRowRefreshFunc(this.#ss);
|
|
1983
|
+
rf($row, true);
|
|
1984
|
+
}
|
|
1985
|
+
sortItem(item) {
|
|
1986
|
+
const $cols = this.#ss.$columnsWantSort;
|
|
1987
|
+
if ($cols.length === 0) return;
|
|
1988
|
+
const ml = this.$vl.modelList;
|
|
1989
|
+
if ("sortItem" in ml && typeof ml.sortItem === "function") {
|
|
1990
|
+
const func = getSortFunc($cols);
|
|
1991
|
+
ml.sortItem(item, func);
|
|
1992
|
+
}
|
|
1993
|
+
}
|
|
1994
|
+
_createEleItem(item) {
|
|
1995
|
+
const $ret = super._createEleItem(item);
|
|
1996
|
+
this.refreshRow($ret);
|
|
1997
|
+
return $ret;
|
|
1998
|
+
}
|
|
1999
|
+
_refresh($row) {
|
|
2000
|
+
this.refreshRow($row);
|
|
2001
|
+
}
|
|
2002
|
+
_insert(arg) {
|
|
2003
|
+
const ret = super._insert(arg);
|
|
2004
|
+
this.$list.refreshAggs(this.#ss);
|
|
2005
|
+
arg.items.forEach((item) => this.sortItem(item));
|
|
2006
|
+
return ret;
|
|
2007
|
+
}
|
|
2008
|
+
_update(arg) {
|
|
2009
|
+
const ret = super._update(arg);
|
|
2010
|
+
this.$list.refreshAggs(this.#ss);
|
|
2011
|
+
this.sortItem(arg.item);
|
|
2012
|
+
return ret;
|
|
2013
|
+
}
|
|
2014
|
+
_delete(arg) {
|
|
2015
|
+
const ret = super._delete(arg);
|
|
2016
|
+
this.$list.refreshAggs(this.#ss);
|
|
2017
|
+
return ret;
|
|
2018
|
+
}
|
|
2019
|
+
_replace(arg) {
|
|
2020
|
+
const ret = super._replace(arg);
|
|
2021
|
+
this.$list.refreshAggs(this.#ss);
|
|
2022
|
+
this.sortItem(arg.item);
|
|
2023
|
+
return ret;
|
|
2024
|
+
}
|
|
2025
|
+
_reset(arg) {
|
|
2026
|
+
const ret = super._reset(arg);
|
|
2027
|
+
this.$list.refreshAggs(this.#ss);
|
|
2028
|
+
if (this.$list.$table.autoSort) {
|
|
2029
|
+
this.$rows.sortDataSource(this.#ss);
|
|
2030
|
+
}
|
|
2031
|
+
return ret;
|
|
2032
|
+
}
|
|
2033
|
+
_sort(arg) {
|
|
2034
|
+
return super._sort(arg);
|
|
2035
|
+
}
|
|
2036
|
+
}
|
|
2037
|
+
function getSortFunc($cols) {
|
|
2038
|
+
const vms = $cols.flatMap(($c) => $c.valueMember?.member);
|
|
2039
|
+
if (vms.length === 0) {
|
|
2040
|
+
return () => 0;
|
|
2041
|
+
}
|
|
2042
|
+
const ads = $cols.flatMap(($c) => {
|
|
2043
|
+
const ad = $c.isAscSort ? 1 : -1;
|
|
2044
|
+
return Array.from({ length: $c.valueMember?.length ?? 0 }, () => ad);
|
|
2045
|
+
});
|
|
2046
|
+
return (r1, r2) => {
|
|
2047
|
+
for (let i = 0; i < vms.length; i++) {
|
|
2048
|
+
const vm = vms[i];
|
|
2049
|
+
const ad = ads[i];
|
|
2050
|
+
const v1 = Reflect.get(r1.data, vm);
|
|
2051
|
+
const v2 = Reflect.get(r2.data, vm);
|
|
2052
|
+
if (v1 < v2) {
|
|
2053
|
+
return -1 * ad;
|
|
2054
|
+
} else if (v1 > v2) {
|
|
2055
|
+
return 1 * ad;
|
|
2056
|
+
}
|
|
2057
|
+
}
|
|
2058
|
+
return 0;
|
|
2059
|
+
};
|
|
2060
|
+
}
|
|
2061
|
+
var __create$5 = Object.create;
|
|
2062
|
+
var __defProp$5 = Object.defineProperty;
|
|
2063
|
+
var __getOwnPropDesc$5 = Object.getOwnPropertyDescriptor;
|
|
2064
|
+
var __knownSymbol$5 = (name, symbol) => (symbol = Symbol[name]) ? symbol : /* @__PURE__ */ Symbol.for("Symbol." + name);
|
|
2065
|
+
var __typeError$5 = (msg) => {
|
|
2066
|
+
throw TypeError(msg);
|
|
2067
|
+
};
|
|
2068
|
+
var __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
2069
|
+
var __name$5 = (target, value) => __defProp$5(target, "name", { value, configurable: true });
|
|
2070
|
+
var __decoratorStart$5 = (base) => [, , , __create$5(base?.[__knownSymbol$5("metadata")] ?? null)];
|
|
2071
|
+
var __decoratorStrings$5 = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
|
|
2072
|
+
var __expectFn$5 = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError$5("Function expected") : fn;
|
|
2073
|
+
var __decoratorContext$5 = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings$5[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError$5("Already initialized") : fns.push(__expectFn$5(fn || null)) });
|
|
2074
|
+
var __decoratorMetadata$5 = (array, target) => __defNormalProp$5(target, __knownSymbol$5("metadata"), array[3]);
|
|
2075
|
+
var __runInitializers$5 = (array, flags, self, value) => {
|
|
2076
|
+
for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) fns[i].call(self);
|
|
2077
|
+
return value;
|
|
2078
|
+
};
|
|
2079
|
+
var __decorateElement$5 = (array, flags, name, decorators, target, extra) => {
|
|
2080
|
+
var it, done, ctx, k = flags & 7, p = false;
|
|
2081
|
+
var j = 0;
|
|
2082
|
+
var extraInitializers = array[j] || (array[j] = []);
|
|
2083
|
+
var desc = k && (target = target.prototype, k < 5 && (k > 3 || !p) && __getOwnPropDesc$5(target, name));
|
|
2084
|
+
__name$5(target, name);
|
|
2085
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
2086
|
+
ctx = __decoratorContext$5(k, name, done = {}, array[3], extraInitializers);
|
|
2087
|
+
it = (0, decorators[i])(target, ctx), done._ = 1;
|
|
2088
|
+
__expectFn$5(it) && (target = it);
|
|
2089
|
+
}
|
|
2090
|
+
return __decoratorMetadata$5(array, target), desc && __defProp$5(target, name, desc), p ? k ^ 4 ? extra : desc : target;
|
|
2091
|
+
};
|
|
2092
|
+
var _TableAggs_decorators, _init$5, _a$5;
|
|
2093
|
+
_TableAggs_decorators = [defineElement({ tagName: tableAggsTagName })];
|
|
2094
|
+
class TableAggs extends (_a$5 = HTMLElement) {
|
|
2095
|
+
// #region 子元素
|
|
2096
|
+
constructor() {
|
|
2097
|
+
super();
|
|
2098
|
+
this.$start = document.createElement(tableAggStartTagName);
|
|
2099
|
+
this.$middle = document.createElement(tableAggMiddleTagName);
|
|
2100
|
+
this.$end = document.createElement(tableAggEndTagName);
|
|
2101
|
+
}
|
|
2102
|
+
$start;
|
|
2103
|
+
$middle;
|
|
2104
|
+
$end;
|
|
2105
|
+
get $grid() {
|
|
2106
|
+
const ret = this.parentElement?.parentElement;
|
|
2107
|
+
if (ret?.tagName === tableViewTagName) {
|
|
2108
|
+
return ret;
|
|
2109
|
+
}
|
|
2110
|
+
return null;
|
|
2111
|
+
}
|
|
2112
|
+
connectedCallback() {
|
|
2113
|
+
if (this.childElementCount > 0) return;
|
|
2114
|
+
this.append(this.$start, this.$middle, this.$end);
|
|
2115
|
+
}
|
|
2116
|
+
// #endregion
|
|
2117
|
+
// #region 数据展示
|
|
2118
|
+
refresh(ss) {
|
|
2119
|
+
let $aggs = [...ss.$columnHeads, ...ss.$startColumns].map(($x) => $x.$agg);
|
|
2120
|
+
this.$start.innerHTML = "";
|
|
2121
|
+
this.$start.append(...$aggs);
|
|
2122
|
+
this.$middle.innerHTML = "";
|
|
2123
|
+
this.$middle.append(...ss.$middleColumns.map(($x) => $x.$agg));
|
|
2124
|
+
$aggs = [...ss.$endColumns, ...ss.$columnTails].map(($x) => $x.$agg);
|
|
2125
|
+
this.$end.innerHTML = "";
|
|
2126
|
+
this.$end.append(...$aggs);
|
|
2127
|
+
}
|
|
2128
|
+
// #endregion
|
|
2129
|
+
}
|
|
2130
|
+
_init$5 = __decoratorStart$5(_a$5);
|
|
2131
|
+
TableAggs = __decorateElement$5(_init$5, 0, "TableAggs", _TableAggs_decorators, TableAggs);
|
|
2132
|
+
__runInitializers$5(_init$5, 1, TableAggs);
|
|
2133
|
+
var __create$4 = Object.create;
|
|
2134
|
+
var __defProp$4 = Object.defineProperty;
|
|
2135
|
+
var __getOwnPropDesc$4 = Object.getOwnPropertyDescriptor;
|
|
2136
|
+
var __knownSymbol$4 = (name, symbol) => (symbol = Symbol[name]) ? symbol : /* @__PURE__ */ Symbol.for("Symbol." + name);
|
|
2137
|
+
var __typeError$4 = (msg) => {
|
|
2138
|
+
throw TypeError(msg);
|
|
2139
|
+
};
|
|
2140
|
+
var __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
2141
|
+
var __name$4 = (target, value) => __defProp$4(target, "name", { value, configurable: true });
|
|
2142
|
+
var __decoratorStart$4 = (base) => [, , , __create$4(base?.[__knownSymbol$4("metadata")] ?? null)];
|
|
2143
|
+
var __decoratorStrings$4 = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
|
|
2144
|
+
var __expectFn$4 = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError$4("Function expected") : fn;
|
|
2145
|
+
var __decoratorContext$4 = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings$4[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError$4("Already initialized") : fns.push(__expectFn$4(fn || null)) });
|
|
2146
|
+
var __decoratorMetadata$4 = (array, target) => __defNormalProp$4(target, __knownSymbol$4("metadata"), array[3]);
|
|
2147
|
+
var __runInitializers$4 = (array, flags, self, value) => {
|
|
2148
|
+
for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) fns[i].call(self);
|
|
2149
|
+
return value;
|
|
2150
|
+
};
|
|
2151
|
+
var __decorateElement$4 = (array, flags, name, decorators, target, extra) => {
|
|
2152
|
+
var it, done, ctx, k = flags & 7, p = false;
|
|
2153
|
+
var j = 0;
|
|
2154
|
+
var extraInitializers = array[j] || (array[j] = []);
|
|
2155
|
+
var desc = k && (target = target.prototype, k < 5 && (k > 3 || !p) && __getOwnPropDesc$4(target, name));
|
|
2156
|
+
__name$4(target, name);
|
|
2157
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
2158
|
+
ctx = __decoratorContext$4(k, name, done = {}, array[3], extraInitializers);
|
|
2159
|
+
it = (0, decorators[i])(target, ctx), done._ = 1;
|
|
2160
|
+
__expectFn$4(it) && (target = it);
|
|
2161
|
+
}
|
|
2162
|
+
return __decoratorMetadata$4(array, target), desc && __defProp$4(target, name, desc), p ? k ^ 4 ? extra : desc : target;
|
|
2163
|
+
};
|
|
2164
|
+
var _TableCols_decorators, _init$4, _a$4;
|
|
2165
|
+
_TableCols_decorators = [B.defineElement({ tagName: tableColsTagName })];
|
|
2166
|
+
class TableCols extends (_a$4 = M.ViewGroupElement) {
|
|
2167
|
+
// #region ViewGroupElement
|
|
2168
|
+
[M.handleModelEvent](source, evt) {
|
|
2169
|
+
const $l = this.closest(tableListTagName);
|
|
2170
|
+
const old = $l.colLayoutPaused;
|
|
2171
|
+
$l.colLayoutPaused = true;
|
|
2172
|
+
const ret = super[M.handleModelEvent](source, evt);
|
|
2173
|
+
$l.colLayoutPaused = old;
|
|
2174
|
+
return ret;
|
|
2175
|
+
}
|
|
2176
|
+
_getViewItemTagName() {
|
|
2177
|
+
return tableColTagName;
|
|
2178
|
+
}
|
|
2179
|
+
groupElementTagName = tableColGroupTagName;
|
|
2180
|
+
/**
|
|
2181
|
+
* 同时还实现了生成 group 元素的功能
|
|
2182
|
+
* 无需重写 _createGroupElement 和 _putGroupElement
|
|
2183
|
+
*/
|
|
2184
|
+
_tryGetGroupElement(vm) {
|
|
2185
|
+
const group = this.getGroupValueFromModel(vm);
|
|
2186
|
+
if (!group) return this;
|
|
2187
|
+
const groupChain = this.#getGroupByLabel(group);
|
|
2188
|
+
groupChain.forEach((gc, i) => {
|
|
2189
|
+
let $g = gc.$group;
|
|
2190
|
+
if (!$g) {
|
|
2191
|
+
$g = gc.$group = document.createElement(tableColGroupTagName);
|
|
2192
|
+
$g.label = gc.label;
|
|
2193
|
+
if (i === 0) {
|
|
2194
|
+
this.append($g);
|
|
2195
|
+
} else {
|
|
2196
|
+
groupChain[i - 1].$group.append($g);
|
|
2197
|
+
}
|
|
2198
|
+
}
|
|
2199
|
+
});
|
|
2200
|
+
return groupChain.pop().$group;
|
|
2201
|
+
}
|
|
2202
|
+
#getGroupByLabel(group) {
|
|
2203
|
+
const sa = group.split("/");
|
|
2204
|
+
const ret = sa.map((s) => {
|
|
2205
|
+
return {
|
|
2206
|
+
label: s,
|
|
2207
|
+
$group: void 0
|
|
2208
|
+
};
|
|
2209
|
+
});
|
|
2210
|
+
let $p = this;
|
|
2211
|
+
for (const r of ret) {
|
|
2212
|
+
let found = false;
|
|
2213
|
+
for (const $c of $p.children) {
|
|
2214
|
+
if ($c instanceof TableColGroup) {
|
|
2215
|
+
if ($c.label === r.label) {
|
|
2216
|
+
found = true;
|
|
2217
|
+
$p = r.$group = $c;
|
|
2218
|
+
break;
|
|
2219
|
+
}
|
|
2220
|
+
}
|
|
2221
|
+
}
|
|
2222
|
+
if (!found) {
|
|
2223
|
+
break;
|
|
2224
|
+
}
|
|
2225
|
+
}
|
|
2226
|
+
return ret;
|
|
2227
|
+
}
|
|
2228
|
+
// #endregion
|
|
2229
|
+
// #region ColGroupNoticeReceiver
|
|
2230
|
+
notify(n) {
|
|
2231
|
+
const $list = this.closest(tableListTagName);
|
|
2232
|
+
$list?.notify(n);
|
|
2233
|
+
}
|
|
2234
|
+
// #endregion
|
|
2235
|
+
}
|
|
2236
|
+
_init$4 = __decoratorStart$4(_a$4);
|
|
2237
|
+
TableCols = __decorateElement$4(_init$4, 0, "TableCols", _TableCols_decorators, TableCols);
|
|
2238
|
+
__runInitializers$4(_init$4, 1, TableCols);
|
|
2239
|
+
var __create$3 = Object.create;
|
|
2240
|
+
var __defProp$3 = Object.defineProperty;
|
|
2241
|
+
var __getOwnPropDesc$3 = Object.getOwnPropertyDescriptor;
|
|
2242
|
+
var __knownSymbol$3 = (name, symbol) => (symbol = Symbol[name]) ? symbol : /* @__PURE__ */ Symbol.for("Symbol." + name);
|
|
2243
|
+
var __typeError$3 = (msg) => {
|
|
2244
|
+
throw TypeError(msg);
|
|
2245
|
+
};
|
|
2246
|
+
var __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
2247
|
+
var __name$3 = (target, value) => __defProp$3(target, "name", { value, configurable: true });
|
|
2248
|
+
var __decoratorStart$3 = (base) => [, , , __create$3(base?.[__knownSymbol$3("metadata")] ?? null)];
|
|
2249
|
+
var __decoratorStrings$3 = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
|
|
2250
|
+
var __expectFn$3 = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError$3("Function expected") : fn;
|
|
2251
|
+
var __decoratorContext$3 = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings$3[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError$3("Already initialized") : fns.push(__expectFn$3(fn || null)) });
|
|
2252
|
+
var __decoratorMetadata$3 = (array, target) => __defNormalProp$3(target, __knownSymbol$3("metadata"), array[3]);
|
|
2253
|
+
var __runInitializers$3 = (array, flags, self, value) => {
|
|
2254
|
+
for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) fns[i].call(self);
|
|
2255
|
+
return value;
|
|
2256
|
+
};
|
|
2257
|
+
var __decorateElement$3 = (array, flags, name, decorators, target, extra) => {
|
|
2258
|
+
var it, done, ctx, k = flags & 7, p = false;
|
|
2259
|
+
var j = 0;
|
|
2260
|
+
var extraInitializers = array[j] || (array[j] = []);
|
|
2261
|
+
var desc = k && (target = target.prototype, k < 5 && (k > 3 || !p) && __getOwnPropDesc$3(target, name));
|
|
2262
|
+
__name$3(target, name);
|
|
2263
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
2264
|
+
ctx = __decoratorContext$3(k, name, done = {}, array[3], extraInitializers);
|
|
2265
|
+
it = (0, decorators[i])(target, ctx), done._ = 1;
|
|
2266
|
+
__expectFn$3(it) && (target = it);
|
|
2267
|
+
}
|
|
2268
|
+
return __decoratorMetadata$3(array, target), desc && __defProp$3(target, name, desc), p ? k ^ 4 ? extra : desc : target;
|
|
2269
|
+
};
|
|
2270
|
+
var _TableColHead_decorators, _init$3, _a$3;
|
|
2271
|
+
_TableColHead_decorators = [B.defineElement({ tagName: tableColHeadTagName })];
|
|
2272
|
+
class TableColHead extends (_a$3 = M.ViewListElement) {
|
|
2273
|
+
// #region ViewListElement
|
|
2274
|
+
[M.handleModelEvent](source, evt) {
|
|
2275
|
+
const $l = this.closest(tableListTagName);
|
|
2276
|
+
const old = $l.colLayoutPaused;
|
|
2277
|
+
$l.colLayoutPaused = true;
|
|
2278
|
+
const ret = super[M.handleModelEvent](source, evt);
|
|
2279
|
+
$l.colLayoutPaused = old;
|
|
2280
|
+
return ret;
|
|
2281
|
+
}
|
|
2282
|
+
_getViewItemTagName(options) {
|
|
2283
|
+
return options.tagName;
|
|
2284
|
+
}
|
|
2285
|
+
// #endregion
|
|
2286
|
+
get $list() {
|
|
2287
|
+
return this.closest(tableListTagName);
|
|
2288
|
+
}
|
|
2289
|
+
// #region TableHeadTailBridge
|
|
2290
|
+
notifyHide($child) {
|
|
2291
|
+
this.$list?.notify({ headHide: true, $head: $child });
|
|
2292
|
+
}
|
|
2293
|
+
notifyConnected($child) {
|
|
2294
|
+
this.$list?.notify({ headAdd: true, $head: $child });
|
|
2295
|
+
}
|
|
2296
|
+
notifyDisconnected($child) {
|
|
2297
|
+
this.$list?.notify({ headDel: true, $head: $child });
|
|
2298
|
+
}
|
|
2299
|
+
// #endregion
|
|
2300
|
+
}
|
|
2301
|
+
_init$3 = __decoratorStart$3(_a$3);
|
|
2302
|
+
TableColHead = __decorateElement$3(_init$3, 0, "TableColHead", _TableColHead_decorators, TableColHead);
|
|
2303
|
+
__runInitializers$3(_init$3, 1, TableColHead);
|
|
2304
|
+
var __create$2 = Object.create;
|
|
2305
|
+
var __defProp$2 = Object.defineProperty;
|
|
2306
|
+
var __getOwnPropDesc$2 = Object.getOwnPropertyDescriptor;
|
|
2307
|
+
var __knownSymbol$2 = (name, symbol) => (symbol = Symbol[name]) ? symbol : /* @__PURE__ */ Symbol.for("Symbol." + name);
|
|
2308
|
+
var __typeError$2 = (msg) => {
|
|
2309
|
+
throw TypeError(msg);
|
|
2310
|
+
};
|
|
2311
|
+
var __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
2312
|
+
var __name$2 = (target, value) => __defProp$2(target, "name", { value, configurable: true });
|
|
2313
|
+
var __decoratorStart$2 = (base) => [, , , __create$2(base?.[__knownSymbol$2("metadata")] ?? null)];
|
|
2314
|
+
var __decoratorStrings$2 = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
|
|
2315
|
+
var __expectFn$2 = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError$2("Function expected") : fn;
|
|
2316
|
+
var __decoratorContext$2 = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings$2[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError$2("Already initialized") : fns.push(__expectFn$2(fn || null)) });
|
|
2317
|
+
var __decoratorMetadata$2 = (array, target) => __defNormalProp$2(target, __knownSymbol$2("metadata"), array[3]);
|
|
2318
|
+
var __runInitializers$2 = (array, flags, self, value) => {
|
|
2319
|
+
for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) fns[i].call(self);
|
|
2320
|
+
return value;
|
|
2321
|
+
};
|
|
2322
|
+
var __decorateElement$2 = (array, flags, name, decorators, target, extra) => {
|
|
2323
|
+
var it, done, ctx, k = flags & 7, p = false;
|
|
2324
|
+
var j = 0;
|
|
2325
|
+
var extraInitializers = array[j] || (array[j] = []);
|
|
2326
|
+
var desc = k && (target = target.prototype, k < 5 && (k > 3 || !p) && __getOwnPropDesc$2(target, name));
|
|
2327
|
+
__name$2(target, name);
|
|
2328
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
2329
|
+
ctx = __decoratorContext$2(k, name, done = {}, array[3], extraInitializers);
|
|
2330
|
+
it = (0, decorators[i])(target, ctx), done._ = 1;
|
|
2331
|
+
__expectFn$2(it) && (target = it);
|
|
2332
|
+
}
|
|
2333
|
+
return __decoratorMetadata$2(array, target), desc && __defProp$2(target, name, desc), p ? k ^ 4 ? extra : desc : target;
|
|
2334
|
+
};
|
|
2335
|
+
var _TableColTail_decorators, _init$2, _a$2;
|
|
2336
|
+
_TableColTail_decorators = [B.defineElement({ tagName: tableColTailTagName })];
|
|
2337
|
+
class TableColTail extends (_a$2 = M.ViewListElement) {
|
|
2338
|
+
// #region ViewListElement
|
|
2339
|
+
[M.handleModelEvent](source, evt) {
|
|
2340
|
+
const $l = this.closest(tableListTagName);
|
|
2341
|
+
const old = $l.colLayoutPaused;
|
|
2342
|
+
$l.colLayoutPaused = true;
|
|
2343
|
+
const ret = super[M.handleModelEvent](source, evt);
|
|
2344
|
+
$l.colLayoutPaused = old;
|
|
2345
|
+
return ret;
|
|
2346
|
+
}
|
|
2347
|
+
_getViewItemTagName(options) {
|
|
2348
|
+
return options.tagName;
|
|
2349
|
+
}
|
|
2350
|
+
// #endregion
|
|
2351
|
+
get $list() {
|
|
2352
|
+
return this.closest(tableListTagName);
|
|
2353
|
+
}
|
|
2354
|
+
// #region TableHeadTailBridge
|
|
2355
|
+
notifyHide($child) {
|
|
2356
|
+
this.$list?.notify({ tailHide: true, $tail: $child });
|
|
2357
|
+
}
|
|
2358
|
+
notifyConnected($child) {
|
|
2359
|
+
this.$list?.notify({ tailAdd: true, $tail: $child });
|
|
2360
|
+
}
|
|
2361
|
+
notifyDisconnected($child) {
|
|
2362
|
+
this.$list?.notify({ tailDel: true, $tail: $child });
|
|
2363
|
+
}
|
|
2364
|
+
// #endregion
|
|
2365
|
+
}
|
|
2366
|
+
_init$2 = __decoratorStart$2(_a$2);
|
|
2367
|
+
TableColTail = __decorateElement$2(_init$2, 0, "TableColTail", _TableColTail_decorators, TableColTail);
|
|
2368
|
+
__runInitializers$2(_init$2, 1, TableColTail);
|
|
2369
|
+
var __create$1 = Object.create;
|
|
2370
|
+
var __defProp$1 = Object.defineProperty;
|
|
2371
|
+
var __getOwnPropDesc$1 = Object.getOwnPropertyDescriptor;
|
|
2372
|
+
var __knownSymbol$1 = (name, symbol) => (symbol = Symbol[name]) ? symbol : /* @__PURE__ */ Symbol.for("Symbol." + name);
|
|
2373
|
+
var __typeError$1 = (msg) => {
|
|
2374
|
+
throw TypeError(msg);
|
|
2375
|
+
};
|
|
2376
|
+
var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
2377
|
+
var __name$1 = (target, value) => __defProp$1(target, "name", { value, configurable: true });
|
|
2378
|
+
var __decoratorStart$1 = (base) => [, , , __create$1(base?.[__knownSymbol$1("metadata")] ?? null)];
|
|
2379
|
+
var __decoratorStrings$1 = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
|
|
2380
|
+
var __expectFn$1 = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError$1("Function expected") : fn;
|
|
2381
|
+
var __decoratorContext$1 = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings$1[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError$1("Already initialized") : fns.push(__expectFn$1(fn || null)) });
|
|
2382
|
+
var __decoratorMetadata$1 = (array, target) => __defNormalProp$1(target, __knownSymbol$1("metadata"), array[3]);
|
|
2383
|
+
var __runInitializers$1 = (array, flags, self, value) => {
|
|
2384
|
+
for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) fns[i].call(self);
|
|
2385
|
+
return value;
|
|
2386
|
+
};
|
|
2387
|
+
var __decorateElement$1 = (array, flags, name, decorators, target, extra) => {
|
|
2388
|
+
var it, done, ctx, k = flags & 7, p = false;
|
|
2389
|
+
var j = 0;
|
|
2390
|
+
var extraInitializers = array[j] || (array[j] = []);
|
|
2391
|
+
var desc = k && (target = target.prototype, k < 5 && (k > 3 || !p) && __getOwnPropDesc$1(target, name));
|
|
2392
|
+
__name$1(target, name);
|
|
2393
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
2394
|
+
ctx = __decoratorContext$1(k, name, done = {}, array[3], extraInitializers);
|
|
2395
|
+
it = (0, decorators[i])(target, ctx), done._ = 1;
|
|
2396
|
+
__expectFn$1(it) && (target = it);
|
|
2397
|
+
}
|
|
2398
|
+
return __decoratorMetadata$1(array, target), desc && __defProp$1(target, name, desc), p ? k ^ 4 ? extra : desc : target;
|
|
2399
|
+
};
|
|
2400
|
+
var _TableList_decorators, _init$1, _a$1;
|
|
2401
|
+
_TableList_decorators = [B.defineElement({ tagName: tableListTagName })];
|
|
2402
|
+
class TableList extends (_a$1 = HTMLElement) {
|
|
2403
|
+
// #region 布局
|
|
2404
|
+
$colStart = document.createElement(tableColStartTagName);
|
|
2405
|
+
$colMiddle = document.createElement(tableColMiddleTagName);
|
|
2406
|
+
$colEnd = document.createElement(tableColEndTagName);
|
|
2407
|
+
$colHead = document.createElement(tableColHeadTagName);
|
|
2408
|
+
$colTail = document.createElement(tableColTailTagName);
|
|
2409
|
+
$colStartCols = document.createElement(tableColsTagName);
|
|
2410
|
+
$colMiddleCols = document.createElement(tableColsTagName);
|
|
2411
|
+
$colEndCols = document.createElement(tableColsTagName);
|
|
2412
|
+
$rows = document.createElement(tableRowsTagName);
|
|
2413
|
+
$aggs = document.createElement(tableAggsTagName);
|
|
2414
|
+
initLayout() {
|
|
2415
|
+
this.append(this.$colStart, this.$colMiddle, this.$colEnd, this.$rows, this.$aggs);
|
|
2416
|
+
this.$colStart.append(this.$colHead, this.$colStartCols);
|
|
2417
|
+
this.$colMiddle.append(this.$colMiddleCols);
|
|
2418
|
+
this.$colEnd.append(this.$colEndCols, this.$colTail);
|
|
2419
|
+
}
|
|
2420
|
+
// #endregion
|
|
2421
|
+
createSnapshot() {
|
|
2422
|
+
return new Snapshot(this);
|
|
2423
|
+
}
|
|
2424
|
+
getCellsByColKey(colKey) {
|
|
2425
|
+
return Array.from(this.querySelectorAll(`${tableCellTagName}[col-key='${colKey}']`));
|
|
2426
|
+
}
|
|
2427
|
+
// #region 属性
|
|
2428
|
+
get $table() {
|
|
2429
|
+
return this.getRootNode().host;
|
|
2430
|
+
}
|
|
2431
|
+
// #endregion
|
|
2432
|
+
// #region 排序
|
|
2433
|
+
sortRows(ss = this.createSnapshot()) {
|
|
2434
|
+
const $t = this.$table;
|
|
2435
|
+
if ($t.autoSort) {
|
|
2436
|
+
this.$rows.sortDataSource(ss);
|
|
2437
|
+
} else {
|
|
2438
|
+
$t.model?.columnSort?.(ss.$columnsWantSort);
|
|
2439
|
+
}
|
|
2440
|
+
}
|
|
2441
|
+
// #endregion
|
|
2442
|
+
// #region 聚合
|
|
2443
|
+
_calcAgg($col) {
|
|
2444
|
+
const agg = $col.agg;
|
|
2445
|
+
if (agg) {
|
|
2446
|
+
this.showAggs(true);
|
|
2447
|
+
this.#doCalcAgg($col);
|
|
2448
|
+
} else {
|
|
2449
|
+
this.#hideAggsIfNotNeeded();
|
|
2450
|
+
}
|
|
2451
|
+
}
|
|
2452
|
+
showAggs(b) {
|
|
2453
|
+
this.$aggs.hidden = !b;
|
|
2454
|
+
}
|
|
2455
|
+
#hideAggsIfNotNeeded(ss = this.createSnapshot()) {
|
|
2456
|
+
const $cols = ss.$columnsNeedAgg;
|
|
2457
|
+
if ($cols.length === 0 || !this.$rows.childElementCount) {
|
|
2458
|
+
this.showAggs(false);
|
|
2459
|
+
return false;
|
|
2460
|
+
}
|
|
2461
|
+
return $cols;
|
|
2462
|
+
}
|
|
2463
|
+
#doCalcAgg($col) {
|
|
2464
|
+
const $t = this.$table;
|
|
2465
|
+
if ($t.autoAgg) {
|
|
2466
|
+
$col.aggValue = this.#calcAggValueFromDataSource($col);
|
|
2467
|
+
} else {
|
|
2468
|
+
$t.model?.columnAgg?.($col);
|
|
2469
|
+
}
|
|
2470
|
+
}
|
|
2471
|
+
#calcAggValueFromDataSource($col) {
|
|
2472
|
+
const ds = this.$rows.modelList;
|
|
2473
|
+
if (!ds || ds.length === 0) {
|
|
2474
|
+
return new M.ObjValue(0);
|
|
2475
|
+
}
|
|
2476
|
+
const agg = $col.agg;
|
|
2477
|
+
if (agg === "count") {
|
|
2478
|
+
return new M.ObjValue(ds.length);
|
|
2479
|
+
}
|
|
2480
|
+
const func = Reflect.get(this.$table, agg);
|
|
2481
|
+
if (typeof func !== "function") {
|
|
2482
|
+
return new M.ObjValue(void 0);
|
|
2483
|
+
}
|
|
2484
|
+
const vm = $col.valueMember?.member[0];
|
|
2485
|
+
if (!vm) return new M.ObjValue(void 0);
|
|
2486
|
+
const da = ds.map((r) => Reflect.get(r.data, vm));
|
|
2487
|
+
const ret = func.call(this.$table, ...da);
|
|
2488
|
+
return new M.ObjValue(ret);
|
|
2489
|
+
}
|
|
2490
|
+
refreshAggs(ss = this.createSnapshot()) {
|
|
2491
|
+
const $needAgg = this.#hideAggsIfNotNeeded(ss);
|
|
2492
|
+
if (!$needAgg) {
|
|
2493
|
+
return;
|
|
2494
|
+
}
|
|
2495
|
+
this.showAggs(true);
|
|
2496
|
+
$needAgg.forEach(($c) => this.#doCalcAgg($c));
|
|
2497
|
+
}
|
|
2498
|
+
// #endregion
|
|
2499
|
+
// #region 通知
|
|
2500
|
+
#colId = 0;
|
|
2501
|
+
notify(n) {
|
|
2502
|
+
if ("colAdd" in n && n.colAdd) {
|
|
2503
|
+
if (n.$col.key) ;
|
|
2504
|
+
else {
|
|
2505
|
+
n.$col.key = (++this.#colId).toString();
|
|
2506
|
+
}
|
|
2507
|
+
} else if ("colSort" in n && n.colSort) {
|
|
2508
|
+
let doSort = true;
|
|
2509
|
+
if (!this.$table.multiSort && n.$col.sort) {
|
|
2510
|
+
this.createSnapshot().$columnsWantSort.forEach(($c) => {
|
|
2511
|
+
if ($c !== n.$col) {
|
|
2512
|
+
$c.sort = "";
|
|
2513
|
+
doSort = false;
|
|
2514
|
+
}
|
|
2515
|
+
});
|
|
2516
|
+
}
|
|
2517
|
+
if (!doSort) return;
|
|
2518
|
+
console.debug(`grid column ${n.$col.label} sort ${n.$col.sort}`);
|
|
2519
|
+
}
|
|
2520
|
+
this.#columnsMovement.push(n);
|
|
2521
|
+
if (this.colLayoutPaused) return;
|
|
2522
|
+
this.#layoutCols();
|
|
2523
|
+
}
|
|
2524
|
+
refreshAll() {
|
|
2525
|
+
this.#columnsMovement.push({ all: true });
|
|
2526
|
+
if (this.colLayoutPaused) return;
|
|
2527
|
+
this.#layoutCols();
|
|
2528
|
+
}
|
|
2529
|
+
get colLayoutPaused() {
|
|
2530
|
+
return this.#colLayoutPaused;
|
|
2531
|
+
}
|
|
2532
|
+
set colLayoutPaused(b) {
|
|
2533
|
+
b = !!b;
|
|
2534
|
+
if (!b) {
|
|
2535
|
+
this.#layoutCols();
|
|
2536
|
+
}
|
|
2537
|
+
this.#colLayoutPaused = b;
|
|
2538
|
+
}
|
|
2539
|
+
#colLayoutPaused = false;
|
|
2540
|
+
/**
|
|
2541
|
+
* 用来处理 #columnsMovement 中需要单独处理的事件。
|
|
2542
|
+
* 如列的删除,需要删除所有对应的单元格;列的隐藏,需要隐藏所有对应的单元格。
|
|
2543
|
+
* 组的删除和隐藏,因为涉及到多个列,所以不在这里处理。
|
|
2544
|
+
*/
|
|
2545
|
+
#beforeLayout(cms) {
|
|
2546
|
+
const ret = {};
|
|
2547
|
+
for (let i = 0; i < cms.length; i++) {
|
|
2548
|
+
const m = cms[i];
|
|
2549
|
+
if (!m) continue;
|
|
2550
|
+
if ("colDel" in m && m.colDel) {
|
|
2551
|
+
this.#delColCells(m.$col);
|
|
2552
|
+
} else if ("colHide" in m && m.colHide) {
|
|
2553
|
+
this.#hiddenColCells(m.$col);
|
|
2554
|
+
} else if ("colRefresh" in m && m.colRefresh) {
|
|
2555
|
+
this.#colRefresh(m.$col);
|
|
2556
|
+
} else if ("colSort" in m && m.colSort) {
|
|
2557
|
+
this.sortRows();
|
|
2558
|
+
} else if ("colAgg" in m && m.colAgg) {
|
|
2559
|
+
this._calcAgg(m.$col);
|
|
2560
|
+
} else if ("headDel" in m && m.headDel) {
|
|
2561
|
+
this.#delHeadCells(m.$head);
|
|
2562
|
+
} else if ("tailDel" in m && m.tailDel) {
|
|
2563
|
+
this.#delTailCells(m.$tail);
|
|
2564
|
+
}
|
|
2565
|
+
Object.assign(ret, m);
|
|
2566
|
+
}
|
|
2567
|
+
return ret;
|
|
2568
|
+
}
|
|
2569
|
+
#afterLayout() {
|
|
2570
|
+
if (this.#columnsMovement.length > 0) {
|
|
2571
|
+
this.#layoutCols();
|
|
2572
|
+
}
|
|
2573
|
+
}
|
|
2574
|
+
/**
|
|
2575
|
+
* 用来记录 colLayoutPaused 期间发生的布局改变事件
|
|
2576
|
+
*/
|
|
2577
|
+
#columnsMovement = [];
|
|
2578
|
+
#layoutCols() {
|
|
2579
|
+
const ss = this.createSnapshot();
|
|
2580
|
+
const cms = this.#columnsMovement;
|
|
2581
|
+
this.#columnsMovement = [];
|
|
2582
|
+
const cm = this.#beforeLayout(cms);
|
|
2583
|
+
const col = cm.colAdd || cm.colDel || cm.colHide;
|
|
2584
|
+
const group = cm.groupAdd || cm.groupDel || cm.groupHide;
|
|
2585
|
+
const head = cm.headAdd || cm.headDel || cm.headHide;
|
|
2586
|
+
const tail = cm.tailAdd || cm.tailDel || cm.tailHide;
|
|
2587
|
+
if (cm.all) {
|
|
2588
|
+
this.#refreshColumns();
|
|
2589
|
+
}
|
|
2590
|
+
if (cm.all || col || group || head || tail || cm.colWidth) {
|
|
2591
|
+
this._setColumnsTemplate(ss);
|
|
2592
|
+
}
|
|
2593
|
+
if (cm.all || col || group) {
|
|
2594
|
+
this._layoutColumnGroup(ss);
|
|
2595
|
+
}
|
|
2596
|
+
if (cm.all || cm.colAdd || group || cm.headAdd || cm.tailAdd) {
|
|
2597
|
+
this.$aggs.refresh(ss);
|
|
2598
|
+
}
|
|
2599
|
+
if (cm.all || col || group || head || tail || cm.colWidth) {
|
|
2600
|
+
this.#refreshRows(ss);
|
|
2601
|
+
}
|
|
2602
|
+
this.#afterLayout();
|
|
2603
|
+
}
|
|
2604
|
+
// #endregion
|
|
2605
|
+
// #region 布局变化
|
|
2606
|
+
#hiddenColCells($col) {
|
|
2607
|
+
const hidden = !$col.visible;
|
|
2608
|
+
const $cells = this.getCellsByColKey($col.key);
|
|
2609
|
+
$cells.forEach(($cell) => $cell.hidden = hidden);
|
|
2610
|
+
}
|
|
2611
|
+
#delColCells($col) {
|
|
2612
|
+
const $cells = this.getCellsByColKey($col.key);
|
|
2613
|
+
$cells.forEach(($cell) => $cell.remove());
|
|
2614
|
+
}
|
|
2615
|
+
#colRefresh($col) {
|
|
2616
|
+
const $cells = this.getCellsByColKey($col.key);
|
|
2617
|
+
$cells.forEach(($cell) => $col._setCellData($cell));
|
|
2618
|
+
}
|
|
2619
|
+
#delHeadCells($head) {
|
|
2620
|
+
$head.getAllInRow().forEach(($h) => $h.remove());
|
|
2621
|
+
}
|
|
2622
|
+
#delTailCells($tail) {
|
|
2623
|
+
$tail.getAllInRow().forEach(($t) => $t.remove());
|
|
2624
|
+
}
|
|
2625
|
+
_setColumnsTemplate(ss = this.createSnapshot()) {
|
|
2626
|
+
const $heads = ss.$columnHeadsVisible;
|
|
2627
|
+
let startSpan = $heads.length;
|
|
2628
|
+
const $startCols = ss.$startColumnsVisible;
|
|
2629
|
+
startSpan += $startCols.length;
|
|
2630
|
+
const $middleCols = ss.$middleColumnsVisible;
|
|
2631
|
+
const middleSpan = $middleCols.length;
|
|
2632
|
+
const $endCols = ss.$endColumnsVisible;
|
|
2633
|
+
let endSpan = $endCols.length;
|
|
2634
|
+
const $tails = ss.$columnTailsVisible;
|
|
2635
|
+
endSpan += $tails.length;
|
|
2636
|
+
const str = [...$heads, ...$startCols, ...$middleCols, ...$endCols, ...$tails].map(($c) => $c.width).join(" ");
|
|
2637
|
+
this.style.gridTemplateColumns = str;
|
|
2638
|
+
this.style.setProperty("--grid-start-span", startSpan.toString());
|
|
2639
|
+
this.style.setProperty("--grid-middle-span", middleSpan.toString());
|
|
2640
|
+
this.style.setProperty("--grid-end-span", endSpan.toString());
|
|
2641
|
+
void (startSpan ? this.removeAttribute("no-start") : this.setAttribute("no-start", ""));
|
|
2642
|
+
void (endSpan ? this.removeAttribute("no-end") : this.setAttribute("no-end", ""));
|
|
2643
|
+
console.debug("grid column layout - " + str + " - startSpan = " + startSpan + ", middleSpan = " + middleSpan + ", endSpan = " + endSpan);
|
|
2644
|
+
}
|
|
2645
|
+
_layoutColumnGroup(ss = this.createSnapshot()) {
|
|
2646
|
+
const end = ss.groupsMaxTier + 1 + 1;
|
|
2647
|
+
this.style.setProperty("--grid-col-end", end.toString());
|
|
2648
|
+
ss.$visibleTopColumnsAndGroups.forEach(($cg) => $cg.setRow(1));
|
|
2649
|
+
console.debug("--grid-col-end = " + end);
|
|
2650
|
+
}
|
|
2651
|
+
#refreshRows(ss = this.createSnapshot()) {
|
|
2652
|
+
const begin = (/* @__PURE__ */ new Date()).valueOf();
|
|
2653
|
+
const refresh = this.getRowRefreshFunc(ss);
|
|
2654
|
+
const $rows = ss.$rows;
|
|
2655
|
+
$rows.forEach(($row) => {
|
|
2656
|
+
refresh($row);
|
|
2657
|
+
});
|
|
2658
|
+
const interval = (/* @__PURE__ */ new Date()).valueOf() - begin;
|
|
2659
|
+
console.debug(`grid refresh ${$rows.length} rows for ${interval} ms`);
|
|
2660
|
+
}
|
|
2661
|
+
getRowRefreshFunc(ss = this.createSnapshot()) {
|
|
2662
|
+
return ($row, refreshCellData = false) => {
|
|
2663
|
+
$row.refresh(ss, refreshCellData);
|
|
2664
|
+
};
|
|
2665
|
+
}
|
|
2666
|
+
#refreshColumns() {
|
|
2667
|
+
this.colLayoutPaused = true;
|
|
2668
|
+
this.$colStartCols.modelList = this.$colStartCols.modelList;
|
|
2669
|
+
this.$colMiddleCols.modelList = this.$colMiddleCols.modelList;
|
|
2670
|
+
this.$colEndCols.modelList = this.$colEndCols.modelList;
|
|
2671
|
+
this.colLayoutPaused = false;
|
|
2672
|
+
}
|
|
2673
|
+
// #endregion
|
|
2674
|
+
}
|
|
2675
|
+
_init$1 = __decoratorStart$1(_a$1);
|
|
2676
|
+
TableList = __decorateElement$1(_init$1, 0, "TableList", _TableList_decorators, TableList);
|
|
2677
|
+
__runInitializers$1(_init$1, 1, TableList);
|
|
2678
|
+
var __create = Object.create;
|
|
2679
|
+
var __defProp = Object.defineProperty;
|
|
2680
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
2681
|
+
var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : /* @__PURE__ */ Symbol.for("Symbol." + name);
|
|
2682
|
+
var __typeError = (msg) => {
|
|
2683
|
+
throw TypeError(msg);
|
|
2684
|
+
};
|
|
2685
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
2686
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
2687
|
+
var __decoratorStart = (base) => [, , , __create(base?.[__knownSymbol("metadata")] ?? null)];
|
|
2688
|
+
var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
|
|
2689
|
+
var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn;
|
|
2690
|
+
var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) });
|
|
2691
|
+
var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]);
|
|
2692
|
+
var __runInitializers = (array, flags, self, value) => {
|
|
2693
|
+
for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);
|
|
2694
|
+
return value;
|
|
2695
|
+
};
|
|
2696
|
+
var __decorateElement = (array, flags, name, decorators, target, extra) => {
|
|
2697
|
+
var fn, it, done, ctx, access, k = flags & 7, s = !!(flags & 8), p = !!(flags & 16);
|
|
2698
|
+
var j = k > 3 ? array.length + 1 : k ? s ? 1 : 2 : 0, key = __decoratorStrings[k + 5];
|
|
2699
|
+
var initializers = k > 3 && (array[j - 1] = []), extraInitializers = array[j] || (array[j] = []);
|
|
2700
|
+
var desc = k && (!p && !s && (target = target.prototype), k < 5 && (k > 3 || !p) && __getOwnPropDesc(k < 4 ? target : { get [name]() {
|
|
2701
|
+
return __privateGet(this, extra);
|
|
2702
|
+
}, set [name](x) {
|
|
2703
|
+
return __privateSet(this, extra, x);
|
|
2704
|
+
} }, name));
|
|
2705
|
+
k ? p && k < 4 && __name(extra, (k > 2 ? "set " : k > 1 ? "get " : "") + name) : __name(target, name);
|
|
2706
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
2707
|
+
ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);
|
|
2708
|
+
if (k) {
|
|
2709
|
+
ctx.static = s, ctx.private = p, access = ctx.access = { has: p ? (x) => __privateIn(target, x) : (x) => name in x };
|
|
2710
|
+
if (k ^ 3) access.get = p ? (x) => (k ^ 1 ? __privateGet : __privateMethod)(x, target, k ^ 4 ? extra : desc.get) : (x) => x[name];
|
|
2711
|
+
if (k > 2) access.set = p ? (x, y) => __privateSet(x, target, y, k ^ 4 ? extra : desc.set) : (x, y) => x[name] = y;
|
|
2712
|
+
}
|
|
2713
|
+
it = (0, decorators[i])(k ? k < 4 ? p ? extra : desc[key] : k > 4 ? void 0 : { get: desc.get, set: desc.set } : target, ctx), done._ = 1;
|
|
2714
|
+
if (k ^ 4 || it === void 0) __expectFn(it) && (k > 4 ? initializers.unshift(it) : k ? p ? extra = it : desc[key] = it : target = it);
|
|
2715
|
+
else if (typeof it !== "object" || it === null) __typeError("Object expected");
|
|
2716
|
+
else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);
|
|
2717
|
+
}
|
|
2718
|
+
return k || __decoratorMetadata(array, target), desc && __defProp(target, name, desc), p ? k ^ 4 ? extra : desc : target;
|
|
2719
|
+
};
|
|
2720
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
2721
|
+
var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
|
|
2722
|
+
var __privateIn = (member, obj) => Object(obj) !== obj ? __typeError('Cannot use the "in" operator on this value') : member.has(obj);
|
|
2723
|
+
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
|
|
2724
|
+
var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
2725
|
+
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
|
|
2726
|
+
var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
|
|
2727
|
+
var _autoAgg_dec, _autoSort_dec, _multiSort_dec, _multiple_dec, _a, _TableView_decorators, _clickHandler, _TableView_instances, switchActiveRow_fn, _ds, _init, _multiple, _multiSort, _autoSort, _autoAgg, num_fn, _b;
|
|
2728
|
+
const mutableAttributes = ["multiple", "auto-sort", "auto-agg"];
|
|
2729
|
+
_TableView_decorators = [B.defineElement({ tagName: tableViewTagName, mutableAttributes })];
|
|
2730
|
+
class TableView extends (_b = M.ViewElement) {
|
|
2731
|
+
constructor() {
|
|
2732
|
+
super();
|
|
2733
|
+
__privateAdd(this, _TableView_instances);
|
|
2734
|
+
__publicField(this, "$list");
|
|
2735
|
+
__privateAdd(this, _clickHandler, (e) => {
|
|
2736
|
+
const $cp = e.composedPath();
|
|
2737
|
+
const $ge = $cp.find(($c) => $c.tagName.startsWith("GZM-TABLE-"));
|
|
2738
|
+
if (!$ge) return;
|
|
2739
|
+
if ($ge instanceof TableCell) {
|
|
2740
|
+
const $row = $ge.closest(tableRowTagName);
|
|
2741
|
+
if ($row) {
|
|
2742
|
+
__privateMethod(this, _TableView_instances, switchActiveRow_fn).call(this, $row);
|
|
2743
|
+
}
|
|
2744
|
+
} else if ($ge instanceof TableRow) {
|
|
2745
|
+
__privateMethod(this, _TableView_instances, switchActiveRow_fn).call(this, $ge);
|
|
2746
|
+
} else {
|
|
2747
|
+
if ("handleClick" in $ge && typeof $ge.handleClick === "function") {
|
|
2748
|
+
$ge.handleClick(e, this.$list);
|
|
2749
|
+
}
|
|
2750
|
+
}
|
|
2751
|
+
});
|
|
2752
|
+
__privateAdd(this, _ds);
|
|
2753
|
+
__privateAdd(this, _multiple, __runInitializers(_init, 8, this, false)), __runInitializers(_init, 11, this);
|
|
2754
|
+
__privateAdd(this, _multiSort, __runInitializers(_init, 12, this, false)), __runInitializers(_init, 15, this);
|
|
2755
|
+
__privateAdd(this, _autoSort, __runInitializers(_init, 16, this, false)), __runInitializers(_init, 19, this);
|
|
2756
|
+
__privateAdd(this, _autoAgg, __runInitializers(_init, 20, this, false)), __runInitializers(_init, 23, this);
|
|
2757
|
+
__publicField(this, "T", B.createText(texts, B.globalTexts).bindHtmlElement(this));
|
|
2758
|
+
const $l = this.$list = document.createElement(tableListTagName);
|
|
2759
|
+
$l.initLayout();
|
|
2760
|
+
$l.onclick = __privateGet(this, _clickHandler);
|
|
2761
|
+
const $section = document.createElement("section");
|
|
2762
|
+
$section.append($l, document.createElement("div"));
|
|
2763
|
+
const $root = this.attachShadow({ mode: "open" });
|
|
2764
|
+
$root.adoptedStyleSheets = [B.baseStyle, B.utilityStyle, styleSheet$1];
|
|
2765
|
+
$root.append($section);
|
|
2766
|
+
}
|
|
2767
|
+
// #endregion
|
|
2768
|
+
// #region models
|
|
2769
|
+
/**
|
|
2770
|
+
* 设置 model 会导致此函数被调用来设置各个属性,所以需要控制 colLayoutPaused;
|
|
2771
|
+
*/
|
|
2772
|
+
[(_a = M.handleModelEvent, _multiple_dec = [B.boolAttr], _multiSort_dec = [B.boolAttr], _autoSort_dec = [B.boolAttr], _autoAgg_dec = [B.boolAttr], _a)](source, evt) {
|
|
2773
|
+
if (source === this.dataSource) {
|
|
2774
|
+
return new M.DataListEventHandler(this.dataSource, this.$list.$rows.modelList, "data").handle(evt);
|
|
2775
|
+
}
|
|
2776
|
+
const $l = this.$list;
|
|
2777
|
+
const old = $l.colLayoutPaused;
|
|
2778
|
+
$l.colLayoutPaused = true;
|
|
2779
|
+
const ret = super[M.handleModelEvent](source, evt);
|
|
2780
|
+
$l.colLayoutPaused = old;
|
|
2781
|
+
return ret;
|
|
2782
|
+
}
|
|
2783
|
+
get heads() {
|
|
2784
|
+
return this.$list.$colHead.modelList;
|
|
2785
|
+
}
|
|
2786
|
+
set heads(v) {
|
|
2787
|
+
this.$list.$colHead.modelList = v;
|
|
2788
|
+
}
|
|
2789
|
+
get tails() {
|
|
2790
|
+
return this.$list.$colTail.modelList;
|
|
2791
|
+
}
|
|
2792
|
+
set tails(v) {
|
|
2793
|
+
this.$list.$colTail.modelList = v;
|
|
2794
|
+
}
|
|
2795
|
+
get colsStart() {
|
|
2796
|
+
return this.$list.$colStartCols.modelList;
|
|
2797
|
+
}
|
|
2798
|
+
set colsStart(v) {
|
|
2799
|
+
this.$list.$colStartCols.modelList = v;
|
|
2800
|
+
}
|
|
2801
|
+
get colsMiddle() {
|
|
2802
|
+
return this.$list.$colMiddleCols.modelList;
|
|
2803
|
+
}
|
|
2804
|
+
set colsMiddle(v) {
|
|
2805
|
+
this.$list.$colMiddleCols.modelList = v;
|
|
2806
|
+
}
|
|
2807
|
+
get colsEnd() {
|
|
2808
|
+
return this.$list.$colEndCols.modelList;
|
|
2809
|
+
}
|
|
2810
|
+
set colsEnd(v) {
|
|
2811
|
+
this.$list.$colEndCols.modelList = v;
|
|
2812
|
+
}
|
|
2813
|
+
get dataSource() {
|
|
2814
|
+
return __privateGet(this, _ds);
|
|
2815
|
+
}
|
|
2816
|
+
set dataSource(ds) {
|
|
2817
|
+
const old = __privateGet(this, _ds);
|
|
2818
|
+
if (old) {
|
|
2819
|
+
old[M.offModelEvent]?.(this);
|
|
2820
|
+
}
|
|
2821
|
+
__privateSet(this, _ds, ds);
|
|
2822
|
+
if (ds) {
|
|
2823
|
+
ds[M.onModelEvent]?.(this);
|
|
2824
|
+
const ml = new M.DataListEventHandler(ds, this.$list.$rows.modelList, "data").createModelList();
|
|
2825
|
+
this.$list.$rows.setModelProperty("modelList", M.createViewModel(ml));
|
|
2826
|
+
} else {
|
|
2827
|
+
this.$list.$rows.setModelProperty("modelList", []);
|
|
2828
|
+
}
|
|
2829
|
+
}
|
|
2830
|
+
// #endregion
|
|
2831
|
+
// #region 对外方法
|
|
2832
|
+
/**
|
|
2833
|
+
* @returns 选中的行的数据
|
|
2834
|
+
*/
|
|
2835
|
+
getActiveModels() {
|
|
2836
|
+
return this.getActiveRows().map(($row) => $row.model);
|
|
2837
|
+
}
|
|
2838
|
+
getActiveRows() {
|
|
2839
|
+
return this.$list.createSnapshot().$rowsActive;
|
|
2840
|
+
}
|
|
2841
|
+
getCheckedRows() {
|
|
2842
|
+
const $chks = this.$list.querySelectorAll(`${tableRowCheckTagName} input[type="checkbox"]:checked`);
|
|
2843
|
+
const $rows = Array.from($chks).map(($x) => $x.closest(tableRowTagName));
|
|
2844
|
+
return $rows;
|
|
2845
|
+
}
|
|
2846
|
+
getCheckedModels() {
|
|
2847
|
+
return this.getCheckedRows().map(($row) => $row.model);
|
|
2848
|
+
}
|
|
2849
|
+
_multiple_set() {
|
|
2850
|
+
if (this.multiple) return;
|
|
2851
|
+
const $rs = this.$list.createSnapshot().$rowsActive;
|
|
2852
|
+
for (let i = 1; i < $rs.length; i++) {
|
|
2853
|
+
$rs[i]?.setModelProperty("active", false);
|
|
2854
|
+
}
|
|
2855
|
+
}
|
|
2856
|
+
_auto_sort_set() {
|
|
2857
|
+
this.$list.sortRows();
|
|
2858
|
+
}
|
|
2859
|
+
_auto_agg_set() {
|
|
2860
|
+
this.$list.refreshAggs();
|
|
2861
|
+
}
|
|
2862
|
+
// #endregion
|
|
2863
|
+
// #region 默认聚合函数 autoAgg 时调用,60-list #calcAggValueFromDataSource() 中使用
|
|
2864
|
+
count(...args) {
|
|
2865
|
+
return args.length;
|
|
2866
|
+
}
|
|
2867
|
+
sum(...args) {
|
|
2868
|
+
if (args.length === 0) return 0;
|
|
2869
|
+
args = __privateMethod(this, _TableView_instances, num_fn).call(this, ...args);
|
|
2870
|
+
if (args.length === 0) return void 0;
|
|
2871
|
+
return args.reduce((p, c) => p + c, 0);
|
|
2872
|
+
}
|
|
2873
|
+
avg(...args) {
|
|
2874
|
+
if (args.length === 0) return 0;
|
|
2875
|
+
const sum = this.sum(...args);
|
|
2876
|
+
return sum === void 0 ? sum : sum / args.length;
|
|
2877
|
+
}
|
|
2878
|
+
min(...args) {
|
|
2879
|
+
if (args.length === 0) return 0;
|
|
2880
|
+
const nums = __privateMethod(this, _TableView_instances, num_fn).call(this, ...args);
|
|
2881
|
+
if (nums.length === args.length) {
|
|
2882
|
+
return Math.min(...nums);
|
|
2883
|
+
}
|
|
2884
|
+
return args.reduce((min, current) => {
|
|
2885
|
+
try {
|
|
2886
|
+
return compare(current, min) < 0 ? current : min;
|
|
2887
|
+
} catch (e) {
|
|
2888
|
+
console.warn(e, min, current);
|
|
2889
|
+
}
|
|
2890
|
+
return min;
|
|
2891
|
+
}, args[0]);
|
|
2892
|
+
}
|
|
2893
|
+
max(...args) {
|
|
2894
|
+
if (args.length === 0) return 0;
|
|
2895
|
+
const nums = __privateMethod(this, _TableView_instances, num_fn).call(this, ...args);
|
|
2896
|
+
if (nums.length === args.length) {
|
|
2897
|
+
return Math.max(...nums);
|
|
2898
|
+
}
|
|
2899
|
+
return args.reduce((max, current) => {
|
|
2900
|
+
try {
|
|
2901
|
+
return compare(current, max) > 0 ? current : max;
|
|
2902
|
+
} catch (e) {
|
|
2903
|
+
console.warn(e, max, current);
|
|
2904
|
+
}
|
|
2905
|
+
return max;
|
|
2906
|
+
}, args[0]);
|
|
2907
|
+
}
|
|
2908
|
+
}
|
|
2909
|
+
_init = __decoratorStart(_b);
|
|
2910
|
+
_clickHandler = /* @__PURE__ */ new WeakMap();
|
|
2911
|
+
_TableView_instances = /* @__PURE__ */ new WeakSet();
|
|
2912
|
+
switchActiveRow_fn = function($row) {
|
|
2913
|
+
if ($row.active) {
|
|
2914
|
+
$row.setModelProperty("active", false);
|
|
2915
|
+
return;
|
|
2916
|
+
}
|
|
2917
|
+
if (this.multiple) {
|
|
2918
|
+
$row.setModelProperty("active", true);
|
|
2919
|
+
return;
|
|
2920
|
+
}
|
|
2921
|
+
const ss = this.$list.createSnapshot();
|
|
2922
|
+
ss.$rowsActive.forEach(($row2) => $row2.setModelProperty("active", false));
|
|
2923
|
+
$row.setModelProperty("active", true);
|
|
2924
|
+
};
|
|
2925
|
+
_ds = /* @__PURE__ */ new WeakMap();
|
|
2926
|
+
_multiple = /* @__PURE__ */ new WeakMap();
|
|
2927
|
+
_multiSort = /* @__PURE__ */ new WeakMap();
|
|
2928
|
+
_autoSort = /* @__PURE__ */ new WeakMap();
|
|
2929
|
+
_autoAgg = /* @__PURE__ */ new WeakMap();
|
|
2930
|
+
num_fn = function(...args) {
|
|
2931
|
+
args = args.flatMap((n) => n).map((n) => Number(n)).filter((n) => !Number.isNaN(n));
|
|
2932
|
+
return args;
|
|
2933
|
+
};
|
|
2934
|
+
__decorateElement(_init, 4, "multiple", _multiple_dec, TableView, _multiple);
|
|
2935
|
+
__decorateElement(_init, 4, "multiSort", _multiSort_dec, TableView, _multiSort);
|
|
2936
|
+
__decorateElement(_init, 4, "autoSort", _autoSort_dec, TableView, _autoSort);
|
|
2937
|
+
__decorateElement(_init, 4, "autoAgg", _autoAgg_dec, TableView, _autoAgg);
|
|
2938
|
+
TableView = __decorateElement(_init, 0, "TableView", _TableView_decorators, TableView);
|
|
2939
|
+
__runInitializers(_init, 1, TableView);
|
|
2940
|
+
function compare(a, b) {
|
|
2941
|
+
if (a === b) {
|
|
2942
|
+
return 0;
|
|
2943
|
+
}
|
|
2944
|
+
if (Array.isArray(a) && Array.isArray(b)) {
|
|
2945
|
+
const l = Math.max(a.length, b.length);
|
|
2946
|
+
for (let i = 0; i < l; i++) {
|
|
2947
|
+
const ret = compare(a[i], b[i]);
|
|
2948
|
+
if (ret !== 0) {
|
|
2949
|
+
return ret;
|
|
2950
|
+
}
|
|
2951
|
+
}
|
|
2952
|
+
return 0;
|
|
2953
|
+
}
|
|
2954
|
+
return a < b ? -1 : 1;
|
|
2955
|
+
}
|
|
2956
|
+
export {
|
|
2957
|
+
Snapshot,
|
|
2958
|
+
TableCol,
|
|
2959
|
+
TableRow,
|
|
2960
|
+
TableView,
|
|
2961
|
+
sortAsc,
|
|
2962
|
+
sortDesc,
|
|
2963
|
+
tableColActionTagName,
|
|
2964
|
+
tableColCheckTagName,
|
|
2965
|
+
tableColMenuTagName,
|
|
2966
|
+
tableColSerialTagName,
|
|
2967
|
+
tableViewTagName
|
|
2968
|
+
};
|
|
2969
|
+
//# sourceMappingURL=table.es.js.map
|