script.js aktualisiert

Fehler gefixt
This commit is contained in:
simonpipe 2024-12-20 13:37:32 +00:00
parent 899b3e49f8
commit df5685c729

View file

@ -17,6 +17,7 @@ document.addEventListener('DOMContentLoaded', function() {
new Sortable(presetContainer, { new Sortable(presetContainer, {
animation: 250, animation: 250,
ghostClass: 'ghost', ghostClass: 'ghost',
handle: '.move-button', // Nur das Verschieben-Symbol erlaubt das Verschieben
onEnd: () => { onEnd: () => {
savePresetOrder(); savePresetOrder();
} }
@ -86,16 +87,6 @@ document.addEventListener('DOMContentLoaded', function() {
}); });
presetContainer.appendChild(presetItem); 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) { function editPreset(item, currentName, currentUrl) {
@ -132,7 +123,6 @@ document.addEventListener('DOMContentLoaded', function() {
} }
function playStream(url, item) { function playStream(url, item) {
// Stoppe den aktuell laufenden Stream (falls vorhanden)
if (currentPlayingItem) { if (currentPlayingItem) {
const currentAudio = currentPlayingItem.querySelector('audio'); const currentAudio = currentPlayingItem.querySelector('audio');
if (currentAudio) { if (currentAudio) {
@ -149,10 +139,10 @@ document.addEventListener('DOMContentLoaded', function() {
audioElement.onerror = function() { audioElement.onerror = function() {
alert('Fehler beim Laden des Streams: ' + url); 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'); item.classList.add('playing');
currentPlayingItem = item; // Aktualisiere das aktuell spielende Element currentPlayingItem = item;
currentStationName.textContent = item.querySelector('h3').textContent; currentStationName.textContent = item.querySelector('h3').textContent;
} }
@ -175,7 +165,7 @@ document.addEventListener('DOMContentLoaded', function() {
const input = document.createElement('input'); const input = document.createElement('input');
input.type = 'file'; input.type = 'file';
input.accept = '.json'; input.accept = '.json';
input.onchange = (event) => { input.addEventListener('change', (event) => {
const file = event.target.files[0]; const file = event.target.files[0];
if (file) { if (file) {
const reader = new FileReader(); const reader = new FileReader();
@ -183,20 +173,30 @@ document.addEventListener('DOMContentLoaded', function() {
try { try {
const importedPresets = JSON.parse(e.target.result); const importedPresets = JSON.parse(e.target.result);
if (Array.isArray(importedPresets)) { if (Array.isArray(importedPresets)) {
// Speichere die importierten Presets im Local Storage
localStorage.setItem('presets', JSON.stringify(importedPresets)); localStorage.setItem('presets', JSON.stringify(importedPresets));
// Leere den Preset-Container und lade die neuen Presets
presetContainer.innerHTML = ''; 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."); alert("Presets erfolgreich importiert.");
} else { } 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) { } catch (error) {
alert("Fehler beim Importieren der Presets: " + error); alert("Fehler beim Importieren der Presets: " + error.message);
} }
}; };
reader.readAsText(file); reader.readAsText(file);
} }
}; });
input.click(); input.click();
} }
@ -205,7 +205,6 @@ document.addEventListener('DOMContentLoaded', function() {
const currentStationName = document.getElementById('current-station-name'); const currentStationName = document.getElementById('current-station-name');
stopButton.addEventListener('click', () => { stopButton.addEventListener('click', () => {
// Stoppe den aktuellen Stream und setze currentPlayingItem zurück
if (currentPlayingItem) { if (currentPlayingItem) {
const audioElement = currentPlayingItem.querySelector('audio'); const audioElement = currentPlayingItem.querySelector('audio');
audioElement.pause(); audioElement.pause();
@ -216,9 +215,8 @@ document.addEventListener('DOMContentLoaded', function() {
} }
}); });
// Funktion zum Laden der Presets von der Datei
function loadPresetsFromFile(event) { function loadPresetsFromFile(event) {
event.preventDefault(); // Verhindert, dass der Link die Seite neu lädt event.preventDefault();
fetch('/demo-presets/webradio_presets.json') fetch('/demo-presets/webradio_presets.json')
.then(response => { .then(response => {
@ -228,9 +226,9 @@ document.addEventListener('DOMContentLoaded', function() {
return response.json(); return response.json();
}) })
.then(data => { .then(data => {
localStorage.setItem('presets', JSON.stringify(data)); // Speichern der Presets im Local Storage localStorage.setItem('presets', JSON.stringify(data));
presetContainer.innerHTML = ''; // Leert den Preset-Container presetContainer.innerHTML = '';
data.forEach(preset => addNewPreset(preset.name, preset.url)); // Fügt die Presets erneut hinzu data.forEach(preset => addNewPreset(preset.name, preset.url));
alert('Presets erfolgreich geladen.'); alert('Presets erfolgreich geladen.');
}) })
.catch(error => { .catch(error => {