1
0
mirror of https://github.com/processwire/processwire.git synced 2025-08-14 02:34:24 +02:00

A couple of adjustments to ProcessPageLister module to correct issue of neverending spinner when ajax result was missing an expected row, plus improve the ajax spinner output, especially for AdminThemUikit which previously was not showing a spinner.

This commit is contained in:
Ryan Cramer
2019-06-10 09:03:18 -04:00
parent f95b026a95
commit 2ba96d3f2b
4 changed files with 42 additions and 9 deletions

View File

@@ -3030,6 +3030,7 @@ class Modules extends WireArray {
* @param string $property Name of property to get
* @param array $options Additional options (see getModuleInfo method for options)
* @return mixed|null Returns value of property or null if not found
* @since 3.0.107
*
*/
public function getModuleInfoProperty($class, $property, array $options = array()) {

View File

@@ -1,7 +1,7 @@
{
"title": "Lister",
"summary": "Admin tool for finding and listing pages by any property.",
"version": 24,
"version": 25,
"author": "Ryan Cramer",
"icon": "search",
"singular": false,

View File

@@ -25,14 +25,11 @@ var ProcessLister = {
if(ProcessLister.initialized) return;
ProcessLister.initialized = true;
if($("#ProcessLister").length == 0) return;
ProcessLister.spinner = $("<li class='title' id='ProcessListerSpinner'><i class='fa fa-lg fa-spin fa-spinner'></i></li>");
$("#breadcrumbs ul.nav").append(ProcessLister.spinner);
ProcessLister.initSpinners();
ProcessLister.filters = $("#ProcessListerFilters");
ProcessLister.results = $("#ProcessListerResults");
ProcessLister.lister = $("#ProcessLister");
ProcessLister.filters.change(function() { ProcessLister.submit(); });
ProcessLister.results.on('click', '.ProcessListerTable > thead th', ProcessLister.columnSort)
@@ -63,7 +60,7 @@ var ProcessLister = {
if(ProcessLister.lister.size() > 0) ProcessLister.lister.WireTabs({ items: $(".WireTab") });
$("#_ProcessListerRefreshTab").html("<i class='fa fa-refresh ui-priority-secondary'></i>")
$("#_ProcessListerRefreshTab").html("<i class='fa fa-fw fa-refresh ui-priority-secondary'></i>")
.unbind('click')
.click(function() {
ProcessLister.resetTotal = true;
@@ -71,7 +68,7 @@ var ProcessLister = {
return false;
});
$("#_ProcessListerResetTab").html("<i class='fa fa-rotate-left ui-priority-secondary'></i>")
$("#_ProcessListerResetTab").html("<i class='fa fa-fw fa-rotate-left ui-priority-secondary'></i>")
.unbind('click')
.click(function() {
window.location.href = './?reset=1';
@@ -83,6 +80,34 @@ var ProcessLister = {
if(ProcessLister.numSubmits == 0) ProcessLister.submit();
else ProcessLister.spinner.fadeOut();
},
/**
* Initialize spinners
*
*/
initSpinners: function() {
var $parent = $("#breadcrumbs ul.nav");
if($parent.length) {
// legacy spinner (AdminThemeDefault, AdminThemeReno)
ProcessLister.spinner = $("<li class='title' id='ProcessListerSpinner'><i class='fa fa-lg fa-spin fa-spinner'></i></li>");
$parent.append(ProcessLister.spinner);
} else {
// in AdminThemeUikit or others, this spinner is not used
ProcessLister.spinner = $('');
}
$(document).ajaxStart(function() {
var $spinner = $('#_ProcessListerRefreshTab').find('i');
if($spinner.length) $spinner.removeClass('fa-refresh').addClass('fa-spin fa-spinner');
});
$(document).ajaxStop(function() {
var $spinner = $('#_ProcessListerRefreshTab').find('i');
if($spinner.length) $spinner.fadeOut('fast', function() {
$spinner.removeClass('fa-spin fa-spinner').addClass('fa-refresh').fadeIn('fast');
});
});
},
/**
* Implementation for table header (th) click event
@@ -132,12 +157,13 @@ var ProcessLister = {
if(!confirm(msg)) return false;
}
}
ProcessLister.results.find('.lister_headline').append("<i class='fa fa-spin fa-spinner'></i>");
} else {
refreshAll = false;
}
ProcessLister.numSubmits++;
if(typeof url == "undefined") var url = "./";
if(typeof url == "undefined") url = "./";
ProcessLister.spinner.fadeIn('fast');
@@ -182,8 +208,10 @@ var ProcessLister = {
*
*/
_submitSuccess: function(data) {
var refreshAll = true;
if(ProcessLister.refreshRowPageIDs.length) {
refreshAll = false;
for(var n in ProcessLister.refreshRowPageIDs) {
var pageID = ProcessLister.refreshRowPageIDs[n];
@@ -206,12 +234,15 @@ var ProcessLister = {
}, 1000);
}
if($newRow.find(".Inputfield").length) InputfieldsInit($newRow);
} else if($oldRow.length && !$newRow.length) {
$oldRow.remove(); // row no longer appears in results
}
}
ProcessLister.refreshRowPageIDs = [];
} else {
// update entire table
ProcessLister.results.fadeTo(0, 0);
var sort = $("#lister_sort").val();
ProcessLister.results.html(data).find("table.ProcessListerTable > thead th").each(function () {
var $b = $(this).find('b');
@@ -258,6 +289,7 @@ var ProcessLister = {
$("a.actions_toggle.open").click().removeClass('open'); // auto open items corresponding to "open" get var
if(typeof AdminDataTable != "undefined") AdminDataTable.init();
$("a.lister-lightbox", ProcessLister.results).magnificPopup({ type: 'image', closeOnContentClick: true, closeBtnInside: true });
if(refreshAll) ProcessLister.results.fadeTo(0, 1.0);
}, 250);
var pos = data.indexOf('ProcessListerScript');

File diff suppressed because one or more lines are too long