mirror of
https://github.com/qbittorrent/qBittorrent.git
synced 2024-11-21 16:55:46 +03:00
WebUI: prefer arrow functions whenever applicable
Compared to plain function, arrow function is simpler to understand (without bindings to `this`, `arguments`, `super`) and to read. Now, plain function will only be used when this object is required. PR #21691.
This commit is contained in:
parent
7af6ac18aa
commit
72cbc83569
49 changed files with 574 additions and 570 deletions
|
@ -1,6 +1,7 @@
|
|||
import Globals from "globals";
|
||||
import Html from "eslint-plugin-html";
|
||||
import Js from "@eslint/js";
|
||||
import PreferArrowFunctions from "eslint-plugin-prefer-arrow-functions";
|
||||
import Stylistic from "@stylistic/eslint-plugin";
|
||||
import * as RegexpPlugin from "eslint-plugin-regexp";
|
||||
|
||||
|
@ -22,6 +23,7 @@ export default [
|
|||
},
|
||||
plugins: {
|
||||
Html,
|
||||
PreferArrowFunctions,
|
||||
RegexpPlugin,
|
||||
Stylistic
|
||||
},
|
||||
|
@ -36,6 +38,7 @@ export default [
|
|||
"prefer-arrow-callback": "error",
|
||||
"prefer-const": "error",
|
||||
"radix": "error",
|
||||
"PreferArrowFunctions/prefer-arrow-functions": "error",
|
||||
"Stylistic/no-mixed-operators": [
|
||||
"error",
|
||||
{
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
"@stylistic/eslint-plugin": "*",
|
||||
"eslint": "*",
|
||||
"eslint-plugin-html": "*",
|
||||
"eslint-plugin-prefer-arrow-functions": "*",
|
||||
"eslint-plugin-regexp": "*",
|
||||
"html-validate": "*",
|
||||
"js-beautify": "*",
|
||||
|
|
|
@ -46,10 +46,10 @@
|
|||
hashes: hash,
|
||||
peers: peers.join("|")
|
||||
},
|
||||
onFailure: function() {
|
||||
onFailure: () => {
|
||||
alert("QBT_TR(Unable to add peers. Please ensure you are adhering to the IP:port format.)QBT_TR[CONTEXT=HttpServer]");
|
||||
},
|
||||
onSuccess: function() {
|
||||
onSuccess: () => {
|
||||
window.parent.qBittorrent.Client.closeWindows();
|
||||
}
|
||||
}).send();
|
||||
|
|
|
@ -38,7 +38,7 @@
|
|||
hash: hash,
|
||||
urls: $("trackersUrls").value
|
||||
},
|
||||
onComplete: function() {
|
||||
onComplete: () => {
|
||||
window.parent.qBittorrent.Client.closeWindows();
|
||||
}
|
||||
}).send();
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
hash: hash,
|
||||
urls: $("urls").value.split("\n").map(w => encodeURIComponent(w.trim())).filter(w => (w.length > 0)).join("|")
|
||||
},
|
||||
onComplete: function() {
|
||||
onComplete: () => {
|
||||
window.parent.qBittorrent.Client.closeWindows();
|
||||
}
|
||||
}).send();
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
hash: "*",
|
||||
urls: urls,
|
||||
},
|
||||
onComplete: function() {
|
||||
onComplete: () => {
|
||||
window.parent.qBittorrent.Client.closeWindows();
|
||||
}
|
||||
}).send();
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
"use strict";
|
||||
|
||||
const hashes = new URI().getData("hashes").split("|");
|
||||
const setDlLimit = function() {
|
||||
const setDlLimit = () => {
|
||||
const limit = $("dllimitUpdatevalue").value.toInt() * 1024;
|
||||
if (hashes[0] === "global") {
|
||||
new Request({
|
||||
|
@ -41,7 +41,7 @@
|
|||
data: {
|
||||
"limit": limit
|
||||
},
|
||||
onComplete: function() {
|
||||
onComplete: () => {
|
||||
window.parent.updateMainData();
|
||||
window.parent.qBittorrent.Client.closeWindows();
|
||||
}
|
||||
|
@ -55,7 +55,7 @@
|
|||
"hashes": hashes.join("|"),
|
||||
"limit": limit
|
||||
},
|
||||
onComplete: function() {
|
||||
onComplete: () => {
|
||||
window.parent.qBittorrent.Client.closeWindows();
|
||||
}
|
||||
}).send();
|
||||
|
|
|
@ -49,7 +49,7 @@
|
|||
origUrl: currentUrl,
|
||||
newUrl: $("trackerUrl").value
|
||||
},
|
||||
onComplete: function() {
|
||||
onComplete: () => {
|
||||
window.parent.qBittorrent.Client.closeWindows();
|
||||
}
|
||||
}).send();
|
||||
|
|
|
@ -44,7 +44,7 @@
|
|||
origUrl: origUrl,
|
||||
newUrl: encodeURIComponent($("url").value.trim()),
|
||||
},
|
||||
onComplete: function() {
|
||||
onComplete: () => {
|
||||
window.parent.qBittorrent.Client.closeWindows();
|
||||
}
|
||||
}).send();
|
||||
|
|
|
@ -60,7 +60,7 @@
|
|||
const savePath = $("savePath").value.trim();
|
||||
const categoryName = $("categoryName").value.trim();
|
||||
|
||||
const verifyCategoryName = function(name) {
|
||||
const verifyCategoryName = (name) => {
|
||||
if ((name === null) || (name === ""))
|
||||
return false;
|
||||
if (name.match("^([^\\\\\\/]|[^\\\\\\/]([^\\\\\\/]|\\/(?=[^\\/]))*[^\\\\\\/])$") === null) {
|
||||
|
@ -82,7 +82,7 @@
|
|||
category: categoryName,
|
||||
savePath: savePath
|
||||
},
|
||||
onSuccess: function() {
|
||||
onSuccess: () => {
|
||||
new Request({
|
||||
url: "api/v2/torrents/setCategory",
|
||||
method: "post",
|
||||
|
@ -90,16 +90,16 @@
|
|||
hashes: uriHashes,
|
||||
category: categoryName
|
||||
},
|
||||
onSuccess: function() {
|
||||
onSuccess: () => {
|
||||
window.parent.updateMainData();
|
||||
window.parent.qBittorrent.Client.closeWindows();
|
||||
},
|
||||
onFailure: function() {
|
||||
onFailure: () => {
|
||||
alert("QBT_TR(Unable to set category)QBT_TR[CONTEXT=Category]");
|
||||
}
|
||||
}).send();
|
||||
},
|
||||
onFailure: function() {
|
||||
onFailure: () => {
|
||||
alert("QBT_TR(Unable to create category)QBT_TR[CONTEXT=Category] " + window.qBittorrent.Misc.escapeHtml(categoryName));
|
||||
}
|
||||
}).send();
|
||||
|
@ -116,11 +116,11 @@
|
|||
category: categoryName,
|
||||
savePath: savePath
|
||||
},
|
||||
onSuccess: function() {
|
||||
onSuccess: () => {
|
||||
window.parent.updateMainData();
|
||||
window.parent.qBittorrent.Client.closeWindows();
|
||||
},
|
||||
onFailure: function() {
|
||||
onFailure: () => {
|
||||
alert("QBT_TR(Unable to create category)QBT_TR[CONTEXT=Category]");
|
||||
}
|
||||
}).send();
|
||||
|
@ -133,11 +133,11 @@
|
|||
category: uriCategoryName, // category name can't be changed
|
||||
savePath: savePath
|
||||
},
|
||||
onSuccess: function() {
|
||||
onSuccess: () => {
|
||||
window.parent.updateMainData();
|
||||
window.parent.qBittorrent.Client.closeWindows();
|
||||
},
|
||||
onFailure: function() {
|
||||
onFailure: () => {
|
||||
alert("QBT_TR(Unable to edit category)QBT_TR[CONTEXT=Category]");
|
||||
}
|
||||
}).send();
|
||||
|
|
|
@ -44,7 +44,7 @@
|
|||
|
||||
const tagName = $("tagName").value.trim();
|
||||
|
||||
const verifyTagName = function(name) {
|
||||
const verifyTagName = (name) => {
|
||||
if ((name === null) || (name === ""))
|
||||
return false;
|
||||
if (name.includes(",")) {
|
||||
|
@ -66,7 +66,7 @@
|
|||
hashes: uriHashes,
|
||||
tags: tagName,
|
||||
},
|
||||
onComplete: function() {
|
||||
onComplete: () => {
|
||||
window.parent.qBittorrent.Client.closeWindows();
|
||||
}
|
||||
}).send();
|
||||
|
@ -82,7 +82,7 @@
|
|||
data: {
|
||||
tags: tagName,
|
||||
},
|
||||
onComplete: function() {
|
||||
onComplete: () => {
|
||||
window.parent.qBittorrent.Client.closeWindows();
|
||||
}
|
||||
}).send();
|
||||
|
|
|
@ -54,7 +54,7 @@
|
|||
hash: hash,
|
||||
name: name
|
||||
},
|
||||
onComplete: function() {
|
||||
onComplete: () => {
|
||||
window.parent.qBittorrent.Client.closeWindows();
|
||||
}
|
||||
}).send();
|
||||
|
|
|
@ -71,10 +71,10 @@
|
|||
oldPath: oldPath,
|
||||
newPath: newPath
|
||||
},
|
||||
onSuccess: function() {
|
||||
onSuccess: () => {
|
||||
window.parent.qBittorrent.Client.closeWindows();
|
||||
},
|
||||
onFailure: function() {
|
||||
onFailure: () => {
|
||||
alert("QBT_TR(Failed to update name)QBT_TR[CONTEXT=HttpServer]");
|
||||
$("renameButton").disabled = false;
|
||||
}
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
targets: "#bulkRenameFilesTableDiv tr",
|
||||
menu: "multiRenameFilesMenu",
|
||||
actions: {
|
||||
ToggleSelection: function(element, ref) {
|
||||
ToggleSelection: (element, ref) => {
|
||||
const rowId = parseInt(element.getAttribute("data-row-id"), 10);
|
||||
const row = bulkRenameFilesTable.getNode(rowId);
|
||||
const checkState = (row.checked === 1) ? 0 : 1;
|
||||
|
@ -128,7 +128,7 @@
|
|||
}
|
||||
|
||||
// Fires every time a row's selection changes
|
||||
bulkRenameFilesTable.onRowSelectionChange = function(row) {
|
||||
bulkRenameFilesTable.onRowSelectionChange = (row) => {
|
||||
fileRenamer.selectedFiles = bulkRenameFilesTable.getSelectedRows();
|
||||
fileRenamer.update();
|
||||
};
|
||||
|
@ -162,7 +162,7 @@
|
|||
/**
|
||||
* Fires every time the filerenamer gets changed, it will update all the rows in the table
|
||||
*/
|
||||
fileRenamer.onChanged = function(matchedRows) {
|
||||
fileRenamer.onChanged = (matchedRows) => {
|
||||
// Clear renamed column
|
||||
document
|
||||
.querySelectorAll("span[id^='filesTablefileRenamed']")
|
||||
|
@ -176,7 +176,7 @@
|
|||
$("filesTablefileRenamed" + row.rowId).textContent = row.renamed;
|
||||
}
|
||||
};
|
||||
fileRenamer.onInvalidRegex = function(err) {
|
||||
fileRenamer.onInvalidRegex = (err) => {
|
||||
$("multiRenameSearch").style["border-color"] = "#CC0033";
|
||||
};
|
||||
|
||||
|
@ -239,7 +239,7 @@
|
|||
$("rename_error").textContent = "";
|
||||
fileRenamer.rename();
|
||||
});
|
||||
fileRenamer.onRenamed = function(rows) {
|
||||
fileRenamer.onRenamed = (rows) => {
|
||||
// Disable Search Options
|
||||
$("multiRenameSearch").disabled = false;
|
||||
$("use_regex_search").disabled = false;
|
||||
|
@ -268,7 +268,7 @@
|
|||
}
|
||||
setupTable(selectedRows);
|
||||
};
|
||||
fileRenamer.onRenameError = function(err, row) {
|
||||
fileRenamer.onRenameError = (err, row) => {
|
||||
if (err.xhr.status === 409)
|
||||
$("rename_error").textContent = `QBT_TR(Rename failed: file or folder already exists)QBT_TR[CONTEXT=PropertiesWidget] \`${row.renamed}\``;
|
||||
};
|
||||
|
@ -294,7 +294,7 @@
|
|||
$("bulkRenameFilesTableFixedHeaderDiv").scrollLeft = length;
|
||||
};
|
||||
|
||||
const handleTorrentFiles = function(files, selectedRows) {
|
||||
const handleTorrentFiles = (files, selectedRows) => {
|
||||
const rows = files.map((file, index) => {
|
||||
|
||||
const row = {
|
||||
|
@ -312,7 +312,7 @@
|
|||
addRowsToTable(rows, selectedRows);
|
||||
};
|
||||
|
||||
const addRowsToTable = function(rows, selectedRows) {
|
||||
const addRowsToTable = (rows, selectedRows) => {
|
||||
let rowId = 0;
|
||||
const rootNode = new window.qBittorrent.FileTree.FolderNode();
|
||||
rootNode.autoCheckFolders = false;
|
||||
|
@ -379,12 +379,12 @@
|
|||
fileRenamer.update();
|
||||
};
|
||||
|
||||
const setupTable = function(selectedRows) {
|
||||
const setupTable = (selectedRows) => {
|
||||
new Request.JSON({
|
||||
url: new URI("api/v2/torrents/files?hash=" + data.hash),
|
||||
noCache: true,
|
||||
method: "get",
|
||||
onSuccess: function(files) {
|
||||
onSuccess: (files) => {
|
||||
if (files.length === 0)
|
||||
bulkRenameFilesTable.clear();
|
||||
else
|
||||
|
|
|
@ -44,18 +44,18 @@ window.qBittorrent.Client ??= (() => {
|
|||
};
|
||||
};
|
||||
|
||||
const closeWindow = function(windowID) {
|
||||
const closeWindow = (windowID) => {
|
||||
const window = document.getElementById(windowID);
|
||||
if (!window)
|
||||
return;
|
||||
MochaUI.closeWindow(window);
|
||||
};
|
||||
|
||||
const closeWindows = function() {
|
||||
const closeWindows = () => {
|
||||
MochaUI.closeAll();
|
||||
};
|
||||
|
||||
const getSyncMainDataInterval = function() {
|
||||
const getSyncMainDataInterval = () => {
|
||||
return customSyncMainDataInterval ? customSyncMainDataInterval : serverSyncMainDataInterval;
|
||||
};
|
||||
|
||||
|
@ -81,22 +81,22 @@ window.qBittorrent.Client ??= (() => {
|
|||
let showingRssReader = false;
|
||||
let showingLogViewer = false;
|
||||
|
||||
const showSearchEngine = function(bool) {
|
||||
const showSearchEngine = (bool) => {
|
||||
showingSearchEngine = bool;
|
||||
};
|
||||
const showRssReader = function(bool) {
|
||||
const showRssReader = (bool) => {
|
||||
showingRssReader = bool;
|
||||
};
|
||||
const showLogViewer = function(bool) {
|
||||
const showLogViewer = (bool) => {
|
||||
showingLogViewer = bool;
|
||||
};
|
||||
const isShowSearchEngine = function() {
|
||||
const isShowSearchEngine = () => {
|
||||
return showingSearchEngine;
|
||||
};
|
||||
const isShowRssReader = function() {
|
||||
const isShowRssReader = () => {
|
||||
return showingRssReader;
|
||||
};
|
||||
const isShowLogViewer = function() {
|
||||
const isShowLogViewer = () => {
|
||||
return showingLogViewer;
|
||||
};
|
||||
|
||||
|
@ -108,9 +108,9 @@ Object.freeze(window.qBittorrent.Client);
|
|||
|
||||
this.torrentsTable = new window.qBittorrent.DynamicTable.TorrentsTable();
|
||||
|
||||
let updatePropertiesPanel = function() {};
|
||||
let updatePropertiesPanel = () => {};
|
||||
|
||||
this.updateMainData = function() {};
|
||||
this.updateMainData = () => {};
|
||||
let alternativeSpeedLimits = false;
|
||||
let queueing_enabled = true;
|
||||
let serverSyncMainDataInterval = 1500;
|
||||
|
@ -126,7 +126,7 @@ const CATEGORIES_UNCATEGORIZED = 2;
|
|||
const category_list = new Map();
|
||||
|
||||
let selectedCategory = Number(LocalPreferences.get("selected_category", CATEGORIES_ALL));
|
||||
let setCategoryFilter = function() {};
|
||||
let setCategoryFilter = () => {};
|
||||
|
||||
/* Tags filter */
|
||||
const TAGS_ALL = 1;
|
||||
|
@ -135,7 +135,7 @@ const TAGS_UNTAGGED = 2;
|
|||
const tagList = new Map();
|
||||
|
||||
let selectedTag = Number(LocalPreferences.get("selected_tag", TAGS_ALL));
|
||||
let setTagFilter = function() {};
|
||||
let setTagFilter = () => {};
|
||||
|
||||
/* Trackers filter */
|
||||
const TRACKERS_ALL = 1;
|
||||
|
@ -145,19 +145,19 @@ const TRACKERS_TRACKERLESS = 2;
|
|||
const trackerList = new Map();
|
||||
|
||||
let selectedTracker = Number(LocalPreferences.get("selected_tracker", TRACKERS_ALL));
|
||||
let setTrackerFilter = function() {};
|
||||
let setTrackerFilter = () => {};
|
||||
|
||||
/* All filters */
|
||||
let selectedStatus = LocalPreferences.get("selected_filter", "all");
|
||||
let setStatusFilter = function() {};
|
||||
let toggleFilterDisplay = function() {};
|
||||
let setStatusFilter = () => {};
|
||||
let toggleFilterDisplay = () => {};
|
||||
|
||||
window.addEventListener("DOMContentLoaded", () => {
|
||||
let isSearchPanelLoaded = false;
|
||||
let isLogPanelLoaded = false;
|
||||
let isRssPanelLoaded = false;
|
||||
|
||||
const saveColumnSizes = function() {
|
||||
const saveColumnSizes = () => {
|
||||
const filters_width = $("Filters").getSize().x;
|
||||
LocalPreferences.set("filters_width", filters_width);
|
||||
const properties_height_rel = $("propertiesPanel").getSize().y / Window.getSize().y;
|
||||
|
@ -175,7 +175,7 @@ window.addEventListener("DOMContentLoaded", () => {
|
|||
MochaUI.Desktop.desktop.style.visibility = "visible"; */
|
||||
MochaUI.Desktop.initialize();
|
||||
|
||||
const buildTransfersTab = function() {
|
||||
const buildTransfersTab = () => {
|
||||
new MochaUI.Column({
|
||||
id: "filtersColumn",
|
||||
placement: "left",
|
||||
|
@ -191,7 +191,7 @@ window.addEventListener("DOMContentLoaded", () => {
|
|||
});
|
||||
};
|
||||
|
||||
const buildSearchTab = function() {
|
||||
const buildSearchTab = () => {
|
||||
new MochaUI.Column({
|
||||
id: "searchTabColumn",
|
||||
placement: "main",
|
||||
|
@ -202,7 +202,7 @@ window.addEventListener("DOMContentLoaded", () => {
|
|||
$("searchTabColumn").addClass("invisible");
|
||||
};
|
||||
|
||||
const buildRssTab = function() {
|
||||
const buildRssTab = () => {
|
||||
new MochaUI.Column({
|
||||
id: "rssTabColumn",
|
||||
placement: "main",
|
||||
|
@ -213,7 +213,7 @@ window.addEventListener("DOMContentLoaded", () => {
|
|||
$("rssTabColumn").addClass("invisible");
|
||||
};
|
||||
|
||||
const buildLogTab = function() {
|
||||
const buildLogTab = () => {
|
||||
new MochaUI.Column({
|
||||
id: "logTabColumn",
|
||||
placement: "main",
|
||||
|
@ -230,7 +230,7 @@ window.addEventListener("DOMContentLoaded", () => {
|
|||
buildLogTab();
|
||||
MochaUI.initializeTabs("mainWindowTabsList");
|
||||
|
||||
const handleFilterSelectionChange = function(prevSelectedTorrent, currSelectedTorrent) {
|
||||
const handleFilterSelectionChange = (prevSelectedTorrent, currSelectedTorrent) => {
|
||||
// clear properties panels when filter changes (e.g. selected torrent is no longer visible)
|
||||
if (prevSelectedTorrent !== currSelectedTorrent) {
|
||||
window.qBittorrent.PropGeneral.clear();
|
||||
|
@ -241,7 +241,7 @@ window.addEventListener("DOMContentLoaded", () => {
|
|||
}
|
||||
};
|
||||
|
||||
setStatusFilter = function(name) {
|
||||
setStatusFilter = (name) => {
|
||||
const currentHash = torrentsTable.getCurrentTorrentID();
|
||||
|
||||
LocalPreferences.set("selected_filter", name);
|
||||
|
@ -253,7 +253,7 @@ window.addEventListener("DOMContentLoaded", () => {
|
|||
handleFilterSelectionChange(currentHash, newHash);
|
||||
};
|
||||
|
||||
setCategoryFilter = function(hash) {
|
||||
setCategoryFilter = (hash) => {
|
||||
const currentHash = torrentsTable.getCurrentTorrentID();
|
||||
|
||||
LocalPreferences.set("selected_category", hash);
|
||||
|
@ -265,7 +265,7 @@ window.addEventListener("DOMContentLoaded", () => {
|
|||
handleFilterSelectionChange(currentHash, newHash);
|
||||
};
|
||||
|
||||
setTagFilter = function(hash) {
|
||||
setTagFilter = (hash) => {
|
||||
const currentHash = torrentsTable.getCurrentTorrentID();
|
||||
|
||||
LocalPreferences.set("selected_tag", hash);
|
||||
|
@ -277,7 +277,7 @@ window.addEventListener("DOMContentLoaded", () => {
|
|||
handleFilterSelectionChange(currentHash, newHash);
|
||||
};
|
||||
|
||||
setTrackerFilter = function(hash) {
|
||||
setTrackerFilter = (hash) => {
|
||||
const currentHash = torrentsTable.getCurrentTorrentID();
|
||||
|
||||
LocalPreferences.set("selected_tracker", hash);
|
||||
|
@ -289,7 +289,7 @@ window.addEventListener("DOMContentLoaded", () => {
|
|||
handleFilterSelectionChange(currentHash, newHash);
|
||||
};
|
||||
|
||||
toggleFilterDisplay = function(filterListID) {
|
||||
toggleFilterDisplay = (filterListID) => {
|
||||
const filterList = document.getElementById(filterListID);
|
||||
const filterTitle = filterList.previousElementSibling;
|
||||
const toggleIcon = filterTitle.firstElementChild;
|
||||
|
@ -309,7 +309,7 @@ window.addEventListener("DOMContentLoaded", () => {
|
|||
},
|
||||
loadMethod: "xhr",
|
||||
contentURL: "views/filters.html",
|
||||
onContentLoaded: function() {
|
||||
onContentLoaded: () => {
|
||||
highlightSelectedStatus();
|
||||
},
|
||||
column: "filtersColumn",
|
||||
|
@ -354,7 +354,7 @@ window.addEventListener("DOMContentLoaded", () => {
|
|||
let syncMainDataLastResponseId = 0;
|
||||
const serverState = {};
|
||||
|
||||
const removeTorrentFromCategoryList = function(hash) {
|
||||
const removeTorrentFromCategoryList = (hash) => {
|
||||
if (!hash)
|
||||
return false;
|
||||
|
||||
|
@ -367,7 +367,7 @@ window.addEventListener("DOMContentLoaded", () => {
|
|||
return removed;
|
||||
};
|
||||
|
||||
const addTorrentToCategoryList = function(torrent) {
|
||||
const addTorrentToCategoryList = (torrent) => {
|
||||
const category = torrent["category"];
|
||||
if (typeof category === "undefined")
|
||||
return false;
|
||||
|
@ -395,7 +395,7 @@ window.addEventListener("DOMContentLoaded", () => {
|
|||
return false;
|
||||
};
|
||||
|
||||
const removeTorrentFromTagList = function(hash) {
|
||||
const removeTorrentFromTagList = (hash) => {
|
||||
if (!hash)
|
||||
return false;
|
||||
|
||||
|
@ -408,7 +408,7 @@ window.addEventListener("DOMContentLoaded", () => {
|
|||
return removed;
|
||||
};
|
||||
|
||||
const addTorrentToTagList = function(torrent) {
|
||||
const addTorrentToTagList = (torrent) => {
|
||||
if (torrent["tags"] === undefined) // Tags haven't changed
|
||||
return false;
|
||||
|
||||
|
@ -438,7 +438,7 @@ window.addEventListener("DOMContentLoaded", () => {
|
|||
return added;
|
||||
};
|
||||
|
||||
const updateFilter = function(filter, filterTitle) {
|
||||
const updateFilter = (filter, filterTitle) => {
|
||||
const filterEl = document.getElementById(`${filter}_filter`);
|
||||
const filterTorrentCount = torrentsTable.getFilteredTorrentsNumber(filter, CATEGORIES_ALL, TAGS_ALL, TRACKERS_ALL);
|
||||
if (useAutoHideZeroStatusFilters) {
|
||||
|
@ -449,7 +449,7 @@ window.addEventListener("DOMContentLoaded", () => {
|
|||
filterEl.firstElementChild.lastChild.nodeValue = filterTitle.replace("%1", filterTorrentCount);
|
||||
};
|
||||
|
||||
const updateFiltersList = function() {
|
||||
const updateFiltersList = () => {
|
||||
updateFilter("all", "QBT_TR(All (%1))QBT_TR[CONTEXT=StatusFilterWidget]");
|
||||
updateFilter("downloading", "QBT_TR(Downloading (%1))QBT_TR[CONTEXT=StatusFilterWidget]");
|
||||
updateFilter("seeding", "QBT_TR(Seeding (%1))QBT_TR[CONTEXT=StatusFilterWidget]");
|
||||
|
@ -466,14 +466,14 @@ window.addEventListener("DOMContentLoaded", () => {
|
|||
updateFilter("errored", "QBT_TR(Errored (%1))QBT_TR[CONTEXT=StatusFilterWidget]");
|
||||
};
|
||||
|
||||
const highlightSelectedStatus = function() {
|
||||
const highlightSelectedStatus = () => {
|
||||
const statusFilter = document.getElementById("statusFilterList");
|
||||
const filterID = `${selectedStatus}_filter`;
|
||||
for (const status of statusFilter.children)
|
||||
status.classList.toggle("selectedFilter", (status.id === filterID));
|
||||
};
|
||||
|
||||
const updateCategoryList = function() {
|
||||
const updateCategoryList = () => {
|
||||
const categoryList = document.getElementById("categoryFilterList");
|
||||
if (!categoryList)
|
||||
return;
|
||||
|
@ -583,7 +583,7 @@ window.addEventListener("DOMContentLoaded", () => {
|
|||
window.qBittorrent.Filters.categoriesFilterContextMenu.searchAndAddTargets();
|
||||
};
|
||||
|
||||
const highlightSelectedCategory = function() {
|
||||
const highlightSelectedCategory = () => {
|
||||
const categoryList = document.getElementById("categoryFilterList");
|
||||
if (!categoryList)
|
||||
return;
|
||||
|
@ -592,7 +592,7 @@ window.addEventListener("DOMContentLoaded", () => {
|
|||
category.classList.toggle("selectedFilter", (Number(category.id) === selectedCategory));
|
||||
};
|
||||
|
||||
const updateTagList = function() {
|
||||
const updateTagList = () => {
|
||||
const tagFilterList = $("tagFilterList");
|
||||
if (tagFilterList === null)
|
||||
return;
|
||||
|
@ -601,7 +601,7 @@ window.addEventListener("DOMContentLoaded", () => {
|
|||
|
||||
const tagItemTemplate = document.getElementById("tagFilterItem");
|
||||
|
||||
const createLink = function(hash, text, count) {
|
||||
const createLink = (hash, text, count) => {
|
||||
const tagFilterItem = tagItemTemplate.content.cloneNode(true).firstElementChild;
|
||||
tagFilterItem.id = hash;
|
||||
tagFilterItem.classList.toggle("selectedFilter", hash === selectedTag);
|
||||
|
@ -635,7 +635,7 @@ window.addEventListener("DOMContentLoaded", () => {
|
|||
window.qBittorrent.Filters.tagsFilterContextMenu.searchAndAddTargets();
|
||||
};
|
||||
|
||||
const highlightSelectedTag = function() {
|
||||
const highlightSelectedTag = () => {
|
||||
const tagFilterList = document.getElementById("tagFilterList");
|
||||
if (!tagFilterList)
|
||||
return;
|
||||
|
@ -644,7 +644,7 @@ window.addEventListener("DOMContentLoaded", () => {
|
|||
tag.classList.toggle("selectedFilter", (Number(tag.id) === selectedTag));
|
||||
};
|
||||
|
||||
const updateTrackerList = function() {
|
||||
const updateTrackerList = () => {
|
||||
const trackerFilterList = $("trackerFilterList");
|
||||
if (trackerFilterList === null)
|
||||
return;
|
||||
|
@ -653,7 +653,7 @@ window.addEventListener("DOMContentLoaded", () => {
|
|||
|
||||
const trackerItemTemplate = document.getElementById("trackerFilterItem");
|
||||
|
||||
const createLink = function(hash, text, count) {
|
||||
const createLink = (hash, text, count) => {
|
||||
const trackerFilterItem = trackerItemTemplate.content.cloneNode(true).firstElementChild;
|
||||
trackerFilterItem.id = hash;
|
||||
trackerFilterItem.classList.toggle("selectedFilter", hash === selectedTracker);
|
||||
|
@ -695,7 +695,7 @@ window.addEventListener("DOMContentLoaded", () => {
|
|||
window.qBittorrent.Filters.trackersFilterContextMenu.searchAndAddTargets();
|
||||
};
|
||||
|
||||
const highlightSelectedTracker = function() {
|
||||
const highlightSelectedTracker = () => {
|
||||
const trackerFilterList = document.getElementById("trackerFilterList");
|
||||
if (!trackerFilterList)
|
||||
return;
|
||||
|
@ -728,21 +728,21 @@ window.addEventListener("DOMContentLoaded", () => {
|
|||
|
||||
let syncMainDataTimeoutID = -1;
|
||||
let syncRequestInProgress = false;
|
||||
const syncMainData = function() {
|
||||
const syncMainData = () => {
|
||||
const url = new URI("api/v2/sync/maindata");
|
||||
url.setData("rid", syncMainDataLastResponseId);
|
||||
const request = new Request.JSON({
|
||||
url: url,
|
||||
noCache: true,
|
||||
method: "get",
|
||||
onFailure: function() {
|
||||
onFailure: () => {
|
||||
const errorDiv = $("error_div");
|
||||
if (errorDiv)
|
||||
errorDiv.textContent = "QBT_TR(qBittorrent client is not reachable)QBT_TR[CONTEXT=HttpServer]";
|
||||
syncRequestInProgress = false;
|
||||
syncData(2000);
|
||||
},
|
||||
onSuccess: function(response) {
|
||||
onSuccess: (response) => {
|
||||
$("error_div").textContent = "";
|
||||
if (response) {
|
||||
clearTimeout(torrentsFilterInputTimer);
|
||||
|
@ -909,12 +909,12 @@ window.addEventListener("DOMContentLoaded", () => {
|
|||
request.send();
|
||||
};
|
||||
|
||||
updateMainData = function() {
|
||||
updateMainData = () => {
|
||||
torrentsTable.updateTable();
|
||||
syncData(100);
|
||||
};
|
||||
|
||||
const syncData = function(delay) {
|
||||
const syncData = (delay) => {
|
||||
if (syncRequestInProgress)
|
||||
return;
|
||||
|
||||
|
@ -927,7 +927,7 @@ window.addEventListener("DOMContentLoaded", () => {
|
|||
syncMainDataTimeoutID = syncMainData.delay(delay);
|
||||
};
|
||||
|
||||
const processServerState = function() {
|
||||
const processServerState = () => {
|
||||
let transfer_info = window.qBittorrent.Misc.friendlyUnit(serverState.dl_info_speed, true);
|
||||
if (serverState.dl_rate_limit > 0)
|
||||
transfer_info += " [" + window.qBittorrent.Misc.friendlyUnit(serverState.dl_rate_limit, true) + "]";
|
||||
|
@ -1028,7 +1028,7 @@ window.addEventListener("DOMContentLoaded", () => {
|
|||
serverSyncMainDataInterval = Math.max(serverState.refresh_interval, 500);
|
||||
};
|
||||
|
||||
const updateAltSpeedIcon = function(enabled) {
|
||||
const updateAltSpeedIcon = (enabled) => {
|
||||
if (enabled) {
|
||||
$("alternativeSpeedLimits").src = "images/slow.svg";
|
||||
$("alternativeSpeedLimits").alt = "QBT_TR(Alternative speed limits: On)QBT_TR[CONTEXT=MainWindow]";
|
||||
|
@ -1048,11 +1048,11 @@ window.addEventListener("DOMContentLoaded", () => {
|
|||
new Request({
|
||||
url: "api/v2/transfer/toggleSpeedLimitsMode",
|
||||
method: "post",
|
||||
onComplete: function() {
|
||||
onComplete: () => {
|
||||
alternativeSpeedLimits = !alternativeSpeedLimits;
|
||||
updateMainData();
|
||||
},
|
||||
onFailure: function() {
|
||||
onFailure: () => {
|
||||
// Restore icon in case of failure
|
||||
updateAltSpeedIcon(alternativeSpeedLimits);
|
||||
}
|
||||
|
@ -1090,7 +1090,7 @@ window.addEventListener("DOMContentLoaded", () => {
|
|||
MochaUI.Desktop.setDesktopSize();
|
||||
});
|
||||
|
||||
const registerMagnetHandler = function() {
|
||||
const registerMagnetHandler = () => {
|
||||
if (typeof navigator.registerProtocolHandler !== "function") {
|
||||
if (window.location.protocol !== "https:")
|
||||
alert("QBT_TR(To use this feature, the WebUI needs to be accessed over HTTPS)QBT_TR[CONTEXT=MainWindow]");
|
||||
|
@ -1158,7 +1158,7 @@ window.addEventListener("DOMContentLoaded", () => {
|
|||
updateTabDisplay();
|
||||
});
|
||||
|
||||
const updateTabDisplay = function() {
|
||||
const updateTabDisplay = () => {
|
||||
if (window.qBittorrent.Client.isShowRssReader()) {
|
||||
$("showRssReaderLink").firstChild.style.opacity = "1";
|
||||
$("mainWindowTabs").removeClass("invisible");
|
||||
|
@ -1210,7 +1210,7 @@ window.addEventListener("DOMContentLoaded", () => {
|
|||
|
||||
// main window tabs
|
||||
|
||||
const showTransfersTab = function() {
|
||||
const showTransfersTab = () => {
|
||||
const showFiltersSidebar = LocalPreferences.get("show_filters_sidebar", "true") === "true";
|
||||
if (showFiltersSidebar) {
|
||||
$("filtersColumn").removeClass("invisible");
|
||||
|
@ -1229,7 +1229,7 @@ window.addEventListener("DOMContentLoaded", () => {
|
|||
LocalPreferences.set("selected_window_tab", "transfers");
|
||||
};
|
||||
|
||||
const hideTransfersTab = function() {
|
||||
const hideTransfersTab = () => {
|
||||
$("filtersColumn").addClass("invisible");
|
||||
$("filtersColumn_handle").addClass("invisible");
|
||||
$("mainColumn").addClass("invisible");
|
||||
|
@ -1237,7 +1237,7 @@ window.addEventListener("DOMContentLoaded", () => {
|
|||
MochaUI.Desktop.resizePanels();
|
||||
};
|
||||
|
||||
const showSearchTab = (function() {
|
||||
const showSearchTab = (() => {
|
||||
let searchTabInitialized = false;
|
||||
|
||||
return () => {
|
||||
|
@ -1266,12 +1266,12 @@ window.addEventListener("DOMContentLoaded", () => {
|
|||
};
|
||||
})();
|
||||
|
||||
const hideSearchTab = function() {
|
||||
const hideSearchTab = () => {
|
||||
$("searchTabColumn").addClass("invisible");
|
||||
MochaUI.Desktop.resizePanels();
|
||||
};
|
||||
|
||||
const showRssTab = (function() {
|
||||
const showRssTab = (() => {
|
||||
let rssTabInitialized = false;
|
||||
|
||||
return () => {
|
||||
|
@ -1303,13 +1303,13 @@ window.addEventListener("DOMContentLoaded", () => {
|
|||
};
|
||||
})();
|
||||
|
||||
const hideRssTab = function() {
|
||||
const hideRssTab = () => {
|
||||
$("rssTabColumn").addClass("invisible");
|
||||
window.qBittorrent.Rss && window.qBittorrent.Rss.unload();
|
||||
MochaUI.Desktop.resizePanels();
|
||||
};
|
||||
|
||||
const showLogTab = (function() {
|
||||
const showLogTab = (() => {
|
||||
let logTabInitialized = false;
|
||||
|
||||
return () => {
|
||||
|
@ -1341,13 +1341,13 @@ window.addEventListener("DOMContentLoaded", () => {
|
|||
};
|
||||
})();
|
||||
|
||||
const hideLogTab = function() {
|
||||
const hideLogTab = () => {
|
||||
$("logTabColumn").addClass("invisible");
|
||||
MochaUI.Desktop.resizePanels();
|
||||
window.qBittorrent.Log && window.qBittorrent.Log.unload();
|
||||
};
|
||||
|
||||
const addSearchPanel = function() {
|
||||
const addSearchPanel = () => {
|
||||
new MochaUI.Panel({
|
||||
id: "SearchPanel",
|
||||
title: "Search",
|
||||
|
@ -1372,7 +1372,7 @@ window.addEventListener("DOMContentLoaded", () => {
|
|||
});
|
||||
};
|
||||
|
||||
const addRssPanel = function() {
|
||||
const addRssPanel = () => {
|
||||
new MochaUI.Panel({
|
||||
id: "RssPanel",
|
||||
title: "Rss",
|
||||
|
@ -1394,7 +1394,7 @@ window.addEventListener("DOMContentLoaded", () => {
|
|||
});
|
||||
};
|
||||
|
||||
const addLogPanel = function() {
|
||||
const addLogPanel = () => {
|
||||
new MochaUI.Panel({
|
||||
id: "LogPanel",
|
||||
title: "Log",
|
||||
|
@ -1415,7 +1415,7 @@ window.addEventListener("DOMContentLoaded", () => {
|
|||
},
|
||||
},
|
||||
tabsURL: "views/logTabs.html",
|
||||
tabsOnload: function() {
|
||||
tabsOnload: () => {
|
||||
MochaUI.initializeTabs("panelTabs");
|
||||
|
||||
$("logMessageLink").addEventListener("click", (e) => {
|
||||
|
@ -1433,7 +1433,7 @@ window.addEventListener("DOMContentLoaded", () => {
|
|||
});
|
||||
};
|
||||
|
||||
const handleDownloadParam = function() {
|
||||
const handleDownloadParam = () => {
|
||||
// Extract torrent URL from download param in WebUI URL hash
|
||||
const downloadHash = "#download=";
|
||||
if (location.hash.indexOf(downloadHash) !== 0)
|
||||
|
@ -1457,7 +1457,7 @@ window.addEventListener("DOMContentLoaded", () => {
|
|||
},
|
||||
loadMethod: "xhr",
|
||||
contentURL: "views/transferlist.html",
|
||||
onContentLoaded: function() {
|
||||
onContentLoaded: () => {
|
||||
handleDownloadParam();
|
||||
updateMainData();
|
||||
},
|
||||
|
@ -1484,8 +1484,8 @@ window.addEventListener("DOMContentLoaded", () => {
|
|||
contentURL: "views/properties.html",
|
||||
require: {
|
||||
js: ["scripts/prop-general.js", "scripts/prop-trackers.js", "scripts/prop-peers.js", "scripts/prop-webseeds.js", "scripts/prop-files.js"],
|
||||
onload: function() {
|
||||
updatePropertiesPanel = function() {
|
||||
onload: () => {
|
||||
updatePropertiesPanel = () => {
|
||||
switch (LocalPreferences.get("selected_properties_tab")) {
|
||||
case "propGeneralLink":
|
||||
window.qBittorrent.PropGeneral.updateData();
|
||||
|
@ -1507,7 +1507,7 @@ window.addEventListener("DOMContentLoaded", () => {
|
|||
}
|
||||
},
|
||||
tabsURL: "views/propertiesToolbar.html",
|
||||
tabsOnload: function() {}, // must be included, otherwise panel won't load properly
|
||||
tabsOnload: () => {}, // must be included, otherwise panel won't load properly
|
||||
onContentLoaded: function() {
|
||||
this.panelHeaderCollapseBoxEl.classList.add("invisible");
|
||||
|
||||
|
@ -1703,7 +1703,7 @@ window.addEventListener("DOMContentLoaded", () => {
|
|||
}).activate();
|
||||
|
||||
new ClipboardJS(".copyToClipboard", {
|
||||
text: function(trigger) {
|
||||
text: (trigger) => {
|
||||
switch (trigger.id) {
|
||||
case "copyName":
|
||||
return copyNameFN();
|
||||
|
|
|
@ -642,7 +642,7 @@ window.qBittorrent.ContextMenu ??= (() => {
|
|||
|
||||
class SearchPluginsTableContextMenu extends ContextMenu {
|
||||
updateMenuItems() {
|
||||
const enabledColumnIndex = function(text) {
|
||||
const enabledColumnIndex = (text) => {
|
||||
const columns = $("searchPluginsTableFixedHeaderRow").getChildren("th");
|
||||
for (let i = 0; i < columns.length; ++i) {
|
||||
if (columns[i].textContent === "Enabled")
|
||||
|
|
|
@ -35,12 +35,12 @@ window.qBittorrent.Download ??= (() => {
|
|||
let categories = {};
|
||||
let defaultSavePath = "";
|
||||
|
||||
const getCategories = function() {
|
||||
const getCategories = () => {
|
||||
new Request.JSON({
|
||||
url: "api/v2/torrents/categories",
|
||||
method: "get",
|
||||
noCache: true,
|
||||
onSuccess: function(data) {
|
||||
onSuccess: (data) => {
|
||||
if (data) {
|
||||
categories = data;
|
||||
for (const i in data) {
|
||||
|
@ -58,7 +58,7 @@ window.qBittorrent.Download ??= (() => {
|
|||
}).send();
|
||||
};
|
||||
|
||||
const getPreferences = function() {
|
||||
const getPreferences = () => {
|
||||
const pref = window.parent.qBittorrent.Cache.preferences.get();
|
||||
|
||||
defaultSavePath = pref.save_path;
|
||||
|
@ -89,7 +89,7 @@ window.qBittorrent.Download ??= (() => {
|
|||
$("contentLayout").selectedIndex = 0;
|
||||
};
|
||||
|
||||
const changeCategorySelect = function(item) {
|
||||
const changeCategorySelect = (item) => {
|
||||
if (item.value === "\\other") {
|
||||
item.nextElementSibling.hidden = false;
|
||||
item.nextElementSibling.value = "";
|
||||
|
@ -114,7 +114,7 @@ window.qBittorrent.Download ??= (() => {
|
|||
}
|
||||
};
|
||||
|
||||
const changeTMM = function(item) {
|
||||
const changeTMM = (item) => {
|
||||
if (item.selectedIndex === 1) {
|
||||
$("savepath").disabled = true;
|
||||
|
||||
|
|
|
@ -68,7 +68,7 @@ window.qBittorrent.DynamicTable ??= (() => {
|
|||
|
||||
const DynamicTable = new Class({
|
||||
|
||||
initialize: function() {},
|
||||
initialize: () => {},
|
||||
|
||||
setup: function(dynamicTableDivId, dynamicTableFixedHeaderDivId, contextMenu) {
|
||||
this.dynamicTableDivId = dynamicTableDivId;
|
||||
|
@ -133,7 +133,7 @@ window.qBittorrent.DynamicTable ??= (() => {
|
|||
this.currentHeaderAction = "";
|
||||
this.canResize = false;
|
||||
|
||||
const resetElementBorderStyle = function(el, side) {
|
||||
const resetElementBorderStyle = (el, side) => {
|
||||
if ((side === "left") || (side !== "right"))
|
||||
el.style.borderLeft = "";
|
||||
if ((side === "right") || (side !== "left"))
|
||||
|
@ -197,9 +197,9 @@ window.qBittorrent.DynamicTable ??= (() => {
|
|||
this.lastClientX = e.clientX;
|
||||
}.bind(this);
|
||||
|
||||
const mouseOutFn = function(e) {
|
||||
const mouseOutFn = (e) => {
|
||||
resetElementBorderStyle(e.target);
|
||||
}.bind(this);
|
||||
};
|
||||
|
||||
const onBeforeStart = function(el) {
|
||||
this.clickedTh = el;
|
||||
|
@ -392,7 +392,7 @@ window.qBittorrent.DynamicTable ??= (() => {
|
|||
class: "contextMenu scrollableMenu"
|
||||
});
|
||||
|
||||
const createLi = function(columnName, text) {
|
||||
const createLi = (columnName, text) => {
|
||||
const anchor = document.createElement("a");
|
||||
anchor.href = `#${columnName}`;
|
||||
anchor.textContent = text;
|
||||
|
@ -436,7 +436,7 @@ window.qBittorrent.DynamicTable ??= (() => {
|
|||
actions[this.columns[i].name] = onMenuItemClicked;
|
||||
}
|
||||
|
||||
const createResizeElement = function(text, href) {
|
||||
const createResizeElement = (text, href) => {
|
||||
const anchor = document.createElement("a");
|
||||
anchor.href = href;
|
||||
anchor.textContent = text;
|
||||
|
@ -471,7 +471,7 @@ window.qBittorrent.DynamicTable ??= (() => {
|
|||
this.headerContextMenu.dynamicTable = this;
|
||||
},
|
||||
|
||||
initColumns: function() {},
|
||||
initColumns: () => {},
|
||||
|
||||
newColumn: function(name, style, caption, defaultWidth, defaultVisible) {
|
||||
const column = {};
|
||||
|
@ -623,7 +623,7 @@ window.qBittorrent.DynamicTable ??= (() => {
|
|||
},
|
||||
|
||||
setSortedColumnIcon: function(newColumn, oldColumn, isReverse) {
|
||||
const getCol = function(headerDivId, colName) {
|
||||
const getCol = (headerDivId, colName) => {
|
||||
const colElem = $$("#" + headerDivId + " .column_" + colName);
|
||||
if (colElem.length === 1)
|
||||
return colElem[0];
|
||||
|
@ -730,7 +730,7 @@ window.qBittorrent.DynamicTable ??= (() => {
|
|||
});
|
||||
},
|
||||
|
||||
onSelectedRowChanged: function() {},
|
||||
onSelectedRowChanged: () => {},
|
||||
|
||||
updateRowData: function(data) {
|
||||
// ensure rowId is a string
|
||||
|
@ -908,7 +908,7 @@ window.qBittorrent.DynamicTable ??= (() => {
|
|||
trs.pop().destroy();
|
||||
},
|
||||
|
||||
setupTr: function(tr) {},
|
||||
setupTr: (tr) => {},
|
||||
|
||||
updateRow: function(tr, fullUpdate) {
|
||||
const row = this.rows.get(tr.rowId);
|
||||
|
@ -1200,7 +1200,7 @@ window.qBittorrent.DynamicTable ??= (() => {
|
|||
td.title = status;
|
||||
};
|
||||
|
||||
this.columns["status"].compareRows = function(row1, row2) {
|
||||
this.columns["status"].compareRows = (row1, row2) => {
|
||||
return compareNumbers(row1.full_data._statusOrder, row2.full_data._statusOrder);
|
||||
};
|
||||
|
||||
|
@ -1470,7 +1470,7 @@ window.qBittorrent.DynamicTable ??= (() => {
|
|||
};
|
||||
},
|
||||
|
||||
applyFilter: function(row, filterName, categoryHash, tagHash, trackerHash, filterTerms) {
|
||||
applyFilter: (row, filterName, categoryHash, tagHash, trackerHash, filterTerms) => {
|
||||
const state = row["full_data"].state;
|
||||
let inactive = false;
|
||||
|
||||
|
@ -1716,7 +1716,7 @@ window.qBittorrent.DynamicTable ??= (() => {
|
|||
return this.getSelectedRowId();
|
||||
},
|
||||
|
||||
onSelectedRowChanged: function() {
|
||||
onSelectedRowChanged: () => {
|
||||
updatePropertiesPanel();
|
||||
}
|
||||
});
|
||||
|
@ -1875,7 +1875,7 @@ window.qBittorrent.DynamicTable ??= (() => {
|
|||
},
|
||||
|
||||
getFilteredAndSortedRows: function() {
|
||||
const getSizeFilters = function() {
|
||||
const getSizeFilters = () => {
|
||||
let minSize = (window.qBittorrent.Search.searchSizeFilter.min > 0.00) ? (window.qBittorrent.Search.searchSizeFilter.min * Math.pow(1024, window.qBittorrent.Search.searchSizeFilter.minUnit)) : 0.00;
|
||||
let maxSize = (window.qBittorrent.Search.searchSizeFilter.max > 0.00) ? (window.qBittorrent.Search.searchSizeFilter.max * Math.pow(1024, window.qBittorrent.Search.searchSizeFilter.maxUnit)) : 0.00;
|
||||
|
||||
|
@ -1891,7 +1891,7 @@ window.qBittorrent.DynamicTable ??= (() => {
|
|||
};
|
||||
};
|
||||
|
||||
const getSeedsFilters = function() {
|
||||
const getSeedsFilters = () => {
|
||||
let minSeeds = (window.qBittorrent.Search.searchSeedsFilter.min > 0) ? window.qBittorrent.Search.searchSeedsFilter.min : 0;
|
||||
let maxSeeds = (window.qBittorrent.Search.searchSeedsFilter.max > 0) ? window.qBittorrent.Search.searchSeedsFilter.max : 0;
|
||||
|
||||
|
@ -1949,7 +1949,7 @@ window.qBittorrent.DynamicTable ??= (() => {
|
|||
return filteredRows;
|
||||
},
|
||||
|
||||
setupTr: function(tr) {
|
||||
setupTr: (tr) => {
|
||||
tr.addClass("searchTableRow");
|
||||
}
|
||||
});
|
||||
|
@ -1984,7 +1984,7 @@ window.qBittorrent.DynamicTable ??= (() => {
|
|||
};
|
||||
},
|
||||
|
||||
setupTr: function(tr) {
|
||||
setupTr: (tr) => {
|
||||
tr.addClass("searchPluginsTableRow");
|
||||
}
|
||||
});
|
||||
|
@ -2174,17 +2174,17 @@ window.qBittorrent.DynamicTable ??= (() => {
|
|||
this.toggleNodeTreeCheckbox(node.children[i].rowId, checkState);
|
||||
},
|
||||
|
||||
updateGlobalCheckbox: function() {
|
||||
updateGlobalCheckbox: () => {
|
||||
const checkbox = $("rootMultiRename_cb");
|
||||
const checkboxes = $$("input.RenamingCB");
|
||||
const isAllChecked = function() {
|
||||
const isAllChecked = () => {
|
||||
for (let i = 0; i < checkboxes.length; ++i) {
|
||||
if (!checkboxes[i].checked)
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
const isAllUnchecked = function() {
|
||||
const isAllUnchecked = () => {
|
||||
for (let i = 0; i < checkboxes.length; ++i) {
|
||||
if (checkboxes[i].checked)
|
||||
return false;
|
||||
|
@ -2300,9 +2300,9 @@ window.qBittorrent.DynamicTable ??= (() => {
|
|||
};
|
||||
},
|
||||
|
||||
onRowSelectionChange: function(row) {},
|
||||
onRowSelectionChange: (row) => {},
|
||||
|
||||
selectRow: function() {
|
||||
selectRow: () => {
|
||||
return;
|
||||
},
|
||||
|
||||
|
@ -2618,7 +2618,7 @@ window.qBittorrent.DynamicTable ??= (() => {
|
|||
td.replaceChildren(span);
|
||||
}
|
||||
};
|
||||
this.columns["name"].calculateBuffer = function(rowId) {
|
||||
this.columns["name"].calculateBuffer = (rowId) => {
|
||||
const node = that.getNode(rowId);
|
||||
// folders add 20px for folder icon and 15px for collapse icon
|
||||
const folderBuffer = node.isFolder ? 35 : 0;
|
||||
|
@ -2814,8 +2814,8 @@ window.qBittorrent.DynamicTable ??= (() => {
|
|||
td.title = value;
|
||||
};
|
||||
},
|
||||
setupHeaderMenu: function() {},
|
||||
setupHeaderEvents: function() {},
|
||||
setupHeaderMenu: () => {},
|
||||
setupHeaderEvents: () => {},
|
||||
getFilteredAndSortedRows: function() {
|
||||
return [...this.getRowValues()];
|
||||
},
|
||||
|
@ -2944,8 +2944,8 @@ window.qBittorrent.DynamicTable ??= (() => {
|
|||
initColumns: function() {
|
||||
this.newColumn("name", "", "QBT_TR(Torrents: (double-click to download))QBT_TR[CONTEXT=RSSWidget]", -1, true);
|
||||
},
|
||||
setupHeaderMenu: function() {},
|
||||
setupHeaderEvents: function() {},
|
||||
setupHeaderMenu: () => {},
|
||||
setupHeaderEvents: () => {},
|
||||
getFilteredAndSortedRows: function() {
|
||||
return [...this.getRowValues()];
|
||||
},
|
||||
|
@ -3056,8 +3056,8 @@ window.qBittorrent.DynamicTable ??= (() => {
|
|||
};
|
||||
this.columns["checked"].staticWidth = 50;
|
||||
},
|
||||
setupHeaderMenu: function() {},
|
||||
setupHeaderEvents: function() {},
|
||||
setupHeaderMenu: () => {},
|
||||
setupHeaderEvents: () => {},
|
||||
getFilteredAndSortedRows: function() {
|
||||
return [...this.getRowValues()];
|
||||
},
|
||||
|
@ -3148,8 +3148,8 @@ window.qBittorrent.DynamicTable ??= (() => {
|
|||
};
|
||||
this.columns["checked"].staticWidth = 50;
|
||||
},
|
||||
setupHeaderMenu: function() {},
|
||||
setupHeaderEvents: function() {},
|
||||
setupHeaderMenu: () => {},
|
||||
setupHeaderEvents: () => {},
|
||||
getFilteredAndSortedRows: function() {
|
||||
return [...this.getRowValues()];
|
||||
},
|
||||
|
@ -3189,7 +3189,7 @@ window.qBittorrent.DynamicTable ??= (() => {
|
|||
this.hiddenTableHeader.appendChild(new Element("th"));
|
||||
this.fixedTableHeader.appendChild(new Element("th"));
|
||||
},
|
||||
selectRow: function() {}
|
||||
selectRow: () => {}
|
||||
});
|
||||
|
||||
const RssDownloaderArticlesTable = new Class({
|
||||
|
@ -3197,8 +3197,8 @@ window.qBittorrent.DynamicTable ??= (() => {
|
|||
initColumns: function() {
|
||||
this.newColumn("name", "", "", -1, true);
|
||||
},
|
||||
setupHeaderMenu: function() {},
|
||||
setupHeaderEvents: function() {},
|
||||
setupHeaderMenu: () => {},
|
||||
setupHeaderEvents: () => {},
|
||||
getFilteredAndSortedRows: function() {
|
||||
return [...this.getRowValues()];
|
||||
},
|
||||
|
@ -3238,7 +3238,7 @@ window.qBittorrent.DynamicTable ??= (() => {
|
|||
this.hiddenTableHeader.appendChild(new Element("th"));
|
||||
this.fixedTableHeader.appendChild(new Element("th"));
|
||||
},
|
||||
selectRow: function() {},
|
||||
selectRow: () => {},
|
||||
updateRow: function(tr, fullUpdate) {
|
||||
const row = this.rows.get(tr.rowId);
|
||||
const data = row[fullUpdate ? "full_data" : "data"];
|
||||
|
@ -3343,9 +3343,9 @@ window.qBittorrent.DynamicTable ??= (() => {
|
|||
return filteredRows;
|
||||
},
|
||||
|
||||
setupCommonEvents: function() {},
|
||||
setupCommonEvents: () => {},
|
||||
|
||||
setupTr: function(tr) {
|
||||
setupTr: (tr) => {
|
||||
tr.addClass("logTableRow");
|
||||
}
|
||||
});
|
||||
|
|
|
@ -88,7 +88,7 @@ window.qBittorrent.FileTree ??= (() => {
|
|||
: this.nodeMap[rowId];
|
||||
},
|
||||
|
||||
getRowId: function(node) {
|
||||
getRowId: (node) => {
|
||||
return node.rowId;
|
||||
},
|
||||
|
||||
|
|
|
@ -46,21 +46,21 @@ window.qBittorrent.Filesystem ??= (() => {
|
|||
/**
|
||||
* Returns the file extension part of a file name.
|
||||
*/
|
||||
const fileExtension = function(filename) {
|
||||
const fileExtension = (filename) => {
|
||||
const pointIndex = filename.lastIndexOf(".");
|
||||
if (pointIndex === -1)
|
||||
return "";
|
||||
return filename.substring(pointIndex + 1);
|
||||
};
|
||||
|
||||
const fileName = function(filepath) {
|
||||
const fileName = (filepath) => {
|
||||
const slashIndex = filepath.lastIndexOf(PathSeparator);
|
||||
if (slashIndex === -1)
|
||||
return filepath;
|
||||
return filepath.substring(slashIndex + 1);
|
||||
};
|
||||
|
||||
const folderName = function(filepath) {
|
||||
const folderName = (filepath) => {
|
||||
const slashIndex = filepath.lastIndexOf(PathSeparator);
|
||||
if (slashIndex === -1)
|
||||
return "";
|
||||
|
|
|
@ -37,14 +37,14 @@ window.qBittorrent.LocalPreferences ??= (() => {
|
|||
};
|
||||
|
||||
const LocalPreferencesClass = new Class({
|
||||
get: function(key, defaultValue) {
|
||||
get: (key, defaultValue) => {
|
||||
const value = localStorage.getItem(key);
|
||||
return ((value === null) && (defaultValue !== undefined))
|
||||
? defaultValue
|
||||
: value;
|
||||
},
|
||||
|
||||
set: function(key, value) {
|
||||
set: (key, value) => {
|
||||
try {
|
||||
localStorage.setItem(key, value);
|
||||
}
|
||||
|
@ -53,7 +53,7 @@ window.qBittorrent.LocalPreferences ??= (() => {
|
|||
}
|
||||
},
|
||||
|
||||
remove: function(key) {
|
||||
remove: (key) => {
|
||||
try {
|
||||
localStorage.removeItem(key);
|
||||
}
|
||||
|
|
|
@ -53,7 +53,7 @@ window.qBittorrent.Misc ??= (() => {
|
|||
};
|
||||
};
|
||||
|
||||
const genHash = function(string) {
|
||||
const genHash = (string) => {
|
||||
// origins:
|
||||
// https://stackoverflow.com/a/8831937
|
||||
// https://gist.github.com/hyamamoto/fd435505d29ebfa3d9716fd2be8d42f0
|
||||
|
@ -64,7 +64,7 @@ window.qBittorrent.Misc ??= (() => {
|
|||
};
|
||||
|
||||
// getHost emulate the GUI version `QString getHost(const QString &url)`
|
||||
const getHost = function(url) {
|
||||
const getHost = (url) => {
|
||||
// We want the hostname.
|
||||
// If failed to parse the domain, original input should be returned
|
||||
|
||||
|
@ -102,7 +102,7 @@ window.qBittorrent.Misc ??= (() => {
|
|||
/*
|
||||
* JS counterpart of the function in src/misc.cpp
|
||||
*/
|
||||
const friendlyUnit = function(value, isSpeed) {
|
||||
const friendlyUnit = (value, isSpeed) => {
|
||||
const units = [
|
||||
"QBT_TR(B)QBT_TR[CONTEXT=misc]",
|
||||
"QBT_TR(KiB)QBT_TR[CONTEXT=misc]",
|
||||
|
@ -122,14 +122,14 @@ window.qBittorrent.Misc ??= (() => {
|
|||
++i;
|
||||
}
|
||||
|
||||
function friendlyUnitPrecision(sizeUnit) {
|
||||
const friendlyUnitPrecision = (sizeUnit) => {
|
||||
if (sizeUnit <= 2) // KiB, MiB
|
||||
return 1;
|
||||
else if (sizeUnit === 3) // GiB
|
||||
return 2;
|
||||
else // TiB, PiB, EiB
|
||||
return 3;
|
||||
}
|
||||
};
|
||||
|
||||
let ret;
|
||||
if (i === 0) {
|
||||
|
@ -150,7 +150,7 @@ window.qBittorrent.Misc ??= (() => {
|
|||
/*
|
||||
* JS counterpart of the function in src/misc.cpp
|
||||
*/
|
||||
const friendlyDuration = function(seconds, maxCap = -1) {
|
||||
const friendlyDuration = (seconds, maxCap = -1) => {
|
||||
if ((seconds < 0) || ((seconds >= maxCap) && (maxCap >= 0)))
|
||||
return "∞";
|
||||
if (seconds === 0)
|
||||
|
@ -173,7 +173,7 @@ window.qBittorrent.Misc ??= (() => {
|
|||
return "QBT_TR(%1y %2d)QBT_TR[CONTEXT=misc]".replace("%1", Math.floor(years)).replace("%2", Math.floor(days));
|
||||
};
|
||||
|
||||
const friendlyPercentage = function(value) {
|
||||
const friendlyPercentage = (value) => {
|
||||
let percentage = (value * 100).round(1);
|
||||
if (isNaN(percentage) || (percentage < 0))
|
||||
percentage = 0;
|
||||
|
@ -182,19 +182,19 @@ window.qBittorrent.Misc ??= (() => {
|
|||
return percentage.toFixed(1) + "%";
|
||||
};
|
||||
|
||||
const friendlyFloat = function(value, precision) {
|
||||
const friendlyFloat = (value, precision) => {
|
||||
return parseFloat(value).toFixed(precision);
|
||||
};
|
||||
|
||||
/*
|
||||
* JS counterpart of the function in src/misc.cpp
|
||||
*/
|
||||
const parseHtmlLinks = function(text) {
|
||||
const parseHtmlLinks = (text) => {
|
||||
const exp = /(\b(https?|ftp|file):\/\/[-\w+&@#/%?=~|!:,.;]*[-\w+&@#/%=~|])/gi;
|
||||
return text.replace(exp, "<a target='_blank' rel='noopener noreferrer' href='$1'>$1</a>");
|
||||
};
|
||||
|
||||
const parseVersion = function(versionString) {
|
||||
const parseVersion = (versionString) => {
|
||||
const failure = {
|
||||
valid: false
|
||||
};
|
||||
|
@ -228,7 +228,7 @@ window.qBittorrent.Misc ??= (() => {
|
|||
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Collator/Collator#parameters
|
||||
const naturalSortCollator = new Intl.Collator(undefined, { numeric: true, usage: "sort" });
|
||||
|
||||
const safeTrim = function(value) {
|
||||
const safeTrim = (value) => {
|
||||
try {
|
||||
return value.trim();
|
||||
}
|
||||
|
@ -239,7 +239,7 @@ window.qBittorrent.Misc ??= (() => {
|
|||
}
|
||||
};
|
||||
|
||||
const toFixedPointString = function(number, digits) {
|
||||
const toFixedPointString = (number, digits) => {
|
||||
// Do not round up number
|
||||
const power = Math.pow(10, digits);
|
||||
return (Math.floor(power * number) / power).toFixed(digits);
|
||||
|
@ -251,7 +251,7 @@ window.qBittorrent.Misc ??= (() => {
|
|||
* @param {Array<String>} terms terms to search for within the text
|
||||
* @returns {Boolean} true if all terms match the text, false otherwise
|
||||
*/
|
||||
const containsAllTerms = function(text, terms) {
|
||||
const containsAllTerms = (text, terms) => {
|
||||
const textToSearch = text.toLowerCase();
|
||||
return terms.every((term) => {
|
||||
const isTermRequired = (term[0] === "+");
|
||||
|
|
|
@ -87,7 +87,7 @@ window.qBittorrent.Dialog ??= (() => {
|
|||
},
|
||||
resizable: true,
|
||||
width: 480,
|
||||
onCloseComplete: function() {
|
||||
onCloseComplete: () => {
|
||||
// make sure overlay is properly hidden upon modal closing
|
||||
document.getElementById("modalOverlay").style.display = "none";
|
||||
}
|
||||
|
@ -101,75 +101,75 @@ Object.freeze(window.qBittorrent.Dialog);
|
|||
|
||||
const LocalPreferences = new window.qBittorrent.LocalPreferences.LocalPreferencesClass();
|
||||
|
||||
let saveWindowSize = function() {};
|
||||
let loadWindowWidth = function() {};
|
||||
let loadWindowHeight = function() {};
|
||||
let showDownloadPage = function() {};
|
||||
let globalUploadLimitFN = function() {};
|
||||
let uploadLimitFN = function() {};
|
||||
let shareRatioFN = function() {};
|
||||
let toggleSequentialDownloadFN = function() {};
|
||||
let toggleFirstLastPiecePrioFN = function() {};
|
||||
let setSuperSeedingFN = function() {};
|
||||
let setForceStartFN = function() {};
|
||||
let globalDownloadLimitFN = function() {};
|
||||
let StatisticsLinkFN = function() {};
|
||||
let downloadLimitFN = function() {};
|
||||
let deleteSelectedTorrentsFN = function() {};
|
||||
let stopFN = function() {};
|
||||
let startFN = function() {};
|
||||
let autoTorrentManagementFN = function() {};
|
||||
let recheckFN = function() {};
|
||||
let reannounceFN = function() {};
|
||||
let setLocationFN = function() {};
|
||||
let renameFN = function() {};
|
||||
let renameFilesFN = function() {};
|
||||
let startVisibleTorrentsFN = function() {};
|
||||
let stopVisibleTorrentsFN = function() {};
|
||||
let deleteVisibleTorrentsFN = function() {};
|
||||
let torrentNewCategoryFN = function() {};
|
||||
let torrentSetCategoryFN = function() {};
|
||||
let createCategoryFN = function() {};
|
||||
let createSubcategoryFN = function() {};
|
||||
let editCategoryFN = function() {};
|
||||
let removeCategoryFN = function() {};
|
||||
let deleteUnusedCategoriesFN = function() {};
|
||||
let torrentAddTagsFN = function() {};
|
||||
let torrentSetTagsFN = function() {};
|
||||
let torrentRemoveAllTagsFN = function() {};
|
||||
let createTagFN = function() {};
|
||||
let removeTagFN = function() {};
|
||||
let deleteUnusedTagsFN = function() {};
|
||||
let deleteTrackerFN = function() {};
|
||||
let copyNameFN = function() {};
|
||||
let copyInfohashFN = function(policy) {};
|
||||
let copyMagnetLinkFN = function() {};
|
||||
let copyIdFN = function() {};
|
||||
let copyCommentFN = function() {};
|
||||
let setQueuePositionFN = function() {};
|
||||
let exportTorrentFN = function() {};
|
||||
let saveWindowSize = () => {};
|
||||
let loadWindowWidth = () => {};
|
||||
let loadWindowHeight = () => {};
|
||||
let showDownloadPage = () => {};
|
||||
let globalUploadLimitFN = () => {};
|
||||
let uploadLimitFN = () => {};
|
||||
let shareRatioFN = () => {};
|
||||
let toggleSequentialDownloadFN = () => {};
|
||||
let toggleFirstLastPiecePrioFN = () => {};
|
||||
let setSuperSeedingFN = () => {};
|
||||
let setForceStartFN = () => {};
|
||||
let globalDownloadLimitFN = () => {};
|
||||
let StatisticsLinkFN = () => {};
|
||||
let downloadLimitFN = () => {};
|
||||
let deleteSelectedTorrentsFN = () => {};
|
||||
let stopFN = () => {};
|
||||
let startFN = () => {};
|
||||
let autoTorrentManagementFN = () => {};
|
||||
let recheckFN = () => {};
|
||||
let reannounceFN = () => {};
|
||||
let setLocationFN = () => {};
|
||||
let renameFN = () => {};
|
||||
let renameFilesFN = () => {};
|
||||
let startVisibleTorrentsFN = () => {};
|
||||
let stopVisibleTorrentsFN = () => {};
|
||||
let deleteVisibleTorrentsFN = () => {};
|
||||
let torrentNewCategoryFN = () => {};
|
||||
let torrentSetCategoryFN = () => {};
|
||||
let createCategoryFN = () => {};
|
||||
let createSubcategoryFN = () => {};
|
||||
let editCategoryFN = () => {};
|
||||
let removeCategoryFN = () => {};
|
||||
let deleteUnusedCategoriesFN = () => {};
|
||||
let torrentAddTagsFN = () => {};
|
||||
let torrentSetTagsFN = () => {};
|
||||
let torrentRemoveAllTagsFN = () => {};
|
||||
let createTagFN = () => {};
|
||||
let removeTagFN = () => {};
|
||||
let deleteUnusedTagsFN = () => {};
|
||||
let deleteTrackerFN = () => {};
|
||||
let copyNameFN = () => {};
|
||||
let copyInfohashFN = (policy) => {};
|
||||
let copyMagnetLinkFN = () => {};
|
||||
let copyIdFN = () => {};
|
||||
let copyCommentFN = () => {};
|
||||
let setQueuePositionFN = () => {};
|
||||
let exportTorrentFN = () => {};
|
||||
|
||||
const initializeWindows = function() {
|
||||
saveWindowSize = function(windowId) {
|
||||
const initializeWindows = () => {
|
||||
saveWindowSize = (windowId) => {
|
||||
const size = $(windowId).getSize();
|
||||
LocalPreferences.set("window_" + windowId + "_width", size.x);
|
||||
LocalPreferences.set("window_" + windowId + "_height", size.y);
|
||||
};
|
||||
|
||||
loadWindowWidth = function(windowId, defaultValue) {
|
||||
loadWindowWidth = (windowId, defaultValue) => {
|
||||
return LocalPreferences.get("window_" + windowId + "_width", defaultValue);
|
||||
};
|
||||
|
||||
loadWindowHeight = function(windowId, defaultValue) {
|
||||
loadWindowHeight = (windowId, defaultValue) => {
|
||||
return LocalPreferences.get("window_" + windowId + "_height", defaultValue);
|
||||
};
|
||||
|
||||
function addClickEvent(el, fn) {
|
||||
const addClickEvent = (el, fn) => {
|
||||
["Link", "Button"].each((item) => {
|
||||
if ($(el + item))
|
||||
$(el + item).addEventListener("click", fn);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
addClickEvent("download", (e) => {
|
||||
e.preventDefault();
|
||||
|
@ -177,7 +177,7 @@ const initializeWindows = function() {
|
|||
showDownloadPage();
|
||||
});
|
||||
|
||||
showDownloadPage = function(urls) {
|
||||
showDownloadPage = (urls) => {
|
||||
const id = "downloadPage";
|
||||
const contentUri = new URI("download.html");
|
||||
|
||||
|
@ -248,7 +248,7 @@ const initializeWindows = function() {
|
|||
paddingHorizontal: 0,
|
||||
width: loadWindowWidth(id, 900),
|
||||
height: loadWindowHeight(id, 400),
|
||||
onResize: function() {
|
||||
onResize: () => {
|
||||
saveWindowSize(id);
|
||||
}
|
||||
});
|
||||
|
@ -279,7 +279,7 @@ const initializeWindows = function() {
|
|||
updateMainData();
|
||||
});
|
||||
|
||||
globalUploadLimitFN = function() {
|
||||
globalUploadLimitFN = () => {
|
||||
new MochaUI.Window({
|
||||
id: "uploadLimitPage",
|
||||
icon: "images/qbittorrent-tray.svg",
|
||||
|
@ -296,7 +296,7 @@ const initializeWindows = function() {
|
|||
});
|
||||
};
|
||||
|
||||
uploadLimitFN = function() {
|
||||
uploadLimitFN = () => {
|
||||
const hashes = torrentsTable.selectedRowsIds();
|
||||
if (hashes.length) {
|
||||
new MochaUI.Window({
|
||||
|
@ -316,7 +316,7 @@ const initializeWindows = function() {
|
|||
}
|
||||
};
|
||||
|
||||
shareRatioFN = function() {
|
||||
shareRatioFN = () => {
|
||||
const hashes = torrentsTable.selectedRowsIds();
|
||||
if (hashes.length) {
|
||||
let shareRatio = null;
|
||||
|
@ -357,7 +357,7 @@ const initializeWindows = function() {
|
|||
}
|
||||
};
|
||||
|
||||
toggleSequentialDownloadFN = function() {
|
||||
toggleSequentialDownloadFN = () => {
|
||||
const hashes = torrentsTable.selectedRowsIds();
|
||||
if (hashes.length) {
|
||||
new Request({
|
||||
|
@ -371,7 +371,7 @@ const initializeWindows = function() {
|
|||
}
|
||||
};
|
||||
|
||||
toggleFirstLastPiecePrioFN = function() {
|
||||
toggleFirstLastPiecePrioFN = () => {
|
||||
const hashes = torrentsTable.selectedRowsIds();
|
||||
if (hashes.length) {
|
||||
new Request({
|
||||
|
@ -385,7 +385,7 @@ const initializeWindows = function() {
|
|||
}
|
||||
};
|
||||
|
||||
setSuperSeedingFN = function(val) {
|
||||
setSuperSeedingFN = (val) => {
|
||||
const hashes = torrentsTable.selectedRowsIds();
|
||||
if (hashes.length) {
|
||||
new Request({
|
||||
|
@ -400,7 +400,7 @@ const initializeWindows = function() {
|
|||
}
|
||||
};
|
||||
|
||||
setForceStartFN = function() {
|
||||
setForceStartFN = () => {
|
||||
const hashes = torrentsTable.selectedRowsIds();
|
||||
if (hashes.length) {
|
||||
new Request({
|
||||
|
@ -415,7 +415,7 @@ const initializeWindows = function() {
|
|||
}
|
||||
};
|
||||
|
||||
globalDownloadLimitFN = function() {
|
||||
globalDownloadLimitFN = () => {
|
||||
new MochaUI.Window({
|
||||
id: "downloadLimitPage",
|
||||
icon: "images/qbittorrent-tray.svg",
|
||||
|
@ -432,7 +432,7 @@ const initializeWindows = function() {
|
|||
});
|
||||
};
|
||||
|
||||
StatisticsLinkFN = function() {
|
||||
StatisticsLinkFN = () => {
|
||||
const id = "statisticspage";
|
||||
new MochaUI.Window({
|
||||
id: id,
|
||||
|
@ -450,7 +450,7 @@ const initializeWindows = function() {
|
|||
});
|
||||
};
|
||||
|
||||
downloadLimitFN = function() {
|
||||
downloadLimitFN = () => {
|
||||
const hashes = torrentsTable.selectedRowsIds();
|
||||
if (hashes.length) {
|
||||
new MochaUI.Window({
|
||||
|
@ -470,7 +470,7 @@ const initializeWindows = function() {
|
|||
}
|
||||
};
|
||||
|
||||
deleteSelectedTorrentsFN = function(forceDeleteFiles = false) {
|
||||
deleteSelectedTorrentsFN = (forceDeleteFiles = false) => {
|
||||
const hashes = torrentsTable.selectedRowsIds();
|
||||
if (hashes.length > 0) {
|
||||
if (window.qBittorrent.Cache.preferences.get().confirm_torrent_deletion) {
|
||||
|
@ -483,11 +483,11 @@ const initializeWindows = function() {
|
|||
forceDeleteFiles: forceDeleteFiles
|
||||
},
|
||||
contentURL: "views/confirmdeletion.html",
|
||||
onContentLoaded: function(w) {
|
||||
onContentLoaded: (w) => {
|
||||
MochaUI.resizeWindow(w, { centered: true });
|
||||
MochaUI.centerWindow(w);
|
||||
},
|
||||
onCloseComplete: function() {
|
||||
onCloseComplete: () => {
|
||||
// make sure overlay is properly hidden upon modal closing
|
||||
document.getElementById("modalOverlay").style.display = "none";
|
||||
}
|
||||
|
@ -501,12 +501,12 @@ const initializeWindows = function() {
|
|||
hashes: hashes.join("|"),
|
||||
deleteFiles: forceDeleteFiles
|
||||
},
|
||||
onSuccess: function() {
|
||||
onSuccess: () => {
|
||||
torrentsTable.deselectAll();
|
||||
updateMainData();
|
||||
updatePropertiesPanel();
|
||||
},
|
||||
onFailure: function() {
|
||||
onFailure: () => {
|
||||
alert("QBT_TR(Unable to delete torrents.)QBT_TR[CONTEXT=HttpServer]");
|
||||
}
|
||||
}).send();
|
||||
|
@ -520,7 +520,7 @@ const initializeWindows = function() {
|
|||
deleteSelectedTorrentsFN();
|
||||
});
|
||||
|
||||
stopFN = function() {
|
||||
stopFN = () => {
|
||||
const hashes = torrentsTable.selectedRowsIds();
|
||||
if (hashes.length) {
|
||||
new Request({
|
||||
|
@ -534,7 +534,7 @@ const initializeWindows = function() {
|
|||
}
|
||||
};
|
||||
|
||||
startFN = function() {
|
||||
startFN = () => {
|
||||
const hashes = torrentsTable.selectedRowsIds();
|
||||
if (hashes.length) {
|
||||
new Request({
|
||||
|
@ -548,7 +548,7 @@ const initializeWindows = function() {
|
|||
}
|
||||
};
|
||||
|
||||
autoTorrentManagementFN = function() {
|
||||
autoTorrentManagementFN = () => {
|
||||
const hashes = torrentsTable.selectedRowsIds();
|
||||
if (hashes.length > 0) {
|
||||
const enableAutoTMM = hashes.some((hash) => !(torrentsTable.getRow(hash).full_data.auto_tmm));
|
||||
|
@ -583,7 +583,7 @@ const initializeWindows = function() {
|
|||
}
|
||||
};
|
||||
|
||||
recheckFN = function() {
|
||||
recheckFN = () => {
|
||||
const hashes = torrentsTable.selectedRowsIds();
|
||||
if (hashes.length > 0) {
|
||||
if (window.qBittorrent.Cache.preferences.get().confirm_torrent_recheck) {
|
||||
|
@ -602,10 +602,10 @@ const initializeWindows = function() {
|
|||
data: {
|
||||
"hashes": hashes.join("|"),
|
||||
},
|
||||
onSuccess: function() {
|
||||
onSuccess: () => {
|
||||
updateMainData();
|
||||
},
|
||||
onFailure: function() {
|
||||
onFailure: () => {
|
||||
alert("QBT_TR(Unable to recheck torrents.)QBT_TR[CONTEXT=HttpServer]");
|
||||
}
|
||||
}).send();
|
||||
|
@ -613,7 +613,7 @@ const initializeWindows = function() {
|
|||
}
|
||||
};
|
||||
|
||||
reannounceFN = function() {
|
||||
reannounceFN = () => {
|
||||
const hashes = torrentsTable.selectedRowsIds();
|
||||
if (hashes.length) {
|
||||
new Request({
|
||||
|
@ -627,7 +627,7 @@ const initializeWindows = function() {
|
|||
}
|
||||
};
|
||||
|
||||
setLocationFN = function() {
|
||||
setLocationFN = () => {
|
||||
const hashes = torrentsTable.selectedRowsIds();
|
||||
if (hashes.length) {
|
||||
const hash = hashes[0];
|
||||
|
@ -650,7 +650,7 @@ const initializeWindows = function() {
|
|||
}
|
||||
};
|
||||
|
||||
renameFN = function() {
|
||||
renameFN = () => {
|
||||
const hashes = torrentsTable.selectedRowsIds();
|
||||
if (hashes.length === 1) {
|
||||
const hash = hashes[0];
|
||||
|
@ -674,7 +674,7 @@ const initializeWindows = function() {
|
|||
}
|
||||
};
|
||||
|
||||
renameFilesFN = function() {
|
||||
renameFilesFN = () => {
|
||||
const hashes = torrentsTable.selectedRowsIds();
|
||||
if (hashes.length === 1) {
|
||||
const hash = hashes[0];
|
||||
|
@ -700,7 +700,7 @@ const initializeWindows = function() {
|
|||
}
|
||||
};
|
||||
|
||||
startVisibleTorrentsFN = function() {
|
||||
startVisibleTorrentsFN = () => {
|
||||
const hashes = torrentsTable.getFilteredTorrentsHashes(selectedStatus, selectedCategory, selectedTag, selectedTracker);
|
||||
if (hashes.length > 0) {
|
||||
new Request({
|
||||
|
@ -720,7 +720,7 @@ const initializeWindows = function() {
|
|||
}
|
||||
};
|
||||
|
||||
stopVisibleTorrentsFN = function() {
|
||||
stopVisibleTorrentsFN = () => {
|
||||
const hashes = torrentsTable.getFilteredTorrentsHashes(selectedStatus, selectedCategory, selectedTag, selectedTracker);
|
||||
if (hashes.length > 0) {
|
||||
new Request({
|
||||
|
@ -740,7 +740,7 @@ const initializeWindows = function() {
|
|||
}
|
||||
};
|
||||
|
||||
deleteVisibleTorrentsFN = function() {
|
||||
deleteVisibleTorrentsFN = () => {
|
||||
const hashes = torrentsTable.getFilteredTorrentsHashes(selectedStatus, selectedCategory, selectedTag, selectedTracker);
|
||||
if (hashes.length > 0) {
|
||||
if (window.qBittorrent.Cache.preferences.get().confirm_torrent_deletion) {
|
||||
|
@ -753,7 +753,7 @@ const initializeWindows = function() {
|
|||
isDeletingVisibleTorrents: true
|
||||
},
|
||||
contentURL: "views/confirmdeletion.html",
|
||||
onContentLoaded: function(w) {
|
||||
onContentLoaded: (w) => {
|
||||
MochaUI.resizeWindow(w, { centered: true });
|
||||
MochaUI.centerWindow(w);
|
||||
}
|
||||
|
@ -780,7 +780,7 @@ const initializeWindows = function() {
|
|||
}
|
||||
};
|
||||
|
||||
torrentNewCategoryFN = function() {
|
||||
torrentNewCategoryFN = () => {
|
||||
const action = "set";
|
||||
const hashes = torrentsTable.selectedRowsIds();
|
||||
if (hashes.length) {
|
||||
|
@ -801,7 +801,7 @@ const initializeWindows = function() {
|
|||
}
|
||||
};
|
||||
|
||||
torrentSetCategoryFN = function(categoryHash) {
|
||||
torrentSetCategoryFN = (categoryHash) => {
|
||||
const hashes = torrentsTable.selectedRowsIds();
|
||||
if (hashes.length <= 0)
|
||||
return;
|
||||
|
@ -816,13 +816,13 @@ const initializeWindows = function() {
|
|||
hashes: hashes.join("|"),
|
||||
category: categoryName
|
||||
},
|
||||
onSuccess: function() {
|
||||
onSuccess: () => {
|
||||
updateMainData();
|
||||
}
|
||||
}).send();
|
||||
};
|
||||
|
||||
createCategoryFN = function() {
|
||||
createCategoryFN = () => {
|
||||
const action = "create";
|
||||
new MochaUI.Window({
|
||||
id: "newCategoryPage",
|
||||
|
@ -840,7 +840,7 @@ const initializeWindows = function() {
|
|||
});
|
||||
};
|
||||
|
||||
createSubcategoryFN = function(categoryHash) {
|
||||
createSubcategoryFN = (categoryHash) => {
|
||||
const action = "createSubcategory";
|
||||
const categoryName = category_list.get(categoryHash).name + "/";
|
||||
new MochaUI.Window({
|
||||
|
@ -859,7 +859,7 @@ const initializeWindows = function() {
|
|||
});
|
||||
};
|
||||
|
||||
editCategoryFN = function(categoryHash) {
|
||||
editCategoryFN = (categoryHash) => {
|
||||
const action = "edit";
|
||||
const category = category_list.get(categoryHash);
|
||||
new MochaUI.Window({
|
||||
|
@ -878,7 +878,7 @@ const initializeWindows = function() {
|
|||
});
|
||||
};
|
||||
|
||||
removeCategoryFN = function(categoryHash) {
|
||||
removeCategoryFN = (categoryHash) => {
|
||||
const categoryName = category_list.get(categoryHash).name;
|
||||
new Request({
|
||||
url: "api/v2/torrents/removeCategories",
|
||||
|
@ -886,14 +886,14 @@ const initializeWindows = function() {
|
|||
data: {
|
||||
categories: categoryName
|
||||
},
|
||||
onSuccess: function() {
|
||||
onSuccess: () => {
|
||||
setCategoryFilter(CATEGORIES_ALL);
|
||||
updateMainData();
|
||||
}
|
||||
}).send();
|
||||
};
|
||||
|
||||
deleteUnusedCategoriesFN = function() {
|
||||
deleteUnusedCategoriesFN = () => {
|
||||
const categories = [];
|
||||
category_list.forEach((category, hash) => {
|
||||
if (torrentsTable.getFilteredTorrentsNumber("all", hash, TAGS_ALL, TRACKERS_ALL) === 0)
|
||||
|
@ -906,14 +906,14 @@ const initializeWindows = function() {
|
|||
data: {
|
||||
categories: categories.join("\n")
|
||||
},
|
||||
onSuccess: function() {
|
||||
onSuccess: () => {
|
||||
setCategoryFilter(CATEGORIES_ALL);
|
||||
updateMainData();
|
||||
}
|
||||
}).send();
|
||||
};
|
||||
|
||||
torrentAddTagsFN = function() {
|
||||
torrentAddTagsFN = () => {
|
||||
const action = "set";
|
||||
const hashes = torrentsTable.selectedRowsIds();
|
||||
if (hashes.length) {
|
||||
|
@ -934,7 +934,7 @@ const initializeWindows = function() {
|
|||
}
|
||||
};
|
||||
|
||||
torrentSetTagsFN = function(tagHash, isSet) {
|
||||
torrentSetTagsFN = (tagHash, isSet) => {
|
||||
const hashes = torrentsTable.selectedRowsIds();
|
||||
if (hashes.length <= 0)
|
||||
return;
|
||||
|
@ -950,7 +950,7 @@ const initializeWindows = function() {
|
|||
}).send();
|
||||
};
|
||||
|
||||
torrentRemoveAllTagsFN = function() {
|
||||
torrentRemoveAllTagsFN = () => {
|
||||
const hashes = torrentsTable.selectedRowsIds();
|
||||
if (hashes.length) {
|
||||
new Request({
|
||||
|
@ -963,7 +963,7 @@ const initializeWindows = function() {
|
|||
}
|
||||
};
|
||||
|
||||
createTagFN = function() {
|
||||
createTagFN = () => {
|
||||
const action = "create";
|
||||
new MochaUI.Window({
|
||||
id: "newTagPage",
|
||||
|
@ -982,7 +982,7 @@ const initializeWindows = function() {
|
|||
updateMainData();
|
||||
};
|
||||
|
||||
removeTagFN = function(tagHash) {
|
||||
removeTagFN = (tagHash) => {
|
||||
const tagName = tagList.get(tagHash).name;
|
||||
new Request({
|
||||
url: "api/v2/torrents/deleteTags",
|
||||
|
@ -994,7 +994,7 @@ const initializeWindows = function() {
|
|||
setTagFilter(TAGS_ALL);
|
||||
};
|
||||
|
||||
deleteUnusedTagsFN = function() {
|
||||
deleteUnusedTagsFN = () => {
|
||||
const tags = [];
|
||||
tagList.forEach((tag, hash) => {
|
||||
if (torrentsTable.getFilteredTorrentsNumber("all", CATEGORIES_ALL, hash, TRACKERS_ALL) === 0)
|
||||
|
@ -1010,7 +1010,7 @@ const initializeWindows = function() {
|
|||
setTagFilter(TAGS_ALL);
|
||||
};
|
||||
|
||||
deleteTrackerFN = function(trackerHash) {
|
||||
deleteTrackerFN = (trackerHash) => {
|
||||
const trackerHashInt = Number.parseInt(trackerHash, 10);
|
||||
if ((trackerHashInt === TRACKERS_ALL) || (trackerHashInt === TRACKERS_TRACKERLESS))
|
||||
return;
|
||||
|
@ -1030,14 +1030,14 @@ const initializeWindows = function() {
|
|||
padding: 10,
|
||||
width: 424,
|
||||
height: 100,
|
||||
onCloseComplete: function() {
|
||||
onCloseComplete: () => {
|
||||
updateMainData();
|
||||
setTrackerFilter(TRACKERS_ALL);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
copyNameFN = function() {
|
||||
copyNameFN = () => {
|
||||
const selectedRows = torrentsTable.selectedRowsIds();
|
||||
const names = [];
|
||||
if (selectedRows.length > 0) {
|
||||
|
@ -1050,7 +1050,7 @@ const initializeWindows = function() {
|
|||
return names.join("\n");
|
||||
};
|
||||
|
||||
copyInfohashFN = function(policy) {
|
||||
copyInfohashFN = (policy) => {
|
||||
const selectedRows = torrentsTable.selectedRowsIds();
|
||||
const infohashes = [];
|
||||
if (selectedRows.length > 0) {
|
||||
|
@ -1075,7 +1075,7 @@ const initializeWindows = function() {
|
|||
return infohashes.join("\n");
|
||||
};
|
||||
|
||||
copyMagnetLinkFN = function() {
|
||||
copyMagnetLinkFN = () => {
|
||||
const selectedRows = torrentsTable.selectedRowsIds();
|
||||
const magnets = [];
|
||||
if (selectedRows.length > 0) {
|
||||
|
@ -1088,11 +1088,11 @@ const initializeWindows = function() {
|
|||
return magnets.join("\n");
|
||||
};
|
||||
|
||||
copyIdFN = function() {
|
||||
copyIdFN = () => {
|
||||
return torrentsTable.selectedRowsIds().join("\n");
|
||||
};
|
||||
|
||||
copyCommentFN = function() {
|
||||
copyCommentFN = () => {
|
||||
const selectedRows = torrentsTable.selectedRowsIds();
|
||||
const comments = [];
|
||||
if (selectedRows.length > 0) {
|
||||
|
@ -1107,7 +1107,7 @@ const initializeWindows = function() {
|
|||
return comments.join("\n---------\n");
|
||||
};
|
||||
|
||||
exportTorrentFN = async function() {
|
||||
exportTorrentFN = async () => {
|
||||
const hashes = torrentsTable.selectedRowsIds();
|
||||
for (const hash of hashes) {
|
||||
const row = torrentsTable.getRow(hash);
|
||||
|
@ -1192,7 +1192,7 @@ const initializeWindows = function() {
|
|||
});
|
||||
});
|
||||
|
||||
setQueuePositionFN = function(cmd) {
|
||||
setQueuePositionFN = (cmd) => {
|
||||
const hashes = torrentsTable.selectedRowsIds();
|
||||
if (hashes.length) {
|
||||
new Request({
|
||||
|
@ -1238,7 +1238,7 @@ const initializeWindows = function() {
|
|||
new Request({
|
||||
url: "api/v2/auth/logout",
|
||||
method: "post",
|
||||
onSuccess: function() {
|
||||
onSuccess: () => {
|
||||
window.location.reload(true);
|
||||
}
|
||||
}).send();
|
||||
|
@ -1252,7 +1252,7 @@ const initializeWindows = function() {
|
|||
new Request({
|
||||
url: "api/v2/app/shutdown",
|
||||
method: "post",
|
||||
onSuccess: function() {
|
||||
onSuccess: () => {
|
||||
const shutdownMessage = "QBT_TR(%1 has been shutdown)QBT_TR[CONTEXT=HttpServer]".replace("%1", window.qBittorrent.Client.mainTitle());
|
||||
document.write(`<!doctype html><html lang="${LANG}"><head> <meta charset="UTF-8"> <meta name="color-scheme" content="light dark"> <title>${shutdownMessage}</title> <style>* {font-family: Arial, Helvetica, sans-serif;}</style></head><body> <h1 style="text-align: center;">${shutdownMessage}</h1></body></html>`);
|
||||
document.close();
|
||||
|
|
|
@ -40,7 +40,7 @@ window.qBittorrent.pathAutofill ??= (() => {
|
|||
};
|
||||
};
|
||||
|
||||
function showInputSuggestions(inputElement, names) {
|
||||
const showInputSuggestions = (inputElement, names) => {
|
||||
const datalist = document.createElement("datalist");
|
||||
datalist.id = inputElement.id + "Suggestions";
|
||||
for (const name of names) {
|
||||
|
@ -57,9 +57,9 @@ window.qBittorrent.pathAutofill ??= (() => {
|
|||
inputElement.appendChild(datalist);
|
||||
inputElement.setAttribute("list", datalist.id);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
function showPathSuggestions(element, mode) {
|
||||
const showPathSuggestions = (element, mode) => {
|
||||
const partialPath = element.value;
|
||||
if (partialPath === "")
|
||||
return;
|
||||
|
@ -68,7 +68,7 @@ window.qBittorrent.pathAutofill ??= (() => {
|
|||
.then(response => response.json())
|
||||
.then(filesList => { showInputSuggestions(element, filesList); })
|
||||
.catch(error => {});
|
||||
}
|
||||
};
|
||||
|
||||
function attachPathAutofill() {
|
||||
const directoryInputs = document.querySelectorAll(".pathDirectory:not(.pathAutoFillInitialized)");
|
||||
|
|
|
@ -46,7 +46,7 @@ window.qBittorrent.PiecesBar ??= (() => {
|
|||
|
||||
let piecesBarUniqueId = 0;
|
||||
const PiecesBar = new Class({
|
||||
initialize(pieces, parameters) {
|
||||
initialize: (pieces, parameters) => {
|
||||
const vals = {
|
||||
"id": "piecesbar_" + (piecesBarUniqueId++),
|
||||
"width": 0,
|
||||
|
@ -253,7 +253,7 @@ window.qBittorrent.PiecesBar ??= (() => {
|
|||
}
|
||||
}
|
||||
|
||||
function checkForParent(id) {
|
||||
const checkForParent = (id) => {
|
||||
const obj = $(id);
|
||||
if (!obj)
|
||||
return;
|
||||
|
@ -261,7 +261,7 @@ window.qBittorrent.PiecesBar ??= (() => {
|
|||
return setTimeout(() => { checkForParent(id); }, 100);
|
||||
|
||||
obj.refresh();
|
||||
}
|
||||
};
|
||||
|
||||
return exports();
|
||||
})();
|
||||
|
|
|
@ -38,7 +38,7 @@ window.qBittorrent.ProgressBar ??= (() => {
|
|||
|
||||
let ProgressBars = 0;
|
||||
const ProgressBar = new Class({
|
||||
initialize: function(value, parameters) {
|
||||
initialize: (value, parameters) => {
|
||||
const vals = {
|
||||
"id": "progressbar_" + (ProgressBars++),
|
||||
"value": [value, 0].pick(),
|
||||
|
@ -107,7 +107,7 @@ window.qBittorrent.ProgressBar ??= (() => {
|
|||
if (vals.width)
|
||||
obj.setValue(vals.value);
|
||||
else
|
||||
setTimeout('ProgressBar_checkForParent("' + obj.id + '")');
|
||||
setTimeout(ProgressBar_checkForParent, 0, obj.id);
|
||||
return obj;
|
||||
}
|
||||
});
|
||||
|
@ -142,19 +142,19 @@ window.qBittorrent.ProgressBar ??= (() => {
|
|||
}
|
||||
}
|
||||
|
||||
function ProgressBar_checkForParent(id) {
|
||||
const ProgressBar_checkForParent = (id) => {
|
||||
const obj = $(id);
|
||||
if (!obj)
|
||||
return;
|
||||
if (!obj.parentNode)
|
||||
return setTimeout('ProgressBar_checkForParent("' + id + '")', 100);
|
||||
return setTimeout(ProgressBar_checkForParent, 100, id);
|
||||
obj.style.width = "100%";
|
||||
const w = obj.offsetWidth;
|
||||
obj.vals.dark.style.width = `${w}px`;
|
||||
obj.vals.light.style.width = `${w}px`;
|
||||
obj.vals.width = w;
|
||||
obj.setValue(obj.vals.value);
|
||||
}
|
||||
};
|
||||
|
||||
return exports();
|
||||
})();
|
||||
|
|
|
@ -53,7 +53,7 @@ window.qBittorrent.PropFiles ??= (() => {
|
|||
let is_seed = true;
|
||||
let current_hash = "";
|
||||
|
||||
const normalizePriority = function(priority) {
|
||||
const normalizePriority = (priority) => {
|
||||
switch (priority) {
|
||||
case FilePriority.Ignored:
|
||||
case FilePriority.Normal:
|
||||
|
@ -66,7 +66,7 @@ window.qBittorrent.PropFiles ??= (() => {
|
|||
}
|
||||
};
|
||||
|
||||
const getAllChildren = function(id, fileId) {
|
||||
const getAllChildren = (id, fileId) => {
|
||||
const node = torrentFilesTable.getNode(id);
|
||||
if (!node.isFolder) {
|
||||
return {
|
||||
|
@ -78,7 +78,7 @@ window.qBittorrent.PropFiles ??= (() => {
|
|||
const rowIds = [];
|
||||
const fileIds = [];
|
||||
|
||||
const getChildFiles = function(node) {
|
||||
const getChildFiles = (node) => {
|
||||
if (node.isFolder) {
|
||||
node.children.each((child) => {
|
||||
getChildFiles(child);
|
||||
|
@ -100,7 +100,7 @@ window.qBittorrent.PropFiles ??= (() => {
|
|||
};
|
||||
};
|
||||
|
||||
const fileCheckboxClicked = function(e) {
|
||||
const fileCheckboxClicked = (e) => {
|
||||
e.stopPropagation();
|
||||
|
||||
const checkbox = e.target;
|
||||
|
@ -114,7 +114,7 @@ window.qBittorrent.PropFiles ??= (() => {
|
|||
updateGlobalCheckbox();
|
||||
};
|
||||
|
||||
const fileComboboxChanged = function(e) {
|
||||
const fileComboboxChanged = (e) => {
|
||||
const combobox = e.target;
|
||||
const priority = combobox.value;
|
||||
const id = combobox.getAttribute("data-id");
|
||||
|
@ -126,11 +126,11 @@ window.qBittorrent.PropFiles ??= (() => {
|
|||
updateGlobalCheckbox();
|
||||
};
|
||||
|
||||
const isDownloadCheckboxExists = function(id) {
|
||||
return ($("cbPrio" + id) !== null);
|
||||
const isDownloadCheckboxExists = (id) => {
|
||||
return $("cbPrio" + id) !== null;
|
||||
};
|
||||
|
||||
const createDownloadCheckbox = function(id, fileId, checked) {
|
||||
const createDownloadCheckbox = (id, fileId, checked) => {
|
||||
const checkbox = new Element("input");
|
||||
checkbox.type = "checkbox";
|
||||
checkbox.id = "cbPrio" + id;
|
||||
|
@ -143,12 +143,12 @@ window.qBittorrent.PropFiles ??= (() => {
|
|||
return checkbox;
|
||||
};
|
||||
|
||||
const updateDownloadCheckbox = function(id, checked) {
|
||||
const updateDownloadCheckbox = (id, checked) => {
|
||||
const checkbox = $("cbPrio" + id);
|
||||
updateCheckbox(checkbox, checked);
|
||||
};
|
||||
|
||||
const updateCheckbox = function(checkbox, checked) {
|
||||
const updateCheckbox = (checkbox, checked) => {
|
||||
switch (checked) {
|
||||
case TriState.Checked:
|
||||
setCheckboxChecked(checkbox);
|
||||
|
@ -162,8 +162,8 @@ window.qBittorrent.PropFiles ??= (() => {
|
|||
}
|
||||
};
|
||||
|
||||
const isPriorityComboExists = function(id) {
|
||||
return ($("comboPrio" + id) !== null);
|
||||
const isPriorityComboExists = (id) => {
|
||||
return $("comboPrio" + id) !== null;
|
||||
};
|
||||
|
||||
const createPriorityCombo = (id, fileId, selectedPriority) => {
|
||||
|
@ -195,13 +195,13 @@ window.qBittorrent.PropFiles ??= (() => {
|
|||
return select;
|
||||
};
|
||||
|
||||
const updatePriorityCombo = function(id, selectedPriority) {
|
||||
const updatePriorityCombo = (id, selectedPriority) => {
|
||||
const combobox = $("comboPrio" + id);
|
||||
if (parseInt(combobox.value, 10) !== selectedPriority)
|
||||
selectComboboxPriority(combobox, selectedPriority);
|
||||
};
|
||||
|
||||
const selectComboboxPriority = function(combobox, priority) {
|
||||
const selectComboboxPriority = (combobox, priority) => {
|
||||
const options = combobox.options;
|
||||
for (let i = 0; i < options.length; ++i) {
|
||||
const option = options[i];
|
||||
|
@ -214,7 +214,7 @@ window.qBittorrent.PropFiles ??= (() => {
|
|||
combobox.value = priority;
|
||||
};
|
||||
|
||||
const switchCheckboxState = function(e) {
|
||||
const switchCheckboxState = (e) => {
|
||||
e.stopPropagation();
|
||||
|
||||
const rowIds = [];
|
||||
|
@ -256,7 +256,7 @@ window.qBittorrent.PropFiles ??= (() => {
|
|||
setFilePriority(rowIds, fileIds, priority);
|
||||
};
|
||||
|
||||
const updateGlobalCheckbox = function() {
|
||||
const updateGlobalCheckbox = () => {
|
||||
const checkbox = $("tristate_cb");
|
||||
if (isAllCheckboxesChecked())
|
||||
setCheckboxChecked(checkbox);
|
||||
|
@ -266,24 +266,24 @@ window.qBittorrent.PropFiles ??= (() => {
|
|||
setCheckboxPartial(checkbox);
|
||||
};
|
||||
|
||||
const setCheckboxChecked = function(checkbox) {
|
||||
const setCheckboxChecked = (checkbox) => {
|
||||
checkbox.state = "checked";
|
||||
checkbox.indeterminate = false;
|
||||
checkbox.checked = true;
|
||||
};
|
||||
|
||||
const setCheckboxUnchecked = function(checkbox) {
|
||||
const setCheckboxUnchecked = (checkbox) => {
|
||||
checkbox.state = "unchecked";
|
||||
checkbox.indeterminate = false;
|
||||
checkbox.checked = false;
|
||||
};
|
||||
|
||||
const setCheckboxPartial = function(checkbox) {
|
||||
const setCheckboxPartial = (checkbox) => {
|
||||
checkbox.state = "partial";
|
||||
checkbox.indeterminate = true;
|
||||
};
|
||||
|
||||
const isAllCheckboxesChecked = function() {
|
||||
const isAllCheckboxesChecked = () => {
|
||||
const checkboxes = $$("input.DownloadedCB");
|
||||
for (let i = 0; i < checkboxes.length; ++i) {
|
||||
if (!checkboxes[i].checked)
|
||||
|
@ -292,7 +292,7 @@ window.qBittorrent.PropFiles ??= (() => {
|
|||
return true;
|
||||
};
|
||||
|
||||
const isAllCheckboxesUnchecked = function() {
|
||||
const isAllCheckboxesUnchecked = () => {
|
||||
const checkboxes = $$("input.DownloadedCB");
|
||||
for (let i = 0; i < checkboxes.length; ++i) {
|
||||
if (checkboxes[i].checked)
|
||||
|
@ -301,7 +301,7 @@ window.qBittorrent.PropFiles ??= (() => {
|
|||
return true;
|
||||
};
|
||||
|
||||
const setFilePriority = function(ids, fileIds, priority) {
|
||||
const setFilePriority = (ids, fileIds, priority) => {
|
||||
if (current_hash === "")
|
||||
return;
|
||||
|
||||
|
@ -316,7 +316,7 @@ window.qBittorrent.PropFiles ??= (() => {
|
|||
"id": fileIds.join("|"),
|
||||
"priority": priority
|
||||
},
|
||||
onComplete: function() {
|
||||
onComplete: () => {
|
||||
loadTorrentFilesDataTimer = loadTorrentFilesData.delay(1000);
|
||||
}
|
||||
}).send();
|
||||
|
@ -334,7 +334,7 @@ window.qBittorrent.PropFiles ??= (() => {
|
|||
};
|
||||
|
||||
let loadTorrentFilesDataTimer = -1;
|
||||
const loadTorrentFilesData = function() {
|
||||
const loadTorrentFilesData = () => {
|
||||
if ($("propFiles").hasClass("invisible")
|
||||
|| $("propertiesPanel_collapseToggle").hasClass("panel-expand")) {
|
||||
// Tab changed, don't do anything
|
||||
|
@ -357,11 +357,11 @@ window.qBittorrent.PropFiles ??= (() => {
|
|||
url: url,
|
||||
method: "get",
|
||||
noCache: true,
|
||||
onComplete: function() {
|
||||
onComplete: () => {
|
||||
clearTimeout(loadTorrentFilesDataTimer);
|
||||
loadTorrentFilesDataTimer = loadTorrentFilesData.delay(5000);
|
||||
},
|
||||
onSuccess: function(files) {
|
||||
onSuccess: (files) => {
|
||||
clearTimeout(torrentFilesFilterInputTimer);
|
||||
torrentFilesFilterInputTimer = -1;
|
||||
|
||||
|
@ -377,13 +377,13 @@ window.qBittorrent.PropFiles ??= (() => {
|
|||
}).send();
|
||||
};
|
||||
|
||||
const updateData = function() {
|
||||
const updateData = () => {
|
||||
clearTimeout(loadTorrentFilesDataTimer);
|
||||
loadTorrentFilesDataTimer = -1;
|
||||
loadTorrentFilesData();
|
||||
};
|
||||
|
||||
const handleNewTorrentFiles = function(files) {
|
||||
const handleNewTorrentFiles = (files) => {
|
||||
is_seed = (files.length > 0) ? files[0].is_seed : true;
|
||||
|
||||
const rows = files.map((file, index) => {
|
||||
|
@ -413,7 +413,7 @@ window.qBittorrent.PropFiles ??= (() => {
|
|||
updateGlobalCheckbox();
|
||||
};
|
||||
|
||||
const addRowsToTable = function(rows) {
|
||||
const addRowsToTable = (rows) => {
|
||||
const selectedFiles = torrentFilesTable.selectedRowsIds();
|
||||
let rowId = 0;
|
||||
|
||||
|
@ -481,7 +481,7 @@ window.qBittorrent.PropFiles ??= (() => {
|
|||
torrentFilesTable.reselectRows(selectedFiles);
|
||||
};
|
||||
|
||||
const collapseIconClicked = function(event) {
|
||||
const collapseIconClicked = (event) => {
|
||||
const id = event.getAttribute("data-id");
|
||||
const node = torrentFilesTable.getNode(id);
|
||||
const isCollapsed = (event.parentElement.getAttribute("data-collapsed") === "true");
|
||||
|
@ -492,19 +492,19 @@ window.qBittorrent.PropFiles ??= (() => {
|
|||
collapseNode(node);
|
||||
};
|
||||
|
||||
const expandFolder = function(id) {
|
||||
const expandFolder = (id) => {
|
||||
const node = torrentFilesTable.getNode(id);
|
||||
if (node.isFolder)
|
||||
expandNode(node);
|
||||
};
|
||||
|
||||
const collapseFolder = function(id) {
|
||||
const collapseFolder = (id) => {
|
||||
const node = torrentFilesTable.getNode(id);
|
||||
if (node.isFolder)
|
||||
collapseNode(node);
|
||||
};
|
||||
|
||||
const filesPriorityMenuClicked = function(priority) {
|
||||
const filesPriorityMenuClicked = (priority) => {
|
||||
const selectedRows = torrentFilesTable.selectedRowsIds();
|
||||
if (selectedRows.length === 0)
|
||||
return;
|
||||
|
@ -532,7 +532,7 @@ window.qBittorrent.PropFiles ??= (() => {
|
|||
setFilePriority(Object.keys(uniqueRowIds), Object.keys(uniqueFileIds), priority);
|
||||
};
|
||||
|
||||
const singleFileRename = function(hash) {
|
||||
const singleFileRename = (hash) => {
|
||||
const rowId = torrentFilesTable.selectedRowsIds()[0];
|
||||
if (rowId === undefined)
|
||||
return;
|
||||
|
@ -560,7 +560,7 @@ window.qBittorrent.PropFiles ??= (() => {
|
|||
});
|
||||
};
|
||||
|
||||
const multiFileRename = function(hash) {
|
||||
const multiFileRename = (hash) => {
|
||||
new MochaUI.Window({
|
||||
id: "multiRenamePage",
|
||||
icon: "images/qbittorrent-tray.svg",
|
||||
|
@ -583,7 +583,7 @@ window.qBittorrent.PropFiles ??= (() => {
|
|||
targets: "#torrentFilesTableDiv tr",
|
||||
menu: "torrentFilesMenu",
|
||||
actions: {
|
||||
Rename: function(element, ref) {
|
||||
Rename: (element, ref) => {
|
||||
const hash = torrentsTable.getCurrentTorrentID();
|
||||
if (!hash)
|
||||
return;
|
||||
|
@ -594,16 +594,16 @@ window.qBittorrent.PropFiles ??= (() => {
|
|||
singleFileRename(hash);
|
||||
},
|
||||
|
||||
FilePrioIgnore: function(element, ref) {
|
||||
FilePrioIgnore: (element, ref) => {
|
||||
filesPriorityMenuClicked(FilePriority.Ignored);
|
||||
},
|
||||
FilePrioNormal: function(element, ref) {
|
||||
FilePrioNormal: (element, ref) => {
|
||||
filesPriorityMenuClicked(FilePriority.Normal);
|
||||
},
|
||||
FilePrioHigh: function(element, ref) {
|
||||
FilePrioHigh: (element, ref) => {
|
||||
filesPriorityMenuClicked(FilePriority.High);
|
||||
},
|
||||
FilePrioMaximum: function(element, ref) {
|
||||
FilePrioMaximum: (element, ref) => {
|
||||
filesPriorityMenuClicked(FilePriority.Maximum);
|
||||
}
|
||||
},
|
||||
|
@ -662,7 +662,7 @@ window.qBittorrent.PropFiles ??= (() => {
|
|||
/**
|
||||
* Show/hide a node's row
|
||||
*/
|
||||
const _hideNode = function(node, shouldHide) {
|
||||
const _hideNode = (node, shouldHide) => {
|
||||
const span = $("filesTablefileName" + node.rowId);
|
||||
// span won't exist if row has been filtered out
|
||||
if (span === null)
|
||||
|
@ -677,7 +677,7 @@ window.qBittorrent.PropFiles ??= (() => {
|
|||
/**
|
||||
* Update a node's collapsed state and icon
|
||||
*/
|
||||
const _updateNodeState = function(node, isCollapsed) {
|
||||
const _updateNodeState = (node, isCollapsed) => {
|
||||
const span = $("filesTablefileName" + node.rowId);
|
||||
// span won't exist if row has been filtered out
|
||||
if (span === null)
|
||||
|
@ -695,7 +695,7 @@ window.qBittorrent.PropFiles ??= (() => {
|
|||
collapseIcon.removeClass("rotate");
|
||||
};
|
||||
|
||||
const _isCollapsed = function(node) {
|
||||
const _isCollapsed = (node) => {
|
||||
const span = $("filesTablefileName" + node.rowId);
|
||||
if (span === null)
|
||||
return true;
|
||||
|
@ -704,15 +704,15 @@ window.qBittorrent.PropFiles ??= (() => {
|
|||
return td.getAttribute("data-collapsed") === "true";
|
||||
};
|
||||
|
||||
const expandNode = function(node) {
|
||||
const expandNode = (node) => {
|
||||
_collapseNode(node, false, false, false);
|
||||
};
|
||||
|
||||
const collapseNode = function(node) {
|
||||
const collapseNode = (node) => {
|
||||
_collapseNode(node, true, false, false);
|
||||
};
|
||||
|
||||
const expandAllNodes = function() {
|
||||
const expandAllNodes = () => {
|
||||
const root = torrentFilesTable.getRoot();
|
||||
root.children.each((node) => {
|
||||
node.children.each((child) => {
|
||||
|
@ -721,7 +721,7 @@ window.qBittorrent.PropFiles ??= (() => {
|
|||
});
|
||||
};
|
||||
|
||||
const collapseAllNodes = function() {
|
||||
const collapseAllNodes = () => {
|
||||
const root = torrentFilesTable.getRoot();
|
||||
root.children.each((node) => {
|
||||
node.children.each((child) => {
|
||||
|
@ -737,7 +737,7 @@ window.qBittorrent.PropFiles ??= (() => {
|
|||
* @param {boolean} applyToChildren true if the node's children should also be collapsed, recursively
|
||||
* @param {boolean} isChildNode true if the current node is a child of the original node we collapsed/expanded
|
||||
*/
|
||||
const _collapseNode = function(node, shouldCollapse, applyToChildren, isChildNode) {
|
||||
const _collapseNode = (node, shouldCollapse, applyToChildren, isChildNode) => {
|
||||
if (!node.isFolder)
|
||||
return;
|
||||
|
||||
|
@ -764,7 +764,7 @@ window.qBittorrent.PropFiles ??= (() => {
|
|||
});
|
||||
};
|
||||
|
||||
const clear = function() {
|
||||
const clear = () => {
|
||||
torrentFilesTable.clear();
|
||||
};
|
||||
|
||||
|
|
|
@ -42,7 +42,7 @@ window.qBittorrent.PropGeneral ??= (() => {
|
|||
});
|
||||
$("progress").appendChild(piecesBar);
|
||||
|
||||
const clearData = function() {
|
||||
const clearData = () => {
|
||||
$("time_elapsed").textContent = "";
|
||||
$("eta").textContent = "";
|
||||
$("nb_connections").textContent = "";
|
||||
|
@ -74,7 +74,7 @@ window.qBittorrent.PropGeneral ??= (() => {
|
|||
};
|
||||
|
||||
let loadTorrentDataTimer = -1;
|
||||
const loadTorrentData = function() {
|
||||
const loadTorrentData = () => {
|
||||
if ($("propGeneral").hasClass("invisible")
|
||||
|| $("propertiesPanel_collapseToggle").hasClass("panel-expand")) {
|
||||
// Tab changed, don't do anything
|
||||
|
@ -91,12 +91,12 @@ window.qBittorrent.PropGeneral ??= (() => {
|
|||
url: url,
|
||||
method: "get",
|
||||
noCache: true,
|
||||
onFailure: function() {
|
||||
onFailure: () => {
|
||||
$("error_div").textContent = "QBT_TR(qBittorrent client is not reachable)QBT_TR[CONTEXT=HttpServer]";
|
||||
clearTimeout(loadTorrentDataTimer);
|
||||
loadTorrentDataTimer = loadTorrentData.delay(10000);
|
||||
},
|
||||
onSuccess: function(data) {
|
||||
onSuccess: (data) => {
|
||||
$("error_div").textContent = "";
|
||||
if (data) {
|
||||
// Update Torrent data
|
||||
|
@ -229,12 +229,12 @@ window.qBittorrent.PropGeneral ??= (() => {
|
|||
url: piecesUrl,
|
||||
method: "get",
|
||||
noCache: true,
|
||||
onFailure: function() {
|
||||
onFailure: () => {
|
||||
$("error_div").textContent = "QBT_TR(qBittorrent client is not reachable)QBT_TR[CONTEXT=HttpServer]";
|
||||
clearTimeout(loadTorrentDataTimer);
|
||||
loadTorrentDataTimer = loadTorrentData.delay(10000);
|
||||
},
|
||||
onSuccess: function(data) {
|
||||
onSuccess: (data) => {
|
||||
$("error_div").textContent = "";
|
||||
|
||||
if (data)
|
||||
|
@ -248,13 +248,13 @@ window.qBittorrent.PropGeneral ??= (() => {
|
|||
}).send();
|
||||
};
|
||||
|
||||
const updateData = function() {
|
||||
const updateData = () => {
|
||||
clearTimeout(loadTorrentDataTimer);
|
||||
loadTorrentDataTimer = -1;
|
||||
loadTorrentData();
|
||||
};
|
||||
|
||||
const clear = function() {
|
||||
const clear = () => {
|
||||
clearData();
|
||||
};
|
||||
|
||||
|
|
|
@ -42,7 +42,7 @@ window.qBittorrent.PropPeers ??= (() => {
|
|||
let syncTorrentPeersLastResponseId = 0;
|
||||
let show_flags = true;
|
||||
|
||||
const loadTorrentPeersData = function() {
|
||||
const loadTorrentPeersData = () => {
|
||||
if ($("propPeers").hasClass("invisible")
|
||||
|| $("propertiesPanel_collapseToggle").hasClass("panel-expand")) {
|
||||
syncTorrentPeersLastResponseId = 0;
|
||||
|
@ -63,11 +63,11 @@ window.qBittorrent.PropPeers ??= (() => {
|
|||
url: url,
|
||||
method: "get",
|
||||
noCache: true,
|
||||
onComplete: function() {
|
||||
onComplete: () => {
|
||||
clearTimeout(loadTorrentPeersTimer);
|
||||
loadTorrentPeersTimer = loadTorrentPeersData.delay(window.qBittorrent.Client.getSyncMainDataInterval());
|
||||
},
|
||||
onSuccess: function(response) {
|
||||
onSuccess: (response) => {
|
||||
$("error_div").textContent = "";
|
||||
if (response) {
|
||||
const full_update = (response["full_update"] === true);
|
||||
|
@ -106,13 +106,13 @@ window.qBittorrent.PropPeers ??= (() => {
|
|||
}).send();
|
||||
};
|
||||
|
||||
const updateData = function() {
|
||||
const updateData = () => {
|
||||
clearTimeout(loadTorrentPeersTimer);
|
||||
loadTorrentPeersTimer = -1;
|
||||
loadTorrentPeersData();
|
||||
};
|
||||
|
||||
const clear = function() {
|
||||
const clear = () => {
|
||||
torrentPeersTable.clear();
|
||||
};
|
||||
|
||||
|
@ -120,7 +120,7 @@ window.qBittorrent.PropPeers ??= (() => {
|
|||
targets: "#torrentPeersTableDiv",
|
||||
menu: "torrentPeersMenu",
|
||||
actions: {
|
||||
addPeer: function(element, ref) {
|
||||
addPeer: (element, ref) => {
|
||||
const hash = torrentsTable.getCurrentTorrentID();
|
||||
if (!hash)
|
||||
return;
|
||||
|
@ -140,7 +140,7 @@ window.qBittorrent.PropPeers ??= (() => {
|
|||
height: 260
|
||||
});
|
||||
},
|
||||
banPeer: function(element, ref) {
|
||||
banPeer: (element, ref) => {
|
||||
const selectedPeers = torrentPeersTable.selectedRowsIds();
|
||||
if (selectedPeers.length === 0)
|
||||
return;
|
||||
|
@ -176,7 +176,7 @@ window.qBittorrent.PropPeers ??= (() => {
|
|||
});
|
||||
|
||||
new ClipboardJS("#CopyPeerInfo", {
|
||||
text: function(trigger) {
|
||||
text: (trigger) => {
|
||||
return torrentPeersTable.selectedRowsIds().join("\n");
|
||||
}
|
||||
});
|
||||
|
|
|
@ -42,7 +42,7 @@ window.qBittorrent.PropTrackers ??= (() => {
|
|||
const torrentTrackersTable = new window.qBittorrent.DynamicTable.TorrentTrackersTable();
|
||||
let loadTrackersDataTimer = -1;
|
||||
|
||||
const loadTrackersData = function() {
|
||||
const loadTrackersData = () => {
|
||||
if ($("propTrackers").hasClass("invisible")
|
||||
|| $("propertiesPanel_collapseToggle").hasClass("panel-expand")) {
|
||||
// Tab changed, don't do anything
|
||||
|
@ -63,11 +63,11 @@ window.qBittorrent.PropTrackers ??= (() => {
|
|||
url: url,
|
||||
method: "get",
|
||||
noCache: true,
|
||||
onComplete: function() {
|
||||
onComplete: () => {
|
||||
clearTimeout(loadTrackersDataTimer);
|
||||
loadTrackersDataTimer = loadTrackersData.delay(10000);
|
||||
},
|
||||
onSuccess: function(trackers) {
|
||||
onSuccess: (trackers) => {
|
||||
const selectedTrackers = torrentTrackersTable.selectedRowsIds();
|
||||
torrentTrackersTable.clear();
|
||||
|
||||
|
@ -117,7 +117,7 @@ window.qBittorrent.PropTrackers ??= (() => {
|
|||
}).send();
|
||||
};
|
||||
|
||||
const updateData = function() {
|
||||
const updateData = () => {
|
||||
clearTimeout(loadTrackersDataTimer);
|
||||
loadTrackersDataTimer = -1;
|
||||
loadTrackersData();
|
||||
|
@ -127,15 +127,15 @@ window.qBittorrent.PropTrackers ??= (() => {
|
|||
targets: "#torrentTrackersTableDiv",
|
||||
menu: "torrentTrackersMenu",
|
||||
actions: {
|
||||
AddTracker: function(element, ref) {
|
||||
AddTracker: (element, ref) => {
|
||||
addTrackerFN();
|
||||
},
|
||||
EditTracker: function(element, ref) {
|
||||
EditTracker: (element, ref) => {
|
||||
// only allow editing of one row
|
||||
element.firstChild.click();
|
||||
editTrackerFN(element);
|
||||
},
|
||||
RemoveTracker: function(element, ref) {
|
||||
RemoveTracker: (element, ref) => {
|
||||
removeTrackerFN(element);
|
||||
}
|
||||
},
|
||||
|
@ -162,7 +162,7 @@ window.qBittorrent.PropTrackers ??= (() => {
|
|||
}
|
||||
});
|
||||
|
||||
const addTrackerFN = function() {
|
||||
const addTrackerFN = () => {
|
||||
if (current_hash.length === 0)
|
||||
return;
|
||||
new MochaUI.Window({
|
||||
|
@ -179,13 +179,13 @@ window.qBittorrent.PropTrackers ??= (() => {
|
|||
paddingHorizontal: 0,
|
||||
width: 500,
|
||||
height: 260,
|
||||
onCloseComplete: function() {
|
||||
onCloseComplete: () => {
|
||||
updateData();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
const editTrackerFN = function(element) {
|
||||
const editTrackerFN = (element) => {
|
||||
if (current_hash.length === 0)
|
||||
return;
|
||||
|
||||
|
@ -204,13 +204,13 @@ window.qBittorrent.PropTrackers ??= (() => {
|
|||
paddingHorizontal: 0,
|
||||
width: 500,
|
||||
height: 150,
|
||||
onCloseComplete: function() {
|
||||
onCloseComplete: () => {
|
||||
updateData();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
const removeTrackerFN = function(element) {
|
||||
const removeTrackerFN = (element) => {
|
||||
if (current_hash.length === 0)
|
||||
return;
|
||||
|
||||
|
@ -222,18 +222,18 @@ window.qBittorrent.PropTrackers ??= (() => {
|
|||
hash: current_hash,
|
||||
urls: selectedTrackers.map(encodeURIComponent).join("|")
|
||||
},
|
||||
onSuccess: function() {
|
||||
onSuccess: () => {
|
||||
updateData();
|
||||
}
|
||||
}).send();
|
||||
};
|
||||
|
||||
const clear = function() {
|
||||
const clear = () => {
|
||||
torrentTrackersTable.clear();
|
||||
};
|
||||
|
||||
new ClipboardJS("#CopyTrackerUrl", {
|
||||
text: function(trigger) {
|
||||
text: (trigger) => {
|
||||
return torrentTrackersTable.selectedRowsIds().join("\n");
|
||||
}
|
||||
});
|
||||
|
|
|
@ -42,7 +42,7 @@ window.qBittorrent.PropWebseeds ??= (() => {
|
|||
let current_hash = "";
|
||||
|
||||
let loadWebSeedsDataTimer = -1;
|
||||
const loadWebSeedsData = function() {
|
||||
const loadWebSeedsData = () => {
|
||||
if ($("propWebSeeds").hasClass("invisible")
|
||||
|| $("propertiesPanel_collapseToggle").hasClass("panel-expand")) {
|
||||
// Tab changed, don't do anything
|
||||
|
@ -62,11 +62,11 @@ window.qBittorrent.PropWebseeds ??= (() => {
|
|||
url: new URI("api/v2/torrents/webseeds").setData("hash", current_hash),
|
||||
method: "get",
|
||||
noCache: true,
|
||||
onComplete: function() {
|
||||
onComplete: () => {
|
||||
clearTimeout(loadWebSeedsDataTimer);
|
||||
loadWebSeedsDataTimer = loadWebSeedsData.delay(10000);
|
||||
},
|
||||
onSuccess: function(webseeds) {
|
||||
onSuccess: (webseeds) => {
|
||||
const selectedWebseeds = torrentWebseedsTable.selectedRowsIds();
|
||||
torrentWebseedsTable.clear();
|
||||
|
||||
|
@ -88,7 +88,7 @@ window.qBittorrent.PropWebseeds ??= (() => {
|
|||
}).send();
|
||||
};
|
||||
|
||||
const updateData = function() {
|
||||
const updateData = () => {
|
||||
clearTimeout(loadWebSeedsDataTimer);
|
||||
loadWebSeedsDataTimer = -1;
|
||||
loadWebSeedsData();
|
||||
|
@ -98,15 +98,15 @@ window.qBittorrent.PropWebseeds ??= (() => {
|
|||
targets: "#torrentWebseedsTableDiv",
|
||||
menu: "torrentWebseedsMenu",
|
||||
actions: {
|
||||
AddWebSeeds: function(element, ref) {
|
||||
AddWebSeeds: (element, ref) => {
|
||||
addWebseedFN();
|
||||
},
|
||||
EditWebSeed: function(element, ref) {
|
||||
EditWebSeed: (element, ref) => {
|
||||
// only allow editing of one row
|
||||
element.firstChild.click();
|
||||
editWebSeedFN(element);
|
||||
},
|
||||
RemoveWebSeed: function(element, ref) {
|
||||
RemoveWebSeed: (element, ref) => {
|
||||
removeWebSeedFN(element);
|
||||
}
|
||||
},
|
||||
|
@ -134,7 +134,7 @@ window.qBittorrent.PropWebseeds ??= (() => {
|
|||
}
|
||||
});
|
||||
|
||||
const addWebseedFN = function() {
|
||||
const addWebseedFN = () => {
|
||||
if (current_hash.length === 0)
|
||||
return;
|
||||
|
||||
|
@ -151,13 +151,13 @@ window.qBittorrent.PropWebseeds ??= (() => {
|
|||
paddingHorizontal: 0,
|
||||
width: 500,
|
||||
height: 260,
|
||||
onCloseComplete: function() {
|
||||
onCloseComplete: () => {
|
||||
updateData();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
const editWebSeedFN = function(element) {
|
||||
const editWebSeedFN = (element) => {
|
||||
if (current_hash.length === 0)
|
||||
return;
|
||||
|
||||
|
@ -180,13 +180,13 @@ window.qBittorrent.PropWebseeds ??= (() => {
|
|||
paddingHorizontal: 0,
|
||||
width: 500,
|
||||
height: 150,
|
||||
onCloseComplete: function() {
|
||||
onCloseComplete: () => {
|
||||
updateData();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
const removeWebSeedFN = function(element) {
|
||||
const removeWebSeedFN = (element) => {
|
||||
if (current_hash.length === 0)
|
||||
return;
|
||||
|
||||
|
@ -198,18 +198,18 @@ window.qBittorrent.PropWebseeds ??= (() => {
|
|||
hash: current_hash,
|
||||
urls: selectedWebseeds.map(webseed => encodeURIComponent(webseed)).join("|")
|
||||
},
|
||||
onSuccess: function() {
|
||||
onSuccess: () => {
|
||||
updateData();
|
||||
}
|
||||
}).send();
|
||||
};
|
||||
|
||||
const clear = function() {
|
||||
const clear = () => {
|
||||
torrentWebseedsTable.clear();
|
||||
};
|
||||
|
||||
new ClipboardJS("#CopyWebseedUrl", {
|
||||
text: function(trigger) {
|
||||
text: (trigger) => {
|
||||
return torrentWebseedsTable.selectedRowsIds().join("\n");
|
||||
}
|
||||
});
|
||||
|
|
|
@ -44,10 +44,10 @@ window.qBittorrent.MultiRename ??= (() => {
|
|||
replaceAll: false,
|
||||
fileEnumerationStart: 0,
|
||||
|
||||
onChanged: function(rows) {},
|
||||
onInvalidRegex: function(err) {},
|
||||
onRenamed: function(rows) {},
|
||||
onRenameError: function(err) {},
|
||||
onChanged: (rows) => {},
|
||||
onInvalidRegex: (err) => {},
|
||||
onRenamed: (rows) => {},
|
||||
onRenameError: (err) => {},
|
||||
|
||||
_inner_update: function() {
|
||||
const findMatches = (regex, str) => {
|
||||
|
|
|
@ -105,7 +105,7 @@ window.qBittorrent.Search ??= (() => {
|
|||
}
|
||||
});
|
||||
|
||||
const init = function() {
|
||||
const init = () => {
|
||||
// load "Search in" preference from local storage
|
||||
$("searchInTorrentName").value = (LocalPreferences.get("search_in_filter") === "names") ? "names" : "everywhere";
|
||||
const searchResultsTableContextMenu = new window.qBittorrent.ContextMenu.ContextMenu({
|
||||
|
@ -166,15 +166,15 @@ window.qBittorrent.Search ??= (() => {
|
|||
createSearchTab(id, pattern);
|
||||
};
|
||||
|
||||
const numSearchTabs = function() {
|
||||
const numSearchTabs = () => {
|
||||
return $("searchTabs").getElements("li").length;
|
||||
};
|
||||
|
||||
const getSearchIdFromTab = function(tab) {
|
||||
const getSearchIdFromTab = (tab) => {
|
||||
return Number(tab.id.substring(searchTabIdPrefix.length));
|
||||
};
|
||||
|
||||
const createSearchTab = function(searchId, pattern) {
|
||||
const createSearchTab = (searchId, pattern) => {
|
||||
const newTabId = `${searchTabIdPrefix}${searchId}`;
|
||||
const tabElem = new Element("a", {
|
||||
text: pattern,
|
||||
|
@ -233,7 +233,7 @@ window.qBittorrent.Search ??= (() => {
|
|||
updateSearchResultsData(searchId);
|
||||
};
|
||||
|
||||
const closeSearchTab = function(el) {
|
||||
const closeSearchTab = (el) => {
|
||||
const tab = el.closest("li.searchTab");
|
||||
if (!tab)
|
||||
return;
|
||||
|
@ -282,7 +282,7 @@ window.qBittorrent.Search ??= (() => {
|
|||
}
|
||||
};
|
||||
|
||||
const saveCurrentTabState = function() {
|
||||
const saveCurrentTabState = () => {
|
||||
const currentSearchId = getSelectedSearchId();
|
||||
if (!currentSearchId)
|
||||
return;
|
||||
|
@ -313,7 +313,7 @@ window.qBittorrent.Search ??= (() => {
|
|||
state.selectedRowIds = [...searchResultsTable.selectedRows];
|
||||
};
|
||||
|
||||
const setActiveTab = function(tab) {
|
||||
const setActiveTab = (tab) => {
|
||||
const searchId = getSearchIdFromTab(tab);
|
||||
if (searchId === getSelectedSearchId())
|
||||
return;
|
||||
|
@ -377,7 +377,7 @@ window.qBittorrent.Search ??= (() => {
|
|||
setupSearchTableEvents(true);
|
||||
};
|
||||
|
||||
const getStatusIconElement = function(text, image) {
|
||||
const getStatusIconElement = (text, image) => {
|
||||
return new Element("img", {
|
||||
alt: text,
|
||||
title: text,
|
||||
|
@ -388,7 +388,7 @@ window.qBittorrent.Search ??= (() => {
|
|||
});
|
||||
};
|
||||
|
||||
const updateStatusIconElement = function(searchId, text, image) {
|
||||
const updateStatusIconElement = (searchId, text, image) => {
|
||||
const searchTab = $(`${searchTabIdPrefix}${searchId}`);
|
||||
if (searchTab) {
|
||||
const statusIcon = searchTab.getElement(".statusIcon");
|
||||
|
@ -398,7 +398,7 @@ window.qBittorrent.Search ??= (() => {
|
|||
}
|
||||
};
|
||||
|
||||
const startSearch = function(pattern, category, plugins) {
|
||||
const startSearch = (pattern, category, plugins) => {
|
||||
searchPatternChanged = false;
|
||||
|
||||
const url = new URI("api/v2/search/start");
|
||||
|
@ -422,7 +422,7 @@ window.qBittorrent.Search ??= (() => {
|
|||
}).send();
|
||||
};
|
||||
|
||||
const stopSearch = function(searchId) {
|
||||
const stopSearch = (searchId) => {
|
||||
const url = new URI("api/v2/search/stop");
|
||||
new Request({
|
||||
url: url,
|
||||
|
@ -430,7 +430,7 @@ window.qBittorrent.Search ??= (() => {
|
|||
data: {
|
||||
id: searchId
|
||||
},
|
||||
onSuccess: function(response) {
|
||||
onSuccess: (response) => {
|
||||
resetSearchState(searchId);
|
||||
// not strictly necessary to do this when the tab is being closed, but there's no harm in it
|
||||
updateStatusIconElement(searchId, "QBT_TR(Search aborted)QBT_TR[CONTEXT=SearchJobWidget]", "images/task-reject.svg");
|
||||
|
@ -438,12 +438,12 @@ window.qBittorrent.Search ??= (() => {
|
|||
}).send();
|
||||
};
|
||||
|
||||
const getSelectedSearchId = function() {
|
||||
const getSelectedSearchId = () => {
|
||||
const selectedTab = $("searchTabs").getElement("li.selected");
|
||||
return selectedTab ? getSearchIdFromTab(selectedTab) : null;
|
||||
};
|
||||
|
||||
const startStopSearch = function() {
|
||||
const startStopSearch = () => {
|
||||
const currentSearchId = getSelectedSearchId();
|
||||
const state = searchState.get(currentSearchId);
|
||||
const isSearchRunning = state && state.running;
|
||||
|
@ -463,12 +463,12 @@ window.qBittorrent.Search ??= (() => {
|
|||
}
|
||||
};
|
||||
|
||||
const openSearchTorrentDescriptionUrl = function() {
|
||||
const openSearchTorrentDescriptionUrl = () => {
|
||||
for (const rowID of searchResultsTable.selectedRowsIds())
|
||||
window.open(searchResultsTable.getRow(rowID).full_data.descrLink, "_blank");
|
||||
};
|
||||
|
||||
const copySearchTorrentName = function() {
|
||||
const copySearchTorrentName = () => {
|
||||
const names = [];
|
||||
searchResultsTable.selectedRowsIds().each((rowId) => {
|
||||
names.push(searchResultsTable.getRow(rowId).full_data.fileName);
|
||||
|
@ -476,7 +476,7 @@ window.qBittorrent.Search ??= (() => {
|
|||
return names.join("\n");
|
||||
};
|
||||
|
||||
const copySearchTorrentDownloadLink = function() {
|
||||
const copySearchTorrentDownloadLink = () => {
|
||||
const urls = [];
|
||||
searchResultsTable.selectedRowsIds().each((rowId) => {
|
||||
urls.push(searchResultsTable.getRow(rowId).full_data.fileUrl);
|
||||
|
@ -484,7 +484,7 @@ window.qBittorrent.Search ??= (() => {
|
|||
return urls.join("\n");
|
||||
};
|
||||
|
||||
const copySearchTorrentDescriptionUrl = function() {
|
||||
const copySearchTorrentDescriptionUrl = () => {
|
||||
const urls = [];
|
||||
searchResultsTable.selectedRowsIds().each((rowId) => {
|
||||
urls.push(searchResultsTable.getRow(rowId).full_data.descrLink);
|
||||
|
@ -492,7 +492,7 @@ window.qBittorrent.Search ??= (() => {
|
|||
return urls.join("\n");
|
||||
};
|
||||
|
||||
const downloadSearchTorrent = function() {
|
||||
const downloadSearchTorrent = () => {
|
||||
const urls = [];
|
||||
for (const rowID of searchResultsTable.selectedRowsIds())
|
||||
urls.push(searchResultsTable.getRow(rowID).full_data.fileUrl);
|
||||
|
@ -504,7 +504,7 @@ window.qBittorrent.Search ??= (() => {
|
|||
showDownloadPage(urls);
|
||||
};
|
||||
|
||||
const manageSearchPlugins = function() {
|
||||
const manageSearchPlugins = () => {
|
||||
const id = "searchPlugins";
|
||||
if (!$(id)) {
|
||||
new MochaUI.Window({
|
||||
|
@ -522,10 +522,10 @@ window.qBittorrent.Search ??= (() => {
|
|||
onResize: window.qBittorrent.Misc.createDebounceHandler(500, (e) => {
|
||||
saveWindowSize(id);
|
||||
}),
|
||||
onBeforeBuild: function() {
|
||||
onBeforeBuild: () => {
|
||||
loadSearchPlugins();
|
||||
},
|
||||
onClose: function() {
|
||||
onClose: () => {
|
||||
clearTimeout(loadSearchPluginsTimer);
|
||||
loadSearchPluginsTimer = -1;
|
||||
}
|
||||
|
@ -533,12 +533,12 @@ window.qBittorrent.Search ??= (() => {
|
|||
}
|
||||
};
|
||||
|
||||
const loadSearchPlugins = function() {
|
||||
const loadSearchPlugins = () => {
|
||||
getPlugins();
|
||||
loadSearchPluginsTimer = loadSearchPlugins.delay(2000);
|
||||
};
|
||||
|
||||
const onSearchPatternChanged = function() {
|
||||
const onSearchPatternChanged = () => {
|
||||
const currentSearchId = getSelectedSearchId();
|
||||
const state = searchState.get(currentSearchId);
|
||||
const currentSearchPattern = $("searchPattern").value.trim();
|
||||
|
@ -553,11 +553,11 @@ window.qBittorrent.Search ??= (() => {
|
|||
}
|
||||
};
|
||||
|
||||
const categorySelected = function() {
|
||||
const categorySelected = () => {
|
||||
selectedCategory = $("categorySelect").value;
|
||||
};
|
||||
|
||||
const pluginSelected = function() {
|
||||
const pluginSelected = () => {
|
||||
selectedPlugin = $("pluginsSelect").value;
|
||||
|
||||
if (selectedPlugin !== prevSelectedPlugin) {
|
||||
|
@ -566,7 +566,7 @@ window.qBittorrent.Search ??= (() => {
|
|||
}
|
||||
};
|
||||
|
||||
const reselectCategory = function() {
|
||||
const reselectCategory = () => {
|
||||
for (let i = 0; i < $("categorySelect").options.length; ++i) {
|
||||
if ($("categorySelect").options[i].get("value") === selectedCategory)
|
||||
$("categorySelect").options[i].selected = true;
|
||||
|
@ -575,7 +575,7 @@ window.qBittorrent.Search ??= (() => {
|
|||
categorySelected();
|
||||
};
|
||||
|
||||
const reselectPlugin = function() {
|
||||
const reselectPlugin = () => {
|
||||
for (let i = 0; i < $("pluginsSelect").options.length; ++i) {
|
||||
if ($("pluginsSelect").options[i].get("value") === selectedPlugin)
|
||||
$("pluginsSelect").options[i].selected = true;
|
||||
|
@ -584,7 +584,7 @@ window.qBittorrent.Search ??= (() => {
|
|||
pluginSelected();
|
||||
};
|
||||
|
||||
const resetSearchState = function(searchId) {
|
||||
const resetSearchState = (searchId) => {
|
||||
document.getElementById("startSearchButton").lastChild.textContent = "QBT_TR(Search)QBT_TR[CONTEXT=SearchEngineWidget]";
|
||||
const state = searchState.get(searchId);
|
||||
if (state) {
|
||||
|
@ -642,7 +642,7 @@ window.qBittorrent.Search ??= (() => {
|
|||
reselectCategory();
|
||||
};
|
||||
|
||||
const getPlugins = function() {
|
||||
const getPlugins = () => {
|
||||
new Request.JSON({
|
||||
url: new URI("api/v2/search/plugins"),
|
||||
method: "get",
|
||||
|
@ -706,7 +706,7 @@ window.qBittorrent.Search ??= (() => {
|
|||
}).send();
|
||||
};
|
||||
|
||||
const getPlugin = function(name) {
|
||||
const getPlugin = (name) => {
|
||||
for (let i = 0; i < searchPlugins.length; ++i) {
|
||||
if (searchPlugins[i].name === name)
|
||||
return searchPlugins[i];
|
||||
|
@ -715,7 +715,7 @@ window.qBittorrent.Search ??= (() => {
|
|||
return null;
|
||||
};
|
||||
|
||||
const resetFilters = function() {
|
||||
const resetFilters = () => {
|
||||
searchText.filterPattern = "";
|
||||
$("searchInNameFilter").value = "";
|
||||
|
||||
|
@ -734,23 +734,23 @@ window.qBittorrent.Search ??= (() => {
|
|||
$("searchMaxSizePrefix").value = searchSizeFilter.maxUnit;
|
||||
};
|
||||
|
||||
const getSearchInTorrentName = function() {
|
||||
const getSearchInTorrentName = () => {
|
||||
return ($("searchInTorrentName").value === "names") ? "names" : "everywhere";
|
||||
};
|
||||
|
||||
const searchInTorrentName = function() {
|
||||
const searchInTorrentName = () => {
|
||||
LocalPreferences.set("search_in_filter", getSearchInTorrentName());
|
||||
searchFilterChanged();
|
||||
};
|
||||
|
||||
const searchSeedsFilterChanged = function() {
|
||||
const searchSeedsFilterChanged = () => {
|
||||
searchSeedsFilter.min = $("searchMinSeedsFilter").value;
|
||||
searchSeedsFilter.max = $("searchMaxSeedsFilter").value;
|
||||
|
||||
searchFilterChanged();
|
||||
};
|
||||
|
||||
const searchSizeFilterChanged = function() {
|
||||
const searchSizeFilterChanged = () => {
|
||||
searchSizeFilter.min = $("searchMinSizeFilter").value;
|
||||
searchSizeFilter.minUnit = $("searchMinSizePrefix").value;
|
||||
searchSizeFilter.max = $("searchMaxSizeFilter").value;
|
||||
|
@ -759,17 +759,17 @@ window.qBittorrent.Search ??= (() => {
|
|||
searchFilterChanged();
|
||||
};
|
||||
|
||||
const searchSizeFilterPrefixChanged = function() {
|
||||
const searchSizeFilterPrefixChanged = () => {
|
||||
if ((Number($("searchMinSizeFilter").value) !== 0) || (Number($("searchMaxSizeFilter").value) !== 0))
|
||||
searchSizeFilterChanged();
|
||||
};
|
||||
|
||||
const searchFilterChanged = function() {
|
||||
const searchFilterChanged = () => {
|
||||
searchResultsTable.updateTable();
|
||||
$("numSearchResultsVisible").textContent = searchResultsTable.getFilteredAndSortedRows().length;
|
||||
};
|
||||
|
||||
const setupSearchTableEvents = function(enable) {
|
||||
const setupSearchTableEvents = (enable) => {
|
||||
const clickHandler = (e) => { downloadSearchTorrent(); };
|
||||
if (enable) {
|
||||
$$(".searchTableRow").each((target) => {
|
||||
|
@ -881,7 +881,7 @@ window.qBittorrent.Search ??= (() => {
|
|||
};
|
||||
|
||||
new ClipboardJS(".copySearchDataToClipboard", {
|
||||
text: function(trigger) {
|
||||
text: (trigger) => {
|
||||
switch (trigger.id) {
|
||||
case "copySearchTorrentName":
|
||||
return copySearchTorrentName();
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
"use strict";
|
||||
|
||||
MochaUI.extend({
|
||||
addUpLimitSlider: function(hashes) {
|
||||
addUpLimitSlider: (hashes) => {
|
||||
if ($("uplimitSliderarea")) {
|
||||
// Get global upload limit
|
||||
let maximum = 500;
|
||||
|
@ -37,7 +37,7 @@ MochaUI.extend({
|
|||
url: "api/v2/transfer/uploadLimit",
|
||||
method: "get",
|
||||
data: {},
|
||||
onSuccess: function(data) {
|
||||
onSuccess: (data) => {
|
||||
if (data) {
|
||||
const tmp = data.toInt();
|
||||
if (tmp > 0) {
|
||||
|
@ -61,7 +61,7 @@ MochaUI.extend({
|
|||
steps: maximum,
|
||||
offset: 0,
|
||||
initialStep: up_limit.round(),
|
||||
onChange: function(pos) {
|
||||
onChange: (pos) => {
|
||||
if (pos > 0) {
|
||||
$("uplimitUpdatevalue").value = pos;
|
||||
$("upLimitUnit").style.visibility = "visible";
|
||||
|
@ -70,7 +70,7 @@ MochaUI.extend({
|
|||
$("uplimitUpdatevalue").value = "∞";
|
||||
$("upLimitUnit").style.visibility = "hidden";
|
||||
}
|
||||
}.bind(this)
|
||||
}
|
||||
});
|
||||
// Set default value
|
||||
if (up_limit === 0) {
|
||||
|
@ -89,7 +89,7 @@ MochaUI.extend({
|
|||
data: {
|
||||
hashes: hashes.join("|")
|
||||
},
|
||||
onSuccess: function(data) {
|
||||
onSuccess: (data) => {
|
||||
if (data) {
|
||||
let up_limit = data[hashes[0]];
|
||||
for (const key in data) {
|
||||
|
@ -104,7 +104,7 @@ MochaUI.extend({
|
|||
steps: maximum,
|
||||
offset: 0,
|
||||
initialStep: (up_limit / 1024.0).round(),
|
||||
onChange: function(pos) {
|
||||
onChange: (pos) => {
|
||||
if (pos > 0) {
|
||||
$("uplimitUpdatevalue").value = pos;
|
||||
$("upLimitUnit").style.visibility = "visible";
|
||||
|
@ -113,7 +113,7 @@ MochaUI.extend({
|
|||
$("uplimitUpdatevalue").value = "∞";
|
||||
$("upLimitUnit").style.visibility = "hidden";
|
||||
}
|
||||
}.bind(this)
|
||||
}
|
||||
});
|
||||
// Set default value
|
||||
if (up_limit === 0) {
|
||||
|
@ -133,7 +133,7 @@ MochaUI.extend({
|
|||
}
|
||||
},
|
||||
|
||||
addDlLimitSlider: function(hashes) {
|
||||
addDlLimitSlider: (hashes) => {
|
||||
if ($("dllimitSliderarea")) {
|
||||
// Get global upload limit
|
||||
let maximum = 500;
|
||||
|
@ -141,7 +141,7 @@ MochaUI.extend({
|
|||
url: "api/v2/transfer/downloadLimit",
|
||||
method: "get",
|
||||
data: {},
|
||||
onSuccess: function(data) {
|
||||
onSuccess: (data) => {
|
||||
if (data) {
|
||||
const tmp = data.toInt();
|
||||
if (tmp > 0) {
|
||||
|
@ -165,7 +165,7 @@ MochaUI.extend({
|
|||
steps: maximum,
|
||||
offset: 0,
|
||||
initialStep: dl_limit.round(),
|
||||
onChange: function(pos) {
|
||||
onChange: (pos) => {
|
||||
if (pos > 0) {
|
||||
$("dllimitUpdatevalue").value = pos;
|
||||
$("dlLimitUnit").style.visibility = "visible";
|
||||
|
@ -174,7 +174,7 @@ MochaUI.extend({
|
|||
$("dllimitUpdatevalue").value = "∞";
|
||||
$("dlLimitUnit").style.visibility = "hidden";
|
||||
}
|
||||
}.bind(this)
|
||||
}
|
||||
});
|
||||
// Set default value
|
||||
if (dl_limit === 0) {
|
||||
|
@ -193,7 +193,7 @@ MochaUI.extend({
|
|||
data: {
|
||||
hashes: hashes.join("|")
|
||||
},
|
||||
onSuccess: function(data) {
|
||||
onSuccess: (data) => {
|
||||
if (data) {
|
||||
let dl_limit = data[hashes[0]];
|
||||
for (const key in data) {
|
||||
|
@ -208,7 +208,7 @@ MochaUI.extend({
|
|||
steps: maximum,
|
||||
offset: 0,
|
||||
initialStep: (dl_limit / 1024.0).round(),
|
||||
onChange: function(pos) {
|
||||
onChange: (pos) => {
|
||||
if (pos > 0) {
|
||||
$("dllimitUpdatevalue").value = pos;
|
||||
$("dlLimitUnit").style.visibility = "visible";
|
||||
|
@ -217,7 +217,7 @@ MochaUI.extend({
|
|||
$("dllimitUpdatevalue").value = "∞";
|
||||
$("dlLimitUnit").style.visibility = "hidden";
|
||||
}
|
||||
}.bind(this)
|
||||
}
|
||||
});
|
||||
// Set default value
|
||||
if (dl_limit === 0) {
|
||||
|
|
|
@ -56,10 +56,10 @@
|
|||
hashes: hashesList,
|
||||
location: location
|
||||
},
|
||||
onSuccess: function() {
|
||||
onSuccess: () => {
|
||||
window.parent.qBittorrent.Client.closeWindows();
|
||||
},
|
||||
onFailure: function(xhr) {
|
||||
onFailure: (xhr) => {
|
||||
$("error_div").textContent = xhr.response;
|
||||
}
|
||||
}).send();
|
||||
|
|
|
@ -112,14 +112,14 @@
|
|||
seedingTimeLimit: seedingTimeLimitValue,
|
||||
inactiveSeedingTimeLimit: inactiveSeedingTimeLimitValue
|
||||
},
|
||||
onComplete: function() {
|
||||
onComplete: () => {
|
||||
window.parent.qBittorrent.Client.closeWindows();
|
||||
}
|
||||
}).send();
|
||||
});
|
||||
});
|
||||
|
||||
function getSelectedRadioValue(name) {
|
||||
const getSelectedRadioValue = (name) => {
|
||||
const radios = document.getElementsByName(name);
|
||||
|
||||
for (let i = 0; i < radios.length; ++i) {
|
||||
|
@ -127,9 +127,9 @@
|
|||
if (radio.checked)
|
||||
return radio.value;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
function setSelectedRadioValue(name, value) {
|
||||
const setSelectedRadioValue = (name, value) => {
|
||||
const radios = document.getElementsByName(name);
|
||||
|
||||
for (let i = 0; i < radios.length; ++i) {
|
||||
|
@ -137,9 +137,9 @@
|
|||
if (radio.value === value)
|
||||
radio.checked = true;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
function shareLimitChanged() {
|
||||
const shareLimitChanged = () => {
|
||||
const customShareLimit = getSelectedRadioValue("shareLimit") === "custom";
|
||||
$("setRatio").disabled = !customShareLimit;
|
||||
$("setTotalMinutes").disabled = !customShareLimit;
|
||||
|
@ -148,20 +148,20 @@
|
|||
enableInputBoxes();
|
||||
|
||||
$("save").disabled = !isFormValid();
|
||||
}
|
||||
};
|
||||
|
||||
function enableInputBoxes() {
|
||||
const enableInputBoxes = () => {
|
||||
$("ratio").disabled = $("setRatio").disabled || !$("setRatio").checked;
|
||||
$("totalMinutes").disabled = $("setTotalMinutes").disabled || !$("setTotalMinutes").checked;
|
||||
$("inactiveMinutes").disabled = $("setInactiveMinutes").disabled || !$("setInactiveMinutes").checked;
|
||||
|
||||
$("save").disabled = !isFormValid();
|
||||
}
|
||||
};
|
||||
|
||||
function isFormValid() {
|
||||
const isFormValid = () => {
|
||||
return !((getSelectedRadioValue("shareLimit") === "custom") && !$("setRatio").checked
|
||||
&& !$("setTotalMinutes").checked && !$("setInactiveMinutes").checked);
|
||||
}
|
||||
};
|
||||
</script>
|
||||
</head>
|
||||
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
"use strict";
|
||||
|
||||
const hashes = new URI().getData("hashes").split("|");
|
||||
const setUpLimit = function() {
|
||||
const setUpLimit = () => {
|
||||
const limit = $("uplimitUpdatevalue").value.toInt() * 1024;
|
||||
if (hashes[0] === "global") {
|
||||
new Request({
|
||||
|
@ -41,7 +41,7 @@
|
|||
data: {
|
||||
"limit": limit
|
||||
},
|
||||
onComplete: function() {
|
||||
onComplete: () => {
|
||||
window.parent.updateMainData();
|
||||
window.parent.qBittorrent.Client.closeWindows();
|
||||
}
|
||||
|
@ -55,7 +55,7 @@
|
|||
"hashes": hashes.join("|"),
|
||||
"limit": limit
|
||||
},
|
||||
onComplete: function() {
|
||||
onComplete: () => {
|
||||
window.parent.qBittorrent.Client.closeWindows();
|
||||
}
|
||||
}).send();
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
<script>
|
||||
"use strict";
|
||||
|
||||
(function() {
|
||||
(() => {
|
||||
MochaUI.initializeTabs("aboutTabs");
|
||||
|
||||
$("aboutAboutLink").addEventListener("click", () => {
|
||||
|
|
|
@ -32,11 +32,11 @@
|
|||
data: {
|
||||
hashes: hashes.join("|"),
|
||||
},
|
||||
onSuccess: function() {
|
||||
onSuccess: () => {
|
||||
updateMainData();
|
||||
window.qBittorrent.Client.closeWindow("confirmRecheckDialog");
|
||||
},
|
||||
onFailure: function() {
|
||||
onFailure: () => {
|
||||
alert("QBT_TR(Unable to recheck torrents.)QBT_TR[CONTEXT=HttpServer]");
|
||||
}
|
||||
}).send();
|
||||
|
|
|
@ -61,7 +61,7 @@
|
|||
data: {
|
||||
"delete_torrent_content_files": deleteCB.checked
|
||||
},
|
||||
onSuccess: function() {
|
||||
onSuccess: () => {
|
||||
prefDeleteContentFiles = deleteCB.checked;
|
||||
setRememberBtnEnabled(false);
|
||||
}
|
||||
|
@ -84,13 +84,13 @@
|
|||
"hashes": hashes.join("|"),
|
||||
"deleteFiles": deleteCB.checked
|
||||
},
|
||||
onSuccess: function() {
|
||||
onSuccess: () => {
|
||||
torrentsTable.deselectAll();
|
||||
updateMainData();
|
||||
updatePropertiesPanel();
|
||||
window.qBittorrent.Client.closeWindows();
|
||||
},
|
||||
onFailure: function() {
|
||||
onFailure: () => {
|
||||
alert("QBT_TR(Unable to delete torrents.)QBT_TR[CONTEXT=HttpServer]");
|
||||
},
|
||||
}).send();
|
||||
|
|
|
@ -93,7 +93,7 @@
|
|||
};
|
||||
};
|
||||
|
||||
const addCookie = function() {
|
||||
const addCookie = () => {
|
||||
const newRow = document.querySelector("#manageCookiesTable tr.newRow").cloneNode(true);
|
||||
newRow.querySelector(".removeCookie").addEventListener("click", (event) => {
|
||||
deleteCookie(event.target);
|
||||
|
@ -103,11 +103,11 @@
|
|||
return newRow;
|
||||
};
|
||||
|
||||
const deleteCookie = function(element) {
|
||||
const deleteCookie = (element) => {
|
||||
element.closest("tr").destroy();
|
||||
};
|
||||
|
||||
const save = function() {
|
||||
const save = () => {
|
||||
const rows = [...document.querySelectorAll("#manageCookiesTable tbody tr")].filter(e => !e.hasClass("invisible"));
|
||||
const cookies = rows.map(row => {
|
||||
const expDateValue = row.querySelector("td.expDate input").valueAsNumber;
|
||||
|
@ -142,7 +142,7 @@
|
|||
}).send();
|
||||
};
|
||||
|
||||
const loadCookies = function() {
|
||||
const loadCookies = () => {
|
||||
new Request.JSON({
|
||||
url: "api/v2/app/cookies",
|
||||
method: "get",
|
||||
|
@ -171,7 +171,7 @@
|
|||
}).send();
|
||||
};
|
||||
|
||||
const setup = function() {
|
||||
const setup = () => {
|
||||
loadCookies();
|
||||
|
||||
document.querySelector(".addCookie").addEventListener("click", (event) => {
|
||||
|
|
|
@ -114,19 +114,19 @@
|
|||
targets: ".categoriesFilterContextMenuTarget",
|
||||
menu: "categoriesFilterMenu",
|
||||
actions: {
|
||||
createCategory: function(element, ref) {
|
||||
createCategory: (element, ref) => {
|
||||
createCategoryFN();
|
||||
},
|
||||
createSubcategory: function(element, ref) {
|
||||
createSubcategory: (element, ref) => {
|
||||
createSubcategoryFN(Number(element.id));
|
||||
},
|
||||
editCategory: function(element, ref) {
|
||||
editCategory: (element, ref) => {
|
||||
editCategoryFN(Number(element.id));
|
||||
},
|
||||
deleteCategory: function(element, ref) {
|
||||
deleteCategory: (element, ref) => {
|
||||
removeCategoryFN(Number(element.id));
|
||||
},
|
||||
deleteUnusedCategories: function(element, ref) {
|
||||
deleteUnusedCategories: (element, ref) => {
|
||||
deleteUnusedCategoriesFN();
|
||||
},
|
||||
startTorrents: (element, ref) => {
|
||||
|
@ -156,13 +156,13 @@
|
|||
targets: ".tagsFilterContextMenuTarget",
|
||||
menu: "tagsFilterMenu",
|
||||
actions: {
|
||||
createTag: function(element, ref) {
|
||||
createTag: (element, ref) => {
|
||||
createTagFN();
|
||||
},
|
||||
deleteTag: function(element, ref) {
|
||||
deleteTag: (element, ref) => {
|
||||
removeTagFN(Number(element.id));
|
||||
},
|
||||
deleteUnusedTags: function(element, ref) {
|
||||
deleteUnusedTags: (element, ref) => {
|
||||
deleteUnusedTagsFN();
|
||||
},
|
||||
startTorrents: (element, ref) => {
|
||||
|
@ -192,7 +192,7 @@
|
|||
targets: ".trackersFilterContextMenuTarget",
|
||||
menu: "trackersFilterMenu",
|
||||
actions: {
|
||||
deleteTracker: function(element, ref) {
|
||||
deleteTracker: (element, ref) => {
|
||||
deleteTrackerFN(element.id);
|
||||
},
|
||||
startTorrents: (element, ref) => {
|
||||
|
|
|
@ -37,7 +37,7 @@
|
|||
};
|
||||
};
|
||||
|
||||
const setup = function() {
|
||||
const setup = () => {
|
||||
new Keyboard({
|
||||
defaultEventType: "keydown",
|
||||
events: {
|
||||
|
@ -58,7 +58,7 @@
|
|||
$("newPluginPath").select();
|
||||
};
|
||||
|
||||
const newPluginOk = function() {
|
||||
const newPluginOk = () => {
|
||||
const path = $("newPluginPath").value.trim();
|
||||
if (path) {
|
||||
new Request({
|
||||
|
@ -67,7 +67,7 @@
|
|||
data: {
|
||||
sources: path,
|
||||
},
|
||||
onRequest: function() {
|
||||
onRequest: () => {
|
||||
window.qBittorrent.SearchPlugins.closeSearchWindow("installSearchPlugin");
|
||||
}
|
||||
}).send();
|
||||
|
|
|
@ -361,14 +361,14 @@
|
|||
url: url,
|
||||
method: "get",
|
||||
noCache: true,
|
||||
onFailure: function(response) {
|
||||
onFailure: (response) => {
|
||||
const errorDiv = $("error_div");
|
||||
if (errorDiv)
|
||||
errorDiv.textContent = "QBT_TR(qBittorrent client is not reachable)QBT_TR[CONTEXT=HttpServer]";
|
||||
tableInfo[curTab].progress = false;
|
||||
syncLogWithInterval(10000);
|
||||
},
|
||||
onSuccess: function(response) {
|
||||
onSuccess: (response) => {
|
||||
$("error_div").textContent = "";
|
||||
|
||||
if ($("logTabColumn").hasClass("invisible"))
|
||||
|
@ -412,7 +412,7 @@
|
|||
};
|
||||
|
||||
new ClipboardJS(".copyLogDataToClipboard", {
|
||||
text: function() {
|
||||
text: () => {
|
||||
const msg = [];
|
||||
tableInfo[currentSelectedTab].instance.selectedRowsIds().forEach((rowId) => {
|
||||
msg.push(tableInfo[currentSelectedTab].instance.getRow(rowId).full_data[(currentSelectedTab === "main") ? "message" : "ip"]);
|
||||
|
|
|
@ -1746,7 +1746,7 @@ Use ';' to split multiple entries. Can use wildcard '*'.)QBT_TR[CONTEXT=OptionsD
|
|||
input.value = max;
|
||||
};
|
||||
|
||||
const updateFileLogEnabled = function() {
|
||||
const updateFileLogEnabled = () => {
|
||||
const isFileLogEnabled = $("filelog_checkbox").checked;
|
||||
$("filelog_save_path_input").disabled = !isFileLogEnabled;
|
||||
$("filelog_backup_checkbox").disabled = !isFileLogEnabled;
|
||||
|
@ -1756,12 +1756,12 @@ Use ';' to split multiple entries. Can use wildcard '*'.)QBT_TR[CONTEXT=OptionsD
|
|||
updateFileLogDeleteEnabled();
|
||||
};
|
||||
|
||||
const updateFileLogBackupEnabled = function() {
|
||||
const updateFileLogBackupEnabled = () => {
|
||||
const pros = $("filelog_backup_checkbox").getProperties("disabled", "checked");
|
||||
$("filelog_max_size_input").disabled = pros.disabled || !pros.checked;
|
||||
};
|
||||
|
||||
const updateFileLogDeleteEnabled = function() {
|
||||
const updateFileLogDeleteEnabled = () => {
|
||||
const pros = $("filelog_delete_old_checkbox").getProperties("disabled", "checked");
|
||||
$("filelog_age_input").disabled = pros.disabled || !pros.checked;
|
||||
$("filelog_age_type_select").disabled = pros.disabled || !pros.checked;
|
||||
|
@ -1770,7 +1770,7 @@ Use ';' to split multiple entries. Can use wildcard '*'.)QBT_TR[CONTEXT=OptionsD
|
|||
// Downloads tab
|
||||
let watchedFoldersTable;
|
||||
|
||||
const updateTempDirEnabled = function() {
|
||||
const updateTempDirEnabled = () => {
|
||||
const isTempDirEnabled = $("temppath_checkbox").checked;
|
||||
$("temppath_text").disabled = !isTempDirEnabled;
|
||||
};
|
||||
|
@ -1835,22 +1835,22 @@ Use ';' to split multiple entries. Can use wildcard '*'.)QBT_TR[CONTEXT=OptionsD
|
|||
return folders;
|
||||
};
|
||||
|
||||
const updateExcludedFileNamesEnabled = function() {
|
||||
const updateExcludedFileNamesEnabled = () => {
|
||||
const isAExcludedFileNamesEnabled = $("excludedFileNamesCheckbox").checked;
|
||||
$("excludedFileNamesTextarea").disabled = !isAExcludedFileNamesEnabled;
|
||||
};
|
||||
|
||||
const updateExportDirEnabled = function() {
|
||||
const updateExportDirEnabled = () => {
|
||||
const isExportDirEnabled = $("exportdir_checkbox").checked;
|
||||
$("exportdir_text").disabled = !isExportDirEnabled;
|
||||
};
|
||||
|
||||
const updateExportDirFinEnabled = function() {
|
||||
const updateExportDirFinEnabled = () => {
|
||||
const isExportDirFinEnabled = $("exportdirfin_checkbox").checked;
|
||||
$("exportdirfin_text").disabled = !isExportDirFinEnabled;
|
||||
};
|
||||
|
||||
const updateMailNotification = function() {
|
||||
const updateMailNotification = () => {
|
||||
const isMailNotificationEnabled = $("mail_notification_checkbox").checked;
|
||||
$("src_email_txt").disabled = !isMailNotificationEnabled;
|
||||
$("dest_email_txt").disabled = !isMailNotificationEnabled;
|
||||
|
@ -1865,65 +1865,65 @@ Use ';' to split multiple entries. Can use wildcard '*'.)QBT_TR[CONTEXT=OptionsD
|
|||
}
|
||||
};
|
||||
|
||||
const updateMailAuthSettings = function() {
|
||||
const updateMailAuthSettings = () => {
|
||||
const isMailAuthEnabled = $("mail_auth_checkbox").checked;
|
||||
$("mail_username_text").disabled = !isMailAuthEnabled;
|
||||
$("mail_password_text").disabled = !isMailAuthEnabled;
|
||||
};
|
||||
|
||||
const sendTestEmail = function() {
|
||||
const sendTestEmail = () => {
|
||||
new Request({
|
||||
url: "api/v2/app/sendTestEmail",
|
||||
method: "post",
|
||||
onFailure: function() {
|
||||
onFailure: () => {
|
||||
alert("QBT_TR(Could not contact qBittorrent)QBT_TR[CONTEXT=HttpServer]");
|
||||
},
|
||||
onSuccess: function() {
|
||||
onSuccess: () => {
|
||||
alert("QBT_TR(Attempted to send email. Check your inbox to confirm success)QBT_TR[CONTEXT=OptionsDialog]");
|
||||
}
|
||||
}).send();
|
||||
};
|
||||
|
||||
const updateAutoRunOnTorrentAdded = function() {
|
||||
const updateAutoRunOnTorrentAdded = () => {
|
||||
const isAutoRunOnTorrentAddedEnabled = $("autorunOnTorrentAddedCheckbox").checked;
|
||||
$("autorunOnTorrentAddedProgram").disabled = !isAutoRunOnTorrentAddedEnabled;
|
||||
};
|
||||
|
||||
const updateAutoRun = function() {
|
||||
const updateAutoRun = () => {
|
||||
const isAutoRunEnabled = $("autorun_checkbox").checked;
|
||||
$("autorunProg_txt").disabled = !isAutoRunEnabled;
|
||||
};
|
||||
|
||||
// Connection tab
|
||||
|
||||
const updateMaxConnecEnabled = function() {
|
||||
const updateMaxConnecEnabled = () => {
|
||||
const isMaxConnecEnabled = $("max_connec_checkbox").checked;
|
||||
$("max_connec_value").disabled = !isMaxConnecEnabled;
|
||||
};
|
||||
|
||||
const updateMaxConnecPerTorrentEnabled = function() {
|
||||
const updateMaxConnecPerTorrentEnabled = () => {
|
||||
const isMaxConnecPerTorrentEnabled = $("max_connec_per_torrent_checkbox").checked;
|
||||
$("max_connec_per_torrent_value").disabled = !isMaxConnecPerTorrentEnabled;
|
||||
};
|
||||
|
||||
const updateMaxUploadsEnabled = function() {
|
||||
const updateMaxUploadsEnabled = () => {
|
||||
const isMaxUploadsEnabled = $("max_uploads_checkbox").checked;
|
||||
$("max_uploads_value").disabled = !isMaxUploadsEnabled;
|
||||
};
|
||||
|
||||
const updateMaxUploadsPerTorrentEnabled = function() {
|
||||
const updateMaxUploadsPerTorrentEnabled = () => {
|
||||
const isMaxUploadsPerTorrentEnabled = $("max_uploads_per_torrent_checkbox").checked;
|
||||
$("max_uploads_per_torrent_value").disabled = !isMaxUploadsPerTorrentEnabled;
|
||||
};
|
||||
|
||||
const updateI2PSettingsEnabled = function() {
|
||||
const updateI2PSettingsEnabled = () => {
|
||||
const isI2PEnabled = $("i2pEnabledCheckbox").checked;
|
||||
$("i2pAddress").disabled = !isI2PEnabled;
|
||||
$("i2pPort").disabled = !isI2PEnabled;
|
||||
$("i2pMixedMode").disabled = !isI2PEnabled;
|
||||
};
|
||||
|
||||
const updatePeerProxySettings = function() {
|
||||
const updatePeerProxySettings = () => {
|
||||
const proxyType = $("peer_proxy_type_select").value;
|
||||
const isProxyDisabled = (proxyType === "None");
|
||||
const isProxySocks4 = (proxyType === "SOCKS4");
|
||||
|
@ -1941,7 +1941,7 @@ Use ';' to split multiple entries. Can use wildcard '*'.)QBT_TR[CONTEXT=OptionsD
|
|||
updatePeerProxyAuthSettings();
|
||||
};
|
||||
|
||||
const updatePeerProxyAuthSettings = function() {
|
||||
const updatePeerProxyAuthSettings = () => {
|
||||
const proxyType = $("peer_proxy_type_select").value;
|
||||
const isProxyDisabled = (proxyType === "None");
|
||||
const isPeerProxyAuthEnabled = (!$("peer_proxy_auth_checkbox").disabled && $("peer_proxy_auth_checkbox").checked);
|
||||
|
@ -1949,13 +1949,13 @@ Use ';' to split multiple entries. Can use wildcard '*'.)QBT_TR[CONTEXT=OptionsD
|
|||
$("peer_proxy_password_text").disabled = (isProxyDisabled || !isPeerProxyAuthEnabled);
|
||||
};
|
||||
|
||||
const updateFilterSettings = function() {
|
||||
const updateFilterSettings = () => {
|
||||
const isIPFilterEnabled = $("ipfilter_text_checkbox").checked;
|
||||
$("ipfilter_text").disabled = !isIPFilterEnabled;
|
||||
};
|
||||
|
||||
// Speed tab
|
||||
const updateSchedulingEnabled = function() {
|
||||
const updateSchedulingEnabled = () => {
|
||||
const isLimitSchedulingEnabled = $("limitSchedulingCheckbox").checked;
|
||||
$("schedule_from_hour").disabled = !isLimitSchedulingEnabled;
|
||||
$("schedule_from_min").disabled = !isLimitSchedulingEnabled;
|
||||
|
@ -1965,7 +1965,7 @@ Use ';' to split multiple entries. Can use wildcard '*'.)QBT_TR[CONTEXT=OptionsD
|
|||
};
|
||||
|
||||
// Bittorrent tab
|
||||
const updateQueueingSystem = function() {
|
||||
const updateQueueingSystem = () => {
|
||||
const isQueueingEnabled = $("queueing_checkbox").checked;
|
||||
$("max_active_dl_value").disabled = !isQueueingEnabled;
|
||||
$("max_active_up_value").disabled = !isQueueingEnabled;
|
||||
|
@ -1974,14 +1974,14 @@ Use ';' to split multiple entries. Can use wildcard '*'.)QBT_TR[CONTEXT=OptionsD
|
|||
updateSlowTorrentsSettings();
|
||||
};
|
||||
|
||||
const updateSlowTorrentsSettings = function() {
|
||||
const updateSlowTorrentsSettings = () => {
|
||||
const isDontCountSlowTorrentsEnabled = (!$("dont_count_slow_torrents_checkbox").disabled) && $("dont_count_slow_torrents_checkbox").checked;
|
||||
$("dl_rate_threshold").disabled = !isDontCountSlowTorrentsEnabled;
|
||||
$("ul_rate_threshold").disabled = !isDontCountSlowTorrentsEnabled;
|
||||
$("torrent_inactive_timer").disabled = !isDontCountSlowTorrentsEnabled;
|
||||
};
|
||||
|
||||
const updateMaxRatioTimeEnabled = function() {
|
||||
const updateMaxRatioTimeEnabled = () => {
|
||||
const isMaxRatioEnabled = $("max_ratio_checkbox").checked;
|
||||
$("max_ratio_value").disabled = !isMaxRatioEnabled;
|
||||
|
||||
|
@ -1994,44 +1994,44 @@ Use ';' to split multiple entries. Can use wildcard '*'.)QBT_TR[CONTEXT=OptionsD
|
|||
$("max_ratio_act").disabled = !(isMaxRatioEnabled || isMaxSeedingTimeEnabled || isMaxInactiveSeedingTimeEnabled);
|
||||
};
|
||||
|
||||
const updateAddTrackersEnabled = function() {
|
||||
const updateAddTrackersEnabled = () => {
|
||||
const isAddTrackersEnabled = $("add_trackers_checkbox").checked;
|
||||
$("add_trackers_textarea").disabled = !isAddTrackersEnabled;
|
||||
};
|
||||
|
||||
// WebUI tab
|
||||
const updateHttpsSettings = function() {
|
||||
const updateHttpsSettings = () => {
|
||||
const isUseHttpsEnabled = $("use_https_checkbox").checked;
|
||||
$("ssl_cert_text").disabled = !isUseHttpsEnabled;
|
||||
$("ssl_key_text").disabled = !isUseHttpsEnabled;
|
||||
};
|
||||
|
||||
const updateBypasssAuthSettings = function() {
|
||||
const updateBypasssAuthSettings = () => {
|
||||
const isBypassAuthSubnetWhitelistEnabled = $("bypass_auth_subnet_whitelist_checkbox").checked;
|
||||
$("bypass_auth_subnet_whitelist_textarea").disabled = !isBypassAuthSubnetWhitelistEnabled;
|
||||
};
|
||||
|
||||
const updateAlternativeWebUISettings = function() {
|
||||
const updateAlternativeWebUISettings = () => {
|
||||
const isUseAlternativeWebUIEnabled = $("use_alt_webui_checkbox").checked;
|
||||
$("webui_files_location_textarea").disabled = !isUseAlternativeWebUIEnabled;
|
||||
};
|
||||
|
||||
const updateHostHeaderValidationSettings = function() {
|
||||
const updateHostHeaderValidationSettings = () => {
|
||||
const isHostHeaderValidationEnabled = $("host_header_validation_checkbox").checked;
|
||||
$("webui_domain_textarea").disabled = !isHostHeaderValidationEnabled;
|
||||
};
|
||||
|
||||
const updateWebUICustomHTTPHeadersSettings = function() {
|
||||
const updateWebUICustomHTTPHeadersSettings = () => {
|
||||
const isEnabled = $("webUIUseCustomHTTPHeadersCheckbox").checked;
|
||||
$("webUICustomHTTPHeadersTextarea").disabled = !isEnabled;
|
||||
};
|
||||
|
||||
const updateWebUIReverseProxySettings = function() {
|
||||
const updateWebUIReverseProxySettings = () => {
|
||||
const isEnabled = $("webUIReverseProxySupportCheckbox").checked;
|
||||
$("webUIReverseProxiesListTextarea").disabled = !isEnabled;
|
||||
};
|
||||
|
||||
const updateDynDnsSettings = function() {
|
||||
const updateDynDnsSettings = () => {
|
||||
const isDynDnsEnabled = $("use_dyndns_checkbox").checked;
|
||||
$("dyndns_select").disabled = !isDynDnsEnabled;
|
||||
$("dyndns_domain_text").disabled = !isDynDnsEnabled;
|
||||
|
@ -2039,21 +2039,21 @@ Use ';' to split multiple entries. Can use wildcard '*'.)QBT_TR[CONTEXT=OptionsD
|
|||
$("dyndns_password_text").disabled = !isDynDnsEnabled;
|
||||
};
|
||||
|
||||
const registerDynDns = function() {
|
||||
const registerDynDns = () => {
|
||||
if ($("dyndns_select").value.toInt() === 1)
|
||||
window.open("http://www.no-ip.com/services/managed_dns/free_dynamic_dns.html", "NO-IP Registration");
|
||||
else
|
||||
window.open("https://www.dyndns.com/account/services/hosts/add.html", "DynDNS Registration");
|
||||
};
|
||||
|
||||
const generateRandomPort = function() {
|
||||
const generateRandomPort = () => {
|
||||
const min = 1024;
|
||||
const max = 65535;
|
||||
const port = Math.floor(Math.random() * (max - min + 1) + min);
|
||||
$("port_value").value = port;
|
||||
};
|
||||
|
||||
const time_padding = function(val) {
|
||||
const time_padding = (val) => {
|
||||
let ret = val.toString();
|
||||
if (ret.length === 1)
|
||||
ret = "0" + ret;
|
||||
|
@ -2061,17 +2061,17 @@ Use ';' to split multiple entries. Can use wildcard '*'.)QBT_TR[CONTEXT=OptionsD
|
|||
};
|
||||
|
||||
// Advanced Tab
|
||||
const updateNetworkInterfaces = function(default_iface, default_iface_name) {
|
||||
const updateNetworkInterfaces = (default_iface, default_iface_name) => {
|
||||
const url = "api/v2/app/networkInterfaceList";
|
||||
$("networkInterface").getChildren().each(c => c.destroy());
|
||||
new Request.JSON({
|
||||
url: url,
|
||||
method: "get",
|
||||
noCache: true,
|
||||
onFailure: function() {
|
||||
onFailure: () => {
|
||||
alert("Could not contact qBittorrent");
|
||||
},
|
||||
onSuccess: function(ifaces) {
|
||||
onSuccess: (ifaces) => {
|
||||
if (!Array.isArray(ifaces))
|
||||
return;
|
||||
|
||||
|
@ -2088,7 +2088,7 @@ Use ';' to split multiple entries. Can use wildcard '*'.)QBT_TR[CONTEXT=OptionsD
|
|||
}).send();
|
||||
};
|
||||
|
||||
const updateInterfaceAddresses = function(iface, default_addr) {
|
||||
const updateInterfaceAddresses = (iface, default_addr) => {
|
||||
const url = "api/v2/app/networkInterfaceAddressList";
|
||||
$("optionalIPAddressToBind").getChildren().each(c => c.destroy());
|
||||
new Request.JSON({
|
||||
|
@ -2098,10 +2098,10 @@ Use ';' to split multiple entries. Can use wildcard '*'.)QBT_TR[CONTEXT=OptionsD
|
|||
data: {
|
||||
"iface": iface
|
||||
},
|
||||
onFailure: function() {
|
||||
onFailure: () => {
|
||||
alert("Could not contact qBittorrent");
|
||||
},
|
||||
onSuccess: function(addresses) {
|
||||
onSuccess: (addresses) => {
|
||||
if (!addresses)
|
||||
return;
|
||||
|
||||
|
@ -2128,7 +2128,7 @@ Use ';' to split multiple entries. Can use wildcard '*'.)QBT_TR[CONTEXT=OptionsD
|
|||
$("locale_select").value = selected;
|
||||
};
|
||||
|
||||
const loadPreferences = function() {
|
||||
const loadPreferences = () => {
|
||||
window.parent.qBittorrent.Cache.preferences.init({
|
||||
onSuccess: (pref) => {
|
||||
// Behavior tab
|
||||
|
@ -2546,7 +2546,7 @@ Use ';' to split multiple entries. Can use wildcard '*'.)QBT_TR[CONTEXT=OptionsD
|
|||
});
|
||||
};
|
||||
|
||||
const applyPreferences = function() {
|
||||
const applyPreferences = () => {
|
||||
const settings = {};
|
||||
// Validate form data
|
||||
|
||||
|
@ -3005,11 +3005,11 @@ Use ';' to split multiple entries. Can use wildcard '*'.)QBT_TR[CONTEXT=OptionsD
|
|||
// Send it to qBT
|
||||
window.parent.qBittorrent.Cache.preferences.set({
|
||||
data: settings,
|
||||
onFailure: function() {
|
||||
onFailure: () => {
|
||||
alert("QBT_TR(Unable to save program preferences, qBittorrent is probably unreachable.)QBT_TR[CONTEXT=HttpServer]");
|
||||
window.parent.qBittorrent.Client.closeWindows();
|
||||
},
|
||||
onSuccess: function() {
|
||||
onSuccess: () => {
|
||||
// Close window
|
||||
window.parent.location.reload();
|
||||
window.parent.qBittorrent.Client.closeWindows();
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
<script>
|
||||
"use strict";
|
||||
|
||||
(function() {
|
||||
(() => {
|
||||
// Tabs
|
||||
MochaUI.initializeTabs("preferencesTabs");
|
||||
|
||||
|
|
|
@ -92,7 +92,7 @@
|
|||
let prevOffsetLeft;
|
||||
let prevOffsetTop;
|
||||
|
||||
const setup = function() {
|
||||
const setup = () => {
|
||||
searchPluginsTable = new window.qBittorrent.DynamicTable.SearchPluginsTable();
|
||||
searchPluginsTableContextMenu = new window.qBittorrent.ContextMenu.SearchPluginsTableContextMenu({
|
||||
targets: ".searchPluginsTableRow",
|
||||
|
@ -107,11 +107,11 @@
|
|||
updateTable();
|
||||
};
|
||||
|
||||
const closeSearchWindow = function(id) {
|
||||
const closeSearchWindow = (id) => {
|
||||
window.parent.MochaUI.closeWindow(window.parent.$(id));
|
||||
};
|
||||
|
||||
const installPlugin = function(path) {
|
||||
const installPlugin = (path) => {
|
||||
new MochaUI.Window({
|
||||
id: "installSearchPlugin",
|
||||
icon: "images/qbittorrent-tray.svg",
|
||||
|
@ -128,7 +128,7 @@
|
|||
});
|
||||
};
|
||||
|
||||
const uninstallPlugin = function() {
|
||||
const uninstallPlugin = () => {
|
||||
const plugins = searchPluginsTable.selectedRowsIds().join("|");
|
||||
const url = new URI("api/v2/search/uninstallPlugin");
|
||||
new Request({
|
||||
|
@ -140,7 +140,7 @@
|
|||
}).send();
|
||||
};
|
||||
|
||||
const enablePlugin = function() {
|
||||
const enablePlugin = () => {
|
||||
const plugins = searchPluginsTable.selectedRowsIds();
|
||||
let enable = true;
|
||||
if (plugins && plugins.length)
|
||||
|
@ -157,7 +157,7 @@
|
|||
}).send();
|
||||
};
|
||||
|
||||
const checkForUpdates = function() {
|
||||
const checkForUpdates = () => {
|
||||
const url = new URI("api/v2/search/updatePlugins");
|
||||
new Request({
|
||||
url: url,
|
||||
|
@ -165,7 +165,7 @@
|
|||
}).send();
|
||||
};
|
||||
|
||||
const calculateContextMenuOffsets = function() {
|
||||
const calculateContextMenuOffsets = () => {
|
||||
prevOffsetLeft = document.getElementById("searchPlugins").getBoundingClientRect().left;
|
||||
prevOffsetTop = document.getElementById("searchPlugins").getBoundingClientRect().top;
|
||||
|
||||
|
@ -175,13 +175,13 @@
|
|||
};
|
||||
};
|
||||
|
||||
const updateSearchPluginsTableContextMenuOffset = function() {
|
||||
const updateSearchPluginsTableContextMenuOffset = () => {
|
||||
// only re-calculate if window has moved
|
||||
if ((prevOffsetLeft !== document.getElementById("searchPlugins").getBoundingClientRect().left) || (prevOffsetTop !== document.getElementById("searchPlugins").getBoundingClientRect().top))
|
||||
searchPluginsTableContextMenu.options.offsets = calculateContextMenuOffsets();
|
||||
};
|
||||
|
||||
const setupSearchPluginTableEvents = function(enable) {
|
||||
const setupSearchPluginTableEvents = (enable) => {
|
||||
const clickHandler = (e) => { enablePlugin(); };
|
||||
const menuHandler = (e) => { updateSearchPluginsTableContextMenuOffset(); };
|
||||
if (enable) {
|
||||
|
@ -198,7 +198,7 @@
|
|||
}
|
||||
};
|
||||
|
||||
const updateTable = function() {
|
||||
const updateTable = () => {
|
||||
// clear event listeners
|
||||
setupSearchPluginTableEvents(false);
|
||||
|
||||
|
|
|
@ -32,75 +32,75 @@
|
|||
targets: ".torrentsTableContextMenuTarget",
|
||||
menu: "torrentsTableMenu",
|
||||
actions: {
|
||||
start: function(element, ref) {
|
||||
start: (element, ref) => {
|
||||
startFN();
|
||||
},
|
||||
stop: function(element, ref) {
|
||||
stop: (element, ref) => {
|
||||
stopFN();
|
||||
},
|
||||
forceStart: function(element, ref) {
|
||||
forceStart: (element, ref) => {
|
||||
setForceStartFN();
|
||||
},
|
||||
|
||||
delete: function(element, ref) {
|
||||
delete: (element, ref) => {
|
||||
deleteSelectedTorrentsFN();
|
||||
},
|
||||
|
||||
setLocation: function(element, ref) {
|
||||
setLocation: (element, ref) => {
|
||||
setLocationFN();
|
||||
},
|
||||
|
||||
rename: function(element, ref) {
|
||||
rename: (element, ref) => {
|
||||
renameFN();
|
||||
},
|
||||
renameFiles: function(element, ref) {
|
||||
renameFiles: (element, ref) => {
|
||||
renameFilesFN();
|
||||
},
|
||||
queueTop: function(element, ref) {
|
||||
queueTop: (element, ref) => {
|
||||
setQueuePositionFN("topPrio");
|
||||
},
|
||||
queueUp: function(element, ref) {
|
||||
queueUp: (element, ref) => {
|
||||
setQueuePositionFN("increasePrio");
|
||||
},
|
||||
queueDown: function(element, ref) {
|
||||
queueDown: (element, ref) => {
|
||||
setQueuePositionFN("decreasePrio");
|
||||
},
|
||||
queueBottom: function(element, ref) {
|
||||
queueBottom: (element, ref) => {
|
||||
setQueuePositionFN("bottomPrio");
|
||||
},
|
||||
|
||||
downloadLimit: function(element, ref) {
|
||||
downloadLimit: (element, ref) => {
|
||||
downloadLimitFN();
|
||||
},
|
||||
uploadLimit: function(element, ref) {
|
||||
uploadLimit: (element, ref) => {
|
||||
uploadLimitFN();
|
||||
},
|
||||
shareRatio: function(element, ref) {
|
||||
shareRatio: (element, ref) => {
|
||||
shareRatioFN();
|
||||
},
|
||||
|
||||
sequentialDownload: function(element, ref) {
|
||||
sequentialDownload: (element, ref) => {
|
||||
toggleSequentialDownloadFN();
|
||||
},
|
||||
firstLastPiecePrio: function(element, ref) {
|
||||
firstLastPiecePrio: (element, ref) => {
|
||||
toggleFirstLastPiecePrioFN();
|
||||
},
|
||||
|
||||
autoTorrentManagement: function(element, ref) {
|
||||
autoTorrentManagement: (element, ref) => {
|
||||
autoTorrentManagementFN();
|
||||
},
|
||||
forceRecheck: function(element, ref) {
|
||||
forceRecheck: (element, ref) => {
|
||||
recheckFN();
|
||||
},
|
||||
forceReannounce: function(element, ref) {
|
||||
forceReannounce: (element, ref) => {
|
||||
reannounceFN();
|
||||
},
|
||||
|
||||
superSeeding: function(element, ref) {
|
||||
superSeeding: (element, ref) => {
|
||||
setSuperSeedingFN(!ref.getItemChecked("superSeeding"));
|
||||
},
|
||||
|
||||
exportTorrent: function(element, ref) {
|
||||
exportTorrent: (element, ref) => {
|
||||
exportTorrentFN();
|
||||
}
|
||||
},
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
|
||||
"use strict";
|
||||
|
||||
function submitLoginForm(event) {
|
||||
const submitLoginForm = (event) => {
|
||||
event.preventDefault();
|
||||
const errorMsgElement = document.getElementById("error_msg");
|
||||
|
||||
|
@ -56,7 +56,7 @@ function submitLoginForm(event) {
|
|||
|
||||
// clear the field
|
||||
passwordElement.value = "";
|
||||
}
|
||||
};
|
||||
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
const loginForm = document.getElementById("loginform");
|
||||
|
|
Loading…
Reference in a new issue