1
0
Fork 0
mirror of https://github.com/Jackett/Jackett synced 2025-02-25 15:42:48 +00:00

Add search buttons for indexers (#812)

This commit is contained in:
kaso17 2016-12-05 18:20:56 +01:00 committed by GitHub
parent 441023a336
commit 37dae02a1b
2 changed files with 165 additions and 141 deletions

View file

@ -106,6 +106,7 @@ function displayConfiguredIndexersList(indexers) {
$('#indexers').append(indexersTable); $('#indexers').append(indexersTable);
prepareTestButtons(); prepareTestButtons();
$('#indexers').fadeIn(); $('#indexers').fadeIn();
prepareSearchButtons();
prepareSetupButtons(); prepareSetupButtons();
prepareDeleteButtons(); prepareDeleteButtons();
prepareCopyButtons(); prepareCopyButtons();
@ -213,6 +214,16 @@ function prepareDeleteButtons() {
}); });
} }
function prepareSearchButtons() {
$('.indexer-button-search').each(function (i, btn) {
var $btn = $(btn);
var id = $btn.data("id");
$btn.click(function() {
showSearch(id);
});
});
}
function prepareSetupButtons() { function prepareSetupButtons() {
$('.indexer-setup').each(function (i, btn) { $('.indexer-setup').each(function (i, btn) {
var $btn = $(btn); var $btn = $(btn);
@ -500,6 +511,156 @@ function updateReleasesRow(row)
} }
} }
function showSearch(selectedIndexer) {
$('#select-indexer-modal').remove();
var jqxhr = $.get("get_indexers", function (data) {
var scope = {
items: data.items
};
var indexers = [];
indexers.push({
id: '', name: '-- All --'
});
for (var i = 0; i < data.items.length; i++) {
if (data.items[i].configured === true) {
indexers.push(data.items[i]);
}
}
var releaseTemplate = Handlebars.compile($("#jackett-search").html());
var releaseDialog = $(releaseTemplate({
indexers: indexers
}));
if (selectedIndexer)
releaseDialog.find("#searchTracker").val(selectedIndexer);
$("#modals").append(releaseDialog);
releaseDialog.modal("show");
releaseDialog.on('shown.bs.modal', function () {
releaseDialog.find('#searchquery').focus();
});
var setCategories = function (tracker, items) {
var cats = {};
for (var i = 0; i < items.length; i++) {
if (items[i].configured === true && (items[i].id === tracker || tracker === '')) {
indexers["'" + items[i].id + "'"] = items[i].name;
for (var prop in items[i].caps) {
cats[prop] = items[i].caps[prop];
}
}
}
var select = $('#searchCategory');
select.html("<option value=''>-- All --</option>");
$.each(cats, function (value, key) {
select.append($("<option></option>")
.attr("value", value).text(key + ' (' + value + ')'));
});
};
setCategories('', data.items);
$('#searchTracker').change(jQuery.proxy(function () {
var trackerId = $('#searchTracker').val();
setCategories(trackerId, this.items);
}, scope));
document.getElementById("searchquery")
.addEventListener("keyup", function (event) {
event.preventDefault();
if (event.keyCode == 13) {
document.getElementById("jackett-search-perform").click();
}
});
$('#jackett-search-perform').click(function () {
if ($('#jackett-search-perform').text().trim() !== 'Search trackers') {
// We are searchin already
return;
}
var queryObj = {
Query: releaseDialog.find('#searchquery').val(),
Category: releaseDialog.find('#searchCategory').val(),
Tracker: releaseDialog.find('#searchTracker').val().replace("'", "").replace("'", ""),
};
$('#searchResults').empty();
$('#jackett-search-perform').html($('#spinner').html());
var jqxhr = $.post("search", queryObj, function (data) {
$('#jackett-search-perform').html('Search trackers');
var resultsTemplate = Handlebars.compile($("#jackett-search-results").html());
var results = $('#searchResults');
results.html($(resultsTemplate(data)));
results.find('tr.jackett-search-results-row').each(function () { updateReleasesRow(this); });
results.find('table').DataTable(
{
"pageLength": 20,
"lengthMenu": [[10, 20, 50, -1], [10, 20, 50, "All"]],
"order": [[0, "desc"]],
"columnDefs": [
{
"targets": 0,
"visible": false,
"searchable": false,
"type": 'date'
},
{
"targets": 1,
"visible": true,
"searchable": false,
"iDataSort": 0
},
{
"targets": 4,
"visible": false,
"searchable": false,
"type": 'num'
},
{
"targets": 5,
"visible": true,
"searchable": false,
"iDataSort": 4
}
],
initComplete: function () {
var count = 0;
this.api().columns().every(function () {
count++;
if (count === 3 || count === 8) {
var column = this;
var select = $('<select><option value=""></option></select>')
.appendTo($(column.footer()).empty())
.on('change', function () {
var val = $.fn.dataTable.util.escapeRegex(
$(this).val()
);
column
.search(val ? '^' + val + '$' : '', true, false)
.draw();
});
column.data().unique().sort().each(function (d, j) {
select.append('<option value="' + d + '">' + d + '</option>')
});
}
});
}
});
}).fail(function () {
$('#jackett-search-perform').html('Search trackers');
doNotify("Request to Jackett server failed", "danger", "glyphicon glyphicon-alert");
});
});
}).fail(function () {
doNotify("Error loading indexers, request to Jackett server failed", "danger", "glyphicon glyphicon-alert");
});
}
function bindUIButtons() { function bindUIButtons() {
$('body').on('click', '.downloadlink', function (e, b) { $('body').on('click', '.downloadlink', function (e, b) {
$(e.target).addClass('jackettdownloaded'); $(e.target).addClass('jackettdownloaded');
@ -630,147 +791,7 @@ function bindUIButtons() {
}); });
$("#jackett-show-search").click(function () { $("#jackett-show-search").click(function () {
$('#select-indexer-modal').remove(); showSearch(null);
var jqxhr = $.get("get_indexers", function (data) {
var scope = {
items: data.items
};
var indexers = [];
indexers.push({ id: '', name: '-- All --' });
for (var i = 0; i < data.items.length; i++) {
if (data.items[i].configured === true) {
indexers.push(data.items[i]);
}
}
var releaseTemplate = Handlebars.compile($("#jackett-search").html());
var releaseDialog = $(releaseTemplate({ indexers: indexers }));
$("#modals").append(releaseDialog);
releaseDialog.modal("show");
releaseDialog.on('shown.bs.modal', function() {
releaseDialog.find('#searchquery').focus();
});
var setCategories = function (tracker, items) {
var cats = {};
for (var i = 0; i < items.length; i++) {
if (items[i].configured === true && (items[i].id === tracker || tracker === '')) {
indexers["'" + items[i].id + "'"] = items[i].name;
for (var prop in items[i].caps) {
cats[prop] = items[i].caps[prop];
}
}
}
var select = $('#searchCategory');
select.html("<option value=''>-- All --</option>");
$.each(cats, function (value, key) {
select.append($("<option></option>")
.attr("value", value).text(key + ' (' + value + ')'));
});
};
setCategories('', data.items);
$('#searchTracker').change(jQuery.proxy(function () {
var trackerId = $('#searchTracker').val();
setCategories(trackerId, this.items);
}, scope));
document.getElementById("searchquery")
.addEventListener("keyup", function (event) {
event.preventDefault();
if (event.keyCode == 13) {
document.getElementById("jackett-search-perform").click();
}
});
$('#jackett-search-perform').click(function () {
if ($('#jackett-search-perform').text().trim() !== 'Search trackers') {
// We are searchin already
return;
}
var queryObj = {
Query: releaseDialog.find('#searchquery').val(),
Category: releaseDialog.find('#searchCategory').val(),
Tracker: releaseDialog.find('#searchTracker').val().replace("'", "").replace("'", ""),
};
$('#searchResults').empty();
$('#jackett-search-perform').html($('#spinner').html());
var jqxhr = $.post("search", queryObj, function (data) {
$('#jackett-search-perform').html('Search trackers');
var resultsTemplate = Handlebars.compile($("#jackett-search-results").html());
var results = $('#searchResults');
results.html($(resultsTemplate(data)));
results.find('tr.jackett-search-results-row').each(function () { updateReleasesRow(this); });
results.find('table').DataTable(
{
"pageLength": 20,
"lengthMenu": [[10, 20, 50, -1], [10, 20, 50, "All"]],
"order": [[0, "desc"]],
"columnDefs": [
{
"targets": 0,
"visible": false,
"searchable": false,
"type": 'date'
},
{
"targets": 1,
"visible": true,
"searchable": false,
"iDataSort": 0
},
{
"targets": 4,
"visible": false,
"searchable": false,
"type": 'num'
},
{
"targets": 5,
"visible": true,
"searchable": false,
"iDataSort": 4
}
],
initComplete: function () {
var count = 0;
this.api().columns().every(function () {
count++;
if (count === 3 || count === 8) {
var column = this;
var select = $('<select><option value=""></option></select>')
.appendTo($(column.footer()).empty())
.on('change', function () {
var val = $.fn.dataTable.util.escapeRegex(
$(this).val()
);
column
.search(val ? '^' + val + '$' : '', true, false)
.draw();
});
column.data().unique().sort().each(function (d, j) {
select.append('<option value="' + d + '">' + d + '</option>')
});
}
});
}
});
}).fail(function () {
$('#jackett-search-perform').html('Search trackers');
doNotify("Request to Jackett server failed", "danger", "glyphicon glyphicon-alert");
});
});
}).fail(function () {
doNotify("Error loading indexers, request to Jackett server failed", "danger", "glyphicon glyphicon-alert");
});
}); });
$("#view-jackett-logs").click(function () { $("#view-jackett-logs").click(function () {

View file

@ -194,6 +194,9 @@
<button title="{{torznab_host}}" type="button" class="indexer-button-copy btn btn-xs btn-info">Copy Torznab Feed</button> <button title="{{torznab_host}}" type="button" class="indexer-button-copy btn btn-xs btn-info">Copy Torznab Feed</button>
<button title="{{potato_host}}" type="button" class="indexer-button-copy btn btn-xs btn-info{{#unless potatoenabled}} disabled{{/unless}}">Copy Potato Feed</button> <button title="{{potato_host}}" type="button" class="indexer-button-copy btn btn-xs btn-info{{#unless potatoenabled}} disabled{{/unless}}">Copy Potato Feed</button>
<button title="Search" class="btn btn-success btn-xs indexer-button-search" data-id="{{id}}">
<span class="glyphicon glyphicon-search" aria-hidden="true"></span>
</button>
<button title="Configure" class="btn btn-primary btn-xs indexer-setup" data-id="{{id}}" data-link="{{site_link}}"> <button title="Configure" class="btn btn-primary btn-xs indexer-setup" data-id="{{id}}" data-link="{{site_link}}">
<span class="glyphicon glyphicon-wrench" aria-hidden="true"></span> <span class="glyphicon glyphicon-wrench" aria-hidden="true"></span>
</button> </button>