mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-12-17 15:10:12 +01:00
🎨 Database supports setting display field icons https://github.com/siyuan-note/siyuan/issues/15089
This commit is contained in:
parent
921cddd2fa
commit
1991e2b76f
6 changed files with 60 additions and 51 deletions
|
|
@ -223,10 +223,10 @@ func NewTableViewWithBlockKey(blockKeyID string) (view *View, blockKey, selectKe
|
||||||
Table: NewLayoutTable(),
|
Table: NewLayoutTable(),
|
||||||
}
|
}
|
||||||
blockKey = NewKey(blockKeyID, GetAttributeViewI18n("key"), "", KeyTypeBlock)
|
blockKey = NewKey(blockKeyID, GetAttributeViewI18n("key"), "", KeyTypeBlock)
|
||||||
view.Table.Columns = []*ViewTableColumn{{ID: blockKeyID}}
|
view.Table.Columns = []*ViewTableColumn{{BaseField: &BaseField{ID: blockKeyID}}}
|
||||||
|
|
||||||
selectKey = NewKey(ast.NewNodeID(), GetAttributeViewI18n("select"), "", KeyTypeSelect)
|
selectKey = NewKey(ast.NewNodeID(), GetAttributeViewI18n("select"), "", KeyTypeSelect)
|
||||||
view.Table.Columns = append(view.Table.Columns, &ViewTableColumn{ID: selectKey.ID})
|
view.Table.Columns = append(view.Table.Columns, &ViewTableColumn{BaseField: &BaseField{ID: selectKey.ID}})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,14 @@ type BaseLayout struct {
|
||||||
PageSize int `json:"pageSize,omitempty"` // 每页条目数
|
PageSize int `json:"pageSize,omitempty"` // 每页条目数
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// BaseField 描述了字段的基础结构。
|
||||||
|
type BaseField struct {
|
||||||
|
ID string `json:"id"` // 字段 ID
|
||||||
|
Wrap bool `json:"wrap"` // 是否换行
|
||||||
|
Hidden bool `json:"hidden"` // 是否隐藏
|
||||||
|
Desc string `json:"desc,omitempty"` // 字段描述
|
||||||
|
}
|
||||||
|
|
||||||
// BaseValue 描述了字段值的基础结构。
|
// BaseValue 描述了字段值的基础结构。
|
||||||
type BaseValue struct {
|
type BaseValue struct {
|
||||||
ID string `json:"id"` // 字段值 ID
|
ID string `json:"id"` // 字段值 ID
|
||||||
|
|
|
||||||
|
|
@ -82,11 +82,7 @@ const (
|
||||||
|
|
||||||
// ViewGalleryCardField 描述了画廊卡片字段的结构。
|
// ViewGalleryCardField 描述了画廊卡片字段的结构。
|
||||||
type ViewGalleryCardField struct {
|
type ViewGalleryCardField struct {
|
||||||
ID string `json:"id"` // 字段 ID
|
*BaseField
|
||||||
|
|
||||||
Wrap bool `json:"wrap"` // 是否换行
|
|
||||||
Hidden bool `json:"hidden"` // 是否隐藏
|
|
||||||
Desc string `json:"desc,omitempty"` // 字段描述
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Gallery 描述了画廊实例的结构。
|
// Gallery 描述了画廊实例的结构。
|
||||||
|
|
|
||||||
|
|
@ -44,14 +44,11 @@ func NewLayoutTable() *LayoutTable {
|
||||||
|
|
||||||
// ViewTableColumn 描述了表格列的结构。
|
// ViewTableColumn 描述了表格列的结构。
|
||||||
type ViewTableColumn struct {
|
type ViewTableColumn struct {
|
||||||
ID string `json:"id"` // 列 ID
|
*BaseField
|
||||||
|
|
||||||
Wrap bool `json:"wrap"` // 是否换行
|
Pin bool `json:"pin"` // 是否固定
|
||||||
Hidden bool `json:"hidden"` // 是否隐藏
|
Width string `json:"width"` // 列宽度
|
||||||
Pin bool `json:"pin"` // 是否固定
|
Calc *ColumnCalc `json:"calc,omitempty"` // 计算
|
||||||
Width string `json:"width"` // 列宽度
|
|
||||||
Desc string `json:"desc,omitempty"` // 列描述
|
|
||||||
Calc *ColumnCalc `json:"calc,omitempty"` // 计算
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Table 描述了表格实例的结构。
|
// Table 描述了表格实例的结构。
|
||||||
|
|
|
||||||
|
|
@ -120,7 +120,7 @@ func ChangeAttrViewLayout(blockID, avID string, layout av.LayoutType) (err error
|
||||||
switch view.LayoutType {
|
switch view.LayoutType {
|
||||||
case av.LayoutTypeGallery:
|
case av.LayoutTypeGallery:
|
||||||
for _, field := range view.Gallery.CardFields {
|
for _, field := range view.Gallery.CardFields {
|
||||||
view.Table.Columns = append(view.Table.Columns, &av.ViewTableColumn{ID: field.ID})
|
view.Table.Columns = append(view.Table.Columns, &av.ViewTableColumn{BaseField: &av.BaseField{ID: field.ID}})
|
||||||
}
|
}
|
||||||
for _, cardID := range view.Gallery.CardIDs {
|
for _, cardID := range view.Gallery.CardIDs {
|
||||||
view.Table.RowIDs = append(view.Table.RowIDs, cardID)
|
view.Table.RowIDs = append(view.Table.RowIDs, cardID)
|
||||||
|
|
@ -139,7 +139,7 @@ func ChangeAttrViewLayout(blockID, avID string, layout av.LayoutType) (err error
|
||||||
switch view.LayoutType {
|
switch view.LayoutType {
|
||||||
case av.LayoutTypeTable:
|
case av.LayoutTypeTable:
|
||||||
for _, col := range view.Table.Columns {
|
for _, col := range view.Table.Columns {
|
||||||
view.Gallery.CardFields = append(view.Gallery.CardFields, &av.ViewGalleryCardField{ID: col.ID})
|
view.Gallery.CardFields = append(view.Gallery.CardFields, &av.ViewGalleryCardField{BaseField: &av.BaseField{ID: col.ID}})
|
||||||
}
|
}
|
||||||
for _, rowID := range view.Table.RowIDs {
|
for _, rowID := range view.Table.RowIDs {
|
||||||
view.Gallery.CardIDs = append(view.Gallery.CardIDs, rowID)
|
view.Gallery.CardIDs = append(view.Gallery.CardIDs, rowID)
|
||||||
|
|
@ -1636,9 +1636,9 @@ func updateAttributeViewColRelation(operation *Operation) (err error) {
|
||||||
for _, v := range destAv.Views {
|
for _, v := range destAv.Views {
|
||||||
switch v.LayoutType {
|
switch v.LayoutType {
|
||||||
case av.LayoutTypeTable:
|
case av.LayoutTypeTable:
|
||||||
v.Table.Columns = append(v.Table.Columns, &av.ViewTableColumn{ID: operation.BackRelationKeyID})
|
v.Table.Columns = append(v.Table.Columns, &av.ViewTableColumn{BaseField: &av.BaseField{ID: operation.BackRelationKeyID}})
|
||||||
case av.LayoutTypeGallery:
|
case av.LayoutTypeGallery:
|
||||||
v.Gallery.CardFields = append(v.Gallery.CardFields, &av.ViewGalleryCardField{ID: operation.BackRelationKeyID})
|
v.Gallery.CardFields = append(v.Gallery.CardFields, &av.ViewGalleryCardField{BaseField: &av.BaseField{ID: operation.BackRelationKeyID}})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1896,13 +1896,15 @@ func (tx *Transaction) doDuplicateAttrViewView(operation *Operation) (ret *TxErr
|
||||||
case av.LayoutTypeTable:
|
case av.LayoutTypeTable:
|
||||||
for _, col := range masterView.Table.Columns {
|
for _, col := range masterView.Table.Columns {
|
||||||
view.Table.Columns = append(view.Table.Columns, &av.ViewTableColumn{
|
view.Table.Columns = append(view.Table.Columns, &av.ViewTableColumn{
|
||||||
ID: col.ID,
|
BaseField: &av.BaseField{
|
||||||
Wrap: col.Wrap,
|
ID: col.ID,
|
||||||
Hidden: col.Hidden,
|
Wrap: col.Wrap,
|
||||||
Pin: col.Pin,
|
Hidden: col.Hidden,
|
||||||
Width: col.Width,
|
Desc: col.Desc,
|
||||||
Desc: col.Desc,
|
},
|
||||||
Calc: col.Calc,
|
Pin: col.Pin,
|
||||||
|
Width: col.Width,
|
||||||
|
Calc: col.Calc,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1912,10 +1914,12 @@ func (tx *Transaction) doDuplicateAttrViewView(operation *Operation) (ret *TxErr
|
||||||
case av.LayoutTypeGallery:
|
case av.LayoutTypeGallery:
|
||||||
for _, field := range masterView.Gallery.CardFields {
|
for _, field := range masterView.Gallery.CardFields {
|
||||||
view.Gallery.CardFields = append(view.Gallery.CardFields, &av.ViewGalleryCardField{
|
view.Gallery.CardFields = append(view.Gallery.CardFields, &av.ViewGalleryCardField{
|
||||||
ID: field.ID,
|
BaseField: &av.BaseField{
|
||||||
Wrap: field.Wrap,
|
ID: field.ID,
|
||||||
Hidden: field.Hidden,
|
Wrap: field.Wrap,
|
||||||
Desc: field.Desc,
|
Hidden: field.Hidden,
|
||||||
|
Desc: field.Desc,
|
||||||
|
},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1972,14 +1976,14 @@ func addAttrViewView(avID, viewID, blockID string, layout av.LayoutType) (err er
|
||||||
switch firstView.LayoutType {
|
switch firstView.LayoutType {
|
||||||
case av.LayoutTypeTable:
|
case av.LayoutTypeTable:
|
||||||
for _, col := range firstView.Table.Columns {
|
for _, col := range firstView.Table.Columns {
|
||||||
view.Table.Columns = append(view.Table.Columns, &av.ViewTableColumn{ID: col.ID})
|
view.Table.Columns = append(view.Table.Columns, &av.ViewTableColumn{BaseField: &av.BaseField{ID: col.ID}})
|
||||||
}
|
}
|
||||||
for _, rowID := range firstView.Table.RowIDs {
|
for _, rowID := range firstView.Table.RowIDs {
|
||||||
view.Table.RowIDs = append(view.Table.RowIDs, rowID)
|
view.Table.RowIDs = append(view.Table.RowIDs, rowID)
|
||||||
}
|
}
|
||||||
case av.LayoutTypeGallery:
|
case av.LayoutTypeGallery:
|
||||||
for _, field := range firstView.Gallery.CardFields {
|
for _, field := range firstView.Gallery.CardFields {
|
||||||
view.Table.Columns = append(view.Table.Columns, &av.ViewTableColumn{ID: field.ID})
|
view.Table.Columns = append(view.Table.Columns, &av.ViewTableColumn{BaseField: &av.BaseField{ID: field.ID}})
|
||||||
}
|
}
|
||||||
for _, cardID := range firstView.Gallery.CardIDs {
|
for _, cardID := range firstView.Gallery.CardIDs {
|
||||||
view.Table.RowIDs = append(view.Table.RowIDs, cardID)
|
view.Table.RowIDs = append(view.Table.RowIDs, cardID)
|
||||||
|
|
@ -1990,14 +1994,14 @@ func addAttrViewView(avID, viewID, blockID string, layout av.LayoutType) (err er
|
||||||
switch firstView.LayoutType {
|
switch firstView.LayoutType {
|
||||||
case av.LayoutTypeTable:
|
case av.LayoutTypeTable:
|
||||||
for _, col := range firstView.Table.Columns {
|
for _, col := range firstView.Table.Columns {
|
||||||
view.Gallery.CardFields = append(view.Gallery.CardFields, &av.ViewGalleryCardField{ID: col.ID})
|
view.Gallery.CardFields = append(view.Gallery.CardFields, &av.ViewGalleryCardField{BaseField: &av.BaseField{ID: col.ID}})
|
||||||
}
|
}
|
||||||
for _, rowID := range firstView.Table.RowIDs {
|
for _, rowID := range firstView.Table.RowIDs {
|
||||||
view.Gallery.CardIDs = append(view.Gallery.CardIDs, rowID)
|
view.Gallery.CardIDs = append(view.Gallery.CardIDs, rowID)
|
||||||
}
|
}
|
||||||
case av.LayoutTypeGallery:
|
case av.LayoutTypeGallery:
|
||||||
for _, field := range firstView.Gallery.CardFields {
|
for _, field := range firstView.Gallery.CardFields {
|
||||||
view.Gallery.CardFields = append(view.Gallery.CardFields, &av.ViewGalleryCardField{ID: field.ID})
|
view.Gallery.CardFields = append(view.Gallery.CardFields, &av.ViewGalleryCardField{BaseField: &av.BaseField{ID: field.ID}})
|
||||||
}
|
}
|
||||||
for _, cardID := range firstView.Gallery.CardIDs {
|
for _, cardID := range firstView.Gallery.CardIDs {
|
||||||
view.Gallery.CardIDs = append(view.Gallery.CardIDs, cardID)
|
view.Gallery.CardIDs = append(view.Gallery.CardIDs, cardID)
|
||||||
|
|
@ -2743,12 +2747,14 @@ func duplicateAttributeViewKey(operation *Operation) (err error) {
|
||||||
if column.ID == key.ID {
|
if column.ID == key.ID {
|
||||||
view.Table.Columns = append(view.Table.Columns[:i+1], append([]*av.ViewTableColumn{
|
view.Table.Columns = append(view.Table.Columns[:i+1], append([]*av.ViewTableColumn{
|
||||||
{
|
{
|
||||||
ID: copyKey.ID,
|
BaseField: &av.BaseField{
|
||||||
Wrap: column.Wrap,
|
ID: copyKey.ID,
|
||||||
Hidden: column.Hidden,
|
Wrap: column.Wrap,
|
||||||
Pin: column.Pin,
|
Hidden: column.Hidden,
|
||||||
Width: column.Width,
|
Desc: column.Desc,
|
||||||
Desc: column.Desc,
|
},
|
||||||
|
Pin: column.Pin,
|
||||||
|
Width: column.Width,
|
||||||
},
|
},
|
||||||
}, view.Table.Columns[i+1:]...)...)
|
}, view.Table.Columns[i+1:]...)...)
|
||||||
break
|
break
|
||||||
|
|
@ -2759,10 +2765,12 @@ func duplicateAttributeViewKey(operation *Operation) (err error) {
|
||||||
if field.ID == key.ID {
|
if field.ID == key.ID {
|
||||||
view.Gallery.CardFields = append(view.Gallery.CardFields[:i+1], append([]*av.ViewGalleryCardField{
|
view.Gallery.CardFields = append(view.Gallery.CardFields[:i+1], append([]*av.ViewGalleryCardField{
|
||||||
{
|
{
|
||||||
ID: copyKey.ID,
|
BaseField: &av.BaseField{
|
||||||
Wrap: field.Wrap,
|
ID: copyKey.ID,
|
||||||
Hidden: field.Hidden,
|
Wrap: field.Wrap,
|
||||||
Desc: field.Desc,
|
Hidden: field.Hidden,
|
||||||
|
Desc: field.Desc,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}, view.Gallery.CardFields[i+1:]...)...)
|
}, view.Gallery.CardFields[i+1:]...)...)
|
||||||
break
|
break
|
||||||
|
|
@ -3245,39 +3253,39 @@ func AddAttributeViewKey(avID, keyID, keyName, keyType, keyIcon, previousKeyID s
|
||||||
if "" == previousKeyID {
|
if "" == previousKeyID {
|
||||||
if av.LayoutTypeGallery == currentView.LayoutType {
|
if av.LayoutTypeGallery == currentView.LayoutType {
|
||||||
// 如果当前视图是画廊视图则添加到最后
|
// 如果当前视图是画廊视图则添加到最后
|
||||||
view.Table.Columns = append(view.Table.Columns, &av.ViewTableColumn{ID: key.ID})
|
view.Table.Columns = append(view.Table.Columns, &av.ViewTableColumn{BaseField: &av.BaseField{ID: key.ID}})
|
||||||
} else {
|
} else {
|
||||||
view.Table.Columns = append([]*av.ViewTableColumn{{ID: key.ID}}, view.Table.Columns...)
|
view.Table.Columns = append([]*av.ViewTableColumn{{BaseField: &av.BaseField{ID: key.ID}}}, view.Table.Columns...)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
added := false
|
added := false
|
||||||
for i, column := range view.Table.Columns {
|
for i, column := range view.Table.Columns {
|
||||||
if column.ID == previousKeyID {
|
if column.ID == previousKeyID {
|
||||||
view.Table.Columns = append(view.Table.Columns[:i+1], append([]*av.ViewTableColumn{{ID: key.ID}}, view.Table.Columns[i+1:]...)...)
|
view.Table.Columns = append(view.Table.Columns[:i+1], append([]*av.ViewTableColumn{{BaseField: &av.BaseField{ID: key.ID}}}, view.Table.Columns[i+1:]...)...)
|
||||||
added = true
|
added = true
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if !added {
|
if !added {
|
||||||
view.Table.Columns = append(view.Table.Columns, &av.ViewTableColumn{ID: key.ID})
|
view.Table.Columns = append(view.Table.Columns, &av.ViewTableColumn{BaseField: &av.BaseField{ID: key.ID}})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if nil != view.Gallery {
|
if nil != view.Gallery {
|
||||||
if "" == previousKeyID {
|
if "" == previousKeyID {
|
||||||
view.Gallery.CardFields = append(view.Gallery.CardFields, &av.ViewGalleryCardField{ID: key.ID})
|
view.Gallery.CardFields = append(view.Gallery.CardFields, &av.ViewGalleryCardField{BaseField: &av.BaseField{ID: key.ID}})
|
||||||
} else {
|
} else {
|
||||||
added := false
|
added := false
|
||||||
for i, field := range view.Gallery.CardFields {
|
for i, field := range view.Gallery.CardFields {
|
||||||
if field.ID == previousKeyID {
|
if field.ID == previousKeyID {
|
||||||
view.Gallery.CardFields = append(view.Gallery.CardFields[:i+1], append([]*av.ViewGalleryCardField{{ID: key.ID}}, view.Gallery.CardFields[i+1:]...)...)
|
view.Gallery.CardFields = append(view.Gallery.CardFields[:i+1], append([]*av.ViewGalleryCardField{{BaseField: &av.BaseField{ID: key.ID}}}, view.Gallery.CardFields[i+1:]...)...)
|
||||||
added = true
|
added = true
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if !added {
|
if !added {
|
||||||
view.Gallery.CardFields = append(view.Gallery.CardFields, &av.ViewGalleryCardField{ID: key.ID})
|
view.Gallery.CardFields = append(view.Gallery.CardFields, &av.ViewGalleryCardField{BaseField: &av.BaseField{ID: key.ID}})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3403,7 +3403,7 @@ func getAttrViewTable(attrView *av.AttributeView, view *av.View, query string) (
|
||||||
case av.LayoutTypeGallery:
|
case av.LayoutTypeGallery:
|
||||||
view.Table = av.NewLayoutTable()
|
view.Table = av.NewLayoutTable()
|
||||||
for _, field := range view.Gallery.CardFields {
|
for _, field := range view.Gallery.CardFields {
|
||||||
view.Table.Columns = append(view.Table.Columns, &av.ViewTableColumn{ID: field.ID})
|
view.Table.Columns = append(view.Table.Columns, &av.ViewTableColumn{BaseField: &av.BaseField{ID: field.ID}})
|
||||||
}
|
}
|
||||||
for _, cardID := range view.Gallery.CardIDs {
|
for _, cardID := range view.Gallery.CardIDs {
|
||||||
view.Table.RowIDs = append(view.Table.RowIDs, cardID)
|
view.Table.RowIDs = append(view.Table.RowIDs, cardID)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue