Forráskód Böngészése

ftp fw update refactor and handle states

Avetisyan Karen 4 éve
szülő
commit
03a666e550

BIN
web_interface/dist/wui-11/main.css


BIN
web_interface/dist/wui-11/main.js


BIN
web_interface/dist/wui-11/settings.html


+ 7 - 0
web_interface/src/wui-11/ftp_fw_update.cgi

@@ -0,0 +1,7 @@
+#!C:\Python36\python.exe
+# -*- coding: utf-8 -*-
+
+print("Content-Type: text/plain")
+print("")
+
+print("1")

+ 6 - 0
web_interface/src/wui-11/fw_dl_state.cgi

@@ -0,0 +1,6 @@
+#!C:\Python36\python.exe
+# -*- coding: utf-8 -*-
+import random
+print("Content-Type: text/html")
+print("")
+print(str(random.choice([0,1,2,3,5,45,63,94,98,99,100])))

+ 2 - 1
web_interface/src/wui-11/main.css

@@ -2069,7 +2069,7 @@ fieldset[disabled] .checkbox label {
   z-index:1001;
 }
 
-#countdown{
+#countdown, .warn-box{
   display: none;
   position: relative;
   text-align: center;
@@ -2088,6 +2088,7 @@ fieldset[disabled] .checkbox label {
 #changePassword,
 #uploadSettings,
 #uploadCertificate,
+#ftpFWDownload,
 #rectifiersConfig{
   display: none;
   position: relative;

+ 62 - 0
web_interface/src/wui-11/main.js

@@ -1011,6 +1011,7 @@ function settingsGET(){
     telnetState();
     syslogState();
     timesetType($('ntp'));
+    ftpSettings();
 
     window.setCookie('netsettings_changed', data.netsettings_changed);
     checkNotify();
@@ -1019,6 +1020,67 @@ function settingsGET(){
   });
 }
 
