Source for Alarm Ratio Bar application, which implements the Alarm Ratio Bar component:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application
xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:mosh="managedobjects.visualization.*"
backgroundColor="#ffffff"
backgroundGradientColors="#ffffff,#ffffff"
backgroundGradientAlphas="0.0,0.0"
applicationComplete="main()"
>
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.rpc.http.HTTPService;
import mx.rpc.events.ResultEvent;
import mx.rpc.events.FaultEvent;
private var okayCount : int = 10;
private var infoCount : int = 20;
private var minorCount : int = 30;
private var majorCount : int = 40;
private var criticalCount : int = 10;
// Constants
private const RPC_REST_ROOT : String = "/moweb2cn/rest/";
private const DEFAULT_REFRESH_INTERVAL : Number = 30;
// Private
private var rpcUsername : String;
private var rpcPassword : String;
private var rpcIdentity : String;
private var captionText : String;
private var refreshTimer : Timer;
private var refreshInterval : Number;
// Functions
private function terminateSession() : void
{
var rpc : HTTPService = new HTTPService();
rpc.addEventListener(ResultEvent.RESULT, terminateSessionHandler);
rpc.headers = {"X-HTTP-Method-Override" : "DELETE"};
rpc.method = "POST";
rpc.contentType = "application/xml";
rpc.resultFormat = "xml";
rpc.url = RPC_REST_ROOT + "session";
rpc.send(new XML("<response/>"));
}
private function terminateSessionHandler(event : ResultEvent) : void
{
// Do nothing
}
private function createSession(username : String, password : String) : void
{
var rpc : HTTPService = new HTTPService();
var url : String;
url = RPC_REST_ROOT + "session?username=" + username + "&password=" + password;
rpc.addEventListener(ResultEvent.RESULT, createSessionHandler);
rpc.method = "GET";
rpc.url = url;
rpc.send(null);
}
private function createSessionHandler(event : ResultEvent) : void
{
this.updateAlarmConditionCounts(this.rpcIdentity);
}
private function updateAlarmConditionCounts(identity : String) : void
{
var rpc : HTTPService = new HTTPService();
var url : String;
url = RPC_REST_ROOT + "element/attributes/";
url += identity;
url += "?attributeNames=okayCount,infoCount,minorCount,majorCount,criticalCount";
rpc.addEventListener(ResultEvent.RESULT, alarmConditionCountsHandler);
rpc.resultFormat = "object";
rpc.method = "GET";
rpc.url = url;
rpc.send(null);
}
private function alarmConditionCountsHandler(event : ResultEvent) : void
{
this.terminateSession();
var a : Array = [0,1,2,3,4];
a[0] = new Number(event.result.attributes.attribute[0].stringValue);
a[1] = new Number(event.result.attributes.attribute[1].stringValue);
a[2] = new Number(event.result.attributes.attribute[2].stringValue);
a[3] = new Number(event.result.attributes.attribute[3].stringValue);
a[4] = new Number(event.result.attributes.attribute[4].stringValue);
this.alarmRatioBar.setCountValues(a);
this.alarmRatioBar.CaptionText = this.captionText;
this.refreshTimer.start();
}
private function refreshTimerHandler(event : TimerEvent) : void
{
this.refreshTimer.stop();
this.alarmRatioBar.CaptionText = "Refreshing...";
createSession(this.rpcUsername, this.rpcPassword);
}
private function configureComponentFromQueryString() : void
{
this.rpcUsername = mx.core.Application.application.parameters.Username;
this.rpcPassword = mx.core.Application.application.parameters.Password;
this.rpcIdentity = mx.core.Application.application.parameters.Identity;
this.captionText = mx.core.Application.application.parameters.CaptionText;
this.alarmRatioBar.CaptionText = captionText;
this.alarmRatioBar.CaptionFontSize = mx.core.Application.application.parameters.CaptionFontSize;
this.refreshInterval = new Number(mx.core.Application.application.parameters.RefreshInterval);
this.refreshInterval = isNaN(refreshInterval) ? DEFAULT_REFRESH_INTERVAL : refreshInterval;
}
private function main() : void
{
configureComponentFromQueryString();
this.refreshTimer = new Timer(this.refreshInterval * 1000);
this.refreshTimer.addEventListener(TimerEvent.TIMER, refreshTimerHandler);
createSession(this.rpcUsername, this.rpcPassword);
}
]]>
</mx:Script>
<mosh:IAlarmRatioBar
id="alarmRatioBar"
OkayCount="10"
InfoCount="10"
MinorCount="10"
MajorCount="10"
CriticalCount="10"
CaptionText="Alarm Ratios"
CaptionColor="#ffffff"
CaptionFontFamily="Tahoma"
CaptionFontSize="48"
CaptionAlign="center"
FrameColor="#ffffff"
FrameThickness="5"
ShowShadows="true"
width="100%"
height="100%"
/>
<mx:Label id="debugOutput"/>
</mx:Application>