|
@@ -589,7 +589,7 @@ func renderAttributeViewTable(attrView *av.AttributeView, view *av.View) (ret *a
|
|
keyValues := rows[row.ID]
|
|
keyValues := rows[row.ID]
|
|
ial := map[string]string{}
|
|
ial := map[string]string{}
|
|
block := row.GetBlockValue()
|
|
block := row.GetBlockValue()
|
|
- if !block.IsDetached {
|
|
|
|
|
|
+ if nil != block && !block.IsDetached {
|
|
ial = GetBlockAttrsWithoutWaitWriting(row.ID)
|
|
ial = GetBlockAttrsWithoutWaitWriting(row.ID)
|
|
}
|
|
}
|
|
content := renderTemplateCol(ial, cell.Value.Template.Content, keyValues)
|
|
content := renderTemplateCol(ial, cell.Value.Template.Content, keyValues)
|
|
@@ -606,12 +606,11 @@ func renderAttributeViewTable(attrView *av.AttributeView, view *av.View) (ret *a
|
|
case av.KeyTypeUpdated: // 渲染更新时间
|
|
case av.KeyTypeUpdated: // 渲染更新时间
|
|
ial := map[string]string{}
|
|
ial := map[string]string{}
|
|
block := row.GetBlockValue()
|
|
block := row.GetBlockValue()
|
|
- if !block.IsDetached {
|
|
|
|
|
|
+ if nil != block && !block.IsDetached {
|
|
ial = GetBlockAttrsWithoutWaitWriting(row.ID)
|
|
ial = GetBlockAttrsWithoutWaitWriting(row.ID)
|
|
}
|
|
}
|
|
updatedStr := ial["updated"]
|
|
updatedStr := ial["updated"]
|
|
- if "" == updatedStr {
|
|
|
|
- block := row.GetBlockValue()
|
|
|
|
|
|
+ if "" == updatedStr && nil != block {
|
|
cell.Value.Updated = av.NewFormattedValueUpdated(block.Block.Updated, 0, av.UpdatedFormatNone)
|
|
cell.Value.Updated = av.NewFormattedValueUpdated(block.Block.Updated, 0, av.UpdatedFormatNone)
|
|
cell.Value.Updated.IsNotEmpty = true
|
|
cell.Value.Updated.IsNotEmpty = true
|
|
} else {
|
|
} else {
|
|
@@ -1114,22 +1113,24 @@ func addAttributeViewBlock(blockID string, operation *Operation, tree *parse.Tre
|
|
viewable.SortRows()
|
|
viewable.SortRows()
|
|
|
|
|
|
if 0 < len(viewable.Rows) {
|
|
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 +1179,17 @@ func addAttributeViewBlock(blockID string, operation *Operation, tree *parse.Tre
|
|
return
|
|
return
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+func GetLastSortRow(rows []*av.TableRow) *av.TableRow {
|
|
|
|
+ for i := len(rows) - 1; i >= 0; i-- {
|
|
|
|
+ row := rows[i]
|
|
|
|
+ block := row.GetBlockValue()
|
|
|
|
+ if nil != block && !block.NotAffectFilter() {
|
|
|
|
+ return row
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return nil
|
|
|
|
+}
|
|
|
|
+
|
|
func (tx *Transaction) doRemoveAttrViewBlock(operation *Operation) (ret *TxErr) {
|
|
func (tx *Transaction) doRemoveAttrViewBlock(operation *Operation) (ret *TxErr) {
|
|
err := tx.removeAttributeViewBlock(operation)
|
|
err := tx.removeAttributeViewBlock(operation)
|
|
if nil != err {
|
|
if nil != err {
|