mirror of
https://github.com/qbittorrent/qBittorrent.git
synced 2025-12-21 07:57:22 -06:00
Move JavaScript code into explicit namespaces
This cleans up the global namespace by explicitly exporting shared values. All html and JavaScript files have been converted to use explicit exports except for client.js and mocha-init.js
This commit is contained in:
@@ -28,144 +28,160 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
let loadTorrentPeersTimer;
|
||||
let syncTorrentPeersLastResponseId = 0;
|
||||
let show_flags = true;
|
||||
const loadTorrentPeersData = function() {
|
||||
if ($('prop_peers').hasClass('invisible')
|
||||
|| $('propertiesPanel_collapseToggle').hasClass('panel-expand')) {
|
||||
syncTorrentPeersLastResponseId = 0;
|
||||
torrentPeersTable.clear();
|
||||
return;
|
||||
}
|
||||
const current_hash = torrentsTable.getCurrentTorrentHash();
|
||||
if (current_hash === "") {
|
||||
syncTorrentPeersLastResponseId = 0;
|
||||
torrentPeersTable.clear();
|
||||
clearTimeout(loadTorrentPeersTimer);
|
||||
loadTorrentPeersTimer = loadTorrentPeersData.delay(getSyncMainDataInterval());
|
||||
return;
|
||||
}
|
||||
const url = new URI('api/v2/sync/torrentPeers');
|
||||
url.setData('rid', syncTorrentPeersLastResponseId);
|
||||
url.setData('hash', current_hash);
|
||||
new Request.JSON({
|
||||
url: url,
|
||||
noCache: true,
|
||||
method: 'get',
|
||||
onComplete: function() {
|
||||
if (window.qBittorrent === undefined) {
|
||||
window.qBittorrent = {};
|
||||
}
|
||||
|
||||
window.qBittorrent.PropPeers = (function() {
|
||||
const exports = function() {
|
||||
return {
|
||||
updateData: updateData
|
||||
}
|
||||
};
|
||||
|
||||
const torrentPeersTable = new window.qBittorrent.DynamicTable.TorrentPeersTable();
|
||||
let loadTorrentPeersTimer;
|
||||
let syncTorrentPeersLastResponseId = 0;
|
||||
let show_flags = true;
|
||||
|
||||
const loadTorrentPeersData = function() {
|
||||
if ($('prop_peers').hasClass('invisible')
|
||||
|| $('propertiesPanel_collapseToggle').hasClass('panel-expand')) {
|
||||
syncTorrentPeersLastResponseId = 0;
|
||||
torrentPeersTable.clear();
|
||||
return;
|
||||
}
|
||||
const current_hash = torrentsTable.getCurrentTorrentHash();
|
||||
if (current_hash === "") {
|
||||
syncTorrentPeersLastResponseId = 0;
|
||||
torrentPeersTable.clear();
|
||||
clearTimeout(loadTorrentPeersTimer);
|
||||
loadTorrentPeersTimer = loadTorrentPeersData.delay(getSyncMainDataInterval());
|
||||
},
|
||||
onSuccess: function(response) {
|
||||
$('error_div').set('html', '');
|
||||
if (response) {
|
||||
const full_update = (response['full_update'] === true);
|
||||
if (full_update)
|
||||
return;
|
||||
}
|
||||
const url = new URI('api/v2/sync/torrentPeers');
|
||||
url.setData('rid', syncTorrentPeersLastResponseId);
|
||||
url.setData('hash', current_hash);
|
||||
new Request.JSON({
|
||||
url: url,
|
||||
noCache: true,
|
||||
method: 'get',
|
||||
onComplete: function() {
|
||||
clearTimeout(loadTorrentPeersTimer);
|
||||
loadTorrentPeersTimer = loadTorrentPeersData.delay(getSyncMainDataInterval());
|
||||
},
|
||||
onSuccess: function(response) {
|
||||
$('error_div').set('html', '');
|
||||
if (response) {
|
||||
const full_update = (response['full_update'] === true);
|
||||
if (full_update)
|
||||
torrentPeersTable.clear();
|
||||
if (response['rid'])
|
||||
syncTorrentPeersLastResponseId = response['rid'];
|
||||
if (response['peers']) {
|
||||
for (const key in response['peers']) {
|
||||
response['peers'][key]['rowId'] = key;
|
||||
|
||||
if (response['peers'][key]['client'])
|
||||
response['peers'][key]['client'] = window.qBittorrent.Misc.escapeHtml(response['peers'][key]['client']);
|
||||
|
||||
torrentPeersTable.updateRowData(response['peers'][key]);
|
||||
}
|
||||
}
|
||||
if (response['peers_removed']) {
|
||||
response['peers_removed'].each(function(hash) {
|
||||
torrentPeersTable.removeRow(hash);
|
||||
});
|
||||
}
|
||||
torrentPeersTable.updateTable(full_update);
|
||||
torrentPeersTable.altRow();
|
||||
|
||||
if (response['show_flags']) {
|
||||
if (show_flags != response['show_flags']) {
|
||||
show_flags = response['show_flags'];
|
||||
torrentPeersTable.columns['country'].force_hide = !show_flags;
|
||||
torrentPeersTable.updateColumn('country');
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
torrentPeersTable.clear();
|
||||
if (response['rid'])
|
||||
syncTorrentPeersLastResponseId = response['rid'];
|
||||
if (response['peers']) {
|
||||
for (const key in response['peers']) {
|
||||
response['peers'][key]['rowId'] = key;
|
||||
|
||||
if (response['peers'][key]['client'])
|
||||
response['peers'][key]['client'] = escapeHtml(response['peers'][key]['client']);
|
||||
|
||||
torrentPeersTable.updateRowData(response['peers'][key]);
|
||||
}
|
||||
}
|
||||
if (response['peers_removed']) {
|
||||
response['peers_removed'].each(function(hash) {
|
||||
torrentPeersTable.removeRow(hash);
|
||||
});
|
||||
}
|
||||
torrentPeersTable.updateTable(full_update);
|
||||
torrentPeersTable.altRow();
|
||||
}
|
||||
}).send();
|
||||
};
|
||||
|
||||
if (response['show_flags']) {
|
||||
if (show_flags != response['show_flags']) {
|
||||
show_flags = response['show_flags'];
|
||||
torrentPeersTable.columns['country'].force_hide = !show_flags;
|
||||
torrentPeersTable.updateColumn('country');
|
||||
}
|
||||
const updateData = function() {
|
||||
clearTimeout(loadTorrentPeersTimer);
|
||||
loadTorrentPeersData();
|
||||
};
|
||||
|
||||
const torrentPeersContextMenu = new window.qBittorrent.ContextMenu.ContextMenu({
|
||||
targets: '#torrentPeersTableDiv',
|
||||
menu: 'torrentPeersMenu',
|
||||
actions: {
|
||||
addPeer: function(element, ref) {
|
||||
const hash = torrentsTable.getCurrentTorrentHash();
|
||||
if (!hash)
|
||||
return;
|
||||
|
||||
new MochaUI.Window({
|
||||
id: 'addPeersPage',
|
||||
title: "QBT_TR(Add Peers)QBT_TR[CONTEXT=PeersAdditionDialog]",
|
||||
loadMethod: 'iframe',
|
||||
contentURL: 'addpeers.html?hash=' + hash,
|
||||
scrollbars: false,
|
||||
resizable: false,
|
||||
maximizable: false,
|
||||
paddingVertical: 0,
|
||||
paddingHorizontal: 0,
|
||||
width: 350,
|
||||
height: 240
|
||||
});
|
||||
},
|
||||
banPeer: function(element, ref) {
|
||||
const selectedPeers = torrentPeersTable.selectedRowsIds();
|
||||
if (selectedPeers.length === 0)
|
||||
return;
|
||||
|
||||
if (confirm('QBT_TR(Are you sure you want to permanently ban the selected peers?)QBT_TR[CONTEXT=PeerListWidget]')) {
|
||||
new Request({
|
||||
url: 'api/v2/torrents/banPeers',
|
||||
noCache: true,
|
||||
method: 'post',
|
||||
data: {
|
||||
hash: torrentsTable.getCurrentTorrentHash(),
|
||||
peers: selectedPeers.join('|')
|
||||
}
|
||||
}).send();
|
||||
}
|
||||
}
|
||||
},
|
||||
offsets: {
|
||||
x: -15,
|
||||
y: 2
|
||||
},
|
||||
onShow: function() {
|
||||
const selectedPeers = torrentPeersTable.selectedRowsIds();
|
||||
|
||||
if (selectedPeers.length >= 1) {
|
||||
this.showItem('copyPeer');
|
||||
this.showItem('banPeer');
|
||||
}
|
||||
else {
|
||||
torrentPeersTable.clear();
|
||||
this.hideItem('copyPeer');
|
||||
this.hideItem('banPeer');
|
||||
}
|
||||
}
|
||||
}).send();
|
||||
};
|
||||
});
|
||||
|
||||
updateTorrentPeersData = function() {
|
||||
clearTimeout(loadTorrentPeersTimer);
|
||||
loadTorrentPeersData();
|
||||
};
|
||||
|
||||
const torrentPeersContextMenu = new ContextMenu({
|
||||
targets: '#torrentPeersTableDiv',
|
||||
menu: 'torrentPeersMenu',
|
||||
actions: {
|
||||
addPeer: function(element, ref) {
|
||||
const hash = torrentsTable.getCurrentTorrentHash();
|
||||
if (!hash)
|
||||
return;
|
||||
|
||||
new MochaUI.Window({
|
||||
id: 'addPeersPage',
|
||||
title: "QBT_TR(Add Peers)QBT_TR[CONTEXT=PeersAdditionDialog]",
|
||||
loadMethod: 'iframe',
|
||||
contentURL: 'addpeers.html?hash=' + hash,
|
||||
scrollbars: false,
|
||||
resizable: false,
|
||||
maximizable: false,
|
||||
paddingVertical: 0,
|
||||
paddingHorizontal: 0,
|
||||
width: 350,
|
||||
height: 240
|
||||
});
|
||||
},
|
||||
banPeer: function(element, ref) {
|
||||
const selectedPeers = torrentPeersTable.selectedRowsIds();
|
||||
if (selectedPeers.length === 0)
|
||||
return;
|
||||
|
||||
if (confirm('QBT_TR(Are you sure you want to permanently ban the selected peers?)QBT_TR[CONTEXT=PeerListWidget]')) {
|
||||
new Request({
|
||||
url: 'api/v2/torrents/banPeers',
|
||||
noCache: true,
|
||||
method: 'post',
|
||||
data: {
|
||||
hash: torrentsTable.getCurrentTorrentHash(),
|
||||
peers: selectedPeers.join('|')
|
||||
}
|
||||
}).send();
|
||||
}
|
||||
new ClipboardJS('#CopyPeerInfo', {
|
||||
text: function(trigger) {
|
||||
return torrentPeersTable.selectedRowsIds().join("\n");
|
||||
}
|
||||
},
|
||||
offsets: {
|
||||
x: -15,
|
||||
y: 2
|
||||
},
|
||||
onShow: function() {
|
||||
const selectedPeers = torrentPeersTable.selectedRowsIds();
|
||||
});
|
||||
|
||||
if (selectedPeers.length >= 1) {
|
||||
this.showItem('copyPeer');
|
||||
this.showItem('banPeer');
|
||||
}
|
||||
else {
|
||||
this.hideItem('copyPeer');
|
||||
this.hideItem('banPeer');
|
||||
}
|
||||
}
|
||||
});
|
||||
torrentPeersTable.setup('torrentPeersTableDiv', 'torrentPeersTableFixedHeaderDiv', torrentPeersContextMenu);
|
||||
|
||||
new ClipboardJS('#CopyPeerInfo', {
|
||||
text: function(trigger) {
|
||||
return torrentPeersTable.selectedRowsIds().join("\n");
|
||||
}
|
||||
});
|
||||
|
||||
torrentPeersTable.setup('torrentPeersTableDiv', 'torrentPeersTableFixedHeaderDiv', torrentPeersContextMenu);
|
||||
return exports();
|
||||
})();
|
||||
|
||||
Reference in New Issue
Block a user