From bd9964d30054b327b3ccd1e4d909fa3ac5075168 Mon Sep 17 00:00:00 2001 From: Alexander Arav Andreev Date: Fri, 12 Feb 2021 21:31:29 +0400 Subject: [PATCH] Added showing stats on how many files and directories in a current directory, and a total size of files in it. --- files.js | 11 +++++++++-- views/files/index.pug | 1 + 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/files.js b/files.js index b7b68fd..9334119 100644 --- a/files.js +++ b/files.js @@ -49,10 +49,12 @@ function fileType(name) { async function getDirectoryList(dir_path, base_url) { let dirs = []; let files = []; + let total_files_size = 0; let d = await fs.promises.opendir(dir_path); for await (const dirent of d) { const stat = fs.lstatSync(path.join(dir_path, dirent.name)); const [s, u] = convertSize(stat.size); + total_files_size += stat.size; if (stat.isDirectory()) dirs.push({ name: dirent.name, @@ -80,7 +82,7 @@ async function getDirectoryList(dir_path, base_url) { dirs.sort(sort_by_name); files.sort(sort_by_name); - return dirs.concat(files); + return [dirs.concat(files), dirs.length, files.length, convertSize(total_files_size)]; } function setRoutes(router) { @@ -92,12 +94,17 @@ function setRoutes(router) { const file_path = path.join(config.files.file_path, decodeURI(ctx.originalUrl)); let stat = fs.lstatSync(file_path); if (stat.isDirectory()) { + const [items, total_directories, total_files, total_files_size] + = await getDirectoryList(file_path, ctx.originalUrl); await ctx.render('index', { title: "/ Files", description: "File share.", main_site: util.getServiceByHost(ctx.header.host), current_path: makeCurrentPathField(decodeURI(ctx.originalUrl)), - items: await getDirectoryList(file_path, ctx.originalUrl) }); + total_files: total_files, + total_files_size: total_files_size, + total_directories: total_directories, + items: items }); } else { let f = await FileType.fromStream(fs.createReadStream(file_path)); if (f === undefined) diff --git a/views/files/index.pug b/views/files/index.pug index 483d61a..e229d19 100644 --- a/views/files/index.pug +++ b/views/files/index.pug @@ -8,6 +8,7 @@ block nav block content section#files span#current-path!= current_path + p Files: #{total_files} (#{total_files_size}); Directories: #{total_directories}. table thead tr