ln.skyscanner/templates/static/interface.js
Harald Wolff 7715b1ee3d WIP
2019-03-14 08:36:02 +01:00

112 lines
2.6 KiB
JavaScript

function API(baseurl){
this.baseurl = baseurl;
this.get = function(page, handler = null){
var x = new XMLHttpRequest();
var async = (handler != null);
if (async)
{
x.onload = function(){
var responseText = x.responseText;
handler( responseText );
}
}
x.open("GET", this.baseurl + page, async);
x.send();
if (!async)
return x.responseText
}
this.post = function(page, handler = null){
var x = new XMLHttpRequest();
if (handler != null)
{
x.onload = function(){
var responseText = x.responseText;
handler( responseText );
}
}
x.open("POST", this.baseurl + page);
x.send();
}
this.getJson = function(page, handler){
var j = function(t){
handler(JSON.parse(t));
};
return this.get( page, j );
}
this.call = function(endpoint,method,parameters = []){
var x = new XMLHttpRequest();
x.open("POST", this.baseurl + endpoint, false);
x.setRequestHeader("content-type","application/json");
var methodCall = {
"MethodName": method,
"Parameters": parameters
}
x.send(JSON.stringify(methodCall));
var result = JSON.parse(x.responseText);
if (result.Exception != null)
throw result.Exception;
return result.Result;
}
}
function $(id)
{
return document.getElementById(id);
}
function CE(eName)
{
return document.createElement(eName);
}
var api = null;
function loadStatistics()
{
try
{
var stats = api.call("api/management","GetStatistics");
$("indHttpServer").attributes["state"].value = stats.States.HttpServer;
$("indManager").attributes["state"].value = stats.States.Manager;
$("indCrawler").attributes["state"].value = stats.States.Crawler;
$("indChecks").attributes["state"].value = stats.States.Checks;
$("indDispatcher").attributes["state"].value = stats.States.Dispatcher;
} catch (e)
{
$("indHttpServer").attributes["state"].value = 3;
$("indManager").attributes["state"].value = 0;
$("indCrawler").attributes["state"].value = 0;
$("indChecks").attributes["state"].value = 0;
$("indDispatcher").attributes["state"].value = 0;
}
}
function initApi(baseurl)
{
api = new API(baseurl);
setInterval( loadStatistics, 1000 );
log("API initialized");
}