#985: preserve the displayed sort order when refreshing a table.

SVN:trunk[3442]
This commit is contained in:
Denis Flaven
2014-12-02 10:26:26 +00:00
parent 671ee353e8
commit 4dd83a0eb6
2 changed files with 30 additions and 12 deletions

View File

@@ -61,6 +61,7 @@ $(function()
oParams.class_aliases = this.options.oClassAliases;
oParams.columns = this.options.oColumns;
var iSortCol = 0;
var aCurrentSort = [];
for(var k1 in oParams.columns) //Aliases
{
for(var k2 in oParams.columns[k1]) //Attribute codes
@@ -69,17 +70,18 @@ $(function()
{
oParams.sort_col = iSortCol;
oParams.sort_order = oParams.columns[k1][k2].sort;
aCurrentSort.push([iSortCol, (oParams.columns[k1][k2].sort == 'asc') ? 0 : 1]);
break; //TODO make this more generic, Sort on just one column for now
}
iSortCol++;
}
break; //TODO: DBObjectSet supports only sorting on the first alias of the set
}
}
var sId = new String(this.element.attr('id'));
var sListId = sId.replace('datatable_', '');
oParams.list_id = sListId;
var me = this;
this.element.block();
$.post(this.options.sRenderUrl, oParams, function(data) {
// Nasty workaround to clear the pager's state for paginated lists !!!
// See jquery.tablesorter.pager.js / saveParams / restoreParams
@@ -90,6 +92,9 @@ $(function()
// End of workaround
me.element.find('.datacontents').html(data);
// restore the sort order on columns
me.element.find('table.listResults').trigger('fakesorton', [aCurrentSort]);
me.element.unblock();
}, 'html' );
},
@@ -306,6 +311,10 @@ $(function()
return (oDlgOpen.length > 0);
},
DoRefresh: function()
{
this._refresh();
},
GetMultipleSelectionParams: function()
{
var oRes = {};

View File

@@ -115,22 +115,31 @@ function ReloadBlock(divId, sStyle, sSerializedFilter, sExtraParams)
// Check if the user is not editing the list properties right now
var bDialogOpen = false;
var oDataTable = $('#'+divId+' :itop-datatable');
var bIsDataTable = false;
if (oDataTable.length > 0)
{
bDialogOpen = oDataTable.datatable('IsDialogOpen');
bIsDataTable = true;
}
if (!bDialogOpen)
{
$('#'+divId).block();
$.post(GetAbsoluteUrlAppRoot()+'pages/ajax.render.php?style='+sStyle,
{ operation: 'ajax', filter: sSerializedFilter, extra_params: sExtraParams },
function(data){
$('#'+divId).empty();
$('#'+divId).append(data);
$('#'+divId).removeClass('loading');
}
);
if (bIsDataTable)
{
oDataTable.datatable('DoRefresh');
}
else
{
$('#'+divId).block();
$.post(GetAbsoluteUrlAppRoot()+'pages/ajax.render.php?style='+sStyle,
{ operation: 'ajax', filter: sSerializedFilter, extra_params: sExtraParams },
function(data){
$('#'+divId).empty();
$('#'+divId).append(data);
$('#'+divId).removeClass('loading');
}
);
}
}
}