Go to file
Jakub Sobon 64819efa3c Merge branch '10-line-chart' into devel 2019-01-13 01:51:48 -05:00
align Alignment now supports full-width runes. 2018-05-27 19:28:09 +01:00
area Adding licences and a script to automate the same. 2018-04-14 23:06:57 +01:00
canvas Test coverage for the initial functionality of linechart. 2019-01-13 00:03:19 -05:00
cell Updated doc as per comment. 2018-06-04 16:16:51 +01:00
container Fixing lint errors. 2018-05-11 16:32:37 +01:00
doc Adding missing keyword. 2018-05-14 01:57:00 +01:00
draw Test coverage for the initial functionality of linechart. 2019-01-13 00:03:19 -05:00
eventqueue The event queue can now report if it is empty. 2018-06-18 20:02:17 +01:00
images Adding a linechartdemo gif. 2019-01-13 01:40:24 -05:00
keyboard Adding licences and a script to automate the same. 2018-04-14 23:06:57 +01:00
mouse Fixing lint errors. 2018-05-11 16:32:37 +01:00
numbers Utility to find min and max from a slice of values. 2019-01-12 16:05:19 -05:00
scripts The WRITE argument is second, not third. 2018-07-01 17:32:23 -04:00
terminal Faketerm and diff on it supports partial cells. 2018-05-27 19:27:11 +01:00
terminalapi Fixing lint errors. 2018-05-11 16:32:37 +01:00
widgetapi A widget option to specify the maximum canvas size. 2018-05-07 12:42:19 +01:00
widgets More test coverage for linechart. 2019-01-13 01:38:39 -05:00
.gitignore Renaming display to terminal. 2018-03-26 16:31:20 +01:00
.travis.yml Enabling autogen for licences again. 2018-07-01 17:23:35 -04:00
CONTRIBUTING.md Adding a CONTRIBUTING.md file. 2018-04-14 23:02:18 +01:00
LICENSE Initial commit 2018-03-24 12:01:49 +00:00
README.md Adding a linechartdemo gif. 2019-01-13 01:40:24 -05:00
termdash.go Don't return from Run() while the goroutine is still running. 2018-07-02 23:05:38 -04:00
termdash_test.go Removing two races in termdash_test. 2018-06-23 20:52:32 -04:00

README.md

Doc Status Build Status Coverage Status Go Report Card License

termdash

This project implements a terminal based dashboard. The feature set is inspired by the gizak/termui project, which in turn was inspired by a javascript based yaronn/blessed-contrib. Why the rewrite you ask?

  1. The above mentioned gizak/termui is abandoned and isn't maintained anymore.
  2. The project doesn't follow the design goals outlined below.

Design goals

This effort is focused on good software design and maintainability. By good design I mean:

  1. Write readable, well documented code.
  2. Only beautiful, simple APIs, no exposed concurrency, channels, internals, etc.
  3. Follow Effective Go.
  4. Provide an infrastructure that allows development of individual dashboard components in separation.
  5. The infrastructure must enforce consistency in how the dashboard components are implemented.
  6. Focus on maintainability, the infrastructure and dashboard components must have good test coverage, the repository must have CI/CD enabled.

On top of that - let's have fun, learn something and become better developers together.

Requirements

  1. Native support of the UTF-8 encoding.
  2. Simple container management to position the widgets and set their size.
  3. Mouse and keyboard input.
  4. Cross-platform terminal based output.
  5. Unit testing framework for simple and readable tests of dashboard elements.
  6. Tooling to streamline addition of new widgets.
  7. Apache-2.0 licence for the project.

High-Level design

See the design document.

Contributing

If you are willing to contribute, improve the infrastructure or develop a widget, first of all Thank You! Your help is appreciated.

Please see the CONTRIBUTING.md file for guidelines related to the Google's CLA, and code review requirements.

As stated above the primary goal of this project is to develop readable, well designed code, the functionality and efficiency come second. This is achieved through detailed code reviews, design discussions and following of the design guidelines. Please familiarize yourself with these before contributing.

Contributing widgets

If you're developing a new widget, please see the widget development section.

Implemented Widgets

The Gauge

Displays the progress of an operation. Run the gaugedemo.

gaugedemo

The Text

Displays text content, supports trimming and scrolling of content. Run the textdemo.

textdemo

The SparkLine

Draws a graph showing a series of values as vertical bars. The bars can have sub-cell height. Run the sparklinedemo.

sparklinedemo

The BarChart

Displays multiple bars showing relative ratios of values. Run the barchartdemo.

barchartdemo

The LineChart

Displays series of values as line charts. Run the linechartdemo.

linechartdemo

Disclaimer

This is not an official Google product.