@ibiz-template/runtime 0.1.24 → 0.1.25

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 (40) hide show
  1. package/dist/index.esm.js +60 -18
  2. package/dist/index.system.min.js +1 -1
  3. package/dist/index.system.min.js.map +1 -1
  4. package/out/config/global-config.d.ts.map +1 -1
  5. package/out/config/global-config.js +1 -0
  6. package/out/controller/common/control/control.controller.d.ts +4 -4
  7. package/out/controller/common/control/control.controller.d.ts.map +1 -1
  8. package/out/controller/common/control/control.controller.js +2 -2
  9. package/out/controller/control/exp-bar/calendar-exp-bar.controller.d.ts.map +1 -1
  10. package/out/controller/control/exp-bar/calendar-exp-bar.controller.js +1 -0
  11. package/out/controller/control/exp-bar/exp-bar.controller.d.ts +10 -0
  12. package/out/controller/control/exp-bar/exp-bar.controller.d.ts.map +1 -1
  13. package/out/controller/control/exp-bar/exp-bar.controller.js +32 -7
  14. package/out/controller/control/exp-bar/tree-exp-bar.controller.d.ts.map +1 -1
  15. package/out/controller/control/exp-bar/tree-exp-bar.controller.js +1 -0
  16. package/out/interface/common/i-global-config/i-global-view-config.d.ts +8 -0
  17. package/out/interface/common/i-global-config/i-global-view-config.d.ts.map +1 -1
  18. package/out/interface/controller/controller/control/i-exp-bar-control.controller.d.ts +10 -0
  19. package/out/interface/controller/controller/control/i-exp-bar-control.controller.d.ts.map +1 -1
  20. package/out/interface/provider/i-control.provider.d.ts +15 -0
  21. package/out/interface/provider/i-control.provider.d.ts.map +1 -1
  22. package/out/interface/provider/i-view.provider.d.ts +15 -0
  23. package/out/interface/provider/i-view.provider.d.ts.map +1 -1
  24. package/out/service/vo/control.vo.d.ts.map +1 -1
  25. package/out/service/vo/control.vo.js +9 -12
  26. package/out/service/vo/ui-map-field.d.ts +7 -0
  27. package/out/service/vo/ui-map-field.d.ts.map +1 -1
  28. package/out/service/vo/ui-map-field.js +24 -0
  29. package/package.json +2 -2
  30. package/src/config/global-config.ts +1 -0
  31. package/src/controller/common/control/control.controller.ts +4 -4
  32. package/src/controller/control/exp-bar/calendar-exp-bar.controller.ts +1 -0
  33. package/src/controller/control/exp-bar/exp-bar.controller.ts +35 -7
  34. package/src/controller/control/exp-bar/tree-exp-bar.controller.ts +1 -0
  35. package/src/interface/common/i-global-config/i-global-view-config.ts +9 -0
  36. package/src/interface/controller/controller/control/i-exp-bar-control.controller.ts +8 -0
  37. package/src/interface/provider/i-control.provider.ts +22 -0
  38. package/src/interface/provider/i-view.provider.ts +22 -0
  39. package/src/service/vo/control.vo.ts +10 -15
  40. package/src/service/vo/ui-map-field.ts +28 -0
@@ -1,3 +1,7 @@
1
+ import { IAppView } from '@ibiz/model-core';
2
+ import { CTX } from '../../controller';
3
+ import { IViewController } from '../controller';
4
+
1
5
  /**
2
6
  * 视图适配器的接口
3
7
  *
@@ -16,4 +20,22 @@ export interface IViewProvider {
16
20
  */
17
21
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
18
22
  component: any;
