diff --git a/frappe/public/css/desk.css b/frappe/public/css/desk.css index 743eba419f..10308e2207 100644 --- a/frappe/public/css/desk.css +++ b/frappe/public/css/desk.css @@ -40,7 +40,6 @@ a.form-link { } .text-ellipsis { - display: inline-block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; @@ -148,6 +147,10 @@ div#freeze { /* list */ +.progress { + height: 10px; +} + .doclist-row { position: relative; padding-top: 5px; @@ -155,6 +158,18 @@ div#freeze { border-bottom: "1px solid #eee"; } +.doclist-row .progress { + margin-top: 12px; +} + +.doclist-row .filterable { + cursor: pointer; +} + +.doclist-row .label { + margin-right: 8px; +} + .list-timestamp { position: absolute; right: 15px; diff --git a/frappe/public/js/frappe/form/formatters.js b/frappe/public/js/frappe/form/formatters.js index e1dc1caed4..a2ce2ead19 100644 --- a/frappe/public/js/frappe/form/formatters.js +++ b/frappe/public/js/frappe/form/formatters.js @@ -147,3 +147,15 @@ frappe.format = function(value, df, options, doc) { return formatter(value, df, options, doc); } + +frappe.get_format_helper = function(doc) { + var helper = { + get_formatted: function(fieldname) { + var df = frappe.meta.get_docfield(doc.doctype, fieldname); + if(!df) { console.log("fieldname not found: " + fieldname); }; + return frappe.format(doc[fieldname], df, {inline:1}, doc); + } + }; + $.extend(helper, doc); + return helper; +} diff --git a/frappe/public/js/frappe/form/grid.js b/frappe/public/js/frappe/form/grid.js index 67ce0204fa..b363f53ccd 100644 --- a/frappe/public/js/frappe/form/grid.js +++ b/frappe/public/js/frappe/form/grid.js @@ -275,7 +275,10 @@ frappe.ui.form.GridRow = Class.extend({ if(this.grid.template) { $('
').appendTo(this.row) .html(frappe.render(this.grid.template, { - doc:this.doc || null, frm:this.frm, row: this})); + doc: this.doc ? frappe.get_format_helper(this.doc) : null, + frm: this.frm, + row: this + })); } else { this.add_visible_columns(); } @@ -318,7 +321,7 @@ frappe.ui.form.GridRow = Class.extend({ var df = this.static_display_template[ci][0]; var colsize = this.static_display_template[ci][1]; var txt = this.doc ? - this.get_formatted(df.fieldname) : + frappe.format(this.doc[df.fieldname], df, null, this.doc) : __(df.label); if(this.doc && df.fieldtype === "Select") { txt = __(txt); @@ -542,7 +545,8 @@ frappe.ui.form.GridRow = Class.extend({ refresh_field: function(fieldname) { var $col = this.row.find("[data-fieldname='"+fieldname+"']"); if($col.length) { - $col.html(this.get_formatted(fieldname)); + $col.html(frappe.format(this.doc[fieldname], + frappe.meta.get_docfield(this.doc.doctype, fieldname, this.frm.docname), null, this.frm.doc)); } // in form @@ -550,11 +554,6 @@ frappe.ui.form.GridRow = Class.extend({ this.fields_dict[fieldname].refresh(); } }, - get_formatted: function(fieldname) { - var df = frappe.meta.get_docfield(this.grid.doctype, fieldname, this.frm.docname); - if(!df) { console.log("fieldname not found: " + fieldname); } - return frappe.format(this.doc[fieldname], df, {inline:1}, this.doc); - }, get_visible_columns: function(blacklist) { var visible_columns = $.map(this.docfields, function(df) { if(df.print_hide || df.hidden diff --git a/frappe/public/js/frappe/views/doclistview.js b/frappe/public/js/frappe/views/doclistview.js index c3a07fc050..22fae23c2a 100644 --- a/frappe/public/js/frappe/views/doclistview.js +++ b/frappe/public/js/frappe/views/doclistview.js @@ -85,6 +85,7 @@ frappe.views.DocListView = frappe.ui.Listing.extend({ this.appframe.set_title_left(this.listview.settings.set_title_left); } this.make_help(); + this.setup_filterable(); this.$page.find(".show_filters").css({"padding":"15px", "margin":"0px -15px"}); var me = this; this.$w.on("render-complete", function() { @@ -101,6 +102,23 @@ frappe.views.DocListView = frappe.ui.Listing.extend({ this.$page.find(".layout-main-section").css({"min-height": h_side}); }, + setup_filterable: function() { + var me = this; + this.$page.on("click", ".filterable", function(e) { + var filters = $(this).attr("data-filter").split("|"); + $.each(filters, function(i, f) { + f = f.split(","); + if(f[2]==="Today") { + f[2] = frappe.datetime.get_today(); + } else if(f[2]=="User") { + f[2] = user; + } + me.filter_list.add_filter(me.doctype, f[0], f[1], f[2]); + }); + me.run(); + }) + }, + show_match_help: function() { var me = this; var match_rules = frappe.perm.get_match_rules(this.doctype); @@ -296,6 +314,7 @@ frappe.views.DocListView = frappe.ui.Listing.extend({ return $(e).parents(".list-row:first").data('data'); }); }, + delete_items: function() { var me = this; var dl = this.get_checked_items(); diff --git a/frappe/public/js/frappe/views/listview.js b/frappe/public/js/frappe/views/listview.js index 6ce220b49e..e6362d84a6 100644 --- a/frappe/public/js/frappe/views/listview.js +++ b/frappe/public/js/frappe/views/listview.js @@ -46,7 +46,7 @@ frappe.views.ListView = Class.extend({ // add title field if(this.meta.title_field) { - this.title_field = meta.title_field; + this.title_field = this.meta.title_field; add_field(this.meta.title_field); } @@ -181,17 +181,10 @@ frappe.views.ListView = Class.extend({ }, render_template: function (row, data) { - var me = this, - helper = { - get_formatted: function(fieldname) { - var df = frappe.meta.get_docfield(me.doctype, fieldname); - if(!df) { console.log("fieldname not found: " + fieldname); }; - return frappe.format(data[fieldname], df, {inline:1}, data); - } - }; - $(frappe.render(this.template, - { doc : data, list : this, row : helper})) - .appendTo($('
').appendTo(row)); + $(frappe.render(this.template, { + doc: frappe.get_format_helper(data), + list: this + })).appendTo($('
').appendTo(row)); }, render_standard_columns: function(row, data) { @@ -327,7 +320,7 @@ frappe.views.ListView = Class.extend({ } // title - html += repl('%(title)s', { doctype: data.doctype, name: encodeURIComponent(data.name),