fetch_ml/cmd/tui/internal/controller/helpers.go
Jeremie Fraeys abd27bf0a2
refactor(go): Update Go commands and TUI controller
Update api-server and gen-keys main files

Update TUI controller commands, helpers, and settings
2026-02-23 14:13:14 -05:00

71 lines
1.7 KiB
Go

package controller
import (
"fmt"
"strings"
"github.com/jfraeys/fetch_ml/cmd/tui/internal/model"
)
// Helper functions
func (c *Controller) getPathForStatus(status model.JobStatus) string {
switch status {
case model.StatusPending:
return c.config.PendingPath()
case model.StatusRunning:
return c.config.RunningPath()
case model.StatusFinished:
return c.config.FinishedPath()
case model.StatusFailed:
return c.config.FailedPath()
case model.StatusQueued:
return c.config.PendingPath() // Queued jobs are in pending directory
}
return ""
}
func getSelectedJob(m model.State) *model.Job {
if item := m.JobList.SelectedItem(); item != nil {
if job, ok := item.(model.Job); ok {
return &job
}
}
return nil
}
func calculateJobStats(m *model.State) {
m.JobStats = make(map[model.JobStatus]int)
for _, job := range m.Jobs {
m.JobStats[job.Status]++
}
}
func formatStatus(m model.State) string {
var parts []string
if len(m.Jobs) > 0 {
stats := []string{}
if count := m.JobStats[model.StatusPending]; count > 0 {
stats = append(stats, fmt.Sprintf("⏸ %d", count))
}
if count := m.JobStats[model.StatusRunning]; count > 0 {
stats = append(stats, fmt.Sprintf("▶ %d", count))
}
if count := m.JobStats[model.StatusFinished]; count > 0 {
stats = append(stats, fmt.Sprintf("%d", count))
}
if count := m.JobStats[model.StatusFailed]; count > 0 {
stats = append(stats, fmt.Sprintf("✗ %d", count))
}
parts = append(parts, strings.Join(stats, " | "))
}
if len(m.QueuedTasks) > 0 {
parts = append(parts, fmt.Sprintf("Queue: %d", len(m.QueuedTasks)))
}
parts = append(parts, fmt.Sprintf("Updated: %s", m.LastRefresh.Format("15:04:05")))
return strings.Join(parts, " • ")
}