From 3fd98b0f80f4bfe20fbced3f4990f79065b06b1e Mon Sep 17 00:00:00 2001 From: Christophe Matthieu Date: Tue, 18 Sep 2012 17:30:35 +0200 Subject: [PATCH 1/3] [IMP]kanban : div widget many2many_tags => field bzr revid: chm@openerp.com-20120918153035-xutvjflw057s8t18 --- addons/web_kanban/static/src/js/kanban.js | 40 +++++++++++++++-------- 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index fe15b22feee..6d68e62899a 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -71,6 +71,9 @@ instance.web_kanban.KanbanView = instance.web.View.extend({ this.fields_keys = _.keys(this.fields_view.fields); this.add_qweb_template(); this.has_been_loaded.resolve(); + + this._super.apply(this, arguments); + return $.when(); }, _is_quick_create_enabled: function() { @@ -85,6 +88,9 @@ instance.web_kanban.KanbanView = instance.web.View.extend({ return false; return this._super(action); }, + /* add_qweb_template + * select the nodes into the xml and send to extract_aggregates the nodes with TagName="field" + */ add_qweb_template: function() { for (var i=0, ii=this.fields_view.arch.children.length; i < ii; i++) { var child = this.fields_view.arch.children[i]; @@ -97,6 +103,9 @@ instance.web_kanban.KanbanView = instance.web.View.extend({ } } }, + /* extract_aggregates + * extract the agggregates from the nodes (TagName="field") + */ extract_aggregates: function(node) { for (var j = 0, jj = this.group_operators.length; j < jj; j++) { if (node.attrs[this.group_operators[j]]) { @@ -121,9 +130,15 @@ instance.web_kanban.KanbanView = instance.web.View.extend({ } switch (node.tag) { case 'field': - node.tag = QWeb.prefix; - node.attrs[QWeb.prefix + '-esc'] = 'record.' + node.attrs['name'] + '.value'; - this.extract_aggregates(node); + if(this.fields_view.fields[ node.attrs['name'] ].type == 'many2many'){ + node.tag = 'div'; + node.attrs['class'] = 'oe_kanban_many2many_tags'; + node.attrs['model'] = this.fields_view.fields[node.attrs['name']].relation; + node.attrs['t-att-data'] = 'record.' + node.attrs['name'] + '.raw_value'; + }else { + node.tag = QWeb.prefix; + node.attrs[QWeb.prefix + '-esc'] = 'record.' + node.attrs['name'] + '.value'; + } break; case 'button': case 'a': @@ -163,17 +178,16 @@ instance.web_kanban.KanbanView = instance.web.View.extend({ } } }, - /* widget for list of tags/categories... - * make :
+ /* widget for list of tags/categories... */ transform_widget_many2many: function(){ var self=this, arg={}; // select all widget - self.$el.find("[widget='many2many_tags']").each(function(){ - var model = $(this).attr("model"), - data = $(this).attr("data"), - list = data.split(","); + self.$el.find(".oe_kanban_many2many_tags").each(function(){ + var model = $(this).attr("model"); + var data = $(this).attr("data"); + var list = data.split(","); //select all id (per model) if(!arg[model]) arg[model]=[]; for(var t=0;t'+result[t][1]+''); } - }, - function(r){ - console.log('Error',r); } ); } @@ -717,6 +728,9 @@ instance.web_kanban.KanbanRecord = instance.web.Widget.extend({ transform_record: function(record) { var self = this, new_record = {}; + + console.log(this, record); + _.each(record, function(value, name) { var r = _.clone(self.view.fields_view.fields[name] || {}); if ((r.type === 'date' || r.type === 'datetime') && value) { From 24ed9b15630e0c772cbcfab98fe456f6f82d024f Mon Sep 17 00:00:00 2001 From: Christophe Matthieu Date: Tue, 18 Sep 2012 18:59:02 +0200 Subject: [PATCH 2/3] [IMP]kanban: css bzr revid: chm@openerp.com-20120918165902-c5nh169w4c1ur14v --- addons/web_kanban/static/src/css/kanban.css | 4 ++++ addons/web_kanban/static/src/css/kanban.sass | 3 +++ 2 files changed, 7 insertions(+) diff --git a/addons/web_kanban/static/src/css/kanban.css b/addons/web_kanban/static/src/css/kanban.css index 48cf725ead3..fec1bc508ec 100644 --- a/addons/web_kanban/static/src/css/kanban.css +++ b/addons/web_kanban/static/src/css/kanban.css @@ -143,6 +143,10 @@ position: relative; top: -8px; } +.openerp .oe_kanban_view .oe_kanban_add, .openerp .oe_kanban_view .oe_kanban_card .oe_dropdown_toggle { + cursor: pointer; + display:inline-block; +} .openerp .oe_kanban_view .oe_kanban_add { float: right; } diff --git a/addons/web_kanban/static/src/css/kanban.sass b/addons/web_kanban/static/src/css/kanban.sass index 95a63dbd1a2..5ae4c9c4f10 100644 --- a/addons/web_kanban/static/src/css/kanban.sass +++ b/addons/web_kanban/static/src/css/kanban.sass @@ -154,6 +154,9 @@ cursor: pointer position: relative top: -8px + .oe_kanban_card, .oe_dropdown_toggle + cursor: pointer + display:inline-block .oe_kanban_add float: right From 3ad1a9614378f606721d1ee904e130fd1fe5dbb8 Mon Sep 17 00:00:00 2001 From: Christophe Matthieu Date: Tue, 18 Sep 2012 19:19:47 +0200 Subject: [PATCH 3/3] [IMP]kanban: correctif bzr revid: chm@openerp.com-20120918171947-f2114v0oa0cu8wb7 --- addons/web_kanban/static/src/js/kanban.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index d5389c6fa0b..970a4e81fca 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -396,6 +396,8 @@ instance.web_kanban.KanbanView = instance.web.View.extend({ } else { this.$el.find('.oe_kanban_draghandle').removeClass('oe_kanban_draghandle'); } + + this.transform_widget_many2many(); }, on_record_moved : function(record, old_group, old_index, new_group, new_index) { var self = this; @@ -811,7 +813,7 @@ instance.web_kanban.KanbanRecord = instance.web.Widget.extend({ } }); - if (this.$el.find('.oe_kanban_global_click').length) { + if (this.$el.find('.oe_kanban_global_click,.oe_kanban_global_click_edit').length) { this.$el.on('click', function(ev) { if (!ev.isTrigger && !$(ev.target).data('events')) { var trigger = true; @@ -852,8 +854,15 @@ instance.web_kanban.KanbanRecord = instance.web.Widget.extend({ }); } }, + /* actions when user click on the block with a specific class + * open on normal view : oe_kanban_global_click + * open on form/edit view : oe_kanban_global_click_edit + */ on_card_clicked: function(ev) { - this.view.open_record(this.id); + if(this.$el.find('.oe_kanban_global_click_edit').size()>0) + this.do_action_edit(); + else + this.do_action_open(); }, setup_color_picker: function() { var self = this;