Fix scoped vars for alias functions
This commit is contained in:
@@ -111,6 +111,11 @@ type QueryFunctionParamDef struct {
|
||||
|
||||
type QueryFunctionParam = interface{}
|
||||
|
||||
type ScopedVar struct {
|
||||
Text string `json:"text"`
|
||||
Value string `json:"value"`
|
||||
}
|
||||
|
||||
// ReadQuery will read and validate Settings from the DataSourceConfg
|
||||
func ReadQuery(query backend.DataQuery) (QueryModel, error) {
|
||||
model := QueryModel{
|
||||
|
||||
@@ -105,9 +105,29 @@ func convertTimeSeriesToDataFrames(series []*timeseries.TimeSeriesData) []*data.
|
||||
func seriesToDataFrame(series *timeseries.TimeSeriesData) *data.Frame {
|
||||
timeFileld := data.NewFieldFromFieldType(data.FieldTypeTime, 0)
|
||||
timeFileld.Name = data.TimeSeriesTimeFieldName
|
||||
|
||||
seriesName := series.Meta.Name
|
||||
valueField := data.NewFieldFromFieldType(data.FieldTypeNullableFloat64, 0)
|
||||
valueField.Name = data.TimeSeriesValueFieldName
|
||||
|
||||
item := series.Meta.Item
|
||||
scopedVars := map[string]ScopedVar{
|
||||
"__zbx_item": {Value: item.Name},
|
||||
"__zbx_item_name": {Value: item.Name},
|
||||
"__zbx_item_key": {Value: item.Key},
|
||||
"__zbx_item_interval": {Value: item.Delay},
|
||||
"__zbx_host": {Value: item.Delay},
|
||||
}
|
||||
if len(item.Hosts) > 0 {
|
||||
scopedVars["__zbx_host"] = ScopedVar{Value: item.Hosts[0].Name}
|
||||
scopedVars["__zbx_host_name"] = ScopedVar{Value: item.Hosts[0].Name}
|
||||
}
|
||||
valueField.Config = &data.FieldConfig{
|
||||
Custom: map[string]interface{}{
|
||||
"scopedVars": scopedVars,
|
||||
},
|
||||
}
|
||||
|
||||
frame := data.NewFrame(seriesName, timeFileld, valueField)
|
||||
|
||||
for _, point := range series.TS {
|
||||
|
||||
@@ -77,8 +77,8 @@ function sortSeries(direction, timeseries: any[]) {
|
||||
function setAlias(alias: string, frame: DataFrame) {
|
||||
if (frame.fields?.length <= 2) {
|
||||
const valueFileld = frame.fields.find(f => f.name === TIME_SERIES_VALUE_FIELD_NAME);
|
||||
if (valueFileld?.state?.scopedVars) {
|
||||
alias = getTemplateSrv().replace(alias, valueFileld?.state?.scopedVars);
|
||||
if (valueFileld?.config?.custom?.scopedVars) {
|
||||
alias = getTemplateSrv().replace(alias, valueFileld?.config?.custom?.scopedVars);
|
||||
}
|
||||
frame.name = alias;
|
||||
return frame;
|
||||
@@ -87,8 +87,8 @@ function setAlias(alias: string, frame: DataFrame) {
|
||||
for (let fieldIndex = 0; fieldIndex < frame.fields.length; fieldIndex++) {
|
||||
const field = frame.fields[fieldIndex];
|
||||
if (field.type !== FieldType.time) {
|
||||
if (field?.state?.scopedVars) {
|
||||
alias = getTemplateSrv().replace(alias, field?.state?.scopedVars);
|
||||
if (field?.config?.custom?.scopedVars) {
|
||||
alias = getTemplateSrv().replace(alias, field?.config?.custom?.scopedVars);
|
||||
}
|
||||
field.name = alias;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user