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
=== modified file 'addons/web_kanban/static/src/js/kanban.js'
--- addons/web_kanban/static/src/js/kanban.js 2013-09-06 10:11:55 +0000
+++ addons/web_kanban/static/src/js/kanban.js 2013-10-10 08:36:33 +0000
@@ -190,42 +190,102 @@
190 this.dataset.index = null;190 this.dataset.index = null;
191 this.do_switch_view('form');191 this.do_switch_view('form');
192 },192 },
193 do_link_group: function(){
194 self = this;
195 self.dfm = new instance.web.form.DefaultFieldManager(self);
196 self.dfm.extend_field_desc({
197 stage: {
198 relation: self.group_by_field.relation,
199 },
200 });
201 self.stage_m2o = new instance.web.form.FieldMany2One(self.dfm, {
202 attrs: {
203 name: "stage",
204 type: "many2one",
205 },
206 });
207 self.stage_m2o.initialize_field = function(){
208 self.stage_m2o.is_started = true;
209 instance.web.form.ReinitializeFieldMixin.initialize_field.call(self.stage_m2o);
210 }
211 this.stage_dialog = new instance.web.Dialog(this, {
212 title: _t("Select an existing column"),
213 width: 450,
214 buttons: [
215 {text: _t("OK"), click: function() {
216 var stage_id = self.stage_m2o.get_value();
217 if(!stage_id){
218 self.do_warn(_t("Kanban View"), _t("Select stage from available column (Stage)"));
219 }else {
220 var context = self.dataset.context;
221 var model = context.active_model;
222 var id = context.active_id;
223 var stage_field = context.stage_m2m_field
224 var data = {};
225 data[stage_field] = [[4, stage_id, false]];
226 (new instance.web.DataSet(self, model))
227 .write(id, data, context)
228 .done (function(){
229 self.stage_dialog.close();
230 self.do_reload();
231 })
232 .fail(function(error, evt) {
233 evt.preventDefault();
234 alert(_t("An error has occured while add a new group column:\n") + error.data.message);
235 self.stage_dialog.close();
236 self.do_reload();
237 });
238 }
239 }},
240 {text: _t("Close"), click: function() { self.stage_dialog.close();}}
241 ]
242 }, QWeb.render('KanbanView.dialog.table')).open();
243 $label = $('<label for="oe-field-input-11" class="oe_form_label oe_align_right">Available Column (Stage)</label>')
244 $label.appendTo(this.stage_dialog.$el.find('td:first'));
245 self.stage_m2o.appendTo(this.stage_dialog.$el.find('td:last'));
246 },
193 do_add_group: function() {247 do_add_group: function() {
194 var self = this;248 var self = this;
195 self.do_action({249 if (self.dataset.context.stage_m2m_field){
196 name: _t("Add column"),250 self.do_link_group();
197 res_model: self.group_by_field.relation,251 }else{
198 views: [[false, 'form']],252 self.do_action({
199 type: 'ir.actions.act_window',253 name: _t("Add column"),
200 target: "new",254 res_model: self.group_by_field.relation,
201 context: self.dataset.get_context(),255 views: [[false, 'form']],
202 flags: {256 type: 'ir.actions.act_window',
203 action_buttons: true,257 target: "new",
204 }258 context: self.dataset.get_context(),
205 });259 flags: {
206 var am = instance.webclient.action_manager;260 action_buttons: true,
207 var form = am.dialog_widget.views.form.controller;261 }
208 form.on("on_button_cancel", am.dialog, am.dialog.close);262 });
209 form.on('record_created', self, function(r) {263 var am = instance.webclient.action_manager;
210 (new instance.web.DataSet(self, self.group_by_field.relation)).name_get([r]).done(function(new_record) {264 var form = am.dialog_widget.views.form.controller;
211 am.dialog.close();265 form.on("on_button_cancel", am.dialog, am.dialog.close);
212 var domain = self.dataset.domain.slice(0);266 form.on('record_created', self, function(r) {
213 domain.push([self.group_by, '=', new_record[0][0]]);267 (new instance.web.DataSet(self, self.group_by_field.relation)).name_get([r]).done(function(new_record) {
214 var dataset = new instance.web.DataSetSearch(self, self.dataset.model, self.dataset.get_context(), domain);268 am.dialog.close();
215 var datagroup = {269 // If same group name found than don't show new column.
216 get: function(key) {270 if(_.include(_.pluck(self.groups,'title'),new_record[0][1])) return;
217 return this[key];271 var domain = self.dataset.domain.slice(0);
218 },272 domain.push([self.group_by, '=', new_record[0][0]]);
219 value: new_record[0],273 var dataset = new instance.web.DataSetSearch(self, self.dataset.model, self.dataset.get_context(), domain);
220 length: 0,274 var datagroup = {
221 aggregates: {},275 get: function(key) {
222 };276 return this[key];
223 var new_group = new instance.web_kanban.KanbanGroup(self, [], datagroup, dataset);277 },
224 self.do_add_groups([new_group]).done(function() {278 value: new_record[0],
225 $(window).scrollTo(self.groups.slice(-1)[0].$el, { axis: 'x' });279 length: 0,
280 aggregates: {},
281 };
282 var new_group = new instance.web_kanban.KanbanGroup(self, [], datagroup, dataset);
283 self.do_add_groups([new_group]).done(function() {
284 $(window).scrollTo(self.groups.slice(-1)[0].$el, { axis: 'x' });
285 });
226 });286 });
227 });287 });
228 });288 }
229 },289 },
230 do_search: function(domain, context, group_by) {290 do_search: function(domain, context, group_by) {
231 var self = this;291 var self = this;
@@ -395,8 +455,8 @@
395 stop: function(event, ui) {455 stop: function(event, ui) {
396 var stop_index = ui.item.index();456 var stop_index = ui.item.index();
397 if (start_index !== stop_index) {457 if (start_index !== stop_index) {
398 var $start_column = $('.oe_kanban_groups_records .oe_kanban_column').eq(start_index);458 var $start_column = self.$('.oe_kanban_groups_records .oe_kanban_column').eq(start_index);
399 var $stop_column = $('.oe_kanban_groups_records .oe_kanban_column').eq(stop_index);459 var $stop_column = self.$('.oe_kanban_groups_records .oe_kanban_column').eq(stop_index);
400 var method = (start_index > stop_index) ? 'insertBefore' : 'insertAfter';460 var method = (start_index > stop_index) ? 'insertBefore' : 'insertAfter';
401 $start_column[method]($stop_column);461 $start_column[method]($stop_column);
402 var tmp_group = self.groups.splice(start_index, 1)[0];462 var tmp_group = self.groups.splice(start_index, 1)[0];
@@ -747,6 +807,7 @@
747 views: [[false, 'form']],807 views: [[false, 'form']],
748 type: 'ir.actions.act_window',808 type: 'ir.actions.act_window',
749 target: "new",809 target: "new",
810 context: self.dataset.get_context(),
750 flags: {811 flags: {
751 action_buttons: true,812 action_buttons: true,
752 }813 }
@@ -762,7 +823,7 @@
762 do_action_delete: function() {823 do_action_delete: function() {
763 var self = this;824 var self = this;
764 if (confirm(_t("Are you sure to remove this column ?"))) {825 if (confirm(_t("Are you sure to remove this column ?"))) {
765 (new instance.web.DataSet(self, self.view.group_by_field.relation)).unlink([self.value]).done(function(r) {826 (new instance.web.DataSet(self, self.view.group_by_field.relation, self.dataset.get_context())).unlink([self.value]).done(function(r) {
766 self.view.do_reload();827 self.view.do_reload();
767 });828 });
768 }829 }
769830
=== modified file 'addons/web_kanban/static/src/xml/web_kanban.xml'
--- addons/web_kanban/static/src/xml/web_kanban.xml 2013-03-20 13:09:31 +0000
+++ addons/web_kanban/static/src/xml/web_kanban.xml 2013-10-10 08:36:33 +0000
@@ -45,7 +45,7 @@
45 <li><a data-action="toggle_fold" href="#">Fold</a></li>45 <li><a data-action="toggle_fold" href="#">Fold</a></li>
46 <t t-if="widget.view.grouped_by_m2o and widget.value">46 <t t-if="widget.view.grouped_by_m2o and widget.value">
47 <li><a data-action="edit" href="#">Edit</a></li>47 <li><a data-action="edit" href="#">Edit</a></li>
48 <li><a data-action="delete" href="#">Delete</a></li>48 <li><a data-action="delete" href="#">Remove</a></li>
49 </t>49 </t>
50 </ul>50 </ul>
51 </div>51 </div>
@@ -108,4 +108,16 @@
108 </div>108 </div>
109 </div>109 </div>
110</t>110</t>
111<t t-name="KanbanView.dialog.table">
112 <div class='oe_form'>
113 <table>
114 <tbody>
115 <tr class='oe_form_group_row'>
116 <td class='oe_form_group_cell oe_form_group_cell_label' colspan='1' width='1%'></td>
117 <td class='oe_form_group_cell' colspan='1' width='99%'></td>
118 </tr>
119 </tbody>
120 </table>
121 </div>
122</t>
111</template>123</template>