@byteluck-fe/model-driven-upgrade 2.21.0-beta.8 → 2.22.0-beta.1

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.
@@ -26,6 +26,7 @@ import { dataCleaner as dataCleanerV3_5toV3_6 } from './v3_5';
26
26
  import { dataCleaner as dataCleanerV3_6toV3_7 } from './v3_6';
27
27
  import { dataCleaner as dataCleanerV3_7toV3_8 } from './v3_7';
28
28
  import { dataCleaner as dataCleanerV3_7toV3_9 } from './v3_8';
29
+ import { dataCleaner as dataCleanerV3_9toV3_10 } from './v3_10';
29
30
  // TODO 切记复制粘贴的时候改一下from后边的路径,不然会出事儿
30
31
  // TODO 注意从2.5版本开始,没有进行驼峰转下划线了,写的时候要注意
31
32
  export default {
@@ -51,5 +52,6 @@ export default {
51
52
  'v3.6': dataCleanerV3_6toV3_7,
52
53
  'v3.7': dataCleanerV3_7toV3_8,
53
54
  'v3.8': dataCleanerV3_7toV3_9,
54
- 'v3.10': function() {}
55
+ 'v3.10': dataCleanerV3_9toV3_10,
56
+ 'v3.11': function() {}
55
57
  };
@@ -0,0 +1,71 @@
1
+ var dataCleaner = function(schemaItems, payload) {
2
+ var isArray = Array.isArray(schemaItems);
3
+ var schemaArray = isArray ? schemaItems : [
4
+ schemaItems
5
+ ];
6
+ var new_schema = conversionEventListener(schemaArray, payload);
7
+ return isArray ? new_schema : new_schema[0];
8
+ };
9
+ function conversionEventListener(schemaArray, payload) {
10
+ var relationControlIds = getListenerOpenPageControlIdOfCurrent(payload);
11
+ if (relationControlIds.length > 0) {
12
+ removePermissionControls(relationControlIds, payload);
13
+ removeSchemas(relationControlIds, schemaArray);
14
+ }
15
+ return schemaArray;
16
+ }
17
+ function removeSchemas(relationControlIds, schemaArray) {
18
+ if (schemaArray) {
19
+ var count = schemaArray.length;
20
+ for(var i = count - 1; i >= 0; i--){
21
+ var schema = schemaArray[i];
22
+ var controlId = schema.id;
23
+ if (relationControlIds.indexOf(controlId) > -1) {
24
+ schemaArray.splice(i, 1);
25
+ } else {
26
+ removeSchemas(relationControlIds, schema.children);
27
+ }
28
+ }
29
+ }
30
+ }
31
+ function removePermissionControls(relationControlIds, payload) {
32
+ var permissionControls = (payload === null || payload === void 0 ? void 0 : payload.permission_controls) || [];
33
+ for(var i = permissionControls.length - 1; i >= 0; i--){
34
+ var controlId = permissionControls[i].control_id;
35
+ if (relationControlIds.indexOf(controlId) > -1) {
36
+ permissionControls.splice(i, 1);
37
+ }
38
+ }
39
+ }
40
+ function getListenerOpenPageControlIdOfCurrent(payload) {
41
+ var relationControlIds = [];
42
+ var listeners = payload === null || payload === void 0 ? void 0 : payload.listeners;
43
+ if (listeners) {
44
+ Object.keys(listeners).forEach(function(key) {
45
+ listeners[key].forEach(function(listener) {
46
+ if (!listener.cases) {
47
+ return;
48
+ }
49
+ listener.cases.forEach(function(caseItem) {
50
+ if (!caseItem.handlers) {
51
+ return;
52
+ }
53
+ caseItem.handlers.forEach(function(handler) {
54
+ if (!handler) {
55
+ return;
56
+ }
57
+ if (handler.method === 'openPage') {
58
+ var _handler_params;
59
+ var relationControlId = (_handler_params = handler.params) === null || _handler_params === void 0 ? void 0 : _handler_params.relation_control_id;
60
+ if (relationControlId) {
61
+ relationControlIds.push(relationControlId);
62
+ }
63
+ }
64
+ });
65
+ });
66
+ });
67
+ });
68
+ }
69
+ return relationControlIds;
70
+ }
71
+ export { dataCleaner };
@@ -27,8 +27,6 @@ function conversion(schema, payload) {
27
27
  }
28
28
  // 行背景色格式转换成单元格背景色格式
29
29
  function conversionRowStyle(schema) {
30
- // console.log('------')
31
- // console.log('schema=',schema[0])
32
30
  if (schema[0].type === CONTROL_TYPE.LIST_VIEW) {
33
31
  var props = schema[0].props;
34
32
  var _props_row_style_type, _props_row_style_bg_color;
@@ -37,27 +35,36 @@ function conversionRowStyle(schema) {
37
35
  "interval": {
38
36
  "color": (_props_row_style_bg_color = props.row_style_bg_color) !== null && _props_row_style_bg_color !== void 0 ? _props_row_style_bg_color : ''
39
37
  },
40
- "rules": [],
41
- "rules_script": []
38
+ "rules": []
42
39
  };
43
40
  if (props.row_style_rules) {
44
- props.row_style_rules.forEach(function(item) {
41
+ props.row_style_rules.forEach(function(rule) {
42
+ var id = rule.id;
45
43
  var setting = {
46
- "color": item.color,
44
+ "color": rule.color,
47
45
  "type": "background",
48
46
  "scope": "row",
49
- "fieldCodes": []
47
+ "fieldCodes": [
48
+ "_row_"
49
+ ]
50
50
  };
51
- item.settings = [
51
+ var script;
52
+ if (props.row_style_rules_script) {
53
+ var scriptItem = props.row_style_rules_script.find(function(scriptItem) {
54
+ return scriptItem.id === id;
55
+ });
56
+ if (scriptItem) {
57
+ script = parseScript(rule.filters, scriptItem.script);
58
+ }
59
+ }
60
+ rule.settings = [
52
61
  setting
53
62
  ];
54
- delete item.color;
63
+ rule.script = script;
64
+ delete rule.color;
55
65
  });
56
66
  rowStyle.rules = props.row_style_rules;
57
67
  }
58
- if (props.row_style_rules_script) {
59
- rowStyle.rules_script = props.row_style_rules_script;
60
- }
61
68
  props.row_style = rowStyle;
62
69
  delete props.row_style_type;
63
70
  delete props.row_style_bg_color;
@@ -65,6 +72,95 @@ function conversionRowStyle(schema) {
65
72
  delete props.row_style_rules_script;
66
73
  }
67
74
  }
75
+ function getRuleLeftValuesOfNeedSpecialMatch(filters, leftValues) {
76
+ if (!leftValues) {
77
+ leftValues = {};
78
+ }
79
+ filters.forEach(function(filter) {
80
+ if (filter.children) {
81
+ getRuleLeftValuesOfNeedSpecialMatch(filter.children, leftValues);
82
+ } else {
83
+ var left = filter.left_variable_bo;
84
+ switch(left.type){
85
+ case 'people':
86
+ case 'department':
87
+ case 'array':
88
+ case 'timestamp':
89
+ var field = left.value;
90
+ leftValues[field] = left;
91
+ break;
92
+ }
93
+ }
94
+ });
95
+ return leftValues;
96
+ }
97
+ function getScriptList(script) {
98
+ script = script.replace(/\(|\)/g, '').replace(/(\|\|)|(&&)/g, '__split__');
99
+ var list = script.split('__split__').map(function(str) {
100
+ return str.replace(/^\s+|\s+$/gm, '');
101
+ });
102
+ return list;
103
+ }
104
+ function getScriptOperateAndValue(script) {
105
+ var operate = '';
106
+ var value = '';
107
+ if (script[0] === '!') {
108
+ operate = 'is_empty';
109
+ } else {
110
+ var match = script.match(/(===|!=|>|>=|<|<=)/);
111
+ if (match) {
112
+ var oldOperate = match[0];
113
+ switch(oldOperate){
114
+ case '===':
115
+ operate = 'op_equal';
116
+ break;
117
+ case '!=':
118
+ operate = 'op_no_equal';
119
+ break;
120
+ case '>':
121
+ operate = 'op_greater';
122
+ break;
123
+ case '>=':
124
+ operate = 'op_greater_equal';
125
+ break;
126
+ case '<':
127
+ operate = 'op_less';
128
+ break;
129
+ case '<=':
130
+ operate = 'op_less_equal';
131
+ break;
132
+ default:
133
+ operate = 'is_not_empty';
134
+ break;
135
+ }
136
+ value = script.split(oldOperate)[1] || '';
137
+ } else {
138
+ operate = 'is_not_empty';
139
+ }
140
+ }
141
+ return {
142
+ operate: operate,
143
+ value: value
144
+ };
145
+ }
146
+ function parseScript(filters, script) {
147
+ var leftValues = getRuleLeftValuesOfNeedSpecialMatch(filters);
148
+ var scriptList = getScriptList(script);
149
+ scriptList.forEach(function(scriptItem) {
150
+ Object.keys(leftValues).forEach(function(field) {
151
+ var index = scriptItem.indexOf("params.data.data_value_map['".concat(field, "']"));
152
+ if (index > -1) {
153
+ var left = leftValues[field];
154
+ var type = left.type;
155
+ var _getScriptOperateAndValue = getScriptOperateAndValue(scriptItem), operate = _getScriptOperateAndValue.operate, value = _getScriptOperateAndValue.value;
156
+ var newScriptItem = "SpecialMatch(data, sys, '".concat(field, "', '").concat(type, "', '").concat(operate, "', ").concat(value ? value : "''", ")");
157
+ script = script.replace(scriptItem, newScriptItem);
158
+ }
159
+ });
160
+ });
161
+ script = script.replace(/params.data.data_value_map/g, 'data');
162
+ return script;
163
+ }
68
164
  function conversionFootersToHeaders(schema) {
69
165
  if (schema[0].type === CONTROL_TYPE.LIST_VIEW) {
70
166
  var tableSchema = schema[0].children.find(function(item) {