SeaWolf-AI commited on
Commit
a8d8cbf
·
verified ·
1 Parent(s): 9bf2313

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +138 -109
index.html CHANGED
@@ -176,7 +176,7 @@ body.dark thead{background:var(--surface-alt)!important;}
176
  <header>
177
  <div class="badge-row">
178
  <div class="badge"><div class="pulse"></div>LIVE · 2026.03 · v1.0</div>
179
- <button onclick="document.body.classList.toggle('dark');localStorage.setItem('wm-dark',document.body.classList.contains('dark'));this.textContent=document.body.classList.contains('dark')?'☀️ Light':'🌙 Dark'"
180
  style="background:var(--surface);border:1px solid var(--border);border-radius:20px;padding:4px 14px;font-size:10px;font-family:var(--mono);color:var(--text-sec);cursor:pointer;font-weight:700;transition:all .2s;box-shadow:var(--shadow-sm)">🌙 Dark</button>
181
  <div style="display:flex;gap:4px">
182
  <a href="https://huggingface.co/datasets/VIDraft/WorldModelBench" target="_blank"
@@ -219,12 +219,12 @@ body.dark thead{background:var(--surface-alt)!important;}
219
  </div>
220
 
221
  <!-- ===== TABS ===== -->
222
- <div class="tab-bar">
223
- <div class="tab on" onclick="showTab('lb',this)">🏆 Leaderboard</div>
224
- <div class="tab" onclick="showTab('cats',this)">📊 Categories</div>
225
- <div class="tab" onclick="showTab('structure',this)">📐 Structure</div>
226
- <div class="tab" onclick="showTab('submit',this)">📝 Submit</div>
227
- <div class="tab" onclick="showTab('about',this)">ℹ️ About</div>
228
  </div>
229
 
230
  <!-- ===== TAB: LEADERBOARD ===== -->
@@ -234,13 +234,13 @@ body.dark thead{background:var(--surface-alt)!important;}
234
  <thead>
235
  <tr>
236
  <th class="c-model" style="text-align:left">Model</th>
237
- <th onclick="srt(0)" title="WM Score (0~1000)">WM Score<span class="sa">↕</span></th>
238
  <th>Grade</th>
239
- <th onclick="srt(1)" class="p1-col" title="👁 Perception (0~250)">👁 인식<span class="sa">↕</span></th>
240
- <th onclick="srt(2)" class="p2-col" title="🧠 Cognition (0~450)">🧠 인지<span class="sa">↕</span></th>
241
- <th onclick="srt(3)" class="p3-col" title="🔥 Embodiment (0~300)">🔥 구현<span class="sa">↕</span></th>
242
- <th onclick="srt(4)" title="FPS">FPS<span class="sa">↕</span></th>
243
- <th onclick="srt(5)" title="Cognitive Latency (ms)">Lat(ms)<span class="sa">↕</span></th>
244
  <th>Track</th>
245
  <th>Brain</th>
246
  <th>Motion</th>
@@ -511,110 +511,139 @@ body.dark thead{background:var(--surface-alt)!important;}
511
 
512
  </div><!-- /wrap -->
513
 
514
- <!-- ===== DATA ===== -->
515
  <script>
516
- const LB_DATA = [
517
- {
518
- model:"VIDRAFT PROMETHEUS v1.0", org:"VIDRAFT", date:"2026-03",
519
- wm:726, grade:"B",
520
- p1:140, p2:390, p3:196,
521
- fps:47.0, lat:3100, track:"C",
522
- brain:"Kimi K2.5", motion:"FloodDiffusion Tiny", gpu:"L40S 48GB",
523
- cats:{C01:65,C02:75,C03:85,C04:90,C05:85,C06:60,C07:70,C08:80,C09:85,C10:35}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
524
  }
525
- ];
526
-
527
- const CAT_DATA = [
528
- {id:"C01",name:"환경 인식 정확도",pillar:"P1",max:100,score:65,first:"",desc:"주변 벽·장애물·지형을 정확히 파악"},
529
- {id:"C02",name:"개체 인식 및 분류",pillar:"P1",max:100,score:75,first:"",desc:"NPC를 맹수/사람/환경으로 정확히 분류"},
530
- {id:"C03",name:"예측 기반 추론",pillar:"P2",max:100,score:85,first:"✦",desc:"4방향 미래 결과 예측 → 최선 선택"},
531
- {id:"C04",name:"위협 유형별 차별 반응",pillar:"P2",max:100,score:90,first:"✦",desc:"맹수→전력질주 vs 사람→걸어서 회피"},
532
- {id:"C05",name:"자율 감정 에스컬레이션",pillar:"P2",max:100,score:85,first:"✦✦",desc:"위협 지속 시 감정 자율 격화"},
533
- {id:"C06",name:"맥락 기억 및 활용",pillar:"P2",max:100,score:60,first:"✦",desc:"이전 실패 기억 → 다음 판단 반영"},
534
- {id:"C07",name:"위협 해제 후 적응",pillar:"P2",max:100,score:70,first:"✦",desc:"위협 소멸 후 서서히 정상화+경계"},
535
- {id:"C08",name:"모션 감정 표현력",pillar:"P3",max:100,score:80,first:"✦",desc:"판단 감정이 모션에 반영되는 풍부함"},
536
- {id:"C09",name:"실시간 인지-행동 성능",pillar:"P3",max:100,score:85,first:"",desc:"인지 루프 FPS + 지연시간"},
537
- {id:"C10",name:"신체 교체 확장성",pillar:"P3",max:100,score:35,first:"✦✦",desc:"동일 두뇌로 다른 신체(로봇/드론) 적용"},
538
- ];
539
-
540
- const PILLAR_COLOR = {P1:"#7b8fd4",P2:"#e8593c",P3:"#d4a044"};
541
-
542
- function gradeClass(g){return `gr gr-${g}`;}
543
- function trackClass(t){return `tb tb-${t}`;}
544
- function scoreBar(v,max,color){
545
- const pct=Math.round(v/max*100);
546
- return `<div class="sc"><div class="sn" style="color:${color}">${v}</div><div class="sb"><div class="sf" style="width:${pct}%;background:${color}"></div></div></div>`;
547
- }
548
 
549
- function renderLB(){
550
- const tb=document.getElementById('LB_BODY');
551
- tb.innerHTML=LB_DATA.map((r,i)=>`
552
- <tr class="${i===0?'hl':''}">
553
- <td class="c-model">
554
- <div class="mc">
555
- <div class="mn">
556
- <span style="display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:6px;background:linear-gradient(135deg,#e8593c,#d4a044);color:#fff;font-size:9px;font-weight:800;flex-shrink:0">${i+1}</span>
557
- ${r.model}
558
- </div>
559
- <div class="mp">${r.org} · ${r.date}</div>
560
- </div>
561
- </td>
562
- <td>${scoreBar(r.wm,1000,'#e8593c')}</td>
563
- <td><span class="${gradeClass(r.grade)}">${r.grade}</span></td>
564
- <td class="p1-col">${scoreBar(r.p1,250,PILLAR_COLOR.P1)}</td>
565
- <td class="p2-col">${scoreBar(r.p2,450,PILLAR_COLOR.P2)}</td>
566
- <td class="p3-col">${scoreBar(r.p3,300,PILLAR_COLOR.P3)}</td>
567
- <td><span style="font-family:var(--mono);font-size:11px;font-weight:700">${r.fps}</span></td>
568
- <td><span style="font-family:var(--mono);font-size:11px;font-weight:700">${r.lat.toLocaleString()}</span></td>
569
- <td><span class="${trackClass(r.track)}">${r.track} ✓</span></td>
570
- <td><span style="font-size:9px;color:var(--text-sec)">${r.brain}</span></td>
571
- <td><span style="font-size:9px;color:var(--text-sec)">${r.motion}</span></td>
572
- <td><span style="font-size:9px;color:var(--text-muted)">${r.gpu}</span></td>
573
- </tr>`).join('');
574
- }
575
 
576
- function renderBars(){
577
- ['P1','P2','P3'].forEach(p=>{
578
- const el=document.getElementById(`bars-${p.toLowerCase()}`);
579
- const cats=CAT_DATA.filter(c=>c.pillar===p);
580
- el.innerHTML=cats.map(c=>`
581
- <div class="bar-row">
582
- <div class="bar-label">${c.id} · ${c.name}</div>
583
- <div class="bar-track"><div class="bar-fill" style="width:${c.score}%;background:${PILLAR_COLOR[p]}"></div></div>
584
- <div class="bar-val" style="color:${PILLAR_COLOR[p]}">${c.score}</div>
585
- </div>`).join('');
586
- });
587
- }
 
588
 
589
- function renderCatTable(){
590
- const tb=document.getElementById('CAT_TABLE');
591
- tb.innerHTML=CAT_DATA.map(c=>`
592
- <tr>
593
- <td class="c-model" style="font-family:var(--mono);font-weight:700;color:${PILLAR_COLOR[c.pillar]}">${c.id}</td>
594
- <td style="text-align:left;font-weight:600">${c.name}</td>
595
- <td style="text-align:left"><span style="font-size:9px;font-family:var(--mono);color:${PILLAR_COLOR[c.pillar]}">${c.pillar}</span></td>
596
- <td><span style="font-family:var(--mono);font-weight:700">${c.max}</span></td>
597
- <td style="text-align:left">${c.first?`<span style="font-size:9px;font-weight:700;color:var(--ac)">${c.first} 세계최초</span>`:''}</td>
598
- <td style="text-align:left;font-size:9.5px;color:var(--text-sec)">${c.desc}</td>
599
- </tr>`).join('');
600
- }
601
 
602
- function showTab(id,el){
603
- document.querySelectorAll('.tpane').forEach(p=>p.classList.remove('on'));
604
- document.querySelectorAll('.tab').forEach(t=>t.classList.remove('on'));
605
- document.getElementById(id).classList.add('on');
606
- el.classList.add('on');
607
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
608
 
609
- // dark mode persist
610
- (function(){
611
- if(localStorage.getItem('wm-dark')==='true') document.body.classList.add('dark');
612
- })();
 
 
 
613
 
614
- // init
615
- renderLB();
616
- renderBars();
617
- renderCatTable();
 
 
 
618
  </script>
619
  </body>
620
  </html>
 
176
  <header>
177
  <div class="badge-row">
178
  <div class="badge"><div class="pulse"></div>LIVE · 2026.03 · v1.0</div>
179
+ <button id="WM_DARK_BTN"
180
  style="background:var(--surface);border:1px solid var(--border);border-radius:20px;padding:4px 14px;font-size:10px;font-family:var(--mono);color:var(--text-sec);cursor:pointer;font-weight:700;transition:all .2s;box-shadow:var(--shadow-sm)">🌙 Dark</button>
181
  <div style="display:flex;gap:4px">
182
  <a href="https://huggingface.co/datasets/VIDraft/WorldModelBench" target="_blank"
 
219
  </div>
220
 
221
  <!-- ===== TABS ===== -->
222
+ <div class="tab-bar" id="WM_TAB_BAR">
223
+ <div class="tab on" data-tab="lb">🏆 Leaderboard</div>
224
+ <div class="tab" data-tab="cats">📊 Categories</div>
225
+ <div class="tab" data-tab="structure">📐 Structure</div>
226
+ <div class="tab" data-tab="submit">📝 Submit</div>
227
+ <div class="tab" data-tab="about">ℹ️ About</div>
228
  </div>
229
 
230
  <!-- ===== TAB: LEADERBOARD ===== -->
 
234
  <thead>
235
  <tr>
236
  <th class="c-model" style="text-align:left">Model</th>
237
+ <th title="WM Score (0~1000)">WM Score<span class="sa">↕</span></th>
238
  <th>Grade</th>
239
+ <th class="p1-col" title="👁 Perception (0~250)">👁 인식<span class="sa">↕</span></th>
240
+ <th class="p2-col" title="🧠 Cognition (0~450)">🧠 인지<span class="sa">↕</span></th>
241
+ <th class="p3-col" title="🔥 Embodiment (0~300)">🔥 구현<span class="sa">↕</span></th>
242
+ <th title="FPS">FPS<span class="sa">↕</span></th>
243
+ <th title="Cognitive Latency (ms)">Lat(ms)<span class="sa">↕</span></th>
244
  <th>Track</th>
245
  <th>Brain</th>
246
  <th>Motion</th>
 
511
 
512
  </div><!-- /wrap -->
513
 
514
+ <!-- ===== DATA & LOGIC ===== -->
515
  <script>
516
+ (function(){
517
+ /* ── 데이터 ── */
518
+ var LB_DATA = [
519
+ {model:"VIDRAFT PROMETHEUS v1.0",org:"VIDRAFT",date:"2026-03",
520
+ wm:726,grade:"B",p1:140,p2:390,p3:196,fps:47.0,lat:3100,track:"C",
521
+ brain:"Kimi K2.5",motion:"FloodDiffusion Tiny",gpu:"L40S 48GB",
522
+ cats:{C01:65,C02:75,C03:85,C04:90,C05:85,C06:60,C07:70,C08:80,C09:85,C10:35}}
523
+ ];
524
+ var CAT_DATA = [
525
+ {id:"C01",name:"환경 인식 정확도",pillar:"P1",max:100,score:65,first:"",desc:"주변 벽·장애물·지형을 정확히 파악"},
526
+ {id:"C02",name:"개체 인식 및 분류",pillar:"P1",max:100,score:75,first:"",desc:"NPC를 맹수/사람/환경으로 정확히 분류"},
527
+ {id:"C03",name:"예측 기반 추론",pillar:"P2",max:100,score:85,first:"✦",desc:"4방향 미래 결과 예측 → 최선 선택"},
528
+ {id:"C04",name:"위협 유형별 차별 반응",pillar:"P2",max:100,score:90,first:"✦",desc:"맹수→전력질주 vs 사람→걸어서 회피"},
529
+ {id:"C05",name:"자율 감정 에스컬레이션",pillar:"P2",max:100,score:85,first:"✦✦",desc:"위협 지속 시 감정 자율 격화"},
530
+ {id:"C06",name:"맥락 기억 및 활용",pillar:"P2",max:100,score:60,first:"✦",desc:"이전 실패 기억 → 다음 판단 반영"},
531
+ {id:"C07",name:"위협 해제 후 적응",pillar:"P2",max:100,score:70,first:"✦",desc:"위협 소멸 후 서서히 정상화+경계"},
532
+ {id:"C08",name:"모션 감정 표현력",pillar:"P3",max:100,score:80,first:"✦",desc:"판단 감정이 모션에 반영되는 풍부함"},
533
+ {id:"C09",name:"실시간 인지-행동 성능",pillar:"P3",max:100,score:85,first:"",desc:"인지 루프 FPS + 지연시간"},
534
+ {id:"C10",name:"신체 교체 확장성",pillar:"P3",max:100,score:35,first:"✦✦",desc:"동일 두뇌로 다른 신체(로봇/드론) 적용"}
535
+ ];
536
+ var PC = {P1:"#7b8fd4",P2:"#e8593c",P3:"#d4a044"};
537
+
538
+ /* ── 유틸 ── */
539
+ function scoreBar(v,max,color){
540
+ var pct=Math.round(v/max*100);
541
+ return '<div class="sc"><div class="sn" style="color:'+color+'">'+v+'</div><div class="sb"><div class="sf" style="width:'+pct+'%;background:'+color+'"></div></div></div>';
542
+ }
543
+ function $(id){return document.getElementById(id);}
544
+
545
+ /* ── 렌더 ── */
546
+ function renderLB(){
547
+ var tb=$('LB_BODY'); if(!tb) return;
548
+ tb.innerHTML=LB_DATA.map(function(r,i){
549
+ return '<tr class="'+(i===0?'hl':'')+'">'
550
+ +'<td class="c-model"><div class="mc"><div class="mn">'
551
+ +'<span style="display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:6px;background:linear-gradient(135deg,#e8593c,#d4a044);color:#fff;font-size:9px;font-weight:800;flex-shrink:0">'+(i+1)+'</span>'
552
+ +r.model+'</div><div class="mp">'+r.org+' · '+r.date+'</div></div></td>'
553
+ +'<td>'+scoreBar(r.wm,1000,'#e8593c')+'</td>'
554
+ +'<td><span class="gr gr-'+r.grade+'">'+r.grade+'</span></td>'
555
+ +'<td class="p1-col">'+scoreBar(r.p1,250,PC.P1)+'</td>'
556
+ +'<td class="p2-col">'+scoreBar(r.p2,450,PC.P2)+'</td>'
557
+ +'<td class="p3-col">'+scoreBar(r.p3,300,PC.P3)+'</td>'
558
+ +'<td><span style="font-family:var(--mono);font-size:11px;font-weight:700">'+r.fps+'</span></td>'
559
+ +'<td><span style="font-family:var(--mono);font-size:11px;font-weight:700">'+r.lat.toLocaleString()+'</span></td>'
560
+ +'<td><span class="tb tb-'+r.track+'">'+r.track+' ✓</span></td>'
561
+ +'<td><span style="font-size:9px;color:var(--text-sec)">'+r.brain+'</span></td>'
562
+ +'<td><span style="font-size:9px;color:var(--text-sec)">'+r.motion+'</span></td>'
563
+ +'<td><span style="font-size:9px;color:var(--text-muted)">'+r.gpu+'</span></td>'
564
+ +'</tr>';
565
+ }).join('');
566
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
567
 
568
+ function renderBars(){
569
+ ['P1','P2','P3'].forEach(function(p){
570
+ var el=$('bars-'+p.toLowerCase()); if(!el) return;
571
+ var cats=CAT_DATA.filter(function(c){return c.pillar===p;});
572
+ el.innerHTML=cats.map(function(c){
573
+ return '<div class="bar-row">'
574
+ +'<div class="bar-label">'+c.id+' · '+c.name+'</div>'
575
+ +'<div class="bar-track"><div class="bar-fill" style="width:'+c.score+'%;background:'+PC[p]+'"></div></div>'
576
+ +'<div class="bar-val" style="color:'+PC[p]+'">'+c.score+'</div>'
577
+ +'</div>';
578
+ }).join('');
579
+ });
580
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
581
 
582
+ function renderCatTable(){
583
+ var tb=$('CAT_TABLE'); if(!tb) return;
584
+ tb.innerHTML=CAT_DATA.map(function(c){
585
+ return '<tr>'
586
+ +'<td class="c-model" style="font-family:var(--mono);font-weight:700;color:'+PC[c.pillar]+'">'+c.id+'</td>'
587
+ +'<td style="text-align:left;font-weight:600">'+c.name+'</td>'
588
+ +'<td style="text-align:left"><span style="font-size:9px;font-family:var(--mono);color:'+PC[c.pillar]+'">'+c.pillar+'</span></td>'
589
+ +'<td><span style="font-family:var(--mono);font-weight:700">'+c.max+'</span></td>'
590
+ +'<td style="text-align:left">'+(c.first?'<span style="font-size:9px;font-weight:700;color:var(--ac)">'+c.first+' 세계최초</span>':'')+'</td>'
591
+ +'<td style="text-align:left;font-size:9.5px;color:var(--text-sec)">'+c.desc+'</td>'
592
+ +'</tr>';
593
+ }).join('');
594
+ }
595
 
596
+ /* ── 탭 전환 ── */
597
+ function showTab(id){
598
+ document.querySelectorAll('.tpane').forEach(function(p){p.classList.remove('on');});
599
+ document.querySelectorAll('#WM_TAB_BAR .tab').forEach(function(t){t.classList.remove('on');});
600
+ var pane=$(id); if(pane) pane.classList.add('on');
601
+ var btn=document.querySelector('#WM_TAB_BAR [data-tab="'+id+'"]');
602
+ if(btn) btn.classList.add('on');
603
+ }
 
 
 
 
604
 
605
+ /* ── 이벤트 바인딩 ── */
606
+ function bindEvents(){
607
+ /* 탭 */
608
+ var tabBar=$('WM_TAB_BAR');
609
+ if(tabBar){
610
+ tabBar.addEventListener('click',function(e){
611
+ var tab=e.target.closest('[data-tab]');
612
+ if(tab) showTab(tab.getAttribute('data-tab'));
613
+ });
614
+ }
615
+ /* 다크모드 */
616
+ var darkBtn=$('WM_DARK_BTN');
617
+ if(darkBtn){
618
+ darkBtn.addEventListener('click',function(){
619
+ document.body.classList.toggle('dark');
620
+ var isDark=document.body.classList.contains('dark');
621
+ localStorage.setItem('wm-dark',isDark);
622
+ darkBtn.textContent=isDark?'☀️ Light':'🌙 Dark';
623
+ });
624
+ }
625
+ /* 다크모드 복원 */
626
+ if(localStorage.getItem('wm-dark')==='true'){
627
+ document.body.classList.add('dark');
628
+ var b=$('WM_DARK_BTN'); if(b) b.textContent='☀️ Light';
629
+ }
630
+ }
631
 
632
+ /* ── 초기화 (DOM 주입 후 안전하게 실행) ── */
633
+ function init(){
634
+ renderLB();
635
+ renderBars();
636
+ renderCatTable();
637
+ bindEvents();
638
+ }
639
 
640
+ /* Gradio gr.HTML()은 DOMContentLoaded 이후에 주입되므로 즉시 실행 */
641
+ if(document.readyState==='loading'){
642
+ document.addEventListener('DOMContentLoaded', init);
643
+ } else {
644
+ init();
645
+ }
646
+ })();
647
  </script>
648
  </body>
649
  </html>