Explorar o código

:art: Display the database title on the block superscript https://github.com/siyuan-note/siyuan/issues/10545

Daniel hai 1 ano
pai
achega
cc8841cc8c
Modificáronse 2 ficheiros con 45 adicións e 0 borrados
  1. 21 0
      kernel/av/av.go
  2. 24 0
      kernel/model/file.go

+ 21 - 0
kernel/av/av.go

@@ -29,6 +29,7 @@ import (
 
 	"github.com/88250/gulu"
 	"github.com/88250/lute/ast"
+	jsoniter "github.com/json-iterator/go"
 	"github.com/siyuan-note/filelock"
 	"github.com/siyuan-note/logging"
 	"github.com/siyuan-note/siyuan/kernel/util"
@@ -212,6 +213,26 @@ func NewAttributeView(id string) (ret *AttributeView) {
 	return
 }
 
+func GetAttributeViewName(avID string) (ret string, err error) {
+	avJSONPath := GetAttributeViewDataPath(avID)
+	if !filelock.IsExist(avJSONPath) {
+		return
+	}
+
+	data, err := filelock.ReadFile(avJSONPath)
+	if nil != err {
+		logging.LogErrorf("read attribute view [%s] failed: %s", avID, err)
+		return
+	}
+
+	val := jsoniter.Get(data, "name")
+	if nil == val || val.ValueType() == jsoniter.InvalidValue {
+		return
+	}
+	ret = val.ToString()
+	return
+}
+
 func IsAttributeViewExist(avID string) bool {
 	avJSONPath := GetAttributeViewDataPath(avID)
 	return filelock.IsExist(avJSONPath)

+ 24 - 0
kernel/model/file.go

@@ -17,6 +17,7 @@
 package model
 
 import (
+	"bytes"
 	"errors"
 	"fmt"
 	"os"
@@ -40,6 +41,7 @@ import (
 	"github.com/siyuan-note/filelock"
 	"github.com/siyuan-note/logging"
 	"github.com/siyuan-note/riff"
+	"github.com/siyuan-note/siyuan/kernel/av"
 	"github.com/siyuan-note/siyuan/kernel/cache"
 	"github.com/siyuan-note/siyuan/kernel/filesys"
 	"github.com/siyuan-note/siyuan/kernel/search"
@@ -731,6 +733,28 @@ func GetDoc(startID, endID, id string, index int, query string, queryTypes map[s
 				}
 			}
 
+			if avs := n.IALAttr(av.NodeAttrNameAvs); "" != avs {
+				// 填充属性视图名称
+				avNames := bytes.Buffer{}
+				avIDs := strings.Split(avs, ",")
+				for _, avID := range avIDs {
+					avName, getErr := av.GetAttributeViewName(avID)
+					if nil != getErr {
+						continue
+					}
+
+					if "" == avName {
+						avName = "Untitled"
+					}
+					avNames.WriteString(avName)
+					avNames.WriteString(",")
+				}
+				if 0 < avNames.Len() {
+					avNames.Truncate(avNames.Len() - 1)
+					n.SetIALAttr("av-names", avNames.String())
+				}
+			}
+
 			if "" != n.ID {
 				// 填充块引计数
 				if cnt := refCount[n.ID]; 0 < cnt {