mirror of https://github.com/apache/cloudstack.git
List view: Fix infinite scrolling
Fixes condition where, on 'refresh' of list view, infinite scrolling no longer works due to leftover state prior to refresh. Now page # and end-of-list indicator are stores in DOM object, for easier cleanup
This commit is contained in:
parent
1f7a818440
commit
ad051e8504
|
|
@ -1035,6 +1035,7 @@
|
|||
var subselect = uiCustom ? listViewArgs.listView.subselect : null;
|
||||
|
||||
if (!(data && data.length)) {
|
||||
$listView.data('end-of-table', true);
|
||||
if (!$tbody.find('tr').size()) {
|
||||
return [
|
||||
$('<tr>').addClass('empty last').append(
|
||||
|
|
@ -1502,6 +1503,7 @@
|
|||
var reorder = options.reorder;
|
||||
var multiSelect = options.multiSelect;
|
||||
var $tbody = $table.find('tbody');
|
||||
var $listView = $table.closest('.list-view');
|
||||
|
||||
if (!loadArgs) loadArgs = {
|
||||
page: 1,
|
||||
|
|
@ -1512,11 +1514,16 @@
|
|||
}
|
||||
};
|
||||
|
||||
if (options.clearEndTable) {
|
||||
$listView.data('page', 1);
|
||||
$table.closest('.list-view').data('end-of-table', false);
|
||||
}
|
||||
|
||||
if (!append) {
|
||||
if (!append) $table.find('tbody tr').remove();
|
||||
}
|
||||
|
||||
var viewArgs = $table.closest('.list-view').data('view-args');
|
||||
var viewArgs = $listView.data('view-args');
|
||||
var uiCustom = viewArgs.listView ? viewArgs.listView.uiCustom : false;
|
||||
|
||||
setLoading($table, function(setLoadingArgs) {
|
||||
|
|
@ -1539,12 +1546,6 @@
|
|||
noSelect: uiCustom
|
||||
});
|
||||
|
||||
if (args.data &&
|
||||
args.data.length < pageSize &&
|
||||
options.setEndTable) {
|
||||
options.setEndTable();
|
||||
}
|
||||
|
||||
setTimeout(function() {
|
||||
$table.dataTable('refresh');
|
||||
});
|
||||
|
|
@ -1686,16 +1687,13 @@
|
|||
var $toolbar = $('<div>').addClass('toolbar').appendTo($listView);
|
||||
var $table = $('<table>').appendTo($listView);
|
||||
var infScrollTimer;
|
||||
var page = 1;
|
||||
var actions = listViewData.actions;
|
||||
var reorder = listViewData.reorder;
|
||||
var multiSelect = listViewData.multiSelect;
|
||||
var tableHeight = $table.height();
|
||||
var endTable = false;
|
||||
var setEndTable = function() {
|
||||
endTable = true;
|
||||
}
|
||||
|
||||
$listView.data('end-of-table', false);
|
||||
$listView.data('page', 1);
|
||||
|
||||
var $switcher;
|
||||
if (args.sections) {
|
||||
|
|
@ -1794,7 +1792,7 @@
|
|||
listViewData.preFilter,
|
||||
listViewData.fields,
|
||||
false, {
|
||||
page: page,
|
||||
page: $listView.data('page'),
|
||||
filterBy: {
|
||||
kind: $listView.find('select[id=filterBy]').val(),
|
||||
search: {
|
||||
|
|
@ -1808,7 +1806,6 @@
|
|||
context: args.context,
|
||||
reorder: reorder,
|
||||
detailView: listViewData.detailView,
|
||||
setEndTable: setEndTable,
|
||||
'multiSelect': multiSelect,
|
||||
noActionCol: listViewData.noActionCol
|
||||
}
|
||||
|
|
@ -1842,14 +1839,14 @@
|
|||
var basicSearch = function() {
|
||||
$listView.removeData('advSearch');
|
||||
|
||||
page = 1;
|
||||
$listView.data('page', 1);
|
||||
loadBody(
|
||||
$table,
|
||||
listViewData.dataProvider,
|
||||
listViewData.preFilter,
|
||||
listViewData.fields,
|
||||
false, {
|
||||
page: page,
|
||||
page: $listView.data('page'),
|
||||
filterBy: {
|
||||
kind: $listView.find('select[id=filterBy]').val(),
|
||||
search: {
|
||||
|
|
@ -1862,7 +1859,6 @@
|
|||
context: $listView.data('view-args').context,
|
||||
reorder: listViewData.reorder,
|
||||
detailView: listViewData.detailView,
|
||||
setEndTable: setEndTable,
|
||||
'multiSelect': multiSelect,
|
||||
noActionCol: listViewData.noActionCol
|
||||
}
|
||||
|
|
@ -1895,15 +1891,14 @@
|
|||
//advanced search
|
||||
var advancedSearch = function(args) {
|
||||
$listView.data('advSearch', args.data);
|
||||
|
||||
page = 1;
|
||||
$listView.data('page', 1);
|
||||
loadBody(
|
||||
$table,
|
||||
listViewData.dataProvider,
|
||||
listViewData.preFilter,
|
||||
listViewData.fields,
|
||||
false, {
|
||||
page: page,
|
||||
page: $listView.data('page'),
|
||||
filterBy: {
|
||||
kind: $listView.find('select[id=filterBy]').val(),
|
||||
advSearch: args.data
|
||||
|
|
@ -1913,7 +1908,6 @@
|
|||
context: $listView.data('view-args').context,
|
||||
reorder: listViewData.reorder,
|
||||
detailView: listViewData.detailView,
|
||||
setEndTable: setEndTable,
|
||||
'multiSelect': multiSelect,
|
||||
noActionCol: listViewData.noActionCol
|
||||
}
|
||||
|
|
@ -1979,8 +1973,8 @@
|
|||
var loadMoreData = $listView.scrollTop() >= ($table.height() - $listView.height()) - $listView.height() / 4;
|
||||
var context = $listView.data('view-args').context;
|
||||
|
||||
if (loadMoreData && !endTable) {
|
||||
page = page + 1;
|
||||
if (loadMoreData && !$listView.data('end-of-table')) {
|
||||
$listView.data('page', $listView.data('page') + 1);
|
||||
|
||||
var filterBy = {
|
||||
kind: $listView.find('select[id=filterBy]').length > 0 ? $listView.find('select[id=filterBy]').val() : 'all'
|
||||
|
|
@ -2000,12 +1994,11 @@
|
|||
listViewData.preFilter,
|
||||
listViewData.fields, true, {
|
||||
context: context,
|
||||
page: page,
|
||||
page: $listView.data('page'),
|
||||
filterBy: filterBy
|
||||
}, actions, {
|
||||
reorder: listViewData.reorder,
|
||||
detailView: listViewData.detailView,
|
||||
setEndTable: setEndTable,
|
||||
'multiSelect': multiSelect,
|
||||
noActionCol: listViewData.noActionCol
|
||||
});
|
||||
|
|
@ -2272,6 +2265,7 @@
|
|||
false,
|
||||
null,
|
||||
listViewArgs.actions, {
|
||||
clearEndTable: true,
|
||||
multiSelect: listViewArgs.multiSelect,
|
||||
context: this.data('view-args').context,
|
||||
detailView: listViewArgs.detailView
|
||||
|
|
|
|||
Loading…
Reference in New Issue