diff options
| author | Thibault Delavallée <tde@openerp.com> | 2014-08-08 16:59:48 +0200 |
|---|---|---|
| committer | Thibault Delavallée <tde@openerp.com> | 2014-08-11 10:44:21 +0200 |
| commit | 765beaa0c946d0ad3133a23859bc471afade110f (patch) | |
| tree | c19a650455a07797868129fd081ad86c9bcd412f /addons/web/static/src | |
| parent | 0aef6fac1038da5349f0bf9428575a02f6b99d14 (diff) | |
[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)
Diffstat (limited to 'addons/web/static/src')
| -rw-r--r-- | addons/web/static/src/css/base.css | 10 | ||||
| -rw-r--r-- | addons/web/static/src/css/base.sass | 6 | ||||
| -rw-r--r-- | addons/web/static/src/js/view_form.js | 74 | ||||
| -rw-r--r-- | addons/web/static/src/xml/base.xml | 6 |
4 files changed, 47 insertions, 49 deletions
diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index 00a19590084..cf90e649f96 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 29eec8fabb9..7834bf88ede 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 66e500507d9..41bc0447756 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 2aeed9e6017..e2a6f85a328 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -962,7 +962,7 @@ <div class="btn-group kanban_state"> <t t-foreach="widget.states" t-as="rec"> <a t-if="widget.get('value') === rec.name"> - <a class="oe_legend dropdown-toggle" data-toggle="dropdown"> + <a class="dropdown-toggle" data-toggle="dropdown"> <span t-att-class="rec.state_class" t-if="widget.get('value') === rec.name" t-att-title="rec.tooltip"/> <span class="sr-only">Toggle Dropdown</span> </a> @@ -971,7 +971,7 @@ <ul class="dropdown-menu state" role="menu"> <t t-foreach="widget.states" t-as="rec"> <t t-if="widget.get('value') !== rec.name"> - <li class="oe_legend" t-att-data-value="rec.name" ><a href="#"> + <li t-att-data-value="rec.name" ><a href="#"> <span t-att-class="rec.state_class" t-att-title="rec.tooltip"/> <t t-raw="rec.state_name" /></a> </li> @@ -983,7 +983,7 @@ <t t-name="Priority"> <ul style="list-style: none; padding-left: 2px; display: inline-block;"> <t t-foreach="widget.priorities" t-as="rec" > - <li t-att-data-value="rec.click_value" class="oe_legend" style="display: inline-block;"> + <li t-att-data-value="rec.click_value" style="display: inline-block;"> <a href="#" t-att-title="rec.name"> <span t-att-class="widget.get('value') gte rec.value and 'oe_e oe_star_on' or 'oe_e oe_star_off'">7</span> </a> |
