package app import ( "fmt" "time" "github.com/seaweedfs/seaweedfs/weed/admin/maintenance" ) templ MaintenanceQueue(data *maintenance.MaintenanceQueueData) {

Maintenance Queue

{fmt.Sprintf("%d", data.Stats.PendingTasks)}

Pending Tasks

{fmt.Sprintf("%d", data.Stats.RunningTasks)}

Running Tasks

{fmt.Sprintf("%d", data.Stats.CompletedToday)}

Completed Today

{fmt.Sprintf("%d", data.Stats.FailedToday)}

Failed Today

Task Queue
if len(data.Tasks) == 0 {

No maintenance tasks in queue

Tasks will appear here when the system detects maintenance needs
} else {
for _, task := range data.Tasks { }
ID Type Status Volume Server Created
{task.ID[:8]}... {string(task.Type)} {string(task.Status)} {fmt.Sprintf("%d", task.VolumeID)} {task.Server} {task.CreatedAt.Format("2006-01-02 15:04")}
}
Active Workers
if len(data.Workers) == 0 {

No workers are currently active

Start workers using: weed worker -admin=localhost:9333
} else {
for _, worker := range data.Workers {
{worker.ID}

{worker.Address}
Status: {worker.Status}
Load: {fmt.Sprintf("%d/%d", worker.CurrentLoad, worker.MaxConcurrent)}

}
}
} // Helper components templ TaskTypeIcon(taskType maintenance.MaintenanceTaskType) { } templ PriorityBadge(priority maintenance.MaintenanceTaskPriority) { switch priority { case maintenance.PriorityCritical: Critical case maintenance.PriorityHigh: High case maintenance.PriorityNormal: Normal case maintenance.PriorityLow: Low default: Unknown } } templ StatusBadge(status maintenance.MaintenanceTaskStatus) { switch status { case maintenance.TaskStatusPending: Pending case maintenance.TaskStatusAssigned: Assigned case maintenance.TaskStatusInProgress: Running case maintenance.TaskStatusCompleted: Completed case maintenance.TaskStatusFailed: Failed case maintenance.TaskStatusCancelled: Cancelled default: Unknown } } templ ProgressBar(progress float64, status maintenance.MaintenanceTaskStatus) { if status == maintenance.TaskStatusInProgress || status == maintenance.TaskStatusAssigned {
{fmt.Sprintf("%.1f%%", progress)} } else if status == maintenance.TaskStatusCompleted {
100% } else { - } } templ WorkerStatusBadge(status string) { switch status { case "active": Active case "busy": Busy case "inactive": Inactive default: Unknown } } // Helper functions (would be defined in Go) func getWorkerStatusColor(status string) string { switch status { case "active": return "success" case "busy": return "warning" case "inactive": return "secondary" default: return "light" } } func formatTimeAgo(t time.Time) string { duration := time.Since(t) if duration < time.Minute { return "just now" } else if duration < time.Hour { minutes := int(duration.Minutes()) return fmt.Sprintf("%dm ago", minutes) } else if duration < 24*time.Hour { hours := int(duration.Hours()) return fmt.Sprintf("%dh ago", hours) } else { days := int(duration.Hours() / 24) return fmt.Sprintf("%dd ago", days) } }