yjs/dest/browser/Widgets/iwc-teststub.xml
2014-08-02 01:39:30 +02:00

242 lines
7.3 KiB
XML

<?xml version="1.0" encoding="UTF-8" ?>
<Module>
<ModulePrefs
title="IWC Test Stub"
description="A widget for tracing and sending ROLE IWC intents. Recommended for developers of IWC-enabled widgets."
author="Dominik Renzel, Chair of Computer Science 5, RWTH Aachen University, Germany"
author_email="renzel@dbis.rwth-aachen.de"
height="500">
<Require feature="dynamic-height"/>
</ModulePrefs>
<Content type="html">
<![CDATA[
<style type="text/css">
* {
font-family: Verdana;
font-size: 8pt;
}
#accordion {
overflow: auto;
height: 310px;
}
#pubform, .entry {
border: 1pt solid black
width: 100%;
}
tr td.ui-state-default{
width: 20%;
}
tr td.input, tr td.ui-widget-content {
width: 80%;
}
#pub_form tr td input {
width: 100%;
}
#pub_form tr td textarea {
width: 100%;
}
</style>
<link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css"/>
<script type="application/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="application/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js"</script>
<script src="http://open-app.googlecode.com/files/openapp.js"></script>
<script src="http://dbis.rwth-aachen.de/gadgets/iwc/lib/iwc.js"></script>
<script src="http://dbis.rwth-aachen.de/gadgets/iwc/lib/date.js"></script>
<script type="text/javascript">
var counter = 0;
var iwcClient = null;
function renderIntent(intent){
var result = "<table class='entry'>";
var sender = intent.sender;
var publisher = "me";
var source = sender;
if (sender.indexOf("?sender=") > -1){
var ts = sender.split("?sender=");
publisher = ts[0].split("/")[0];
source = ts[1];
} else {
publisher = "<b><i>me</i></b>";
source = sender;
}
result += "<tr><td class='ui-state-default'>Publisher</td><td class='ui-widget-content'>" + publisher + "</td></tr>";
result += "<tr><td class='ui-state-default'>Source</td><td class='ui-widget-content'>" + source + "</td></tr>";
var comp = intent.component;
if(comp === ""){
comp = "*";
}
result += "<tr><td class='ui-state-default'>Component</td><td class='ui-widget-content,value'>" + comp + "</td></tr>";
result += "<tr><td class='ui-state-default'>Action</td><td class='ui-widget-content'>" + intent.action + "</td></tr>";
result += "<tr><td class='ui-state-default'>Data</td><td class='ui-widget-content'>" + intent.data + "</td></tr>";
result += "<tr><td class='ui-state-default'>Datatype</td><td class='ui-widget-content'>" + intent.dataType + "</td></tr>";
result += "<tr><td class='ui-state-default'>Categories</td><td class='ui-widget-content'>" + intent.categories + "</td></tr>";
result += "<tr><td class='ui-state-default'>Flags</td><td class='ui-widget-content'>" + intent.flags + "</td></tr>";
result += "<tr><td class='ui-state-default'>Extras</td><td class='ui-widget-content'> " + JSON.stringify(intent.extras) + "</td></tr>";
result += "</table>";
return result;
}
function collectIntent(){
var action = $("#pub_action").val();
console.log("Action: " + action);
var sender = $("#pub_source").val();
if(!($("#pub_publisher").val() == 'me')){
sender = $("#pub_publisher").val() + "?sender=" + sender;
}
var categories = $("#pub_categories").val().split(",");
var flags = $("#pub_flags").val().split(",");
try{
var extras = $.parseJSON($("#pub_extras").val());
} catch(error) {
alert("Corrupt JSON specified for extras");
return;
}
var intent = {
"component": $("#pub_component").val(),
"sender": sender,
"data": $("#pub_data").val(),
"dataType":$("#pub_datatype").val(),
"action":$("#pub_action").val(),
"categories":categories,
"flags": flags,
"extras": extras
};
return intent;
}
function init(){
iwcClient = new iwc.Client();
var iwcCallback = function(intent) {
var date = new Date();
var format = "yyyy-MM-dd kk:mm:ss";
var dates = formatDate(date,format)+"."+date.getMilliseconds();
$('#accordion').prepend("<h3><a href='#'>#" + counter + " - " + intent.action + " (" + dates + ")</a></h3><div>" + renderIntent(intent) + "</div>").accordion('destroy').accordion();
counter += 1;
}
iwcClient.connect(iwcCallback);
}
$(function() {
$( "#accordion" ).accordion({
collapsible: true
});
$( "#clearb" ).button().click(function() {
counter = 0;
$( "#accordion" ).accordion('destroy').empty().accordion();
});
$( "#sendb" ).button().click(function() {
$("#sendintent").dialog('open');
});
$("#exint").dialog({
autoOpen: false,
heigth: 340,
width: 350,
modal: true
});
$("#sendintent").dialog({
autoOpen: false,
height: 340,
width: 350,
modal: true,
buttons: {
"Send": function() {
var intent = collectIntent();
console.log(intent);
if(iwc.util.validateIntent(intent)) {
iwcClient.publish(intent);
}
else {
alert("Intent not valid! ");
}
},
Export: function() {
var intent = collectIntent();
var istr = JSON.stringify(intent);
console.log(istr);
$("#intsnip").html(istr);
$("#exint").dialog("open");
},
Cancel: function() {
$(this).dialog('close');
}
},
close: function(){
//$(this).dialog('close');
}
});
gadgets.window.adjustHeight();
});
$(document).ready(init());
</script>
<button id="sendb">Send Intent</button> <button id="clearb">Clear List</button>
<h1>Received Intents</h1>
<div id="accordion">
</div>
<div id='sendintent' title='Send Intent'>
<table id='pub_form'>
<tr><td class='ui-state-default'>Publisher</td><td class='input'><input id='pub_publisher' type='text' value='me'/></td></tr>
<tr><td class='ui-state-default'>Source</td><td class='input'><input id='pub_source' type='text' value='http://widget.org/sender.xml'/></td></tr>
<tr><td class='ui-state-default'>Component</td><td class='input'><input id='pub_component' type='text'/></td></tr>
<tr><td class='ui-state-default'>Action</td><td class='input'><input id='pub_action' type='text' value='ACTION_UPDATE'/></td></tr>
<tr><td class='ui-state-default'>Data</td><td class='input'><input id='pub_data' type='text' value='http://example.org/some/data'/></td></tr>
<tr><td class='ui-state-default'>Data Type</td><td class='input'><input id='pub_datatype' type='text' value='text/plain'/></td></tr>
<tr><td class='ui-state-default'>Flags</td><td class='input'><input id='pub_flags' type='text' value='PUBLISH_GLOBAL'/></td></tr>
<tr><td class='ui-state-default'>Categories</td><td class='input'><input id='pub_categories' type='text' value='cat1,cat2'/></td></tr>
<!-- <tr><td class='ui-state-default'>Extras</td><td class='input'><input id='pub_extras' type='text' value='{"key":"value"}'/></td></tr> -->
<tr><td class='ui-state-default'>Extras</td><td class='input'><textarea id='pub_extras' value='{"key":"value"}'/></td></tr>
</table>
</div>
<div id="exint" title="Exported Intent JSON">
Copy the snippet below to your code to specify a respective intent message.
<p id="intsnip"></p>
</div>
</div>
]]>
</Content>
</Module>