mirror of https://github.com/miguelmota/cointop
show url
parent
4ecf4a96ca
commit
7da09bc644
@ -0,0 +1,86 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/jroimartin/gocui"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (ct *Cointop) cursorDown(g *gocui.Gui, v *gocui.View) error {
|
||||||
|
if ct.tableview == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
_, y := ct.tableview.Origin()
|
||||||
|
cx, cy := ct.tableview.Cursor()
|
||||||
|
numRows := len(ct.coins) - 1
|
||||||
|
//fmt.Fprint(v, cy)
|
||||||
|
if (cy + y + 1) > numRows {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
if err := ct.tableview.SetCursor(cx, cy+1); err != nil {
|
||||||
|
ox, oy := ct.tableview.Origin()
|
||||||
|
if err := ct.tableview.SetOrigin(ox, oy+1); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ct.rowChanged()
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ct *Cointop) cursorUp(g *gocui.Gui, v *gocui.View) error {
|
||||||
|
if ct.tableview == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
ox, oy := ct.tableview.Origin()
|
||||||
|
cx, cy := ct.tableview.Cursor()
|
||||||
|
//fmt.Fprint(v, oy)
|
||||||
|
if err := ct.tableview.SetCursor(cx, cy-1); err != nil && oy > 0 {
|
||||||
|
if err := ct.tableview.SetOrigin(ox, oy-1); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ct.rowChanged()
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ct *Cointop) pageDown(g *gocui.Gui, v *gocui.View) error {
|
||||||
|
if ct.tableview == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
_, y := ct.tableview.Origin()
|
||||||
|
cx, cy := ct.tableview.Cursor()
|
||||||
|
numRows := len(ct.coins) - 1
|
||||||
|
_, sy := ct.tableview.Size()
|
||||||
|
rows := sy
|
||||||
|
if (cy + y + rows) > numRows {
|
||||||
|
// go to last row
|
||||||
|
ct.tableview.SetCursor(cx, numRows)
|
||||||
|
ox, _ := ct.tableview.Origin()
|
||||||
|
ct.tableview.SetOrigin(ox, numRows)
|
||||||
|
ct.rowChanged()
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
if err := ct.tableview.SetCursor(cx, cy+rows); err != nil {
|
||||||
|
ox, oy := ct.tableview.Origin()
|
||||||
|
if err := ct.tableview.SetOrigin(ox, oy+rows); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ct.rowChanged()
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ct *Cointop) pageUp(g *gocui.Gui, v *gocui.View) error {
|
||||||
|
if ct.tableview == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
ox, oy := ct.tableview.Origin()
|
||||||
|
cx, cy := ct.tableview.Cursor()
|
||||||
|
_, sy := ct.tableview.Size()
|
||||||
|
rows := sy
|
||||||
|
if err := ct.tableview.SetCursor(cx, cy-rows); err != nil && oy > 0 {
|
||||||
|
if err := ct.tableview.SetOrigin(ox, oy-rows); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ct.rowChanged()
|
||||||
|
return nil
|
||||||
|
}
|
@ -0,0 +1,72 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/bradfitz/slice"
|
||||||
|
"github.com/jroimartin/gocui"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (ct *Cointop) sort(sortby string, desc bool) func(g *gocui.Gui, v *gocui.View) error {
|
||||||
|
return func(g *gocui.Gui, v *gocui.View) error {
|
||||||
|
if ct.currentsort == sortby {
|
||||||
|
ct.sortdesc = !ct.sortdesc
|
||||||
|
} else {
|
||||||
|
ct.currentsort = sortby
|
||||||
|
ct.sortdesc = desc
|
||||||
|
}
|
||||||
|
slice.Sort(ct.coins[:], func(i, j int) bool {
|
||||||
|
if ct.sortdesc {
|
||||||
|
i, j = j, i
|
||||||
|
}
|
||||||
|
a := ct.coins[i]
|
||||||
|
b := ct.coins[j]
|
||||||
|
switch sortby {
|
||||||
|
case "rank":
|
||||||
|
return a.Rank < b.Rank
|
||||||
|
case "name":
|
||||||
|
return a.Name < b.Name
|
||||||
|
case "symbol":
|
||||||
|
return a.Symbol < b.Symbol
|
||||||
|
case "price":
|
||||||
|
return a.PriceUSD < b.PriceUSD
|
||||||
|
case "marketcap":
|
||||||
|
return a.MarketCapUSD < b.MarketCapUSD
|
||||||
|
case "24hvolume":
|
||||||
|
return a.USD24HVolume < b.USD24HVolume
|
||||||
|
case "1hchange":
|
||||||
|
return a.PercentChange1H < b.PercentChange1H
|
||||||
|
case "24hchange":
|
||||||
|
return a.PercentChange24H < b.PercentChange24H
|
||||||
|
case "7dchange":
|
||||||
|
return a.PercentChange7D < b.PercentChange7D
|
||||||
|
case "totalsupply":
|
||||||
|
return a.TotalSupply < b.TotalSupply
|
||||||
|
case "availablesupply":
|
||||||
|
return a.AvailableSupply < b.AvailableSupply
|
||||||
|
case "lastupdated":
|
||||||
|
return a.LastUpdated < b.LastUpdated
|
||||||
|
default:
|
||||||
|
return a.Rank < b.Rank
|
||||||
|
}
|
||||||
|
})
|
||||||
|
g.Update(func(g *gocui.Gui) error {
|
||||||
|
ct.tableview.Clear()
|
||||||
|
ct.updateTable()
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
/*
|
||||||
|
g.Update(func(g *gocui.Gui) error {
|
||||||
|
ct.chartview.Clear()
|
||||||
|
maxX, _ := g.Size()
|
||||||
|
_, cy := ct.chartview.Cursor()
|
||||||
|
coin := "ethereum"
|
||||||
|
ct.chartPoints(maxX, coin)
|
||||||
|
ct.updateChart()
|
||||||
|
fmt.Fprint(ct.chartview, cy)
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
*/
|
||||||
|
|
||||||
|
ct.rowChanged()
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue