admin.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. var uploadbtn = document.getElementById('uploadbtn');
  2. var uploadfile = document.getElementById('uploadfile');
  3. var wanconf = document.getElementById('wanconf');
  4. var wanssid = document.getElementById('wanssid');
  5. var wanwifi = document.getElementById('wanwifi');
  6. var wanaddr = document.getElementById('wanaddr');
  7. uploadbtn.addEventListener('change', function () {
  8. uploadfile.value = this.value.replace(/^.*\\/, "");
  9. var len = uploadfile.value.length - 7;
  10. uploadfile.setAttribute('size', len);
  11. var len = uploadfile.offsetWidth;
  12. uploadbtn.style.width = len + "px";
  13. });
  14. wanconf.addEventListener('change', function(e) {
  15. wanChange(e.target)
  16. });
  17. wanssid.addEventListener('focus', function(e) {
  18. iwScan();
  19. e.stopPropagation();
  20. });
  21. function wanChange(e) {
  22. switch (e[e.selectedIndex].id) {
  23. case 'wlan':
  24. wanwifi.setAttribute('class','show');
  25. iwScan();
  26. break;
  27. case 'dhcp':
  28. // wanaddr.setAttribute('class','hide');
  29. for (var i = 0; i < wanaddr.children.length; i++) {
  30. wanaddr.children[i].setAttribute('readonly', true);
  31. }
  32. break;
  33. case 'eth':
  34. wanwifi.setAttribute('class','hide');
  35. break
  36. case 'stat':
  37. // wanaddr.setAttribute('class','show');
  38. for (var i = 0; i < wanaddr.children.length; i++) {
  39. wanaddr.children[i].removeAttribute('readonly');
  40. }
  41. break;
  42. }
  43. }
  44. var submitbtns = document.querySelectorAll('input[type="submit"]');
  45. for (var i=0; i < submitbtns.length; i++){
  46. submitbtns[i].addEventListener('click', function(e) {
  47. if (e.target.hasAttribute('data-wait')) {
  48. e.target.value = e.target.getAttribute('data-wait');
  49. } else e.target.value = 'Working, please wait..';
  50. e.stopPropagation();
  51. }, false);
  52. }
  53. /* update uptime output */
  54. function uptimeUpdate() {
  55. function run() {
  56. ajaxReq('POST', '/admin/uptime', 'null', function(xhr) {
  57. if (xhr['response'] != '') {
  58. document.getElementById('uptime').innerHTML = xhr['response'];
  59. }
  60. });
  61. }
  62. return setInterval(run, 5000);
  63. }
  64. var uptime = window.uptimeUpdate();
  65. function iwScan() {
  66. function comp(a,b) {
  67. if (a.quality < b.quality)
  68. return 1;
  69. if (a.quality > b.quality)
  70. return -1;
  71. return 0;
  72. }
  73. ajaxReq('POST', '/admin/iwscan', 'null', function(xhr) {
  74. var res = JSON.parse(xhr['response']);
  75. var stas = res['results'].sort(comp);
  76. var wanssid = document.getElementById('wanssid');
  77. for (var i = 0; i < Object.keys(stas).length; i++) {
  78. var sta;
  79. if (sta = document.getElementById(stas[i]['ssid'])) {
  80. //console.log('found ' + stas[i]['ssid'] + ' entry');
  81. } else {
  82. sta = document.createElement('option');
  83. sta.id = stas[i]['ssid'];
  84. sta.setAttribute('data-quality', stas[i]['quality']);
  85. if (stas[i]['encryption']['enabled']) {
  86. sta.setAttribute('data-enc', 'wpa2');
  87. } else {
  88. sta.setAttribute('data-enc', 'false');
  89. }
  90. sta.innerHTML = stas[i]['ssid'];
  91. wanssid.appendChild(sta);
  92. }
  93. }
  94. });
  95. }
  96. iwScan()
  97. function ajaxReq(method, url, data, callback) {
  98. var xhr = new XMLHttpRequest();
  99. xhr.open(method, url, true);
  100. xhr.onerror = function() { clearInterval(uptime) }
  101. xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  102. xhr.onreadystatechange = function() {
  103. if (xhr.readyState == 4 && xhr.status == 200) {
  104. callback(xhr);
  105. }
  106. }
  107. xhr.send(data);
  108. }