diff --git a/widgets/component/component.go b/widgets/component/component.go index 11817493..b17d260d 100644 --- a/widgets/component/component.go +++ b/widgets/component/component.go @@ -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"}, diff --git a/widgets/component/process.go b/widgets/component/process.go index 5032566f..6092af9c 100644 --- a/widgets/component/process.go +++ b/widgets/component/process.go @@ -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