blob: b2d71e179c9992b09f2d7398bd5b160cbf338c6c [file] [log] [blame]
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<link rel="stylesheet" type="text/css" href="interaction.css">
<script type="text/javascript" src="$pmrpcUrl"></script>
</head>
<body>
<script type="text/javascript">
var appendError = function(str){
throw new Error("DEBUG: "+str)
}
function log(str){
setTimeout("appendError('"+str+"')", 1)
}
function createReplyContent(status) {
date = new Date();
msg = "";
msg += "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n";
msg += "<entry xmlns=\"http://www.w3.org/2005/Atom\" xmlns:thr=\"http://purl.org/syndication/thread/1.0\">\n";
msg += "<title>\"A reply to " + "$entryId" + "\"</title>\n";
msg += "<id>" + "$entryId" + "reply" + "</id>\n";
msg += "<content/>\n";
msg += "<interaction:run-id xmlns:interaction=\"http://ns.taverna.org.uk/2012/interaction\">" + "$runId" + "</interaction:run-id>\n";
msg += "<interaction:in-reply-to xmlns:interaction=\"http://ns.taverna.org.uk/2012/interaction\">" + "$entryId" + "</interaction:in-reply-to>\n";
msg += "<interaction:result-status xmlns:interaction=\"http://ns.taverna.org.uk/2012/interaction\">";
msg += escape(status);
msg += "</interaction:result-status>";
msg += "</entry>\n";
return msg;
}
// Copied from http://www.netlobo.com/url_query_string_javascript.html
function getParameterValue( name )
{
name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
var regexS = "[\\?&]"+name+"=([^&#]*)";
var regex = new RegExp( regexS );
var results = regex.exec( window.location.href );
if( results == null )
return "";
else
return results[1];
}
function reply(status, results) {
document.getElementById('presentationDiv').innerHTML="<p>Returning results</p>";
#if ($outputDataUrl)
var outputData = JSON.stringify(results);
var dataRequest = new XMLHttpRequest();
dataRequest.open("PUT", "$outputDataUrl", false);
dataRequest.setRequestHeader("Content-Type", "application/json");
dataRequest.send(outputData);
#end
var msg = createReplyContent(status);
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("POST", "$feed", false);
xmlhttp.setRequestHeader("Content-Type", "application/atom+xml;type=entry");
xmlhttp.setRequestHeader("Slug", "$entryId" + "-reply");
xmlhttp.send(msg);
var shownMessage = 'Returned results';
if (status != 'OK') {
shownMessage = status;
}
document.getElementById('presentationDiv').innerHTML="<p>" + shownMessage + "</p>";
return false;
}
function getDataFromUrl(url, type) {
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", url, false);
if (type != null) {
if (xmlhttp.overrideMimeType){
xmlhttp.overrideMimeType(type);
}
else{
xmlhttp.setRequestHeader("Content-Type",type);
}
}
xmlhttp.send();
if (xmlhttp.status != 200) {
return '';
}
return xmlhttp.responseText;
}
var inputData = null;
function registerCalls() {
pmrpc.register( {
publicProcedureName : "reply",
procedure : function(status, results) {
reply(status, results);
return "OK";
}
});
pmrpc.register( {
publicProcedureName : "getParameterValue",
procedure : function(parameterName) {
return getParameterValue(parameterName);
}
});
inputData = JSON.parse(getDataFromUrl('$inputDataUrl', "application/json"));
pmrpc.register( {
publicProcedureName : "getInputData",
procedure : function() {
// log("Returning input data");
#if (!$outputDataUrl)
reply("OK", {});
#end
return inputData;
}
});
pmrpc.register( {
publicProcedureName : "getWorkflowRunId",
procedure : function () {
return '$runId';
}
});
pmrpc.register( {
publicProcedureName : "setTitle",
procedure : function(title) {
document.title = title;
return "OK";
}
});
pmrpc.register( {
publicProcedureName : "getDataFromUrl",
procedure : function(url, type) {
return getDataFromUrl(url, type);
}
});
document.getElementById('presentationFrame').src = "$presentationUrl";
document.title = 'Taverna interaction';
}
window.onload = function() {
// log("Interaction loaded");
registerCalls();
};
</script>
<div id="presentationDiv">
<iframe id="presentationFrame" name="presentationFrame" src="about:blank">
</iframe>
</div>
<div id="acknowledgment">
<p>The interaction service was developed in the <a href="http://www.biovel.eu" target="_blank">BioVeL project</a></p>
</div>
</body>
</html>