You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
2.1 KiB
58 lines
2.1 KiB
odoo.define('base_custom_info.relational_fields', function (require) {
|
|
"use strict";
|
|
|
|
var CustomInfoRenderer = require('base_custom_info.CustomInfoRenderer');
|
|
var relational_fields = require('web.relational_fields');
|
|
var fieldUtils = require('web.field_utils');
|
|
|
|
relational_fields.FieldOne2Many.include({
|
|
_getRenderer: function () {
|
|
if (this.view.arch.tag === 'custom_info') {
|
|
return CustomInfoRenderer;
|
|
}
|
|
return this._super.apply(this, arguments);
|
|
},
|
|
_updateCustomInfoItem : function (data) {
|
|
var result = {
|
|
value_float: data.value_float,
|
|
value_str: data.value_str,
|
|
value_int: data.value_int,
|
|
value_bool: data.value_bool,
|
|
value_date: data.value_date,
|
|
};
|
|
if (data.value_id.res_id !== undefined)
|
|
result['value_id'] = {id: data.value_id.res_id};
|
|
return result;
|
|
},
|
|
_saveCustomInfo: function () {
|
|
var self = this;
|
|
_.each(this.renderer.recordWidgets, function (widget) {
|
|
self._setValue({
|
|
operation: 'UPDATE',
|
|
id: widget.dataPointID,
|
|
data: self._updateCustomInfoItem(widget.recordData),
|
|
});
|
|
});
|
|
},
|
|
commitChanges: function () {
|
|
if (this.renderer &&
|
|
this.renderer.viewType === "custom_info"
|
|
) {
|
|
var self = this;
|
|
this.renderer.commitChanges().then(function () {
|
|
return self._saveCustomInfo();
|
|
});
|
|
}
|
|
return this._super.apply(this, arguments);
|
|
},
|
|
activate: function (options) {
|
|
var result = this._super.apply(this, arguments);
|
|
if (result && this.renderer.viewType === 'custom_info') {
|
|
if (this.renderer.recordWidgets.length > 0) {
|
|
this.renderer.recordWidgets[0].$input.focus();
|
|
}
|
|
}
|
|
return result;
|
|
},
|
|
});
|
|
});
|