@ibiz-template/runtime 0.1.23 → 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 (81) hide show
  1. package/dist/index.esm.js +184 -109
  2. package/dist/index.system.min.js +1 -1
  3. package/dist/index.system.min.js.map +1 -1
  4. package/out/command/app/app-func/app-func.js +2 -2
  5. package/out/config/global-config.d.ts.map +1 -1
  6. package/out/config/global-config.js +1 -0
  7. package/out/controller/common/control/control.controller.d.ts +4 -4
  8. package/out/controller/common/control/control.controller.d.ts.map +1 -1
  9. package/out/controller/common/control/control.controller.js +3 -2
  10. package/out/controller/common/control/md-control.controller.d.ts +20 -1
  11. package/out/controller/common/control/md-control.controller.d.ts.map +1 -1
  12. package/out/controller/common/control/md-control.controller.js +21 -2
  13. package/out/controller/common/editor/editor.controller.js +2 -2
  14. package/out/controller/common/view/view.controller.js +2 -2
  15. package/out/controller/control/exp-bar/calendar-exp-bar.controller.d.ts.map +1 -1
  16. package/out/controller/control/exp-bar/calendar-exp-bar.controller.js +1 -0
  17. package/out/controller/control/exp-bar/exp-bar.controller.d.ts +10 -0
  18. package/out/controller/control/exp-bar/exp-bar.controller.d.ts.map +1 -1
  19. package/out/controller/control/exp-bar/exp-bar.controller.js +32 -7
  20. package/out/controller/control/exp-bar/tree-exp-bar.controller.d.ts.map +1 -1
  21. package/out/controller/control/exp-bar/tree-exp-bar.controller.js +1 -0
  22. package/out/controller/control/form/edit-form/edit-form.controller.d.ts.map +1 -1
  23. package/out/controller/control/form/edit-form/edit-form.controller.js +7 -1
  24. package/out/controller/control/form/form-detail/form-druipart/form-druipart.controller.js +2 -2
  25. package/out/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.js +2 -2
  26. package/out/controller/control/pickup-view-panel/pickup-view-panel.controller.js +2 -2
  27. package/out/de-logic/de-logic.d.ts +9 -0
  28. package/out/de-logic/de-logic.d.ts.map +1 -1
  29. package/out/de-logic/de-logic.js +14 -0
  30. package/out/interface/common/i-global-config/i-global-view-config.d.ts +8 -0
  31. package/out/interface/common/i-global-config/i-global-view-config.d.ts.map +1 -1
  32. package/out/interface/controller/controller/control/i-exp-bar-control.controller.d.ts +10 -0
  33. package/out/interface/controller/controller/control/i-exp-bar-control.controller.d.ts.map +1 -1
  34. package/out/interface/provider/i-control.provider.d.ts +15 -0
  35. package/out/interface/provider/i-control.provider.d.ts.map +1 -1
  36. package/out/interface/provider/i-view.provider.d.ts +15 -0
  37. package/out/interface/provider/i-view.provider.d.ts.map +1 -1
  38. package/out/logic-scheduler/executor/app-ui-logic-executor.js +4 -4
  39. package/out/service/dto/method.dto.d.ts.map +1 -1
  40. package/out/service/dto/method.dto.js +4 -3
  41. package/out/service/service/entity/method/method.d.ts.map +1 -1
  42. package/out/service/service/entity/method/method.js +0 -1
  43. package/out/service/vo/control.vo.d.ts.map +1 -1
  44. package/out/service/vo/control.vo.js +9 -12
  45. package/out/service/vo/ui-map-field.d.ts +7 -0
  46. package/out/service/vo/ui-map-field.d.ts.map +1 -1
  47. package/out/service/vo/ui-map-field.js +24 -0
  48. package/out/ui-action/provider/ui-action-provider-base.js +2 -2
  49. package/out/utils/nav-params/calc-nav-params.js +2 -2
  50. package/out/utils/nav-params/nav-params.d.ts +11 -25
  51. package/out/utils/nav-params/nav-params.d.ts.map +1 -1
  52. package/out/utils/nav-params/nav-params.js +79 -84
  53. package/out/utils/open-redirect-view/open-redirect-view.js +2 -2
  54. package/package.json +3 -3
  55. package/src/command/app/app-func/app-func.ts +2 -2
  56. package/src/config/global-config.ts +1 -0
  57. package/src/controller/common/control/control.controller.ts +5 -4
  58. package/src/controller/common/control/md-control.controller.ts +34 -3
  59. package/src/controller/common/editor/editor.controller.ts +2 -2
  60. package/src/controller/common/view/view.controller.ts +2 -2
  61. package/src/controller/control/exp-bar/calendar-exp-bar.controller.ts +1 -0
  62. package/src/controller/control/exp-bar/exp-bar.controller.ts +35 -7
  63. package/src/controller/control/exp-bar/tree-exp-bar.controller.ts +1 -0
  64. package/src/controller/control/form/edit-form/edit-form.controller.ts +11 -1
  65. package/src/controller/control/form/form-detail/form-druipart/form-druipart.controller.ts +3 -3
  66. package/src/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.ts +2 -2
  67. package/src/controller/control/pickup-view-panel/pickup-view-panel.controller.ts +2 -2
  68. package/src/de-logic/de-logic.ts +24 -0
  69. package/src/interface/common/i-global-config/i-global-view-config.ts +9 -0
  70. package/src/interface/controller/controller/control/i-exp-bar-control.controller.ts +8 -0
  71. package/src/interface/provider/i-control.provider.ts +22 -0
  72. package/src/interface/provider/i-view.provider.ts +22 -0
  73. package/src/logic-scheduler/executor/app-ui-logic-executor.ts +4 -4
  74. package/src/service/dto/method.dto.ts +3 -3
  75. package/src/service/service/entity/method/method.ts +0 -1
  76. package/src/service/vo/control.vo.ts +10 -14
  77. package/src/service/vo/ui-map-field.ts +28 -0
  78. package/src/ui-action/provider/ui-action-provider-base.ts +4 -4
  79. package/src/utils/nav-params/calc-nav-params.ts +2 -2
  80. package/src/utils/nav-params/nav-params.ts +86 -91
  81. package/src/utils/open-redirect-view/open-redirect-view.ts +2 -2
