@ibiz-template/runtime 0.1.8 → 0.1.9

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 (118) hide show
  1. package/dist/index.esm.js +4077 -3949
  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/controller/common/control/control.controller.d.ts +9 -1
  9. package/out/controller/common/control/control.controller.d.ts.map +1 -1
  10. package/out/controller/common/control/control.controller.js +17 -7
  11. package/out/controller/common/view/view.controller.d.ts +1 -0
  12. package/out/controller/common/view/view.controller.d.ts.map +1 -1
  13. package/out/controller/common/view/view.controller.js +6 -3
  14. package/out/controller/hub.controller.d.ts +16 -0
  15. package/out/controller/hub.controller.d.ts.map +1 -0
  16. package/out/controller/hub.controller.js +20 -0
  17. package/out/controller/index.d.ts +1 -0
  18. package/out/controller/index.d.ts.map +1 -1
  19. package/out/controller/index.js +1 -0
  20. package/out/controller/utils/value-rule/value-rule.d.ts.map +1 -1
  21. package/out/controller/utils/value-rule/value-rule.js +1 -1
  22. package/out/interface/common/i-app-hub-service/i-app-hub-service.d.ts +9 -0
  23. package/out/interface/common/i-app-hub-service/i-app-hub-service.d.ts.map +1 -1
  24. package/out/interface/controller/app.d.ts +37 -0
  25. package/out/interface/controller/app.d.ts.map +1 -0
  26. package/out/interface/controller/app.js +1 -0
  27. package/out/interface/controller/controller/control/i-context-menu.controller.d.ts +15 -0
  28. package/out/interface/controller/controller/control/i-context-menu.controller.d.ts.map +1 -0
  29. package/out/interface/controller/controller/control/i-context-menu.controller.js +1 -0
  30. package/out/interface/controller/controller/control/i-toolbar.controller.d.ts +2 -2
  31. package/out/interface/controller/controller/control/i-toolbar.controller.d.ts.map +1 -1
  32. package/out/interface/controller/controller/control/index.d.ts +1 -0
  33. package/out/interface/controller/controller/control/index.d.ts.map +1 -1
  34. package/out/interface/controller/controller/control/index.js +1 -0
  35. package/out/interface/controller/controller/view/i-view.controller.d.ts +8 -0
  36. package/out/interface/controller/controller/view/i-view.controller.d.ts.map +1 -1
  37. package/out/interface/controller/event/control/i-context-menu.event.d.ts +11 -0
  38. package/out/interface/controller/event/control/i-context-menu.event.d.ts.map +1 -0
  39. package/out/interface/controller/event/control/i-context-menu.event.js +1 -0
  40. package/out/interface/controller/event/control/index.d.ts +1 -0
  41. package/out/interface/controller/event/control/index.d.ts.map +1 -1
  42. package/out/interface/controller/event/control/index.js +1 -0
  43. package/out/interface/controller/event/view/i-pickup-md-view.event.d.ts +31 -0
  44. package/out/interface/controller/event/view/i-pickup-md-view.event.d.ts.map +1 -0
  45. package/out/interface/controller/event/view/i-pickup-md-view.event.js +1 -0
  46. package/out/interface/controller/event/view/index.d.ts +1 -0
  47. package/out/interface/controller/event/view/index.d.ts.map +1 -1
  48. package/out/interface/controller/event/view/index.js +1 -0
  49. package/out/interface/controller/index.d.ts +1 -0
  50. package/out/interface/controller/index.d.ts.map +1 -1
  51. package/out/interface/controller/state/control/i-context-menu.state.d.ts +11 -0
  52. package/out/interface/controller/state/control/i-context-menu.state.d.ts.map +1 -0
  53. package/out/interface/controller/state/control/i-context-menu.state.js +1 -0
  54. package/out/interface/controller/state/control/i-tree.state.d.ts +1 -10
  55. package/out/interface/controller/state/control/i-tree.state.d.ts.map +1 -1
  56. package/out/interface/controller/state/control/index.d.ts +1 -0
  57. package/out/interface/controller/state/control/index.d.ts.map +1 -1
  58. package/out/interface/controller/state/control/index.js +1 -0
  59. package/out/interface/controller/state/view/i-pickup-md-view.state.d.ts +22 -0
  60. package/out/interface/controller/state/view/i-pickup-md-view.state.d.ts.map +1 -0
  61. package/out/interface/controller/state/view/i-pickup-md-view.state.js +1 -0
  62. package/out/interface/controller/state/view/index.d.ts +1 -0
  63. package/out/interface/controller/state/view/index.d.ts.map +1 -1
  64. package/out/interface/controller/state/view/index.js +1 -0
  65. package/out/interface/util/i-open-view-util/i-open-view-util.d.ts +11 -11
  66. package/out/interface/util/i-open-view-util/i-open-view-util.d.ts.map +1 -1
  67. package/out/interface/util/script/i-script-function.d.ts +8 -1
  68. package/out/interface/util/script/i-script-function.d.ts.map +1 -1
  69. package/out/logic-scheduler/executor/script-executor.d.ts +6 -6
  70. package/out/logic-scheduler/executor/script-executor.d.ts.map +1 -1
  71. package/out/logic-scheduler/executor/script-executor.js +10 -14
  72. package/out/logic-scheduler/trigger/item-dyna-logic-trigger.d.ts +1 -0
  73. package/out/logic-scheduler/trigger/item-dyna-logic-trigger.d.ts.map +1 -1
  74. package/out/logic-scheduler/trigger/item-dyna-logic-trigger.js +6 -2
  75. package/out/logic-scheduler/trigger/logic-trigger.d.ts +8 -0
  76. package/out/logic-scheduler/trigger/logic-trigger.d.ts.map +1 -1
  77. package/out/logic-scheduler/trigger/logic-trigger.js +17 -0
  78. package/out/model/layout/layout.d.ts.map +1 -1
  79. package/out/model/layout/layout.js +1 -0
  80. package/out/service/vo/tree-node-data/tree-data-set-node-data.d.ts.map +1 -1
  81. package/out/service/vo/tree-node-data/tree-data-set-node-data.js +3 -1
  82. package/out/utils/script/script-function.d.ts +9 -0
  83. package/out/utils/script/script-function.d.ts.map +1 -1
  84. package/out/utils/script/script-function.js +75 -1
  85. package/out/utils/verify/de-rule-verify.js +1 -1
  86. package/package.json +2 -2
  87. package/src/app-hub.ts +9 -0
  88. package/src/command/app/open-app-view/open-app-view.ts +5 -5
  89. package/src/controller/common/control/control.controller.ts +19 -9
  90. package/src/controller/common/view/view.controller.ts +9 -3
  91. package/src/controller/hub.controller.ts +22 -0
  92. package/src/controller/index.ts +1 -0
  93. package/src/controller/utils/value-rule/value-rule.ts +1 -0
  94. package/src/interface/common/i-app-hub-service/i-app-hub-service.ts +10 -0
  95. package/src/interface/controller/app.ts +38 -0
  96. package/src/interface/controller/controller/control/i-context-menu.controller.ts +19 -0
  97. package/src/interface/controller/controller/control/i-toolbar.controller.ts +6 -3
  98. package/src/interface/controller/controller/control/index.ts +1 -0
  99. package/src/interface/controller/controller/view/i-view.controller.ts +9 -0
  100. package/src/interface/controller/event/control/i-context-menu.event.ts +10 -0
  101. package/src/interface/controller/event/control/index.ts +1 -0
  102. package/src/interface/controller/event/view/i-pickup-md-view.event.ts +29 -0
  103. package/src/interface/controller/event/view/index.ts +1 -0
  104. package/src/interface/controller/index.ts +1 -0
  105. package/src/interface/controller/state/control/i-context-menu.state.ts +10 -0
  106. package/src/interface/controller/state/control/i-tree.state.ts +1 -9
  107. package/src/interface/controller/state/control/index.ts +1 -0
  108. package/src/interface/controller/state/view/i-pickup-md-view.state.ts +22 -0
  109. package/src/interface/controller/state/view/index.ts +1 -0
  110. package/src/interface/util/i-open-view-util/i-open-view-util.ts +11 -11
  111. package/src/interface/util/script/i-script-function.ts +9 -1
  112. package/src/logic-scheduler/executor/script-executor.ts +11 -14
  113. package/src/logic-scheduler/trigger/item-dyna-logic-trigger.ts +8 -2
  114. package/src/logic-scheduler/trigger/logic-trigger.ts +19 -0
  115. package/src/model/layout/layout.ts +1 -0
  116. package/src/service/vo/tree-node-data/tree-data-set-node-data.ts +3 -0
  117. package/src/utils/script/script-function.ts +77 -2
  118. package/src/utils/verify/de-rule-verify.ts +1 -0
