From d257caff8d5d12a1751c3d18d3ca972cd5ef453d Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Thu, 12 Oct 2023 19:38:37 +0800 Subject: [PATCH 1/3] :art: Database block loading animation https://github.com/siyuan-note/siyuan/issues/9416 --- kernel/model/attribute_view.go | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/kernel/model/attribute_view.go b/kernel/model/attribute_view.go index 34718e82b..67e2bbe6a 100644 --- a/kernel/model/attribute_view.go +++ b/kernel/model/attribute_view.go @@ -209,6 +209,7 @@ func GetBlockAttributeViewKeys(blockID string) (ret []*BlockAttributeViewKeys) { } func RenderAttributeView(avID string) (viewable av.Viewable, attrView *av.AttributeView, err error) { + start := time.Now() waitForSyncingStorages() if avJSONPath := av.GetAttributeViewDataPath(avID); !gulu.File.IsExist(avJSONPath) { @@ -243,7 +244,7 @@ func RenderAttributeView(avID string) (viewable av.Viewable, attrView *av.Attrib } // 做一些数据兼容处理,保存的时候也会做 av.SaveAttributeView() - now := util.CurrentTimeMillis() + currentTimeMillis := util.CurrentTimeMillis() for _, kv := range attrView.KeyValues { switch kv.Key.Type { case av.KeyTypeBlock: // 补全 block 的创建时间和更新时间 @@ -254,11 +255,11 @@ func RenderAttributeView(avID string) (viewable av.Viewable, attrView *av.Attrib if nil == parseErr { v.Block.Created = created.UnixMilli() } else { - v.Block.Created = now + v.Block.Created = currentTimeMillis } } if 0 == v.Block.Updated { - v.Block.Updated = now + v.Block.Updated = currentTimeMillis } } } @@ -289,6 +290,12 @@ func RenderAttributeView(avID string) (viewable av.Viewable, attrView *av.Attrib viewable.FilterRows() viewable.SortRows() viewable.CalcCols() + + used := time.Since(start) + if minSleep := used.Milliseconds() - 256; 0 > minSleep { + // 补全加载时间到 256ms,避免前端动画闪烁干扰视觉 + time.Sleep(time.Duration(-minSleep) * time.Millisecond) + } return } From 1590913db73d8def51a05544b8a2b5e654285aa3 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Thu, 12 Oct 2023 19:55:57 +0800 Subject: [PATCH 2/3] :art: Update attr panel for av --- app/src/protyle/render/av/blockAttr.ts | 3 +++ kernel/model/attribute_view.go | 10 +++++----- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/app/src/protyle/render/av/blockAttr.ts b/app/src/protyle/render/av/blockAttr.ts index a469f2d5b..0ddb0ed89 100644 --- a/app/src/protyle/render/av/blockAttr.ts +++ b/app/src/protyle/render/av/blockAttr.ts @@ -8,6 +8,9 @@ import {popTextCell} from "./cell"; export const genAVValueHTML = (value: IAVCellValue) => { let html = ""; switch (value.type) { + case "block": + html = `
${value.block.content}
`; + break; case "text": html = ``; break; diff --git a/kernel/model/attribute_view.go b/kernel/model/attribute_view.go index 67e2bbe6a..246e4aed8 100644 --- a/kernel/model/attribute_view.go +++ b/kernel/model/attribute_view.go @@ -123,10 +123,6 @@ func GetBlockAttributeViewKeys(blockID string) (ret []*BlockAttributeViewKeys) { var keyValues []*av.KeyValues for _, kv := range attrView.KeyValues { - if av.KeyTypeBlock == kv.Key.Type { - continue - } - kValues := &av.KeyValues{Key: kv.Key} for _, v := range kv.Values { if v.BlockID == blockID { @@ -180,7 +176,11 @@ func GetBlockAttributeViewKeys(blockID string) (ret []*BlockAttributeViewKeys) { switch kv.Key.Type { case av.KeyTypeTemplate: if 0 < len(kv.Values) { - ial := GetBlockAttrs(blockID) + ial := map[string]string{} + block := getRowBlockValue(keyValues) + if !block.IsDetached { + ial = GetBlockAttrs(blockID) + } kv.Values[0].Template.Content = renderTemplateCol(ial, kv.Key.Template, keyValues) } } From 0ea9b8f5a7223bcdab3b8f8e5e890d908e164c34 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Thu, 12 Oct 2023 19:58:32 +0800 Subject: [PATCH 3/3] :art: Database block loading animation https://github.com/siyuan-note/siyuan/issues/9416 --- kernel/model/attribute_view.go | 7 ------- 1 file changed, 7 deletions(-) diff --git a/kernel/model/attribute_view.go b/kernel/model/attribute_view.go index 246e4aed8..ae180d554 100644 --- a/kernel/model/attribute_view.go +++ b/kernel/model/attribute_view.go @@ -209,7 +209,6 @@ func GetBlockAttributeViewKeys(blockID string) (ret []*BlockAttributeViewKeys) { } func RenderAttributeView(avID string) (viewable av.Viewable, attrView *av.AttributeView, err error) { - start := time.Now() waitForSyncingStorages() if avJSONPath := av.GetAttributeViewDataPath(avID); !gulu.File.IsExist(avJSONPath) { @@ -290,12 +289,6 @@ func RenderAttributeView(avID string) (viewable av.Viewable, attrView *av.Attrib viewable.FilterRows() viewable.SortRows() viewable.CalcCols() - - used := time.Since(start) - if minSleep := used.Milliseconds() - 256; 0 > minSleep { - // 补全加载时间到 256ms,避免前端动画闪烁干扰视觉 - time.Sleep(time.Duration(-minSleep) * time.Millisecond) - } return }