🎨 Improve database block/text/asset/template/relation/rollup field sorting https://github.com/siyuan-note/siyuan/issues/12454

This commit is contained in:
Daniel 2024-09-14 22:26:02 +08:00
parent 89f46b8148
commit 3a9fb0d9e3
No known key found for this signature in database
GPG key ID: 86211BA83DF03017

View file

@ -44,7 +44,10 @@ func (value *Value) Compare(other *Value, attrView *AttributeView) int {
switch value.Type {
case KeyTypeBlock:
if nil != value.Block && nil != other.Block {
return strings.Compare(value.Block.Content, other.Block.Content)
if util.PinYinCompare(value.Block.Content, other.Block.Content) {
return -1
}
return 1
}
case KeyTypeText:
if nil != value.Text && nil != other.Text {
@ -56,7 +59,10 @@ func (value *Value) Compare(other *Value, attrView *AttributeView) int {
} else if "" == other.Text.Content {
return -1
}
return strings.Compare(value.Text.Content, other.Text.Content)
if util.PinYinCompare(value.Text.Content, other.Text.Content) {
return -1
}
return 1
}
case KeyTypeNumber:
if nil != value.Number && nil != other.Number {
@ -223,7 +229,10 @@ func (value *Value) Compare(other *Value, attrView *AttributeView) int {
for _, v := range other.MAsset {
v2 += v.Content
}
return strings.Compare(v1, v2)
if util.PinYinCompare(v1, v2) {
return -1
}
return 1
}
case KeyTypeTemplate:
if nil != value.Template && nil != other.Template {
@ -238,7 +247,10 @@ func (value *Value) Compare(other *Value, attrView *AttributeView) int {
}
return 0
}
return strings.Compare(value.Template.Content, other.Template.Content)
if util.PinYinCompare(value.Template.Content, other.Template.Content) {
return -1
}
return 1
}
case KeyTypeCheckbox:
if nil != value.Checkbox && nil != other.Checkbox {
@ -278,7 +290,10 @@ func (value *Value) Compare(other *Value, attrView *AttributeView) int {
oContentBuf.WriteByte(' ')
}
oContent := strings.TrimSpace(oContentBuf.String())
return strings.Compare(vContent, oContent)
if util.PinYinCompare(vContent, oContent) {
return -1
}
return 1
}
case KeyTypeRollup:
if nil != value.Rollup && nil != other.Rollup {
@ -308,7 +323,10 @@ func (value *Value) Compare(other *Value, attrView *AttributeView) int {
oContentBuf.WriteByte(' ')
}
oContent := strings.TrimSpace(oContentBuf.String())
return strings.Compare(vContent, oContent)
if util.PinYinCompare(vContent, oContent) {
return -1
}
return 1
}
}
return 0