+function ftpSettings() {
+  var modal = $('dev_update_method');
+  modal.onchange = ftpSettings;
+  if (modal.value == 'manual') {
+    $('ftp_settings').style.display = 'none';
+    $('start_fw_update').onclick = function() {
+      if( confirm('Перевести контроллер в режим обновления ПО?') ){
+        $('ftpFWDownload').style.display = 'none';
+        loadXMLDoc('fw_update.cgi', 'GET');
+        checkPWD();
+      }
+    };
+  } else {
+    $('ftp_settings').style.display = 'block';
+    $('start_fw_update').onclick = function() {
+      var f1 = new FormData(document.forms.ftp_settings);
+      var fArr = [];
+      f1.forEach( function(a, b) { fArr.push(b+'='+a); });
+
+      loadXMLDoc('ftp_fw_update.cgi', 'POST', function() {
+        if (this.responseText == 1) {
+          $('ftpFWDownload').style.display = 'none';
+          var warnbox = document.createElement('div');
+          warnbox.className = 'warn-box';
+          warnbox.style.display = 'block';
+          warnbox.innerHTML = '<p>Внимание! Идет процесс обновления ПО, просьба не перезагружать и не закрывать страницу.</p>\
+          <p id="ftpdld"></p>';
+          $('count-wrap').appendChild(warnbox);
+          ftpDownloadState();
+        } else {
+          alert(this.responseText);
+        }
+      }, fArr.join('&'));
+    };
+  }
+}
+
+function ftpDownloadState() {
+  var downloaded = $('ftpdld');
+  loadXMLDoc('fw_dl_state.cgi', 'GET', function() {
+    if (+this.responseText < 95) {
+      downloaded.innerHTML = 'Загружено: '+ this.responseText;
+      setTimeout(ftpDownloadState, 200);
+    } else {
+      downloaded.innerHTML = 'Контроллер перезагрузится через 60 сек';
+      decrTimer();
+    }
+  });
+}
+
+function decrTimer() {
+  var dl_text = $('ftpdld').innerText.split(' ');
+  if ( +dl_text[3] > 0) {
+    +dl_text[3]--;
+    $('ftpdld').innerHTML = dl_text.join(' ');
+    setTimeout(decrTimer, 1000);
+  } else {
+    window.location.href = '/';
+  }
+}
+
 function batTest(options) {
   this.options = (options ? options : {});
   if (this.options.time) {

+ 8 - 44
web_interface/src/wui-11/settings.html

@@ -28,7 +28,7 @@
       <input type="submit" class="btn btn-success-inverted" onclick="checkChangePWD(); return false;" value="Отправить">
     </form>
   </div>
-  <div id='uploadCertificate'>
+  <div id='ftpFWDownload'>
       <div class="section group">
         <label for="dev_update_method" class="col span_1_of_2">Способ обновления</label>
         <div class="col span_1_of_2">
@@ -366,7 +366,7 @@
       <h4 class="col span_2_of_2">Контроллер мониторинга</h4>
       <button type="button" class="btn btn-default" id="change_pass">Смена пароля</button>
       <button type="button" class="btn btn-default" id="dev-reboot">Перезагрузка</button>
-      <button type="button" class="btn btn-default" id="dev-update_">Обновление ПО</button>
+      <button type="button" class="btn btn-default" id="dev-update">Обновление ПО</button>
     </div>
     <div class="col span_1_of_3">
       <h4 class="col span_2_of_2">Нагрузка</h4>
@@ -501,27 +501,11 @@ var mainvolt_in_hist = new SpinBox('mainvolt_in_hist', {'name':'mainvolt_in_hist
 var test_time        = new SpinBox('test_time', {'minimum':1,'maximum':99,'step':1, 'value': 1});
 
 settingsGET();
-// $('dev-update').onclick = function(){
-//   $('count-wrap').style.display = 'block';
-//   $('checkUpdatePass').style.display = 'block';
-// };
-// $('dev-update').onclick = function(){
-//   if( confirm('Перевести контроллер в режим обновления ПО?') ){
-//     loadXMLDoc('fw_update.cgi', 'GET');
-//     checkPWD();
-//   };
-// };
 
 $('change_pass').onclick = function(){
   $('count-wrap').style.display = 'block';
   $('changePassword').style.display = 'block';
 };
-
-$('dev-update_').onclick = function(){
-  $('count-wrap').style.display = 'block';
-  $('uploadCertificate').style.display = 'block';
-};
-
 $('close-pass-change').onclick = function(){
   $('changePasswordUser').value = '';
   $('oldpwd').value = '';
@@ -530,35 +514,15 @@ $('close-pass-change').onclick = function(){
   $('count-wrap').style.display = 'none';
   $('changePassword').style.display = 'none';
 };
+
+$('dev-update').onclick = function(){
+  $('count-wrap').style.display = 'block';
+  $('ftpFWDownload').style.display = 'block';
+};
 $('close_fw_update').onclick = function(){
   $('count-wrap').style.display = 'none';
-  $('uploadCertificate').style.display = 'none';
+  $('ftpFWDownload').style.display = 'none';
 };
-$('dev_update_method').onchange = ftpSettings;
-
-function ftpSettings() {
-  if ($('dev_update_method').value == 'manual') {
-    $('ftp_settings').style.display = 'none';
-    $('start_fw_update').onclick = function() {
-      if( confirm('Перевести контроллер в режим обновления ПО?') ){
-        $('uploadCertificate').style.display = 'none';
-        loadXMLDoc('fw_update.cgi', 'GET');
-        checkPWD();
-      };
-    }
-  } else {
-    $('ftp_settings').style.display = 'block';
-    $('start_fw_update').onclick = function() {
-      var f1 = new FormData(document.forms.ftp_settings);
-      var fArr = [];
-      f1.forEach(function(a, b) {fArr.push(b+'='+a)});
-      loadXMLDoc('ftp_fw_update.cgi', 'POST', function() {
-        alert(this.responseText)
-      }, fArr.join('&'));
-    }
-  }
-}
-ftpSettings();
 
 $('dev-reset').onclick = function(){
   function foo(){window.location.href = '/settings.html';}