From 765beaa0c946d0ad3133a23859bc471afade110f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Thibault=20Delavall=C3=A9e?= Date: Fri, 8 Aug 2014 16:59:48 +0200 Subject: [PATCH] [FIX] web: form view: priority and kanban widgets cleaning, now more like classic form widgets (edit mode: use set_value, view mode: perform a write) --- addons/web/static/src/css/base.css | 10 +--- addons/web/static/src/css/base.sass | 6 --- addons/web/static/src/js/view_form.js | 74 +++++++++++++++++------------ addons/web/static/src/xml/base.xml | 6 +-- addons/web_kanban/static/src/js/kanban.js | 4 +- 5 files changed, 49 insertions(+), 51 deletions(-) diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index 00a1959..cf90e64 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -1,4 +1,4 @@ -@charset "UTF-8"; +@charset "utf-8"; @font-face { font-family: "mnmliconsRegular"; src: url("/web/static/src/font/mnmliconsv21-webfont.eot") format("eot"); @@ -549,14 +549,6 @@ padding-top: 8px; margin-right: 4px !important; } -.openerp .btn-group.kanban_state .dropdown-menu { - min-width: 100%; - padding-right: 10px !important; -} -.openerp .btn-group.kanban_state .dropdown-menu li a, .openerp .btn-group.kanban_state .dropdown-menu li a:hover, .openerp .btn-group.kanban_state .dropdown-menu li a:focus { - padding-left: 5px; - padding-right: 0px; -} .openerp .btn-group.kanban_state a { color: #333333; } diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass index 29eec8f..7834bf8 100644 --- a/addons/web/static/src/css/base.sass +++ b/addons/web/static/src/css/base.sass @@ -498,12 +498,6 @@ $sheet-padding: 16px .btn-group.kanban_state padding-top: 8px margin-right: 4px !important - .dropdown-menu - min-width: 100% - padding-right: 10px !important - .dropdown-menu li a, .dropdown-menu li a:hover, .dropdown-menu li a:focus - padding-left: 5px - padding-right: 0px a color: #333333 // }}} diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 66e5005..41bc044 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -2335,26 +2335,31 @@ instance.web.form.KanbanSelection = instance.web.form.FieldChar.extend({ }, render_value: function() { var self = this; - this.record_id = self.view.datarecord.id; - this.states = self.prepare_dropdown_selection();; + this.record_id = this.view.datarecord.id; + this.states = this.prepare_dropdown_selection();; this.$el.html(QWeb.render("KanbanSelection", {'widget': self})); - this.$el.find('.oe_legend').click(self.do_action.bind(self)); + this.$el.find('li').on('click', this.set_kanban_selection.bind(this)); }, - do_action: function(e) { + /* setting the value: in view mode, perform an asynchronous call and reload + the form view; in edit mode, use set_value to save the new value that will + be written when saving the record. */ + set_kanban_selection: function (ev) { var self = this; - var li = $(e.target).closest( "li" ); + var li = $(ev.target).closest('li'); if (li.length) { - var value = {}; - value[self.name] = String(li.data('value')); - self.record_id = self.view.datarecord.id; - if (self.record_id) { - return self.view.dataset._model.call('write', [[self.record_id], value, self.view.dataset.get_context()]).done(self.reload_record.bind(self)); - } else { - return self.view.on_button_save().done(function(result) { - if (result) { - self.view.dataset._model.call('write', [[result], value, self.view.dataset.get_context()]).done(self.reload_record.bind(self)); - } - }); + var value = String(li.data('value')); + if (this.view.get('actual_mode') == 'view') { + var write_values = {} + write_values[self.name] = value; + return this.view.dataset._model.call( + 'write', [ + [self.record_id], + write_values, + self.view.dataset.get_context() + ]).done(self.reload_record.bind(self)); + } + else { + return this.set_value(value); } } }, @@ -2386,27 +2391,34 @@ instance.web.form.Priority = instance.web.form.FieldChar.extend({ }, render_value: function() { var self = this; - this.record_id = self.view.datarecord.id; - this.priorities = self.prepare_priority(); + this.record_id = this.view.datarecord.id; + this.priorities = this.prepare_priority(); this.$el.html(QWeb.render("Priority", {'widget': this})); - this.$el.find('.oe_legend').click(self.do_action.bind(self)); + this.$el.find('li').on('click', this.set_priority.bind(this)); }, - do_action: function(e) { + /* setting the value: in view mode, perform an asynchronous call and reload + the form view; in edit mode, use set_value to save the new value that will + be written when saving the record. */ + set_priority: function (ev) { var self = this; - var li = $(e.target).closest( "li" ); + var li = $(ev.target).closest('li'); if (li.length) { - var value = {}; - value[self.name] = String(li.data('value')); - if (self.record_id) { - return self.view.dataset._model.call('write', [[self.record_id], value, self.view.dataset.get_context()]).done(self.reload_record.bind(self)); - } else { - return self.view.on_button_save().done(function(result) { - if (result) { - self.view.dataset._model.call('write', [[result], value, self.view.dataset.get_context()]).done(self.reload_record.bind(self)); - } - }); + var value = String(li.data('value')); + if (this.view.get('actual_mode') == 'view') { + var write_values = {} + write_values[self.name] = value; + return this.view.dataset._model.call( + 'write', [ + [self.record_id], + write_values, + self.view.dataset.get_context() + ]).done(self.reload_record.bind(self)); + } + else { + return this.set_value(value); } } + }, reload_record: function() { this.view.reload(); diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 2aeed9e..e2a6f85 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -962,7 +962,7 @@
- + Toggle Dropdown @@ -971,7 +971,7 @@