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

This commit is contained in:
Vanessa 2025-08-21 14:10:02 +08:00
commit bf3023ec48
4 changed files with 27 additions and 6 deletions

View file

@ -229,7 +229,7 @@ export const getGroupsHTML = (columns: IAVColumn[], view: IAVView) => {
<span class="b3-menu__accelerator">${getLanguageByIndex(view.group.order, "sort")}</span>
<svg class="b3-menu__icon b3-menu__icon--small"><use xlink:href="#iconRight"></use></svg>
</button>
<label class="b3-menu__item${["select", "mSelect"].includes(column.type) ? "" : " fn__none"}">
<label class="b3-menu__item">
<span class="fn__flex-center">${window.siyuan.languages.hideEmptyGroup}</span>
<span class="fn__space fn__flex-1"></span>
<input type="checkbox" class="b3-switch b3-switch--menu"${view.group.hideEmpty ? " checked" : ""}>

View file

@ -395,7 +395,7 @@ func (value *Value) filter(other *Value, relativeDate, relativeDate2 *RelativeDa
}
case KeyTypeEmail:
if nil != value.Email && nil != other && nil != other.Email {
return filterTextContent(operator, value.Email.Content, other.URL.Content)
return filterTextContent(operator, value.Email.Content, other.Email.Content)
}
case KeyTypePhone:
if nil != value.Phone && nil != other && nil != other.Phone {

View file

@ -173,8 +173,10 @@ func getAttrViewAddingBlockDefaultValues(attrView *av.AttributeView, view, group
if nil != newValue {
if !av.MSelectExistOption(newValue.MSelect, groupView.GetGroupValue()) {
if 1 > len(newValue.MSelect) || av.KeyTypeMSelect == groupKey.Type {
newValue.MSelect = append(newValue.MSelect, &av.ValueSelect{Content: opt.Name, Color: opt.Color})
}
}
} else {
newValue = av.GetAttributeViewDefaultValue(ast.NewNodeID(), groupKey.ID, addingItemID, groupKey.Type)
newValue.MSelect = append(newValue.MSelect, &av.ValueSelect{Content: opt.Name, Color: opt.Color})
@ -207,6 +209,12 @@ func getAttrViewAddingBlockDefaultValues(attrView *av.AttributeView, view, group
return
}
if nil != nearItem && filterKeyIDs[groupKey.ID] {
// 临近项不为空并且分组字段和过滤字段相同时,优先使用临近项 https://github.com/siyuan-note/siyuan/issues/15591
ret[groupKey.ID] = getNewValueByNearItem(nearItem, groupKey, addingItemID)
return
}
if nil != newValue && !filterKeyIDs[groupKey.ID] /* 命中了过滤条件的话就不重复处理了 */ {
ret[groupKey.ID] = newValue
}
@ -1797,6 +1805,11 @@ func genAttrViewGroups(view *av.View, attrView *av.AttributeView) {
}
}
if 1 > len(groupItemsMap[groupValueDefault]) {
// 始终保留默认分组 https://github.com/siyuan-note/siyuan/issues/15587
groupItemsMap[groupValueDefault] = []av.Item{}
}
for groupValue, groupItems := range groupItemsMap {
var v *av.View
switch view.LayoutType {
@ -1817,6 +1830,7 @@ func genAttrViewGroups(view *av.View, attrView *av.AttributeView) {
}
v.Name = "" // 分组视图的名称在渲染时才填充
v.GroupHidden = 1 // 默认隐藏空白分组
v.GroupKey = groupKey
v.GroupVal = &av.Value{Type: av.KeyTypeText, Text: &av.ValueText{Content: groupValue}}
if av.KeyTypeSelect == groupKey.Type || av.KeyTypeMSelect == groupKey.Type {
@ -4812,6 +4826,10 @@ func removeAttributeViewColumnOption(operation *Operation) (err error) {
}
if nil != filter.Value && (av.KeyTypeSelect == filter.Value.Type || av.KeyTypeMSelect == filter.Value.Type) {
if av.FilterOperatorIsEmpty == filter.Operator || av.FilterOperatorIsNotEmpty == filter.Operator {
continue
}
for i, opt := range filter.Value.MSelect {
if optName == opt.Content {
filter.Value.MSelect = append(filter.Value.MSelect[:i], filter.Value.MSelect[i+1:]...)

View file

@ -185,11 +185,14 @@ func hideEmptyGroupViews(view *av.View, viewable av.Viewable) {
}
if !view.Group.HideEmpty {
if 2 != viewable.GetGroupHidden() {
viewable.SetGroupHidden(0)
}
return
}
if 2 != viewable.GetGroupHidden() && 1 > viewable.(av.Collection).CountItems() {
viewable.SetGroupHidden(1)
if 1 == viewable.GetGroupHidden() && 0 < viewable.(av.Collection).CountItems() {
viewable.SetGroupHidden(0)
}
}