WebUI: enforce parentheses around operators

PR #20696.
This commit is contained in:
Chocobo1 2024-04-15 12:50:07 +08:00 committed by GitHub
parent 6c82d5e305
commit d7cded54e4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
12 changed files with 67 additions and 57 deletions

View File

@ -8,6 +8,14 @@
"html"
],
"rules": {
"no-mixed-operators": [
"error",
{
"groups": [
["&", "|", "^", "~", "<<", ">>", ">>>", "==", "!=", "===", "!==", ">", ">=", "<", "<=", "&&", "||", "in", "instanceof"]
]
}
],
"no-undef": "off",
"no-unused-vars": "off",
"nonblock-statement-body-position": ["error", "below"],

View File

@ -40,7 +40,7 @@
new Event(e).stop();
// check field
const name = $('rename').value.trim();
if (name === null || name === "")
if ((name === null) || (name === ""))
return false;
const hash = new URI().getData('hash');

View File

@ -1567,7 +1567,7 @@ window.addEventListener("DOMContentLoaded", function() {
defaultEventType: 'keydown',
events: {
'ctrl+a': function(event) {
if (event.target.nodeName == "INPUT" || event.target.nodeName == "TEXTAREA")
if ((event.target.nodeName === "INPUT") || (event.target.nodeName === "TEXTAREA"))
return;
if (event.target.isContentEditable)
return;
@ -1575,7 +1575,7 @@ window.addEventListener("DOMContentLoaded", function() {
event.preventDefault();
},
'delete': function(event) {
if (event.target.nodeName == "INPUT" || event.target.nodeName == "TEXTAREA")
if ((event.target.nodeName === "INPUT") || (event.target.nodeName === "TEXTAREA"))
return;
if (event.target.isContentEditable)
return;
@ -1583,7 +1583,7 @@ window.addEventListener("DOMContentLoaded", function() {
event.preventDefault();
},
'shift+delete': (event) => {
if (event.target.nodeName == "INPUT" || event.target.nodeName == "TEXTAREA")
if ((event.target.nodeName === "INPUT") || (event.target.nodeName === "TEXTAREA"))
return;
if (event.target.isContentEditable)
return;

View File

@ -119,9 +119,9 @@ window.qBittorrent.ContextMenu = (function() {
// position the menu
let xPosMenu = e.page.x + this.options.offsets.x;
let yPosMenu = e.page.y + this.options.offsets.y;
if (xPosMenu + this.menu.offsetWidth > document.documentElement.clientWidth)
if ((xPosMenu + this.menu.offsetWidth) > document.documentElement.clientWidth)
xPosMenu -= this.menu.offsetWidth;
if (yPosMenu + this.menu.offsetHeight > document.documentElement.clientHeight)
if ((yPosMenu + this.menu.offsetHeight) > document.documentElement.clientHeight)
yPosMenu = document.documentElement.clientHeight - this.menu.offsetHeight;
if (xPosMenu < 0)
xPosMenu = 0;
@ -145,9 +145,9 @@ window.qBittorrent.ContextMenu = (function() {
const yPosOrigin = rectParent.bottom;
let xPos = xPosOrigin + rectParent.width - 1;
let yPos = yPosOrigin - rectParent.height - 1;
if (xPos + ul.offsetWidth > document.documentElement.clientWidth)
if ((xPos + ul.offsetWidth) > document.documentElement.clientWidth)
xPos -= (ul.offsetWidth + rectParent.width - 2);
if (yPos + ul.offsetHeight > document.documentElement.clientHeight)
if ((yPos + ul.offsetHeight) > document.documentElement.clientHeight)
yPos = document.documentElement.clientHeight - ul.offsetHeight;
if (xPos < 0)
xPos = 0;
@ -240,7 +240,7 @@ window.qBittorrent.ContextMenu = (function() {
//show menu
show: function(trigger) {
if (lastShownContextMenu && lastShownContextMenu != this)
if (lastShownContextMenu && (lastShownContextMenu != this))
lastShownContextMenu.hide();
this.fx.start(1);
this.fireEvent('show');
@ -338,7 +338,7 @@ window.qBittorrent.ContextMenu = (function() {
else if (data['super_seeding'] !== true)
all_are_super_seeding = false;
if (data['state'] != 'stoppedUP' && data['state'] != 'stoppedDL')
if ((data['state'] != 'stoppedUP') && (data['state'] != 'stoppedDL'))
all_are_stopped = false;
else
there_are_stopped = true;
@ -363,7 +363,7 @@ window.qBittorrent.ContextMenu = (function() {
// hide renameFiles when more than 1 torrent is selected
if (selectedRows.length == 1) {
const data = torrentsTable.rows.get(selectedRows[0]).full_data;
let metadata_downloaded = !(data['state'] == 'metaDL' || data['state'] == 'forcedMetaDL' || data['total_size'] == -1);
let metadata_downloaded = !((data['state'] == 'metaDL') || (data['state'] == 'forcedMetaDL') || (data['total_size'] == -1));
// hide renameFiles when metadata hasn't been downloaded yet
metadata_downloaded

View File

@ -151,12 +151,12 @@ window.qBittorrent.DynamicTable = (function() {
this.canResize = false;
const resetElementBorderStyle = function(el, side) {
if (side === 'left' || side !== 'right') {
if ((side === 'left') || (side !== 'right')) {
el.setStyle('border-left-style', '');
el.setStyle('border-left-color', '');
el.setStyle('border-left-width', '');
}
if (side === 'right' || side !== 'left') {
if ((side === 'right') || (side !== 'left')) {
el.setStyle('border-right-style', '');
el.setStyle('border-right-color', '');
el.setStyle('border-right-width', '');
@ -167,7 +167,7 @@ window.qBittorrent.DynamicTable = (function() {
const brect = e.target.getBoundingClientRect();
const mouseXRelative = e.event.clientX - brect.left;
if (this.currentHeaderAction === '') {
if (brect.width - mouseXRelative < 5) {
if ((brect.width - mouseXRelative) < 5) {
this.resizeTh = e.target;
this.canResize = true;
e.target.getParent("tr").style.cursor = 'col-resize';
@ -187,7 +187,7 @@ window.qBittorrent.DynamicTable = (function() {
let borderChangeElement = previousVisibleSibling;
let changeBorderSide = 'right';
if (mouseXRelative > brect.width / 2) {
if (mouseXRelative > (brect.width / 2)) {
borderChangeElement = e.target;
this.dropSide = 'right';
}
@ -200,7 +200,7 @@ window.qBittorrent.DynamicTable = (function() {
if (!previousVisibleSibling) { // right most column
borderChangeElement = e.target;
if (mouseXRelative <= brect.width / 2)
if (mouseXRelative <= (brect.width / 2))
changeBorderSide = 'left';
}
@ -429,7 +429,7 @@ window.qBittorrent.DynamicTable = (function() {
loadColumnsOrder: function() {
const columnsOrder = [];
const val = LocalPreferences.get('columns_order_' + this.dynamicTableDivId);
if (val === null || val === undefined)
if ((val === null) || (val === undefined))
return;
val.split(',').forEach(function(v) {
if ((v in this.columns) && (!columnsOrder.contains(v)))
@ -1141,7 +1141,7 @@ window.qBittorrent.DynamicTable = (function() {
this.columns['progress'].updateTd = function(td, row) {
const progress = this.getRowValue(row);
let progressFormatted = (progress * 100).round(1);
if (progressFormatted == 100.0 && progress != 1.0)
if ((progressFormatted == 100.0) && (progress != 1.0))
progressFormatted = 99.9;
if (td.getChildren('div').length > 0) {
@ -1310,7 +1310,7 @@ window.qBittorrent.DynamicTable = (function() {
td.set('title', '∞');
}
else {
const formattedVal = 'QBT_TR(%1 ago)QBT_TR[CONTEXT=TransferListDelegate]'.replace('%1', window.qBittorrent.Misc.friendlyDuration((new Date()) / 1000 - val));
const formattedVal = 'QBT_TR(%1 ago)QBT_TR[CONTEXT=TransferListDelegate]'.replace('%1', window.qBittorrent.Misc.friendlyDuration((new Date() / 1000) - val));
td.set('text', formattedVal);
td.set('title', formattedVal);
}
@ -1343,7 +1343,7 @@ window.qBittorrent.DynamicTable = (function() {
return false;
break;
case 'seeding':
if (state != 'uploading' && state != 'forcedUP' && state != 'stalledUP' && state != 'queuedUP' && state != 'checkingUP')
if ((state != 'uploading') && (state != 'forcedUP') && (state != 'stalledUP') && (state != 'queuedUP') && (state != 'checkingUP'))
return false;
break;
case 'completed':
@ -1377,12 +1377,12 @@ window.qBittorrent.DynamicTable = (function() {
if (state == 'stalledDL')
r = (row['full_data'].upspeed > 0);
else
r = state == 'metaDL' || state == 'forcedMetaDL' || state == 'downloading' || state == 'forcedDL' || state == 'uploading' || state == 'forcedUP';
r = (state == 'metaDL') || (state == 'forcedMetaDL') || (state == 'downloading') || (state == 'forcedDL') || (state == 'uploading') || (state == 'forcedUP');
if (r == inactive)
return false;
break;
case 'checking':
if (state !== 'checkingUP' && state !== 'checkingDL' && state !== 'checkingResumeData')
if ((state !== 'checkingUP') && (state !== 'checkingDL') && (state !== 'checkingResumeData'))
return false;
break;
case 'moving':
@ -1390,7 +1390,7 @@ window.qBittorrent.DynamicTable = (function() {
return false;
break;
case 'errored':
if (state != 'error' && state != "unknown" && state != "missingFiles")
if ((state != 'error') && (state != 'unknown') && (state != 'missingFiles'))
return false;
break;
}
@ -1632,7 +1632,7 @@ window.qBittorrent.DynamicTable = (function() {
this.columns['progress'].updateTd = function(td, row) {
const progress = this.getRowValue(row);
let progressFormatted = (progress * 100).round(1);
if (progressFormatted == 100.0 && progress != 1.0)
if ((progressFormatted == 100.0) && (progress != 1.0))
progressFormatted = 99.9;
progressFormatted += "%";
td.set('text', progressFormatted);
@ -3157,12 +3157,12 @@ window.qBittorrent.DynamicTable = (function() {
this.filterText = window.qBittorrent.Log.getFilterText();
const filterTerms = (this.filterText.length > 0) ? this.filterText.toLowerCase().split(' ') : [];
const logLevels = window.qBittorrent.Log.getSelectedLevels();
if (filterTerms.length > 0 || logLevels.length < 4) {
if ((filterTerms.length > 0) || (logLevels.length < 4)) {
for (let i = 0; i < rows.length; ++i) {
if (logLevels.indexOf(rows[i].full_data.type.toString()) == -1)
continue;
if (filterTerms.length > 0 && !window.qBittorrent.Misc.containsAllTerms(rows[i].full_data.message, filterTerms))
if ((filterTerms.length > 0) && !window.qBittorrent.Misc.containsAllTerms(rows[i].full_data.message, filterTerms))
continue;
filteredRows.push(rows[i]);
@ -3225,7 +3225,7 @@ window.qBittorrent.DynamicTable = (function() {
const filterTerms = (this.filterText.length > 0) ? this.filterText.toLowerCase().split(' ') : [];
if (filterTerms.length > 0) {
for (let i = 0; i < rows.length; ++i) {
if (filterTerms.length > 0 && !window.qBittorrent.Misc.containsAllTerms(rows[i].full_data.ip, filterTerms))
if ((filterTerms.length > 0) && !window.qBittorrent.Misc.containsAllTerms(rows[i].full_data.ip, filterTerms))
continue;
filteredRows.push(rows[i]);

View File

@ -71,7 +71,7 @@ window.qBittorrent.Misc = (function() {
return "QBT_TR(Unknown)QBT_TR[CONTEXT=misc]";
let i = 0;
while (value >= 1024.0 && i < 6) {
while ((value >= 1024.0) && (i < 6)) {
value /= 1024.0;
++i;
}
@ -104,7 +104,7 @@ window.qBittorrent.Misc = (function() {
* JS counterpart of the function in src/misc.cpp
*/
const friendlyDuration = function(seconds, maxCap = -1) {
if (seconds < 0 || ((seconds >= maxCap) && (maxCap >= 0)))
if ((seconds < 0) || ((seconds >= maxCap) && (maxCap >= 0)))
return "∞";
if (seconds === 0)
return "0";

View File

@ -52,7 +52,7 @@ window.qBittorrent.ProgressBar = (function() {
'lightbg': 'var(--color-background-default)',
'lightfg': 'var(--color-text-default)'
};
if (parameters && $type(parameters) == 'object')
if (parameters && ($type(parameters) == 'object'))
$extend(vals, parameters);
if (vals.height < 12)
vals.height = 12;

View File

@ -76,7 +76,7 @@ window.qBittorrent.MultiRename = (function() {
// Maximum of 250 matches per file
++count;
} while (regex.global && count < 250);
} while (regex.global && (count < 250));
return matches;
};
@ -182,7 +182,7 @@ window.qBittorrent.MultiRename = (function() {
break;
}
// Ignore rows without a match
if (!matches || matches.length == 0) {
if (!matches || (matches.length === 0)) {
continue;
}
@ -219,7 +219,7 @@ window.qBittorrent.MultiRename = (function() {
},
rename: async function() {
if (!this.matchedFiles || this.matchedFiles.length === 0 || !this.hash) {
if (!this.matchedFiles || (this.matchedFiles.length === 0) || !this.hash) {
this.onRenamed([]);
return;
}

View File

@ -46,8 +46,10 @@
};
// select default when orig values not passed. using double equals to compare string and int
if ((origValues[0] === "") || ((values.ratioLimit == UseGlobalLimit) && (values.seedingTimeLimit == UseGlobalLimit))
&& (values.inactiveSeedingTimeLimit == UseGlobalLimit)) {
if ((origValues[0] === "")
|| ((values.ratioLimit == UseGlobalLimit)
&& (values.seedingTimeLimit == UseGlobalLimit)
&& (values.inactiveSeedingTimeLimit == UseGlobalLimit))) {
// use default option
setSelectedRadioValue('shareLimit', 'default');
}

View File

@ -1591,10 +1591,10 @@ Use ';' to split multiple entries. Can use wildcard '*'.)QBT_TR[CONTEXT=OptionsD
const min = input.getAttribute("min");
const max = input.getAttribute("max");
if (min && input.value.toInt() < min.toInt())
if (min && (input.value.toInt() < min.toInt()))
input.value = min;
if (max && input.value.toInt() > max.toInt())
if (max && (input.value.toInt() > max.toInt()))
input.value = max;
};
@ -2470,7 +2470,7 @@ Use ';' to split multiple entries. Can use wildcard '*'.)QBT_TR[CONTEXT=OptionsD
let max_connec = -1;
if ($('max_connec_checkbox').getProperty('checked')) {
max_connec = $('max_connec_value').getProperty('value').toInt();
if (isNaN(max_connec) || max_connec <= 0) {
if (isNaN(max_connec) || (max_connec <= 0)) {
alert("QBT_TR(Maximum number of connections limit must be greater than 0 or disabled.)QBT_TR[CONTEXT=HttpServer]");
return;
}
@ -2479,7 +2479,7 @@ Use ';' to split multiple entries. Can use wildcard '*'.)QBT_TR[CONTEXT=OptionsD
let max_connec_per_torrent = -1;
if ($('max_connec_per_torrent_checkbox').getProperty('checked')) {
max_connec_per_torrent = $('max_connec_per_torrent_value').getProperty('value').toInt();
if (isNaN(max_connec_per_torrent) || max_connec_per_torrent <= 0) {
if (isNaN(max_connec_per_torrent) || (max_connec_per_torrent <= 0)) {
alert("QBT_TR(Maximum number of connections per torrent limit must be greater than 0 or disabled.)QBT_TR[CONTEXT=HttpServer]");
return;
}
@ -2488,7 +2488,7 @@ Use ';' to split multiple entries. Can use wildcard '*'.)QBT_TR[CONTEXT=OptionsD
let max_uploads = -1;
if ($('max_uploads_checkbox').getProperty('checked')) {
max_uploads = $('max_uploads_value').getProperty('value').toInt();
if (isNaN(max_uploads) || max_uploads <= 0) {
if (isNaN(max_uploads) || (max_uploads <= 0)) {
alert("QBT_TR(Global number of upload slots limit must be greater than 0 or disabled.)QBT_TR[CONTEXT=HttpServer]");
return;
}
@ -2497,7 +2497,7 @@ Use ';' to split multiple entries. Can use wildcard '*'.)QBT_TR[CONTEXT=OptionsD
let max_uploads_per_torrent = -1;
if ($('max_uploads_per_torrent_checkbox').getProperty('checked')) {
max_uploads_per_torrent = $('max_uploads_per_torrent_value').getProperty('value').toInt();
if (isNaN(max_uploads_per_torrent) || max_uploads_per_torrent <= 0) {
if (isNaN(max_uploads_per_torrent) || (max_uploads_per_torrent <= 0)) {
alert("QBT_TR(Maximum number of upload slots per torrent limit must be greater than 0 or disabled.)QBT_TR[CONTEXT=HttpServer]");
return;
}
@ -2532,14 +2532,14 @@ Use ';' to split multiple entries. Can use wildcard '*'.)QBT_TR[CONTEXT=OptionsD
// Speed tab
// Global Rate Limits
const up_limit = $('up_limit_value').getProperty('value').toInt() * 1024;
if (isNaN(up_limit) || up_limit < 0) {
if (isNaN(up_limit) || (up_limit < 0)) {
alert("QBT_TR(Global upload rate limit must be greater than 0 or disabled.)QBT_TR[CONTEXT=HttpServer]");
return;
}
settings['up_limit'] = up_limit;
const dl_limit = $('dl_limit_value').getProperty('value').toInt() * 1024;
if (isNaN(dl_limit) || dl_limit < 0) {
if (isNaN(dl_limit) || (dl_limit < 0)) {
alert("QBT_TR(Global download rate limit must be greater than 0 or disabled.)QBT_TR[CONTEXT=HttpServer]");
return;
}
@ -2547,14 +2547,14 @@ Use ';' to split multiple entries. Can use wildcard '*'.)QBT_TR[CONTEXT=OptionsD
// Alternative Global Rate Limits
const alt_up_limit = $('alt_up_limit_value').getProperty('value').toInt() * 1024;
if (isNaN(alt_up_limit) || alt_up_limit < 0) {
if (isNaN(alt_up_limit) || (alt_up_limit < 0)) {
alert("QBT_TR(Alternative upload rate limit must be greater than 0 or disabled.)QBT_TR[CONTEXT=HttpServer]");
return;
}
settings['alt_up_limit'] = alt_up_limit;
const alt_dl_limit = $('alt_dl_limit_value').getProperty('value').toInt() * 1024;
if (isNaN(alt_dl_limit) || alt_dl_limit < 0) {
if (isNaN(alt_dl_limit) || (alt_dl_limit < 0)) {
alert("QBT_TR(Alternative download rate limit must be greater than 0 or disabled.)QBT_TR[CONTEXT=HttpServer]");
return;
}
@ -2590,19 +2590,19 @@ Use ';' to split multiple entries. Can use wildcard '*'.)QBT_TR[CONTEXT=OptionsD
settings['queueing_enabled'] = $('queueing_checkbox').getProperty('checked');
if ($('queueing_checkbox').getProperty('checked')) {
const max_active_downloads = $('max_active_dl_value').getProperty('value').toInt();
if (isNaN(max_active_downloads) || max_active_downloads < -1) {
if (isNaN(max_active_downloads) || (max_active_downloads < -1)) {
alert("QBT_TR(Maximum active downloads must be greater than -1.)QBT_TR[CONTEXT=HttpServer]");
return;
}
settings['max_active_downloads'] = max_active_downloads;
const max_active_uploads = $('max_active_up_value').getProperty('value').toInt();
if (isNaN(max_active_uploads) || max_active_uploads < -1) {
if (isNaN(max_active_uploads) || (max_active_uploads < -1)) {
alert("QBT_TR(Maximum active uploads must be greater than -1.)QBT_TR[CONTEXT=HttpServer]");
return;
}
settings['max_active_uploads'] = max_active_uploads;
const max_active_torrents = $('max_active_to_value').getProperty('value').toInt();
if (isNaN(max_active_torrents) || max_active_torrents < -1) {
if (isNaN(max_active_torrents) || (max_active_torrents < -1)) {
alert("QBT_TR(Maximum active torrents must be greater than -1.)QBT_TR[CONTEXT=HttpServer]");
return;
}
@ -2686,7 +2686,7 @@ Use ';' to split multiple entries. Can use wildcard '*'.)QBT_TR[CONTEXT=OptionsD
settings['web_ui_domain_list'] = $('webui_domain_textarea').getProperty('value');
const web_ui_address = $('webui_address_value').getProperty('value').toString();
const web_ui_port = $('webui_port_value').getProperty('value').toInt();
if (isNaN(web_ui_port) || web_ui_port < 1 || web_ui_port > 65535) {
if (isNaN(web_ui_port) || (web_ui_port < 1) || (web_ui_port > 65535)) {
alert("QBT_TR(The port used for the WebUI must be between 1 and 65535.)QBT_TR[CONTEXT=HttpServer]");
return;
}

View File

@ -470,11 +470,11 @@
// check if rows matches flattened response
let match = false;
if (rssFeedTable.rows.getLength() - 1 === flattenedResp.length) {
if ((rssFeedTable.rows.getLength() - 1) === flattenedResp.length) {
match = true;
for (let i = 0; i < flattenedResp.length; ++i) {
if ((flattenedResp[i].uid ? flattenedResp[i].uid : '') !== rssFeedTable.rows[i + 1].full_data.dataUid
|| flattenedResp[i].fullName !== rssFeedTable.rows[i + 1].full_data.dataPath) {
if (((flattenedResp[i].uid ? flattenedResp[i].uid : '') !== rssFeedTable.rows[i + 1].full_data.dataUid)
|| (flattenedResp[i].fullName !== rssFeedTable.rows[i + 1].full_data.dataPath)) {
match = false;
break;
}
@ -541,7 +541,7 @@
feedData[r.uid] = r.articles;
// if feed that is open changed, reload
if (openedFeedPath !== undefined && r.fullName.slice(0, openedFeedPath.length) === openedFeedPath)
if ((openedFeedPath !== undefined) && (r.fullName.slice(0, openedFeedPath.length) === openedFeedPath))
showRssFeed(r.fullName);
}
else {
@ -565,7 +565,7 @@
.each((row) => row.full_data.unread += readDifference);
// if feed that is opened changed update dynamically
if (openedFeedPath !== undefined && r.fullName.slice(0, openedFeedPath.length) === openedFeedPath) {
if ((openedFeedPath !== undefined) && (r.fullName.slice(0, openedFeedPath.length) === openedFeedPath)) {
for (let i = 0; i < r.articles.length; ++i) {
let matchingRow = rssArticleTable.rows.filter((row) => row.full_data.feedUid === r.uid)
.filter((row) => row.full_data.dataId === r.articles[i].id);
@ -714,7 +714,7 @@
rssArticleTable.rows.each((el) => el.full_data.isRead = true);
// find all children and set unread count to 0
rssFeedTable.rows.filter((row) => row.full_data.dataPath.slice(0, path.length) === path && path !== row.full_data.dataPath)
rssFeedTable.rows.filter((row) => (row.full_data.dataPath.slice(0, path.length) === path) && (path !== row.full_data.dataPath))
.each((row) => row.full_data.unread = 0);
// find selected row

View File

@ -516,7 +516,7 @@
$('searchMaxSizePrefix').set('value', state.sizeFilter.maxUnit);
const currentSearchPattern = $('searchPattern').getProperty('value').trim();
if (state.running && state.searchPattern === currentSearchPattern) {
if (state.running && (state.searchPattern === currentSearchPattern)) {
// allow search to be stopped
$('startSearchButton').set('text', 'QBT_TR(Stop)QBT_TR[CONTEXT=SearchEngineWidget]');
searchPatternChanged = false;
@ -708,7 +708,7 @@
const state = searchState.get(currentSearchId);
const currentSearchPattern = $('searchPattern').getProperty('value').trim();
// start a new search if pattern has changed, otherwise allow the search to be stopped
if (state && state.searchPattern === currentSearchPattern) {
if (state && (state.searchPattern === currentSearchPattern)) {
searchPatternChanged = false;
$('startSearchButton').set('text', 'QBT_TR(Stop)QBT_TR[CONTEXT=SearchEngineWidget]');
}