forked from extern/egroupware
Etemplate: Update controller indexMap when adding a new row
Fixes deleting former top mail that got moved down by a pushed new mail removed both newly added and the selected mail
This commit is contained in:
@ -295,6 +295,7 @@ var et2_dataview_controller = /** @class */ (function () {
|
||||
* otherwise.
|
||||
*/
|
||||
et2_dataview_controller.prototype._insertDataRow = function (_entry, _update) {
|
||||
var _this = this;
|
||||
// Abort if the entry already has a row but the _insert flag is not set
|
||||
if (_entry.row && !_update) {
|
||||
return true;
|
||||
@ -330,6 +331,15 @@ var et2_dataview_controller = /** @class */ (function () {
|
||||
if (createdRow && _entry.row) {
|
||||
this._grid.insertRow(_entry.idx, _entry.row);
|
||||
}
|
||||
// Update index map
|
||||
if (this._indexMap[_entry.idx].uid !== _entry.uid) {
|
||||
var max = parseInt(Object.keys(this._indexMap).reduce(function (a, b) { return _this._indexMap[a] > _this._indexMap[b] ? a : b; }));
|
||||
for (var idx = max; idx >= _entry.idx; idx--) {
|
||||
this._indexMap[idx].idx = idx + 1;
|
||||
this._indexMap[this._indexMap[idx].idx] = this._indexMap[idx];
|
||||
}
|
||||
this._indexMap[_entry.idx] = _entry;
|
||||
}
|
||||
return this.hasData;
|
||||
};
|
||||
/**
|
||||
|
Reference in New Issue
Block a user