mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-12-19 08:00:13 +01:00
🎨 Database gallery view https://github.com/siyuan-note/siyuan/issues/10414
This commit is contained in:
parent
e11f93e9f1
commit
d80bed7b85
3 changed files with 49 additions and 10 deletions
|
|
@ -189,7 +189,7 @@ type View struct {
|
||||||
Gallery *LayoutGallery `json:"gallery,omitempty"` // 画廊布局
|
Gallery *LayoutGallery `json:"gallery,omitempty"` // 画廊布局
|
||||||
}
|
}
|
||||||
|
|
||||||
// LayoutType 描述了视图布局的类型。
|
// LayoutType 描述了视图布局类型。
|
||||||
type LayoutType string
|
type LayoutType string
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|
@ -619,8 +619,9 @@ func getI18nName(name string) string {
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
ErrViewNotFound = errors.New("view not found")
|
ErrViewNotFound = errors.New("view not found")
|
||||||
ErrKeyNotFound = errors.New("key not found")
|
ErrKeyNotFound = errors.New("key not found")
|
||||||
|
ErrWrongLayoutType = errors.New("wrong layout type")
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|
|
||||||
|
|
@ -1559,17 +1559,54 @@ func (tx *Transaction) doAddAttrViewView(operation *Operation) (ret *TxErr) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
view := av.NewTableView()
|
var view *av.View
|
||||||
|
switch operation.Layout {
|
||||||
|
case av.LayoutTypeTable:
|
||||||
|
view = av.NewTableView()
|
||||||
|
switch firstView.LayoutType {
|
||||||
|
case av.LayoutTypeTable:
|
||||||
|
for _, col := range firstView.Table.Columns {
|
||||||
|
view.Table.Columns = append(view.Table.Columns, &av.ViewTableColumn{ID: col.ID})
|
||||||
|
}
|
||||||
|
for _, rowID := range firstView.Table.RowIDs {
|
||||||
|
view.Table.RowIDs = append(view.Table.RowIDs, rowID)
|
||||||
|
}
|
||||||
|
case av.LayoutTypeGallery:
|
||||||
|
for _, field := range firstView.Gallery.CardFields {
|
||||||
|
view.Table.Columns = append(view.Table.Columns, &av.ViewTableColumn{ID: field.ID})
|
||||||
|
}
|
||||||
|
for _, cardID := range firstView.Gallery.CardIDs {
|
||||||
|
view.Table.RowIDs = append(view.Table.RowIDs, cardID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case av.LayoutTypeGallery:
|
||||||
|
view = av.NewGalleryView()
|
||||||
|
switch firstView.LayoutType {
|
||||||
|
case av.LayoutTypeTable:
|
||||||
|
for _, col := range firstView.Table.Columns {
|
||||||
|
view.Gallery.CardFields = append(view.Gallery.CardFields, &av.ViewGalleryCardField{ID: col.ID})
|
||||||
|
}
|
||||||
|
for _, rowID := range firstView.Table.RowIDs {
|
||||||
|
view.Gallery.CardIDs = append(view.Gallery.CardIDs, rowID)
|
||||||
|
}
|
||||||
|
case av.LayoutTypeGallery:
|
||||||
|
for _, field := range firstView.Gallery.CardFields {
|
||||||
|
view.Gallery.CardFields = append(view.Gallery.CardFields, &av.ViewGalleryCardField{ID: field.ID})
|
||||||
|
}
|
||||||
|
for _, cardID := range firstView.Gallery.CardIDs {
|
||||||
|
view.Gallery.CardIDs = append(view.Gallery.CardIDs, cardID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
err = av.ErrWrongLayoutType
|
||||||
|
logging.LogErrorf("wrong layout type [%s] for attribute view [%s]", operation.Layout, avID)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
view.ID = operation.ID
|
view.ID = operation.ID
|
||||||
attrView.Views = append(attrView.Views, view)
|
attrView.Views = append(attrView.Views, view)
|
||||||
attrView.ViewID = view.ID
|
attrView.ViewID = view.ID
|
||||||
|
|
||||||
for _, col := range firstView.Table.Columns {
|
|
||||||
view.Table.Columns = append(view.Table.Columns, &av.ViewTableColumn{ID: col.ID})
|
|
||||||
}
|
|
||||||
|
|
||||||
view.Table.RowIDs = firstView.Table.RowIDs
|
|
||||||
|
|
||||||
if err = av.SaveAttributeView(attrView); err != nil {
|
if err = av.SaveAttributeView(attrView); err != nil {
|
||||||
logging.LogErrorf("save attribute view [%s] failed: %s", avID, err)
|
logging.LogErrorf("save attribute view [%s] failed: %s", avID, err)
|
||||||
return &TxErr{code: TxErrWriteAttributeView, msg: err.Error(), id: avID}
|
return &TxErr{code: TxErrWriteAttributeView, msg: err.Error(), id: avID}
|
||||||
|
|
|
||||||
|
|
@ -1482,6 +1482,7 @@ type Operation struct {
|
||||||
IsTwoWay bool `json:"isTwoWay"` // 属性视图关联列是否是双向关系
|
IsTwoWay bool `json:"isTwoWay"` // 属性视图关联列是否是双向关系
|
||||||
BackRelationKeyID string `json:"backRelationKeyID"` // 属性视图关联列回链关联列的 ID
|
BackRelationKeyID string `json:"backRelationKeyID"` // 属性视图关联列回链关联列的 ID
|
||||||
RemoveDest bool `json:"removeDest"` // 属性视图删除关联目标
|
RemoveDest bool `json:"removeDest"` // 属性视图删除关联目标
|
||||||
|
Layout av.LayoutType `json:"layout"` // 属性视图布局类型
|
||||||
}
|
}
|
||||||
|
|
||||||
type Transaction struct {
|
type Transaction struct {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue