@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.
- package/dist/index.esm.js +184 -109
- package/dist/index.system.min.js +1 -1
- package/dist/index.system.min.js.map +1 -1
- package/out/command/app/app-func/app-func.js +2 -2
- package/out/config/global-config.d.ts.map +1 -1
- package/out/config/global-config.js +1 -0
- package/out/controller/common/control/control.controller.d.ts +4 -4
- package/out/controller/common/control/control.controller.d.ts.map +1 -1
- package/out/controller/common/control/control.controller.js +3 -2
- package/out/controller/common/control/md-control.controller.d.ts +20 -1
- package/out/controller/common/control/md-control.controller.d.ts.map +1 -1
- package/out/controller/common/control/md-control.controller.js +21 -2
- package/out/controller/common/editor/editor.controller.js +2 -2
- package/out/controller/common/view/view.controller.js +2 -2
- package/out/controller/control/exp-bar/calendar-exp-bar.controller.d.ts.map +1 -1
- package/out/controller/control/exp-bar/calendar-exp-bar.controller.js +1 -0
- package/out/controller/control/exp-bar/exp-bar.controller.d.ts +10 -0
- package/out/controller/control/exp-bar/exp-bar.controller.d.ts.map +1 -1
- package/out/controller/control/exp-bar/exp-bar.controller.js +32 -7
- package/out/controller/control/exp-bar/tree-exp-bar.controller.d.ts.map +1 -1
- package/out/controller/control/exp-bar/tree-exp-bar.controller.js +1 -0
- package/out/controller/control/form/edit-form/edit-form.controller.d.ts.map +1 -1
- package/out/controller/control/form/edit-form/edit-form.controller.js +7 -1
- package/out/controller/control/form/form-detail/form-druipart/form-druipart.controller.js +2 -2
- package/out/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.js +2 -2
- package/out/controller/control/pickup-view-panel/pickup-view-panel.controller.js +2 -2
- package/out/de-logic/de-logic.d.ts +9 -0
- package/out/de-logic/de-logic.d.ts.map +1 -1
- package/out/de-logic/de-logic.js +14 -0
- package/out/interface/common/i-global-config/i-global-view-config.d.ts +8 -0
- package/out/interface/common/i-global-config/i-global-view-config.d.ts.map +1 -1
- package/out/interface/controller/controller/control/i-exp-bar-control.controller.d.ts +10 -0
- package/out/interface/controller/controller/control/i-exp-bar-control.controller.d.ts.map +1 -1
- package/out/interface/provider/i-control.provider.d.ts +15 -0
- package/out/interface/provider/i-control.provider.d.ts.map +1 -1
- package/out/interface/provider/i-view.provider.d.ts +15 -0
- package/out/interface/provider/i-view.provider.d.ts.map +1 -1
- package/out/logic-scheduler/executor/app-ui-logic-executor.js +4 -4
- package/out/service/dto/method.dto.d.ts.map +1 -1
- package/out/service/dto/method.dto.js +4 -3
- package/out/service/service/entity/method/method.d.ts.map +1 -1
- package/out/service/service/entity/method/method.js +0 -1
- package/out/service/vo/control.vo.d.ts.map +1 -1
- package/out/service/vo/control.vo.js +9 -12
- package/out/service/vo/ui-map-field.d.ts +7 -0
- package/out/service/vo/ui-map-field.d.ts.map +1 -1
- package/out/service/vo/ui-map-field.js +24 -0
- package/out/ui-action/provider/ui-action-provider-base.js +2 -2
- package/out/utils/nav-params/calc-nav-params.js +2 -2
- package/out/utils/nav-params/nav-params.d.ts +11 -25
- package/out/utils/nav-params/nav-params.d.ts.map +1 -1
- package/out/utils/nav-params/nav-params.js +79 -84
- package/out/utils/open-redirect-view/open-redirect-view.js +2 -2
- package/package.json +3 -3
- package/src/command/app/app-func/app-func.ts +2 -2
- package/src/config/global-config.ts +1 -0
- package/src/controller/common/control/control.controller.ts +5 -4
- package/src/controller/common/control/md-control.controller.ts +34 -3
- package/src/controller/common/editor/editor.controller.ts +2 -2
- package/src/controller/common/view/view.controller.ts +2 -2
- package/src/controller/control/exp-bar/calendar-exp-bar.controller.ts +1 -0
- package/src/controller/control/exp-bar/exp-bar.controller.ts +35 -7
- package/src/controller/control/exp-bar/tree-exp-bar.controller.ts +1 -0
- package/src/controller/control/form/edit-form/edit-form.controller.ts +11 -1
- package/src/controller/control/form/form-detail/form-druipart/form-druipart.controller.ts +3 -3
- package/src/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.ts +2 -2
- package/src/controller/control/pickup-view-panel/pickup-view-panel.controller.ts +2 -2
- package/src/de-logic/de-logic.ts +24 -0
- package/src/interface/common/i-global-config/i-global-view-config.ts +9 -0
- package/src/interface/controller/controller/control/i-exp-bar-control.controller.ts +8 -0
- package/src/interface/provider/i-control.provider.ts +22 -0
- package/src/interface/provider/i-view.provider.ts +22 -0
- package/src/logic-scheduler/executor/app-ui-logic-executor.ts +4 -4
- package/src/service/dto/method.dto.ts +3 -3
- package/src/service/service/entity/method/method.ts +0 -1
- package/src/service/vo/control.vo.ts +10 -14
- package/src/service/vo/ui-map-field.ts +28 -0
- package/src/ui-action/provider/ui-action-provider-base.ts +4 -4
- package/src/utils/nav-params/calc-nav-params.ts +2 -2
- package/src/utils/nav-params/nav-params.ts +86 -91
- 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[]}
|
|
44
|
+
* @param {INavigateParam[]} navParams 导航参数
|
|
16
45
|
* @param {...IData[]} origins 转换数据来源集合
|
|
17
46
|
*/
|
|
18
47
|
export function convertNavData(
|
|
19
|
-
|
|
48
|
+
navParams: INavigateParam[] | IData | undefined | null,
|
|
20
49
|
...origins: IData[]
|
|
21
50
|
): IData {
|
|
22
51
|
// 如果导航参数不存在或者为空对象,返回{}
|
|
23
|
-
if (!
|
|
52
|
+
if (!navParams || isEmpty(navParams)) {
|
|
24
53
|
return {};
|
|
25
54
|
}
|
|
26
55
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
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 (
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
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,
|
|
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,
|
|
134
|
+
const navParamsData = convertNavData(navParams, params, context);
|
|
135
135
|
Object.assign(params, navParamsData);
|
|
136
136
|
|
|
137
137
|
// 重定向视图对应应用实体
|