feat: move a card between statuses #3
2 changed files with 32 additions and 30 deletions
|
@ -1,6 +1,10 @@
|
||||||
package ui
|
package ui
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"codeflow.dananglin.me.uk/apollo/canal/internal/board"
|
||||||
|
|
||||||
"github.com/gdamore/tcell/v2"
|
"github.com/gdamore/tcell/v2"
|
||||||
"github.com/rivo/tview"
|
"github.com/rivo/tview"
|
||||||
)
|
)
|
||||||
|
@ -69,3 +73,30 @@ func (u *UI) shiftColumnFocus(s int) {
|
||||||
|
|
||||||
u.setColumnFocus()
|
u.setColumnFocus()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (u *UI) updateColumns(statusList []board.Status) error {
|
||||||
|
u.flex.Clear()
|
||||||
|
|
||||||
|
columns := make([]column, len(statusList))
|
||||||
|
|
||||||
|
for i := range statusList {
|
||||||
|
columns[i] = u.newColumn(statusList[i].ID, statusList[i].Name)
|
||||||
|
|
||||||
|
if len(statusList[i].CardIds) > 0 {
|
||||||
|
cards, err := u.board.CardList(statusList[i].CardIds)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("unable to get the card list. %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, c := range cards {
|
||||||
|
columns[i].cards.AddItem(fmt.Sprintf("[%d] %s", c.Id(), c.Title), "", 0, nil)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
u.flex.AddItem(columns[i].cards, 0, 1, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
u.columns = columns
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
package ui
|
package ui
|
||||||
|
|
||||||
// TODO: Update card status (card ID, oldStatus, newStatus)
|
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
|
@ -147,7 +145,7 @@ func (u *UI) refresh() error {
|
||||||
return fmt.Errorf("unable to get the status list, %w", err)
|
return fmt.Errorf("unable to get the status list, %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
u.updateBoard(statusList)
|
u.updateColumns(statusList)
|
||||||
|
|
||||||
u.setColumnFocus()
|
u.setColumnFocus()
|
||||||
|
|
||||||
|
@ -159,30 +157,3 @@ func (u *UI) shutdown() {
|
||||||
u.closeBoard()
|
u.closeBoard()
|
||||||
u.Stop()
|
u.Stop()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (u *UI) updateBoard(statusList []board.Status) error {
|
|
||||||
u.flex.Clear()
|
|
||||||
|
|
||||||
columns := make([]column, len(statusList))
|
|
||||||
|
|
||||||
for i := range statusList {
|
|
||||||
columns[i] = u.newColumn(statusList[i].ID, statusList[i].Name)
|
|
||||||
|
|
||||||
if len(statusList[i].CardIds) > 0 {
|
|
||||||
cards, err := u.board.CardList(statusList[i].CardIds)
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("unable to get the card list. %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, c := range cards {
|
|
||||||
columns[i].cards.AddItem(fmt.Sprintf("[%d] %s", c.Id(), c.Title), "", 0, nil)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
u.flex.AddItem(columns[i].cards, 0, 1, false)
|
|
||||||
}
|
|
||||||
|
|
||||||
u.columns = columns
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in a new issue