Auto Refresh Dashboard

Automatically refreshes the Coralogix dashboard every 5 seconds

Size

5.4 KB

Version

1.1.2

Created

Nov 27, 2025

Updated

15 days ago

1// ==UserScript==
2// @name		Auto Refresh Dashboard
3// @description		Automatically refreshes the Coralogix dashboard every 5 seconds
4// @version		1.1.2
5// @match		https://*.impala.app.cx498.coralogix.com/*
6// @icon		https://impala.app.cx498.coralogix.com/favicon.svg
7// ==/UserScript==
8(function() {
9    'use strict';
10
11    console.log('Auto Refresh Dashboard extension started');
12
13    let autoRefreshEnabled = true;
14    let intervalId = null;
15
16    function clickRefreshButton() {
17        // Find the refresh button using its specific data-test attribute
18        const refreshButton = document.querySelector('cx-button[data-test="cd-refresh-dashboard-button"] button');
19        
20        if (refreshButton) {
21            console.log('Clicking refresh button');
22            refreshButton.click();
23        } else {
24            console.log('Refresh button not found, will retry');
25        }
26    }
27
28    function createToggleButton() {
29        // Find the refresh button container
30        const refreshButtonContainer = document.querySelector('sh-refresh-button');
31        
32        if (!refreshButtonContainer) {
33            console.log('Refresh button container not found, will retry');
34            return false;
35        }
36
37        // Check if toggle button already exists
38        if (document.getElementById('auto-refresh-toggle')) {
39            return true;
40        }
41
42        // Create toggle button container
43        const toggleContainer = document.createElement('div');
44        toggleContainer.id = 'auto-refresh-toggle';
45        toggleContainer.style.cssText = 'display: inline-flex; margin-right: 8px;';
46
47        // Create the toggle button
48        const toggleButton = document.createElement('button');
49        toggleButton.style.cssText = `
50            background-color: ${autoRefreshEnabled ? 'rgb(2, 148, 73)' : 'rgba(0, 0, 0, 0)'};
51            color: ${autoRefreshEnabled ? 'white' : 'rgb(2, 148, 73)'};
52            padding: 0px 12px;
53            border: 1px solid ${autoRefreshEnabled ? 'rgb(2, 148, 73)' : 'rgb(236, 236, 238)'};
54            border-radius: 6px;
55            font-size: 12px;
56            font-family: "Nunito Sans";
57            height: 32px;
58            display: flex;
59            align-items: center;
60            gap: 6px;
61            cursor: pointer;
62            transition: all 0.2s ease;
63        `;
64        
65        toggleButton.innerHTML = `
66            <span style="font-size: 14px;">${autoRefreshEnabled ? '⏸' : '▶'}</span>
67            <span>Auto Refresh (5s)</span>
68        `;
69
70        toggleButton.addEventListener('click', () => {
71            autoRefreshEnabled = !autoRefreshEnabled;
72            console.log('Auto refresh toggled:', autoRefreshEnabled ? 'enabled' : 'disabled');
73            
74            // Update button appearance
75            if (autoRefreshEnabled) {
76                toggleButton.style.backgroundColor = 'rgb(2, 148, 73)';
77                toggleButton.style.color = 'white';
78                toggleButton.style.borderColor = 'rgb(2, 148, 73)';
79                toggleButton.querySelector('span:first-child').textContent = '⏸';
80                startAutoRefresh();
81            } else {
82                toggleButton.style.backgroundColor = 'rgba(0, 0, 0, 0)';
83                toggleButton.style.color = 'rgb(2, 148, 73)';
84                toggleButton.style.borderColor = 'rgb(236, 236, 238)';
85                toggleButton.querySelector('span:first-child').textContent = '▶';
86                stopAutoRefresh();
87            }
88        });
89
90        toggleButton.addEventListener('mouseenter', () => {
91            if (!autoRefreshEnabled) {
92                toggleButton.style.backgroundColor = 'rgb(246, 246, 247)';
93            }
94        });
95
96        toggleButton.addEventListener('mouseleave', () => {
97            if (!autoRefreshEnabled) {
98                toggleButton.style.backgroundColor = 'rgba(0, 0, 0, 0)';
99            }
100        });
101
102        toggleContainer.appendChild(toggleButton);
103        
104        // Insert before the refresh button
105        refreshButtonContainer.parentNode.insertBefore(toggleContainer, refreshButtonContainer);
106        
107        console.log('Toggle button created');
108        return true;
109    }
110
111    function startAutoRefresh() {
112        if (intervalId) {
113            clearInterval(intervalId);
114        }
115        
116        // Click immediately
117        clickRefreshButton();
118        
119        // Set up interval to click every 5 seconds
120        intervalId = setInterval(() => {
121            if (autoRefreshEnabled) {
122                clickRefreshButton();
123            }
124        }, 5000);
125        
126        console.log('Auto refresh started');
127    }
128
129    function stopAutoRefresh() {
130        if (intervalId) {
131            clearInterval(intervalId);
132            intervalId = null;
133        }
134        console.log('Auto refresh stopped');
135    }
136
137    function init() {
138        console.log('Initializing auto-refresh with 5 second interval');
139        
140        // Wait for the page to be ready and create toggle button
141        setTimeout(() => {
142            const buttonCreated = createToggleButton();
143            if (buttonCreated && autoRefreshEnabled) {
144                startAutoRefresh();
145            } else if (!buttonCreated) {
146                // Retry if button wasn't created
147                setTimeout(init, 1000);
148            }
149        }, 1000);
150    }
151
152    // Wait for the page to be ready
153    if (document.readyState === 'loading') {
154        document.addEventListener('DOMContentLoaded', init);
155    } else {
156        init();
157    }
158})();
Auto Refresh Dashboard | Robomonkey