From 112d6619ddfde0d6ff5616e1ff605e9951d6c506 Mon Sep 17 00:00:00 2001 From: Max Date: Fri, 16 Dec 2022 18:05:55 +0800 Subject: [PATCH] [fix] widget form tab columns bug --- widgets/form/layout.go | 4 +++- widgets/form/mapping.go | 43 +++++++++++++++++++---------------------- 2 files changed, 23 insertions(+), 24 deletions(-) diff --git a/widgets/form/layout.go b/widgets/form/layout.go index 77b0cce3..1cecc4c8 100644 --- a/widgets/form/layout.go +++ b/widgets/form/layout.go @@ -159,14 +159,16 @@ func (layout *LayoutDSL) listColumns(fn func(string, Column), path string, secti if sections[i].Columns[j].Tabs != nil { for k := range sections[i].Columns[j].Tabs { + tab := sections[i].Columns[j].Tabs[k] layout.listColumns( fn, fmt.Sprintf("%s[%d].Columns[%d].tabs[%d]", path, i, j, k), - []SectionDSL{sections[i].Columns[j].Tabs[k]}, + []SectionDSL{tab}, ) } continue } + if path == "layout.sections" { fn(fmt.Sprintf("%s[%d].Columns[%d]", path, i, j), sections[i].Columns[j]) } else { diff --git a/widgets/form/mapping.go b/widgets/form/mapping.go index a6654488..cb921929 100644 --- a/widgets/form/mapping.go +++ b/widgets/form/mapping.go @@ -45,36 +45,33 @@ func (dsl *DSL) mapping() error { // Mapping compute and id if dsl.Fields.Form != nil && dsl.Layout.Form != nil && dsl.Layout.Form.Sections != nil { - for _, section := range dsl.Layout.Form.Sections { + dsl.Layout.listColumns(func(path string, inst Column) { - for _, inst := range section.Columns { + if field, has := dsl.Fields.Form[inst.Name]; has { + // Mapping ID + dsl.Mapping.Columns[field.ID] = inst.Name + dsl.Mapping.Columns[inst.Name] = field.ID - if field, has := dsl.Fields.Form[inst.Name]; has { - - // Mapping ID - dsl.Mapping.Columns[field.ID] = inst.Name - dsl.Mapping.Columns[inst.Name] = field.ID - - // View - if field.View != nil && field.View.Compute != nil { - bind := field.ViewBind() - if _, has := dsl.Computes.View[bind]; !has { - dsl.Computes.View[bind] = []compute.Unit{} - } - dsl.Computes.View[bind] = append(dsl.Computes.View[bind], compute.Unit{Name: inst.Name, Kind: compute.View}) + // View + if field.View != nil && field.View.Compute != nil { + bind := field.ViewBind() + if _, has := dsl.Computes.View[bind]; !has { + dsl.Computes.View[bind] = []compute.Unit{} } + dsl.Computes.View[bind] = append(dsl.Computes.View[bind], compute.Unit{Name: inst.Name, Kind: compute.View}) + } - // Edit - if field.Edit != nil && field.Edit.Compute != nil { - bind := field.EditBind() - if _, has := dsl.Computes.Edit[bind]; !has { - dsl.Computes.Edit[bind] = []compute.Unit{} - } - dsl.Computes.Edit[bind] = append(dsl.Computes.Edit[bind], compute.Unit{Name: inst.Name, Kind: compute.Edit}) + // Edit + if field.Edit != nil && field.Edit.Compute != nil { + bind := field.EditBind() + if _, has := dsl.Computes.Edit[bind]; !has { + dsl.Computes.Edit[bind] = []compute.Unit{} } + dsl.Computes.Edit[bind] = append(dsl.Computes.Edit[bind], compute.Unit{Name: inst.Name, Kind: compute.Edit}) } } - } + + }, "", nil) } // Mapping Actions