From df5685c729c18304d2bfaa75415952b44bf485eb Mon Sep 17 00:00:00 2001 From: simonpipe Date: Fri, 20 Dec 2024 13:37:32 +0000 Subject: [PATCH] script.js aktualisiert Fehler gefixt --- script.js | 52 +++++++++++++++++++++++++--------------------------- 1 file changed, 25 insertions(+), 27 deletions(-) diff --git a/script.js b/script.js index bbabfa3..8d7b948 100644 --- a/script.js +++ b/script.js @@ -17,6 +17,7 @@ document.addEventListener('DOMContentLoaded', function() { new Sortable(presetContainer, { animation: 250, ghostClass: 'ghost', + handle: '.move-button', // Nur das Verschieben-Symbol erlaubt das Verschieben onEnd: () => { savePresetOrder(); } @@ -86,16 +87,6 @@ document.addEventListener('DOMContentLoaded', function() { }); presetContainer.appendChild(presetItem); - - // Sortable für das Verschieben mit dem 'move-button' - new Sortable(presetContainer, { - animation: 250, - ghostClass: 'ghost', - handle: '.move-button', // Nur das Verschieben-Symbol erlaubt das Verschieben - onEnd: () => { - savePresetOrder(); - } - }); } function editPreset(item, currentName, currentUrl) { @@ -132,7 +123,6 @@ document.addEventListener('DOMContentLoaded', function() { } function playStream(url, item) { - // Stoppe den aktuell laufenden Stream (falls vorhanden) if (currentPlayingItem) { const currentAudio = currentPlayingItem.querySelector('audio'); if (currentAudio) { @@ -149,11 +139,11 @@ document.addEventListener('DOMContentLoaded', function() { audioElement.onerror = function() { alert('Fehler beim Laden des Streams: ' + url); }; - item.appendChild(audioElement); // Füge das Audio-Element zum Preset-Item hinzu + item.appendChild(audioElement); item.classList.add('playing'); - - currentPlayingItem = item; // Aktualisiere das aktuell spielende Element - currentStationName.textContent = item.querySelector('h3').textContent; + + currentPlayingItem = item; + currentStationName.textContent = item.querySelector('h3').textContent; } function exportPresets() { @@ -175,7 +165,7 @@ document.addEventListener('DOMContentLoaded', function() { const input = document.createElement('input'); input.type = 'file'; input.accept = '.json'; - input.onchange = (event) => { + input.addEventListener('change', (event) => { const file = event.target.files[0]; if (file) { const reader = new FileReader(); @@ -183,29 +173,38 @@ document.addEventListener('DOMContentLoaded', function() { try { const importedPresets = JSON.parse(e.target.result); if (Array.isArray(importedPresets)) { + // Speichere die importierten Presets im Local Storage localStorage.setItem('presets', JSON.stringify(importedPresets)); + + // Leere den Preset-Container und lade die neuen Presets presetContainer.innerHTML = ''; - importedPresets.forEach(preset => addNewPreset(preset.name, preset.url)); + importedPresets.forEach(preset => { + if (preset.name && preset.url) { // Prüfe, ob die Presets gültig sind + addNewPreset(preset.name, preset.url); + } else { + console.warn("Ungültiger Preset-Eintrag übersprungen:", preset); + } + }); + alert("Presets erfolgreich importiert."); } else { - alert("Ungültiges Dateiformat. Bitte eine JSON-Datei importieren."); + throw new Error("Das importierte Format ist ungültig. Es wird ein Array erwartet."); } } catch (error) { - alert("Fehler beim Importieren der Presets: " + error); + alert("Fehler beim Importieren der Presets: " + error.message); } }; reader.readAsText(file); } - }; + }); input.click(); } - + const stopButton = document.querySelector('.stop-button'); const progressBar = document.getElementById('progress-bar'); const currentStationName = document.getElementById('current-station-name'); stopButton.addEventListener('click', () => { - // Stoppe den aktuellen Stream und setze currentPlayingItem zurück if (currentPlayingItem) { const audioElement = currentPlayingItem.querySelector('audio'); audioElement.pause(); @@ -216,9 +215,8 @@ document.addEventListener('DOMContentLoaded', function() { } }); - // Funktion zum Laden der Presets von der Datei function loadPresetsFromFile(event) { - event.preventDefault(); // Verhindert, dass der Link die Seite neu lädt + event.preventDefault(); fetch('/demo-presets/webradio_presets.json') .then(response => { @@ -228,9 +226,9 @@ document.addEventListener('DOMContentLoaded', function() { return response.json(); }) .then(data => { - localStorage.setItem('presets', JSON.stringify(data)); // Speichern der Presets im Local Storage - presetContainer.innerHTML = ''; // Leert den Preset-Container - data.forEach(preset => addNewPreset(preset.name, preset.url)); // Fügt die Presets erneut hinzu + localStorage.setItem('presets', JSON.stringify(data)); + presetContainer.innerHTML = ''; + data.forEach(preset => addNewPreset(preset.name, preset.url)); alert('Presets erfolgreich geladen.'); }) .catch(error => {