da03 commited on
Commit
cd4cdde
·
1 Parent(s): 2ff6d31
Files changed (1) hide show
  1. static/index.html +53 -5
static/index.html CHANGED
@@ -93,7 +93,7 @@
93
  <div class="canvas-container">
94
  <div id="timeoutWarning" class="alert alert-warning" style="display: none; margin-bottom: 15px;">
95
  <strong>Connection Timeout Warning:</strong>
96
- No user activity detected. Connection will be dropped in <span id="timeoutCountdown">10</span> seconds and page will refresh automatically.
97
  <button type="button" class="btn btn-sm btn-primary ms-2" onclick="resetTimeout()">Stay Connected</button>
98
  </div>
99
 
@@ -169,13 +169,20 @@
169
  }
170
 
171
  // Function to show connection status
172
- function showConnectionStatus(message) {
173
  ctx.fillStyle = "#ffffff";
174
  ctx.fillRect(0, 0, canvas.width, canvas.height);
175
  ctx.font = "18px Arial";
176
  ctx.fillStyle = "#666666";
177
  ctx.textAlign = "center";
 
178
  ctx.fillText(message, canvas.width/2, canvas.height/2);
 
 
 
 
 
 
179
  }
180
 
181
  function connect() {
@@ -267,10 +274,38 @@
267
  document.getElementById('useRnnToggle').checked = data.use_rnn;
268
  } else if (data.type === "timeout_warning") {
269
  console.log(`Received timeout warning: ${data.timeout_in} seconds remaining`);
270
- startTimeoutCountdown();
 
271
  } else if (data.type === "activity_reset") {
272
  console.log("Server detected user activity, resetting timeout");
273
  stopTimeoutCountdown();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
274
  }
275
  };
276
  }
@@ -401,12 +436,12 @@
401
  }
402
  }
403
 
404
- function startTimeoutCountdown() {
405
  if (timeoutCountdownInterval) {
406
  clearInterval(timeoutCountdownInterval);
407
  }
408
 
409
- timeoutCountdown = 10;
410
  timeoutWarningActive = true;
411
 
412
  // Show warning
@@ -415,6 +450,12 @@
415
  warning.style.display = 'block';
416
  }
417
 
 
 
 
 
 
 
418
  // Start countdown
419
  timeoutCountdownInterval = setInterval(() => {
420
  timeoutCountdown--;
@@ -456,6 +497,13 @@
456
  }
457
  }
458
 
 
 
 
 
 
 
 
459
  function resetTimeout() {
460
  // Send a regular input to reset the server's timeout
461
  if (socket && socket.readyState === WebSocket.OPEN && lastSentPosition) {
 
93
  <div class="canvas-container">
94
  <div id="timeoutWarning" class="alert alert-warning" style="display: none; margin-bottom: 15px;">
95
  <strong>Connection Timeout Warning:</strong>
96
+ <span id="timeoutMessage">No user activity detected. Connection will be dropped in <span id="timeoutCountdown">10</span> seconds and page will refresh automatically.</span>
97
  <button type="button" class="btn btn-sm btn-primary ms-2" onclick="resetTimeout()">Stay Connected</button>
98
  </div>
99
 
 
169
  }
170
 
171
  // Function to show connection status
172
+ function showConnectionStatus(message, subtitle = null) {
173
  ctx.fillStyle = "#ffffff";
174
  ctx.fillRect(0, 0, canvas.width, canvas.height);
175
  ctx.font = "18px Arial";
176
  ctx.fillStyle = "#666666";
177
  ctx.textAlign = "center";
178
+ //ctx.fillText(message, canvas.width/2, canvas.height/2 - 10);
179
  ctx.fillText(message, canvas.width/2, canvas.height/2);
180
+
181
+ if (subtitle) {
182
+ ctx.font = "14px Arial";
183
+ ctx.fillStyle = "#888888";
184
+ ctx.fillText(subtitle, canvas.width/2, canvas.height/2 + 15);
185
+ }
186
  }
187
 
188
  function connect() {
 
274
  document.getElementById('useRnnToggle').checked = data.use_rnn;
275
  } else if (data.type === "timeout_warning") {
276
  console.log(`Received timeout warning: ${data.timeout_in} seconds remaining`);
277
+ setTimeoutMessage(`No activity detected. Connection will be dropped in <span id="timeoutCountdown">${data.timeout_in}</span> seconds and page will refresh automatically.`);
278
+ startTimeoutCountdown(data.timeout_in);
279
  } else if (data.type === "activity_reset") {
280
  console.log("Server detected user activity, resetting timeout");
281
  stopTimeoutCountdown();
282
+ } else if (data.type === "queue_update") {
283
+ console.log(`Queue update: Position ${data.position}/${data.total_waiting}, estimated wait: ${data.estimated_wait_minutes.toFixed(1)} minutes`);
284
+ const waitMinutes = Math.ceil(data.estimated_wait_minutes);
285
+ const waitText = waitMinutes === 1 ? "1 minute" : `${waitMinutes} minutes`;
286
+ showConnectionStatus(
287
+ `Position ${data.position} in queue`,
288
+ `Estimated wait time: ${waitText}`
289
+ );
290
+ } else if (data.type === "session_start") {
291
+ console.log("Session started, clearing queue display");
292
+ // Clear the queue status display
293
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
294
+ } else if (data.type === "session_warning") {
295
+ console.log(`Session time warning: ${data.time_remaining} seconds remaining`);
296
+ setTimeoutMessage(`Session time limit reached. You will be disconnected in <span id="timeoutCountdown">${Math.ceil(data.time_remaining)}</span> seconds due to queue waiting.`);
297
+ startTimeoutCountdown(Math.ceil(data.time_remaining));
298
+ } else if (data.type === "idle_warning") {
299
+ console.log(`Idle warning: ${data.time_remaining} seconds until timeout`);
300
+ setTimeoutMessage(`No activity detected. Connection will be dropped in <span id="timeoutCountdown">${Math.ceil(data.time_remaining)}</span> seconds and page will refresh automatically.`);
301
+ startTimeoutCountdown(Math.ceil(data.time_remaining));
302
+ } else if (data.type === "grace_period") {
303
+ console.log(`Grace period: ${data.time_remaining} seconds remaining`);
304
+ setTimeoutMessage(`Grace period: Session will end in <span id="timeoutCountdown">${Math.ceil(data.time_remaining)}</span> seconds unless queue empties.`);
305
+ startTimeoutCountdown(Math.ceil(data.time_remaining));
306
+ } else if (data.type === "time_limit_removed") {
307
+ console.log("Time limit removed - queue became empty");
308
+ stopTimeoutCountdown();
309
  }
310
  };
311
  }
 
436
  }
437
  }
438
 
439
+ function startTimeoutCountdown(initialTime = 10) {
440
  if (timeoutCountdownInterval) {
441
  clearInterval(timeoutCountdownInterval);
442
  }
443
 
444
+ timeoutCountdown = initialTime;
445
  timeoutWarningActive = true;
446
 
447
  // Show warning
 
450
  warning.style.display = 'block';
451
  }
452
 
453
+ // Update initial display
454
+ const countdownElement = document.getElementById('timeoutCountdown');
455
+ if (countdownElement) {
456
+ countdownElement.textContent = timeoutCountdown;
457
+ }
458
+
459
  // Start countdown
460
  timeoutCountdownInterval = setInterval(() => {
461
  timeoutCountdown--;
 
497
  }
498
  }
499
 
500
+ function setTimeoutMessage(message) {
501
+ const messageElement = document.getElementById('timeoutMessage');
502
+ if (messageElement) {
503
+ messageElement.innerHTML = message;
504
+ }
505
+ }
506
+
507
  function resetTimeout() {
508
  // Send a regular input to reset the server's timeout
509
  if (socket && socket.readyState === WebSocket.OPEN && lastSentPosition) {