summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthieu <matthieu.cneude@gmail.com>2019-01-19 18:12:58 +0100
committerMatthieu <matthieu.cneude@gmail.com>2019-01-19 18:12:58 +0100
commit7a5e65495b654009d981739f47a78a8ec40d2f54 (patch)
tree891d01b03e15a175165f1cb5be60d22252aeea84
parent0a0ab4e228714a05630478e999df2ccf5958db4f (diff)
Add options to widget and add the options to put start data / end datefeature/ping
for google analytics
-rwxr-xr-xcmd/devdash/devdashbin13735349 -> 13735187 bytes
-rw-r--r--internal/ga_widget.go20
-rw-r--r--internal/monitor_widget.go2
-rw-r--r--internal/plateform/ga.go5
-rw-r--r--internal/project.go11
5 files changed, 24 insertions, 14 deletions
diff --git a/cmd/devdash/devdash b/cmd/devdash/devdash
index ee0a9f9..bbc06cd 100755
--- a/cmd/devdash/devdash
+++ b/cmd/devdash/devdash
Binary files differ
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)
}