diff options
author | Matthieu <matthieu.cneude@gmail.com> | 2019-01-19 18:12:58 +0100 |
---|---|---|
committer | Matthieu <matthieu.cneude@gmail.com> | 2019-01-19 18:12:58 +0100 |
commit | 7a5e65495b654009d981739f47a78a8ec40d2f54 (patch) | |
tree | 891d01b03e15a175165f1cb5be60d22252aeea84 | |
parent | 0a0ab4e228714a05630478e999df2ccf5958db4f (diff) |
Add options to widget and add the options to put start data / end datefeature/ping
for google analytics
-rwxr-xr-x | cmd/devdash/devdash | bin | 13735349 -> 13735187 bytes | |||
-rw-r--r-- | internal/ga_widget.go | 20 | ||||
-rw-r--r-- | internal/monitor_widget.go | 2 | ||||
-rw-r--r-- | internal/plateform/ga.go | 5 | ||||
-rw-r--r-- | internal/project.go | 11 |
5 files changed, 24 insertions, 14 deletions
diff --git a/cmd/devdash/devdash b/cmd/devdash/devdash Binary files differindex ee0a9f9..bbc06cd 100755 --- a/cmd/devdash/devdash +++ b/cmd/devdash/devdash diff --git a/internal/ga_widget.go b/internal/ga_widget.go index 512fd81..76b5fdf 100644 --- a/internal/ga_widget.go +++ b/internal/ga_widget.go @@ -30,14 +30,14 @@ func NewGaWidget(keyfile string, viewID string) (*gaWidget, error) { }, nil } -func (g *gaWidget) createWidgets(widget Widget, tui *Tui) (err error) { +func (g *gaWidget) CreateWidgets(widget Widget, tui *Tui) (err error) { g.tui = tui switch widget.Name { case realtime: err = g.gaRTActiveUser(widget) case users: - err = g.gaWeekUsers(widget) + err = g.gaUsers(widget) default: return errors.New("can't find the widget " + widget.Name) } @@ -72,9 +72,19 @@ func (g *gaWidget) gaRTActiveUser(widget Widget) error { return nil } -// GaWeekUsers get the number of users the 7 last days on your website -func (g *gaWidget) gaWeekUsers(widget Widget) error { - rep, err := g.client.GetReport(g.viewID) +// gaUsers get the number of users the 7 last days on your website +func (g *gaWidget) gaUsers(widget Widget) error { + startDate := "7daysAgo" + if _, ok := widget.Options["start_date"]; ok { + startDate = widget.Options["start_date"] + } + + endDate := "today" + if _, ok := widget.Options["end_date"]; ok { + endDate = widget.Options["end_date"] + } + + rep, err := g.client.GetReport(g.viewID, startDate, endDate) if err != nil { return err } diff --git a/internal/monitor_widget.go b/internal/monitor_widget.go index f3a8459..dd300c4 100644 --- a/internal/monitor_widget.go +++ b/internal/monitor_widget.go @@ -25,7 +25,7 @@ func NewMonitorWidget(address string) (*monitorWidget, error) { }, nil } -func (m *monitorWidget) createWidgets(widget Widget, tui *Tui) (err error) { +func (m *monitorWidget) CreateWidgets(widget Widget, tui *Tui) (err error) { m.tui = tui switch widget.Name { diff --git a/internal/plateform/ga.go b/internal/plateform/ga.go index c48e358..1ca5a8b 100644 --- a/internal/plateform/ga.go +++ b/internal/plateform/ga.go @@ -58,14 +58,13 @@ func NewGaClient(keyfile string) (*Client, error) { // GetReport queries the Analytics Reporting API V4 using the // Analytics Reporting API V4 service object. -// It returns the Analytics Reporting API V4 response -func (c *Client) GetReport(viewID string) (*ga.GetReportsResponse, error) { +func (c *Client) GetReport(viewID string, startDate string, endDate string) (*ga.GetReportsResponse, error) { req := &ga.GetReportsRequest{ ReportRequests: []*ga.ReportRequest{ { ViewId: viewID, DateRanges: []*ga.DateRange{ - {StartDate: "7daysAgo", EndDate: "today"}, + {StartDate: startDate, EndDate: endDate}, }, Metrics: []*ga.Metric{ {Expression: "ga:users"}, diff --git a/internal/project.go b/internal/project.go index 644ed3b..3f7b94f 100644 --- a/internal/project.go +++ b/internal/project.go @@ -7,12 +7,13 @@ import ( ) type service interface { - createWidgets(widget Widget, tui *Tui) (err error) + CreateWidgets(widget Widget, tui *Tui) (err error) } type Widget struct { - Name string - Size string + Name string `mapstructures:"name"` + Size string `mapstructures:"size"` + Options map[string]string `mapstructure "options"` } type project struct { @@ -56,13 +57,13 @@ func (p *project) Render(tui *Tui) (err error) { return errors.Errorf("can't use the widget %s without the service GoogleAnalytics - please fix your configuration file.", w.Name) } - err = p.gaWidget.createWidgets(w, tui) + err = p.gaWidget.CreateWidgets(w, tui) case "mon": if p.monitorWidget == nil { return errors.Errorf("can't use the widget %s without the service Monitor - please fix your configuration file.", w.Name) } - err = p.monitorWidget.createWidgets(w, tui) + err = p.monitorWidget.CreateWidgets(w, tui) default: return errors.Errorf("could not find the service for widget %s - wrong name - please verify your configuration file", w.Name) } |