From be2787db97509fb0259ee1a24f8df0fc1ad25fde Mon Sep 17 00:00:00 2001 From: liugq Date: Wed, 7 Jun 2023 16:06:44 +0800 Subject: [PATCH] fix formula notwork when there is only one metric items --- plugin/api/insight/metadata.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/plugin/api/insight/metadata.go b/plugin/api/insight/metadata.go index 1c2b1cab..8178aebb 100644 --- a/plugin/api/insight/metadata.go +++ b/plugin/api/insight/metadata.go @@ -7,9 +7,9 @@ package insight import ( "github.com/Knetic/govaluate" log "github.com/cihub/seelog" + "infini.sh/console/model/insight" httprouter "infini.sh/framework/core/api/router" "infini.sh/framework/core/elastic" - "infini.sh/console/model/insight" "infini.sh/framework/core/orm" "infini.sh/framework/core/util" "math" @@ -217,7 +217,8 @@ func getMetricData(metric *insight.Metric) (interface{}, error) { metricData := CollectMetricData(agg, metric.TimeBeforeGroup) var targetMetricData []insight.MetricData - if len(metric.Items) == 1 { + formula := strings.TrimSpace(metric.Formula) + if len(metric.Items) == 1 && formula == "" { targetMetricData = metricData }else { for _, md := range metricData { @@ -225,7 +226,7 @@ func getMetricData(metric *insight.Metric) (interface{}, error) { Group: md.Group, Data: map[string][]insight.MetricDataItem{}, } - expression, err := govaluate.NewEvaluableExpression(metric.Formula) + expression, err := govaluate.NewEvaluableExpression(formula) if err != nil { return nil, err }