d85e0b96dc
If the HTML that's returned from the `$.get` request contains a `<script src="..."/>` tag it loads the JavaScript file via ajax, and by default it attaches a timestamp to it to bust cache. That means the file loads every time the modal is opened, and the browser treats it as a new file each time. The result is that code fires multiple times and events listeners are added multiple times.
152 lines
4.9 KiB
JavaScript
152 lines
4.9 KiB
JavaScript
var displaytext;
|
|
var updateTimerID;
|
|
var updateText;
|
|
|
|
$(function() {
|
|
|
|
// Allow ajax prefilters to be added/removed dynamically
|
|
// eslint-disable-next-line new-cap
|
|
const preFilters = $.Callbacks();
|
|
$.ajaxPrefilter(preFilters.fire);
|
|
|
|
function restartTimer() {
|
|
$("#spinner").addClass("hidden");
|
|
$("#RestartDialog").modal("hide");
|
|
}
|
|
|
|
function updateTimer() {
|
|
$.ajax({
|
|
dataType: "json",
|
|
url: window.location.pathname+"/../../get_updater_status",
|
|
success(data) {
|
|
// console.log(data.status);
|
|
$("#UpdateprogressDialog #Updatecontent").html(updateText[data.status]);
|
|
if (data.status >6){
|
|
clearInterval(updateTimerID);
|
|
$("#spinner2").hide();
|
|
$("#UpdateprogressDialog #updateFinished").removeClass("hidden");
|
|
$("#check_for_update").removeClass("hidden");
|
|
$("#perform_update").addClass("hidden");
|
|
}
|
|
},
|
|
error() {
|
|
// console.log('Done');
|
|
clearInterval(updateTimerID);
|
|
$("#spinner2").hide();
|
|
$("#UpdateprogressDialog #Updatecontent").html(updateText[7]);
|
|
$("#UpdateprogressDialog #updateFinished").removeClass("hidden");
|
|
$("#check_for_update").removeClass("hidden");
|
|
$("#perform_update").addClass("hidden");
|
|
},
|
|
timeout:2000
|
|
});
|
|
}
|
|
|
|
$(".discover .row").isotope({
|
|
// options
|
|
itemSelector : ".book",
|
|
layoutMode : "fitRows"
|
|
});
|
|
|
|
$(".load-more .row").infinitescroll({
|
|
debug: false,
|
|
navSelector : ".pagination",
|
|
// selector for the paged navigation (it will be hidden)
|
|
nextSelector : ".pagination a:last",
|
|
// selector for the NEXT link (to page 2)
|
|
itemSelector : ".load-more .book",
|
|
animate : true,
|
|
extraScrollPx: 300,
|
|
// selector for all items you'll retrieve
|
|
}, function(data){
|
|
$(".load-more .row").isotope( "appended", $(data), null );
|
|
});
|
|
|
|
$("#sendbtn").click(function(){
|
|
var $this = $(this);
|
|
$this.text("Please wait...");
|
|
$this.addClass("disabled");
|
|
});
|
|
$("#restart").click(function() {
|
|
$.ajax({
|
|
dataType: "json",
|
|
url: window.location.pathname+"/../../shutdown",
|
|
data: {"parameter":0},
|
|
success(data) {
|
|
$("#spinner").show();
|
|
displaytext=data.text;
|
|
setTimeout(restartTimer, 3000);}
|
|
});
|
|
});
|
|
$("#shutdown").click(function() {
|
|
$.ajax({
|
|
dataType: "json",
|
|
url: window.location.pathname+"/../../shutdown",
|
|
data: {"parameter":1},
|
|
success(data) {
|
|
return alert(data.text);}
|
|
});
|
|
});
|
|
$("#check_for_update").click(function() {
|
|
var buttonText = $("#check_for_update").html();
|
|
$("#check_for_update").html("...");
|
|
$.ajax({
|
|
dataType: "json",
|
|
url: window.location.pathname+"/../../get_update_status",
|
|
success(data) {
|
|
$("#check_for_update").html(buttonText);
|
|
if (data.status === true) {
|
|
$("#check_for_update").addClass("hidden");
|
|
$("#perform_update").removeClass("hidden");
|
|
$("#update_info").removeClass("hidden");
|
|
$("#update_info").find("span").html(data.commit);
|
|
}
|
|
}
|
|
});
|
|
});
|
|
$("#restart_database").click(function() {
|
|
$.ajax({
|
|
dataType: "json",
|
|
url: window.location.pathname+"/../../shutdown",
|
|
data: {"parameter":2}
|
|
});
|
|
});
|
|
$("#perform_update").click(function() {
|
|
$("#spinner2").show();
|
|
$.ajax({
|
|
type: "POST",
|
|
dataType: "json",
|
|
data: { start: "True"},
|
|
url: window.location.pathname+"/../../get_updater_status",
|
|
success(data) {
|
|
updateText=data.text;
|
|
$("#UpdateprogressDialog #Updatecontent").html(updateText[data.status]);
|
|
// console.log(data.status);
|
|
updateTimerID=setInterval(updateTimer, 2000);}
|
|
});
|
|
});
|
|
|
|
$("#bookDetailsModal")
|
|
.on("show.bs.modal", function(e) {
|
|
const $modalBody = $(this).find(".modal-body");
|
|
|
|
// Prevent static assets from loading multiple times
|
|
const useCache = (options) => {
|
|
options.async = true;
|
|
options.cache = true;
|
|
};
|
|
preFilters.add(useCache);
|
|
|
|
$.get(e.relatedTarget.href).done(function(content) {
|
|
$modalBody.html(content);
|
|
preFilters.remove(useCache);
|
|
});
|
|
})
|
|
.on("hidden.bs.modal", function() {
|
|
$(this).find(".modal-body").html("...");
|
|
});
|
|
|
|
$(window).resize(function(event) {
|
|
$(".discover .row").isotope("reLayout");
|
|
});
|
|
}); |