diff --git a/docs/sources/developers/kinds/core/dashboard/schema-reference.md b/docs/sources/developers/kinds/core/dashboard/schema-reference.md index 1ad3b38a530..c4f5bed13be 100644 --- a/docs/sources/developers/kinds/core/dashboard/schema-reference.md +++ b/docs/sources/developers/kinds/core/dashboard/schema-reference.md @@ -640,14 +640,18 @@ A variable is a placeholder for a value. You can use variables in metric queries | `skipUrlSync` | boolean | **Yes** | `false` | Whether the variable value should be managed by URL query params or not | | `type` | string | **Yes** | | 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).
`constant`: Define a hidden constant.
`datasource`: Quickly change the data source for an entire dashboard.
`interval`: Interval variables represent time spans.
`textbox`: Display a free text input field with an optional default value.
`custom`: Define the variable options manually using a comma-separated list.
`system`: Variables defined by Grafana. See: https://grafana.com/docs/grafana/latest/dashboards/variables/add-template-variables/#global-variables
Possible values are: `query`, `adhoc`, `constant`, `datasource`, `interval`, `textbox`, `custom`, `system`. | | `allFormat` | string | No | | Format to use while fetching all values from data source, eg: wildcard, glob, regex, pipe, etc. | +| `allValue` | string | No | | Custom all value | | `current` | [VariableOption](#variableoption) | No | | Option to be selected in a variable. | | `datasource` | [DataSourceRef](#datasourceref) | No | | Ref to a DataSource instance | | `description` | string | No | | Description of variable. It can be defined but `null`. | +| `includeAll` | boolean | No | `false` | Whether all value option is available or not | | `label` | string | No | | Optional display name | | `multi` | boolean | No | `false` | Whether multiple values can be selected or not from variable value list | | `options` | [VariableOption](#variableoption)[] | No | | Options that can be selected for a variable. | | `query` | | No | | Query used to fetch values for a variable | | `refresh` | integer | No | | Options to config when to refresh a variable
`0`: Never refresh the variable
`1`: Queries the data source every time the dashboard loads.
`2`: Queries the data source when the dashboard time range changes.
Possible values are: `0`, `1`, `2`. | +| `regex` | string | No | | Optional field, if you want to extract part of a series name or metric node segment.
Named capture groups can be used to separate the display text and value. | +| `sort` | integer | No | | Sort variable options
Accepted values are:
`0`: No sorting
`1`: Alphabetical ASC
`2`: Alphabetical DESC
`3`: Numerical ASC
`4`: Numerical DESC
`5`: Alphabetical Case Insensitive ASC
`6`: Alphabetical Case Insensitive DESC
Possible values are: `0`, `1`, `2`, `3`, `4`, `5`, `6`. | ### VariableOption diff --git a/kinds/dashboard/dashboard_kind.cue b/kinds/dashboard/dashboard_kind.cue index 2cbaae5c3eb..ef96c85bd26 100644 --- a/kinds/dashboard/dashboard_kind.cue +++ b/kinds/dashboard/dashboard_kind.cue @@ -215,7 +215,17 @@ lineage: schemas: [{ multi?: bool | *false // Options that can be selected for a variable. options?: [...#VariableOption] + // Options to config when to refresh a variable refresh?: #VariableRefresh + // Options sort order + sort?: #VariableSort + // Whether all value option is available or not + includeAll?: bool | *false + // Custom all value + allValue?: string + // Optional field, if you want to extract part of a series name or metric node segment. + // Named capture groups can be used to separate the display text and value. + regex?: string ... } @cuetsy(kind="interface") @grafana(TSVeneer="type") @grafanamaturity(NeedsExpertReview) diff --git a/packages/grafana-schema/src/raw/dashboard/x/dashboard_types.gen.ts b/packages/grafana-schema/src/raw/dashboard/x/dashboard_types.gen.ts index 7c3f3d5b6ce..252b55b741c 100644 --- a/packages/grafana-schema/src/raw/dashboard/x/dashboard_types.gen.ts +++ b/packages/grafana-schema/src/raw/dashboard/x/dashboard_types.gen.ts @@ -125,6 +125,10 @@ export interface VariableModel { * Format to use while fetching all values from data source, eg: wildcard, glob, regex, pipe, etc. */ allFormat?: string; + /** + * Custom all value + */ + allValue?: string; /** * Shows current selected variable text/value on the dashboard */ @@ -145,6 +149,10 @@ export interface VariableModel { * Unique numeric identifier for the variable. */ id: string; + /** + * Whether all value option is available or not + */ + includeAll?: boolean; /** * Optional display name */ @@ -165,11 +173,23 @@ export interface VariableModel { * Query used to fetch values for a variable */ query?: (string | Record); + /** + * Options to config when to refresh a variable + */ refresh?: VariableRefresh; + /** + * Optional field, if you want to extract part of a series name or metric node segment. + * Named capture groups can be used to separate the display text and value. + */ + regex?: string; /** * Whether the variable value should be managed by URL query params or not */ skipUrlSync: boolean; + /** + * Options sort order + */ + sort?: VariableSort; /** * Type of variable */ @@ -178,6 +198,7 @@ export interface VariableModel { export const defaultVariableModel: Partial = { id: '00000000-0000-0000-0000-000000000000', + includeAll: false, multi: false, options: [], skipUrlSync: false, diff --git a/pkg/kinds/dashboard/dashboard_spec_gen.go b/pkg/kinds/dashboard/dashboard_spec_gen.go index 5b28cf46d00..9f236282572 100644 --- a/pkg/kinds/dashboard/dashboard_spec_gen.go +++ b/pkg/kinds/dashboard/dashboard_spec_gen.go @@ -149,6 +149,17 @@ const ( VariableRefreshN2 VariableRefresh = 2 ) +// Defines values for VariableSort. +const ( + VariableSortN0 VariableSort = 0 + VariableSortN1 VariableSort = 1 + VariableSortN2 VariableSort = 2 + VariableSortN3 VariableSort = 3 + VariableSortN4 VariableSort = 4 + VariableSortN5 VariableSort = 5 + VariableSortN6 VariableSort = 6 +) + // Defines values for VariableType. const ( VariableTypeAdhoc VariableType = "adhoc" @@ -916,6 +927,9 @@ type VariableModel struct { // Format to use while fetching all values from data source, eg: wildcard, glob, regex, pipe, etc. AllFormat *string `json:"allFormat,omitempty"` + // Custom all value + AllValue *string `json:"allValue,omitempty"` + // Option to be selected in a variable. Current *VariableOption `json:"current,omitempty"` @@ -932,6 +946,9 @@ type VariableModel struct { // Unique numeric identifier for the variable. Id string `json:"id"` + // Whether all value option is available or not + IncludeAll *bool `json:"includeAll,omitempty"` + // Optional display name Label *string `json:"label,omitempty"` @@ -953,9 +970,24 @@ type VariableModel struct { // `2`: Queries the data source when the dashboard time range changes. Refresh *VariableRefresh `json:"refresh,omitempty"` + // Optional field, if you want to extract part of a series name or metric node segment. + // Named capture groups can be used to separate the display text and value. + Regex *string `json:"regex,omitempty"` + // Whether the variable value should be managed by URL query params or not SkipUrlSync bool `json:"skipUrlSync"` + // Sort variable options + // Accepted values are: + // `0`: No sorting + // `1`: Alphabetical ASC + // `2`: Alphabetical DESC + // `3`: Numerical ASC + // `4`: Numerical DESC + // `5`: Alphabetical Case Insensitive ASC + // `6`: Alphabetical Case Insensitive DESC + Sort *VariableSort `json:"sort,omitempty"` + // 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). @@ -986,6 +1018,17 @@ type VariableOption struct { // `2`: Queries the data source when the dashboard time range changes. type VariableRefresh int +// Sort variable options +// Accepted values are: +// `0`: No sorting +// `1`: Alphabetical ASC +// `2`: Alphabetical DESC +// `3`: Numerical ASC +// `4`: Numerical DESC +// `5`: Alphabetical Case Insensitive ASC +// `6`: Alphabetical Case Insensitive DESC +type VariableSort int + // 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).