/****************************************************************************** * 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; }