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