Hugging Face Deployer commited on
Commit
0c1d9c0
·
1 Parent(s): 0767db8

Deploy explorer to Hugging Face Spaces

Browse files
Files changed (1) hide show
  1. evals/interactive_explorer.py +73 -1
evals/interactive_explorer.py CHANGED
@@ -2144,6 +2144,15 @@ HTML_CONTENT = """
2144
  display: none;
2145
  }
2146
 
 
 
 
 
 
 
 
 
 
2147
  @keyframes spin {
2148
  to { transform: rotate(360deg); }
2149
  }
@@ -2592,7 +2601,7 @@ HTML_CONTENT = """
2592
  <div class="container">
2593
 
2594
  <!-- Sidebar History & Builder -->
2595
- <div class="sidebar" style="display: flex; flex-direction: column;">
2596
 
2597
  <!-- Sidebar Tabs -->
2598
  <div style="display: flex; border-bottom: 1px solid var(--border); transition: border-color var(--transition-speed) ease;">
@@ -2817,6 +2826,11 @@ HTML_CONTENT = """
2817
  <div class="empty-title">Data360 Spec View</div>
2818
  <div class="empty-desc">System engine visualization will render here.</div>
2819
  </div>
 
 
 
 
 
2820
  <div class="chart-container-div" id="system-chart-container"></div>
2821
 
2822
  <!-- Score & Critique Banner -->
@@ -2879,6 +2893,11 @@ HTML_CONTENT = """
2879
  <div class="empty-title">Direct LLM Spec</div>
2880
  <div class="empty-desc">Direct LLM generated visualization will render here.</div>
2881
  </div>
 
 
 
 
 
2882
  <div class="chart-container-div" id="llm-chart-container"></div>
2883
 
2884
  <!-- Score & Critique Banner -->
@@ -3090,6 +3109,47 @@ HTML_CONTENT = """
3090
  }
3091
  }
3092
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3093
  async function loadReport(filename) {
3094
  try {
3095
  activeReportFilename = filename;
@@ -3106,6 +3166,7 @@ HTML_CONTENT = """
3106
  function renderReport(data) {
3107
  activeReport = data;
3108
  window.lastReportData = data;
 
3109
 
3110
  document.getElementById("welcome-container").style.display = "none";
3111
  document.getElementById("viz-grid").style.display = "grid";
@@ -3465,6 +3526,7 @@ HTML_CONTENT = """
3465
  btn.disabled = true;
3466
  spinner.style.display = "block";
3467
  label.textContent = "Running Vision Audit...";
 
3468
 
3469
  const logConsole = document.getElementById("log-console");
3470
  logConsole.innerHTML += `<div class="terminal-line info">Running Visual Critique on both spec renders (GPT-4o Vision)...</div>`;
@@ -3496,6 +3558,7 @@ HTML_CONTENT = """
3496
  } finally {
3497
  btn.disabled = false;
3498
  spinner.style.display = "none";
 
3499
  }
3500
  }
3501
 
@@ -3510,6 +3573,8 @@ HTML_CONTENT = """
3510
  btn.disabled = true;
3511
  spinner.style.display = "block";
3512
  label.textContent = "Rerunning...";
 
 
3513
 
3514
  const logConsole = document.getElementById("log-console");
3515
  logConsole.innerHTML = `<div class="terminal-line info">Triggering rerun for report: ${activeReportFilename}...</div>`;
@@ -3527,10 +3592,12 @@ HTML_CONTENT = """
3527
  await loadReport(activeReportFilename);
3528
  } catch (err) {
3529
  logConsole.innerHTML += `<div class="terminal-line err">Error during rerun: ${err.message}</div>`;
 
3530
  } finally {
3531
  btn.disabled = false;
3532
  spinner.style.display = "none";
3533
  label.textContent = "🔄 Rerun this run";
 
3534
  }
3535
  }
3536
 
