Browse Source

Added more metadata

utkarshcmu 10 years ago
parent
commit
972ac99b7c
3 changed files with 43 additions and 18 deletions
  1. 1 3
      docs/sources/reference/http_api.md
  2. 38 11
      pkg/api/dashboard.go
  3. 4 4
      pkg/api/dtos/models.go

+ 1 - 3
docs/sources/reference/http_api.md

@@ -70,15 +70,13 @@ Creates a new dashboard or updates an existing dashboard.
         "schemaVersion": 6,
         "version": 0
       },
-      "overwrite": false,
-      "userId:": 3
+      "overwrite": false
     }
 
 JSON Body schema:
 
 - **dashboard** – The complete dashboard model, id = null to create a new dashboard.
 - **overwrite** – Set to true if you want to overwrite existing dashboard with newer version or with same dashboard title.
-- **userId** - Set userId if you want to record who created or updated a dashboard.
 
 **Example Response**:
 

+ 38 - 11
pkg/api/dashboard.go

@@ -49,7 +49,7 @@ func GetDashboard(c *middleware.Context) {
 
 	dash := query.Result
 
-	// Finding the last creator and updater of the dashboard
+	// Finding creator and last updater of the dashboard
 	updater, creator := "Anonymous", "Anonymous"
 	if dash.UpdatedBy > 0 {
 		updater = getUserLogin(dash.UpdatedBy)
@@ -58,19 +58,26 @@ func GetDashboard(c *middleware.Context) {
 		creator = getUserLogin(dash.CreatedBy)
 	}
 
+	// Finding total panels and queries on the dashboard
+	totalRows, totalPanels, totalQueries := getTotalRowsPanelsAndQueries(dash.Data)
+
 	dto := dtos.DashboardFullWithMeta{
 		Dashboard: dash.Data,
 		Meta: dtos.DashboardMeta{
-			IsStarred: isStarred,
-			Slug:      slug,
-			Type:      m.DashTypeDB,
-			CanStar:   c.IsSignedIn,
-			CanSave:   c.OrgRole == m.ROLE_ADMIN || c.OrgRole == m.ROLE_EDITOR,
-			CanEdit:   canEditDashboard(c.OrgRole),
-			Created:   dash.Created,
-			Updated:   dash.Updated,
-			UpdatedBy: updater,
-			CreatedBy: creator,
+			IsStarred:    isStarred,
+			Slug:         slug,
+			Type:         m.DashTypeDB,
+			CanStar:      c.IsSignedIn,
+			CanSave:      c.OrgRole == m.ROLE_ADMIN || c.OrgRole == m.ROLE_EDITOR,
+			CanEdit:      canEditDashboard(c.OrgRole),
+			Created:      dash.Created,
+			Updated:      dash.Updated,
+			UpdatedBy:    updater,
+			CreatedBy:    creator,
+			TotalRows:    totalRows,
+			TotalPanels:  totalPanels,
+			TotalQueries: totalQueries,
+			Version:      dash.Version,
 		},
 	}
 
@@ -88,6 +95,26 @@ func getUserLogin(userId int64) string {
 	}
 }
 
+func getTotalRowsPanelsAndQueries(data map[string]interface{}) (int, int, int) {
+	totalRows, totalPanels, totalQueries := 0, 0, 0
+	if rows, rowsOk := data["rows"]; rowsOk {
+		totalRows = len(rows.([]interface{}))
+		if totalRows > 0 {
+			for _, rowElement := range rows.([]interface{}) {
+				if panels, panelsOk := rowElement.(map[string]interface{})["panels"]; panelsOk {
+					totalPanels += len(panels.([]interface{}))
+					for _, panelElement := range panels.([]interface{}) {
+						if targets, targetsOk := panelElement.(map[string]interface{})["targets"]; targetsOk {
+							totalQueries += len(targets.([]interface{}))
+						}
+					}
+				}
+			}
+		}
+	}
+	return totalRows, totalPanels, totalQueries
+}
+
 func DeleteDashboard(c *middleware.Context) {
 	slug := c.Params(":slug")
 

+ 4 - 4
pkg/api/dtos/models.go

@@ -43,10 +43,10 @@ type DashboardMeta struct {
 	Updated      time.Time `json:"updated"`
 	UpdatedBy    string    `json:"updatedBy"`
 	CreatedBy    string    `json:"createdBy"`
-  TotalRows    int64     `json:"totalRows"`
-  TotalPanels  int64     `json:"totalPanels"`
-  TotalQueries int64     `json:"totalQueries"`
-  Version      int       `json:"version"`
+	TotalRows    int       `json:"totalRows"`
+	TotalPanels  int       `json:"totalPanels"`
+	TotalQueries int       `json:"totalQueries"`
+	Version      int       `json:"version"`
 }
 
 type DashboardFullWithMeta struct {