|
|
var blinkTimer;
|
|
|
|
|
|
var checkPeriod = 5;
|
|
|
var dataurl = 'http://portal.setitagila.ru/reminder.php?ver=informst_webext_2.1.0';
|
|
|
var iswarning = false;
|
|
|
var islowb = false;
|
|
|
var islowt = false;
|
|
|
//var date;
|
|
|
var balance = 0;
|
|
|
var tariffnow = '-';
|
|
|
var tariffthen = '-';
|
|
|
var tariffstatus = '-';
|
|
|
var tariffprice = '-';
|
|
|
|
|
|
var settings;
|
|
|
browser.storage.sync.get().then((res) => { settings = res });
|
|
|
|
|
|
browser.runtime.onMessage.addListener(function(request, sender, sendResponse) {
|
|
|
if (request.cmd == 'saveSetting') saveSetting(request.setting);
|
|
|
if (request.cmd == 'requestUpdatePopup') updatePopup();
|
|
|
});
|
|
|
|
|
|
function saveSetting(setting) {
|
|
|
browser.storage.sync.set(setting);
|
|
|
Object.assign(settings, setting);
|
|
|
updateButton();
|
|
|
}
|
|
|
|
|
|
var blinkColor;
|
|
|
function blink() {
|
|
|
if (blinkColor != '#B72C43')
|
|
|
blinkColor = '#B72C43';
|
|
|
else
|
|
|
blinkColor = settings.bstyle_color || "#666666";
|
|
|
browser.browserAction.setBadgeBackgroundColor({ color: blinkColor });
|
|
|
}
|
|
|
|
|
|
function updateButton() {
|
|
|
iswarning = false;
|
|
|
islowb = false;
|
|
|
islowt = false;
|
|
|
|
|
|
if (settings.notify1 == true)
|
|
|
if (balance <= settings.balanceRub) {
|
|
|
islowb = true;
|
|
|
iswarning = true;
|
|
|
}
|
|
|
|
|
|
if (settings.notify2 == true) {
|
|
|
dt = new Date();
|
|
|
dim = new Date(dt.getFullYear(), 1 + dt.getMonth(), 0).getDate();
|
|
|
if ((dim - dt.getDate()) <= settings.balanceDay & (balance - (dim - dt.getDate() + 1) * 8) <= tariffprice) {
|
|
|
islowt = true;
|
|
|
iswarning = true;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// var newLabel = 'Текущий баланс: ' + balance + ' руб.' + "\r\n" +
|
|
|
// 'Текущий тариф: ' + tariffnow + ' (' + (tariffstatus == 'on' ? 'включен' : 'ОТКЛЮЧЕН') + ")\r\n" +
|
|
|
// 'Тариф в след. месяце: ' + tariffthen + "\r\n" +
|
|
|
// 'Стоимость тарифа в след. месяце: ' + tariffprice + ' руб.';
|
|
|
|
|
|
var bcolor = null;
|
|
|
if (iswarning == true) {
|
|
|
// if (islowb || islowt) newLabel += "\r\n";
|
|
|
// if (islowb) newLabel += "\r\nУ Вас мало денег на счету!";
|
|
|
// if (islowt) newLabel += "\r\nСредств не хватит на начало след. месяца!";
|
|
|
// browser.browserAction.setTitle({ title: newLabel });
|
|
|
if (settings.warn2 == 1) {
|
|
|
clearInterval(blinkTimer);
|
|
|
blinkTimer = setInterval(blink, 1000);
|
|
|
} else {
|
|
|
clearInterval(blinkTimer);
|
|
|
bcolor = '#B72C43';
|
|
|
}
|
|
|
} else clearInterval(blinkTimer);
|
|
|
|
|
|
if (bcolor != null)
|
|
|
browser.browserAction.setBadgeBackgroundColor({ color: bcolor });
|
|
|
else
|
|
|
browser.browserAction.setBadgeBackgroundColor({ color: settings.bstyle_color || "#666666" });
|
|
|
browser.browserAction.setBadgeText({ text: Math.floor(balance).toString() });
|
|
|
|
|
|
updatePopup();
|
|
|
}
|
|
|
|
|
|
function updatePopup() {
|
|
|
browser.runtime.sendMessage({ cmd: 'updatePopup', data: {
|
|
|
balance: balance,
|
|
|
tariffnow: tariffnow,
|
|
|
tariffthen: tariffthen,
|
|
|
tariffstatus: tariffstatus,
|
|
|
tariffprice: tariffprice,
|
|
|
iswarning: iswarning,
|
|
|
islowb: islowb,
|
|
|
islowt: islowt
|
|
|
}});
|
|
|
}
|
|
|
|
|
|
function fetchData() {
|
|
|
var req = new XMLHttpRequest();
|
|
|
req.onreadystatechange = function() {
|
|
|
if (req.readyState == 4) {
|
|
|
clearTimeout(reqTimeout);
|
|
|
var datatag = req.responseXML.getElementsByTagName('data')[0];
|
|
|
//date = datatag.getElementsByTagName('date')[0].textContent;
|
|
|
balance = parseFloat(datatag.getElementsByTagName('balance')[0].textContent);
|
|
|
tariffnow = datatag.getElementsByTagName('tariffnow')[0].textContent;
|
|
|
tariffthen = datatag.getElementsByTagName('tariffthen')[0].textContent;
|
|
|
tariffstatus = datatag.getElementsByTagName('tariffstatus')[0].textContent;
|
|
|
tariffprice = parseInt(datatag.getElementsByTagName('tariffprice')[0].textContent);
|
|
|
console.log('fetchData', (new Date()).getTime());
|
|
|
updateButton();
|
|
|
}
|
|
|
};
|
|
|
req.open('GET', dataurl + '&timerand=' + (new Date()).getTime(), true);
|
|
|
var reqTimeout = setTimeout(timeoutFunc, 3000);
|
|
|
function timeoutFunc(){ req.abort() }
|
|
|
req.send(null);
|
|
|
}
|
|
|
|
|
|
browser.alarms.create('mainLoop', {periodInMinutes: checkPeriod});
|
|
|
browser.alarms.onAlarm.addListener((alarm) => {
|
|
|
fetchData();
|
|
|
});
|
|
|
fetchData(); |