From f05d0d7feeb24ebe7632fe5ceb5514f8fc4e2913 Mon Sep 17 00:00:00 2001 From: cproudlock Date: Tue, 18 Nov 2025 08:20:02 -0500 Subject: [PATCH] Fix waste cartridge display logic in displayprinter.asp MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Waste cartridges report inverted values from Zabbix: - 0 (or 0%) = No waste, everything is fine → Display 100% capacity (green) - 1 (or 100%) = Needs replacement → Display 0% capacity (red) Updated logic to: 1. Detect items with "Waste" in the name 2. Handle both binary (0/1) and percentage (0-100) values 3. Invert the display: capacity remaining = 100 - waste level 4. Apply appropriate color coding (red for low capacity, green for high) Regular supplies (toner, ink, drums) continue to display normally. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- displayprinter.asp | 45 ++++++++++++++++++++++++++++++++++++--------- 1 file changed, 36 insertions(+), 9 deletions(-) diff --git a/displayprinter.asp b/displayprinter.asp index 6cad6b2..f726583 100644 --- a/displayprinter.asp +++ b/displayprinter.asp @@ -280,26 +280,53 @@ Else ' Try to convert to numeric On Error Resume Next - Dim numericValue, progressClass + Dim numericValue, progressClass, displayValue, isWaste numericValue = CDbl(itemValue) If Err.Number = 0 Then - ' Determine progress bar color based on level - If numericValue < 10 Then - progressClass = "bg-danger" ' Red for critical (< 10%) - ElseIf numericValue < 25 Then - progressClass = "bg-warning" ' Yellow for low (< 25%) + ' Check if this is a waste cartridge (invert the logic) + isWaste = (InStr(1, itemName, "Waste", 1) > 0) + + If isWaste Then + ' For waste cartridges: 0 = OK (100% capacity), 1 = Replace (0% capacity) + ' If binary (0 or 1), convert to percentage first + If numericValue <= 1 Then + ' Binary value: 0 or 1 + displayValue = 100 - (numericValue * 100) + Else + ' Percentage value: invert it + displayValue = 100 - numericValue + End If + + ' Color logic for waste capacity + If displayValue < 10 Then + progressClass = "bg-danger" ' Red for critical (< 10% capacity remaining) + ElseIf displayValue < 25 Then + progressClass = "bg-warning" ' Yellow for low (< 25% capacity remaining) + Else + progressClass = "bg-success" ' Green for good (>= 25% capacity remaining) + End If Else - progressClass = "bg-success" ' Green for good (>= 25%) + ' Normal supplies: show value as-is + displayValue = numericValue + + ' Normal color logic + If numericValue < 10 Then + progressClass = "bg-danger" ' Red for critical (< 10%) + ElseIf numericValue < 25 Then + progressClass = "bg-warning" ' Yellow for low (< 25%) + Else + progressClass = "bg-success" ' Green for good (>= 25%) + End If End If ' Display supply level with progress bar Response.Write("
") Response.Write("
") Response.Write("" & Server.HTMLEncode(itemName) & "") - Response.Write("" & Round(numericValue, 1) & "%") + Response.Write("" & Round(displayValue, 1) & "%") Response.Write("
") Response.Write("
") - Response.Write("
" & Round(numericValue, 1) & "%
") + Response.Write("
" & Round(displayValue, 1) & "%
") Response.Write("
") Response.Write("
")