func main() { err := termui.Init() if err != nil { panic(err) } defer termui.Close() //termui.UseTheme("helloworld") bc := termui.NewMBarChart() math := []int{90, 85, 90, 80} english := []int{70, 85, 75, 60} science := []int{75, 60, 80, 85} compsci := []int{100, 100, 100, 100} bc.Data[0] = math bc.Data[1] = english bc.Data[2] = science bc.Data[3] = compsci studentsName := []string{"Ken", "Rob", "Dennis", "Linus"} bc.BorderLabel = "Student's Marks X-Axis=Name Y-Axis=Marks[Math,English,Science,ComputerScience] in %" bc.Width = 100 bc.Height = 30 bc.Y = 0 bc.BarWidth = 10 bc.DataLabels = studentsName bc.ShowScale = true //Show y_axis scale value (min and max) bc.SetMax(400) bc.TextColor = termui.ColorGreen //this is color for label (x-axis) bc.BarColor[3] = termui.ColorGreen //BarColor for computerscience bc.BarColor[1] = termui.ColorYellow //Bar Color for english bc.NumColor[3] = termui.ColorRed // Num color for computerscience bc.NumColor[1] = termui.ColorRed // num color for english //Other colors are automatically populated, btw All the students seems do well in computerscience. :p termui.Render(bc) termui.Handle("/sys/kbd/q", func(termui.Event) { termui.StopLoop() }) termui.Loop() }
func (gv *graphicalVisualizer) PrintDistributionChart(rate time.Duration) error { //Initialize termui err := termui.Init() if err != nil { return errors.New("Unable to initalize terminal graphics mode.") //panic(err) } defer termui.Close() if rate <= time.Duration(0) { rate = graphicalRateDelta } termui.UseTheme("helloworld") //Initalize some widgets p := termui.NewPar("Lattice Visualization") if p == nil { return errors.New("Error Initializing termui objects NewPar") } p.Height = 1 p.Width = 25 p.TextFgColor = termui.ColorWhite p.HasBorder = false r := termui.NewPar(fmt.Sprintf("rate:%v", rate)) if r == nil { return errors.New("Error Initializing termui objects NewPar") } r.Height = 1 r.Width = 10 r.TextFgColor = termui.ColorWhite r.HasBorder = false s := termui.NewPar("hit [+=inc; -=dec; q=quit]") if s == nil { return errors.New("Error Initializing termui objects NewPar") } s.Height = 1 s.Width = 30 s.TextFgColor = termui.ColorWhite s.HasBorder = false bg := termui.NewMBarChart() if bg == nil { return errors.New("Error Initializing termui objects NewMBarChart") } bg.IsDisplay = false bg.Data[0] = []int{0} bg.DataLabels = []string{"Missing"} bg.Width = termui.TermWidth() - 10 bg.Height = termui.TermHeight() - 5 bg.BarColor[0] = termui.ColorGreen bg.BarColor[1] = termui.ColorYellow bg.NumColor[0] = termui.ColorRed bg.NumColor[1] = termui.ColorRed bg.TextColor = termui.ColorWhite bg.Border.LabelFgColor = termui.ColorWhite bg.Border.Label = "[X-Axis: Cells; Y-Axis: Instances]" bg.BarWidth = 10 bg.BarGap = 1 bg.ShowScale = true //12 column grid system termui.Body.AddRows(termui.NewRow(termui.NewCol(12, 5, p))) termui.Body.AddRows(termui.NewRow(termui.NewCol(12, 0, bg))) termui.Body.AddRows(termui.NewRow(termui.NewCol(6, 0, s), termui.NewCol(6, 5, r))) termui.Body.Align() termui.Render(termui.Body) bg.IsDisplay = true clock := clock.NewClock() evt := termui.EventCh() for { select { case e := <-evt: if e.Type == termui.EventKey { switch { case (e.Ch == 'q' || e.Ch == 'Q'): return nil case (e.Ch == '+' || e.Ch == '='): rate += graphicalRateDelta case (e.Ch == '_' || e.Ch == '-'): rate -= graphicalRateDelta if rate <= time.Duration(0) { rate = graphicalRateDelta } } r.Text = fmt.Sprintf("rate:%v", rate) termui.Render(termui.Body) } if e.Type == termui.EventResize { termui.Body.Width = termui.TermWidth() termui.Body.Align() termui.Render(termui.Body) } case <-clock.NewTimer(rate).C(): err := gv.getProgressBars(bg) if err != nil { return err } termui.Render(termui.Body) } } return nil }