修复数据统计错误的问题

This commit is contained in:
CN-JS-HuiBai
2026-04-10 14:56:06 +08:00
parent e65de2c30b
commit 5afcd3d86a
2 changed files with 42 additions and 2 deletions

View File

@@ -2070,6 +2070,18 @@
const savedTheme = localStorage.getItem('theme');
const themeToApply = savedTheme || settings.default_theme || 'dark';
applyTheme(themeToApply);
// Apply settings to UI (logo, name, etc.)
applySiteSettings(window.SITE_SETTINGS);
// Refresh overview and historical charts to reflect new source selections
fetchNetworkHistory(true);
// We can't force the WS broadcast easily from client,
// but we can fetch the overview via REST API once to update UI
fetch('/api/metrics/overview?force=true')
.then(res => res.json())
.then(data => updateDashboard(data))
.catch(() => {});
} else {
const err = await response.json();
showSiteMessage(`保存失败: ${err.error || '未知错误'}`, 'error');

View File

@@ -964,7 +964,21 @@ app.post('/api/settings', requireAuth, async (req, res) => {
// Reusable function to get overview metrics
async function getOverview(force = false) {
const [sources] = await db.query('SELECT * FROM prometheus_sources WHERE is_server_source = 1 AND type != "blackbox"');
const [settingsRows] = await db.query('SELECT network_data_sources FROM site_settings WHERE id = 1');
const selectedSourcesStr = settingsRows.length > 0 ? settingsRows[0].network_data_sources : null;
let query = 'SELECT * FROM prometheus_sources WHERE is_server_source = 1 AND type != "blackbox"';
let params = [];
if (selectedSourcesStr) {
const selectedSourceNames = selectedSourcesStr.split(',').map(s => s.trim()).filter(s => s);
if (selectedSourceNames.length > 0) {
query += ' AND name IN (?)';
params.push(selectedSourceNames);
}
}
const [sources] = await db.query(query, params);
if (sources.length === 0) {
return {
totalServers: 0,
@@ -1159,7 +1173,21 @@ app.get('/api/metrics/network-history', async (req, res) => {
// Get CPU usage history for sparklines
app.get('/api/metrics/cpu-history', async (req, res) => {
try {
const [sources] = await db.query('SELECT * FROM prometheus_sources WHERE is_server_source = 1 AND type != "blackbox"');
const [settingsRows] = await db.query('SELECT network_data_sources FROM site_settings WHERE id = 1');
const selectedSourcesStr = settingsRows.length > 0 ? settingsRows[0].network_data_sources : null;
let query = 'SELECT * FROM prometheus_sources WHERE is_server_source = 1 AND type != "blackbox"';
let params = [];
if (selectedSourcesStr) {
const selectedSourceNames = selectedSourcesStr.split(',').map(s => s.trim()).filter(s => s);
if (selectedSourceNames.length > 0) {
query += ' AND name IN (?)';
params.push(selectedSourceNames);
}
}
const [sources] = await db.query(query, params);
if (sources.length === 0) {
return res.json({ timestamps: [], values: [] });
}