22 * index.h
33 *
44 * Created on: 04.10.2018
5- * Updated on: 27.03 .2025
5+ * Updated on: 11.04 .2025
66 * Author: Wolle
77 *
88 * successfully tested with Chrome and Firefox
@@ -527,7 +527,7 @@ function connect() {
527527 if (n >= 0) {
528528 var msg = socketMsg.substring(0, n)
529529 var val = socketMsg.substring(n + 1)
530- console.log("para ",msg, " val ",val)
530+ // console.log("para ",msg, " val ",val)
531531 }
532532 else {
533533 msg = socketMsg
@@ -695,6 +695,9 @@ function connect() {
695695 bt_RxTx = 'RX'
696696 }
697697 break;
698+ case "timezones": console.log(msg, val)
699+ fillTimeZoneSelect(val)
700+ break;
698701 default: console.log('unknown message', msg, val)
699702 }
700703 }
@@ -888,14 +891,13 @@ function showTab6 () {
888891 document.getElementById('btn5').src = 'SD/png/Search_Green.png'
889892 document.getElementById('btn6').src = 'SD/png/Settings_Yellow.png'
890893 document.getElementById('btn7').src = 'SD/png/About_Green.png'
891- // getTimeZoneName()
892- loadTimeZones()
893894 loadRingVolume()
894895 loadVolumeAfterAlarm()
895896 loadVolumeSteps()
896897 socket.send('getRingVolume')
897898 socket.send('getVolAfterAlarm')
898899 socket.send("getTimeSpeechLang")
900+ socket.send("getTimeZones") // fetch timezones_json
899901}
900902
901903function showTab7 () {
@@ -1997,7 +1999,6 @@ function getTimeZoneName() {
19971999 console.log("timeout in getTimeZoneName()");
19982000 reject("Fehler: Anfragezeitüberschreitung"); // Promise ablehnen, falls ein Timeout auftritt
19992001 };
2000-
20012002 xhr.send();
20022003 });
20032004}
@@ -2008,48 +2009,26 @@ function setTimeZone(selectObject){
20082009 socket.send("setTimeZone=" + txt + "&" + value)
20092010}
20102011
2011- async function loadTimeZones() {
2012- try {
2013- g_timeZoneName = await getTimeZoneName(); // Warten, bis getTimeZoneName abgeschlossen ist
2014- const tzFile = new XMLHttpRequest();
2015- tzFile.timeout = 2000; // Zeit in Millisekunden
2016- tzFile.open('GET', 'SD_Download?/timezones.csv', true);
2017-
2018- tzFile.onreadystatechange = function () {
2019- if (tzFile.readyState === 4) {
2020- const tzdata = tzFile.responseText;
2021- const tzNames = tzdata.split("\n");
2022- const select = document.getElementById('TimeZoneSelect');
2023- select.options.length = 0;
2024-
2025- for (let i = 0; i < tzNames.length; i++) {
2026- const [tzItem1, tzItem2] = tzNames[i].split("\t");
2027- if (!tzItem1 || !tzItem2) continue;
2028-
2029- const opt = document.createElement('OPTION');
2030- opt.text = tzItem1;
2031- opt.value = tzItem2;
2032- select.add(opt);
2033- }
2034-
2035- // Auswahl basierend auf g_timeZoneName setzen
2036- for (let i = 0; i < select.options.length; i++) {
2037- if (select.options[i].text === g_timeZoneName) {
2038- select.selectedIndex = i;
2039- break;
2040- }
2041- }
2012+ function fillTimeZoneSelect(timezones_json){
2013+ const timezones = JSON.parse(timezones_json);
2014+ const selectElement = document.getElementById('TimeZoneSelect');
2015+ timezones.forEach(([name, offset]) => {
2016+ const option = document.createElement('option');
2017+ option.value = offset;
2018+ option.textContent = name;
2019+ selectElement.appendChild(option);
2020+ });
2021+ getTimeZoneName().then((tzName) => {
2022+ const selectElement = document.getElementById('TimeZoneSelect');
2023+ for (let i = 0; i < selectElement.options.length; i++) {
2024+ if (selectElement.options[i].text === tzName) {
2025+ selectElement.selectedIndex = i;
2026+ break;
20422027 }
2043- };
2044-
2045- tzFile.ontimeout = () => {
2046- console.log("load SD/timezones.csv timeout");
2047- };
2048-
2049- tzFile.send();
2050- } catch (error) {
2051- console.error("Fehler beim Laden des Zeitzonennamens:", error);
2052- }
2028+ }
2029+ }).catch((error) => {
2030+ console.error("Fehler beim Abrufen des Zeitzonennamens:", error);
2031+ });
20532032}
20542033
20552034function loadRingVolume(){
0 commit comments