diff --git a/pve-mod-gui-sensors.sh b/pve-mod-gui-sensors.sh index 02d88f7..da7f9df 100644 --- a/pve-mod-gui-sensors.sh +++ b/pve-mod-gui-sensors.sh @@ -1372,32 +1372,34 @@ generate_ups_widget() { // If objValue is null or empty, return N/A if (!objValue || Object.keys(objValue).length === 0) { - return '
N/A
'; + return '
N/A
'; } // Helper function to get status color + // Returns a CSS color string for non-default states, or null for default (no inline color) function getStatusColor(status) { if (!status) return '#999'; const statusUpper = status.toUpperCase(); - if (statusUpper.includes('OL')) return 'white'; // White for online + if (statusUpper.includes('OL')) return null; // default (no explicit color) if (statusUpper.includes('OB')) return '#d9534f'; // Red for on battery if (statusUpper.includes('LB')) return '#d9534f'; // Red for low battery return '#f0ad4e'; // Orange for other states } // Helper function to get load/charge color + // Returns null for default/good values so no inline style is emitted function getPercentageColor(value, isLoad = false) { if (!value || isNaN(value)) return '#999'; const num = parseFloat(value); if (isLoad) { if (num >= 80) return '#d9534f'; // Red for high load if (num >= 60) return '#f0ad4e'; // Orange for medium load - return 'white'; // White for low load + return null; // default (no explicit color) } else { // For battery charge if (num <= 20) return '#d9534f'; // Red for low charge if (num <= 50) return '#f0ad4e'; // Orange for medium charge - return 'white'; // White for good charge + return null; // default (no explicit color) } } @@ -1425,12 +1427,12 @@ generate_ups_widget() { // Build the status display let displayItems = []; - // First line: Model info + // First line: Model info (no explicit color for default) let modelLine = ''; if (upsModel) { - modelLine = `${upsModel}`; + modelLine = `${upsModel}`; } else { - modelLine = `N/A`; + modelLine = `N/A`; } displayItems.push(modelLine); @@ -1445,7 +1447,7 @@ generate_ups_widget() { if (statusUpper.includes('OL')) { statusText = 'Online'; - statusColor = 'white'; // White for good status + statusColor = null; // default (no explicit color) } else if (statusUpper.includes('OB')) { statusText = 'On Battery'; statusColor = '#d9534f'; // Red for on battery @@ -1457,27 +1459,30 @@ generate_ups_widget() { statusColor = '#f0ad4e'; // Orange for unknown status } - statusLine += `Status: ${statusText}`; + let statusStyle = statusColor ? ('color: ' + statusColor + ';') : ''; + statusLine += 'Status: ' + statusText + ''; } else { - statusLine += `Status: N/A`; + statusLine += 'Status: N/A'; } // Battery charge if (statusLine) statusLine += ' | '; if (batteryCharge) { const chargeColor = getPercentageColor(batteryCharge, false); - statusLine += `Battery: ${batteryCharge}%`; + let chargeStyle = chargeColor ? ('color: ' + chargeColor + ';') : ''; + statusLine += 'Battery: ' + batteryCharge + '%'; } else { - statusLine += `Battery: N/A`; + statusLine += 'Battery: N/A'; } // Load percentage if (statusLine) statusLine += ' | '; if (upsLoad) { const loadColor = getPercentageColor(upsLoad, true); - statusLine += `Load: ${upsLoad}%`; + let loadStyle = loadColor ? ('color: ' + loadColor + ';') : ''; + statusLine += 'Load: ' + upsLoad + '%'; } else { - statusLine += `Load: N/A`; + statusLine += 'Load: N/A'; } // Runtime @@ -1485,21 +1490,21 @@ generate_ups_widget() { if (batteryRuntime) { const runtime = parseInt(batteryRuntime); const runtimeLowThreshold = batteryRuntimeLow ? parseInt(batteryRuntimeLow) : 600; - let runtimeColor = 'white'; + let runtimeColor = null; if (runtime <= runtimeLowThreshold / 2) runtimeColor = '#d9534f'; // Red if less than half of low threshold else if (runtime <= runtimeLowThreshold) runtimeColor = '#f0ad4e'; // Orange if at low threshold - - statusLine += `Runtime: ${formatRuntime(runtime)}`; + let runtimeStyle = runtimeColor ? ('color: ' + runtimeColor + ';') : ''; + statusLine += 'Runtime: ' + formatRuntime(runtime) + ''; } else { - statusLine += `Runtime: N/A`; + statusLine += 'Runtime: N/A'; } // Input voltage if (statusLine) statusLine += ' | '; if (inputVoltage) { - statusLine += `Input: ${parseFloat(inputVoltage).toFixed(0)}V`; + statusLine += 'Input: ' + parseFloat(inputVoltage).toFixed(0) + 'V'; } else { - statusLine += `Input: N/A`; + statusLine += 'Input: N/A'; } // Calculate actual watt usage @@ -1515,9 +1520,9 @@ generate_ups_widget() { // Real power (calculated watt usage) if (actualWattage !== null) { - statusLine += `Output: ${actualWattage}W`; + statusLine += 'Output: ' + actualWattage + 'W'; } else { - statusLine += `Output: N/A`; + statusLine += 'Output: N/A'; } displayItems.push(statusLine); @@ -1525,16 +1530,17 @@ generate_ups_widget() { // Combined battery and test line let batteryTestLine = ''; if (batteryMfrDate) { - batteryTestLine += `Battery MFD: ${batteryMfrDate}`; + batteryTestLine += 'Battery MFD: ' + batteryMfrDate + ''; } else { - batteryTestLine += `Battery MFD: N/A`; + batteryTestLine += 'Battery MFD: N/A'; } if (testResult && !testResult.toLowerCase().includes('no test')) { - const testColor = testResult.toLowerCase().includes('passed') ? 'white' : '#d9534f'; - batteryTestLine += ` | Test: ${testResult}`; + const testColor = testResult.toLowerCase().includes('passed') ? null : '#d9534f'; + let testStyle = testColor ? ('color: ' + testColor + ';') : ''; + batteryTestLine += ' | Test: ' + testResult + ''; } else { - batteryTestLine += ` | Test: N/A`; + batteryTestLine += ' | Test: N/A'; } displayItems.push(batteryTestLine);