/
additional_item.go
45 lines (40 loc) · 1.19 KB
/
additional_item.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package models
import "github.com/kiali/kiali/config"
type AdditionalItem struct {
Title string `json:"title"`
Value string `json:"value"`
Icon string `json:"icon"`
}
func getMatchingDetail(itemConfig config.AdditionalDisplayItem, annotations map[string]string) *AdditionalItem {
if itemConfig.Annotation != "" {
var icon string
if itemConfig.IconAnnotation != "" {
icon = annotations[itemConfig.IconAnnotation]
}
if value, ok := annotations[itemConfig.Annotation]; ok {
return &AdditionalItem{
Title: itemConfig.Title,
Value: value,
Icon: icon,
}
}
}
return nil
}
func GetAdditionalDetails(conf *config.Config, annotations map[string]string) []AdditionalItem {
items := []AdditionalItem{}
for _, itemConfig := range conf.AdditionalDisplayDetails {
if detail := getMatchingDetail(itemConfig, annotations); detail != nil {
items = append(items, *detail)
}
}
return items
}
func GetFirstAdditionalIcon(conf *config.Config, annotations map[string]string) *AdditionalItem {
for _, itemConfig := range conf.AdditionalDisplayDetails {
if detail := getMatchingDetail(itemConfig, annotations); detail != nil && detail.Icon != "" {
return detail
}
}
return nil
}