diff --git a/appview/models/label.go b/appview/models/label.go index fb79b8ae..d851de2c 100644 --- a/appview/models/label.go +++ b/appview/models/label.go @@ -291,18 +291,37 @@ type set = map[string]struct{} type LabelState struct { inner map[string]set + names map[string]string } func NewLabelState() LabelState { return LabelState{ inner: make(map[string]set), + names: make(map[string]string), } } +func (s LabelState) LabelNames() []string { + var result []string + for key, valset := range s.inner { + if valset == nil { + continue + } + if name, ok := s.names[key]; ok { + result = append(result, name) + } + } + return result +} + func (s LabelState) Inner() map[string]set { return s.inner } +func (s LabelState) SetName(key, name string) { + s.names[key] = name +} + func (s LabelState) ContainsLabel(l string) bool { if valset, exists := s.inner[l]; exists { if valset != nil { @@ -348,6 +367,8 @@ func (c *LabelApplicationCtx) ApplyLabelOp(state LabelState, op LabelOp) error { return nil } + state.names[op.OperandKey] = def.Name + switch op.Operation { case LabelOperationAdd: // if valueset is empty, init it