Merge lp:~openerp-dev/openerp-web/trunk-kanban-column-rga into lp:openerp-web

Proposed by Vidhin Mehta (OpenERP)
Status: Work in progress
Proposed branch: lp:~openerp-dev/openerp-web/trunk-kanban-column-rga
Merge into: lp:openerp-web
Diff against target: 197 lines (+110/-37)
2 files modified
addons/web_kanban/static/src/js/kanban.js (+97/-36)
addons/web_kanban/static/src/xml/web_kanban.xml (+13/-1)
To merge this branch: bzr merge lp:~openerp-dev/openerp-web/trunk-kanban-column-rga
Reviewer Review Type Date Requested Status
OpenERP R&D Web Team Pending
Review via email: mp+190308@code.launchpad.net
To post a comment you must log in.

Unmerged revisions

3823. By Mahendra Barad(OpenERP)

[Merge] merge iwth trunk

3822. By RGA(OpenERP)

fix typo

3821. By RGA(OpenERP)

[IMP] dialog title and field label

3820. By RGA(OpenERP)

[IMP] add option to link kanban column

3819. By RGA(OpenERP)

Merge with trunk

3818. By Mahendra Barad(OpenERP)

[IMP]solve the kanban stage move problem

3817. By Mahendra Barad(OpenERP)

merge with trunk

3816. By RGA(OpenERP)

Merge with trunk

3815. By RGA(OpenERP)

Merge with trunk

3814. By RGA(OpenERP)

Merge with vme branch to pass context to model of stage object when edit from kanban view column

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'addons/web_kanban/static/src/js/kanban.js'
2--- addons/web_kanban/static/src/js/kanban.js 2013-09-06 10:11:55 +0000
3+++ addons/web_kanban/static/src/js/kanban.js 2013-10-10 08:36:33 +0000
4@@ -190,42 +190,102 @@
5 this.dataset.index = null;
6 this.do_switch_view('form');
7 },
8+ do_link_group: function(){
9+ self = this;
10+ self.dfm = new instance.web.form.DefaultFieldManager(self);
11+ self.dfm.extend_field_desc({
12+ stage: {
13+ relation: self.group_by_field.relation,
14+ },
15+ });
16+ self.stage_m2o = new instance.web.form.FieldMany2One(self.dfm, {
17+ attrs: {
18+ name: "stage",
19+ type: "many2one",
20+ },
21+ });
22+ self.stage_m2o.initialize_field = function(){
23+ self.stage_m2o.is_started = true;
24+ instance.web.form.ReinitializeFieldMixin.initialize_field.call(self.stage_m2o);
25+ }
26+ this.stage_dialog = new instance.web.Dialog(this, {
27+ title: _t("Select an existing column"),
28+ width: 450,
29+ buttons: [
30+ {text: _t("OK"), click: function() {
31+ var stage_id = self.stage_m2o.get_value();
32+ if(!stage_id){
33+ self.do_warn(_t("Kanban View"), _t("Select stage from available column (Stage)"));
34+ }else {
35+ var context = self.dataset.context;
36+ var model = context.active_model;
37+ var id = context.active_id;
38+ var stage_field = context.stage_m2m_field
39+ var data = {};
40+ data[stage_field] = [[4, stage_id, false]];
41+ (new instance.web.DataSet(self, model))
42+ .write(id, data, context)
43+ .done (function(){
44+ self.stage_dialog.close();
45+ self.do_reload();
46+ })
47+ .fail(function(error, evt) {
48+ evt.preventDefault();
49+ alert(_t("An error has occured while add a new group column:\n") + error.data.message);
50+ self.stage_dialog.close();
51+ self.do_reload();
52+ });
53+ }
54+ }},
55+ {text: _t("Close"), click: function() { self.stage_dialog.close();}}
56+ ]
57+ }, QWeb.render('KanbanView.dialog.table')).open();
58+ $label = $('<label for="oe-field-input-11" class="oe_form_label oe_align_right">Available Column (Stage)</label>')
59+ $label.appendTo(this.stage_dialog.$el.find('td:first'));
60+ self.stage_m2o.appendTo(this.stage_dialog.$el.find('td:last'));
61+ },
62 do_add_group: function() {
63 var self = this;
64- self.do_action({
65- name: _t("Add column"),
66- res_model: self.group_by_field.relation,
67- views: [[false, 'form']],
68- type: 'ir.actions.act_window',
69- target: "new",
70- context: self.dataset.get_context(),
71- flags: {
72- action_buttons: true,
73- }
74- });
75- var am = instance.webclient.action_manager;
76- var form = am.dialog_widget.views.form.controller;
77- form.on("on_button_cancel", am.dialog, am.dialog.close);
78- form.on('record_created', self, function(r) {
79- (new instance.web.DataSet(self, self.group_by_field.relation)).name_get([r]).done(function(new_record) {
80- am.dialog.close();
81- var domain = self.dataset.domain.slice(0);
82- domain.push([self.group_by, '=', new_record[0][0]]);
83- var dataset = new instance.web.DataSetSearch(self, self.dataset.model, self.dataset.get_context(), domain);
84- var datagroup = {
85- get: function(key) {
86- return this[key];
87- },
88- value: new_record[0],
89- length: 0,
90- aggregates: {},
91- };
92- var new_group = new instance.web_kanban.KanbanGroup(self, [], datagroup, dataset);
93- self.do_add_groups([new_group]).done(function() {
94- $(window).scrollTo(self.groups.slice(-1)[0].$el, { axis: 'x' });
95+ if (self.dataset.context.stage_m2m_field){
96+ self.do_link_group();
97+ }else{
98+ self.do_action({
99+ name: _t("Add column"),
100+ res_model: self.group_by_field.relation,
101+ views: [[false, 'form']],
102+ type: 'ir.actions.act_window',
103+ target: "new",
104+ context: self.dataset.get_context(),
105+ flags: {
106+ action_buttons: true,
107+ }
108+ });
109+ var am = instance.webclient.action_manager;
110+ var form = am.dialog_widget.views.form.controller;
111+ form.on("on_button_cancel", am.dialog, am.dialog.close);
112+ form.on('record_created', self, function(r) {
113+ (new instance.web.DataSet(self, self.group_by_field.relation)).name_get([r]).done(function(new_record) {
114+ am.dialog.close();
115+ // If same group name found than don't show new column.
116+ if(_.include(_.pluck(self.groups,'title'),new_record[0][1])) return;
117+ var domain = self.dataset.domain.slice(0);
118+ domain.push([self.group_by, '=', new_record[0][0]]);
119+ var dataset = new instance.web.DataSetSearch(self, self.dataset.model, self.dataset.get_context(), domain);
120+ var datagroup = {
121+ get: function(key) {
122+ return this[key];
123+ },
124+ value: new_record[0],
125+ length: 0,
126+ aggregates: {},
127+ };
128+ var new_group = new instance.web_kanban.KanbanGroup(self, [], datagroup, dataset);
129+ self.do_add_groups([new_group]).done(function() {
130+ $(window).scrollTo(self.groups.slice(-1)[0].$el, { axis: 'x' });
131+ });
132 });
133- });
134- });
135+ });
136+ }
137 },
138 do_search: function(domain, context, group_by) {
139 var self = this;
140@@ -395,8 +455,8 @@
141 stop: function(event, ui) {
142 var stop_index = ui.item.index();
143 if (start_index !== stop_index) {
144- var $start_column = $('.oe_kanban_groups_records .oe_kanban_column').eq(start_index);
145- var $stop_column = $('.oe_kanban_groups_records .oe_kanban_column').eq(stop_index);
146+ var $start_column = self.$('.oe_kanban_groups_records .oe_kanban_column').eq(start_index);
147+ var $stop_column = self.$('.oe_kanban_groups_records .oe_kanban_column').eq(stop_index);
148 var method = (start_index > stop_index) ? 'insertBefore' : 'insertAfter';
149 $start_column[method]($stop_column);
150 var tmp_group = self.groups.splice(start_index, 1)[0];
151@@ -747,6 +807,7 @@
152 views: [[false, 'form']],
153 type: 'ir.actions.act_window',
154 target: "new",
155+ context: self.dataset.get_context(),
156 flags: {
157 action_buttons: true,
158 }
159@@ -762,7 +823,7 @@
160 do_action_delete: function() {
161 var self = this;
162 if (confirm(_t("Are you sure to remove this column ?"))) {
163- (new instance.web.DataSet(self, self.view.group_by_field.relation)).unlink([self.value]).done(function(r) {
164+ (new instance.web.DataSet(self, self.view.group_by_field.relation, self.dataset.get_context())).unlink([self.value]).done(function(r) {
165 self.view.do_reload();
166 });
167 }
168
169=== modified file 'addons/web_kanban/static/src/xml/web_kanban.xml'
170--- addons/web_kanban/static/src/xml/web_kanban.xml 2013-03-20 13:09:31 +0000
171+++ addons/web_kanban/static/src/xml/web_kanban.xml 2013-10-10 08:36:33 +0000
172@@ -45,7 +45,7 @@
173 <li><a data-action="toggle_fold" href="#">Fold</a></li>
174 <t t-if="widget.view.grouped_by_m2o and widget.value">
175 <li><a data-action="edit" href="#">Edit</a></li>
176- <li><a data-action="delete" href="#">Delete</a></li>
177+ <li><a data-action="delete" href="#">Remove</a></li>
178 </t>
179 </ul>
180 </div>
181@@ -108,4 +108,16 @@
182 </div>
183 </div>
184 </t>
185+<t t-name="KanbanView.dialog.table">
186+ <div class='oe_form'>
187+ <table>
188+ <tbody>
189+ <tr class='oe_form_group_row'>
190+ <td class='oe_form_group_cell oe_form_group_cell_label' colspan='1' width='1%'></td>
191+ <td class='oe_form_group_cell' colspan='1' width='99%'></td>
192+ </tr>
193+ </tbody>
194+ </table>
195+ </div>
196+</t>
197 </template>