focus column transactions

pull/10/head
Edouard Paris 5 years ago
parent 282bce88bc
commit 0417918cbe

@ -29,6 +29,7 @@ var DefaultTransactionsColumns = []string{
}
type Transactions struct {
col int
columns []transactionsColumn
columnsView *gocui.View
view *gocui.View
@ -37,6 +38,7 @@ type Transactions struct {
type transactionsColumn struct {
name string
width int
display func(*netmodels.Transaction, ...color.Option) string
}
@ -64,21 +66,31 @@ func (c *Transactions) CursorUp() error {
}
func (c *Transactions) CursorRight() error {
err := cursorRight(c.columnsView, 2)
if c.col >= len(c.columns)-1 {
return nil
}
speed := c.columns[c.col].width + 1
c.col++
err := cursorRight(c.columnsView, speed)
if err != nil {
return err
}
return cursorRight(c.view, 2)
return cursorRight(c.view, speed)
}
func (c *Transactions) CursorLeft() error {
err := cursorLeft(c.columnsView, 2)
if c.col == 0 {
return nil
}
speed := c.columns[c.col-1].width + 1
c.col--
err := cursorLeft(c.columnsView, speed)
if err != nil {
return err
}
return cursorLeft(c.view, 2)
return cursorLeft(c.view, speed)
}
func (c Transactions) Delete(g *gocui.Gui) error {
@ -154,7 +166,11 @@ func (c *Transactions) display() {
for _, item := range c.transactions.List() {
var buffer bytes.Buffer
for i := range c.columns {
buffer.WriteString(c.columns[i].display(item))
var opt color.Option
if c.col == i {
opt = color.Bold
}
buffer.WriteString(c.columns[i].display(item, opt))
buffer.WriteString(" ")
}
fmt.Fprintln(c.view, buffer.String())
@ -175,7 +191,8 @@ func NewTransactions(txs *models.Transactions) *Transactions {
switch columns[i] {
case "TIME":
transactions.columns[i] = transactionsColumn{
name: fmt.Sprintf("%-15s", columns[i]),
name: fmt.Sprintf("%-15s", columns[i]),
width: 15,
display: func(tx *netmodels.Transaction, opts ...color.Option) string {
return color.Cyan(opts...)(
fmt.Sprintf("%15s", tx.Date.Format("15:04:05 Jan _2")),
@ -184,28 +201,32 @@ func NewTransactions(txs *models.Transactions) *Transactions {
}
case "HEIGHT":
transactions.columns[i] = transactionsColumn{
name: fmt.Sprintf("%8s", columns[i]),
name: fmt.Sprintf("%8s", columns[i]),
width: 8,
display: func(tx *netmodels.Transaction, opts ...color.Option) string {
return color.White(opts...)(fmt.Sprintf("%8d", tx.BlockHeight))
},
}
case "ADDRESSES":
transactions.columns[i] = transactionsColumn{
name: fmt.Sprintf("%10s", columns[i]),
name: fmt.Sprintf("%10s", columns[i]),
width: 10,
display: func(tx *netmodels.Transaction, opts ...color.Option) string {
return color.White(opts...)(fmt.Sprintf("%10d", len(tx.DestAddresses)))
},
}
case "FEE":
transactions.columns[i] = transactionsColumn{
name: fmt.Sprintf("%8s", columns[i]),
name: fmt.Sprintf("%8s", columns[i]),
width: 8,
display: func(tx *netmodels.Transaction, opts ...color.Option) string {
return color.White(opts...)(fmt.Sprintf("%8d", tx.TotalFees))
},
}
case "CONFIR":
transactions.columns[i] = transactionsColumn{
name: fmt.Sprintf("%8s", columns[i]),
name: fmt.Sprintf("%8s", columns[i]),
width: 8,
display: func(tx *netmodels.Transaction, opts ...color.Option) string {
n := fmt.Sprintf("%8d", tx.NumConfirmations)
if tx.NumConfirmations < 6 {
@ -216,7 +237,8 @@ func NewTransactions(txs *models.Transactions) *Transactions {
}
case "TXHASH":
transactions.columns[i] = transactionsColumn{
name: fmt.Sprintf("%-64s", columns[i]),
name: fmt.Sprintf("%-64s", columns[i]),
width: 64,
display: func(tx *netmodels.Transaction, opts ...color.Option) string {
return color.White(opts...)(fmt.Sprintf("%13s", tx.TxHash))
},
@ -230,14 +252,16 @@ func NewTransactions(txs *models.Transactions) *Transactions {
}
case "AMOUNT":
transactions.columns[i] = transactionsColumn{
name: fmt.Sprintf("%13s", columns[i]),
name: fmt.Sprintf("%13s", columns[i]),
width: 13,
display: func(tx *netmodels.Transaction, opts ...color.Option) string {
return color.White(opts...)(printer.Sprintf("%13d", tx.Amount))
},
}
default:
transactions.columns[i] = transactionsColumn{
name: fmt.Sprintf("%-21s", columns[i]),
name: fmt.Sprintf("%-21s", columns[i]),
width: 21,
display: func(tx *netmodels.Transaction, opts ...color.Option) string {
return "column does not exist"
},

Loading…
Cancel
Save