Move config download/upload into Counties and Exceptions pages
This commit is contained in:
@@ -65,26 +65,6 @@
|
||||
|
||||
.btn-topbar.purple:hover { background: #5a32a3; }
|
||||
|
||||
.btn-topbar-icon {
|
||||
padding: 5px 8px;
|
||||
border: none;
|
||||
border-radius: 5px;
|
||||
cursor: pointer;
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
background: #ffffff18;
|
||||
color: #ddd;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.btn-topbar-icon:hover { background: #ffffff30; }
|
||||
|
||||
.config-group {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 2px;
|
||||
}
|
||||
|
||||
/* ── Main two-panel layout ── */
|
||||
.main {
|
||||
flex: 1;
|
||||
@@ -378,17 +358,6 @@
|
||||
<button class="btn-topbar" onclick="runScript('ls', '')">List Files</button>
|
||||
<button class="btn-topbar" onclick="clearData()" style="color:#f88;">Clear Data</button>
|
||||
<div style="flex:1"></div>
|
||||
{% if current_user %}
|
||||
<div class="config-group">
|
||||
<a href="/api/config/counties.yml" class="btn-topbar-icon" title="Download counties.yml">↓ counties.yml</a>
|
||||
<label class="btn-topbar-icon" title="Upload counties.yml" style="cursor:pointer">↑<input type="file" style="display:none" accept=".yml,.yaml" onchange="uploadConfig('counties.yml', this)"></label>
|
||||
</div>
|
||||
<div class="config-group">
|
||||
<a href="/api/config/exceptions.yml" class="btn-topbar-icon" title="Download exceptions.yml">↓ exceptions.yml</a>
|
||||
<label class="btn-topbar-icon" title="Upload exceptions.yml" style="cursor:pointer">↑<input type="file" style="display:none" accept=".yml,.yaml" onchange="uploadConfig('exceptions.yml', this)"></label>
|
||||
</div>
|
||||
<div class="topbar-sep"></div>
|
||||
{% endif %}
|
||||
<a href="/counties" class="btn-topbar">Counties</a>
|
||||
<a href="/exceptions" class="btn-topbar">Street Exceptions</a>
|
||||
<a href="/map" class="btn-topbar purple">Open Map Viewer</a>
|
||||
@@ -762,25 +731,6 @@
|
||||
.catch(err => showStatus(`Error: ${err.message}`, 'error'));
|
||||
}
|
||||
|
||||
function uploadConfig(filename, input) {
|
||||
if (!input.files.length) return;
|
||||
const formData = new FormData();
|
||||
formData.append('file', input.files[0]);
|
||||
showStatus(`Uploading ${filename}...`, 'info');
|
||||
fetch(`/api/config/${filename}`, { method: 'POST', body: formData })
|
||||
.then(r => r.json())
|
||||
.then(data => {
|
||||
if (data.error) {
|
||||
showStatus(`Error: ${data.error}`, 'error');
|
||||
} else {
|
||||
showStatus(`${filename} uploaded successfully.`, 'success');
|
||||
setTimeout(() => window.location.reload(), 800);
|
||||
}
|
||||
})
|
||||
.catch(err => showStatus(`Error: ${err.message}`, 'error'))
|
||||
.finally(() => { input.value = ''; });
|
||||
}
|
||||
|
||||
function showStatus(msg, type) {
|
||||
const el = document.getElementById('status');
|
||||
el.textContent = msg;
|
||||
|
||||
Reference in New Issue
Block a user