@@ -3961,6 +4028,8 @@ HTML_CONTENT = """
3961
  const oldText = generateBtn.innerText;
3962
  generateBtn.disabled = true;
3963
  generateBtn.innerText = 'Generating Visuals...';
 
 
3964
 
3965
  // Build filters
3966
  const disaggregation_filters = {};
@@ -3996,6 +4065,7 @@ HTML_CONTENT = """
3996
  const data = await res.json();
3997
  if (data.error) {
3998
  alert(`Generation failed: ${data.error}`);
 
3999
  return;
4000
  }
4001
 
@@ -4008,9 +4078,11 @@ HTML_CONTENT = """
4008
 
4009
  } catch (err) {
4010
  alert(`Request failed: ${err}`);
 
4011
  } finally {
4012
  generateBtn.disabled = false;
4013
  generateBtn.innerText = oldText;
 
4014
  }
4015
  }
4016
 
 
2144
  display: none;
2145
  }
2146
 
2147
+ .spinner-large {
2148
+ width: 40px;
2149
+ height: 40px;
2150
+ border: 3px solid rgba(255, 255, 255, 0.1);
2151
+ border-top-color: var(--accent);
2152
+ border-radius: 50%;
2153
+ animation: spin 0.8s linear infinite;
2154
+ }
2155
+
2156
  @keyframes spin {
2157
  to { transform: rotate(360deg); }
2158
  }
 
2601
  <div class="container">
2602
 
2603
  <!-- Sidebar History & Builder -->
2604
+ <div class="sidebar" id="sidebar" style="display: flex; flex-direction: column; transition: opacity var(--transition-speed) ease, filter var(--transition-speed) ease;">
2605
 
2606
  <!-- Sidebar Tabs -->
2607
  <div style="display: flex; border-bottom: 1px solid var(--border); transition: border-color var(--transition-speed) ease;">
 
2826
  <div class="empty-title">Data360 Spec View</div>
2827
  <div class="empty-desc">System engine visualization will render here.</div>
2828
  </div>
2829
+ <div class="empty-state" id="system-chart-loading-state" style="display: none; flex-direction: column; justify-content: center; align-items: center; min-height: 250px;">
2830
+ <div class="spinner-large" style="margin-bottom: 16px;"></div>
2831
+ <div class="empty-title" style="font-size:14px; font-weight:600; color:var(--text);">Compiling Spec...</div>
2832
+ <div class="empty-desc" style="font-size:12px; color:var(--text-muted); margin-top:4px;">Retrieving MCP data and rendering charts</div>
2833
+ </div>
2834
  <div class="chart-container-div" id="system-chart-container"></div>
2835
 
2836
  <!-- Score & Critique Banner -->
 
2893
  <div class="empty-title">Direct LLM Spec</div>
2894
  <div class="empty-desc">Direct LLM generated visualization will render here.</div>
2895
  </div>
2896
+ <div class="empty-state" id="llm-chart-loading-state" style="display: none; flex-direction: column; justify-content: center; align-items: center; min-height: 250px;">
2897
+ <div class="spinner-large" style="margin-bottom: 16px;"></div>
2898
+ <div class="empty-title" style="font-size:14px; font-weight:600; color:var(--text);">Compiling Spec...</div>
2899
+ <div class="empty-desc" style="font-size:12px; color:var(--text-muted); margin-top:4px;">Retrieving Direct LLM visualization output</div>
2900
+ </div>
2901
  <div class="chart-container-div" id="llm-chart-container"></div>
2902
 
2903
  <!-- Score & Critique Banner -->
 
3109
  }
3110
  }
3111
 
3112
+ // Background task interface blocker
3113
+ function setSidebarDisabled(disabled) {
3114
+ const sidebar = document.getElementById('sidebar');
3115
+ if (!sidebar) return;
3116
+ if (disabled) {
3117
+ sidebar.style.pointerEvents = 'none';
3118
+ sidebar.style.opacity = '0.5';
3119
+ sidebar.style.filter = 'grayscale(35%)';
3120
+ sidebar.style.cursor = 'not-allowed';
3121
+ } else {
3122
+ sidebar.style.pointerEvents = 'auto';
3123
+ sidebar.style.opacity = '1';
3124
+ sidebar.style.filter = 'none';
3125
+ sidebar.style.cursor = 'default';
3126
+ }
3127
+ }
3128
+
3129
+ // Chart loaders state toggler
3130
+ function setChartLoading(loading) {
3131
+ const sysEmpty = document.getElementById("system-chart-empty-state");
3132
+ const sysLoading = document.getElementById("system-chart-loading-state");
3133
+ const sysContainer = document.getElementById("system-chart-container");
3134
+
3135
+ const llmEmpty = document.getElementById("llm-chart-empty-state");
3136
+ const llmLoading = document.getElementById("llm-chart-loading-state");
3137
+ const llmContainer = document.getElementById("llm-chart-container");
3138
+
3139
+ if (loading) {
3140
+ if (sysEmpty) sysEmpty.style.display = "none";
3141
+ if (sysLoading) sysLoading.style.display = "flex";
3142
+ if (sysContainer) sysContainer.style.display = "none";
3143
+
3144
+ if (llmEmpty) llmEmpty.style.display = "none";
3145
+ if (llmLoading) llmLoading.style.display = "flex";
3146
+ if (llmContainer) llmContainer.style.display = "none";
3147
+ } else {
3148
+ if (sysLoading) sysLoading.style.display = "none";
3149
+ if (llmLoading) llmLoading.style.display = "none";
3150
+ }
3151
+ }
3152
+
3153
  async function loadReport(filename) {
3154
  try {
3155
  activeReportFilename = filename;
 
3166
  function renderReport(data) {
3167
  activeReport = data;
3168
  window.lastReportData = data;
3169
+ setChartLoading(false);
3170
 
3171
  document.getElementById("welcome-container").style.display = "none";
3172
  document.getElementById("viz-grid").style.display = "grid";
 
3526
  btn.disabled = true;
3527
  spinner.style.display = "block";
3528
  label.textContent = "Running Vision Audit...";
3529
+ setSidebarDisabled(true);
3530
 
3531
  const logConsole = document.getElementById("log-console");
3532
  logConsole.innerHTML += `<div class="terminal-line info">Running Visual Critique on both spec renders (GPT-4o Vision)...</div>`;
 
3558
  } finally {
3559
  btn.disabled = false;
3560
  spinner.style.display = "none";
3561
+ setSidebarDisabled(false);
3562
  }
3563
  }
3564
 
 
3573
  btn.disabled = true;
3574
  spinner.style.display = "block";
3575
  label.textContent = "Rerunning...";
3576
+ setSidebarDisabled(true);
3577
+ setChartLoading(true);
3578
 
3579
  const logConsole = document.getElementById("log-console");
3580
  logConsole.innerHTML = `<div class="terminal-line info">Triggering rerun for report: ${activeReportFilename}...</div>`;
 
3592
  await loadReport(activeReportFilename);
3593
  } catch (err) {
3594
  logConsole.innerHTML += `<div class="terminal-line err">Error during rerun: ${err.message}</div>`;
3595
+ setChartLoading(false);
3596
  } finally {
3597
  btn.disabled = false;
3598
  spinner.style.display = "none";
3599
  label.textContent = "🔄 Rerun this run";
3600
+ setSidebarDisabled(false);
3601
  }
3602
  }
3603
 
 
4028
  const oldText = generateBtn.innerText;
4029
  generateBtn.disabled = true;
4030
  generateBtn.innerText = 'Generating Visuals...';
4031
+ setSidebarDisabled(true);
4032
+ setChartLoading(true);
4033
 
4034
  // Build filters
4035
  const disaggregation_filters = {};
 
4065
  const data = await res.json();
4066
  if (data.error) {
4067
  alert(`Generation failed: ${data.error}`);
4068
+ setChartLoading(false);
4069
  return;
4070
  }
4071
 
 
4078
 
4079
  } catch (err) {
4080
  alert(`Request failed: ${err}`);
4081
+ setChartLoading(false);
4082
  } finally {
4083
  generateBtn.disabled = false;
4084
  generateBtn.innerText = oldText;
4085
+ setSidebarDisabled(false);
4086
  }
4087
  }
4088