From 2a3d236d8e7ea8912afc4b8ade162aa91bfc3a02 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Wed, 3 Apr 2024 09:37:42 +0800 Subject: [PATCH 1/3] :bug: Database rollup calculation misses null values https://github.com/siyuan-note/siyuan/issues/10843 --- kernel/av/av.go | 16 ++++++++++++++++ kernel/model/attribute_view.go | 15 ++++++++++++--- kernel/treenode/node.go | 7 ++++++- 3 files changed, 34 insertions(+), 4 deletions(-) diff --git a/kernel/av/av.go b/kernel/av/av.go index d42c0f306..eeb54627b 100644 --- a/kernel/av/av.go +++ b/kernel/av/av.go @@ -523,6 +523,22 @@ func (av *AttributeView) GetCurrentView(viewID string) (ret *View, err error) { return } +func (av *AttributeView) ExistBlock(blockID string) bool { + for _, kv := range av.KeyValues { + if KeyTypeBlock != kv.Key.Type { + continue + } + + for _, v := range kv.Values { + if v.BlockID == blockID { + return true + } + } + return false + } + return false +} + func (av *AttributeView) GetValue(keyID, blockID string) (ret *Value) { for _, kv := range av.KeyValues { if kv.Key.ID == keyID { diff --git a/kernel/model/attribute_view.go b/kernel/model/attribute_view.go index 5dc0042a6..5a9dbdb46 100644 --- a/kernel/model/attribute_view.go +++ b/kernel/model/attribute_view.go @@ -340,9 +340,13 @@ func GetBlockAttributeViewKeys(blockID string) (ret []*BlockAttributeViewKeys) { for _, bID := range relVal.Relation.BlockIDs { destVal := destAv.GetValue(kv.Key.Rollup.KeyID, bID) if nil == destVal { - destVal = treenode.GetAttributeViewDefaultValue(ast.NewNodeID(), kv.Key.Rollup.KeyID, blockID, destKey.Type) + if destAv.ExistBlock(bID) { // 数据库中存在行但是列值不存在是数据未初始化,这里补一个默认值 + destVal = treenode.GetAttributeViewDefaultValue(ast.NewNodeID(), kv.Key.Rollup.KeyID, bID, destKey.Type) + } + if nil == destVal { + continue + } } - if av.KeyTypeNumber == destKey.Type { destVal.Number.Format = destKey.NumberFormat destVal.Number.FormatNumber() @@ -1001,7 +1005,12 @@ func renderAttributeViewTable(attrView *av.AttributeView, view *av.View, query s for _, blockID := range relVal.Relation.BlockIDs { destVal := destAv.GetValue(rollupKey.Rollup.KeyID, blockID) if nil == destVal { - continue + if destAv.ExistBlock(blockID) { // 数据库中存在行但是列值不存在是数据未初始化,这里补一个默认值 + destVal = treenode.GetAttributeViewDefaultValue(ast.NewNodeID(), rollupKey.Rollup.KeyID, blockID, destKey.Type) + } + if nil == destVal { + continue + } } if av.KeyTypeNumber == destKey.Type { destVal.Number.Format = destKey.NumberFormat diff --git a/kernel/treenode/node.go b/kernel/treenode/node.go index 8ebe61608..825865196 100644 --- a/kernel/treenode/node.go +++ b/kernel/treenode/node.go @@ -805,7 +805,12 @@ func renderAttributeViewTable(attrView *av.AttributeView, view *av.View) (ret *a for _, blockID := range relVal.Relation.BlockIDs { destVal := destAv.GetValue(rollupKey.Rollup.KeyID, blockID) if nil == destVal { - continue + if destAv.ExistBlock(blockID) { // 数据库中存在行但是列值不存在是数据未初始化,这里补一个默认值 + destVal = GetAttributeViewDefaultValue(ast.NewNodeID(), rollupKey.Rollup.KeyID, blockID, destKey.Type) + } + if nil == destVal { + continue + } } if av.KeyTypeNumber == destKey.Type { destVal.Number.Format = destKey.NumberFormat From cafc4ea38b8a3266ec8b6f1894ec16c9db2c36e0 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Wed, 3 Apr 2024 09:49:58 +0800 Subject: [PATCH 2/3] :bug: Unable to roll back document history https://github.com/siyuan-note/siyuan/issues/10846 --- kernel/model/history.go | 1 - 1 file changed, 1 deletion(-) diff --git a/kernel/model/history.go b/kernel/model/history.go index a9683a651..4ea4001ac 100644 --- a/kernel/model/history.go +++ b/kernel/model/history.go @@ -263,7 +263,6 @@ func RollbackDocHistory(boxID, historyPath string) (err error) { } } - util.ReloadUI() FullReindex() IncSync() return nil From 50faacd1291a67cca78be38279607334d296e87c Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Wed, 3 Apr 2024 10:24:51 +0800 Subject: [PATCH 3/3] :art: Export PDF and add watermarks no longer covered by images https://github.com/siyuan-note/siyuan/issues/10818 --- kernel/model/export.go | 1 + 1 file changed, 1 insertion(+) diff --git a/kernel/model/export.go b/kernel/model/export.go index 38b39563f..be8fd4a4a 100644 --- a/kernel/model/export.go +++ b/kernel/model/export.go @@ -1057,6 +1057,7 @@ func processPDFWatermark(pdfCtx *pdfcpu.Context, watermark bool) { return } + wm.OnTop = true // Export PDF and add watermarks no longer covered by images https://github.com/siyuan-note/siyuan/issues/10818 err = pdfCtx.AddWatermarks(nil, wm) if nil != err { logging.LogErrorf("add watermark failed: %s", err)