/// Data Table _r.scroll_head = function(ele) { var h = ele.childNodes[0]; h.style.top = cint(ele.scrollTop) + 'px'; } _r.DataTable = function(html_fieldname, dt, repname, hide_toolbar) { var me = this; if(html_fieldname.substr) { var html_field = cur_frm.fields_dict[html_fieldname]; // override onrefresh html_field.onrefresh = function() { if(me.docname != cur_frm.docname) { me.clear_all(); me.docname = cur_frm.docname; } } var parent = html_field.wrapper; datatables[html_fieldname] = this; } else { var parent = html_fieldname; } this.start_rec = 1; this.page_len = 50; this.repname = repname; this.dt = dt; this.no_limit = false; this.query = ''; this.has_index = 1; this.has_headings = 1; //this.sort_options = {}; this.disabled_options = {}; this.levels = []; // make ui // new link if(this.dt) { var tw = $a(parent, 'div'); var t = $a(tw, 'div', 'link_type'); t.style.cssFloat = 'right'; $h(tw, '14px'); t.style.margin = '2px 0px'; t.style.fontSize = '11px'; t.onclick = function() { new_doc(me.dt); } t.innerHTML = 'New '+ this.dt; } // toolbar if(!hide_toolbar) this.make_toolbar(parent); this.wrapper = $a(parent, 'div', 'report_tab'); $h(this.wrapper, cint(screen.height * 0.35) + 'px'); this.wrapper.onscroll = function() {_r.scroll_head(this); } this.hwrapper = $a(this.wrapper, 'div', 'report_head_wrapper'); this.twrapper = $a(this.wrapper, 'div', 'report_tab_wrapper'); this.no_data_tag = $a(this.wrapper, 'div', 'report_no_data'); this.no_data_tag.innerHTML = 'No Records Found'; this.fetching_tag = $a(this.wrapper, 'div', '', {height:'100%', background:'url("lib/images/ui/square_loading.gif") center no-repeat', display:'none'}); } _r.DataTable.prototype.add_icon = function(parent, imgsrc) { var i = $a(parent, 'img'); i.style.padding = '2px'; i.style.cursor = 'pointer'; i.setAttribute('src', 'lib/images/icons/'+imgsrc+'.gif'); return i; } _r.DataTable.prototype.set_no_limit = function(v) { if(v) { this.no_limit = 1; $dh(this.page_len_sel.wrapper); } else { this.no_limit = 0; $ds(this.page_len_sel.wrapper); } } _r.DataTable.prototype.make_toolbar = function(parent) { var me = this; // headbar this.hbar = $a(parent, 'div', '', {margin:'8px 0px 16px 0px'}); var ht = make_table(this.hbar,1,3,'100%',['40%','40%','20%'],{verticalAlign:'middle'}); var div = $a($td(ht,0,0), 'div'); var make_btn = function(label,icon,onclick,bold) { var btn = $btn(div,label,onclick); if(bold)$y(btn,{fontWeight: 'bold'}); } // refresh btn make_btn('Refresh','ui-icon-refresh',function() { me.start_rec = 1; me.run();},1); // export make_btn('Export','ui-icon-circle-arrow-e',function() {me.do_export();}); // print make_btn('Print','ui-icon-print',function() {me.do_print();}); // print make_btn('Calc','ui-icon-calculator',function() {me.do_calc();}); // sort select var t = make_table($td(ht,0,1),1,6,null,[null,null,null,'20px',null,null],{verticalAlign:'middle'}); $td(t,0,0).innerHTML = 'Sort By:'; $y($td(t,0,1),{textAlign:'right',paddingRight:'4px'}); this.sort_sel = $a($td(t,0,2), 'select','',{width:'100px'}); this.sort_sel.onchange = function() { me.start_rec = 1; me.run(); } // sort order this.sort_icon = this.add_icon($td(t,0,3), 'arrow_down'); this.sort_order = 'DESC'; this.sort_icon.onclick = function() { if(me.sort_order=='ASC') me.set_desc(); else me.set_asc(); me.start_rec = 1; me.run(); } // page len $td(t,0,4).innerHTML = 'Per Page:'; $y($td(t,0,4),{textAlign:'right',paddingRight:'4px'}); var s = new SelectWidget($td(t,0,5), ['50','100','500','1000'], '70px'); s.inp.value = '50'; s.inp.onchange = function() { me.page_len = flt(this.value); } this.page_len_sel = s; var c1 = $td(ht,0,2); c1.style.textAlign = 'right'; // first page var ic = this.add_icon(c1, 'resultset_first'); ic.onclick = function() { me.start_rec = 1; me.run(); } // prev page var ic = this.add_icon(c1, 'resultset_previous'); ic.onclick = function() { if(me.start_rec - me.page_len <= 0)return; me.start_rec = me.start_rec - me.page_len; me.run(); } // next page this.has_next = false; var ic = this.add_icon(c1, 'resultset_next'); ic.onclick = function() { if(!me.has_next)return; me.start_rec = me.start_rec + me.page_len; me.run(); } } _r.DataTable.prototype.set_desc = function() { this.sort_icon.src = 'lib/images/icons/arrow_down.gif'; this.sort_order='DESC'; } _r.DataTable.prototype.set_asc = function(icon) { this.sort_icon.src = 'lib/images/icons/arrow_up.gif'; this.sort_order='ASC'; } //// _r.DataTable.prototype.set_sort_option_disabled = function(label, disabled) { // has bugs due to sequencing // may not set during load var s = this.sort_sel; if(disabled) { // remove this option for(var i=0; i
Please click on 'Export' to open in a spreadsheet"); return; } _r.rb_con.cur_rb.mytabs.items['Result'].expand(); } var me = this; this._get_query(); // preset data if(this.set_data) { this.show_result(this.set_data); this.set_data = null; return; } $ds(this.fetching_tag); if(isFF)this.clear_all(); var args = { 'query':me.query, 'report_name': '_r.DataTable', 'show_deleted':1, 'sc_id':me.search_criteria ? me.search_criteria.name : '', 'filter_values':me.filter_vals ? docstring(me.filter_vals) : '', 'roles':'["'+user_roles.join('","')+'"]' } if(this.is_simple) args.is_simple = 1; page_body.set_status('Running Query...'); $c('webnotes.widgets.query_builder.runquery', args, function(r,rt) { $dh(me.fetching_tag); page_body.set_status('Done'); me.show_result(r,rt); }); } _r.DataTable.prototype.clear_all = function() { // clear old if(this.htab && this.htab.parentNode) { this.htab.parentNode.removeChild(this.htab); delete this.htab; } if(this.tab && this.tab.parentNode) { this.tab.parentNode.removeChild(this.tab); delete this.tab; } $dh(this.no_data_tag); } _r.DataTable.prototype.has_data = function() { if(this.htab && this.htab.rows.length)return 1; else return 0; } _r.DataTable.prototype.show_result = function(r, rt) { // clear old var me = this; this.clear_all(); this.rset = eval(r.values); if(this.rset && this.rset.length) { // add if(this.has_headings) { this.htab = $a(this.hwrapper, 'table'); $y(this.twrapper,{top:'25px',borderTop:'0px'}); } this.tab = $a(this.twrapper, 'table'); this.colwidths = eval(r.colwidths); this.coltypes = eval(r.coltypes); this.coloptions = eval(r.coloptions); this.colnames = eval(r.colnames); $y(this.tab,{tableLayout:'fixed'}); if(this.beforetableprint)this.beforetableprint(this); // heading if(this.has_headings) this.make_head_tab(this.colnames); // data var start = this.start_rec; // show max 1000 var rset_len = this.rset.length; if(rset_len > 1000) { msgprint("Showing only 1000 records out of " + rset_len + ". Use 'Export' to see all records"); rset_len = 1000; } for(var vi=0; vi=this.page_len)this.has_next = true; // style if(r.style) { for(var i=0;i