QueryLibrary: Use default variable values in render (#84678)

This commit is contained in:
Kyle Brandt 2024-03-27 08:48:08 -04:00 committed by GitHub
parent 7ad2ec9665
commit d71266b8af
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 40 additions and 2 deletions

View File

@ -43,7 +43,11 @@ func RenderTemplate(qt QueryTemplate, selectedValues map[string][]string) ([]Tar
s = s[1 : len(s)-1]
var offSet int64
for _, r := range reps {
value := []rune(FormatVariables(r.format, selectedValues[r.Key]))
sV := selectedValues[r.Key]
if sV == nil {
sV = r.DefaultValues
}
value := []rune(FormatVariables(r.format, sV))
if r.Position == nil {
return nil, fmt.Errorf("nil position not support yet, will be full replacement")
}

View File

@ -12,7 +12,8 @@ var nestedFieldRender = QueryTemplate{
Title: "Test",
Variables: []TemplateVariable{
{
Key: "metricName",
Key: "metricName",
DefaultValues: []string{"cow_count"},
},
},
Targets: []Target{
@ -64,6 +65,30 @@ var nestedFieldRenderedTargets = []Target{
},
}
var nestedFieldDefaultRenderedTargets = []Target{
{
DataType: data.FrameTypeUnknown,
Variables: map[string][]VariableReplacement{
"metricName": {
{
Path: "$.nestedObject.anArray[0]",
Position: &Position{
Start: 0,
End: 3,
},
},
},
},
//DataTypeVersion: data.FrameTypeVersion{0, 0},
Properties: apidata.NewDataQuery(
map[string]any{
"nestedObject": map[string]any{
"anArray": []any{"cow_count", .2},
},
}),
},
}
func TestNestedFieldRender(t *testing.T) {
rT, err := RenderTemplate(nestedFieldRender, map[string][]string{"metricName": {"up"}})
require.NoError(t, err)
@ -73,6 +98,15 @@ func TestNestedFieldRender(t *testing.T) {
)
}
func TestNestedFieldDefaultsRender(t *testing.T) {
rT, err := RenderTemplate(nestedFieldRender, nil)
require.NoError(t, err)
require.Equal(t,
nestedFieldDefaultRenderedTargets,
rT,
)
}
var multiVarTemplate = QueryTemplate{
Title: "Test",
Variables: []TemplateVariable{