summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/views/form_relational_widgets.js
diff options
context:
space:
mode:
authorMartin Geubelle <mge@odoo.com>2015-09-08 13:18:36 +0200
committerMartin Geubelle <mge@odoo.com>2015-09-08 16:24:32 +0200
commit247e5865424cdd7581308dfa3e0ea7ea98fd8db7 (patch)
treeb07255b3bbb8dbe17769e736cf0cbeaa859e08b4 /addons/web/static/src/js/views/form_relational_widgets.js
parent7d77678f2fd37ba6ed92c6c019d8ece7e62469a4 (diff)
[FIX] web: many2many2tags if no color field
If there is no field 'color' on tag model, the colorpicker should not be displayed.
Diffstat (limited to 'addons/web/static/src/js/views/form_relational_widgets.js')
-rw-r--r--addons/web/static/src/js/views/form_relational_widgets.js36
1 files changed, 24 insertions, 12 deletions
diff --git a/addons/web/static/src/js/views/form_relational_widgets.js b/addons/web/static/src/js/views/form_relational_widgets.js
index 5788b3b333e..e4f48e398b0 100644
--- a/addons/web/static/src/js/views/form_relational_widgets.js
+++ b/addons/web/static/src/js/views/form_relational_widgets.js
@@ -1359,7 +1359,7 @@ var FieldMany2ManyTags = AbstractManyField.extend(common.CompletionFieldMixin, c
this.remove_id($(e.target).parent().data('id'));
},
'click .badge': 'open_color_picker',
- 'mousedown .o_colorpicker a': 'update_color',
+ 'mousedown .o_colorpicker span': 'update_color',
'focusout .o_colorpicker': 'close_color_picker',
},
@@ -1368,6 +1368,12 @@ var FieldMany2ManyTags = AbstractManyField.extend(common.CompletionFieldMixin, c
common.CompletionFieldMixin.init.call(this);
this.set({"value": []});
this._display_orderer = new utils.DropMisordered();
+
+ var self = this;
+ // We need to know if the field 'color' exists on the model
+ this.dataset.call('fields_get', []).then(function(fields) {
+ self.fields = fields;
+ });
},
initialize_content: function() {
if(!this.get("effective_readonly")) {
@@ -1401,7 +1407,8 @@ var FieldMany2ManyTags = AbstractManyField.extend(common.CompletionFieldMixin, c
}
},
get_render_data: function(ids){
- return this.dataset.read_ids(ids, ['name', 'color']);
+ var fields = this.fields.color ? ['name', 'color'] : ['name'];
+ return this.dataset.read_ids(ids, fields);
},
render_tag: function(data) {
this.$('.badge').remove();
@@ -1446,29 +1453,34 @@ var FieldMany2ManyTags = AbstractManyField.extend(common.CompletionFieldMixin, c
}
},
open_color_picker: function(ev){
- var self = this;
- this.$color_picker = $(QWeb.render('FieldMany2ManyTag.colorpicker', {
- 'widget': this,
- 'tag_id': $(ev.currentTarget).data('id'),
- }));
+ if (this.fields.color) {
+ this.$color_picker = $(QWeb.render('FieldMany2ManyTag.colorpicker', {
+ 'widget': this,
+ 'tag_id': $(ev.currentTarget).data('id'),
+ }));
- $(ev.currentTarget).append(this.$color_picker);
- this.$color_picker.dropdown('toggle');
- this.$color_picker.attr("tabindex", 1).focus();
+ $(ev.currentTarget).append(this.$color_picker);
+ this.$color_picker.dropdown('toggle');
+ this.$color_picker.attr("tabindex", 1).focus();
+ }
},
close_color_picker: function(){
this.$color_picker.remove();
},
update_color: function(ev) {
ev.preventDefault();
- var self = this;
var color = $(ev.currentTarget).data('color');
var id = $(ev.currentTarget).data('id');
+ var self = this;
this.dataset._model.call('write', [id, {'color': color}]).done(function(){
- self.view.reload();
+ var tag = self.$el.find("span.badge[data-id='" + id + "']");
+ var old_color = tag.data('color');
+ tag.removeClass('o_tag_color_' + old_color);
+ tag.data('color', color);
+ tag.addClass('o_tag_color_' + color);
});
},