@ibiz-template/runtime 0.4.17-dev.0 → 0.4.17-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/dist/index.esm.js +696 -267
  2. package/dist/index.system.min.js +2 -2
  3. package/out/controller/control/grid/grid/grid-column.controller.d.ts +2 -1
  4. package/out/controller/control/grid/grid/grid-column.controller.d.ts.map +1 -1
  5. package/out/controller/control/grid/grid/grid.controller.d.ts +17 -1
  6. package/out/controller/control/grid/grid/grid.controller.d.ts.map +1 -1
  7. package/out/controller/control/grid/grid/grid.controller.js +32 -0
  8. package/out/controller/control/search-bar/search-bar.controller.d.ts +59 -2
  9. package/out/controller/control/search-bar/search-bar.controller.d.ts.map +1 -1
  10. package/out/controller/control/search-bar/search-bar.controller.js +142 -9
  11. package/out/controller/control/search-bar/search-bar.service.d.ts +78 -0
  12. package/out/controller/control/search-bar/search-bar.service.d.ts.map +1 -0
  13. package/out/controller/control/search-bar/search-bar.service.js +130 -0
  14. package/out/controller/control/tree/tree.controller.d.ts +27 -1
  15. package/out/controller/control/tree/tree.controller.d.ts.map +1 -1
  16. package/out/controller/control/tree/tree.controller.js +45 -7
  17. package/out/controller/control/tree/tree.service.d.ts +1 -1
  18. package/out/controller/control/tree/tree.service.d.ts.map +1 -1
  19. package/out/controller/control/tree-grid-ex/index.d.ts +2 -0
  20. package/out/controller/control/tree-grid-ex/index.d.ts.map +1 -1
  21. package/out/controller/control/tree-grid-ex/index.js +2 -0
  22. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/index.d.ts +4 -0
  23. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/index.d.ts.map +1 -0
  24. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/index.js +3 -0
  25. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-column/tree-grid-ex-column.controller.d.ts +93 -0
  26. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-column/tree-grid-ex-column.controller.d.ts.map +1 -0
  27. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-column/tree-grid-ex-column.controller.js +89 -0
  28. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-field-column.controller.d.ts +13 -0
  29. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-field-column.controller.d.ts.map +1 -0
  30. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-field-column.controller.js +11 -0
  31. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-ua-column/tree-grid-ex-ua-column.controller.d.ts +31 -0
  32. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-ua-column/tree-grid-ex-ua-column.controller.d.ts.map +1 -0
  33. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-ua-column/tree-grid-ex-ua-column.controller.js +61 -0
  34. package/out/controller/control/tree-grid-ex/tree-grid-ex-row.state.d.ts +26 -0
  35. package/out/controller/control/tree-grid-ex/tree-grid-ex-row.state.d.ts.map +1 -0
  36. package/out/controller/control/tree-grid-ex/tree-grid-ex-row.state.js +26 -0
  37. package/out/controller/control/tree-grid-ex/tree-grid-ex.controller.d.ts +48 -46
  38. package/out/controller/control/tree-grid-ex/tree-grid-ex.controller.d.ts.map +1 -1
  39. package/out/controller/control/tree-grid-ex/tree-grid-ex.controller.js +85 -115
  40. package/out/controller/control/tree-grid-ex/tree-grid-ex.service.d.ts +8 -58
  41. package/out/controller/control/tree-grid-ex/tree-grid-ex.service.d.ts.map +1 -1
  42. package/out/controller/control/tree-grid-ex/tree-grid-ex.service.js +5 -135
  43. package/out/interface/controller/controller/control/i-grid.controller.d.ts +8 -0
  44. package/out/interface/controller/controller/control/i-grid.controller.d.ts.map +1 -1
  45. package/out/interface/controller/controller/control/i-tree-grid-ex.controller.d.ts +7 -7
  46. package/out/interface/controller/controller/control/i-tree-grid-ex.controller.d.ts.map +1 -1
  47. package/out/interface/controller/controller/control/i-tree.controller.d.ts +1 -1
  48. package/out/interface/controller/controller/control/i-tree.controller.d.ts.map +1 -1
  49. package/out/interface/controller/controller/control/index.d.ts +1 -0
  50. package/out/interface/controller/controller/control/index.d.ts.map +1 -1
  51. package/out/interface/controller/controller/control/index.js +1 -0
  52. package/out/interface/controller/controller/control/tree-grid-ex-column/i-tree-grid-ex-column.controller.d.ts +12 -0
  53. package/out/interface/controller/controller/control/tree-grid-ex-column/i-tree-grid-ex-column.controller.d.ts.map +1 -0
  54. package/out/interface/controller/controller/control/tree-grid-ex-column/i-tree-grid-ex-column.controller.js +1 -0
  55. package/out/interface/controller/controller/control/tree-grid-ex-column/index.d.ts +2 -0
  56. package/out/interface/controller/controller/control/tree-grid-ex-column/index.d.ts.map +1 -0
  57. package/out/interface/controller/controller/control/tree-grid-ex-column/index.js +1 -0
  58. package/out/interface/controller/event/control/i-tree-grid-ex.event.d.ts +2 -2
  59. package/out/interface/controller/event/control/i-tree-grid-ex.event.d.ts.map +1 -1
  60. package/out/interface/controller/state/control/i-search-bar.state.d.ts +64 -0
  61. package/out/interface/controller/state/control/i-search-bar.state.d.ts.map +1 -1
  62. package/out/interface/controller/state/control/i-tree-grid-ex.state.d.ts +31 -23
  63. package/out/interface/controller/state/control/i-tree-grid-ex.state.d.ts.map +1 -1
  64. package/out/interface/controller/state/control/i-tree.state.d.ts +8 -1
  65. package/out/interface/controller/state/control/i-tree.state.d.ts.map +1 -1
  66. package/out/interface/provider/i-tree-grid-ex-column.provider.d.ts +31 -0
  67. package/out/interface/provider/i-tree-grid-ex-column.provider.d.ts.map +1 -0
  68. package/out/interface/provider/i-tree-grid-ex-column.provider.js +1 -0
  69. package/out/interface/provider/index.d.ts +1 -0
  70. package/out/interface/provider/index.d.ts.map +1 -1
  71. package/out/register/helper/index.d.ts +1 -0
  72. package/out/register/helper/index.d.ts.map +1 -1
  73. package/out/register/helper/index.js +1 -0
  74. package/out/register/helper/tree-grid-ex-column-register.d.ts +23 -0
  75. package/out/register/helper/tree-grid-ex-column-register.d.ts.map +1 -0
  76. package/out/register/helper/tree-grid-ex-column-register.js +50 -0
  77. package/out/service/vo/tree-node-data/tree-data-set-node-data.d.ts.map +1 -1
  78. package/out/service/vo/tree-node-data/tree-data-set-node-data.js +51 -0
  79. package/out/service/vo/tree-node-data/tree-node-data.d.ts +2 -0
  80. package/out/service/vo/tree-node-data/tree-node-data.d.ts.map +1 -1
  81. package/out/service/vo/tree-node-data/tree-node-data.js +1 -0
  82. package/package.json +3 -3
  83. package/src/controller/control/grid/grid/grid-column.controller.ts +4 -1
  84. package/src/controller/control/grid/grid/grid.controller.ts +34 -0
  85. package/src/controller/control/search-bar/search-bar.controller.ts +178 -10
  86. package/src/controller/control/search-bar/search-bar.service.ts +161 -0
  87. package/src/controller/control/tree/tree.controller.ts +58 -11
  88. package/src/controller/control/tree/tree.service.ts +3 -1
  89. package/src/controller/control/tree-grid-ex/index.ts +2 -0
  90. package/src/controller/control/tree-grid-ex/tree-grid-ex-column/index.ts +3 -0
  91. package/src/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-column/tree-grid-ex-column.controller.ts +121 -0
  92. package/src/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-field-column.controller.ts +13 -0
  93. package/src/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-ua-column/tree-grid-ex-ua-column.controller.ts +76 -0
  94. package/src/controller/control/tree-grid-ex/tree-grid-ex-row.state.ts +37 -0
  95. package/src/controller/control/tree-grid-ex/tree-grid-ex.controller.ts +116 -140
  96. package/src/controller/control/tree-grid-ex/tree-grid-ex.service.ts +10 -165
  97. package/src/interface/controller/controller/control/i-grid.controller.ts +9 -0
  98. package/src/interface/controller/controller/control/i-tree-grid-ex.controller.ts +11 -12
  99. package/src/interface/controller/controller/control/i-tree.controller.ts +5 -2
  100. package/src/interface/controller/controller/control/index.ts +1 -0
  101. package/src/interface/controller/controller/control/tree-grid-ex-column/i-tree-grid-ex-column.controller.ts +12 -0
  102. package/src/interface/controller/controller/control/tree-grid-ex-column/index.ts +1 -0
  103. package/src/interface/controller/event/control/i-tree-grid-ex.event.ts +2 -2
  104. package/src/interface/controller/state/control/i-search-bar.state.ts +73 -0
  105. package/src/interface/controller/state/control/i-tree-grid-ex.state.ts +27 -24
  106. package/src/interface/controller/state/control/i-tree.state.ts +9 -1
  107. package/src/interface/provider/i-tree-grid-ex-column.provider.ts +39 -0
  108. package/src/interface/provider/index.ts +1 -0
  109. package/src/register/helper/index.ts +1 -0
  110. package/src/register/helper/tree-grid-ex-column-register.ts +67 -0
  111. package/src/service/vo/tree-node-data/tree-data-set-node-data.ts +53 -0
  112. package/src/service/vo/tree-node-data/tree-node-data.ts +6 -0
@@ -1,24 +1,26 @@
1
+ import { IDETreeColumn, IDETreeGridEx } from '@ibiz/model-core';
1
2
  import { recursiveIterate } from '@ibiz-template/core';
2
- import { IDETree, IDETreeColumn } from '@ibiz/model-core';
3
3
  import {
4
- MDCtrlLoadParams,
5
- ITreeNodeData,
6
4
  ITreeGridExController,
7
- IGridColumnProvider,
8
5
  ITreeGridExState,
9
6
  ITreeGridExEvent,
7
+ ITreeGridExColumnProvider,
8
+ ITreeGridExRowState,
9
+ ITreeNodeData,
10
10
  } from '../../../interface';
11
- import { getGridColumnProvider } from '../../../register';
12
- import { MDControlController } from '../../common';
13
- import {
14
- GridColumnController,
15
- GridFieldColumnController,
16
- GridUAColumnController,
17
- } from '../grid';
11
+ import { getTreeGridExColumnProvider } from '../../../register';
12
+
18
13
  import { TreeGridExService } from './tree-grid-ex.service';
14
+ import { TreeController } from '../tree/tree.controller';
15
+ import {
16
+ TreeGridExColumnController,
17
+ TreeGridExFieldColumnController,
18
+ TreeGridExUAColumnController,
19
+ } from './tree-grid-ex-column';
20
+ import { TreeGridExRowState } from './tree-grid-ex-row.state';
19
21
 
20
22
  /**
21
- * 树表格部件控制器
23
+ * 树表格(增强)部件控制器
22
24
  *
23
25
  * @author zk
24
26
  * @date 2023-09-21 06:09:46
@@ -27,70 +29,97 @@ import { TreeGridExService } from './tree-grid-ex.service';
27
29
  * @extends {MDControlController<IDETree, ITreeGridState, ITreeGridEvent>}
28
30
  * @implements {ITreeGridExController}
29
31
  */
30
- export class TreeGridExController
31
- extends MDControlController<IDETree, ITreeGridExState, ITreeGridExEvent>
32
- implements ITreeGridExController
32
+ export class TreeGridExController<
33
+ T extends IDETreeGridEx = IDETreeGridEx,
34
+ S extends ITreeGridExState = ITreeGridExState,
35
+ E extends ITreeGridExEvent = ITreeGridExEvent,
36
+ >
37
+ extends TreeController<T, S, E>
38
+ implements ITreeGridExController<T, S, E>
33
39
  {
34
40
  declare service: TreeGridExService;
35
41
 
36
42
  /**
37
- * 表格列的适配器
43
+ * 树表格(增强)列的适配器
38
44
  *
39
45
  * @author zk
40
46
  * @date 2023-09-21 06:09:04
41
- * @type {{ [key: string]: IGridColumnProvider }}
47
+ * @type {{ [key: string]: ITreeGridExColumnProvider }}
42
48
  * @memberof TreeGridExController
43
49
  */
44
- providers: { [key: string]: IGridColumnProvider } = {};
50
+ providers: { [key: string]: ITreeGridExColumnProvider } = {};
45
51
 
46
52
  /**
47
- * 所有表格列控制器集合
53
+ * 所有树表格(增强)列控制器集合
48
54
  *
49
55
  * @author zk
50
56
  * @date 2023-09-21 06:09:10
51
- * @type {{ [key: string]: GridColumnController }}
57
+ * @type {{ [key: string]: TreeGridExColumnController }}
52
58
  * @memberof TreeGridExController
53
59
  */
54
- columns: { [key: string]: GridColumnController } = {};
60
+ columns: { [key: string]: TreeGridExColumnController } = {};
55
61
 
56
62
  /**
57
- * 所有表格属性列的控制器
63
+ * 所有树表格(增强)属性列的控制器
58
64
  *
59
65
  * @author zk
60
66
  * @date 2023-09-21 06:09:16
61
- * @type {{ [key: string]: GridFieldColumnController }}
67
+ * @type {{ [key: string]: TreeGridExFieldColumnController }}
62
68
  * @memberof TreeGridExController
63
69
  */
64
- fieldColumns: { [key: string]: GridFieldColumnController } = {};
70
+ fieldColumns: { [key: string]: TreeGridExFieldColumnController } = {};
65
71
 
66
72
  /**
67
- * 所有表格操作列的控制器
73
+ * 所有树表格(增强)操作列的控制器
68
74
  *
69
75
  * @author zk
70
76
  * @date 2023-09-21 06:09:21
71
- * @type {{ [key: string]: GridUAColumnController }}
77
+ * @type {{ [key: string]: TreeGridExUAColumnController }}
72
78
  * @memberof TreeGridExController
73
79
  */
74
- uaColumns: { [key: string]: GridUAColumnController } = {};
80
+ uaColumns: { [key: string]: TreeGridExUAColumnController } = {};
81
+
82
+ /**
83
+ * 是否有配置宽度自适应列
84
+ *
85
+ * @type {boolean}
86
+ * @memberof GridController
87
+ */
88
+ get hasAdaptiveColumn(): boolean {
89
+ return !!Object.values(this.columns).find(item => item.isAdaptiveColumn);
90
+ }
91
+
92
+ /**
93
+ * 单元格超出呈现模式
94
+ * @author lxm
95
+ * @date 2023-11-17 01:56:26
96
+ * @readonly
97
+ * @type {('wrap' | 'ellipsis')}
98
+ */
99
+ get overflowMode(): 'wrap' | 'ellipsis' {
100
+ return ibiz.config.grid.overflowMode;
101
+ }
75
102
 
76
103
  protected initState(): void {
77
104
  super.initState();
78
- // 根节点初始化
79
- this.state.size = 0;
80
105
  this.state.columnStates = [];
81
- this.state.defaultExpandedKeys = [];
106
+ this.state.rows = {};
82
107
  }
83
108
 
84
109
  protected async onCreated(): Promise<void> {
85
110
  await super.onCreated();
86
- this.service = new TreeGridExService(this.model);
87
- await this.service.init(this.context);
111
+
88
112
  this.initColumnStates();
89
113
  await this.initGridColumns();
90
114
  }
91
115
 
116
+ protected async initService(): Promise<void> {
117
+ this.service = new TreeGridExService(this.model);
118
+ await this.service.init(this.context);
119
+ }
120
+
92
121
  /**
93
- * 初始化表格属性列,操作列,编辑项控制器
122
+ * 初始化树表格(增强)属性列,操作列,编辑项控制器
94
123
  *
95
124
  * @author zk
96
125
  * @date 2023-09-21 06:09:28
@@ -109,7 +138,7 @@ export class TreeGridExController
109
138
  }
110
139
 
111
140
  /**
112
- * 初始化表格属性列,操作列,编辑项控制器
141
+ * 初始化树表格(增强)属性列,操作列,编辑项控制器
113
142
  *
114
143
  * @author zk
115
144
  * @date 2023-09-21 06:09:37
@@ -120,27 +149,28 @@ export class TreeGridExController
120
149
  */
121
150
  protected async initColumnsController(column: IDETreeColumn): Promise<void> {
122
151
  // 初始化适配器
123
- const provider = await getGridColumnProvider(column);
152
+ const provider = await getTreeGridExColumnProvider(column);
124
153
  if (!provider) {
125
154
  return;
126
155
  }
127
156
  this.providers[column.codeName!] = provider;
128
157
 
129
- // 初始化表格列控制器
130
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
131
- const controller = await provider.createController(column, this as any);
132
- this.columns[column.codeName!] = controller as GridColumnController;
158
+ // 初始化树表格(增强)列控制器
159
+ const controller = await provider.createController(column, this);
160
+
133
161
  // 分类存放控制器
162
+ this.columns[column.codeName!] = controller as TreeGridExColumnController;
134
163
  if (column.columnType === 'DEFGRIDCOLUMN') {
135
164
  this.fieldColumns[column.codeName!] =
136
- controller as GridFieldColumnController;
165
+ controller as TreeGridExFieldColumnController;
137
166
  } else if (column.columnType === 'UAGRIDCOLUMN') {
138
- this.uaColumns[column.codeName!] = controller as GridUAColumnController;
167
+ this.uaColumns[column.codeName!] =
168
+ controller as TreeGridExUAColumnController;
139
169
  }
140
170
  }
141
171
 
142
172
  /**
143
- * 初始化表格列状态
173
+ * 初始化树表格(增强)列状态
144
174
  *
145
175
  * @author zk
146
176
  * @date 2023-09-21 06:09:43
@@ -148,20 +178,15 @@ export class TreeGridExController
148
178
  * @memberof TreeGridExController
149
179
  */
150
180
  protected initColumnStates(): void {
151
- recursiveIterate(
152
- this.model,
153
- (column: IDETreeColumn) => {
154
- if (column.columnType !== 'GROUPGRIDCOLUMN') {
155
- this.state.columnStates.push({
156
- key: column.codeName!,
157
- caption: column.caption!,
158
- hidden: !!column.hideDefault,
159
- uaColumn: column.columnType === 'UAGRIDCOLUMN',
160
- });
161
- }
162
- },
163
- { childrenFields: ['detreeColumns'] },
164
- );
181
+ this.model.detreeColumns?.forEach(column => {
182
+ this.state.columnStates.push({
183
+ key: column.codeName!,
184
+ caption: column.caption!,
185
+ hidden: !!column.hideDefault,
186
+ uaColumn: column.columnType === 'UAGRIDCOLUMN',
187
+ });
188
+ });
189
+
165
190
  this.calcColumnFixed();
166
191
  }
167
192
 
@@ -174,111 +199,62 @@ export class TreeGridExController
174
199
  * @memberof TreeGridExController
175
200
  */
176
201
  protected calcColumnFixed(): void {
202
+ // 过滤出当前显示的列
177
203
  const showColumns = this.state.columnStates.filter(
178
204
  column => !column.hidden,
179
205
  );
180
206
  const allNum = showColumns.length;
181
207
  showColumns.forEach((column, index) => {
182
208
  if (column.uaColumn) {
209
+ // 操作列根据在中间列的那一侧,固定在最左侧或最右侧
183
210
  column.fixed = index + 1 <= Math.floor(allNum / 2) ? 'left' : 'right';
184
- } else {
185
- column.fixed = 'right';
186
211
  }
187
212
  });
188
213
  }
189
214
 
190
215
  /**
191
- * 树部件加载,从根节点开始重新加载
192
- *
193
- * @author zk
194
- * @date 2023-09-21 06:09:56
195
- * @param {MDCtrlLoadParams} [args={}]
196
- * @return {*} {Promise<ITreeNodeData[]>}
197
- * @memberof TreeGridExController
216
+ * 获取树表格行数据
217
+ * @author lxm
218
+ * @date 2023-12-22 02:23:44
219
+ * @param {string} key 可以是节点id也可以是_uuid
220
+ * @return {*} {(ITreeGridExRowState | undefined)}
198
221
  */
199
- async load(args: MDCtrlLoadParams = {}): Promise<ITreeNodeData[]> {
200
- const isInitialLoad = args.isInitialLoad === true;
201
- const nodes = await this.loadNodes();
202
- this.state.expandedKeys = this.calcExpandedKeys(nodes);
203
- await this.afterLoad(args, nodes);
204
- this.state.isLoaded = true;
205
- await this.evt.emit('onLoadSuccess', {
206
- isInitialLoad,
207
- });
208
-
209
- return nodes;
210
- }
211
-
212
- /**
213
- * 加载子节点数据
214
- *
215
- * @author zk
216
- * @date 2023-09-21 06:09:02
217
- * @param {ITreeNodeData} [parentNode]
218
- * @return {*} {Promise<ITreeNodeData[]>}
219
- * @memberof TreeGridExController
220
- */
221
- async loadNodes(parentNode?: ITreeNodeData): Promise<ITreeNodeData[]> {
222
- const params = await this.getFetchParams();
223
- const hasQuery = !!params.query;
224
- const defaultExpandedKeys = !parentNode
225
- ? this.state.defaultExpandedKeys
226
- : undefined;
227
-
228
- // 请求服务获取子节点数据
229
- await this.startLoading();
230
- let nodes;
231
- try {
232
- nodes =
233
- (await this.service.fetchChildNodes(parentNode, {
234
- context: this.context.clone(),
235
- params,
236
- hasQuery,
237
- defaultExpandedKeys,
238
- })) || [];
239
- } finally {
240
- await this.endLoading();
241
- }
242
-
243
- // 有父节点绑定到父节点数据上,无父节点替换rootNodes
244
- if (parentNode) {
245
- parentNode.children = nodes;
246
- } else {
247
- this.state.rootNodes = nodes;
222
+ getRowState(key: string): ITreeGridExRowState | undefined {
223
+ const nodeData = this.getNodeData(key);
224
+ if (nodeData) {
225
+ return this.state.rows[nodeData._uuid];
248
226
  }
227
+ }
249
228
 
250
- // 更新items
251
- this.state.items = [];
252
- recursiveIterate(
253
- { children: this.state.rootNodes },
254
- (node: ITreeNodeData) => {
255
- this.state.items.push(node);
256
- },
257
- );
229
+ async afterLoadNodes(nodes: ITreeNodeData[]): Promise<void> {
230
+ await super.afterLoadNodes(nodes);
258
231
 
259
- return nodes;
232
+ // 封装更新树表格行数据
233
+ recursiveIterate({ children: nodes }, (node: ITreeNodeData) => {
234
+ this.state.rows[node._uuid] = new TreeGridExRowState(node, this);
235
+ });
260
236
  }
261
237
 
262
238
  /**
263
- * 计算展开节点集合
239
+ * 转换各类多语言
264
240
  *
265
- * @author zk
266
- * @date 2023-09-21 06:09:07
267
- * @param {ITreeNodeData[]} nodes
268
- * @return {*} {string[]}
269
- * @memberof TreeGridExController
241
+ * @date 2023-05-18 02:57:00
242
+ * @protected
270
243
  */
271
- protected calcExpandedKeys(nodes: ITreeNodeData[]): string[] {
272
- let expandedKeys: string[] = [];
273
- recursiveIterate({ children: nodes }, (node: ITreeNodeData) => {
274
- if (node.children?.length) {
275
- expandedKeys.push(node.id);
276
- }
277
- });
278
- if (this.state.defaultExpandedKeys.length) {
279
- expandedKeys.push(...this.state.defaultExpandedKeys);
280
- expandedKeys = Array.from(new Set(expandedKeys));
244
+ protected convertMultipleLanguages(): void {
245
+ // *转换列标题的多语言
246
+ const convertColumnCaption = (columns: IDETreeColumn[]): void => {
247
+ columns.forEach((column: IDETreeColumn) => {
248
+ if (column.capLanguageRes && column.capLanguageRes.lanResTag) {
249
+ column.caption = ibiz.i18n.t(
250
+ column.capLanguageRes.lanResTag,
251
+ column.caption,
252
+ );
253
+ }
254
+ });
255
+ };
256
+ if (this.model.detreeColumns && this.model.detreeColumns.length > 0) {
257
+ convertColumnCaption(this.model.detreeColumns);
281
258
  }
282
- return expandedKeys;
283
259
  }
284
260
  }
@@ -1,171 +1,16 @@
1
- import { IHttpResponse } from '@ibiz-template/core';
2
- import {
3
- IDETreeDataSetNode,
4
- IDETreeNode,
5
- IDETreeNodeRS,
6
- } from '@ibiz/model-core';
7
- import { isArray } from 'qx-util';
8
- import { ITreeNodeData } from '../../../interface';
9
-
10
- import { ControlVO, TreeDataSetNodeData, UIMapField } from '../../../service';
11
- import { TreeFetchOpts, TreeService } from '../tree/tree.service';
1
+ import { IDETreeGridEx } from '@ibiz/model-core';
2
+ import { TreeService } from '../tree/tree.service';
12
3
 
13
4
  /**
14
5
  * 树表格增强部件服务
15
6
  *
16
- * @author zk
17
- * @date 2023-09-25 05:09:52
7
+ * @author lxm
8
+ * @date 2023-12-21 10:50:35
18
9
  * @export
19
- * @class TreeGridService
20
- * @extends {TreeService}
10
+ * @class TreeGridExService
11
+ * @extends {TreeService<T>}
12
+ * @template T
21
13
  */
22
- export class TreeGridExService extends TreeService {
23
- /**
24
- * 表格列映射关系
25
- *
26
- * @author zk
27
- * @date 2023-09-25 05:09:11
28
- * @type {Map<string, Map<string, UIMapField>>}
29
- * @memberof TreeGridService
30
- */
31
- multipleUiMap: Map<string, Map<string, UIMapField>> = new Map();
32
-
33
- /**
34
- * 初始化节点属性映射
35
- *
36
- * @author lxm
37
- * @date 2022-08-31 18:08:37
38
- */
39
- initUIDataMap(): void {
40
- super.initUIDataMap();
41
- this.model.detreeNodes?.forEach((item: IDETreeNode) => {
42
- const dataMap: Map<string, UIMapField> = new Map();
43
- item.detreeNodeDataItems?.forEach(dataItem => {
44
- const uiKey = dataItem.id!.toLowerCase();
45
- const deField = dataItem.appDEFieldId!;
46
- // 后台实体属性
47
- const deFieldKey = deField.toLowerCase();
48
- const mapField = new UIMapField(uiKey, deFieldKey, {
49
- isOriginField: true,
50
- dataType: dataItem.dataType,
51
- });
52
- dataMap.set(uiKey, mapField);
53
- });
54
- this.multipleUiMap.set(item.id!, dataMap);
55
- });
56
- }
57
-
58
- /**
59
- * 获取实体数据集数据
60
- *
61
- * @protected
62
- * @param {TreeNodeRSModel} nodeRS
63
- * @param {TreeFetchOpts} opts
64
- * @returns {*}
65
- * @memberof TreeService
66
- */
67
- protected async getDENodeDatas(
68
- nodeModel: IDETreeDataSetNode,
69
- nodeRS: IDETreeNodeRS | undefined,
70
- parentNodeData: ITreeNodeData | undefined,
71
- opts: TreeFetchOpts,
72
- ): Promise<TreeDataSetNodeData[]> {
73
- const { appDEDataSetId, appDataEntityId } = nodeModel;
74
-
75
- // 处理查询参数,没有关系的时候不处理参数了
76
- const { context, params, navContext, navParams } = nodeRS
77
- ? this.getNodeRSFilterParams(nodeRS, parentNodeData, opts)
78
- : {
79
- context: opts.context,
80
- params: opts.params,
81
- navContext: {},
82
- navParams: {},
83
- };
84
-
85
- // 设置查询长度
86
- params.size = nodeModel.maxSize || 1000;
87
- // 排序属性
88
- if (nodeModel.sortAppDEFieldId && nodeModel.sortDir) {
89
- Object.assign(params, {
90
- sort: `${nodeModel.sortAppDEFieldId.toLowerCase()},${nodeModel.sortDir.toLowerCase()}`,
91
- });
92
- }
93
-
94
- // 请求实体数据
95
- const response = await this.app.deService.exec(
96
- appDataEntityId!,
97
- appDEDataSetId!,
98
- context,
99
- params,
100
- );
101
-
102
- if (response.data.length) {
103
- const { data } = this.handleResponseForMultiple(response, nodeModel.id!);
104
- const nodeDatas = data.map((item: ControlVO) => {
105
- return new TreeDataSetNodeData(nodeModel, parentNodeData, {
106
- data: item,
107
- leaf: !!opts.leaf,
108
- navContext,
109
- navParams,
110
- });
111
- });
112
- return nodeDatas;
113
- }
114
- return [];
115
- }
116
-
117
- /**
118
- * 处理多数据源响应
119
- *
120
- * @author zk
121
- * @date 2023-09-21 04:09:06
122
- * @param {IHttpResponse} response
123
- * @param {string} tag 多数据源dataUIMap标识
124
- * @return {*} {IHttpResponse}
125
- * @memberof TreeGridService
126
- */
127
- handleResponseForMultiple(
128
- response: IHttpResponse,
129
- tag: string,
130
- ): IHttpResponse {
131
- const res = super.handleResponse(response) as IHttpResponse<
132
- IData[] | IData
133
- >;
134
- if (res.headers) {
135
- if (res.headers['x-page']) {
136
- res.page = Number(res.headers['x-page']);
137
- }
138
- if (res.headers['x-per-page']) {
139
- res.size = Number(res.headers['x-per-page']);
140
- }
141
- if (res.headers['x-total']) {
142
- res.total = Number(res.headers['x-total']);
143
- }
144
- }
145
- if (res.ok) {
146
- if (isArray(res.data)) {
147
- res.data = (res.data as IData[]).map(item =>
148
- this.toUIDataForMultiple(item, tag),
149
- );
150
- } else {
151
- res.data = this.toUIDataForMultiple(res.data, tag);
152
- }
153
- }
154
- return res;
155
- }
156
-
157
- /**
158
- * 实体数据转ui数据
159
- *
160
- * @author zk
161
- * @date 2023-09-21 06:09:06
162
- * @param {IData} entityData 实体数据
163
- * @param {string} tag 多数据源dataUIMap标识
164
- * @return {*} {ControlVO}
165
- * @memberof TreeGridService
166
- */
167
- toUIDataForMultiple(entityData: IData, tag: string): ControlVO {
168
- const dataUIMap = this.multipleUiMap.get(tag);
169
- return new ControlVO(entityData, dataUIMap);
170
- }
171
- }
14
+ export class TreeGridExService<
15
+ T extends IDETreeGridEx = IDETreeGridEx,
16
+ > extends TreeService<T> {}
@@ -67,6 +67,15 @@ export interface IGridController
67
67
  * @memberof IGridController
68
68
  */
69
69
  validate(row: IGridRowState): Promise<boolean>;
70
+
71
+ /**
72
+ * 设置点击分组后回显相关参数
73
+ * @param {IData} data
74
+ * @return {*}
75
+ * @author: zhujiamin
76
+ * @Date: 2023-12-21 10:54:45
77
+ */
78
+ setGroupParams(data: IData): void;
70
79
  }
71
80
 
72
81
  interface AdditionalProperties {
@@ -1,20 +1,19 @@
1
- import { IDETreeGrid } from '@ibiz/model-core';
1
+ import { IDETreeGridEx } from '@ibiz/model-core';
2
2
  import { ITreeGridExEvent } from '../../event';
3
3
  import { ITreeGridExState } from '../../state';
4
- import { IMDControlController } from './i-md-control.controller';
4
+ import { ITreeController } from './i-tree.controller';
5
5
 
6
6
  /**
7
7
  * 树表格(增强)部件控制器
8
8
  *
9
- * @author zk
10
- * @date 2023-09-21 11:09:17
9
+ * @author lxm
10
+ * @date 2023-12-21 11:04:25
11
11
  * @export
12
- * @interface ITreeGridController
13
- * @extends {IMDControlController<IDETreeGrid, ITreeGridState, ITreeGridEvent>}
12
+ * @interface ITreeGridExController
13
+ * @extends {ITreeController<T, S, E>}
14
14
  */
15
- export interface ITreeGridExController
16
- extends IMDControlController<
17
- IDETreeGrid,
18
- ITreeGridExState,
19
- ITreeGridExEvent
20
- > {}
15
+ export interface ITreeGridExController<
16
+ T extends IDETreeGridEx = IDETreeGridEx,
17
+ S extends ITreeGridExState = ITreeGridExState,
18
+ E extends ITreeGridExEvent = ITreeGridExEvent,
19
+ > extends ITreeController<T, S, E> {}
@@ -11,8 +11,11 @@ import { IMDControlController } from './i-md-control.controller';
11
11
  * @interface ITreeController
12
12
  * @extends {IMDControlController}
13
13
  */
14
- export interface ITreeController
15
- extends IMDControlController<IDETree, ITreeState, ITreeEvent> {
14
+ export interface ITreeController<
15
+ T extends IDETree = IDETree,
16
+ S extends ITreeState = ITreeState,
17
+ E extends ITreeEvent = ITreeEvent,
18
+ > extends IMDControlController<T, S, E> {
16
19
  /**
17
20
  * 树节点点击事件
18
21
  *
@@ -33,6 +33,7 @@ export * from './i-context-menu.controller';
33
33
  export * from './i-kanban.controller';
34
34
  export * from './i-tree-grid.controller';
35
35
  export * from './i-tree-grid-ex.controller';
36
+ export * from './tree-grid-ex-column/index';
36
37
  export * from './i-medit-view-panel.controller';
37
38
  export * from './i-chart-exp-bar.controller';
38
39
  export * from './i-map.controller';
@@ -0,0 +1,12 @@
1
+ import { ITreeGridExController } from '../i-tree-grid-ex.controller';
2
+
3
+ /**
4
+ * 树表格(增强)列控制器
5
+ * @author lxm
6
+ * @date 2023-05-24 07:34:51
7
+ * @export
8
+ * @interface IGridColumnController
9
+ */
10
+ export interface ITreeGridExColumnController {
11
+ treeGrid: ITreeGridExController;
12
+ }
@@ -0,0 +1 @@
1
+ export * from './i-tree-grid-ex-column.controller';
@@ -1,4 +1,4 @@
1
- import { IMDControlEvent } from './i-md-control.event';
1
+ import { ITreeEvent } from './i-tree.event';
2
2
 
3
3
  /**
4
4
  * 树表格(增强)部件事件
@@ -9,4 +9,4 @@ import { IMDControlEvent } from './i-md-control.event';
9
9
  * @interface ITreeGridExEvent
10
10
  * @extends {IMDControlEvent}
11
11
  */
12
- export interface ITreeGridExEvent extends IMDControlEvent {}
12
+ export interface ITreeGridExEvent extends ITreeEvent {}