23
+
24
+ /**
25
+ * 创建视图控制器
26
+ *
27
+ * @author lxm
28
+ * @date 2023-09-15 11:49:26
29
+ * @param {IAppView} model 视图模型
30
+ * @param {IContext} context 上下文
31
+ * @param {IParams} [params] 视图参数
32
+ * @param {CTX} [ctx]
33
+ * @return {*} {IViewController}
34
+ */
35
+ createController?(
36
+ model: IAppView,
37
+ context: IContext,
38
+ params?: IParams,
39
+ ctx?: CTX,
40
+ ): IViewController;
19
41
  }
@@ -1,4 +1,3 @@
1
- import { DataTypes } from '@ibiz-template/core';
2
1
  import { clone, isNil } from 'ramda';
3
2
  import { Srfuf } from '../constant';
4
3
  import { UIMapField } from './ui-map-field';
@@ -142,10 +141,7 @@ export class ControlVO {
142
141
  this.$dataUIMap.forEach((mapField, key) => {
143
142
  const value = mapField.dataKey;
144
143
  // 关联映射属性
145
- const forceNumber =
146
- mapField.dataType !== undefined &&
147
- DataTypes.isNumber(mapField.dataType);
148
- this.linkProperty(key, value, mapField.isOriginField, forceNumber);
144
+ this.linkProperty(key, value, mapField);
149
145
  });
150
146
 
151
147
  // 映射属性里没有涉及到的建立直接关联,用于使用实体属性也要取到值的场景。
@@ -172,9 +168,9 @@ export class ControlVO {
172
168
  private linkProperty(
173
169
  uiKey: string,
174
170
  dataKey: string,
175
- isOriginField: boolean = true,
176
- forceNumber: boolean = false,
171
+ mapField?: UIMapField,
177
172
  ): void {
173
+ const isOriginField = mapField ? mapField.isOriginField : true;
178
174
  // srfuf和srfkey不做处理
179
175
  if (uiKey === 'srfuf') {
180
176
  return;
@@ -195,16 +191,15 @@ export class ControlVO {
195
191
  : this.$origin[dataKey];
196
192
  },
197
193
  set(val) {
198
- // 非空且强制转数值时,转换值的类型
199
- let val2 =
200
- forceNumber && !isNil(val) && val !== '' ? Number(val) : val;
201
- if (Number.isNaN(val2)) {
202
- val2 = val; // NaN时还原值
203
- ibiz.log.error(`${val}不能转换成数字`);
204
- }
205
- this.$origin[dataKey] = val2;
194
+ // 有mapField的走它的转换
195
+ this.$origin[dataKey] = mapField ? mapField.convertVal(val) : val;
206
196
  },
207
197
  });
198
+
199
+ // 一开始初始化的时候先把值转换一下。
200
+ if (mapField) {
201
+ this[uiKey] = mapField.convertVal(this.$origin[dataKey]);
202
+ }
208
203
  } else {
209
204
  Object.defineProperty(this, uiKey, {
210
205
  enumerable: true,
@@ -1,3 +1,4 @@
1
+ import { DataTypes } from '@ibiz-template/core';
1
2
  import { isNil } from 'ramda';
2
3
 
3
4
  /**
@@ -70,4 +71,31 @@ export class UIMapField {
70
71
  this.dataType = opts.dataType;
71
72
  }
72
73
  }
74
+
75
+ /**
76
+ * 值转换
77
+ * @author lxm
78
+ * @date 2023-09-14 06:45:44
79
+ * @param {unknown} value 原值
80
+ */
81
+ convertVal(value: unknown): unknown {
82
+ // 没有数据类型的给原值
83
+ if (!this.dataType) {
84
+ return value;
85
+ }
86
+
87
+ // 数值转换
88
+ if (DataTypes.isNumber(this.dataType)) {
89
+ const numVal = !isNil(value) && value !== '' ? Number(value) : value;
90
+
91
+ if (Number.isNaN(numVal)) {
92
+ // 不能转换的给原值
93
+ ibiz.log.debug(`${value}不能转换成数字`);
94
+ return value;
95
+ }
96
+ return numVal;
97
+ }
98
+
99
+ return value;
100
+ }
73
101
  }