feat: Manual sound data uploads, standalone SLM type added.(no modem mode), Smart uploading with fuzzy name matching enabled.

This commit is contained in:
2026-02-25 00:43:47 +00:00
parent 8e292b1aca
commit 291fa8e862
6 changed files with 685 additions and 6 deletions

View File

@@ -70,7 +70,7 @@
class="tab-button px-4 py-3 border-b-2 border-transparent font-medium text-sm text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-white hover:border-gray-300 dark:hover:border-gray-600 transition-colors">
Settings
</button>
{% if assigned_unit %}
{% if assigned_unit and connection_mode == 'connected' %}
<button onclick="switchTab('command')"
data-tab="command"
class="tab-button px-4 py-3 border-b-2 border-transparent font-medium text-sm text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-white hover:border-gray-300 dark:hover:border-gray-600 transition-colors">
@@ -214,23 +214,54 @@
<div class="bg-white dark:bg-slate-800 rounded-xl shadow-lg p-6">
<div class="flex items-center justify-between">
<div>
{% if connection_mode == 'connected' %}
<p class="text-sm text-gray-600 dark:text-gray-400">Active Session</p>
<p class="text-lg font-semibold text-gray-900 dark:text-white mt-2">
{% if active_session %}
<span class="text-green-600 dark:text-green-400">Recording</span>
<span class="text-green-600 dark:text-green-400">Monitoring</span>
{% else %}
<span class="text-gray-500">Idle</span>
{% endif %}
</p>
{% else %}
<p class="text-sm text-gray-600 dark:text-gray-400">Mode</p>
<p class="text-lg font-semibold mt-2">
<span class="text-amber-600 dark:text-amber-400">Offline / Manual</span>
</p>
{% endif %}
</div>
<div class="w-12 h-12 bg-purple-100 dark:bg-purple-900/30 rounded-lg flex items-center justify-center">
{% if connection_mode == 'connected' %}
<svg class="w-6 h-6 text-purple-600 dark:text-purple-400" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"></path>
</svg>
{% else %}
<svg class="w-6 h-6 text-amber-600 dark:text-amber-400" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-8l-4-4m0 0L8 8m4-4v12"></path>
</svg>
{% endif %}
</div>
</div>
</div>
</div>
{% if connection_mode == 'connected' and assigned_unit %}
<!-- Live Status Row (connected NRLs only) -->
<div class="mt-6">
<div class="bg-white dark:bg-slate-800 rounded-xl shadow-lg p-6">
<div class="flex items-center justify-between mb-4">
<h3 class="text-lg font-semibold text-gray-900 dark:text-white">Live Status</h3>
<span class="text-xs text-gray-500 dark:text-gray-400">{{ assigned_unit.id }}</span>
</div>
<div id="nrl-live-status"
hx-get="/api/projects/{{ project_id }}/nrl/{{ location_id }}/live-status"
hx-trigger="load, every 30s"
hx-swap="innerHTML">
<div class="text-center py-4 text-gray-500 text-sm">Loading status&hellip;</div>
</div>
</div>
</div>
{% endif %}
</div>
<!-- Settings Tab -->
@@ -281,8 +312,8 @@
</div>
</div>
<!-- Command Center Tab -->
{% if assigned_unit %}
<!-- Command Center Tab (connected NRLs only) -->
{% if assigned_unit and connection_mode == 'connected' %}
<div id="command-tab" class="tab-panel hidden">
<div class="bg-white dark:bg-slate-800 rounded-xl shadow-lg p-6">
<h2 class="text-xl font-semibold text-gray-900 dark:text-white mb-6">