forked from Techsystech/web
Initialiaze widget when a row is redraw
This appens when a field perform a name_get on each row each row are redraw independently7.0
parent
98e3ab1c4b
commit
30dfcbd216
|
@ -201,6 +201,37 @@ openerp.web_widget_boolean_switch = function(instance){
|
|||
},
|
||||
});
|
||||
|
||||
instance.web.ListView.List.include({
|
||||
init: function(){
|
||||
//This is the case when on each line, a request to name_get
|
||||
//id done, this cause a record to be re-render though on change.
|
||||
//So we have to overide the events as I haven't found any good hooks
|
||||
this._super.apply(this, arguments);
|
||||
var self = this;
|
||||
this.records.unbind('change');
|
||||
this.record_callbacks.change = function (event, record, attribute, value, old_value) {
|
||||
var $row;
|
||||
if (attribute === 'id') {
|
||||
if (old_value) {
|
||||
throw new Error(_.str.sprintf( _t("Setting 'id' attribute on existing record %s"),
|
||||
JSON.stringify(record.attributes) ));
|
||||
}
|
||||
self.dataset.add_ids([value], self.records.indexOf(record));
|
||||
// Set id on new record
|
||||
$row = self.$current.children('[data-id=false]');
|
||||
} else {
|
||||
$row = self.$current.children(
|
||||
'[data-id=' + record.get('id') + ']');
|
||||
}
|
||||
$row.replaceWith(self.render_record(record));
|
||||
self.afterRowChanged($row, record, attribute);
|
||||
};
|
||||
this.records.bind('change', this.record_callbacks.change);
|
||||
},
|
||||
afterRowChanged: function($row, record, attribute){
|
||||
apply_switcher(this.view, this.columns, $row);
|
||||
},
|
||||
});
|
||||
instance.web.ListView.include({
|
||||
reload_record: function(record){
|
||||
// in case of editable list, only update record is reloaded
|
||||
|
|
Loading…
Reference in New Issue