diff --git a/preset-ui.js b/preset-ui.js new file mode 100644 index 0000000..d49b954 --- /dev/null +++ b/preset-ui.js @@ -0,0 +1,81 @@ +// preset-ui.js +window.PresetUI = { + renderTable() { + const tableBody = document.querySelector('#sortable-tbody'); + if (!tableBody) return; + tableBody.innerHTML = ''; + + window.PresetManager.presets.forEach((preset, index) => { + const row = document.createElement('tr'); + row.setAttribute('data-index', index); + row.innerHTML = ` + ☰ + + + + `; + tableBody.appendChild(row); + }); + this.updateExportFields(); + }, + + async updateExportFields() { + const exportField = document.getElementById('export-string-field'); + if (!exportField || !window.PresetManager) return; + const dataString = await window.PresetManager.generateExportCode(false); + const baseUrl = window.location.origin + window.location.pathname; + exportField.value = baseUrl + '#' + dataString; + }, + + copyShareLink() { + const exportField = document.getElementById('export-string-field'); + if (!exportField || !exportField.value) return; + + if (navigator.clipboard && window.isSecureContext) { + navigator.clipboard.writeText(exportField.value) + .catch(() => this.fallbackCopy(exportField)); + } else { + this.fallbackCopy(exportField); + } + }, + + fallbackCopy(field) { + field.select(); + field.setSelectionRange(0, 99999); + try { + document.execCommand('copy'); + } catch (err) { + window.UI.showAlert("Fehler", "Link bitte manuell kopieren."); + } + }, + + addPreset() { + // Hier Umlaute vermeiden oder Entities nutzen beim Default-Namen + window.PresetManager.presets.push({ name: 'Neuer Sender', url: '' }); + this.renderTable(); + }, + + deletePreset(index) { + // "Löschen" -> "Löschen" zur Sicherheit + window.UI.showConfirm("Löschen", "Sender wirklich entfernen?", (conf) => { + if (conf) { + window.PresetManager.presets.splice(index, 1); + this.renderTable(); + } + }); + }, + + changeName(i, v) { + window.PresetManager.presets[i].name = v; + this.updateExportFields(); + }, + + changeURL(i, v) { + window.PresetManager.presets[i].url = v; + this.updateExportFields(); + } +}; + +window.addPreset = () => window.PresetUI.addPreset(); +window.deletePreset = (i) => window.PresetUI.deletePreset(i); +window.copyShareLink = () => window.PresetUI.copyShareLink(); \ No newline at end of file