Zhen Ye commited on
Commit
422c79a
·
1 Parent(s): f0b6460

reload input

Browse files
Files changed (1) hide show
  1. demo.html +21 -1
demo.html CHANGED
@@ -264,6 +264,13 @@
264
  display: block;
265
  }
266
 
 
 
 
 
 
 
 
267
  .spinner {
268
  border: 4px solid #e5e7eb;
269
  border-top: 4px solid #1f2933;
@@ -383,6 +390,7 @@
383
  <div class="spinner"></div>
384
  <p>Processing video... This may take a while depending on video length.</p>
385
  </div>
 
386
 
387
  <!-- Results -->
388
  <div class="section hidden" id="resultsSection">
@@ -437,6 +445,7 @@
437
  const firstFrameImage = document.getElementById('firstFrameImage');
438
  const downloadBtn = document.getElementById('downloadBtn');
439
  let statusPoller = null;
 
440
  // Mode selection handler
441
  modeCards.forEach(card => {
442
  card.addEventListener('click', (e) => {
@@ -504,7 +513,10 @@
504
  }
505
  firstFrameImage.removeAttribute('src');
506
  processedVideo.removeAttribute('src');
 
507
  downloadBtn.removeAttribute('href');
 
 
508
 
509
  // Prepare form data
510
  const formData = new FormData();
@@ -529,6 +541,8 @@
529
  const data = await response.json();
530
  firstFrameImage.src = `${data.first_frame_url}?t=${Date.now()}`;
531
  resultsSection.classList.remove('hidden');
 
 
532
 
533
  statusPoller = setInterval(async () => {
534
  try {
@@ -536,6 +550,7 @@
536
  if (!statusResponse.ok) {
537
  clearInterval(statusPoller);
538
  statusPoller = null;
 
539
  alert('Job expired. Please re-upload the video.');
540
  return;
541
  }
@@ -543,6 +558,7 @@
543
  if (statusData.status === 'completed') {
544
  clearInterval(statusPoller);
545
  statusPoller = null;
 
546
  const videoResponse = await fetch(data.video_url);
547
  if (!videoResponse.ok) {
548
  alert('Failed to fetch processed video.');
@@ -555,15 +571,19 @@
555
  } else if (statusData.status === 'failed') {
556
  clearInterval(statusPoller);
557
  statusPoller = null;
 
558
  alert(statusData.error || 'Processing failed.');
 
 
559
  }
560
  } catch (pollError) {
561
  clearInterval(statusPoller);
562
  statusPoller = null;
563
  console.error('Polling error:', pollError);
 
564
  alert('Polling error: ' + pollError.message);
565
  }
566
- }, 2000);
567
  } catch (error) {
568
  console.error('Error:', error);
569
  alert('Network error: ' + error.message);
 
264
  display: block;
265
  }
266
 
267
+ .status-line {
268
+ margin-top: 12px;
269
+ font-size: 0.95rem;
270
+ color: #4b5563;
271
+ text-align: center;
272
+ }
273
+
274
  .spinner {
275
  border: 4px solid #e5e7eb;
276
  border-top: 4px solid #1f2933;
 
390
  <div class="spinner"></div>
391
  <p>Processing video... This may take a while depending on video length.</p>
392
  </div>
393
+ <p class="status-line hidden" id="statusLine"></p>
394
 
395
  <!-- Results -->
396
  <div class="section hidden" id="resultsSection">
 
445
  const firstFrameImage = document.getElementById('firstFrameImage');
446
  const downloadBtn = document.getElementById('downloadBtn');
447
  let statusPoller = null;
448
+ const statusLine = document.getElementById('statusLine');
449
  // Mode selection handler
450
  modeCards.forEach(card => {
451
  card.addEventListener('click', (e) => {
 
513
  }
514
  firstFrameImage.removeAttribute('src');
515
  processedVideo.removeAttribute('src');
516
+ processedVideo.load();
517
  downloadBtn.removeAttribute('href');
518
+ statusLine.classList.add('hidden');
519
+ statusLine.textContent = '';
520
 
521
  // Prepare form data
522
  const formData = new FormData();
 
541
  const data = await response.json();
542
  firstFrameImage.src = `${data.first_frame_url}?t=${Date.now()}`;
543
  resultsSection.classList.remove('hidden');
544
+ statusLine.textContent = 'Status: processing';
545
+ statusLine.classList.remove('hidden');
546
 
547
  statusPoller = setInterval(async () => {
548
  try {
 
550
  if (!statusResponse.ok) {
551
  clearInterval(statusPoller);
552
  statusPoller = null;
553
+ statusLine.textContent = 'Status: expired (please re-upload)';
554
  alert('Job expired. Please re-upload the video.');
555
  return;
556
  }
 
558
  if (statusData.status === 'completed') {
559
  clearInterval(statusPoller);
560
  statusPoller = null;
561
+ statusLine.textContent = 'Status: completed';
562
  const videoResponse = await fetch(data.video_url);
563
  if (!videoResponse.ok) {
564
  alert('Failed to fetch processed video.');
 
571
  } else if (statusData.status === 'failed') {
572
  clearInterval(statusPoller);
573
  statusPoller = null;
574
+ statusLine.textContent = 'Status: failed';
575
  alert(statusData.error || 'Processing failed.');
576
+ } else if (statusData.status) {
577
+ statusLine.textContent = `Status: ${statusData.status}`;
578
  }
579
  } catch (pollError) {
580
  clearInterval(statusPoller);
581
  statusPoller = null;
582
  console.error('Polling error:', pollError);
583
+ statusLine.textContent = 'Status: polling error';
584
  alert('Polling error: ' + pollError.message);
585
  }
586
+ }, 10000);
587
  } catch (error) {
588
  console.error('Error:', error);
589
  alert('Network error: ' + error.message);