pandorafms/extras/chrome_extension/js/popup.js

187 lines
4.7 KiB
JavaScript
Raw Normal View History

var max_events;
var bg;
2019-07-30 11:46:54 +02:00
$(document).ready(function() {
max_events = localStorage["events"];
if (localStorage["events"] == undefined) {
localStorage["events"] = "20";
}
bg = chrome.extension.getBackgroundPage();
// Display the information
var events = bg.fetchEvents();
if (!events) {
showError("Failed to retrieve events, please retry");
} else if (events.length == 0) {
2019-07-30 11:46:54 +02:00
showError("No events");
} else {
showEvents();
}
// Adding buttons listeners
document.getElementById("m_refresh").addEventListener("click", mrefresh);
// Added listener to background messages
chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) {
switch (message.text) {
case "FETCH_EVENTS":
setSpinner();
//$('div.b').hide();
break;
case "FETCH_EVENTS_SUCCESS":
unsetSpinner();
showEvents();
break;
case "FETCH_EVENTS_DATA_ERROR":
unsetSpinner();
showError("Error in fetching data!! Check your internet connection");
break;
case "FETCH_EVENTS_URL_ERROR":
unsetSpinner();
showError(
"Configure ip address,API password, user name and password with correct values"
);
break;
default:
console.log("Unrecognized message: ", message.text);
break;
}
});
});
2019-07-30 11:46:54 +02:00
function setSpinner() {
$("#refr_img_id").attr("src", "images/spinny.gif");
}
function unsetSpinner() {
2019-07-30 11:46:54 +02:00
$("#refr_img_id").attr("src", "images/refresh.png");
}
function clearError() {
2019-07-30 11:46:54 +02:00
$(".error").hide();
$(".error a").text("");
$(".result").css("height", null);
}
2019-07-30 11:46:54 +02:00
function showError(text) {
$(".error a").text(text);
$(".error").show();
$(".result").height(420);
}
2019-07-30 11:46:54 +02:00
function showEvents() {
clearError();
$("#events").empty();
var e_refr = document.getElementById("event_temp");
if (e_refr) {
wrapper.removeChild(e_refr);
}
var allEvents = bg.fetchEvents();
var notVisitedEvents = bg.fetchNotVisited();
var eve = document.createElement("div");
eve.id = "event_temp";
eve.setAttribute("class", "b");
var i = 0;
if (allEvents.length > 0) {
while (i < max_events && i < allEvents.length) {
var eve_title = document.createElement("div");
eve_title.id = "e_" + i + "_" + allEvents[i]["id"];
var img = document.createElement("img");
img.src = "images/plus.png";
img.className = "pm";
img.id = "i_" + i + "_" + allEvents[i]["id"];
eve_title.appendChild(img);
var div_empty = document.createElement("img");
var a = document.createElement("a");
var temp_style;
var agent_url =
allEvents[i]["agent"] == 0
? localStorage["ip_address"] +
"/index.php?sec=eventos&sec2=operation/events/events"
: localStorage["ip_address"] +
"/index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente=" +
allEvents[i]["agent"];
a.setAttribute("href", agent_url);
a.target = "_blank";
a.className = "a_2_mo";
a.innerText = allEvents[i]["title"];
eve_title.setAttribute("class", "event sev-" + allEvents[i]["severity"]);
if (notVisitedEvents[allEvents[i]["id"]] === true) {
eve_title.style.fontWeight = 600;
}
eve_title.appendChild(a);
eve.appendChild(eve_title);
var time = allEvents[i]["date"].split(" ");
var time_text = time[0] + " " + time[1];
var p = document.createElement("p");
var id =
allEvents[i]["module"] == 0
? "."
: " in the module with Id " + allEvents[i]["module"] + ".";
p.innerText =
allEvents[i]["type"] +
" : " +
allEvents[i]["source"] +
". Event occured at " +
time_text +
id;
p.id = "p_" + i;
eve_title.appendChild(p);
i++;
}
$("#events").append(eve);
$("img.pm").click(showHide);
$("div.b").show();
} else {
showError("No events");
}
localStorage["new_events"] = 0;
bg.updateBadge();
}
function showHide() {
2019-07-30 11:46:54 +02:00
var id = $(this).attr("id");
// Image id has the form i_<position>_<eventId>
var nums = id.split("_");
var pid = "p_" + nums[1];
// Mark as visited if visited
if (
$(this)
.parent()
.css("font-weight") == "600"
) {
bg.removeNotVisited(nums[2]);
$(this)
.parent()
.css("font-weight", "");
}
// Toggle information
if ($("#" + pid).css("display") == "none") {
$("#" + pid).slideDown();
$(this).attr({ src: "images/minus.png" });
} else {
$("#" + pid).slideUp();
$(this).attr({ src: "images/plus.png" });
}
}
2019-07-30 11:46:54 +02:00
function mrefresh() {
localStorage["new_events"] = 0;
bg.updateBadge();
clearError();
bg.resetInterval();
bg.main();
}