|
@@ -575,12 +575,128 @@ function prevPage(){
|
|
|
getPage(prev);
|
|
|
}
|
|
|
}
|
|
|
-function downloadCSV(url){
|
|
|
- loadXMLDoc(url, 'GET', function(){
|
|
|
- var data = JSON.parse(this.responseText);
|
|
|
- JSONToCSVConvertor(data.page, true);
|
|
|
+//########## UPS History ############
|
|
|
+var INPUT_V = 0,
|
|
|
+ INPUT_FV = 1,
|
|
|
+ OUTPUT_V = 2,
|
|
|
+ OUTPUT_C = 3,
|
|
|
+ INPUT_F = 4,
|
|
|
+ BAT_V = 5,
|
|
|
+ TEMP = 6,
|
|
|
+ STATUS = 7,
|
|
|
+ TIME = 8;
|
|
|
+function getUPSPage(pn){
|
|
|
+ getJSON('ups_history.cgi?page=' + pn, function(data){
|
|
|
+ $('history_data').textContent = '';
|
|
|
+ var n = data.page;
|
|
|
+ $('currentpage').value = pn;
|
|
|
+ $('pagelimit').innerHTML = data.pages;
|
|
|
+ // var inputs = [
|
|
|
+ // {id: 'h_inputv_', val: INPUT_V}
|
|
|
+ // ];
|
|
|
+ for (var i in n){
|
|
|
+ var tr = document.createElement('tr');
|
|
|
+ var td = [
|
|
|
+ document.createElement('td'),
|
|
|
+ document.createElement('td'),
|
|
|
+ document.createElement('td'),
|
|
|
+ document.createElement('td'),
|
|
|
+ document.createElement('td'),
|
|
|
+ document.createElement('td'),
|
|
|
+ document.createElement('td'),
|
|
|
+ document.createElement('td'),
|
|
|
+ document.createElement('td')
|
|
|
+ ];
|
|
|
+ td[0].innerHTML = parseFloat(n[i].split(';')[INPUT_V]) + ' В';
|
|
|
+ td[0].id = 'h_inputv_'+ i;
|
|
|
+ tr.appendChild(td[0]);
|
|
|
+ td[1].id = 'h_inputfv_'+ i;
|
|
|
+ td[1].innerHTML = parseFloat(n[i].split(';')[INPUT_FV]) + ' В';
|
|
|
+ tr.appendChild(td[1]);
|
|
|
+ td[2].id = 'h_outputv_'+ i;
|
|
|
+ td[2].innerHTML = parseFloat(n[i].split(';')[OUTPUT_V]) + ' В';
|
|
|
+ tr.appendChild(td[2]);
|
|
|
+ td[3].id = 'h_outputc_'+ i;
|
|
|
+ td[3].innerHTML = parseFloat(n[i].split(';')[OUTPUT_C]) + '%';
|
|
|
+ tr.appendChild(td[3]);
|
|
|
+ td[4].id = 'h_inputf_'+ i;
|
|
|
+ td[4].innerHTML = parseFloat(n[i].split(';')[INPUT_F]) + ' Гц';
|
|
|
+ tr.appendChild(td[4]);
|
|
|
+ td[5].id = 'h_batv_'+ i;
|
|
|
+ td[5].innerHTML = parseFloat(n[i].split(';')[BAT_V]) + ' В';
|
|
|
+ tr.appendChild(td[5]);
|
|
|
+ td[6].id = 'h_temp_'+ i;
|
|
|
+ td[6].innerHTML = parseFloat(n[i].split(';')[TEMP]) + ' °C';
|
|
|
+ tr.appendChild(td[6]);
|
|
|
+ td[7].id = 'h_status_'+ i;
|
|
|
+ td[7].innerHTML = n[i].split(';')[STATUS];
|
|
|
+ tr.appendChild(td[7]);
|
|
|
+ td[8].id = 'h_time_'+ i;
|
|
|
+ td[8].innerHTML = n[i].split(';')[TIME];
|
|
|
+ tr.appendChild(td[8]);
|
|
|
+ $('history_data').appendChild(tr);
|
|
|
+ }
|
|
|
+ // utcParam = data.utc;
|
|
|
+ window.setCookie('netsettings_changed', data.netsettings_changed);
|
|
|
+ checkNotify();
|
|
|
+ clearTimeout(mint);
|
|
|
+ mint = setTimeout(ups_history_dataref, 5000);
|
|
|
+ }, function(){
|
|
|
+ $('table').display = 'none';
|
|
|
+ $('content').innerHTML =
|
|
|
+ '<h1>Журнал событий</h1>'+
|
|
|
+ '<div class="panel panel-default">'+
|
|
|
+ '<div class="panel-heading">Ошибка</div>'+
|
|
|
+ '<p style="text-align: center;">Данные отсутствуют.</p>'+
|
|
|
+ '</div>';
|
|
|
+ });
|
|
|
+}
|
|
|
+function ups_history_dataref() {
|
|
|
+ var pn = parseInt($('currentpage').value);
|
|
|
+ getJSON('ups_history.cgi?page=' + pn, function(data) {
|
|
|
+ var p = data.page;
|
|
|
+ for (var j in p) {
|
|
|
+ var inputv_col = $('h_inputv_' + j);
|
|
|
+ var inputfv_col = $('h_inputfv_' + j);
|
|
|
+ var outputv_col = $('h_outputv_' + j);
|
|
|
+ var outputc_col = $('h_outputc_' + j);
|
|
|
+ var inputf_col = $('h_inputf_' + j);
|
|
|
+ var batv_col = $('h_batv_' + j);
|
|
|
+ var trmp_col = $('h_temp_' + j);
|
|
|
+ var status_col = $('h_status_' + j);
|
|
|
+ var time_col = $('h_time_' + j);
|
|
|
+
|
|
|
+ inputv_col.innerHTML = parseFloat(p[j].split(';')[INPUT_V]) + ' В';
|
|
|
+ inputfv_col.innerHTML = parseFloat(p[j].split(';')[INPUT_FV]) + ' В';
|
|
|
+ outputv_col.innerHTML = parseFloat(p[j].split(';')[OUTPUT_V]) + ' В';
|
|
|
+ outputc_col.innerHTML = parseFloat(p[j].split(';')[OUTPUT_C]) + '%';
|
|
|
+ inputf_col.innerHTML = parseFloat(p[j].split(';')[INPUT_F]) + ' Гц';
|
|
|
+ batv_col.innerHTML = parseFloat(p[j].split(';')[BAT_V]) + ' В';
|
|
|
+ trmp_col.innerHTML = parseFloat(p[j].split(';')[TEMP]) + ' °C';
|
|
|
+ status_col.innerHTML = p[j].split(';')[STATUS];
|
|
|
+ time_col.innerHTML = p[j].split(';')[TIME];
|
|
|
+
|
|
|
+ $('pagelimit').innerHTML = data.pages;
|
|
|
+ }
|
|
|
+ clearTimeout(mint);
|
|
|
+ mint = setTimeout(ups_history_dataref, 5000);
|
|
|
});
|
|
|
}
|
|
|
+function nextUPSPage(){
|
|
|
+ var next = parseInt($('currentpage').value);
|
|
|
+ if (next < parseInt($('pagelimit').textContent)) {
|
|
|
+ next = next + 1;
|
|
|
+ getUPSPage(next);
|
|
|
+ }
|
|
|
+}
|
|
|
+function prevUPSPage(){
|
|
|
+ var prev = parseInt($('currentpage').value);
|
|
|
+ if (prev != 1) {
|
|
|
+ prev = prev - 1;
|
|
|
+ getUPSPage(prev);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
function utf8_decode (s) {
|
|
|
var bb = '', c = 0;
|
|
|
for (var i = 0; i < s.length; i++) {
|
|
@@ -600,37 +716,7 @@ function utf8_decode (s) {
|
|
|
}
|
|
|
return bb;
|
|
|
}
|
|
|
-function JSONToCSVConvertor(JSONData,ShowLabel) {
|
|
|
- var row = '';
|
|
|
- var header = 'Событие;Сстояние;Значение;Время\r\n';
|
|
|
- var r = JSONData;
|
|
|
- for (var j in r){ row += r[j]+'\r\n'; }
|
|
|
- var CSV = '';
|
|
|
- console.log(row);
|
|
|
- CSV += header + row;
|
|
|
- if (CSV === '') {
|
|
|
- alert('Данные отсутствуют');
|
|
|
- return;
|
|
|
- }
|
|
|
- var d = new Date();
|
|
|
- var fileName = d.getDate()+'_'+d.getMonth()+'_'+d.getHours()+d.getMinutes();
|
|
|
- if(msieversion()){
|
|
|
- var IEwindow = window.open();
|
|
|
- IEwindow.document.write( 'sep=;\r\n' + utf8_decode(CSV) );
|
|
|
- IEwindow.document.close();
|
|
|
- IEwindow.document.execCommand('SaveAs', true, fileName + '.csv');
|
|
|
- IEwindow.close();
|
|
|
- } else {
|
|
|
- var uri = 'data:application/csv;charset=utf-8,' + escape( utf8_decode(CSV) );
|
|
|
- var link = document.createElement('a');
|
|
|
- link.href = uri;
|
|
|
- link.style = 'visibility:hidden';
|
|
|
- link.download = fileName + '.csv';
|
|
|
- document.body.appendChild(link);
|
|
|
- link.click();
|
|
|
- document.body.removeChild(link);
|
|
|
- }
|
|
|
-}
|
|
|
+
|
|
|
function msieversion() {
|
|
|
var ua = window.navigator.userAgent;
|
|
|
var msie = ua.indexOf('MSIE ');
|
|
@@ -639,6 +725,82 @@ function msieversion() {
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
+function blobLoad(requestUrl, fileName, buttonID){
|
|
|
+ if(isMobile.iOS()){
|
|
|
+ alert('На данном устройстве сохранение не доступно.');
|
|
|
+ }
|
|
|
+
|
|
|
+ var old = $(buttonID).children[0].textContent;
|
|
|
+
|
|
|
+ var pgFlag = 'Обработка';
|
|
|
+ var pgFlagLen = pgFlag.length;
|
|
|
+ var d = new Date();
|
|
|
+ var fName;
|
|
|
+ if (fileName === 'settings.dat') {
|
|
|
+ fName = fileName;
|
|
|
+ } else {
|
|
|
+ fName = d.getDate()+'_'+d.getMonth()+'_'+d.getHours()+d.getMinutes() + '_' + fileName;
|
|
|
+ }
|
|
|
+ var xhr = new XMLHttpRequest();
|
|
|
+ var fURL = requestUrl.split('.').pop() == 'cgi' ? requestUrl+'?' : requestUrl+'&';
|
|
|
+ xhr.open('GET', fURL+'_='+ new Date().getTime());
|
|
|
+ xhr.responseType = 'blob';
|
|
|
+ $(buttonID).setAttribute('disabled', 'disabled');
|
|
|
+ xhr.addEventListener('load', function(){
|
|
|
+ $(buttonID).children[1].style.width = 0;
|
|
|
+ $(buttonID).children[0].textContent = old;
|
|
|
+ $(buttonID).removeAttribute('disabled');
|
|
|
+ });
|
|
|
+ xhr.onload = function(){
|
|
|
+ if (this.status === 200) {
|
|
|
+ var blob = this.response;
|
|
|
+ if(msieversion()){
|
|
|
+ if (window.navigator.msSaveOrOpenBlob) {
|
|
|
+ window.navigator.msSaveOrOpenBlob(blob, fName);
|
|
|
+ } else {
|
|
|
+ var IEwindow = window.open(requestUrl);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ var objectUrl = URL.createObjectURL(blob);
|
|
|
+ var uri = objectUrl;
|
|
|
+ var link = document.createElement('a');
|
|
|
+ link.href = uri;
|
|
|
+ link.style = 'visibility:hidden';
|
|
|
+ link.download = fName;
|
|
|
+ document.body.appendChild(link);
|
|
|
+ link.click();
|
|
|
+ document.body.removeChild(link);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+ xhr.onprogress = function(event) {
|
|
|
+ $(buttonID).children[0].textContent = parseInt((event.loaded / event.total) * 100) + '%';
|
|
|
+ $(buttonID).children[1].style.width = parseInt((event.loaded / event.total) * 100) + '%';
|
|
|
+ };
|
|
|
+ xhr.send();
|
|
|
+}
|
|
|
+
|
|
|
+var isMobile = {
|
|
|
+ Android: function() {
|
|
|
+ return navigator.userAgent.match(/Android/i);
|
|
|
+ },
|
|
|
+ BlackBerry: function() {
|
|
|
+ return navigator.userAgent.match(/BlackBerry/i);
|
|
|
+ },
|
|
|
+ iOS: function() {
|
|
|
+ return navigator.userAgent.match(/iPhone|iPad|iPod/i);
|
|
|
+ },
|
|
|
+ Opera: function() {
|
|
|
+ return navigator.userAgent.match(/Opera Mini/i);
|
|
|
+ },
|
|
|
+ Windows: function() {
|
|
|
+ return navigator.userAgent.match(/IEMobile/i);
|
|
|
+ },
|
|
|
+ any: function() {
|
|
|
+ return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Opera() || isMobile.Windows());
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
function checkOther(ele) {
|
|
|
if (ele.selectedIndex == 3) {
|
|
|
var newInput = document.createElement('input');
|