Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions _examples/table.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
// Use of this source code is governed by a MIT license that can
// be found in the LICENSE file.

//go:build ignore
// +build ignore

package main
Expand Down Expand Up @@ -61,6 +62,21 @@ func main() {

ui.Render(table3)

borderlessTable := widgets.NewTable()
borderlessTable.Rows = [][]string{
[]string{"header1", "header2", "header3"},
[]string{"Foundations", "Go-lang is so cool", "Im working on Ruby"},
[]string{"2016", "11", "11"},
}
borderlessTable.TextStyle = ui.NewStyle(ui.ColorWhite)
borderlessTable.TextAlignment = ui.AlignCenter
borderlessTable.SetRect(0, 30, 60, 35)
borderlessTable.Border = false
borderlessTable.RowSeparator = false
borderlessTable.ColSeparator = false

ui.Render(borderlessTable)

uiEvents := ui.PollEvents()
for {
e := <-uiEvents
Expand Down
28 changes: 16 additions & 12 deletions widgets/table.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ type Table struct {
ColumnWidths []int
TextStyle Style
RowSeparator bool
ColSeparator bool
TextAlignment Alignment
RowStyles map[int]Style
FillRow bool
Expand All @@ -38,6 +39,7 @@ func NewTable() *Table {
Block: *NewBlock(),
TextStyle: Theme.Table.Text,
RowSeparator: true,
ColSeparator: true,
RowStyles: make(map[int]Style),
ColumnResizer: func() {},
}
Expand Down Expand Up @@ -107,21 +109,23 @@ func (self *Table) Draw(buf *Buffer) {
colXCoordinate += columnWidths[j] + 1
}

// draw vertical separators
separatorStyle := self.Block.BorderStyle

separatorXCoordinate := self.Inner.Min.X
verticalCell := NewCell(VERTICAL_LINE, separatorStyle)
for i, width := range columnWidths {
if self.FillRow && i < len(columnWidths)-1 {
verticalCell.Style.Bg = rowStyle.Bg
} else {
verticalCell.Style.Bg = self.Block.BorderStyle.Bg
}
if self.ColSeparator {
// draw vertical separators
separatorXCoordinate := self.Inner.Min.X
verticalCell := NewCell(VERTICAL_LINE, separatorStyle)
for i, width := range columnWidths {
if self.FillRow && i < len(columnWidths)-1 {
verticalCell.Style.Bg = rowStyle.Bg
} else {
verticalCell.Style.Bg = self.Block.BorderStyle.Bg
}

separatorXCoordinate += width
buf.SetCell(verticalCell, image.Pt(separatorXCoordinate, yCoordinate))
separatorXCoordinate++
separatorXCoordinate += width
buf.SetCell(verticalCell, image.Pt(separatorXCoordinate, yCoordinate))
separatorXCoordinate++
}
}

yCoordinate++
Expand Down