diff --git a/app/appearance/langs/en_US.json b/app/appearance/langs/en_US.json index 19d781def..5034676b3 100644 --- a/app/appearance/langs/en_US.json +++ b/app/appearance/langs/en_US.json @@ -428,6 +428,8 @@ "createdDESC": "Created Time DESC", "docSizeASC": "Document Size ASC", "docSizeDESC": "Document Size DESC", + "subDocCountASC": "Sub-docs Count ASC ", + "subDocCountDESC": "Sub-docs Count DESC", "sort": "Sort", "enterFullscreen": "Enter Full Screen", "exitFullscreen": "Exit Full Screen", diff --git a/app/appearance/langs/es_ES.json b/app/appearance/langs/es_ES.json index fc3ea5549..4d1444037 100644 --- a/app/appearance/langs/es_ES.json +++ b/app/appearance/langs/es_ES.json @@ -428,6 +428,8 @@ "createdDESC": "Tiempo de creación DESC", "docSizeASC": "Tamaño del Documento Ascendente", "docSizeDESC": "Tamaño del Documento Descendente", + "subDocCountASC": "Recuento de subdocumentos ASC", + "subDocCountDESC": "Recuento de subdocs DESC", "sort": "Ordenar", "enterFullscreen": "Entrar en pantalla completa", "exitFullscreen": "Salir de pantalla completa", diff --git a/app/appearance/langs/fr_FR.json b/app/appearance/langs/fr_FR.json index 20674987c..dff3879b1 100644 --- a/app/appearance/langs/fr_FR.json +++ b/app/appearance/langs/fr_FR.json @@ -428,6 +428,8 @@ "createdDESC": "Temps créé décroissant", "docSizeASC": "Taille du document croissante", "docSizeDESC": "Taille du document décroissante", + "subDocCountASC": "Nombre de sous-documents ASC ", + "subDocCountDESC": "Nombre de sous-documents DESC", "sort": "Tri", "enterFullscreen": "plein écran", "exitFullscreen": "Quitter le plein écran", diff --git a/app/appearance/langs/zh_CHT.json b/app/appearance/langs/zh_CHT.json index 1edf6d680..b75cfdb39 100644 --- a/app/appearance/langs/zh_CHT.json +++ b/app/appearance/langs/zh_CHT.json @@ -428,6 +428,8 @@ "createdDESC": "創建時間降冪", "docSizeASC": "文檔大小升序", "docSizeDESC": "文檔大小降序", + "subDocCountASC": "子文檔數升序", + "subDocCountDESC": "子文檔數降序", "sort": "排序", "enterFullscreen": "進入全螢幕", "exitFullscreen": "退出全螢幕", diff --git a/app/appearance/langs/zh_CN.json b/app/appearance/langs/zh_CN.json index c581da6a7..b72e943ec 100644 --- a/app/appearance/langs/zh_CN.json +++ b/app/appearance/langs/zh_CN.json @@ -428,6 +428,8 @@ "createdDESC": "创建时间降序", "docSizeASC": "文档大小升序", "docSizeDESC": "文档大小降序", + "subDocCountASC": "子文档数升序", + "subDocCountDESC": "子文档数降序", "sort": "排序", "enterFullscreen": "进入全屏幕", "exitFullscreen": "退出全屏幕", diff --git a/app/src/layout/dock/Files.ts b/app/src/layout/dock/Files.ts index a88c79dd2..4aa76c5fc 100644 --- a/app/src/layout/dock/Files.ts +++ b/app/src/layout/dock/Files.ts @@ -918,7 +918,7 @@ class="b3-list-item b3-list-item--hide-action" data-path="${item.path}"> click: () => { clickEvent(1); } - }, {type: "separator"}, { + }, { icon: window.siyuan.config.fileTree.sort === 4 ? "iconSelect" : undefined, label: window.siyuan.languages.fileNameNatASC, click: () => { @@ -978,6 +978,18 @@ class="b3-list-item b3-list-item--hide-action" data-path="${item.path}"> click: () => { clickEvent(12); } + }, {type: "separator"}, { + icon: window.siyuan.config.fileTree.sort === 13 ? "iconSelect" : undefined, + label: window.siyuan.languages.subDocCountASC, + click: () => { + clickEvent(13); + } + }, { + icon: window.siyuan.config.fileTree.sort === 14 ? "iconSelect" : undefined, + label: window.siyuan.languages.subDocCountDESC, + click: () => { + clickEvent(14); + } }, {type: "separator"}, { icon: window.siyuan.config.fileTree.sort === 6 ? "iconSelect" : undefined, label: window.siyuan.languages.customSort, diff --git a/app/src/mobile/util/MobileFiles.ts b/app/src/mobile/util/MobileFiles.ts index 97e463e63..5b3fe9d27 100644 --- a/app/src/mobile/util/MobileFiles.ts +++ b/app/src/mobile/util/MobileFiles.ts @@ -243,9 +243,6 @@ export class MobileFiles extends Model { clickEvent(1); } }).element); - window.siyuan.menus.menu.append(new MenuItem({ - type: "separator" - }).element); window.siyuan.menus.menu.append(new MenuItem({ icon: window.siyuan.config.fileTree.sort === 4 ? "iconSelect" : undefined, label: window.siyuan.languages.fileNameNatASC, @@ -319,6 +316,20 @@ export class MobileFiles extends Model { clickEvent(12); } }).element); + window.siyuan.menus.menu.append(new MenuItem({ + icon: window.siyuan.config.fileTree.sort === 13 ? "iconSelect" : undefined, + label: window.siyuan.languages.subDocCountASC, + click: () => { + clickEvent(13); + } + }).element); + window.siyuan.menus.menu.append(new MenuItem({ + icon: window.siyuan.config.fileTree.sort === 14 ? "iconSelect" : undefined, + label: window.siyuan.languages.subDocCountDESC, + click: () => { + clickEvent(14); + } + }).element); window.siyuan.menus.menu.append(new MenuItem({ icon: window.siyuan.config.fileTree.sort === 6 ? "iconSelect" : undefined, label: window.siyuan.languages.customSort, diff --git a/kernel/model/file.go b/kernel/model/file.go index f62f7c2ad..73786c9d9 100644 --- a/kernel/model/file.go +++ b/kernel/model/file.go @@ -365,6 +365,10 @@ func ListDocTree(boxID, path string, sortMode int) (ret []*File, totals int, err sort.Slice(docs, func(i, j int) bool { return docs[i].Size < docs[j].Size }) case util.SortModeSizeDESC: sort.Slice(docs, func(i, j int) bool { return docs[i].Size > docs[j].Size }) + case util.SortModeSubDocCountASC: + sort.Slice(docs, func(i, j int) bool { return docs[i].SubFileCount < docs[j].SubFileCount }) + case util.SortModeSubDocCountDESC: + sort.Slice(docs, func(i, j int) bool { return docs[i].SubFileCount > docs[j].SubFileCount }) } if util.SortModeCustom != sortMode { diff --git a/kernel/util/sort.go b/kernel/util/sort.go index 19a91401c..a804aabe7 100644 --- a/kernel/util/sort.go +++ b/kernel/util/sort.go @@ -53,17 +53,19 @@ func GBK2UTF8(src []byte) (string, error) { } const ( - SortModeNameASC = iota // 0:文件名字母升序 - SortModeNameDESC // 1:文件名字母降序 - SortModeUpdatedASC // 2:文件更新时间升序 - SortModeUpdatedDESC // 3:文件更新时间降序 - SortModeAlphanumASC // 4:文件名自然数升序 - SortModeAlphanumDESC // 5:文件名自然数降序 - SortModeCustom // 6:自定义排序 - SortModeRefCountASC // 7:引用数升序 - SortModeRefCountDESC // 8:引用数降序 - SortModeCreatedASC // 9:文件创建时间升序 - SortModeCreatedDESC // 10:文件创建时间降序 - SortModeSizeASC // 11:文件大小升序 - SortModeSizeDESC // 12:文件大小降序 + SortModeNameASC = iota // 0:文件名字母升序 + SortModeNameDESC // 1:文件名字母降序 + SortModeUpdatedASC // 2:文件更新时间升序 + SortModeUpdatedDESC // 3:文件更新时间降序 + SortModeAlphanumASC // 4:文件名自然数升序 + SortModeAlphanumDESC // 5:文件名自然数降序 + SortModeCustom // 6:自定义排序 + SortModeRefCountASC // 7:引用数升序 + SortModeRefCountDESC // 8:引用数降序 + SortModeCreatedASC // 9:文件创建时间升序 + SortModeCreatedDESC // 10:文件创建时间降序 + SortModeSizeASC // 11:文件大小升序 + SortModeSizeDESC // 12:文件大小降序 + SortModeSubDocCountASC // 13:子文档数升序 + SortModeSubDocCountDESC // 14:子文档数降序 )