@ibiz-template/runtime 0.1.8 → 0.1.10

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 (182) hide show
  1. package/dist/index.esm.js +4313 -4022
  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 +8 -0
  5. package/out/app-hub.d.ts.map +1 -1
  6. package/out/app-hub.js +8 -0
  7. package/out/command/app/open-app-view/open-app-view.js +5 -5
  8. package/out/config/global-config.js +1 -1
  9. package/out/controller/common/control/control.controller.d.ts +9 -1
  10. package/out/controller/common/control/control.controller.d.ts.map +1 -1
  11. package/out/controller/common/control/control.controller.js +17 -7
  12. package/out/controller/common/view/view.controller.d.ts +1 -0
  13. package/out/controller/common/view/view.controller.d.ts.map +1 -1
  14. package/out/controller/common/view/view.controller.js +6 -3
  15. package/out/controller/hub.controller.d.ts +16 -0
  16. package/out/controller/hub.controller.d.ts.map +1 -0
  17. package/out/controller/hub.controller.js +20 -0
  18. package/out/controller/index.d.ts +1 -0
  19. package/out/controller/index.d.ts.map +1 -1
  20. package/out/controller/index.js +1 -0
  21. package/out/controller/utils/value-rule/value-rule.d.ts.map +1 -1
  22. package/out/controller/utils/value-rule/value-rule.js +1 -1
  23. package/out/interface/common/i-app-hub-service/i-app-hub-service.d.ts +9 -0
  24. package/out/interface/common/i-app-hub-service/i-app-hub-service.d.ts.map +1 -1
  25. package/out/interface/common/i-ui-action-result/i-ui-action-result.d.ts +7 -0
  26. package/out/interface/common/i-ui-action-result/i-ui-action-result.d.ts.map +1 -1
  27. package/out/interface/controller/app.d.ts +37 -0
  28. package/out/interface/controller/app.d.ts.map +1 -0
  29. package/out/interface/controller/app.js +1 -0
  30. package/out/interface/controller/controller/control/i-context-menu.controller.d.ts +15 -0
  31. package/out/interface/controller/controller/control/i-context-menu.controller.d.ts.map +1 -0
  32. package/out/interface/controller/controller/control/i-context-menu.controller.js +1 -0
  33. package/out/interface/controller/controller/control/i-form.controller.d.ts +7 -0
  34. package/out/interface/controller/controller/control/i-form.controller.d.ts.map +1 -1
  35. package/out/interface/controller/controller/control/i-grid.controller.d.ts +9 -1
  36. package/out/interface/controller/controller/control/i-grid.controller.d.ts.map +1 -1
  37. package/out/interface/controller/controller/control/i-toolbar.controller.d.ts +2 -2
  38. package/out/interface/controller/controller/control/i-toolbar.controller.d.ts.map +1 -1
  39. package/out/interface/controller/controller/control/i-tree.controller.d.ts +6 -4
  40. package/out/interface/controller/controller/control/i-tree.controller.d.ts.map +1 -1
  41. package/out/interface/controller/controller/control/index.d.ts +1 -0
  42. package/out/interface/controller/controller/control/index.d.ts.map +1 -1
  43. package/out/interface/controller/controller/control/index.js +1 -0
  44. package/out/interface/controller/controller/view/i-view.controller.d.ts +8 -0
  45. package/out/interface/controller/controller/view/i-view.controller.d.ts.map +1 -1
  46. package/out/interface/controller/event/control/i-context-menu.event.d.ts +11 -0
  47. package/out/interface/controller/event/control/i-context-menu.event.d.ts.map +1 -0
  48. package/out/interface/controller/event/control/i-context-menu.event.js +1 -0
  49. package/out/interface/controller/event/control/i-pickup-view-panel.event.d.ts +0 -15
  50. package/out/interface/controller/event/control/i-pickup-view-panel.event.d.ts.map +1 -1
  51. package/out/interface/controller/event/control/index.d.ts +1 -0
  52. package/out/interface/controller/event/control/index.d.ts.map +1 -1
  53. package/out/interface/controller/event/control/index.js +1 -0
  54. package/out/interface/controller/event/view/i-pickup-md-view.event.d.ts +31 -0
  55. package/out/interface/controller/event/view/i-pickup-md-view.event.d.ts.map +1 -0
  56. package/out/interface/controller/event/view/i-pickup-md-view.event.js +1 -0
  57. package/out/interface/controller/event/view/index.d.ts +1 -0
  58. package/out/interface/controller/event/view/index.d.ts.map +1 -1
  59. package/out/interface/controller/event/view/index.js +1 -0
  60. package/out/interface/controller/index.d.ts +1 -0
  61. package/out/interface/controller/index.d.ts.map +1 -1
  62. package/out/interface/controller/state/control/i-context-menu.state.d.ts +11 -0
  63. package/out/interface/controller/state/control/i-context-menu.state.d.ts.map +1 -0
  64. package/out/interface/controller/state/control/i-context-menu.state.js +1 -0
  65. package/out/interface/controller/state/control/i-tree-exp-bar.state.d.ts +8 -0
  66. package/out/interface/controller/state/control/i-tree-exp-bar.state.d.ts.map +1 -1
  67. package/out/interface/controller/state/control/i-tree.state.d.ts +1 -10
  68. package/out/interface/controller/state/control/i-tree.state.d.ts.map +1 -1
  69. package/out/interface/controller/state/control/index.d.ts +1 -0
  70. package/out/interface/controller/state/control/index.d.ts.map +1 -1
  71. package/out/interface/controller/state/control/index.js +1 -0
  72. package/out/interface/controller/state/view/i-pickup-md-view.state.d.ts +22 -0
  73. package/out/interface/controller/state/view/i-pickup-md-view.state.d.ts.map +1 -0
  74. package/out/interface/controller/state/view/i-pickup-md-view.state.js +1 -0
  75. package/out/interface/controller/state/view/index.d.ts +1 -0
  76. package/out/interface/controller/state/view/index.d.ts.map +1 -1
  77. package/out/interface/controller/state/view/index.js +1 -0
  78. package/out/interface/util/i-open-view-util/i-open-view-util.d.ts +11 -11
  79. package/out/interface/util/i-open-view-util/i-open-view-util.d.ts.map +1 -1
  80. package/out/interface/util/script/i-script-function.d.ts +8 -1
  81. package/out/interface/util/script/i-script-function.d.ts.map +1 -1
  82. package/out/logic-scheduler/executor/script-executor.d.ts +6 -6
  83. package/out/logic-scheduler/executor/script-executor.d.ts.map +1 -1
  84. package/out/logic-scheduler/executor/script-executor.js +10 -14
  85. package/out/logic-scheduler/trigger/item-dyna-logic-trigger.d.ts +1 -0
  86. package/out/logic-scheduler/trigger/item-dyna-logic-trigger.d.ts.map +1 -1
  87. package/out/logic-scheduler/trigger/item-dyna-logic-trigger.js +6 -2
  88. package/out/logic-scheduler/trigger/logic-trigger.d.ts +8 -0
  89. package/out/logic-scheduler/trigger/logic-trigger.d.ts.map +1 -1
  90. package/out/logic-scheduler/trigger/logic-trigger.js +17 -0
  91. package/out/model/layout/layout.d.ts.map +1 -1
  92. package/out/model/layout/layout.js +1 -0
  93. package/out/register/helper/common-register.d.ts +11 -0
  94. package/out/register/helper/common-register.d.ts.map +1 -0
  95. package/out/register/helper/common-register.js +20 -0
  96. package/out/register/helper/control-register.d.ts.map +1 -1
  97. package/out/register/helper/control-register.js +22 -5
  98. package/out/register/helper/editor-register.d.ts.map +1 -1
  99. package/out/register/helper/editor-register.js +25 -5
  100. package/out/register/helper/form-detail-register.d.ts.map +1 -1
  101. package/out/register/helper/form-detail-register.js +19 -5
  102. package/out/register/helper/grid-column-register.d.ts.map +1 -1
  103. package/out/register/helper/grid-column-register.js +19 -5
  104. package/out/register/helper/panel-item-register.d.ts.map +1 -1
  105. package/out/register/helper/panel-item-register.js +25 -5
  106. package/out/register/helper/portlet-register.d.ts.map +1 -1
  107. package/out/register/helper/portlet-register.js +19 -5
  108. package/out/register/helper/ui-action-register.d.ts.map +1 -1
  109. package/out/register/helper/ui-action-register.js +19 -5
  110. package/out/register/helper/view-register.d.ts.map +1 -1
  111. package/out/register/helper/view-register.js +18 -1
  112. package/out/service/app-data-entity/app-data-entity.d.ts.map +1 -1
  113. package/out/service/app-data-entity/app-data-entity.js +0 -1
  114. package/out/service/service/counter/counter.service.d.ts.map +1 -1
  115. package/out/service/service/counter/counter.service.js +4 -1
  116. package/out/service/vo/tree-node-data/tree-data-set-node-data.d.ts.map +1 -1
  117. package/out/service/vo/tree-node-data/tree-data-set-node-data.js +3 -1
  118. package/out/ui-action/provider/sys-ui-action-provider.d.ts +1 -0
  119. package/out/ui-action/provider/sys-ui-action-provider.d.ts.map +1 -1
  120. package/out/ui-action/provider/sys-ui-action-provider.js +42 -1
  121. package/out/ui-action/provider/ui-action-provider-base.d.ts.map +1 -1
  122. package/out/ui-action/provider/ui-action-provider-base.js +1 -0
  123. package/out/ui-action/uiaction-util.d.ts.map +1 -1
  124. package/out/ui-action/uiaction-util.js +13 -1
  125. package/out/utils/script/script-function.d.ts +9 -0
  126. package/out/utils/script/script-function.d.ts.map +1 -1
  127. package/out/utils/script/script-function.js +75 -1
  128. package/out/utils/verify/de-rule-verify.js +1 -1
  129. package/package.json +4 -4
  130. package/src/app-hub.ts +9 -0
  131. package/src/command/app/open-app-view/open-app-view.ts +5 -5
  132. package/src/config/global-config.ts +1 -1
  133. package/src/controller/common/control/control.controller.ts +19 -9
  134. package/src/controller/common/view/view.controller.ts +9 -3
  135. package/src/controller/hub.controller.ts +22 -0
  136. package/src/controller/index.ts +1 -0
  137. package/src/controller/utils/value-rule/value-rule.ts +1 -0
  138. package/src/interface/common/i-app-hub-service/i-app-hub-service.ts +10 -0
  139. package/src/interface/common/i-ui-action-result/i-ui-action-result.ts +8 -0
  140. package/src/interface/controller/app.ts +38 -0
  141. package/src/interface/controller/controller/control/i-context-menu.controller.ts +19 -0
  142. package/src/interface/controller/controller/control/i-form.controller.ts +8 -0
  143. package/src/interface/controller/controller/control/i-grid.controller.ts +10 -1
  144. package/src/interface/controller/controller/control/i-toolbar.controller.ts +6 -3
  145. package/src/interface/controller/controller/control/i-tree.controller.ts +9 -4
  146. package/src/interface/controller/controller/control/index.ts +1 -0
  147. package/src/interface/controller/controller/view/i-view.controller.ts +9 -0
  148. package/src/interface/controller/event/control/i-context-menu.event.ts +10 -0
  149. package/src/interface/controller/event/control/i-pickup-view-panel.event.ts +0 -16
  150. package/src/interface/controller/event/control/index.ts +1 -0
  151. package/src/interface/controller/event/view/i-pickup-md-view.event.ts +29 -0
  152. package/src/interface/controller/event/view/index.ts +1 -0
  153. package/src/interface/controller/index.ts +1 -0
  154. package/src/interface/controller/state/control/i-context-menu.state.ts +10 -0
  155. package/src/interface/controller/state/control/i-tree-exp-bar.state.ts +10 -1
  156. package/src/interface/controller/state/control/i-tree.state.ts +1 -9
  157. package/src/interface/controller/state/control/index.ts +1 -0
  158. package/src/interface/controller/state/view/i-pickup-md-view.state.ts +22 -0
  159. package/src/interface/controller/state/view/index.ts +1 -0
  160. package/src/interface/util/i-open-view-util/i-open-view-util.ts +11 -11
  161. package/src/interface/util/script/i-script-function.ts +9 -1
  162. package/src/logic-scheduler/executor/script-executor.ts +11 -14
  163. package/src/logic-scheduler/trigger/item-dyna-logic-trigger.ts +8 -2
  164. package/src/logic-scheduler/trigger/logic-trigger.ts +19 -0
  165. package/src/model/layout/layout.ts +1 -0
  166. package/src/register/helper/common-register.ts +28 -0
  167. package/src/register/helper/control-register.ts +21 -6
  168. package/src/register/helper/editor-register.ts +22 -7
  169. package/src/register/helper/form-detail-register.ts +18 -6
  170. package/src/register/helper/grid-column-register.ts +19 -6
  171. package/src/register/helper/panel-item-register.ts +22 -6
  172. package/src/register/helper/portlet-register.ts +19 -6
  173. package/src/register/helper/ui-action-register.ts +19 -6
  174. package/src/register/helper/view-register.ts +18 -1
  175. package/src/service/app-data-entity/app-data-entity.ts +0 -1
  176. package/src/service/service/counter/counter.service.ts +4 -1
  177. package/src/service/vo/tree-node-data/tree-data-set-node-data.ts +3 -0
  178. package/src/ui-action/provider/sys-ui-action-provider.ts +41 -1
  179. package/src/ui-action/provider/ui-action-provider-base.ts +1 -0
  180. package/src/ui-action/uiaction-util.ts +12 -1
  181. package/src/utils/script/script-function.ts +77 -2
  182. package/src/utils/verify/de-rule-verify.ts +1 -0
@@ -6,6 +6,7 @@ import { mergeRight } from 'ramda';
6
6
  const DefaultOptions = {
7
7
  /** 是否是单行脚本,并把表达式结果return */
8
8
  singleRowReturn: false,
9
+ isAsync: true,
9
10
  };
10
11
  export class ScriptFunction {
11
12
  constructor(argKeys, scriptCode, options = DefaultOptions) {
@@ -32,6 +33,9 @@ export class ScriptFunction {
32
33
  if (options.singleRowReturn) {
33
34
  code = `return (${code})`;
34
35
  }
36
+ if (options.isAsync) {
37
+ code = `return (async function() { ${code}} )();`;
38
+ }
35
39
  return code;
36
40
  }
37
41
  /**
@@ -46,7 +50,26 @@ export class ScriptFunction {
46
50
  const keys = options.presetParams ? Object.keys(options.presetParams) : [];
47
51
  keys.push(...argKeys);
48
52
  // 预置提供的参数
49
- keys.push('document', 'el', 'selector');
53
+ const presetArgsKeys = [
54
+ 'document',
55
+ 'el',
56
+ 'selector',
57
+ 'env',
58
+ 'appSession',
59
+ 'topViewSession',
60
+ 'viewSession',
61
+ 'context',
62
+ 'viewParam',
63
+ 'activeData',
64
+ 'data',
65
+ 'app',
66
+ 'topView',
67
+ 'parentView',
68
+ 'view',
69
+ 'parent',
70
+ 'util',
71
+ ];
72
+ keys.push(...presetArgsKeys);
50
73
  // 除重
51
74
  this.argKeys = Array.from(new Set(keys));
52
75
  }
@@ -70,10 +93,61 @@ export class ScriptFunction {
70
93
  // 对象参数转数组
71
94
  const result = [];
72
95
  this.argKeys.forEach(key => {
96
+ if (_params[key] === undefined) {
97
+ this.fillDefaultParams(key, _params);
98
+ }
73
99
  result.push(_params[key]);
74
100
  });
75
101
  return result;
76
102
  }
103
+ /**
104
+ * 填充预置参数
105
+ * @author lxm
106
+ * @date 2023-08-21 04:07:50
107
+ * @protected
108
+ * @param {string} key
109
+ * @param {IParams} param
110
+ */
111
+ fillDefaultParams(key, param) {
112
+ const view = param.view;
113
+ switch (key) {
114
+ case 'util': // 工具类
115
+ param.util = {
116
+ message: ibiz.message,
117
+ notification: ibiz.notification,
118
+ modal: ibiz.modal,
119
+ confirm: ibiz.confirm,
120
+ openView: ibiz.openView,
121
+ };
122
+ break;
123
+ case 'env': // 全局环境变量
124
+ param.env = ibiz.env;
125
+ break;
126
+ case 'app': // 应用级的控制器
127
+ param.app = ibiz.hub.controller;
128
+ break;
129
+ case 'parent': // 父容器控制器
130
+ param.parent = view === null || view === void 0 ? void 0 : view.parentView;
131
+ break;
132
+ case 'topView': // 顶级视图控制器
133
+ param.topView = view === null || view === void 0 ? void 0 : view.getTopView();
134
+ break;
135
+ case 'parentView': // 父级视图控制器
136
+ param.parentView = view === null || view === void 0 ? void 0 : view.parentView;
137
+ break;
138
+ case 'topViewSession': // 顶级视图共享数据对象
139
+ param.topViewSession = view === null || view === void 0 ? void 0 : view.getTopView().session;
140
+ break;
141
+ case 'viewSession': // 当前视图共享数据对象
142
+ param.viewSession = view === null || view === void 0 ? void 0 : view.session;
143
+ break;
144
+ case 'appSession': // 全局共享数据对象
145
+ param.appSession = ibiz.hub.controller.session;
146
+ break;
147
+ default:
148
+ break;
149
+ }
150
+ }
77
151
  /**
78
152
  * 执行脚本代码
79
153
  * @author lxm
@@ -361,7 +361,7 @@ function checkFieldScriptRule(value, data, scriptCode, errorInfo, primaryModel)
361
361
  };
362
362
  try {
363
363
  // 避免脚本内变量冲突
364
- const result = ScriptFactory.execScriptFn({ value, data: source }, scriptCode);
364
+ const result = ScriptFactory.execScriptFn({ value, data: source }, scriptCode, { isAsync: false });
365
365
  if (typeof result === 'boolean') {
366
366
  resultBoolean = result;
367
367
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ibiz-template/runtime",
3
- "version": "0.1.8",
3
+ "version": "0.1.10",
4
4
  "description": "控制器包",
5
5
  "type": "module",
6
6
  "main": "out/index.js",
@@ -30,7 +30,7 @@
30
30
  "license": "MIT",
31
31
  "devDependencies": {
32
32
  "@ibiz-template/core": "^0.1.8",
33
- "@ibiz/model-core": "^0.0.14",
33
+ "@ibiz/model-core": "^0.0.15",
34
34
  "@types/path-browserify": "^1.0.0",
35
35
  "@types/qs": "^6.9.7",
36
36
  "@types/systemjs": "^6.13.1",
@@ -44,7 +44,7 @@
44
44
  },
45
45
  "peerDependencies": {
46
46
  "@ibiz-template/core": "^0.1.0",
47
- "@ibiz/model-core": "^0.0.14",
47
+ "@ibiz/model-core": "^0.0.15",
48
48
  "async-validator": "^4.2.5",
49
49
  "dayjs": "^1.11.7",
50
50
  "lodash-es": "^4.17.21",
@@ -53,5 +53,5 @@
53
53
  "qx-util": "^0.4.8",
54
54
  "ramda": "^0.29.0"
55
55
  },
56
- "gitHead": "cb6f466a8477cdcf184a8be03b8c26bd67324a70"
56
+ "gitHead": "24e2a2f4b050fbb3a3b9f5deeee97f98985913e4"
57
57
  }
package/src/app-hub.ts CHANGED
@@ -3,6 +3,7 @@ import { RuntimeError } from '@ibiz-template/core';
3
3
  import { Application } from './application';
4
4
  import { IAppHubService, ModelLoaderProvider } from './interface';
5
5
  import { AppConfigService, Convert } from './hub';
6
+ import { HubController } from './controller';
6
7
 
7
8
  /**
8
9
  * 运行时总集
@@ -22,6 +23,14 @@ export class AppHub implements IAppHubService {
22
23
  */
23
24
  readonly convert: Convert = new Convert();
24
25
 
26
+ /**
27
+ * 全局控制器,放置全局性的功能性方法
28
+ *
29
+ * @author chitanda
30
+ * @date 2023-08-21 15:08:48
31
+ */
32
+ readonly controller = new HubController();
33
+
25
34
  /**
26
35
  * 应用总集
27
36
  *
@@ -100,7 +100,7 @@ export class OpenAppViewCommand {
100
100
  context: IContext,
101
101
  params: IParams = {},
102
102
  ): Promise<IModalData> {
103
- return ibiz.openView.root(appView, context, params);
103
+ return ibiz.openView.root(appView.id, context, params);
104
104
  }
105
105
 
106
106
  /**
@@ -119,7 +119,7 @@ export class OpenAppViewCommand {
119
119
  context: IContext,
120
120
  params: IParams = {},
121
121
  ): Promise<IModalData> {
122
- return ibiz.openView.modal(appView, context, params);
122
+ return ibiz.openView.modal(appView.id, context, params);
123
123
  }
124
124
 
125
125
  /**
@@ -142,7 +142,7 @@ export class OpenAppViewCommand {
142
142
  if (!event) {
143
143
  throw new RuntimeError('气泡打开缺少event');
144
144
  }
145
- return ibiz.openView.popover(appView, event, context, params);
145
+ return ibiz.openView.popover(appView.id, event, context, params);
146
146
  }
147
147
 
148
148
  /**
@@ -161,7 +161,7 @@ export class OpenAppViewCommand {
161
161
  context: IContext,
162
162
  params: IParams = {},
163
163
  ): Promise<IModalData> {
164
- return ibiz.openView.drawer(appView, context, params);
164
+ return ibiz.openView.drawer(appView.id, context, params);
165
165
  }
166
166
 
167
167
  /**
@@ -180,6 +180,6 @@ export class OpenAppViewCommand {
180
180
  context: IContext,
181
181
  params: IParams = {},
182
182
  ): Promise<IModalData> {
183
- return ibiz.openView.custom(appView, context, params);
183
+ return ibiz.openView.custom(appView.id, context, params);
184
184
  }
185
185
  }
@@ -23,7 +23,7 @@ export class GlobalConfig implements IGlobalConfig {
23
23
 
24
24
  // 全局表格配置
25
25
  grid: IGlobalGridConfig = {
26
- editShowMode: 'cell',
26
+ editShowMode: 'row',
27
27
  editSaveMode: 'cell-blur',
28
28
  };
29
29
 
@@ -1,4 +1,4 @@
1
- import { IControl, IViewLayoutPanel } from '@ibiz/model-core';
1
+ import { IControl, IControlLogic, IViewLayoutPanel } from '@ibiz/model-core';
2
2
  import { BaseController } from '..';
3
3
  import { CTX } from '../../ctx';
4
4
  import {
@@ -129,14 +129,7 @@ export class ControlController<
129
129
  }
130
130
 
131
131
  // 部件逻辑初始化
132
- if (this.model.controlLogics?.length) {
133
- this.scheduler = ibiz.scheduler.createControlScheduler(
134
- this.model.controlLogics,
135
- );
136
- this.scheduler.defaultParamsCb = (): IUILogicParams => {
137
- return this.getEventArgs();
138
- };
139
- }
132
+ this.initControlScheduler(this.model.controlLogics);
140
133
  }
141
134
 
142
135
  protected async onDestroyed(): Promise<void> {
@@ -225,4 +218,21 @@ export class ControlController<
225
218
  });
226
219
  }
227
220
  }
221
+
222
+ /**
223
+ * 初始化部件逻辑调度器
224
+ * @author lxm
225
+ * @date 2023-08-21 11:53:37
226
+ * @param {IControlLogic[]} logics
227
+ * @return {*} {void}
228
+ */
229
+ protected initControlScheduler(logics: IControlLogic[] = []): void {
230
+ if (logics.length === 0) {
231
+ return;
232
+ }
233
+ this.scheduler = ibiz.scheduler.createControlScheduler(logics);
234
+ this.scheduler.defaultParamsCb = (): IUILogicParams => {
235
+ return this.getEventArgs();
236
+ };
237
+ }
228
238
  }
@@ -2,6 +2,7 @@
2
2
  import { createUUID, notNilEmpty } from 'qx-util';
3
3
  import { IBizContext, RuntimeError } from '@ibiz-template/core';
4
4
  import { IAppView } from '@ibiz/model-core';
5
+ import { isEmpty, isNil } from 'ramda';
5
6
  import { LoadingState } from '../../utils/loading/loading.state';
6
7
  import {
7
8
  IViewController,
@@ -14,7 +15,7 @@ import {
14
15
  IUILogicParams,
15
16
  IViewEngine,
16
17
  } from '../../../interface';
17
- import { SysUIActionTag, ViewMode } from '../../../constant';
18
+ import { SysUIActionTag } from '../../../constant';
18
19
  import { convertNavData, Modal } from '../../../utils';
19
20
  import { CTX } from '../../ctx';
20
21
  import { ControllerEvent } from '../../utils';
@@ -45,6 +46,8 @@ export class ViewController<
45
46
  extends BaseController<T, S, E>
46
47
  implements IViewController<T, S, E>
47
48
  {
49
+ session: IData = {};
50
+
48
51
  modal: IModal = new Modal({});
49
52
 
50
53
  protected get _evt(): ControllerEvent<IViewEvent> {
@@ -302,8 +305,11 @@ export class ViewController<
302
305
  handleContextParams(): void {
303
306
  this.context.srfappid = this.model.appId!;
304
307
 
305
- // 路由打开的设置srfsessionid
306
- if (this.modal.mode === ViewMode.ROUTE) {
308
+ // 只要上下文中无 srfsessionid 则生成一个
309
+ if (
310
+ isNil(this.context.srfsessionid) ||
311
+ isEmpty(this.context.srfsessionid)
312
+ ) {
307
313
  this.context.srfsessionid = createUUID();
308
314
  }
309
315
 
@@ -0,0 +1,22 @@
1
+ import { IHubController } from '../interface';
2
+
3
+ /**
4
+ * 应用级功能
5
+ *
6
+ * @author chitanda
7
+ * @date 2023-08-21 14:08:51
8
+ * @export
9
+ * @class AppController
10
+ * @implements {IHubController}
11
+ */
12
+ export class HubController implements IHubController {
13
+ session: IData = {};
14
+
15
+ login(loginName: string, password: string): Promise<boolean> {
16
+ return ibiz.auth.login(loginName, password);
17
+ }
18
+
19
+ logout(): Promise<boolean> {
20
+ return ibiz.auth.logout();
21
+ }
22
+ }
@@ -2,3 +2,4 @@ export * from './constant';
2
2
  export * from './common';
3
3
  export * from './ctx';
4
4
  export * from './utils';
5
+ export { HubController } from './hub.controller';
@@ -51,6 +51,7 @@ export function generateRules(
51
51
  ScriptFactory.execScriptFn(
52
52
  { rule, value, callback, source },
53
53
  sysRule.scriptCode!,
54
+ { isAsync: false },
54
55
  );
55
56
  } catch (error) {
56
57
  console.error(error);
@@ -3,6 +3,7 @@ import { Application } from '../../../application';
3
3
  import { Convert } from '../../../hub';
4
4
  import { ModelLoaderProvider } from '../../provider';
5
5
  import { IAppConfigService } from '../i-app-config-service/i-app-config-service';
6
+ import { IHubController } from '../../controller';
6
7
 
7
8
  /**
8
9
  * 应用 hub 服务
@@ -22,6 +23,15 @@ export interface IAppHubService {
22
23
  */
23
24
  readonly convert: Convert;
24
25
 
26
+ /**
27
+ * 全局控制器,放置全局性的功能性方法
28
+ *
29
+ * @author chitanda
30
+ * @date 2023-08-21 15:08:00
31
+ * @type {IHubController}
32
+ */
33
+ readonly controller: IHubController;
34
+
25
35
  /**
26
36
  * 默认应用首页视图
27
37
  *
@@ -16,6 +16,14 @@ export interface IUIActionResult {
16
16
  */
17
17
  refresh?: boolean;
18
18
 
19
+ /**
20
+ * 刷新引用视图模式
21
+ * @description 值模式 [界面行为重新加载数据模式] {0:无、 1:引用视图或树节点、 2:引用树节点父节点、 3:引用树节点根节点 }
22
+ * @type {( number | 0 | 1 | 2 | 3)}
23
+ * @default 0
24
+ */
25
+ refreshMode?: number | 0 | 1 | 2 | 3;
26
+
19
27
  /**
20
28
  * 是否关闭界面
21
29
  *
@@ -0,0 +1,38 @@
1
+ /**
2
+ * 应用控制器
3
+ *
4
+ * @author chitanda
5
+ * @date 2023-08-21 14:08:41
6
+ * @export
7
+ * @interface IHubController
8
+ */
9
+ export interface IHubController {
10
+ /**
11
+ * 全局共享数据对象
12
+ *
13
+ * @author chitanda
14
+ * @date 2023-08-21 14:08:01
15
+ * @type {IData}
16
+ */
17
+ session: IData;
18
+
19
+ /**
20
+ * 登录
21
+ *
22
+ * @author chitanda
23
+ * @date 2023-08-17 16:08:23
24
+ * @param {string} loginName
25
+ * @param {string} password
26
+ * @return {*} {Promise<boolean>}
27
+ */
28
+ login(loginName: string, password: string): Promise<boolean>;
29
+
30
+ /**
31
+ * 登出
32
+ *
33
+ * @author chitanda
34
+ * @date 2023-08-17 16:08:33
35
+ * @return {*} {Promise<boolean>}
36
+ */
37
+ logout(): Promise<boolean>;
38
+ }
@@ -0,0 +1,19 @@
1
+ import { IDEContextMenu } from '@ibiz/model-core';
2
+ import { IContextMenuEvent } from '../../event';
3
+ import { IContextMenuState } from '../../state';
4
+ import { IToolbarController } from './i-toolbar.controller';
5
+
6
+ /**
7
+ * 上下文菜单接口
8
+ * @author lxm
9
+ * @date 2023-08-21 10:43:51
10
+ * @export
11
+ * @interface IContextMenuController
12
+ * @extends {IToolbarController<IDEContextMenu, IContextMenuState, IContextMenuEvent>}
13
+ */
14
+ export interface IContextMenuController
15
+ extends IToolbarController<
16
+ IDEContextMenu,
17
+ IContextMenuState,
18
+ IContextMenuEvent
19
+ > {}
@@ -23,4 +23,12 @@ export interface IFormController<
23
23
  * @return {*} {IData[]}
24
24
  */
25
25
  getData(): IData[];
26
+
27
+ /**
28
+ * 表单值规则校验
29
+ * @author zzq
30
+ * @date 2023-08-23 16:38:33
31
+ * @return {*} {Promise<boolean>}
32
+ */
33
+ validate(): Promise<boolean>;
26
34
  }
@@ -1,7 +1,7 @@
1
1
  import { IDEGrid } from '@ibiz/model-core';
2
2
  import { ControlVO } from '../../../../service';
3
3
  import { IGridEvent } from '../../event';
4
- import { IGridState } from '../../state';
4
+ import { IGridRowState, IGridState } from '../../state';
5
5
  import { IMDControlController } from './i-md-control.controller';
6
6
 
7
7
  /**
@@ -57,4 +57,13 @@ export interface IGridController
57
57
  * @memberof IGridController
58
58
  */
59
59
  exportData(_args: { event: MouseEvent; params: IData }): Promise<void>;
60
+
61
+ /**
62
+ * 值规则校验
63
+ *
64
+ * @author zzq
65
+ * @date 2023-08-23 18:23:26
66
+ * @memberof IGridController
67
+ */
68
+ validate(row: IGridRowState): Promise<boolean>;
60
69
  }
@@ -11,8 +11,11 @@ import { IControlController } from './i-control.controller';
11
11
  * @interface IToolbarController
12
12
  * @extends {IControlController}
13
13
  */
14
- export interface IToolbarController
15
- extends IControlController<IDEToolbar, IToolbarState, IToolbarEvent> {
14
+ export interface IToolbarController<
15
+ T extends IDEToolbar = IDEToolbar,
16
+ S extends IToolbarState = IToolbarState,
17
+ E extends IToolbarEvent = IToolbarEvent,
18
+ > extends IControlController<T, S, E> {
16
19
  /**
17
20
  * 根据数据计算工具栏权限和状态
18
21
  * @author lxm
@@ -20,7 +23,7 @@ export interface IToolbarController
20
23
  * @param {IData} [data] 实体数据
21
24
  * @param {string} [appDeId] 实体标识
22
25
  */
23
- calcButtonState(data?: IData, appDeId?: string): void;
26
+ calcButtonState(data?: IData, appDeId?: string): Promise<void>;
24
27
 
25
28
  /**
26
29
  * 设置额外的按钮(可多次调用会累加)
@@ -46,10 +46,15 @@ export interface ITreeController
46
46
  ): Promise<void>;
47
47
 
48
48
  /**
49
- * 刷新父节点数据
49
+ * 刷新指定树节点的子节点数据
50
50
  * @author lxm
51
- * @date 2023-08-18 01:49:59
52
- * @param {ITreeNodeData} parentNode
51
+ * @date 2023-08-23 08:23:59
52
+ * @param {(ITreeNodeData | IData)} nodeData 指定树节点数据,可以是节点数据,也可以是对应的实体数据
53
+ * @param {boolean} [refreshParent=false] 是否是刷新给定节点数据的父节点的子节点数据
54
+ * @return {*} {Promise<void>}
53
55
  */
54
- refreshParent(parentData: ITreeNodeData | IData): void;
56
+ refreshNodeChildren(
57
+ nodeData: ITreeNodeData | IData,
58
+ refreshParent?: boolean,
59
+ ): Promise<void>;
55
60
  }
@@ -29,3 +29,4 @@ export * from './i-dashboard.controller';
29
29
  export * from './portlet/index';
30
30
  export * from './i-calendar.controller';
31
31
  export * from './i-calendar-exp-bar.controller';
32
+ export * from './i-context-menu.controller';
@@ -29,6 +29,15 @@ export interface IViewController<
29
29
  > extends IController<T, S, E> {
30
30
  evt: ControllerEvent<E>;
31
31
 
32
+ /**
33
+ * 视图级共享数据对象
34
+ *
35
+ * @author chitanda
36
+ * @date 2023-08-21 15:08:52
37
+ * @type {IData}
38
+ */
39
+ session: IData;
40
+
32
41
  /**
33
42
  * 视图呈现模式
34
43
  * @author lxm
@@ -0,0 +1,10 @@
1
+ import { IToolbarEvent } from './i-toolbar.event';
2
+
3
+ /**
4
+ * 上下文菜单事件
5
+ *
6
+ * @export
7
+ * @interface IContextMenuEvent
8
+ * @extends {IToolbarEvent}
9
+ */
10
+ export interface IContextMenuEvent extends IToolbarEvent {}
@@ -38,20 +38,4 @@ export interface IPickupViewPanelEvent extends IControlEvent {
38
38
  event: EventBase;
39
39
  emitArgs: { data: IData[] };
40
40
  };
41
-
42
- /**
43
- * 选择视图初始化
44
- *
45
- * @author zk
46
- * @date 2023-08-04 05:08:37
47
- * @type {{
48
- * event: EventBase;
49
- * emitArgs: { data: IViewController };
50
- * }}
51
- * @memberof IPickupViewPanelEvent
52
- */
53
- onPickUpViewMounted: {
54
- event: EventBase;
55
- emitArgs: undefined;
56
- };
57
41
  }
@@ -26,3 +26,4 @@ export * from './i-drbar.event';
26
26
  export * from './i-drtab.event';
27
27
  export * from './i-calendar.event';
28
28
  export * from './i-calendar-exp-bar.event';
29
+ export * from './i-context-menu.event';
@@ -0,0 +1,29 @@
1
+ import { EventBase } from '../argument';
2
+ import { IMDViewEvent } from './i-md-view.event';
3
+
4
+ /**
5
+ * 选择多数据视图事件
6
+ *
7
+ * @author zk
8
+ * @date 2023-08-21 05:08:15
9
+ * @export
10
+ * @interface IPickupMDViewEvent
11
+ * @extends {IMDViewEvent}
12
+ */
13
+ export interface IPickupMDViewEvent extends IMDViewEvent {
14
+ /**
15
+ * 选中数据变更事件
16
+ *
17
+ * @author zk
18
+ * @date 2023-08-21 05:08:09
19
+ * @type {{
20
+ * event: EventBase;
21
+ * emitArgs: { data: IData[] };
22
+ * }}
23
+ * @memberof IPickupMDViewEvent
24
+ */
25
+ onSelectionChange: {
26
+ event: EventBase;
27
+ emitArgs: { data: IData[] };
28
+ };
29
+ }
@@ -35,3 +35,4 @@ export * from './i-app-portal-view.event';
35
35
  export * from './i-de-portal-view.event';
36
36
  export * from './i-calendar-view.event';
37
37
  export * from './i-calendar-exp-view.event';
38
+ export * from './i-pickup-md-view.event';
@@ -3,3 +3,4 @@ export * from './controller';
3
3
  export * from './event';
4
4
  export * from './state';
5
5
  export * from './work-flow';
6
+ export type { IHubController } from './app';
@@ -0,0 +1,10 @@
1
+ import { IToolbarState } from './i-toolbar.state';
2
+
3
+ /**
4
+ * 上下文菜单UI状态
5
+ *
6
+ * @export
7
+ * @interface IContextMenuState
8
+ * @extends {IToolbarState}
9
+ */
10
+ export interface IContextMenuState extends IToolbarState {}
@@ -7,4 +7,13 @@ import { IExpBarControlState } from './i-exp-bar-control.state';
7
7
  * @interface ITreeExpBarState
8
8
  * @extends {IExpBarControlState}
9
9
  */
10
- export interface ITreeExpBarState extends IExpBarControlState {}
10
+ export interface ITreeExpBarState extends IExpBarControlState {
11
+ /**
12
+ * 不需要配置导航视图
13
+ * 没有配置导航视图的情况下也正常抛出导航事件,由外部决定导航参数用在哪个导航视图里。
14
+ * @author lxm
15
+ * @date 2023-08-22 03:39:14
16
+ * @type {boolean}
17
+ */
18
+ noNeedNavView: boolean;
19
+ }