mirror of https://github.com/Jackett/Jackett
Co-authored-by: garfield69 <garfield69@outlook.com>
This commit is contained in:
parent
056727b36a
commit
1a3e846a0f
|
@ -1238,6 +1238,59 @@ function clearSearchResultTable(element) {
|
|||
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
|
||||
$.fn.dataTable.ext.search = [
|
||||
function (settings, data, dataIndex) {
|
||||
|
@ -1313,16 +1366,34 @@ function updateSearchResultTable(element, results) {
|
|||
],
|
||||
fnPreDrawCallback: function () {
|
||||
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]");
|
||||
setSavePresetsButtonState(table, element, presets.includes(inputSearch.val().trim()));
|
||||
|
||||
if (!inputSearch.attr("custom")) {
|
||||
var newInputSearch = inputSearch.clone();
|
||||
newInputSearch.attr("custom", "true");
|
||||
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("list", "jackett-search-saved-presets");
|
||||
newInputSearch.on("input", function () {
|
||||
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) {
|
||||
if (keyword === "" || keyword === "+" || keyword === "-")
|
||||
return;
|
||||
|
@ -1352,6 +1423,10 @@ function updateSearchResultTable(element, results) {
|
|||
table.api().draw();
|
||||
});
|
||||
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 () {
|
||||
|
|
|
@ -565,6 +565,7 @@
|
|||
{{/if}}
|
||||
, {{/each}}
|
||||
</p>
|
||||
<datalist id="jackett-search-saved-presets"></datalist>
|
||||
<table id="jackett-search-results-datatable" class="dataTable compact cell-border hover stripe">
|
||||
<thead>
|
||||
<tr>
|
||||
|
@ -754,6 +755,6 @@
|
|||
</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>
|
||||
</html>
|
||||
|
|
Loading…
Reference in New Issue