DocFinder / templates /index.html
om4r932's picture
Front-end implementation
2903edf
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>3GPP & ETSI Document Finder</title>
<link rel="stylesheet" href="/static/style.css">
</head>
<body>
<div class="app-container">
<!-- Header -->
<header class="header">
<div class="header-content">
<h1 class="logo">3GPP & ETSI Document Finder</h1>
<div class="header-stats" id="header-stats">
<span class="stat-item">Ready</span>
</div>
</div>
</header>
<!-- Main Content -->
<main class="main-content">
<!-- Search Tabs -->
<div class="search-tabs">
<button class="tab-button active" data-mode="single">Single Document</button>
<button class="tab-button" data-mode="batch">Batch Search</button>
<button class="tab-button" data-mode="keyword">Keyword Search</button>
<button class="tab-button" data-mode="bm25">BM25 Search</button>
</div>
<!-- Search Forms -->
<div class="search-container">
<!-- Single Document Search -->
<div class="search-form active" id="single-form">
<div class="form-group">
<label for="doc-id">Document ID</label>
<div class="input-group">
<input type="text" id="doc-id" placeholder="e.g., 23.401, S1-123456, SET(24)123">
<button class="btn btn-primary" onclick="searchSingle()">Search</button>
</div>
</div>
</div>
<!-- Batch Search -->
<div class="search-form" id="batch-form">
<div class="form-group">
<label for="batch-ids">List of IDs (one per line)</label>
<textarea id="batch-ids" placeholder="23.401&#10;S1-123456&#10;103 666" rows="6"></textarea>
<button class="btn btn-primary" onclick="searchBatch()">Search Batch</button>
</div>
</div>
<!-- Keyword Search -->
<div class="search-form" id="keyword-form">
<div class="form-group">
<label for="keywords">Keywords</label>
<input type="text" id="keywords" placeholder="e.g., 5G NR,authentication">
</div>
<div class="filters-container">
<div class="filter-group">
<label>Source</label>
<select id="source-filter">
<option value="all">All Sources</option>
<option value="3GPP">3GPP Only</option>
<option value="ETSI">ETSI Only</option>
</select>
</div>
<div class="filter-group">
<label>Search Mode</label>
<select id="search-mode-filter">
<option value="quick">Quick Search</option>
<option value="deep">Deep Search</option>
</select>
</div>
<div class="filter-group">
<label>Logic</label>
<select id="mode-filter">
<option value="and">AND (all words)</option>
<option value="or">OR (any word)</option>
</select>
</div>
<div class="filter-group">
<label>Specification Type</label>
<select id="spec-type-filter">
<option value="">All Types</option>
<option value="TS">TS (Technical Specification)</option>
<option value="TR">TR (Technical Report)</option>
</select>
</div>
<div class="checkbox-group">
<label class="checkbox-label">
<input type="checkbox" id="case-sensitive-filter">
<span class="checkmark"></span>
Case Sensitive
</label>
</div>
</div>
<button class="btn btn-primary" onclick="searchKeyword()">Search</button>
</div>
<!-- BM25 Search -->
<div class="search-form" id="bm25-form">
<div class="form-group">
<label for="bm25-keywords">Search Query</label>
<input type="text" id="bm25-keywords" placeholder="e.g., 5G authentication procedures">
</div>
<div class="filters-container">
<div class="filter-group">
<label>Source</label>
<select id="bm25-source-filter">
<option value="all">All Sources</option>
<option value="3GPP">3GPP Only</option>
<option value="ETSI">ETSI Only</option>
</select>
</div>
<div class="filter-group">
<label>Specification Type</label>
<select id="bm25-spec-type-filter">
<option value="">All Types</option>
<option value="TS">TS (Technical Specification)</option>
<option value="TR">TR (Technical Report)</option>
</select>
</div>
<div class="filter-group">
<label>Relevance Threshold (%)</label>
<input type="number" id="threshold" min="0" max="100" value="60">
</div>
</div>
<button class="btn btn-primary" onclick="searchBM25()">Search</button>
</div>
</div>
<!-- Results Container -->
<div class="results-container" id="results-container">
<div class="results-header">
<h2>Search Results</h2>
<div class="results-stats" id="results-stats"></div>
</div>
<div class="results-content" id="results-content"></div>
</div>
<!-- Loading Indicator -->
<div class="loading-container" id="loading-container">
<div class="spinner"></div>
<p>Searching...</p>
</div>
</main>
<!-- Content Detail Page -->
<div class="content-page" id="content-page">
<div class="content-header">
<button class="btn btn-secondary" onclick="closeContentPage()">← Back to Results</button>
<h2 id="content-title"></h2>
<button class="btn btn-outline" onclick="copyAllContent()">Copy All</button>
</div>
<div class="content-sections" id="content-sections"></div>
</div>
</div>
<script src="/static/script.js"></script>
</body>
</html>