feat: primary node switching in topology graph
This commit is contained in:
@@ -77,6 +77,65 @@ document.addEventListener('DOMContentLoaded', async function() {
|
||||
clusterStatusComponent.mount();
|
||||
logger.debug('App: Cluster status component initialized');
|
||||
|
||||
// Set up random primary node button
|
||||
logger.debug('App: Setting up random primary node button...');
|
||||
const randomPrimaryBtn = document.getElementById('random-primary-toggle');
|
||||
if (randomPrimaryBtn) {
|
||||
randomPrimaryBtn.addEventListener('click', async function() {
|
||||
try {
|
||||
// Add spinning animation
|
||||
randomPrimaryBtn.classList.add('spinning');
|
||||
randomPrimaryBtn.disabled = true;
|
||||
|
||||
logger.debug('App: Selecting random primary node...');
|
||||
await clusterViewModel.selectRandomPrimaryNode();
|
||||
|
||||
// Show success state briefly
|
||||
logger.info('App: Random primary node selected successfully');
|
||||
|
||||
// Refresh topology to show new primary node connections
|
||||
// Wait a bit for the backend to update, then refresh topology
|
||||
setTimeout(async () => {
|
||||
logger.debug('App: Refreshing topology after primary node change...');
|
||||
try {
|
||||
await topologyViewModel.updateNetworkTopology();
|
||||
logger.debug('App: Topology refreshed successfully');
|
||||
} catch (error) {
|
||||
logger.error('App: Failed to refresh topology:', error);
|
||||
}
|
||||
}, 1000);
|
||||
|
||||
// Also refresh cluster view to update member list with new primary
|
||||
setTimeout(async () => {
|
||||
logger.debug('App: Refreshing cluster view after primary node change...');
|
||||
try {
|
||||
if (clusterViewModel.updateClusterMembers) {
|
||||
await clusterViewModel.updateClusterMembers();
|
||||
}
|
||||
logger.debug('App: Cluster view refreshed successfully');
|
||||
} catch (error) {
|
||||
logger.error('App: Failed to refresh cluster view:', error);
|
||||
}
|
||||
}, 1000);
|
||||
|
||||
// Remove spinning animation after delay
|
||||
setTimeout(() => {
|
||||
randomPrimaryBtn.classList.remove('spinning');
|
||||
randomPrimaryBtn.disabled = false;
|
||||
}, 1500);
|
||||
|
||||
} catch (error) {
|
||||
logger.error('App: Failed to select random primary node:', error);
|
||||
randomPrimaryBtn.classList.remove('spinning');
|
||||
randomPrimaryBtn.disabled = false;
|
||||
|
||||
// Show error notification (could be enhanced with a toast notification)
|
||||
alert('Failed to select random primary node: ' + error.message);
|
||||
}
|
||||
});
|
||||
logger.debug('App: Random primary node button configured');
|
||||
}
|
||||
|
||||
// Set up navigation event listeners
|
||||
logger.debug('App: Setting up navigation...');
|
||||
app.setupNavigation();
|
||||
|
||||
Reference in New Issue
Block a user