mirror of
https://github.com/EGroupware/egroupware.git
synced 2025-01-03 20:49:08 +01:00
Keep selection if applyFilters() does not actually change filters.
This happens for several refresh conditions.
This commit is contained in:
parent
b598a6ffcc
commit
2a43a12492
@ -385,6 +385,12 @@ var et2_nextmatch = et2_DOMWidget.extend([et2_IResizeable, et2_IInput],
|
||||
|
||||
this.egw().debug("info", "Changing nextmatch filters to ", this.activeFilters);
|
||||
|
||||
// Keep the selection after applying filters, but only if unchanged
|
||||
if(JSON.stringify(this.controller._filters) == JSON.stringify(this.activeFilters))
|
||||
{
|
||||
this.controller.keepSelection();
|
||||
}
|
||||
|
||||
// Update the filters in the grid controller
|
||||
this.controller.setFilters(this.activeFilters);
|
||||
|
||||
|
@ -83,6 +83,10 @@ var et2_nextmatch_controller = et2_dataview_controller.extend(et2_IDataProvider,
|
||||
// We start with no filters
|
||||
this._filters = {};
|
||||
|
||||
// Keep selection across filter changes
|
||||
this.kept_selection = null;
|
||||
this.kept_focus = null;
|
||||
|
||||
// Directly use the API-Implementation of dataRegisterUID and
|
||||
// dataUnregisterUID
|
||||
this.dataUnregisterUID = _egw.dataUnregisterUID;
|
||||
@ -110,6 +114,15 @@ var et2_nextmatch_controller = et2_dataview_controller.extend(et2_IDataProvider,
|
||||
this._lastModification = null;
|
||||
},
|
||||
|
||||
/**
|
||||
* Keep the selection, if possible, across a data fetch and restore it
|
||||
* after
|
||||
*/
|
||||
keepSelection: function() {
|
||||
this.kept_selection = this._selectionMgr ? this._selectionMgr.getSelected() : null;
|
||||
this.kept_focus = this._selectionMgr ? this._selectionMgr._focusedEntry.uid || null : null;
|
||||
},
|
||||
|
||||
getObjectManager: function () {
|
||||
return this._objectManager;
|
||||
},
|
||||
@ -315,6 +328,25 @@ var et2_nextmatch_controller = et2_dataview_controller.extend(et2_IDataProvider,
|
||||
|
||||
// Call the inherited function
|
||||
this._super.apply(this, arguments);
|
||||
|
||||
// Restore selection, if passed
|
||||
if(this.self && this.self.kept_selection && this.self._selectionMgr)
|
||||
{
|
||||
if(this.self.kept_selection.all)
|
||||
{
|
||||
this.self._selectionMgr.selectAll();
|
||||
}
|
||||
for(var i = 0; i < this.self.kept_selection.ids.length || 0; i++)
|
||||
{
|
||||
this.self._selectionMgr.setSelected(this.self.kept_selection.ids[i],true);
|
||||
}
|
||||
if(this.self.kept_focus)
|
||||
{
|
||||
this.self._selectionMgr.setFocused(this.self.kept_focus,true);
|
||||
}
|
||||
this.self.kept_selection = null;
|
||||
this.self.kept_focus = null;
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user