diff options
| author | Aaron Bohy <aab@odoo.com> | 2017-09-20 14:45:23 +0200 |
|---|---|---|
| committer | Géry Debongnie <ged@odoo.com> | 2017-09-21 10:55:09 +0200 |
| commit | a8bc2a8bf8211085e1553e720d12d110b234a499 (patch) | |
| tree | 0e7853d6f2c3e19733d03552e0a525e6a697b017 /addons/web/static/src/js/views/basic/basic_renderer.js | |
| parent | 332eb431c5d215c87c0915677dc72f8688897646 (diff) | |
[FIX] web: several minor issues with editable list
- correctly update the pager when a record is added or removed
- destroy the widgets of the removed row when the user clicks on
'Cancel' when creating a new record
- ensure that the list always contains 4 rows (before this rev.,
in list views with less than 4 records, if the user created a
new record, then clicked on 'Discard', there were only 3 rows
left
- properly destroy field widgets when removed from the DOM
Note that the change of parent.parentID to parent.static is not a
bug fix, but it's better to use the key that indicates the type of
list element, instead of implying it from other attributes.
Diffstat (limited to 'addons/web/static/src/js/views/basic/basic_renderer.js')
| -rw-r--r-- | addons/web/static/src/js/views/basic/basic_renderer.js | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/addons/web/static/src/js/views/basic/basic_renderer.js b/addons/web/static/src/js/views/basic/basic_renderer.js index ee6e685c3d4..24922622a42 100644 --- a/addons/web/static/src/js/views/basic/basic_renderer.js +++ b/addons/web/static/src/js/views/basic/basic_renderer.js @@ -288,18 +288,18 @@ var BasicRenderer = AbstractRenderer.extend({ * from internal referencing. * * @private - * @param {Object} record + * @param {string} recordID id of the local resource * @param {AbstractField} widget * @returns {integer} the index of the removed widget */ - _destroyFieldWidget: function (record, widget) { - var recordWidgets = this.allFieldWidgets[record.id]; + _destroyFieldWidget: function (recordID, widget) { + var recordWidgets = this.allFieldWidgets[recordID]; var index = recordWidgets.indexOf(widget); if (index >= 0) { recordWidgets.splice(index, 1); } - this._unregisterModifiersElement(widget.__node, record, widget); - widget.$el.destroy(); + this._unregisterModifiersElement(widget.__node, recordID, widget); + widget.destroy(); return index; }, /** @@ -594,7 +594,7 @@ var BasicRenderer = AbstractRenderer.extend({ widget.$el.replaceWith(newWidget.$el); // Destroy the old widget and position the new one at the old one's - var oldIndex = this._destroyFieldWidget(record, widget); + var oldIndex = this._destroyFieldWidget(record.id, widget); var recordWidgets = this.allFieldWidgets[record.id]; recordWidgets.splice(oldIndex, 0, newWidget); recordWidgets.pop(); @@ -606,13 +606,13 @@ var BasicRenderer = AbstractRenderer.extend({ * node and record. * * @param {Object} node - * @param {Object} record + * @param {string} recordID id of the local resource * @param {jQuery|AbstractField} element */ - _unregisterModifiersElement: function (node, record, element) { + _unregisterModifiersElement: function (node, recordID, element) { var modifiersData = this._getModifiersData(node); if (modifiersData) { - var elements = modifiersData.elementsByRecord[record.id]; + var elements = modifiersData.elementsByRecord[recordID]; var index = _.findIndex(elements, function (oldElement) { return oldElement.widget === element || oldElement.$el[0] === element[0]; |
