Added more metadata

This commit is contained in:
utkarshcmu 2016-01-28 09:53:19 -08:00
parent b30dcce4bc
commit 972ac99b7c
3 changed files with 43 additions and 18 deletions

View File

@ -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**:

View File

@ -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,6 +58,9 @@ 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{
@ -71,6 +74,10 @@ func GetDashboard(c *middleware.Context) {
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 {
} }
} }
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")

View File

@ -43,9 +43,9 @@ 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"`
} }