From ccd10f58225fb6b4c14ca0800429c207d4cd455c Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Thu, 15 Sep 2011 13:00:58 +0530 Subject: [PATCH 01/28] [IMP] kanban :- if no groupby on field then display records in multiple columns. bzr revid: ysa@tinyerp.com-20110915073058-w8c9bwjp1otfweoz --- addons/web_kanban/static/src/js/kanban.js | 36 ++++++++++++++++++++--- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index dfaf7769df5..1d4de3d8398 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -18,6 +18,7 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ this.all_display_data = false; this.groups = []; this.qweb = new QWeb2.Engine(); + this.NO_OF_COLUMNS = 2; if (this.options.action_views_ids.form) { this.form_dialog = new openerp.web.FormDialog(this, {}, this.options.action_views_ids.form, dataset).start(); this.form_dialog.on_form_dialog_saved.add_last(this.on_record_saved); @@ -117,9 +118,12 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ } } }, - on_show_data: function(data) { + on_show_data: function() { var self = this; - this.$element.html(QWeb.render("KanbanView", {"data": data})); + if (!this.group_by.length) { + this.do_record_group(); + } + this.$element.html(QWeb.render("KanbanView", {"data": self.all_display_data})); this.on_reload_kanban(); var drag_handel = false; if (this.$element.find(".oe_kanban_draghandle").length > 0) { @@ -137,6 +141,17 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ this.$element.find(".oe_column").disableSelection() this.$element.find('button.oe_kanban_button_new').click(this.do_add_record); }, + do_record_group: function() { + if (this.NO_OF_COLUMNS) { + var records = this.all_display_data[0].records; + var record_per_group = Math.round((records).length / this.NO_OF_COLUMNS); + this.all_display_data = []; + for (var i=0, ii=this.NO_OF_COLUMNS; i < ii; i++) { + this.all_display_data.push({'records': records.slice(0,record_per_group), 'value':false, 'header' : false, 'ids':[]}); + records.splice(0,record_per_group); + } + } + }, on_button_click: function (button_attrs, record_id) { var self = this; if (this.groups.length) { @@ -391,6 +406,7 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ group_by = self.group_by; if (!group_by.length && this.fields_view.arch.attrs.default_group_by) { group_by = [this.fields_view.arch.attrs.default_group_by]; + self.group_by = group_by; } self.datagroup = new openerp.web.DataGroup(self, self.model, self.domain, self.context, group_by); self.dataset.context = self.context; @@ -407,7 +423,7 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ self.dataset.read_slice([], {}, function(records) { self.all_display_data = [{'records': records, 'value':false, 'header' : false, 'ids': self.dataset.ids}]; self.$element.find(".oe_kanban_view").remove(); - self.on_show_data(self.all_display_data); + self.on_show_data(); }); } ); @@ -431,7 +447,7 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ 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(".oe_kanban_view").remove(); - self.on_show_data(self.all_display_data); + self.on_show_data(); } }); }); @@ -443,6 +459,18 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ this.$element.hide(); } }); + +/*openerp.web_kanban.KanbanRecord = openerp.web.Class.extend({ + init: function (dataset, record_id, options) { + this.dataset = dataset; + this.record_id = record_id; + this.options = options; + }, + + on_render: function () { + + }, +});*/ }; // vim:et fdc=0 fdl=0 foldnestmax=3 fdm=syntax: From 7b500f02ad31a6be0337faa3b2d503ef5fdbf93c Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Thu, 15 Sep 2011 13:06:03 +0530 Subject: [PATCH 02/28] [IMP] kanban :- if no group by on field then drag and drop functionality disable. bzr revid: ysa@tinyerp.com-20110915073603-5yvddorwgu0xwyt6 --- addons/web_kanban/static/src/js/kanban.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index 1d4de3d8398..3cc2e6a8beb 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -129,6 +129,9 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ if (this.$element.find(".oe_kanban_draghandle").length > 0) { drag_handel = ".oe_kanban_draghandle"; } + if (!this.group_by.length) { + drag_handel = true; + } this.$element.find(".oe_column").sortable({ connectWith: ".oe_column", handle : drag_handel, From 681a5bd001871c68730636ef6ac27c01f79615b1 Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Thu, 15 Sep 2011 15:42:09 +0530 Subject: [PATCH 03/28] [IMP] kanban :- column group pass in sort order. bzr revid: ysa@tinyerp.com-20110915101209-29ez6zvd1q8s6asg --- addons/web_kanban/static/src/js/kanban.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index 3bbaaf6c430..424518b92d8 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -118,11 +118,19 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ } } }, + sort_group: function (first, second) { + first = first.header.toLowerCase(); + second = second.header.toLowerCase(); + if (first > second) return 1; + else if (first < second) return -1; + else return 0; + }, on_show_data: function() { var self = this; if (!this.group_by.length) { this.do_record_group(); } + self.all_display_data.sort(this.sort_group); this.$element.html(QWeb.render("KanbanView", {"data": self.all_display_data})); this.on_reload_kanban(); var drag_handel = false; From 903ae74c11998eafc34ef5612877dd965cb5d7c5 Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Fri, 16 Sep 2011 18:30:49 +0530 Subject: [PATCH 04/28] [IMP] kanban :- add basic struncture of folding and unfolding columns. bzr revid: ysa@tinyerp.com-20110916130049-ppachcw4xne1rzjw --- addons/web_kanban/static/src/css/kanban.css | 11 ++++-- addons/web_kanban/static/src/js/kanban.js | 13 +++++++ .../web_kanban/static/src/xml/web_kanban.xml | 36 ++++++++++--------- 3 files changed, 41 insertions(+), 19 deletions(-) diff --git a/addons/web_kanban/static/src/css/kanban.css b/addons/web_kanban/static/src/css/kanban.css index afac6cdef47..1497044b807 100644 --- a/addons/web_kanban/static/src/css/kanban.css +++ b/addons/web_kanban/static/src/css/kanban.css @@ -2,18 +2,25 @@ float: left; width: 100%; } - .openerp .oe_kanban_view .ui-sortable-placeholder { border: 1px dotted black; visibility: visible !important; height: 60px !important; } - +.oe_kanban_row { + overflow:hidden; +} +.oe_table_column { + float:left; +} .openerp .oe_kanban_view .oe_column_heading { color: #000000; font-size: 1.5em; font-weight: bold; } +.openerp .oe_kanban_view { + overflow:hidden; +} .openerp .oe_kanban_action_button { height: 22px; margin: 0; diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index 424518b92d8..db9473b4ff5 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -19,6 +19,7 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ this.groups = []; this.qweb = new QWeb2.Engine(); this.NO_OF_COLUMNS = 2; + this.DISPLAY_COLUMNS = 3; if (this.options.action_views_ids.form) { this.form_dialog = new openerp.web.FormDialog(this, {}, this.options.action_views_ids.form, dataset).start(); this.form_dialog.on_form_dialog_saved.add_last(this.on_record_saved); @@ -151,6 +152,18 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ }); this.$element.find(".oe_column").disableSelection() this.$element.find('button.oe_kanban_button_new').click(this.do_add_record); + var column_width = 100 / (this.all_display_data).length; + var row_width = column_width * (this.all_display_data).length * this.DISPLAY_COLUMNS; + self.$element.find(".oe_table_column" ).css("width", column_width +"%"); + self.$element.find(".oe_kanban_row" ).css("width", row_width +"%"); + this.$element.find('#next-column').click(function(event) { + event.preventDefault(); + self.$element.find('.oe_kanban_view').animate({"scrollLeft" : "+=" + self.$element.find('.oe_column').width()}, 'slow'); + }); + this.$element.find('#previous-column').click(function(event) { + event.preventDefault(); + self.$element.find('.oe_kanban_view').animate({scrollLeft:'-=' + self.$element.find('.oe_column').width() }, 'slow'); + }); }, do_record_group: function() { if (this.NO_OF_COLUMNS) { diff --git a/addons/web_kanban/static/src/xml/web_kanban.xml b/addons/web_kanban/static/src/xml/web_kanban.xml index aa7bc73190d..b48333e6df4 100644 --- a/addons/web_kanban/static/src/xml/web_kanban.xml +++ b/addons/web_kanban/static/src/xml/web_kanban.xml @@ -1,26 +1,28 @@ \ No newline at end of file From 9fa1aaec6e9acec1aa1183dda1f4dea46a2218ca Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Tue, 20 Sep 2011 17:32:47 +0530 Subject: [PATCH 12/28] [IMP] kanban :- add basic structure of folding and unfolding columns. bzr revid: ysa@tinyerp.com-20110920120247-0f916npmmeu83qhu --- addons/web_kanban/static/src/css/kanban.css | 9 ++++++-- addons/web_kanban/static/src/js/kanban.js | 21 +++++++++++++++++++ .../web_kanban/static/src/xml/web_kanban.xml | 16 ++++++++------ 3 files changed, 38 insertions(+), 8 deletions(-) diff --git a/addons/web_kanban/static/src/css/kanban.css b/addons/web_kanban/static/src/css/kanban.css index afac6cdef47..35b8c1cb16b 100644 --- a/addons/web_kanban/static/src/css/kanban.css +++ b/addons/web_kanban/static/src/css/kanban.css @@ -3,6 +3,12 @@ width: 100%; } +.oe_vertical_text { + -moz-transform: rotate(-90deg); + -o-transform: rotate(-90deg); + -webkit-transform: rotate(-90deg); +} + .openerp .oe_kanban_view .ui-sortable-placeholder { border: 1px dotted black; visibility: visible !important; @@ -199,5 +205,4 @@ /* Alert color */ .openerp .oe_kanban_color_alert .oe_kanban_color_border { border-color: #c00 !important; -} - +} \ No newline at end of file diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index d11d2cfbcf4..62f7dd3052a 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -148,6 +148,7 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ self.all_display_data.sort(this.sort_group); this.$element.html(QWeb.render("KanbanView", {"data": self.all_display_data})); this.on_reload_kanban(); + this.$element.find(".oe_vertical_text").hide(); var drag_handel = false; if (this.$element.find(".oe_kanban_draghandle").length > 0) { drag_handel = ".oe_kanban_draghandle"; @@ -166,6 +167,26 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ }); this.$element.find(".oe_column").disableSelection() this.$element.find('button.oe_kanban_button_new').click(this.do_add_record); + this.$element.find(".fold-columns-icon").click(function(event) { + self.do_fold_unfold_columns(event, this.id); + }); + }, + do_fold_unfold_columns: function(event, element_id) { + var column_id = "column_" + element_id; + var column_element = this.$element.find("#" + column_id + ".oe_fold_column"); + if (column_element.is(":hidden")) { + this.$element.find("#" + column_id).find("img.fold-columns-icon").attr('src', '/web_kanban/static/src/img/minus-icon.png'); + column_element.show(); + this.$element.find("#" + column_id + ".oe_table_column").css("width",Math.round(99 / this.all_display_data.length) + "%"); + this.$element.find("#" + column_id + ".oe_vertical_text").hide(); + } + else{ + this.$element.find("#" + column_id).find("img.fold-columns-icon").attr('src', '/web_kanban/static/src/img/plus-icon.png'); + column_element.hide(); + this.$element.find("#" + column_id + ".oe_table_column").css("width","0.5%"); + this.$element.find("#" + column_id + ".oe_vertical_text").show(); + } + }, do_record_group: function() { if (this.NO_OF_COLUMNS) { diff --git a/addons/web_kanban/static/src/xml/web_kanban.xml b/addons/web_kanban/static/src/xml/web_kanban.xml index 04620abaeae..599c81a8797 100644 --- a/addons/web_kanban/static/src/xml/web_kanban.xml +++ b/addons/web_kanban/static/src/xml/web_kanban.xml @@ -10,15 +10,19 @@ - - -
- + +
+ + +
+ +
- -
+ +

