[change] componet setting

This commit is contained in:
Max 2022-10-20 17:12:39 +08:00
parent 21b2105802
commit a57d13e49e
8 changed files with 37 additions and 19 deletions

View file

@ -1,5 +1,9 @@
package component
import (
jsoniter "github.com/json-iterator/go"
)
// process
// yao.component.TagView
// yao.component.TagEdit
@ -12,19 +16,27 @@ func Export() error {
return nil
}
// MarshalJSON Custom JSON parse
func (dsl DSL) MarshalJSON() ([]byte, error) {
return jsoniter.Marshal(dsl.Map())
}
// Map cast to map[string]interface{}
func (dsl DSL) Map() map[string]interface{} {
return map[string]interface{}{
res := map[string]interface{}{
"type": dsl.Type,
"in": dsl.In,
"out": dsl.Out,
"props": map[string]interface{}(dsl.Props),
}
if dsl.Bind != "" {
res["bind"] = dsl.Bind
}
return res
}
// Clone Component
func (dsl *DSL) Clone() *DSL {
new := DSL{
Bind: dsl.Bind,
Type: dsl.Type,
In: dsl.In,
Out: dsl.Out,

View file

@ -2,6 +2,7 @@ package component
// DSL the component DSL
type DSL struct {
Bind string `json:"bind,omitempty"`
Type string `json:"type,omitempty"`
In string `json:"in,omitempty"`
Out string `json:"out,omitempty"`

View file

@ -61,11 +61,13 @@ func (column *ColumnDSL) Clone() *ColumnDSL {
// Map cast to map[string]inteface{}
func (column ColumnDSL) Map() map[string]interface{} {
res := map[string]interface{}{
"key": column.Key,
"link": column.Link,
"bind": column.Bind,
}
if column.Link != "" {
res["link"] = column.Link
}
if column.View != nil {
res["view"] = column.View.Map()
}
@ -109,20 +111,20 @@ func (columns Columns) ComputeFieldsMerge(computeInFields map[string]string, com
// Compute In
if column.In != "" {
if !strings.Contains(column.In, ".") {
column.In = fmt.Sprintf("yao.component.%s", column.In)
if !strings.Contains(string(column.In), ".") {
column.In = Compute(fmt.Sprintf("yao.component.%s", column.In))
}
computeInFields[column.Bind] = column.In
computeInFields[name] = column.In
computeInFields[column.Bind] = string(column.In)
computeInFields[name] = string(column.In)
}
// Compute Out
if column.Out != "" {
if !strings.Contains(column.Out, ".") {
column.In = fmt.Sprintf("yao.component.%s", column.Out)
if !strings.Contains(string(column.Out), ".") {
column.In = Compute(fmt.Sprintf("yao.component.%s", column.Out))
}
computeOutFields[column.Bind] = column.Out
computeOutFields[name] = column.Out
computeOutFields[column.Bind] = string(column.Out)
computeOutFields[name] = string(column.Out)
}
}
}

View file

@ -43,7 +43,6 @@ func (filter *FilterDSL) Clone() *FilterDSL {
// Map cast to map[string]inteface{}
func (filter FilterDSL) Map() map[string]interface{} {
res := map[string]interface{}{
"key": filter.Key,
"bind": filter.Bind,
}

View file

@ -21,8 +21,8 @@ type ColumnDSL struct {
Key string `json:"key,omitempty"`
Bind string `json:"bind,omitempty"`
Link string `json:"link,omitempty"`
In string `json:"in,omitempty"`
Out string `json:"out,omitempty"`
In Compute `json:"in,omitempty"`
Out Compute `json:"out,omitempty"`
View *component.DSL `json:"view,omitempty"`
Edit *component.DSL `json:"edit,omitempty"`
}
@ -34,6 +34,9 @@ type FilterDSL struct {
Edit *component.DSL `json:"edit,omitempty"`
}
// Compute the compute filed
type Compute string
// Transform the field transform
type Transform struct {
Variables map[string]interface{} `json:"variables,omitempty"`

View file

@ -83,6 +83,7 @@ func (fields *FieldsDSL) Xgen(layout *LayoutDSL) (map[string]interface{}, error)
filters := map[string]interface{}{}
tables := map[string]interface{}{}
if layout.Filter != nil {
for i, f := range layout.Filter.Columns {
name := f.Name

View file

@ -18,6 +18,6 @@ func TestFiledsBindModel(t *testing.T) {
t.Fatal(err)
}
assert.Equal(t, "id", tab.Fields.Table["ID"].Bind)
assert.Equal(t, 15, len(tab.Fields.Table))
assert.Equal(t, 4, len(tab.Fields.Filter))
assert.Equal(t, 17, len(tab.Fields.Table))
assert.Equal(t, 6, len(tab.Fields.Filter))
}

View file

@ -22,7 +22,7 @@ func TestLoad(t *testing.T) {
if err != nil {
t.Fatal(err)
}
assert.Equal(t, 9, len(Tables))
assert.Equal(t, 10, len(Tables))
}
func TestLoadID(t *testing.T) {