瀏覽代碼

Merge remote-tracking branch 'origin/dev' into dev

Vanessa 1 年之前
父節點
當前提交
d20d17f049
共有 4 個文件被更改,包括 82 次插入34 次删除
  1. 21 22
      kernel/api/filetree.go
  2. 40 4
      kernel/model/attribute_view.go
  3. 7 8
      kernel/model/path.go
  4. 14 0
      kernel/treenode/node.go

+ 21 - 22
kernel/api/filetree.go

@@ -472,29 +472,28 @@ func createDailyNote(c *gin.Context) {
 		return
 	}
 
-	appArg := arg["app"]
-	app := ""
-	if nil != appArg {
-		app = appArg.(string)
-	}
-	pushMode := util.PushModeBroadcast
-	if existed && "" != app {
-		pushMode = util.PushModeBroadcastApp
-	}
-	evt := util.NewCmdResult("createdailynote", 0, pushMode)
-	evt.AppId = app
-
-	name := path.Base(p)
-	files, _, _ := model.ListDocTree(box.ID, path.Dir(p), util.SortModeUnassigned, false, false, model.Conf.FileTree.MaxListCount)
-	evt.Data = map[string]interface{}{
-		"box":   box,
-		"path":  p,
-		"files": files,
-		"name":  name,
-		"id":    tree.Root.ID,
+	if !existed {
+		// 只有创建的情况才推送,已经存在的情况不推送
+		// Creating a dailynote existed no longer expands the doc tree https://github.com/siyuan-note/siyuan/issues/9959
+		appArg := arg["app"]
+		app := ""
+		if nil != appArg {
+			app = appArg.(string)
+		}
+		evt := util.NewCmdResult("createdailynote", 0, util.PushModeBroadcast)
+		evt.AppId = app
+		name := path.Base(p)
+		files, _, _ := model.ListDocTree(box.ID, path.Dir(p), util.SortModeUnassigned, false, false, model.Conf.FileTree.MaxListCount)
+		evt.Data = map[string]interface{}{
+			"box":   box,
+			"path":  p,
+			"files": files,
+			"name":  name,
+			"id":    tree.Root.ID,
+		}
+		evt.Callback = arg["callback"]
+		util.PushEvent(evt)
 	}
-	evt.Callback = arg["callback"]
-	util.PushEvent(evt)
 
 	ret.Data = map[string]interface{}{
 		"id": tree.Root.ID,

+ 40 - 4
kernel/model/attribute_view.go

@@ -49,6 +49,7 @@ type SearchAttributeViewResult struct {
 	AvID    string `json:"avID"`
 	AvName  string `json:"avName"`
 	BlockID string `json:"blockID"`
+	HPath   string `json:"hPath"`
 }
 
 func SearchAttributeView(keyword string, page int, pageSize int) (ret []*SearchAttributeViewResult, pageCount int) {
@@ -102,11 +103,23 @@ func SearchAttributeView(keyword string, page int, pageSize int) (ret []*SearchA
 				break
 			}
 		}
+
+		var hPath string
+		baseBlock := treenode.GetBlockTreeRootByPath(node.Box, node.Path)
+		if nil != baseBlock {
+			hPath = baseBlock.HPath
+		}
+		box := Conf.Box(node.Box)
+		if nil != box {
+			hPath = box.Name + hPath
+		}
+
 		if !exist {
 			ret = append(ret, &SearchAttributeViewResult{
 				AvID:    avID,
 				AvName:  attrView.Name,
 				BlockID: block.ID,
+				HPath:   hPath,
 			})
 		}
 	}
@@ -170,6 +183,20 @@ func GetBlockAttributeViewKeys(blockID string) (ret []*BlockAttributeViewKeys) {
 		// 先处理创建时间和更新时间
 		for _, kv := range keyValues {
 			switch kv.Key.Type {
+			case av.KeyTypeRelation:
+				relKey, _ := attrView.GetKey(kv.Values[0].KeyID)
+				if nil != relKey && nil != relKey.Relation {
+					destAv, _ := av.ParseAttributeView(relKey.Relation.AvID)
+					if nil != destAv {
+						blocks := map[string]string{}
+						for _, blockValue := range destAv.GetBlockKeyValues().Values {
+							blocks[blockValue.BlockID] = blockValue.Block.Content
+						}
+						for _, blockID := range kv.Values[0].Relation.BlockIDs {
+							kv.Values[0].Relation.Contents = append(kv.Values[0].Relation.Contents, blocks[blockID])
+						}
+					}
+				}
 			case av.KeyTypeCreated:
 				createdStr := blockID[:len("20060102150405")]
 				created, parseErr := time.ParseInLocation("20060102150405", createdStr, time.Local)
@@ -673,10 +700,19 @@ func renderAttributeViewTable(attrView *av.AttributeView, view *av.View) (ret *a
 				content := renderTemplateCol(ial, cell.Value.Template.Content, keyValues)
 				cell.Value.Template.Content = content
 			case av.KeyTypeRelation: // 渲染关联列
-
-				//for _, blockID := range cell.Value.Relation.BlockIDs {
-				//
-				//}
+				relKey, _ := attrView.GetKey(cell.Value.KeyID)
+				if nil != relKey && nil != relKey.Relation {
+					destAv, _ := av.ParseAttributeView(relKey.Relation.AvID)
+					if nil != destAv {
+						blocks := map[string]string{}
+						for _, blockValue := range destAv.GetBlockKeyValues().Values {
+							blocks[blockValue.BlockID] = blockValue.Block.Content
+						}
+						for _, blockID := range cell.Value.Relation.BlockIDs {
+							cell.Value.Relation.Contents = append(cell.Value.Relation.Contents, blocks[blockID])
+						}
+					}
+				}
 			case av.KeyTypeCreated: // 渲染创建时间
 				createdStr := row.ID[:len("20060102150405")]
 				created, parseErr := time.ParseInLocation("20060102150405", createdStr, time.Local)

+ 7 - 8
kernel/model/path.go

@@ -52,9 +52,9 @@ func createDocsByHPath(boxID, hPath, content, parentID, id string /* id 参数
 			return
 		}
 	} else {
+		retID = ast.NewNodeID()
 		if "" == id {
-			id = ast.NewNodeID()
-			retID = id
+			id = retID
 		}
 	}
 
@@ -95,10 +95,12 @@ func createDocsByHPath(boxID, hPath, content, parentID, id string /* id 参数
 		root = hpathBtMap[hp]
 		isNotLast := i < len(parts)-1
 		if nil == root {
-			if "" == retID {
-				retID = ast.NewNodeID()
+			rootID := ast.NewNodeID()
+			if i == len(parts)-1 {
+				rootID = retID
 			}
-			pathBuilder.WriteString(retID)
+
+			pathBuilder.WriteString(rootID)
 			docP := pathBuilder.String() + ".sy"
 			if isNotLast {
 				if _, err = createDoc(boxID, docP, part, ""); nil != err {
@@ -118,9 +120,6 @@ func createDocsByHPath(boxID, hPath, content, parentID, id string /* id 参数
 				}
 			}
 		} else {
-			if "" == retID {
-				retID = root.ID
-			}
 			pathBuilder.WriteString(root.ID)
 			if !isNotLast {
 				pathBuilder.WriteString(".sy")

+ 14 - 0
kernel/treenode/node.go

@@ -724,6 +724,20 @@ func renderAttributeViewTable(attrView *av.AttributeView, view *av.View) (ret *a
 				}
 				content := renderTemplateCol(ial, cell.Value.Template.Content, keyValues)
 				cell.Value.Template.Content = content
+			case av.KeyTypeRelation: // 渲染关联列
+				relKey, _ := attrView.GetKey(cell.Value.KeyID)
+				if nil != relKey && nil != relKey.Relation {
+					destAv, _ := av.ParseAttributeView(relKey.Relation.AvID)
+					if nil != destAv {
+						blocks := map[string]string{}
+						for _, blockValue := range destAv.GetBlockKeyValues().Values {
+							blocks[blockValue.BlockID] = blockValue.Block.Content
+						}
+						for _, blockID := range cell.Value.Relation.BlockIDs {
+							cell.Value.Relation.Contents = append(cell.Value.Relation.Contents, blocks[blockID])
+						}
+					}
+				}
 			case av.KeyTypeCreated: // 渲染创建时间
 				createdStr := row.ID[:len("20060102150405")]
 				created, parseErr := time.ParseInLocation("20060102150405", createdStr, time.Local)