diff --git a/kernel/conf/flashcard.go b/kernel/conf/flashcard.go index c20f8d5e4..869ba7cea 100644 --- a/kernel/conf/flashcard.go +++ b/kernel/conf/flashcard.go @@ -20,7 +20,7 @@ import ( "bytes" "fmt" - "github.com/open-spaced-repetition/go-fsrs/v2" + "github.com/open-spaced-repetition/go-fsrs/v3" ) type Flashcard struct { diff --git a/kernel/go.mod b/kernel/go.mod index 2bf9c1e4a..031597d0c 100644 --- a/kernel/go.mod +++ b/kernel/go.mod @@ -46,7 +46,7 @@ require ( github.com/mitchellh/go-ps v1.0.0 github.com/mssola/useragent v1.0.0 github.com/olahol/melody v1.2.1 - github.com/open-spaced-repetition/go-fsrs/v2 v2.0.1 + github.com/open-spaced-repetition/go-fsrs/v3 v3.1.0 github.com/panjf2000/ants/v2 v2.10.0 github.com/patrickmn/go-cache v2.1.0+incompatible github.com/radovskyb/watcher v1.0.7 @@ -60,7 +60,7 @@ require ( github.com/siyuan-note/filelock v0.0.0-20240724034355-d1ed7bf21d04 github.com/siyuan-note/httpclient v0.0.0-20240910021232-ab6f84db3b8b github.com/siyuan-note/logging v0.0.0-20240505035402-6430d57006a2 - github.com/siyuan-note/riff v0.0.0-20240828101024-443a09504726 + github.com/siyuan-note/riff v0.0.0-20240911034015-5fb2819a3ad3 github.com/spf13/cast v1.7.0 github.com/steambap/captcha v1.4.1 github.com/studio-b12/gowebdav v0.9.0 diff --git a/kernel/go.sum b/kernel/go.sum index f196fa564..8fc3d4b40 100644 --- a/kernel/go.sum +++ b/kernel/go.sum @@ -270,8 +270,8 @@ github.com/onsi/ginkgo/v2 v2.20.2 h1:7NVCeyIWROIAheY21RLS+3j2bb52W0W82tkberYytp4 github.com/onsi/ginkgo/v2 v2.20.2/go.mod h1:K9gyxPIlb+aIvnZ8bd9Ak+YP18w3APlR+5coaZoE2ag= github.com/onsi/gomega v1.34.1 h1:EUMJIKUjM8sKjYbtxQI9A4z2o+rruxnzNvpknOXie6k= github.com/onsi/gomega v1.34.1/go.mod h1:kU1QgUvBDLXBJq618Xvm2LUX6rSAfRaFRTcdOeDLwwY= -github.com/open-spaced-repetition/go-fsrs/v2 v2.0.1 h1:ODpQGZqZNsKqAF4/WUdRtfuNtwDIfI6Xj3cSznxk0g0= -github.com/open-spaced-repetition/go-fsrs/v2 v2.0.1/go.mod h1:Ry+MLx079nUXwSbYm+OYLK9pQ9yu0cCLWSo3N4H5ZBI= +github.com/open-spaced-repetition/go-fsrs/v3 v3.1.0 h1:wsNqYC0poLo1+4c9T4AoYvsPMpyTIjYpf2PpWbgJf7k= +github.com/open-spaced-repetition/go-fsrs/v3 v3.1.0/go.mod h1:zTtQIk3kOO9kweg5zJAgbdwBXR2HBPsDN0k6AxmTpzY= github.com/otiai10/gosseract/v2 v2.4.1 h1:G8AyBpXEeSlcq8TI85LH/pM5SXk8Djy2GEXisgyblRw= github.com/otiai10/gosseract/v2 v2.4.1/go.mod h1:1gNWP4Hgr2o7yqWfs6r5bZxAatjOIdqWxJLWsTsembk= github.com/otiai10/mint v1.6.3 h1:87qsV/aw1F5as1eH1zS/yqHY85ANKVMgkDrf9rcxbQs= @@ -349,8 +349,8 @@ github.com/siyuan-note/httpclient v0.0.0-20240910021232-ab6f84db3b8b h1:gl+FZ3mo github.com/siyuan-note/httpclient v0.0.0-20240910021232-ab6f84db3b8b/go.mod h1:szsySkVwuZ1INYAbPE/afcmTjJW+IrDMBMK1tMw36oA= github.com/siyuan-note/logging v0.0.0-20240505035402-6430d57006a2 h1:/2+tlOThVB86RxSLeW0JFw2ISUrH2ZFRg15ULGAUGAE= github.com/siyuan-note/logging v0.0.0-20240505035402-6430d57006a2/go.mod h1:3Osd2/nwzXZFl6ZcDE4hA0HD83Wyv1fds47nVuapyOM= -github.com/siyuan-note/riff v0.0.0-20240828101024-443a09504726 h1:bLBpaidGUXZS18eKnpUd5WdrGRz0mymZDLMKtWJe/B8= -github.com/siyuan-note/riff v0.0.0-20240828101024-443a09504726/go.mod h1:IThyetU+bmHp9dd9prUlwVyAwx/dBxRdUUysZQ+TYsw= +github.com/siyuan-note/riff v0.0.0-20240911034015-5fb2819a3ad3 h1:8rFXYq638/CXQ8W7xd2MFkoI7ArUeVzeWP8gEcr0W0o= +github.com/siyuan-note/riff v0.0.0-20240911034015-5fb2819a3ad3/go.mod h1:zXiGHpQvl7NOPZnq/kUqHlfArBRaaypRl6TZzHP59Yg= github.com/spf13/cast v1.7.0 h1:ntdiHjuueXFgm5nzDRdOS4yfT43P5Fnud6DH50rz/7w= github.com/spf13/cast v1.7.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/ssor/bom v0.0.0-20170718123548-6386211fdfcf h1:pvbZ0lM0XWPBqUKqFU8cmavspvIl9nulOYwdy6IFRRo= diff --git a/kernel/model/block.go b/kernel/model/block.go index a2f987ef0..6ec236718 100644 --- a/kernel/model/block.go +++ b/kernel/model/block.go @@ -25,7 +25,7 @@ import ( "github.com/88250/lute/ast" "github.com/88250/lute/parse" - "github.com/open-spaced-repetition/go-fsrs/v2" + "github.com/open-spaced-repetition/go-fsrs/v3" "github.com/siyuan-note/siyuan/kernel/filesys" "github.com/siyuan-note/siyuan/kernel/sql" "github.com/siyuan-note/siyuan/kernel/treenode" diff --git a/kernel/model/export.go b/kernel/model/export.go index a94e4f2fa..47e53b532 100644 --- a/kernel/model/export.go +++ b/kernel/model/export.go @@ -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 { diff --git a/kernel/model/search.go b/kernel/model/search.go index acd44ff8d..a38c5cbbb 100644 --- a/kernel/model/search.go +++ b/kernel/model/search.go @@ -791,7 +791,7 @@ func FindReplace(keyword, replacement string, replaceTypes map[string]bool, ids util.PushEndlessProgress(fmt.Sprintf(Conf.Language(207), i+1, len(renameRoots))) } - WaitForWritingFiles() + sql.WaitForWritingDatabase() reloadTreeIDs = gulu.Str.RemoveDuplicatedElem(reloadTreeIDs) for _, id := range reloadTreeIDs { diff --git a/kernel/model/transaction.go b/kernel/model/transaction.go index 310445718..322c2a85e 100644 --- a/kernel/model/transaction.go +++ b/kernel/model/transaction.go @@ -384,6 +384,8 @@ func (tx *Transaction) doMove(operation *Operation) (ret *TxErr) { if err = tx.writeTree(targetTree); err != nil { return } + task.AppendAsyncTaskWithDelay(task.SetDefRefCount, 1*time.Second, pushSetDefRefCount, srcTree.ID, srcTree.ID) + task.AppendAsyncTaskWithDelay(task.SetDefRefCount, 1*time.Second, pushSetDefRefCount, targetTree.ID, srcNode.ID) } return } @@ -463,6 +465,8 @@ func (tx *Transaction) doMove(operation *Operation) (ret *TxErr) { if err = tx.writeTree(targetTree); err != nil { return &TxErr{code: TxErrCodeWriteTree, msg: err.Error(), id: id} } + task.AppendAsyncTaskWithDelay(task.SetDefRefCount, 1*time.Second, pushSetDefRefCount, srcTree.ID, srcTree.ID) + task.AppendAsyncTaskWithDelay(task.SetDefRefCount, 1*time.Second, pushSetDefRefCount, targetTree.ID, srcNode.ID) } return }