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('').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('').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);
}
});
}