Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
Vanessa 2025-08-21 18:05:50 +08:00
commit 7a6cd95656
4 changed files with 56 additions and 18 deletions

View file

@ -361,7 +361,12 @@ func (value *Value) filter(other *Value, relativeDate, relativeDate2 *RelativeDa
case KeyTypeSelect, KeyTypeMSelect:
if nil != value.MSelect {
if 1 > len(other.MSelect) {
return true
switch operator {
case FilterOperatorIsEmpty:
return value.IsEmpty()
case FilterOperatorIsNotEmpty:
return !value.IsEmpty()
}
}
switch operator {

View file

@ -75,12 +75,12 @@ func (value *Value) String(format bool) string {
if nil == value.Block {
return ""
}
return value.Block.Content
return strings.TrimSpace(value.Block.Content)
case KeyTypeText:
if nil == value.Text {
return ""
}
return value.Text.Content
return strings.TrimSpace(value.Text.Content)
case KeyTypeNumber:
if nil == value.Number {
return ""
@ -113,17 +113,17 @@ func (value *Value) String(format bool) string {
if nil == value.URL {
return ""
}
return value.URL.Content
return strings.TrimSpace(value.URL.Content)
case KeyTypeEmail:
if nil == value.Email {
return ""
}
return value.Email.Content
return strings.TrimSpace(value.Email.Content)
case KeyTypePhone:
if nil == value.Phone {
return ""
}
return value.Phone.Content
return strings.TrimSpace(value.Phone.Content)
case KeyTypeMAsset:
if 1 > len(value.MAsset) {
return ""
@ -978,6 +978,8 @@ func GetAttributeViewDefaultValue(valueID, keyID, blockID string, typ KeyType) (
}
switch typ {
case KeyTypeBlock:
ret.Block = &ValueBlock{Created: ret.CreatedAt, Updated: ret.UpdatedAt}
case KeyTypeText:
ret.Text = &ValueText{}
case KeyTypeNumber:

View file

@ -215,7 +215,36 @@ func getAttrViewAddingBlockDefaultValues(attrView *av.AttributeView, view, group
return
}
if nil != newValue && !filterKeyIDs[groupKey.ID] /* 命中了过滤条件的话就不重复处理了 */ {
if nil == nearItem && !filterKeyIDs[groupKey.ID] {
// 没有临近项并且分组字段和过滤字段不同时,使用分组值
newValue = av.GetAttributeViewDefaultValue(ast.NewNodeID(), groupKey.ID, addingItemID, groupKey.Type)
if av.KeyTypeText == groupView.GroupVal.Type {
content := groupView.GroupVal.Text.Content
switch newValue.Type {
case av.KeyTypeBlock:
newValue.Block.Content = content
case av.KeyTypeText:
newValue.Text.Content = content
case av.KeyTypeNumber:
num, _ := strconv.ParseFloat(strings.Split(content, " - ")[0], 64)
newValue.Number.Content = num
newValue.Number.IsNotEmpty = true
case av.KeyTypeURL:
newValue.URL.Content = content
case av.KeyTypeEmail:
newValue.Email.Content = content
case av.KeyTypePhone:
newValue.Phone.Content = content
case av.KeyTypeCheckbox:
newValue.Checkbox.Checked = "" != content
}
}
ret[groupKey.ID] = newValue
return
}
if nil != newValue && !filterKeyIDs[groupKey.ID] {
ret[groupKey.ID] = newValue
}
return
@ -2418,6 +2447,7 @@ func (tx *Transaction) doDuplicateAttrViewView(operation *Operation) (ret *TxErr
view.HideAttrViewName = masterView.HideAttrViewName
view.Desc = masterView.Desc
view.LayoutType = masterView.LayoutType
view.PageSize = masterView.PageSize
for _, filter := range masterView.Filters {
view.Filters = append(view.Filters, &av.ViewFilter{
@ -2436,16 +2466,6 @@ func (tx *Transaction) doDuplicateAttrViewView(operation *Operation) (ret *TxErr
})
}
if nil != masterView.Group {
view.Group = &av.ViewGroup{}
if copyErr := copier.Copy(view.Group, masterView.Group); nil != copyErr {
logging.LogErrorf("copy group failed: %s", copyErr)
return &TxErr{code: TxErrHandleAttributeView, id: avID, msg: copyErr.Error()}
}
}
view.PageSize = masterView.PageSize
switch masterView.LayoutType {
case av.LayoutTypeTable:
for _, col := range masterView.Table.Columns {
@ -2487,6 +2507,17 @@ func (tx *Transaction) doDuplicateAttrViewView(operation *Operation) (ret *TxErr
view.ItemIDs = masterView.ItemIDs
if nil != masterView.Group {
view.Group = &av.ViewGroup{}
if copyErr := copier.Copy(view.Group, masterView.Group); nil != copyErr {
logging.LogErrorf("copy group failed: %s", copyErr)
return &TxErr{code: TxErrHandleAttributeView, id: avID, msg: copyErr.Error()}
}
view.GroupItemIDs = masterView.GroupItemIDs
regenAttrViewGroups(attrView, "force")
}
if err = av.SaveAttributeView(attrView); err != nil {
logging.LogErrorf("save attribute view [%s] failed: %s", avID, err)
return &TxErr{code: TxErrHandleAttributeView, msg: err.Error(), id: avID}

View file

@ -106,7 +106,7 @@ func renderAttributeViewGroups(viewable av.Viewable, attrView *av.AttributeView,
fixDev := false
for _, groupView := range view.Groups {
if ("" == groupView.GetGroupValue() || nil == groupView.GroupKey) && !fixDev {
if (nil == groupView.GroupVal || nil == groupView.GroupKey) && !fixDev {
// TODO 分组上线后删除,预计 2025 年 9 月后可以删除
regenAttrViewGroups(attrView, "force")
av.SaveAttributeView(attrView)