diff --git a/app/src/protyle/util/editorCommonEvent.ts b/app/src/protyle/util/editorCommonEvent.ts index 8e2fc2c54..35711acda 100644 --- a/app/src/protyle/util/editorCommonEvent.ts +++ b/app/src/protyle/util/editorCommonEvent.ts @@ -797,7 +797,7 @@ export const dropEvent = (protyle: IProtyle, editorElement: HTMLElement) => { transaction(protyle, [{ action: "insertAttrViewBlock", id: targetElement.getAttribute("data-node-id"), - parentID: targetElement.getAttribute("data-av-type"), + parentID: targetElement.getAttribute("data-av-id"), previousID: "", srcIDs: sourceIds, }], [{ diff --git a/kernel/av/av.go b/kernel/av/av.go index fcfd59f36..5cebca21f 100644 --- a/kernel/av/av.go +++ b/kernel/av/av.go @@ -24,7 +24,6 @@ import ( "strings" "github.com/88250/gulu" - "github.com/88250/lute/ast" "github.com/siyuan-note/filelock" "github.com/siyuan-note/logging" "github.com/siyuan-note/siyuan/kernel/util" @@ -49,9 +48,9 @@ const ( AttributeViewTypeTable AttributeViewType = "table" // 属性视图类型 - 表格 ) -func NewAttributeView() *AttributeView { +func NewAttributeView(id string) *AttributeView { return &AttributeView{ - ID: ast.NewNodeID(), + ID: id, Columns: []Column{NewColumnBlock()}, Rows: [][]Cell{}, Type: AttributeViewTypeTable, @@ -115,7 +114,7 @@ const ( func ParseAttributeView(avID string) (ret *AttributeView, err error) { avJSONPath := getAttributeViewJSONPath(avID) if !gulu.File.IsExist(avJSONPath) { - ret = NewAttributeView() + ret = NewAttributeView(avID) return } diff --git a/kernel/model/attribute_view.go b/kernel/model/attribute_view.go index 5be2f0cf9..79e43c572 100644 --- a/kernel/model/attribute_view.go +++ b/kernel/model/attribute_view.go @@ -124,6 +124,13 @@ func addAttributeViewBlock(blockID, avID string, tree *parse.Tree) (err error) { return } + // 不允许重复添加相同的块到属性视图中 + for _, row := range attrView.Rows { + if row[0].Value() == blockID { + return + } + } + var row []av.Cell row = append(row, av.NewCellBlock(block.ID)) if 1 < len(attrView.Columns) {