|
@ -20,22 +20,16 @@ openerp.web_widget_radio_tree = function (instance) { |
|
|
instance.web.form.RadioTree = instance.web.form.FieldBoolean.extend({ |
|
|
instance.web.form.RadioTree = instance.web.form.FieldBoolean.extend({ |
|
|
template: 'RadioTree', |
|
|
template: 'RadioTree', |
|
|
start: function() { |
|
|
start: function() { |
|
|
var self = this; |
|
|
|
|
|
|
|
|
this._super.apply(this, arguments); |
|
|
this.$checkbox = $('input', this.$el); |
|
|
this.$checkbox = $('input', this.$el); |
|
|
var radio_name = this.__parentedParent.model + '_' + this.$checkbox[0].name; |
|
|
|
|
|
|
|
|
var radio_name = this.getParent().model + '_' + this.$checkbox[0].name; |
|
|
this.$checkbox.attr('name', radio_name); |
|
|
this.$checkbox.attr('name', radio_name); |
|
|
this.setupFocus(this.$checkbox); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var self = this; |
|
|
this.$el.click(_.bind(function() { |
|
|
this.$el.click(_.bind(function() { |
|
|
self.clean_radio_in_records(); |
|
|
self.clean_radio_in_records(); |
|
|
this.internal_set_value(true); |
|
|
this.internal_set_value(true); |
|
|
}, this)); |
|
|
}, this)); |
|
|
var check_readonly = function() { |
|
|
|
|
|
self.$checkbox.prop('disabled', self.get('effective_readonly')); |
|
|
|
|
|
self.click_disabled_boolean(); |
|
|
|
|
|
}; |
|
|
|
|
|
this.on('change:effective_readonly', this, check_readonly); |
|
|
|
|
|
check_readonly.call(this); |
|
|
|
|
|
return this._super.apply(this, arguments); |
|
|
|
|
|
}, |
|
|
}, |
|
|
click_disabled_boolean: function(){ |
|
|
click_disabled_boolean: function(){ |
|
|
var $disabled = this.$el.find('input[type=radio]:disabled'); |
|
|
var $disabled = this.$el.find('input[type=radio]:disabled'); |
|
@ -45,45 +39,13 @@ openerp.web_widget_radio_tree = function (instance) { |
|
|
}); |
|
|
}); |
|
|
}, |
|
|
}, |
|
|
clean_radio_in_records: function() { |
|
|
clean_radio_in_records: function() { |
|
|
|
|
|
var parent = this.getParent(); |
|
|
var name = (this.$checkbox[0].name).split('_')[1]; |
|
|
var name = (this.$checkbox[0].name).split('_')[1]; |
|
|
var ids = this.__parentedParent.dataset.ids; |
|
|
|
|
|
var current_id = this.__parentedParent.datarecord.id; |
|
|
|
|
|
|
|
|
|
|
|
// updating write hash
|
|
|
|
|
|
var already_added = []; |
|
|
|
|
|
var to_write = this.__parentedParent.dataset.to_write; |
|
|
|
|
|
for (var j=0; j<to_write.length; ++j) { |
|
|
|
|
|
if (to_write[j]['id'] == current_id) { |
|
|
|
|
|
to_write[j]['values'][name] = true; |
|
|
|
|
|
} |
|
|
|
|
|
else { |
|
|
|
|
|
to_write[j]['values'][name] = false; |
|
|
|
|
|
} |
|
|
|
|
|
if (ids.includes(to_write[j]['id'])) { |
|
|
|
|
|
already_added.push(to_write[j]['id']); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
for (var j=0; j<ids.length; ++j) { |
|
|
|
|
|
if (!already_added.includes(ids[j]) && ids[j] != current_id) { |
|
|
|
|
|
values = {}; |
|
|
|
|
|
values[name] = false; |
|
|
|
|
|
this.__parentedParent.dataset.to_write.push({ |
|
|
|
|
|
id: ids[j], |
|
|
|
|
|
values: values |
|
|
|
|
|
}); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// updating create hash
|
|
|
|
|
|
var to_create = this.__parentedParent.dataset.to_create; |
|
|
|
|
|
for (var j=0; j<to_create.length; ++j) { |
|
|
|
|
|
if (to_create[j]['id'] == current_id) { |
|
|
|
|
|
to_create[j]['values'][name] = true; |
|
|
|
|
|
} |
|
|
|
|
|
else { |
|
|
|
|
|
to_create[j]['values'][name] = false; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
_.each(parent.dataset.ids, function(id) { |
|
|
|
|
|
values = {} |
|
|
|
|
|
values[name] = false; |
|
|
|
|
|
parent.dataset.write(id, values); |
|
|
|
|
|
}); |
|
|
} |
|
|
} |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|