mirror of
https://github.com/taigrr/wtf
synced 2025-01-18 04:03:14 -08:00
* WTF-1031 Rename WtfApp.app to WtfApp.tviewApp Signed-off-by: Chris Cummer <chriscummer@me.com> * WTF-1031 Add scaffolding for main to support multiple WtfApp instances Signed-off-by: Chris Cummer <chriscummer@me.com> * WTF-1031 WIP Signed-off-by: Chris Cummer <chriscummer@me.com> * Remove common functionality from KeyboardWidget and into Base Signed-off-by: Chris Cummer <chriscummer@me.com> * Augment with some descriptive comments Signed-off-by: Chris Cummer <chriscummer@me.com> * Add full support for multiple app instances via the AppManager. Still to do: * Config support for multiple apps/multiple config files * The ability to switch between apps Signed-off-by: Chris Cummer <chriscummer@me.com> * Move SetTerminal out of main and into its own file Signed-off-by: Chris Cummer <chriscummer@me.com>
83 lines
1.4 KiB
Go
83 lines
1.4 KiB
Go
package bargraph
|
|
|
|
/**************
|
|
This is a demo bargraph that just populates some random date/val data
|
|
*/
|
|
|
|
import (
|
|
"math/rand"
|
|
"time"
|
|
|
|
"github.com/rivo/tview"
|
|
|
|
"github.com/wtfutil/wtf/view"
|
|
)
|
|
|
|
// Widget define wtf widget to register widget later
|
|
type Widget struct {
|
|
view.BarGraph
|
|
|
|
tviewApp *tview.Application
|
|
}
|
|
|
|
// NewWidget Make new instance of widget
|
|
func NewWidget(tviewApp *tview.Application, settings *Settings) *Widget {
|
|
widget := Widget{
|
|
BarGraph: view.NewBarGraph(tviewApp, "Sample Bar Graph", settings.Common),
|
|
|
|
tviewApp: tviewApp,
|
|
}
|
|
|
|
widget.View.SetWrap(true)
|
|
widget.View.SetWordWrap(true)
|
|
|
|
return &widget
|
|
}
|
|
|
|
/* -------------------- Exported Functions -------------------- */
|
|
|
|
// MakeGraph - Load the dead drop stats
|
|
func MakeGraph(widget *Widget) {
|
|
|
|
//this could come from config
|
|
const lineCount = 8
|
|
var stats [lineCount]view.Bar
|
|
|
|
barTime := time.Now()
|
|
for i := 0; i < lineCount; i++ {
|
|
barTime = barTime.Add(time.Minute)
|
|
|
|
bar := view.Bar{
|
|
Label: barTime.Format("15:04"),
|
|
Percent: rand.Intn(100-5) + 5,
|
|
LabelColor: "red",
|
|
}
|
|
|
|
stats[i] = bar
|
|
}
|
|
|
|
widget.BarGraph.BuildBars(stats[:])
|
|
|
|
}
|
|
|
|
// Refresh & update after interval time
|
|
func (widget *Widget) Refresh() {
|
|
|
|
if widget.Disabled() {
|
|
return
|
|
}
|
|
|
|
widget.View.Clear()
|
|
|
|
widget.tviewApp.QueueUpdateDraw(func() {
|
|
display(widget)
|
|
})
|
|
|
|
}
|
|
|
|
/* -------------------- Unexported Functions -------------------- */
|
|
|
|
func display(widget *Widget) {
|
|
MakeGraph(widget)
|
|
}
|