Neues Modul js/ai/promptBuilder.js: reine Funktion buildPrompt(), deckt alle 10 Pflichtpunkte aus anforderung.md explizit ab (Region+Radius, Kategorien, Alter, wichtige Eigenschaften, Anzahl Ergebnisse, keine erfundenen Informationen, unsichere Angaben kennzeichnen, ausschliesslich gueltiges JSON, genaue Koordinaten, direkte Importierbarkeit) und bettet das exakte JSON-Zielschema aus anforderung.md unveraendert ein. UI (js/ui/promptGenerator.js): Modal mit allen Eingabefeldern aus der Anforderung (Region, Radius, Kategorien, Altersgruppe, Indoor/Outdoor, Kostenrahmen, max. Ergebnisse, besondere Anforderungen als Checkboxen + Freitext, Ausgabesprache), Live-Vorschau des generierten Prompts, Copy-to-Clipboard mit execCommand-Fallback (js/utils/clipboard.js) und Speichern als Textdatei (js/utils/download.js). Neuer Toolbar-Button oeffnet den Generator. JSON-Import der KI-Antwort ist bewusst nicht Teil dieser Phase, sondern folgt in Phase 7. docs/plan.md entsprechend fortgeschrieben.
31 lines
1.0 KiB
JavaScript
31 lines
1.0 KiB
JavaScript
// Download-Utility für den KI-Prompt-Generator (Phase 6): erzeugt clientseitig
|
|
// einen Blob und triggert den Download über ein unsichtbares
|
|
// <a download>-Element. Funktioniert rein clientseitig, also auch unter
|
|
// file:// ohne lokalen Server.
|
|
|
|
(function () {
|
|
/**
|
|
* Speichert Text als Datei über den Browser-Download.
|
|
* @param {string} filename
|
|
* @param {string} content
|
|
*/
|
|
function downloadTextFile(filename, content) {
|
|
const blob = new Blob([content], { type: 'text/plain;charset=utf-8' });
|
|
const url = URL.createObjectURL(blob);
|
|
|
|
const link = document.createElement('a');
|
|
link.href = url;
|
|
link.download = filename;
|
|
link.style.display = 'none';
|
|
document.body.appendChild(link);
|
|
link.click();
|
|
document.body.removeChild(link);
|
|
|
|
// URL erst leicht verzögert freigeben, damit der Download-Vorgang
|
|
// in jedem Browser sicher gestartet werden konnte.
|
|
setTimeout(() => URL.revokeObjectURL(url), 1000);
|
|
}
|
|
|
|
EventMap.utils.downloadTextFile = downloadTextFile;
|
|
})();
|