You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

пре 13 година
пре 13 година
пре 13 година
пре 13 година
пре 13 година
пре 13 година
пре 13 година
пре 14 година
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279
  1. // Load Report
  2. // -------------------------------------------------------------------------------
  3. function loadreport(dt, rep_name, onload, menuitem, reset_report) {
  4. wn.require('lib/js/legacy/report.compressed.js');
  5. dt = get_label_doctype(dt);
  6. var show_report_builder = function() {
  7. if(!_r.rb_con) {
  8. // first load
  9. _r.rb_con = new _r.ReportContainer();
  10. }
  11. _r.rb_con.set_dt(dt, function(rb) {
  12. if(rep_name) {
  13. var t = rb.current_loaded;
  14. rb.load_criteria(rep_name);
  15. // call onload
  16. if(onload)
  17. onload(rb);
  18. // if loaded, then run
  19. if((rb.dt) && (!rb.dt.has_data() || rb.current_loaded!=t))
  20. rb.dt.run();
  21. } else {
  22. // reset if from toolbar
  23. if(reset_report) {
  24. rb.reset_report();
  25. }
  26. }
  27. // show
  28. if(!rb.forbidden) {
  29. page_body.change_to('Report Builder');
  30. nav_obj.open_notify('Report',dt,rep_name);
  31. }
  32. } );
  33. }
  34. show_report_builder();
  35. }
  36. // Load Doc
  37. // -------------------------------------------------------------------------------
  38. var load_doc = loaddoc;
  39. function loaddoc(doctype, name, onload, menuitem, from_archive) {
  40. doctype = get_label_doctype(doctype);
  41. // validate
  42. if(frms['DocType'] && frms['DocType'].opendocs[doctype]) {
  43. msgprint("Cannot open an instance of \"" + doctype + "\" when the DocType is open.");
  44. return;
  45. }
  46. // reverse validation - do not open DocType when an instance is open
  47. if(doctype=='DocType' && frms[name]) {
  48. msgprint("Cannot open DocType \"" + name + "\" when its instance is open.");
  49. return;
  50. }
  51. var show_form = function(f) {
  52. // load the frm container
  53. if(!_f.frm_con) {
  54. _f.frm_con = new _f.FrmContainer(); //new _f.FrmContainer();
  55. }
  56. // case A - frm not loaded
  57. if(!frms[doctype]) {
  58. _f.add_frm(doctype, show_doc, name, from_archive);
  59. // case B - both loaded
  60. } else if(LocalDB.is_doc_loaded(doctype, name)) {
  61. show_doc();
  62. // case C - only frm loaded
  63. } else {
  64. $c('webnotes.widgets.form.load.getdoc', {'name':name, 'doctype':doctype, 'user':user, 'from_archive':(from_archive ? 1 : 0) }, show_doc, null, null); // onload
  65. }
  66. }
  67. var show_doc = function(r,rt) {
  68. if(locals[doctype] && locals[doctype][name]) {
  69. page_body.set_status('Done');
  70. var frm = frms[doctype];
  71. // show
  72. frm.refresh(name);
  73. // notify for back button
  74. if(!frm.in_dialog)
  75. nav_obj.open_notify('Form',doctype,name);
  76. if(onload) onload();
  77. } else {
  78. // nothing, go home - there were errors
  79. if(r.exc) { msgprint('There were errors while loading ' + doctype + ' ' + name); }
  80. loadpage('_home');
  81. }
  82. }
  83. //// is libary loaded?
  84. show_form();
  85. }
  86. // New Doc
  87. // -------------------------------------------------------------------------------
  88. function new_doc(doctype, onload, in_dialog, on_save_callback, cdt, cdn, cnic) {
  89. // cnic = caller not in container (caller is a dialog)
  90. doctype = get_label_doctype(doctype);
  91. if(!doctype) {
  92. if(cur_frm)doctype = cur_frm.doctype; else return;
  93. }
  94. var show_doc = function() {
  95. frm = frms[doctype];
  96. if (frm.perm[0][CREATE]==1) {
  97. // load new doc - create the new doc (if single, just load it)
  98. if(frm.meta.issingle) {
  99. var dn = doctype;
  100. LocalDB.set_default_values(locals[doctype][doctype]);
  101. } else
  102. var dn = LocalDB.create(doctype);
  103. // call (optional) onload
  104. if(onload)onload(dn);
  105. if(frm.in_dialog) {
  106. // attach values so that the "new" value is set in the field from which it was set
  107. var fd = _f.frm_dialog;
  108. fd.cdt = cdt;
  109. fd.cdn = cdn;
  110. fd.cnic = cnic;
  111. fd.on_save_callback = on_save_callback;
  112. } else {
  113. nav_obj.open_notify('Form',doctype,dn);
  114. }
  115. // show the form
  116. frm.refresh(dn);
  117. } else {
  118. msgprint('error:Not Allowed To Create '+doctype+'\nContact your Admin for help');
  119. }
  120. }
  121. var show_form = function() {
  122. // load the frm container
  123. if(!_f.frm_con) {
  124. _f.frm_con = new _f.FrmContainer();
  125. }
  126. if(!frms[doctype])
  127. _f.add_frm(doctype, show_doc); // load
  128. else
  129. show_doc(frms[doctype]); // directly
  130. }
  131. show_form();
  132. }
  133. var newdoc = new_doc;
  134. //
  135. // Load Page
  136. //
  137. var pscript={};
  138. var cur_page;
  139. function loadpage(page_name, call_back, no_history) {
  140. if(!page_name) return;
  141. if(page_name=='_home')
  142. page_name = home_page;
  143. var fn = function(r,rt) {
  144. page_body.set_status('Done');
  145. if(page_body.pages[page_name]) {
  146. // loaded
  147. var p = page_body.pages[page_name]
  148. // show
  149. page_body.change_to(page_name);
  150. } else {
  151. // new page
  152. var p = render_page(page_name);
  153. if(!p)return;
  154. }
  155. // execute callback
  156. cur_page = page_name;
  157. if(call_back)call_back();
  158. // scroll to top
  159. scroll(0,0);
  160. // update "back"
  161. pscript.update_page_history(page_name, no_history)
  162. // call refresh script
  163. try {
  164. if(pscript['refresh_'+page_name]) pscript['refresh_'+page_name](); // onload
  165. } catch(e) {
  166. console.log(e);
  167. }
  168. }
  169. if(get_local('Page', page_name) || page_body.pages[page_name])
  170. fn();
  171. else {
  172. args = get_url_dict(); // send everything to the page
  173. args.name = page_name;
  174. $c('webnotes.widgets.page.getpage', args, fn);
  175. }
  176. }
  177. //
  178. // adds to the url (if called using loadpage and not the url)
  179. // - if i do not do this then it will overwrite
  180. // this is useful when an argument is passed to the page separated by a /
  181. //
  182. pscript.update_page_history = function(page_name, no_history) {
  183. var arg = null;
  184. var t = null;
  185. // get from page
  186. if(window.location.hash) {
  187. var t = nav_obj.get_page(window.location.hash)
  188. } else if(get_url_arg('page')) {
  189. var t = nav_obj.get_page(get_url_arg('page'))
  190. }
  191. if(t && t[1]==page_name) arg = t[2];
  192. nav_obj.open_notify('Page', page_name, arg, no_history);
  193. }
  194. //
  195. // Load Script
  196. //
  197. function loadscript(src, call_back) {
  198. set_loading();
  199. var script = $a('head','script');
  200. script.type = 'text/javascript';
  201. script.src = src;
  202. script.onload = function() {
  203. if(call_back)call_back(); hide_loading();
  204. }
  205. // IE 6 & 7
  206. script.onreadystatechange = function() {
  207. if (this.readyState == 'complete' || this.readyState == 'loaded') {
  208. hide_loading();
  209. call_back();
  210. }
  211. }
  212. }
  213. // Load DocBrowser
  214. // -------------------------------------------------------------------------------
  215. var doc_browser_page;
  216. function loaddocbrowser(dt, label, fields) {
  217. wn.require('lib/js/legacy/webpage/docbrowser.js');
  218. dt = get_label_doctype(dt);
  219. if(!doc_browser_page)
  220. doc_browser_page = new ItemBrowserPage();
  221. doc_browser_page.show(dt, label, fields);
  222. nav_obj.open_notify('List',dt,'');
  223. }