diff --git a/kernel/av/table.go b/kernel/av/table.go index 312202c32..71cdf2182 100644 --- a/kernel/av/table.go +++ b/kernel/av/table.go @@ -91,10 +91,11 @@ func (value *Value) Compare(other *Value) int { } if !value.IsEdited() { - return 1 - } - - if !other.IsEdited() { + if other.IsEdited() { + return 1 + } + return int(value.CreatedAt - other.CreatedAt) + } else if !other.IsEdited() { return -1 } diff --git a/kernel/av/value.go b/kernel/av/value.go index 2a674e2a7..958c65a0f 100644 --- a/kernel/av/value.go +++ b/kernel/av/value.go @@ -184,8 +184,12 @@ func (value *Value) Clone() (ret *Value) { } func (value *Value) IsEdited() bool { + if 1709454120000 > value.CreatedAt { + // 说明是旧数据,认为都是编辑过的 + return true + } + if value.CreatedAt == value.UpdatedAt { - // 说明是刚刚创建的块 return false } return true diff --git a/kernel/treenode/node.go b/kernel/treenode/node.go index 4d38e3f29..6795b783d 100644 --- a/kernel/treenode/node.go +++ b/kernel/treenode/node.go @@ -976,7 +976,23 @@ func FillAttributeViewTableCellNilValue(tableCell *av.TableCell, rowID, colID st } func GetAttributeViewDefaultValue(valueID, keyID, blockID string, typ av.KeyType) (ret *av.Value) { + if "" == valueID { + valueID = ast.NewNodeID() + } + ret = &av.Value{ID: valueID, KeyID: keyID, BlockID: blockID, Type: typ} + + createdStr := valueID[:len("20060102150405")] + created, parseErr := time.ParseInLocation("20060102150405", createdStr, time.Local) + if nil == parseErr { + ret.CreatedAt = created.UnixMilli() + } else { + ret.CreatedAt = time.Now().UnixMilli() + } + if 0 == ret.UpdatedAt { + ret.UpdatedAt = ret.CreatedAt + } + switch typ { case av.KeyTypeText: ret.Text = &av.ValueText{}