Add color field support to QueryProp and Option structures

This commit is contained in:
Max 2024-11-04 16:57:55 +08:00
parent b9aaff7afb
commit 35f16e107d
2 changed files with 22 additions and 0 deletions

View file

@ -21,6 +21,13 @@ var BackendOnlyProps = map[string]map[string]map[string]interface{}{
},
},
},
"tag": {
"query": {
"xProps": map[string]interface{}{
"$remote": map[string]interface{}{"process": "yao.component.GetOptions"},
},
},
},
"autocomplete": {"query": {
"xProps": map[string]interface{}{
"$remote": map[string]interface{}{"process": "yao.component.GetOptions"},

View file

@ -23,9 +23,11 @@ type QueryProp struct {
LabelField string `json:"labelField,omitempty"`
ValueField string `json:"valueField,omitempty"`
IconField string `json:"iconField,omitempty"`
ColorField string `json:"colorField,omitempty"`
LabelFormat string `json:"labelFormat,omitempty"`
ValueFormat string `json:"valueFormat,omitempty"`
IconFormat string `json:"iconFormat,omitempty"`
ColorFormat string `json:"colorFormat,omitempty"`
Wheres []map[string]interface{} `json:"wheres,omitempty"`
param model.QueryParam
dsl map[string]interface{}
@ -37,6 +39,7 @@ type Option struct {
Label string `json:"label"`
Value interface{} `json:"value"`
Icon string `json:"icon,omitempty"`
Color string `json:"color,omitempty"`
}
// Export process
@ -177,6 +180,10 @@ func (q *QueryProp) format(options *[]Option, row map[string]interface{}) {
option.Icon = fmt.Sprintf("%v", row[q.IconField])
}
if q.ColorField != "" {
option.Color = fmt.Sprintf("%v", row[q.ColorField])
}
if q.LabelFormat != "" {
option.Label = q.replaceString(q.LabelFormat, row)
}
@ -189,6 +196,10 @@ func (q *QueryProp) format(options *[]Option, row map[string]interface{}) {
option.Icon = q.replaceString(q.IconFormat, row)
}
if q.ColorField != "" && q.ColorFormat != "" {
option.Color = q.replaceString(q.ColorFormat, row)
}
// Update the option
*options = append(*options, option)
}
@ -259,6 +270,10 @@ func (q *QueryProp) parse(query map[string]interface{}) error {
q.param.Select = append(q.param.Select, q.IconField)
}
if q.ColorField != "" {
q.param.Select = append(q.param.Select, q.ColorField)
}
raw, err := jsoniter.Marshal(props)
if err != nil {
return err