mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-12-16 22:50:13 +01:00
🎨 Database gallery view https://github.com/siyuan-note/siyuan/issues/10414
This commit is contained in:
parent
a79125c236
commit
7dcca464dd
3 changed files with 80 additions and 34 deletions
|
|
@ -554,7 +554,7 @@ func (av *AttributeView) GetBlockKey() (ret *Key) {
|
|||
return
|
||||
}
|
||||
|
||||
func (av *AttributeView) ShallowClone() (ret *AttributeView) {
|
||||
func (av *AttributeView) Clone() (ret *AttributeView) {
|
||||
ret = &AttributeView{}
|
||||
data, err := gulu.JSON.MarshalJSON(av)
|
||||
if err != nil {
|
||||
|
|
|
|||
|
|
@ -1742,48 +1742,94 @@ func (tx *Transaction) doDuplicateAttrViewView(operation *Operation) (ret *TxErr
|
|||
return
|
||||
}
|
||||
|
||||
view := av.NewTableView()
|
||||
var view *av.View
|
||||
switch masterView.LayoutType {
|
||||
case av.LayoutTypeTable:
|
||||
view = av.NewTableView()
|
||||
case av.LayoutTypeGallery:
|
||||
view = av.NewGalleryView()
|
||||
}
|
||||
|
||||
view.ID = operation.ID
|
||||
attrView.Views = append(attrView.Views, view)
|
||||
attrView.ViewID = view.ID
|
||||
|
||||
view.Icon = masterView.Icon
|
||||
view.Name = util.GetDuplicateName(masterView.Name)
|
||||
view.LayoutType = masterView.LayoutType
|
||||
view.HideAttrViewName = masterView.HideAttrViewName
|
||||
view.Desc = masterView.Desc
|
||||
view.LayoutType = masterView.LayoutType
|
||||
|
||||
for _, col := range masterView.Table.Columns {
|
||||
view.Table.Columns = append(view.Table.Columns, &av.ViewTableColumn{
|
||||
ID: col.ID,
|
||||
Wrap: col.Wrap,
|
||||
Hidden: col.Hidden,
|
||||
Pin: col.Pin,
|
||||
Width: col.Width,
|
||||
Desc: col.Desc,
|
||||
Calc: col.Calc,
|
||||
})
|
||||
switch masterView.LayoutType {
|
||||
case av.LayoutTypeTable:
|
||||
for _, col := range masterView.Table.Columns {
|
||||
view.Table.Columns = append(view.Table.Columns, &av.ViewTableColumn{
|
||||
ID: col.ID,
|
||||
Wrap: col.Wrap,
|
||||
Hidden: col.Hidden,
|
||||
Pin: col.Pin,
|
||||
Width: col.Width,
|
||||
Desc: col.Desc,
|
||||
Calc: col.Calc,
|
||||
})
|
||||
}
|
||||
|
||||
for _, filter := range masterView.Table.Filters {
|
||||
view.Table.Filters = append(view.Table.Filters, &av.ViewFilter{
|
||||
Column: filter.Column,
|
||||
Operator: filter.Operator,
|
||||
Value: filter.Value,
|
||||
RelativeDate: filter.RelativeDate,
|
||||
RelativeDate2: filter.RelativeDate2,
|
||||
})
|
||||
}
|
||||
|
||||
for _, s := range masterView.Table.Sorts {
|
||||
view.Table.Sorts = append(view.Table.Sorts, &av.ViewSort{
|
||||
Column: s.Column,
|
||||
Order: s.Order,
|
||||
})
|
||||
}
|
||||
|
||||
view.Table.PageSize = masterView.Table.PageSize
|
||||
view.Table.RowIDs = masterView.Table.RowIDs
|
||||
case av.LayoutTypeGallery:
|
||||
for _, field := range masterView.Gallery.CardFields {
|
||||
view.Gallery.CardFields = append(view.Gallery.CardFields, &av.ViewGalleryCardField{
|
||||
ID: field.ID,
|
||||
Hidden: field.Hidden,
|
||||
Desc: field.Desc,
|
||||
})
|
||||
}
|
||||
|
||||
for _, filter := range masterView.Gallery.Filters {
|
||||
view.Gallery.Filters = append(view.Gallery.Filters, &av.ViewFilter{
|
||||
Column: filter.Column,
|
||||
Operator: filter.Operator,
|
||||
Value: filter.Value,
|
||||
RelativeDate: filter.RelativeDate,
|
||||
RelativeDate2: filter.RelativeDate2,
|
||||
})
|
||||
}
|
||||
|
||||
for _, s := range masterView.Gallery.Sorts {
|
||||
view.Gallery.Sorts = append(view.Gallery.Sorts, &av.ViewSort{
|
||||
Column: s.Column,
|
||||
Order: s.Order,
|
||||
})
|
||||
}
|
||||
|
||||
view.Gallery.PageSize = masterView.Gallery.PageSize
|
||||
view.Gallery.CardIDs = masterView.Gallery.CardIDs
|
||||
|
||||
view.Gallery.CoverFrom = masterView.Gallery.CoverFrom
|
||||
view.Gallery.CoverFromAssetKeyID = masterView.Gallery.CoverFromAssetKeyID
|
||||
view.Gallery.CardSize = masterView.Gallery.CardSize
|
||||
view.Gallery.FitImage = masterView.Gallery.FitImage
|
||||
view.Gallery.ShowIcon = masterView.Gallery.ShowIcon
|
||||
view.Gallery.WrapField = masterView.Gallery.WrapField
|
||||
}
|
||||
|
||||
for _, filter := range masterView.Table.Filters {
|
||||
view.Table.Filters = append(view.Table.Filters, &av.ViewFilter{
|
||||
Column: filter.Column,
|
||||
Operator: filter.Operator,
|
||||
Value: filter.Value,
|
||||
RelativeDate: filter.RelativeDate,
|
||||
RelativeDate2: filter.RelativeDate2,
|
||||
})
|
||||
}
|
||||
|
||||
for _, s := range masterView.Table.Sorts {
|
||||
view.Table.Sorts = append(view.Table.Sorts, &av.ViewSort{
|
||||
Column: s.Column,
|
||||
Order: s.Order,
|
||||
})
|
||||
}
|
||||
|
||||
view.Table.PageSize = masterView.Table.PageSize
|
||||
view.Table.RowIDs = masterView.Table.RowIDs
|
||||
|
||||
if err = av.SaveAttributeView(attrView); err != nil {
|
||||
logging.LogErrorf("save attribute view [%s] failed: %s", avID, err)
|
||||
return &TxErr{code: TxErrWriteAttributeView, msg: err.Error(), id: avID}
|
||||
|
|
|
|||
|
|
@ -388,7 +388,7 @@ func RenderTemplate(p, id string, preview bool) (tree *parse.Tree, dom string, e
|
|||
if nil != parseErr {
|
||||
logging.LogErrorf("parse attribute view [%s] failed: %s", n.AttributeViewID, parseErr)
|
||||
} else {
|
||||
cloned := attrView.ShallowClone()
|
||||
cloned := attrView.Clone()
|
||||
if nil == cloned {
|
||||
logging.LogErrorf("clone attribute view [%s] failed", n.AttributeViewID)
|
||||
return ast.WalkContinue
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue