Ver Fonte

:art: 移动折叠标题后自动展开 https://github.com/siyuan-note/siyuan/issues/6673

Liang Ding há 2 anos atrás
pai
commit
5afffdb0f7
3 ficheiros alterados com 34 adições e 0 exclusões
  1. 14 0
      kernel/api/block.go
  2. 1 0
      kernel/api/router.go
  3. 19 0
      kernel/model/block.go

+ 14 - 0
kernel/api/block.go

@@ -52,6 +52,20 @@ func swapBlockRef(c *gin.Context) {
 	}
 }
 
+func getHeadingChildrenIDs(c *gin.Context) {
+	ret := gulu.Ret.NewResult()
+	defer c.JSON(http.StatusOK, ret)
+
+	arg, ok := util.JsonArg(c, ret)
+	if !ok {
+		return
+	}
+
+	id := arg["id"].(string)
+	ids := model.GetHeadingChildrenIDs(id)
+	ret.Data = ids
+}
+
 func getHeadingChildrenDOM(c *gin.Context) {
 	ret := gulu.Ret.NewResult()
 	defer c.JSON(http.StatusOK, ret)

+ 1 - 0
kernel/api/router.go

@@ -160,6 +160,7 @@ func ServeAPI(ginServer *gin.Engine) {
 	ginServer.Handle("POST", "/api/block/setBlockReminder", model.CheckAuth, setBlockReminder)
 	ginServer.Handle("POST", "/api/block/getHeadingLevelTransaction", model.CheckAuth, getHeadingLevelTransaction)
 	ginServer.Handle("POST", "/api/block/getHeadingDeleteTransaction", model.CheckAuth, getHeadingDeleteTransaction)
+	ginServer.Handle("POST", "/api/block/getHeadingChildrenIDs", model.CheckAuth, getHeadingChildrenIDs)
 	ginServer.Handle("POST", "/api/block/getHeadingChildrenDOM", model.CheckAuth, getHeadingChildrenDOM)
 	ginServer.Handle("POST", "/api/block/swapBlockRef", model.CheckAuth, swapBlockRef)
 

+ 19 - 0
kernel/model/block.go

@@ -252,6 +252,25 @@ func GetHeadingDeleteTransaction(id string) (transaction *Transaction, err error
 	return
 }
 
+func GetHeadingChildrenIDs(id string) (ret []string) {
+	tree, err := loadTreeByBlockID(id)
+	if nil != err {
+		return
+	}
+	heading := treenode.GetNodeInTree(tree, id)
+	if nil == heading || ast.NodeHeading != heading.Type {
+		return
+	}
+
+	nodes := append([]*ast.Node{}, heading)
+	children := treenode.HeadingChildren(heading)
+	nodes = append(nodes, children...)
+	for _, n := range nodes {
+		ret = append(ret, n.ID)
+	}
+	return
+}
+
 func GetHeadingChildrenDOM(id string) (ret string) {
 	tree, err := loadTreeByBlockID(id)
 	if nil != err {