From 9797f1f31f5594a5f2fc0b1031adefddb6136a4c Mon Sep 17 00:00:00 2001 From: Max Date: Wed, 19 Oct 2022 02:24:54 +0800 Subject: [PATCH 1/2] [change] widget table filter.actions --- widgets/component/types.go | 1 + widgets/table/fields.go | 25 +++++++++++++++++++++---- widgets/table/layout.go | 11 ++++++++++- widgets/table/types.go | 4 ++-- 4 files changed, 34 insertions(+), 7 deletions(-) diff --git a/widgets/component/types.go b/widgets/component/types.go index 76afcadc..a88b88e3 100644 --- a/widgets/component/types.go +++ b/widgets/component/types.go @@ -24,6 +24,7 @@ type InstanceDSL struct { // ActionDSL the component action DSL type ActionDSL struct { Title string `json:"title,omitempty"` + Width int `json:"width,omitempty"` Icon string `json:"icon,omitempty"` Style string `json:"style,omitempty"` Props PropsDSL `json:"props,omitempty"` diff --git a/widgets/table/fields.go b/widgets/table/fields.go index c987f8d3..cddfbad1 100644 --- a/widgets/table/fields.go +++ b/widgets/table/fields.go @@ -2,6 +2,7 @@ package table import ( "fmt" + "strings" "github.com/yaoapp/gou" "github.com/yaoapp/yao/widgets/field" @@ -84,21 +85,37 @@ func (fields *FieldsDSL) Xgen(layout *LayoutDSL) (map[string]interface{}, error) tables := map[string]interface{}{} if layout.Filter != nil { for i, f := range layout.Filter.Columns { - field, has := fields.Filter[f.Name] + name := f.Name + field, has := fields.Filter[name] if !has { + if strings.HasPrefix(f.Name, "::") { + name = fmt.Sprintf("$L(%s)", strings.TrimPrefix(f.Name, "::")) + if field, has = fields.Filter[name]; has { + filters[name] = field.Map() + continue + } + } return nil, fmt.Errorf("fields.filter.%s not found, checking layout.filter.columns.%d.name", f.Name, i) } - filters[f.Name] = field.Map() + filters[name] = field.Map() } } if layout.Table != nil { for i, f := range layout.Table.Columns { - field, has := fields.Table[f.Name] + name := f.Name + field, has := fields.Table[name] if !has { + if strings.HasPrefix(f.Name, "::") { + name = fmt.Sprintf("$L(%s)", strings.TrimPrefix(f.Name, "::")) + if field, has = fields.Table[name]; has { + tables[name] = field.Map() + continue + } + } return nil, fmt.Errorf("fields.table.%s not found, checking layout.table.columns.%d.name", f.Name, i) } - tables[f.Name] = field.Map() + tables[name] = field.Map() } } diff --git a/widgets/table/layout.go b/widgets/table/layout.go index 497efdf2..d66908f4 100644 --- a/widgets/table/layout.go +++ b/widgets/table/layout.go @@ -26,7 +26,16 @@ func (layout *LayoutDSL) BindModel(m *gou.Model, fields *FieldsDSL, option map[s layout.Filter = &FilterLayoutDSL{Columns: component.Instances{}} if hasForm { - layout.Filter.BtnAddText = "创建" + layout.Filter.Actions = component.Actions{ + { + Title: "::Create", + Icon: "icon-plus", + Width: 3, + Action: map[string]component.ParamsDSL{ + "Common.historyPush": {"pathname": fmt.Sprintf("/x/Form/%s/0/edit", formName)}, + }, + }, + } } max := 3 diff --git a/widgets/table/types.go b/widgets/table/types.go index 80af013a..a67fad75 100644 --- a/widgets/table/types.go +++ b/widgets/table/types.go @@ -112,8 +112,8 @@ type OperationImportDSL struct { // FilterLayoutDSL layout.filter type FilterLayoutDSL struct { - BtnAddText string `json:"btnAddText,omitempty"` - Columns component.Instances `json:"columns,omitempty"` + Actions component.Actions `json:"actions,omitempty"` + Columns component.Instances `json:"columns,omitempty"` } // ViewLayoutDSL layout.table From aa5964ca09f8d02e1853921785ccb1af5c8f698e Mon Sep 17 00:00:00 2001 From: Max Date: Wed, 19 Oct 2022 05:56:00 +0800 Subject: [PATCH 2/2] [remove] form.lang --- widgets/form/action.go | 23 +++++++++++++++++++++++ widgets/form/form.go | 7 +------ widgets/form/lang.go | 7 ------- 3 files changed, 24 insertions(+), 13 deletions(-) delete mode 100644 widgets/form/lang.go diff --git a/widgets/form/action.go b/widgets/form/action.go index 7136a534..a4e57b8c 100644 --- a/widgets/form/action.go +++ b/widgets/form/action.go @@ -7,6 +7,8 @@ import ( "github.com/yaoapp/kun/any" "github.com/yaoapp/kun/log" "github.com/yaoapp/kun/maps" + "github.com/yaoapp/yao/config" + "github.com/yaoapp/yao/i18n" "github.com/yaoapp/yao/widgets/action" ) @@ -196,5 +198,26 @@ func processHandler(p *action.Process, process *gou.Process) (interface{}, error } } + // Tranlate + if p.Name == "yao.form.Setting" { + + widgets := []string{} + if form.Action.Bind.Model != "" { + m := gou.Select(form.Action.Bind.Model) + widgets = append(widgets, fmt.Sprintf("model.%s", m.ID)) + } + + if form.Action.Bind.Table != "" { + widgets = append(widgets, fmt.Sprintf("table.%s", form.Action.Bind.Table)) + } + + widgets = append(widgets, fmt.Sprintf("form.%s", form.ID)) + res, err = i18n.Trans(process.Lang(config.Conf.Lang), widgets, res) + if err != nil { + return nil, fmt.Errorf("[form] Trans.table.%s %s", form.ID, err.Error()) + } + + } + return res, nil } diff --git a/widgets/form/form.go b/widgets/form/form.go index 91b8d71d..e258052e 100644 --- a/widgets/form/form.go +++ b/widgets/form/form.go @@ -7,7 +7,6 @@ import ( jsoniter "github.com/json-iterator/go" "github.com/yaoapp/gou" - "github.com/yaoapp/gou/lang" "github.com/yaoapp/kun/exception" "github.com/yaoapp/yao/config" "github.com/yaoapp/yao/share" @@ -129,11 +128,6 @@ func LoadFrom(dir string, prefix string) error { return } - // Apply a language pack - if lang.Default != nil { - lang.Default.Apply(dsl) - } - Forms[id] = dsl }) @@ -211,5 +205,6 @@ func (dsl *DSL) Xgen() (map[string]interface{}, error) { } } + setting["name"] = dsl.Name return setting, nil } diff --git a/widgets/form/lang.go b/widgets/form/lang.go deleted file mode 100644 index 9b677474..00000000 --- a/widgets/form/lang.go +++ /dev/null @@ -1,7 +0,0 @@ -package form - -// Lang for applying a language pack -func (dsl *DSL) Lang(trans func(widget string, inst string, value *string) bool) { - widget := "form" - trans(widget, dsl.ID, &dsl.Name) -}