diff --git a/pkg/api/playlist.go b/pkg/api/playlist.go index ee37b5d51d9..44745f91143 100644 --- a/pkg/api/playlist.go +++ b/pkg/api/playlist.go @@ -63,7 +63,17 @@ func GetPlaylistDashboards(c *middleware.Context) Response { return ApiError(500, "Playlist not found", err) } - return Json(200, query.Result) + dtos := make([]m.PlaylistDashboardDto, 0) + for _, item := range *query.Result { + dtos = append(dtos, m.PlaylistDashboardDto{ + Id: item.Id, + Slug: item.Slug, + Title: item.Title, + Uri: "db/" + item.Slug, + }) + } + + return Json(200, dtos) } func DeletePlaylist(c *middleware.Context) Response { diff --git a/pkg/models/playlist.go b/pkg/models/playlist.go index ca607c00b21..84478459922 100644 --- a/pkg/models/playlist.go +++ b/pkg/models/playlist.go @@ -33,6 +33,17 @@ func (this PlaylistDashboard) TableName() string { type Playlists []*Playlist type PlaylistDashboards []*PlaylistDashboard +// +// DTOS +// + +type PlaylistDashboardDto struct { + Id int64 `json:"id"` + Slug string `json:"slug"` + Title string `json:"title"` + Uri string `json:"uri"` +} + // // COMMANDS // diff --git a/pkg/services/sqlstore/playlist.go b/pkg/services/sqlstore/playlist.go index 3e04f65f9d4..56f6ca23fcb 100644 --- a/pkg/services/sqlstore/playlist.go +++ b/pkg/services/sqlstore/playlist.go @@ -105,6 +105,7 @@ func GetPlaylistDashboards(query *m.GetPlaylistDashboardsQuery) error { var playlist = m.Playlist{} hasPlaylist, err := x.Id(query.Id).Get(&playlist) + query.Result = &dashboards if err != nil { diff --git a/public/app/features/playlist/playlist_routes.js b/public/app/features/playlist/playlist_routes.js index 289a985c4ee..6baf7334a1b 100644 --- a/public/app/features/playlist/playlist_routes.js +++ b/public/app/features/playlist/playlist_routes.js @@ -33,9 +33,6 @@ function (angular, config, _) { .then(function(playlist) { return backendSrv.get('/api/playlists/' + playlistId + '/dashboards') .then(function(dashboards) { - _.each(dashboards, function(dashboard) { - dashboard.uri = 'db/' + dashboard.slug; - }); playlistSrv.start(dashboards, playlist.timespan); }); });