blob: 425bd73734eda4867988d29bf5927be91745c640 [file] [log] [blame]
<html>
<!--
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
-->
<head>
<title>Apache Tuscany Domain</TITLE>
<script type="text/javascript" src="../SCADomain/scaDomain.js"></script>
<script language="JavaScript">
domainManager = new JSONRpcClient("../DomainManagerComponent/DomainManagerJson");
function getNodeInfo() {
domainManager.DomainManagerService.getNodeInfo(handleGetNodeInfo);
}
function handleGetNodeInfo(result) {
var text = ""
for (var i in result.list){
var node = result.list[i];
text = text + "<table>";
text = text + "<TR CLASS='source_1' >";
text = text + " <TD>";
text = text + " <IMG SRC='node.png'/>&nbsp;&nbsp;" + node.domainUri;
text = text + " </TD>";
var noProtocol = node.nodeManagerUrl.substring(7);
var colonPos = noProtocol.indexOf(':')
var nodeManagerWebUrl = noProtocol.substring(0, colonPos + 6);
nodeManagerWebUrl = "http://" + nodeManagerWebUrl + "node/index.html";
text = text + " <TD CLASS='clickable link' ONCLICK=\"showNode('" + nodeManagerWebUrl + "')\">" + node.nodeUri + "</TD>";
text = text + "</TR>";
}
document.getElementById('domainInfo').innerHTML=text;
}
function showNode(url)
{
document.getElementById("nodePage").innerHTML="<IFRAME CLASS='alert_data' SRC='"+url+"'/>";
window.location="#data";
return;
}
</script>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body onload="getNodeInfo()">
<!--script type="text/javascript">
// The proxy for the alert and alertsources services running in Tuscany
var alertsService = new dojo.rpc.JsonService("AlertsServiceJSONRPC?smd");
var alertSourcesService = new dojo.rpc.JsonService("AlertsSourcesServiceJSONRPC?smd");
// If you want to put an HTTP sniffer in the way to look at the JSONROPC packets you'll
// need to edit the target address of the service in the smd. The only way to do this easily
// is to read an smd from disc rather than generate one. There are two smds provided for this
//var alertsService = new dojo.rpc.JsonService("service.smd");
//var alertSourcesService = new dojo.rpc.JsonService("sources.smd");
// The global list of alerts sources
var alertSourceList = null;
// The global list of alerts
var alertList = null;
// the constructor for entries on the alert source list
function alertSourceType(name,id,address,feedAddress,feedType,popUsername,popPassword,popServer,lastChecked,javaClass) {
this.name = name;
this.id = id;
this.address = address;
this.feedAddress = feedAddress;
this.feedType = feedType;
this.lastChecked = lastChecked;
this.javaClass = "org.apache.tuscany.sca.demos.aggregator.types.impl.SourceTypeImpl";
}
function errorCallback(result, error, id) {
var resultsNode = document.getElementById("errors");
// There seems to be a problem somewhere as I should be able to get the error
// details but all I can actually get is the Id from the error message
// resultsNode.innerHTML = "there was an error! message id = " + " error code = " + result.error.code + " error message = " + result.error.msg ;
resultsNode.innerHTML = "An error was returned by the server. Message id = " + result.id;
}
// Generate the alert sources table
function getAlertSources()
{
response = alertSourcesService.getAlertSources("Dojo");
response.addCallbacks(getAlertSourcesCallback, errorCallback);
getAlerts();
}
function getAlertSourcesCallback(result) {
var resultsNode = document.getElementById("alertSourcesTable");
if ( result.error != null ) {
resultsNode.innerHTML = result.error;
} else {
// stash away the source list for when we come to edit it
alertSourceList = result.source.list;
// put out the html
var text = ""
var nextSourceId = 0
for (var i in result.source.list){
var source = result.source.list[i];
text = text + "<table>";
text = text + "<TR CLASS='source_" + source.id + "' >";
text = text + " <TD CLASS='source_name clickable' ONCLICK=\"displayAlert('" + source.address + "')\">";
text = text + " <IMG SRC='rss.png'/>&nbsp;&nbsp;" + source.name;
text = text + " </TD>";
text = text + " <TD CLASS='clickable link' ONCLICK=\"showEditSource('" + source.id + "')\">Edit</TD>";
text = text + " <TD CLASS='clickable link' ONCLICK=\"deleteSource('" + source.id + "')\">Delete</TD>";
text = text + "</TR>";
text = text + "<TR ID='edit_source_" + source.id + "' CLASS='hidden source_" + source.id + "'>";
text = text + " <TD COLSPAN='3'>";
text = text + " <TABLE CLASS='sourceDetailsTable'>";
text = text + " <TR>";
text = text + " <TD>Source name:</TD>";
text = text + " <TD>";
text = text + " <INPUT ID='source_" + source.id + "_name' TYPE='TEXT' SIZE='50' VALUE='" + source.name + "'/>";
text = text + " </TD>";
text = text + " </TR>";
text = text + " <TR>";
text = text + " <TD>Source address:</TD>"
text = text + " <TD>";
text = text + " <INPUT ID='source_" + source.id + "_address' TYPE='TEXT' SIZE='50' VALUE='" + source.address + "'/>";
text = text + " </TD>";
text = text + " </TR>";
text = text + " <TR>";
text = text + " <TD>";
text = text + " <INPUT ID='source_" + source.id + "_type' TYPE='HIDDEN' VALUE='" + source.id + "'/>";
text = text + " <INPUT TYPE='BUTTON' VALUE='Update' ONCLICK=\"updateSource('" + source.id + "')\"/>";
text = text + " <INPUT TYPE='BUTTON' VALUE='Cancel' ONCLICK=\"hideEditSource('" + source.id + "')\"/>";
text = text + " </TD>";
text = text + " </TR>";
text = text + " </TABLE>";
text = text + " </TD>";
text = text + "</TR>";
nextSourceId = eval(source.id);
}
nextSourceId = nextSourceId + 1;
text = text + "<TR CLASS='source_" + nextSourceId + "'>";
text = text + " <TD COLSPAN='4' CLASS='clickable link' ONCLICK=\"showAddNewSource('" + nextSourceId + "')\">Add new Alert Source</TD>";
text = text + "</TR>";
text = text + "<TR ID='add_source_" + nextSourceId + "' CLASS='hidden source_" + nextSourceId + "'>";
text = text + " <TD COLSPAN='4'>";
text = text + " <TABLE CLASS='sourceDetailsTable'>";
text = text + " <TR>";
text = text + " <TD>Source name:</TD>";
text = text + " <TD>";
text = text + " <INPUT ID='source_" + nextSourceId + "_name' TYPE='TEXT' SIZE='50'>";
text = text + " </TD>";
text = text + " </TR>";
text = text + " <TR>";
text = text + " <TD>Source address:</TD>";
text = text + " <TD>";
text = text + " <INPUT ID='source_" + nextSourceId + "_address' TYPE='TEXT' SIZE='50'>";
text = text + " </TD>";
text = text + " </TR>";
text = text + " <TR>";
text = text + " <TD>Source type:</TD>";
text = text + " <TD>";
text = text + " <SELECT ID='source_" + nextSourceId + "_type' ONCHANGE=\"showSourceType('" + nextSourceId + "')\">";
text = text + " <OPTION value='rss' selected='selected'>RSS/Atom feed</OPTION>";
text = text + " </SELECT>";
text = text + " </TD>";
text = text + " </TR>";
text = text + " <TR ID='add_rss_source'>";
text = text + " <TD COLSPAN='2'>";
text = text + " <TABLE CLASS='sourceDetailsTable'>";
text = text + " <TR>";
text = text + " <TD>Feed address:</TD>";
text = text + " <TD>";
text = text + " <INPUT ID='source_" + nextSourceId + "_feedAddress' TYPE='TEXT' SIZE='50'/>";
text = text + " </TD>";
text = text + " </TR>";
text = text + " </TABLE>";
text = text + " </TD>";
text = text + " </TR>";
text = text + " <TR>";
text = text + " <TD>";
text = text + " <INPUT TYPE='BUTTON' VALUE='Add' ONCLICK=\"addSource('" + nextSourceId + "')\">";
text = text + " <INPUT TYPE='BUTTON' VALUE='Cancel' ONCLICK=\"hideAddNewSource('" + nextSourceId + "')\">";
text = text + " </TD>";
text = text + " </TR>";
text = text + " </TABLE>";
text = text + " </TD>";
text = text + "</TR>";
text = text + "</table>";
resultsNode.innerHTML = text;
}
}
function showEditSource(sourceid)
{
document.getElementById("edit_source_"+sourceid).className = "source_"+sourceid;
}
function hideEditSource(sourceid)
{
document.getElementById("edit_source_"+sourceid).className = "hidden source_"+sourceid;
}
function updateSource(sourceid)
{
hideEditSource(sourceid);
var source = getSource(sourceId);
alertSourcesService.updateAlertSource(source);
getAlertSources();
}
function deleteSource(sourceid)
{
alertSourcesService.removeAlertSource(sourceid);
getAlertSources();
}
function showAddNewSource(sourceid)
{
document.getElementById("add_source_"+sourceid).className = "source_"+sourceid;
}
function hideAddNewSource(sourceid)
{
document.getElementById("add_source_"+sourceid).className = "hidden source_"+sourceid;
}
function addSource(sourceid)
{
hideAddNewSource(sourceid);
var source = getSource(sourceid);
alertSourcesService.addAlertSource(source);
// wait a little before getting the list back from the server
setTimeout("getAlertSources()",1250);
}
function getSource(sourceid)
{
var source = alertSourceList[sourceid];
if ( source == null ){
source = new alertSourceType("name","id","address","feedAddress","feedType","popUsername","popPassword","popServer","lastChecked","javaClass");
alertSourceList[sourceid] = source;
}
source.name = document.getElementById("source_"+sourceid+"_name").value;
source.id = sourceid;
source.address = document.getElementById("source_"+sourceid+"_address").value;
var typeElem = document.getElementById("source_"+sourceid+"_type");
source.feedType = typeElem.options[typeElem.selectedIndex].value;
if(source.feedType=="rss")
{
source.feedAddress = document.getElementById("source_"+sourceid+"_feedAddress").value;
}
else if(source.feedType=="pop")
{
source.popServer = document.getElementById("source_"+sourceid+"_popServer").value;
source.popUsername = document.getElementById("source_"+sourceid+"_popUsername").value;
source.popPassword = document.getElementById("source_"+sourceid+"_popPassword").value;
}
return source;
}
// Generate the alerts table
function getAlerts()
{
response = alertsService.getAllNewAlerts("Dojo");
response.addCallbacks(getAlertsCallback, errorCallback);
}
function getAlertsCallback(result) {
var resultsNode = document.getElementById("alertsTable");
if ( result.error != null ) {
resultsNode.innerHTML = result.error;
} else {
alertList = result.alert.list;
var text = ""
for (var i in result.alert.list){
var alert = result.alert.list[i];
text = text + "<table>";
text = text + "<TR class='source_" + alert.sourceId + " clickable' onclick=\"displayAlert('" + alert.address + "')\">";
text = text + " <TD class='alert_text'>";
text = text + " <SPAN id='" + alert.id + "' class='unread_title'>" + alert.title + "</SPAN>";
text = text + " <SPAN class='summary'> - " + alert.summary.substring(0, 80) + "...</SPAN>";
text = text + " </TD>";
text = text + " <TD>";
text = text + alert.date;
text = text + " </TD>"
text = text + "</TR>"
text = text + "</table>";
}
resultsNode.innerHTML = text;
}
}
function displayAlert(url)
{
document.getElementById("alertData").innerHTML="<IFRAME CLASS='alert_data' SRC='"+url+"'/>";
window.location="#data";
return;
}
</script-->
<h1 id="top">Apache Tuscany Domain</h1>
<div id="errors"></div>
<p>Domain Name<span id="domainName"></span>:</p>
<div id="domainInfo"></div>
<p /><input type="button" value="Refresh" onclick="getNodeInfo()" />
<div id="nodePage"></div>
</body>
</html>