var timer = undefined;
function startInformationUpdater() {
timer = setInterval(function () {
updateInformations();
updateProcessStatus();
}, 2000);
};
function stopInformationUpdater() {
clearInterval(timer);
};
function updateProcessStatus() {
$.get("/process_status", function(status){
switch (status) {
case "nil":
case "connection-failure":
case "error":
case "finished":
stopInformationUpdater();
setTimeout(updateInformations, 500);
break;
}
});
};
function updateProcessStatusMessage(msg) {
$("#process-status-message").text(msg);
};
function updateTupleSpaceStatus(json) {
if ("task" in json) $("#task-size").text(json.task);
if ("working" in json) $("#working-size").text(json.working);
if ("finished" in json) $("#finished-size").text(json.finished);
if ("data" in json) $("#data-size").text(json.data);
};
function updateTaskWorkerStatus(json) {
$("#task-worker-status").empty();
if (json.length == 0) {
$("#task-worker-status").append($("
no task workers"));
} else {
$("#task-worker-status").empty();
jQuery.each(json, function(){
$("#task-worker-status").append($("").text(this));
});
}
};
function updateInputs(json) {
$("#input-list").empty();
if (json.length == 0) {
$("#input-list").append($("no inputs"));
} else {
jQuery.each(json, function(){
var link = $("");
link.attr("href", "/input/" + this)
link.text(this);
$("#input-list").append($("").append(link));
});
}
};
function updateOutputs(json) {
$("#output-list").empty();
if (json.length == 0) {
$("#output-list").append($("no outputs"));
} else {
jQuery.each(json, function(){
var link = $("");
link.attr("href", "/output/" + this)
link.text(this);
$("#output-list").append($("").append(link));
});
}
};
function updateInformations() {
$.getJSON("/info", function(json){
updateProcessStatusMessage(json.processStatusMessage);
updateTupleSpaceStatus(json.tupleSpaceStatus);
updateTaskWorkerStatus(json.taskWorkerStatus);
updateInputs(json.inputs);
updateOutputs(json.outputs);
});
};
function requestProcess() {
var document = $("#document").val();
var parameters = $("#parameters").val();
$.post("/process", {document: document, parameters: parameters}, function(){
startInformationUpdater();
});
};
function cleanProcess() {
$.get("/clean", function() {
setTimeout(updateInformations, 500);
});
}
$(function(){
updateInformations();
$("#process-button").click(requestProcess);
$("#clean-button").click(cleanProcess);
});