listview update and form fix
This commit is contained in:
parent
4d433ccce7
commit
412588d193
9 changed files with 117 additions and 54 deletions
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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
24
js/core.min.js
vendored
|
|
@ -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
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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 }
|
||||
},
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue