mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-12-23 18:10:12 +01:00
🎨 Supports multiple views for the database https://github.com/siyuan-note/siyuan/issues/9751
This commit is contained in:
parent
d7d4f4d0de
commit
4f50a8b06d
5 changed files with 52 additions and 29 deletions
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue