owl-cli 6.11.0 → 6.13.0
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.
|
@@ -174,8 +174,8 @@ function filterFields(data,permissions,orgId){
|
|
|
174
174
|
ef_field_permissions = field_permissions.sub_org;
|
|
175
175
|
}
|
|
176
176
|
|
|
177
|
-
|
|
178
|
-
data
|
|
177
|
+
var invisibleFields = [];
|
|
178
|
+
data['invisibleFields'] = invisibleFields;
|
|
179
179
|
|
|
180
180
|
var valid_fields = ['_orgId','_orgIds',"_v", "del"];
|
|
181
181
|
var curSectionKey = '';
|
|
@@ -188,6 +188,7 @@ function filterFields(data,permissions,orgId){
|
|
|
188
188
|
if((ef_section_permissions[k] && ef_section_permissions[k].read === 'denied') ||
|
|
189
189
|
((!ef_section_permissions[k] || !ef_section_permissions[k].read) && (ef_section_permissions["*"] && ef_section_permissions["*"].read === 'denied'))){
|
|
190
190
|
delete data[k];
|
|
191
|
+
invisibleFields.push(k);
|
|
191
192
|
}
|
|
192
193
|
var section = data[k];
|
|
193
194
|
if(Array.isArray(section)){
|
|
@@ -197,7 +198,8 @@ function filterFields(data,permissions,orgId){
|
|
|
197
198
|
var rk = k+ "." + fk;
|
|
198
199
|
if((ef_field_permissions[rk] && ef_field_permissions[rk].read === 'denied') ||
|
|
199
200
|
((!ef_field_permissions[rk] || !ef_field_permissions[rk].read) && (ef_field_permissions[k+".*"] && ef_field_permissions[k+".*"].read === 'denied'))){
|
|
200
|
-
delete r[
|
|
201
|
+
delete r[fk];
|
|
202
|
+
invisibleFields.push(rk);
|
|
201
203
|
}
|
|
202
204
|
}
|
|
203
205
|
|
|
@@ -207,6 +209,7 @@ function filterFields(data,permissions,orgId){
|
|
|
207
209
|
else {
|
|
208
210
|
if((ef_field_permissions[k] && ef_field_permissions[k].read === 'denied') || ((!ef_field_permissions[k] || !ef_field_permissions[k].read) && ef_field_permissions["*"].read === 'denied')){
|
|
209
211
|
delete data[k];
|
|
212
|
+
invisibleFields.push(k);
|
|
210
213
|
}
|
|
211
214
|
}
|
|
212
215
|
}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
function isScalar(o){
|
|
2
|
+
if(o==null){
|
|
3
|
+
return true;
|
|
4
|
+
}
|
|
5
|
+
if(typeof o==='object'){
|
|
6
|
+
return false;
|
|
7
|
+
}
|
|
8
|
+
return true;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
function isEqual(r1,r2){
|
|
12
|
+
var igoredKeys = ['_type','_matched'];
|
|
13
|
+
if(r1==null && r2==null){
|
|
14
|
+
return true;
|
|
15
|
+
}
|
|
16
|
+
if(r1==null || r2==null){
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
//now assert a1!=null && r2!=null
|
|
20
|
+
var ks1 = r1.keys();
|
|
21
|
+
var ks2 = r2.keys();
|
|
22
|
+
if(ks1.length!==ks2.length){
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
for(var i=0; i<ks1.length; i++){
|
|
26
|
+
var k = ks1[i];
|
|
27
|
+
if(r1[k]!==r2[k]){
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return true;
|
|
32
|
+
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function diffArray(a1, a2,parentKey){
|
|
36
|
+
//a1是旧的,a2是新的
|
|
37
|
+
|
|
38
|
+
var result = [];
|
|
39
|
+
if(!a1){
|
|
40
|
+
a1 = [];
|
|
41
|
+
}
|
|
42
|
+
if(!a2){
|
|
43
|
+
a2 = [];
|
|
44
|
+
}
|
|
45
|
+
for(var i=0; i<a1.length; i++){
|
|
46
|
+
var r1 = a1[i];
|
|
47
|
+
var found = false;
|
|
48
|
+
for(var j=0; j<a2.length; j++){
|
|
49
|
+
var r2 = a2[j];
|
|
50
|
+
if(isEqual(r1,r2)){
|
|
51
|
+
found = true;
|
|
52
|
+
r2._matched = true;
|
|
53
|
+
break;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
if(!found){
|
|
57
|
+
//r1不存在于a2中,说明r1被删除了
|
|
58
|
+
r1._type='deleted'
|
|
59
|
+
result.push(r1)
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
for(var i=0; i<a2.length; i++){
|
|
63
|
+
r2 = a2[i];
|
|
64
|
+
if(!r2._matched){
|
|
65
|
+
r2._type = 'added';
|
|
66
|
+
result.push(r2);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
}
|
|
70
|
+
return result;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
function diff(obj1, obj2,parentKey){
|
|
74
|
+
var result = []
|
|
75
|
+
var keys1 = obj1.keys();
|
|
76
|
+
var keys2 = obj2.keys();
|
|
77
|
+
key1s.sort();
|
|
78
|
+
key2s.sort();
|
|
79
|
+
|
|
80
|
+
//找到减少的
|
|
81
|
+
和发生了变化的
|
|
82
|
+
for(var i=0; i<keys1.length; i++){
|
|
83
|
+
var k1 = keys1[i];
|
|
84
|
+
var v1 = obj1[k1];
|
|
85
|
+
var v2 = obj2[k1];
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
//如果v1,v2 是scalar,则直接比较
|
|
89
|
+
if(isScalar(v1)){
|
|
90
|
+
if(v1!==v2 && v2!=null && v1!==null){
|
|
91
|
+
result.push({
|
|
92
|
+
type:'changed',
|
|
93
|
+
fieldKey : k1,
|
|
94
|
+
parentKey: parentKey,
|
|
95
|
+
oldv : v1,
|
|
96
|
+
newv : v2
|
|
97
|
+
})
|
|
98
|
+
}
|
|
99
|
+
else{
|
|
100
|
+
if(v1!==v2 && v1===null){
|
|
101
|
+
result.push({
|
|
102
|
+
type:'added',
|
|
103
|
+
fieldKey : k1,
|
|
104
|
+
parentKey: parentKey,
|
|
105
|
+
oldv : v1,
|
|
106
|
+
newv : v2
|
|
107
|
+
})
|
|
108
|
+
}
|
|
109
|
+
else if(v1!==null && v2===null){
|
|
110
|
+
result.push({
|
|
111
|
+
type:'deleted',
|
|
112
|
+
fieldKey : k1,
|
|
113
|
+
parentKey: parentKey,
|
|
114
|
+
oldv : v1,
|
|
115
|
+
newv : v2
|
|
116
|
+
})
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
else{
|
|
121
|
+
if(Array.isArray(v1)){
|
|
122
|
+
var ret = diffArray(v1,v2,parentKey + "." + k1);
|
|
123
|
+
if(ret && ret.length>0){
|
|
124
|
+
result.push({
|
|
125
|
+
type:'changed',
|
|
126
|
+
fieldKey : k1,
|
|
127
|
+
fieldType:'array',
|
|
128
|
+
parentKey: parentKey,
|
|
129
|
+
diff : ret
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
else{
|
|
134
|
+
var ret1 = diff(v1,v2,parentKey + "." + k1);
|
|
135
|
+
result = [].concat(result,ret1);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
for(var i=0; i<keys2.length; i++){
|
|
142
|
+
var k2 = keys2[i];
|
|
143
|
+
if(keys1.indexOf(k2)>-1){
|
|
144
|
+
//在keys1中存在,那么这个k2已经在上一步处理过了
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
var v2 = obj2[k2];
|
|
148
|
+
if(isScalar(v2)){
|
|
149
|
+
result.push({
|
|
150
|
+
type:'added',
|
|
151
|
+
fieldKey : k2,
|
|
152
|
+
parentKey: parentKey,
|
|
153
|
+
oldv : v1,
|
|
154
|
+
newv : v2
|
|
155
|
+
})
|
|
156
|
+
}
|
|
157
|
+
else{
|
|
158
|
+
if(Array.isArray(v2)){
|
|
159
|
+
result.push({
|
|
160
|
+
type:'added',
|
|
161
|
+
fieldKey : k2,
|
|
162
|
+
fieldType:'array',
|
|
163
|
+
parentKey: parentKey,
|
|
164
|
+
diff : v2
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
else{
|
|
168
|
+
for(var kv in v2){
|
|
169
|
+
result.push({
|
|
170
|
+
type:'added',
|
|
171
|
+
fieldKey : kv,
|
|
172
|
+
parentKey: parentKey+"." + k2,
|
|
173
|
+
oldv:null,
|
|
174
|
+
newv:v2[kv]
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
}
|
|
182
|
+
return result;
|
|
183
|
+
}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
//#import session.js
|
|
7
7
|
//#import $@projectCode:services/modelService.jsx
|
|
8
8
|
//#import @handlers/include/checklogin.jsx
|
|
9
|
+
//#import @handlers/include/diff.jsx
|
|
9
10
|
(function(){
|
|
10
11
|
|
|
11
12
|
var env = checklogin();
|
|
@@ -55,9 +56,12 @@
|
|
|
55
56
|
var newdata = @projectCodeService.update( modelObject,env);
|
|
56
57
|
}
|
|
57
58
|
|
|
59
|
+
var diffResult = diff(oldObj,modelObject);
|
|
60
|
+
|
|
58
61
|
var ret = {
|
|
59
62
|
state: 'ok',
|
|
60
|
-
object: newdata
|
|
63
|
+
object: newdata,
|
|
64
|
+
diffResult:diffResult
|
|
61
65
|
};
|
|
62
66
|
out.print( JSON.stringify( ret ) );
|
|
63
67
|
} catch ( e ) {
|