mirror of
https://github.com/Drop-OSS/drop.git
synced 2025-11-10 04:22:09 +10:00
* First iteration on the new PieChart component * #128 Adds new admin home page * Fixes code after merging conflicts * Removes empty file * Uses real data for admin home page, and improves style * Reverts debugging code * Defines missing variable * Caches user stats data for admin home page * Typo * Styles improvements * Invalidates cache on signup/signin * Implements top 5 biggest games * Improves styling * Improves style * Using generateManifest to get the proper size * Reading data from cache * Removes unnecessary import * Improves caching mechanism for game sizes * Removes lint errors * Replaces piechart tooltip with colors in legend * Fixes caching * Fixes caching and slight improvement on pie chart colours * Fixes a few bugs related to caching * Fixes bug where app signin didn't refresh cache * feat: style improvements * fix: lint --------- Co-authored-by: DecDuck <declanahofmeyr@gmail.com>
48 lines
1.3 KiB
TypeScript
48 lines
1.3 KiB
TypeScript
import fs from "fs";
|
|
import nodePath from "path";
|
|
|
|
export function fsStats(folderPath: string) {
|
|
const stats = fs.statfsSync(folderPath);
|
|
const freeSpace = stats.bavail * stats.bsize;
|
|
const totalSpace = stats.blocks * stats.bsize;
|
|
return { freeSpace, totalSpace };
|
|
}
|
|
|
|
export function getFolderSize(folderPath: string): number {
|
|
const files = fs.readdirSync(folderPath, { withFileTypes: true });
|
|
|
|
const paths = files.map((file) => {
|
|
const path = nodePath.join(folderPath, file.name);
|
|
if (file.isDirectory()) {
|
|
return getFolderSize(path);
|
|
}
|
|
if (file.isFile()) {
|
|
return fs.statSync(path).size;
|
|
}
|
|
return 0;
|
|
});
|
|
|
|
return paths
|
|
.flat(Infinity)
|
|
.reduce(
|
|
(accumulator: number, currentValue: number) => accumulator + currentValue,
|
|
0,
|
|
);
|
|
}
|
|
|
|
export function formatBytes(bytes: number): string {
|
|
if (bytes < 1024) {
|
|
return `${bytes} B`;
|
|
}
|
|
if (bytes >= 1024 && bytes < Math.pow(1024, 2)) {
|
|
return `${(bytes / 1024).toFixed(2)} KiB`;
|
|
}
|
|
if (bytes >= Math.pow(1024, 2) && bytes < Math.pow(1024, 3)) {
|
|
return `${(bytes / (1024 * 1024)).toFixed(2)} MiB`;
|
|
}
|
|
if (bytes >= Math.pow(1024, 3) && bytes < Math.pow(1024, 4)) {
|
|
return `${(bytes / (1024 * 1024 * 1024)).toFixed(2)} GiB`;
|
|
}
|
|
return `${(bytes / Math.pow(1024, 4)).toFixed(2)} TiB`;
|
|
}
|