mirror of
https://github.com/siyuan-note/siyuan.git
synced 2026-01-09 02:08:50 +01:00
🎨 Automatically fill in the filter result value when adding rows in the database table view https://github.com/siyuan-note/siyuan/issues/9905
This commit is contained in:
parent
e10d403cce
commit
fcd134ad2d
3 changed files with 33 additions and 16 deletions
|
|
@ -727,7 +727,7 @@ func (table *Table) FilterRows() {
|
|||
rows := []*TableRow{}
|
||||
for _, row := range table.Rows {
|
||||
block := row.GetBlockValue()
|
||||
if !block.IsInitialized && nil != block.Block && "" == block.Block.Content && block.IsDetached {
|
||||
if block.NotAffectFilter() {
|
||||
rows = append(rows, row)
|
||||
continue
|
||||
}
|
||||
|
|
|
|||
|
|
@ -54,6 +54,10 @@ type Value struct {
|
|||
Rollup *ValueRollup `json:"rollup,omitempty"`
|
||||
}
|
||||
|
||||
func (value *Value) NotAffectFilter() bool {
|
||||
return !value.IsInitialized && nil != value.Block && "" == value.Block.Content && value.IsDetached
|
||||
}
|
||||
|
||||
func (value *Value) String() string {
|
||||
switch value.Type {
|
||||
case KeyTypeBlock:
|
||||
|
|
|
|||
|
|
@ -1114,22 +1114,24 @@ func addAttributeViewBlock(blockID string, operation *Operation, tree *parse.Tre
|
|||
viewable.SortRows()
|
||||
|
||||
if 0 < len(viewable.Rows) {
|
||||
row := viewable.Rows[len(viewable.Rows)-1]
|
||||
for _, filter := range view.Table.Filters {
|
||||
for _, cell := range row.Cells {
|
||||
if nil != cell.Value && cell.Value.KeyID == filter.Column {
|
||||
if av.KeyTypeBlock == cell.ValueType {
|
||||
blockValue.Block.Content = cell.Value.Block.Content
|
||||
continue
|
||||
}
|
||||
row := GetLastSortRow(viewable.Rows)
|
||||
if nil != row {
|
||||
for _, filter := range view.Table.Filters {
|
||||
for _, cell := range row.Cells {
|
||||
if nil != cell.Value && cell.Value.KeyID == filter.Column {
|
||||
if av.KeyTypeBlock == cell.ValueType {
|
||||
blockValue.Block.Content = cell.Value.Block.Content
|
||||
continue
|
||||
}
|
||||
|
||||
newValue := cell.Value.Clone()
|
||||
newValue.ID = ast.NewNodeID()
|
||||
newValue.BlockID = blockID
|
||||
newValue.IsDetached = operation.IsDetached
|
||||
newValue.IsInitialized = false
|
||||
values, _ := attrView.GetKeyValues(filter.Column)
|
||||
values.Values = append(values.Values, newValue)
|
||||
newValue := cell.Value.Clone()
|
||||
newValue.ID = ast.NewNodeID()
|
||||
newValue.BlockID = blockID
|
||||
newValue.IsDetached = operation.IsDetached
|
||||
newValue.IsInitialized = false
|
||||
values, _ := attrView.GetKeyValues(filter.Column)
|
||||
values.Values = append(values.Values, newValue)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1178,6 +1180,17 @@ func addAttributeViewBlock(blockID string, operation *Operation, tree *parse.Tre
|
|||
return
|
||||
}
|
||||
|
||||
func GetLastSortRow(rows []*av.TableRow) *av.TableRow {
|
||||
for i := len(rows) - 1; i >= 0; i-- {
|
||||
row := rows[i]
|
||||
block := row.GetBlockValue()
|
||||
if !block.NotAffectFilter() {
|
||||
return row
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (tx *Transaction) doRemoveAttrViewBlock(operation *Operation) (ret *TxErr) {
|
||||
err := tx.removeAttributeViewBlock(operation)
|
||||
if nil != err {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue