script.js aktualisiert
Fehler gefixt
This commit is contained in:
parent
899b3e49f8
commit
df5685c729
1 changed files with 25 additions and 27 deletions
46
script.js
46
script.js
|
|
@ -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 => {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue