WebUI: Add RSS functionality

Implemented RSS Reader and AutoDownloader in reference WebUI.
This commit is contained in:
Sepro 2020-04-29 14:41:24 +02:00
parent a1faef0a3c
commit 2b3c92a4a8
18 changed files with 2902 additions and 27 deletions

View file

@ -34,6 +34,7 @@ let queueing_enabled = true;
let serverSyncMainDataInterval = 1500;
let customSyncMainDataInterval = null;
let searchTabInitialized = false;
let rssTabInitialized = false;
let syncRequestInProgress = false;
@ -171,8 +172,20 @@ window.addEvent('load', function() {
$("searchTabColumn").addClass("invisible");
};
const buildRssTab = function() {
new MochaUI.Column({
id: 'rssTabColumn',
placement: 'main',
width: null
});
// start off hidden
$("rssTabColumn").addClass("invisible");
};
buildTransfersTab();
buildSearchTab();
buildRssTab();
MochaUI.initializeTabs('mainWindowTabsList');
setCategoryFilter = function(hash) {
@ -275,12 +288,7 @@ window.addEvent('load', function() {
// After showing/hiding the toolbar + status bar
let showSearchEngine = LocalPreferences.get('show_search_engine') !== "false";
if (!showSearchEngine) {
// uncheck menu option
$('showSearchEngineLink').firstChild.style.opacity = '0';
// hide tabs
$('mainWindowTabs').addClass('invisible');
}
let showRssReader = LocalPreferences.get('show_rss_reader') !== "false";
// After Show Top Toolbar
MochaUI.Desktop.setDesktopSize();
@ -860,22 +868,48 @@ window.addEvent('load', function() {
$('showSearchEngineLink').addEvent('click', function(e) {
showSearchEngine = !showSearchEngine;
LocalPreferences.set('show_search_engine', showSearchEngine.toString());
updateTabDisplay();
});
$('showRssReaderLink').addEvent('click', function(e) {
showRssReader = !showRssReader;
LocalPreferences.set('show_rss_reader', showRssReader.toString());
updateTabDisplay();
});
const updateTabDisplay = function() {
if (showRssReader) {
$('showRssReaderLink').firstChild.style.opacity = '1';
$('mainWindowTabs').removeClass('invisible');
$('rssTabLink').removeClass('invisible');
if (!MochaUI.Panels.instances.RssPanel)
addRssPanel();
}
else {
$('showRssReaderLink').firstChild.style.opacity = '0';
$('rssTabLink').addClass('invisible');
if ($('rssTabLink').hasClass('selected'))
$("transfersTabLink").click();
}
if (showSearchEngine) {
$('showSearchEngineLink').firstChild.style.opacity = '1';
$('mainWindowTabs').removeClass('invisible');
addMainWindowTabsEventListener();
$('searchTabLink').removeClass('invisible');
if (!MochaUI.Panels.instances.SearchPanel)
addSearchPanel();
}
else {
$('showSearchEngineLink').firstChild.style.opacity = '0';
$('mainWindowTabs').addClass('invisible');
$("transfersTabLink").click();
removeMainWindowTabsEventListener();
$('searchTabLink').addClass('invisible');
if ($('searchTabLink').hasClass('selected'))
$("transfersTabLink").click();
}
});
// display no tabs
if (!showRssReader && !showSearchEngine)
$('mainWindowTabs').addClass('invisible');
};
$('StatisticsLink').addEvent('click', StatisticsLinkFN);
@ -890,6 +924,7 @@ window.addEvent('load', function() {
syncData(100);
hideSearchTab();
hideRssTab();
};
const hideTransfersTab = function() {
@ -908,6 +943,7 @@ window.addEvent('load', function() {
$("searchTabColumn").removeClass("invisible");
customSyncMainDataInterval = 30000;
hideTransfersTab();
hideRssTab();
};
const hideSearchTab = function() {
@ -915,14 +951,25 @@ window.addEvent('load', function() {
MochaUI.Desktop.resizePanels();
};
const addMainWindowTabsEventListener = function() {
$('transfersTabLink').addEvent('click', showTransfersTab);
$('searchTabLink').addEvent('click', showSearchTab);
const showRssTab = function() {
if (!rssTabInitialized) {
window.qBittorrent.Rss.init();
rssTabInitialized = true;
}
else {
window.qBittorrent.Rss.load();
}
$("rssTabColumn").removeClass("invisible");
customSyncMainDataInterval = 30000;
hideTransfersTab();
hideSearchTab();
};
const removeMainWindowTabsEventListener = function() {
$('transfersTabLink').removeEvent('click', showTransfersTab);
$('searchTabLink').removeEvent('click', showSearchTab);
const hideRssTab = function() {
$("rssTabColumn").addClass("invisible");
window.qBittorrent.Rss.unload();
MochaUI.Desktop.resizePanels();
};
const addSearchPanel = function() {
@ -944,6 +991,25 @@ window.addEvent('load', function() {
});
};
const addRssPanel = function() {
new MochaUI.Panel({
id: 'RssPanel',
title: 'Rss',
header: false,
padding: {
top: 0,
right: 0,
bottom: 0,
left: 0
},
loadMethod: 'xhr',
contentURL: 'views/rss.html',
content: '',
column: 'rssTabColumn',
height: null
});
};
new MochaUI.Panel({
id: 'transferList',
title: 'Panel',
@ -1081,10 +1147,10 @@ window.addEvent('load', function() {
}
});
if (showSearchEngine) {
addMainWindowTabsEventListener();
addSearchPanel();
}
$('transfersTabLink').addEvent('click', showTransfersTab);
$('searchTabLink').addEvent('click', showSearchTab);
$('rssTabLink').addEvent('click', showRssTab);
updateTabDisplay();
});
function registerMagnetHandler() {