Add files via upload

This commit is contained in:
Tomáš Dvořák
2025-05-23 10:22:31 +02:00
committed by GitHub
parent 2ac4b2ec03
commit d64fe7e56a
+19 -45
View File
@@ -88,15 +88,12 @@
<!-- Contacts Grid --> <!-- Contacts Grid -->
<div class="container"> <div class="container">
<h1>Kontakty</h1>
<div class="section"> <div class="section">
<h2>Hlavní kontakty</h2>
<div id="contacts" class="grid gap-6 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4"></div> <div id="contacts" class="grid gap-6 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4"></div>
</div> </div>
<div class="section"> <div class="section">
<h2>Interní kontakty</h2>
<div id="internal-contacts" class="grid gap-6 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4"></div> <div id="internal-contacts" class="grid gap-6 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4"></div>
</div> </div>
</div> </div>
@@ -136,32 +133,37 @@
async function loadContacts() { async function loadContacts() {
try { try {
showLoading();
const response = await fetch('/contacts'); const response = await fetch('/contacts');
const apiData = await response.json(); if (!response.ok) throw new Error(`HTTP ${response.status}`);
// Directly use the API data structure const apiData = await response.json();
currentData = { currentData = {
Contacts: apiData.contacts || [], Contacts: apiData.contacts || [],
InternalContacts: apiData.internal_contacts || [], InternalContacts: apiData.internal_contacts || [],
last_updated: apiData.last_updated last_updated: apiData.last_updated
}; };
hideLoading();
showContactsList(); showContactsList();
updateStats(currentData); updateStats(currentData);
} catch (error) { } catch (error) {
hideLoading();
showError('Chyba při načítání kontaktů'); showError('Chyba při načítání kontaktů');
console.error('Error loading contacts:', error); console.error('Error:', error);
} }
} }
function showLoading() { function showLoading() {
document.getElementById('loading').classList.remove('hidden'); const loading = document.getElementById('loading');
document.getElementById('contactsList').classList.add('hidden'); const contactsList = document.getElementById('contactsList');
document.getElementById('error').classList.add('hidden'); if (loading) loading.classList.remove('hidden');
if (contactsList) contactsList.classList.add('hidden');
} }
function hideLoading() { function hideLoading() {
document.getElementById('loading').classList.add('hidden'); const loading = document.getElementById('loading');
if (loading) loading.classList.add('hidden');
} }
function showContactsList() { function showContactsList() {
@@ -307,48 +309,20 @@
async function reloadContacts() { async function reloadContacts() {
const btn = document.getElementById('reloadBtn'); const btn = document.getElementById('reloadBtn');
const originalText = btn.innerHTML; if (!btn) return;
btn.disabled = true; const originalText = btn.innerHTML;
btn.innerHTML = ` btn.innerHTML = '<i class="fas fa-sync-alt animate-spin mr-2"></i> Aktualizace...';
<i class="fas fa-sync-alt animate-spin"></i>
Načítání...
`;
try { try {
showLoading();
const response = await fetch('/reload', { method: 'POST' }); const response = await fetch('/reload', { method: 'POST' });
if (!response.ok) { if (!response.ok) throw new Error(`HTTP ${response.status}`);
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
}
// Small delay to show the loading state
await new Promise(resolve => setTimeout(resolve, 500));
await loadContacts(); await loadContacts();
// Show success feedback
btn.innerHTML = `
<i class="fas fa-check text-green-500"></i>
Obnoveno
`;
setTimeout(() => {
btn.innerHTML = originalText;
}, 2000);
} catch (error) { } catch (error) {
console.error('Error reloading:', error); showError(error.message);
btn.innerHTML = `
<i class="fas fa-times text-red-500"></i>
Chyba
`;
setTimeout(() => {
btn.innerHTML = originalText;
}, 2000);
alert('Chyba při obnovování: ' + error.message);
} finally { } finally {
btn.disabled = false; btn.innerHTML = originalText;
} }
} }