Source: in.js

const httpSetNumber = new XMLHttpRequest();

/**
 * The `setStationNumber` function validates input values, constructs a URL with parameters, sends a
 * GET request using XMLHttpRequest, displays a waiting modal, and changes the host address after a set
 * interval.
 * @returns The `setStationNumber` function is returning nothing explicitly. It either completes its
 * execution without any explicit return value or it may return `undefined` implicitly.
 */
function setStationNumber() {
  // Holen der eingegebenen Seriennummer
  const number = document.getElementById('serialnumber').value;

  // Holen des ausgewählten Box-Typs
  const selectElement = document.getElementById("boxtyp");
  const boxtyp = selectElement.selectedOptions[0].value;

  // Überprüfen, ob number und boxtyp Werte enthalten
  if (!number || !boxtyp) {
    alert("Please enter a serial number and select which system you are using.\n\nYou will find this on the underside of the Velobox or on the back of the SmartCube.");
    return; // Funktion wird gestoppt, wenn Werte fehlen
  }

  // Überprüfen, ob number eine 3- oder 4-stellige Zahl zwischen 100 und 9999 ist
  if (!/^\d{3,4}$/.test(number) || number < 100 || number > 99999) {
    alert("Please enter a valid 3- or 5-digit serial number between 100 and 99999.");
    return; // Funktion wird gestoppt, wenn die Seriennummer ungültig ist
  }

  // Erstellen der URL mit den Parametern
  const url = `/set_stationsnummer.tcls?number=${number}&boxtyp=${boxtyp}`;
  
  // Erstellen des XMLHttpRequest-Objekts
  //var httpSetNumber = new XMLHttpRequest();
  
  // Öffnen der Verbindung
  httpSetNumber.open("GET", url, true);
  
  // Senden der Anfrage
  httpSetNumber.send();
  
  // Anzeigen des Wartemodals
  UIkit.modal('#modal-wait').show();
  
  // Intervall setzen, um die Host-Adresse zu ändern
  const inter = setInterval(() => {
      location.host = `${boxtyp + number}.local`;
      clearInterval(inter);
  }, 30000);
}