Implemented processing of demo data

pull/17/head
マリウス 2 years ago
parent e3f63f5906
commit ba3c917ff5
No known key found for this signature in database
GPG Key ID: 272ED814BF63261F

@ -7,6 +7,7 @@ import (
"log"
"os"
"github.com/mrusme/superhighway84/models"
"github.com/mrusme/superhighway84/tui"
)
@ -37,9 +38,8 @@ func main() {
// if err != nil {
// log.Panicln(err)
// }
TUI := tui.Init(&EMBEDFS)
//
//
// db, err := database.NewDatabase(ctx, dbURI, dbCache, dbInit, logger)
// if err != nil {
// log.Panicln(err)
@ -48,6 +48,24 @@ func main() {
// db.Connect(func() {
// //TUI.App.Stop()
// })
//
// articles, _ := db.ListArticles()
var articles []models.Article
go func() {
for i := 0; i < 10; i++ {
time.Sleep(time.Second * 3)
art1 := *models.NewArticle()
art1.Subject = "This is a test"
art1.Body = "This is just a test article\nWhat's up there?"
art1.From = "test@example.com"
art1.Newsgroup = "comp.alt.test"
articles = append(articles, art1)
}
}()
TUI := tui.Init(&EMBEDFS, &articles)
go func() {
time.Sleep(time.Second * 2)

@ -2,41 +2,51 @@ package tui
import (
"github.com/gdamore/tcell/v2"
"github.com/mrusme/superhighway84/models"
"github.com/rivo/tview"
)
type Mainscreen struct {
Canvas *tview.Grid
Groups *tview.List
Articles *tview.List
ArticlesDatasource *[]models.Article
}
func(t *TUI) NewMainscreen() (*Mainscreen) {
func(t *TUI) NewMainscreen(articlesDatasource *[]models.Article) (*Mainscreen) {
mainscreen := new(Mainscreen)
mainscreen.ArticlesDatasource = articlesDatasource
newPrimitive := func(text string) tview.Primitive {
return tview.NewTextView().
SetTextAlign(tview.AlignCenter).
SetText(text)
}
groups := tview.NewList().
AddItem("List item 1", "Some explanatory text", 'a', nil).
AddItem("List item 2", "Some explanatory text", 'b', nil).
AddItem("List item 3", "Some explanatory text", 'c', nil).
AddItem("List item 4", "Some explanatory text", 'd', nil).
mainscreen.Groups = tview.NewList().
SetWrapAround(false).
ShowSecondaryText(false).
AddItem("List item 1", "Some explanatory text", 0, nil).
AddItem("List item 2", "Some explanatory text", 0, nil).
AddItem("List item 3", "Some explanatory text", 0, nil).
AddItem("List item 4", "Some explanatory text", 0, nil).
AddItem("Quit", "Press to exit", 'q', func() {
})
articles := tview.NewList().
mainscreen.Articles = tview.NewList().
SetWrapAround(true).
SetHighlightFullLine(true).
SetSelectedBackgroundColor(tcell.ColorTeal).
SetSecondaryTextColor(tcell.ColorGrey).
AddItem("List item 1", "Some explanatory text", ' ', nil).
AddItem("List item 2", "Some explanatory text", ' ', nil).
AddItem("List item 3", "Some explanatory text", ' ', nil).
AddItem("List item 4", "Some explanatory text", ' ', nil)
AddItem("List item 1", "Some explanatory text", 0, nil).
AddItem("List item 2", "Some explanatory text", 0, nil).
AddItem("List item 3", "Some explanatory text", 0, nil).
AddItem("List item 4", "Some explanatory text", 0, nil)
mainscreen.Canvas = tview.NewGrid().
SetRows(3, 0, 3).
@ -45,8 +55,8 @@ func(t *TUI) NewMainscreen() (*Mainscreen) {
AddItem(newPrimitive("Header"), 0, 0, 1, 2, 0, 0, false).
AddItem(newPrimitive("Footer"), 2, 0, 1, 2, 0, 0, false)
mainscreen.Canvas.AddItem(groups, 1, 0, 1, 1, 0, 0, false).
AddItem(articles, 1, 1, 1, 1, 0, 0, false)
mainscreen.Canvas.AddItem(mainscreen.Groups, 1, 0, 1, 1, 0, 0, false).
AddItem(mainscreen.Articles, 1, 1, 1, 1, 0, 0, false)
return mainscreen
}
@ -56,5 +66,20 @@ func (mainscreen *Mainscreen) GetCanvas() (tview.Primitive) {
}
func(mainscreen *Mainscreen) Refresh() {
addedGroups := make(map[string]bool)
mainscreen.Groups.Clear()
mainscreen.Articles.Clear()
mainscreen.Groups.AddItem("*", "", 0, nil)
for _, article := range *mainscreen.ArticlesDatasource {
mainscreen.Articles.AddItem(article.Subject, article.From, 0, nil)
if addedGroups[article.Newsgroup] != true {
mainscreen.Groups.AddItem(article.Newsgroup, "", 0, nil)
addedGroups[article.Newsgroup] = true
}
}
}

@ -6,6 +6,7 @@ import (
"time"
"github.com/gdamore/tcell/v2"
"github.com/mrusme/superhighway84/models"
"github.com/rivo/tview"
)
@ -20,7 +21,7 @@ type View interface {
Refresh()
}
func Init(embedfs *embed.FS) (*TUI) {
func Init(embedfs *embed.FS, articlesDatasource *[]models.Article) (*TUI) {
t := new(TUI)
tview.Styles = tview.Theme{
@ -46,7 +47,7 @@ func Init(embedfs *embed.FS) (*TUI) {
t.Views = make(map[string]View)
t.Views["splashscreen"] = t.NewSplashscreen(&logoBytes)
t.Views["mainscreen"] = t.NewMainscreen()
t.Views["mainscreen"] = t.NewMainscreen(articlesDatasource)
t.initInput()
return t
@ -71,6 +72,7 @@ func (t *TUI) Launch() {
time.Sleep(time.Millisecond * 200)
t.SetView("splashscreen")
t.Refresh()
t.App.Draw()
}()
if err := t.App.Run(); err != nil {
@ -86,6 +88,5 @@ func(t *TUI) SetView(name string) {
func (t *TUI) Refresh() {
t.Views[t.ActiveView].Refresh()
t.App.Draw()
}

Loading…
Cancel
Save