2019-01-20 18:37:45 +00:00
|
|
|
/* 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 <http://www.gnu.org/licenses/>.
|
|
|
|
*/
|
|
|
|
|
2017-07-08 23:05:20 +00:00
|
|
|
// Generic control/related handler to show/hide fields based on a checkbox' value
|
|
|
|
// e.g.
|
|
|
|
// <input type="checkbox" data-control="stuff-to-show">
|
|
|
|
// <div data-related="stuff-to-show">...</div>
|
|
|
|
$(document).on("change", "input[type=\"checkbox\"][data-control]", function () {
|
|
|
|
var $this = $(this);
|
|
|
|
var name = $this.data("control");
|
|
|
|
var showOrHide = $this.prop("checked");
|
|
|
|
|
2017-08-13 05:24:56 +00:00
|
|
|
$("[data-related=\"" + name + "\"]").each(function () {
|
2017-07-08 23:05:20 +00:00
|
|
|
$(this).toggle(showOrHide);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
2015-08-02 18:59:11 +00:00
|
|
|
$(function() {
|
2017-08-13 05:24:56 +00:00
|
|
|
var updateTimerID;
|
|
|
|
var updateText;
|
2017-04-03 18:05:55 +00:00
|
|
|
|
2017-07-22 18:11:14 +00:00
|
|
|
// Allow ajax prefilters to be added/removed dynamically
|
|
|
|
// eslint-disable-next-line new-cap
|
2017-08-13 05:24:56 +00:00
|
|
|
var preFilters = $.Callbacks();
|
2017-07-22 18:11:14 +00:00
|
|
|
$.ajaxPrefilter(preFilters.fire);
|
|
|
|
|
2017-04-03 18:05:55 +00:00
|
|
|
function restartTimer() {
|
|
|
|
$("#spinner").addClass("hidden");
|
|
|
|
$("#RestartDialog").modal("hide");
|
|
|
|
}
|
|
|
|
|
|
|
|
function updateTimer() {
|
|
|
|
$.ajax({
|
2017-08-13 05:24:56 +00:00
|
|
|
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');
|
2017-04-03 18:05:55 +00:00
|
|
|
clearInterval(updateTimerID);
|
|
|
|
$("#spinner2").hide();
|
2017-08-13 05:24:56 +00:00
|
|
|
$("#Updatecontent").html(updateText[7]);
|
|
|
|
$("#updateFinished").removeClass("hidden");
|
2017-04-03 18:05:55 +00:00
|
|
|
$("#check_for_update").removeClass("hidden");
|
|
|
|
$("#perform_update").addClass("hidden");
|
|
|
|
},
|
2017-08-13 05:24:56 +00:00
|
|
|
timeout: 2000
|
2017-04-03 18:05:55 +00:00
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2017-03-30 19:17:18 +00:00
|
|
|
$(".discover .row").isotope({
|
2015-08-02 18:59:11 +00:00
|
|
|
// options
|
2017-03-29 19:43:55 +00:00
|
|
|
itemSelector : ".book",
|
|
|
|
layoutMode : "fitRows"
|
2015-08-02 18:59:11 +00:00
|
|
|
});
|
|
|
|
|
2019-01-25 20:58:19 +00:00
|
|
|
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)
|
2019-01-26 08:43:17 +00:00
|
|
|
append : ".load-more .book"
|
|
|
|
//animate : true, # ToDo: Reenable function
|
2019-01-25 20:58:19 +00:00
|
|
|
//extraScrollPx: 300
|
|
|
|
});
|
2019-03-05 15:31:09 +00:00
|
|
|
$loadMore.on( "append.infiniteScroll", function( event, response, path, data ) {
|
2019-01-25 20:58:19 +00:00
|
|
|
$(".pagination").addClass("hidden");
|
|
|
|
$(".load-more .row").isotope( "appended", $(data), null );
|
2015-08-02 18:59:11 +00:00
|
|
|
});
|
2016-03-27 21:36:51 +00:00
|
|
|
|
2017-02-05 12:40:53 +00:00
|
|
|
$("#restart").click(function() {
|
|
|
|
$.ajax({
|
2017-03-30 19:17:18 +00:00
|
|
|
dataType: "json",
|
2017-08-13 05:24:56 +00:00
|
|
|
url: window.location.pathname + "/../../shutdown",
|
2017-02-05 12:40:53 +00:00
|
|
|
data: {"parameter":0},
|
2017-08-13 05:24:56 +00:00
|
|
|
success: function success() {
|
2017-03-30 19:17:18 +00:00
|
|
|
$("#spinner").show();
|
2017-08-13 05:24:56 +00:00
|
|
|
setTimeout(restartTimer, 3000);
|
|
|
|
}
|
2017-02-05 12:40:53 +00:00
|
|
|
});
|
|
|
|
});
|
|
|
|
$("#shutdown").click(function() {
|
|
|
|
$.ajax({
|
2017-03-30 19:17:18 +00:00
|
|
|
dataType: "json",
|
2017-08-13 05:24:56 +00:00
|
|
|
url: window.location.pathname + "/../../shutdown",
|
2017-02-05 12:40:53 +00:00
|
|
|
data: {"parameter":1},
|
2017-08-13 05:24:56 +00:00
|
|
|
success: function success(data) {
|
|
|
|
return alert(data.text);
|
|
|
|
}
|
2017-02-05 12:40:53 +00:00
|
|
|
});
|
|
|
|
});
|
|
|
|
$("#check_for_update").click(function() {
|
2017-08-13 05:24:56 +00:00
|
|
|
var $this = $(this);
|
|
|
|
var buttonText = $this.html();
|
|
|
|
$this.html("...");
|
2018-12-29 10:16:36 +00:00
|
|
|
$("#update_error").addClass("hidden");
|
2019-03-05 15:31:09 +00:00
|
|
|
if ($("#message").length) {
|
2018-12-29 10:16:36 +00:00
|
|
|
$("#message").alert("close");
|
|
|
|
}
|
2017-02-05 12:40:53 +00:00
|
|
|
$.ajax({
|
2017-03-30 19:17:18 +00:00
|
|
|
dataType: "json",
|
2017-08-13 05:24:56 +00:00
|
|
|
url: window.location.pathname + "/../../get_update_status",
|
|
|
|
success: function success(data) {
|
|
|
|
$this.html(buttonText);
|
2018-09-09 19:54:51 +00:00
|
|
|
|
2019-01-08 06:58:22 +00:00
|
|
|
var cssClass = "";
|
|
|
|
var message = "";
|
2018-09-09 19:54:51 +00:00
|
|
|
|
|
|
|
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);
|
|
|
|
|
2019-01-20 16:45:42 +00:00
|
|
|
data.history.forEach(function(entry) {
|
2018-09-09 19:54:51 +00:00
|
|
|
$("<tr><td>" + entry[0] + "</td><td>" + entry[1] + "</td></tr>").appendTo($("#update_table"));
|
|
|
|
});
|
2019-01-08 06:58:22 +00:00
|
|
|
cssClass = "alert-warning";
|
2018-09-09 19:54:51 +00:00
|
|
|
} else {
|
2019-01-08 06:58:22 +00:00
|
|
|
cssClass = "alert-success";
|
2018-09-09 19:54:51 +00:00
|
|
|
}
|
|
|
|
} else {
|
2019-01-08 06:58:22 +00:00
|
|
|
cssClass = "alert-danger";
|
2018-09-09 09:46:00 +00:00
|
|
|
}
|
2018-09-09 19:54:51 +00:00
|
|
|
|
2019-01-08 06:58:22 +00:00
|
|
|
message = "<div id=\"message\" class=\"alert " + cssClass
|
|
|
|
+ " fade in\"><a href=\"#\" class=\"close\" data-dismiss=\"alert\">×</a>"
|
|
|
|
+ data.message + "</div>";
|
2018-09-09 19:54:51 +00:00
|
|
|
|
|
|
|
$(message).insertAfter($("#update_table"));
|
2017-02-20 18:52:00 +00:00
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
2017-03-07 18:10:17 +00:00
|
|
|
$("#restart_database").click(function() {
|
|
|
|
$.ajax({
|
2017-04-02 08:05:07 +00:00
|
|
|
dataType: "json",
|
2017-08-13 05:24:56 +00:00
|
|
|
url: window.location.pathname + "/../../shutdown",
|
2017-03-07 18:10:17 +00:00
|
|
|
data: {"parameter":2}
|
|
|
|
});
|
|
|
|
});
|
2017-02-20 18:52:00 +00:00
|
|
|
$("#perform_update").click(function() {
|
2017-03-29 19:43:55 +00:00
|
|
|
$("#spinner2").show();
|
2017-02-20 18:52:00 +00:00
|
|
|
$.ajax({
|
2017-08-13 05:24:56 +00:00
|
|
|
type: "POST",
|
|
|
|
dataType: "json",
|
|
|
|
data: { start: "True"},
|
|
|
|
url: window.location.pathname + "/../../get_updater_status",
|
|
|
|
success: function success(data) {
|
|
|
|
updateText = data.text;
|
|
|
|
$("#Updatecontent").html(updateText[data.status]);
|
|
|
|
// console.log(data.status);
|
|
|
|
updateTimerID = setInterval(updateTimer, 2000);
|
|
|
|
}
|
2017-02-05 12:40:53 +00:00
|
|
|
});
|
|
|
|
});
|
2015-08-02 18:59:11 +00:00
|
|
|
|
2019-03-05 15:31:09 +00:00
|
|
|
// Init all data control handlers to default
|
2017-07-08 23:05:20 +00:00
|
|
|
$("input[data-control]").trigger("change");
|
|
|
|
|
2017-07-08 01:22:05 +00:00
|
|
|
$("#bookDetailsModal")
|
2017-07-22 18:11:14 +00:00
|
|
|
.on("show.bs.modal", function(e) {
|
2017-08-13 05:24:56 +00:00
|
|
|
var $modalBody = $(this).find(".modal-body");
|
2017-07-22 18:11:14 +00:00
|
|
|
|
|
|
|
// Prevent static assets from loading multiple times
|
2017-08-13 05:24:56 +00:00
|
|
|
var useCache = function(options) {
|
2017-07-22 18:11:14 +00:00
|
|
|
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("...");
|
2017-07-06 16:21:35 +00:00
|
|
|
});
|
|
|
|
|
2017-08-13 05:24:56 +00:00
|
|
|
$(window).resize(function() {
|
2019-01-26 08:43:17 +00:00
|
|
|
$(".discover .row").isotope("layout");
|
2017-03-31 16:31:16 +00:00
|
|
|
});
|
2017-08-13 05:24:56 +00:00
|
|
|
});
|