Move config download/upload into Counties and Exceptions pages

This commit is contained in:
zyphlar
2026-04-23 10:16:12 -07:00
parent 24c27767ec
commit 7fdf3f75ea
4 changed files with 70 additions and 52 deletions
+34
View File
@@ -181,6 +181,19 @@
.btn-add:hover { background: #c8e6c9; }
.btn-save { background: #17a2b8; color: white; }
.btn-save:hover { filter: brightness(0.9); }
.btn-dl {
padding: 7px 12px;
border: none;
border-radius: 5px;
cursor: pointer;
font-size: 13px;
font-weight: 600;
background: #e9ecef;
color: #555;
text-decoration: none;
}
.btn-dl:hover { background: #dee2e6; }
</style>
</head>
<body>
@@ -205,6 +218,11 @@
<div class="footer">
<button class="btn btn-add" onclick="addCounty()">+ Add county</button>
<button class="btn btn-save" onclick="save()">Save</button>
{% if current_user %}
<div style="flex:1"></div>
<a href="/api/config/counties.yml" class="btn-dl" title="Download counties.yml">↓ Download</a>
<label class="btn-dl" style="cursor:pointer" title="Upload counties.yml">↑ Upload<input type="file" style="display:none" accept=".yml,.yaml" onchange="uploadConfig(this)"></label>
{% endif %}
</div>
</div>
@@ -338,6 +356,22 @@
.catch(err => showStatus(`Error: ${err.message}`, 'error'));
}
function uploadConfig(input) {
if (!input.files.length) return;
const formData = new FormData();
formData.append('file', input.files[0]);
showStatus('Uploading…', 'success');
fetch('/api/config/counties.yml', { method: 'POST', body: formData })
.then(r => r.json())
.then(data => {
if (data.error) { showStatus(`Error: ${data.error}`, 'error'); return; }
showStatus('Uploaded — reloading…', 'success');
setTimeout(() => window.location.reload(), 800);
})
.catch(err => showStatus(`Error: ${err.message}`, 'error'))
.finally(() => { input.value = ''; });
}
// Load on open
fetch('/api/counties')
.then(r => r.json())