mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-09-22 00:20:47 +02:00
Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
commit
7a6cd95656
4 changed files with 56 additions and 18 deletions
|
@ -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 {
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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}
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue