diff --git a/kernel/model/attribute_view.go b/kernel/model/attribute_view.go index e1280793d..1de2c21d2 100644 --- a/kernel/model/attribute_view.go +++ b/kernel/model/attribute_view.go @@ -4724,6 +4724,12 @@ func updateAttributeViewColumnOptions(operation *Operation) (err error) { return } + optionSorts := map[string]int{} + for i, opt := range options { + optionSorts[opt.Name] = i + } + + addNew := false selectKey, _ := attrView.GetKey(operation.ID) if nil == selectKey { return @@ -4744,9 +4750,16 @@ func updateAttributeViewColumnOptions(operation *Operation) (err error) { Color: opt.Color, Desc: opt.Desc, }) + addNew = true } } + if !addNew { + sort.SliceStable(selectKey.Options, func(i, j int) bool { + return optionSorts[selectKey.Options[i].Name] < optionSorts[selectKey.Options[j].Name] + }) + } + regenAttrViewGroups(attrView, operation.ID) err = av.SaveAttributeView(attrView) return