import { Controller } from "./main";

export class NetworkConfigView {
    setScanResult(ssidList: SSIDList) {
      this.ssidlist.innerHTML = ''
      for (const ssid of ssidList.ssids) {
          const wi = document.createElement("option");
          wi.value = ssid;
        this.ssidlist.appendChild(wi);
      }
    }
    private readonly ap_ssid: HTMLInputElement;
    private readonly ssid: HTMLInputElement;
    private readonly password: HTMLInputElement;
    private readonly mqtt_url: HTMLInputElement;
    private readonly base_topic: HTMLInputElement;
    private readonly ssidlist: HTMLElement;
    
    constructor(controller: Controller, publicIp: string) {
      (document.getElementById("network_view") as HTMLElement).innerHTML = require('./network.html') as string;

      (document.getElementById("remote_ip") as HTMLElement).innerText = publicIp;

      this.ap_ssid = (document.getElementById("ap_ssid") as HTMLInputElement);
      this.ap_ssid.onchange = controller.configChanged
  
      this.ssid = (document.getElementById("ssid") as HTMLInputElement);
      this.ssid.onchange = controller.configChanged
      this.password = (document.getElementById("password") as HTMLInputElement);
      this.password.onchange = controller.configChanged
      this.mqtt_url = document.getElementById("mqtt_url") as HTMLInputElement;
      this.mqtt_url.onchange = controller.configChanged
      this.base_topic = document.getElementById("base_topic") as HTMLInputElement;
      this.base_topic.onchange = controller.configChanged

      this.ssidlist = document.getElementById("ssidlist") as HTMLElement

      let scanWifiBtn = document.getElementById("scan") as HTMLButtonElement;
      scanWifiBtn.onclick = function (){
        controller.scanWifi();
      }
    }

    setConfig(network: NetworkConfig) {
      this.ap_ssid.value = network.ap_ssid;
      this.ssid.value = network.ssid;
      this.password.value = network.password;
      this.mqtt_url.value = network.mqtt_url;
      this.base_topic.value = network.base_topic;
    }
    
    getConfig(): NetworkConfig {
      return {
        ap_ssid: this.ap_ssid.value,
        ssid: this.ssid.value ?? null,
        password: this.password.value ?? null,
        mqtt_url: this.mqtt_url.value ?? null,
        base_topic: this.base_topic.value ?? null
      }
    }
  }