feat: add data collection mode to projects with UI updates and migration script
This commit is contained in:
@@ -75,6 +75,32 @@ Include this modal in pages that use the project picker.
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2">
|
||||
Data Collection <span class="text-red-500">*</span>
|
||||
</label>
|
||||
<div class="grid grid-cols-2 gap-3">
|
||||
<label class="flex items-start gap-3 p-3 border-2 border-seismo-orange bg-orange-50 dark:bg-orange-900/20 rounded-lg cursor-pointer" id="qcp-mode-manual-label">
|
||||
<input type="radio" name="data_collection_mode" value="manual" checked
|
||||
onchange="qcpUpdateModeStyles()"
|
||||
class="mt-0.5 accent-seismo-orange shrink-0">
|
||||
<div>
|
||||
<p class="text-sm font-medium text-gray-900 dark:text-white">Manual</p>
|
||||
<p class="text-xs text-gray-500 dark:text-gray-400">SD card retrieved daily</p>
|
||||
</div>
|
||||
</label>
|
||||
<label class="flex items-start gap-3 p-3 border-2 border-gray-300 dark:border-gray-600 rounded-lg cursor-pointer" id="qcp-mode-remote-label">
|
||||
<input type="radio" name="data_collection_mode" value="remote"
|
||||
onchange="qcpUpdateModeStyles()"
|
||||
class="mt-0.5 accent-seismo-orange shrink-0">
|
||||
<div>
|
||||
<p class="text-sm font-medium text-gray-900 dark:text-white">Remote</p>
|
||||
<p class="text-xs text-gray-500 dark:text-gray-400">Modem, data pulled via FTP</p>
|
||||
</div>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="qcp-error" class="hidden p-3 bg-red-100 dark:bg-red-900/30 text-red-700 dark:text-red-300 rounded-lg text-sm">
|
||||
</div>
|
||||
|
||||
@@ -98,6 +124,24 @@ Include this modal in pages that use the project picker.
|
||||
</div>
|
||||
|
||||
<script>
|
||||
function qcpUpdateModeStyles() {
|
||||
const manualChecked = document.querySelector('input[name="data_collection_mode"][value="manual"]')?.checked;
|
||||
const manualLabel = document.getElementById('qcp-mode-manual-label');
|
||||
const remoteLabel = document.getElementById('qcp-mode-remote-label');
|
||||
if (!manualLabel || !remoteLabel) return;
|
||||
if (manualChecked) {
|
||||
manualLabel.classList.add('border-seismo-orange', 'bg-orange-50', 'dark:bg-orange-900/20');
|
||||
manualLabel.classList.remove('border-gray-300', 'dark:border-gray-600');
|
||||
remoteLabel.classList.remove('border-seismo-orange', 'bg-orange-50', 'dark:bg-orange-900/20');
|
||||
remoteLabel.classList.add('border-gray-300', 'dark:border-gray-600');
|
||||
} else {
|
||||
remoteLabel.classList.add('border-seismo-orange', 'bg-orange-50', 'dark:bg-orange-900/20');
|
||||
remoteLabel.classList.remove('border-gray-300', 'dark:border-gray-600');
|
||||
manualLabel.classList.remove('border-seismo-orange', 'bg-orange-50', 'dark:bg-orange-900/20');
|
||||
manualLabel.classList.add('border-gray-300', 'dark:border-gray-600');
|
||||
}
|
||||
}
|
||||
|
||||
// Quick create project modal functions
|
||||
if (typeof openCreateProjectModal === 'undefined') {
|
||||
function openCreateProjectModal(searchQuery, pickerId = '') {
|
||||
@@ -113,6 +157,7 @@ if (typeof openCreateProjectModal === 'undefined') {
|
||||
|
||||
// Reset form
|
||||
document.getElementById('quickCreateProjectForm').reset();
|
||||
qcpUpdateModeStyles();
|
||||
if (errorDiv) errorDiv.classList.add('hidden');
|
||||
|
||||
// Try to parse the search query intelligently
|
||||
|
||||
Reference in New Issue
Block a user