diff options
author | Matthieu <matthieu.cneude@gmail.com> | 2018-09-16 08:32:54 +0200 |
---|---|---|
committer | Matthieu <matthieu.cneude@gmail.com> | 2018-09-16 08:32:54 +0200 |
commit | c8fc022128d534f15b2404a91999512bd8ebcc4a (patch) | |
tree | e1b6fb1d097141c29726dc6403b9677e81bf492a | |
parent | f57139ea24fbc2b10ad16b2308d343060bff88dc (diff) |
Reorganise the whole config - get rid of maps to keep the order of
configures widgets
-rw-r--r-- | cmd/devdash/config.go | 15 | ||||
-rw-r--r-- | cmd/devdash/devdash.go | 13 | ||||
-rw-r--r-- | internal/ga_widget.go | 6 | ||||
-rw-r--r-- | internal/plateform/termui.go | 5 | ||||
-rw-r--r-- | internal/project.go | 23 |
5 files changed, 32 insertions, 30 deletions
diff --git a/cmd/devdash/config.go b/cmd/devdash/config.go index eb15339..da236ff 100644 --- a/cmd/devdash/config.go +++ b/cmd/devdash/config.go @@ -16,17 +16,22 @@ const ( ) type config struct { - General General `mapstructure "general"` - Projects map[string]Projects `mapstructure "projects"` + General General `mapstructure "general"` + Projects []Project `mapstructure "projects"` } type General struct { Keys map[string]string } -type Projects struct { - Services Services `mapstructure "services"` - Widgets []map[string]internal.Widget `mapstructure "widgets"` +type Project struct { + Name string `mapstructure:"name"` + Services Services `mapstructure "services"` + Widgets []Row `mapstructure "widgets"` +} + +type Row struct { + Row []internal.Widget `mapstructure "row"` } type Services struct { diff --git a/cmd/devdash/devdash.go b/cmd/devdash/devdash.go index 1dbbc5e..6609b1d 100644 --- a/cmd/devdash/devdash.go +++ b/cmd/devdash/devdash.go @@ -25,19 +25,18 @@ func main() { tui := internal.NewTUI(termui) tui.AddKQuit(cfg.KQuit()) - for pn, p := range cfg.Projects { - fmt.Println(pn) + for _, p := range cfg.Projects { + pn := p.Name if err != nil { fmt.Println(err) } // create a slice of slice with shape row[rowNbr][WidgetNbr]map[widgetName]Widget - rows := make([][]map[string]internal.Widget, len(p.Widgets)) - fmt.Println(p.Widgets) - for i := 0; i < len(p.Widgets); i++ { - for wn, w := range p.Widgets[i] { - rows[i] = append(rows[i], map[string]internal.Widget{wn: w}) + rows := make([][]internal.Widget, len(p.Widgets)) + for ir, r := range p.Widgets { + for _, w := range r.Row { + rows[ir] = append(rows[ir], w) } } diff --git a/internal/ga_widget.go b/internal/ga_widget.go index 70e3808..16ce219 100644 --- a/internal/ga_widget.go +++ b/internal/ga_widget.go @@ -31,16 +31,16 @@ func NewGaWidget(keyfile string, viewID string) (gaWidget, error) { }, nil } -func (g gaWidget) createWidgets(widgetName string, widget Widget, tui *Tui) (err error) { +func (g gaWidget) createWidgets(widget Widget, tui *Tui) (err error) { g.tui = tui - switch widgetName { + switch widget.Name { case realtime: err = g.gaRTActiveUser(widget) case users: err = g.gaWeekUsers(widget) default: - return errors.New("can't find the widget " + widgetName) + return errors.New("can't find the widget " + widget.Name) } return diff --git a/internal/plateform/termui.go b/internal/plateform/termui.go index 2d35388..4d5ccc3 100644 --- a/internal/plateform/termui.go +++ b/internal/plateform/termui.go @@ -85,6 +85,9 @@ func (t *termUI) AddRow() error { } t.body.AddRows(termui.NewRow(t.row...)) + t.body.Align() + termui.Render(t.body) + // clean the internal row t.row = []*termui.Row{} @@ -107,7 +110,5 @@ func (t termUI) validateRowSize() error { } func (t *termUI) Render() { - t.body.Align() - termui.Render(t.body) termui.Loop() } diff --git a/internal/project.go b/internal/project.go index 85e1030..5853db3 100644 --- a/internal/project.go +++ b/internal/project.go @@ -2,23 +2,23 @@ package internal import ( "errors" - "fmt" "strings" ) type Widget struct { + Name string Size string } type project struct { name string - widgets [][]map[string]Widget + widgets [][]Widget gaWidget gaWidget } func NewProject( name string, - widgets [][]map[string]Widget, + widgets [][]Widget, gaWidget gaWidget, ) project { return project{ @@ -30,17 +30,14 @@ func NewProject( func (p project) Render(tui *Tui) (err error) { for i := 0; i < len(p.widgets); i++ { - for _, ws := range p.widgets[i] { + for _, w := range p.widgets[i] { // parse widgets for one row - for wn, w := range ws { - serviceID := strings.Split(wn, ".")[0] - switch serviceID { - case "ga": - fmt.Println(wn) - err = p.gaWidget.createWidgets(wn, w, tui) - default: - return errors.New("could not find the service - please verify your configuration file") - } + serviceID := strings.Split(w.Name, ".")[0] + switch serviceID { + case "ga": + err = p.gaWidget.createWidgets(w, tui) + default: + return errors.New("could not find the service - please verify your configuration file") } } tui.AddRow() |