mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@5282 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
104 lines
2.8 KiB
JavaScript
104 lines
2.8 KiB
JavaScript
/*
|
|
Copyright (c) 2004-2006, The Dojo Foundation
|
|
All Rights Reserved.
|
|
|
|
Licensed under the Academic Free License version 2.1 or above OR the
|
|
modified BSD license. For more information on Dojo licensing, see:
|
|
|
|
http://dojotoolkit.org/community/licensing.shtml
|
|
*/
|
|
|
|
dojo.provide("dojo.charting.Plot");
|
|
dojo.require("dojo.lang.common");
|
|
dojo.require("dojo.charting.Axis");
|
|
dojo.require("dojo.charting.Series");
|
|
|
|
dojo.charting.RenderPlotSeries = { Singly:"single", Grouped:"grouped" };
|
|
|
|
dojo.charting.Plot = function(
|
|
/* dojo.charting.Axis? */xaxis,
|
|
/* dojo.charting.Axis? */yaxis,
|
|
/* dojo.charting.Series[]? */series
|
|
){
|
|
// summary
|
|
// Creates a new instance of a Plot (X/Y Axis + n Series).
|
|
var id = "dojo-charting-plot-"+dojo.charting.Plot.count++;
|
|
this.getId=function(){ return id; };
|
|
this.setId=function(key){ id = key; };
|
|
this.axisX = null;
|
|
this.axisY = null;
|
|
this.series = [];
|
|
this.dataNode = null;
|
|
|
|
// for bar charts, pie charts and stacked charts, change to Grouped.
|
|
this.renderType = dojo.charting.RenderPlotSeries.Singly;
|
|
if(xaxis){
|
|
this.setAxis(xaxis,"x");
|
|
}
|
|
if(yaxis){
|
|
this.setAxis(yaxis,"y");
|
|
}
|
|
if(series){
|
|
for(var i=0; i<series.length; i++){ this.addSeries(series[i]); }
|
|
}
|
|
}
|
|
dojo.charting.Plot.count=0;
|
|
|
|
dojo.extend(dojo.charting.Plot, {
|
|
addSeries: function(
|
|
/* dojo.charting.Series || object */series,
|
|
/* function? */plotter
|
|
){
|
|
// summary
|
|
// Add a new Series to this plot. Can take the form of a Series, or an object
|
|
// of the form { series, plotter }
|
|
if(series.plotter){
|
|
this.series.push(series);
|
|
} else {
|
|
this.series.push({
|
|
data: series,
|
|
plotter: plotter || dojo.charting.Plotters["Default"]
|
|
});
|
|
}
|
|
},
|
|
setAxis: function(/* dojo.charting.Axis */axis, /* string */which){
|
|
// summary
|
|
// Set the axis on which plane.
|
|
if(which.toLowerCase()=="x"){ this.axisX = axis; }
|
|
else if(which.toLowerCase()=="y"){ this.axisY = axis; }
|
|
},
|
|
getRanges: function(){
|
|
// summary
|
|
// set the ranges on these axes.
|
|
var xmin, xmax, ymin, ymax;
|
|
xmin=ymin=Number.MAX_VALUE;
|
|
xmax=ymax=Number.MIN_VALUE;
|
|
for(var i=0; i<this.series.length; i++){
|
|
var values = this.series[i].data.evaluate(); // full data range.
|
|
for(var j=0; j<values.length; j++){
|
|
var comp=values[j];
|
|
xmin=Math.min(comp.x, xmin);
|
|
ymin=Math.min(comp.y, ymin);
|
|
xmax=Math.max(comp.x, xmax);
|
|
ymax=Math.max(comp.y, ymax);
|
|
}
|
|
}
|
|
return {
|
|
x:{ upper: xmax, lower:xmin },
|
|
y:{ upper: ymax, lower:ymin },
|
|
toString:function(){
|
|
return "[ x:"+xmax+" - "+xmin+", y:"+ymax+" - "+ymin+"]";
|
|
}
|
|
}; // object
|
|
},
|
|
destroy: function(){
|
|
// summary
|
|
// Clean out any existing DOM node references.
|
|
var node=this.dataNode;
|
|
while(node && node.childNodes && node.childNodes.length > 0){
|
|
node.removeChild(node.childNodes[0]);
|
|
}
|
|
this.dataNode=null;
|
|
}
|
|
});
|