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,
"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**:

View File

@ -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")

View File

@ -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 {