/* This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
* Copyright (C) 2012-2019 mutschler, janeczku, jkrehm, OzzieIsaacs
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
// Generic control/related handler to show/hide fields based on a checkbox' value
// e.g.
//
//
...
$(document).on("change", "input[type=\"checkbox\"][data-control]", function () {
var $this = $(this);
var name = $this.data("control");
var showOrHide = $this.prop("checked");
$("[data-related=\"" + name + "\"]").each(function () {
$(this).toggle(showOrHide);
});
});
// Generic control/related handler to show/hide fields based on a select' value
$(document).on("change", "select[data-control]", function() {
var $this = $(this);
var name = $this.data("control");
var showOrHide = parseInt($this.val());
// var showOrHideLast = $("#" + name + " option:last").val()
for (var i = 0; i < $(this)[0].length; i++) {
var element = parseInt($(this)[0][i].value);
if (element === showOrHide) {
$("[data-related=" + name + "-" + element + "]").show();
} else {
$("[data-related=" + name + "-" + element + "]").hide();
}
}
});
$(function() {
var updateTimerID;
var updateText;
// Allow ajax prefilters to be added/removed dynamically
// eslint-disable-next-line new-cap
var 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: function success(data) {
// console.log(data.status);
$("#Updatecontent").html(updateText[data.status]);
if (data.status > 6) {
clearInterval(updateTimerID);
$("#spinner2").hide();
$("#updateFinished").removeClass("hidden");
$("#check_for_update").removeClass("hidden");
$("#perform_update").addClass("hidden");
}
},
error: function error() {
// console.log('Done');
clearInterval(updateTimerID);
$("#spinner2").hide();
$("#Updatecontent").html(updateText[7]);
$("#updateFinished").removeClass("hidden");
$("#check_for_update").removeClass("hidden");
$("#perform_update").addClass("hidden");
},
timeout: 2000
});
}
$(".discover .row").isotope({
// options
itemSelector : ".book",
layoutMode : "fitRows"
});
$(".grid").isotope({
// options
itemSelector : ".grid-item",
layoutMode : "fitColumns"
});
var $loadMore = $(".load-more .row").infiniteScroll({
debug: false,
// selector for the paged navigation (it will be hidden)
path : ".next",
// selector for the NEXT link (to page 2)
append : ".load-more .book"
//animate : true, # ToDo: Reenable function
//extraScrollPx: 300
});
$loadMore.on( "append.infiniteScroll", function( event, response, path, data ) {
$(".pagination").addClass("hidden");
$(".load-more .row").isotope( "appended", $(data), null );
});
$("#restart").click(function() {
$.ajax({
dataType: "json",
url: window.location.pathname + "/../../shutdown",
data: {"parameter":0},
success: function success() {
$("#spinner").show();
setTimeout(restartTimer, 3000);
}
});
});
$("#shutdown").click(function() {
$.ajax({
dataType: "json",
url: window.location.pathname + "/../../shutdown",
data: {"parameter":1},
success: function success(data) {
return alert(data.text);
}
});
});
$("#check_for_update").click(function() {
var $this = $(this);
var buttonText = $this.html();
$this.html("...");
$("#update_error").addClass("hidden");
if ($("#message").length) {
$("#message").alert("close");
}
$.ajax({
dataType: "json",
url: window.location.pathname + "/../../get_update_status",
success: function success(data) {
$this.html(buttonText);
var cssClass = "";
var message = "";
if (data.success === true) {
if (data.update === true) {
$("#check_for_update").addClass("hidden");
$("#perform_update").removeClass("hidden");
$("#update_info")
.removeClass("hidden")
.find("span").html(data.commit);
data.history.forEach(function(entry) {
$("