feat: live-updating status panel with per-task poll timings

- Each service fetch is individually timed (SABnzbd, Sonarr, Radarr, qBit)
- Status panel shows timing bar chart with ms per task and total
- Shows 'Last Poll' age that updates live
- Shows client refresh rate (1s/5s/10s/Off)
- Status panel auto-refreshes in sync with dashboard refresh cycle
- Changing refresh rate restarts the status panel refresh too
- TTL counters update live on each refresh
This commit is contained in:
2026-05-15 23:58:10 +01:00
parent c03e4620ea
commit 57e1db18e2
4 changed files with 160 additions and 40 deletions

View File

@@ -3,7 +3,7 @@ const router = express.Router();
const { mapTorrentToDownload } = require('../utils/qbittorrent');
const cache = require('../utils/cache');
const { pollAllServices, POLLING_ENABLED } = require('../utils/poller');
const { pollAllServices, getLastPollTimings, POLLING_ENABLED } = require('../utils/poller');
const EMBY_URL = process.env.EMBY_URL;
const EMBY_API_KEY = process.env.EMBY_API_KEY;
@@ -625,7 +625,8 @@ router.get('/status', (req, res) => {
},
polling: {
enabled: POLLING_ENABLED,
intervalMs: POLLING_ENABLED ? require('../utils/poller').POLL_INTERVAL : 0
intervalMs: POLLING_ENABLED ? require('../utils/poller').POLL_INTERVAL : 0,
lastPoll: getLastPollTimings()
},
cache: cacheStats
});