sentimeter / upload.html
rhmnsae's picture
add
04b72bb
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width,initial-scale=1.0" />
<title>Upload Data β€” SentiMeter</title>
<meta name="description" content="Upload file CSV untuk analisis sentimen IndoBERT Bahasa Indonesia" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"
rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.4.1/papaparse.min.js"></script>
<link rel="stylesheet" href="css/style.css" />
<link rel="icon" type="image/svg+xml" href="img/logo.svg" />
</head>
<body>
<div class="layout">
<div id="sidebar"></div>
<div class="main">
<div class="topbar">
<div class="topbar-title">Upload Data</div>
<div class="topbar-sub">Langkah 1 dari 6</div>
</div>
<div class="page-body upload-page-body">
<div class="upload-hero">
<div class="upload-headline">
<h1>Mulai Analisis Sentimen</h1>
<p>Silakan unggah dataset Twitter/X dalam format CSV. Sistem IndoBERT kami secara otomatis akan mendeteksi
kolom <code>full_text</code>, menerapkan 9 tahap text cleaning, dan memproses analisis sentimen secara
komprehensif tanpa memerlukan pengaturan manual.</p>
</div>
<div class="upload-zone" id="uploadZone">
<input type="file" id="csvInput" accept=".csv" multiple />
<div class="upload-inner" id="uploadInner">
<div class="upload-circle">
<svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
stroke-linecap="round" stroke-linejoin="round">
<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" />
<polyline points="17 8 12 3 7 8" />
<line x1="12" y1="3" x2="12" y2="15" />
</svg>
</div>
<h2 class="upload-title">Seret & Lepas file CSV</h2>
<p class="upload-sub">atau klik area ini untuk memilih file</p>
<button class="btn btn-primary btn-upload-trigger"
onclick="document.getElementById('csvInput').click()">Pilih File CSV</button>
<p class="upload-hint">Format: <code>.csv</code> β€” kolom <code>full_text</code> wajib ada</p>
</div>
</div>
<div class="demo-trigger-wrap" style="margin-top: 24px; text-align: center;">
<p style="font-size: 13px; color: var(--tx3); margin-bottom: 12px;">Tidak punya file CSV? Coba dengan data contoh kami.</p>
<button class="btn btn-outline" id="btnDemoData">
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-right: 6px;"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="17 8 12 3 7 8"/><line x1="12" y1="3" x2="12" y2="15"/></svg>
Coba Data Demo (300 Tweet)
</button>
</div>
<!-- File info preview -->
<div id="filePreview" style="display:none" class="file-preview">
<div class="file-info">
<div class="file-name" id="fileName">β€”</div>
<div class="file-meta" id="fileMeta">β€”</div>
</div>
<div class="file-actions">
<button class="btn btn-primary" id="btnAnalyze">Mulai Analisis</button>
<button class="btn btn-ghost btn-sm" id="btnCancel">Batal</button>
</div>
</div>
<!-- Progress -->
<div id="progressWrap" style="display:none" class="progress-wrap">
<div class="progress-header">
<span id="progressText">Memproses...</span>
<span id="progressPct">0%</span>
</div>
<div class="progress-track">
<div class="progress-bar" id="progressBar"></div>
</div>
<div class="progress-step" id="progressStep"></div>
</div>
</div>
</div>
</div>
</div>
<script src="js/shared.js"></script>
<script src="js/demo.js"></script>
<script src="js/upload.js"></script>
</body>
</html>