You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
cointop/cointop.go

88 lines
1.7 KiB
Go

package main
import (
"fmt"
"log"
"github.com/gizak/termui"
"github.com/jroimartin/gocui"
"github.com/miguelmota/cointop/pkg/api"
apitypes "github.com/miguelmota/cointop/pkg/api/types"
"github.com/miguelmota/cointop/pkg/pad"
"github.com/miguelmota/cointop/pkg/table"
)
var (
oneMinute int64 = 60
oneHour = oneMinute * 60
oneDay = oneHour * 24
oneWeek = oneDay * 7
oneMonth = oneDay * 30
oneYear = oneDay * 365
)
// Cointop cointop
type Cointop struct {
g *gocui.Gui
marketview *gocui.View
chartview *gocui.View
chartpoints [][]termui.Cell
headersview *gocui.View
tableview *gocui.View
table *table.Table
statusview *gocui.View
sortdesc bool
currentsort string
api api.Interface
coins []*apitypes.Coin
}
func (ct *Cointop) rowChanged() {
ct.showLink()
}
func (ct *Cointop) fetchData() ([]*apitypes.Coin, error) {
limit := 100
result := []*apitypes.Coin{}
coins, err := ct.api.GetAllCoinData(int(limit))
if err != nil {
return result, err
}
for i := range coins {
coin := coins[i]
result = append(result, &coin)
}
return result, nil
}
func (ct *Cointop) updateMarket() error {
maxX, _ := ct.g.Size()
s := "foo"
fmt.Fprintln(ct.marketview, pad.Right(fmt.Sprintf("[q]uit %s", s), maxX, " "))
return nil
}
func main() {
g, err := gocui.NewGui(gocui.Output256)
if err != nil {
log.Fatalf("new gocui: %v", err)
}
defer g.Close()
g.Cursor = true
g.Mouse = true
g.Highlight = true
ct := Cointop{
g: g,
api: api.NewCMC(),
}
g.SetManagerFunc(ct.layout)
if err := ct.keybindings(g); err != nil {
log.Fatalf("keybindings: %v", err)
}
if err := g.MainLoop(); err != nil && err != gocui.ErrQuit {
log.Fatalf("main loop: %v", err)
}
}