From 412588d193cfbf17694fdfa2e9feb121bda8583a Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Tue, 20 Mar 2012 18:45:33 +0530 Subject: [PATCH] listview update and form fix --- css/Aristo/aristo.selected.css | 1 - css/ui/list.css | 25 +++++-- js/core.min.js | 24 +++--- js/legacy/webpage/page_header.js | 4 +- js/legacy/widgets/form/fields.js | 7 +- js/legacy/widgets/form/form_dialog.js | 5 +- js/legacy/widgets/form/grid.js | 1 - js/legacy/wn/widgets/form/sidebar.js | 2 +- js/wn/views/doclistview.js | 102 +++++++++++++++++++------- 9 files changed, 117 insertions(+), 54 deletions(-) diff --git a/css/Aristo/aristo.selected.css b/css/Aristo/aristo.selected.css index 83867afd71..8d7a529531 100644 --- a/css/Aristo/aristo.selected.css +++ b/css/Aristo/aristo.selected.css @@ -391,7 +391,6 @@ margin: -1px; background: #5f83b9; color: #FFFFFF; - text-shadow: 0px 1px 1px #234386; border-color: #466086; -moz-border-radius: 0; -webkit-border-radius: 0; diff --git a/css/ui/list.css b/css/ui/list.css index 9994f30c35..607ce9563b 100644 --- a/css/ui/list.css +++ b/css/ui/list.css @@ -21,12 +21,23 @@ div.list-row { div.list-row:hover { background-color: #eef } + div.list-row .label { - margin-left: 3px; + margin-right: 4px; } -div.list-row .main { - margin-left: 4px; - color: #444; + +div.list-row table { + table-layout: fixed; + border-collapse: collapse; + width: 100%; +} + +div.list-row table td { + overflow: hidden; + padding-right: 3px; + vertical-align: middle; + height: 24px; + max-height: 24px; } div.paging-button { @@ -80,9 +91,13 @@ span.bar-inner { background-color: #bdf; height: 100%; margin-bottom: 2px; + float: left; } span.bar-complete { - background-color: green; + background-color: #009900; +} +span.bar-empty { + background-color: #990000; } diff --git a/js/core.min.js b/js/core.min.js index 39dcd54c39..793a91e84e 100644 --- a/js/core.min.js +++ b/js/core.min.js @@ -249,17 +249,19 @@ args.label=v[0];args.width=flt(v[1])/max*100;args.count=v[1];args.field=field;$i %(label)s \ (%(count)s)\ ',args));this.setup_stat_item_click($item);return $item;},setup_stat_item_click:function($item){var me=this;$item.find('a').click(function(){var fieldname=$(this).attr('data-field');var label=$(this).attr('data-label');me.set_filter(fieldname,label);return false;});},set_filter:function(fieldname,label){var filter=this.filter_list.get_filter(fieldname);if(filter){var v=filter.field.get_value();if(v.indexOf(label)!=-1){return false;}else{if(fieldname=='_user_tags'){this.filter_list.add_filter(fieldname,'like','%'+label);}else{filter.set_values(fieldname,'in',v+', '+label);}}}else{if(fieldname=='_user_tags'){this.filter_list.add_filter(fieldname,'like','%'+label);}else{this.filter_list.add_filter(fieldname,'=',label);}} -this.run();}});wn.views.ListView=Class.extend({init:function(doclistview){this.doclistview=doclistview;this.doctype=doclistview.doctype;var t="`tab"+this.doctype+"`.";this.fields=[t+'name',t+'owner',t+'docstatus',t+'_user_tags',t+'modified'];this.stats=['_user_tags']},render:function(row,data){this.prepare_data(data);$(row).html(repl(' \ - \ - \ - %(name)s\ - \ - %(when)s\ - \ - ',data)).addClass('list-row');this.hide_delete(row,data);this.add_user_tags(row,data);this.$main=$(row).find('.main');},prepare_data:function(data){data.fullname=wn.user_info(data.owner).fullname;data.avatar=wn.user_info(data.owner).image;data.when=dateutil.str_to_user(data.modified).split(' ')[0];if(data.docstatus==0||data.docstatus==null){data.docstatus_icon='icon-pencil';data.docstatus_title='Editable';}else if(data.docstatus==1){data.docstatus_icon='icon-lock';data.docstatus_title='Submitted';}else if(data.docstatus==2){data.docstatus_icon='icon-remove';data.docstatus_title='Cancelled';}},hide_delete:function(row,data){if(this.parent.can_delete){$(row).find('.list-check').removeClass('hide');$(row).find('.list-check input').data('name',data.name);}},add_user_tags:function(row,data){var me=this;if(data._user_tags){$.each(data._user_tags.split(','),function(i,t){if(t){$('' -+strip(t)+'').click(function(){me.doclistview.set_filter('_user_tags',$(this).text())}).appendTo($(row).find('.tags'));}});}}}) +this.run();}});wn.views.ListView=Class.extend({init:function(doclistview){this.doclistview=doclistview;this.doctype=doclistview.doctype;var t="`tab"+this.doctype+"`.";this.fields=[t+'name',t+'owner',t+'docstatus',t+'_user_tags',t+'modified'];this.stats=['_user_tags'];if(!this.doclistview.can_delete){this.columns=$.map(this.columns,function(v,i){if(v.content!='check')return v});}},columns:[{width:'5%',content:'check'},{width:'5%',content:'avatar'},{width:'5%',content:'docstatus',css:{"text-align":"center"}},{width:'30%',content:'name'},{width:'40%',content:'tags',css:{'color':'#aaa'}},{width:'10%',content:'modified',css:{'text-align':'right','color':'#777'}}],render_column:function(data,parent,opts){var me=this;if(opts.css){$.each(opts.css,function(k,v){$(parent).css(k,v)});} +if(opts.content.indexOf&&opts.content.indexOf('+')!=-1){$.map(opts.content.split('+'),function(v){me.render_column(data,parent,{content:v});});return;} +if(typeof opts.content=='function'){opts.content(parent,data);} +else if(opts.content=='name'){$(parent).html(repl('%(name)s',data));} +else if(opts.content=='avatar'){$(parent).html(repl('',data));} +else if(opts.content=='check'){$(parent).html('');$(parent).find('input').data('name',data.name);} +else if(opts.content=='docstatus'){$(parent).html(repl('',data));} +else if(opts.content=='tags'){this.add_user_tags(parent,data);} +else if(opts.content=='modified'){$(parent).append(data.when);} +else if(data[opts.content]){$(parent).append(data[opts.content]);}},render:function(row,data){var me=this;this.prepare_data(data);rowhtml='';$.each(this.columns,function(i,v){rowhtml+=repl('',v);});var tr=$(row).html(''+rowhtml+'
').find('tr').get(0);$.each(this.columns,function(i,v){me.render_column(data,tr.cells[i],v);});},prepare_data:function(data){data.fullname=wn.user_info(data.owner).fullname;data.avatar=wn.user_info(data.owner).image;data.when=dateutil.str_to_user(data.modified).split(' ')[0];if(data.docstatus==0||data.docstatus==null){data.docstatus_icon='icon-pencil';data.docstatus_title='Editable';}else if(data.docstatus==1){data.docstatus_icon='icon-lock';data.docstatus_title='Submitted';}else if(data.docstatus==2){data.docstatus_icon='icon-remove';data.docstatus_title='Cancelled';}},add_user_tags:function(parent,data){var me=this;if(data._user_tags){$.each(data._user_tags.split(','),function(i,t){if(t){$('' ++strip(t)+'').click(function(){me.doclistview.set_filter('_user_tags',$(this).text())}).appendTo(parent);}});}}}) /* * lib/js/wn/views/pageview.js */ diff --git a/js/legacy/webpage/page_header.js b/js/legacy/webpage/page_header.js index b996f009a1..b0b2d3ef75 100644 --- a/js/legacy/webpage/page_header.js +++ b/js/legacy/webpage/page_header.js @@ -38,8 +38,8 @@ var def_ph_style = { wrapper: {marginBottom:'16px', backgroundColor:'#EEE'} ,main_heading: { } ,sub_heading: { marginBottom:'8px', color:'#555', display:'none' } - ,separator: { borderTop:'3px solid #777' } // show this when there is no toolbar - ,toolbar_area: { padding:'3px 0px', display:'none',borderBottom:'1px solid #AAA'} + ,separator: { borderTop:'1px solid #ddd' } // show this when there is no toolbar + ,toolbar_area: { padding:'3px 0px', display:'none',borderBottom:'1px solid #ddd'} } function PageHeader(parent, main_text, sub_text) { diff --git a/js/legacy/widgets/form/fields.js b/js/legacy/widgets/form/fields.js index 50bbca5c9b..aec5e45abd 100644 --- a/js/legacy/widgets/form/fields.js +++ b/js/legacy/widgets/form/fields.js @@ -296,9 +296,6 @@ Field.prototype.set = function(val) { if((!this.docname) && this.grid) { this.docname = this.grid.add_newrow(); // new row } - // cleanup ms word quotes - if(in_list(['Data','Text','Small Text','Code'], this.df.fieldtype)) - val = clean_smart_quotes(val); var set_val = val; if(this.validate)set_val = this.validate(val); @@ -741,6 +738,10 @@ LinkField.prototype.set_input_value = function(val) { if(r.message=='Ok') { // set fetch values + if($(me.txt).val()!=val) { + me.set_input(val); + } + if(r.fetch_values) me.set_fetch_values(r.fetch_values); diff --git a/js/legacy/widgets/form/form_dialog.js b/js/legacy/widgets/form/form_dialog.js index 6bb197f15d..5905d7c1bb 100644 --- a/js/legacy/widgets/form/form_dialog.js +++ b/js/legacy/widgets/form/form_dialog.js @@ -78,8 +78,9 @@ _f.FrmDialog = function() { // ------------------------------------------- d.onhide = function() { // if called from grid, refresh the row - if(_f.cur_grid) - _f.cur_grid.refresh_row(_f.cur_grid_ridx, me.dn); + if(_f.cur_grid) { + _f.cur_grid.refresh_row(_f.cur_grid_ridx, me.dn); + } // set the new global cur_frm (if applicable) if(wn.container.page.frm) { diff --git a/js/legacy/widgets/form/grid.js b/js/legacy/widgets/form/grid.js index 38cbc1afba..5f75c335bb 100644 --- a/js/legacy/widgets/form/grid.js +++ b/js/legacy/widgets/form/grid.js @@ -282,7 +282,6 @@ _f.Grid.prototype.cell_deselect = function() { if(c.is_odd) c.div.style.border = '2px solid ' + c.grid.alt_row_bg; else c.div.style.border = '2px solid #FFF'; _f.cur_grid_cell = null; - _f.cur_grid = null; } } diff --git a/js/legacy/wn/widgets/form/sidebar.js b/js/legacy/wn/widgets/form/sidebar.js index c238d5e023..efe80a733f 100644 --- a/js/legacy/wn/widgets/form/sidebar.js +++ b/js/legacy/wn/widgets/form/sidebar.js @@ -43,7 +43,7 @@ wn.widgets.form.sidebar = { Sidebar: function(form) { label: 'List', icon: 'icon-list', display: function() { - return true; + return !me.form.meta.issingle; }, onclick: function() { window.location.href="#!List/" + me.form.doctype } }, diff --git a/js/wn/views/doclistview.js b/js/wn/views/doclistview.js index efc5e4129c..ba79a09149 100644 --- a/js/wn/views/doclistview.js +++ b/js/wn/views/doclistview.js @@ -286,27 +286,82 @@ wn.views.ListView = Class.extend({ var t = "`tab"+this.doctype+"`."; this.fields = [t + 'name', t + 'owner', t + 'docstatus', t + '_user_tags', t + 'modified']; - this.stats = ['_user_tags'] + this.stats = ['_user_tags']; + + if(!this.doclistview.can_delete) { + this.columns = $.map(this.columns, function(v, i) { if(v.content!='check') return v }); + } + }, + columns: [ + {width: '5%', content:'check'}, + {width: '5%', content:'avatar'}, + {width: '5%', content:'docstatus', css: {"text-align": "center"}}, + {width: '30%', content:'name'}, + {width: '40%', content:'tags', css: {'color':'#aaa'}}, + {width: '10%', content:'modified', css: {'text-align': 'right', 'color':'#777'}} + ], + render_column: function(data, parent, opts) { + var me = this; + + // style + if(opts.css) { + $.each(opts.css, function(k, v) { $(parent).css(k, v)}); + } + + // multiple content + if(opts.content.indexOf && opts.content.indexOf('+')!=-1) { + $.map(opts.content.split('+'), function(v) { + me.render_column(data, parent, {content:v}); + }); + return; + } + + // content + if(typeof opts.content=='function') { + opts.content(parent, data); + } + else if(opts.content=='name') { + $(parent).html(repl('%(name)s', data)); + } + else if(opts.content=='avatar') { + $(parent).html(repl('', + data)); + } + else if(opts.content=='check') { + $(parent).html(''); + $(parent).find('input').data('name', data.name); + } + else if(opts.content=='docstatus') { + $(parent).html(repl('', data)); + } + else if(opts.content=='tags') { + this.add_user_tags(parent, data); + } + else if(opts.content=='modified') { + $(parent).append(data.when); + } + else if(data[opts.content]) { + $(parent).append(data[opts.content]); + } + }, render: function(row, data) { + var me = this; this.prepare_data(data); + rowhtml = ''; + + // make table + $.each(this.columns, function(i, v) { + rowhtml += repl('', v); + }); + var tr = $(row).html('' + rowhtml + '
').find('tr').get(0); - $(row).html(repl( - ' \ - \ - \ - %(name)s\ - \ - %(when)s\ - \ - ', data)) - .addClass('list-row'); - - this.hide_delete(row, data); - this.add_user_tags(row, data); - this.$main = $(row).find('.main'); + // render cells + $.each(this.columns, function(i, v) { + me.render_column(data, tr.cells[i], v); + }); }, prepare_data: function(data) { data.fullname = wn.user_info(data.owner).fullname; @@ -325,16 +380,7 @@ wn.views.ListView = Class.extend({ data.docstatus_title = 'Cancelled'; } }, - hide_delete: function(row, data) { - // hide delete - if(this.parent.can_delete) { - $(row).find('.list-check') - .removeClass('hide'); - $(row).find('.list-check input') - .data('name', data.name); - } - }, - add_user_tags: function(row, data) { + add_user_tags: function(parent, data) { var me = this; if(data._user_tags) { $.each(data._user_tags.split(','), function(i, t) { @@ -344,7 +390,7 @@ wn.views.ListView = Class.extend({ .click(function() { me.doclistview.set_filter('_user_tags', $(this).text()) }) - .appendTo($(row).find('.tags')); + .appendTo(parent); } }); }