Commit 972ac99b by utkarshcmu

Added more metadata

parent b30dcce4
...@@ -70,15 +70,13 @@ Creates a new dashboard or updates an existing dashboard. ...@@ -70,15 +70,13 @@ Creates a new dashboard or updates an existing dashboard.
"schemaVersion": 6, "schemaVersion": 6,
"version": 0 "version": 0
}, },
"overwrite": false, "overwrite": false
"userId:": 3
} }
JSON Body schema: JSON Body schema:
- **dashboard** – The complete dashboard model, id = null to create a new dashboard. - **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. - **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**: **Example Response**:
......
...@@ -49,7 +49,7 @@ func GetDashboard(c *middleware.Context) { ...@@ -49,7 +49,7 @@ func GetDashboard(c *middleware.Context) {
dash := query.Result dash := query.Result
// Finding the last creator and updater of the dashboard // Finding creator and last updater of the dashboard
updater, creator := "Anonymous", "Anonymous" updater, creator := "Anonymous", "Anonymous"
if dash.UpdatedBy > 0 { if dash.UpdatedBy > 0 {
updater = getUserLogin(dash.UpdatedBy) updater = getUserLogin(dash.UpdatedBy)
...@@ -58,19 +58,26 @@ func GetDashboard(c *middleware.Context) { ...@@ -58,19 +58,26 @@ func GetDashboard(c *middleware.Context) {
creator = getUserLogin(dash.CreatedBy) creator = getUserLogin(dash.CreatedBy)
} }
// Finding total panels and queries on the dashboard
totalRows, totalPanels, totalQueries := getTotalRowsPanelsAndQueries(dash.Data)
dto := dtos.DashboardFullWithMeta{ dto := dtos.DashboardFullWithMeta{
Dashboard: dash.Data, Dashboard: dash.Data,
Meta: dtos.DashboardMeta{ Meta: dtos.DashboardMeta{
IsStarred: isStarred, IsStarred: isStarred,
Slug: slug, Slug: slug,
Type: m.DashTypeDB, Type: m.DashTypeDB,
CanStar: c.IsSignedIn, CanStar: c.IsSignedIn,
CanSave: c.OrgRole == m.ROLE_ADMIN || c.OrgRole == m.ROLE_EDITOR, CanSave: c.OrgRole == m.ROLE_ADMIN || c.OrgRole == m.ROLE_EDITOR,
CanEdit: canEditDashboard(c.OrgRole), CanEdit: canEditDashboard(c.OrgRole),
Created: dash.Created, Created: dash.Created,
Updated: dash.Updated, Updated: dash.Updated,
UpdatedBy: updater, UpdatedBy: updater,
CreatedBy: creator, CreatedBy: creator,
TotalRows: totalRows,
TotalPanels: totalPanels,
TotalQueries: totalQueries,
Version: dash.Version,
}, },
} }
...@@ -88,6 +95,26 @@ func getUserLogin(userId int64) string { ...@@ -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) { func DeleteDashboard(c *middleware.Context) {
slug := c.Params(":slug") slug := c.Params(":slug")
......
...@@ -43,10 +43,10 @@ type DashboardMeta struct { ...@@ -43,10 +43,10 @@ type DashboardMeta struct {
Updated time.Time `json:"updated"` Updated time.Time `json:"updated"`
UpdatedBy string `json:"updatedBy"` UpdatedBy string `json:"updatedBy"`
CreatedBy string `json:"createdBy"` CreatedBy string `json:"createdBy"`
TotalRows int64 `json:"totalRows"` TotalRows int `json:"totalRows"`
TotalPanels int64 `json:"totalPanels"` TotalPanels int `json:"totalPanels"`
TotalQueries int64 `json:"totalQueries"` TotalQueries int `json:"totalQueries"`
Version int `json:"version"` Version int `json:"version"`
} }
type DashboardFullWithMeta struct { type DashboardFullWithMeta struct {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment