2024-01-14 13:46:42 +00:00
|
|
|
package ui
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
|
|
|
|
"github.com/gdamore/tcell/v2"
|
|
|
|
)
|
|
|
|
|
|
|
|
// initColumns initialises the columns of the Kanban board.
|
|
|
|
func (a *App) initColumns() error {
|
|
|
|
a.columnFlex.Clear()
|
|
|
|
|
|
|
|
statusList, err := a.board.StatusList()
|
|
|
|
if err != nil {
|
|
|
|
return fmt.Errorf("unable to retrieve the list of statuses; %w", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
columns := make([]*column, len(statusList))
|
|
|
|
|
|
|
|
for i := range statusList {
|
|
|
|
column := newColumn(statusList[i].ID, statusList[i].Name, a.boardMode)
|
|
|
|
a.columnFlex.AddItem(column, 50, 1, true)
|
|
|
|
columns[i] = column
|
|
|
|
}
|
|
|
|
|
|
|
|
a.columns = columns
|
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// initCardForm initialises the card form.
|
|
|
|
func (a *App) initCardForm() {
|
2024-01-17 17:10:36 +00:00
|
|
|
doneFunc := func(title, description string, success bool, mode formMode) {
|
2024-01-14 13:46:42 +00:00
|
|
|
if success {
|
|
|
|
switch mode {
|
|
|
|
case create:
|
|
|
|
a.saveCard(title, description)
|
|
|
|
case edit:
|
|
|
|
a.editFocusedCard(title, description)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
a.pages.HidePage(cardFormPage)
|
|
|
|
a.setColumnFocus()
|
|
|
|
}
|
|
|
|
|
|
|
|
a.cardForm.setDoneFunc(doneFunc)
|
|
|
|
}
|
|
|
|
|
2024-01-17 18:55:06 +00:00
|
|
|
// initDeleteModal initialises the modal for deleting cards or statuses.
|
|
|
|
func (a *App) initDeleteModal() {
|
2024-01-14 13:46:42 +00:00
|
|
|
doneFunc := func(_ int, buttonLabel string) {
|
|
|
|
if buttonLabel == "Confirm" {
|
2024-01-17 18:55:06 +00:00
|
|
|
switch a.mode {
|
|
|
|
case normal:
|
|
|
|
a.deleteFocusedCard()
|
|
|
|
case boardEdit:
|
|
|
|
a.deleteFocusedStatusColumn()
|
|
|
|
}
|
2024-01-14 13:46:42 +00:00
|
|
|
}
|
|
|
|
|
2024-01-17 18:55:06 +00:00
|
|
|
a.pages.HidePage(deleteModalPage)
|
2024-01-14 13:46:42 +00:00
|
|
|
a.setColumnFocus()
|
|
|
|
}
|
|
|
|
|
2024-01-17 18:55:06 +00:00
|
|
|
a.deleteModal.AddButtons([]string{"Cancel", "Confirm"}).SetDoneFunc(doneFunc)
|
2024-01-14 13:46:42 +00:00
|
|
|
|
2024-01-17 18:55:06 +00:00
|
|
|
a.deleteModal.SetBorder(true).SetBorderColor(tcell.ColorOrangeRed)
|
|
|
|
a.deleteModal.SetBackgroundColor(tcell.ColorBlack.TrueColor())
|
|
|
|
a.deleteModal.SetButtonBackgroundColor(tcell.ColorBlueViolet.TrueColor())
|
|
|
|
a.deleteModal.SetTextColor(tcell.ColorWhite.TrueColor())
|
2024-01-14 13:46:42 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// initQuitModal initialises the quit modal.
|
|
|
|
func (a *App) initQuitModal() {
|
|
|
|
doneFunc := func(_ int, buttonLabel string) {
|
|
|
|
switch buttonLabel {
|
|
|
|
case "Quit":
|
|
|
|
a.shutdown()
|
|
|
|
default:
|
|
|
|
a.pages.HidePage(quitPage)
|
|
|
|
a.setColumnFocus()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
a.quitModal.SetText("Do you want to quit the application?").
|
|
|
|
AddButtons([]string{"Quit", "Cancel"}).
|
|
|
|
SetDoneFunc(doneFunc)
|
|
|
|
}
|
|
|
|
|
2024-01-17 11:12:06 +00:00
|
|
|
// initCardView initialises the view window for displaying the card.
|
|
|
|
func (a *App) initCardView() {
|
2024-01-14 13:46:42 +00:00
|
|
|
doneFunc := func(key tcell.Key) {
|
|
|
|
if key == tcell.KeyEsc {
|
|
|
|
a.pages.HidePage(viewPage)
|
2024-01-17 11:12:06 +00:00
|
|
|
a.cardView.Clear()
|
2024-01-14 13:46:42 +00:00
|
|
|
a.setColumnFocus()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-01-17 11:12:06 +00:00
|
|
|
a.cardView.setDoneFunc(doneFunc)
|
2024-01-14 13:46:42 +00:00
|
|
|
}
|
|
|
|
|
2024-01-17 13:43:20 +00:00
|
|
|
// initStatusbar initialises the status bar.
|
2024-01-14 13:46:42 +00:00
|
|
|
func (a *App) initStatusbar() {
|
|
|
|
changedFunc := func() {
|
|
|
|
a.Draw()
|
|
|
|
}
|
|
|
|
|
|
|
|
a.statusbar.SetChangedFunc(changedFunc)
|
|
|
|
}
|
2024-01-17 13:43:20 +00:00
|
|
|
|
|
|
|
func (a *App) initStatusForm() {
|
2024-01-17 17:10:36 +00:00
|
|
|
doneFunc := func(name string, success bool, mode formMode) {
|
2024-01-17 13:43:20 +00:00
|
|
|
if success {
|
2024-01-17 17:10:36 +00:00
|
|
|
switch mode {
|
|
|
|
case create:
|
|
|
|
a.saveNewStatus(name)
|
|
|
|
case edit:
|
|
|
|
a.editFocusedStatusColumn(name)
|
|
|
|
}
|
2024-01-17 13:43:20 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
a.pages.HidePage(statusFormPage)
|
|
|
|
a.setColumnFocus()
|
|
|
|
}
|
|
|
|
|
|
|
|
a.statusForm.setDoneFunc(doneFunc)
|
|
|
|
}
|