|
@@ -56,6 +56,13 @@ function dataFadeIn(){
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+//Useful Functions
|
|
|
+function checkDec(n){return/^[0-9]{1,64}$/.test(n);}
|
|
|
+
|
|
|
+//Decimal operations
|
|
|
+function Dec2Bin(n){if(!checkDec(n)||n<0)return 0;return n.toString(2);}
|
|
|
+
|
|
|
+
|
|
|
// Alarm colors
|
|
|
var ALARM_RED = '#ff5050',
|
|
|
ALARM_YELLOW = '#f0ad4e',
|
|
@@ -232,35 +239,6 @@ function ValidateAlphanumeric(uadd, z) {
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
-// function ValidateTemperature(minTemp, maxTemp) {
|
|
|
-// var warn = document.createElement('li');
|
|
|
-// warn.innerHTML = 'Верхняя граница температуры должна превышать нижнюю!';
|
|
|
-// if (Number(minTemp.value) < Number(maxTemp.value)) {
|
|
|
-// return true;
|
|
|
-// }
|
|
|
-// $('validation-box').appendChild(warn);
|
|
|
-// return false;
|
|
|
-// }
|
|
|
-
|
|
|
-// function ValidateMinMax(elem, ID, name) {
|
|
|
-// var warn = document.createElement('li');
|
|
|
-// var minValue = elem.options.minimum;
|
|
|
-// var maxValue = elem.options.maximum;
|
|
|
-// var curValue = $(ID).childNodes[0].value;
|
|
|
-// var boolVale = true;
|
|
|
-// if (curValue < minValue) {
|
|
|
-// warn.innerHTML = 'Значение ' + name + ' не может быть ниже ' + minValue;
|
|
|
-// $('validation-box').appendChild(warn);
|
|
|
-// boolVale = false;
|
|
|
-// }
|
|
|
-// else if (curValue > maxValue) {
|
|
|
-// warn.innerHTML = 'Значение ' + name + ' не может быть выше ' + maxValue;
|
|
|
-// $('validation-box').appendChild(warn);
|
|
|
-// boolVale = false;
|
|
|
-// } else { boolVale = true; }
|
|
|
-// return boolVale;
|
|
|
-// }
|
|
|
-
|
|
|
|
|
|
function submitForms() {
|
|
|
if (confirm('Вы уверены что хотите применить настройки?')) {
|
|
@@ -277,57 +255,6 @@ function submitForms() {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-// var loadXMLDoc = function(){};
|
|
|
-// var pwdIsCorrect;
|
|
|
-// function loadXMLDoc(url, method, callback) {
|
|
|
-// var xmlhttp;
|
|
|
-// if (window.XMLHttpRequest) {
|
|
|
-// xmlhttp = new XMLHttpRequest();
|
|
|
-// } else {
|
|
|
-// xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
|
|
|
-// }
|
|
|
-// xmlhttp.open(method, url, true);
|
|
|
-// var status;
|
|
|
-// xmlhttp.onreadystatechange = function () {
|
|
|
-// if (xmlhttp.readyState == 4) {
|
|
|
-// status = xmlhttp.status;
|
|
|
-// if (status == 200) {
|
|
|
-// pwdIsCorrect = xmlhttp.responseText;
|
|
|
-// if (typeof callback == 'function') {
|
|
|
-// callback.apply(xmlhttp);
|
|
|
-// }
|
|
|
-// } else {
|
|
|
-// console.log('Error');
|
|
|
-// }
|
|
|
-// }
|
|
|
-// };
|
|
|
-// xmlhttp.send();
|
|
|
-// }
|
|
|
-// function checkPWD(){
|
|
|
-// var pass = $('pwd').value;
|
|
|
-// var letter = /^[0-9a-zA-Z]+$/;
|
|
|
-// var postPass;
|
|
|
-// if (letter.test(pass)) {
|
|
|
-// loadXMLDoc(
|
|
|
-// 'checkpwd.cgi?password='+pass,
|
|
|
-// 'POST',
|
|
|
-// function() {
|
|
|
-// postPass = parseInt(this.responseText);
|
|
|
-// if (postPass == 1) {
|
|
|
-// $('checkUpdatePass').style.display = 'none';
|
|
|
-// $('countdown').style.display = 'block';
|
|
|
-// countdown();
|
|
|
-// } else {
|
|
|
-// alert('Пароль задан неправильно');
|
|
|
-// }
|
|
|
-// }
|
|
|
-// );
|
|
|
-// } else if (pass.length === 0){
|
|
|
-// alert('Введите пароль');
|
|
|
-// }else {
|
|
|
-// alert('Пароль задан неправильно');
|
|
|
-// }
|
|
|
-// }
|
|
|
function checkPWD(){
|
|
|
// $('checkUpdatePass').style.display = 'none';
|
|
|
$('count-wrap').style.display = 'block';
|
|
@@ -508,55 +435,51 @@ function Alarm(bitmask, num) {
|
|
|
return answ;
|
|
|
}
|
|
|
|
|
|
-// function panelState(stateControl, panelID){
|
|
|
-// var title = panelID.textContent;
|
|
|
-// if (stateControl){
|
|
|
-// panelID.style.color = ALARM_GREEN;
|
|
|
-// panelID.innerHTML = '<span class="mark-ok"></span>' + title;
|
|
|
-// return;
|
|
|
-// } else {
|
|
|
-// panelID.style.color = ALARM_RED;
|
|
|
-// panelID.innerHTML = '<span class="mark-almaj"></span>' + title;
|
|
|
-// return;
|
|
|
-// }
|
|
|
-// }
|
|
|
|
|
|
+// var UPSstates = [
|
|
|
+// {mark: '<span class="mark-ok"></span>', color: ALARM_GREEN}, // Normal
|
|
|
+// {mark: '<span class="mark-almaj"></span>', color: ALARM_RED}, // Alarm
|
|
|
+// {mark: '<span class="mark-almin"></span>', color: ALARM_YELLOW} // Standby
|
|
|
+// ];
|
|
|
|
|
|
-var states = {
|
|
|
- alarm_shutdown: {mark: '<span class="mark-almaj"></span>', color: ALARM_RED },
|
|
|
- alarm_standby: {mark: '<span class="mark-almin"></span>', color: ALARM_YELLOW },
|
|
|
- shutdown: {},
|
|
|
-};
|
|
|
+// var BATstates = [
|
|
|
+// {mark: '<span class="mark-ok"></span>', color: ALARM_GREEN}, // Normal
|
|
|
+// {mark: '<span class="mark-almaj"></span>', color: ALARM_RED}, // Battery Low
|
|
|
+// {mark: '<span class="mark-almin"></span>', color: ALARM_YELLOW} // Test in progress
|
|
|
+// ];
|
|
|
|
|
|
-function getState(i) {
|
|
|
- switch(i) {
|
|
|
- case 0:
|
|
|
- break;
|
|
|
- case 1:
|
|
|
- break;
|
|
|
- default:
|
|
|
- break;
|
|
|
- }
|
|
|
-}
|
|
|
+// function setStateToPanel(state, text, panelID){
|
|
|
+// panelID.style.color = state.color;
|
|
|
+// panelID.innerHTML = state.mark + text;
|
|
|
+// }
|
|
|
+function setIcons(containerID, icnName) {
|
|
|
+ $(containerID).innerHTML ='';
|
|
|
|
|
|
-function setStateToPanel(state, panelID){
|
|
|
- var title = panelID.textContent;
|
|
|
- panelID.style.color = state.color;
|
|
|
- panelID.innerHTML = state.mark + title;
|
|
|
+ var icons = typeof icnName === 'string' ? [icnName] : icnName;
|
|
|
+
|
|
|
+ for (var i = 0; i < icons.length; i++) {
|
|
|
+ var icnContainer = document.createElement('i');
|
|
|
+ icnContainer.innerHTML = Icons[icons[i]]['icn'];
|
|
|
+ icnContainer.style.paddingLeft = '10px';
|
|
|
+ icnContainer.title = Icons[icons[i]]['title'];
|
|
|
+ $(containerID).appendChild(icnContainer);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
function paramsRefresh() {
|
|
|
getJSON('getJson.cgi'+'?'+Math.random(), function (data) {
|
|
|
- var ups_bypass = Alarm(data.alarm, 5),
|
|
|
- ups_alarm = Alarm(data.alarm, 4) || Alarm(data.alarm, 7),
|
|
|
- ups_standby = Alarm(data.alarm, 3),
|
|
|
- ups_shutdown = Alarm(data.alarm, 1),
|
|
|
- bat_alarm = Alarm(data.alarm, 1),
|
|
|
- bat_low = Alarm(data.alarm, 6),
|
|
|
- bat_test = Alarm(data.alarm, 2);
|
|
|
-
|
|
|
- // panelState(ups_shutdown, $('sPower'));
|
|
|
- // panelState(bat_alarm, $('sBattery'));
|
|
|
+ var alrm = Dec2Bin(data.alarm);
|
|
|
+ var pstate = [];
|
|
|
+ var bstate = [];
|
|
|
+ // var alrm = data.alarm;
|
|
|
+ var ups_bypass = Alarm(alrm, 5),
|
|
|
+ ups_alarm = Alarm(alrm, 4) || Alarm(alrm, 7),
|
|
|
+ ups_standby = Alarm(alrm, 3),
|
|
|
+ ups_shutdown = Alarm(alrm, 1),
|
|
|
+
|
|
|
+ bat_alarm = Alarm(alrm, 1),
|
|
|
+ bat_low = Alarm(alrm, 6),
|
|
|
+ bat_test = Alarm(alrm, 2);
|
|
|
// PPS
|
|
|
$('AC').innerHTML = parseFloat(data.AC) + ' В';
|
|
|
$('DC').innerHTML = parseFloat(data.DC) + ' В';
|
|
@@ -564,14 +487,23 @@ function paramsRefresh() {
|
|
|
$('out_freq').innerHTML = parseFloat(data.out_freq) + ' Гц';
|
|
|
$('pwr').innerHTML = parseFloat(data.pwr) + ' %';
|
|
|
$('pmode').innerHTML = ups_bypass ? 'Шунтирование (Bypass)' : 'Буферизация (Boost or Buck)';
|
|
|
- $('pstate').innerHTML = (Alarm(data.alarm, 3) ? 'Норма' : 'Режим ожидания')
|
|
|
- + (Alarm(data.alarm, 4) || Alarm(data.alarm, 7) ? ' | Авария ' : '')
|
|
|
- + (Alarm(data.alarm, 1) ? ' | Выключение' : '');
|
|
|
+ // pstate = ('(') + (bat_test ? 'Норма' : 'Режим ожидания') + (ups_alarm ? ' | Авария ' : '') + (ups_shutdown ? ' | Выключение' : '') + (')');
|
|
|
+ bat_test ? pstate.push('normal') : pstate.push('clock');
|
|
|
+ ups_alarm ? pstate.push('exclamination') : null;
|
|
|
+ ups_shutdown ? pstate.push('shutdown') : '';
|
|
|
+
|
|
|
+ bat_low ? bstate.push('batteryLow') : bstate.push('normal');
|
|
|
+ // console.log(pstate);
|
|
|
+ setIcons('pstate_icons', pstate);
|
|
|
+ setIcons('bstate_icons', bstate);
|
|
|
+ // setStateToPanel(UPSstates[ups_alarm || ups_shutdown ? 1 : 0 ], 'Источник питания ' + pstate, $('sPower'));
|
|
|
+ // setStateToPanel(BATstates[bat_alarm], 'Аккумуляторные батареи', $('sBattery'));
|
|
|
+ // setStateToPanel(states.alarm_standby, $('sPower'));
|
|
|
// ACB
|
|
|
$('bat_cap').innerHTML = parseFloat(data.bat_cap) + ' %';
|
|
|
$('inner_temp').innerHTML = parseFloat(data.inner_temp) + ' °C';
|
|
|
$('bat_time_left').innerHTML = parseFloat(data.bat_time_left) + ' мин';
|
|
|
- $('bstate').innerHTML = Alarm(data.alarm, 1);
|
|
|
+ $('bstate').innerHTML = bat_alarm;
|
|
|
// State
|
|
|
// $('alarm').innerHTML = data.alarm;
|
|
|
// General
|
|
@@ -1493,3 +1425,29 @@ DYN_WEB.Tabs = (function () {
|
|
|
/* global-define */
|
|
|
|
|
|
}((typeof window === 'undefined' ? {} : window)));
|
|
|
+
|
|
|
+
|
|
|
+// Icons
|
|
|
+
|
|
|
+var Icons = {
|
|
|
+ clock: {
|
|
|
+ icn: '<svg width="20" height="20" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1024 544v448q0 14-9 23t-23 9h-320q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h224v-352q0-14 9-23t23-9h64q14 0 23 9t9 23zm416 352q0-148-73-273t-198-198-273-73-273 73-198 198-73 273 73 273 198 198 273 73 273-73 198-198 73-273zm224 0q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z" fill="'+ ALARM_YELLOW +'"/></svg>',
|
|
|
+ title: 'Режим ожидания'
|
|
|
+ },
|
|
|
+ exclamination: {
|
|
|
+ icn: '<svg width="20" height="20" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1088 1248v224q0 26-19 45t-45 19h-256q-26 0-45-19t-19-45v-224q0-26 19-45t45-19h256q26 0 45 19t19 45zm30-1056l-28 768q-1 26-20.5 45t-45.5 19h-256q-26 0-45.5-19t-20.5-45l-28-768q-1-26 17.5-45t44.5-19h320q26 0 44.5 19t17.5 45z" fill="'+ ALARM_RED +'"/></svg>',
|
|
|
+ title: 'Авария'
|
|
|
+ },
|
|
|
+ normal: {
|
|
|
+ icn: '<svg width="20" height="20" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1299 813l-422 422q-19 19-45 19t-45-19l-294-294q-19-19-19-45t19-45l102-102q19-19 45-19t45 19l147 147 275-275q19-19 45-19t45 19l102 102q19 19 19 45t-19 45zm141 83q0-148-73-273t-198-198-273-73-273 73-198 198-73 273 73 273 198 198 273 73 273-73 198-198 73-273zm224 0q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z" fill="'+ ALARM_GREEN +'"/></svg>',
|
|
|
+ title: 'Норма'
|
|
|
+ },
|
|
|
+ shutdown: {
|
|
|
+ icn: '<svg width="20" height="20" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1664 896q0 156-61 298t-164 245-245 164-298 61-298-61-245-164-164-245-61-298q0-182 80.5-343t226.5-270q43-32 95.5-25t83.5 50q32 42 24.5 94.5t-49.5 84.5q-98 74-151.5 181t-53.5 228q0 104 40.5 198.5t109.5 163.5 163.5 109.5 198.5 40.5 198.5-40.5 163.5-109.5 109.5-163.5 40.5-198.5q0-121-53.5-228t-151.5-181q-42-32-49.5-84.5t24.5-94.5q31-43 84-50t95 25q146 109 226.5 270t80.5 343zm-640-768v640q0 52-38 90t-90 38-90-38-38-90v-640q0-52 38-90t90-38 90 38 38 90z" fill="'+ ALARM_RED +'"/></svg>',
|
|
|
+ title: 'Выключение'
|
|
|
+ },
|
|
|
+ batteryLow: {
|
|
|
+ icn: '<svg width="30" height="20" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1920 576q53 0 90.5 37.5t37.5 90.5v384q0 53-37.5 90.5t-90.5 37.5v160q0 66-47 113t-113 47h-1856q-66 0-113-47t-47-113v-960q0-66 47-113t113-47h1856q66 0 113 47t47 113v160zm0 512v-384h-128v-288q0-14-9-23t-23-9h-1856q-14 0-23 9t-9 23v960q0 14 9 23t23 9h1856q14 0 23-9t9-23v-288h128z" fill="'+ ALARM_RED +'"/></svg>',
|
|
|
+ title: 'Низкий уровень заряда'
|
|
|
+ }
|
|
|
+};
|