🎨 When "Default fill created time" is enabled for database date fields, the automatically filled time value is incorrect https://github.com/siyuan-note/siyuan/issues/15828

Signed-off-by: Daniel <845765@qq.com>
This commit is contained in:
Daniel 2025-09-13 09:44:59 +08:00
parent 370601d277
commit 7faf981b69
No known key found for this signature in database
GPG key ID: 86211BA83DF03017
5 changed files with 19 additions and 11 deletions

View file

@ -1201,7 +1201,7 @@ func (r *ValueRollup) calcContents(calc *RollupCalc, destKey *Key) {
} }
} }
func GetAttributeViewDefaultValue(valueID, keyID, blockID string, typ KeyType) (ret *Value) { func GetAttributeViewDefaultValue(valueID, keyID, blockID string, typ KeyType, keyDateAutoFill bool) (ret *Value) {
if "" == valueID { if "" == valueID {
valueID = ast.NewNodeID() valueID = ast.NewNodeID()
} }
@ -1227,7 +1227,7 @@ func GetAttributeViewDefaultValue(valueID, keyID, blockID string, typ KeyType) (
case KeyTypeNumber: case KeyTypeNumber:
ret.Number = &ValueNumber{} ret.Number = &ValueNumber{}
case KeyTypeDate: case KeyTypeDate:
ret.Date = &ValueDate{IsNotTime: true} ret.Date = &ValueDate{IsNotTime: !keyDateAutoFill}
case KeyTypeSelect: case KeyTypeSelect:
ret.MSelect = []*ValueSelect{} ret.MSelect = []*ValueSelect{}
case KeyTypeMSelect: case KeyTypeMSelect:

View file

@ -233,7 +233,7 @@ func getAttrViewAddingBlockDefaultValues(attrView *av.AttributeView, view, group
} }
} }
} else { } else {
newValue = av.GetAttributeViewDefaultValue(ast.NewNodeID(), groupKey.ID, addingItemID, groupKey.Type) newValue = av.GetAttributeViewDefaultValue(ast.NewNodeID(), groupKey.ID, addingItemID, groupKey.Type, false)
newValue.MSelect = append(newValue.MSelect, &av.ValueSelect{Content: opt.Name, Color: opt.Color}) newValue.MSelect = append(newValue.MSelect, &av.ValueSelect{Content: opt.Name, Color: opt.Color})
} }
} }
@ -278,7 +278,7 @@ func getAttrViewAddingBlockDefaultValues(attrView *av.AttributeView, view, group
if nil == nearItem && !filterKeyIDs[groupKey.ID] { if nil == nearItem && !filterKeyIDs[groupKey.ID] {
// 没有临近项并且分组字段和过滤字段不同时,使用分组值 // 没有临近项并且分组字段和过滤字段不同时,使用分组值
newValue = av.GetAttributeViewDefaultValue(ast.NewNodeID(), groupKey.ID, addingItemID, groupKey.Type) newValue = av.GetAttributeViewDefaultValue(ast.NewNodeID(), groupKey.ID, addingItemID, groupKey.Type, false)
if av.KeyTypeText == groupView.GroupVal.Type { if av.KeyTypeText == groupView.GroupVal.Type {
content := groupView.GroupVal.Text.Content content := groupView.GroupVal.Text.Content
switch newValue.Type { switch newValue.Type {
@ -1535,7 +1535,7 @@ func GetBlockAttributeViewKeys(nodeID string) (ret []*BlockAttributeViewKeys) {
keyValues = append(keyValues, kValues) keyValues = append(keyValues, kValues)
} else { } else {
// 如果没有值,那么就补一个默认值 // 如果没有值,那么就补一个默认值
kValues.Values = append(kValues.Values, av.GetAttributeViewDefaultValue(itemID[:14]+ast.NewNodeID()[14:], kv.Key.ID, itemID, kv.Key.Type)) kValues.Values = append(kValues.Values, av.GetAttributeViewDefaultValue(itemID[:14]+ast.NewNodeID()[14:], kv.Key.ID, itemID, kv.Key.Type, false))
keyValues = append(keyValues, kValues) keyValues = append(keyValues, kValues)
} }
} }
@ -1651,7 +1651,7 @@ func GetBlockAttributeViewKeys(nodeID string) (ret []*BlockAttributeViewKeys) {
ial = map[string]string{} ial = map[string]string{}
} }
if nil == kv.Values[0].Template { if nil == kv.Values[0].Template {
kv.Values[0] = av.GetAttributeViewDefaultValue(kv.Values[0].ID, kv.Key.ID, nodeID, kv.Key.Type) kv.Values[0] = av.GetAttributeViewDefaultValue(kv.Values[0].ID, kv.Key.ID, nodeID, kv.Key.Type, false)
} }
var renderErr error var renderErr error
@ -3156,7 +3156,7 @@ func addAttributeViewBlock(now int64, avID, dbBlockID, viewID, groupID, previous
} else { } else {
if val.IsRenderAutoFill { if val.IsRenderAutoFill {
val.CreatedAt, val.UpdatedAt = now, now+1000 val.CreatedAt, val.UpdatedAt = now, now+1000
val.Date.Content, val.Date.IsNotEmpty = now, true val.Date.Content, val.Date.IsNotEmpty, val.Date.IsNotTime = now, true, false
val.IsRenderAutoFill = false val.IsRenderAutoFill = false
} }
} }

View file

@ -314,7 +314,7 @@ func filterNotFoundAttrViewItems(keyValuesMap map[string][]*av.KeyValues) {
} }
} }
func fillAttributeViewBaseValue(baseValue *av.BaseValue, fieldID, itemID string, fieldNumberFormat av.NumberFormat, fieldTemplate string) { func fillAttributeViewBaseValue(baseValue *av.BaseValue, fieldID, itemID string, fieldNumberFormat av.NumberFormat, fieldTemplate string, fieldDateAutoFill bool) {
switch baseValue.ValueType { switch baseValue.ValueType {
case av.KeyTypeNumber: // 格式化数字 case av.KeyTypeNumber: // 格式化数字
if nil != baseValue.Value && nil != baseValue.Value.Number && baseValue.Value.Number.IsNotEmpty { if nil != baseValue.Value && nil != baseValue.Value.Number && baseValue.Value.Number.IsNotEmpty {
@ -330,7 +330,7 @@ func fillAttributeViewBaseValue(baseValue *av.BaseValue, fieldID, itemID string,
} }
if nil == baseValue.Value { if nil == baseValue.Value {
baseValue.Value = av.GetAttributeViewDefaultValue(baseValue.ID, fieldID, itemID, baseValue.ValueType) baseValue.Value = av.GetAttributeViewDefaultValue(baseValue.ID, fieldID, itemID, baseValue.ValueType, fieldDateAutoFill)
} else { } else {
FillAttributeViewNilValue(baseValue.Value, baseValue.ValueType) FillAttributeViewNilValue(baseValue.Value, baseValue.ValueType)
} }

View file

@ -108,7 +108,11 @@ func RenderAttributeViewGallery(attrView *av.AttributeView, view *av.View, query
} }
galleryCard.ID = cardID galleryCard.ID = cardID
fillAttributeViewBaseValue(fieldValue.BaseValue, field.ID, cardID, field.NumberFormat, field.Template) filedDateAutoFill := false
if nil != field.Date {
filedDateAutoFill = field.Date.AutoFillNow
}
fillAttributeViewBaseValue(fieldValue.BaseValue, field.ID, cardID, field.NumberFormat, field.Template, filedDateAutoFill)
galleryCard.Values = append(galleryCard.Values, fieldValue) galleryCard.Values = append(galleryCard.Values, fieldValue)
} }

View file

@ -96,7 +96,11 @@ func RenderAttributeViewTable(attrView *av.AttributeView, view *av.View, query s
} }
tableRow.ID = rowID tableRow.ID = rowID
fillAttributeViewBaseValue(tableCell.BaseValue, col.ID, rowID, col.NumberFormat, col.Template) filedDateAutoFill := false
if nil != col.Date {
filedDateAutoFill = col.Date.AutoFillNow
}
fillAttributeViewBaseValue(tableCell.BaseValue, col.ID, rowID, col.NumberFormat, col.Template, filedDateAutoFill)
tableRow.Cells = append(tableRow.Cells, tableCell) tableRow.Cells = append(tableRow.Cells, tableCell)
} }
ret.Rows = append(ret.Rows, &tableRow) ret.Rows = append(ret.Rows, &tableRow)