From 521c6e6c7f0aaacd80c764f056498ad3bf53dc1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Marseault?= <22910497+Larsluph@users.noreply.github.com> Date: Wed, 22 Mar 2023 09:53:44 +0100 Subject: [PATCH] perf: Sort folders before files (#730) --- src/helpers.js | 10 ++++++++-- src/types/vuetorrent/TreeObjects.ts | 2 ++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/helpers.js b/src/helpers.js index fb305a42..da61a536 100644 --- a/src/helpers.js +++ b/src/helpers.js @@ -100,12 +100,18 @@ function createFile(data, name, children) { size: formatBytes(data.size), icon: getIconForFileType(name.split('.').pop()), priority: data.priority, - children: children + children: children, + type: 'file' } } function createFolder(parent, name, children) { - children.sort((a, b) => a.name.localeCompare(b.name)) + children.sort((a, b) => { + if (a.type === b.type) return a.name.localeCompare(b.name) + else if (a.type === 'directory') return -1 + else return 1 + }) + return { name: name, fullName: parent === undefined ? name : `${parent.fullName}/${name}`, diff --git a/src/types/vuetorrent/TreeObjects.ts b/src/types/vuetorrent/TreeObjects.ts index acf4ec4a..df4aaf6f 100644 --- a/src/types/vuetorrent/TreeObjects.ts +++ b/src/types/vuetorrent/TreeObjects.ts @@ -2,6 +2,7 @@ export interface TreeNode { name: string fullName: string children: TreeNode[] + type: 'file' | 'directory' } export interface TreeFile extends TreeNode { @@ -10,6 +11,7 @@ export interface TreeFile extends TreeNode { size: string icon: string priority: number + type: 'file' } export interface TreeFolder extends TreeNode {