diff --git a/kernel/av/av.go b/kernel/av/av.go index 3d1a534fd..bab2fa49f 100644 --- a/kernel/av/av.go +++ b/kernel/av/av.go @@ -421,6 +421,14 @@ func SaveAttributeView(av *AttributeView) (err error) { view.Table.PageSize = TableViewDefaultPageSize } } + if nil != view.Gallery { + // 行去重 + view.Gallery.CardIDs = gulu.Str.RemoveDuplicatedElem(view.Gallery.CardIDs) + // 分页大小 + if 1 > view.Gallery.PageSize { + view.Gallery.PageSize = GalleryViewDefaultPageSize + } + } } var data []byte @@ -587,16 +595,31 @@ func (av *AttributeView) Clone() (ret *AttributeView) { for _, view := range ret.Views { view.ID = ast.NewNodeID() view.Table.ID = ast.NewNodeID() - for _, column := range view.Table.Columns { - column.ID = keyIDMap[column.ID] - } - view.Table.RowIDs = []string{} + switch view.LayoutType { + case LayoutTypeTable: + for _, column := range view.Table.Columns { + column.ID = keyIDMap[column.ID] + } + view.Table.RowIDs = []string{} - for _, f := range view.Table.Filters { - f.Column = keyIDMap[f.Column] - } - for _, s := range view.Table.Sorts { - s.Column = keyIDMap[s.Column] + for _, f := range view.Table.Filters { + f.Column = keyIDMap[f.Column] + } + for _, s := range view.Table.Sorts { + s.Column = keyIDMap[s.Column] + } + case LayoutTypeGallery: + for _, cardField := range view.Gallery.CardFields { + cardField.ID = keyIDMap[cardField.ID] + } + view.Gallery.CardIDs = []string{} + + for _, f := range view.Gallery.Filters { + f.Column = keyIDMap[f.Column] + } + for _, s := range view.Gallery.Sorts { + s.Column = keyIDMap[s.Column] + } } } ret.ViewID = ret.Views[0].ID diff --git a/kernel/model/attribute_view.go b/kernel/model/attribute_view.go index bdaf76fd2..fd49e021f 100644 --- a/kernel/model/attribute_view.go +++ b/kernel/model/attribute_view.go @@ -2602,7 +2602,12 @@ func removeAttributeViewBlock(srcIDs []string, avID string, tx *Transaction) (er for _, view := range attrView.Views { for _, blockID := range srcIDs { - view.Table.RowIDs = gulu.Str.RemoveElem(view.Table.RowIDs, blockID) + switch view.LayoutType { + case av.LayoutTypeTable: + view.Table.RowIDs = gulu.Str.RemoveElem(view.Table.RowIDs, blockID) + case av.LayoutTypeGallery: + view.Gallery.CardIDs = gulu.Str.RemoveElem(view.Gallery.CardIDs, blockID) + } } }