save state to pickle file, restart timers on restart
This commit is contained in:
@@ -459,23 +459,27 @@
|
||||
}
|
||||
}
|
||||
|
||||
// Protocol metadata fields injected by the client – never plugin metrics
|
||||
const SKIP_FIELDS = new Set(['id', 'name']);
|
||||
|
||||
function renderPluginData(data, timestamp) {
|
||||
// Check if this should be rendered as a simple table
|
||||
const pluginName = getCurrentPluginName();
|
||||
const simplePlugins = ['os_info', 'cpu_monitor', 'memory_monitor', 'nagios_runner'];
|
||||
|
||||
|
||||
if (simplePlugins.includes(pluginName) && isSimpleKeyValueData(data)) {
|
||||
return renderSimpleDataTable(data, timestamp);
|
||||
}
|
||||
|
||||
|
||||
let html = '<div class="metric-grid">';
|
||||
|
||||
|
||||
for (const [key, value] of Object.entries(data)) {
|
||||
if (SKIP_FIELDS.has(key)) continue;
|
||||
// Skip nested objects for now, handle them separately
|
||||
if (typeof value === 'object' && value !== null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
html += renderMetric(key, value);
|
||||
}
|
||||
|
||||
@@ -572,10 +576,11 @@
|
||||
// Table body
|
||||
html += '<tbody>';
|
||||
for (const [key, value] of Object.entries(data)) {
|
||||
if (SKIP_FIELDS.has(key)) continue;
|
||||
const label = formatLabel(key);
|
||||
const formattedValue = formatValue(key, value);
|
||||
const unit = getUnit(key);
|
||||
|
||||
|
||||
html += '<tr>';
|
||||
html += `<td class="name">${label}</td>`;
|
||||
html += `<td class="value">${formattedValue}${unit ? ' ' + unit : ''}</td>`;
|
||||
@@ -1012,12 +1017,17 @@
|
||||
}
|
||||
|
||||
function formatLabel(key) {
|
||||
if (key === 'time') return 'Collected At';
|
||||
return key
|
||||
.replace(/_/g, ' ')
|
||||
.replace(/\b\w/g, l => l.toUpperCase());
|
||||
}
|
||||
|
||||
function formatValue(key, value) {
|
||||
// Epoch timestamp field sent by the client alongside plugin data
|
||||
if (key === 'time' && typeof value === 'number') {
|
||||
return new Date(value * 1000).toLocaleString();
|
||||
}
|
||||
if (typeof value === 'number') {
|
||||
// Format percentages
|
||||
if (key.includes('percent') || key.includes('usage')) {
|
||||
|
||||
Reference in New Issue
Block a user