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