You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							68 lines
						
					
					
						
							1.2 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							68 lines
						
					
					
						
							1.2 KiB
						
					
					
				| package app | |
| 
 | |
| import ( | |
| 	"fmt" | |
| 	"strconv" | |
| ) | |
| 
 | |
| // getStatusColor returns Bootstrap color class for status | |
| func getStatusColor(status string) string { | |
| 	switch status { | |
| 	case "active", "healthy": | |
| 		return "success" | |
| 	case "warning": | |
| 		return "warning" | |
| 	case "critical", "unreachable": | |
| 		return "danger" | |
| 	default: | |
| 		return "secondary" | |
| 	} | |
| } | |
| 
 | |
| // formatBytes converts bytes to human readable format | |
| func formatBytes(bytes int64) string { | |
| 	if bytes == 0 { | |
| 		return "0 B" | |
| 	} | |
| 
 | |
| 	units := []string{"B", "KB", "MB", "GB", "TB", "PB"} | |
| 	var i int | |
| 	value := float64(bytes) | |
| 
 | |
| 	for value >= 1024 && i < len(units)-1 { | |
| 		value /= 1024 | |
| 		i++ | |
| 	} | |
| 
 | |
| 	if i == 0 { | |
| 		return fmt.Sprintf("%.0f %s", value, units[i]) | |
| 	} | |
| 	return fmt.Sprintf("%.1f %s", value, units[i]) | |
| } | |
| 
 | |
| // formatNumber formats large numbers with commas | |
| func formatNumber(num int64) string { | |
| 	if num == 0 { | |
| 		return "0" | |
| 	} | |
| 
 | |
| 	str := strconv.FormatInt(num, 10) | |
| 	result := "" | |
| 
 | |
| 	for i, char := range str { | |
| 		if i > 0 && (len(str)-i)%3 == 0 { | |
| 			result += "," | |
| 		} | |
| 		result += string(char) | |
| 	} | |
| 
 | |
| 	return result | |
| } | |
| 
 | |
| // calculatePercent calculates percentage for progress bars | |
| func calculatePercent(current, max int) int { | |
| 	if max == 0 { | |
| 		return 0 | |
| 	} | |
| 	return (current * 100) / max | |
| }
 |