diff --git a/kernel/api/filetree.go b/kernel/api/filetree.go index fb92337f5..ef6efc83d 100644 --- a/kernel/api/filetree.go +++ b/kernel/api/filetree.go @@ -472,29 +472,28 @@ func createDailyNote(c *gin.Context) { return } - appArg := arg["app"] - app := "" - if nil != appArg { - app = appArg.(string) + 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) } - 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, - } - evt.Callback = arg["callback"] - util.PushEvent(evt) ret.Data = map[string]interface{}{ "id": tree.Root.ID, diff --git a/kernel/model/attribute_view.go b/kernel/model/attribute_view.go index 3fc696aa6..9767722aa 100644 --- a/kernel/model/attribute_view.go +++ b/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) diff --git a/kernel/model/path.go b/kernel/model/path.go index be9678ea6..0c25d6d73 100644 --- a/kernel/model/path.go +++ b/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") diff --git a/kernel/treenode/node.go b/kernel/treenode/node.go index f15305744..82ef223c0 100644 --- a/kernel/treenode/node.go +++ b/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)