diff --git a/README.md b/README.md index 8141ebf..db6dab3 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,62 @@ # termui -Go terminal rich user interface +Go terminal dashboard, inspired by [blessed-contrib](https://github.com/yaronn/blessed-contrib), but purely in Go. + +Cross-platform, easy to compile, and fully-customizable. + +__Demo:__ + +demo + +## Installation + + go get github.com/gizak/termui + +## Usage + +Each component's layout is a bit like HTML block, which has border and padding. The `Border` property can be chosen to hide or display (with its border label), when it comes to display, in this case the space it takes is counted as padding space (i.e. `PaddingTop=PaddingBottom=PaddingLeft=PaddingRight=1`). + +`````go + import ui "github.com/gizak/termui" // <- ui shortcut, optional + + func main() { + err := ui.Init() + if err != nil { + panic(err) + } + defer ui.Close() + + p := ui.NewP(":PRESS q TO QUIT DEMO") + p.Height = 3 + p.Width = 50 + p.TextFgColor = ui.ColorWhite + p.Border.Label = "Text Box" + p.Border.FgColor = ui.ColorCyan + + g := ui.NewGauge() + g.Percent = 50 + g.Width = 50 + g.Height = 3 + g.Y = 11 + g.Border.Label = "Gauge" + g.BarColor = ui.ColorRed + g.Border.FgColor = ui.ColorWhite + g.Border.LabelFgColor = ui.ColorCyan + + ui.Render(p, g) + + // event handler... + } +````` + +Note that components can be overlapped (I'd rather call this as a feature...), `Render(Renderer...)` renders its args from left to right (i.e. each component's weight is arising from left to right). + +## Widgets + +_APIs are subject to change, docs will be added after 2 or 3 commits_ + +## GoDoc + +[godoc](https://godoc.org/github.com/gizak/termui). + +## License +This library is under the [MIT License](http://opensource.org/licenses/MIT) diff --git a/chart.go b/chart.go index 35d4a41..cbf0644 100644 --- a/chart.go +++ b/chart.go @@ -266,6 +266,9 @@ func (lc *LineChart) plotAxes() []Point { func (lc *LineChart) Buffer() []Point { ps := lc.Block.Buffer() + if lc.Data == nil || len(lc.Data) == 0 { + return ps + } lc.calcLayout() ps = append(ps, lc.plotAxes()...) diff --git a/example/screencast.gif b/example/screencast.gif new file mode 100644 index 0000000..8eaaed9 Binary files /dev/null and b/example/screencast.gif differ