This commit is contained in:
Liang Ding 2022-10-02 11:27:56 +08:00
parent fcaddd6966
commit d19cd19f44
No known key found for this signature in database
GPG Key ID: 136F30F901A2231D
2 changed files with 7 additions and 45 deletions

View File

@ -397,10 +397,16 @@ func BuildTreeBacklink(id, keyword, mentionKeyword string, beforeLen int) (boxID
refs = removeDuplicatedRefs(refs) // 同一个块中引用多个相同块时反链去重 https://github.com/siyuan-note/siyuan/issues/3317
linkRefs, excludeBacklinkIDs := buildLinkRefs(id, refs)
backlinks = toSubTree(linkRefs, keyword)
backlinks = toFlatTree(linkRefs, 0, "backlink")
for _, l := range backlinks {
l.Blocks = nil
}
mentionRefs := buildTreeBackmention(sqlBlock, linkRefs, mentionKeyword, excludeBacklinkIDs, beforeLen)
backmentions = toFlatTree(mentionRefs, 0, "backlink")
for _, l := range backmentions {
l.Blocks = nil
}
mentionsCount = len(backmentions)
return
}

View File

@ -27,7 +27,6 @@ import (
"github.com/88250/gulu"
"github.com/88250/lute/ast"
"github.com/siyuan-note/logging"
"github.com/siyuan-note/siyuan/kernel/search"
"github.com/siyuan-note/siyuan/kernel/treenode"
"github.com/siyuan-note/siyuan/kernel/util"
)
@ -124,49 +123,6 @@ func toFlatTree(blocks []*Block, baseDepth int, typ string) (ret []*Path) {
return
}
func toSubTree(blocks []*Block, keyword string) (ret []*Path) {
keyword = strings.TrimSpace(keyword)
var blockRoots []*Block
for _, block := range blocks {
root := getBlockIn(blockRoots, block.RootID)
if nil == root {
root, _ = getBlock(block.RootID)
blockRoots = append(blockRoots, root)
}
block.Depth = 1
block.Count = len(block.Children)
root.Children = append(root.Children, block)
}
for _, root := range blockRoots {
treeNode := &Path{
ID: root.ID,
Box: root.Box,
Name: path.Base(root.HPath),
Type: "backlink",
NodeType: "NodeDocument",
SubType: root.SubType,
Depth: 0,
Count: len(root.Children),
}
rootPos := -1
var rootContent string
if "" != keyword {
rootPos, rootContent = search.MarkText(treeNode.Name, keyword, 12, Conf.Search.CaseSensitive)
treeNode.Name = rootContent
}
if 0 < len(treeNode.Children) || 0 < len(treeNode.Blocks) || (-1 < rootPos && "" != keyword) {
ret = append(ret, treeNode)
}
}
sort.Slice(ret, func(i, j int) bool {
return ret[i].ID > ret[j].ID
})
return
}
func getBlockIn(blocks []*Block, id string) *Block {
if "" == id {
return nil