Spaces:
Running
Running
words/css
Browse files- frontend/initial.html +9 -13
- frontend/settings.html +72 -77
frontend/initial.html
CHANGED
|
@@ -120,9 +120,8 @@
|
|
| 120 |
|
| 121 |
<!-- STEP: Modules -->
|
| 122 |
<div id="step-modules" class="w-full flex flex-col fade-in">
|
| 123 |
-
<h2 class="text-3xl font-bold mb-2 text-
|
| 124 |
-
<p class="text-[13px] font-medium
|
| 125 |
-
proceed.</p>
|
| 126 |
|
| 127 |
<div class="flex justify-center w-full">
|
| 128 |
<div onclick="showStep('upload')"
|
|
@@ -145,18 +144,16 @@
|
|
| 145 |
class="text-neutral-500 hover:text-white transition flex items-center text-xs font-bold uppercase tracking-widest mb-6 w-fit">
|
| 146 |
<i class="fa-solid fa-arrow-left mr-2"></i> Back
|
| 147 |
</button>
|
| 148 |
-
<h2 class="text-3xl font-bold mb-2 text-
|
| 149 |
-
<p class="text-[13px] font-medium
|
| 150 |
|
| 151 |
<input id="file-input" type="file" accept="video/*" class="hidden">
|
| 152 |
<div id="dropzone" onclick="document.getElementById('file-input').click()"
|
| 153 |
class="border border-dashed border-neutral-700 rounded-[2rem] p-12 flex flex-col items-center justify-center cursor-pointer transition-all duration-300 group">
|
| 154 |
<i
|
| 155 |
-
class="fa-solid fa-arrow-up-from-bracket text-4xl
|
| 156 |
-
<span class="font-semibold text-
|
| 157 |
-
|
| 158 |
-
<span class="text-[10px] font-bold uppercase tracking-widest text-neutral-600 text-center">MP4, AVI,
|
| 159 |
-
MOV Accepted</span>
|
| 160 |
</div>
|
| 161 |
|
| 162 |
<div id="upload-progress-container" class="hidden mt-10 w-full">
|
|
@@ -173,9 +170,8 @@
|
|
| 173 |
|
| 174 |
<!-- STEP: Draw -->
|
| 175 |
<div id="step-draw" class="hidden w-full flex flex-col fade-in">
|
| 176 |
-
<h2 class="text-3xl font-bold mb-2 text-
|
| 177 |
-
<p class="text-[11px] font-bold uppercase tracking-widest
|
| 178 |
-
points to define counting threshold</p>
|
| 179 |
|
| 180 |
<div
|
| 181 |
class="relative w-full aspect-video bg-neutral-950 rounded-3xl overflow-hidden cursor-crosshair mb-6">
|
|
|
|
| 120 |
|
| 121 |
<!-- STEP: Modules -->
|
| 122 |
<div id="step-modules" class="w-full flex flex-col fade-in">
|
| 123 |
+
<h2 class="text-3xl font-bold mb-2 text-center" style="color:#f0ece6">UrbanFlow</h2>
|
| 124 |
+
<p class="text-[13px] font-medium mb-8 text-center" style="color:#a89f97">Select an analytical module to continue.</p>
|
|
|
|
| 125 |
|
| 126 |
<div class="flex justify-center w-full">
|
| 127 |
<div onclick="showStep('upload')"
|
|
|
|
| 144 |
class="text-neutral-500 hover:text-white transition flex items-center text-xs font-bold uppercase tracking-widest mb-6 w-fit">
|
| 145 |
<i class="fa-solid fa-arrow-left mr-2"></i> Back
|
| 146 |
</button>
|
| 147 |
+
<h2 class="text-3xl font-bold mb-2 text-center" style="color:#f0ece6">Source Media</h2>
|
| 148 |
+
<p class="text-[13px] font-medium mb-8 text-center" style="color:#a89f97">Upload a video file to begin analysis.</p>
|
| 149 |
|
| 150 |
<input id="file-input" type="file" accept="video/*" class="hidden">
|
| 151 |
<div id="dropzone" onclick="document.getElementById('file-input').click()"
|
| 152 |
class="border border-dashed border-neutral-700 rounded-[2rem] p-12 flex flex-col items-center justify-center cursor-pointer transition-all duration-300 group">
|
| 153 |
<i
|
| 154 |
+
class="fa-solid fa-arrow-up-from-bracket text-4xl mb-5 block mx-auto transition" style="color:#a89f97"></i>
|
| 155 |
+
<span class="font-semibold text-lg mb-2 text-center block" style="color:#f0ece6">Drop or select a video file</span>
|
| 156 |
+
<span class="text-[10px] font-bold uppercase tracking-widest text-center block" style="color:#a89f97">MP4 · AVI · MOV</span>
|
|
|
|
|
|
|
| 157 |
</div>
|
| 158 |
|
| 159 |
<div id="upload-progress-container" class="hidden mt-10 w-full">
|
|
|
|
| 170 |
|
| 171 |
<!-- STEP: Draw -->
|
| 172 |
<div id="step-draw" class="hidden w-full flex flex-col fade-in">
|
| 173 |
+
<h2 class="text-3xl font-bold mb-2 text-center" style="color:#f0ece6">Spatial Boundary</h2>
|
| 174 |
+
<p class="text-[11px] font-bold uppercase tracking-widest mb-6 text-center" style="color:#a89f97">Mark two points to define the vehicle counting threshold</p>
|
|
|
|
| 175 |
|
| 176 |
<div
|
| 177 |
class="relative w-full aspect-video bg-neutral-950 rounded-3xl overflow-hidden cursor-crosshair mb-6">
|
frontend/settings.html
CHANGED
|
@@ -41,11 +41,20 @@
|
|
| 41 |
}
|
| 42 |
}
|
| 43 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 44 |
.bg-glow {
|
| 45 |
position: absolute;
|
| 46 |
width: 600px;
|
| 47 |
height: 600px;
|
| 48 |
-
background: radial-gradient(circle, rgba(
|
| 49 |
top: 50%;
|
| 50 |
left: 0;
|
| 51 |
transform: translateY(-50%);
|
|
@@ -57,7 +66,7 @@
|
|
| 57 |
width: 36px;
|
| 58 |
height: 20px;
|
| 59 |
border-radius: 10px;
|
| 60 |
-
background: #
|
| 61 |
position: relative;
|
| 62 |
cursor: pointer;
|
| 63 |
transition: background 0.2s;
|
|
@@ -65,23 +74,24 @@
|
|
| 65 |
}
|
| 66 |
|
| 67 |
.toggle-track.active {
|
| 68 |
-
background:
|
| 69 |
}
|
| 70 |
|
| 71 |
.toggle-thumb {
|
| 72 |
width: 16px;
|
| 73 |
height: 16px;
|
| 74 |
border-radius: 50%;
|
| 75 |
-
background: #
|
| 76 |
position: absolute;
|
| 77 |
top: 2px;
|
| 78 |
left: 2px;
|
| 79 |
transition: transform 0.2s;
|
| 80 |
-
box-shadow: 0 1px 3px rgba(0,
|
| 81 |
}
|
| 82 |
|
| 83 |
.toggle-track.active .toggle-thumb {
|
| 84 |
transform: translateX(16px);
|
|
|
|
| 85 |
}
|
| 86 |
|
| 87 |
.toggle-track.locked {
|
|
@@ -92,16 +102,16 @@
|
|
| 92 |
|
| 93 |
.custom-select {
|
| 94 |
appearance: none;
|
| 95 |
-
background: #
|
| 96 |
-
border: 1px solid #
|
| 97 |
border-radius: 8px;
|
| 98 |
padding: 6px 32px 6px 12px;
|
| 99 |
font-size: 12px;
|
| 100 |
font-weight: 600;
|
| 101 |
-
color:
|
| 102 |
cursor: pointer;
|
| 103 |
outline: none;
|
| 104 |
-
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='%
|
| 105 |
background-repeat: no-repeat;
|
| 106 |
background-position: right 10px center;
|
| 107 |
background-size: 14px;
|
|
@@ -109,11 +119,11 @@
|
|
| 109 |
}
|
| 110 |
|
| 111 |
.custom-select:hover {
|
| 112 |
-
border-color:
|
| 113 |
}
|
| 114 |
|
| 115 |
.custom-select:focus {
|
| 116 |
-
border-color:
|
| 117 |
}
|
| 118 |
|
| 119 |
.custom-select:disabled {
|
|
@@ -131,16 +141,16 @@
|
|
| 131 |
}
|
| 132 |
|
| 133 |
.setting-card {
|
| 134 |
-
background: #
|
| 135 |
-
border: 1px solid #
|
| 136 |
border-radius: 16px;
|
| 137 |
-
box-shadow: 0
|
| 138 |
overflow: hidden;
|
| 139 |
}
|
| 140 |
|
| 141 |
.setting-card-header {
|
| 142 |
padding: 16px 24px;
|
| 143 |
-
border-bottom: 1px solid #
|
| 144 |
}
|
| 145 |
|
| 146 |
.setting-row {
|
|
@@ -148,7 +158,7 @@
|
|
| 148 |
align-items: center;
|
| 149 |
justify-content: space-between;
|
| 150 |
padding: 14px 24px;
|
| 151 |
-
border-bottom: 1px solid #
|
| 152 |
}
|
| 153 |
|
| 154 |
.setting-row:last-child {
|
|
@@ -158,18 +168,19 @@
|
|
| 158 |
</head>
|
| 159 |
|
| 160 |
<body
|
| 161 |
-
class="
|
|
|
|
| 162 |
|
| 163 |
<div class="bg-glow"></div>
|
| 164 |
|
| 165 |
<header class="mt-6 flex flex-col items-center flex-shrink-0 w-full z-10">
|
| 166 |
<img src="uf_rf.png" alt="UrbanFlow Logo" class="h-28 w-auto object-contain mb-2">
|
| 167 |
<div class="flex items-center space-x-3">
|
| 168 |
-
<span class="w-12 h-[1px]
|
| 169 |
-
<p class="font-montserrat font-bold tracking-[0.25em] uppercase text-[10px] text-
|
| 170 |
-
|
| 171 |
</p>
|
| 172 |
-
<span class="w-12 h-[1px]
|
| 173 |
</div>
|
| 174 |
</header>
|
| 175 |
|
|
@@ -180,27 +191,23 @@
|
|
| 180 |
<!-- Processing Parameters (locked once started) -->
|
| 181 |
<div class="setting-card" id="card-processing">
|
| 182 |
<div class="setting-card-header">
|
| 183 |
-
<h3 class="font-montserrat font-bold text-
|
| 184 |
-
<p class="text-[10px] font-montserrat font-medium
|
| 185 |
-
Auto-configured
|
| 186 |
</div>
|
| 187 |
|
| 188 |
<!-- Image Size -->
|
| 189 |
<div class="setting-row">
|
| 190 |
<div>
|
| 191 |
-
<div class="text-xs font-semibold
|
| 192 |
-
<div class="text-[10px]
|
| 193 |
</div>
|
| 194 |
-
<div
|
| 195 |
-
class="
|
| 196 |
-
<button class="stepper-btn text-slate-400 hover:text-black transition p-1"
|
| 197 |
-
onclick="adjust('imgsz',-1)">
|
| 198 |
<i class="fa-solid fa-chevron-left text-[10px]"></i>
|
| 199 |
</button>
|
| 200 |
-
<span class="mono-font font-bold w-12 text-center text-
|
| 201 |
-
|
| 202 |
-
<button class="stepper-btn text-slate-400 hover:text-black transition p-1"
|
| 203 |
-
onclick="adjust('imgsz',1)">
|
| 204 |
<i class="fa-solid fa-chevron-right text-[10px]"></i>
|
| 205 |
</button>
|
| 206 |
</div>
|
|
@@ -209,19 +216,15 @@
|
|
| 209 |
<!-- Confidence -->
|
| 210 |
<div class="setting-row">
|
| 211 |
<div>
|
| 212 |
-
<div class="text-xs font-semibold
|
| 213 |
-
<div class="text-[10px]
|
| 214 |
</div>
|
| 215 |
-
<div
|
| 216 |
-
class="
|
| 217 |
-
<button class="stepper-btn text-slate-400 hover:text-black transition p-1"
|
| 218 |
-
onclick="adjust('conf',-1)">
|
| 219 |
<i class="fa-solid fa-chevron-left text-[10px]"></i>
|
| 220 |
</button>
|
| 221 |
-
<span class="mono-font font-bold w-12 text-center text-
|
| 222 |
-
|
| 223 |
-
<button class="stepper-btn text-slate-400 hover:text-black transition p-1"
|
| 224 |
-
onclick="adjust('conf',1)">
|
| 225 |
<i class="fa-solid fa-chevron-right text-[10px]"></i>
|
| 226 |
</button>
|
| 227 |
</div>
|
|
@@ -230,19 +233,15 @@
|
|
| 230 |
<!-- IoU -->
|
| 231 |
<div class="setting-row">
|
| 232 |
<div>
|
| 233 |
-
<div class="text-xs font-semibold
|
| 234 |
-
<div class="text-[10px]
|
| 235 |
</div>
|
| 236 |
-
<div
|
| 237 |
-
class="
|
| 238 |
-
<button class="stepper-btn text-slate-400 hover:text-black transition p-1"
|
| 239 |
-
onclick="adjust('iou',-1)">
|
| 240 |
<i class="fa-solid fa-chevron-left text-[10px]"></i>
|
| 241 |
</button>
|
| 242 |
-
<span class="mono-font font-bold w-12 text-center text-
|
| 243 |
-
|
| 244 |
-
<button class="stepper-btn text-slate-400 hover:text-black transition p-1"
|
| 245 |
-
onclick="adjust('iou',1)">
|
| 246 |
<i class="fa-solid fa-chevron-right text-[10px]"></i>
|
| 247 |
</button>
|
| 248 |
</div>
|
|
@@ -251,19 +250,15 @@
|
|
| 251 |
<!-- Frame Stride -->
|
| 252 |
<div class="setting-row">
|
| 253 |
<div>
|
| 254 |
-
<div class="text-xs font-semibold
|
| 255 |
-
<div class="text-[10px]
|
| 256 |
</div>
|
| 257 |
-
<div
|
| 258 |
-
class="
|
| 259 |
-
<button class="stepper-btn text-slate-400 hover:text-black transition p-1"
|
| 260 |
-
onclick="adjust('detect_stride',-1)">
|
| 261 |
<i class="fa-solid fa-chevron-left text-[10px]"></i>
|
| 262 |
</button>
|
| 263 |
-
<span class="mono-font font-bold w-12 text-center text-
|
| 264 |
-
|
| 265 |
-
<button class="stepper-btn text-slate-400 hover:text-black transition p-1"
|
| 266 |
-
onclick="adjust('detect_stride',1)">
|
| 267 |
<i class="fa-solid fa-chevron-right text-[10px]"></i>
|
| 268 |
</button>
|
| 269 |
</div>
|
|
@@ -272,8 +267,8 @@
|
|
| 272 |
<!-- Report Format -->
|
| 273 |
<div class="setting-row">
|
| 274 |
<div>
|
| 275 |
-
<div class="text-xs font-semibold
|
| 276 |
-
<div class="text-[10px]
|
| 277 |
</div>
|
| 278 |
<select class="custom-select" id="sel-report-format">
|
| 279 |
<option value="png" selected>PNG Image</option>
|
|
@@ -284,8 +279,8 @@
|
|
| 284 |
<!-- Annotated Video -->
|
| 285 |
<div class="setting-row">
|
| 286 |
<div>
|
| 287 |
-
<div class="text-xs font-semibold
|
| 288 |
-
<div class="text-[10px]
|
| 289 |
</div>
|
| 290 |
<div class="toggle-track" id="tog-annotated" onclick="toggleSwitch(this)">
|
| 291 |
<div class="toggle-thumb"></div>
|
|
@@ -296,16 +291,16 @@
|
|
| 296 |
<!-- Display Preferences (editable anytime) -->
|
| 297 |
<div class="setting-card" id="card-display">
|
| 298 |
<div class="setting-card-header">
|
| 299 |
-
<h3 class="font-montserrat font-bold text-
|
| 300 |
-
<p class="text-[10px] font-montserrat font-medium
|
| 301 |
-
Editable anytime
|
| 302 |
</div>
|
| 303 |
|
| 304 |
<!-- Chart Color Palette -->
|
| 305 |
<div class="setting-row">
|
| 306 |
<div>
|
| 307 |
-
<div class="text-xs font-semibold
|
| 308 |
-
<div class="text-[10px]
|
| 309 |
</div>
|
| 310 |
<select class="custom-select" id="sel-palette">
|
| 311 |
<option value="default" selected>Default</option>
|
|
@@ -316,8 +311,7 @@
|
|
| 316 |
|
| 317 |
<!-- Palette Preview -->
|
| 318 |
<div class="px-6 py-4">
|
| 319 |
-
<div class="text-[10px] font-bold
|
| 320 |
-
</div>
|
| 321 |
<div class="flex gap-2" id="palette-preview"></div>
|
| 322 |
</div>
|
| 323 |
</div>
|
|
@@ -326,8 +320,9 @@
|
|
| 326 |
|
| 327 |
<!-- Start Button -->
|
| 328 |
<button id="btn-start" onclick="startProcessing()"
|
| 329 |
-
class="w-full py-4
|
| 330 |
-
|
|
|
|
| 331 |
</button>
|
| 332 |
|
| 333 |
</main>
|
|
|
|
| 41 |
}
|
| 42 |
}
|
| 43 |
|
| 44 |
+
:root {
|
| 45 |
+
--cocoa: #8b5e3c;
|
| 46 |
+
--cocoa-l: #c89a6c;
|
| 47 |
+
--cocoa-xl: #d4b08a;
|
| 48 |
+
--t1: #f0ece6;
|
| 49 |
+
--t2: #a89f97;
|
| 50 |
+
--border: #2a2a2a;
|
| 51 |
+
}
|
| 52 |
+
|
| 53 |
.bg-glow {
|
| 54 |
position: absolute;
|
| 55 |
width: 600px;
|
| 56 |
height: 600px;
|
| 57 |
+
background: radial-gradient(circle, rgba(139,94,60,0.08) 0%, rgba(0,0,0,0) 70%);
|
| 58 |
top: 50%;
|
| 59 |
left: 0;
|
| 60 |
transform: translateY(-50%);
|
|
|
|
| 66 |
width: 36px;
|
| 67 |
height: 20px;
|
| 68 |
border-radius: 10px;
|
| 69 |
+
background: #2a2a2a;
|
| 70 |
position: relative;
|
| 71 |
cursor: pointer;
|
| 72 |
transition: background 0.2s;
|
|
|
|
| 74 |
}
|
| 75 |
|
| 76 |
.toggle-track.active {
|
| 77 |
+
background: var(--cocoa-l);
|
| 78 |
}
|
| 79 |
|
| 80 |
.toggle-thumb {
|
| 81 |
width: 16px;
|
| 82 |
height: 16px;
|
| 83 |
border-radius: 50%;
|
| 84 |
+
background: #555;
|
| 85 |
position: absolute;
|
| 86 |
top: 2px;
|
| 87 |
left: 2px;
|
| 88 |
transition: transform 0.2s;
|
| 89 |
+
box-shadow: 0 1px 3px rgba(0,0,0,0.4);
|
| 90 |
}
|
| 91 |
|
| 92 |
.toggle-track.active .toggle-thumb {
|
| 93 |
transform: translateX(16px);
|
| 94 |
+
background: #000;
|
| 95 |
}
|
| 96 |
|
| 97 |
.toggle-track.locked {
|
|
|
|
| 102 |
|
| 103 |
.custom-select {
|
| 104 |
appearance: none;
|
| 105 |
+
background: #111;
|
| 106 |
+
border: 1px solid #2a2a2a;
|
| 107 |
border-radius: 8px;
|
| 108 |
padding: 6px 32px 6px 12px;
|
| 109 |
font-size: 12px;
|
| 110 |
font-weight: 600;
|
| 111 |
+
color: var(--t1);
|
| 112 |
cursor: pointer;
|
| 113 |
outline: none;
|
| 114 |
+
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='%23a89f97'%3E%3Cpath fill-rule='evenodd' d='M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z'/%3E%3C/svg%3E");
|
| 115 |
background-repeat: no-repeat;
|
| 116 |
background-position: right 10px center;
|
| 117 |
background-size: 14px;
|
|
|
|
| 119 |
}
|
| 120 |
|
| 121 |
.custom-select:hover {
|
| 122 |
+
border-color: var(--cocoa);
|
| 123 |
}
|
| 124 |
|
| 125 |
.custom-select:focus {
|
| 126 |
+
border-color: var(--cocoa-l);
|
| 127 |
}
|
| 128 |
|
| 129 |
.custom-select:disabled {
|
|
|
|
| 141 |
}
|
| 142 |
|
| 143 |
.setting-card {
|
| 144 |
+
background: #0a0a0a;
|
| 145 |
+
border: 1px solid #2a2a2a;
|
| 146 |
border-radius: 16px;
|
| 147 |
+
box-shadow: 0 4px 24px rgba(0,0,0,0.6);
|
| 148 |
overflow: hidden;
|
| 149 |
}
|
| 150 |
|
| 151 |
.setting-card-header {
|
| 152 |
padding: 16px 24px;
|
| 153 |
+
border-bottom: 1px solid #1a1a1a;
|
| 154 |
}
|
| 155 |
|
| 156 |
.setting-row {
|
|
|
|
| 158 |
align-items: center;
|
| 159 |
justify-content: space-between;
|
| 160 |
padding: 14px 24px;
|
| 161 |
+
border-bottom: 1px solid #111;
|
| 162 |
}
|
| 163 |
|
| 164 |
.setting-row:last-child {
|
|
|
|
| 168 |
</head>
|
| 169 |
|
| 170 |
<body
|
| 171 |
+
class="min-h-screen w-full overflow-x-hidden flex flex-col items-center relative z-0"
|
| 172 |
+
style="background:#000;color:#f0ece6;font-family:'Montserrat',sans-serif">
|
| 173 |
|
| 174 |
<div class="bg-glow"></div>
|
| 175 |
|
| 176 |
<header class="mt-6 flex flex-col items-center flex-shrink-0 w-full z-10">
|
| 177 |
<img src="uf_rf.png" alt="UrbanFlow Logo" class="h-28 w-auto object-contain mb-2">
|
| 178 |
<div class="flex items-center space-x-3">
|
| 179 |
+
<span class="w-12 h-[1px]" style="background:#2a2a2a"></span>
|
| 180 |
+
<p class="font-montserrat font-bold tracking-[0.25em] uppercase text-[10px] text-center" style="color:#a89f97">
|
| 181 |
+
Inference Configuration
|
| 182 |
</p>
|
| 183 |
+
<span class="w-12 h-[1px]" style="background:#2a2a2a"></span>
|
| 184 |
</div>
|
| 185 |
</header>
|
| 186 |
|
|
|
|
| 191 |
<!-- Processing Parameters (locked once started) -->
|
| 192 |
<div class="setting-card" id="card-processing">
|
| 193 |
<div class="setting-card-header">
|
| 194 |
+
<h3 class="font-montserrat font-bold text-base" style="color:#f0ece6">Processing Parameters</h3>
|
| 195 |
+
<p class="text-[10px] font-montserrat font-medium mt-1 uppercase tracking-widest" style="color:#a89f97">
|
| 196 |
+
Auto-configured · adjustable before start</p>
|
| 197 |
</div>
|
| 198 |
|
| 199 |
<!-- Image Size -->
|
| 200 |
<div class="setting-row">
|
| 201 |
<div>
|
| 202 |
+
<div class="text-xs font-semibold" style="color:#f0ece6">Image Size</div>
|
| 203 |
+
<div class="text-[10px] mt-0.5" style="color:#a89f97">Model input resolution</div>
|
| 204 |
</div>
|
| 205 |
+
<div class="flex items-center space-x-3 px-3 py-1.5 rounded-full" style="background:#111;border:1px solid #2a2a2a">
|
| 206 |
+
<button class="stepper-btn p-1 transition" style="color:#a89f97" onclick="adjust('imgsz',-1)">
|
|
|
|
|
|
|
| 207 |
<i class="fa-solid fa-chevron-left text-[10px]"></i>
|
| 208 |
</button>
|
| 209 |
+
<span class="mono-font font-bold w-12 text-center text-sm" style="color:#f0ece6" id="val-imgsz">640</span>
|
| 210 |
+
<button class="stepper-btn p-1 transition" style="color:#a89f97" onclick="adjust('imgsz',1)">
|
|
|
|
|
|
|
| 211 |
<i class="fa-solid fa-chevron-right text-[10px]"></i>
|
| 212 |
</button>
|
| 213 |
</div>
|
|
|
|
| 216 |
<!-- Confidence -->
|
| 217 |
<div class="setting-row">
|
| 218 |
<div>
|
| 219 |
+
<div class="text-xs font-semibold" style="color:#f0ece6">Confidence</div>
|
| 220 |
+
<div class="text-[10px] mt-0.5" style="color:#a89f97">Minimum detection threshold</div>
|
| 221 |
</div>
|
| 222 |
+
<div class="flex items-center space-x-3 px-3 py-1.5 rounded-full" style="background:#111;border:1px solid #2a2a2a">
|
| 223 |
+
<button class="stepper-btn p-1 transition" style="color:#a89f97" onclick="adjust('conf',-1)">
|
|
|
|
|
|
|
| 224 |
<i class="fa-solid fa-chevron-left text-[10px]"></i>
|
| 225 |
</button>
|
| 226 |
+
<span class="mono-font font-bold w-12 text-center text-sm" style="color:#f0ece6" id="val-conf">0.12</span>
|
| 227 |
+
<button class="stepper-btn p-1 transition" style="color:#a89f97" onclick="adjust('conf',1)">
|
|
|
|
|
|
|
| 228 |
<i class="fa-solid fa-chevron-right text-[10px]"></i>
|
| 229 |
</button>
|
| 230 |
</div>
|
|
|
|
| 233 |
<!-- IoU -->
|
| 234 |
<div class="setting-row">
|
| 235 |
<div>
|
| 236 |
+
<div class="text-xs font-semibold" style="color:#f0ece6">IoU Threshold</div>
|
| 237 |
+
<div class="text-[10px] mt-0.5" style="color:#a89f97">Non-max suppression overlap</div>
|
| 238 |
</div>
|
| 239 |
+
<div class="flex items-center space-x-3 px-3 py-1.5 rounded-full" style="background:#111;border:1px solid #2a2a2a">
|
| 240 |
+
<button class="stepper-btn p-1 transition" style="color:#a89f97" onclick="adjust('iou',-1)">
|
|
|
|
|
|
|
| 241 |
<i class="fa-solid fa-chevron-left text-[10px]"></i>
|
| 242 |
</button>
|
| 243 |
+
<span class="mono-font font-bold w-12 text-center text-sm" style="color:#f0ece6" id="val-iou">0.60</span>
|
| 244 |
+
<button class="stepper-btn p-1 transition" style="color:#a89f97" onclick="adjust('iou',1)">
|
|
|
|
|
|
|
| 245 |
<i class="fa-solid fa-chevron-right text-[10px]"></i>
|
| 246 |
</button>
|
| 247 |
</div>
|
|
|
|
| 250 |
<!-- Frame Stride -->
|
| 251 |
<div class="setting-row">
|
| 252 |
<div>
|
| 253 |
+
<div class="text-xs font-semibold" style="color:#f0ece6">Frame Stride</div>
|
| 254 |
+
<div class="text-[10px] mt-0.5" style="color:#a89f97">Frames skipped between detections</div>
|
| 255 |
</div>
|
| 256 |
+
<div class="flex items-center space-x-3 px-3 py-1.5 rounded-full" style="background:#111;border:1px solid #2a2a2a">
|
| 257 |
+
<button class="stepper-btn p-1 transition" style="color:#a89f97" onclick="adjust('detect_stride',-1)">
|
|
|
|
|
|
|
| 258 |
<i class="fa-solid fa-chevron-left text-[10px]"></i>
|
| 259 |
</button>
|
| 260 |
+
<span class="mono-font font-bold w-12 text-center text-sm" style="color:#f0ece6" id="val-detect_stride">3</span>
|
| 261 |
+
<button class="stepper-btn p-1 transition" style="color:#a89f97" onclick="adjust('detect_stride',1)">
|
|
|
|
|
|
|
| 262 |
<i class="fa-solid fa-chevron-right text-[10px]"></i>
|
| 263 |
</button>
|
| 264 |
</div>
|
|
|
|
| 267 |
<!-- Report Format -->
|
| 268 |
<div class="setting-row">
|
| 269 |
<div>
|
| 270 |
+
<div class="text-xs font-semibold" style="color:#f0ece6">Report Format</div>
|
| 271 |
+
<div class="text-[10px] mt-0.5" style="color:#a89f97">Export file type for report charts</div>
|
| 272 |
</div>
|
| 273 |
<select class="custom-select" id="sel-report-format">
|
| 274 |
<option value="png" selected>PNG Image</option>
|
|
|
|
| 279 |
<!-- Annotated Video -->
|
| 280 |
<div class="setting-row">
|
| 281 |
<div>
|
| 282 |
+
<div class="text-xs font-semibold" style="color:#f0ece6">Export Annotated Video</div>
|
| 283 |
+
<div class="text-[10px] mt-0.5" style="color:#a89f97">Bounding boxes · track IDs · spatial boundary</div>
|
| 284 |
</div>
|
| 285 |
<div class="toggle-track" id="tog-annotated" onclick="toggleSwitch(this)">
|
| 286 |
<div class="toggle-thumb"></div>
|
|
|
|
| 291 |
<!-- Display Preferences (editable anytime) -->
|
| 292 |
<div class="setting-card" id="card-display">
|
| 293 |
<div class="setting-card-header">
|
| 294 |
+
<h3 class="font-montserrat font-bold text-base" style="color:#f0ece6">Display Preferences</h3>
|
| 295 |
+
<p class="text-[10px] font-montserrat font-medium mt-1 uppercase tracking-widest" style="color:#a89f97">
|
| 296 |
+
Editable anytime · applies to live charts</p>
|
| 297 |
</div>
|
| 298 |
|
| 299 |
<!-- Chart Color Palette -->
|
| 300 |
<div class="setting-row">
|
| 301 |
<div>
|
| 302 |
+
<div class="text-xs font-semibold" style="color:#f0ece6">Chart Color Palette</div>
|
| 303 |
+
<div class="text-[10px] mt-0.5" style="color:#a89f97">Color scheme for all dashboard charts</div>
|
| 304 |
</div>
|
| 305 |
<select class="custom-select" id="sel-palette">
|
| 306 |
<option value="default" selected>Default</option>
|
|
|
|
| 311 |
|
| 312 |
<!-- Palette Preview -->
|
| 313 |
<div class="px-6 py-4">
|
| 314 |
+
<div class="text-[10px] font-bold uppercase tracking-widest mb-3" style="color:#a89f97">Palette Preview</div>
|
|
|
|
| 315 |
<div class="flex gap-2" id="palette-preview"></div>
|
| 316 |
</div>
|
| 317 |
</div>
|
|
|
|
| 320 |
|
| 321 |
<!-- Start Button -->
|
| 322 |
<button id="btn-start" onclick="startProcessing()"
|
| 323 |
+
class="w-full py-4 rounded-full font-montserrat font-semibold transition-all text-sm flex justify-center items-center shadow-lg"
|
| 324 |
+
style="background:#0a0a0a;border:1px solid var(--cocoa);color:var(--cocoa-l)">
|
| 325 |
+
Initiate Processing <i class="fa-solid fa-arrow-right ml-3 text-sm"></i>
|
| 326 |
</button>
|
| 327 |
|
| 328 |
</main>
|