Fix waste cartridge display logic in displayprinter.asp
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 <noreply@anthropic.com>
This commit is contained in:
@@ -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("<div class='mb-3'>")
|
||||
Response.Write("<div class='d-flex justify-content-between mb-1'>")
|
||||
Response.Write("<span><strong>" & Server.HTMLEncode(itemName) & "</strong></span>")
|
||||
Response.Write("<span>" & Round(numericValue, 1) & "%</span>")
|
||||
Response.Write("<span>" & Round(displayValue, 1) & "%</span>")
|
||||
Response.Write("</div>")
|
||||
Response.Write("<div class='progress' style='height: 25px;'>")
|
||||
Response.Write("<div class='progress-bar " & progressClass & "' role='progressbar' style='width: " & numericValue & "%;' aria-valuenow='" & numericValue & "' aria-valuemin='0' aria-valuemax='100'>" & Round(numericValue, 1) & "%</div>")
|
||||
Response.Write("<div class='progress-bar " & progressClass & "' role='progressbar' style='width: " & displayValue & "%;' aria-valuenow='" & displayValue & "' aria-valuemin='0' aria-valuemax='100'>" & Round(displayValue, 1) & "%</div>")
|
||||
Response.Write("</div>")
|
||||
Response.Write("</div>")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user