mirror of
https://github.com/prymitive/karma
synced 2026-05-19 04:26:41 +00:00
34 lines
1013 B
Go
34 lines
1013 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 {
|
|
uTokens := make([]models.UniqueString, 0, len(tokens))
|
|
for _, token := range tokens {
|
|
uTokens = append(uTokens, models.NewUniqueString(token))
|
|
}
|
|
|
|
acHint := models.Autocomplete{
|
|
Value: models.NewUniqueString(value),
|
|
Tokens: uTokens,
|
|
}
|
|
acHint.Tokens = append(acHint.Tokens, models.NewUniqueString(value))
|
|
return acHint
|
|
}
|
|
|
|
// BuildAutocomplete takes an alert object and generates list of autocomplete
|
|
// strings for it
|
|
func BuildAutocomplete(alerts []models.Alert) []models.Autocomplete {
|
|
acHints := []models.Autocomplete{}
|
|
for _, filterConfig := range AllFilters {
|
|
if filterConfig.Autocomplete != nil {
|
|
acHints = append(acHints, filterConfig.Autocomplete(filterConfig.Label, filterConfig.SupportedOperators, alerts)...)
|
|
}
|
|
}
|
|
return acHints
|
|
}
|