fix: clean aligned TUI layout - remove duplicates
This commit is contained in:
@ -4,8 +4,8 @@ This directory contains pre-compiled binaries for the DB Backup Tool across mult
|
||||
|
||||
## Build Information
|
||||
- **Version**: 1.1.0
|
||||
- **Build Time**: 2025-11-05_13:20:08_UTC
|
||||
- **Git Commit**: 161f577
|
||||
- **Build Time**: 2025-11-05_13:29:48_UTC
|
||||
- **Git Commit**: b6d56da
|
||||
|
||||
## Recent Updates (v1.1.0)
|
||||
- ✅ Fixed TUI progress display with line-by-line output
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -195,31 +195,36 @@ func (m BackupExecutionModel) View() string {
|
||||
header := titleStyle.Render("🔄 Backup Execution")
|
||||
s.WriteString(fmt.Sprintf("\n%s\n\n", header))
|
||||
|
||||
s.WriteString(fmt.Sprintf("Type: %s\n", m.backupType))
|
||||
// Backup details
|
||||
s.WriteString(fmt.Sprintf("%-12s %s\n", "Type:", m.backupType))
|
||||
if m.databaseName != "" {
|
||||
s.WriteString(fmt.Sprintf("Database: %s\n", m.databaseName))
|
||||
s.WriteString(fmt.Sprintf("%-12s %s\n", "Database:", m.databaseName))
|
||||
}
|
||||
if m.ratio > 0 {
|
||||
s.WriteString(fmt.Sprintf("Sample Ratio: %d\n", m.ratio))
|
||||
s.WriteString(fmt.Sprintf("%-12s %d\n", "Sample Ratio:", m.ratio))
|
||||
}
|
||||
s.WriteString(fmt.Sprintf("Duration: %s\n\n", time.Since(m.startTime).Round(time.Second)))
|
||||
|
||||
s.WriteString(fmt.Sprintf("Status: %s\n", m.status))
|
||||
s.WriteString(fmt.Sprintf("%-12s %s\n", "Duration:", time.Since(m.startTime).Round(time.Second)))
|
||||
s.WriteString("\n")
|
||||
|
||||
// Status with spinner
|
||||
if !m.done {
|
||||
spinner := []string{"⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"}
|
||||
frame := int(time.Since(m.startTime).Milliseconds()/100) % len(spinner)
|
||||
s.WriteString(fmt.Sprintf("\n%s Processing...\n", spinner[frame]))
|
||||
s.WriteString(fmt.Sprintf("%-12s %s %s\n", "Status:", spinner[frame], m.status))
|
||||
} else {
|
||||
s.WriteString(fmt.Sprintf("%-12s %s\n", "Status:", m.status))
|
||||
s.WriteString("\n")
|
||||
|
||||
if m.err != nil {
|
||||
s.WriteString(fmt.Sprintf("Error: %v\n\n", m.err))
|
||||
}
|
||||
lines := strings.Split(m.result, "\n")
|
||||
for _, line := range lines {
|
||||
if strings.Contains(line, "✅") || strings.Contains(line, "completed") ||
|
||||
strings.Contains(line, "Size:") || strings.Contains(line, "backup_") {
|
||||
s.WriteString(line + "\n")
|
||||
s.WriteString(fmt.Sprintf("❌ Error: %v\n", m.err))
|
||||
} else if m.result != "" {
|
||||
// Parse and display result cleanly
|
||||
lines := strings.Split(m.result, "\n")
|
||||
for _, line := range lines {
|
||||
line = strings.TrimSpace(line)
|
||||
if line != "" {
|
||||
s.WriteString(line + "\n")
|
||||
}
|
||||
}
|
||||
}
|
||||
s.WriteString("\n⌨️ Press Enter or ESC to return to menu\n")
|
||||
|
||||
Reference in New Issue
Block a user