replace card view with list view (#803)

This commit is contained in:
kaso17
2016-12-05 12:32:26 +01:00
committed by GitHub
parent bb6f56bfa6
commit c38a2533e1
85 changed files with 302 additions and 423 deletions

View File

@@ -47,54 +47,149 @@ function loadJackettSettings() {
function reloadIndexers() {
$('#indexers').hide();
$('#indexers > .indexer').remove();
$('#unconfigured-indexers').empty();
var jqxhr = $.get("get_indexers", function (data) {
displayIndexers(data.items);
var configuredIndexers = [];
var unconfiguredIndexers = [];
for (var i = 0; i < data.items.length; i++) {
var item = data.items[i];
item.torznab_host = resolveUrl(basePath + "/torznab/" + item.id);
item.potato_host = resolveUrl(basePath + "/potato/" + item.id);
if (item.last_error)
item.state = "error";
else
item.state = "success";
item.main_cats_list = [];
for (var catID in item.caps) {
var isMainCat = (catID % 1000) == 0;
if (isMainCat)
item.main_cats_list.push(item.caps[catID]);
}
item.mains_cats = item.main_cats_list.join(", ");
if (item.configured)
configuredIndexers.push(item);
else
unconfiguredIndexers.push(item);
}
displayConfiguredIndexersList(configuredIndexers);
displayUnconfiguredIndexersList(unconfiguredIndexers);
}).fail(function () {
doNotify("Error loading indexers, request to Jackett server failed", "danger", "glyphicon glyphicon-alert");
});
}
function displayIndexers(items) {
var indexerTemplate = Handlebars.compile($("#configured-indexer").html());
var unconfiguredIndexerTemplate = Handlebars.compile($("#unconfigured-indexer").html());
$('#unconfigured-indexers-template').empty();
for (var i = 0; i < items.length; i++) {
var item = items[i];
item.torznab_host = resolveUrl(basePath + "/torznab/" + item.id);
item.potato_host = resolveUrl(basePath + "/potato/" + item.id);
if (item.configured)
$('#indexers').append(indexerTemplate(item));
else
$('#unconfigured-indexers-template').append($(unconfiguredIndexerTemplate(item)));
}
var addIndexerButton = $($('#add-indexer').html());
addIndexerButton.appendTo($('#indexers'));
addIndexerButton.click(function () {
$("#modals").empty();
var dialog = $($("#select-indexer").html());
dialog.find('#unconfigured-indexers').html($('#unconfigured-indexers-template').html());
$("#modals").append(dialog);
dialog.modal("show");
$('.indexer-setup').each(function (i, btn) {
var $btn = $(btn);
var id = $btn.data("id");
var link = $btn.data("link");
$btn.click(function () {
$('#select-indexer-modal').modal('hide').on('hidden.bs.modal', function (e) {
displayIndexerSetup(id, link);
});
});
});
});
function displayConfiguredIndexersList(indexers) {
var indexersTemplate = Handlebars.compile($("#configured-indexer-table").html());
var indexersTable = $(indexersTemplate({ indexers: indexers }));
indexersTable.find('table').DataTable(
{
"pageLength": 100,
"lengthMenu": [[10, 20, 50, 100, 200, -1], [10, 20, 50, 100, 200, "All"]],
"order": [[0, "desc"]],
"columnDefs": [
{
"targets": 0,
"visible": true,
"searchable": true
},
{
"targets": 1,
"visible": true,
"searchable": false
}
]
});
$('#indexers').empty();
$('#indexers').append(indexersTable);
prepareTestButtons();
$('#indexers').fadeIn();
prepareSetupButtons();
prepareTestButtons();
prepareDeleteButtons();
prepareCopyButtons();
}
function displayUnconfiguredIndexersList(indexers) {
var indexersTemplate = Handlebars.compile($("#unconfigured-indexer-table").html());
var indexersTable = $(indexersTemplate({ indexers: indexers }));
indexersTable.find('table').DataTable(
{
"pageLength": 100,
"lengthMenu": [[10, 20, 50, 100, 200, -1], [10, 20, 50, 100, 200, "All"]],
"order": [[0, "desc"]],
"columnDefs": [
{
"targets": 0,
"visible": true,
"searchable": true
},
{
"targets": 1,
"visible": true,
"searchable": true
},
{
"targets": 2,
"visible": true,
"searchable": true
},
{
"targets": 3,
"visible": true,
"searchable": false
}
]
});
$('#unconfigured-indexers-template').empty();
$('#unconfigured-indexers-template').append(indexersTable);
}
function copyToClipboard(text) {
// create hidden text element, if it doesn't already exist
var targetId = "_hiddenCopyText_";
// must use a temporary form element for the selection and copy
target = document.getElementById(targetId);
if (!target) {
var target = document.createElement("textarea");
target.style.position = "absolute";
target.style.left = "-9999px";
target.style.top = "0";
target.id = targetId;
document.body.appendChild(target);
}
target.textContent = text;
// select the content
var currentFocus = document.activeElement;
target.focus();
target.setSelectionRange(0, target.value.length);
// copy the selection
var succeed;
try {
succeed = document.execCommand("copy");
} catch (e) {
succeed = false;
}
// restore original focus
if (currentFocus && typeof currentFocus.focus === "function") {
currentFocus.focus();
}
target.textContent = "";
return succeed;
}
function prepareCopyButtons() {
$(".indexer-button-copy").each(function (i, btn) {
var $btn = $(btn);
var title = $btn[0].title;
$btn.click(function () {
copyToClipboard(title);
});
});
}
function prepareDeleteButtons() {
@@ -129,22 +224,55 @@ function prepareSetupButtons() {
});
}
function updateTestState(id, state, message)
{
var btn = $(".indexer-button-test[data-id=" + id + "]");
if (message) {
btn.tooltip("hide");
btn.data('bs.tooltip', false).tooltip({ title: message });
}
var icon = btn.find("span");
icon.removeClass("glyphicon-ok test-success glyphicon-alert test-error glyphicon-refresh spinner test-inprogres");
if (state == "success") {
icon.addClass("glyphicon-ok test-success");
} else if (state == "error") {
icon.addClass("glyphicon-alert test-error");
} else if (state == "inprogres") {
icon.addClass("glyphicon-refresh test-inprogres spinner");
}
}
function testIndexer(id, notifyResult) {
updateTestState(id, "inprogres", null);
if (notifyResult)
doNotify("Test started for " + id, "info", "glyphicon glyphicon-transfer");
var jqxhr = $.post("test_indexer", JSON.stringify({ indexer: id }), function (data) {
if (data.result == "error") {
updateTestState(id, "error", data.error);
if (notifyResult)
doNotify("Test failed for " + id + ": \n" + data.error, "danger", "glyphicon glyphicon-alert");
}
else {
updateTestState(id, "success", "Test successful");
if (notifyResult)
doNotify("Test successful for " + id, "success", "glyphicon glyphicon-ok");
}
}).fail(function () {
doNotify("Error testing indexer, request to Jackett server error", "danger", "glyphicon glyphicon-alert");
});
}
function prepareTestButtons() {
$(".indexer-button-test").each(function (i, btn) {
var $btn = $(btn);
var id = $btn.data("id");
var state = $btn.data("state");
$btn.tooltip();
updateTestState(id, state, null);
$btn.click(function () {
doNotify("Test started for " + id, "info", "glyphicon glyphicon-transfer");
var jqxhr = $.post("test_indexer", JSON.stringify({ indexer: id }), function (data) {
if (data.result == "error") {
doNotify("Test failed for " + id + ": \n" + data.error, "danger", "glyphicon glyphicon-alert");
}
else {
doNotify("Test successful for " + id, "success", "glyphicon glyphicon-ok");
}
}).fail(function () {
doNotify("Error testing indexer, request to Jackett server error", "danger", "glyphicon glyphicon-alert");
});
testIndexer(id, true);
});
});
}
@@ -393,6 +521,32 @@ function bindUIButtons() {
return false;
});
$('#jackett-add-indexer').click(function () {
$("#modals").empty();
var dialog = $($("#select-indexer").html());
dialog.find('#unconfigured-indexers').html($('#unconfigured-indexers-template').html());
$("#modals").append(dialog);
dialog.modal("show");
$('.indexer-setup').each(function (i, btn) {
var $btn = $(btn);
var id = $btn.data("id");
var link = $btn.data("link");
$btn.click(function () {
$('#select-indexer-modal').modal('hide').on('hidden.bs.modal', function (e) {
displayIndexerSetup(id, link);
});
});
});
});
$("#jackett-test-all").click(function () {
$(".indexer-button-test").each(function (i, btn) {
var $btn = $(btn);
var id = $btn.data("id");
testIndexer(id, false);
});
});
$("#jackett-show-releases").click(function () {
var jqxhr = $.get("GetCache", function (data) {
var releaseTemplate = Handlebars.compile($("#jackett-releases").html());