{% 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 %}