mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-09-22 00:20:47 +02:00
🎨 Improve av https://github.com/siyuan-note/siyuan/issues/15500
This commit is contained in:
parent
7e7acf27cf
commit
a31e79001e
17 changed files with 65 additions and 28 deletions
|
@ -1,4 +1,5 @@
|
||||||
{
|
{
|
||||||
|
"sortBySelectOption": "Nach Option sortieren",
|
||||||
"groupStep": "فاصل التجميع",
|
"groupStep": "فاصل التجميع",
|
||||||
"groupRange": "نطاق التجميع",
|
"groupRange": "نطاق التجميع",
|
||||||
"groupMethodDateRelative": "تاريخ نسبي",
|
"groupMethodDateRelative": "تاريخ نسبي",
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
{
|
{
|
||||||
|
"sortBySelectOption": "Nach Option sortieren",
|
||||||
"groupStep": "Gruppierungsintervall",
|
"groupStep": "Gruppierungsintervall",
|
||||||
"groupRange": "Gruppierungsbereich",
|
"groupRange": "Gruppierungsbereich",
|
||||||
"groupMethodDateRelative": "Relatives Datum",
|
"groupMethodDateRelative": "Relatives Datum",
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
{
|
{
|
||||||
|
"sortBySelectOption": "Sort by option",
|
||||||
"groupStep": "Group interval",
|
"groupStep": "Group interval",
|
||||||
"groupRange": "Group range",
|
"groupRange": "Group range",
|
||||||
"groupMethodDateRelative": "Relative date",
|
"groupMethodDateRelative": "Relative date",
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
{
|
{
|
||||||
|
"sortBySelectOption": "Ordenar por opción",
|
||||||
"groupStep": "Intervalo de agrupación",
|
"groupStep": "Intervalo de agrupación",
|
||||||
"groupRange": "Rango de agrupación",
|
"groupRange": "Rango de agrupación",
|
||||||
"groupMethodDateRelative": "Fecha relativa",
|
"groupMethodDateRelative": "Fecha relativa",
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
{
|
{
|
||||||
|
"sortBySelectOption": "Trier par option",
|
||||||
"groupStep": "Intervalle de regroupement",
|
"groupStep": "Intervalle de regroupement",
|
||||||
"groupRange": "Plage de regroupement",
|
"groupRange": "Plage de regroupement",
|
||||||
"groupMethodDateRelative": "Date relative",
|
"groupMethodDateRelative": "Date relative",
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
{
|
{
|
||||||
|
"sortBySelectOption": "מיין לפי אפשרות",
|
||||||
"groupStep": "מרווח קיבוץ",
|
"groupStep": "מרווח קיבוץ",
|
||||||
"groupRange": "טווח קיבוץ",
|
"groupRange": "טווח קיבוץ",
|
||||||
"groupMethodDateRelative": "תאריך יחסי",
|
"groupMethodDateRelative": "תאריך יחסי",
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
{
|
{
|
||||||
|
"sortBySelectOption": "Ordina per opzione",
|
||||||
"groupStep": "Intervallo di raggruppamento",
|
"groupStep": "Intervallo di raggruppamento",
|
||||||
"groupRange": "Intervallo di gruppo",
|
"groupRange": "Intervallo di gruppo",
|
||||||
"groupMethodDateRelative": "Data relativa",
|
"groupMethodDateRelative": "Data relativa",
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
{
|
{
|
||||||
|
"sortBySelectOption": "オプションで並べ替え",
|
||||||
"groupStep": "グループ間隔",
|
"groupStep": "グループ間隔",
|
||||||
"groupRange": "グループ範囲",
|
"groupRange": "グループ範囲",
|
||||||
"groupMethodDateRelative": "相対日付",
|
"groupMethodDateRelative": "相対日付",
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
{
|
{
|
||||||
|
"sortBySelectOption": "Sortuj według opcji",
|
||||||
"groupStep": "Odstęp grupowania",
|
"groupStep": "Odstęp grupowania",
|
||||||
"groupRange": "Zakres grupowania",
|
"groupRange": "Zakres grupowania",
|
||||||
"groupMethodDateRelative": "Data względna",
|
"groupMethodDateRelative": "Data względna",
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
{
|
{
|
||||||
|
"sortBySelectOption": "Classificar por opção",
|
||||||
"groupStep": "Intervalo de agrupamento",
|
"groupStep": "Intervalo de agrupamento",
|
||||||
"groupRange": "Intervalo de grupo",
|
"groupRange": "Intervalo de grupo",
|
||||||
"groupMethodDateRelative": "Data relativa",
|
"groupMethodDateRelative": "Data relativa",
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
{
|
{
|
||||||
|
"sortBySelectOption": "Сортировать по опции",
|
||||||
"groupStep": "Интервал группировки",
|
"groupStep": "Интервал группировки",
|
||||||
"groupRange": "Диапазон группировки",
|
"groupRange": "Диапазон группировки",
|
||||||
"groupMethodDateRelative": "Относительная дата",
|
"groupMethodDateRelative": "Относительная дата",
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
{
|
{
|
||||||
|
"sortBySelectOption": "按選項排序",
|
||||||
"groupStep": "分組間隔",
|
"groupStep": "分組間隔",
|
||||||
"groupRange": "分組範圍",
|
"groupRange": "分組範圍",
|
||||||
"groupMethodDateRelative": "相對日期",
|
"groupMethodDateRelative": "相對日期",
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
{
|
{
|
||||||
|
"sortBySelectOption": "按选项排序",
|
||||||
"groupStep": "分组间隔",
|
"groupStep": "分组间隔",
|
||||||
"groupRange": "分组范围",
|
"groupRange": "分组范围",
|
||||||
"groupMethodDateRelative": "相对日期",
|
"groupMethodDateRelative": "相对日期",
|
||||||
|
|
|
@ -102,6 +102,8 @@ export const getLanguageByIndex = (index: number, type: "sort" | "date") => {
|
||||||
return window.siyuan.languages.desc;
|
return window.siyuan.languages.desc;
|
||||||
case 2:
|
case 2:
|
||||||
return window.siyuan.languages.customSort;
|
return window.siyuan.languages.customSort;
|
||||||
|
case 3:
|
||||||
|
return window.siyuan.languages.sortBySelectOption;
|
||||||
default:
|
default:
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
|
@ -52,4 +52,5 @@ const (
|
||||||
GroupOrderAsc = iota // 升序
|
GroupOrderAsc = iota // 升序
|
||||||
GroupOrderDesc // 降序
|
GroupOrderDesc // 降序
|
||||||
GroupOrderMan // 手动排序
|
GroupOrderMan // 手动排序
|
||||||
|
GroupOrderSelectOption // 同选择的选项排序(仅单选和多选字段适用) https://github.com/siyuan-note/siyuan/issues/15500
|
||||||
)
|
)
|
||||||
|
|
|
@ -174,7 +174,7 @@ func sortAttributeViewGroup(avID, blockID, previousGroupID, groupID string) (err
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
sortGroupViews(view)
|
sortGroupViews(attrView, view)
|
||||||
|
|
||||||
var groupView *av.View
|
var groupView *av.View
|
||||||
var index, previousIndex int
|
var index, previousIndex int
|
||||||
|
@ -453,26 +453,7 @@ func SetAttributeViewGroup(avID, blockID string, group *av.ViewGroup) (err error
|
||||||
if groupKey := view.GetGroupKey(attrView); nil != groupKey && (av.KeyTypeSelect == groupKey.Type || av.KeyTypeMSelect == groupKey.Type) {
|
if groupKey := view.GetGroupKey(attrView); nil != groupKey && (av.KeyTypeSelect == groupKey.Type || av.KeyTypeMSelect == groupKey.Type) {
|
||||||
// 首次设置分组时,如果分组字段是单选或多选类型,则将分组方式改为手动排序,并按选项顺序排序分组视图 https://github.com/siyuan-note/siyuan/issues/15491
|
// 首次设置分组时,如果分组字段是单选或多选类型,则将分组方式改为手动排序,并按选项顺序排序分组视图 https://github.com/siyuan-note/siyuan/issues/15491
|
||||||
view.Group.Order = av.GroupOrderMan
|
view.Group.Order = av.GroupOrderMan
|
||||||
optionSort := map[string]int{}
|
sortGroupsBySelectOption(view, groupKey)
|
||||||
for i, op := range groupKey.Options {
|
|
||||||
optionSort[op.Name] = i
|
|
||||||
}
|
|
||||||
|
|
||||||
defaultGroup := view.GetGroupByGroupValue(groupValueDefault)
|
|
||||||
if nil != defaultGroup {
|
|
||||||
view.RemoveGroupByID(defaultGroup.ID)
|
|
||||||
}
|
|
||||||
|
|
||||||
sort.Slice(view.Groups, func(i, j int) bool {
|
|
||||||
vSort := optionSort[view.Groups[i].GetGroupValue()]
|
|
||||||
oSort := optionSort[view.Groups[j].GetGroupValue()]
|
|
||||||
return vSort < oSort
|
|
||||||
})
|
|
||||||
|
|
||||||
if nil != defaultGroup {
|
|
||||||
view.Groups = append(view.Groups, defaultGroup)
|
|
||||||
}
|
|
||||||
|
|
||||||
for i, g := range view.Groups {
|
for i, g := range view.Groups {
|
||||||
g.GroupSort = i
|
g.GroupSort = i
|
||||||
}
|
}
|
||||||
|
|
|
@ -137,7 +137,7 @@ func renderAttributeViewGroups(viewable av.Viewable, attrView *av.AttributeView,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sortGroupViews(view)
|
sortGroupViews(attrView, view)
|
||||||
|
|
||||||
var groups []av.Viewable
|
var groups []av.Viewable
|
||||||
for _, groupView := range view.Groups {
|
for _, groupView := range view.Groups {
|
||||||
|
@ -193,13 +193,13 @@ func hideEmptyGroupViews(view *av.View, viewable av.Viewable) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func sortGroupViews(view *av.View) {
|
func sortGroupViews(attrView *av.AttributeView, view *av.View) {
|
||||||
if av.GroupOrderMan == view.Group.Order {
|
if av.GroupOrderMan == view.Group.Order {
|
||||||
sort.Slice(view.Groups, func(i, j int) bool { return view.Groups[i].GroupSort < view.Groups[j].GroupSort })
|
sort.Slice(view.Groups, func(i, j int) bool { return view.Groups[i].GroupSort < view.Groups[j].GroupSort })
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if av.GroupMethodDateRelative == view.Group.Method { // 相对日期分组排序
|
if av.GroupMethodDateRelative == view.Group.Method {
|
||||||
var relativeDateGroups []*av.View
|
var relativeDateGroups []*av.View
|
||||||
var last30Days, last7Days, yesterday, today, tomorrow, next7Days, next30Days, defaultGroup *av.View
|
var last30Days, last7Days, yesterday, today, tomorrow, next7Days, next30Days, defaultGroup *av.View
|
||||||
for _, groupView := range view.Groups {
|
for _, groupView := range view.Groups {
|
||||||
|
@ -280,7 +280,10 @@ func sortGroupViews(view *av.View) {
|
||||||
}
|
}
|
||||||
|
|
||||||
view.Groups = relativeDateGroups
|
view.Groups = relativeDateGroups
|
||||||
} else { // 升序/降序
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if av.GroupOrderAsc == view.Group.Order || av.GroupOrderDesc == view.Group.Order {
|
||||||
defaultGroup := view.GetGroupByGroupValue(groupValueDefault)
|
defaultGroup := view.GetGroupByGroupValue(groupValueDefault)
|
||||||
if nil != defaultGroup {
|
if nil != defaultGroup {
|
||||||
view.RemoveGroupByID(defaultGroup.ID)
|
view.RemoveGroupByID(defaultGroup.ID)
|
||||||
|
@ -297,6 +300,43 @@ func sortGroupViews(view *av.View) {
|
||||||
if nil != defaultGroup {
|
if nil != defaultGroup {
|
||||||
view.Groups = append(view.Groups, defaultGroup)
|
view.Groups = append(view.Groups, defaultGroup)
|
||||||
}
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if av.GroupOrderSelectOption == view.Group.Order {
|
||||||
|
groupKey := view.GetGroupKey(attrView)
|
||||||
|
if nil == groupKey {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if av.KeyTypeSelect != groupKey.Type && av.KeyTypeMSelect != groupKey.Type {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
sortGroupsBySelectOption(view, groupKey)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func sortGroupsBySelectOption(view *av.View, groupKey *av.Key) {
|
||||||
|
optionSort := map[string]int{}
|
||||||
|
for i, op := range groupKey.Options {
|
||||||
|
optionSort[op.Name] = i
|
||||||
|
}
|
||||||
|
|
||||||
|
defaultGroup := view.GetGroupByGroupValue(groupValueDefault)
|
||||||
|
if nil != defaultGroup {
|
||||||
|
view.RemoveGroupByID(defaultGroup.ID)
|
||||||
|
}
|
||||||
|
|
||||||
|
sort.Slice(view.Groups, func(i, j int) bool {
|
||||||
|
vSort := optionSort[view.Groups[i].GetGroupValue()]
|
||||||
|
oSort := optionSort[view.Groups[j].GetGroupValue()]
|
||||||
|
return vSort < oSort
|
||||||
|
})
|
||||||
|
|
||||||
|
if nil != defaultGroup {
|
||||||
|
view.Groups = append(view.Groups, defaultGroup)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue