🎨 Improve database relation and rollup field exporting https://github.com/siyuan-note/siyuan/issues/12003

This commit is contained in:
Daniel 2024-09-10 18:17:20 +08:00
parent 3eec016723
commit 26d3b87584
No known key found for this signature in database
GPG key ID: 86211BA83DF03017

View file

@ -2365,6 +2365,65 @@ func exportTree(tree *parse.Tree, wysiwyg, keepFold, avHiddenCol bool,
} else if av.KeyTypeLineNumber == cell.Value.Type {
val = strconv.Itoa(rowNum)
rowNum++
} else if av.KeyTypeRelation == cell.Value.Type {
for i, v := range cell.Value.Relation.Contents {
if nil == v {
continue
}
if av.KeyTypeBlock == v.Type && nil != v.Block {
val = v.Block.Content
if !wysiwyg {
val = string(lex.EscapeProtyleMarkers([]byte(val)))
val = strings.ReplaceAll(val, "\\|", "|")
val = strings.ReplaceAll(val, "|", "\\|")
}
val = strings.ReplaceAll(val, "\n", " ")
mdTableCell.AppendChild(&ast.Node{Type: ast.NodeText, Tokens: []byte(val)})
}
if i < len(cell.Value.Relation.Contents)-1 {
mdTableCell.AppendChild(&ast.Node{Type: ast.NodeText, Tokens: []byte(", ")})
}
}
continue
} else if av.KeyTypeRollup == cell.Value.Type {
for i, v := range cell.Value.Rollup.Contents {
if nil == v {
continue
}
if av.KeyTypeBlock == v.Type {
if nil != v.Block {
val = v.Block.Content
if !wysiwyg {
val = string(lex.EscapeProtyleMarkers([]byte(val)))
val = strings.ReplaceAll(val, "\\|", "|")
val = strings.ReplaceAll(val, "|", "\\|")
}
val = strings.ReplaceAll(val, "\n", " ")
mdTableCell.AppendChild(&ast.Node{Type: ast.NodeText, Tokens: []byte(val)})
}
} else if av.KeyTypeText == v.Type {
val = v.Text.Content
if !wysiwyg {
val = string(lex.EscapeProtyleMarkers([]byte(val)))
val = strings.ReplaceAll(val, "\\|", "|")
val = strings.ReplaceAll(val, "|", "\\|")
}
val = strings.ReplaceAll(val, "\n", " ")
mdTableCell.AppendChild(&ast.Node{Type: ast.NodeText, Tokens: []byte(val)})
} else {
mdTableCell.AppendChild(&ast.Node{Type: ast.NodeText, Tokens: []byte(v.String(true))})
}
if i < len(cell.Value.Rollup.Contents)-1 {
mdTableCell.AppendChild(&ast.Node{Type: ast.NodeText, Tokens: []byte(", ")})
}
}
continue
}
if "" == val {