fix(planner): replace alert() error popups with inline error banner

Show API errors and network failures in a red inline div below the
export form instead of browser alert() dialogs. Error div is hidden
on each new submit attempt so stale messages don't linger.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Deeman
2026-02-24 10:36:01 +01:00
parent c5176d7d17
commit d9de9e4cda

View File

@@ -71,6 +71,7 @@
<button type="submit" class="btn" style="width:100%;margin-top:0.5rem" id="export-buy-btn">
{{ t.export_btn }}
</button>
<div id="export-error" style="display:none;margin-top:0.75rem;padding:0.75rem 1rem;background:#FEE2E2;color:#991B1B;border-radius:8px;font-size:0.875rem"></div>
</form>
</div>
@@ -106,9 +107,16 @@
{% block scripts %}
<script>
function showExportError(msg) {
var el = document.getElementById('export-error');
el.textContent = msg;
el.style.display = 'block';
}
document.getElementById('export-form').addEventListener('submit', async function(e) {
e.preventDefault();
const btn = document.getElementById('export-buy-btn');
document.getElementById('export-error').style.display = 'none';
btn.disabled = true;
btn.textContent = '{{ t.export_generating }}';
@@ -120,7 +128,7 @@ document.getElementById('export-form').addEventListener('submit', async function
});
const data = await resp.json();
if (data.error) {
alert(data.error);
showExportError(data.error);
btn.disabled = false;
btn.textContent = '{{ t.export_btn }}';
return;
@@ -133,7 +141,7 @@ document.getElementById('export-form').addEventListener('submit', async function
btn.disabled = false;
btn.textContent = '{{ t.export_btn }}';
} catch (err) {
alert('{{ t.export_failed }}');
showExportError('{{ t.export_failed }}');
btn.disabled = false;
btn.textContent = '{{ t.export_btn }}';
}