wifiAp.js 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. var specials = [];
  2. specials["ap_ssid"] = "SSID name";
  3. specials["ap_password"] = "PASSWORD";
  4. specials["ap_maxconn"] = "Max Connections number";
  5. specials["ap_beacon"] = "Beacon Interval";
  6. function changeWifiMode(m) {
  7. blockScan = 1;
  8. hideWarning();
  9. ajaxSpin("POST", "setmode?mode=" + m, function(resp) {
  10. showNotification("Mode changed");
  11. window.setTimeout(getWifiInfo, 100);
  12. blockScan = 0;
  13. }, function(s, st) {
  14. showWarning("Error changing mode: " + st);
  15. window.setTimeout(getWifiInfo, 100);
  16. blockScan = 0;
  17. });
  18. }
  19. function changeApSettings(e) {
  20. e.preventDefault();
  21. var url = "/wifi/apchange?100=1";
  22. var i, inputs = document.querySelectorAll("#" + e.target.id + " input,select");
  23. for (i = 0; i < inputs.length; i++) {
  24. if (inputs[i].type == "checkbox") {
  25. var val = (inputs[i].checked) ? 1 : 0;
  26. url += "&" + inputs[i].name + "=" + val;
  27. } else {
  28. var clean = inputs[i].value.replace(/[^!-~]/g, "");
  29. var comp = clean.localeCompare(inputs[i].value);
  30. if ( comp != 0 ){
  31. showWarning("Invalid characters in " + specials[inputs[i].name]);
  32. return;
  33. }
  34. url += "&" + inputs[i].name + "=" + clean;
  35. }
  36. };
  37. hideWarning();
  38. var n = e.target.id.replace("-form", "");
  39. var cb = $("#" + n + "-button");
  40. addClass(cb, "pure-button-disabled");
  41. ajaxSpin("POST", url, function (resp) {
  42. showNotification(n + " updated");
  43. removeClass(cb, "pure-button-disabled");
  44. window.setTimeout(getWifiInfo, 100);
  45. }, function (s, st) {
  46. showWarning(st);
  47. removeClass(cb, "pure-button-disabled");
  48. window.setTimeout(fetchApSettings, 2000);
  49. });
  50. }
  51. function displayApSettings(data) {
  52. Object.keys(data).forEach(function (v) {
  53. el = $("#" + v);
  54. if (el != null) {
  55. if (el.nodeName === "INPUT") el.value = data[v];
  56. else el.innerHTML = data[v];
  57. return;
  58. }
  59. el = document.querySelector('input[name="' + v + '"]');
  60. if (el == null)
  61. el = document.querySelector('select[name="' + v + '"]');
  62. if (el != null) {
  63. if (el.type == "checkbox") {
  64. el.checked = data[v] == "enabled";
  65. } else el.value = data[v];
  66. }
  67. });
  68. $("#AP_Settings-spinner").setAttribute("hidden", "");
  69. $("#AP_Settings-form").removeAttribute("hidden");
  70. showWarning("Don't modify SOFTAP parameters with active connections");
  71. window.setTimeout(hideWarning(), 2000);
  72. }
  73. function fetchApSettings() {
  74. ajaxJson("GET", "/wifi/apinfo", displayApSettings, function () {
  75. window.setTimeout(fetchApSettings, 1000);
  76. });
  77. }