mirror of
https://github.com/grafana/grafana.git
synced 2025-08-02 03:12:13 +08:00

adds toggle to make a dashboard public * config struct for public dashboard config * api endpoints for public dashboard configuration * ui for toggling public dashboard on and off * load public dashboard config on share modal Co-authored-by: Owen Smallwood <owen.smallwood@grafana.com> Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
72 lines
2.4 KiB
Go
72 lines
2.4 KiB
Go
package dashboards
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/grafana/grafana/pkg/models"
|
|
)
|
|
|
|
type FakeDashboardService struct {
|
|
DashboardService
|
|
|
|
SaveDashboardResult *models.Dashboard
|
|
SavedDashboards []*SaveDashboardDTO
|
|
ProvisionedDashData *models.DashboardProvisioning
|
|
|
|
PublicDashboardConfigResult *models.PublicDashboardConfig
|
|
PublicDashboardConfigError error
|
|
SaveDashboardError error
|
|
GetDashboardFn func(ctx context.Context, cmd *models.GetDashboardQuery) error
|
|
}
|
|
|
|
func (s *FakeDashboardService) SaveDashboard(ctx context.Context, dto *SaveDashboardDTO, allowUiUpdate bool) (*models.Dashboard, error) {
|
|
s.SavedDashboards = append(s.SavedDashboards, dto)
|
|
|
|
if s.SaveDashboardResult == nil && s.SaveDashboardError == nil {
|
|
s.SaveDashboardResult = dto.Dashboard
|
|
}
|
|
|
|
return s.SaveDashboardResult, s.SaveDashboardError
|
|
}
|
|
|
|
func (s *FakeDashboardService) GetPublicDashboardConfig(ctx context.Context, orgId int64, dashboardUid string) (*models.PublicDashboardConfig, error) {
|
|
return s.PublicDashboardConfigResult, s.PublicDashboardConfigError
|
|
}
|
|
|
|
func (s *FakeDashboardService) SavePublicDashboardConfig(ctx context.Context, dto *SavePublicDashboardConfigDTO) (*models.PublicDashboardConfig, error) {
|
|
return s.PublicDashboardConfigResult, s.PublicDashboardConfigError
|
|
}
|
|
|
|
func (s *FakeDashboardService) ImportDashboard(ctx context.Context, dto *SaveDashboardDTO) (*models.Dashboard, error) {
|
|
return s.SaveDashboard(ctx, dto, true)
|
|
}
|
|
|
|
func (s *FakeDashboardService) DeleteDashboard(ctx context.Context, dashboardId int64, orgId int64) error {
|
|
for index, dash := range s.SavedDashboards {
|
|
if dash.Dashboard.Id == dashboardId && dash.OrgId == orgId {
|
|
s.SavedDashboards = append(s.SavedDashboards[:index], s.SavedDashboards[index+1:]...)
|
|
break
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (s *FakeDashboardService) GetProvisionedDashboardDataByDashboardID(id int64) (*models.DashboardProvisioning, error) {
|
|
return s.ProvisionedDashData, nil
|
|
}
|
|
func (s *FakeDashboardService) DeleteOrphanedProvisionedDashboards(ctx context.Context, cmd *models.DeleteOrphanedProvisionedDashboardsCommand) error {
|
|
return nil
|
|
}
|
|
|
|
func (s *FakeDashboardService) GetDashboard(ctx context.Context, cmd *models.GetDashboardQuery) error {
|
|
if s.GetDashboardFn != nil {
|
|
return s.GetDashboardFn(ctx, cmd)
|
|
}
|
|
// A minimal result for tests that need a valid result, but don't care what's in it.
|
|
d := models.NewDashboard("mocked")
|
|
d.Id = 1
|
|
d.Uid = "1"
|
|
cmd.Result = d
|
|
return nil
|
|
}
|