From 42a5aefb23df40f3c71c82c4d2d057fa258e2e59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Tue, 3 Feb 2015 15:04:35 +0100 Subject: [PATCH] Worked on home dashboard --- grafana | 2 +- pkg/api/api.go | 7 ++++--- pkg/api/dashboard.go | 24 ++++++++++++++++++++++++ pkg/api/dtos/models.go | 1 + pkg/models/dashboards.go | 4 ++-- pkg/models/home_dashboard.go | 14 ++++++++++++++ 6 files changed, 46 insertions(+), 6 deletions(-) create mode 100644 pkg/models/home_dashboard.go diff --git a/grafana b/grafana index dfef4727b68..bc673fd9697 160000 --- a/grafana +++ b/grafana @@ -1 +1 @@ -Subproject commit dfef4727b689d408b86d75c575646705bac79496 +Subproject commit bc673fd9697d5b37314ca0d75943dec68f9fffe1 diff --git a/pkg/api/api.go b/pkg/api/api.go index 8ac414ec90b..09bb4bfb6ad 100644 --- a/pkg/api/api.go +++ b/pkg/api/api.go @@ -77,9 +77,10 @@ func Register(r *macaron.Macaron) { }, reqAccountAdmin) // Dashboard - r.Group("/dashboard", func() { - r.Combo("/:slug").Get(GetDashboard).Delete(DeleteDashboard) - r.Post("/", reqEditorRole, bind(m.SaveDashboardCommand{}), PostDashboard) + r.Group("/dashboards", func() { + r.Combo("/db/:slug").Get(GetDashboard).Delete(DeleteDashboard) + r.Post("/db", reqEditorRole, bind(m.SaveDashboardCommand{}), PostDashboard) + r.Get("/home", GetHomeDashboard) }) // Search diff --git a/pkg/api/dashboard.go b/pkg/api/dashboard.go index 187fff32933..8be21e3e629 100644 --- a/pkg/api/dashboard.go +++ b/pkg/api/dashboard.go @@ -1,10 +1,15 @@ package api import ( + "encoding/json" + "os" + "path" + "github.com/torkelo/grafana-pro/pkg/api/dtos" "github.com/torkelo/grafana-pro/pkg/bus" "github.com/torkelo/grafana-pro/pkg/middleware" m "github.com/torkelo/grafana-pro/pkg/models" + "github.com/torkelo/grafana-pro/pkg/setting" "github.com/torkelo/grafana-pro/pkg/util" ) @@ -81,3 +86,22 @@ func PostDashboard(c *middleware.Context, cmd m.SaveDashboardCommand) { c.JSON(200, util.DynMap{"status": "success", "slug": cmd.Result.Slug}) } + +func GetHomeDashboard(c *middleware.Context) { + filePath := path.Join(setting.StaticRootPath, "app/dashboards/default.json") + file, err := os.Open(filePath) + if err != nil { + c.JsonApiErr(500, "Failed to load home dashboard", err) + return + } + + dash := dtos.Dashboard{} + dash.Meta.IsHome = true + jsonParser := json.NewDecoder(file) + if err := jsonParser.Decode(&dash.Model); err != nil { + c.JsonApiErr(500, "Failed to load home dashboard", err) + return + } + + c.JSON(200, &dash) +} diff --git a/pkg/api/dtos/models.go b/pkg/api/dtos/models.go index f29ed66ff97..d06daffdba2 100644 --- a/pkg/api/dtos/models.go +++ b/pkg/api/dtos/models.go @@ -27,6 +27,7 @@ type CurrentUser struct { type DashboardMeta struct { IsStarred bool `json:"isStarred"` + IsHome bool `json:"isHome"` } type Dashboard struct { diff --git a/pkg/models/dashboards.go b/pkg/models/dashboards.go index f355b5dec9b..aec0b6f9fc5 100644 --- a/pkg/models/dashboards.go +++ b/pkg/models/dashboards.go @@ -15,8 +15,8 @@ var ( type Dashboard struct { Id int64 - Slug string `xorm:"index(IX_AccountIdSlug)"` - AccountId int64 `xorm:"index(IX_AccountIdSlug)"` + Slug string + AccountId int64 Created time.Time Updated time.Time diff --git a/pkg/models/home_dashboard.go b/pkg/models/home_dashboard.go new file mode 100644 index 00000000000..3428f1ad5e4 --- /dev/null +++ b/pkg/models/home_dashboard.go @@ -0,0 +1,14 @@ +package models + +import "time" + +type HomeDashboard struct { + Id int64 + UserId int64 + AccountId int64 + + Created time.Time + Updated time.Time + + Data map[string]interface{} +}