+
From acdb9b1ec4bd0bb6815eb5c4e930d811ffa95759 Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Tue, 20 Sep 2011 17:34:00 +0530 Subject: [PATCH 13/28] [ADD] kanban :- add icon of fold and unfold columns. bzr revid: ysa@tinyerp.com-20110920120400-nzybn0awsspkrsli --- addons/web_kanban/static/src/img/minus-icon.png | Bin 0 -> 1390 bytes addons/web_kanban/static/src/img/plus-icon.png | Bin 0 -> 761 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 addons/web_kanban/static/src/img/minus-icon.png create mode 100644 addons/web_kanban/static/src/img/plus-icon.png diff --git a/addons/web_kanban/static/src/img/minus-icon.png b/addons/web_kanban/static/src/img/minus-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..cb655d1e5032501ad68d7312725d9cb609c5d157 GIT binary patch literal 1390 zcmcIkO-vI(6douf6$7GCgGS?Ii3tbW+1<93ZrUPH5DY~^n~25(%XTO$?e1oGNDCVL zi5FwM8Dorza5Emfm>9e$a^OIqA&udJ1PvyVh>-&)gWzmiN+Cv1Om_ZW-uJyX-@Kjs zogEj-%TAU70Lt5116_2kG`rP8#~RzA5S=VWV_Vp2wJvX1~7rWI4UbX213X{IpSk3yMk;`Yr_3< z>#&YP!yRF1ctG+*n0kMiHz`nX91{^H<1xh$l0GKGDbTfPMhwijkO3dlUKHohoK0dKPUx()^KRbbu001sB7ql01@dmlvn(BWf#U=xN0Z4k#$QHfuO8_Wx&ke^ zm~`i3`U%klgc6B_J>jscdK7UUj|Z_l;&~hOuo*)N5tBB>sLqmX^8~OV>9R&-Re>h2 z*sBf_AH$e|@-25bQOgHXjGTB>MwApa#MxPtXQn_eH405S7Ky5dRW;_%9=}D_aYEGx z4A>NMcunLkr=6%fcpMN3_ESCTY%Fi%++mg%9JPYeb+rJWb=m_Dsu8(wr~vM;@vaQq zB{;Yoyuc|3_aak>0%0<$n`hc%|DRwHDX*6{sK+wb5|I#&;W$=^K{excYZj4&K2?v4 z#4pFiC`OtR^`af)Kl96GP0NCoCCb<3cIx@7+?U0U?)yTYCEd>;j$^dAe zCf-j?O-)Zv&(6-IQmJ%0JwHFcu&}VSw6wguyt1;gy1Kfywzj^$PJxeaZA?-g3+d_z z0mP)K16MJ5zOsbbWclW8C_=Zb~GH-P80Ef&5mFX!vysop{R z^^U%jo0#tI?95(hZAGzA0EpnaE`DroVs&jTU#XP)J}oVM`3G>LtE;1_srmD*?ru9` zS=ig%!Pw|10AONr5)IibwANTzT{+m^{dMQ#!uv%4U;yap=}BeMnZ;}E?Y8GtuwU9o z+4DkYp68)l+K2CXxO(}Dold2vd!O{mFb6DUe@jbq%CGte0)Uv|`^Ny^_fW1>K*V4s zG&MG6^~S*vfL9g(L}Rf5As9Q`Kf%l(7VzsF6pKY@ZNLnG81XYP#NzRLAs{07;>P+q z-o1GXtu<=38no6S;N|3tuy0^6@^l2Tc+3s2pd48U{2)t25JEr*aiX-245d@~w#z|0WL zD3>eYiHSr4$z%e|d?Ld@7%m8WtegilFP(74yjQR5yu~*prBQPW_00000NkvXXu0mjfdy-ED literal 0 HcmV?d00001 From 87a55e927e7a177b21607275256614251abd5a60 Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Tue, 20 Sep 2011 18:42:36 +0530 Subject: [PATCH 14/28] [IMP] kanban :- improve css of fold and unfold columns. bzr revid: ysa@tinyerp.com-20110920131236-hrwinziygoh9j9az --- addons/web_kanban/static/src/css/kanban.css | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/addons/web_kanban/static/src/css/kanban.css b/addons/web_kanban/static/src/css/kanban.css index 35b8c1cb16b..c7a1b3f27a9 100644 --- a/addons/web_kanban/static/src/css/kanban.css +++ b/addons/web_kanban/static/src/css/kanban.css @@ -4,9 +4,15 @@ } .oe_vertical_text { - -moz-transform: rotate(-90deg); - -o-transform: rotate(-90deg); - -webkit-transform: rotate(-90deg); + writing-mode:tb-rl; + -webkit-transform:rotate(90deg); + -moz-transform:rotate(90deg); + -o-transform: rotate(90deg); + display:block; + width:30px; + height:20px; + align:center; + font-size:24px; } .openerp .oe_kanban_view .ui-sortable-placeholder { From 01106829e939f30487235481a3365d8cc78da69d Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Tue, 20 Sep 2011 19:01:36 +0530 Subject: [PATCH 15/28] [IMP] kanban :- improve css bzr revid: ysa@tinyerp.com-20110920133136-oida5na52ola5ygl --- addons/web_kanban/static/src/css/kanban.css | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/addons/web_kanban/static/src/css/kanban.css b/addons/web_kanban/static/src/css/kanban.css index c7a1b3f27a9..6224723147f 100644 --- a/addons/web_kanban/static/src/css/kanban.css +++ b/addons/web_kanban/static/src/css/kanban.css @@ -3,11 +3,13 @@ width: 100%; } -.oe_vertical_text { +.openerp .oe_vertical_text { writing-mode:tb-rl; -webkit-transform:rotate(90deg); -moz-transform:rotate(90deg); -o-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); display:block; width:30px; height:20px; From 9936f7276006887839998a3dba348d49bc66b9d2 Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Wed, 21 Sep 2011 15:22:45 +0530 Subject: [PATCH 16/28] [IMP] kanban :- if drag any record and no record in this group then empty group display and again drop any record in empty group. bzr revid: ysa@tinyerp.com-20110921095245-e2hucliw1zo5uzbj --- addons/web_kanban/static/src/css/kanban.css | 1 - addons/web_kanban/static/src/js/kanban.js | 5 +---- addons/web_kanban/static/src/xml/web_kanban.xml | 8 +++----- 3 files changed, 4 insertions(+), 10 deletions(-) diff --git a/addons/web_kanban/static/src/css/kanban.css b/addons/web_kanban/static/src/css/kanban.css index 6224723147f..0aca55430b5 100644 --- a/addons/web_kanban/static/src/css/kanban.css +++ b/addons/web_kanban/static/src/css/kanban.css @@ -1,5 +1,4 @@ .openerp .oe_kanban_view .oe_column { - float: left; width: 100%; } diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index 62f7dd3052a..6c2a06b982c 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -173,7 +173,7 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ }, do_fold_unfold_columns: function(event, element_id) { var column_id = "column_" + element_id; - var column_element = this.$element.find("#" + column_id + ".oe_fold_column"); + var column_element = this.$element.find("#" + column_id + " .oe_fold_column"); if (column_element.is(":hidden")) { this.$element.find("#" + column_id).find("img.fold-columns-icon").attr('src', '/web_kanban/static/src/img/minus-icon.png'); column_element.show(); @@ -399,9 +399,6 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ kanban_gravatar: self.kanban_gravatar })); }); - } else { - self.$element.find("#column_" + data.value).remove(); - self.all_display_data.splice(index, 1); } }); this.$element.find('.oe_kanban_action').click(this.on_action_clicked); diff --git a/addons/web_kanban/static/src/xml/web_kanban.xml b/addons/web_kanban/static/src/xml/web_kanban.xml index 599c81a8797..352ccf66b19 100644 --- a/addons/web_kanban/static/src/xml/web_kanban.xml +++ b/addons/web_kanban/static/src/xml/web_kanban.xml @@ -11,7 +11,7 @@ -
+

@@ -20,11 +20,9 @@ - +

-
-
-
+
From 8b9a3b31a8577d9ea91dfed88cb48f7777710a36 Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Wed, 21 Sep 2011 17:09:37 +0530 Subject: [PATCH 17/28] [IMP] kanban :- default dataset domain problem fix. bzr revid: ysa@tinyerp.com-20110921113937-407vhkefp6olpb64 --- addons/web_kanban/static/src/js/kanban.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index 6c2a06b982c..a9aecbb0e22 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -20,6 +20,8 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ this.qweb = new QWeb2.Engine(); this.aggregates = {}; this.NO_OF_COLUMNS = 3; + this.dataset_default_domain = dataset.domain; + this.dataset_default_context = dataset.context; if (this.options.action_views_ids.form) { this.form_dialog = new openerp.web.FormDialog(this, {}, this.options.action_views_ids.form, dataset).start(); this.form_dialog.on_form_dialog_saved.add_last(this.on_record_saved); @@ -434,9 +436,11 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ }, do_search: function (domains, contexts, group_by) { var self = this; + this.dataset.domain = this.dataset_default_domain; + this.dataset.context = this.dataset_default_context; this.rpc('/web/session/eval_domain_and_context', { - domains: domains, - contexts: contexts, + domains: [this.dataset.get_domain()].concat(domains), + contexts: [this.dataset.get_context()].concat(contexts), group_by_seq: group_by }, function (results) { self.domain = results.domain; @@ -461,8 +465,6 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ self.do_render_group(groups); }, function (dataset) { - self.domain = dataset.domain; - self.context = dataset.context; self.groups = []; self.dataset.read_slice([], {}, function(records) { self.all_display_data = [{'records': records, 'value':false, 'header' : false, 'ids': self.dataset.ids}]; From 5142f9a9aaf4108f03093e6efde118556dbe7532 Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Thu, 22 Sep 2011 10:50:59 +0530 Subject: [PATCH 18/28] [IMP] kanban :- improve group title. bzr revid: ysa@tinyerp.com-20110922052059-fg7w253jxb6i8dxs --- addons/web_kanban/static/src/js/kanban.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index a9aecbb0e22..c30794fb6ed 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -491,9 +491,7 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ } var group_aggregates = ''; _.each(self.aggregates, function(value, key) { - if (group.aggregates[key]) { - group_aggregates += value + ": " + group.aggregates[key]; - } + group_aggregates += value + ": " + group.aggregates[key]; }); self.dataset.read_slice([], {}, function(records) { self.all_display_data.push({"value" : group_value, "records": records, 'header':group_name, 'ids': self.dataset.ids, 'aggregates': group_aggregates}); From 5ba40e563953dff00931403d9a03ce6807cc2603 Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Thu, 22 Sep 2011 12:47:18 +0530 Subject: [PATCH 19/28] [IMP] kanban :- pass domain and context in read_slice method instead of dataset. bzr revid: ysa@tinyerp.com-20110922071718-jksxy7hx8dm0n8ce --- addons/web_kanban/static/src/js/kanban.js | 38 ++--------------------- 1 file changed, 3 insertions(+), 35 deletions(-) diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index c30794fb6ed..1450e8c26fa 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -20,8 +20,6 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ this.qweb = new QWeb2.Engine(); this.aggregates = {}; this.NO_OF_COLUMNS = 3; - this.dataset_default_domain = dataset.domain; - this.dataset_default_context = dataset.context; if (this.options.action_views_ids.form) { this.form_dialog = new openerp.web.FormDialog(this, {}, this.options.action_views_ids.form, dataset).start(); this.form_dialog.on_form_dialog_saved.add_last(this.on_record_saved); @@ -202,31 +200,7 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ } }, on_button_click: function (button_attrs, record_id) { - var self = this; - if (this.groups.length) { - _.each(this.groups, function (group) { - group.list([], - function (groups) {}, - function (dataset) { - dataset.read_slice([], {}, function(records) { - var index = parseInt(_.indexOf(dataset.ids, record_id)); - if(index >= 0) { - self.on_confirm_click(dataset, button_attrs, index, record_id); - } - }); - } - ); - }); - } else { - var index = parseInt(_.indexOf(self.dataset.ids, record_id)); - if (index >= 0) { - _.extend(self.dataset, {domain: self.domain, context: self.context}); - self.on_confirm_click(self.dataset, button_attrs, index, record_id); - } - } - }, - on_confirm_click: function (dataset, button_attrs, index, record_id) { - this.on_execute_button_click(dataset, button_attrs, record_id); + this.on_execute_button_click(this.dataset, button_attrs, record_id); }, do_add_record: function() { this.dataset.index = null; @@ -436,8 +410,6 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ }, do_search: function (domains, contexts, group_by) { var self = this; - this.dataset.domain = this.dataset_default_domain; - this.dataset.context = this.dataset_default_context; this.rpc('/web/session/eval_domain_and_context', { domains: [this.dataset.get_domain()].concat(domains), contexts: [this.dataset.get_context()].concat(contexts), @@ -457,8 +429,6 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ self.group_by = group_by; } self.datagroup = new openerp.web.DataGroup(self, self.model, self.domain, self.context, group_by); - self.dataset.context = self.context; - self.dataset.domain = self.domain; self.datagroup.list([], function (groups) { self.groups = groups; @@ -466,7 +436,7 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ }, function (dataset) { self.groups = []; - self.dataset.read_slice([], {}, function(records) { + self.dataset.read_slice([], {'domain': self.domain, 'context': self.context}, function(records) { self.all_display_data = [{'records': records, 'value':false, 'header' : false, 'ids': self.dataset.ids}]; self.$element.find(".oe_kanban_view").remove(); self.on_show_data(); @@ -478,8 +448,6 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ this.all_display_data = []; var self = this; _.each(datagroups, function (group) { - self.dataset.context = group.context; - self.dataset.domain = group.domain; var group_name = group.value; var group_value = group.value; if (!group.value) { @@ -493,7 +461,7 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ _.each(self.aggregates, function(value, key) { group_aggregates += value + ": " + group.aggregates[key]; }); - self.dataset.read_slice([], {}, function(records) { + self.dataset.read_slice([], {'domain': group.domain, 'context': group.context}, function(records) { self.all_display_data.push({"value" : group_value, "records": records, 'header':group_name, 'ids': self.dataset.ids, 'aggregates': group_aggregates}); if (datagroups.length == self.all_display_data.length) { self.$element.find(".oe_kanban_view").remove(); From b20f60ba611bb3ba9e3a73579ea93b4fec298205 Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Thu, 22 Sep 2011 12:50:01 +0530 Subject: [PATCH 20/28] [FIX] kanban :- if no record found then display as a blank page. bzr revid: ysa@tinyerp.com-20110922072001-u3rcsst3g0y9vwiz --- addons/web_kanban/static/src/js/kanban.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index 1450e8c26fa..eec3daaba09 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -432,7 +432,13 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ self.datagroup.list([], function (groups) { self.groups = groups; - self.do_render_group(groups); + if (groups.length) { + self.do_render_group(groups); + } + else { + self.all_display_data = []; + self.on_show_data(); + } }, function (dataset) { self.groups = []; From 132377f01252d1c6d738d42a842e41924cca8554 Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Thu, 22 Sep 2011 14:33:14 +0530 Subject: [PATCH 21/28] [FIX] kanban :- fix problem on group by. bzr revid: ysa@tinyerp.com-20110922090314-o7cs05dkgptr8nkc --- addons/web_kanban/static/src/js/kanban.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index eec3daaba09..d1fa4bb92ba 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -189,7 +189,7 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ }, do_record_group: function() { - if (this.NO_OF_COLUMNS) { + if (this.NO_OF_COLUMNS && this.all_display_data.length > 0) { var records = this.all_display_data[0].records; var record_per_group = Math.round((records).length / this.NO_OF_COLUMNS); this.all_display_data = []; @@ -443,7 +443,8 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ function (dataset) { self.groups = []; self.dataset.read_slice([], {'domain': self.domain, 'context': self.context}, function(records) { - self.all_display_data = [{'records': records, 'value':false, 'header' : false, 'ids': self.dataset.ids}]; + if (records.length) self.all_display_data = [{'records': records, 'value':false, 'header' : false, 'ids': self.dataset.ids}]; + else self.all_display_data = []; self.$element.find(".oe_kanban_view").remove(); self.on_show_data(); }); From 948b1c0a57498a976d34e42963c5e9c3f100a5a1 Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Thu, 22 Sep 2011 16:08:34 +0530 Subject: [PATCH 22/28] [IMP] kanban :- remove unused code. bzr revid: ysa@tinyerp.com-20110922103834-2h6hrp9ym8o872ah --- addons/web_kanban/static/src/js/kanban.js | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index d1fa4bb92ba..f278d304af3 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -265,16 +265,7 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ this.do_execute_action( button_attrs, dataset, record_id, function () { - var count = 1; - _.each(self.all_display_data, function(data, index) { - self.dataset.read_ids( data.ids, [], function(records){ - self.all_display_data[index].records = records; - if(self.all_display_data.length == count) { - self.do_actual_search(); - } - count++; - }); - }); + self.do_actual_search(); } ); }, From 092190e8de399b7297905866b9e768b051051ff2 Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Fri, 23 Sep 2011 14:18:38 +0530 Subject: [PATCH 23/28] [IMP] kanban :- add on_reload_record method for reload particular record. bzr revid: ysa@tinyerp.com-20110923084838-yynkktws7t1bpvbm --- addons/web_kanban/static/src/js/kanban.js | 28 ++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index f278d304af3..eb3810e3b5e 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -236,11 +236,37 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ data[$e.data('name')] = $(this).data('color'); self.dataset.write(id, data, {}, function() { // TODO fme: reload record instead of all. need refactoring - self.do_actual_search(); + self.on_reload_record(id, data); }); $cpicker.remove(); }); }, + /** + Reload one record in view. + record_id : reload record id. + data : change value in particular record. + */ + on_reload_record: function (record_id, data){ + var self = this; + for (var i=0, ii=this.all_display_data.length; i < ii; i++) { + for(j=0, jj=this.all_display_data[i].records.length; j < jj; j++) { + if (this.all_display_data[i].records[j].id == record_id) { + _.extend(this.all_display_data[i].records[j], data); + this.$element.find("#main_" + record_id).children().remove(); + this.$element.find("#main_" + record_id).append(this.qweb.render('kanban-box', { + record: this.do_transform_record(this.all_display_data[i].records[j]), + kanban_color: this.kanban_color, + kanban_gravatar: this.kanban_gravatar + })); + break; + } + } + } + this.$element.find("#main_" + record_id + " .oe_kanban_action").click(this.on_action_clicked); + this.$element.find("#main_" + record_id + " .oe_kanban_box_show_onclick_trigger").click(function() { + $(this).parent("#main_" + record_id + " .oe_kanban_box").find(".oe_kanban_box_show_onclick").toggle(); + }); + }, do_delete: function (id) { var self = this; return $.when(this.dataset.unlink([id])).then(function () { From 04d35223741955b118529a22c23591c4f600b861 Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Fri, 23 Sep 2011 17:24:22 +0530 Subject: [PATCH 24/28] [IMP] kanbna:- if no group by on field then folding and unfolding columns work. bzr revid: ysa@tinyerp.com-20110923115422-0oi0y9pcj3swxg82 --- addons/web_kanban/static/src/js/kanban.js | 2 +- addons/web_kanban/static/src/xml/web_kanban.xml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index eb3810e3b5e..fc286855c90 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -194,7 +194,7 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ var record_per_group = Math.round((records).length / this.NO_OF_COLUMNS); this.all_display_data = []; for (var i=0, ii=this.NO_OF_COLUMNS; i < ii; i++) { - this.all_display_data.push({'records': records.slice(0,record_per_group), 'value':false, 'header' : false, 'ids':[]}); + this.all_display_data.push({'records': records.slice(0,record_per_group), 'value':i, 'header' : false, 'ids':[]}); records.splice(0,record_per_group); } } diff --git a/addons/web_kanban/static/src/xml/web_kanban.xml b/addons/web_kanban/static/src/xml/web_kanban.xml index 352ccf66b19..9ca9913b795 100644 --- a/addons/web_kanban/static/src/xml/web_kanban.xml +++ b/addons/web_kanban/static/src/xml/web_kanban.xml @@ -12,7 +12,7 @@
- +
@@ -21,7 +21,7 @@ -

+

From 6ec293a9c7b61effd0291d544fe4506c96ad5687 Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Mon, 26 Sep 2011 14:38:47 +0530 Subject: [PATCH 25/28] [IMP] kanban :- donot scroll when draging record out side of page. bzr revid: ysa@tinyerp.com-20110926090847-69nm54mpe73cqnq3 --- addons/web_kanban/static/src/js/kanban.js | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index fc286855c90..f910dc9927c 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -164,6 +164,7 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ self.source_index['column'] = ui.item.parent().attr('id'); }, stop: self.on_receive_record, + scroll: false }); this.$element.find(".oe_column").disableSelection() this.$element.find('button.oe_kanban_button_new').click(this.do_add_record); From c0d25a2d8985d8f94ccba3668e979ce3ef42d866 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Mon, 26 Sep 2011 15:03:29 +0200 Subject: [PATCH 26/28] [FIX] Fixed aggregates bzr revid: fme@openerp.com-20110926130329-r8urx8kcfdodcni2 --- addons/web_kanban/static/src/js/kanban.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index f910dc9927c..0f449a51cfc 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -447,7 +447,7 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ self.group_by = group_by; } self.datagroup = new openerp.web.DataGroup(self, self.model, self.domain, self.context, group_by); - self.datagroup.list([], + self.datagroup.list(_.keys(self.fields_view.fields), function (groups) { self.groups = groups; if (groups.length) { From eac3fe15bdacc2794a8e4b33602c7a1b27c17e7d Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Mon, 26 Sep 2011 16:10:39 +0200 Subject: [PATCH 27/28] [FIX] Fixed vertical column headers bzr revid: fme@openerp.com-20110926141039-ylm2dp1kzk2dkagu --- addons/web_kanban/static/src/xml/web_kanban.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/web_kanban/static/src/xml/web_kanban.xml b/addons/web_kanban/static/src/xml/web_kanban.xml index 9ca9913b795..70843b8a0b8 100644 --- a/addons/web_kanban/static/src/xml/web_kanban.xml +++ b/addons/web_kanban/static/src/xml/web_kanban.xml @@ -12,7 +12,7 @@
- +
@@ -21,7 +21,7 @@ -

+

@@ -39,4 +39,4 @@ - \ No newline at end of file + From bd93d296afa53b32687838f648bcb73ba385d6a7 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Mon, 26 Sep 2011 17:04:24 +0200 Subject: [PATCH 28/28] [IMP] Improved aggregates bzr revid: fme@openerp.com-20110926150424-o6nsd1h26y8o945d --- addons/web_kanban/static/src/css/kanban.css | 6 +++++- addons/web_kanban/static/src/js/kanban.js | 4 ++-- addons/web_kanban/static/src/xml/web_kanban.xml | 10 +++++----- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/addons/web_kanban/static/src/css/kanban.css b/addons/web_kanban/static/src/css/kanban.css index 0aca55430b5..f92203589b2 100644 --- a/addons/web_kanban/static/src/css/kanban.css +++ b/addons/web_kanban/static/src/css/kanban.css @@ -27,6 +27,10 @@ font-size: 1.5em; font-weight: bold; } +.openerp .oe_kanban_view .fold-columns-icon { + float: left; + padding: 2px 2px 0 0; +} .openerp .oe_kanban_action_button { height: 22px; margin: 0; @@ -212,4 +216,4 @@ /* Alert color */ .openerp .oe_kanban_color_alert .oe_kanban_color_border { border-color: #c00 !important; -} \ No newline at end of file +} diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index 0f449a51cfc..df194e9f844 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -482,9 +482,9 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ group_name = group.value[1]; group_value = group.value[0]; } - var group_aggregates = ''; + var group_aggregates = {}; _.each(self.aggregates, function(value, key) { - group_aggregates += value + ": " + group.aggregates[key]; + group_aggregates[value] = group.aggregates[key]; }); self.dataset.read_slice([], {'domain': group.domain, 'context': group.context}, function(records) { self.all_display_data.push({"value" : group_value, "records": records, 'header':group_name, 'ids': self.dataset.ids, 'aggregates': group_aggregates}); diff --git a/addons/web_kanban/static/src/xml/web_kanban.xml b/addons/web_kanban/static/src/xml/web_kanban.xml index 70843b8a0b8..4c98f42f8fe 100644 --- a/addons/web_kanban/static/src/xml/web_kanban.xml +++ b/addons/web_kanban/static/src/xml/web_kanban.xml @@ -9,13 +9,13 @@ - + -
+
- -
- +
+
+ :