feat: move a card between statuses #3
2 changed files with 35 additions and 33 deletions
|
@ -15,17 +15,17 @@ type column struct {
|
||||||
cards *tview.List
|
cards *tview.List
|
||||||
}
|
}
|
||||||
|
|
||||||
func (u *UI) newColumn(statusID int, statusName string) column {
|
func (u *UI) newColumn(status board.Status) (column, error) {
|
||||||
cards := tview.NewList()
|
cardList := tview.NewList()
|
||||||
|
|
||||||
cards.SetBorder(true)
|
cardList.SetBorder(true)
|
||||||
cards.ShowSecondaryText(false)
|
cardList.ShowSecondaryText(false)
|
||||||
cards.SetTitle(" " + statusName + " ")
|
cardList.SetTitle(" " + status.Name + " ")
|
||||||
cards.SetHighlightFullLine(true)
|
cardList.SetHighlightFullLine(true)
|
||||||
cards.SetSelectedFocusOnly(true)
|
cardList.SetSelectedFocusOnly(true)
|
||||||
cards.SetWrapAround(false)
|
cardList.SetWrapAround(false)
|
||||||
|
|
||||||
cards.SetInputCapture(func(event *tcell.EventKey) *tcell.EventKey {
|
cardList.SetInputCapture(func(event *tcell.EventKey) *tcell.EventKey {
|
||||||
switch event.Rune() {
|
switch event.Rune() {
|
||||||
case 'q':
|
case 'q':
|
||||||
u.pages.ShowPage(quitPageName)
|
u.pages.ShowPage(quitPageName)
|
||||||
|
@ -38,29 +38,42 @@ func (u *UI) newColumn(statusID int, statusName string) column {
|
||||||
case 'l':
|
case 'l':
|
||||||
u.shiftColumnFocus(shiftRight)
|
u.shiftColumnFocus(shiftRight)
|
||||||
case 'j':
|
case 'j':
|
||||||
cur := cards.GetCurrentItem()
|
cur := cardList.GetCurrentItem()
|
||||||
if cur == cards.GetItemCount()-1 {
|
if cur == cardList.GetItemCount()-1 {
|
||||||
cur = 0
|
cur = 0
|
||||||
} else {
|
} else {
|
||||||
cur++
|
cur++
|
||||||
}
|
}
|
||||||
cards.SetCurrentItem(cur)
|
cardList.SetCurrentItem(cur)
|
||||||
case 'k':
|
case 'k':
|
||||||
cur := cards.GetCurrentItem()
|
cur := cardList.GetCurrentItem()
|
||||||
cur--
|
cur--
|
||||||
cards.SetCurrentItem(cur)
|
cardList.SetCurrentItem(cur)
|
||||||
}
|
}
|
||||||
|
|
||||||
return event
|
return event
|
||||||
})
|
})
|
||||||
|
|
||||||
c := column{
|
if len(status.CardIds) > 0 {
|
||||||
statusID: statusID,
|
cards, err := u.board.CardList(status.CardIds)
|
||||||
statusName: statusName,
|
if err != nil {
|
||||||
cards: cards,
|
return column{}, fmt.Errorf("unable to get the card list. %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return c
|
for _, c := range cards {
|
||||||
|
cardList.AddItem(fmt.Sprintf("[%d] %s", c.Id(), c.Title), "", 0, nil)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
u.flex.AddItem(cardList, 0, 1, false)
|
||||||
|
|
||||||
|
c := column{
|
||||||
|
statusID: status.ID,
|
||||||
|
statusName: status.Name,
|
||||||
|
cards: cardList,
|
||||||
|
}
|
||||||
|
|
||||||
|
return c, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (u *UI) setColumnFocus() {
|
func (u *UI) setColumnFocus() {
|
||||||
|
@ -92,20 +105,7 @@ func (u *UI) updateColumns(statusList []board.Status) error {
|
||||||
columns := make([]column, len(statusList))
|
columns := make([]column, len(statusList))
|
||||||
|
|
||||||
for i := range statusList {
|
for i := range statusList {
|
||||||
columns[i] = u.newColumn(statusList[i].ID, statusList[i].Name)
|
columns[i], _ = u.newColumn(statusList[i])
|
||||||
|
|
||||||
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
|
u.columns = columns
|
||||||
|
|
|
@ -149,6 +149,8 @@ func (u *UI) refresh() error {
|
||||||
|
|
||||||
u.setColumnFocus()
|
u.setColumnFocus()
|
||||||
|
|
||||||
|
// TODO: update move status page here
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue