55 lines
1.7 KiB
JavaScript
55 lines
1.7 KiB
JavaScript
/**
|
|
* Statistics manager for gallery display
|
|
*/
|
|
export class StatsManager {
|
|
constructor() {
|
|
this.updateGalleryStats();
|
|
}
|
|
|
|
/**
|
|
* Update gallery statistics display
|
|
*/
|
|
updateGalleryStats() {
|
|
// Use stats passed from Python backend if available
|
|
// Otherwise fallback to DOM counting
|
|
const gridItems = document.querySelectorAll('.grid-item');
|
|
const subdirLinks = document.querySelectorAll('a[href$="/index.html"]');
|
|
|
|
const fileCountEl = document.getElementById('fileCount');
|
|
const folderCountEl = document.getElementById('folderCount');
|
|
const totalSizeEl = document.getElementById('totalSize');
|
|
const lastUpdatedEl = document.getElementById('lastUpdated');
|
|
|
|
if (fileCountEl) fileCountEl.textContent = gridItems.length;
|
|
if (folderCountEl) folderCountEl.textContent = subdirLinks.length;
|
|
if (totalSizeEl) totalSizeEl.textContent = 'Unknown';
|
|
|
|
// Set last updated time
|
|
const now = new Date();
|
|
const timeStr = now.toLocaleTimeString([], {
|
|
hour: '2-digit',
|
|
minute: '2-digit'
|
|
});
|
|
if (lastUpdatedEl) lastUpdatedEl.textContent = timeStr;
|
|
}
|
|
|
|
/**
|
|
* Update stats with backend data
|
|
*/
|
|
updateWithBackendStats(stats) {
|
|
const fileCountEl = document.getElementById('fileCount');
|
|
const folderCountEl = document.getElementById('folderCount');
|
|
const totalSizeEl = document.getElementById('totalSize');
|
|
|
|
if (fileCountEl && stats.file_count !== undefined) {
|
|
fileCountEl.textContent = stats.file_count;
|
|
}
|
|
if (folderCountEl && stats.folder_count !== undefined) {
|
|
folderCountEl.textContent = stats.folder_count;
|
|
}
|
|
if (totalSizeEl && stats.total_size !== undefined) {
|
|
totalSizeEl.textContent = stats.total_size;
|
|
}
|
|
}
|
|
}
|