diff options
| author | qsm-odoo <qsm@odoo.com> | 2015-07-31 17:51:48 +0200 |
|---|---|---|
| committer | qsm-odoo <qsm@odoo.com> | 2015-08-03 13:09:42 +0200 |
| commit | 53fc284945e97822b05ad14804d22b47a523dbcc (patch) | |
| tree | 4ecaae39e0172fb9760a62b1b362b5960b95eb8a /addons/web/static/src/js/views/form_widgets.js | |
| parent | 6eef9750519c9e7d2543f47ae450161322440c5c (diff) | |
[IMP] web: New priority widget + form field
Diffstat (limited to 'addons/web/static/src/js/views/form_widgets.js')
| -rw-r--r-- | addons/web/static/src/js/views/form_widgets.js | 93 |
1 files changed, 44 insertions, 49 deletions
diff --git a/addons/web/static/src/js/views/form_widgets.js b/addons/web/static/src/js/views/form_widgets.js index 9fa8a9115ea..bda63d57fc2 100644 --- a/addons/web/static/src/js/views/form_widgets.js +++ b/addons/web/static/src/js/views/form_widgets.js @@ -11,6 +11,7 @@ var common = require('web.form_common'); var formats = require('web.formats'); var framework = require('web.framework'); var Model = require('web.DataModel'); +var Priority = require('web.Priority'); var pyeval = require('web.pyeval'); var session = require('web.session'); var utils = require('web.utils'); @@ -248,60 +249,54 @@ var KanbanSelection = FieldChar.extend({ }, }); -var Priority = FieldChar.extend({ - init: function (field_manager, node) { - this._super(field_manager, node); +var FieldPriority = common.AbstractField.extend({ + events: { + 'mouseup': function(e) { + e.stopPropagation(); + }, }, - prepare_priority: function() { - var self = this; - var selection = this.field.selection || []; - var init_value = selection && selection[0][0] || 0; - var data = _.map(selection.slice(1), function(element, index) { - var value = { - 'value': element[0], - 'name': element[1], - 'click_value': element[0], - }; - if (index === 0 && self.get('value') === element[0]) { - value['click_value'] = init_value; - } - return value; + start: function() { + this.priority = new Priority(this, { + readonly: this.get('readonly'), + value: this.get('value'), + values: this.field.selection || [], }); - return data; - }, - render_value: function() { - this.priorities = this.prepare_priority(); - this.$el.html(QWeb.render("FormPriority", {'widget': this})); - if (!this.get('readonly')){ - this.$el.find('li').on('click', this.set_priority.bind(this)); - } - }, - /* 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 = $(ev.target).closest('li'); - if (li.length) { - var value = String(li.data('value')); - if (this.view.get('actual_mode') == 'view') { + + this.priority.on('update', this, function(update) { + /* 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. */ + var view = this.view; + if(view.get('actual_mode') === 'view') { var write_values = {}; - write_values[self.name] = value; - return this.view.dataset._model.call( - 'write', [ - [this.view.datarecord.id], - write_values, - self.view.dataset.get_context() - ]).done(self.reload_record.bind(self)); - } - else { - return this.set_value(value); + write_values[this.name] = update.value; + view.dataset._model.call('write', [ + [view.datarecord.id], + write_values, + view.dataset.get_context() + ]).done(function() { + view.reload(); + }); + } else { + this.set_value(update.value); } - } + }); + + this.on('change:readonly', this, function() { + this.priority.readonly = this.get('readonly'); + var $div = $('<div/>').insertAfter(this.$el); + this.priority.replace($div); + this.setElement(this.priority.$el); + }); + var self = this; + return $.when(this._super(), this.priority.appendTo('<div>').then(function() { + self.priority.$el.addClass(self.$el.attr('class')); + self.replaceElement(self.priority.$el); + })); }, - reload_record: function() { - this.view.reload(); + render_value: function() { + this.priority.set_value(this.get('value')); }, }); @@ -1611,7 +1606,7 @@ core.form_widget_registry .add('binary', FieldBinaryFile) .add('statusbar', FieldStatus) .add('monetary', FieldMonetary) - .add('priority', Priority) + .add('priority', FieldPriority) .add('kanban_state_selection', KanbanSelection) .add('statinfo', StatInfo) .add('timezone_mismatch', TimezoneMismatch) |