@@ -2,6 +2,35 @@ import { INavigateParam } from '@ibiz/model-core';
2
2
  import { isEmpty } from 'lodash-es';
3
3
  import { isNilOrEmpty, notNilEmpty } from 'qx-util';
4
4
 
5
+ /**
6
+ * 把对象格式的导航参数转换成数组格式的导航参数
7
+ * @author lxm
8
+ * @date 2023-07-10 03:33:14
9
+ * @export
10
+ * @param {IData} navParams
11
+ * @return {*} {IPSNavigateParam[]}
12
+ */
13
+ export function convertObjectToNavParams(navParams: IData): INavigateParam[] {
14
+ const result: INavigateParam[] = [];
15
+ const reg = /^%(.+)%$/;
16
+ // eslint-disable-next-line guard-for-in
17
+ for (const key in navParams) {
18
+ let rawValue = true;
19
+ let value = navParams[key];
20
+ if (notNilEmpty(navParams[key]) && reg.test(navParams[key])) {
21
+ rawValue = false;
22
+ value = navParams[key].substring(1, navParams[key].length - 1);
23
+ }
24
+ result.push({
25
+ key: key.toLowerCase(),
26
+ rawValue,
27
+ value,
28
+ } as INavigateParam);
29
+ }
30
+
31
+ return result;
32
+ }
33
+
5
34
  /**
6
35
  * 转换导航数据(如导航上下文,导航视图参数)
7
36
  * - 把%xxx%,转换成origins元素里对应叫xxx的值
@@ -12,25 +41,52 @@ import { isNilOrEmpty, notNilEmpty } from 'qx-util';
12
41
  * @author lxm
13
42
  * @date 2022-08-22 11:08:18
14
43
  * @export
15
- * @param {INavigateParam[]} naviDatas 导航参数
44
+ * @param {INavigateParam[]} navParams 导航参数
16
45
  * @param {...IData[]} origins 转换数据来源集合
17
46
  */
18
47
  export function convertNavData(
19
- naviDatas: INavigateParam[] | IData | undefined | null,
48
+ navParams: INavigateParam[] | IData | undefined | null,
20
49
  ...origins: IData[]
21
50
  ): IData {
22
51
  // 如果导航参数不存在或者为空对象,返回{}
23
- if (!naviDatas || isEmpty(naviDatas)) {
52
+ if (!navParams || isEmpty(navParams)) {
24
53
  return {};
25
54
  }
26
55
 
27
- if (Object.prototype.toString.call(naviDatas) === '[object Array]') {
28
- return convertNavDataByArray(naviDatas as INavigateParam[], ...origins);
29
- }
30
- if (Object.prototype.toString.call(naviDatas) === '[object Object]') {
31
- return convertNavDataByObject(naviDatas as IData, ...origins);
32
- }
33
- return {};
56
+ // 把对象形式的导航参数转换成INavigateParam[]形式
57
+ const navParamsArr: INavigateParam[] = Array.isArray(navParams)
58
+ ? navParams
59
+ : convertObjectToNavParams(navParams as IData);
60
+
61
+ return convertNavDataByArray(navParamsArr, ...origins);
62
+ }
63
+
64
+ /**
65
+ * 从origins每个元素里找到对应属性key的值
66
+ * 如果都找不到抛异常。
67
+ * @author lxm
68
+ * @date 2023-09-13 11:38:43
69
+ * @param {IData[]} origins 来源数据集合
70
+ * @param {string} key 属性标识
71
+ * @return {*} {{ find: boolean; value: unknown }} 返回find是否找到值,value为找到的值,可以是空值
72
+ */
73
+ function getVal(
74
+ origins: IData[],
75
+ key: string,
76
+ ): { find: boolean; value: unknown } {
77
+ // 找到origins里第一个有该属性的的项
78
+ const findOrigin = origins.find(item => {
79
+ if (isNilOrEmpty(item)) {
80
+ return false;
81
+ }
82
+ return (
83
+ // proxy数据判断是否能拿到值
84
+ item[key!] ||
85
+ // 上下文等判断是否有这个属性,如果有且值为空,则赋该空值
86
+ Object.prototype.hasOwnProperty.call(item, key!)
87
+ );
88
+ });
89
+ return { find: !!findOrigin, value: findOrigin?.[key] };
34
90
  }
35
91
 
36
92
  /**
@@ -50,98 +106,37 @@ export function convertNavDataByArray(
50
106
  naviDatas: INavigateParam[],
51
107
  ...origins: IData[]
52
108
  ): IData {
109
+ const regex = /\$\{[^}]*\}/g; // 匹配${xxx}格式字符串
53
110
  const result: IData = {};
54
111
  for (const naviData of naviDatas) {
55
- if (notNilEmpty(naviData.value) && !naviData.rawValue) {
56
- // 找到origins里第一个有该属性的的项
57
- const findOrigin = origins.find(item => {
58
- if (isNilOrEmpty(item)) {
59
- return false;
112
+ if (!naviData.rawValue) {
113
+ const matchArr = naviData.value!.match(regex);
114
+ if (matchArr !== null) {
115
+ // 有${xxx}的找每一个xxx的值,替换原始字符串里的值,最后赋值处理过的字符串
116
+ let valueStr = naviData.value!;
117
+ matchArr.forEach(key => {
118
+ // 没有${xxx}
119
+ const { find, value } = getVal(origins, key.slice(2, -1));
120
+ if (find) {
121
+ valueStr = valueStr.replace(key, `${value}`);
122
+ }
123
+ });
124
+ result[naviData.key!.toLowerCase()] = valueStr;
125
+ } else {
126
+ // 没有${xxx}
127
+ const { find, value } = getVal(origins, naviData.value!);
128
+ if (find) {
129
+ result[naviData.key!.toLowerCase()] = value;
60
130
  }
61
- return (
62
- // proxy数据判断是否能拿到值
63
- item[naviData.value!] ||
64
- // 上下文等判断是否有这个属性,如果有且值为空,则赋该空值
65
- Object.prototype.hasOwnProperty.call(item, naviData.value!)
66
- );
67
- });
68
- if (findOrigin) {
69
- result[naviData.key!.toLowerCase()] = findOrigin[naviData.value!];
70
131
  }
71
132
  } else {
133
+ // 直接值,空值时赋null
72
134
  result[naviData.key!.toLowerCase()] = naviData.value || null;
73
135
  }
74
136
  }
75
137
  return result;
76
138
  }
77
139
 
78
- /**
79
- * 通过对象 转换导航数据(如导航上下文,导航视图参数)
80
- * - 把%xxx%,转换成origins元素里对应叫xxx的值
81
- * - 按顺序查找origins的元素,且只要有xxx的属性就算找到,不管值是否为空。
82
- * - naviData里{a:%xxx%},origins里找不到xxx则返回值里不存在a属性
83
- * - naviData里非%xxx%形式的,都当成直接值原样返回,包括空值。
84
- *
85
- * @author lxm
86
- * @date 2022-08-22 11:08:18
87
- * @export
88
- * @param {IData} naviData
89
- * @param {...IData[]} origins
90
- */
91
- export function convertNavDataByObject(
92
- naviData: IData,
93
- ...origins: IData[]
94
- ): IData {
95
- const result: IData = {};
96
- const reg = /^%(.+)%$/;
97
- for (const key in naviData) {
98
- if (notNilEmpty(naviData[key]) && reg.test(naviData[key])) {
99
- // 获取值的属性名称
100
- const valueKey = naviData[key].substring(1, naviData[key].length - 1);
101
-
102
- // 找到origins里第一个有该属性的的项
103
- const findOrigin = origins.find(item => {
104
- return Object.prototype.hasOwnProperty.call(item, valueKey);
105
- });
106
- if (findOrigin) {
107
- result[key.toLowerCase()] = findOrigin[valueKey];
108
- }
109
- } else {
110
- result[key.toLowerCase()] = naviData[key] || null;
111
- }
112
- }
113
- return result;
114
- }
115
-
116
- /**
117
- * 把对象格式的导航参数转换成数组格式的导航参数
118
- * @author lxm
119
- * @date 2023-07-10 03:33:14
120
- * @export
121
- * @param {IData} naviData
122
- * @return {*} {IPSNavigateParam[]}
123
- */
124
- export function convertObjectToNavParams(naviData: IData): INavigateParam[] {
125
- const result: INavigateParam[] = [];
126
- const reg = /^%(.+)%$/;
127
- // eslint-disable-next-line guard-for-in
128
- for (const key in naviData) {
129
- let rawValue = true;
130
- let value = naviData[key];
131
- if (notNilEmpty(naviData[key]) && reg.test(naviData[key])) {
132
- rawValue = false;
133
- value = naviData[key].substring(1, naviData[key].length - 1);
134
- }
135
- result.push({
136
- key: key.toLowerCase(),
137
- rawValue,
138
- value,
139
- } as INavigateParam);
140
- }
141
-
142
- return result;
143
- }
144
-
145
140
  /**
146
141
  * 根据导航参数把多条数据转换成单条数据,用;分隔
147
142
  * @author lxm
@@ -127,11 +127,11 @@ export async function openDERedirectView(
127
127
  ): Promise<IModalData> {
128
128
  // 计算重定向视图上下文参数转换
129
129
  const navContext = appView.appViewNavContexts || [];
130
- const navContextData = convertNavData(navContext, context, params);
130
+ const navContextData = convertNavData(navContext, params, context);
131
131
  context = Object.assign(context.clone(), navContextData);
132
132
  // 计算重定向视图视图参数转换
133
133
  const navParams = appView.appViewNavParams || [];
134
- const navParamsData = convertNavData(navParams, context, params);
134
+ const navParamsData = convertNavData(navParams, params, context);
135
135
  Object.assign(params, navParamsData);
136
136
 
137
137
  // 重定向视图对应应用实体