Dashboard Controls: Fix schema transformation for link placement (#114630)

* fix: add missing transformation for scenes -> save model v2

* fix: link placement transformation on the backend between schemas

* fix: update the openapi spec in the tests

* tes: add tests for `transformSceneToSaveModelSchemaV2`

* tests: extend conversion_test.go to cover link placements
This commit is contained in:
Levente Balogh
2025-12-02 13:12:01 +00:00
committed by GitHub
parent 09883ab4ee
commit 0e6166a753
17 changed files with 120 additions and 2 deletions
@@ -113,8 +113,14 @@ DashboardLink: {
includeVars: bool | *false
// If true, includes current time range in the link as query params
keepTime: bool | *false
// Placement can be used to display the link somewhere else on the dashboard other than above the visualisations.
placement?: DashboardLinkPlacement
}
// Dashboard Link placement. Defines where the link should be displayed.
// - "inControlsMenu" renders the link in bottom part of the dashboard controls dropdown menu
DashboardLinkPlacement: "inControlsMenu"
DataSourceRef: {
// The plugin type-id
type?: string
@@ -1216,6 +1216,8 @@ type DashboardDashboardLink struct {
IncludeVars bool `json:"includeVars"`
// If true, includes current time range in the link as query params
KeepTime bool `json:"keepTime"`
// Placement can be used to display the link somewhere else on the dashboard other than above the visualisations.
Placement *string `json:"placement,omitempty"`
}
// NewDashboardDashboardLink creates a new DashboardDashboardLink object.
@@ -1226,6 +1228,7 @@ func NewDashboardDashboardLink() *DashboardDashboardLink {
TargetBlank: false,
IncludeVars: false,
KeepTime: false,
Placement: (func(input string) *string { return &input })(DashboardDashboardLinkPlacement),
}
}
@@ -1238,6 +1241,11 @@ const (
DashboardDashboardLinkTypeDashboards DashboardDashboardLinkType = "dashboards"
)
// Dashboard Link placement. Defines where the link should be displayed.
// - "inControlsMenu" renders the link in bottom part of the dashboard controls dropdown menu
// +k8s:openapi-gen=true
const DashboardDashboardLinkPlacement = "inControlsMenu"
// Time configuration
// It defines the default time config for the time picker, the refresh picker for the specific dashboard.
// +k8s:openapi-gen=true
@@ -1600,6 +1600,13 @@ func schema_pkg_apis_dashboard_v2alpha1_DashboardDashboardLink(ref common.Refere
Format: "",
},
},
"placement": {
SchemaProps: spec.SchemaProps{
Description: "Placement can be used to display the link somewhere else on the dashboard other than above the visualisations.",
Type: []string{"string"},
Format: "",
},
},
},
Required: []string{"title", "type", "icon", "tooltip", "tags", "asDropdown", "targetBlank", "includeVars", "keepTime"},
},