templates/index.html aktualisiert

This commit is contained in:
2026-03-06 12:14:10 +00:00
parent a97a2bb5eb
commit 45c354c6a8

View File

@@ -288,9 +288,20 @@
try { try {
const res = await fetch('/api/settings'); const res = await fetch('/api/settings');
currentSettings = await res.json(); currentSettings = await res.json();
document.getElementById('ai-provider').value = currentSettings.provider;
updateModelDropdown(true); const providerSelect = document.getElementById('ai-provider');
} catch (e) {} providerSelect.value = currentSettings.provider;
// Falls eine Ollama-URL in den Settings gespeichert ist, diese setzen
if (currentSettings.ollama_url) {
document.getElementById('ollama-url').value = currentSettings.ollama_url;
}
// Jetzt die Modelle laden - WICHTIG: await nutzen
await updateModelDropdown(true);
} catch (e) {
console.error("Fehler beim Laden der Initial-Settings:", e);
}
} }
loadSettings(); loadSettings();
@@ -306,18 +317,23 @@
const provider = document.getElementById('ai-provider').value; const provider = document.getElementById('ai-provider').value;
const modelSelect = document.getElementById('ai-model'); const modelSelect = document.getElementById('ai-model');
const urlContainer = document.getElementById('ollama-url-container'); const urlContainer = document.getElementById('ollama-url-container');
const ollamaUrl = document.getElementById('ollama-url').value;
// FIX: Zeige das URL-Feld nur an, wenn Ollama ausgewählt ist // Sichtbarkeit des URL-Feldes steuern
if (provider === "ollama") { urlContainer.style.display = (provider === "ollama") ? "flex" : "none";
urlContainer.style.display = "flex";
} else {
urlContainer.style.display = "none";
}
modelSelect.innerHTML = '<option>Lade Modelle...</option>'; modelSelect.innerHTML = '<option>Lade Modelle...</option>';
// API-Query vorbereiten
let apiUrl = `/api/models?provider=${provider}`;
if (provider === "ollama" && ollamaUrl) {
apiUrl += `&base_url=${encodeURIComponent(ollamaUrl)}`;
}
try { try {
const res = await fetch(`/api/models?provider=${provider}`); const res = await fetch(apiUrl);
if (!res.ok) throw new Error("Server-Antwort nicht OK");
const data = await res.json(); const data = await res.json();
modelSelect.innerHTML = ''; modelSelect.innerHTML = '';
@@ -327,16 +343,18 @@
opt.value = opt.textContent = m; opt.value = opt.textContent = m;
modelSelect.appendChild(opt); modelSelect.appendChild(opt);
}); });
// Setze gespeichertes Modell beim ersten Laden
if (isInitialLoad && currentSettings[`${provider}_model`]) { // Gespeichertes Modell setzen
modelSelect.value = currentSettings[`${provider}_model`]; const savedModel = currentSettings[`${provider}_model`];
if (isInitialLoad && savedModel) {
modelSelect.value = savedModel;
} }
} else { } else {
modelSelect.innerHTML = '<option value="">Keine Modelle gefunden</option>'; modelSelect.innerHTML = '<option value="">Keine Modelle gefunden</option>';
} }
} catch (e) { } catch (e) {
console.error("Fehler beim Laden der Modelle:", e); console.error("Fehler beim Modell-Abruf:", e);
modelSelect.innerHTML = '<option value="">Fehler beim Laden</option>'; modelSelect.innerHTML = '<option value="">Modelle konnten nicht geladen werden</option>';
} }
} }