Spaces:
Running
Running
<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 S1-123456 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> | |