Feature #7284
closed
tablesorter: save sort order / column selection on server
Added by Carsten Rose over 5 years ago.
Updated about 5 years ago.
Description
- Es waere gut wenn der User seine Einstellung zu einer tablesorter Tabelle speichern koennte, so dass beim naechsten Aufruf wieder die gleiche Einstellung da waere.
- Soll ein Excel Export der Tabelle, mit Beruecksichtigung der aktuellen Einstellungen, erfolgen, muessen diese Settings zwingend auf dem Server gespeichert werden. Mit dieser Anforderung, koennten die Tablesettings dann gleich durch den Server vorbelegt werden.
- Idee: Gut waere ein API CallBack (bei jeder Aenderung), der die Settings auf dem Server speichert. Dazu wird beim ausliefern der Tabelle eine SIP zur Authorisierung mitgeliefert.
Requirement 2: Auf einer Seite gibt es mehrere Filtersettings (#6936) die definiert und abgerufen werden koennen. Eine Moeglichhkeit waere das aktuelle Setting der Spalten (Anzeige/Sortierung) beim speichern des Filters mit abzulegen.
- Description updated (diff)
- Priority changed from Normal to High
- Target version changed from 55 to 146
- Status changed from New to In Progress
- Status changed from In Progress to New
- Assignee set to Marc Egger
- Due date set to 09.05.2019
current workaround with buttons above report:
<span onClick="$(this).siblings('.tablesorter-column-selector').trigger('refreshColumnSelector', [ [0,1,2,3,4,5,6] ]);" class="btn btn-default">show main columns</span>
<span onClick="$(this).siblings('.tablesorter-column-selector').trigger('refreshColumnSelector', [ [...Array(100).keys()] ]);" class="btn btn-default">show all columns</span>
Add css class class="columnSelector-false" to <th> to disable a column by default. Gets overwritten by saved user selection.
set and get the state of the tablesorter with javascript. Use JSON.parse() and JSON.stringify() to save in database.
function setTablesorterState(table, newState) {
if(newState.hasOwnProperty('columnSelection') && $.tablesorter.hasWidget( table, 'columnSelector')) {
table.trigger('refreshColumnSelector', [ newState.columnSelection ]);
}
if(newState.hasOwnProperty('filters') && $.tablesorter.hasWidget( table, 'filter')) {
$.tablesorter.setFilters(table, newState.filters);
}
if(newState.hasOwnProperty('sortList')) {
table.trigger( 'sorton', [ newState.sortList ] );
}
}
function getTablesorterState(table, columnSelection=true, filters=true, sortList=true) {
var state = {}
var config = table[0].config;
if(columnSelection && $.tablesorter.hasWidget( table, 'columnSelector')) {
state.columnSelection = config.selector.states.map((e,i) => e ? i : false).filter(e => e !== false);
}
if(filters && $.tablesorter.hasWidget( table, 'filter')) {
state.filters = $.tablesorter.getFilters(table);
}
if(sortList) {
state.sortList = config.sortList;
}
return state
}
Todo: Implement backend in qfq/extension/Source/api/tablesorter.php
"qfq/extension/Source/api/tablesorter.php" ist schon erstellt
Mockup Frontend: qfq/mockup/tablesorter.php (zeilen 50-53 wichtig!)
Mockup Backend: qfq/mockup/api/tablesorter.php
- Due date changed from 09.05.2019 to 23.05.2019
- Assignee changed from Marc Egger to Carsten Rose
- Target version changed from 146 to CodingDays2019
- Target version changed from CodingDays2019 to next6
- Has duplicate Feature #8172: Report: Spalten dynamisch ein/ausblenden und filterbar machen added
- Status changed from New to In Progress
- Status changed from In Progress to Closed
- Target version changed from next6 to 146
- Target version changed from 146 to 19.7.0
Also available in: Atom
PDF