選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。
 
 
 
 
 
 

280 行
6.3 KiB

  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. }