mirror of
https://github.com/qbittorrent/qBittorrent
synced 2025-07-11 15:56:17 -07:00
WebUI: Add log viewer
The javascript implementation of multi-select menu is from the source https://github.com/PhilippeMarcMeyer/vanillaSelectBox. It is licensed under the MIT License. Some minor fixes is made to pass the lint. Co-authored-by: brvphoenix <30111323+brvphoenix@users.noreply.github.com> Co-authored-by: ttyS3 <ttys3.rust@gmail.com> PR #18290.
This commit is contained in:
parent
2b20d5b260
commit
0d376e7fd6
12 changed files with 2372 additions and 2 deletions
|
@ -35,6 +35,7 @@ let serverSyncMainDataInterval = 1500;
|
|||
let customSyncMainDataInterval = null;
|
||||
let searchTabInitialized = false;
|
||||
let rssTabInitialized = false;
|
||||
let logTabInitialized = false;
|
||||
|
||||
let syncRequestInProgress = false;
|
||||
|
||||
|
@ -190,9 +191,21 @@ window.addEvent('load', function() {
|
|||
$("rssTabColumn").addClass("invisible");
|
||||
};
|
||||
|
||||
const buildLogTab = function() {
|
||||
new MochaUI.Column({
|
||||
id: 'logTabColumn',
|
||||
placement: 'main',
|
||||
width: null
|
||||
});
|
||||
|
||||
// start off hidden
|
||||
$('logTabColumn').addClass('invisible');
|
||||
};
|
||||
|
||||
buildTransfersTab();
|
||||
buildSearchTab();
|
||||
buildRssTab();
|
||||
buildLogTab();
|
||||
MochaUI.initializeTabs('mainWindowTabsList');
|
||||
|
||||
setCategoryFilter = function(hash) {
|
||||
|
@ -304,6 +317,7 @@ window.addEvent('load', function() {
|
|||
// After showing/hiding the toolbar + status bar
|
||||
let showSearchEngine = LocalPreferences.get('show_search_engine') !== "false";
|
||||
let showRssReader = LocalPreferences.get('show_rss_reader') !== "false";
|
||||
let showLogViewer = LocalPreferences.get('show_log_viewer') === 'true';
|
||||
|
||||
// After Show Top Toolbar
|
||||
MochaUI.Desktop.setDesktopSize();
|
||||
|
@ -912,6 +926,12 @@ window.addEvent('load', function() {
|
|||
updateTabDisplay();
|
||||
});
|
||||
|
||||
$('showLogViewerLink').addEvent('click', function(e) {
|
||||
showLogViewer = !showLogViewer;
|
||||
LocalPreferences.set('show_log_viewer', showLogViewer.toString());
|
||||
updateTabDisplay();
|
||||
});
|
||||
|
||||
const updateTabDisplay = function() {
|
||||
if (showRssReader) {
|
||||
$('showRssReaderLink').firstChild.style.opacity = '1';
|
||||
|
@ -941,8 +961,22 @@ window.addEvent('load', function() {
|
|||
$("transfersTabLink").click();
|
||||
}
|
||||
|
||||
if (showLogViewer) {
|
||||
$('showLogViewerLink').firstChild.style.opacity = '1';
|
||||
$('mainWindowTabs').removeClass('invisible');
|
||||
$('logTabLink').removeClass('invisible');
|
||||
if (!MochaUI.Panels.instances.LogPanel)
|
||||
addLogPanel();
|
||||
}
|
||||
else {
|
||||
$('showLogViewerLink').firstChild.style.opacity = '0';
|
||||
$('logTabLink').addClass('invisible');
|
||||
if ($('logTabLink').hasClass('selected'))
|
||||
$("transfersTabLink").click();
|
||||
}
|
||||
|
||||
// display no tabs
|
||||
if (!showRssReader && !showSearchEngine)
|
||||
if (!showRssReader && !showSearchEngine && !showLogViewer)
|
||||
$('mainWindowTabs').addClass('invisible');
|
||||
};
|
||||
|
||||
|
@ -954,18 +988,21 @@ window.addEvent('load', function() {
|
|||
$("filtersColumn").removeClass("invisible");
|
||||
$("filtersColumn_handle").removeClass("invisible");
|
||||
$("mainColumn").removeClass("invisible");
|
||||
$('torrentsFilterToolbar').removeClass("invisible");
|
||||
|
||||
customSyncMainDataInterval = null;
|
||||
syncData(100);
|
||||
|
||||
hideSearchTab();
|
||||
hideRssTab();
|
||||
hideLogTab();
|
||||
};
|
||||
|
||||
const hideTransfersTab = function() {
|
||||
$("filtersColumn").addClass("invisible");
|
||||
$("filtersColumn_handle").addClass("invisible");
|
||||
$("mainColumn").addClass("invisible");
|
||||
$('torrentsFilterToolbar').addClass("invisible");
|
||||
MochaUI.Desktop.resizePanels();
|
||||
};
|
||||
|
||||
|
@ -979,6 +1016,7 @@ window.addEvent('load', function() {
|
|||
customSyncMainDataInterval = 30000;
|
||||
hideTransfersTab();
|
||||
hideRssTab();
|
||||
hideLogTab();
|
||||
};
|
||||
|
||||
const hideSearchTab = function() {
|
||||
|
@ -999,14 +1037,37 @@ window.addEvent('load', function() {
|
|||
customSyncMainDataInterval = 30000;
|
||||
hideTransfersTab();
|
||||
hideSearchTab();
|
||||
hideLogTab();
|
||||
};
|
||||
|
||||
const hideRssTab = function() {
|
||||
$("rssTabColumn").addClass("invisible");
|
||||
window.qBittorrent.Rss.unload();
|
||||
window.qBittorrent.Rss && window.qBittorrent.Rss.unload();
|
||||
MochaUI.Desktop.resizePanels();
|
||||
};
|
||||
|
||||
const showLogTab = function() {
|
||||
if (!logTabInitialized) {
|
||||
window.qBittorrent.Log.init();
|
||||
logTabInitialized = true;
|
||||
}
|
||||
else {
|
||||
window.qBittorrent.Log.load();
|
||||
}
|
||||
|
||||
$('logTabColumn').removeClass('invisible');
|
||||
customSyncMainDataInterval = 30000;
|
||||
hideTransfersTab();
|
||||
hideSearchTab();
|
||||
hideRssTab();
|
||||
};
|
||||
|
||||
const hideLogTab = function() {
|
||||
$('logTabColumn').addClass('invisible');
|
||||
MochaUI.Desktop.resizePanels();
|
||||
window.qBittorrent.Log && window.qBittorrent.Log.unload();
|
||||
};
|
||||
|
||||
const addSearchPanel = function() {
|
||||
new MochaUI.Panel({
|
||||
id: 'SearchPanel',
|
||||
|
@ -1045,6 +1106,42 @@ window.addEvent('load', function() {
|
|||
});
|
||||
};
|
||||
|
||||
var addLogPanel = function() {
|
||||
new MochaUI.Panel({
|
||||
id: 'LogPanel',
|
||||
title: 'Log',
|
||||
header: true,
|
||||
padding: {
|
||||
top: 0,
|
||||
right: 0,
|
||||
bottom: 0,
|
||||
left: 0
|
||||
},
|
||||
loadMethod: 'xhr',
|
||||
contentURL: 'views/log.html',
|
||||
require: {
|
||||
css: ['css/lib/vanillaSelectBox.css'],
|
||||
js: ['scripts/lib/vanillaSelectBox.js'],
|
||||
},
|
||||
tabsURL: 'views/logTabs.html',
|
||||
tabsOnload: function() {
|
||||
MochaUI.initializeTabs('panelTabs');
|
||||
|
||||
$('logMessageLink').addEvent('click', function(e) {
|
||||
window.qBittorrent.Log.setCurrentTab('main');
|
||||
});
|
||||
|
||||
$('logPeerLink').addEvent('click', function(e) {
|
||||
window.qBittorrent.Log.setCurrentTab('peer');
|
||||
});
|
||||
},
|
||||
collapsible: false,
|
||||
content: '',
|
||||
column: 'logTabColumn',
|
||||
height: null
|
||||
});
|
||||
};
|
||||
|
||||
new MochaUI.Panel({
|
||||
id: 'transferList',
|
||||
title: 'Panel',
|
||||
|
@ -1185,6 +1282,7 @@ window.addEvent('load', function() {
|
|||
$('transfersTabLink').addEvent('click', showTransfersTab);
|
||||
$('searchTabLink').addEvent('click', showSearchTab);
|
||||
$('rssTabLink').addEvent('click', showRssTab);
|
||||
$('logTabLink').addEvent('click', showLogTab);
|
||||
updateTabDisplay();
|
||||
|
||||
const registerDragAndDrop = () => {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue