From bdace41d971bfb167bcb6fa6b2894c5f9fcd8b97 Mon Sep 17 00:00:00 2001 From: Jeffrey Chen <78434827+TCOTC@users.noreply.github.com> Date: Thu, 4 Sep 2025 15:40:06 +0800 Subject: [PATCH 1/5] :memo: Improve User Guide (#15767) https://github.com/siyuan-note/siyuan/issues/14430 --- .../20210808180303-xaduj2o/20200924100950-9op5xi1.sy | 2 +- .../20210808180321-hbvl5c2/20200813004551-gm0pbn1.sy | 2 +- .../20211226121203-rjjngpz/20211226122549-jktxego.sy | 2 +- .../20240530101000-g3ugxml/20240530101000-xsbxokr.sy | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/guide/20210808180117-6v0mkxr/20200923234011-ieuun1p/20210808180303-xaduj2o/20200924100950-9op5xi1.sy b/app/guide/20210808180117-6v0mkxr/20200923234011-ieuun1p/20210808180303-xaduj2o/20200924100950-9op5xi1.sy index ce64a50b1..7f525b5ec 100644 --- a/app/guide/20210808180117-6v0mkxr/20200923234011-ieuun1p/20210808180303-xaduj2o/20200924100950-9op5xi1.sy +++ b/app/guide/20210808180117-6v0mkxr/20200923234011-ieuun1p/20210808180303-xaduj2o/20200924100950-9op5xi1.sy @@ -3820,7 +3820,7 @@ "Children": [ { "Type": "NodeText", - "Data": "In the code block, only select the content of the code block" + "Data": "Double press to select all loaded content blocks in the document; in the code block, only select the content of the code block" } ] } diff --git a/app/guide/20210808180117-czj9bvb/20200812220555-lj3enxa/20210808180321-hbvl5c2/20200813004551-gm0pbn1.sy b/app/guide/20210808180117-czj9bvb/20200812220555-lj3enxa/20210808180321-hbvl5c2/20200813004551-gm0pbn1.sy index 63fe7e186..be3f8b283 100644 --- a/app/guide/20210808180117-czj9bvb/20200812220555-lj3enxa/20210808180321-hbvl5c2/20200813004551-gm0pbn1.sy +++ b/app/guide/20210808180117-czj9bvb/20200812220555-lj3enxa/20210808180321-hbvl5c2/20200813004551-gm0pbn1.sy @@ -3818,7 +3818,7 @@ "Children": [ { "Type": "NodeText", - "Data": "代码块中使用时仅选中代码块中的内容" + "Data": "连续按下两次以选中文档中所有已加载的内容块;代码块中使用时仅选中代码块中的内容" } ] } diff --git a/app/guide/20211226090932-5lcq56f/20211226115423-d5z1joq/20211226121203-rjjngpz/20211226122549-jktxego.sy b/app/guide/20211226090932-5lcq56f/20211226115423-d5z1joq/20211226121203-rjjngpz/20211226122549-jktxego.sy index 1d6cd5f08..40b9d2edc 100644 --- a/app/guide/20211226090932-5lcq56f/20211226115423-d5z1joq/20211226121203-rjjngpz/20211226122549-jktxego.sy +++ b/app/guide/20211226090932-5lcq56f/20211226115423-d5z1joq/20211226121203-rjjngpz/20211226122549-jktxego.sy @@ -3808,7 +3808,7 @@ "Children": [ { "Type": "NodeText", - "Data": "代碼塊中使用時僅選中代碼塊中的內容" + "Data": "連續按下兩次以選中文檔中所有已加載的內容塊;代碼塊中使用時僅選中代碼塊中的內容" } ] } diff --git a/app/guide/20240530133126-axarxgx/20240530101000-4qitucx/20240530101000-g3ugxml/20240530101000-xsbxokr.sy b/app/guide/20240530133126-axarxgx/20240530101000-4qitucx/20240530101000-g3ugxml/20240530101000-xsbxokr.sy index 4a344e8c4..8f9dd23bd 100644 --- a/app/guide/20240530133126-axarxgx/20240530101000-4qitucx/20240530101000-g3ugxml/20240530101000-xsbxokr.sy +++ b/app/guide/20240530133126-axarxgx/20240530101000-4qitucx/20240530101000-g3ugxml/20240530101000-xsbxokr.sy @@ -3775,7 +3775,7 @@ "Children": [ { "Type": "NodeText", - "Data": "コードブロックではコードのみが選択されます" + "Data": "文書内のすべてのロード済みコンテンツブロックを選択するにはダブルプレスしてください;コードブロックではコードのみが選択されます" } ] } From cd8c3a41e603da010870ba7421ba950e96d90a30 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Thu, 4 Sep 2025 12:03:19 +0800 Subject: [PATCH 2/5] :art: Clean code --- kernel/model/attribute_view_render.go | 8 -------- 1 file changed, 8 deletions(-) diff --git a/kernel/model/attribute_view_render.go b/kernel/model/attribute_view_render.go index 12c56621b..3eeb766bd 100644 --- a/kernel/model/attribute_view_render.go +++ b/kernel/model/attribute_view_render.go @@ -110,15 +110,7 @@ func renderAttributeViewGroups(viewable av.Viewable, attrView *av.AttributeView, // 如果存在分组的话渲染分组视图 - fixDev := false for _, groupView := range view.Groups { - if (nil == groupView.GroupVal || nil == groupView.GroupKey) && !fixDev { - // TODO 分组上线后删除,预计 2025 年 9 月后可以删除 - regenAttrViewGroups(attrView) - av.SaveAttributeView(attrView) - fixDev = true - } - switch groupView.GetGroupValue() { case groupValueDefault: groupView.Name = fmt.Sprintf(Conf.language(264), groupKey.Name) From 2b85cb1b6ccd25ef18fec57b3fbcaa6e62e91904 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Thu, 4 Sep 2025 16:14:38 +0800 Subject: [PATCH 3/5] :art: Improve database performance https://github.com/siyuan-note/siyuan/issues/15764 --- kernel/av/av.go | 4 +++- kernel/sql/av.go | 9 ++++----- kernel/sql/av_gallery.go | 9 +++++++-- kernel/sql/av_table.go | 9 +++++++-- 4 files changed, 21 insertions(+), 10 deletions(-) diff --git a/kernel/av/av.go b/kernel/av/av.go index 6047ab917..21874e1ac 100644 --- a/kernel/av/av.go +++ b/kernel/av/av.go @@ -42,6 +42,8 @@ type AttributeView struct { KeyIDs []string `json:"keyIDs"` // 属性视图属性键 ID,用于排序 ViewID string `json:"viewID"` // 当前视图 ID Views []*View `json:"views"` // 视图 + + RenderedViewables map[string]Viewable `json:"-"` // 已经渲染好的视图 } // KeyValues 描述了属性视图属性键值列表的结构。 @@ -428,7 +430,7 @@ func ParseAttributeView(avID string) (ret *AttributeView, err error) { return } - ret = &AttributeView{} + ret = &AttributeView{RenderedViewables: map[string]Viewable{}} if err = gulu.JSON.UnmarshalJSON(data, ret); err != nil { if strings.Contains(err.Error(), ".relation.contents of type av.Value") { mapAv := map[string]interface{}{} diff --git a/kernel/sql/av.go b/kernel/sql/av.go index 782882123..bb348bc02 100644 --- a/kernel/sql/av.go +++ b/kernel/sql/av.go @@ -74,11 +74,12 @@ func RenderView(attrView *av.AttributeView, view *av.View, query string) (ret av renderedAttrViews := map[string]*av.AttributeView{} renderedAttrViews[attrView.ID] = attrView ret = renderView(attrView, view, query, &depth, renderedAttrViews) + + attrView.RenderedViewables[ret.GetID()] = ret return } -func renderView(attrView *av.AttributeView, view *av.View, query string, - depth *int, cachedAttrViews map[string]*av.AttributeView) (ret av.Viewable) { +func renderView(attrView *av.AttributeView, view *av.View, query string, depth *int, cachedAttrViews map[string]*av.AttributeView) (ret av.Viewable) { if 7 < *depth { return } @@ -334,9 +335,7 @@ func fillAttributeViewBaseValue(baseValue *av.BaseValue, fieldID, itemID string, } } -func fillAttributeViewAutoGeneratedValues(attrView *av.AttributeView, collection av.Collection, ials map[string]map[string]string, - depth *int, cachedAttrViews map[string]*av.AttributeView) { - +func fillAttributeViewAutoGeneratedValues(attrView *av.AttributeView, collection av.Collection, ials map[string]map[string]string, depth *int, cachedAttrViews map[string]*av.AttributeView) { // 先渲染主键、创建时间、更新时间 for _, item := range collection.GetItems() { diff --git a/kernel/sql/av_gallery.go b/kernel/sql/av_gallery.go index f7d1deffd..5fd4550c5 100644 --- a/kernel/sql/av_gallery.go +++ b/kernel/sql/av_gallery.go @@ -18,8 +18,13 @@ import ( "github.com/siyuan-note/siyuan/kernel/util" ) -func RenderAttributeViewGallery(attrView *av.AttributeView, view *av.View, query string, - depth *int, cachedAttrViews map[string]*av.AttributeView) (ret *av.Gallery) { +func RenderAttributeViewGallery(attrView *av.AttributeView, view *av.View, query string, depth *int, cachedAttrViews map[string]*av.AttributeView) (ret *av.Gallery) { + viewable := attrView.RenderedViewables[view.ID] + if nil != viewable { + ret = viewable.(*av.Gallery) + return + } + ret = &av.Gallery{ BaseInstance: av.NewViewBaseInstance(view), CoverFrom: view.Gallery.CoverFrom, diff --git a/kernel/sql/av_table.go b/kernel/sql/av_table.go index db665e310..545b7bbcb 100644 --- a/kernel/sql/av_table.go +++ b/kernel/sql/av_table.go @@ -22,8 +22,13 @@ import ( "github.com/siyuan-note/siyuan/kernel/util" ) -func RenderAttributeViewTable(attrView *av.AttributeView, view *av.View, query string, - depth *int, cachedAttrViews map[string]*av.AttributeView) (ret *av.Table) { +func RenderAttributeViewTable(attrView *av.AttributeView, view *av.View, query string, depth *int, cachedAttrViews map[string]*av.AttributeView) (ret *av.Table) { + viewable := attrView.RenderedViewables[view.ID] + if nil != viewable { + ret = viewable.(*av.Table) + return + } + ret = &av.Table{ BaseInstance: av.NewViewBaseInstance(view), Columns: []*av.TableColumn{}, From e1bb9874be3652740b742cf9fcb943051059dcd2 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Thu, 4 Sep 2025 16:15:03 +0800 Subject: [PATCH 4/5] :art: Clean code --- kernel/sql/av.go | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/kernel/sql/av.go b/kernel/sql/av.go index bb348bc02..c108099d8 100644 --- a/kernel/sql/av.go +++ b/kernel/sql/av.go @@ -629,23 +629,6 @@ func fillAttributeViewKeyValues(attrView *av.AttributeView, collection av.Collec } } -func mergeKeyValues(kv1, kv2 []*av.KeyValues) (ret []*av.KeyValues) { - ret = kv2 - for _, k1 := range kv1 { - found := false - for _, k2 := range kv2 { - if k1.Key.ID == k2.Key.ID { - found = true - break - } - } - if !found { - ret = append(ret, k1) - } - } - return -} - func FillAttributeViewNilValue(value *av.Value, typ av.KeyType) { value.Type = typ switch typ { From 74826fc0cea60b1c6b3e16e3f957aec6ec89a94c Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Thu, 4 Sep 2025 16:17:39 +0800 Subject: [PATCH 5/5] :art: Improve database performance https://github.com/siyuan-note/siyuan/issues/15764 --- kernel/sql/av.go | 1 + 1 file changed, 1 insertion(+) diff --git a/kernel/sql/av.go b/kernel/sql/av.go index c108099d8..7d8e7b873 100644 --- a/kernel/sql/av.go +++ b/kernel/sql/av.go @@ -76,6 +76,7 @@ func RenderView(attrView *av.AttributeView, view *av.View, query string) (ret av ret = renderView(attrView, view, query, &depth, renderedAttrViews) attrView.RenderedViewables[ret.GetID()] = ret + renderedAttrViews[attrView.ID] = attrView return }