mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-09-22 08:30:42 +02:00
🎨 Add two shortcuts for block navigation https://github.com/siyuan-note/siyuan/issues/11193
This commit is contained in:
parent
8650ac464c
commit
cf187dddce
3 changed files with 24 additions and 21 deletions
|
@ -29,7 +29,7 @@ import (
|
||||||
"github.com/siyuan-note/siyuan/kernel/util"
|
"github.com/siyuan-note/siyuan/kernel/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
func getParentNextChildID(c *gin.Context) {
|
func getBlockSiblingID(c *gin.Context) {
|
||||||
ret := gulu.Ret.NewResult()
|
ret := gulu.Ret.NewResult()
|
||||||
defer c.JSON(http.StatusOK, ret)
|
defer c.JSON(http.StatusOK, ret)
|
||||||
|
|
||||||
|
@ -39,8 +39,11 @@ func getParentNextChildID(c *gin.Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
id := arg["id"].(string)
|
id := arg["id"].(string)
|
||||||
|
parent, previous, next := model.GetBlockSiblingID(id)
|
||||||
ret.Data = map[string]string{
|
ret.Data = map[string]string{
|
||||||
"id": model.GetParentNextChildID(id),
|
"parent": parent,
|
||||||
|
"next": next,
|
||||||
|
"previous": previous,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -198,7 +198,7 @@ func ServeAPI(ginServer *gin.Engine) {
|
||||||
ginServer.Handle("POST", "/api/block/getHeadingChildrenDOM", model.CheckAuth, getHeadingChildrenDOM)
|
ginServer.Handle("POST", "/api/block/getHeadingChildrenDOM", model.CheckAuth, getHeadingChildrenDOM)
|
||||||
ginServer.Handle("POST", "/api/block/swapBlockRef", model.CheckAuth, model.CheckReadonly, swapBlockRef)
|
ginServer.Handle("POST", "/api/block/swapBlockRef", model.CheckAuth, model.CheckReadonly, swapBlockRef)
|
||||||
ginServer.Handle("POST", "/api/block/transferBlockRef", model.CheckAuth, model.CheckReadonly, transferBlockRef)
|
ginServer.Handle("POST", "/api/block/transferBlockRef", model.CheckAuth, model.CheckReadonly, transferBlockRef)
|
||||||
ginServer.Handle("POST", "/api/block/getParentNextChildID", model.CheckAuth, getParentNextChildID)
|
ginServer.Handle("POST", "/api/block/getBlockSiblingID", model.CheckAuth, getBlockSiblingID)
|
||||||
|
|
||||||
ginServer.Handle("POST", "/api/file/getFile", model.CheckAuth, getFile)
|
ginServer.Handle("POST", "/api/file/getFile", model.CheckAuth, getFile)
|
||||||
ginServer.Handle("POST", "/api/file/putFile", model.CheckAuth, model.CheckReadonly, putFile)
|
ginServer.Handle("POST", "/api/file/putFile", model.CheckAuth, model.CheckReadonly, putFile)
|
||||||
|
|
|
@ -114,33 +114,33 @@ type Path struct {
|
||||||
Created string `json:"created"` // 创建时间
|
Created string `json:"created"` // 创建时间
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetParentNextChildID(id string) string {
|
func GetBlockSiblingID(id string) (parent, previous, next string) {
|
||||||
tree, err := LoadTreeByBlockID(id)
|
tree, err := LoadTreeByBlockID(id)
|
||||||
if nil != err {
|
if nil != err {
|
||||||
return ""
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
node := treenode.GetNodeInTree(tree, id)
|
node := treenode.GetNodeInTree(tree, id)
|
||||||
if nil == node {
|
if nil == node {
|
||||||
return ""
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
for p := node.Parent; nil != p; p = p.Parent {
|
if !node.IsBlock() {
|
||||||
if ast.NodeDocument == p.Type {
|
return
|
||||||
if nil != node.Next {
|
|
||||||
return node.Next.ID
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
for f := p.Next; nil != f; f = f.Next {
|
|
||||||
// 遍历取下一个块级元素(比如跳过超级块 Close 节点)
|
|
||||||
if f.IsBlock() {
|
|
||||||
return f.ID
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return ""
|
|
||||||
|
if nil != node.Parent && node.Parent.IsBlock() {
|
||||||
|
parent = node.Parent.ID
|
||||||
|
}
|
||||||
|
|
||||||
|
if nil != node.Previous && node.Previous.IsBlock() {
|
||||||
|
previous = node.Previous.ID
|
||||||
|
}
|
||||||
|
|
||||||
|
if nil != node.Next && node.Next.IsBlock() {
|
||||||
|
next = node.Next.ID
|
||||||
|
}
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func IsBlockFolded(id string) bool {
|
func IsBlockFolded(id string) bool {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue