refactor(logging): replace remaining console.* with logger.debug/error across app, view-models, api-client, and framework
This commit is contained in:
@@ -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 } = {}) {
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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];
|
||||||
|
|||||||
Reference in New Issue
Block a user