mirror of
https://github.com/qbittorrent/qBittorrent.git
synced 2026-01-03 06:02:29 -06:00
Add a small delay before processing the key input of search boxes
PR #20465. Closes #20025. Closes #20235.
This commit is contained in:
@@ -695,6 +695,8 @@ window.addEventListener("DOMContentLoaded", function() {
|
||||
$('error_div').set('html', '');
|
||||
if (response) {
|
||||
clearTimeout(torrentsFilterInputTimer);
|
||||
torrentsFilterInputTimer = -1;
|
||||
|
||||
let torrentsTableSelectedRows;
|
||||
let update_categories = false;
|
||||
let updateTags = false;
|
||||
@@ -1449,18 +1451,14 @@ window.addEventListener("DOMContentLoaded", function() {
|
||||
$('torrentFilesFilterToolbar').addClass("invisible");
|
||||
};
|
||||
|
||||
let prevTorrentsFilterValue;
|
||||
let torrentsFilterInputTimer = null;
|
||||
// listen for changes to torrentsFilterInput
|
||||
$('torrentsFilterInput').addEvent('input', function() {
|
||||
const value = $('torrentsFilterInput').get("value");
|
||||
if (value !== prevTorrentsFilterValue) {
|
||||
prevTorrentsFilterValue = value;
|
||||
clearTimeout(torrentsFilterInputTimer);
|
||||
torrentsFilterInputTimer = setTimeout(function() {
|
||||
torrentsTable.updateTable(false);
|
||||
}, 400);
|
||||
}
|
||||
let torrentsFilterInputTimer = -1;
|
||||
$('torrentsFilterInput').addEvent('input', () => {
|
||||
clearTimeout(torrentsFilterInputTimer);
|
||||
torrentsFilterInputTimer = setTimeout(() => {
|
||||
torrentsFilterInputTimer = -1;
|
||||
torrentsTable.updateTable();
|
||||
}, window.qBittorrent.Misc.FILTER_INPUT_DELAY);
|
||||
});
|
||||
|
||||
$('transfersTabLink').addEvent('click', showTransfersTab);
|
||||
|
||||
@@ -175,12 +175,14 @@ window.qBittorrent.ContextMenu = (function() {
|
||||
|
||||
const touchstartEvent = e;
|
||||
this.touchstartTimer = setTimeout(function() {
|
||||
this.touchstartTimer = -1;
|
||||
this.triggerMenu(touchstartEvent, elem);
|
||||
}.bind(this), this.options.touchTimer);
|
||||
}.bind(this));
|
||||
elem.addEvent('touchend', function(e) {
|
||||
e.preventDefault();
|
||||
clearTimeout(this.touchstartTimer);
|
||||
this.touchstartTimer = -1;
|
||||
}.bind(this));
|
||||
},
|
||||
|
||||
|
||||
@@ -701,10 +701,7 @@ window.qBittorrent.DynamicTable = (function() {
|
||||
return null;
|
||||
},
|
||||
|
||||
updateTable: function(fullUpdate) {
|
||||
if (fullUpdate === undefined)
|
||||
fullUpdate = false;
|
||||
|
||||
updateTable: function(fullUpdate = false) {
|
||||
const rows = this.getFilteredAndSortedRows();
|
||||
|
||||
for (let i = 0; i < this.selectedRows.length; ++i)
|
||||
|
||||
@@ -47,6 +47,8 @@ window.qBittorrent.Misc = (function() {
|
||||
toFixedPointString: toFixedPointString,
|
||||
containsAllTerms: containsAllTerms,
|
||||
sleep: sleep,
|
||||
// variables
|
||||
FILTER_INPUT_DELAY: 400,
|
||||
MAX_ETA: 8640000
|
||||
};
|
||||
};
|
||||
|
||||
@@ -366,6 +366,7 @@ window.qBittorrent.PropFiles = (function() {
|
||||
},
|
||||
onSuccess: function(files) {
|
||||
clearTimeout(torrentFilesFilterInputTimer);
|
||||
torrentFilesFilterInputTimer = -1;
|
||||
|
||||
if (files.length === 0) {
|
||||
torrentFilesTable.clear();
|
||||
@@ -640,26 +641,27 @@ window.qBittorrent.PropFiles = (function() {
|
||||
if (torrentFilesTable.getSortedColumn() === null)
|
||||
torrentFilesTable.setSortedColumn('name');
|
||||
|
||||
let prevTorrentFilesFilterValue;
|
||||
let torrentFilesFilterInputTimer = null;
|
||||
// listen for changes to torrentFilesFilterInput
|
||||
$('torrentFilesFilterInput').addEvent('input', function() {
|
||||
const value = $('torrentFilesFilterInput').get("value");
|
||||
if (value !== prevTorrentFilesFilterValue) {
|
||||
prevTorrentFilesFilterValue = value;
|
||||
torrentFilesTable.setFilter(value);
|
||||
clearTimeout(torrentFilesFilterInputTimer);
|
||||
torrentFilesFilterInputTimer = setTimeout(function() {
|
||||
if (current_hash === "")
|
||||
return;
|
||||
torrentFilesTable.updateTable(false);
|
||||
let torrentFilesFilterInputTimer = -1;
|
||||
$('torrentFilesFilterInput').addEvent('input', () => {
|
||||
clearTimeout(torrentFilesFilterInputTimer);
|
||||
|
||||
if (value.trim() === "")
|
||||
collapseAllNodes();
|
||||
else
|
||||
expandAllNodes();
|
||||
}, 400);
|
||||
}
|
||||
const value = $('torrentFilesFilterInput').get("value");
|
||||
torrentFilesTable.setFilter(value);
|
||||
|
||||
torrentFilesFilterInputTimer = setTimeout(() => {
|
||||
torrentFilesFilterInputTimer = -1;
|
||||
|
||||
if (current_hash === "")
|
||||
return;
|
||||
|
||||
torrentFilesTable.updateTable();
|
||||
|
||||
if (value.trim() === "")
|
||||
collapseAllNodes();
|
||||
else
|
||||
expandAllNodes();
|
||||
}, window.qBittorrent.Misc.FILTER_INPUT_DELAY);
|
||||
});
|
||||
|
||||
/**
|
||||
|
||||
@@ -183,7 +183,7 @@
|
||||
};
|
||||
|
||||
let customSyncLogDataInterval = null;
|
||||
let logFilterTimer;
|
||||
let logFilterTimer = -1;
|
||||
let inputtedFilterText = "";
|
||||
let selectBox;
|
||||
let selectedLogLevels = JSON.parse(LocalPreferences.get('qbt_selected_log_levels')) || ['1', '2', '4', '8'];
|
||||
@@ -298,9 +298,11 @@
|
||||
const logFilterChanged = () => {
|
||||
clearTimeout(logFilterTimer);
|
||||
logFilterTimer = setTimeout((curTab) => {
|
||||
logFilterTimer = -1;
|
||||
|
||||
tableInfo[curTab].instance.updateTable(false);
|
||||
updateLabelCount(curTab);
|
||||
}, 400, currentSelectedTab);
|
||||
}, window.qBittorrent.Misc.FILTER_INPUT_DELAY, currentSelectedTab);
|
||||
};
|
||||
|
||||
const setCurrentTab = (tab) => {
|
||||
@@ -322,6 +324,7 @@
|
||||
}
|
||||
|
||||
clearTimeout(logFilterTimer);
|
||||
logFilterTimer = -1;
|
||||
load();
|
||||
|
||||
if (tableInfo[currentSelectedTab].instance.filterText !== getFilterText()) {
|
||||
@@ -378,6 +381,8 @@
|
||||
|
||||
if (response.length > 0) {
|
||||
clearTimeout(logFilterTimer);
|
||||
logFilterTimer = -1;
|
||||
|
||||
for (let i = 0; i < response.length; ++i) {
|
||||
let row;
|
||||
if (curTab === 'main') {
|
||||
|
||||
@@ -230,7 +230,6 @@
|
||||
max: 0.00,
|
||||
maxUnit: 3
|
||||
};
|
||||
let prevNameFilterValue;
|
||||
let selectedCategory = "QBT_TR(All categories)QBT_TR[CONTEXT=SearchEngineWidget]";
|
||||
let selectedPlugin = "all";
|
||||
let prevSelectedPlugin;
|
||||
@@ -255,18 +254,17 @@
|
||||
searchResultsTable.setup('searchResultsTableDiv', 'searchResultsTableFixedHeaderDiv', searchResultsTableContextMenu);
|
||||
getPlugins();
|
||||
|
||||
let searchInNameFilterTimer = null;
|
||||
// listen for changes to searchInNameFilter
|
||||
$('searchInNameFilter').addEvent('input', function() {
|
||||
const value = $('searchInNameFilter').get("value");
|
||||
if (value !== prevNameFilterValue) {
|
||||
prevNameFilterValue = value;
|
||||
clearTimeout(searchInNameFilterTimer);
|
||||
searchInNameFilterTimer = setTimeout(function() {
|
||||
searchText.filterPattern = value;
|
||||
searchFilterChanged();
|
||||
}, 400);
|
||||
}
|
||||
let searchInNameFilterTimer = -1;
|
||||
$('searchInNameFilter').addEvent('input', () => {
|
||||
clearTimeout(searchInNameFilterTimer);
|
||||
searchInNameFilterTimer = setTimeout(() => {
|
||||
searchInNameFilterTimer = -1;
|
||||
|
||||
const value = $('searchInNameFilter').get("value");
|
||||
searchText.filterPattern = value;
|
||||
searchFilterChanged();
|
||||
}, window.qBittorrent.Misc.FILTER_INPUT_DELAY);
|
||||
});
|
||||
|
||||
new Keyboard({
|
||||
|
||||
Reference in New Issue
Block a user