mirror of
https://github.com/prymitive/karma
synced 2026-05-07 03:26:52 +00:00
35 lines
997 B
Go
35 lines
997 B
Go
package filters
|
|
|
|
import (
|
|
"github.com/prymitive/karma/internal/models"
|
|
)
|
|
|
|
type autocompleteFactory func(name string, operators []string, alerts []models.Alert) []models.Autocomplete
|
|
|
|
func makeAC(value string, tokens []string) models.Autocomplete {
|
|
acHint := models.Autocomplete{
|
|
Value: value,
|
|
Tokens: tokens,
|
|
}
|
|
acHint.Tokens = append(acHint.Tokens, value)
|
|
return acHint
|
|
}
|
|
|
|
// BuildAutocomplete takes an alert object and generates list of autocomplete
|
|
// strings for it
|
|
func BuildAutocomplete(alerts []models.Alert) []models.Autocomplete {
|
|
acHints := map[string]models.Autocomplete{}
|
|
for _, filterConfig := range AllFilters {
|
|
if filterConfig.Autocomplete != nil {
|
|
for _, hint := range filterConfig.Autocomplete(filterConfig.Label, filterConfig.SupportedOperators, alerts) {
|
|
acHints[hint.Value] = hint
|
|
}
|
|
}
|
|
}
|
|
acHintsSlice := make([]models.Autocomplete, 0, len(acHints))
|
|
for _, hint := range acHints {
|
|
acHintsSlice = append(acHintsSlice, hint)
|
|
}
|
|
return acHintsSlice
|
|
}
|