113 lines
2.2 KiB
Go
113 lines
2.2 KiB
Go
// Right now this will be a very simple, scuffed interface.
|
|
package main
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
bolt "go.etcd.io/bbolt"
|
|
"github.com/eiannone/keyboard"
|
|
)
|
|
|
|
func badUI(db *bolt.DB) error {
|
|
keysEvents, err := keyboard.GetKeys(10)
|
|
if err != nil {
|
|
return fmt.Errorf("unable to create the keysEvent channel, %w", err)
|
|
}
|
|
|
|
defer func() {
|
|
_ = keyboard.Close()
|
|
}()
|
|
|
|
// infinite loop
|
|
fmt.Println(uiUsage())
|
|
|
|
app:
|
|
for {
|
|
event := <-keysEvents
|
|
if event.Err != nil {
|
|
return fmt.Errorf("keys event error: %w", event.Err)
|
|
}
|
|
|
|
switch event.Rune {
|
|
case 'q':
|
|
break app
|
|
case 'r':
|
|
if err := uiRefreshScuffedBoard(db); err != nil {
|
|
fmt.Printf("Error: Unable to refresh board, %s\n", err)
|
|
}
|
|
case 'a':
|
|
if err := uiCreateCard(db); err != nil {
|
|
fmt.Printf("Error: Unable to add a card, %s\n", err)
|
|
}
|
|
case 'v':
|
|
if err := uiViewCard(db, 1); err != nil {
|
|
fmt.Printf("Error: Unable to view card, %s\n", err)
|
|
}
|
|
default:
|
|
fmt.Println("Error: Unknown key event.")
|
|
}
|
|
}
|
|
|
|
// wait for a keyboard press
|
|
// take action
|
|
// a to add a card
|
|
// u to update a card
|
|
return nil
|
|
}
|
|
|
|
func uiRefreshScuffedBoard(db *bolt.DB) error {
|
|
statusList, err := readStatuses(db)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
fmt.Printf("--------------------\n")
|
|
for _, s := range statusList{
|
|
fmt.Printf("Status ID: %d\nStatus Name: \"%s\"\nCard IDs: %v\n\n", s.ID, s.Name, s.CardIds)
|
|
}
|
|
fmt.Printf("--------------------\n\n\n")
|
|
|
|
return nil
|
|
}
|
|
|
|
func uiCreateCard(db *bolt.DB) error {
|
|
title := "A card title"
|
|
|
|
content := "As a user, this is a ticket for me.\nAs a user, I want to close it."
|
|
|
|
if err := createCard(db, title, content); err != nil {
|
|
return err
|
|
}
|
|
|
|
fmt.Println("Sample card created successfully.")
|
|
|
|
return nil
|
|
}
|
|
|
|
func uiViewCard(db *bolt.DB, id int) error {
|
|
card, err := readCard(db, id)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
|
|
fmt.Printf("====================\n")
|
|
fmt.Printf("[%d] %s\n", card.ID, card.Title)
|
|
fmt.Printf("--------------------\n")
|
|
fmt.Println(card.Content)
|
|
fmt.Printf("====================\n")
|
|
|
|
return nil
|
|
}
|
|
|
|
func uiUsage() string {
|
|
usage := `
|
|
Press 'q' to quit
|
|
Press 'r' to refresh the board
|
|
Press 'a' to add a sample card
|
|
Press 'v' to view the first sample card
|
|
|
|
`
|
|
|
|
return usage
|
|
}
|