366 lines
13 KiB
JavaScript
366 lines
13 KiB
JavaScript
/** \file html\javascript\rtstatus.js
|
|
* \brief ZKL webinterface realtime status javascript functions.
|
|
* \author Rob Schalken, Core|Vision
|
|
* \version 1.0
|
|
* \date 17-10-2008
|
|
*
|
|
* This file contains the realtime status javascript functions
|
|
*/
|
|
|
|
/*
|
|
* Global variables
|
|
*/
|
|
var ExtendedMenu = 0;
|
|
var ExtendedPhase = 0;
|
|
var ExtendedInfo = 1;
|
|
|
|
|
|
/**
|
|
* Content div sizes
|
|
*
|
|
*/
|
|
function ContentSize() {
|
|
// Remove scroll bars
|
|
document.documentElement.style.overflow = 'hidden';
|
|
document.body.scroll = "no";
|
|
|
|
// menu rt info available?
|
|
iframe_height = 0;
|
|
try {
|
|
if (ExtendedInfo) {
|
|
iframe_height = parseInt(getElement('iframe_info').height);
|
|
}
|
|
}
|
|
catch (e) {}
|
|
|
|
// Resize divs
|
|
try {
|
|
getElement('map').style.top = parseInt(getElement('header').offsetHeight) + 'px';
|
|
getElement('map').style.height = parseInt(ScreenHeight()) - parseInt(getElement('header').offsetHeight) - iframe_height + 'px';
|
|
getElement('content').style.height = getElement('map').style.height;
|
|
}
|
|
catch (e) {}
|
|
|
|
|
|
try {
|
|
getElement('extended_menu').style.height = parseInt(ScreenHeight()) - parseInt(getElement('header').offsetHeight) - iframe_height + 'px';
|
|
}
|
|
catch (e) {}
|
|
|
|
try {
|
|
getElement('arrow_info_hide').style.top = parseInt(ScreenHeight()) - parseInt(getElement('header').offsetHeight) - iframe_height - 16 + 'px';
|
|
getElement('arrow_info_show').style.top = getElement('arrow_info_hide').style.top;
|
|
try {
|
|
getElement('arrow_info_hide_span').style.top = parseInt(ScreenHeight()) - parseInt(getElement('header').offsetHeight) - iframe_height - 16 + 'px';
|
|
getElement('arrow_info_show_span').style.top = getElement('arrow_info_hide').style.top;
|
|
}
|
|
catch (e) {}
|
|
}
|
|
catch (e) {}
|
|
|
|
// Rebuild mapview control
|
|
try {
|
|
mapviewcontrol.forceRedraw();
|
|
}
|
|
catch(e) {}
|
|
}
|
|
|
|
|
|
/**
|
|
* Initialize extended menu and rt status
|
|
*
|
|
*/
|
|
function Menu_rt_init(id, dir, debug) {
|
|
// Debug enabled?
|
|
DebugEnabled = debug;
|
|
|
|
// Clear global variable
|
|
ExtendedMenu = 0;
|
|
|
|
// Write Cookie (needed for help file)
|
|
write_cookie('extended_menu_' + id + '=' + ExtendedMenu);
|
|
|
|
// Write openlayers image path
|
|
if (dir.length) {
|
|
OpenLayers.ImgPath = dir;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* extended view menu
|
|
*
|
|
*/
|
|
function Extend_Menu(direction, id) {
|
|
if ((direction == 'show') && (!ExtendedMenu)) {
|
|
// Hide hyperlink
|
|
getElement('arrow_right_href').style.visibility = 'hidden';
|
|
|
|
// Show/hide arrows & menu
|
|
getElement('arrow_right').style.visibility = 'hidden';
|
|
getElement('arrow_left').style.left = ExtendedPhase * (parseInt(getElement('extended_menu').offsetWidth)/10) + 'px';
|
|
getElement('arrow_left').style.visibility = 'visible';
|
|
getElement('arrow_left_bg').width = ExtendedPhase * (parseInt(getElement('extended_menu').offsetWidth)/10);
|
|
getElement('arrow_left_bg').style.visibility = 'visible';
|
|
getElement('extended_menu').style.left = '-' + (parseInt(getElement('extended_menu').offsetWidth) - (ExtendedPhase * (parseInt(getElement('extended_menu').offsetWidth)/10))) + 'px';
|
|
try {
|
|
getElement('arrow_left_span').style.left = ExtendedPhase * (parseInt(getElement('extended_menu').offsetWidth)/10) + 'px';
|
|
getElement('arrow_left_span').style.visibility = 'visible';
|
|
}
|
|
catch(e) {}
|
|
|
|
// Skip first
|
|
if (ExtendedPhase) {
|
|
// Reinit extended zoom
|
|
Extend_Zoom(1, (parseInt(getElement('extended_menu').offsetWidth)/10));
|
|
}
|
|
|
|
// Handle timer
|
|
if (ExtendedPhase < 10) {
|
|
// Increment var
|
|
ExtendedPhase++;
|
|
|
|
// Recall function
|
|
var func_extend = function() {Extend_Menu(direction,id);};
|
|
setTimeout(func_extend, 2);
|
|
}
|
|
else {
|
|
// Reset var
|
|
ExtendedPhase = 0;
|
|
|
|
// Set global var
|
|
ExtendedMenu = 1;
|
|
|
|
// Show hyperlinks
|
|
getElement('arrow_left_href').style.visibility = 'visible';
|
|
getElement('arrow_left_bg_href').style.visibility = 'visible';
|
|
}
|
|
}
|
|
else if ((direction == 'hide') && (ExtendedMenu)) {
|
|
// Hide hyperlink
|
|
getElement('arrow_left_href').style.visibility = 'hidden';
|
|
getElement('arrow_left_bg_href').style.visibility = 'hidden';
|
|
|
|
// Show/hide arrows & menu
|
|
getElement('arrow_left').style.left = (parseInt(getElement('extended_menu').offsetWidth) - (ExtendedPhase * (parseInt(getElement('extended_menu').offsetWidth)/10))) + 'px';
|
|
getElement('arrow_left_bg').width = (parseInt(getElement('extended_menu').offsetWidth) - (ExtendedPhase * (parseInt(getElement('extended_menu').offsetWidth)/10)));
|
|
getElement('extended_menu').style.left = '-' + (ExtendedPhase * (parseInt(getElement('extended_menu').offsetWidth)/10)) + 'px';
|
|
try {
|
|
getElement('arrow_left_span').style.left = (parseInt(getElement('extended_menu').offsetWidth) - (ExtendedPhase * (parseInt(getElement('extended_menu').offsetWidth)/10))) + 'px';
|
|
}
|
|
catch(e) {}
|
|
|
|
// Skip first
|
|
if (ExtendedPhase) {
|
|
// Reinit extended zoom
|
|
Extend_Zoom(0, (parseInt(getElement('extended_menu').offsetWidth)/10));
|
|
}
|
|
|
|
// Handle timer
|
|
if (ExtendedPhase < 10) {
|
|
// Increment var
|
|
ExtendedPhase++;
|
|
|
|
// Recall function
|
|
var func_extend = function() {Extend_Menu(direction,id);};
|
|
setTimeout(func_extend, 5);
|
|
}
|
|
else {
|
|
// Show/hide arrows
|
|
getElement('arrow_left_bg').style.visibility = 'hidden';
|
|
getElement('arrow_left').style.visibility = 'hidden';
|
|
getElement('arrow_right').style.visibility = 'visible';
|
|
try {
|
|
getElement('arrow_left_span').style.visibility = 'hidden';
|
|
}
|
|
catch(e) {}
|
|
|
|
// Reset var
|
|
ExtendedPhase = 0;
|
|
|
|
// Clear global var
|
|
ExtendedMenu = 0;
|
|
|
|
// Show hyperlink
|
|
getElement('arrow_right_href').style.visibility = 'visible';
|
|
}
|
|
}
|
|
|
|
// Write Cookie (needed for help file)
|
|
write_cookie('extended_menu_' + id + '=' + ExtendedMenu);
|
|
}
|
|
|
|
|
|
/**
|
|
* extended info menu
|
|
*
|
|
*/
|
|
function Extend_Info(direction) {
|
|
if ((direction == 'show') && (!ExtendedInfo)) {
|
|
// Show/hide arrows & hyperlinks
|
|
getElement('info_show_href').style.visibility = 'hidden';
|
|
getElement('arrow_info_show').style.visibility = 'hidden';
|
|
try {
|
|
getElement('arrow_info_show_span').style.visibility = 'hidden';
|
|
}
|
|
catch (e) { }
|
|
getElement('arrow_info_hide').style.visibility = 'visible';
|
|
getElement('info_hide_href').style.visibility = 'visible';
|
|
try {
|
|
getElement('arrow_info_hide_span').style.visibility = 'visible';
|
|
}
|
|
catch (e) { }
|
|
|
|
// Show iframe info => second line rt status
|
|
getElement('iframe_info').style.display = '';
|
|
|
|
// Set global var
|
|
ExtendedInfo = 1;
|
|
}
|
|
else if ((direction == 'hide') && (ExtendedInfo)) {
|
|
// Show/hide arrows & hyperlinks
|
|
getElement('info_hide_href').style.visibility = 'hidden';
|
|
getElement('arrow_info_hide').style.visibility = 'hidden';
|
|
try {
|
|
getElement('arrow_info_hide_span').style.visibility = 'hidden';
|
|
}
|
|
catch (e) { }
|
|
getElement('arrow_info_show').style.visibility = 'visible';
|
|
getElement('info_show_href').style.visibility = 'visible';
|
|
try {
|
|
getElement('arrow_info_show_span').style.visibility = 'visible';
|
|
}
|
|
catch (e) { }
|
|
|
|
|
|
// Hide iframe info => second line rt status
|
|
getElement('iframe_info').style.display = 'none';
|
|
|
|
// Clear global var
|
|
ExtendedInfo = 0;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* extended zoom control
|
|
*
|
|
*/
|
|
function Extend_Zoom(direction, offset) {
|
|
// offset defined?
|
|
if(typeof(offset) == 'undefined') {
|
|
offset = parseInt(getElement('extended_menu').offsetWidth);
|
|
}
|
|
|
|
if (direction) {
|
|
try {
|
|
getElement('OpenLayers.Control.PanZoomBar_2_panup').style.left = parseInt(getElement('OpenLayers.Control.PanZoomBar_2_panup').style.left) + offset + 'px';
|
|
getElement('OpenLayers.Control.PanZoomBar_2_panleft').style.left = parseInt(getElement('OpenLayers.Control.PanZoomBar_2_panleft').style.left) + offset + 'px';
|
|
getElement('OpenLayers.Control.PanZoomBar_2_panright').style.left = parseInt(getElement('OpenLayers.Control.PanZoomBar_2_panright').style.left) + offset + 'px';
|
|
getElement('OpenLayers.Control.PanZoomBar_2_pandown').style.left = parseInt(getElement('OpenLayers.Control.PanZoomBar_2_pandown').style.left) + offset + 'px';
|
|
getElement('OpenLayers.Control.PanZoomBar_2_zoomin').style.left = parseInt(getElement('OpenLayers.Control.PanZoomBar_2_zoomin').style.left) + offset + 'px';
|
|
getElement('OpenLayers.Control.PanZoomBar_2_zoomout').style.left = parseInt(getElement('OpenLayers.Control.PanZoomBar_2_zoomout').style.left) + offset + 'px';
|
|
getElement('OpenLayers.Control.PanZoomBar_2_OpenLayers.Map_7').style.left = parseInt(getElement('OpenLayers.Control.PanZoomBar_2_OpenLayers.Map_7').style.left) + offset + 'px';
|
|
getElement('OpenLayers_Control_PanZoomBar_ZoombarOpenLayers.Map_7').style.left = parseInt(getElement('OpenLayers_Control_PanZoomBar_ZoombarOpenLayers.Map_7').style.left) + offset + 'px';
|
|
}
|
|
catch (e) { /* Silent Exception */ }
|
|
}
|
|
else {
|
|
try {
|
|
getElement('OpenLayers.Control.PanZoomBar_2_panup').style.left = parseInt(getElement('OpenLayers.Control.PanZoomBar_2_panup').style.left) - offset + 'px';
|
|
getElement('OpenLayers.Control.PanZoomBar_2_panleft').style.left = parseInt(getElement('OpenLayers.Control.PanZoomBar_2_panleft').style.left) - offset + 'px';
|
|
getElement('OpenLayers.Control.PanZoomBar_2_panright').style.left = parseInt(getElement('OpenLayers.Control.PanZoomBar_2_panright').style.left) - offset + 'px';
|
|
getElement('OpenLayers.Control.PanZoomBar_2_pandown').style.left = parseInt(getElement('OpenLayers.Control.PanZoomBar_2_pandown').style.left) - offset + 'px';
|
|
getElement('OpenLayers.Control.PanZoomBar_2_zoomin').style.left = parseInt(getElement('OpenLayers.Control.PanZoomBar_2_zoomin').style.left) - offset + 'px';
|
|
getElement('OpenLayers.Control.PanZoomBar_2_zoomout').style.left = parseInt(getElement('OpenLayers.Control.PanZoomBar_2_zoomout').style.left) - offset + 'px';
|
|
getElement('OpenLayers.Control.PanZoomBar_2_OpenLayers.Map_7').style.left = parseInt(getElement('OpenLayers.Control.PanZoomBar_2_OpenLayers.Map_7').style.left) - offset + 'px';
|
|
getElement('OpenLayers_Control_PanZoomBar_ZoombarOpenLayers.Map_7').style.left = parseInt(getElement('OpenLayers_Control_PanZoomBar_ZoombarOpenLayers.Map_7').style.left) - offset + 'px';
|
|
}
|
|
catch (e) { /* Silent Exception */ }
|
|
}
|
|
}
|
|
|
|
|
|
/*
|
|
* Get position of element in the DOM
|
|
*/
|
|
function getPos(el) {
|
|
var x,w,y,h;
|
|
var result;
|
|
if (el.getBoundingClientRect) {
|
|
var rect = el.getBoundingClientRect();
|
|
x = rect.left;
|
|
w = rect.right - rect.left;
|
|
y = rect.top;
|
|
h = rect.bottom - rect.top;
|
|
} else if (document.getBoxObjectFor) {
|
|
var bo = document.getBoxObjectFor(el);
|
|
x = bo.x;
|
|
w = bo.width;
|
|
y = bo.y;
|
|
h = bo.height;
|
|
}
|
|
result = {x:x,y:y,w:w,h:h};
|
|
return result;
|
|
}
|
|
|
|
|
|
/*
|
|
* Parse data coming from the rtstatus_datapump and pass it to the mapview
|
|
*/
|
|
function Comet_DataParser() {
|
|
//DbgPrint ("Comet_DataParser()");
|
|
MyItemArray = Array();
|
|
MyItemArray[0] = ZKL_Status;
|
|
HideNetworkError();
|
|
mapview_UpdateItems(MyItemArray);
|
|
}
|
|
|
|
/*
|
|
* Handle a network error
|
|
*/
|
|
function Comet_NetworkError() {
|
|
ShowNetworkError();
|
|
}
|
|
|
|
/*
|
|
* Show a network error
|
|
*/
|
|
function ShowNetworkError() {
|
|
var mapdiv_rect = getPos(getElement('map'));
|
|
Yoffs = getScrollY();
|
|
Xoffs = getScrollX();
|
|
getElement('errordiv').style.top = (mapdiv_rect.y+Yoffs)+"px";
|
|
getElement('errordiv').style.left = (mapdiv_rect.x+Xoffs)+"px";
|
|
getElement('errordiv').style.width = mapdiv_rect.w+"px";
|
|
getElement('errordiv').style.height = mapdiv_rect.h+"px";
|
|
getElement('errordiv').style.visibility = 'visible';
|
|
}
|
|
|
|
/*
|
|
* Hide a network error
|
|
*/
|
|
function HideNetworkError() {
|
|
getElement('errordiv').style.visibility = 'hidden';
|
|
}
|
|
|
|
/*
|
|
* Show waiting message
|
|
*/
|
|
function ShowWaitingMessage() {
|
|
var mapdiv_rect = getPos(getElement('map'));
|
|
Yoffs = getScrollY();
|
|
Xoffs = getScrollX();
|
|
getElement('messagediv').style.top = (mapdiv_rect.y+Yoffs)+"px";
|
|
getElement('messagediv').style.left = (mapdiv_rect.x+Xoffs)+"px";
|
|
getElement('messagediv').style.width = mapdiv_rect.w+"px";
|
|
getElement('messagediv').style.height = mapdiv_rect.h+"px";
|
|
getElement('messagediv').style.visibility = 'visible';
|
|
}
|
|
|
|
/*
|
|
* Hide waiting message
|
|
*/
|
|
function HideWaitingMessage() {
|
|
getElement('messagediv').style.visibility = 'hidden';
|
|
} |