diff --git a/kernel/api/av.go b/kernel/api/av.go index 229efe737..2f4a773fa 100644 --- a/kernel/api/av.go +++ b/kernel/api/av.go @@ -116,7 +116,12 @@ func renderAttributeView(c *gin.Context) { } id := arg["id"].(string) - view, attrView, err := model.RenderAttributeView(id) + viewIDArg := arg["viewID"] + var viewID string + if nil != viewIDArg { + viewID = viewIDArg.(string) + } + view, attrView, err := model.RenderAttributeView(id, viewID) if nil != err { ret.Code = -1 ret.Msg = err.Error() diff --git a/kernel/av/av.go b/kernel/av/av.go index 4796e50f5..18e24ed1c 100644 --- a/kernel/av/av.go +++ b/kernel/av/av.go @@ -59,7 +59,7 @@ func ShallowCloneAttributeView(av *AttributeView) (ret *AttributeView) { } ret.ID = ast.NewNodeID() - view, err := ret.GetView() + view, err := ret.GetCurrentView() if nil == err { view.ID = ast.NewNodeID() ret.ViewID = view.ID @@ -678,7 +678,17 @@ func SaveAttributeView(av *AttributeView) (err error) { return } -func (av *AttributeView) GetView() (ret *View, err error) { +func (av *AttributeView) GetView(viewID string) (ret *View) { + for _, v := range av.Views { + if v.ID == viewID { + ret = v + return + } + } + return +} + +func (av *AttributeView) GetCurrentView() (ret *View, err error) { for _, v := range av.Views { if v.ID == av.ViewID { ret = v diff --git a/kernel/model/attribute_view.go b/kernel/model/attribute_view.go index f4e9cc727..16a2084b0 100644 --- a/kernel/model/attribute_view.go +++ b/kernel/model/attribute_view.go @@ -134,7 +134,7 @@ func GetBlockAttributeViewKeys(blockID string) (ret []*BlockAttributeViewKeys) { } // Attribute Panel - Database sort attributes by view column order https://github.com/siyuan-note/siyuan/issues/9319 - view, _ := attrView.GetView() + view, _ := attrView.GetCurrentView() if nil != view { sorts := map[string]int{} for i, col := range view.Table.Columns { @@ -224,7 +224,7 @@ func RenderRepoSnapshotAttributeView(indexID, avID string) (viewable av.Viewable } } - viewable, err = renderAttributeView(attrView) + viewable, err = renderAttributeView(attrView, "") return } @@ -267,11 +267,11 @@ func RenderHistoryAttributeView(avID, created string) (viewable av.Viewable, att } } - viewable, err = renderAttributeView(attrView) + viewable, err = renderAttributeView(attrView, "") return } -func RenderAttributeView(avID string) (viewable av.Viewable, attrView *av.AttributeView, err error) { +func RenderAttributeView(avID, viewID string) (viewable av.Viewable, attrView *av.AttributeView, err error) { waitForSyncingStorages() if avJSONPath := av.GetAttributeViewDataPath(avID); !filelock.IsExist(avJSONPath) { @@ -288,11 +288,11 @@ func RenderAttributeView(avID string) (viewable av.Viewable, attrView *av.Attrib return } - viewable, err = renderAttributeView(attrView) + viewable, err = renderAttributeView(attrView, viewID) return } -func renderAttributeView(attrView *av.AttributeView) (viewable av.Viewable, err error) { +func renderAttributeView(attrView *av.AttributeView, viewID string) (viewable av.Viewable, err error) { if 1 > len(attrView.Views) { view := av.NewView() attrView.Views = append(attrView.Views, view) @@ -304,14 +304,22 @@ func renderAttributeView(attrView *av.AttributeView) (viewable av.Viewable, err } var view *av.View - if "" != attrView.ViewID { - for _, v := range attrView.Views { - if v.ID == attrView.ViewID { - view = v - break + if "" != viewID { + view = attrView.GetView(viewID) + if nil != view && viewID != attrView.ViewID { + attrView.ViewID = viewID + if err = av.SaveAttributeView(attrView); nil != err { + logging.LogErrorf("save attribute view [%s] failed: %s", attrView.ID, err) + return } } } else { + if "" != attrView.ViewID { + view, _ = attrView.GetCurrentView() + } + } + + if nil == view { view = attrView.Views[0] } @@ -639,7 +647,7 @@ func setAttributeViewName(operation *Operation) (err error) { return } - view, err := attrView.GetView() + view, err := attrView.GetCurrentView() if nil != err { return } @@ -665,7 +673,7 @@ func setAttributeViewFilters(operation *Operation) (err error) { return } - view, err := attrView.GetView() + view, err := attrView.GetCurrentView() if nil != err { return } @@ -711,7 +719,7 @@ func setAttributeViewSorts(operation *Operation) (err error) { return } - view, err := attrView.GetView() + view, err := attrView.GetCurrentView() if nil != err { return } @@ -747,7 +755,7 @@ func setAttributeViewColumnCalc(operation *Operation) (err error) { return } - view, err := attrView.GetView() + view, err := attrView.GetCurrentView() if nil != err { return } @@ -818,7 +826,7 @@ func addAttributeViewBlock(blockID string, operation *Operation, tree *parse.Tre return } - view, err := attrView.GetView() + view, err := attrView.GetCurrentView() if nil != err { return } @@ -888,7 +896,7 @@ func (tx *Transaction) removeAttributeViewBlock(operation *Operation) (err error return } - view, err := attrView.GetView() + view, err := attrView.GetCurrentView() if nil != err { return } @@ -961,7 +969,7 @@ func setAttributeViewColWidth(operation *Operation) (err error) { return } - view, err := attrView.GetView() + view, err := attrView.GetCurrentView() if nil != err { return } @@ -994,7 +1002,7 @@ func setAttributeViewColWrap(operation *Operation) (err error) { return } - view, err := attrView.GetView() + view, err := attrView.GetCurrentView() if nil != err { return } @@ -1027,7 +1035,7 @@ func setAttributeViewColHidden(operation *Operation) (err error) { return } - view, err := attrView.GetView() + view, err := attrView.GetCurrentView() if nil != err { return } @@ -1060,7 +1068,7 @@ func setAttributeViewColPin(operation *Operation) (err error) { return } - view, err := attrView.GetView() + view, err := attrView.GetCurrentView() if nil != err { return } @@ -1118,7 +1126,7 @@ func sortAttributeViewRow(operation *Operation) (err error) { return } - view, err := attrView.GetView() + view, err := attrView.GetCurrentView() if nil != err { return } @@ -1166,7 +1174,7 @@ func sortAttributeViewColumn(operation *Operation) (err error) { return } - view, err := attrView.GetView() + view, err := attrView.GetCurrentView() if nil != err { return } @@ -1214,7 +1222,7 @@ func addAttributeViewColumn(operation *Operation) (err error) { return } - view, err := attrView.GetView() + view, err := attrView.GetCurrentView() if nil != err { return } diff --git a/kernel/model/export.go b/kernel/model/export.go index d84895ce9..59c72af42 100644 --- a/kernel/model/export.go +++ b/kernel/model/export.go @@ -1910,7 +1910,7 @@ func exportTree(tree *parse.Tree, wysiwyg, expandKaTexMacros, keepFold bool, return ast.WalkContinue } - view, err := attrView.GetView() + view, err := attrView.GetCurrentView() if nil != err { logging.LogErrorf("get attribute view [%s] failed: %s", avID, err) return ast.WalkContinue diff --git a/kernel/model/template.go b/kernel/model/template.go index daa58f365..41a05fed6 100644 --- a/kernel/model/template.go +++ b/kernel/model/template.go @@ -315,7 +315,7 @@ func renderTemplate(p, id string, preview bool) (string, error) { } } else { // 预览时使用简单表格渲染 - view, getErr := attrView.GetView() + view, getErr := attrView.GetCurrentView() if nil != getErr { logging.LogErrorf("get attribute view [%s] failed: %s", n.AttributeViewID, getErr) return ast.WalkContinue