diff --git a/src/public/js/ui/storage.js b/src/public/js/ui/storage.js
index c3d8dfc4e..a0735bd28 100644
--- a/src/public/js/ui/storage.js
+++ b/src/public/js/ui/storage.js
@@ -138,39 +138,9 @@ PulseApp.ui.storage = (() => {
}
const sortedNodeStorageData = sortNodeStorageData(nodeStorageData);
-
sortedNodeStorageData.forEach(store => {
- const row = document.createElement('tr');
- const isDisabled = store.enabled === 0 || store.active === 0;
- row.className = `transition-all duration-150 ease-out hover:bg-gray-100 dark:hover:bg-gray-700/60 hover:shadow-md hover:-translate-y-px ${isDisabled ? 'opacity-50 grayscale-[50%]' : ''}`;
-
- const usagePercent = store.total > 0 ? (store.used / store.total) * 100 : 0;
- const usageTooltipText = `${PulseApp.utils.formatBytes(store.used)} / ${PulseApp.utils.formatBytes(store.total)} (${usagePercent.toFixed(1)}%)`;
-
- const usageColorClass = PulseApp.utils.getUsageColor(usagePercent);
- const sharedIconTooltip = store.shared === 1 ? 'Shared across cluster' : 'Local to node';
- const sharedIcon = store.shared === 1 ? ``
- : ``;
-
- const contentTypes = (store.content || '').split(',').map(ct => ct.trim()).filter(ct => ct);
- contentTypes.sort();
- const contentBadges = contentTypes.map(ct => {
- const details = getContentBadgeDetails(ct);
- return `${ct}`;
- }).join('');
-
- const usageBarHTML = PulseApp.utils.createProgressTextBarHTML(usagePercent, usageTooltipText, usageColorClass);
-
- row.innerHTML = `
-
${store.storage || 'N/A'} |
- ${contentBadges || '-'} |
- ${store.type || 'N/A'} |
- ${sharedIcon} |
- ${usageBarHTML} |
- ${PulseApp.utils.formatBytes(store.avail)} |
- ${PulseApp.utils.formatBytes(store.total)} |
- `;
- tbody.appendChild(row);
+ const row = _createStorageRow(store);
+ tbody.appendChild(row);
});
});
@@ -179,7 +149,40 @@ PulseApp.ui.storage = (() => {
contentDiv.appendChild(table);
}
+ function _createStorageRow(store) {
+ const row = document.createElement('tr');
+ const isDisabled = store.enabled === 0 || store.active === 0;
+ row.className = `transition-all duration-150 ease-out hover:bg-gray-100 dark:hover:bg-gray-700/60 hover:shadow-md hover:-translate-y-px ${isDisabled ? 'opacity-50 grayscale-[50%]' : ''}`;
+
+ const usagePercent = store.total > 0 ? (store.used / store.total) * 100 : 0;
+ const usageTooltipText = `${PulseApp.utils.formatBytes(store.used)} / ${PulseApp.utils.formatBytes(store.total)} (${usagePercent.toFixed(1)}%)`;
+ const usageColorClass = PulseApp.utils.getUsageColor(usagePercent);
+ const usageBarHTML = PulseApp.utils.createProgressTextBarHTML(usagePercent, usageTooltipText, usageColorClass);
+
+ const sharedIconTooltip = store.shared === 1 ? 'Shared across cluster' : 'Local to node';
+ const sharedIcon = store.shared === 1 ? ``
+ : ``;
+
+ const contentTypes = (store.content || '').split(',').map(ct => ct.trim()).filter(ct => ct);
+ contentTypes.sort();
+ const contentBadges = contentTypes.map(ct => {
+ const details = getContentBadgeDetails(ct);
+ return `${ct}`;
+ }).join('');
+
+ row.innerHTML = `
+ ${store.storage || 'N/A'} |
+ ${contentBadges || '-'} |
+ ${store.type || 'N/A'} |
+ ${sharedIcon} |
+ ${usageBarHTML} |
+ ${PulseApp.utils.formatBytes(store.avail)} |
+ ${PulseApp.utils.formatBytes(store.total)} |
+ `;
+ return row;
+ }
+
return {
updateStorageInfo
};
-})();
\ No newline at end of file
+})();