mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-09-22 00:20:47 +02:00
✨ Database kanban view https://github.com/siyuan-note/siyuan/issues/8873
Signed-off-by: Daniel <845765@qq.com>
This commit is contained in:
parent
2d8f4a3030
commit
3211d331fa
3 changed files with 80 additions and 2 deletions
|
@ -24,6 +24,13 @@ import (
|
||||||
type LayoutKanban struct {
|
type LayoutKanban struct {
|
||||||
*BaseLayout
|
*BaseLayout
|
||||||
|
|
||||||
|
CoverFrom CoverFrom `json:"coverFrom"` // 封面来源,0:无,1:内容图,2:资源字段
|
||||||
|
CoverFromAssetKeyID string `json:"coverFromAssetKeyID,omitempty"` // 资源字段 ID,CoverFrom 为 2 时有效
|
||||||
|
CardAspectRatio CardAspectRatio `json:"cardAspectRatio"` // 卡片宽高比
|
||||||
|
CardSize CardSize `json:"cardSize"` // 卡片大小,0:小卡片,1:中卡片,2:大卡片
|
||||||
|
FitImage bool `json:"fitImage"` // 是否适应封面图片大小
|
||||||
|
DisplayFieldName bool `json:"displayFieldName"` // 是否显示字段名称
|
||||||
|
|
||||||
Fields []*ViewKanbanField `json:"fields"` // 字段
|
Fields []*ViewKanbanField `json:"fields"` // 字段
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,6 +41,9 @@ func NewLayoutKanban() *LayoutKanban {
|
||||||
ID: ast.NewNodeID(),
|
ID: ast.NewNodeID(),
|
||||||
ShowIcon: true,
|
ShowIcon: true,
|
||||||
},
|
},
|
||||||
|
CoverFrom: CoverFromContentImage,
|
||||||
|
CardAspectRatio: CardAspectRatio16_9,
|
||||||
|
CardSize: CardSizeMedium,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -667,6 +667,8 @@ func setAttrViewCardAspectRatio(operation *Operation) (err error) {
|
||||||
return
|
return
|
||||||
case av.LayoutTypeGallery:
|
case av.LayoutTypeGallery:
|
||||||
view.Gallery.CardAspectRatio = av.CardAspectRatio(operation.Data.(float64))
|
view.Gallery.CardAspectRatio = av.CardAspectRatio(operation.Data.(float64))
|
||||||
|
case av.LayoutTypeKanban:
|
||||||
|
view.Kanban.CardAspectRatio = av.CardAspectRatio(operation.Data.(float64))
|
||||||
}
|
}
|
||||||
|
|
||||||
err = av.SaveAttributeView(attrView)
|
err = av.SaveAttributeView(attrView)
|
||||||
|
@ -707,7 +709,7 @@ func ChangeAttrViewLayout(blockID, avID string, layout av.LayoutType) (err error
|
||||||
|
|
||||||
switch newLayout {
|
switch newLayout {
|
||||||
case av.LayoutTypeTable:
|
case av.LayoutTypeTable:
|
||||||
if view.Name == av.GetAttributeViewI18n("gallery") {
|
if view.Name == av.GetAttributeViewI18n("gallery") || view.Name == av.GetAttributeViewI18n("kanban") {
|
||||||
view.Name = av.GetAttributeViewI18n("table")
|
view.Name = av.GetAttributeViewI18n("table")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -721,9 +723,13 @@ func ChangeAttrViewLayout(blockID, avID string, layout av.LayoutType) (err error
|
||||||
for _, field := range view.Gallery.CardFields {
|
for _, field := range view.Gallery.CardFields {
|
||||||
view.Table.Columns = append(view.Table.Columns, &av.ViewTableColumn{BaseField: &av.BaseField{ID: field.ID}})
|
view.Table.Columns = append(view.Table.Columns, &av.ViewTableColumn{BaseField: &av.BaseField{ID: field.ID}})
|
||||||
}
|
}
|
||||||
|
case av.LayoutTypeKanban:
|
||||||
|
for _, field := range view.Kanban.Fields {
|
||||||
|
view.Table.Columns = append(view.Table.Columns, &av.ViewTableColumn{BaseField: &av.BaseField{ID: field.ID}})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
case av.LayoutTypeGallery:
|
case av.LayoutTypeGallery:
|
||||||
if view.Name == av.GetAttributeViewI18n("table") {
|
if view.Name == av.GetAttributeViewI18n("table") || view.Name == av.GetAttributeViewI18n("kanban") {
|
||||||
view.Name = av.GetAttributeViewI18n("gallery")
|
view.Name = av.GetAttributeViewI18n("gallery")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -737,6 +743,30 @@ func ChangeAttrViewLayout(blockID, avID string, layout av.LayoutType) (err error
|
||||||
for _, col := range view.Table.Columns {
|
for _, col := range view.Table.Columns {
|
||||||
view.Gallery.CardFields = append(view.Gallery.CardFields, &av.ViewGalleryCardField{BaseField: &av.BaseField{ID: col.ID}})
|
view.Gallery.CardFields = append(view.Gallery.CardFields, &av.ViewGalleryCardField{BaseField: &av.BaseField{ID: col.ID}})
|
||||||
}
|
}
|
||||||
|
case av.LayoutTypeKanban:
|
||||||
|
for _, field := range view.Kanban.Fields {
|
||||||
|
view.Gallery.CardFields = append(view.Gallery.CardFields, &av.ViewGalleryCardField{BaseField: &av.BaseField{ID: field.ID}})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case av.LayoutTypeKanban:
|
||||||
|
if view.Name == av.GetAttributeViewI18n("table") || view.Name == av.GetAttributeViewI18n("gallery") {
|
||||||
|
view.Name = av.GetAttributeViewI18n("kanban")
|
||||||
|
}
|
||||||
|
|
||||||
|
if nil != view.Kanban {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
view.Kanban = av.NewLayoutKanban()
|
||||||
|
switch view.LayoutType {
|
||||||
|
case av.LayoutTypeTable:
|
||||||
|
for _, col := range view.Table.Columns {
|
||||||
|
view.Kanban.Fields = append(view.Kanban.Fields, &av.ViewKanbanField{BaseField: &av.BaseField{ID: col.ID}})
|
||||||
|
}
|
||||||
|
case av.LayoutTypeGallery:
|
||||||
|
for _, field := range view.Gallery.CardFields {
|
||||||
|
view.Kanban.Fields = append(view.Kanban.Fields, &av.ViewKanbanField{BaseField: &av.BaseField{ID: field.ID}})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -876,6 +906,8 @@ func setAttrViewFitImage(operation *Operation) (err error) {
|
||||||
return
|
return
|
||||||
case av.LayoutTypeGallery:
|
case av.LayoutTypeGallery:
|
||||||
view.Gallery.FitImage = operation.Data.(bool)
|
view.Gallery.FitImage = operation.Data.(bool)
|
||||||
|
case av.LayoutTypeKanban:
|
||||||
|
view.Kanban.FitImage = operation.Data.(bool)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = av.SaveAttributeView(attrView)
|
err = av.SaveAttributeView(attrView)
|
||||||
|
@ -906,6 +938,8 @@ func setAttrViewDisplayFieldName(operation *Operation) (err error) {
|
||||||
return
|
return
|
||||||
case av.LayoutTypeGallery:
|
case av.LayoutTypeGallery:
|
||||||
view.Gallery.DisplayFieldName = operation.Data.(bool)
|
view.Gallery.DisplayFieldName = operation.Data.(bool)
|
||||||
|
case av.LayoutTypeKanban:
|
||||||
|
view.Kanban.DisplayFieldName = operation.Data.(bool)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = av.SaveAttributeView(attrView)
|
err = av.SaveAttributeView(attrView)
|
||||||
|
@ -936,6 +970,8 @@ func setAttrViewCardSize(operation *Operation) (err error) {
|
||||||
return
|
return
|
||||||
case av.LayoutTypeGallery:
|
case av.LayoutTypeGallery:
|
||||||
view.Gallery.CardSize = av.CardSize(operation.Data.(float64))
|
view.Gallery.CardSize = av.CardSize(operation.Data.(float64))
|
||||||
|
case av.LayoutTypeKanban:
|
||||||
|
view.Kanban.CardSize = av.CardSize(operation.Data.(float64))
|
||||||
}
|
}
|
||||||
|
|
||||||
err = av.SaveAttributeView(attrView)
|
err = av.SaveAttributeView(attrView)
|
||||||
|
@ -996,6 +1032,8 @@ func setAttrViewCoverFrom(operation *Operation) (err error) {
|
||||||
return
|
return
|
||||||
case av.LayoutTypeGallery:
|
case av.LayoutTypeGallery:
|
||||||
view.Gallery.CoverFrom = av.CoverFrom(operation.Data.(float64))
|
view.Gallery.CoverFrom = av.CoverFrom(operation.Data.(float64))
|
||||||
|
case av.LayoutTypeKanban:
|
||||||
|
view.Kanban.CoverFrom = av.CoverFrom(operation.Data.(float64))
|
||||||
}
|
}
|
||||||
|
|
||||||
err = av.SaveAttributeView(attrView)
|
err = av.SaveAttributeView(attrView)
|
||||||
|
@ -2596,6 +2634,25 @@ func (tx *Transaction) doDuplicateAttrViewView(operation *Operation) (ret *TxErr
|
||||||
view.Gallery.DisplayFieldName = masterView.Gallery.DisplayFieldName
|
view.Gallery.DisplayFieldName = masterView.Gallery.DisplayFieldName
|
||||||
view.Gallery.ShowIcon = masterView.Gallery.ShowIcon
|
view.Gallery.ShowIcon = masterView.Gallery.ShowIcon
|
||||||
view.Gallery.WrapField = masterView.Gallery.WrapField
|
view.Gallery.WrapField = masterView.Gallery.WrapField
|
||||||
|
case av.LayoutTypeKanban:
|
||||||
|
for _, field := range masterView.Kanban.Fields {
|
||||||
|
view.Kanban.Fields = append(view.Kanban.Fields, &av.ViewKanbanField{
|
||||||
|
BaseField: &av.BaseField{
|
||||||
|
ID: field.ID,
|
||||||
|
Wrap: field.Wrap,
|
||||||
|
Hidden: field.Hidden,
|
||||||
|
Desc: field.Desc,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
view.Kanban.CoverFrom = masterView.Kanban.CoverFrom
|
||||||
|
view.Kanban.CoverFromAssetKeyID = masterView.Kanban.CoverFromAssetKeyID
|
||||||
|
view.Kanban.CardSize = masterView.Kanban.CardSize
|
||||||
|
view.Kanban.FitImage = masterView.Kanban.FitImage
|
||||||
|
view.Kanban.DisplayFieldName = masterView.Kanban.DisplayFieldName
|
||||||
|
view.Kanban.ShowIcon = masterView.Kanban.ShowIcon
|
||||||
|
view.Kanban.WrapField = masterView.Kanban.WrapField
|
||||||
}
|
}
|
||||||
|
|
||||||
view.ItemIDs = masterView.ItemIDs
|
view.ItemIDs = masterView.ItemIDs
|
||||||
|
|
|
@ -53,6 +53,17 @@ func RenderGroupView(attrView *av.AttributeView, view, groupView *av.View, query
|
||||||
groupView.Gallery.CardSize = view.Gallery.CardSize
|
groupView.Gallery.CardSize = view.Gallery.CardSize
|
||||||
groupView.Gallery.FitImage = view.Gallery.FitImage
|
groupView.Gallery.FitImage = view.Gallery.FitImage
|
||||||
groupView.Gallery.DisplayFieldName = view.Gallery.DisplayFieldName
|
groupView.Gallery.DisplayFieldName = view.Gallery.DisplayFieldName
|
||||||
|
case av.LayoutTypeKanban:
|
||||||
|
err = copier.CopyWithOption(&groupView.Kanban.Fields, &view.Kanban.Fields, copier.Option{DeepCopy: true})
|
||||||
|
groupView.Kanban.ShowIcon = view.Kanban.ShowIcon
|
||||||
|
groupView.Kanban.WrapField = view.Kanban.WrapField
|
||||||
|
|
||||||
|
groupView.Kanban.CoverFrom = view.Kanban.CoverFrom
|
||||||
|
groupView.Kanban.CoverFromAssetKeyID = view.Kanban.CoverFromAssetKeyID
|
||||||
|
groupView.Kanban.CardAspectRatio = view.Kanban.CardAspectRatio
|
||||||
|
groupView.Kanban.CardSize = view.Kanban.CardSize
|
||||||
|
groupView.Kanban.FitImage = view.Kanban.FitImage
|
||||||
|
groupView.Kanban.DisplayFieldName = view.Kanban.DisplayFieldName
|
||||||
}
|
}
|
||||||
if nil != err {
|
if nil != err {
|
||||||
logging.LogErrorf("copy view fields [%s] to group [%s] failed: %s", view.ID, groupView.ID, err)
|
logging.LogErrorf("copy view fields [%s] to group [%s] failed: %s", view.ID, groupView.ID, err)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue