refactor(logging): replace remaining console.* with logger.debug/error across app, view-models, api-client, and framework

This commit is contained in:
2025-08-31 12:18:15 +02:00
parent 4ee209ef78
commit 9dab498aa2
4 changed files with 34 additions and 34 deletions

View File

@@ -15,7 +15,7 @@ class ApiClient {
this.baseUrl = `http://${currentHost}:3001`; this.baseUrl = `http://${currentHost}:3001`;
} }
console.log('API Client initialized with base URL:', this.baseUrl); logger.debug('API Client initialized with base URL:', this.baseUrl);
} }
async request(path, { method = 'GET', headers = {}, body = undefined, query = undefined, isForm = false } = {}) { async request(path, { method = 'GET', headers = {}, body = undefined, query = undefined, isForm = false } = {}) {

View File

@@ -2,22 +2,22 @@
// Initialize the application when DOM is loaded // Initialize the application when DOM is loaded
document.addEventListener('DOMContentLoaded', function() { document.addEventListener('DOMContentLoaded', function() {
console.log('=== SPORE UI Application Initialization ==='); logger.debug('=== SPORE UI Application Initialization ===');
// Initialize the framework (but don't navigate yet) // Initialize the framework (but don't navigate yet)
console.log('App: Creating framework instance...'); logger.debug('App: Creating framework instance...');
const app = window.app; const app = window.app;
// Create view models // Create view models
console.log('App: Creating view models...'); logger.debug('App: Creating view models...');
const clusterViewModel = new ClusterViewModel(); const clusterViewModel = new ClusterViewModel();
const firmwareViewModel = new FirmwareViewModel(); const firmwareViewModel = new FirmwareViewModel();
const topologyViewModel = new TopologyViewModel(); const topologyViewModel = new TopologyViewModel();
console.log('App: View models created:', { clusterViewModel, firmwareViewModel, topologyViewModel }); logger.debug('App: View models created:', { clusterViewModel, firmwareViewModel, topologyViewModel });
// Connect firmware view model to cluster data // Connect firmware view model to cluster data
clusterViewModel.subscribe('members', (members) => { clusterViewModel.subscribe('members', (members) => {
console.log('App: Members subscription triggered:', members); logger.debug('App: Members subscription triggered:', members);
if (members && members.length > 0) { if (members && members.length > 0) {
// Extract node information for firmware view // Extract node information for firmware view
const nodes = members.map(member => ({ const nodes = members.map(member => ({
@@ -26,39 +26,39 @@ document.addEventListener('DOMContentLoaded', function() {
labels: member.labels || {} labels: member.labels || {}
})); }));
firmwareViewModel.updateAvailableNodes(nodes); firmwareViewModel.updateAvailableNodes(nodes);
console.log('App: Updated firmware view model with nodes:', nodes); logger.debug('App: Updated firmware view model with nodes:', nodes);
} else { } else {
firmwareViewModel.updateAvailableNodes([]); firmwareViewModel.updateAvailableNodes([]);
console.log('App: Cleared firmware view model nodes'); logger.debug('App: Cleared firmware view model nodes');
} }
}); });
// Register routes with their view models // Register routes with their view models
console.log('App: Registering routes...'); logger.debug('App: Registering routes...');
app.registerRoute('cluster', ClusterViewComponent, 'cluster-view', clusterViewModel); app.registerRoute('cluster', ClusterViewComponent, 'cluster-view', clusterViewModel);
app.registerRoute('topology', TopologyGraphComponent, 'topology-view', topologyViewModel); app.registerRoute('topology', TopologyGraphComponent, 'topology-view', topologyViewModel);
app.registerRoute('firmware', FirmwareViewComponent, 'firmware-view', firmwareViewModel); app.registerRoute('firmware', FirmwareViewComponent, 'firmware-view', firmwareViewModel);
console.log('App: Routes registered and components pre-initialized'); logger.debug('App: Routes registered and components pre-initialized');
// Initialize cluster status component for header badge // Initialize cluster status component for header badge
console.log('App: Initializing cluster status component...'); logger.debug('App: Initializing cluster status component...');
const clusterStatusComponent = new ClusterStatusComponent( const clusterStatusComponent = new ClusterStatusComponent(
document.querySelector('.cluster-status'), document.querySelector('.cluster-status'),
clusterViewModel, clusterViewModel,
app.eventBus app.eventBus
); );
clusterStatusComponent.mount(); clusterStatusComponent.mount();
console.log('App: Cluster status component initialized'); logger.debug('App: Cluster status component initialized');
// Set up navigation event listeners // Set up navigation event listeners
console.log('App: Setting up navigation...'); logger.debug('App: Setting up navigation...');
app.setupNavigation(); app.setupNavigation();
// Now navigate to the default route // Now navigate to the default route
console.log('App: Navigating to default route...'); logger.debug('App: Navigating to default route...');
app.navigateTo('cluster'); app.navigateTo('cluster');
console.log('=== SPORE UI Application initialization completed ==='); logger.debug('=== SPORE UI Application initialization completed ===');
}); });
// Burger menu toggle for mobile // Burger menu toggle for mobile
@@ -97,10 +97,10 @@ function setupPeriodicUpdates() {
// Use smart update if available, otherwise fall back to regular update // Use smart update if available, otherwise fall back to regular update
if (viewModel.smartUpdate && typeof viewModel.smartUpdate === 'function') { if (viewModel.smartUpdate && typeof viewModel.smartUpdate === 'function') {
console.log('App: Performing smart update to preserve UI state...'); logger.debug('App: Performing smart update to preserve UI state...');
viewModel.smartUpdate(); viewModel.smartUpdate();
} else if (viewModel.updateClusterMembers && typeof viewModel.updateClusterMembers === 'function') { } else if (viewModel.updateClusterMembers && typeof viewModel.updateClusterMembers === 'function') {
console.log('App: Performing regular update...'); logger.debug('App: Performing regular update...');
viewModel.updateClusterMembers(); viewModel.updateClusterMembers();
} }
} }
@@ -119,18 +119,18 @@ function setupPeriodicUpdates() {
// Global error handler // Global error handler
window.addEventListener('error', function(event) { window.addEventListener('error', function(event) {
console.error('Global error:', event.error); logger.error('Global error:', event.error);
}); });
// Global unhandled promise rejection handler // Global unhandled promise rejection handler
window.addEventListener('unhandledrejection', function(event) { window.addEventListener('unhandledrejection', function(event) {
console.error('Unhandled promise rejection:', event.reason); logger.error('Unhandled promise rejection:', event.reason);
}); });
// Clean up on page unload // Clean up on page unload
window.addEventListener('beforeunload', function() { window.addEventListener('beforeunload', function() {
if (window.app) { if (window.app) {
console.log('App: Cleaning up cached components...'); logger.debug('App: Cleaning up cached components...');
window.app.cleanup(); window.app.cleanup();
} }
}); });

View File

@@ -840,7 +840,7 @@ class App {
// Initialize the application // Initialize the application
init() { init() {
console.log('SPORE UI Framework initialized'); logger.debug('SPORE UI Framework initialized');
// Note: Navigation is now handled by the app initialization // Note: Navigation is now handled by the app initialization
// to ensure routes are registered before navigation // to ensure routes are registered before navigation

View File

@@ -26,7 +26,7 @@ class ClusterViewModel extends ViewModel {
// Update cluster members with state preservation // Update cluster members with state preservation
async updateClusterMembers() { async updateClusterMembers() {
try { try {
console.log('ClusterViewModel: updateClusterMembers called'); logger.debug('ClusterViewModel: updateClusterMembers called');
// Store current UI state before update // Store current UI state before update
const currentUIState = this.getAllUIState(); const currentUIState = this.getAllUIState();
@@ -36,9 +36,9 @@ class ClusterViewModel extends ViewModel {
this.set('isLoading', true); this.set('isLoading', true);
this.set('error', null); this.set('error', null);
console.log('ClusterViewModel: Fetching cluster members...'); logger.debug('ClusterViewModel: Fetching cluster members...');
const response = await window.apiClient.getClusterMembers(); const response = await window.apiClient.getClusterMembers();
console.log('ClusterViewModel: Got response:', response); logger.debug('ClusterViewModel: Got response:', response);
const members = response.members || []; const members = response.members || [];
const onlineNodes = Array.isArray(members) const onlineNodes = Array.isArray(members)
@@ -57,7 +57,7 @@ class ClusterViewModel extends ViewModel {
this.set('activeTabs', currentActiveTabs); this.set('activeTabs', currentActiveTabs);
// Update primary node display // Update primary node display
console.log('ClusterViewModel: Updating primary node display...'); logger.debug('ClusterViewModel: Updating primary node display...');
await this.updatePrimaryNodeDisplay(); await this.updatePrimaryNodeDisplay();
} catch (error) { } catch (error) {
@@ -65,7 +65,7 @@ class ClusterViewModel extends ViewModel {
this.set('error', error.message); this.set('error', error.message);
} finally { } finally {
this.set('isLoading', false); this.set('isLoading', false);
console.log('ClusterViewModel: updateClusterMembers completed'); logger.debug('ClusterViewModel: updateClusterMembers completed');
} }
} }
@@ -185,7 +185,7 @@ class ClusterViewModel extends ViewModel {
// Smart update that only updates changed data // Smart update that only updates changed data
async smartUpdate() { async smartUpdate() {
try { try {
console.log('ClusterViewModel: Performing smart update...'); logger.debug('ClusterViewModel: Performing smart update...');
// Fetch new data // Fetch new data
const response = await window.apiClient.getClusterMembers(); const response = await window.apiClient.getClusterMembers();
@@ -193,10 +193,10 @@ class ClusterViewModel extends ViewModel {
// Check if members data has actually changed // Check if members data has actually changed
if (this.hasDataChanged(newMembers, 'members')) { if (this.hasDataChanged(newMembers, 'members')) {
console.log('ClusterViewModel: Members data changed, updating...'); logger.debug('ClusterViewModel: Members data changed, updating...');
await this.updateClusterMembers(); await this.updateClusterMembers();
} else { } else {
console.log('ClusterViewModel: Members data unchanged, skipping update'); logger.debug('ClusterViewModel: Members data unchanged, skipping update');
// Still update primary node display as it might have changed // Still update primary node display as it might have changed
await this.updatePrimaryNodeDisplay(); await this.updatePrimaryNodeDisplay();
} }
@@ -292,7 +292,7 @@ class NodeDetailsViewModel extends ViewModel {
// Set active tab with state persistence // Set active tab with state persistence
setActiveTab(tabName) { setActiveTab(tabName) {
console.log('NodeDetailsViewModel: Setting activeTab to:', tabName); logger.debug('NodeDetailsViewModel: Setting activeTab to:', tabName);
this.set('activeTab', tabName); this.set('activeTab', tabName);
// Store in UI state for persistence // Store in UI state for persistence
@@ -492,14 +492,14 @@ class TopologyViewModel extends ViewModel {
// Update network topology data // Update network topology data
async updateNetworkTopology() { async updateNetworkTopology() {
try { try {
console.log('TopologyViewModel: updateNetworkTopology called'); logger.debug('TopologyViewModel: updateNetworkTopology called');
this.set('isLoading', true); this.set('isLoading', true);
this.set('error', null); this.set('error', null);
// Get cluster members from the primary node // Get cluster members from the primary node
const response = await window.apiClient.getClusterMembers(); const response = await window.apiClient.getClusterMembers();
console.log('TopologyViewModel: Got cluster members response:', response); logger.debug('TopologyViewModel: Got cluster members response:', response);
const members = response.members || []; const members = response.members || [];
@@ -517,7 +517,7 @@ class TopologyViewModel extends ViewModel {
this.set('error', error.message); this.set('error', error.message);
} finally { } finally {
this.set('isLoading', false); this.set('isLoading', false);
console.log('TopologyViewModel: updateNetworkTopology completed'); logger.debug('TopologyViewModel: updateNetworkTopology completed');
} }
} }
@@ -589,7 +589,7 @@ class TopologyViewModel extends ViewModel {
// If no actual connections found, create a basic mesh // If no actual connections found, create a basic mesh
if (links.length === 0) { if (links.length === 0) {
console.log('TopologyViewModel: No actual connections found, creating basic mesh'); logger.debug('TopologyViewModel: No actual connections found, creating basic mesh');
for (let i = 0; i < nodes.length; i++) { for (let i = 0; i < nodes.length; i++) {
for (let j = i + 1; j < nodes.length; j++) { for (let j = i + 1; j < nodes.length; j++) {
const sourceNode = nodes[i]; const sourceNode = nodes[i];