From 2b46bc9925f09cec83f976b0dfde95e419916f1b Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Thu, 28 Jul 2011 15:21:52 +0530 Subject: [PATCH 01/39] [ADD] add basic directory structure of kanban view. bzr revid: ysa@tinyerp.com-20110728095152-l8g2zqqro2mkr7ne --- addons/base_kanban/__init__.py | 1 + addons/base_kanban/__openerp__.py | 10 ++++++++ addons/base_kanban/controllers/__init__.py | 1 + addons/base_kanban/controllers/main.py | 11 ++++++++ addons/base_kanban/static/src/js/kanban.js | 30 ++++++++++++++++++++++ 5 files changed, 53 insertions(+) create mode 100644 addons/base_kanban/__init__.py create mode 100644 addons/base_kanban/__openerp__.py create mode 100644 addons/base_kanban/controllers/__init__.py create mode 100644 addons/base_kanban/controllers/main.py create mode 100644 addons/base_kanban/static/src/js/kanban.js diff --git a/addons/base_kanban/__init__.py b/addons/base_kanban/__init__.py new file mode 100644 index 00000000000..355939a4922 --- /dev/null +++ b/addons/base_kanban/__init__.py @@ -0,0 +1 @@ +import controllers \ No newline at end of file diff --git a/addons/base_kanban/__openerp__.py b/addons/base_kanban/__openerp__.py new file mode 100644 index 00000000000..81f7228c1cb --- /dev/null +++ b/addons/base_kanban/__openerp__.py @@ -0,0 +1,10 @@ +{ + "name" : "Base Kanban", + "version" : "2.0", + "depends" : ["base"], + "js": [ + "static/src/js/kanban.js" + ], + "css": [], + 'active': True +} diff --git a/addons/base_kanban/controllers/__init__.py b/addons/base_kanban/controllers/__init__.py new file mode 100644 index 00000000000..039d9715fab --- /dev/null +++ b/addons/base_kanban/controllers/__init__.py @@ -0,0 +1 @@ +import main \ No newline at end of file diff --git a/addons/base_kanban/controllers/main.py b/addons/base_kanban/controllers/main.py new file mode 100644 index 00000000000..ba2ee948f34 --- /dev/null +++ b/addons/base_kanban/controllers/main.py @@ -0,0 +1,11 @@ +from base.controllers.main import View +import openerpweb + +class KanbanView(View): + _cp_path = "/base_kanban/kanbanview" + + @openerpweb.jsonrequest + def load(self, req, model, view_id): + fields_view = self.fields_view_get(req, model, view_id, 'kanban') + all_fields = req.session.model(model).fields_get() + return {'fields_view': fields_view, 'all_fields':all_fields} diff --git a/addons/base_kanban/static/src/js/kanban.js b/addons/base_kanban/static/src/js/kanban.js new file mode 100644 index 00000000000..f10b0d45c37 --- /dev/null +++ b/addons/base_kanban/static/src/js/kanban.js @@ -0,0 +1,30 @@ +openerp.base_kanban = function (openerp) { +openerp.base.views.add('kanban', 'openerp.base_kanban.KanbanView'); +openerp.base_kanban.KanbanView = openerp.base.View.extend({ + + init: function(parent, element_id, dataset, view_id) { + this._super(parent, element_id); + this.view_manager = parent; + this.dataset = dataset; + this.model = this.dataset.model; + this.view_id = view_id; + }, + + start: function() { + this.rpc("/base_kanban/kanbanview/load", + {"model": this.model, "view_id": this.view_id}, this.on_loaded); + }, + + on_loaded: function(data) { + var template_xml = ''; + _.each(data.fields_view.arch.children, function(child) { + if (child.tag == "template"){ + template_xml = openerp.base.json_node_to_xml(child, true) + } + }); + console.log(":template_xml:::",template_xml); + }, +}); +}; + +// vim:et fdc=0 fdl=0 foldnestmax=3 fdm=syntax: From bf57289f89185e2b1c8179b52287f193f2e8d42b Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Fri, 29 Jul 2011 14:34:30 +0530 Subject: [PATCH 02/39] [IMP] improve kanban view. simple display all records. bzr revid: ysa@tinyerp.com-20110729090430-ilaaxzpl0waes3a2 --- addons/base/static/src/js/views.js | 10 ++-- addons/base_kanban/__openerp__.py | 6 ++- addons/base_kanban/static/src/js/kanban.js | 56 +++++++++++++++++++++- 3 files changed, 65 insertions(+), 7 deletions(-) diff --git a/addons/base/static/src/js/views.js b/addons/base/static/src/js/views.js index 5e1d6be4f61..1bc0f896ee6 100644 --- a/addons/base/static/src/js/views.js +++ b/addons/base/static/src/js/views.js @@ -219,7 +219,7 @@ openerp.base.ViewManager = openerp.base.Controller.extend({ }, /** * Event launched when a controller has been inited. - * + * * @param {String} view_type type of view * @param {String} view the inited controller */ @@ -525,7 +525,7 @@ openerp.base.View = openerp.base.Controller.extend({ * Directly set a view to use instead of calling fields_view_get. This method must * be called before start(). When an embedded view is set, underlying implementations * of openerp.base.View must use the provided view instead of any other one. - * + * * @param embedded_view A view. */ set_embedded_view: function(embedded_view) { @@ -541,7 +541,11 @@ openerp.base.views = new openerp.base.Registry(); openerp.base.json_node_to_xml = function(node, single_quote, indent) { // For debugging purpose, this function will convert a json node back to xml // Maybe usefull for xml view editor - if (typeof(node.tag) !== 'string' || !node.children instanceof Array || !node.attrs instanceof Object) { + + if (typeof(node) === 'string') { + return node; + } + else if (typeof(node.tag) !== 'string' || !node.children instanceof Array || !node.attrs instanceof Object) { throw("Node a json node"); } indent = indent || 0; diff --git a/addons/base_kanban/__openerp__.py b/addons/base_kanban/__openerp__.py index 81f7228c1cb..df1fe37564c 100644 --- a/addons/base_kanban/__openerp__.py +++ b/addons/base_kanban/__openerp__.py @@ -3,8 +3,10 @@ "version" : "2.0", "depends" : ["base"], "js": [ - "static/src/js/kanban.js" + "static/src/js/kanban.js" + ], + "css": [ + "static/src/css/kanban.css" ], - "css": [], 'active': True } diff --git a/addons/base_kanban/static/src/js/kanban.js b/addons/base_kanban/static/src/js/kanban.js index f10b0d45c37..72b47b4c99e 100644 --- a/addons/base_kanban/static/src/js/kanban.js +++ b/addons/base_kanban/static/src/js/kanban.js @@ -1,4 +1,5 @@ openerp.base_kanban = function (openerp) { +QWeb.add_template('/base_kanban/static/src/xml/base_kanban.xml'); openerp.base.views.add('kanban', 'openerp.base_kanban.KanbanView'); openerp.base_kanban.KanbanView = openerp.base.View.extend({ @@ -8,22 +9,73 @@ openerp.base_kanban.KanbanView = openerp.base.View.extend({ this.dataset = dataset; this.model = this.dataset.model; this.view_id = view_id; + this.element_id = element_id; }, start: function() { this.rpc("/base_kanban/kanbanview/load", {"model": this.model, "view_id": this.view_id}, this.on_loaded); }, - on_loaded: function(data) { + var self = this; var template_xml = ''; + _.each(data.fields_view.arch.children, function(child) { if (child.tag == "template"){ template_xml = openerp.base.json_node_to_xml(child, true) } }); - console.log(":template_xml:::",template_xml); + + if(template_xml){ + self.dataset.read_slice([], 0, false, function (records) { + self.on_show_data(records, template_xml); + }); + } }, + + on_show_data: function(records, template_xml) { + var self = this; + var new_qweb = new QWeb2.Engine(); + new_qweb.add_template('' + template_xml + '') + + self.$element.html(QWeb.render("KanbanBiew", {"records" :records})); + _.each(records, function(record) { + self.$element.find("#data_" + record.id).append(new_qweb.render('custom_template', record)); + }); + + this.$element.find(".column").sortable({ + connectWith: ".column" + }); + this.$element.find(".portlet").addClass("ui-widget ui-widget-content ui-helper-clearfix ui-corner-all") + .find(".portlet-header") + .addClass("ui-widget-header ui-corner-all") + .prepend( "") + .end() + .find( ".portlet-content" ); + + this.$element.find(".portlet-header .ui-icon").click(function() { + $(this).toggleClass("ui-icon-minusthick").toggleClass("ui-icon-plusthick"); + $(this).parents(".portlet:first").find(".portlet-content").toggle(); + }); + this.$element.find('.portlet .ui-icon-closethick').click(this.on_close_action); + this.$element.find(".column").disableSelection(); + this.$element.find(".ui.item").css("background-color","#c3dAf9"); + + //self.$element.find( ".column" ).css("width",column_width); + }, + + on_close_action: function(e) { + $(e.currentTarget).parents('.portlet:first').remove(); + }, + + do_show: function () { + this.$element.show(); + }, + + do_hide: function () { + this.$element.hide(); + }, + }); }; From a64d060b1afead17137155b3de1a8889e1bc27de Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Mon, 1 Aug 2011 15:45:28 +0530 Subject: [PATCH 03/39] [IMP] Impliment basic structure of kanban view. bzr revid: ysa@tinyerp.com-20110801101528-gcq9rf58hr7e2ejz --- addons/base_kanban/static/src/css/kanban.css | 40 +++++++++++ addons/base_kanban/static/src/js/kanban.js | 72 ++++++++++++++----- .../static/src/xml/base_kanban.xml | 21 ++++++ 3 files changed, 117 insertions(+), 16 deletions(-) create mode 100644 addons/base_kanban/static/src/css/kanban.css create mode 100644 addons/base_kanban/static/src/xml/base_kanban.xml diff --git a/addons/base_kanban/static/src/css/kanban.css b/addons/base_kanban/static/src/css/kanban.css new file mode 100644 index 00000000000..16f46f849a8 --- /dev/null +++ b/addons/base_kanban/static/src/css/kanban.css @@ -0,0 +1,40 @@ +.openerp .oe_column { + width: 100%; + float: left; + padding-bottom: 100px; +} + +.portlet { + width: 100%; + margin: 0 1em 1em 0; +} + +.portlet-header { + margin: 0.3em; + padding-bottom: 4px; + padding-left: 0.2em; +} + +.portlet-header .ui-icon { + float: right; +} + +.portlet-content { + padding: 0.4em; +} + +.ui-sortable-placeholder { + border: 1px dotted black; + visibility: visible !important; + height: 50px !important; +} + +.ui-sortable-placeholder * { + visibility: hidden; +} + +.openerp .oe_column_heading{ + color: #000000; + font-size: 1.5em; + font-weight: bold; +} diff --git a/addons/base_kanban/static/src/js/kanban.js b/addons/base_kanban/static/src/js/kanban.js index 72b47b4c99e..ee60d91be35 100644 --- a/addons/base_kanban/static/src/js/kanban.js +++ b/addons/base_kanban/static/src/js/kanban.js @@ -18,33 +18,33 @@ openerp.base_kanban.KanbanView = openerp.base.View.extend({ }, on_loaded: function(data) { var self = this; - var template_xml = ''; + this.template_xml = ''; _.each(data.fields_view.arch.children, function(child) { if (child.tag == "template"){ - template_xml = openerp.base.json_node_to_xml(child, true) + self.template_xml = openerp.base.json_node_to_xml(child, true) } }); - - if(template_xml){ + if(this.template_xml){ self.dataset.read_slice([], 0, false, function (records) { - self.on_show_data(records, template_xml); + self.on_show_data([{'records': records, 'value':false}]); }); } }, - on_show_data: function(records, template_xml) { + on_show_data: function(datas) { var self = this; var new_qweb = new QWeb2.Engine(); - new_qweb.add_template('' + template_xml + '') - - self.$element.html(QWeb.render("KanbanBiew", {"records" :records})); - _.each(records, function(record) { - self.$element.find("#data_" + record.id).append(new_qweb.render('custom_template', record)); + new_qweb.add_template('' + this.template_xml + '') + self.$element.html(QWeb.render("KanbanBiew", {"datas" :datas})); + _.each(datas, function(data) { + _.each(data.records, function(record) { + self.$element.find("#data_" + record.id).append(new_qweb.render('custom_template', record)); + }); }); - this.$element.find(".column").sortable({ - connectWith: ".column" + this.$element.find(".oe_column").sortable({ + connectWith: ".oe_column" }); this.$element.find(".portlet").addClass("ui-widget ui-widget-content ui-helper-clearfix ui-corner-all") .find(".portlet-header") @@ -58,16 +58,56 @@ openerp.base_kanban.KanbanView = openerp.base.View.extend({ $(this).parents(".portlet:first").find(".portlet-content").toggle(); }); this.$element.find('.portlet .ui-icon-closethick').click(this.on_close_action); - this.$element.find(".column").disableSelection(); + this.$element.find(".oe_column").disableSelection(); this.$element.find(".ui.item").css("background-color","#c3dAf9"); - - //self.$element.find( ".column" ).css("width",column_width); + self.$element.find( ".oe_column" ).css("width", 99 / datas.length +"%"); }, on_close_action: function(e) { $(e.currentTarget).parents('.portlet:first').remove(); }, + do_search: function (domains, contexts, group_by) { + var self = this; + this.rpc('/base/session/eval_domain_and_context', { + domains: domains, + contexts: contexts, + group_by_seq: group_by + }, function (results) { + self.dataset.context = results.context; + self.dataset.domain = results.domain; + self.groups = new openerp.base.DataGroup( + self, self.model, results.domain, results.context, results.group_by); + self.groups.list([], + function (groups) { + self.do_render_group(groups); + }, + function (dataset) { + self.dataset.read_slice(false, false, false, function(records) { + self.on_show_data([{'records': records, 'value':false}]); + }); + }); + }); + }, + + do_render_group : function(datagroups){ + this.columns = []; + var self = this; + _.each(datagroups, function (group) { + self.dataset.context = group.context; + self.dataset.domain = group.domain; + if(!group.value) { + group.value = "Undefined" + } + self.dataset.read_slice(false, false, false, function(records) { + self.columns.push({"value" : group.value, "records": records}); + if (datagroups.length == self.columns.length) { + self.on_show_data(self.columns); + } + }); + }); + }, + do_show: function () { this.$element.show(); }, diff --git a/addons/base_kanban/static/src/xml/base_kanban.xml b/addons/base_kanban/static/src/xml/base_kanban.xml new file mode 100644 index 00000000000..8a234ed6dae --- /dev/null +++ b/addons/base_kanban/static/src/xml/base_kanban.xml @@ -0,0 +1,21 @@ + \ No newline at end of file From 9bdcc4d37934601f91f4f96eeeae655f8e8f2c0c Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Mon, 1 Aug 2011 17:15:23 +0530 Subject: [PATCH 04/39] [IMP] Improve code. bzr revid: ysa@tinyerp.com-20110801114523-xk5jyx2iwn9ptj9n --- addons/base_kanban/static/src/css/kanban.css | 8 +++--- addons/base_kanban/static/src/js/kanban.js | 26 +++++++++++-------- .../static/src/xml/base_kanban.xml | 6 ++--- 3 files changed, 22 insertions(+), 18 deletions(-) diff --git a/addons/base_kanban/static/src/css/kanban.css b/addons/base_kanban/static/src/css/kanban.css index 16f46f849a8..6e6a8bebcef 100644 --- a/addons/base_kanban/static/src/css/kanban.css +++ b/addons/base_kanban/static/src/css/kanban.css @@ -4,22 +4,22 @@ padding-bottom: 100px; } -.portlet { +.record { width: 100%; margin: 0 1em 1em 0; } -.portlet-header { +.record-header { margin: 0.3em; padding-bottom: 4px; padding-left: 0.2em; } -.portlet-header .ui-icon { +.record-header .ui-icon { float: right; } -.portlet-content { +.record-content { padding: 0.4em; } diff --git a/addons/base_kanban/static/src/js/kanban.js b/addons/base_kanban/static/src/js/kanban.js index ee60d91be35..e03d89c7cdf 100644 --- a/addons/base_kanban/static/src/js/kanban.js +++ b/addons/base_kanban/static/src/js/kanban.js @@ -46,25 +46,25 @@ openerp.base_kanban.KanbanView = openerp.base.View.extend({ this.$element.find(".oe_column").sortable({ connectWith: ".oe_column" }); - this.$element.find(".portlet").addClass("ui-widget ui-widget-content ui-helper-clearfix ui-corner-all") - .find(".portlet-header") + this.$element.find(".record").addClass("ui-widget ui-widget-content ui-helper-clearfix ui-corner-all") + .find(".record-header") .addClass("ui-widget-header ui-corner-all") .prepend( "") .end() - .find( ".portlet-content" ); + .find( ".record-content" ); - this.$element.find(".portlet-header .ui-icon").click(function() { + this.$element.find(".record-header .ui-icon").click(function() { $(this).toggleClass("ui-icon-minusthick").toggleClass("ui-icon-plusthick"); - $(this).parents(".portlet:first").find(".portlet-content").toggle(); + $(this).parents(".record:first").find(".record-content").toggle(); }); - this.$element.find('.portlet .ui-icon-closethick').click(this.on_close_action); + this.$element.find('.record .ui-icon-closethick').click(this.on_close_action); this.$element.find(".oe_column").disableSelection(); - this.$element.find(".ui.item").css("background-color","#c3dAf9"); + this.$element.find(".ui.item").css("background-color","red"); self.$element.find( ".oe_column" ).css("width", 99 / datas.length +"%"); }, on_close_action: function(e) { - $(e.currentTarget).parents('.portlet:first').remove(); + $(e.currentTarget).parents('.record:first').remove(); }, do_search: function (domains, contexts, group_by) { @@ -96,11 +96,15 @@ openerp.base_kanban.KanbanView = openerp.base.View.extend({ _.each(datagroups, function (group) { self.dataset.context = group.context; self.dataset.domain = group.domain; - if(!group.value) { - group.value = "Undefined" + var group_name = group.value; + if(!group_name) { + group_name = "Undefined" + } + else if(group_name instanceof Array) { + group_name = group_name[1] } self.dataset.read_slice(false, false, false, function(records) { - self.columns.push({"value" : group.value, "records": records}); + self.columns.push({"value" : group_name, "records": records}); if (datagroups.length == self.columns.length) { self.on_show_data(self.columns); } diff --git a/addons/base_kanban/static/src/xml/base_kanban.xml b/addons/base_kanban/static/src/xml/base_kanban.xml index 8a234ed6dae..a552a93efa3 100644 --- a/addons/base_kanban/static/src/xml/base_kanban.xml +++ b/addons/base_kanban/static/src/xml/base_kanban.xml @@ -8,9 +8,9 @@
-
-
-
+
+
+
From efe8967203af580c69fa3cda873ed592ea993021 Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Wed, 3 Aug 2011 10:55:08 +0530 Subject: [PATCH 05/39] [IMP] Improve header and css in kanban view. bzr revid: ysa@tinyerp.com-20110803052508-ru7wnpjhfgohxb9u --- addons/base_kanban/static/src/css/kanban.css | 12 +++--------- addons/base_kanban/static/src/js/kanban.js | 1 - addons/base_kanban/static/src/xml/base_kanban.xml | 4 ++-- 3 files changed, 5 insertions(+), 12 deletions(-) diff --git a/addons/base_kanban/static/src/css/kanban.css b/addons/base_kanban/static/src/css/kanban.css index 6e6a8bebcef..d7344ee1e55 100644 --- a/addons/base_kanban/static/src/css/kanban.css +++ b/addons/base_kanban/static/src/css/kanban.css @@ -1,16 +1,14 @@ .openerp .oe_column { width: 100%; float: left; - padding-bottom: 100px; } .record { - width: 100%; - margin: 0 1em 1em 0; + margin: 0 0 0.5em 0; } .record-header { - margin: 0.3em; + margin: 0.05em; padding-bottom: 4px; padding-left: 0.2em; } @@ -19,10 +17,6 @@ float: right; } -.record-content { - padding: 0.4em; -} - .ui-sortable-placeholder { border: 1px dotted black; visibility: visible !important; @@ -33,7 +27,7 @@ visibility: hidden; } -.openerp .oe_column_heading{ +.openerp .oe_column_heading { color: #000000; font-size: 1.5em; font-weight: bold; diff --git a/addons/base_kanban/static/src/js/kanban.js b/addons/base_kanban/static/src/js/kanban.js index e03d89c7cdf..cc6fcfae79a 100644 --- a/addons/base_kanban/static/src/js/kanban.js +++ b/addons/base_kanban/static/src/js/kanban.js @@ -59,7 +59,6 @@ openerp.base_kanban.KanbanView = openerp.base.View.extend({ }); this.$element.find('.record .ui-icon-closethick').click(this.on_close_action); this.$element.find(".oe_column").disableSelection(); - this.$element.find(".ui.item").css("background-color","red"); self.$element.find( ".oe_column" ).css("width", 99 / datas.length +"%"); }, diff --git a/addons/base_kanban/static/src/xml/base_kanban.xml b/addons/base_kanban/static/src/xml/base_kanban.xml index a552a93efa3..2c4fde2663c 100644 --- a/addons/base_kanban/static/src/xml/base_kanban.xml +++ b/addons/base_kanban/static/src/xml/base_kanban.xml @@ -5,11 +5,11 @@ -
+
()
-
+
From c17a58e199f2f26b40d157bf361899b1d570e390 Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Wed, 3 Aug 2011 15:56:53 +0530 Subject: [PATCH 06/39] [IMP] change field value based on drag and drop record in kanban view. bzr revid: ysa@tinyerp.com-20110803102653-av8rt9fhcrgjlg4i --- addons/base_kanban/static/src/css/kanban.css | 2 +- addons/base_kanban/static/src/js/kanban.js | 52 +++++++++++++++---- .../static/src/xml/base_kanban.xml | 2 +- 3 files changed, 43 insertions(+), 13 deletions(-) diff --git a/addons/base_kanban/static/src/css/kanban.css b/addons/base_kanban/static/src/css/kanban.css index d7344ee1e55..b557709dcf0 100644 --- a/addons/base_kanban/static/src/css/kanban.css +++ b/addons/base_kanban/static/src/css/kanban.css @@ -20,7 +20,7 @@ .ui-sortable-placeholder { border: 1px dotted black; visibility: visible !important; - height: 50px !important; + height: 60px !important; } .ui-sortable-placeholder * { diff --git a/addons/base_kanban/static/src/js/kanban.js b/addons/base_kanban/static/src/js/kanban.js index cc6fcfae79a..6a5d72ae32b 100644 --- a/addons/base_kanban/static/src/js/kanban.js +++ b/addons/base_kanban/static/src/js/kanban.js @@ -10,6 +10,10 @@ openerp.base_kanban.KanbanView = openerp.base.View.extend({ this.model = this.dataset.model; this.view_id = view_id; this.element_id = element_id; + this.group_by_field = false; + this.domains = this.dataset.domain; + this.contexts = this.dataset.context; + this.group_by = false; }, start: function() { @@ -27,7 +31,7 @@ openerp.base_kanban.KanbanView = openerp.base.View.extend({ }); if(this.template_xml){ self.dataset.read_slice([], 0, false, function (records) { - self.on_show_data([{'records': records, 'value':false}]); + self.on_show_data([{'records': records, 'value':false, 'header': false}]); }); } }, @@ -42,9 +46,9 @@ openerp.base_kanban.KanbanView = openerp.base.View.extend({ self.$element.find("#data_" + record.id).append(new_qweb.render('custom_template', record)); }); }); - this.$element.find(".oe_column").sortable({ - connectWith: ".oe_column" + connectWith: ".oe_column", + receive: self.on_recieve_record }); this.$element.find(".record").addClass("ui-widget ui-widget-content ui-helper-clearfix ui-corner-all") .find(".record-header") @@ -66,7 +70,26 @@ openerp.base_kanban.KanbanView = openerp.base.View.extend({ $(e.currentTarget).parents('.record:first').remove(); }, + on_recieve_record: function(event, ui) { + if(ui.item.attr("id") && this.group_by_field) { + var value = this.$element.find("#" + ui.item.attr("id")).closest("td").attr("id") + if(value) { + var data_val = {}; + value = value.split("_")[1]; + if(value == 'false') { + value = false; + } + data_val[this.group_by_field] = value; + this.dataset.write(parseInt(ui.item.attr("id").split("_")[1]), data_val); + this.do_search(this.domains, this.contexts, this.group_by); + } + } + }, + do_search: function (domains, contexts, group_by) { + this.contexts = contexts; + this.domains = domains; + this.group_by = group_by; var self = this; this.rpc('/base/session/eval_domain_and_context', { domains: domains, @@ -79,13 +102,17 @@ openerp.base_kanban.KanbanView = openerp.base.View.extend({ self, self.model, results.domain, results.context, results.group_by); self.groups.list([], function (groups) { - self.do_render_group(groups); + if (group_by.length >= 1) { + self.group_by_field = group_by[0].group_by + self.do_render_group(groups); + } }, function (dataset) { self.dataset.read_slice(false, false, false, function(records) { - self.on_show_data([{'records': records, 'value':false}]); + self.on_show_data([{'records': records, 'value':false, 'header' : false}]); }); - }); + } + ); }); }, @@ -96,14 +123,17 @@ openerp.base_kanban.KanbanView = openerp.base.View.extend({ self.dataset.context = group.context; self.dataset.domain = group.domain; var group_name = group.value; - if(!group_name) { - group_name = "Undefined" + var group_value = group.value; + if(!group.value) { + group_name = "Undefined"; + group_value = 'false'; } - else if(group_name instanceof Array) { - group_name = group_name[1] + else if(group.value instanceof Array) { + group_name = group.value[1] + group_value = group.value[0] } self.dataset.read_slice(false, false, false, function(records) { - self.columns.push({"value" : group_name, "records": records}); + self.columns.push({"value" : group_value, "records": records, 'header':group_name}); if (datagroups.length == self.columns.length) { self.on_show_data(self.columns); } diff --git a/addons/base_kanban/static/src/xml/base_kanban.xml b/addons/base_kanban/static/src/xml/base_kanban.xml index 2c4fde2663c..8456add75d4 100644 --- a/addons/base_kanban/static/src/xml/base_kanban.xml +++ b/addons/base_kanban/static/src/xml/base_kanban.xml @@ -5,7 +5,7 @@ -
()
+
()
From 1304203349c4eef2700c42a73c1dcec1e6259703 Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Wed, 3 Aug 2011 18:43:37 +0530 Subject: [PATCH 07/39] [IMP] Improve template. bzr revid: ysa@tinyerp.com-20110803131337-2yit2j7y9ekud4q7 --- addons/base_kanban/static/src/css/kanban.css | 1 - addons/base_kanban/static/src/js/kanban.js | 3 ++- addons/base_kanban/static/src/xml/base_kanban.xml | 10 ++++++++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/addons/base_kanban/static/src/css/kanban.css b/addons/base_kanban/static/src/css/kanban.css index b557709dcf0..d194ce62ff1 100644 --- a/addons/base_kanban/static/src/css/kanban.css +++ b/addons/base_kanban/static/src/css/kanban.css @@ -1,5 +1,4 @@ .openerp .oe_column { - width: 100%; float: left; } diff --git a/addons/base_kanban/static/src/js/kanban.js b/addons/base_kanban/static/src/js/kanban.js index 6a5d72ae32b..9a9caeee713 100644 --- a/addons/base_kanban/static/src/js/kanban.js +++ b/addons/base_kanban/static/src/js/kanban.js @@ -63,7 +63,8 @@ openerp.base_kanban.KanbanView = openerp.base.View.extend({ }); this.$element.find('.record .ui-icon-closethick').click(this.on_close_action); this.$element.find(".oe_column").disableSelection(); - self.$element.find( ".oe_column" ).css("width", 99 / datas.length +"%"); + this.$element.find( ".oe_column" ).css("width", 99 / datas.length +"%"); + }, on_close_action: function(e) { diff --git a/addons/base_kanban/static/src/xml/base_kanban.xml b/addons/base_kanban/static/src/xml/base_kanban.xml index 8456add75d4..7947254f1de 100644 --- a/addons/base_kanban/static/src/xml/base_kanban.xml +++ b/addons/base_kanban/static/src/xml/base_kanban.xml @@ -3,10 +3,16 @@ - + + + + +
+ -
()
+ () +
From 75063083b964888176e4e9355a142ff833cfc618 Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Thu, 4 Aug 2011 16:59:07 +0530 Subject: [PATCH 08/39] [IMP] Improve code. bzr revid: ysa@tinyerp.com-20110804112907-jqoldgypm3xi7k8t --- addons/base_kanban/static/src/css/kanban.css | 1 + addons/base_kanban/static/src/js/kanban.js | 7 +++---- .../base_kanban/static/src/xml/base_kanban.xml | 18 ++++++++++-------- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/addons/base_kanban/static/src/css/kanban.css b/addons/base_kanban/static/src/css/kanban.css index d194ce62ff1..7b8305a762e 100644 --- a/addons/base_kanban/static/src/css/kanban.css +++ b/addons/base_kanban/static/src/css/kanban.css @@ -1,5 +1,6 @@ .openerp .oe_column { float: left; + width: 100%; } .record { diff --git a/addons/base_kanban/static/src/js/kanban.js b/addons/base_kanban/static/src/js/kanban.js index 9a9caeee713..9e70a0d62a6 100644 --- a/addons/base_kanban/static/src/js/kanban.js +++ b/addons/base_kanban/static/src/js/kanban.js @@ -46,9 +46,10 @@ openerp.base_kanban.KanbanView = openerp.base.View.extend({ self.$element.find("#data_" + record.id).append(new_qweb.render('custom_template', record)); }); }); + this.$element.find( ".oe_table_column " ).css("width", 99 / datas.length +"%"); this.$element.find(".oe_column").sortable({ connectWith: ".oe_column", - receive: self.on_recieve_record + stop: self.on_recieve_record, }); this.$element.find(".record").addClass("ui-widget ui-widget-content ui-helper-clearfix ui-corner-all") .find(".record-header") @@ -63,8 +64,6 @@ openerp.base_kanban.KanbanView = openerp.base.View.extend({ }); this.$element.find('.record .ui-icon-closethick').click(this.on_close_action); this.$element.find(".oe_column").disableSelection(); - this.$element.find( ".oe_column" ).css("width", 99 / datas.length +"%"); - }, on_close_action: function(e) { @@ -73,7 +72,7 @@ openerp.base_kanban.KanbanView = openerp.base.View.extend({ on_recieve_record: function(event, ui) { if(ui.item.attr("id") && this.group_by_field) { - var value = this.$element.find("#" + ui.item.attr("id")).closest("td").attr("id") + var value = ui.item.closest("td").attr("id") if(value) { var data_val = {}; value = value.split("_")[1]; diff --git a/addons/base_kanban/static/src/xml/base_kanban.xml b/addons/base_kanban/static/src/xml/base_kanban.xml index 7947254f1de..42caccc649b 100644 --- a/addons/base_kanban/static/src/xml/base_kanban.xml +++ b/addons/base_kanban/static/src/xml/base_kanban.xml @@ -3,7 +3,7 @@ - - From 9824b8a3f7d9e2b853f3a4bc2ddaaeb129d9034b Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Thu, 4 Aug 2011 18:57:51 +0530 Subject: [PATCH 09/39] [IMP] kanban view:- add drag and drop functionality. drag record and release that record then resequence record list. bzr revid: ysa@tinyerp.com-20110804132751-hugtndsbdpf12stx --- addons/base_kanban/static/src/js/kanban.js | 26 ++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/addons/base_kanban/static/src/js/kanban.js b/addons/base_kanban/static/src/js/kanban.js index 9e70a0d62a6..b0817550cd7 100644 --- a/addons/base_kanban/static/src/js/kanban.js +++ b/addons/base_kanban/static/src/js/kanban.js @@ -38,12 +38,14 @@ openerp.base_kanban.KanbanView = openerp.base.View.extend({ on_show_data: function(datas) { var self = this; + this.all_records = []; var new_qweb = new QWeb2.Engine(); new_qweb.add_template('' + this.template_xml + '') self.$element.html(QWeb.render("KanbanBiew", {"datas" :datas})); _.each(datas, function(data) { _.each(data.records, function(record) { self.$element.find("#data_" + record.id).append(new_qweb.render('custom_template', record)); + self.all_records.push(record); }); }); this.$element.find( ".oe_table_column " ).css("width", 99 / datas.length +"%"); @@ -71,6 +73,30 @@ openerp.base_kanban.KanbanView = openerp.base.View.extend({ }, on_recieve_record: function(event, ui) { + var self = this; + var from = ui.item.index(), + to = ui.item.prev().index() || 0; + var child_record = ui.item.parent().children(); + child_record.splice(0, to); + + var data, sequence=0, index = to; + if(to >= 0) { + var record_id = parseInt(child_record.attr('id').split("_")[1]); + _.each(this.all_records, function(record){ + if(record_id == record.id && record.sequence) { + sequence = record.sequence; + } + }); + } + + _.each(child_record, function (child) { + var child_id = parseInt($(child).attr("id").split("_")[1]); + self.dataset.write(child_id, {sequence: sequence}); + sequence++; + + }); + this.do_search(this.domains, this.contexts, this.group_by); + if(ui.item.attr("id") && this.group_by_field) { var value = ui.item.closest("td").attr("id") if(value) { From 3eb38c4501f8293bc5114953775fc7c8ba58edbe Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Fri, 5 Aug 2011 14:02:30 +0530 Subject: [PATCH 10/39] [IMP] improve kanban view. resequence field on drag and drop record. bzr revid: ysa@tinyerp.com-20110805083230-c7rue7yxujlskwcf --- addons/base_kanban/static/src/js/kanban.js | 98 +++++++++++-------- .../static/src/xml/base_kanban.xml | 2 +- 2 files changed, 59 insertions(+), 41 deletions(-) diff --git a/addons/base_kanban/static/src/js/kanban.js b/addons/base_kanban/static/src/js/kanban.js index b0817550cd7..850604d6fcd 100644 --- a/addons/base_kanban/static/src/js/kanban.js +++ b/addons/base_kanban/static/src/js/kanban.js @@ -31,7 +31,7 @@ openerp.base_kanban.KanbanView = openerp.base.View.extend({ }); if(this.template_xml){ self.dataset.read_slice([], 0, false, function (records) { - self.on_show_data([{'records': records, 'value':false, 'header': false}]); + self.on_reload_kanban([{'records': records, 'value':false, 'header': false}]); }); } }, @@ -74,31 +74,33 @@ openerp.base_kanban.KanbanView = openerp.base.View.extend({ on_recieve_record: function(event, ui) { var self = this; - var from = ui.item.index(), - to = ui.item.prev().index() || 0; + var from = ui.item.index(), to = ui.item.prev().index() || 0; var child_record = ui.item.parent().children(); + var data, sequence=1, index = to; + this.flag = false; child_record.splice(0, to); - - var data, sequence=0, index = to; - if(to >= 0) { - var record_id = parseInt(child_record.attr('id').split("_")[1]); - _.each(this.all_records, function(record){ - if(record_id == record.id && record.sequence) { - sequence = record.sequence; - } - }); + if(to >= 0 && child_record) { + var record_id = child_record.attr('id').split("_"); + if(record_id.length >= 2) { + _.each(this.all_records, function(record){ + if(parseInt(record_id[1]) == record.id && record.sequence) { + sequence = record.sequence; + } + }); + } } - _.each(child_record, function (child) { var child_id = parseInt($(child).attr("id").split("_")[1]); - self.dataset.write(child_id, {sequence: sequence}); - sequence++; - + if(child_id) { + self.dataset.write(child_id, {sequence: sequence}); + sequence++; + self.flag = true; + } }); - this.do_search(this.domains, this.contexts, this.group_by); - + console.log(":this.group_by_field:::",this.group_by_field); if(ui.item.attr("id") && this.group_by_field) { var value = ui.item.closest("td").attr("id") + console.log("value:::",value); if(value) { var data_val = {}; value = value.split("_")[1]; @@ -106,42 +108,58 @@ openerp.base_kanban.KanbanView = openerp.base.View.extend({ value = false; } data_val[this.group_by_field] = value; + console.log("D:D:::::",data_val, parseInt(ui.item.attr("id").split("_")[1])); this.dataset.write(parseInt(ui.item.attr("id").split("_")[1]), data_val); - this.do_search(this.domains, this.contexts, this.group_by); + this.flag = true; } } + if(this.flag) { + this.do_actual_search(this.domains, this.contexts, this.group_by); + } + }, + + on_reload_kanban: function(datas){ + this.$element.find("#kanbanview").remove(); + this.on_show_data(datas); }, do_search: function (domains, contexts, group_by) { - this.contexts = contexts; - this.domains = domains; - this.group_by = group_by; var self = this; this.rpc('/base/session/eval_domain_and_context', { domains: domains, contexts: contexts, group_by_seq: group_by }, function (results) { - self.dataset.context = results.context; - self.dataset.domain = results.domain; - self.groups = new openerp.base.DataGroup( - self, self.model, results.domain, results.context, results.group_by); - self.groups.list([], - function (groups) { - if (group_by.length >= 1) { - self.group_by_field = group_by[0].group_by - self.do_render_group(groups); - } - }, - function (dataset) { - self.dataset.read_slice(false, false, false, function(records) { - self.on_show_data([{'records': records, 'value':false, 'header' : false}]); - }); - } - ); + self.contexts = results.context; + self.domains = results.domain; + self.group_by = results.group_by; + self.do_actual_search(results.domain, results.context, results.group_by); }); }, + do_actual_search: function (domain, context, group_by) { + var self = this; + + this.group_by_field = false; + + self.dataset.context = context; + self.dataset.domain = domain; + this.groups = new openerp.base.DataGroup(this, this.model, domain, context, group_by || []); + this.groups.list([], + function (groups) { + if (group_by.length >= 1) { + self.group_by_field = group_by[0]; + self.do_render_group(groups); + } + }, + function (dataset) { + self.dataset.read_slice(false, false, false, function(records) { + self.on_reload_kanban([{'records': records, 'value':false, 'header' : false}]); + }); + } + ); + + }, do_render_group : function(datagroups){ this.columns = []; var self = this; @@ -161,7 +179,7 @@ openerp.base_kanban.KanbanView = openerp.base.View.extend({ self.dataset.read_slice(false, false, false, function(records) { self.columns.push({"value" : group_value, "records": records, 'header':group_name}); if (datagroups.length == self.columns.length) { - self.on_show_data(self.columns); + self.on_reload_kanban(self.columns); } }); }); diff --git a/addons/base_kanban/static/src/xml/base_kanban.xml b/addons/base_kanban/static/src/xml/base_kanban.xml index 42caccc649b..4b1ca3f44b4 100644 --- a/addons/base_kanban/static/src/xml/base_kanban.xml +++ b/addons/base_kanban/static/src/xml/base_kanban.xml @@ -1,6 +1,6 @@ From 0529820361555a87d3e2d6aed2b2a732220f72aa Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Thu, 1 Sep 2011 22:24:39 +0200 Subject: [PATCH 34/39] [IMP] Improved record handling + QWeb hook bzr revid: fme@openerp.com-20110901202439-friiek8yi1r0su20 --- addons/base_kanban/static/src/js/kanban.js | 23 ++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/addons/base_kanban/static/src/js/kanban.js b/addons/base_kanban/static/src/js/kanban.js index f4ec3201a03..365c7a9df15 100644 --- a/addons/base_kanban/static/src/js/kanban.js +++ b/addons/base_kanban/static/src/js/kanban.js @@ -17,6 +17,11 @@ openerp.base_kanban.KanbanView = openerp.base.View.extend({ this.all_display_data = false; this.groups = []; this.qweb = new QWeb2.Engine(); + this.qweb.actions_precedence.push('field'); + this.qweb.compile_action_field = function(value) { + var val = this.node.attributes['name'].value + '.value'; + return this.compile_action_esc(val); + } }, start: function() { return this.rpc("/base_kanban/kanbanview/load", @@ -234,15 +239,11 @@ openerp.base_kanban.KanbanView = openerp.base.View.extend({ }, on_reload_kanban: function (){ var self = this; - QWeb2.Element.prototype.compile_action_field = function(value) { - debugger; - this.top("r.push(context.engine.tools.html_escape(" + (this.format_expression(value)) + "));"); - }; _.each(self.all_display_data, function(data, index) { if (data.records.length > 0){ _.each(data.records, function(record) { self.$element.find("#main_" + record.id).children().remove(); - self.$element.find("#main_" + record.id).append(self.qweb.render('kanban-box', record)); + self.$element.find("#main_" + record.id).append(self.qweb.render('kanban-box', self.do_process_record(record))); }); } else { self.$element.find("#column_" + data.value).remove(); @@ -265,7 +266,17 @@ openerp.base_kanban.KanbanView = openerp.base.View.extend({ } }); }, - + do_process_record: function(record) { + var self = this, + new_record = {}; + _.each(record, function(value, name) { + var r = _.clone(self.fields_view.fields[name]); + r.raw_value = value; + r.value = openerp.base.format_value(value, r); + new_record[name] = r; + }); + return new_record; + }, do_search: function (domains, contexts, group_by) { var self = this; this.rpc('/base/session/eval_domain_and_context', { From dcff0ce9304216db9556676682fda978ce93fbbf Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Mon, 5 Sep 2011 11:53:44 +0200 Subject: [PATCH 35/39] [IMP] Improved kanban template bzr revid: fme@openerp.com-20110905095344-5bbovksok592ovcq --- addons/base_kanban/static/src/js/kanban.js | 2 +- .../static/src/xml/base_kanban.xml | 48 ++++++++----------- 2 files changed, 21 insertions(+), 29 deletions(-) diff --git a/addons/base_kanban/static/src/js/kanban.js b/addons/base_kanban/static/src/js/kanban.js index 365c7a9df15..a490d038029 100644 --- a/addons/base_kanban/static/src/js/kanban.js +++ b/addons/base_kanban/static/src/js/kanban.js @@ -52,7 +52,7 @@ openerp.base_kanban.KanbanView = openerp.base.View.extend({ }, on_show_data: function(data) { var self = this; - this.$element.html(QWeb.render("KanbanBiew", {"data": data})); + this.$element.html(QWeb.render("KanbanView", {"data": data})); this.on_reload_kanban(); var drag_handel = false; if (this.$element.find(".oe-kanban-draghandle").length > 0) { diff --git a/addons/base_kanban/static/src/xml/base_kanban.xml b/addons/base_kanban/static/src/xml/base_kanban.xml index e9b17235b73..42c65ec1106 100644 --- a/addons/base_kanban/static/src/xml/base_kanban.xml +++ b/addons/base_kanban/static/src/xml/base_kanban.xml @@ -1,33 +1,25 @@ From 98e336c3eecb6a7aa33b60488cff100fc80a573f Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Mon, 5 Sep 2011 16:15:45 +0200 Subject: [PATCH 36/39] [FIX] Fixed openerp.base.json_node_to_xml bzr revid: fme@openerp.com-20110905141545-ntfbhdabmv98wklv --- addons/base/static/src/js/views.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/base/static/src/js/views.js b/addons/base/static/src/js/views.js index 6b8c8a4be4c..8dc8775a25b 100644 --- a/addons/base/static/src/js/views.js +++ b/addons/base/static/src/js/views.js @@ -774,7 +774,7 @@ openerp.base.json_node_to_xml = function(node, single_quote, indent) { } r += ' ' + attr + '="' + vattr + '"'; } - if (node.children.length) { + if (node.children && node.children.length) { r += '>\n'; var childs = []; for (var i = 0, ii = node.children.length; i < ii; i++) { From d9d77320991e1cd160af86003e399636aff0c3b7 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Mon, 5 Sep 2011 16:18:12 +0200 Subject: [PATCH 37/39] [ADD] Kanban qweb template pre-processing bzr revid: fme@openerp.com-20110905141812-d0ybzi57u9qlkkhv --- addons/base_kanban/static/src/css/kanban.css | 20 ++--- addons/base_kanban/static/src/js/kanban.js | 75 ++++++++++++++----- .../static/src/xml/base_kanban.xml | 4 +- 3 files changed, 69 insertions(+), 30 deletions(-) diff --git a/addons/base_kanban/static/src/css/kanban.css b/addons/base_kanban/static/src/css/kanban.css index b2c8320487d..9441dac32f6 100644 --- a/addons/base_kanban/static/src/css/kanban.css +++ b/addons/base_kanban/static/src/css/kanban.css @@ -1,20 +1,20 @@ -.openerp .oe_column { +.openerp .oe_kanban_view .oe_column { float: left; width: 100%; } -.record { - margin: 0 0 0.5em 0; +.openerp .oe_kanban_view .ui-sortable-placeholder { + border: 1px dotted black; + visibility: visible !important; + height: 60px !important; } -.ui-sortable-placeholder { - border: 1px dotted black; - visibility: visible !important; - height: 60px !important; -} - -.openerp .oe_column_heading { +.openerp .oe_kanban_view .oe_column_heading { color: #000000; font-size: 1.5em; font-weight: bold; } +.openerp .oe_kanban_button { + height: 22px; + margin: 0; +} diff --git a/addons/base_kanban/static/src/js/kanban.js b/addons/base_kanban/static/src/js/kanban.js index a490d038029..a25435bbfc3 100644 --- a/addons/base_kanban/static/src/js/kanban.js +++ b/addons/base_kanban/static/src/js/kanban.js @@ -17,11 +17,6 @@ openerp.base_kanban.KanbanView = openerp.base.View.extend({ this.all_display_data = false; this.groups = []; this.qweb = new QWeb2.Engine(); - this.qweb.actions_precedence.push('field'); - this.qweb.compile_action_field = function(value) { - var val = this.node.attributes['name'].value + '.value'; - return this.compile_action_esc(val); - } }, start: function() { return this.rpc("/base_kanban/kanbanview/load", @@ -30,15 +25,7 @@ openerp.base_kanban.KanbanView = openerp.base.View.extend({ on_loaded: function(data) { var self = this; this.fields_view = data.fields_view; - for (var i=0, ii=data.fields_view.arch.children.length; i < ii; i++) { - var child = data.fields_view.arch.children[i]; - if (child.tag == "templates") { - var template_xml = openerp.base.json_node_to_xml(child, true); - template_xml = template_xml.replace(//g, ''); - self.qweb.add_template(template_xml); - break; - } - } + this.add_qweb_template(); if (this.qweb.has_template('kanban-box')) { self.dataset.read_slice(_.keys(self.fields_view.fields), { context: self.dataset.get_context(), @@ -50,6 +37,59 @@ openerp.base_kanban.KanbanView = openerp.base.View.extend({ ); } }, + 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]; + if (child.tag === "templates") { + this.transform_qweb_template(child); + this.qweb.add_template(openerp.base.json_node_to_xml(child, true)); + break; + } + } + }, + transform_qweb_template: function(node) { + switch (node.tag) { + case 'field': + node.tag = 't'; + node.attrs['t-esc'] = node.attrs['name'] + '.value'; + break + case 'button': + var type = node.attrs.type || ''; + if (_.indexOf('action,object,edit,delete,'.split(','), type) !== -1) { + _.each(node.attrs, function(v, k) { + node.attrs['data-' + k] = v; + delete(node.attrs[k]); + }); + if (node.attrs['data-states']) { + var states = _.map(node.attrs['data-states'].split(','), function(state) { + return "state.value == '" + _.trim(state) + "'"; + }); + node.attrs['t-if'] = states.join(' or '); + } + if (node.attrs['data-string']) { + node.attrs.title = node.attrs['data-string']; + } + if (node.attrs['data-icon']) { + node.children = [{ + tag: 'img', + attrs: { + src: '/base/static/src/img/icons/' + node.attrs['data-icon'] + '.png', + width: '16', + height: '16' + } + }]; + } + node.attrs.type = 'button'; + node.attrs['class'] = 'oe_kanban_button'; + } + break; + } + if (node.children) { + for (var i = 0, ii = node.children.length; i < ii; i++) { + this.transform_qweb_template(node.children[i]); + } + } + }, on_show_data: function(data) { var self = this; this.$element.html(QWeb.render("KanbanView", {"data": data})); @@ -67,7 +107,6 @@ openerp.base_kanban.KanbanView = openerp.base.View.extend({ }, stop: self.on_receive_record, }); - this.$element.find(".record").addClass( "ui-widget ui-widget-content ui-corner-all" ) this.$element.find(".oe_column").disableSelection() this.$element.find('button.oe_kanban_button_new').click(this.do_add_record); }, @@ -252,7 +291,7 @@ openerp.base_kanban.KanbanView = openerp.base.View.extend({ }); this.$element.find( ".oe_table_column " ).css("width", 99 / self.all_display_data.length +"%"); this.$element.find('button').click(function() { - var record_id = $(this).closest(".record").attr("id"); + var record_id = $(this).closest(".oe_kanban_record").attr("id"); if (record_id) { record_id = parseInt(record_id.split("_")[1]) if (record_id) { @@ -306,7 +345,7 @@ openerp.base_kanban.KanbanView = openerp.base.View.extend({ self.groups = []; self.dataset.read_slice([], {}, function(records) { self.all_display_data = [{'records': records, 'value':false, 'header' : false, 'ids': self.dataset.ids}]; - self.$element.find("#kanbanview").remove(); + self.$element.find(".oe_kanban_view").remove(); self.on_show_data(self.all_display_data); }); } @@ -330,7 +369,7 @@ openerp.base_kanban.KanbanView = openerp.base.View.extend({ self.dataset.read_slice([], {}, function(records) { self.all_display_data.push({"value" : group_value, "records": records, 'header':group_name, 'ids': self.dataset.ids}); if (datagroups.length == self.all_display_data.length) { - self.$element.find("#kanbanview").remove(); + self.$element.find(".oe_kanban_view").remove(); self.on_show_data(self.all_display_data); } }); diff --git a/addons/base_kanban/static/src/xml/base_kanban.xml b/addons/base_kanban/static/src/xml/base_kanban.xml index 42c65ec1106..36cf860c15a 100644 --- a/addons/base_kanban/static/src/xml/base_kanban.xml +++ b/addons/base_kanban/static/src/xml/base_kanban.xml @@ -1,6 +1,6 @@
+ () @@ -12,13 +12,15 @@
- -
-
-
-
-
+
+
+ +
+
+
+
+
+