noranisa commited on
Commit
e7258c3
·
verified ·
1 Parent(s): 06f79f7

Update templates/result.html

Browse files
Files changed (1) hide show
  1. templates/result.html +33 -19
templates/result.html CHANGED
@@ -357,7 +357,7 @@ footer {
357
  <div class="panel-tag">03 — Data Komentar</div>
358
  <div class="tbl-wrap">
359
  <table>
360
- <thead><tr><th>#</th><th>Sumber</th><th>Komentar</th><th>Sentimen</th></tr></thead>
361
  <tbody id="tbl"></tbody>
362
  </table>
363
  </div>
@@ -477,9 +477,11 @@ function render(d) {
477
  $('m-neg-p').textContent = pct(neg,tot)+'%';
478
  $('m-neu-p').textContent = pct(neu,tot)+'%';
479
 
480
- const tEl = $('m-trend');
481
- tEl.textContent = trend;
482
- const isUp = trend && trend.toLowerCase().includes('positif');
 
 
483
  tEl.className = 'metric-n ' + (isUp ? 'c-up' : 'c-dn');
484
 
485
  // DIST BAR
@@ -549,17 +551,21 @@ function render(d) {
549
  }).join('');
550
  } else wg.innerHTML = '<span class="empty">Tidak ada data kata.</span>';
551
 
552
- // TABLE
553
  const tb = $('tbl');
554
  if(data.length) {
555
- tb.innerHTML = data.slice(0,50).map((r,i)=>`
556
- <tr>
 
 
557
  <td style="color:var(--muted)">${i+1}</td>
558
  <td><span class="src-badge">${esc(r.source||'—')}</span></td>
559
- <td style="max-width:280px;color:var(--m2)">${esc((r.text||'').substring(0,100))}</td>
560
  <td><span class="tag tag-${sc(r.sentiment)}">${r.sentiment||'—'}</span></td>
561
- </tr>`).join('');
562
- } else tb.innerHTML = '<tr><td colspan="4" class="empty" style="padding:.75rem">Tidak ada data.</td></tr>';
 
 
563
 
564
  // TOPICS
565
  const tg = $('topics');
@@ -581,14 +587,18 @@ function render(d) {
581
  </div>`).join('');
582
  } else cg.innerHTML = '<span class="empty">Data tidak cukup untuk clustering.</span>';
583
 
584
- // HOAX
585
  const hg = $('hoax');
586
  if(hoax.length) {
587
- hg.innerHTML = hoax.map(h=>`
588
- <div class="hoax-item">
 
 
589
  <span class="h-badge ${h.label==='Hoax'?'hb-hoax':'hb-norm'}">${h.label}</span>
590
- <span class="h-text">${esc((h.text||'').substring(0,90))}</span>
591
- </div>`).join('');
 
 
592
  } else hg.innerHTML = '<span class="empty">Tidak ada konten terdeteksi.</span>';
593
 
594
  // BOT
@@ -603,10 +613,14 @@ function render(d) {
603
  </div>`).join('');
604
  } else bg.innerHTML = '<span class="empty">Tidak ada bot terdeteksi.</span>';
605
 
606
- // INSIGHT
607
- const dom = pos>=neg&&pos>=neu?'positif':neg>=pos&&neg>=neu?'negatif':'netral';
608
- $('insight-text').innerHTML = `Dari <em>${data.length}</em> komentar, opini publik terhadap "<em>${esc(kw)}</em>" cenderung <em>${dom}</em> — ${pct(pos,tot)}% positif, ${pct(neg,tot)}% negatif, ${pct(neu,tot)}% netral.`;
609
- $('insight-meta').innerHTML = `Model: IndoBERT (w11wo/indonesian-roberta-base)<br>${new Date().toLocaleDateString('id-ID',{weekday:'long',year:'numeric',month:'long',day:'numeric'})}<br>Tren: ${trend}`;
 
 
 
 
610
 
611
  // IMAGES
612
  loadImg('static/wordcloud.png','wc-box');
 
357
  <div class="panel-tag">03 — Data Komentar</div>
358
  <div class="tbl-wrap">
359
  <table>
360
+ <thead><tr><th>#</th><th>Sumber</th><th>Komentar</th><th>Sentimen</th><th>Conf.</th></tr></thead>
361
  <tbody id="tbl"></tbody>
362
  </table>
363
  </div>
 
477
  $('m-neg-p').textContent = pct(neg,tot)+'%';
478
  $('m-neu-p').textContent = pct(neu,tot)+'%';
479
 
480
+ // TREND sekarang object, bukan string
481
+ const tEl = $('m-trend');
482
+ const tObj = (typeof trend === 'object' && trend !== null) ? trend : { label: trend, dominant: '', confidence: 0 };
483
+ tEl.textContent = tObj.label || trend;
484
+ const isUp = (tObj.label || '').toLowerCase().includes('positif');
485
  tEl.className = 'metric-n ' + (isUp ? 'c-up' : 'c-dn');
486
 
487
  // DIST BAR
 
551
  }).join('');
552
  } else wg.innerHTML = '<span class="empty">Tidak ada data kata.</span>';
553
 
554
+ // TABLE — dengan confidence score
555
  const tb = $('tbl');
556
  if(data.length) {
557
+ tb.innerHTML = data.slice(0,50).map((r,i)=>{
558
+ const conf = r.confidence ? Math.round(r.confidence*100)+'%' : '—';
559
+ const confColor = r.confidence >= 0.8 ? 'var(--pos)' : r.confidence >= 0.6 ? 'var(--gold)' : 'var(--neg)';
560
+ return `<tr>
561
  <td style="color:var(--muted)">${i+1}</td>
562
  <td><span class="src-badge">${esc(r.source||'—')}</span></td>
563
+ <td style="max-width:240px;color:var(--m2)">${esc((r.text||'').substring(0,90))}</td>
564
  <td><span class="tag tag-${sc(r.sentiment)}">${r.sentiment||'—'}</span></td>
565
+ <td style="font-family:var(--mono);font-size:0.6rem;color:${confColor}">${conf}</td>
566
+ </tr>`;
567
+ }).join('');
568
+ } else tb.innerHTML = '<tr><td colspan="5" class="empty" style="padding:.75rem">Tidak ada data.</td></tr>';
569
 
570
  // TOPICS
571
  const tg = $('topics');
 
587
  </div>`).join('');
588
  } else cg.innerHTML = '<span class="empty">Data tidak cukup untuk clustering.</span>';
589
 
590
+ // HOAX — dengan confidence score dan method
591
  const hg = $('hoax');
592
  if(hoax.length) {
593
+ hg.innerHTML = hoax.map(h=>{
594
+ const conf = h.confidence ? Math.round(h.confidence*100)+'%' : '';
595
+ const method = h.method === 'ml' ? '·ML' : '·KW';
596
+ return `<div class="hoax-item">
597
  <span class="h-badge ${h.label==='Hoax'?'hb-hoax':'hb-norm'}">${h.label}</span>
598
+ <span class="h-text">${esc((h.text||'').substring(0,80))}</span>
599
+ ${conf ? `<span style="font-family:var(--mono);font-size:0.5rem;color:var(--muted);white-space:nowrap;margin-left:auto">${conf}${method}</span>` : ''}
600
+ </div>`;
601
+ }).join('');
602
  } else hg.innerHTML = '<span class="empty">Tidak ada konten terdeteksi.</span>';
603
 
604
  // BOT
 
613
  </div>`).join('');
614
  } else bg.innerHTML = '<span class="empty">Tidak ada bot terdeteksi.</span>';
615
 
616
+ // INSIGHT — gunakan trend object
617
+ const avgConf = data.length ? (data.reduce((s,r)=>s+(r.confidence||0),0)/data.length*100).toFixed(1) : 0;
618
+ const trendLabel = tObj.label || String(trend);
619
+ const trendSum = tObj.summary || trendLabel;
620
+ const polarity = tObj.polarity !== undefined ? tObj.polarity : '—';
621
+
622
+ $('insight-text').innerHTML = `Dari <em>${data.length}</em> komentar yang dianalisis, opini publik terhadap "<em>${esc(kw)}</em>" bersifat <em>${trendLabel.toLowerCase()}</em>. ${trendSum}`;
623
+ $('insight-meta').innerHTML = `Model: IndoBERT (w11wo/indonesian-roberta-base)<br>Avg. confidence: ${avgConf}% · Polarisasi: ${polarity}<br>${new Date().toLocaleDateString('id-ID',{weekday:'long',year:'numeric',month:'long',day:'numeric'})}`;
624
 
625
  // IMAGES
626
  loadImg('static/wordcloud.png','wc-box');