diff options
| author | Christophe Simonis <chs@odoo.com> | 2017-09-21 18:52:56 +0200 |
|---|---|---|
| committer | Christophe Simonis <chs@odoo.com> | 2017-09-21 18:52:56 +0200 |
| commit | 4b455098f8cefa5122479a5a84fa07c2330e7a66 (patch) | |
| tree | 43d625a9e37a5d9c07780f8116bf0247fb693fe0 /addons/web/static/src/js/views/basic | |
| parent | f53e65c356a5d43d2b5b50dc509ee70e0df30ba5 (diff) | |
| parent | 5c51a0ad4d6bfab6427949ffe61650196798846a (diff) | |
[MERGE] forward port branch saas-18 up to 5c51a0ad4d6
Diffstat (limited to 'addons/web/static/src/js/views/basic')
| -rw-r--r-- | addons/web/static/src/js/views/basic/basic_controller.js | 2 | ||||
| -rw-r--r-- | addons/web/static/src/js/views/basic/basic_model.js | 21 | ||||
| -rw-r--r-- | addons/web/static/src/js/views/basic/basic_renderer.js | 18 |
3 files changed, 27 insertions, 14 deletions
diff --git a/addons/web/static/src/js/views/basic/basic_controller.js b/addons/web/static/src/js/views/basic/basic_controller.js index 46359188577..481fc0cf4dd 100644 --- a/addons/web/static/src/js/views/basic/basic_controller.js +++ b/addons/web/static/src/js/views/basic/basic_controller.js @@ -71,7 +71,7 @@ var BasicController = AbstractController.extend(FieldManagerMixin, { return $.when(false); } - var message = _t("The record has been modified, your changes will be discarded. Are you sure you want to ?"); + var message = _t("The record has been modified, your changes will be discarded. Do you want to proceed?"); var def = $.Deferred(); var dialog = Dialog.confirm(this, message, { title: _t("Warning"), diff --git a/addons/web/static/src/js/views/basic/basic_model.js b/addons/web/static/src/js/views/basic/basic_model.js index 5b6eb35b4ac..276fd4df82b 100644 --- a/addons/web/static/src/js/views/basic/basic_model.js +++ b/addons/web/static/src/js/views/basic/basic_model.js @@ -769,7 +769,7 @@ var BasicModel = AbstractModel.extend({ removeLine: function (elementID) { var record = this.localData[elementID]; var parent = this.localData[record.parentID]; - if (parent.parentID) { + if (parent.static) { // x2Many case: the new record has been stored in _changes, as a // command so we remove the command(s) related to that record parent._changes = _.filter(parent._changes, function (change) { @@ -778,6 +778,7 @@ var BasicModel = AbstractModel.extend({ } else { // main list view case: the new record is in data parent.data = _.without(parent.data, elementID); + parent.count--; } }, /** @@ -1307,13 +1308,25 @@ var BasicModel = AbstractModel.extend({ record._changes[name] = list.id; var shouldLoad = false; list._changes = list._changes || []; + + // save it in case of a [5] which will remove the _changes + var oldChanges = list._changes; _.each(val, function (command) { - var rec; + var rec, recID; if (command[0] === 0 || command[0] === 1) { // CREATE or UPDATE + if (command[0] === 0 && command[1]) { + // updating an existing (virtual) record + var previousChange = _.find(oldChanges, function (operation) { + var child = self.localData[operation.id]; + return child && (child.res_id === command[1]); + }); + recID = previousChange && previousChange.id; + rec = self.localData[recID]; + } if (command[0] === 1 && command[1]) { // updating an existing record - var recID = _.find(list.data, function (childID) { + recID = _.find(list.data, function (childID) { var child = self.localData[childID]; return child.res_id === command[1]; }); @@ -1327,7 +1340,7 @@ var BasicModel = AbstractModel.extend({ modelName: list.model, parentID: list.id, viewType: list.viewType, - ref: command[1], + ref: command[1], }; if (command[0] === 1) { params.res_id = command[1]; 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]; |
