mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-12-17 07:00:12 +01:00
🎨 嵌入块查询结果中显示块引用计数 https://github.com/siyuan-note/siyuan/issues/7191
This commit is contained in:
parent
ef436cf12e
commit
35baf86b6e
2 changed files with 35 additions and 0 deletions
|
|
@ -19,6 +19,7 @@ package model
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/88250/lute"
|
"github.com/88250/lute"
|
||||||
|
|
@ -466,6 +467,18 @@ func getEmbeddedBlock(embedBlockID string, trees map[string]*parse.Tree, sqlBloc
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 嵌入块查询结果中显示块引用计数 https://github.com/siyuan-note/siyuan/issues/7191
|
||||||
|
var defIDs []string
|
||||||
|
for _, n := range nodes {
|
||||||
|
defIDs = append(defIDs, n.ID)
|
||||||
|
}
|
||||||
|
refCount := sql.QueryRefCount(defIDs)
|
||||||
|
for _, n := range nodes {
|
||||||
|
if cnt := refCount[n.ID]; 0 < cnt {
|
||||||
|
n.SetIALAttr("refcount", strconv.Itoa(cnt))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
luteEngine := NewLute()
|
luteEngine := NewLute()
|
||||||
luteEngine.RenderOptions.ProtyleContenteditable = false // 不可编辑
|
luteEngine.RenderOptions.ProtyleContenteditable = false // 不可编辑
|
||||||
dom := renderBlockDOMByNodes(nodes, luteEngine)
|
dom := renderBlockDOMByNodes(nodes, luteEngine)
|
||||||
|
|
|
||||||
|
|
@ -79,6 +79,28 @@ func queryRefTexts() (ret []string) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func QueryRefCount(defIDs []string) (ret map[string]int) {
|
||||||
|
ret = map[string]int{}
|
||||||
|
ids := strings.Join(defIDs, "','")
|
||||||
|
ids = "('" + ids + "')"
|
||||||
|
rows, err := query("SELECT def_block_id, COUNT(*) AS ref_cnt FROM refs WHERE def_block_id IN " + ids + " GROUP BY def_block_id")
|
||||||
|
if nil != err {
|
||||||
|
logging.LogErrorf("sql query failed: %s", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
defer rows.Close()
|
||||||
|
for rows.Next() {
|
||||||
|
var id string
|
||||||
|
var cnt int
|
||||||
|
if err = rows.Scan(&id, &cnt); nil != err {
|
||||||
|
logging.LogErrorf("query scan field failed: %s", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ret[id] = cnt
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func QueryRootChildrenRefCount(defRootID string) (ret map[string]int) {
|
func QueryRootChildrenRefCount(defRootID string) (ret map[string]int) {
|
||||||
ret = map[string]int{}
|
ret = map[string]int{}
|
||||||
rows, err := query("SELECT def_block_id, COUNT(*) AS ref_cnt FROM refs WHERE def_block_root_id = ? GROUP BY def_block_id", defRootID)
|
rows, err := query("SELECT def_block_id, COUNT(*) AS ref_cnt FROM refs WHERE def_block_root_id = ? GROUP BY def_block_id", defRootID)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue