@@ -138,89 +138,78 @@ def generate_auto_refresh_controls
138138 def generate_auto_refresh_script
139139 return '' unless SolidQueueMonitor . auto_refresh_enabled
140140
141- interval = SolidQueueMonitor . auto_refresh_interval
142- <<-HTML
143- < script >
144- (function() {
145- var REFRESH_INTERVAL = #{ interval } ;
146- var countdown = REFRESH_INTERVAL;
147- var timerId = null;
148- var isEnabled = localStorage.getItem('sqm_auto_refresh') !== 'false';
149-
150- var toggle = document.getElementById('auto-refresh-toggle');
151- var indicator = document.getElementById('auto-refresh-indicator');
152- var countdownEl = document.getElementById('auto-refresh-countdown');
153- var refreshBtn = document.getElementById('refresh-now-btn');
154-
155- function updateUI() {
156- if (toggle) toggle.checked = isEnabled;
157- if (indicator) indicator.classList.toggle('active', isEnabled);
158- if (countdownEl) {
159- countdownEl.textContent = countdown + 's';
160- countdownEl.style.opacity = isEnabled ? '1' : '0.4';
161- }
162- }
163-
164- function tick() {
165- countdown--;
166- if (countdown < = 0) {
167- refresh();
168- } else {
169- updateUI();
170- }
171- }
172-
173- function startTimer() {
174- stopTimer();
175- countdown = REFRESH_INTERVAL;
176- updateUI();
177- timerId = setInterval(tick, 1000);
178- }
179-
180- function stopTimer() {
181- if (timerId) {
182- clearInterval(timerId);
183- timerId = null;
184- }
185- }
141+ "<script>#{ auto_refresh_javascript } </script>"
142+ end
186143
187- function refresh() {
188- window.location.reload();
189- }
144+ def auto_refresh_javascript
145+ interval = SolidQueueMonitor . auto_refresh_interval
146+ <<-JS
147+ (function() {
148+ var REFRESH_INTERVAL = #{ interval } ;
149+ var countdown = REFRESH_INTERVAL;
150+ var timerId = null;
151+ var isEnabled = localStorage.getItem('sqm_auto_refresh') !== 'false';
152+ #{ auto_refresh_dom_elements }
153+ #{ auto_refresh_functions }
154+ #{ auto_refresh_event_listeners }
155+ #{ auto_refresh_init }
156+ })();
157+ JS
158+ end
190159
191- function setEnabled(enabled) {
192- isEnabled = enabled;
193- localStorage.setItem('sqm_auto_refresh', enabled ? 'true' : 'false');
194- if (enabled) {
195- startTimer();
196- } else {
197- stopTimer();
198- countdown = REFRESH_INTERVAL;
199- updateUI();
200- }
201- }
160+ def auto_refresh_dom_elements
161+ <<-JS
162+ var toggle = document.getElementById('auto-refresh-toggle');
163+ var indicator = document.getElementById('auto-refresh-indicator');
164+ var countdownEl = document.getElementById('auto-refresh-countdown');
165+ var refreshBtn = document.getElementById('refresh-now-btn');
166+ JS
167+ end
202168
203- // Event listeners
204- if (toggle) {
205- toggle.addEventListener('change', function() {
206- setEnabled(this.checked);
207- });
208- }
169+ def auto_refresh_functions
170+ <<-JS
171+ function updateUI() {
172+ if (toggle) toggle.checked = isEnabled;
173+ if (indicator) indicator.classList.toggle('active', isEnabled);
174+ if (countdownEl) {
175+ countdownEl.textContent = countdown + 's';
176+ countdownEl.style.opacity = isEnabled ? '1' : '0.4';
177+ }
178+ }
179+ function tick() {
180+ countdown--;
181+ if (countdown <= 0) { refresh(); } else { updateUI(); }
182+ }
183+ function startTimer() {
184+ stopTimer();
185+ countdown = REFRESH_INTERVAL;
186+ updateUI();
187+ timerId = setInterval(tick, 1000);
188+ }
189+ function stopTimer() {
190+ if (timerId) { clearInterval(timerId); timerId = null; }
191+ }
192+ function refresh() { window.location.reload(); }
193+ function setEnabled(enabled) {
194+ isEnabled = enabled;
195+ localStorage.setItem('sqm_auto_refresh', enabled ? 'true' : 'false');
196+ if (enabled) { startTimer(); } else { stopTimer(); countdown = REFRESH_INTERVAL; updateUI(); }
197+ }
198+ JS
199+ end
209200
210- if (refreshBtn) {
211- refreshBtn.addEventListener('click', function() {
212- refresh();
213- });
214- }
201+ def auto_refresh_event_listeners
202+ <<-JS
203+ if (toggle) { toggle.addEventListener('change', function() { setEnabled(this.checked); }); }
204+ if (refreshBtn) { refreshBtn.addEventListener('click', function() { refresh(); }); }
205+ JS
206+ end
215207
216- // Initialize
217- updateUI();
218- if (isEnabled) {
219- startTimer();
220- }
221- })();
222- </ script>
223- HTML
208+ def auto_refresh_init
209+ <<-JS
210+ updateUI();
211+ if (isEnabled) { startTimer(); }
212+ JS
224213 end
225214
226215 def default_url_options
0 commit comments