/******************************************************************************
* Copyright (c) 2008 by System Helmholz GmbH.
*
* This software is copyrighted by and is the sole property of Systeme
* Helmholz GmbH. All rights, title, ownership, or other interests in the
* software remain the property of Systeme Helmholz GmbH. This software
* may only be used in accordance with the corresponding license agreement.
* Any unauthorized use, duplication, transmission, distribution, or
* disclosure of this software is expressly forbidden.
*
* This Copyright notice may not be removed or modified without prior
* written consent of Systeme Helmholz GmbH.
*
* Systeme Helmholz GmbH, reserves the right to modify this software
* without notice.
*
* Systeme Helmholz GmbH Phone: +49 9135 7380 0
* Hannberger Weg 2 Fax: +49 9135 7380 50
* 91091 Großenseebach Web: http://www.helmholz.de
* Germany Email: info@helmholz.de
*
******************************************************************************
*
* Projekt : NETLink MPI12 for NetARM processor
* Copyright: Systeme Helmholz GmbH
* Author : Ehser
* Version : 1.0 / 04.02.10
* File : lifelist-js.htm
*
*
* Javascript tool to get the lifelist information from the NETlink ADapter
*/
var ONLINE = 1
var OFFLINE = 2
var RESPONSE_OK = 0;
var RESPONSE_READY = 1;
var LIFELIST_CYCLIC_INTERVAL = 500;
var g_lifelistActive = null;
var g_OnOfflineStateActive = null;
var LIFELIST_MSG_OK = 0;
var NO_MORE_LIFELIST_MSG = 1;
var LIFELIST_ERR = 2;
var bWaitForResponse = false;
var g_reload_enabled = false;
var g_transfer_counter = 0; // testing
function my_onload()
{
if (window.location.pathname.indexOf("NLP_Status") != -1) // is NLP_status found?
getOnOfflineState(false/*syncron*/); // yes!
}
function btnGoOnline()
{
var on_offline_state;
//
//
//
on_offline_state = getOnOfflineState(false/*syncron*/);
g_reload_enabled = true;
if (on_offline_state == "offline")
{
goOnOffline(ONLINE);
}
else
{
goOnOffline(OFFLINE);
}
g_OnOfflineStateActive = window.setInterval("getOnOfflineState(true)", LIFELIST_CYCLIC_INTERVAL);
}
/**
*/
function btnUpdateLifelist()
{
var htmlElement;
g_update_lifelist = 1;
if (g_lifelistActive != null)
{
stopLifelistRead();
return;
}
//
//
g_lifelistActive = window.setInterval("CyclicGetLifelist()", LIFELIST_CYCLIC_INTERVAL);
// CyclicGetLifelist();
}
/**
*/
function goOnOffline(on_off_line)
{
var goOnOfflineXML;
var netlink_answer;
if (bWaitForResponse == true)
{
// alert("goOnOffline(): letzte Anfrage noch nicht beantwortet!");
return; // do nothing last read is still not back
}
bWaitForResponse = true;
if (on_off_line == ONLINE)
{
goOnOfflineXML = "xmlRequest=\n";
goOnOfflineXML += "\n";
}
if (on_off_line == OFFLINE)
{
goOnOfflineXML = "xmlRequest=\n";
goOnOfflineXML += "\n";
}
setNetlinkResponseFunction(callbackOnOfflineResponse); // set callback function for responses
askNETLink(goOnOfflineXML, true); // NETLink Version, send syncron! (asyncron = true)
//// netlink_answer = askNETLink("/Netlink/NLP/onoffline.xml", false); // PC - Test Version , send syncron! (asyncron = false)
//// bWaitForResponse = false; // transfer ready
//// callbackOnOfflineResponse(netlink_answer);
} // END goOnOffline()
/**
*/
function getOnOfflineState(bAsyncronResponse)
{
var getOnOfflineStateXML;
var netlink_answer;
var return_state = "none";
if (bWaitForResponse == true)
{
// alert("getOnOfflineState(): last request not yet answered!");
return; // do nothing last read is still not back
}
bWaitForResponse = true;
getOnOfflineStateXML = "xmlRequest=\n";
getOnOfflineStateXML += "\n";
setNetlinkResponseFunction(callbackOnOfflineResponse); // set callback function for responses
netlink_answer = askNETLink(getOnOfflineStateXML, bAsyncronResponse);// NETLink Version, send syncron! (asyncron = true)
// netlink_answer = askNETLink("/Netlink/NLP/onoffline.xml", bSyncronResponse); // PC - Test Version , send syncron! (asyncron = false)
if (!bAsyncronResponse)
{
return_state = updateOnOfflineResponse(netlink_answer);
}
return return_state;
} // END getOnOfflineState()
/**
*/
function CyclicGetLifelist()
{
var getLifelistXML;
if (bWaitForResponse == true)
{
// alert("CyclicGetLifelist(): letzte Anfrage noch nicht beantwortet!");
return; // do nothing last read is still not back
}
bWaitForResponse = true;
if (g_update_lifelist == 1)
{
getLifelistXML = "xmlRequest=\n";
getLifelistXML += "\n";
// removeAllRows();
g_update_lifelist = 0;
}
else
{
getLifelistXML = "xmlRequest=\n";
getLifelistXML += "\n";
}
setNetlinkResponseFunction(null); // set callback function for responses
// askNETLink("/Netlink/NLP/lifelist.xml", true); // PC - Test Version , send syncron! (asyncron = false)
askNETLink(getLifelistXML, true); // NETLink Version, send syncron! (asyncron = true)
//// bWaitForResponse = false; // transfer ready
/*
if (g_transfer_counter++ > 3)
stopLifelistRead();
*/
} // END CyclicGetLifelist()
/**
*/
function stopLifelistRead()
{
window.clearInterval(g_lifelistActive);
g_lifelistActive = null;
}
function stopOnOfflineState()
{
window.clearInterval(g_OnOfflineStateActive);
g_OnOfflineStateActive = null;
}
/**
*/
function callbackOnOfflineResponse(xmlVariables)
{
var NetlinkChild;
var i;
var iReturn;
var online_state = "offline";
NetlinkChild = getElement(xmlVariables, "NETLink");
readNode = getElement(NetlinkChild, "goonline");
if (readNode.length > 0)
{ // look for Read-Child
online_state = readOnOfflineResponse(readNode);
if (online_state != "running")
{
stopOnOfflineState();
if (g_reload_enabled)
{
g_reload_enabled = false;
location.reload();
}
}
}
bWaitForResponse = false; // transfer ready
return online_state;
}
/**
*/
function updateOnOfflineResponse(xmlVariables)
{
var NetlinkChild;
var i;
var iReturn;
var online_state = "offline";
NetlinkChild = getElement(xmlVariables, "NETLink");
readNode = getElement(NetlinkChild, "goonline");
if (readNode.length > 0)
{ // look for Read-Child
online_state = readOnOfflineResponse(readNode);
}
bWaitForResponse = false; // transfer ready
return online_state;
}
/**
*/
function showLifelistResponse(xmlVariables)
{
var NetlinkChild;
var i;
var iReturn;
iReturn = checkLifelistResponse("showLifelistResponse", xmlVariables);
switch(iReturn)
{
case LIFELIST_MSG_OK:
{
//
//
//
htmlElement = document.getElementById("idLabelVerifiedBusmembers");
htmlElement.style.visibility = "visible";
NetlinkChild = getElement(xmlVariables, "NETLink");
readNode = getElement(NetlinkChild, "lifelist");
if (readNode.length > 0)
{ // look for Read-Child
readLifelist(readNode);
}
}
break;
case LIFELIST_ERR:
{
stopLifelistRead();
location.reload();
}
break;
case NO_MORE_LIFELIST_MSG:
{
//
// no more diagnostic msg
// slow down request cycles
//
stopLifelistRead();
location.reload();
}
break;
}
}
/**
*/
function readLifelist(ReadNode)
{
var htmlElement;
var current_lifelist_index;
var arLifelistValues;
var cnt_values;
var NodeName;
var ar_length;
var i;
//
// get lifelist_index index
//
current_lifelist_index = getAttribute(ReadNode, "lifelist_index");
// g_next_lifelist_index = parseInt(current_lifelist_index,10);
htmlElement = document.getElementById("idVerifiedBusmembers");
htmlElement.firstChild.data = current_lifelist_index;
lifelist_state = getAttribute(ReadNode, "state");
//
// get values of lifelist info
//
// diag_value = getAttribute(ReadNode, "lifelist_value");
arLifelistValues = getChildElements(ReadNode, "*");
cnt_values = arLifelistValues.length;
if (lifelist_state == "ready")
{ //
// Netlink is ready with lifelist
//
//
// update status page
//
}
}
/**
*/
function readOnOfflineResponse(ReadNode)
{
var OnOffButtonElement;
var LifelistButtonElement;
var online_state;
var NodeName;
OnOffButtonElement = document.getElementById("idGoOnOffline");
LifelistButtonElement = document.getElementById("idUpdateLifelist");
if (OnOffButtonElement == null)
return;
//
// get online_state
//
online_state = getAttribute(ReadNode, "online_state");
if (online_state == "offline")
{ // if state is "offline" set button to "Go Online"
OnOffButtonElement.value = "Go Online";
OnOffButtonElement.disabled = false;
LifelistButtonElement.disabled = true;
}
else
{ // set button to "Go Offline"
OnOffButtonElement.value = "Go Offline";
OnOffButtonElement.disabled = false;
LifelistButtonElement.disabled = false;
}
if (online_state == "running")
{
// OnOffButtonElement.disabled = true;
}
return online_state;
}
/**
*/
function checkLifelistResponse(instance_name, xmlResponse)
{
var NetlinkChild;
var error_no;
var error_text;
var iReturn = LIFELIST_ERR;
if (xmlResponse.length == 0)
{
return NO_MORE_LIFELIST_MSG;
}
NetlinkChild = getElement(xmlResponse, "NETLink");
if (NetlinkChild.length == 0)
{
alert("checkResponse(): " + instance_name + "-> missing root node 'NETLink')");
return iReturn;
}
NetlinkResponse = getElement(NetlinkChild, "response");
if (NetlinkResponse.length == 0)
{
alert("checkResponse(): " + instance_name + "-> no response element)");
return iReturn;
}
error_no = getAttribute(NetlinkResponse,"error_no");
var nbr = parseInt(error_no, 10);
if (nbr == 0)
{
iReturn = LIFELIST_MSG_OK; // response with data
}
else
{
switch(nbr)
{
case NO_MORE_LIFELIST_MSG:
iReturn = NO_MORE_LIFELIST_MSG;
break;
default:
alert("checkResponse(): " + instance_name + "-> xmlResponse with error number: " + error_no);
}
}
return iReturn;
}