color code sorted column header

Former-commit-id: e5705b6de382a4b514e81394381e2fd96b97421a [formerly e5705b6de382a4b514e81394381e2fd96b97421a [formerly 3e42f1b6501f7b78316ac814616cd9c23b51a503 [formerly 76e28a6462]]]
Former-commit-id: ed42501f33e174cb0797a63e24b54a2b22badbc2
Former-commit-id: b90ee0f4bf52890439dffc6bd7d773f86edad82d [formerly 6b2b324fc6e01abb76b93047e050f33d96698fc8]
Former-commit-id: 4e3ce6fabace7526b21acf0b0cf02294f010fb82
pull/15/head
Miguel Mota 6 years ago
parent 6565fd4554
commit bfcefcab13

@ -0,0 +1,68 @@
package cointop
import (
"fmt"
"strings"
"github.com/miguelmota/cointop/pkg/color"
)
func (ct *Cointop) updateHeaders() {
ct.Update(func() {
cm := map[string]func(a ...interface{}) string{
"rank": color.Black,
"name": color.Black,
"symbol": color.Black,
"price": color.Black,
"marketcap": color.Black,
"24hvolume": color.Black,
"1hchange": color.Black,
"24hchange": color.Black,
"7dchange": color.Black,
"totalsupply": color.Black,
"availablesupply": color.Black,
"lastupdated": color.Black,
}
sm := map[string]string{
"rank": " ",
"name": " ",
"symbol": " ",
"price": " ",
"marketcap": " ",
"24hvolume": " ",
"1hchange": " ",
"24hchange": " ",
"7dchange": " ",
"totalsupply": " ",
"availablesupply": " ",
"lastupdated": " ",
}
for k := range cm {
if ct.sortby == k {
cm[k] = color.CyanBg
if ct.sortdesc {
sm[k] = "▼"
} else {
sm[k] = "▲"
}
}
}
headers := []string{
fmt.Sprintf("%s%s", cm["rank"](sm["rank"]+"[r]ank"), strings.Repeat(" ", 1)),
fmt.Sprintf("%s%s", cm["name"](sm["name"]+"[n]ame"), strings.Repeat(" ", 15)),
fmt.Sprintf("%s%s", cm["symbol"](sm["symbol"]+"[s]ymbol"), strings.Repeat(" ", 1)),
fmt.Sprintf("%s%s", strings.Repeat(" ", 1), cm["price"](sm["price"]+"[p]rice")),
fmt.Sprintf("%s%s", strings.Repeat(" ", 5), cm["marketcap"](sm["marketcap"]+"[m]arket cap")),
fmt.Sprintf("%s%s", strings.Repeat(" ", 3), cm["24hvolume"](sm["24hvolume"]+"24H [v]olume")),
fmt.Sprintf("%s%s", strings.Repeat(" ", 4), cm["1hchange"](sm["1hchange"]+"[1]H%")),
fmt.Sprintf("%s%s", strings.Repeat(" ", 3), cm["24hchange"](sm["24hchange"]+"[2]4H%")),
fmt.Sprintf("%s%s", strings.Repeat(" ", 3), cm["7dchange"](sm["7dchange"]+"[7]DH%")),
fmt.Sprintf("%s%s", strings.Repeat(" ", 6), cm["totalsupply"](sm["totalsupply"]+"[t]otal supply")),
fmt.Sprintf("%s%s", strings.Repeat(" ", 1), cm["availablesupply"](sm["availablesupply"]+"[a]vailable supply")),
fmt.Sprintf("%s%s", strings.Repeat(" ", 4), cm["lastupdated"](sm["lastupdated"]+"last [u]pdated")),
}
ct.headersview.Clear()
fmt.Fprintln(ct.headersview, strings.Join(headers, ""))
})
}

@ -5,8 +5,6 @@ import (
"github.com/jroimartin/gocui"
apt "github.com/miguelmota/cointop/pkg/api/types"
"github.com/miguelmota/cointop/pkg/pad"
"github.com/miguelmota/cointop/pkg/table"
)
func (ct *Cointop) layout(g *gocui.Gui) error {
@ -40,31 +38,11 @@ func (ct *Cointop) layout(g *gocui.Gui) error {
if err != gocui.ErrUnknownView {
return err
}
t := table.New().SetWidth(maxX)
headers := []string{
pad.Right("[r]ank", 7, " "),
pad.Right("[n]ame", 18, " "),
pad.Right("[s]ymbol", 8, " "),
pad.Left("[p]rice", 13, " "),
pad.Left("[m]arket cap", 17, " "),
pad.Left("24H [v]olume", 15, " "),
pad.Left("[1]H%", 9, " "),
pad.Left("[2]4H%", 9, " "),
pad.Left("[7]D%", 9, " "),
pad.Left("[t]otal supply", 20, " "),
pad.Left("[a]vailable supply", 18, " "),
pad.Left("last [u]pdated", 18, " "),
}
for _, h := range headers {
t.AddCol(h)
}
t.Format().Fprint(v)
ct.headersview = v
ct.headersview.Frame = false
ct.headersview.Highlight = true
ct.headersview.SelBgColor = gocui.ColorGreen
ct.headersview.SelFgColor = gocui.ColorBlack
ct.headersview.FgColor = gocui.ColorBlack
ct.headersview.BgColor = gocui.ColorGreen
ct.updateHeaders()
}
topOffset = topOffset + 1

@ -44,6 +44,7 @@ func (ct *Cointop) sort(sortby string, desc bool, list []*apt.Coin) {
return a.Rank < b.Rank
}
})
ct.updateHeaders()
}
func (ct *Cointop) sortfn(sortby string, desc bool) func(g *gocui.Gui, v *gocui.View) error {

@ -60,7 +60,7 @@ func (ct *Cointop) refreshTable() error {
name = fmt.Sprintf("%s...", name[0:18])
}
ct.table.AddRow(
fmt.Sprintf("%6v ", coin.Rank),
fmt.Sprintf("%7v ", coin.Rank),
fmt.Sprintf("%.22s", name),
fmt.Sprintf("%.6s", coin.Symbol),
colorprice(fmt.Sprintf("%12s", humanize.Commaf(coin.PriceUSD))),
@ -69,7 +69,7 @@ func (ct *Cointop) refreshTable() error {
color1h(fmt.Sprintf("%8.2f%%", coin.PercentChange1H)),
color24h(fmt.Sprintf("%8.2f%%", coin.PercentChange24H)),
color7d(fmt.Sprintf("%8.2f%%", coin.PercentChange7D)),
fmt.Sprintf("%20s", humanize.Commaf(coin.TotalSupply)),
fmt.Sprintf("%21s", humanize.Commaf(coin.TotalSupply)),
fmt.Sprintf("%18s", humanize.Commaf(coin.AvailableSupply)),
fmt.Sprintf("%18s", lastUpdated),
// add %percent of cap

@ -3,6 +3,8 @@ package color
import "github.com/fatih/color"
var (
// Black color
Black = color.New(color.FgBlack).SprintFunc()
// White color
White = color.New(color.FgWhite).SprintFunc()
// WhiteBold bold
@ -13,4 +15,8 @@ var (
Red = color.New(color.FgRed).SprintFunc()
// Cyan color
Cyan = color.New(color.FgCyan).SprintFunc()
// CyanBg color
CyanBg = color.New(color.BgCyan).SprintFunc()
// BlueBg color
BlueBg = color.New(color.BgBlue).SprintFunc()
)

Loading…
Cancel
Save