@@ -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
  }
@@ -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
  *
@@ -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
+ > {}
@@ -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
  * 设置额外的按钮(可多次调用会累加)
@@ -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 {}
@@ -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 {}
@@ -1,4 +1,4 @@
1
- import { IButtonContainerState, IIcon } from '../../common';
1
+ import { IIcon } from '../../common';
2
2
  import { IMDControlState } from './i-md-control.state';
3
3
 
4
4
  /**
@@ -37,14 +37,6 @@ export interface ITreeState extends IMDControlState {
37
37
  * @type {string[]}
38
38
  */
39
39
  expandedKeys: string[];
40
-
41
- /**
42
- * 右键上下文菜单状态
43
- * @author lxm
44
- * @date 2023-08-01 04:48:11
45
- * @type {{ [p: string]: IButtonContainerState }}
46
- */
47
- contextMenus: { [p: string]: IButtonContainerState };
48
40
  }
49
41
 
50
42
  /**
@@ -31,3 +31,4 @@ export * from './i-drtab.state';
31
31
  export * from './i-dashboard.state';
32
32
  export * from './i-calendar.state';
33
33
  export * from './i-calendar-exp-bar.state';
34
+ export * from './i-context-menu.state';
@@ -0,0 +1,22 @@
1
+ import { IMDViewState } from './i-md-view.state';
2
+
3
+ /**
4
+ * 选择多数据视图UI状态
5
+ *
6
+ * @author zk
7
+ * @date 2023-05-25 05:05:43
8
+ * @export
9
+ * @interface IPickupMDViewState
10
+ * @extends {IMDViewState}
11
+ */
12
+ export interface IPickupMDViewState extends IMDViewState {
13
+ /**
14
+ * 是否单选
15
+ *
16
+ * @author zk
17
+ * @date 2023-08-21 05:08:36
18
+ * @type {boolean}
19
+ * @memberof IPickupMDViewState
20
+ */
21
+ singleSelect: boolean;
22
+ }
@@ -35,3 +35,4 @@ export * from './i-de-portal-view.state';
35
35
  export * from './i-panel-view.state';
