listview update and form fix

This commit is contained in:
Rushabh Mehta 2012-03-20 18:45:33 +05:30
parent 4d433ccce7
commit 412588d193
9 changed files with 117 additions and 54 deletions

View file

@ -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;

View file

@ -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;
}

24
js/core.min.js vendored
View file

@ -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</a> \
(%(count)s)</div>\
</div>',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('<span class="list-check hide"><input type="checkbox"></span> \
<span class="avatar-small"><img src="%(avatar)s" /></span> \
<span class="docstatus"><i class="%(docstatus_icon)s" \
title="%(docstatus_title)s"></i></span> \
<a href="#!Form/%(doctype)s/%(name)s">%(name)s</a>\
<span class="tags"></span> \
<span style="float:right; font-size: 11px; color: #888; \
margin-left: 8px;">%(when)s</span>\
<span class="main" style=""></span>\
',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){$('<span class="label label-info" style="cursor: pointer">'
+strip(t)+'</span>').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('<a href="#!Form/%(doctype)s/%(name)s">%(name)s</a>',data));}
else if(opts.content=='avatar'){$(parent).html(repl('<span class="avatar-small"><img src="%(avatar)s" \
title="%(fullname)s"/></span>',data));}
else if(opts.content=='check'){$(parent).html('<input type="checkbox">');$(parent).find('input').data('name',data.name);}
else if(opts.content=='docstatus'){$(parent).html(repl('<span class="docstatus"><i class="%(docstatus_icon)s" \
title="%(docstatus_title)s"></i></span>',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('<td style="width: %(width)s"></td>',v);});var tr=$(row).html('<table><tbody><tr>'+rowhtml+'</tr></tbody></table>').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){$('<span class="label label-info" style="cursor: pointer">'
+strip(t)+'</span>').click(function(){me.doclistview.set_filter('_user_tags',$(this).text())}).appendTo(parent);}});}}})
/*
* lib/js/wn/views/pageview.js
*/

View file

@ -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) {

View file

@ -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);

View file

@ -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) {

View file

@ -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;
}
}

View file

@ -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 }
},

View file

@ -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('<a href="#!Form/%(doctype)s/%(name)s">%(name)s</a>', data));
}
else if(opts.content=='avatar') {
$(parent).html(repl('<span class="avatar-small"><img src="%(avatar)s" \
title="%(fullname)s"/></span>',
data));
}
else if(opts.content=='check') {
$(parent).html('<input type="checkbox">');
$(parent).find('input').data('name', data.name);
}
else if(opts.content=='docstatus') {
$(parent).html(repl('<span class="docstatus"><i class="%(docstatus_icon)s" \
title="%(docstatus_title)s"></i></span>', 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('<td style="width: %(width)s"></td>', v);
});
var tr = $(row).html('<table><tbody><tr>' + rowhtml + '</tr></tbody></table>').find('tr').get(0);
$(row).html(repl(
'<span class="list-check hide"><input type="checkbox"></span> \
<span class="avatar-small"><img src="%(avatar)s" /></span> \
<span class="docstatus"><i class="%(docstatus_icon)s" \
title="%(docstatus_title)s"></i></span> \
<a href="#!Form/%(doctype)s/%(name)s">%(name)s</a>\
<span class="tags"></span> \
<span style="float:right; font-size: 11px; color: #888; \
margin-left: 8px;">%(when)s</span>\
<span class="main" style=""></span>\
', 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);
}
});
}