mirror of
https://github.com/siyuan-note/siyuan.git
synced 2026-01-01 22:38:49 +01:00
Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
commit
0b5f9bce98
3 changed files with 28 additions and 25 deletions
|
|
@ -35,7 +35,8 @@ func renderAttributeView(c *gin.Context) {
|
|||
}
|
||||
|
||||
id := arg["id"].(string)
|
||||
view, attrView, err := model.RenderAttributeView(id)
|
||||
nodeID := arg["nodeID"].(string)
|
||||
view, attrView, err := model.RenderAttributeView(id, nodeID)
|
||||
if nil != err {
|
||||
ret.Code = -1
|
||||
ret.Msg = err.Error()
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@ import (
|
|||
type AttributeView struct {
|
||||
Spec int `json:"spec"` // 格式版本
|
||||
ID string `json:"id"` // 属性视图 ID
|
||||
NodeID string `json:"nodeID"` // 属性视图所在节点 ID
|
||||
Name string `json:"name"` // 属性视图名称
|
||||
KeyValues []*KeyValues `json:"keyValues"` // 属性视图属性列值
|
||||
ViewID string `json:"viewID"` // 当前视图 ID
|
||||
|
|
@ -269,7 +270,7 @@ type Viewable interface {
|
|||
GetID() string
|
||||
}
|
||||
|
||||
func NewAttributeView(id string) (ret *AttributeView) {
|
||||
func NewAttributeView(id, nodeID string) (ret *AttributeView) {
|
||||
view := NewView()
|
||||
key := NewKey(ast.NewNodeID(), "Block", KeyTypeBlock)
|
||||
ret = &AttributeView{
|
||||
|
|
@ -278,36 +279,29 @@ func NewAttributeView(id string) (ret *AttributeView) {
|
|||
KeyValues: []*KeyValues{{Key: key}},
|
||||
ViewID: view.ID,
|
||||
Views: []*View{view},
|
||||
NodeID: nodeID,
|
||||
}
|
||||
view.Table.Columns = []*ViewTableColumn{{ID: key.ID}}
|
||||
return
|
||||
}
|
||||
|
||||
func ParseAttributeView(avID string) (ret *AttributeView, err error) {
|
||||
avJSONPath := getAttributeViewDataPath(avID)
|
||||
toCreate := false
|
||||
avJSONPath := GetAttributeViewDataPath(avID)
|
||||
if !gulu.File.IsExist(avJSONPath) {
|
||||
ret = NewAttributeView(avID)
|
||||
toCreate = true
|
||||
err = ErrViewNotFound
|
||||
return
|
||||
}
|
||||
|
||||
if !toCreate {
|
||||
data, readErr := filelock.ReadFile(avJSONPath)
|
||||
if nil != readErr {
|
||||
logging.LogErrorf("read attribute view [%s] failed: %s", avID, readErr)
|
||||
return
|
||||
}
|
||||
data, readErr := filelock.ReadFile(avJSONPath)
|
||||
if nil != readErr {
|
||||
logging.LogErrorf("read attribute view [%s] failed: %s", avID, readErr)
|
||||
return
|
||||
}
|
||||
|
||||
ret = &AttributeView{}
|
||||
if err = gulu.JSON.UnmarshalJSON(data, ret); nil != err {
|
||||
logging.LogErrorf("unmarshal attribute view [%s] failed: %s", avID, err)
|
||||
return
|
||||
}
|
||||
} else {
|
||||
if err = SaveAttributeView(ret); nil != err {
|
||||
logging.LogErrorf("save attribute view [%s] failed: %s", avID, err)
|
||||
return
|
||||
}
|
||||
ret = &AttributeView{}
|
||||
if err = gulu.JSON.UnmarshalJSON(data, ret); nil != err {
|
||||
logging.LogErrorf("unmarshal attribute view [%s] failed: %s", avID, err)
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
|
|
@ -319,7 +313,7 @@ func SaveAttributeView(av *AttributeView) (err error) {
|
|||
return
|
||||
}
|
||||
|
||||
avJSONPath := getAttributeViewDataPath(av.ID)
|
||||
avJSONPath := GetAttributeViewDataPath(av.ID)
|
||||
if err = filelock.WriteFile(avJSONPath, data); nil != err {
|
||||
logging.LogErrorf("save attribute view [%s] failed: %s", av.ID, err)
|
||||
return
|
||||
|
|
@ -359,7 +353,7 @@ func (av *AttributeView) GetBlockKeyValues() (ret *KeyValues) {
|
|||
return
|
||||
}
|
||||
|
||||
func getAttributeViewDataPath(avID string) (ret string) {
|
||||
func GetAttributeViewDataPath(avID string) (ret string) {
|
||||
av := filepath.Join(util.DataDir, "storage", "av")
|
||||
ret = filepath.Join(av, avID+".json")
|
||||
if !gulu.File.IsDir(av) {
|
||||
|
|
|
|||
|
|
@ -86,9 +86,17 @@ func GetBlockAttributeViewKeys(blockID string) (ret []*BlockAttributeViewKeys) {
|
|||
return
|
||||
}
|
||||
|
||||
func RenderAttributeView(avID string) (viewable av.Viewable, attrView *av.AttributeView, err error) {
|
||||
func RenderAttributeView(avID, nodeID string) (viewable av.Viewable, attrView *av.AttributeView, err error) {
|
||||
waitForSyncingStorages()
|
||||
|
||||
if avJSONPath := av.GetAttributeViewDataPath(avID); !gulu.File.IsExist(avJSONPath) {
|
||||
attrView = av.NewAttributeView(avID, nodeID)
|
||||
if err = av.SaveAttributeView(attrView); nil != err {
|
||||
logging.LogErrorf("save attribute view [%s] failed: %s", avID, err)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
attrView, err = av.ParseAttributeView(avID)
|
||||
if nil != err {
|
||||
logging.LogErrorf("parse attribute view [%s] failed: %s", avID, err)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue