templates/index.html aktualisiert

This commit is contained in:
2026-03-05 16:56:52 +00:00
parent 2040c73c9e
commit c3a5cb1bc8

View File

@@ -81,16 +81,23 @@
font-size: 1.2em;
}
.toolbar-controls {
display: flex;
gap: 10px;
align-items: center;
}
.toolbar-controls select, .toolbar-controls button {
.toolbar-controls select,
.toolbar-controls input,
.toolbar-controls button {
padding: 5px 10px;
border-radius: 4px;
border: 1px solid #bdc3c7;
color: #333; /* Dunkle Schrift erzwingen */
background-color: #fff; /* Weißen Hintergrund erzwingen */
}
/* WICHTIG: Den Speichern-Button überschreiben wir wieder, damit er grün mit weißer Schrift bleibt */
.save-btn {
background-color: #27ae60;
color: white !important;
border: none;
cursor: pointer;
font-weight: bold;
}
.save-btn {
@@ -132,6 +139,11 @@
<select id="ai-model">
</select>
<span id="ollama-url-container" style="display: none; align-items: center; gap: 5px; margin-left: 10px;">
<label for="ollama-url">URL:</label>
<input type="text" id="ollama-url" placeholder="http://127.0.0.1:11434/v1" style="width: 200px;">
</span>
<button class="save-btn" onclick="saveSettings()">Speichern</button>
<span id="settings-status"></span>
</div>
@@ -364,6 +376,9 @@
currentSettings = await res.json();
document.getElementById('ai-provider').value = currentSettings.provider;
// NEU: Ollama URL laden
document.getElementById('ollama-url').value = currentSettings.ollama_url || "http://127.0.0.1:11434/v1";
updateModelDropdown(true);
} catch (e) {
console.error("Fehler beim Laden der Einstellungen:", e);
@@ -373,21 +388,30 @@
function updateModelDropdown(isInitialLoad = false) {
const provider = document.getElementById('ai-provider').value;
const modelSelect = document.getElementById('ai-model');
modelSelect.innerHTML = ''; // Leeren
const ollamaContainer = document.getElementById('ollama-url-container'); // NEU
// NEU: URL-Feld nur anzeigen, wenn Ollama gewählt ist
if (provider === 'ollama') {
ollamaContainer.style.display = 'flex';
} else {
ollamaContainer.style.display = 'none';
}
modelSelect.innerHTML = '';
// Modelle des gewählten Providers einfügen
modelOptions[provider].forEach(m => {
const opt = document.createElement('option');
opt.value = m;
opt.textContent = m;
modelSelect.appendChild(opt);
});
if(modelOptions[provider]) {
modelOptions[provider].forEach(m => {
const opt = document.createElement('option');
opt.value = m;
opt.textContent = m;
modelSelect.appendChild(opt);
});
}
if (isInitialLoad) {
// Das aktuell gespeicherte Modell setzen
const savedModel = currentSettings[`${provider}_model`];
// Falls das in der .env gespeicherte Modell nicht in unserer Liste ist, fügen wir es hinzu
if (savedModel && !modelOptions[provider].includes(savedModel)) {
const opt = document.createElement('option');
opt.value = savedModel;
@@ -402,6 +426,7 @@
async function saveSettings() {
const provider = document.getElementById('ai-provider').value;
const model = document.getElementById('ai-model').value;
const ollamaUrl = document.getElementById('ollama-url').value; // NEU
const statusEl = document.getElementById('settings-status');
statusEl.textContent = "Speichere...";
@@ -411,15 +436,19 @@
await fetch('/api/settings', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ provider, model })
body: JSON.stringify({
provider: provider,
model: model,
ollama_base_url: ollamaUrl // NEU
})
});
statusEl.textContent = "✅ Gespeichert!";
statusEl.style.color = "#2ecc71";
// Aktualisiere unsere lokalen Daten
currentSettings.provider = provider;
currentSettings[`${provider}_model`] = model;
currentSettings.ollama_base_url = ollamaUrl;
} catch (e) {
statusEl.textContent = "❌ Fehler";