owl-cli 7.43.0 → 7.45.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.
@@ -10,18 +10,24 @@
10
10
  //#import @handlers/include/diff.jsx
11
11
  //#import $owl_task_info:services/modelService.jsx
12
12
 
13
- function trim(s){
14
- if(s){
13
+ function trim(s) {
14
+ if (s) {
15
15
  return s.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
16
16
  }
17
17
  return ""
18
18
  }
19
19
 
20
- var @projectCodeService = (function (pigeon) {
20
+ var @
21
+ projectCodeService = (function (pigeon) {
21
22
  var objPrefix = '@projectCode'
22
23
  var listPrefix = '@projectCode'
23
24
 
24
25
  var spec = @spec
26
+ var meta = spec['#meta'];
27
+ var pigeonName = meta["pigeon"];
28
+ if (pigeonName && pigeon.setPigeon) {
29
+ pigeon.setPigeon(pigeonName);
30
+ }
25
31
 
26
32
  var formSpecs = @formSpecs
27
33
 
@@ -37,24 +43,23 @@ var @projectCodeService = (function (pigeon) {
37
43
  getId: function (data) {
38
44
  //默认实现是直接返回一个递增的Id
39
45
  //其他实现方式包括从data中获取数据构造出一个Id
40
- if(data.id){
46
+ if (data.id) {
41
47
  return data.id;
42
48
  }
43
49
  //@idOrig
44
50
  if (idFunc) {
45
51
  return objPrefix + '_' + idFunc(data)
46
- }
47
- else {
52
+ } else {
48
53
  var seq = pigeon.getId(objPrefix)
49
54
  return objPrefix + '_' + seq
50
55
  }
51
56
  },
52
57
 
53
- getSpec:function(){
58
+ getSpec: function () {
54
59
  return spec;
55
60
  },
56
61
 
57
- getFormSpec:function(){
62
+ getFormSpec: function () {
58
63
  return formSpecs;
59
64
  },
60
65
 
@@ -62,16 +67,15 @@ var @projectCodeService = (function (pigeon) {
62
67
  //@lockOrig
63
68
  if (lockFunc) {
64
69
  return lockFunc(data)
65
- }
66
- else {
70
+ } else {
67
71
  return data['id']
68
72
  }
69
73
  },
70
74
 
71
- lock:function(key){
75
+ lock: function (key) {
72
76
  pigeon.lock(key);
73
77
  },
74
- unlock:function(key){
78
+ unlock: function (key) {
75
79
  pigeon.unlock(key);
76
80
  },
77
81
 
@@ -82,7 +86,8 @@ var @projectCodeService = (function (pigeon) {
82
86
  * 适用范围是中小型电商系统的商品分类数,地区管理等
83
87
  *
84
88
  */
85
- getTree(){},
89
+ getTree() {
90
+ },
86
91
 
87
92
  getAllListName: function (data) {
88
93
  return listPrefix + '_all'
@@ -93,29 +98,27 @@ var @projectCodeService = (function (pigeon) {
93
98
  var curData = data
94
99
  for (var i = 0; i < path.length; i++) {
95
100
  var curKey = path[i]
96
- if (typeof(curData) == 'object' && curData != null) {
101
+ if (typeof (curData) == 'object' && curData != null) {
97
102
  curData = curData[curKey]
98
- }
99
- else {
103
+ } else {
100
104
  return null
101
105
  }
102
106
  }
103
107
  return curData
104
108
  },
105
- deleteValue:function(fullkey,data){
109
+ deleteValue: function (fullkey, data) {
106
110
  var path = fullkey.split('.')
107
111
  var curData = data
108
- for (var i = 0; i < path.length-1; i++) {
112
+ for (var i = 0; i < path.length - 1; i++) {
109
113
  var curKey = path[i]
110
- if (typeof(curData) == 'object' && curData != null) {
114
+ if (typeof (curData) == 'object' && curData != null) {
111
115
  curData = curData[curKey]
112
- }
113
- else {
116
+ } else {
114
117
  return null
115
118
  }
116
119
  }
117
- if(curData){
118
- var lastKey = path[path.length-1];
120
+ if (curData) {
121
+ var lastKey = path[path.length - 1];
119
122
  delete curData[lastKey];
120
123
  }
121
124
  },
@@ -148,8 +151,8 @@ var @projectCodeService = (function (pigeon) {
148
151
  }
149
152
  if (v.indexOf('$') == 0) {
150
153
  var fullkey = v.substring(1)
151
- var newValue = f.getValue(fullkey, env);
152
- if(newValue){
154
+ var newValue = f.getValue(fullkey, env);
155
+ if (newValue) {
153
156
  return newValue;
154
157
  }
155
158
  }
@@ -157,11 +160,10 @@ var @projectCodeService = (function (pigeon) {
157
160
  },
158
161
 
159
162
 
160
-
161
- getUniqueObj:function(key,value){
162
- var pigeonKey = objPrefix+ '_' + key + '_' + DigestUtil.md5(value)
163
+ getUniqueObj: function (key, value) {
164
+ var pigeonKey = objPrefix + '_' + key + '_' + DigestUtil.md5(value)
163
165
  var obj = pigeon.getObject(pigeonKey);
164
- if(obj==null){
166
+ if (obj == null) {
165
167
  return null;
166
168
  }
167
169
  var id = obj.id;
@@ -181,7 +183,6 @@ var @projectCodeService = (function (pigeon) {
181
183
  },
182
184
 
183
185
 
184
-
185
186
  saveUniqueValue: function (objId, key, value) {
186
187
  var md5 = DigestUtil.md5(value)
187
188
  var pigeonKey = objPrefix + '_' + key + '_' + md5
@@ -206,19 +207,19 @@ var @projectCodeService = (function (pigeon) {
206
207
  for (var i = 0; i < fields.length; i++) {
207
208
  var field = fields[i]
208
209
  var value = f.getValue(field.key, data)
209
- if(value==null || typeof(value)=='undefined'){
210
+ if (value == null || typeof (value) == 'undefined') {
210
211
  value = field.defaultValue;
211
212
  f.setValue(field.key, value, data)
212
213
  }
213
- if (typeof(value) == 'string' && value.indexOf('$') == 0) {
214
+ if (typeof (value) == 'string' && value.indexOf('$') == 0) {
214
215
  value = f.getEnvValue(value, env)
215
216
  f.setValue(field.key, value, data)
216
217
  }
217
- if(((!value) || typeof(value)=='undefined') && field.autoGen=='true'){
218
- value =$.getUUID()
219
- f.setValue(field.key,value,data);
218
+ if (((!value) || typeof (value) == 'undefined') && field.autoGen == 'true') {
219
+ value = $.getUUID()
220
+ f.setValue(field.key, value, data);
220
221
  }
221
- if ((value==null || typeof(value)=='undefined') && field.required == 'true') {
222
+ if ((value == null || typeof (value) == 'undefined') && field.required == 'true') {
222
223
  return {'state': 'err', msg: field.fieldLabel + '不能为空。', code: 'required'}
223
224
  }
224
225
 
@@ -232,28 +233,28 @@ var @projectCodeService = (function (pigeon) {
232
233
  }
233
234
 
234
235
  var arrFields = flattenedSpecs.details;
235
- for(var j=0; j<arrFields.length; j++){
236
+ for (var j = 0; j < arrFields.length; j++) {
236
237
  var arrFieldInfo = arrFields[j];
237
- var rows = f.getValue(arrFieldInfo.name,data);
238
- if(rows){
239
- for(var k=0; k<rows.length; k++){
238
+ var rows = f.getValue(arrFieldInfo.name, data);
239
+ if (rows) {
240
+ for (var k = 0; k < rows.length; k++) {
240
241
  var row = rows[k];
241
- for(var l=0; l<arrFieldInfo.fields.length; l++){
242
+ for (var l = 0; l < arrFieldInfo.fields.length; l++) {
242
243
  var subField = arrFieldInfo.fields[l];
243
244
  var value = row[subField.origKey];
244
- if(value==null || typeof value=='undefined'){
245
+ if (value == null || typeof value == 'undefined') {
245
246
  value = subField.defaultValue;
246
247
  row[subField.origKey] = value;
247
248
  }
248
- if (typeof(value) == 'string' && value.indexOf('$') == 0) {
249
+ if (typeof (value) == 'string' && value.indexOf('$') == 0) {
249
250
  value = f.getEnvValue(value, env)
250
251
  row[subField.origKey] = value;
251
252
  }
252
- if(((!value) || typeof(value)=='undefined') && subField.autoGen=='true'){
253
+ if (((!value) || typeof (value) == 'undefined') && subField.autoGen == 'true') {
253
254
  value = $.getUUID()
254
255
  row[subField.origKey] = value;
255
256
  }
256
- if ((value==null || typeof(value)=='undefined') && subField.required == 'true') {
257
+ if ((value == null || typeof (value) == 'undefined') && subField.required == 'true') {
257
258
  return {'state': 'err', msg: arrFieldInfo.field.fieldLabel + '.' + subField.fieldLabel + '不能为空。出错的行数为:' + k, code: 'required'}
258
259
  }
259
260
  }
@@ -270,7 +271,7 @@ var @projectCodeService = (function (pigeon) {
270
271
  //对于unique的字段,检查有没有重复
271
272
  if (field.unique === 'true') {
272
273
  var value = f.getValue(field.key, data)
273
- if (!value || (typeof(value) == 'string' && value.indexOf('$') == 0)) {
274
+ if (!value || (typeof (value) == 'string' && value.indexOf('$') == 0)) {
274
275
  value = f.getEnvValue(field.defaultValue, env)
275
276
  if (value) {
276
277
  f.setValue(field.key, value, data)
@@ -280,7 +281,7 @@ var @projectCodeService = (function (pigeon) {
280
281
  throw {'state': 'err', msg: field.fieldLabel + '不能为空。', code: 'required'}
281
282
  }
282
283
 
283
- if(value && typeof(value)=='string'){
284
+ if (value && typeof (value) == 'string') {
284
285
  if (f.isDuplicated(data.id, field.key, value)) {
285
286
  throw {'state': 'err', msg: field.fieldLabel + '不能重复。value=' + value, code: 'duplicated'}
286
287
  }
@@ -300,13 +301,13 @@ var @projectCodeService = (function (pigeon) {
300
301
  //对于unique的字段,检查有没有重复
301
302
  if (field.unique === 'true') {
302
303
  var value = f.getValue(field.key, data)
303
- if (!value || (typeof(value) == 'string' && value.indexOf('$') == 0)) {
304
+ if (!value || (typeof (value) == 'string' && value.indexOf('$') == 0)) {
304
305
  value = f.getEnvValue(field.defaultValue, env)
305
306
  if (value) {
306
307
  f.setValue(field.key, value, data)
307
308
  }
308
309
  }
309
- if(value && typeof(value)=='string'){
310
+ if (value && typeof (value) == 'string') {
310
311
  f.removeUniqueValue(data.id, field.key, value)
311
312
  }
312
313
  }
@@ -339,10 +340,10 @@ var @projectCodeService = (function (pigeon) {
339
340
  }
340
341
  },
341
342
 
342
- getField:function(fullKey){
343
- var matchedField=null;
344
- f.tranverseFields(formSpecs,function(field,ctx){
345
- if(field.key===fullKey){
343
+ getField: function (fullKey) {
344
+ var matchedField = null;
345
+ f.tranverseFields(formSpecs, function (field, ctx) {
346
+ if (field.key === fullKey) {
346
347
  matchedField = field;
347
348
  }
348
349
  });
@@ -352,12 +353,10 @@ var @projectCodeService = (function (pigeon) {
352
353
  formSpec.fields.forEach(function (field) {
353
354
  if (field['_ft'] == 'field') {
354
355
  callback(field, ctx)
355
- }
356
- else if (field['_ft'] == 'subform') {
356
+ } else if (field['_ft'] == 'subform') {
357
357
  var context = {parentField: field}
358
358
  f.tranverseFields(field, callback, context)
359
- }
360
- else if (field['_ft'] == 'array') {
359
+ } else if (field['_ft'] == 'array') {
361
360
  var context = {parentField: field}
362
361
  f.tranverseFields(field, callback, context)
363
362
  }
@@ -370,27 +369,25 @@ var @projectCodeService = (function (pigeon) {
370
369
  }
371
370
  switch (spec.fieldType) {
372
371
  case 'string':
373
- if(typeof value=='number'){
372
+ if (typeof value == 'number') {
374
373
  value = value + '';
375
374
  }
376
375
  return value + ''
377
376
  case 'number':
378
377
  if (isNaN(value)) {
379
378
  return null
380
- }
381
- else {
379
+ } else {
382
380
  value = Number(value)
383
381
  return value
384
382
  }
385
383
  case 'date':
386
- try{
387
- if(isNaN(value)){
384
+ try {
385
+ if (isNaN(value)) {
388
386
  return value;
389
387
  }
390
388
 
391
389
  return new Date(Number(value)).toISOString();
392
- }
393
- catch(e){
390
+ } catch (e) {
394
391
  return null;
395
392
  }
396
393
 
@@ -410,12 +407,12 @@ var @projectCodeService = (function (pigeon) {
410
407
  var obj = JSON.parse(JSON.stringify(data))
411
408
 
412
409
  var newObj = {};
413
- if(indexFields && indexFields.length>0){
414
- for(var i=0; i<indexFields.length; i++){
410
+ if (indexFields && indexFields.length > 0) {
411
+ for (var i = 0; i < indexFields.length; i++) {
415
412
  var key = indexFields[i];
416
- var value = f.getValue(key,obj);
417
- if(value){
418
- f.setValue(key,value,newObj);
413
+ var value = f.getValue(key, obj);
414
+ if (value) {
415
+ f.setValue(key, value, newObj);
419
416
  }
420
417
  }
421
418
  newObj['del'] = obj['del'];
@@ -424,18 +421,17 @@ var @projectCodeService = (function (pigeon) {
424
421
 
425
422
 
426
423
  var fields = formSpecs.fields;
427
- for(var i=0; i<fields.length; i++){
428
- var field= fields[i];
429
- if (field['_ft'] === 'subform' || field['_ft'] === 'array') {
430
- var meta = field.meta;
431
- if(meta.index==='no'){
432
- delete obj[field.key]
433
- }
434
- }
435
- else if (field['_ft'] === 'field') {
436
- if(field.index==='no'){
437
- delete obj[field.key]
438
- }
424
+ for (var i = 0; i < fields.length; i++) {
425
+ var field = fields[i];
426
+ if (field['_ft'] === 'subform' || field['_ft'] === 'array') {
427
+ var meta = field.meta;
428
+ if (meta.index === 'no') {
429
+ delete obj[field.key]
430
+ }
431
+ } else if (field['_ft'] === 'field') {
432
+ if (field.index === 'no') {
433
+ delete obj[field.key]
434
+ }
439
435
 
440
436
  }
441
437
  }
@@ -445,7 +441,7 @@ var @projectCodeService = (function (pigeon) {
445
441
  if (items) {
446
442
  for (var i = 0; i < items.length; i++) {
447
443
  var item = items[i]
448
- if(field.index==='no'){
444
+ if (field.index === 'no') {
449
445
  delete item[field.origKey]
450
446
  continue;
451
447
  }
@@ -454,17 +450,14 @@ var @projectCodeService = (function (pigeon) {
454
450
  item[field.origKey] = value
455
451
  }
456
452
  }
457
- }
458
- else {
459
- if(indexFields && indexFields.length>0){
460
- if(indexFields.indexOf(field.key)==-1){
461
- f.deleteValue(field.key,obj);
453
+ } else {
454
+ if (indexFields && indexFields.length > 0) {
455
+ if (indexFields.indexOf(field.key) == -1) {
456
+ f.deleteValue(field.key, obj);
462
457
  }
463
- }
464
- else if(field.index==='no'){
465
- f.deleteValue(field.key,obj);
466
- }
467
- else{
458
+ } else if (field.index === 'no') {
459
+ f.deleteValue(field.key, obj);
460
+ } else {
468
461
  var value = f.getValue(field.key, obj)
469
462
  value = f.normalizeValue(value, field)
470
463
  f.setValue(field.key, value, obj)
@@ -474,10 +467,10 @@ var @projectCodeService = (function (pigeon) {
474
467
  }, {})
475
468
 
476
469
  //专门处理一下owl_modifyTime和owl_createTime
477
- if(obj.owl_modifyTime){
470
+ if (obj.owl_modifyTime) {
478
471
  obj.owl_modifyTime = new Date(obj.owl_modifyTime).toISOString();
479
472
  }
480
- if(obj.owl_createTime){
473
+ if (obj.owl_createTime) {
481
474
  obj.owl_createTime = new Date(obj.owl_createTime).toISOString();
482
475
  }
483
476
  return obj
@@ -493,7 +486,7 @@ var @projectCodeService = (function (pigeon) {
493
486
  if (data['shopId']) {
494
487
  m.push(data['shopId'])
495
488
  }
496
- if(data['shop_id']){
489
+ if (data['shop_id']) {
497
490
  m.push(data['shop_id'])
498
491
  }
499
492
  data._m = m;
@@ -513,31 +506,29 @@ var @projectCodeService = (function (pigeon) {
513
506
  var r = JSON.parse(s)
514
507
  if (!r.result) {
515
508
  $.log(data.id + ',index error:' + JSON.stringify(s))
516
- }
517
- else {
509
+ } else {
518
510
  // $.log('index ok...')
519
511
  }
520
512
  },
521
513
 
522
- updateParentPath(treeNode){
514
+ updateParentPath(treeNode) {
523
515
  /*工具类,用于更新对应的parentPathIds和pathPathNames*/
524
516
  var parentId = treeNode.parent_id;
525
517
  var parentPathIds = [];
526
518
  var parentPathNames = [];
527
519
  var nSteps = 0;
528
520
  //获得parentId对应的node
529
- while(parentId && parentId!=='0'){
521
+ while (parentId && parentId !== '0') {
530
522
  nSteps++;
531
- if(nSteps>15){
523
+ if (nSteps > 15) {
532
524
  break;
533
525
  }
534
526
  var parentNode = f.get(parentId);
535
- if(parentNode){
527
+ if (parentNode) {
536
528
  parentPathIds.push(parentNode.id);
537
529
  parentPathNames.push(parentNode.name);
538
530
  parentId = parentNode.parent_id;
539
- }
540
- else{
531
+ } else {
541
532
  break;
542
533
  }
543
534
  }
@@ -546,13 +537,13 @@ var @projectCodeService = (function (pigeon) {
546
537
  treeNode.parentPathIds = parentPathIds.reverse();
547
538
  treeNode.fullPathIds = treeNode.parentPathIds.concat([treeNode.id]);
548
539
  treeNode.parentPathNames = parentPathNames.reverse();
549
- if(treeNode.parentPathNames ){
540
+ if (treeNode.parentPathNames) {
550
541
  var sep = "";
551
542
  var meta = spec['#meta'];
552
- if(meta && meta.pathSep){
543
+ if (meta && meta.pathSep) {
553
544
  sep = meta.pathSep;
554
545
  }
555
- treeNode.fullPathName = treeNode.parentPathNames.join(sep)+sep+treeNode.name;
546
+ treeNode.fullPathName = treeNode.parentPathNames.join(sep) + sep + treeNode.name;
556
547
  }
557
548
 
558
549
 
@@ -561,11 +552,11 @@ var @projectCodeService = (function (pigeon) {
561
552
  f.checkData(data);
562
553
  env = env || {}
563
554
  var ret = f.validate(data, env)
564
- if(ret.state!='ok'){
555
+ if (ret.state != 'ok') {
565
556
  throw JSON.stringify(ret);
566
557
  }
567
558
 
568
- if(data.__force !== 'T'){
559
+ if (data.__force !== 'T') {
569
560
  data['owl_createTime'] = new Date().getTime();
570
561
  data['owl_modifyTime'] = new Date().getTime();
571
562
  }
@@ -578,7 +569,7 @@ var @projectCodeService = (function (pigeon) {
578
569
 
579
570
  EventBusService.fire(spec['_t'] + '_add_before', {data: data, env: env})
580
571
  data.id = f.getId(data)
581
- if(meta.isTree){
572
+ if (meta.isTree) {
582
573
  f.updateParentPath(data);
583
574
  }
584
575
  pigeon.lock(f.getLock(data))
@@ -587,26 +578,25 @@ var @projectCodeService = (function (pigeon) {
587
578
  f.addToList(data)
588
579
  f.index(data)
589
580
 
590
- if(meta && meta.enableJDBC){
581
+ if (meta && meta.enableJDBC) {
591
582
  var sqls = insertObject(data);
592
583
  // $.log(sqls.join(";\n"));
593
584
  }
594
585
  // $.log("add,meta.push=" +meta.push + ",id=" + data.id);
595
- if(meta && meta.push){
596
- KafkaUtil.send('owlchange',"add",data.id);
586
+ if (meta && meta.push) {
587
+ KafkaUtil.send('owlchange', "add", data.id);
597
588
  }
598
589
  EventBusService.fire(spec['_t'] + '_add_after', {data: data, env: env})
599
590
  return data
600
- }
601
- finally {
591
+ } finally {
602
592
  pigeon.unlock(f.getLock(data))
603
593
  }
604
594
 
605
595
  },
606
596
 
607
- get: function (id,includeDeleted) {
597
+ get: function (id, includeDeleted) {
608
598
  var meta = spec['#meta'];
609
- if(meta && meta.push) {
599
+ if (meta && meta.push) {
610
600
  var cachedObj = appData.getObservableObject(id);
611
601
  if (cachedObj) {
612
602
  if (cachedObj.del === 'T' && !includeDeleted) {
@@ -615,10 +605,9 @@ var @projectCodeService = (function (pigeon) {
615
605
  return cachedObj;
616
606
  }
617
607
  var obj = pigeon.getObject(id)
618
- if(obj){
619
- appData.setObservableObject(id,obj);
620
- }
621
- else{
608
+ if (obj) {
609
+ appData.setObservableObject(id, obj);
610
+ } else {
622
611
  appData.removeObservableObject(id);
623
612
  }
624
613
 
@@ -626,8 +615,7 @@ var @projectCodeService = (function (pigeon) {
626
615
  return null;
627
616
  }
628
617
  return obj;
629
- }
630
- else{
618
+ } else {
631
619
  var obj = pigeon.getObject(id)
632
620
  if (obj && obj.del === 'T' && !includeDeleted) {
633
621
  return null;
@@ -636,24 +624,22 @@ var @projectCodeService = (function (pigeon) {
636
624
  }
637
625
  },
638
626
 
639
- getEx:function(id,refresh){
640
- if(refresh){
641
- var obj = pigeon.getObject(id);
642
-
643
- if(obj){
644
- appData.setObservableObject(id,obj);
645
- }
646
- else{
647
- appData.removeObservableObject(id);
648
- }
649
- if(obj && obj.del==='T'){
650
- return null;
651
- }
652
- return obj;
653
- }
654
- else{
655
- return f.get(id);
656
- }
627
+ getEx: function (id, refresh) {
628
+ if (refresh) {
629
+ var obj = pigeon.getObject(id);
630
+
631
+ if (obj) {
632
+ appData.setObservableObject(id, obj);
633
+ } else {
634
+ appData.removeObservableObject(id);
635
+ }
636
+ if (obj && obj.del === 'T') {
637
+ return null;
638
+ }
639
+ return obj;
640
+ } else {
641
+ return f.get(id);
642
+ }
657
643
  },
658
644
 
659
645
  saveTempData: function (key, data) {
@@ -673,10 +659,10 @@ var @projectCodeService = (function (pigeon) {
673
659
  var meta = spec['#meta'];
674
660
  // 检查数据是否合法
675
661
  var checkData = meta.checkData;
676
- if(checkData){
677
- if(checkData.maxSize){
662
+ if (checkData) {
663
+ if (checkData.maxSize) {
678
664
  var s = JSON.stringify(data);
679
- if(s.length>checkData.maxSize){
665
+ if (s.length > checkData.maxSize) {
680
666
  throw {code: 'dataTooLarge', msg: '数据太大,超过了' + checkData.maxSize + '字节'}
681
667
  }
682
668
  }
@@ -690,16 +676,16 @@ var @projectCodeService = (function (pigeon) {
690
676
 
691
677
  try {
692
678
  var meta = spec['#meta'];
693
- if(meta.isTree){
679
+ if (meta.isTree) {
694
680
  f.updateParentPath(data);
695
681
  }
696
682
  pigeon.lock(f.getLock(data))
697
- var obj = f.get(data.id,true)
683
+ var obj = f.get(data.id, true)
698
684
  if (!obj) {
699
685
  throw {msg: '对象不存在!id=' + data.id, code: 'notFound'}
700
686
  }
701
687
  if (obj._v != data._v) {
702
- throw {code: 'concurrentupdate', msg: '对象已经修改过,本次修改被拒绝。old._v=' + obj._v + ',new._v=' + data._v+ ", id=" + obj.id}
688
+ throw {code: 'concurrentupdate', msg: '对象已经修改过,本次修改被拒绝。old._v=' + obj._v + ',new._v=' + data._v + ", id=" + obj.id}
703
689
  }
704
690
  var oldObj = JSON.parse(JSON.stringify(obj))
705
691
  //深度合并
@@ -708,9 +694,9 @@ var @projectCodeService = (function (pigeon) {
708
694
  obj['_v'] = Number(obj['_v']) + 1
709
695
  f.validate(obj, env)
710
696
  data._v = obj._v
711
- if(obj.__force!=='T'){
697
+ if (obj.__force !== 'T') {
712
698
  //如果__force为T,则不更新时间,这代表了强制更新,可以用于数据迁移的场景,希望更新时间保留为旧系统时间
713
- obj.owl_modifyTime=new Date().getTime();
699
+ obj.owl_modifyTime = new Date().getTime();
714
700
  }
715
701
 
716
702
  EventBusService.fire(spec['_t'] + '_update_before', {old: oldObj, data: obj, env: env})
@@ -720,37 +706,40 @@ var @projectCodeService = (function (pigeon) {
720
706
  f.saveUniqueFields(data, env)
721
707
  f.index(obj)
722
708
 
723
- if(formSpecs && formSpecs.meta && formSpecs.meta.changeLogEnabled){
724
- var id = oldObj.id;
725
- oldObj.id = id + "vvv" + oldObj._v;
726
- pigeon.saveObject(oldObj.id,oldObj);
727
- oldObj.id = id;
709
+ if (formSpecs && formSpecs.meta && formSpecs.meta.changeLogEnabled) {
710
+ var id = oldObj.id;
711
+ oldObj.id = id + "vvv" + oldObj._v;
712
+ if (formSpecs.meta.logPigeon) {
713
+ pigeon.getPigeon(formSpecs.meta.logPigeon).saveObject(oldObj.id, oldObj);
714
+ } else {
715
+ pigeon.saveObject(oldObj.id, oldObj);
716
+ }
717
+ oldObj.id = id;
728
718
  }
729
-
719
+
730
720
  var meta = spec['#meta'];
731
- if(meta && meta.enableJDBC){
721
+ if (meta && meta.enableJDBC) {
732
722
  var sqls = updateObject(obj);
733
723
  // $.log(sqls.join(";\n"));
734
724
  }
735
- if(meta){
725
+ if (meta) {
736
726
  // $.log("updating meta.push=" + meta.push + ", id=" + obj.id);
737
727
  }
738
728
 
739
- if(meta && meta.push){
729
+ if (meta && meta.push) {
740
730
  // $.log("send owlchange," + obj.id)
741
- KafkaUtil.send('owlchange',"update",obj.id);
731
+ KafkaUtil.send('owlchange', "update", obj.id);
742
732
  }
743
733
  EventBusService.fire(spec['_t'] + '_update_after', {old: oldObj, data: obj, env: env})
744
734
  return data
745
- }
746
- finally {
735
+ } finally {
747
736
  pigeon.unlock(f.getLock(data))
748
737
  }
749
738
  },
750
739
 
751
- del: function (id,userId,ip,ua) {
740
+ del: function (id, userId, ip, ua) {
752
741
  //只做软删除
753
- var data = f.get(id,true)
742
+ var data = f.get(id, true)
754
743
  if (!data) {
755
744
  throw '对象不存在!id=' + id
756
745
  }
@@ -793,17 +782,17 @@ var @projectCodeService = (function (pigeon) {
793
782
  f.removeUniqueFields(data, {})
794
783
  var meta = spec['#meta'];
795
784
 
796
- if(meta && meta.enableJDBC){
785
+ if (meta && meta.enableJDBC) {
797
786
  var sqls = deleteObject(data);
798
787
  // $.log(sqls.join(";\n"));
799
788
  }
800
789
 
801
- if(meta){
790
+ if (meta) {
802
791
  // $.log("del meta.push=" + meta.push + ", id=" + data.id);
803
792
  }
804
793
 
805
- if(meta && meta.push){
806
- KafkaUtil.send('owlchange',"del",data.id);
794
+ if (meta && meta.push) {
795
+ KafkaUtil.send('owlchange', "del", data.id);
807
796
  }
808
797
  EventBusService.fire(spec['_t'] + '_delete_after', {data: data})
809
798
  },
@@ -831,13 +820,13 @@ var @projectCodeService = (function (pigeon) {
831
820
  addExportTask: function (query, env) {
832
821
  var now = new Date().getTime()
833
822
  var taskInfo = {
834
- submitUserId:env.loginId,
823
+ submitUserId: env.loginId,
835
824
  submitTime: now,
836
825
  beginTime: null,
837
826
  processState: 'notstart',
838
- appId:"owl_" + spec['_t'],
839
- params:JSON.stringify(env.params),
840
- taskId:null
827
+ appId: "owl_" + spec['_t'],
828
+ params: JSON.stringify(env.params),
829
+ taskId: null
841
830
  }
842
831
  taskInfo.taskId = '';
843
832
 
@@ -847,7 +836,7 @@ var @projectCodeService = (function (pigeon) {
847
836
  var taskId = JobsService.submitExportTask('@projectCode', 'tasks/export.jsx', {
848
837
  query: query,
849
838
  env: env,
850
- taskInfoId:taskInfo.id
839
+ taskInfoId: taskInfo.id
851
840
  }, now)
852
841
 
853
842
 
@@ -861,7 +850,7 @@ var @projectCodeService = (function (pigeon) {
861
850
  var now = new Date().getTime()
862
851
  var taskInfo = {
863
852
  // loginUser: f.getEnvValue('$loginUser', env),
864
- loginUserId:env.loginUserId,
853
+ loginUserId: env.loginUserId,
865
854
  submitTime: now,
866
855
  startTime: 0,
867
856
  processState: 'processing',
@@ -885,11 +874,11 @@ var @projectCodeService = (function (pigeon) {
885
874
  return taskInfoId
886
875
  },
887
876
 
888
- addZipExportTask : function(env){
877
+ addZipExportTask: function (env) {
889
878
  var now = new Date().getTime()
890
879
  var taskInfo = {
891
880
  // loginUser: f.getEnvValue('$loginUser', env),
892
- loginUserId:env.loginUserId,
881
+ loginUserId: env.loginUserId,
893
882
  submitTime: now,
894
883
  startTime: 0,
895
884
  processState: 'processing',
@@ -912,7 +901,7 @@ var @projectCodeService = (function (pigeon) {
912
901
  },
913
902
 
914
903
  getExportTaskInfo: function (taskInfoId) {
915
- return owl_task_infoService.get(taskInfoId);
904
+ return owl_task_infoService.get(taskInfoId);
916
905
  },
917
906
 
918
907
  updateExportTaskInfo: function (taskInfoId, taskInfo) {
@@ -943,13 +932,13 @@ var @projectCodeService = (function (pigeon) {
943
932
  }
944
933
  },
945
934
 
946
- getAllSize:function(){
935
+ getAllSize: function () {
947
936
  var listName = f.getAllListName();
948
937
  var count = pigeon.getListSize(listName);
949
938
  return count;
950
939
  },
951
940
 
952
- getAllObjects:function(){
941
+ getAllObjects: function () {
953
942
  var result = [];
954
943
  var listName = f.getAllListName()
955
944
  var count = pigeon.getListSize(listName)
@@ -967,71 +956,66 @@ var @projectCodeService = (function (pigeon) {
967
956
  return result;
968
957
  },
969
958
 
970
- getAllObjectsEx:function(from,count){
959
+ getAllObjectsEx: function (from, count) {
971
960
  var listName = f.getAllListName()
972
961
  var allsize = pigeon.getListSize(listName)
973
962
  var pos = from
974
- if(count+pos > allsize){
963
+ if (count + pos > allsize) {
975
964
  count = allsize - pos;
976
965
  }
977
966
  var objs = pigeon.getListObjects(listName, pos, count)
978
967
  return objs;
979
968
  },
980
969
 
981
- createQuery:function(searchArgs){
970
+ createQuery: function (searchArgs) {
982
971
  var filters = [];
983
- for(var k in searchArgs){
972
+ for (var k in searchArgs) {
984
973
  var v = searchArgs[k];
985
- if(typeof v === 'object' && v.type === 'or'){
986
- if(Array.isArray(v.args)){
974
+ if (typeof v === 'object' && v.type === 'or') {
975
+ if (Array.isArray(v.args)) {
987
976
  var shouldClauses = [];
988
- v.args.forEach(function(q){
977
+ v.args.forEach(function (q) {
989
978
  var qFilters = f.createQuery(q);
990
- if(qFilters.length > 0){
979
+ if (qFilters.length > 0) {
991
980
  shouldClauses.push({
992
- "bool":{
993
- filters:qFilters
981
+ "bool": {
982
+ filters: qFilters
994
983
  }
995
984
  })
996
985
  }
997
986
  });
998
987
 
999
- filters.push({bool:{should:shouldClauses}});
1000
- }
1001
- else if(v.args && typeof(v.args)=='object'){
988
+ filters.push({bool: {should: shouldClauses}});
989
+ } else if (v.args && typeof (v.args) == 'object') {
1002
990
  var shouldClauses = [];
1003
991
  var qFilters = f.createQuery(v.args);
1004
- shouldClauses.push({bool:{filters:qFilters}});
1005
- filters.push({bool:{should:shouldClauses}});
992
+ shouldClauses.push({bool: {filters: qFilters}});
993
+ filters.push({bool: {should: shouldClauses}});
1006
994
  }
1007
995
 
1008
- }
1009
- else if(typeof(v)=='object' && Array.isArray(v)){
1010
- var range={}
996
+ } else if (typeof (v) == 'object' && Array.isArray(v)) {
997
+ var range = {}
1011
998
  range[k] = {
1012
- 'gte':v[0],
1013
- 'lte':v[1]
999
+ 'gte': v[0],
1000
+ 'lte': v[1]
1014
1001
  }
1015
- filters.push({range:range});
1016
- }
1017
- else if(typeof(v)=='object' && v.type==='terms'){
1002
+ filters.push({range: range});
1003
+ } else if (typeof (v) == 'object' && v.type === 'terms') {
1018
1004
  var terms = {};
1019
- if(v.values){
1005
+ if (v.values) {
1020
1006
  terms[k + ".keyword"] = v.values;
1021
- filters.push({terms:terms});
1007
+ filters.push({terms: terms});
1022
1008
  }
1023
- }
1024
- else{
1009
+ } else {
1025
1010
  var term = {};
1026
- if(typeof v == 'string' ){
1027
- if(v){
1028
- term[k+".keyword"] = trim('' + v)
1029
- filters.push({term:term})
1011
+ if (typeof v == 'string') {
1012
+ if (v) {
1013
+ term[k + ".keyword"] = trim('' + v)
1014
+ filters.push({term: term})
1030
1015
  }
1031
- }
1032
- else if (typeof v == 'number'){
1016
+ } else if (typeof v == 'number') {
1033
1017
  term[k] = trim('' + v)
1034
- filters.push({term:term})
1018
+ filters.push({term: term})
1035
1019
  }
1036
1020
  }
1037
1021
  }
@@ -1039,7 +1023,7 @@ var @projectCodeService = (function (pigeon) {
1039
1023
  },
1040
1024
 
1041
1025
  // 构建通配查询(将 SQL 风格的 % 转为 ES 的 *)
1042
- buildWildcardQuery:function(k, v){
1026
+ buildWildcardQuery: function (k, v) {
1043
1027
  // v 预期包含 % 作为通配符标记,转换为 ES 的 *
1044
1028
  var value = ('' + v).replace(/%/g, '*');
1045
1029
  var field = k + ".keyword";
@@ -1049,181 +1033,167 @@ var @projectCodeService = (function (pigeon) {
1049
1033
  // 在 ES 7.10+ 支持不区分大小写
1050
1034
  case_insensitive: true
1051
1035
  };
1052
- return { wildcard: wildcard };
1036
+ return {wildcard: wildcard};
1053
1037
  },
1054
1038
 
1055
- buildQuery:function(mfilters,searchArgs,keyword,isRecycleBin,meta_fields){
1056
- if(!meta_fields){
1039
+ buildQuery: function (mfilters, searchArgs, keyword, isRecycleBin, meta_fields) {
1040
+ if (!meta_fields) {
1057
1041
  var meta = spec["#meta"];
1058
- if(meta){
1042
+ if (meta) {
1059
1043
  meta_fields = spec["#meta"]["keyword_fields"];
1060
1044
  }
1061
1045
  }
1062
1046
  delete searchArgs.keyword;
1063
1047
  var filters = [];
1064
1048
  var must_not = [{
1065
- term:{
1066
- "del.keyword":'T'
1049
+ term: {
1050
+ "del.keyword": 'T'
1067
1051
  }
1068
1052
  }];
1069
1053
 
1070
- if(isRecycleBin){
1054
+ if (isRecycleBin) {
1071
1055
  must_not = [];
1072
1056
  filters.push({
1073
- term:{
1074
- "del.keyword":'T'
1057
+ term: {
1058
+ "del.keyword": 'T'
1075
1059
  }
1076
1060
  });
1077
1061
  }
1078
- for(var k in searchArgs){
1062
+ for (var k in searchArgs) {
1079
1063
 
1080
1064
  var v = searchArgs[k];
1081
1065
 
1082
1066
  var isNotClause = false;
1083
- if(k.indexOf("!")===0){
1067
+ if (k.indexOf("!") === 0) {
1084
1068
  isNotClause = true;
1085
1069
  k = k.substring(1);
1086
1070
  }
1087
- if(typeof v === 'object' && v.type === 'or'){
1071
+ if (typeof v === 'object' && v.type === 'or') {
1088
1072
  var shouldClauses = [];
1089
- if(Array.isArray(v.args)){
1090
- v.args.forEach(function(q){
1073
+ if (Array.isArray(v.args)) {
1074
+ v.args.forEach(function (q) {
1091
1075
  var shouldQueries = f.createQuery(q);
1092
- if(shouldQueries.length>0){
1093
- shouldClauses.push({bool:{filter:shouldQueries}});
1076
+ if (shouldQueries.length > 0) {
1077
+ shouldClauses.push({bool: {filter: shouldQueries}});
1094
1078
  }
1095
1079
 
1096
1080
  });
1097
- if(isNotClause){
1098
- must_not.push({bool:{should:shouldClauses}});
1099
- }else{
1100
- filters.push({bool:{should:shouldClauses}});
1081
+ if (isNotClause) {
1082
+ must_not.push({bool: {should: shouldClauses}});
1083
+ } else {
1084
+ filters.push({bool: {should: shouldClauses}});
1101
1085
  }
1102
1086
 
1087
+ } else {
1088
+ //do noting,所以 or 语句不支持 单个对象,必须带一个 args 数组
1103
1089
  }
1104
- else{
1105
- //do noting,所以 or 语句不支持 单个对象,必须带一个 args 数组
1106
- }
1107
- }
1108
- else if(typeof(v)=='object' && Array.isArray(v)){
1109
- var range={}
1110
- if(v.length==2){
1090
+ } else if (typeof (v) == 'object' && Array.isArray(v)) {
1091
+ var range = {}
1092
+ if (v.length == 2) {
1111
1093
  range[k] = {
1112
- 'gte':v[0],
1113
- 'lte':v[1]
1094
+ 'gte': v[0],
1095
+ 'lte': v[1]
1114
1096
  }
1115
- }
1116
- else if(v.length==1){
1097
+ } else if (v.length == 1) {
1117
1098
  range[k] = {
1118
- 'gte':v[0]
1099
+ 'gte': v[0]
1119
1100
  }
1120
- }
1121
- else if(v.length==3){
1101
+ } else if (v.length == 3) {
1122
1102
  range[k] = {
1123
- 'lte':v[0]
1103
+ 'lte': v[0]
1124
1104
  }
1125
- }
1126
- else if(v.length==4){
1105
+ } else if (v.length == 4) {
1127
1106
  range[k] = {
1128
- 'gt':v[0],
1129
- 'lt':v[1]
1107
+ 'gt': v[0],
1108
+ 'lt': v[1]
1130
1109
  }
1131
- }
1132
- else if(v.length==5){
1110
+ } else if (v.length == 5) {
1133
1111
  range[k] = {
1134
1112
  'gt': v[0]
1135
1113
  }
1136
- }
1137
- else if(v.length==6) {
1114
+ } else if (v.length == 6) {
1138
1115
  range[k] = {
1139
1116
  'lt': v[0]
1140
1117
  }
1141
1118
  }
1142
1119
 
1143
- if(isNotClause){
1144
- must_not.push({range:range});
1145
- }else{
1146
- filters.push({range:range});
1120
+ if (isNotClause) {
1121
+ must_not.push({range: range});
1122
+ } else {
1123
+ filters.push({range: range});
1147
1124
  }
1148
- }
1149
- else if(typeof(v)=='object' && v.type==='terms'){
1125
+ } else if (typeof (v) == 'object' && v.type === 'terms') {
1150
1126
  var terms = {};
1151
- if(v.values){
1127
+ if (v.values) {
1152
1128
  terms[k + ".keyword"] = v.values;
1153
- if(isNotClause){
1154
- must_not.push({terms:terms});
1155
- }else{
1156
- filters.push({terms:terms});
1129
+ if (isNotClause) {
1130
+ must_not.push({terms: terms});
1131
+ } else {
1132
+ filters.push({terms: terms});
1157
1133
  }
1158
1134
  }
1159
- }
1160
- else if (typeof(v)==='object' && v.type==='exists'){
1161
- if(isNotClause){
1162
- must_not.push({exists:{field:k}});
1163
- }else{
1164
- filters.push({exists:{field:k}});
1135
+ } else if (typeof (v) === 'object' && v.type === 'exists') {
1136
+ if (isNotClause) {
1137
+ must_not.push({exists: {field: k}});
1138
+ } else {
1139
+ filters.push({exists: {field: k}});
1165
1140
  }
1166
- }
1167
- else{
1141
+ } else {
1168
1142
  var term = {};
1169
- if(typeof v == 'string' ){
1170
- if(v){
1171
- term[k+".keyword"] = trim('' + v)
1172
- if(isNotClause){
1173
- if(v.indexOf('%')>-1){
1143
+ if (typeof v == 'string') {
1144
+ if (v) {
1145
+ term[k + ".keyword"] = trim('' + v)
1146
+ if (isNotClause) {
1147
+ if (v.indexOf('%') > -1) {
1174
1148
  must_not.push(f.buildWildcardQuery(k, v));
1149
+ } else {
1150
+ must_not.push({term: term});
1175
1151
  }
1176
- else{
1177
- must_not.push({term:term});
1178
- }
1179
- }else{
1180
- if(v.indexOf('%')>-1){
1152
+ } else {
1153
+ if (v.indexOf('%') > -1) {
1181
1154
  filters.push(f.buildWildcardQuery(k, v));
1182
- }
1183
- else{
1184
- filters.push({term:term});
1155
+ } else {
1156
+ filters.push({term: term});
1185
1157
  }
1186
1158
  }
1187
1159
 
1188
1160
  }
1189
- }
1190
- else if (typeof v == 'number'){
1161
+ } else if (typeof v == 'number') {
1191
1162
  term[k] = trim('' + v)
1192
- if(isNotClause){
1193
- must_not.push({term:term});
1194
- }else{
1195
- filters.push({term:term});
1163
+ if (isNotClause) {
1164
+ must_not.push({term: term});
1165
+ } else {
1166
+ filters.push({term: term});
1196
1167
  }
1197
1168
  }
1198
1169
  }
1199
1170
  }
1200
- if(mfilters && Array.isArray(mfilters) && mfilters.length>0){
1171
+ if (mfilters && Array.isArray(mfilters) && mfilters.length > 0) {
1201
1172
  filters = filters.concat(mfilters);
1202
1173
  }
1203
1174
 
1204
1175
  //getKeyword query
1205
1176
  var keywordQuery = "";
1206
- if(keyword && trim(keyword).length>0){
1177
+ if (keyword && trim(keyword).length > 0) {
1207
1178
  keywordQuery = "\"" + trim(keyword) + "\""
1208
- }
1209
- else{
1179
+ } else {
1210
1180
  keywordQuery = "*"
1211
1181
  }
1212
1182
  var keyword_fields = null;
1213
- if(meta_fields && Array.isArray(meta_fields) && meta_fields.length>0){
1183
+ if (meta_fields && Array.isArray(meta_fields) && meta_fields.length > 0) {
1214
1184
  keyword_fields = meta_fields;
1215
1185
  }
1216
1186
  var queryStringQuery = {
1217
1187
  "query_string": {
1218
- "query":keywordQuery
1188
+ "query": keywordQuery
1219
1189
  }
1220
1190
  }
1221
1191
 
1222
- if(keyword_fields && keyword_fields.length>0){
1192
+ if (keyword_fields && keyword_fields.length > 0) {
1223
1193
  queryStringQuery = {
1224
1194
  "query_string": {
1225
- "query":keywordQuery,
1226
- "fields":keyword_fields,
1195
+ "query": keywordQuery,
1196
+ "fields": keyword_fields,
1227
1197
  }
1228
1198
  }
1229
1199
  }
@@ -1238,86 +1208,86 @@ var @projectCodeService = (function (pigeon) {
1238
1208
  }
1239
1209
  return query;
1240
1210
  },
1241
- count:function(mfilters,searchArgs,keyword,dataSource,isRecycleBin,meta_fields){
1242
- var query = f.buildQuery(mfilters,searchArgs,keyword,isRecycleBin,meta_fields);
1243
- var elasticSearchUrl = $.getEnv( "elasticSearchUrl" );
1211
+ count: function (mfilters, searchArgs, keyword, dataSource, isRecycleBin, meta_fields) {
1212
+ var query = f.buildQuery(mfilters, searchArgs, keyword, isRecycleBin, meta_fields);
1213
+ var elasticSearchUrl = $.getEnv("elasticSearchUrl");
1244
1214
 
1245
- var headers = { "Content-Type": "application/json;charset=utf-8" };
1215
+ var headers = {"Content-Type": "application/json;charset=utf-8"};
1246
1216
  var elasticSearchUser = $.getEnv("elasticSearchUser");
1247
1217
  var elasticSearchPass = $.getEnv("elasticSearchPass");
1248
- if(elasticSearchUser && elasticSearchPass){
1249
- var auth =Base64.encode(elasticSearchUser + ":" + elasticSearchPass);
1218
+ if (elasticSearchUser && elasticSearchPass) {
1219
+ var auth = Base64.encode(elasticSearchUser + ":" + elasticSearchPass);
1250
1220
  var basicAuth = "Basic " + auth;
1251
1221
  headers["Authorization"] = basicAuth;
1252
1222
  }
1253
- var searchUrl = elasticSearchUrl+"/@projectCode/_count";
1254
- if(dataSource){
1223
+ var searchUrl = elasticSearchUrl + "/@projectCode/_count";
1224
+ if (dataSource) {
1255
1225
  searchUrl = elasticSearchUrl + "/" + dataSource + "/_count";
1256
1226
  }
1257
1227
 
1258
1228
  var sndTxt = JSON.stringify(query);
1259
- var s = HttpUtils.postRaw( searchUrl, sndTxt, headers);
1229
+ var s = HttpUtils.postRaw(searchUrl, sndTxt, headers);
1260
1230
  var result = JSON.parse(s);
1261
- if(result.count){
1231
+ if (result.count) {
1262
1232
  return result.count;
1263
1233
  }
1264
1234
  return 0;
1265
1235
  },
1266
- executeSearchQuery:function(query,dataSource){
1267
- var elasticSearchUrl = $.getEnv( "elasticSearchUrl" );
1236
+ executeSearchQuery: function (query, dataSource) {
1237
+ var elasticSearchUrl = $.getEnv("elasticSearchUrl");
1268
1238
 
1269
- var headers = { "Content-Type": "application/json;charset=utf-8" };
1239
+ var headers = {"Content-Type": "application/json;charset=utf-8"};
1270
1240
  var elasticSearchUser = $.getEnv("elasticSearchUser");
1271
1241
  var elasticSearchPass = $.getEnv("elasticSearchPass");
1272
- if(elasticSearchUser && elasticSearchPass){
1273
- var auth =Base64.encode(elasticSearchUser + ":" + elasticSearchPass);
1242
+ if (elasticSearchUser && elasticSearchPass) {
1243
+ var auth = Base64.encode(elasticSearchUser + ":" + elasticSearchPass);
1274
1244
  var basicAuth = "Basic " + auth;
1275
1245
  headers["Authorization"] = basicAuth;
1276
1246
  }
1277
- var searchUrl = elasticSearchUrl+"/@projectCode/_search";
1278
- if(dataSource){
1247
+ var searchUrl = elasticSearchUrl + "/@projectCode/_search";
1248
+ if (dataSource) {
1279
1249
  searchUrl = elasticSearchUrl + "/" + dataSource + "/_search";
1280
1250
  }
1281
1251
 
1282
1252
  var sndTxt = JSON.stringify(query);
1283
- return HttpUtils.postRaw( searchUrl, sndTxt, headers);
1253
+ return HttpUtils.postRaw(searchUrl, sndTxt, headers);
1284
1254
  },
1285
1255
 
1286
- search: function(mfilters, searchArgs, keyword,from, pageSize, sort, dataSource,isRecycleBin,meta_fields){
1287
- var query = f.buildQuery(mfilters,searchArgs,keyword,isRecycleBin,meta_fields);
1288
- var effectiveSort = [{owl_createTime:{order:"desc"}}];
1289
- if(sort){
1256
+ search: function (mfilters, searchArgs, keyword, from, pageSize, sort, dataSource, isRecycleBin, meta_fields) {
1257
+ var query = f.buildQuery(mfilters, searchArgs, keyword, isRecycleBin, meta_fields);
1258
+ var effectiveSort = [{owl_createTime: {order: "desc"}}];
1259
+ if (sort) {
1290
1260
  effectiveSort = sort;
1291
1261
  }
1292
1262
  query.from = from;
1293
1263
  query.size = pageSize;
1294
1264
  query.sort = effectiveSort;
1295
1265
 
1296
- var elasticSearchUrl = $.getEnv( "elasticSearchUrl" );
1266
+ var elasticSearchUrl = $.getEnv("elasticSearchUrl");
1297
1267
 
1298
- var headers = { "Content-Type": "application/json;charset=utf-8" };
1268
+ var headers = {"Content-Type": "application/json;charset=utf-8"};
1299
1269
  var elasticSearchUser = $.getEnv("elasticSearchUser");
1300
1270
  var elasticSearchPass = $.getEnv("elasticSearchPass");
1301
- if(elasticSearchUser && elasticSearchPass){
1302
- var auth =Base64.encode(elasticSearchUser + ":" + elasticSearchPass);
1271
+ if (elasticSearchUser && elasticSearchPass) {
1272
+ var auth = Base64.encode(elasticSearchUser + ":" + elasticSearchPass);
1303
1273
  var basicAuth = "Basic " + auth;
1304
1274
  headers["Authorization"] = basicAuth;
1305
1275
  }
1306
- var searchUrl = elasticSearchUrl+"/@projectCode/_search";
1307
- if(dataSource){
1276
+ var searchUrl = elasticSearchUrl + "/@projectCode/_search";
1277
+ if (dataSource) {
1308
1278
  searchUrl = elasticSearchUrl + "/" + dataSource + "/_search";
1309
1279
  }
1310
1280
 
1311
1281
  var sndTxt = JSON.stringify(query);
1312
- var s = HttpUtils.postRaw( searchUrl, sndTxt, headers);
1282
+ var s = HttpUtils.postRaw(searchUrl, sndTxt, headers);
1313
1283
  var result = JSON.parse(s);
1314
1284
 
1315
- if(!result.hits || !result.hits.hits){
1316
- $.log("error search:sndQuery=" + sndTxt + "------\nresponse:\n" + s );
1285
+ if (!result.hits || !result.hits.hits) {
1286
+ $.log("error search:sndQuery=" + sndTxt + "------\nresponse:\n" + s);
1317
1287
  var ret = {
1318
- state:'err',
1319
- list:[],
1320
- total:{value:0}
1288
+ state: 'err',
1289
+ list: [],
1290
+ total: {value: 0}
1321
1291
  }
1322
1292
  return ret;
1323
1293
  }
@@ -1325,33 +1295,38 @@ var @projectCodeService = (function (pigeon) {
1325
1295
  var hits = result.hits.hits;
1326
1296
  var total = result.hits.total;
1327
1297
 
1328
- var objs = hits.map(function(hit){return hit._source});
1298
+ var objs = hits.map(function (hit) {
1299
+ return hit._source
1300
+ });
1329
1301
 
1330
1302
 
1331
1303
  var ret = {
1332
- state:'ok',
1333
- list:objs,
1334
- total:total
1304
+ state: 'ok',
1305
+ list: objs,
1306
+ total: total
1335
1307
  }
1336
1308
 
1337
1309
  return ret;
1338
1310
 
1339
1311
  },
1340
- getHistory:function(objId, from, size){
1312
+ getHistory: function (objId, from, size) {
1341
1313
  var objs = [];
1342
- var obj = f.get(objId,true);
1314
+ var obj = f.get(objId, true);
1343
1315
  var currentVersion = obj._v;
1344
1316
 
1317
+ var logPigeon = pigeon;
1318
+ if (formSpecs.meta.logPigeon) {
1319
+ logPigeon = pigeon.getPigeon(formSpecs.meta.logPigeon);
1320
+ }
1345
1321
 
1346
-
1347
- for(var i=0; i<size; i++){
1322
+ for (var i = 0; i < size; i++) {
1348
1323
  var ver = currentVersion - i - from;
1349
- if(ver<0){
1324
+ if (ver < 0) {
1350
1325
  break;
1351
1326
  }
1352
1327
  var id = objId + "vvv" + ver;
1353
- var vobj = f.get(id,true);
1354
- if(vobj){
1328
+ var vobj = logPigeon.getObject(id)
1329
+ if (vobj) {
1355
1330
  objs.push(vobj);
1356
1331
  }
1357
1332
  }