Dashboard Controls: Allow displaying dashboard links (#110666)
* feat: add `placement` to dashboard links (v1) * feat: add `placement` property for dashboard links (v2) * refactor: rename the `DropdownVariableControls` to `DashboardControlsMenu` * feat: make it possible to render links under the dashboard controls dropdown * fix: update the v2beta1 (and remove changes from v2alpha1) * fix: linting errors * chore: update codegen * fix: frontend unit tests * tests(DashboardLinkRenderer): add tests * fix: hide divider if not necessary * Update apps/dashboard/pkg/apis/dashboard/v1beta1/dashboard_kind.cue Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com> * Update packages/grafana-schema/src/raw/dashboard/x/dashboard_types.gen.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update kinds/dashboard/dashboard_kind.cue Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update pkg/kinds/dashboard/dashboard_spec_gen.go Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update apps/dashboard/pkg/apis/dashboard/v2beta1/zz_generated.openapi.go Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update apps/dashboard/pkg/apis/dashboard/v2beta1/dashboard_spec_gen.go Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update apps/dashboard/pkg/apis/dashboard/v2beta1/dashboard_spec.cue Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update packages/grafana-schema/src/schema/dashboard/v2beta1/types.spec.gen.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update apps/dashboard/kinds/v2beta1/dashboard_spec.cue Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * feat: remove "default" placement option for links (review note) * feat: hide the <Stack> wrapper if there are no links or variables --------- Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
co-authored by
Dominik Prokop
Copilot
parent
2e0fdb2a60
commit
273731ed8e
@@ -284,17 +284,24 @@ lineage: schemas: [{
|
||||
tags: [...string]
|
||||
// If true, all dashboards links will be displayed in a dropdown. If false, all dashboards links will be displayed side by side. Only valid if the type is dashboards
|
||||
asDropdown: bool | *false
|
||||
// Placement can be used to display the link somewhere else on the dashboard other than above the visualisations.
|
||||
placement?: #DashboardLinkPlacement
|
||||
// If true, the link will be opened in a new tab
|
||||
targetBlank: bool | *false
|
||||
// If true, includes current template variables values in the link as query params
|
||||
includeVars: bool | *false
|
||||
// If true, includes current time range in the link as query params
|
||||
keepTime: bool | *false
|
||||
|
||||
} @cuetsy(kind="interface")
|
||||
|
||||
// Dashboard Link type. Accepted values are dashboards (to refer to another dashboard) and link (to refer to an external resource)
|
||||
#DashboardLinkType: "link" | "dashboards" @cuetsy(kind="type")
|
||||
|
||||
// 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" @cuetsy(kind="type")
|
||||
|
||||
// Dashboard variable type
|
||||
// `query`: Query-generated list of values such as metric names, server names, sensor IDs, data centers, and so on.
|
||||
// `adhoc`: Key/value filters that are automatically added to all metric queries for a data source (Prometheus, Loki, InfluxDB, and Elasticsearch only).
|
||||
|
||||
@@ -284,17 +284,24 @@ lineage: schemas: [{
|
||||
tags: [...string]
|
||||
// If true, all dashboards links will be displayed in a dropdown. If false, all dashboards links will be displayed side by side. Only valid if the type is dashboards
|
||||
asDropdown: bool | *false
|
||||
// Placement can be used to display the link somewhere else on the dashboard other than above the visualisations.
|
||||
placement?: #DashboardLinkPlacement
|
||||
// If true, the link will be opened in a new tab
|
||||
targetBlank: bool | *false
|
||||
// If true, includes current template variables values in the link as query params
|
||||
includeVars: bool | *false
|
||||
// If true, includes current time range in the link as query params
|
||||
keepTime: bool | *false
|
||||
|
||||
} @cuetsy(kind="interface")
|
||||
|
||||
// Dashboard Link type. Accepted values are dashboards (to refer to another dashboard) and link (to refer to an external resource)
|
||||
#DashboardLinkType: "link" | "dashboards" @cuetsy(kind="type")
|
||||
|
||||
// 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" @cuetsy(kind="type")
|
||||
|
||||
// Dashboard variable type
|
||||
// `query`: Query-generated list of values such as metric names, server names, sensor IDs, data centers, and so on.
|
||||
// `adhoc`: Key/value filters that are automatically added to all metric queries for a data source (Prometheus, Loki, InfluxDB, and Elasticsearch only).
|
||||
|
||||
@@ -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"
|
||||
|
||||
// A topic is attached to DataFrame metadata in query results.
|
||||
// This specifies where the data should be used.
|
||||
DataTopic: "series" | "annotations" | "alertStates" @cog(kind="enum",memberNames="Series|Annotations|AlertStates")
|
||||
|
||||
@@ -1106,6 +1106,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.
|
||||
@@ -1116,6 +1118,7 @@ func NewDashboardDashboardLink() *DashboardDashboardLink {
|
||||
TargetBlank: false,
|
||||
IncludeVars: false,
|
||||
KeepTime: false,
|
||||
Placement: DashboardDashboardLinkPlacement,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1128,6 +1131,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
|
||||
|
||||
@@ -1478,6 +1478,13 @@ func schema_pkg_apis_dashboard_v2beta1_DashboardDashboardLink(ref common.Referen
|
||||
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"},
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user