mirror of
https://github.com/Jackett/Jackett.git
synced 2025-09-17 17:34:09 +02:00
Co-authored-by: garfield69 <garfield69@outlook.com>
This commit is contained in:
@@ -1238,6 +1238,59 @@ function clearSearchResultTable(element) {
|
|||||||
element.find("#jackett-search-results-datatable_paginate").empty();
|
element.find("#jackett-search-results-datatable_paginate").empty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getSavedPresets() {
|
||||||
|
var lsKey = "jackett_saved_presets";
|
||||||
|
if (JSON !== undefined && localStorage !== undefined) {
|
||||||
|
var lsSavedPresets = localStorage.getItem(lsKey);
|
||||||
|
var presets = lsSavedPresets !== null ? JSON.parse(lsSavedPresets) : [];
|
||||||
|
return presets;
|
||||||
|
} else {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function setSavedPresets(presets) {
|
||||||
|
var lsKey = "jackett_saved_presets";
|
||||||
|
if (JSON !== undefined && localStorage !== undefined) {
|
||||||
|
localStorage.setItem(lsKey, JSON.stringify(presets));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function setSavePresetsButtonState(table, element, state = false) {
|
||||||
|
var button = element.find("button[id=jackett-search-results-datatable_savepreset_button]")
|
||||||
|
if (state) {
|
||||||
|
button.attr("class", "btn btn-danger btn-sm");
|
||||||
|
button.on("click", function () {
|
||||||
|
var inputSearch = element.find("input[type=search]");
|
||||||
|
var preset = inputSearch.val().trim();
|
||||||
|
if (preset !== "") {
|
||||||
|
var presets = getSavedPresets();
|
||||||
|
if (presets.includes(preset)) {
|
||||||
|
presets = presets.filter(item => item != preset);
|
||||||
|
setSavedPresets(presets);
|
||||||
|
var datalist = element.find("datalist[id=jackett-search-saved-presets]")
|
||||||
|
datalist.empty();
|
||||||
|
table.api().draw();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
button.attr("class", "btn btn-success btn-sm");
|
||||||
|
button.on("click", function () {
|
||||||
|
var inputSearch = element.find("input[type=search]");
|
||||||
|
var preset = inputSearch.val().trim();
|
||||||
|
if (preset !== "") {
|
||||||
|
var presets = getSavedPresets();
|
||||||
|
if (!presets.includes(preset)) {
|
||||||
|
presets.push(preset);
|
||||||
|
setSavedPresets(presets);
|
||||||
|
table.api().draw();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// dataTable dead torrent filter
|
// dataTable dead torrent filter
|
||||||
$.fn.dataTable.ext.search = [
|
$.fn.dataTable.ext.search = [
|
||||||
function (settings, data, dataIndex) {
|
function (settings, data, dataIndex) {
|
||||||
@@ -1313,16 +1366,34 @@ function updateSearchResultTable(element, results) {
|
|||||||
],
|
],
|
||||||
fnPreDrawCallback: function () {
|
fnPreDrawCallback: function () {
|
||||||
var table = this;
|
var table = this;
|
||||||
|
var datalist = element.find("datalist[id=jackett-search-saved-presets]")
|
||||||
|
|
||||||
|
var presets = getSavedPresets();
|
||||||
|
if (presets.length > 0) {
|
||||||
|
datalist.empty();
|
||||||
|
presets.forEach(preset => {
|
||||||
|
var option = $('<option></option>');
|
||||||
|
option.attr("value", preset);
|
||||||
|
datalist.append(option);
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
var inputSearch = element.find("input[type=search]");
|
var inputSearch = element.find("input[type=search]");
|
||||||
|
setSavePresetsButtonState(table, element, presets.includes(inputSearch.val().trim()));
|
||||||
|
|
||||||
if (!inputSearch.attr("custom")) {
|
if (!inputSearch.attr("custom")) {
|
||||||
var newInputSearch = inputSearch.clone();
|
var newInputSearch = inputSearch.clone();
|
||||||
newInputSearch.attr("custom", "true");
|
newInputSearch.attr("custom", "true");
|
||||||
newInputSearch.attr("data-toggle", "tooltip");
|
newInputSearch.attr("data-toggle", "tooltip");
|
||||||
newInputSearch.attr("title", "Search query consists of several keywords.\nKeyword starting with \"-\" is considered a negative match.\nKeywords separated by \"|\" are considered as OR filters.");
|
newInputSearch.attr("title", "Search query consists of several keywords.\nKeyword starting with \"-\" is considered a negative match.\nKeywords separated by \"|\" are considered as OR filters.");
|
||||||
|
newInputSearch.attr("list", "jackett-search-saved-presets");
|
||||||
newInputSearch.on("input", function () {
|
newInputSearch.on("input", function () {
|
||||||
var newKeywords = [];
|
var newKeywords = [];
|
||||||
var filterTextKeywords = $(this).val().split(" ");
|
var filterText = $(this).val().trim();
|
||||||
|
var presets = getSavedPresets();
|
||||||
|
setSavePresetsButtonState(table, element, presets.includes(filterText));
|
||||||
|
|
||||||
|
var filterTextKeywords = filterText.split(" ");
|
||||||
$.each(filterTextKeywords, function (index, keyword) {
|
$.each(filterTextKeywords, function (index, keyword) {
|
||||||
if (keyword === "" || keyword === "+" || keyword === "-")
|
if (keyword === "" || keyword === "+" || keyword === "-")
|
||||||
return;
|
return;
|
||||||
@@ -1352,6 +1423,10 @@ function updateSearchResultTable(element, results) {
|
|||||||
table.api().draw();
|
table.api().draw();
|
||||||
});
|
});
|
||||||
deadfiltercheckbox.prop('checked', settings.deadfilter);
|
deadfiltercheckbox.prop('checked', settings.deadfilter);
|
||||||
|
|
||||||
|
savepresetlabel = $('<button id="jackett-search-results-datatable_savepreset_button" title="Save Search Preset" class="btn btn-success btn-sm" style="margin-left: 10px;"><span class="fa fa-save"></span></button>');
|
||||||
|
var searchfilterdiv = element.find("#jackett-search-results-datatable_filter");
|
||||||
|
searchfilterdiv.append(savepresetlabel);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
initComplete: function () {
|
initComplete: function () {
|
||||||
|
@@ -565,6 +565,7 @@
|
|||||||
{{/if}}
|
{{/if}}
|
||||||
, {{/each}}
|
, {{/each}}
|
||||||
</p>
|
</p>
|
||||||
|
<datalist id="jackett-search-saved-presets"></datalist>
|
||||||
<table id="jackett-search-results-datatable" class="dataTable compact cell-border hover stripe">
|
<table id="jackett-search-results-datatable" class="dataTable compact cell-border hover stripe">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -754,6 +755,6 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script type="text/javascript" src="../libs/api.js?changed=2017083001"></script>
|
<script type="text/javascript" src="../libs/api.js?changed=2017083001"></script>
|
||||||
<script type="text/javascript" src="../custom.js?changed=20221002"></script>
|
<script type="text/javascript" src="../custom.js?changed=20221003"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
Reference in New Issue
Block a user