Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

11 anos atrás
11 anos atrás
11 anos atrás
11 anos atrás
11 anos atrás
11 anos atrás
11 anos atrás
11 anos atrás
11 anos atrás
11 anos atrás
11 anos atrás
11 anos atrás
11 anos atrás
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. // Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
  2. // MIT License. See license.txt
  3. $.extend(wn.model, {
  4. docinfo: {},
  5. sync: function(r) {
  6. /* docs:
  7. extract doclist, docinfo (attachments, comments, assignments)
  8. from incoming request and set in `locals` and `wn.model.docinfo`
  9. */
  10. if(!r.docs && !r.docinfo) r = {docs:r};
  11. if(r.docs) {
  12. var doclist = r.docs;
  13. if(doclist._kl)
  14. doclist = wn.model.expand(doclist);
  15. if(doclist && doclist.length)
  16. wn.model.clear_doclist(doclist[0].doctype, doclist[0].name)
  17. var last_parent_name = null;
  18. var dirty = [];
  19. $.each(doclist, function(i, d) {
  20. if(!d.name && d.__islocal) { // get name (local if required)
  21. d.name = wn.model.get_new_name(d.doctype);
  22. wn.provide("wn.model.docinfo." + d.doctype + "." + d.name);
  23. if(!d.parenttype)
  24. last_parent_name = d.name;
  25. if(dirty.indexOf(d.parenttype || d.doctype)===-1) dirty.push(d.parenttype || d.doctype);
  26. }
  27. // set parent for subsequent orphans
  28. if(d.parenttype && !d.parent && d.__islocal) {
  29. d.parent = last_parent_name;
  30. }
  31. if(!locals[d.doctype])
  32. locals[d.doctype] = {};
  33. locals[d.doctype][d.name] = d;
  34. d.__last_sync_on = new Date();
  35. if(cur_frm && cur_frm.doctype==d.doctype && cur_frm.docname==d.name) {
  36. cur_frm.doc = d;
  37. }
  38. if(d.doctype=='DocField') wn.meta.add_field(d);
  39. if(d.doctype=='DocType') wn.meta.sync_messages(d);
  40. if(d.localname) {
  41. wn.model.new_names[d.localname] = d.name;
  42. $(document).trigger('rename', [d.doctype, d.localname, d.name]);
  43. delete locals[d.doctype][d.localname];
  44. // update docinfo to new dict keys
  45. if(i===0) {
  46. wn.model.docinfo[d.doctype][d.name] = wn.model.docinfo[d.doctype][d.localname];
  47. wn.model.docinfo[d.doctype][d.localname] = undefined;
  48. }
  49. }
  50. });
  51. if(cur_frm && dirty.indexOf(cur_frm.doctype)!==-1) cur_frm.dirty();
  52. }
  53. // set docinfo
  54. if(r.docinfo) {
  55. if(doclist) {
  56. var doc = doclist[0];
  57. } else {
  58. var doc = cur_frm.doc;
  59. }
  60. if(!wn.model.docinfo[doc.doctype])
  61. wn.model.docinfo[doc.doctype] = {};
  62. wn.model.docinfo[doc.doctype][doc.name] = r.docinfo;
  63. }
  64. return doclist;
  65. },
  66. expand: function(data) {
  67. function zip(k,v) {
  68. var obj = {};
  69. for(var i=0;i<k.length;i++) {
  70. obj[k[i]] = v[i];
  71. }
  72. return obj;
  73. }
  74. var l = [];
  75. for(var i=0;i<data._vl.length;i++) {
  76. l.push(zip(data._kl[data._vl[i][0]], data._vl[i]));
  77. }
  78. return l;
  79. },
  80. compress: function(doclist) {
  81. var all_keys = {}; var values = [];
  82. function get_key_list(doctype) {
  83. // valid standard keys
  84. var key_list = ['doctype', 'name', 'docstatus', 'owner', 'parent',
  85. 'parentfield', 'parenttype', 'idx', 'creation', 'modified',
  86. 'modified_by', '__islocal', '__newname', '__modified',
  87. '_user_tags', '__temp', '_comments'];
  88. for(key in wn.meta.docfield_map[doctype]) { // all other values
  89. if(!in_list(key_list, key)
  90. && !in_list(wn.model.no_value_type, wn.meta.docfield_map[doctype][key].fieldtype)
  91. && !wn.meta.docfield_map[doctype][key].no_column) {
  92. key_list[key_list.length] = key
  93. }
  94. }
  95. return key_list;
  96. }
  97. for(var i=0; i<doclist.length;i++) {
  98. var doc = doclist[i];
  99. // make keys
  100. if(!all_keys[doc.doctype]) {
  101. all_keys[doc.doctype] = get_key_list(doc.doctype);
  102. // doctype must be first
  103. }
  104. var row = []
  105. var key_list = all_keys[doc.doctype];
  106. // make data rows
  107. for(var j=0;j<key_list.length;j++) {
  108. row.push(doc[key_list[j]]);
  109. }
  110. values.push(row);
  111. }
  112. return JSON.stringify({'_vl':values, '_kl':all_keys});
  113. }
  114. });
  115. // legacy
  116. compress_doclist = wn.model.compress;