From 899b3e49f8fe08b4ba5a1d6a931a3b2cfcc36607 Mon Sep 17 00:00:00 2001 From: simonpipe Date: Fri, 20 Dec 2024 13:27:41 +0000 Subject: [PATCH] script.js aktualisiert MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ein Starter-Set an Presets hinzugefügt --- script.js | 45 ++++++++++++++++++++++++++++++++++++++------- 1 file changed, 38 insertions(+), 7 deletions(-) diff --git a/script.js b/script.js index 4fadd18..bbabfa3 100644 --- a/script.js +++ b/script.js @@ -7,16 +7,16 @@ document.addEventListener('DOMContentLoaded', function() { const exportButton = document.getElementById('export-button'); const importButton = document.getElementById('import-button'); + const loadPresetsLink = document.getElementById('load-presets-link'); // Der neue Link zum Laden der Presets-Datei exportButton.addEventListener('click', exportPresets); importButton.addEventListener('click', importPresets); + loadPresetsLink.addEventListener('click', loadPresetsFromFile); // Event für den Link loadExistingPresets(); - // Initialisierung von Sortable für den gesamten Container und das Verschieben mit dem Verschieben-Symbol new Sortable(presetContainer, { animation: 250, ghostClass: 'ghost', - handle: '.move-button', // Nur das Verschieben-Symbol erlaubt das Verschieben onEnd: () => { savePresetOrder(); } @@ -86,6 +86,16 @@ 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) { @@ -122,7 +132,7 @@ document.addEventListener('DOMContentLoaded', function() { } function playStream(url, item) { - // Stoppe den aktuell laufenden Stream (falls vorhanden) + // Stoppe den aktuell laufenden Stream (falls vorhanden) if (currentPlayingItem) { const currentAudio = currentPlayingItem.querySelector('audio'); if (currentAudio) { @@ -141,9 +151,9 @@ document.addEventListener('DOMContentLoaded', function() { }; item.appendChild(audioElement); // Füge das Audio-Element zum Preset-Item hinzu item.classList.add('playing'); - + currentPlayingItem = item; // Aktualisiere das aktuell spielende Element - currentStationName.textContent = item.querySelector('h3').textContent; + currentStationName.textContent = item.querySelector('h3').textContent; } function exportPresets() { @@ -160,7 +170,7 @@ document.addEventListener('DOMContentLoaded', function() { URL.revokeObjectURL(url); } - + function importPresets() { const input = document.createElement('input'); input.type = 'file'; @@ -189,7 +199,7 @@ document.addEventListener('DOMContentLoaded', function() { }; input.click(); } - + const stopButton = document.querySelector('.stop-button'); const progressBar = document.getElementById('progress-bar'); const currentStationName = document.getElementById('current-station-name'); @@ -206,4 +216,25 @@ 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 + + fetch('/demo-presets/webradio_presets.json') + .then(response => { + if (!response.ok) { + throw new Error('Datei konnte nicht geladen werden'); + } + 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 + alert('Presets erfolgreich geladen.'); + }) + .catch(error => { + alert('Fehler beim Laden der Presets: ' + error.message); + }); + } });