diff --git a/kernel/model/attribute_view.go b/kernel/model/attribute_view.go index 9c25c5646..92dbe738c 100644 --- a/kernel/model/attribute_view.go +++ b/kernel/model/attribute_view.go @@ -1089,11 +1089,6 @@ func addAttributeViewBlock(blockID string, operation *Operation, tree *parse.Tre return } - view, err := attrView.GetCurrentView() - if nil != err { - return - } - // 不允许重复添加相同的块到属性视图中 blockValues := attrView.GetBlockKeyValues() for _, blockValue := range blockValues.Values { @@ -1127,17 +1122,24 @@ func addAttributeViewBlock(blockID string, operation *Operation, tree *parse.Tre } } - switch view.LayoutType { - case av.LayoutTypeTable: - if "" != operation.PreviousID { - for i, id := range view.Table.RowIDs { - if id == operation.PreviousID { - view.Table.RowIDs = append(view.Table.RowIDs[:i+1], append([]string{blockID}, view.Table.RowIDs[i+1:]...)...) - break + for _, view := range attrView.Views { + switch view.LayoutType { + case av.LayoutTypeTable: + if "" != operation.PreviousID { + changed := false + for i, id := range view.Table.RowIDs { + if id == operation.PreviousID { + view.Table.RowIDs = append(view.Table.RowIDs[:i+1], append([]string{blockID}, view.Table.RowIDs[i+1:]...)...) + changed = true + break + } } + if !changed { + view.Table.RowIDs = append(view.Table.RowIDs, blockID) + } + } else { + view.Table.RowIDs = append([]string{blockID}, view.Table.RowIDs...) } - } else { - view.Table.RowIDs = append([]string{blockID}, view.Table.RowIDs...) } } @@ -1159,11 +1161,6 @@ func (tx *Transaction) removeAttributeViewBlock(operation *Operation) (err error return } - view, err := attrView.GetCurrentView() - if nil != err { - return - } - trees := map[string]*parse.Tree{} for _, keyValues := range attrView.KeyValues { tmp := keyValues.Values[:0] @@ -1210,8 +1207,10 @@ func (tx *Transaction) removeAttributeViewBlock(operation *Operation) (err error keyValues.Values = tmp } - for _, blockID := range operation.SrcIDs { - view.Table.RowIDs = gulu.Str.RemoveElem(view.Table.RowIDs, blockID) + for _, view := range attrView.Views { + for _, blockID := range operation.SrcIDs { + view.Table.RowIDs = gulu.Str.RemoveElem(view.Table.RowIDs, blockID) + } } err = av.SaveAttributeView(attrView)