From 5afffdb0f7942349a8636a7852917bd1ce7f0945 Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Mon, 21 Nov 2022 22:41:44 +0800 Subject: [PATCH] =?UTF-8?q?:art:=20=E7=A7=BB=E5=8A=A8=E6=8A=98=E5=8F=A0?= =?UTF-8?q?=E6=A0=87=E9=A2=98=E5=90=8E=E8=87=AA=E5=8A=A8=E5=B1=95=E5=BC=80?= =?UTF-8?q?=20https://github.com/siyuan-note/siyuan/issues/6673?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kernel/api/block.go | 14 ++++++++++++++ kernel/api/router.go | 1 + kernel/model/block.go | 19 +++++++++++++++++++ 3 files changed, 34 insertions(+) diff --git a/kernel/api/block.go b/kernel/api/block.go index 8488eaa8d..35951c247 100644 --- a/kernel/api/block.go +++ b/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) diff --git a/kernel/api/router.go b/kernel/api/router.go index 690a85ead..e878a2a15 100644 --- a/kernel/api/router.go +++ b/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) diff --git a/kernel/model/block.go b/kernel/model/block.go index 99820f511..f1826fd32 100644 --- a/kernel/model/block.go +++ b/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 {