bebeboutik/modules/graphvisifire/visifire/Visifire.js
Srv Bebeboutik 6c0978166c add modules
2016-01-04 12:49:26 +01:00

353 lines
11 KiB
JavaScript
Executable File

/*
Copyright (C) 2008 Webyog Softworks Private Limited
This file is a part of Visifire Charts.
Visifire is a free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
You should have received a copy of the GNU General Public License
along with Visifire Charts. If not, see <http://www.gnu.org/licenses/>.
If GPL is not suitable for your products or company, Webyog provides Visifire
under a flexible commercial license designed to meet your specific usage and
distribution requirements. If you have already obtained a commercial license
from Webyog, you can use this file under those license terms.
*/
if(!window.Visifire)
{
// Visifire class
window.Visifire = function(pXapPath, pId, pWidth, pHeight, pBackground)
{
this.id = null;
this.logLevel = 1; // Determines whether to log or not.
this.xapPath = "Visifire.xap"; // Default is taken as Visifire.xap in the same directory.
this.targetElement = null;
this.dataXml = null;
this.dataUri = null;
this.listeners = null;
this.elements = new Array("Chart", "DataPoint", "Title", "AxisX", "AxisY", "Legend");
this.events = new Array("MouseLeftButtonDown", "MouseLeftButtonUp", "MouseMove", "MouseEnter", "MouseLeave");
this.windowless = false;
this.width = null;
this.height = null;
this.background = null;
// pId not present
if(Number(pId))
{
if(pHeight)
this.background = pHeight;
pHeight = pWidth;
pWidth = pId;
}
else // pId present
{
this.id = pId;
if(pBackground)
this.background = pBackground;
}
if(pXapPath)
this.xapPath = pXapPath;
if(pWidth)
this.width = pWidth;
if(pHeight)
this.height = pHeight;
this._uThisObject = this;
this.index = ++Visifire._slCount;
}
window.Visifire._slCount = 0;
Visifire.prototype.setWindowlessState = function(pWindowless)
{
if(pWindowless != null)
{
this.windowless = Boolean(pWindowless);
}
}
Visifire.prototype._getSlControl = function ()
{
var _uThisObject = this;
if(_uThisObject.id != null)
{
var slControl = document.getElementById(_uThisObject.id);
return slControl;
}
return null;
}
Visifire.prototype.isLoaded = function()
{
var slControl = this._getSlControl();
try
{
if(slControl.Content.wrapper != null)
return true;
}
catch(ex)
{
return false;
}
}
Visifire.prototype.isDataLoaded = function()
{
var slControl = this._getSlControl();
return slControl.Content.wrapper.IsDataLoaded;
}
Visifire.prototype.setSize = function(pWidth,pHeight)
{
var slControl = this._getSlControl();
if(slControl != null)
{
slControl.width = pWidth;
slControl.height = pHeight;
slControl.Content.wrapper.Resize(pWidth,pHeight);
}
else
{
this.width = pWidth;
this.height = pHeight;
}
}
Visifire.prototype.setDataXml = function(pDataXml)
{
var slControl = this._getSlControl();
if(slControl != null && this.dataXml != null)
{
slControl.Content.wrapper.AddDataXML(pDataXml);
}
this.dataXml = pDataXml;
}
Visifire.prototype.setDataUri = function(pDataUri)
{
var slControl = this._getSlControl();
if(slControl != null && this.dataUri != null)
{
slControl.Content.wrapper.AddDataUri(pDataUri);
}
this.dataUri = pDataUri;
}
Visifire.prototype.setLogLevel = function(level)
{
if(level != null)
{
this.logLevel = level;
}
}
Visifire.prototype._isString = function()
{
if (typeof arguments[0] == 'string') return true;
if (typeof arguments[0] == 'object')
{
var criterion = arguments[0].constructor.toString().match(/string/i);
return (criterion != null);
}
return false;
}
Visifire.prototype._validateChartElement = function(pElement)
{
if(this.logLevel != 0)
{
for(var i = 0; i < this.elements.length; i++)
if(this.elements[i] == pElement)
return;
alert('Error occurred while attaching event.\nUnknown element "' + pElement + '".');
}
}
Visifire.prototype._validateEvent = function(pEvent)
{
if(this.logLevel != 0)
{
for(var i = 0; i < this.events.length; i++)
if(this.events[i] == pEvent)
return;
alert('Error occurred while attaching event.\nUnsupported event type "' + pEvent + '".');
}
}
Visifire.prototype.attachEvent = function(pElement, pEvent, pCallBack)
{
var _uThisObject = this;
_uThisObject._validateChartElement(pElement);
_uThisObject._validateEvent(pEvent);
if(pEvent && pElement && pCallBack)
{
if(_uThisObject.listeners == null)
_uThisObject.listeners = {};
if(_uThisObject.listeners[pEvent] == null)
_uThisObject.listeners[pEvent] = new Array();
if(!window["dispatchEvent" + _uThisObject.index])
window["dispatchEvent" + _uThisObject.index] = function(args)
{
if(_uThisObject.listeners[args.Event] != null)
{
var listener = _uThisObject.listeners[args.Event];
if(listener.length != 0)
{
for (var i = 0; i < listener.length; i++)
{
if ((listener[i].event == args.Event) && (listener[i].element == args.Element))
{
args.ControlId = _uThisObject.id;
if(_uThisObject._isString(listener[i].fire))
eval(listener[i].fire + "(args)");
else
listener[i].fire(args);
}
}
}
}
};
_uThisObject.listeners[pEvent].push({element: pElement, event: pEvent, fire: pCallBack});
}
}
Visifire.prototype._render = function(pTargetElement)
{
var _uThisObject = this;
var width;
var height;
_uThisObject.targerElement = (typeof(pTargetElement) == "string")?document.getElementById(pTargetElement):pTargetElement;
if(_uThisObject.width != null)
width = _uThisObject.width;
else if(_uThisObject.targerElement.offsetWidth != 0)
width = _uThisObject.targerElement.offsetWidth;
else
width = 500;
if(_uThisObject.height != null)
height = _uThisObject.height;
else if(_uThisObject.targerElement.offsetHeight != 0)
height = _uThisObject.targerElement.offsetHeight;
else
height = 300;
if(!_uThisObject.id)
{
_uThisObject.id = 'VisifireControl' + _uThisObject.index;
}
var html = '<object id="' + _uThisObject.id + '" data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="' + width + '" height="' + height + '">';
html += '<param name="source" value="' + _uThisObject.xapPath +'"/>'
+ '<param name="onLoad" value="slLoaded' + _uThisObject.index +'"/>'
+ '<param name="onResize" value="slResized' + _uThisObject.index +'"/>';
html += '<param name="initParams" value="';
html += "logLevel=" + _uThisObject.logLevel + ",";
if(_uThisObject.dataXml != null)
{
window["getDataXml"+_uThisObject.index] = function(sender, args)
{
var _uThisObj = _uThisObject;
return _uThisObj.dataXml;
};
html += 'dataXml=getDataXml'+ _uThisObject.index +',';
}
else if(_uThisObject.dataUri != null)
{
html += 'dataUri='+ _uThisObject.dataUri +',';
}
if(_uThisObject.listeners != null)
{
html += 'EventDispatcher=dispatchEvent' + _uThisObject.index + ',';
html += 'jsEvents=';
var events = _uThisObject.events;
for(var i=0; i< events.length; i++)
{
var listener = _uThisObject.listeners[events[i]];
if(listener != null)
{
for (var j = 0; j < listener.length; j++)
{
html += listener[j].element + ' ' + listener[j].event + ';';
}
}
}
html += ','
}
if(_uThisObject.background == null)
_uThisObject.background = "White";
html += 'width=' + width + ',' + 'height=' + height + '';
html += "\"/>";
html += '<param name="enableHtmlAccess" value="true" />'
+ '<param name="background" value="' + _uThisObject.background + '" />'
+ '<param name="windowless" value="' + this.windowless + '" />'
+ '<a href="http://go.microsoft.com/fwlink/?LinkID=124807" style="text-decoration: none;">'
+ '<img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none"/>'
+ '<br/>You need Microsoft Silverlight to view Visifire Charts.'
+ '<br/> You can install it by clicking on this link.'
+ '<br/>Please restart the browser after installation.'
+ '</a>'
+ '</object>';
this.targerElement.innerHTML = html;
}
Visifire.prototype._reRender = function(pSlControl)
{
pSlControl.Content.wrapper.ReRenderChart();
}
Visifire.prototype.render = function(pTargetElement)
{
var slControl = this._getSlControl();
if(slControl == null)
{
this._render(pTargetElement);
}
else
{
this._reRender(slControl);
}
}
}