{% import ( "slices" "github.com/VictoriaMetrics/VictoriaMetrics/lib/logstorage" ) %} {% stripspace %} // FieldsForHits formats labels for /select/logsql/hits response {% func FieldsForHits(columns []logstorage.BlockColumn, rowIdx int) %} { {% if len(columns) > 0 %} {%q= columns[0].Name %}:{%q= columns[0].Values[rowIdx] %} {% for _, c := range columns[1:] %} ,{%q= c.Name %}:{%q= c.Values[rowIdx] %} {% endfor %} {% endif %} } {% endfunc %} {% func HitsSeries(m map[string]*hitsSeries) %} { {% code sortedKeys := make([]string, 0, len(m)) for k := range m { sortedKeys = append(sortedKeys, k) } slices.Sort(sortedKeys) %} "hits":[ {% if len(sortedKeys) > 0 %} {%= hitsSeriesLine(m, sortedKeys[0]) %} {% for _, k := range sortedKeys[1:] %} ,{%= hitsSeriesLine(m, k) %} {% endfor %} {% endif %} ] } {% endfunc %} {% func hitsSeriesLine(m map[string]*hitsSeries, k string) %} { {% code hs := m[k] hs.sort() timestamps := hs.timestamps values := hs.values %} "fields":{%s= k %}, "timestamps":[ {% if len(timestamps) > 0 %} {%q= timestamps[0] %} {% for _, ts := range timestamps[1:] %} ,{%q= ts %} {% endfor %} {% endif %} ], "values":[ {% if len(values) > 0 %} {%s= values[0] %} {% for _, v := range values[1:] %} ,{%s= v %} {% endfor %} {% endif %} ] } {% endfunc %} {% endstripspace %}