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
- data.field_permissions = ef_field_permissions;
178
- data.section_permissions = ef_section_permissions;
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[rk];
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 ) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "owl-cli",
3
- "version": "6.11.0",
3
+ "version": "6.13.0",
4
4
  "main": "index.js",
5
5
  "preferGlobal": true,
6
6
  "bin": {