diff --git a/css/all-app.css b/css/all-app.css index 51831e5511..496f93af80 100644 --- a/css/all-app.css +++ b/css/all-app.css @@ -728,6 +728,43 @@ div.srs_filter_area td { } +/* stats */ + +div.stat-grid { + border: 2px solid #bbb; + background-color: white; + margin-bottom: 19px; + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + overflow: hidden; +} + +div.stat-label { + position: relative; + padding: 3px; + text-align: center; +} +div.stat-label, div.stat-label a { + z-index: 5; +} + +div.stat-item { + position: relative; + border-bottom: 1px solid #ddd; +} +div.stat-item:last-child { + border-bottom: 0px solid #ddd; +} + +div.stat-bar { + position: absolute; + left: 0px; + background-color: #def; + height: 100%; + z-index: 0; +} + diff --git a/erpnext/accounts/doctype/journal_voucher/listview.js b/erpnext/accounts/doctype/journal_voucher/listview.js new file mode 100644 index 0000000000..03c87f806e --- /dev/null +++ b/erpnext/accounts/doctype/journal_voucher/listview.js @@ -0,0 +1,13 @@ +wn.doclistviews['Journal Voucher'] = wn.pages.ListView.extend({ + init: function(doctype) { + this._super(doctype); + this.fields = this.fields.concat([ + '`tabJournal Voucher`.voucher_type' + ]); + this.stats = this.stats.concat(['voucher_type']); + }, + render: function(row, data) { + this._super(row, data); + this.$main.html(data.voucher_type); + } +}); \ No newline at end of file diff --git a/erpnext/selling/doctype/sales_order/listview.js b/erpnext/selling/doctype/sales_order/listview.js index 3c4fcb74c5..e5d574f2fc 100644 --- a/erpnext/selling/doctype/sales_order/listview.js +++ b/erpnext/selling/doctype/sales_order/listview.js @@ -1,21 +1,16 @@ // render -wn.doclistviews['Sales Order'] = { - fields: [ - { field: "name", name: "ID"}, - { field: "owner", name: "Created By"}, - { field: "modified", name: "Last Updated"}, - { field: "customer_name", name: "Customer", width:300}, - { field: "per_delivered", name: "% Delivered", - query: "ifnull(per_delivered,0) as per_delivered"}, - { field: "per_billed", name: "% Billed", - query: "ifnull(per_billed,0) as per_billed"}, - { field: "currency", name: "Currency"}, - { field: "grand_total_export", name: "Grand Total", - query:"ifnull(grand_total_export,0) as grand_total_export"}, - { field: "docstatus", name: "Status"} - ], +wn.doclistviews['Sales Order'] = wn.pages.ListView.extend({ + init: function(doctype) { + this._super(doctype) + this.fields = this.fields.concat([ + "`tabSales Order`.customer_name", + "ifnull(`tabSales Order`.per_delivered,0) as per_delivered", + "ifnull(`tabSales Order`.per_billed,0) as per_billed", + "`tabSales Order`.currency", + "ifnull(`tabSales Order`.grand_total_export,0) as grand_total_export" + ]); + }, render: function(row, data, listobj) { - data.modified_date = dateutil.str_to_user(data.modified).split(' ')[0]; // bar color for billed data.bar_class_delivered = ''; data.bar_class_billed = ''; @@ -24,27 +19,30 @@ wn.doclistviews['Sales Order'] = { // lock for docstatus data.icon = ''; - if(data.docstatus==1) { + data.item_color = 'grey'; + if(data.docstatus==0) { + data.customer_name = '[Draft] ' + data.customer_name; + } else if(data.docstatus==1) { data.icon = ' '; + data.item_color = 'blue'; + } else if(data.docstatus==2) { + data.icon = ' '; + data.item_color = 'red'; } - $(row).html(repl('\ - %(name)s\ - %(icon)s\ - %(customer_name)s\ - \ - \ - \ - \ - \ - \ - %(modified_date)s\ - %(currency)s %(grand_total_export)s\ - ', data)).addClass('list-row'); + this._super(row, data); + this.$main.html(repl('%(customer_name)s\ + \ + \ + \ + \ + \ + \ + %(currency)s %(grand_total_export)s\ + ', data)) } -} +}); diff --git a/erpnext/stock/Module Def/Stock/Stock.txt b/erpnext/stock/Module Def/Stock/Stock.txt deleted file mode 100644 index 991d4100b3..0000000000 --- a/erpnext/stock/Module Def/Stock/Stock.txt +++ /dev/null @@ -1,242 +0,0 @@ -# Module Def, Stock -[ - - # These values are common in all dictionaries - { - 'creation': '2011-07-01 17:40:49', - 'docstatus': 0, - 'modified': '2012-02-01 15:43:00', - 'modified_by': 'Administrator', - 'owner': 'Administrator' - }, - - # These values are common for all Module Def Role - { - 'doctype': 'Module Def Role', - 'name': '__common__', - 'parent': 'Stock', - 'parentfield': 'roles', - 'parenttype': 'Module Def' - }, - - # These values are common for all Module Def Item - { - 'doctype': 'Module Def Item', - 'name': '__common__', - 'parent': 'Stock', - 'parentfield': 'items', - 'parenttype': 'Module Def' - }, - - # These values are common for all Module Def - { - 'disabled': 'No', - 'doctype': u'Module Def', - 'doctype_list': 'DocType Label, QA Inspection Report', - 'is_hidden': 'No', - 'module_desc': 'Material Management', - 'module_icon': 'Stock.gif', - 'module_label': 'Stock', - 'module_name': 'Stock', - 'module_seq': 7, - 'name': '__common__' - }, - - # Module Def, Stock - { - 'doctype': u'Module Def', - 'name': 'Stock' - }, - - # Module Def Item - { - 'description': 'Item master', - 'display_name': 'Item', - 'doc_name': 'Item', - 'doc_type': 'Forms', - 'doctype': 'Module Def Item', - 'fields': 'name\nitem_group\ndescription' - }, - - # Module Def Item - { - 'description': 'A unique number identifying each entity of an item', - 'display_name': 'Serial No', - 'doc_name': 'Serial No', - 'doc_type': 'Forms', - 'doctype': 'Module Def Item', - 'fields': 'item_code\nstatus\nwarehouse\npr_no\ndelivery_note_no\ncustomer' - }, - - # Module Def Item - { - 'description': 'Record of items added, removed or moved from one warehouse to another.', - 'display_name': 'Stock Entry', - 'doc_name': 'Stock Entry', - 'doc_type': 'Forms', - 'doctype': 'Module Def Item', - 'fields': 'transfer_date\npurpose\nfrom_warehouse\nto_warehouse\nremarks' - }, - - # Module Def Item - { - 'description': 'Record of items delivered to your customers along with the Printed Note', - 'display_name': 'Delivery Note', - 'doc_name': 'Delivery Note', - 'doc_type': 'Forms', - 'doctype': 'Module Def Item', - 'fields': 'status\ntransaction_date\ncustomer\nterritory\ngrand_total\nper_billed' - }, - - # Module Def Item - { - 'description': 'Generate Packing Slips based on a Delivery Note', - 'display_name': 'Packing Slip', - 'doc_name': 'Packing Slip', - 'doc_type': 'Forms', - 'doctype': 'Module Def Item', - 'fields': 'delivery_note\nfrom_case_no\nto_case_no\nnet_weight_pkg\ngross_weight_pkg' - }, - - # Module Def Item - { - 'description': 'Record of incoming material from your suppliers', - 'display_name': 'Purchase Receipt', - 'doc_name': 'Purchase Receipt', - 'doc_type': 'Forms', - 'doctype': 'Module Def Item', - 'fields': 'status\ntransaction_date\nsupplier\ngrand_total\nper_billed' - }, - - # Module Def Item - { - 'description': 'Details of Installation done after delivery', - 'display_name': 'Installation Note', - 'doc_name': 'Installation Note', - 'doc_type': 'Forms', - 'doctype': 'Module Def Item' - }, - - # Module Def Item - { - 'description': 'Create Quality Inspection Report for any item', - 'display_name': 'Inspection Report', - 'doc_name': 'QA Inspection Report', - 'doc_type': 'Forms', - 'doctype': 'Module Def Item', - 'fields': 'inspection_type\nitem_code\nreport_date\npurchase_receipt_no\ndelivery_note_no' - }, - - # Module Def Item - { - 'description': 'Reconcile your stock by uploading it form an excel file', - 'display_name': 'Stock Reconciliation', - 'doc_name': 'Stock Reconciliation', - 'doc_type': 'Forms', - 'doctype': 'Module Def Item', - 'fields': 'reconciliation_date\nreconciliation_time\nremark' - }, - - # Module Def Item - { - 'description': 'This utility tool will update Stock UOM in Item and will respectively update Actual Qty in Stock Ledger as per Conversion Factor.', - 'display_name': 'Stock UOM Replace Utility', - 'doc_name': 'Stock UOM Replace Utility', - 'doc_type': 'Single DocType', - 'doctype': 'Module Def Item' - }, - - # Module Def Item - { - 'description': 'This utility will help in tracking stock for Sales Return and Purchase Return.', - 'display_name': 'Sales and Purchase Return Wizard', - 'doc_name': 'Sales and Purchase Return Wizard', - 'doc_type': 'Single DocType', - 'doctype': 'Module Def Item' - }, - - # Module Def Item - { - 'description': 'You can create master template for landed cost wizard', - 'display_name': 'Landed Cost Master', - 'doc_name': 'Landed Cost Master', - 'doc_type': 'Forms', - 'doctype': 'Module Def Item', - 'icon': 'accept.gif' - }, - - # Module Def Item - { - 'description': 'Add extra expenses into Purchase Receipt which should be consider for item valuation. The cost will be added proportionately as per purchase receipt value.', - 'display_name': 'Landed Cost Wizard', - 'doc_name': 'Landed Cost Wizard', - 'doc_type': 'Forms', - 'doctype': 'Module Def Item', - 'icon': 'accept.gif' - }, - - # Module Def Item - { - 'display_name': 'Stock Ledger', - 'doc_name': 'Stock Ledger Entry', - 'doc_type': 'Reports', - 'doctype': 'Module Def Item' - }, - - # Module Def Item - { - 'display_name': 'Stock Level', - 'doc_name': 'Bin', - 'doc_type': 'Reports', - 'doctype': 'Module Def Item' - }, - - # Module Def Item - { - 'display_name': 'Shortage To Indent', - 'doc_name': 'Item', - 'doc_type': 'Reports', - 'doctype': 'Module Def Item' - }, - - # Module Def Item - { - 'description': 'Stock Value as per Item and Warehouse', - 'display_name': 'Stock Report', - 'doc_name': 'Stock Ledger Entry', - 'doc_type': 'Reports', - 'doctype': 'Module Def Item' - }, - - # Module Def Item - { - 'display_name': 'Stock Aging Report', - 'doc_name': 'Serial No', - 'doc_type': 'Reports', - 'doctype': 'Module Def Item' - }, - - # Module Def Role - { - 'doctype': 'Module Def Role', - 'role': 'Material User' - }, - - # Module Def Role - { - 'doctype': 'Module Def Role', - 'role': 'Material Master Manager' - }, - - # Module Def Role - { - 'doctype': 'Module Def Role', - 'role': 'Material Manager' - }, - - # Module Def Role - { - 'doctype': 'Module Def Role', - 'role': 'Quality Manager' - } -] \ No newline at end of file diff --git a/erpnext/utilities/page/todo/todo.css b/erpnext/utilities/page/todo/todo.css index 4ac49d621c..b7c9f20a7d 100644 --- a/erpnext/utilities/page/todo/todo.css +++ b/erpnext/utilities/page/todo/todo.css @@ -3,6 +3,7 @@ border-bottom: 1px solid #DEB85F; margin-bottom: 5px; height: 14px; + clear: both; } .todoitem .label { diff --git a/erpnext/utilities/page/todo/todo.html b/erpnext/utilities/page/todo/todo.html index 34004552f1..32a0a785a8 100644 --- a/erpnext/utilities/page/todo/todo.html +++ b/erpnext/utilities/page/todo/todo.html @@ -4,7 +4,7 @@
-
+
\ No newline at end of file diff --git a/js/all-app.js b/js/all-app.js index 3545482dc9..ad95b073b4 100644 --- a/js/all-app.js +++ b/js/all-app.js @@ -200,7 +200,7 @@ wn.get_cookie=function(c){var t=""+document.cookie;var ind=t.indexOf(c);if(ind== /* * lib/js/wn/model.js */ -wn.provide('wn.model');wn.model.no_value_type=['Section Break','Column Break','HTML','Table','Button','Image']; +wn.provide('wn.model');wn.model.no_value_type=['Section Break','Column Break','HTML','Table','Button','Image'];wn.model.can_delete=function(doctype){if(!doctype)return false;return locals.DocType[doctype].allow_trash&&wn.boot.profile.can_cancel.indexOf(doctype)!=-1;} /* * lib/js/wn/page.js */ @@ -256,6 +256,7 @@ if(r.exc){errprint(r.exc);console.log(r.exc);};if(r.docs)LocalDB.sync(r.docs);} wn.request.call=function(opts){wn.request.prepare(opts);$.ajax({url:opts.url||wn.request.url,data:opts.args,type:opts.type||'POST',dataType:opts.dataType||'json',success:function(r,xhr){wn.request.cleanup(opts,r);opts.success(r,xhr.responseText);},error:function(xhr,textStatus){wn.request.cleanup(opts,{});msgprint('Unable to complete request: '+textStatus) if(opts.error)opts.error(xhr)}})} wn.call=function(opts){var args=opts.args||{};if(opts.module&&opts.page){args.cmd=opts.module+'.page.'+opts.page+'.'+opts.page+'.'+opts.method}else if(opts.method){args.cmd=opts.method;} +for(key in args){if(args[key]&&typeof args[key]!='string'){args[key]=JSON.stringify(args[key]);}} wn.request.call({args:args,success:opts.callback,error:opts.error,btn:opts.btn,freeze:opts.freeze,show_spinner:!opts.no_spinner});} /* * lib/js/core.js @@ -538,7 +539,7 @@ if(this.onmake)this.onmake();} Field.prototype.set_max_width=function(){var no_max=['Code','Text Editor','Text','Table','HTML'] if(this.wrapper&&this.layout_cell&&this.layout_cell.parentNode.cells&&this.layout_cell.parentNode.cells.length==1&&!in_list(no_max,this.df.fieldtype)){$y(this.wrapper,{paddingRight:'50%'});}} Field.prototype.set_label=function(){if(this.with_label&&this.label_area&&this.label!=this.df.label){this.label_span.innerHTML=this.df.label;this.label=this.df.label;}} -Field.prototype.set_description=function(){if(this.df.description){var p=in_list(['Text Editor','Code','Check'],this.df.fieldtype)?this.label_area:this.wrapper;this.desc_area=$a(p,'div','field_description','',this.df.description) +Field.prototype.set_description=function(){if(this.df.description){var p=in_list(['Text Editor','Code','Check'],this.df.fieldtype)?this.label_area:this.wrapper;this.desc_area=$a(p,'div','help','',this.df.description) if(in_list(['Text Editor','Code'],this.df.fieldtype)) $(this.desc_area).addClass('field_description_top');}} Field.prototype.get_status=function(){if(this.in_filter)this.not_in_form=this.in_filter;if(this.not_in_form){return'Write';} @@ -934,7 +935,8 @@ this.show=function(){$ds(me.ldiv);}} var def_ph_style={wrapper:{marginBottom:'16px',backgroundColor:'#EEE'},main_heading:{},sub_heading:{marginBottom:'8px',color:'#555',display:'none'},separator:{borderTop:'3px solid #777'},toolbar_area:{padding:'3px 0px',display:'none',borderBottom:'1px solid #AAA'}} function PageHeader(parent,main_text,sub_text){this.wrapper=$a(parent,'div','page_header');this.t1=make_table($a(this.wrapper,'div','',def_ph_style.wrapper.backgroundColor),1,2,'100%',[null,'100px'],{padding:'2px'});$y(this.t1,{borderCollapse:'collapse'}) this.lhs=$td(this.t1,0,0);this.main_head=$a(this.lhs,'h1','',def_ph_style.main_heading);this.sub_head=$a(this.lhs,'h4','',def_ph_style.sub_heading);this.separator=$a(this.wrapper,'div','',def_ph_style.separator);this.toolbar_area=$a(this.wrapper,'div','',def_ph_style.toolbar_area);this.padding_area=$a(this.wrapper,'div','',{padding:'3px'});$y($td(this.t1,0,1),{textAlign:'right',padding:'3px'});this.close_btn=$a($td(this.t1,0,1),'span','close',{},'×');this.close_btn.onclick=function(){nav_obj.show_last_open();};if(main_text)this.main_head.innerHTML=main_text;if(sub_text)this.sub_head.innerHTML=sub_text;this.buttons={};this.buttons2={};} -PageHeader.prototype.add_button=function(label,fn,bold,icon,green){var tb=this.toolbar_area;if(this.buttons[label])return;var btn=$btn(tb,label,fn,{marginRight:'4px'},(green?'btn-info':''));if(bold)$y(btn,{fontWeight:'bold'});this.buttons[label]=btn;$ds(this.toolbar_area);return btn;} +PageHeader.prototype.add_button=function(label,fn,bold,icon,green){var tb=this.toolbar_area;if(this.buttons[label])return;iconhtml=icon?(' '):'';var $button=$('').click(fn).appendTo(tb);if(green){$button.addClass('btn-info');$button.find('i').addClass('icon-white');} +if(bold)$button.css('font-weight','bold');this.buttons[label]=$button.get(0);$ds(this.toolbar_area);return this.buttons[label];} PageHeader.prototype.clear_toolbar=function(){this.toolbar_area.innerHTML='';this.buttons={};} PageHeader.prototype.make_buttonset=function(){$(this.toolbar_area).buttonset();} /* @@ -1382,7 +1384,7 @@ if(this.onmake)this.onmake();} Field.prototype.set_max_width=function(){var no_max=['Code','Text Editor','Text','Table','HTML'] if(this.wrapper&&this.layout_cell&&this.layout_cell.parentNode.cells&&this.layout_cell.parentNode.cells.length==1&&!in_list(no_max,this.df.fieldtype)){$y(this.wrapper,{paddingRight:'50%'});}} Field.prototype.set_label=function(){if(this.with_label&&this.label_area&&this.label!=this.df.label){this.label_span.innerHTML=this.df.label;this.label=this.df.label;}} -Field.prototype.set_description=function(){if(this.df.description){var p=in_list(['Text Editor','Code','Check'],this.df.fieldtype)?this.label_area:this.wrapper;this.desc_area=$a(p,'div','field_description','',this.df.description) +Field.prototype.set_description=function(){if(this.df.description){var p=in_list(['Text Editor','Code','Check'],this.df.fieldtype)?this.label_area:this.wrapper;this.desc_area=$a(p,'div','help','',this.df.description) if(in_list(['Text Editor','Code'],this.df.fieldtype)) $(this.desc_area).addClass('field_description_top');}} Field.prototype.get_status=function(){if(this.in_filter)this.not_in_form=this.in_filter;if(this.not_in_form){return'Write';} @@ -1607,14 +1609,14 @@ this.timestamp_area=$a($a(div,'div','',{marginTop:'3px'}),'span','field_descript _f.FrmHeader.prototype.show=function(){$ds(this.wrapper);} _f.FrmHeader.prototype.hide=function(){$dh(this.wrapper);} _f.FrmHeader.prototype.refresh=function(){var me=this;var p=cur_frm.get_doc_perms();this.page_head.clear_toolbar();if(cur_frm.meta.read_only_onload&&!cur_frm.doc.__islocal){if(!cur_frm.editable) -this.page_head.add_button('Edit',function(){cur_frm.edit_doc();},1,'ui-icon-document',1);else -this.page_head.add_button('Print View',function(){cur_frm.is_editable[cur_frm.docname]=0;cur_frm.refresh();},1,'ui-icon-document');} +this.page_head.add_button('Edit',function(){cur_frm.edit_doc();},1,'icon-pencil',1);else +this.page_head.add_button('Print View',function(){cur_frm.is_editable[cur_frm.docname]=0;cur_frm.refresh();},1,'icon-print');} if(cur_frm.editable&&cint(cur_frm.doc.docstatus)==0&&p[WRITE]) -this.page_head.add_button('Save',function(){cur_frm.save('Save');},1,'ui-icon-disk',1);if(cint(cur_frm.doc.docstatus)==0&&p[SUBMIT]&&(!cur_frm.doc.__islocal)) -this.page_head.add_button('Submit',function(){cur_frm.savesubmit();},0,'ui-icon-locked');if(cint(cur_frm.doc.docstatus)==1&&p[SUBMIT]){this.update_btn=this.page_head.add_button('Update',function(){cur_frm.saveupdate();},1,'ui-icon-disk',1);if(!cur_frm.doc.__unsaved)$dh(this.update_btn);} +this.page_head.add_button('Save',function(){cur_frm.save('Save');},1,'icon-ok',1);if(cint(cur_frm.doc.docstatus)==0&&p[SUBMIT]&&(!cur_frm.doc.__islocal)) +this.page_head.add_button('Submit',function(){cur_frm.savesubmit();},0,'icon-lock');if(cint(cur_frm.doc.docstatus)==1&&p[SUBMIT]){this.update_btn=this.page_head.add_button('Update',function(){cur_frm.saveupdate();},1,'icon-ok',1);if(!cur_frm.doc.__unsaved)$dh(this.update_btn);} if(cint(cur_frm.doc.docstatus)==1&&p[CANCEL]) -this.page_head.add_button('Cancel',function(){cur_frm.savecancel()},0,'ui-icon-closethick');if(cint(cur_frm.doc.docstatus)==2&&p[AMEND]) -this.page_head.add_button('Amend',function(){cur_frm.amend_doc()},0,'ui-icon-scissors');} +this.page_head.add_button('Cancel',function(){cur_frm.savecancel()},0,'icon-remove');if(cint(cur_frm.doc.docstatus)==2&&p[AMEND]) +this.page_head.add_button('Amend',function(){cur_frm.amend_doc()},0,'icon-pencil');} _f.FrmHeader.prototype.show_toolbar=function(){$ds(this.wrapper);this.refresh();} _f.FrmHeader.prototype.hide_toolbar=function(){$dh(this.wrapper);} _f.FrmHeader.prototype.refresh_toolbar=function(){var m=cur_frm.meta;if(m.hide_heading||cur_frm.in_dialog){this.hide();}else{this.show();if(m.hide_toolbar){this.hide_toolbar();}else{this.show_toolbar();}}} @@ -1626,7 +1628,7 @@ var sp1=null;var sp2=null;if(doc.__islocal){label='Unsaved Draft';col='#F81';}el sp1=make_tag(label,col);this.set_in_recent(doc,col);return[sp1,sp2];} _f.FrmHeader.prototype.set_in_recent=function(doc,col){var tn=$i('rec_'+doc.doctype+'-'+doc.name);if(tn) $y(tn,{backgroundColor:col});} -_f.FrmHeader.prototype.set_save_submit_color=function(doc){var save_btn=this.page_head.buttons['Save'];var submit_btn=this.page_head.buttons['Submit'];if(cint(doc.docstatus)==0&&submit_btn&&save_btn){if(cint(doc.__unsaved)){$(save_btn).addClass('btn-info');$(submit_btn).removeClass('btn-info');}else{$(submit_btn).addClass('btn-info');$(save_btn).removeClass('btn-info');}}} +_f.FrmHeader.prototype.set_save_submit_color=function(doc){var save_btn=this.page_head.buttons['Save'];var submit_btn=this.page_head.buttons['Submit'];if(cint(doc.docstatus)==0&&submit_btn&&save_btn){if(cint(doc.__unsaved)){$(save_btn).addClass('btn-info');$(save_btn).find('i').addClass('icon-white');$(submit_btn).removeClass('btn-info');$(submit_btn).find('i').removeClass('icon-white');}else{$(submit_btn).addClass('btn-info');$(submit_btn).find('i').addClass('icon-white');$(save_btn).removeClass('btn-info');$(save_btn).find('i').removeClass('icon-white');}}} _f.FrmHeader.prototype.refresh_labels=function(f){var ph=this.page_head;var me=this;this.dt_area.innerHTML=get_doctype_label(f.doctype);this.dn_area.innerHTML='';if(!f.meta.issingle) this.dn_area.innerHTML=f.docname;var doc=locals[f.doctype][f.docname];var sl=this.get_status_tags(doc,f);this.set_save_submit_color(doc);var t=this.status_area;t.innerHTML='';t.appendChild(sl[0]);if(sl[1])t.appendChild(sl[1]);this.timestamp_area.innerHTML=me.get_timestamp(doc);} /* @@ -1707,7 +1709,7 @@ if(!this.display)this.show_the_frm();if(!this.meta.in_dialog)page_body.change_to _f.Frm.prototype.refresh_footer=function(){var f=this.page_layout.footer;if(f.save_area){if(get_url_arg('embed')||(this.editable&&!this.meta.in_dialog&&this.doc.docstatus==0&&!this.meta.istable&&this.get_doc_perms()[WRITE])){f.show_save();}else{f.hide_save();}}} _f.Frm.prototype.refresh_fields=function(){for(var i=0;i\
%(label)s\
%(description)s
\ -
',this.df));this.$expand=$(this.row.main_head).find('.form-section-head').click(function(){if($(me.row.main_head).find('h3').length){me.section_collapse();}else{me.section_expand();} + ',this.df));this.$expand=$(this.row.main_head).find('.head').click(function(){if($(me.row.main_head).find('h3').length){me.section_collapse();}else{me.section_expand();} return false;});this.collapsible=true;}else{$(this.wrapper).html('
');} -this.section_collapse=function(){$(me.row.main_head).find('.head').html(' \ +this.section_collapse=function(){$(me.row.main_head).find('.head').html(' \ Show "'+me.df.label+'"');$(me.row.main_body).toggle(false);} -this.section_expand=function(){$(me.row.main_head).find('.head').html('

' -+me.df.label+'

');$(me.row.main_body).slideDown();} +this.section_expand=function(no_animation){$(me.row.main_head).find('.head').html('

' ++me.df.label+'

');if(no_animation) +$(me.row.main_body).toggle(true);else +$(me.row.main_body).slideDown();} $y(this.row.body,{marginLeft:'17px'});} _f.SectionBreak.prototype.has_data=function(){var me=this;for(var i in me.fields){var f=me.fields[i];var v=f.get_value?f.get_value():null;defaultval=f.df['default']||sys_defaults[f.fieldname]||user_defaults[f.fieldname];if(v&&v!=defaultval){return true;} if(f.df.reqd&&!v){return true;} if(f.df.fieldtype=='Table'){if(f.grid.get_children().length||f.df.reqd){return true;}}} return false;} -_f.SectionBreak.prototype.refresh=function(layout){if(this.df.hidden){if(this.row)this.row.hide();}else{if(this.collapsible){if(this.has_data()){this.section_expand();}else{this.section_collapse();}}}} +_f.SectionBreak.prototype.refresh=function(from_form){if(this.df.hidden){if(this.row)this.row.hide();}else{if(this.collapsible){if(this.has_data()){this.section_expand(from_form);}else{this.section_collapse();}}}} _f.ImageField=function(){this.images={};} _f.ImageField.prototype=new Field();_f.ImageField.prototype.onmake=function(){this.no_img=$a(this.wrapper,'div','no_img');this.no_img.innerHTML="No Image";$dh(this.no_img);} _f.ImageField.prototype.get_image_src=function(doc){if(doc.file_list){file=doc.file_list.split(',');extn=file[0].split('.');extn=extn[extn.length-1].toLowerCase();var img_extn_list=['gif','jpg','bmp','jpeg','jp2','cgm','ief','jpm','jpx','png','tiff','jpe','tif'];if(in_list(img_extn_list,extn)){var src=wn.request.url+"?cmd=downloadfile&file_id="+file[1];}}else{var src="";} diff --git a/js/all-web.js b/js/all-web.js index cc36f46ba2..d37f7a7de7 100644 --- a/js/all-web.js +++ b/js/all-web.js @@ -114,7 +114,7 @@ wn.get_cookie=function(c){var t=""+document.cookie;var ind=t.indexOf(c);if(ind== /* * lib/js/wn/model.js */ -wn.provide('wn.model');wn.model.no_value_type=['Section Break','Column Break','HTML','Table','Button','Image']; +wn.provide('wn.model');wn.model.no_value_type=['Section Break','Column Break','HTML','Table','Button','Image'];wn.model.can_delete=function(doctype){if(!doctype)return false;return locals.DocType[doctype].allow_trash&&wn.boot.profile.can_cancel.indexOf(doctype)!=-1;} /* * lib/js/wn/page.js */ @@ -170,6 +170,7 @@ if(r.exc){errprint(r.exc);console.log(r.exc);};if(r.docs)LocalDB.sync(r.docs);} wn.request.call=function(opts){wn.request.prepare(opts);$.ajax({url:opts.url||wn.request.url,data:opts.args,type:opts.type||'POST',dataType:opts.dataType||'json',success:function(r,xhr){wn.request.cleanup(opts,r);opts.success(r,xhr.responseText);},error:function(xhr,textStatus){wn.request.cleanup(opts,{});msgprint('Unable to complete request: '+textStatus) if(opts.error)opts.error(xhr)}})} wn.call=function(opts){var args=opts.args||{};if(opts.module&&opts.page){args.cmd=opts.module+'.page.'+opts.page+'.'+opts.page+'.'+opts.method}else if(opts.method){args.cmd=opts.method;} +for(key in args){if(args[key]&&typeof args[key]!='string'){args[key]=JSON.stringify(args[key]);}} wn.request.call({args:args,success:opts.callback,error:opts.error,btn:opts.btn,freeze:opts.freeze,show_spinner:!opts.no_spinner});} /* * lib/js/core.js @@ -435,7 +436,7 @@ if(this.onmake)this.onmake();} Field.prototype.set_max_width=function(){var no_max=['Code','Text Editor','Text','Table','HTML'] if(this.wrapper&&this.layout_cell&&this.layout_cell.parentNode.cells&&this.layout_cell.parentNode.cells.length==1&&!in_list(no_max,this.df.fieldtype)){$y(this.wrapper,{paddingRight:'50%'});}} Field.prototype.set_label=function(){if(this.with_label&&this.label_area&&this.label!=this.df.label){this.label_span.innerHTML=this.df.label;this.label=this.df.label;}} -Field.prototype.set_description=function(){if(this.df.description){var p=in_list(['Text Editor','Code','Check'],this.df.fieldtype)?this.label_area:this.wrapper;this.desc_area=$a(p,'div','field_description','',this.df.description) +Field.prototype.set_description=function(){if(this.df.description){var p=in_list(['Text Editor','Code','Check'],this.df.fieldtype)?this.label_area:this.wrapper;this.desc_area=$a(p,'div','help','',this.df.description) if(in_list(['Text Editor','Code'],this.df.fieldtype)) $(this.desc_area).addClass('field_description_top');}} Field.prototype.get_status=function(){if(this.in_filter)this.not_in_form=this.in_filter;if(this.not_in_form){return'Write';} @@ -679,30 +680,23 @@ this.widgets[d[1]]=b;}} /* * lib/js/wn/ui/listing.js */ -wn.provide('wn.ui');wn.ui.Listing=Class.extend({init:function(opts){this.opts=opts||{};this.page_length=20;this.start=0;this.data=[];if(opts){this.make();}},prepare_opts:function(){if(this.opts.new_doctype) -this.opts.new_doctype=get_doctype_label(this.opts.new_doctype);if(!this.opts.no_result_message){this.opts.no_result_message='Nothing to show'}},make:function(opts){if(opts){this.opts=opts;} -$.extend(this,this.opts);this.prepare_opts();$(this.parent).html(repl('\ +wn.provide('wn.ui');wn.ui.Listing=Class.extend({init:function(opts){this.opts=opts||{};this.page_length=20;this.start=0;this.data=[];if(opts){this.make();}},prepare_opts:function(){if(this.opts.new_doctype){if(wn.boot.profile.can_read.indexOf(this.opts.new_doctype)==-1){this.opts.new_doctype=null;}else{this.opts.new_doctype=get_doctype_label(this.opts.new_doctype);}} +if(!this.opts.no_result_message){this.opts.no_result_message='Nothing to show'}},make:function(opts){if(opts){this.opts=opts;} +this.prepare_opts();$.extend(this,this.opts);$(this.parent).html(repl('\
\ -
\ - \ - List\ - \ - Grid\ -
\ - \

%(title)s

\
\ - \ + class="img-load" style="float: left;"/>\ +
\ \
\
\ @@ -727,30 +721,26 @@ $.extend(this,this.opts);this.prepare_opts();$(this.parent).html(repl('\
\
\
\ - ',this.opts));this.$w=$(this.parent).find('.wnlist');this.set_events();this.make_filters();},show_view:function($btn,$div,$btn_unsel,$div_unsel){$btn_unsel.removeClass('btn-info');$btn_unsel.find('i').removeClass('icon-white');$div_unsel.toggle(false);$btn.addClass('btn-info');$btn.find('i').addClass('icon-white');$div.toggle(true);},set_events:function(){var me=this;this.$w.find('.btn-refresh').click(function(){me.run();});this.$w.find('.btn-more').click(function(){me.run({append:true});});this.$w.find('.btn-list').click(function(){me.show_view($(this),me.$w.find('.result-list'),me.$w.find('.btn-grid'),me.$w.find('.result-grid'))});this.$w.find('.btn-grid').click(function(){me.show_view($(this),me.$w.find('.result-grid'),me.$w.find('.btn-list'),me.$w.find('.result-list'))});if(this.title){this.$w.find('h3').html(this.title).toggle(true);} + ',this.opts));this.$w=$(this.parent).find('.wnlist');this.set_events();this.make_filters();},add_button:function(html,onclick,before){$(html).click(onclick).insertBefore(this.$w.find('.list-toolbar '+before));this.btn_groupify();},show_view:function($btn,$div,$btn_unsel,$div_unsel){$btn_unsel.removeClass('btn-info');$btn_unsel.find('i').removeClass('icon-white');$div_unsel.toggle(false);$btn.addClass('btn-info');$btn.find('i').addClass('icon-white');$div.toggle(true);},set_events:function(){var me=this;this.$w.find('.btn-refresh').click(function(){me.run();});this.$w.find('.btn-more').click(function(){me.run({append:true});});if(this.title){this.$w.find('h3').html(this.title).toggle(true);} if(this.new_doctype){this.$w.find('.btn-new').toggle(true).click(function(){newdoc(me.new_doctype,me.new_doc_onload,true,me.new_doc_onsave);})}else{this.$w.find('.btn-new').remove();} if(!me.show_filters){this.$w.find('.btn-filter').remove();} if(this.hide_refresh||this.no_refresh){this.$w.find('.btn-refresh').remove();} -if(this.show_grid){this.$w.find('.select-view').toggle(true);} -if(this.$w.find('.list-toolbar a').length>1){this.$w.find('.list-toolbar').addClass('btn-group')} -if(this.$w.find('.list-toolbar a[hidden!="hidden"]').length==0){this.$w.find('.list-toolbar-wrapper').toggle(false);}},make_filters:function(){this.filter_list=new wn.ui.FilterList({listobj:this,$parent:this.$w.find('.list-filters').toggle(true),doctype:this.doctype,filter_fields:this.filter_fields});},clear:function(){this.data=[];this.$w.find('.result-list').empty();this.$w.find('.result').toggle(true);this.$w.find('.no-result').toggle(false);this.start=0;},run:function(){var me=this;var a0=arguments[0];var a1=arguments[1];if(a0&&typeof a0=='function') +this.btn_groupify();},btn_groupify:function(){var nbtns=this.$w.find('.list-toolbar a').length;if(nbtns>1){this.$w.find('.list-toolbar').addClass('btn-group')} +if(nbtns==0){this.$w.find('.list-toolbar-wrapper').toggle(false);}},make_filters:function(){this.filter_list=new wn.ui.FilterList({listobj:this,$parent:this.$w.find('.list-filters').toggle(true),doctype:this.doctype,filter_fields:this.filter_fields});},clear:function(){this.data=[];this.$w.find('.result-list').empty();this.$w.find('.result').toggle(true);this.$w.find('.no-result').toggle(false);this.start=0;},run:function(){var me=this;var a0=arguments[0];var a1=arguments[1];if(a0&&typeof a0=='function') this.onrun=a0;if(a0&&a0.callback) this.onrun=a0.callback;if(!a1&&!(a0&&a0.append)) -this.start=0;me.$w.find('.img-load').toggle(true);wn.call({method:this.opts.method||'webnotes.widgets.query_builder.runquery',args:this.get_call_args(),callback:function(r){me.$w.find('.img-load').toggle(false);me.render_results(r)},no_spinner:this.opts.no_loading,btn:this.run_btn});},get_call_args:function(){if(!this.method){this.query=this.get_query?this.get_query():this.query;this.add_limits();var args={query_max:this.query_max,as_dict:1} +this.start=0;me.set_working(true);wn.call({method:this.opts.method||'webnotes.widgets.query_builder.runquery',args:this.get_call_args(),callback:function(r){me.set_working(false);me.render_results(r)},no_spinner:this.opts.no_loading,btn:this.run_btn});},set_working:function(flag){this.$w.find('.img-load').toggle(flag);},get_call_args:function(){if(!this.method){this.query=this.get_query?this.get_query():this.query;this.add_limits();var args={query_max:this.query_max,as_dict:1} args.simple_query=this.query;}else{var args={limit_start:this.start,limit_page_length:this.page_length}} if(this.args) $.extend(args,this.args) if(this.get_args){$.extend(args,this.get_args());} -return args;},render_results:function(r){if(this.start==0)this.clear();this.$w.find('.btn-more').toggle(false);if(r.message)r.values=r.message;if(r.values&&r.values.length){this.data=this.data.concat(r.values);this.render_list(r.values);if(this.show_grid){this.render_grid();}}else{if(this.start==0){this.$w.find('.result').toggle(false);this.$w.find('.no-result').toggle(true);}} -if(this.onrun)this.onrun();if(this.callback)this.callback(r);},render_grid:function(){if(this.columns[0].field!='_idx'){this.columns=[{field:'_idx',name:'Sr.',width:40}].concat(this.columns);} -$.each(this.columns,function(i,c){if(!c.id)c.id=c.field;}) -$.each(this.data,function(i,v){v._idx=i+1;}) -wn.require('lib/js/lib/slickgrid/slick.grid.css');wn.require('lib/js/lib/slickgrid/slick-default-theme.css');wn.require('lib/js/lib/slickgrid/jquery.event.drag.min.js');wn.require('lib/js/lib/slickgrid/slick.core.js');wn.require('lib/js/lib/slickgrid/slick.grid.js');var options={enableCellNavigation:true,enableColumnReorder:false};grid=new Slick.Grid(this.$w.find('.result-grid').css('border','1px solid grey').css('height','500px').get(0),this.data,this.columns,options);},render_list:function(values){var m=Math.min(values.length,this.page_length);for(var i=0;i=this.page_length) this.$w.find('.btn-more').toggle(true);},add_row:function(){return this.$w.find('.result-list').append('
').find('.list-row:last').get(0);},refresh:function(){this.run();},add_limits:function(){this.query+=' LIMIT '+this.start+','+(this.page_length+1);}});wn.ui.FilterList=Class.extend({init:function(opts){$.extend(this,opts);this.filters=[];this.$w=this.$parent;this.set_events();},set_events:function(){var me=this;this.listobj.$w.find('.btn-filter').bind('click',function(){me.$w.find('.show_filters').slideToggle();if(!me.filters.length) -me.add_filter();});this.$w.find('.add-filter-btn').bind('click',function(){me.add_filter();});},add_filter:function(fieldname,condition,value){this.filters.push(new wn.ui.Filter({flist:this,fieldname:fieldname,condition:condition,value:value}));},get_filters:function(){var values=[];$.each(this.filters,function(i,f){if(f.filter_field) +me.add_filter();});this.$w.find('.add-filter-btn').bind('click',function(){me.add_filter();});},add_filter:function(fieldname,condition,value){this.filters.push(new wn.ui.Filter({flist:this,fieldname:fieldname,condition:condition,value:value}));if(fieldname){this.$w.find('.show_filters').slideDown();}},get_filters:function(){var values=[];$.each(this.filters,function(i,f){if(f.field) values.push(f.get_value());}) -return values;},update_filters:function(){var fl=[];$.each(this.filters,function(i,f){if(f.filter_field)fl.push(f);}) +return values;},update_filters:function(){var fl=[];$.each(this.filters,function(i,f){if(f.field)fl.push(f);}) this.filters=fl;}});wn.ui.Filter=Class.extend({init:function(opts){$.extend(this,opts);this.doctype=this.flist.doctype;this.fields_by_name={};this.make();this.make_options();this.set_events();},make:function(){this.flist.$w.find('.filter_area').append('
\ \ \ \ ×\
');this.$w=this.flist.$w.find('.list_filter:last-child');this.$select=this.$w.find('.fieldname_select');},make_options:function(){if(this.filter_fields){for(var i in this.filter_fields) -this.add_field_option(this.filter_fields[i])}else{this.render_field_select();}},set_events:function(){var me=this;this.$w.find('.fieldname_select').bind('change',function(){me.set_field(this.value);});this.$w.find('a.close').bind('click',function(){me.$w.css('display','none');var value=me.filter_field.get_value();me.filter_field=null;if(!me.flist.get_filters().length){me.flist.$w.find('.set_filters').toggle(true);me.flist.$w.find('.show_filters').toggle(false);} +this.add_field_option(this.filter_fields[i])}else{this.render_field_select();}},set_events:function(){var me=this;this.$w.find('.fieldname_select').bind('change',function(){me.set_field(this.value);});this.$w.find('a.close').bind('click',function(){me.$w.css('display','none');var value=me.field.get_value();me.field=null;if(!me.flist.get_filters().length){me.flist.$w.find('.set_filters').toggle(true);me.flist.$w.find('.show_filters').toggle(false);} if(value){me.flist.listobj.run();} -me.flist.update_filters();return false;});if(me.fieldname){me.set_field(me.fieldname);if(me.condition)me.$w.find('.condition').val(me.condition) -if(me.value)me.filter_field.set_input(me.value)}else{me.set_field('name');}},render_field_select:function(){var me=this;me.table_fields=[];var std_filters=[{fieldname:'name',fieldtype:'Data',label:'ID',parent:me.doctype},{fieldname:'modified',fieldtype:'Date',label:'Last Modified',parent:me.doctype},{fieldname:'owner',fieldtype:'Data',label:'Created By',parent:me.doctype},{fieldname:'_user_tags',fieldtype:'Data',label:'Tags',parent:me.doctype}];$.each(std_filters.concat(fields_list[me.doctype]),function(i,df){me.add_field_option(df);});$.each(me.table_fields,function(i,table_df){if(table_df.options){$.each(fields_list[table_df.options],function(i,df){me.add_field_option(df);});}})},add_field_option:function(df){var me=this;if(me.doctype&&df.parent==me.doctype){var label=df.label;var table=get_label_doctype(me.doctype);if(df.fieldtype=='Table')me.table_fields.push(df);}else{var label=df.label+' ('+df.parent+')';var table=df.parent;} -if(wn.model.no_value_type.indexOf(df.fieldtype)==-1&&!me.fields_by_name[df.fieldname]){this.$select.append($('