mirror of
https://github.com/Combodo/iTop.git
synced 2026-04-22 18:18:46 +02:00
#985: preserve the displayed sort order when refreshing a table.
SVN:trunk[3442]
This commit is contained in:
@@ -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 = {};
|
||||
|
||||
29
js/utils.js
29
js/utils.js
@@ -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');
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user