36
36
  export * from './i-calendar-view.state';
37
37
  export * from './i-calendar-exp-view.state';
38
+ export * from './i-pickup-md-view.state';
@@ -1,4 +1,4 @@
1
- import { IModalData, IViewConfig } from '../../common';
1
+ import { IModalData } from '../../common';
2
2
 
3
3
  /**
4
4
  * 打开视图工具类
@@ -25,13 +25,13 @@ export interface IOpenViewUtil {
25
25
  *
26
26
  * @author chitanda
27
27
  * @date 2023-07-12 21:07:51
28
- * @param {IViewConfig} appView
28
+ * @param {string} appViewId
29
29
  * @param {IContext} context
30
30
  * @param {IParams} [params]
31
31
  * @return {*} {Promise<IModalData>}
32
32
  */
33
33
  root(
34
- appView: IViewConfig,
34
+ appViewId: string,
35
35
  context: IContext,
36
36
  params?: IParams,
37
37
  ): Promise<IModalData>;
@@ -41,13 +41,13 @@ export interface IOpenViewUtil {
41
41
  *
42
42
  * @author chitanda
43
43
  * @date 2022-08-16 20:08:41
44
- * @param {IViewConfig} appView
44
+ * @param {string} appViewId
45
45
  * @param {IContext} [context]
46
46
  * @param {IParams} [params]
47
47
  * @return {*} {Promise<IModalData>}
48
48
  */
49
49
  modal(
50
- appView: IViewConfig,
50
+ appViewId: string,
51
51
  context: IContext,
52
52
  params?: IParams,
53
53
  ): Promise<IModalData>;
@@ -57,13 +57,13 @@ export interface IOpenViewUtil {
57
57
  *
58
58
  * @author chitanda
59
59
  * @date 2022-08-16 20:08:22
60
- * @param {IViewConfig} appView
60
+ * @param {string} appViewId
61
61
  * @param {IContext} [context]
62
62
  * @param {IParams} [params]
63
63
  * @return {*} {Promise<IModalData>}
64
64
  */
65
65
  popover(
66
- appView: IViewConfig,
66
+ appViewId: string,
67
67
  event: MouseEvent,
68
68
  context: IContext,
69
69
  params?: IParams,
@@ -74,13 +74,13 @@ export interface IOpenViewUtil {
74
74
  *
75
75
  * @author chitanda
76
76
  * @date 2022-08-16 20:08:46
77
- * @param {IViewConfig} appView
77
+ * @param {string} appViewId
78
78
  * @param {IContext} [context]
79
79
  * @param {IParams} [params]
80
80
  * @return {*} {Promise<IModalData>}
81
81
  */
82
82
  drawer(
83
- appView: IViewConfig,
83
+ appViewId: string,
84
84
  context: IContext,
85
85
  params?: IParams,
86
86
  ): Promise<IModalData>;
@@ -90,13 +90,13 @@ export interface IOpenViewUtil {
90
90
  *
91
91
  * @author chitanda
92
92
  * @date 2022-08-16 20:08:29
93
- * @param {IViewConfig} appView
93
+ * @param {string} appViewId
94
94
  * @param {IContext} [context]
95
95
  * @param {IParams} [params]
96
96
  * @return {*} {Promise<IModalData>}
97
97
  */
98
98
  custom(
99
- appView: IViewConfig,
99
+ appViewId: string,
100
100
  context: IContext,
101
101
  params?: IParams,
102
102
  ): Promise<IModalData>;
@@ -12,7 +12,7 @@ export interface IScriptFunctionOpts {
12
12
  * @date 2023-07-25 10:46:18
13
13
  * @type {boolean}
14
14
  */
15
- singleRowReturn: boolean;
15
+ singleRowReturn?: boolean;
16
16
 
17
17
  /**
18
18
  * 预置参数
@@ -21,4 +21,12 @@ export interface IScriptFunctionOpts {
21
21
  * @type {IParams}
22
22
  */
23
23
  presetParams?: IParams;
24
+
25
+ /**
26
+ * 是否是异步函数脚本
27
+ * @author lxm
28
+ * @date 2023-08-21 03:15:43
29
+ * @type {boolean}
30
+ */
31
+ isAsync?: boolean;
24
32
  }
@@ -1,5 +1,4 @@
1
- import { RuntimeError } from '@ibiz-template/core';
2
- import { IUILogicParams } from '../../interface';
1
+ import { IScriptFunctionOpts, IUILogicParams } from '../../interface';
3
2
  import { ScriptFactory, ScriptFunction } from '../../utils';
4
3
  import { LogicExecutor } from './logic-executor';
5
4
 
@@ -18,12 +17,12 @@ export class ScriptExecutor extends LogicExecutor {
18
17
  scriptFn?: ScriptFunction;
19
18
 
20
19
  /**
21
- * 是否单行返回,脚本只是单行的且默认把值返回
20
+ * 初始化完成
22
21
  * @author lxm
23
- * @date 2023-06-25 10:06:32
22
+ * @date 2023-08-21 04:27:38
24
23
  * @type {boolean}
25
24
  */
26
- isRowReturn: boolean = false;
25
+ initialized: boolean = false;
27
26
 
28
27
  /**
29
28
  * 执行参数转换成脚本执行作用域参数
@@ -32,8 +31,9 @@ export class ScriptExecutor extends LogicExecutor {
32
31
  * @param {IUILogicParams} _executeParams
33
32
  * @return {*} {IData[]}
34
33
  */
35
- convertScriptArgs(_executeParams: IUILogicParams): IData {
36
- throw new RuntimeError('未设置脚本执行参数转换方法');
34
+ convertScriptArgs(executeParams: IUILogicParams): IData {
35
+ // 默认不特殊处理的不转换
36
+ return executeParams;
37
37
  }
38
38
 
39
39
  /**
@@ -46,16 +46,13 @@ export class ScriptExecutor extends LogicExecutor {
46
46
  init(
47
47
  paramKeys: string[],
48
48
  convertFun: (executeParams: IUILogicParams) => IData,
49
+ options?: IScriptFunctionOpts,
49
50
  ): void {
50
51
  this.convertScriptArgs = convertFun;
51
- let code = this.logic.scriptCode!;
52
- if (this.isRowReturn) {
53
- code = `return (${code})`;
54
- }
52
+ const code = this.logic.scriptCode!;
55
53
  // eslint-disable-next-line no-new-func
56
- this.scriptFn = ScriptFactory.createScriptFn(paramKeys, code, {
57
- singleRowReturn: this.isRowReturn,
58
- });
54
+ this.scriptFn = ScriptFactory.createScriptFn(paramKeys, code, options);
55
+ this.initialized = true;
59
56
  }
60
57
 
61
58
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -16,8 +16,10 @@ export class ItemDynaLogicTrigger extends LogicTrigger {
16
16
  `预定义逻辑类型${this.type}的触发器类型只能是脚本`,
17
17
  );
18
18
  }
19
- this.executor.isRowReturn = true;
20
- this.executor.init(
19
+ }
20
+
21
+ bindScriptExecutor(executor: ScriptExecutor): void {
22
+ executor.init(
21
23
  ['context', 'viewparams', 'data', 'env'],
22
24
  executeParams => {
23
25
  const { context, params, data } = executeParams;
@@ -28,6 +30,10 @@ export class ItemDynaLogicTrigger extends LogicTrigger {
28
30
  env: ibiz.env,
29
31
  };
30
32
  },
33
+ {
34
+ singleRowReturn: true,
35
+ isAsync: false,
36
+ },
31
37
  );
32
38
  }
33
39
 
@@ -6,6 +6,7 @@ import type {
6
6
  TriggerType,
7
7
  } from '../../interface';
8
8
  import { LogicExecutor } from '../executor/logic-executor';
9
+ import { ScriptExecutor } from '../executor/script-executor';
9
10
  import { LogicScheduler } from '../scheduler/logic-scheduler';
10
11
 
11
12
  /**
@@ -51,6 +52,24 @@ export class LogicTrigger {
51
52
  */
52
53
  bindExecutor(executor: LogicExecutor): void {
53
54
  this.executor = executor;
55
+ if (this.executor.type === 'SCRIPT') {
56
+ this.bindScriptExecutor(executor as ScriptExecutor);
57
+ }
58
+ }
59
+
60
+ /**
61
+ * 绑定脚本执行器
62
+ * @author lxm
63
+ * @date 2023-08-21 04:33:35
64
+ * @param {ScriptExecutor} executor
65
+ */
66
+ bindScriptExecutor(executor: ScriptExecutor): void {
67
+ if (!executor.initialized) {
68
+ executor.init([], executeParams => executeParams, {
69
+ isAsync: true,
70
+ singleRowReturn: false,
71
+ });
72
+ }
54
73
  }
55
74
 
56
75
  /**
@@ -145,5 +145,6 @@ export function calcGridLayoutPos(
145
145
  export function calcDynaClass(expression: string, data: IData): string[] {
146
146
  return ScriptFactory.execScriptFn({ data }, expression, {
147
147
  singleRowReturn: true,
148
+ isAsync: false,
148
149
  }) as string[];
149
150
  }
@@ -89,6 +89,9 @@ export class TreeDataSetNodeData extends TreeNodeData implements ITreeNodeData {
89
89
  return ScriptFactory.execScriptFn(
90
90
  { data: this.deData },
91
91
  dataItem.scriptCode,
92
+ {
93
+ isAsync: false,
94
+ },
92
95
  ) as string;
93
96
  }
94
97
  }