// prompts-module.js (function() { // DOM-Elemente let addPromptBtn, promptsList; // Initialisierungsfunktion für das Prompts-Modul function initPromptsModule(globalState) { // DOM-Elemente referenzieren addPromptBtn = document.getElementById('add-prompt-btn'); promptsList = document.getElementById('prompts-list'); // Event-Listener hinzufügen setupEventListeners(globalState); // Initialdaten rendern renderMyPrompts(globalState); } // Event-Listener einrichten function setupEventListeners(globalState) { // Neuen Prompt hinzufügen addPromptBtn.addEventListener('click', () => { const newPrompt = prompt('Geben Sie den neuen Prompt ein:'); if (newPrompt && newPrompt.trim()) { const promptData = { id: `prompt_${Date.now()}`, content: newPrompt.trim(), created_at: new Date().toISOString() }; // Prompt zur globalen Liste hinzufügen globalState.availablePrompts.push(promptData); // UI aktualisieren renderMyPrompts(globalState); // Optional: Prompt speichern savePrompt(promptData, globalState); } }); } // Meine Prompts rendern function renderMyPrompts(globalState) { if (!promptsList) return; promptsList.innerHTML = ''; if (globalState.availablePrompts.length === 0) { promptsList.innerHTML = '
Keine Prompts vorhanden.
'; return; } globalState.availablePrompts.forEach(prompt => { const promptItem = document.createElement('div'); promptItem.className = 'prompt-item'; promptItem.innerHTML = `
${prompt.content}
Erstellt am: ${new Date(prompt.created_at).toLocaleString()}
`; promptsList.appendChild(promptItem); }); // Event-Listener für Prompt-Aktionen einrichten setupPromptActionListeners(globalState); } // Event-Listener für Prompt-Aktionen function setupPromptActionListeners(globalState) { // "Verwenden"-Button document.querySelectorAll('.use-prompt-btn').forEach(btn => { btn.addEventListener('click', () => { const promptId = btn.getAttribute('data-id'); const selectedPrompt = globalState.availablePrompts.find(p => p.id === promptId); if (selectedPrompt) { // Workflow-Modul aktivieren und Prompt übernehmen document.querySelector('a[href="#workflow"]').click(); // Prompt in Workflow-Eingabefeld setzen const promptInput = document.getElementById('prompt-input'); const promptSelect = document.getElementById('prompt-select'); if (promptInput) { promptInput.value = selectedPrompt.content; } if (promptSelect) { // Wenn der Prompt bereits existiert, ihn in der Dropdown auswählen const existingOption = Array.from(promptSelect.options).find( option => option.textContent.includes(selectedPrompt.content.substring(0, 50)) ); if (existingOption) { promptSelect.value = existingOption.value; } } } }); }); // "Löschen"-Button document.querySelectorAll('.delete-prompt-btn').forEach(btn => { btn.addEventListener('click', async () => { const promptId = btn.getAttribute('data-id'); if (confirm('Möchten Sie diesen Prompt wirklich löschen?')) { try { // Aus dem globalen State entfernen globalState.availablePrompts = globalState.availablePrompts.filter(p => p.id !== promptId); // UI aktualisieren renderMyPrompts(globalState); // Optional: Prompt vom Server löschen await deletePrompt(promptId); } catch (error) { console.error("Fehler beim Löschen des Prompts:", error); } } }); }); } // Prompt speichern async function savePrompt(promptData, globalState) { try { // Prompt auf dem Server speichern const response = await window.globalUtils.postData('/api/prompts/save', promptData); // Rückmeldung vom Server verarbeiten if (response && response.id) { // Wenn der Server eine ID zurückgibt, diese aktualisieren const index = globalState.availablePrompts.findIndex(p => p.id === promptData.id); if (index !== -1) { globalState.availablePrompts[index].id = response.id; } // UI aktualisieren renderMyPrompts(globalState); } } catch (error) { console.error("Fehler beim Speichern des Prompts:", error); } } // Prompt löschen async function deletePrompt(promptId) { try { // Prompt vom Server löschen await window.globalUtils.postData('/api/prompts/delete', { id: promptId }); } catch (error) { console.error("Fehler beim Löschen des Prompts:", error); throw error; } } // Modul-Initialisierung exportieren window.initPromptsModule = initPromptsModule; })();