91 lines
3.9 KiB
HTML
91 lines
3.9 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="zh-TW">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Wafer Map Pro</title>
|
|
<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=Poppins:wght@400;500;600&display=swap" rel="stylesheet">
|
|
<link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
|
|
</head>
|
|
<body>
|
|
<div class="app-container">
|
|
<!-- Sidebar for Controls -->
|
|
<aside class="sidebar">
|
|
<header class="sidebar-header">
|
|
<h1>Wafer Map Pro</h1>
|
|
</header>
|
|
|
|
<!-- Step 1: Upload -->
|
|
<div id="upload-section" class="card active">
|
|
<div class="card-header">
|
|
<h2>Step 1: Upload File</h2>
|
|
</div>
|
|
<form id="upload-form">
|
|
<input type="file" id="file-input" name="file" accept=".txt" required>
|
|
<button type="submit" class="button-primary">
|
|
<span class="btn-text">Upload & Analyze</span>
|
|
<div class="spinner-border" style="display: none;"></div>
|
|
</button>
|
|
</form>
|
|
<div id="upload-status" class="status"></div>
|
|
</div>
|
|
|
|
<!-- Step 2: Define Bins -->
|
|
<div id="bin-definition-section" class="card">
|
|
<div class="card-header">
|
|
<h2>Step 2: Define Bin Codes</h2>
|
|
</div>
|
|
<form id="bin-definition-form">
|
|
<div id="bin-map-container"></div>
|
|
<button type="submit" class="button-primary">Generate Map</button>
|
|
</form>
|
|
<div id="bin-status" class="status"></div>
|
|
</div>
|
|
|
|
<!-- Step 3: Actions -->
|
|
<div id="editor-controls-section" class="card">
|
|
<div class="card-header">
|
|
<h2>Step 3: Actions</h2>
|
|
</div>
|
|
<div id="controls">
|
|
<div class="control-group">
|
|
<label for="bin-type-selector">Set Bin Type:</label>
|
|
<select id="bin-type-selector">
|
|
<option value="good">Good</option>
|
|
<option value="ng">NG</option>
|
|
<option value="dummy">Dummy</option>
|
|
<option value="ignore">Ignore</option>
|
|
</select>
|
|
<button id="update-selection-btn" class="button-secondary">Apply</button>
|
|
</div>
|
|
<div class="control-group-grid">
|
|
<button id="rotate-btn" class="button-secondary">Rotate 90°</button>
|
|
<button id="reset-view-btn" class="button-secondary">Reset View</button>
|
|
<a id="download-btn" class="button-primary" href="/download" download>Download .txt</a>
|
|
</div>
|
|
</div>
|
|
<p class="hint-text">Pro-tip: Hold <strong>Shift</strong> and drag to select a region.</p>
|
|
</div>
|
|
</aside>
|
|
|
|
<!-- Main Content Area for Canvas -->
|
|
<main class="main-content">
|
|
<div id="editor-section" style="display: none;">
|
|
<div id="bin-counts" class="counts-container"></div>
|
|
<div id="map-container">
|
|
<canvas id="wafer-map-canvas"></canvas>
|
|
</div>
|
|
<div id="editor-status" class="status"></div>
|
|
</div>
|
|
<div id="welcome-message">
|
|
<h2>Welcome to Wafer Map Pro</h2>
|
|
<p>Please upload a file to begin.</p>
|
|
</div>
|
|
</main>
|
|
</div>
|
|
|
|
<script src="{{ url_for('static', filename='js/script.js') }}"></script>
|
|
</body>
|
|
</html> |