mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-12-20 16:40:13 +01:00
🎨 Database gallery view https://github.com/siyuan-note/siyuan/issues/10414
This commit is contained in:
parent
09051c43b3
commit
373f9f9f0f
1 changed files with 129 additions and 6 deletions
|
|
@ -102,6 +102,10 @@ func AppendAttributeViewDetachedBlocksWithValues(avID string, blocksValues [][]*
|
||||||
for _, addingBlockID := range blockIDs {
|
for _, addingBlockID := range blockIDs {
|
||||||
v.Table.RowIDs = append(v.Table.RowIDs, addingBlockID)
|
v.Table.RowIDs = append(v.Table.RowIDs, addingBlockID)
|
||||||
}
|
}
|
||||||
|
case av.LayoutTypeGallery:
|
||||||
|
for _, addingBlockID := range blockIDs {
|
||||||
|
v.Gallery.CardIDs = append(v.Gallery.CardIDs, addingBlockID)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -250,7 +254,7 @@ func GetAttributeViewFilterSort(avID, blockID string) (filters []*av.ViewFilter,
|
||||||
view, err := getAttrViewViewByBlockID(attrView, blockID)
|
view, err := getAttrViewViewByBlockID(attrView, blockID)
|
||||||
if nil == view {
|
if nil == view {
|
||||||
view, err = attrView.GetCurrentView(attrView.ViewID)
|
view, err = attrView.GetCurrentView(attrView.ViewID)
|
||||||
if err != nil {
|
if nil == view || err != nil {
|
||||||
logging.LogErrorf("get current view failed: %s", err)
|
logging.LogErrorf("get current view failed: %s", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
@ -262,6 +266,9 @@ func GetAttributeViewFilterSort(avID, blockID string) (filters []*av.ViewFilter,
|
||||||
case av.LayoutTypeTable:
|
case av.LayoutTypeTable:
|
||||||
filters = view.Table.Filters
|
filters = view.Table.Filters
|
||||||
sorts = view.Table.Sorts
|
sorts = view.Table.Sorts
|
||||||
|
case av.LayoutTypeGallery:
|
||||||
|
filters = view.Gallery.Filters
|
||||||
|
sorts = view.Gallery.Sorts
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
@ -1072,6 +1079,18 @@ func unbindAttributeViewBlock(operation *Operation, tx *Transaction) (err error)
|
||||||
if !replacedRowID {
|
if !replacedRowID {
|
||||||
v.Table.RowIDs = append(v.Table.RowIDs, operation.NextID)
|
v.Table.RowIDs = append(v.Table.RowIDs, operation.NextID)
|
||||||
}
|
}
|
||||||
|
case av.LayoutTypeGallery:
|
||||||
|
for i, cardID := range v.Gallery.CardIDs {
|
||||||
|
if cardID == operation.ID {
|
||||||
|
v.Gallery.CardIDs[i] = operation.NextID
|
||||||
|
replacedRowID = true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if !replacedRowID {
|
||||||
|
v.Gallery.CardIDs = append(v.Gallery.CardIDs, operation.NextID)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1312,6 +1331,8 @@ func updateAttributeViewColRelation(operation *Operation) (err error) {
|
||||||
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{ID: operation.BackRelationKeyID})
|
||||||
|
case av.LayoutTypeGallery:
|
||||||
|
v.Gallery.CardFields = append(v.Gallery.CardFields, &av.ViewGalleryCardField{ID: operation.BackRelationKeyID})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1849,6 +1870,10 @@ func setAttributeViewFilters(operation *Operation) (err error) {
|
||||||
if err = gulu.JSON.UnmarshalJSON(data, &view.Table.Filters); err != nil {
|
if err = gulu.JSON.UnmarshalJSON(data, &view.Table.Filters); err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
case av.LayoutTypeGallery:
|
||||||
|
if err = gulu.JSON.UnmarshalJSON(data, &view.Gallery.Filters); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
err = av.SaveAttributeView(attrView)
|
err = av.SaveAttributeView(attrView)
|
||||||
|
|
@ -1885,6 +1910,10 @@ func setAttributeViewSorts(operation *Operation) (err error) {
|
||||||
if err = gulu.JSON.UnmarshalJSON(data, &view.Table.Sorts); err != nil {
|
if err = gulu.JSON.UnmarshalJSON(data, &view.Table.Sorts); err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
case av.LayoutTypeGallery:
|
||||||
|
if err = gulu.JSON.UnmarshalJSON(data, &view.Gallery.Sorts); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
err = av.SaveAttributeView(attrView)
|
err = av.SaveAttributeView(attrView)
|
||||||
|
|
@ -1913,6 +1942,8 @@ func setAttributeViewPageSize(operation *Operation) (err error) {
|
||||||
switch view.LayoutType {
|
switch view.LayoutType {
|
||||||
case av.LayoutTypeTable:
|
case av.LayoutTypeTable:
|
||||||
view.Table.PageSize = int(operation.Data.(float64))
|
view.Table.PageSize = int(operation.Data.(float64))
|
||||||
|
case av.LayoutTypeGallery:
|
||||||
|
view.Gallery.PageSize = int(operation.Data.(float64))
|
||||||
}
|
}
|
||||||
|
|
||||||
err = av.SaveAttributeView(attrView)
|
err = av.SaveAttributeView(attrView)
|
||||||
|
|
@ -1957,6 +1988,8 @@ func setAttributeViewColumnCalc(operation *Operation) (err error) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
case av.LayoutTypeGallery:
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
err = av.SaveAttributeView(attrView)
|
err = av.SaveAttributeView(attrView)
|
||||||
|
|
@ -2375,6 +2408,18 @@ func duplicateAttributeViewKey(operation *Operation) (err error) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
case av.LayoutTypeGallery:
|
||||||
|
for i, field := range view.Gallery.CardFields {
|
||||||
|
if field.ID == key.ID {
|
||||||
|
view.Gallery.CardFields = append(view.Gallery.CardFields[:i+1], append([]*av.ViewGalleryCardField{
|
||||||
|
{
|
||||||
|
ID: copyKey.ID,
|
||||||
|
Desc: field.Desc,
|
||||||
|
},
|
||||||
|
}, view.Gallery.CardFields[i+1:]...)...)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2409,6 +2454,8 @@ func setAttributeViewColWidth(operation *Operation) (err error) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
case av.LayoutTypeGallery:
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
err = av.SaveAttributeView(attrView)
|
err = av.SaveAttributeView(attrView)
|
||||||
|
|
@ -2442,6 +2489,8 @@ func setAttributeViewColWrap(operation *Operation) (err error) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
case av.LayoutTypeGallery:
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
err = av.SaveAttributeView(attrView)
|
err = av.SaveAttributeView(attrView)
|
||||||
|
|
@ -2475,6 +2524,13 @@ func setAttributeViewColHidden(operation *Operation) (err error) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
case av.LayoutTypeGallery:
|
||||||
|
for _, field := range view.Gallery.CardFields {
|
||||||
|
if field.ID == operation.ID {
|
||||||
|
field.Hidden = operation.Data.(bool)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
err = av.SaveAttributeView(attrView)
|
err = av.SaveAttributeView(attrView)
|
||||||
|
|
@ -2508,6 +2564,8 @@ func setAttributeViewColPin(operation *Operation) (err error) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
case av.LayoutTypeGallery:
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
err = av.SaveAttributeView(attrView)
|
err = av.SaveAttributeView(attrView)
|
||||||
|
|
@ -2613,6 +2671,14 @@ func sortAttributeViewRow(operation *Operation) (err error) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
view.Table.RowIDs = util.InsertElem(view.Table.RowIDs, previousIndex, rowID)
|
view.Table.RowIDs = util.InsertElem(view.Table.RowIDs, previousIndex, rowID)
|
||||||
|
case av.LayoutTypeGallery:
|
||||||
|
view.Gallery.CardIDs = append(view.Gallery.CardIDs[:idx], view.Gallery.CardIDs[idx+1:]...)
|
||||||
|
for i, c := range view.Gallery.CardIDs {
|
||||||
|
if c == operation.PreviousID {
|
||||||
|
previousIndex = i + 1
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
err = av.SaveAttributeView(attrView)
|
err = av.SaveAttributeView(attrView)
|
||||||
|
|
@ -2643,14 +2709,14 @@ func SortAttributeViewViewKey(avID, blockID, keyID, previousKeyID string) (err e
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var curIndex, previousIndex int
|
||||||
switch view.LayoutType {
|
switch view.LayoutType {
|
||||||
case av.LayoutTypeTable:
|
case av.LayoutTypeTable:
|
||||||
var col *av.ViewTableColumn
|
var col *av.ViewTableColumn
|
||||||
var index, previousIndex int
|
|
||||||
for i, column := range view.Table.Columns {
|
for i, column := range view.Table.Columns {
|
||||||
if column.ID == keyID {
|
if column.ID == keyID {
|
||||||
col = column
|
col = column
|
||||||
index = i
|
curIndex = i
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -2658,7 +2724,7 @@ func SortAttributeViewViewKey(avID, blockID, keyID, previousKeyID string) (err e
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
view.Table.Columns = append(view.Table.Columns[:index], view.Table.Columns[index+1:]...)
|
view.Table.Columns = append(view.Table.Columns[:curIndex], view.Table.Columns[curIndex+1:]...)
|
||||||
for i, column := range view.Table.Columns {
|
for i, column := range view.Table.Columns {
|
||||||
if column.ID == previousKeyID {
|
if column.ID == previousKeyID {
|
||||||
previousIndex = i + 1
|
previousIndex = i + 1
|
||||||
|
|
@ -2666,6 +2732,26 @@ func SortAttributeViewViewKey(avID, blockID, keyID, previousKeyID string) (err e
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
view.Table.Columns = util.InsertElem(view.Table.Columns, previousIndex, col)
|
view.Table.Columns = util.InsertElem(view.Table.Columns, previousIndex, col)
|
||||||
|
case av.LayoutTypeGallery:
|
||||||
|
var field *av.ViewGalleryCardField
|
||||||
|
for i, cardField := range view.Gallery.CardFields {
|
||||||
|
if cardField.ID == keyID {
|
||||||
|
field = cardField
|
||||||
|
curIndex = i
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if nil == field {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
view.Gallery.CardFields = append(view.Gallery.CardFields[:curIndex], view.Gallery.CardFields[curIndex+1:]...)
|
||||||
|
for i, cardField := range view.Gallery.CardFields {
|
||||||
|
if cardField.ID == previousKeyID {
|
||||||
|
previousIndex = i + 1
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
err = av.SaveAttributeView(attrView)
|
err = av.SaveAttributeView(attrView)
|
||||||
|
|
@ -2980,6 +3066,13 @@ func RemoveAttributeViewKey(avID, keyID string, removeRelationDest bool) (err er
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
case av.LayoutTypeGallery:
|
||||||
|
for i, field := range view.Gallery.CardFields {
|
||||||
|
if field.ID == removedKey.Relation.BackKeyID {
|
||||||
|
view.Gallery.CardFields = append(view.Gallery.CardFields[:i], view.Gallery.CardFields[i+1:]...)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -3015,6 +3108,13 @@ func RemoveAttributeViewKey(avID, keyID string, removeRelationDest bool) (err er
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
case av.LayoutTypeGallery:
|
||||||
|
for i, field := range view.Gallery.CardFields {
|
||||||
|
if field.ID == keyID {
|
||||||
|
view.Gallery.CardFields = append(view.Gallery.CardFields[:i], view.Gallery.CardFields[i+1:]...)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -3119,6 +3219,14 @@ func replaceAttributeViewBlock(operation *Operation, tx *Transaction) (err error
|
||||||
if !replacedRowID {
|
if !replacedRowID {
|
||||||
v.Table.RowIDs = append(v.Table.RowIDs, operation.NextID)
|
v.Table.RowIDs = append(v.Table.RowIDs, operation.NextID)
|
||||||
}
|
}
|
||||||
|
case av.LayoutTypeGallery:
|
||||||
|
for i, cardID := range v.Gallery.CardIDs {
|
||||||
|
if cardID == operation.PreviousID {
|
||||||
|
v.Gallery.CardIDs[i] = operation.NextID
|
||||||
|
replacedRowID = true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -3698,8 +3806,23 @@ func updateAttributeViewColumnOption(operation *Operation) (err error) {
|
||||||
for _, view := range attrView.Views {
|
for _, view := range attrView.Views {
|
||||||
switch view.LayoutType {
|
switch view.LayoutType {
|
||||||
case av.LayoutTypeTable:
|
case av.LayoutTypeTable:
|
||||||
table := view.Table
|
for _, filter := range view.Table.Filters {
|
||||||
for _, filter := range table.Filters {
|
if filter.Column != key.ID {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if nil != filter.Value && (av.KeyTypeSelect == filter.Value.Type || av.KeyTypeMSelect == filter.Value.Type) {
|
||||||
|
for i, opt := range filter.Value.MSelect {
|
||||||
|
if oldName == opt.Content {
|
||||||
|
filter.Value.MSelect[i].Content = newName
|
||||||
|
filter.Value.MSelect[i].Color = newColor
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case av.LayoutTypeGallery:
|
||||||
|
for _, filter := range view.Gallery.Filters {
|
||||||
if filter.Column != key.ID {
|
if filter.Column != key.ID {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue