@ibiz-template/runtime 0.1.28 → 0.1.29-dev.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.
Files changed (212) hide show
  1. package/dist/index.esm.js +1205 -265
  2. package/dist/index.system.min.js +1 -1
  3. package/dist/index.system.min.js.map +1 -1
  4. package/out/app-hub.d.ts +9 -0
  5. package/out/app-hub.d.ts.map +1 -1
  6. package/out/app-hub.js +4 -0
  7. package/out/application.d.ts +9 -1
  8. package/out/application.d.ts.map +1 -1
  9. package/out/application.js +2 -1
  10. package/out/controller/common/control/md-control.controller.d.ts.map +1 -1
  11. package/out/controller/common/control/md-control.controller.js +3 -0
  12. package/out/controller/common/view/view.controller.d.ts +23 -1
  13. package/out/controller/common/view/view.controller.d.ts.map +1 -1
  14. package/out/controller/common/view/view.controller.js +52 -0
  15. package/out/controller/control/dashboard/custom-dashboard.controller.d.ts +69 -0
  16. package/out/controller/control/dashboard/custom-dashboard.controller.d.ts.map +1 -0
  17. package/out/controller/control/dashboard/custom-dashboard.controller.js +85 -0
  18. package/out/controller/control/dashboard/index.d.ts +1 -0
  19. package/out/controller/control/dashboard/index.d.ts.map +1 -1
  20. package/out/controller/control/dashboard/index.js +1 -0
  21. package/out/controller/control/dashboard/portlet/portlet-part/portlet-part.controller.d.ts +15 -1
  22. package/out/controller/control/dashboard/portlet/portlet-part/portlet-part.controller.d.ts.map +1 -1
  23. package/out/controller/control/dashboard/portlet/portlet-part/portlet-part.controller.js +26 -9
  24. package/out/controller/control/index.d.ts +2 -0
  25. package/out/controller/control/index.d.ts.map +1 -1
  26. package/out/controller/control/index.js +2 -0
  27. package/out/controller/control/tree-grid/index.d.ts +3 -0
  28. package/out/controller/control/tree-grid/index.d.ts.map +1 -0
  29. package/out/controller/control/tree-grid/index.js +2 -0
  30. package/out/controller/control/tree-grid/tree-grid.controller.d.ts +5 -0
  31. package/out/controller/control/tree-grid/tree-grid.controller.d.ts.map +1 -0
  32. package/out/controller/control/tree-grid/tree-grid.controller.js +3 -0
  33. package/out/controller/control/tree-grid/tree-grid.service.d.ts +13 -0
  34. package/out/controller/control/tree-grid/tree-grid.service.d.ts.map +1 -0
  35. package/out/controller/control/tree-grid/tree-grid.service.js +12 -0
  36. package/out/controller/control/tree-grid-ex/index.d.ts +3 -0
  37. package/out/controller/control/tree-grid-ex/index.d.ts.map +1 -0
  38. package/out/controller/control/tree-grid-ex/index.js +2 -0
  39. package/out/controller/control/tree-grid-ex/tree-grid-ex.controller.d.ts +134 -0
  40. package/out/controller/control/tree-grid-ex/tree-grid-ex.controller.d.ts.map +1 -0
  41. package/out/controller/control/tree-grid-ex/tree-grid-ex.controller.js +240 -0
  42. package/out/controller/control/tree-grid-ex/tree-grid-ex.service.d.ts +65 -0
  43. package/out/controller/control/tree-grid-ex/tree-grid-ex.service.d.ts.map +1 -0
  44. package/out/controller/control/tree-grid-ex/tree-grid-ex.service.js +143 -0
  45. package/out/controller/utils/event/controller-event.d.ts +7 -0
  46. package/out/controller/utils/event/controller-event.d.ts.map +1 -1
  47. package/out/controller/utils/event/controller-event.js +12 -0
  48. package/out/controller/utils/view-msg/index.d.ts +2 -0
  49. package/out/controller/utils/view-msg/index.d.ts.map +1 -0
  50. package/out/controller/utils/view-msg/index.js +1 -0
  51. package/out/controller/utils/view-msg/view-msg-controller.d.ts +69 -0
  52. package/out/controller/utils/view-msg/view-msg-controller.d.ts.map +1 -0
  53. package/out/controller/utils/view-msg/view-msg-controller.js +176 -0
  54. package/out/de-logic/de-logic-context.d.ts +8 -0
  55. package/out/de-logic/de-logic-context.d.ts.map +1 -1
  56. package/out/de-logic/de-logic-context.js +11 -0
  57. package/out/de-logic/de-logic-node/prepare-param-node/prepare-param-node.d.ts.map +1 -1
  58. package/out/de-logic/de-logic-node/prepare-param-node/prepare-param-node.js +5 -1
  59. package/out/de-logic/utils/handle-src-val.d.ts.map +1 -1
  60. package/out/de-logic/utils/handle-src-val.js +19 -8
  61. package/out/interface/common/i-app-hub-service/i-app-hub-service.d.ts +9 -0
  62. package/out/interface/common/i-app-hub-service/i-app-hub-service.d.ts.map +1 -1
  63. package/out/interface/common/i-app-service/i-app-service.d.ts +9 -0
  64. package/out/interface/common/i-app-service/i-app-service.d.ts.map +1 -1
  65. package/out/interface/controller/common/index.d.ts +1 -0
  66. package/out/interface/controller/common/index.d.ts.map +1 -1
  67. package/out/interface/controller/common/index.js +1 -0
  68. package/out/interface/controller/common/view-message/i-view-message.d.ts +39 -0
  69. package/out/interface/controller/common/view-message/i-view-message.d.ts.map +1 -0
  70. package/out/interface/controller/common/view-message/i-view-message.js +1 -0
  71. package/out/interface/controller/controller/control/i-tree-grid-ex.controller.d.ts +16 -0
  72. package/out/interface/controller/controller/control/i-tree-grid-ex.controller.d.ts.map +1 -0
  73. package/out/interface/controller/controller/control/i-tree-grid-ex.controller.js +1 -0
  74. package/out/interface/controller/controller/control/i-tree-grid.controller.d.ts +13 -0
  75. package/out/interface/controller/controller/control/i-tree-grid.controller.d.ts.map +1 -0
  76. package/out/interface/controller/controller/control/i-tree-grid.controller.js +1 -0
  77. package/out/interface/controller/controller/control/index.d.ts +2 -0
  78. package/out/interface/controller/controller/control/index.d.ts.map +1 -1
  79. package/out/interface/controller/controller/control/index.js +2 -0
  80. package/out/interface/controller/controller/control/portlet/i-portlet.controller.d.ts +7 -0
  81. package/out/interface/controller/controller/control/portlet/i-portlet.controller.d.ts.map +1 -1
  82. package/out/interface/controller/event/control/i-tree-grid-ex.event.d.ts +13 -0
  83. package/out/interface/controller/event/control/i-tree-grid-ex.event.d.ts.map +1 -0
  84. package/out/interface/controller/event/control/i-tree-grid-ex.event.js +1 -0
  85. package/out/interface/controller/event/control/i-tree-grid.event.d.ts +13 -0
  86. package/out/interface/controller/event/control/i-tree-grid.event.d.ts.map +1 -0
  87. package/out/interface/controller/event/control/i-tree-grid.event.js +1 -0
  88. package/out/interface/controller/event/control/index.d.ts +2 -0
  89. package/out/interface/controller/event/control/index.d.ts.map +1 -1
  90. package/out/interface/controller/event/control/index.js +2 -0
  91. package/out/interface/controller/event/view/i-tree-grid-ex-view.event.d.ts +12 -0
  92. package/out/interface/controller/event/view/i-tree-grid-ex-view.event.d.ts.map +1 -0
  93. package/out/interface/controller/event/view/i-tree-grid-ex-view.event.js +1 -0
  94. package/out/interface/controller/event/view/i-tree-grid-view.event.d.ts +12 -0
  95. package/out/interface/controller/event/view/i-tree-grid-view.event.d.ts.map +1 -0
  96. package/out/interface/controller/event/view/i-tree-grid-view.event.js +1 -0
  97. package/out/interface/controller/event/view/index.d.ts +2 -0
  98. package/out/interface/controller/event/view/index.d.ts.map +1 -1
  99. package/out/interface/controller/event/view/index.js +2 -0
  100. package/out/interface/controller/state/control/i-tree-grid-ex.state.d.ts +52 -0
  101. package/out/interface/controller/state/control/i-tree-grid-ex.state.d.ts.map +1 -0
  102. package/out/interface/controller/state/control/i-tree-grid-ex.state.js +1 -0
  103. package/out/interface/controller/state/control/i-tree-grid.state.d.ts +13 -0
  104. package/out/interface/controller/state/control/i-tree-grid.state.d.ts.map +1 -0
  105. package/out/interface/controller/state/control/i-tree-grid.state.js +1 -0
  106. package/out/interface/controller/state/control/index.d.ts +2 -0
  107. package/out/interface/controller/state/control/index.d.ts.map +1 -1
  108. package/out/interface/controller/state/control/index.js +2 -0
  109. package/out/interface/controller/state/view/i-tree-grid-ex-view.state.d.ts +13 -0
  110. package/out/interface/controller/state/view/i-tree-grid-ex-view.state.d.ts.map +1 -0
  111. package/out/interface/controller/state/view/i-tree-grid-ex-view.state.js +1 -0
  112. package/out/interface/controller/state/view/i-tree-grid-view.state.d.ts +13 -0
  113. package/out/interface/controller/state/view/i-tree-grid-view.state.d.ts.map +1 -0
  114. package/out/interface/controller/state/view/i-tree-grid-view.state.js +1 -0
  115. package/out/interface/controller/state/view/i-view.state.d.ts +10 -0
  116. package/out/interface/controller/state/view/i-view.state.d.ts.map +1 -1
  117. package/out/interface/controller/state/view/index.d.ts +2 -0
  118. package/out/interface/controller/state/view/index.d.ts.map +1 -1
  119. package/out/interface/controller/state/view/index.js +2 -0
  120. package/out/interface/provider/i-grid-column.provider.d.ts +2 -1
  121. package/out/interface/provider/i-grid-column.provider.d.ts.map +1 -1
  122. package/out/interface/service/service/i-app-de.service.d.ts +9 -0
  123. package/out/interface/service/service/i-app-de.service.d.ts.map +1 -1
  124. package/out/interface/service/service/i-config.service.d.ts +20 -0
  125. package/out/interface/service/service/i-config.service.d.ts.map +1 -0
  126. package/out/interface/service/service/i-config.service.js +1 -0
  127. package/out/interface/service/service/index.d.ts +1 -0
  128. package/out/interface/service/service/index.d.ts.map +1 -1
  129. package/out/service/app-data-entity/app-data-entity.d.ts +10 -0
  130. package/out/service/app-data-entity/app-data-entity.d.ts.map +1 -1
  131. package/out/service/app-data-entity/app-data-entity.js +40 -13
  132. package/out/service/service/config/config.service.d.ts +43 -0
  133. package/out/service/service/config/config.service.d.ts.map +1 -0
  134. package/out/service/service/config/config.service.js +54 -0
  135. package/out/service/service/entity/de.service.d.ts +9 -0
  136. package/out/service/service/entity/de.service.d.ts.map +1 -1
  137. package/out/service/service/entity/de.service.js +2 -0
  138. package/out/service/service/index.d.ts +1 -0
  139. package/out/service/service/index.d.ts.map +1 -1
  140. package/out/service/service/index.js +1 -0
  141. package/out/service/vo/control.vo.d.ts.map +1 -1
  142. package/out/service/vo/control.vo.js +1 -5
  143. package/out/ui-action/provider/backend-ui-action-provider.d.ts.map +1 -1
  144. package/out/ui-action/provider/backend-ui-action-provider.js +5 -2
  145. package/out/ui-action/provider/ui-action-provider-base.d.ts +12 -1
  146. package/out/ui-action/provider/ui-action-provider-base.d.ts.map +1 -1
  147. package/out/ui-action/provider/ui-action-provider-base.js +55 -5
  148. package/out/ui-logic/ui-logic-context.d.ts +8 -0
  149. package/out/ui-logic/ui-logic-context.d.ts.map +1 -1
  150. package/out/ui-logic/ui-logic-context.js +11 -0
  151. package/out/ui-logic/ui-logic-link/ui-logic-link.js +1 -1
  152. package/out/ui-logic/ui-logic-node/prepare-js-param-node/prepare-js-param-node.d.ts.map +1 -1
  153. package/out/ui-logic/ui-logic-node/prepare-js-param-node/prepare-js-param-node.js +5 -1
  154. package/out/ui-logic/utils/handle-src-val.d.ts.map +1 -1
  155. package/out/ui-logic/utils/handle-src-val.js +17 -4
  156. package/package.json +2 -2
  157. package/src/app-hub.ts +17 -0
  158. package/src/application.ts +20 -1
  159. package/src/controller/common/control/md-control.controller.ts +3 -0
  160. package/src/controller/common/view/view.controller.ts +67 -0
  161. package/src/controller/control/dashboard/custom-dashboard.controller.ts +107 -0
  162. package/src/controller/control/dashboard/index.ts +1 -0
  163. package/src/controller/control/dashboard/portlet/portlet-part/portlet-part.controller.ts +32 -9
  164. package/src/controller/control/index.ts +2 -0
  165. package/src/controller/control/tree-grid/index.ts +2 -0
  166. package/src/controller/control/tree-grid/tree-grid.controller.ts +6 -0
  167. package/src/controller/control/tree-grid/tree-grid.service.ts +12 -0
  168. package/src/controller/control/tree-grid-ex/index.ts +2 -0
  169. package/src/controller/control/tree-grid-ex/tree-grid-ex.controller.ts +283 -0
  170. package/src/controller/control/tree-grid-ex/tree-grid-ex.service.ts +171 -0
  171. package/src/controller/utils/event/controller-event.ts +16 -0
  172. package/src/controller/utils/view-msg/index.ts +1 -0
  173. package/src/controller/utils/view-msg/view-msg-controller.ts +250 -0
  174. package/src/de-logic/de-logic-context.ts +12 -0
  175. package/src/de-logic/de-logic-node/prepare-param-node/prepare-param-node.ts +7 -1
  176. package/src/de-logic/utils/handle-src-val.ts +23 -10
  177. package/src/interface/common/i-app-hub-service/i-app-hub-service.ts +10 -0
  178. package/src/interface/common/i-app-service/i-app-service.ts +10 -0
  179. package/src/interface/controller/common/index.ts +1 -0
  180. package/src/interface/controller/common/view-message/i-view-message.ts +42 -0
  181. package/src/interface/controller/controller/control/i-tree-grid-ex.controller.ts +20 -0
  182. package/src/interface/controller/controller/control/i-tree-grid.controller.ts +12 -0
  183. package/src/interface/controller/controller/control/index.ts +2 -0
  184. package/src/interface/controller/controller/control/portlet/i-portlet.controller.ts +8 -0
  185. package/src/interface/controller/event/control/i-tree-grid-ex.event.ts +12 -0
  186. package/src/interface/controller/event/control/i-tree-grid.event.ts +12 -0
  187. package/src/interface/controller/event/control/index.ts +2 -0
  188. package/src/interface/controller/event/view/i-tree-grid-ex-view.event.ts +12 -0
  189. package/src/interface/controller/event/view/i-tree-grid-view.event.ts +12 -0
  190. package/src/interface/controller/event/view/index.ts +2 -0
  191. package/src/interface/controller/state/control/i-tree-grid-ex.state.ts +56 -0
  192. package/src/interface/controller/state/control/i-tree-grid.state.ts +12 -0
  193. package/src/interface/controller/state/control/index.ts +2 -0
  194. package/src/interface/controller/state/view/i-tree-grid-ex-view.state.ts +12 -0
  195. package/src/interface/controller/state/view/i-tree-grid-view.state.ts +12 -0
  196. package/src/interface/controller/state/view/i-view.state.ts +9 -0
  197. package/src/interface/controller/state/view/index.ts +2 -0
  198. package/src/interface/provider/i-grid-column.provider.ts +2 -1
  199. package/src/interface/service/service/i-app-de.service.ts +10 -0
  200. package/src/interface/service/service/i-config.service.ts +20 -0
  201. package/src/interface/service/service/index.ts +1 -0
  202. package/src/service/app-data-entity/app-data-entity.ts +44 -13
  203. package/src/service/service/config/config.service.ts +65 -0
  204. package/src/service/service/entity/de.service.ts +15 -0
  205. package/src/service/service/index.ts +1 -0
  206. package/src/service/vo/control.vo.ts +1 -6
  207. package/src/ui-action/provider/backend-ui-action-provider.ts +5 -2
  208. package/src/ui-action/provider/ui-action-provider-base.ts +68 -6
  209. package/src/ui-logic/ui-logic-context.ts +12 -0
  210. package/src/ui-logic/ui-logic-link/ui-logic-link.ts +1 -1
  211. package/src/ui-logic/ui-logic-node/prepare-js-param-node/prepare-js-param-node.ts +7 -1
  212. package/src/ui-logic/utils/handle-src-val.ts +20 -4
@@ -3,6 +3,7 @@ import {
3
3
  IPortletController,
4
4
  IDashboardController,
5
5
  IPortletContainerController,
6
+ DataChangeEvent,
6
7
  } from '../../../../../interface';
7
8
  import { calcLayoutHeightWidth, calcDynaClass } from '../../../../../model';
8
9
  import { ControlVO } from '../../../../../service';
@@ -144,6 +145,26 @@ export class PortletPartController<T extends IDBPortletPart = IDBPortletPart>
144
145
  return new PortletPartState();
145
146
  }
146
147
 
148
+ /**
149
+ * 数据改变方法
150
+ * @param {DataChangeEvent} event
151
+ * @return {*}
152
+ * @author: zhujiamin
153
+ * @Date: 2023-09-22 17:39:44
154
+ */
155
+ onDataChange(event: DataChangeEvent): void {
156
+ let data = event.data[0];
157
+ if (data && data instanceof ControlVO) {
158
+ data = data.getOrigin();
159
+ }
160
+ if (data) {
161
+ this.state.actionGroupState!.update(
162
+ data,
163
+ this.dashboard.view.model.appDataEntityId!,
164
+ );
165
+ }
166
+ }
167
+
147
168
  /**
148
169
  * 初始化标题右侧界面行为按钮的状态
149
170
  *
@@ -175,15 +196,7 @@ export class PortletPartController<T extends IDBPortletPart = IDBPortletPart>
175
196
  // 实体门户视图监听视图数据变更,刷新界面行为组的状态。
176
197
  const { appDataEntityId } = this.dashboard.view.model;
177
198
  if (appDataEntityId) {
178
- this.dashboard.view.evt.on('onDataChange', event => {
179
- let data = event.data[0];
180
- if (data && data instanceof ControlVO) {
181
- data = data.getOrigin();
182
- }
183
- if (data) {
184
- this.state.actionGroupState!.update(data, appDataEntityId);
185
- }
186
- });
199
+ this.dashboard.view.evt.on('onDataChange', this.onDataChange);
187
200
  }
188
201
  }
189
202
 
@@ -243,4 +256,14 @@ export class PortletPartController<T extends IDBPortletPart = IDBPortletPart>
243
256
  }
244
257
  }
245
258
  }
259
+
260
+ /**
261
+ * 销毁
262
+ * @author lxm
263
+ * @date 2023-04-25 11:08:54
264
+ */
265
+ async destroyed(): Promise<void> {
266
+ ibiz.log.debug(`${this.model.codeName} onDestroyed`);
267
+ this.dashboard.view.evt.off('onDataChange', this.onDataChange);
268
+ }
246
269
  }
@@ -19,3 +19,5 @@ export * from './tree/index';
19
19
  export * from './wizard-panel/index';
20
20
  export * from './md-ctrl/index';
21
21
  export * from './kanban/index';
22
+ export * from './tree-grid-ex/index';
23
+ export * from './tree-grid/index';
@@ -0,0 +1,2 @@
1
+ export * from './tree-grid.controller';
2
+ export * from './tree-grid.service';
@@ -0,0 +1,6 @@
1
+ import { ITreeGridController } from '../../../interface';
2
+ import { GridController } from '../grid';
3
+
4
+ export class TreeGridController
5
+ extends GridController
6
+ implements ITreeGridController {}
@@ -0,0 +1,12 @@
1
+ import { GridService } from '../grid';
2
+
3
+ /**
4
+ * 树表格部件服务
5
+ *
6
+ * @author zk
7
+ * @date 2023-09-25 05:09:52
8
+ * @export
9
+ * @class TreeGridService
10
+ * @extends {TreeService}
11
+ */
12
+ export class TreeGridService extends GridService {}
@@ -0,0 +1,2 @@
1
+ export * from './tree-grid-ex.controller';
2
+ export * from './tree-grid-ex.service';
@@ -0,0 +1,283 @@
1
+ import { recursiveIterate } from '@ibiz-template/core';
2
+ import { IDETree, IDETreeColumn } from '@ibiz/model-core';
3
+ import {
4
+ MDCtrlLoadParams,
5
+ ITreeNodeData,
6
+ ITreeGridExController,
7
+ IGridColumnProvider,
8
+ ITreeGridExState,
9
+ ITreeGridExEvent,
10
+ } from '../../../interface';
11
+ import { getGridColumnProvider } from '../../../register';
12
+ import { MDControlController } from '../../common';
13
+ import {
14
+ GridColumnController,
15
+ GridFieldColumnController,
16
+ GridUAColumnController,
17
+ } from '../grid';
18
+ import { TreeGridExService } from './tree-grid-ex.service';
19
+
20
+ /**
21
+ * 树表格部件控制器
22
+ *
23
+ * @author zk
24
+ * @date 2023-09-21 06:09:46
25
+ * @export
26
+ * @class TreeGridExController
27
+ * @extends {MDControlController<IDETree, ITreeGridState, ITreeGridEvent>}
28
+ * @implements {ITreeGridExController}
29
+ */
30
+ export class TreeGridExController
31
+ extends MDControlController<IDETree, ITreeGridExState, ITreeGridExEvent>
32
+ implements ITreeGridExController
33
+ {
34
+ declare service: TreeGridExService;
35
+
36
+ /**
37
+ * 表格列的适配器
38
+ *
39
+ * @author zk
40
+ * @date 2023-09-21 06:09:04
41
+ * @type {{ [key: string]: IGridColumnProvider }}
42
+ * @memberof TreeGridExController
43
+ */
44
+ providers: { [key: string]: IGridColumnProvider } = {};
45
+
46
+ /**
47
+ * 所有表格列控制器集合
48
+ *
49
+ * @author zk
50
+ * @date 2023-09-21 06:09:10
51
+ * @type {{ [key: string]: GridColumnController }}
52
+ * @memberof TreeGridExController
53
+ */
54
+ columns: { [key: string]: GridColumnController } = {};
55
+
56
+ /**
57
+ * 所有表格属性列的控制器
58
+ *
59
+ * @author zk
60
+ * @date 2023-09-21 06:09:16
61
+ * @type {{ [key: string]: GridFieldColumnController }}
62
+ * @memberof TreeGridExController
63
+ */
64
+ fieldColumns: { [key: string]: GridFieldColumnController } = {};
65
+
66
+ /**
67
+ * 所有表格操作列的控制器
68
+ *
69
+ * @author zk
70
+ * @date 2023-09-21 06:09:21
71
+ * @type {{ [key: string]: GridUAColumnController }}
72
+ * @memberof TreeGridExController
73
+ */
74
+ uaColumns: { [key: string]: GridUAColumnController } = {};
75
+
76
+ protected initState(): void {
77
+ super.initState();
78
+ // 根节点初始化
79
+ this.state.size = 0;
80
+ this.state.columnStates = [];
81
+ this.state.defaultExpandedKeys = [];
82
+ }
83
+
84
+ protected async onCreated(): Promise<void> {
85
+ await super.onCreated();
86
+ this.service = new TreeGridExService(this.model);
87
+ await this.service.init(this.context);
88
+ this.initColumnStates();
89
+ await this.initGridColumns();
90
+ }
91
+
92
+ /**
93
+ * 初始化表格属性列,操作列,编辑项控制器
94
+ *
95
+ * @author zk
96
+ * @date 2023-09-21 06:09:28
97
+ * @protected
98
+ * @return {*} {Promise<void>}
99
+ * @memberof TreeGridExController
100
+ */
101
+ protected async initGridColumns(): Promise<void> {
102
+ if (this.model.detreeColumns) {
103
+ await Promise.all(
104
+ this.model.detreeColumns.map(async column =>
105
+ this.initColumnsController(column),
106
+ ),
107
+ );
108
+ }
109
+ }
110
+
111
+ /**
112
+ * 初始化表格属性列,操作列,编辑项控制器
113
+ *
114
+ * @author zk
115
+ * @date 2023-09-21 06:09:37
116
+ * @protected
117
+ * @param {IDETreeColumn} column
118
+ * @return {*} {Promise<void>}
119
+ * @memberof TreeGridExController
120
+ */
121
+ protected async initColumnsController(column: IDETreeColumn): Promise<void> {
122
+ // 初始化适配器
123
+ const provider = await getGridColumnProvider(column);
124
+ if (!provider) {
125
+ return;
126
+ }
127
+ this.providers[column.codeName!] = provider;
128
+
129
+ // 初始化表格列控制器
130
+ const controller = await provider.createController(column, this);
131
+ this.columns[column.codeName!] = controller as GridColumnController;
132
+ // 分类存放控制器
133
+ if (column.columnType === 'DEFGRIDCOLUMN') {
134
+ this.fieldColumns[column.codeName!] =
135
+ controller as GridFieldColumnController;
136
+ } else if (column.columnType === 'UAGRIDCOLUMN') {
137
+ this.uaColumns[column.codeName!] = controller as GridUAColumnController;
138
+ }
139
+ }
140
+
141
+ /**
142
+ * 初始化表格列状态
143
+ *
144
+ * @author zk
145
+ * @date 2023-09-21 06:09:43
146
+ * @protected
147
+ * @memberof TreeGridExController
148
+ */
149
+ protected initColumnStates(): void {
150
+ recursiveIterate(
151
+ this.model,
152
+ (column: IDETreeColumn) => {
153
+ if (column.columnType !== 'GROUPGRIDCOLUMN') {
154
+ this.state.columnStates.push({
155
+ key: column.codeName!,
156
+ caption: column.caption!,
157
+ hidden: !!column.hideDefault,
158
+ uaColumn: column.columnType === 'UAGRIDCOLUMN',
159
+ });
160
+ }
161
+ },
162
+ { childrenFields: ['detreeColumns'] },
163
+ );
164
+ this.calcColumnFixed();
165
+ }
166
+
167
+ /**
168
+ * 计算列的固定状态
169
+ *
170
+ * @author zk
171
+ * @date 2023-09-21 06:09:50
172
+ * @protected
173
+ * @memberof TreeGridExController
174
+ */
175
+ protected calcColumnFixed(): void {
176
+ const showColumns = this.state.columnStates.filter(
177
+ column => !column.hidden,
178
+ );
179
+ const allNum = showColumns.length;
180
+ showColumns.forEach((column, index) => {
181
+ if (column.uaColumn) {
182
+ column.fixed = index + 1 <= Math.floor(allNum / 2) ? 'left' : 'right';
183
+ } else {
184
+ column.fixed = 'right';
185
+ }
186
+ });
187
+ }
188
+
189
+ /**
190
+ * 树部件加载,从根节点开始重新加载
191
+ *
192
+ * @author zk
193
+ * @date 2023-09-21 06:09:56
194
+ * @param {MDCtrlLoadParams} [args={}]
195
+ * @return {*} {Promise<ITreeNodeData[]>}
196
+ * @memberof TreeGridExController
197
+ */
198
+ async load(args: MDCtrlLoadParams = {}): Promise<ITreeNodeData[]> {
199
+ const isInitialLoad = args.isInitialLoad === true;
200
+ const nodes = await this.loadNodes();
201
+ this.state.expandedKeys = this.calcExpandedKeys(nodes);
202
+ await this.afterLoad(args, nodes);
203
+ this.state.isLoaded = true;
204
+ await this.evt.emit('onLoadSuccess', {
205
+ isInitialLoad,
206
+ });
207
+
208
+ return nodes;
209
+ }
210
+
211
+ /**
212
+ * 加载子节点数据
213
+ *
214
+ * @author zk
215
+ * @date 2023-09-21 06:09:02
216
+ * @param {ITreeNodeData} [parentNode]
217
+ * @return {*} {Promise<ITreeNodeData[]>}
218
+ * @memberof TreeGridExController
219
+ */
220
+ async loadNodes(parentNode?: ITreeNodeData): Promise<ITreeNodeData[]> {
221
+ const params = await this.getFetchParams();
222
+ const hasQuery = !!params.query;
223
+ const defaultExpandedKeys = !parentNode
224
+ ? this.state.defaultExpandedKeys
225
+ : undefined;
226
+
227
+ // 请求服务获取子节点数据
228
+ await this.startLoading();
229
+ let nodes;
230
+ try {
231
+ nodes =
232
+ (await this.service.fetchChildNodes(parentNode, {
233
+ context: this.context.clone(),
234
+ params,
235
+ hasQuery,
236
+ defaultExpandedKeys,
237
+ })) || [];
238
+ } finally {
239
+ await this.endLoading();
240
+ }
241
+
242
+ // 有父节点绑定到父节点数据上,无父节点替换rootNodes
243
+ if (parentNode) {
244
+ parentNode.children = nodes;
245
+ } else {
246
+ this.state.rootNodes = nodes;
247
+ }
248
+
249
+ // 更新items
250
+ this.state.items = [];
251
+ recursiveIterate(
252
+ { children: this.state.rootNodes },
253
+ (node: ITreeNodeData) => {
254
+ this.state.items.push(node);
255
+ },
256
+ );
257
+
258
+ return nodes;
259
+ }
260
+
261
+ /**
262
+ * 计算展开节点集合
263
+ *
264
+ * @author zk
265
+ * @date 2023-09-21 06:09:07
266
+ * @param {ITreeNodeData[]} nodes
267
+ * @return {*} {string[]}
268
+ * @memberof TreeGridExController
269
+ */
270
+ protected calcExpandedKeys(nodes: ITreeNodeData[]): string[] {
271
+ let expandedKeys: string[] = [];
272
+ recursiveIterate({ children: nodes }, (node: ITreeNodeData) => {
273
+ if (node.children?.length) {
274
+ expandedKeys.push(node.id);
275
+ }
276
+ });
277
+ if (this.state.defaultExpandedKeys.length) {
278
+ expandedKeys.push(...this.state.defaultExpandedKeys);
279
+ expandedKeys = Array.from(new Set(expandedKeys));
280
+ }
281
+ return expandedKeys;
282
+ }
283
+ }
@@ -0,0 +1,171 @@
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';
12
+
13
+ /**
14
+ * 树表格增强部件服务
15
+ *
16
+ * @author zk
17
+ * @date 2023-09-25 05:09:52
18
+ * @export
19
+ * @class TreeGridService
20
+ * @extends {TreeService}
21
+ */
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
+ }
@@ -97,6 +97,22 @@ export class ControllerEvent<E extends IComponentEvent = IComponentEvent> {
97
97
  this.evt.on(name as string, fn);
98
98
  }
99
99
 
100
+ /**
101
+ * 取消订阅指定事件
102
+ * @return {*}
103
+ * @author: zhujiamin
104
+ * @Date: 2023-09-22 17:45:07
105
+ */
106
+ off<K extends EventTypeKeyOf<E>>(
107
+ name: K,
108
+ fn: (event: EventTypeObjec<E>[K]['event']) => void | Promise<void>,
109
+ ): void {
110
+ if (this.isDestroyed) {
111
+ return;
112
+ }
113
+ this.evt.off(name as string, fn);
114
+ }
115
+
100
116
  /**
101
117
  * 订阅任意事件
102
118
  * @author lxm
@@ -0,0 +1 @@
1
+ export * from './view-msg-controller';