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() { doneFunc := func(title, description string, success bool, mode cardFormMode) { 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) } // initDeleteCardModal initialises the modal for deleting cards. func (a *App) initDeleteCardModal() { doneFunc := func(_ int, buttonLabel string) { if buttonLabel == "Confirm" { a.deleteFocusedCard() a.refresh(true) } a.pages.HidePage(deleteCardModalPage) a.setColumnFocus() } a.deleteCardModal.AddButtons([]string{"Confirm", "Cancel"}).SetDoneFunc(doneFunc) a.deleteCardModal.SetBorder(true).SetBorderColor(tcell.ColorOrangeRed) a.deleteCardModal.SetBackgroundColor(tcell.ColorBlack.TrueColor()) a.deleteCardModal.SetButtonBackgroundColor(tcell.ColorBlueViolet.TrueColor()) a.deleteCardModal.SetTextColor(tcell.ColorWhite.TrueColor()) } // 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) } // initCardView initialises the view window for displaying the card. func (a *App) initCardView() { doneFunc := func(key tcell.Key) { if key == tcell.KeyEsc { a.pages.HidePage(viewPage) a.cardView.Clear() a.setColumnFocus() } } a.cardView.setDoneFunc(doneFunc) } func (a *App) initStatusbar() { changedFunc := func() { a.Draw() } a.statusbar.SetChangedFunc(changedFunc) }