svn commit: r509273 [8/50] - in /ofbiz/trunk/framework/images/webapp/images: ./ dojo/ dojo/src/ dojo/src/animation/ dojo/src/cal/ dojo/src/charting/ dojo/src/charting/svg/ dojo/src/charting/vml/ dojo/src/collections/ dojo/src/crypto/ dojo/src/data/ doj...

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r509273 [8/50] - in /ofbiz/trunk/framework/images/webapp/images: ./ dojo/ dojo/src/ dojo/src/animation/ dojo/src/cal/ dojo/src/charting/ dojo/src/charting/svg/ dojo/src/charting/vml/ dojo/src/collections/ dojo/src/crypto/ dojo/src/data/ doj...

jaz-3
Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/charting/svg/Plotters.js
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/charting/svg/Plotters.js?view=auto&rev=509273
==============================================================================
--- ofbiz/trunk/framework/images/webapp/images/dojo/src/charting/svg/Plotters.js (added)
+++ ofbiz/trunk/framework/images/webapp/images/dojo/src/charting/svg/Plotters.js Mon Feb 19 09:56:06 2007
@@ -0,0 +1,875 @@
+/*
+ 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.svg.Plotters");
+dojo.require("dojo.lang.common");
+
+if(dojo.render.svg.capable){
+ dojo.require("dojo.svg");
+
+ // TODO for 0.5: look at replacing manual plotting with dojo.gfx.
+
+ // Mixin the SVG-specific plotter object.
+ dojo.mixin(dojo.charting.Plotters, {
+ /*********************************************************
+ * Grouped plotters: need all series on a plot at once.
+ *********************************************************/
+ Bar: function(
+ /* dojo.charting.PlotArea */plotarea,
+ /* dojo.charting.Plot */plot,
+ /* object? */kwArgs,
+ /* function? */applyTo
+ ){
+ // summary
+ // Plots a set of grouped bars.
+ // Bindings: y
+ var area = plotarea.getArea();
+ var group = document.createElementNS(dojo.svg.xmlns.svg, "g");
+
+ // precompile the data
+ var n = plot.series.length; // how many series
+ var data = [];
+ for(var i=0; i<n; i++){
+ var tmp = plot.series[i].data.evaluate(kwArgs);
+ data.push(tmp);
+ }
+
+ // calculate the width of each bar.
+ var space = 8;
+ var nPoints = data[0].length;
+ var width = ((area.right-area.left)-(space*(nPoints-1)))/nPoints; // the width of each group.
+ var barWidth = width/n; // the width of each bar, no spaces.
+ var yOrigin = plot.axisY.getCoord(plot.axisX.origin, plotarea, plot);
+
+ for(var i=0; i<nPoints; i++){
+ // calculate offset
+ var xStart = area.left+(width*i)+(space*i);
+ for(var j=0; j<n; j++){
+ var value = data[j][i].y;
+ var yA = yOrigin;
+ var x = xStart + (barWidth*j);
+ var y = plot.axisY.getCoord(value, plotarea, plot);
+ var h = Math.abs(yA-y);
+ if(value < plot.axisX.origin){
+ yA = y;
+ y = yOrigin;
+ }
+
+ var bar=document.createElementNS(dojo.svg.xmlns.svg, "rect");
+ bar.setAttribute("fill", data[j][i].series.color);
+ bar.setAttribute("stroke-width", "0");
+ bar.setAttribute("x", x);
+ bar.setAttribute("y", y);
+ bar.setAttribute("width", barWidth);
+ bar.setAttribute("height", h);
+ bar.setAttribute("fill-opacity", "0.6");
+ if(applyTo){ applyTo(bar, data[j][i].src); }
+ group.appendChild(bar);
+ }
+ }
+ return group; // SVGGElement
+ },
+ HorizontalBar: function(
+ /* dojo.charting.PlotArea */plotarea,
+ /* dojo.charting.Plot */plot,
+ /* object? */kwArgs,
+ /* function? */applyTo
+ ){
+ // summary
+ // Plots data in a set of grouped bars horizontally.
+ // Bindings: y
+ var area = plotarea.getArea();
+ var group = document.createElementNS(dojo.svg.xmlns.svg, "g");
+
+ // precompile the data
+ var n = plot.series.length; // how many series
+ var data = [];
+ for(var i=0; i<n; i++){
+ var tmp = plot.series[i].data.evaluate(kwArgs);
+ data.push(tmp);
+ }
+
+ var space = 6;
+ var nPoints = data[0].length;
+ var h = ((area.bottom-area.top)-(space*(nPoints-1)))/nPoints;
+ var barH = h/n;
+ var xOrigin = plot.axisX.getCoord(0, plotarea, plot);
+
+ for(var i=0; i<nPoints; i++){
+ // calculate offset
+ var yStart = area.top+(h*i)+(space*i);
+ for(var j=0; j<n; j++){
+ var value = data[j][i].y;
+ var y = yStart + (barH*j);
+ var xA = xOrigin;
+ var x = plot.axisX.getCoord(value, plotarea, plot);
+ var w = Math.abs(x-xA);
+ if(value > 0){
+ x = xOrigin;
+ }
+
+ var bar=document.createElementNS(dojo.svg.xmlns.svg, "rect");
+ bar.setAttribute("fill", data[j][i].series.color);
+ bar.setAttribute("stroke-width", "0");
+ bar.setAttribute("x", xA);
+ bar.setAttribute("y", y);
+ bar.setAttribute("width", w);
+ bar.setAttribute("height", barH);
+ bar.setAttribute("fill-opacity", "0.6");
+ if(applyTo){ applyTo(bar, data[j][i].src); }
+ group.appendChild(bar);
+ }
+ }
+ return group; // SVGGElement
+ },
+ Gantt: function(
+ /* dojo.charting.PlotArea */plotarea,
+ /* dojo.charting.Plot */plot,
+ /* object? */kwArgs,
+ /* function? */applyTo
+ ){
+ // summary
+ // Plots a grouped set of Gantt bars
+ // Bindings: high/low
+ var area = plotarea.getArea();
+ var group = document.createElementNS(dojo.svg.xmlns.svg, "g");
+
+ // precompile the data
+ var n = plot.series.length; // how many series
+ var data = [];
+ for(var i=0; i<n; i++){
+ var tmp = plot.series[i].data.evaluate(kwArgs);
+ data.push(tmp);
+ }
+
+ var space = 2;
+ var nPoints = data[0].length;
+ var h = ((area.bottom-area.top)-(space*(nPoints-1)))/nPoints;
+ var barH = h/n;
+ for(var i=0; i<nPoints; i++){
+ // calculate offset
+ var yStart = area.top+(h*i)+(space*i);
+ for(var j=0; j<n; j++){
+ var high = data[j][i].high;
+ var low = data[j][i].low;
+ if(low > high){
+ var t = high;
+ high = low;
+ low = t;
+ }
+ var x = plot.axisX.getCoord(low, plotarea, plot);
+ var w = plot.axisX.getCoord(high, plotarea, plot) - x;
+ var y = yStart + (barH*j);
+
+ var bar=document.createElementNS(dojo.svg.xmlns.svg, "rect");
+ bar.setAttribute("fill", data[j][i].series.color);
+ bar.setAttribute("stroke-width", "0");
+ bar.setAttribute("x", x);
+ bar.setAttribute("y", y);
+ bar.setAttribute("width", w);
+ bar.setAttribute("height", barH);
+ bar.setAttribute("fill-opacity", "0.6");
+ if(applyTo){ applyTo(bar, data[j][i].src); }
+ group.appendChild(bar);
+ }
+ }
+ return group; // SVGGElement
+ },
+ StackedArea: function(
+ /* dojo.charting.PlotArea */plotarea,
+ /* dojo.charting.Plot */plot,
+ /* object? */kwArgs,
+ /* function? */applyTo
+ ){
+ // summary
+ // Plots a set of stacked areas.
+ // Bindings: x/y
+ var area = plotarea.getArea();
+ var group = document.createElementNS(dojo.svg.xmlns.svg, "g");
+
+ // precompile the data
+ var n = plot.series.length; // how many series
+ var data = [];
+ var totals = [];
+
+ // we're assuming that all series for this plot has the name x assignment for now.
+ for(var i=0; i<n; i++){
+ var tmp = plot.series[i].data.evaluate(kwArgs);
+ // run through and add current totals
+ for(var j=0; j<tmp.length; j++){
+ if(i==0){ totals.push(tmp[j].y); }
+ else { totals[j] += tmp[j].y; }
+ tmp[j].y = totals[j];
+ }
+ data.push(tmp);
+ }
+
+ for(var i=n-1; i>=0; i--){
+ var path = document.createElementNS(dojo.svg.xmlns.svg, "path");
+ path.setAttribute("fill", data[i][0].series.color);
+ path.setAttribute("fill-opacity", "0.4");
+ path.setAttribute("stroke", data[i][0].series.color);
+ path.setAttribute("stroke-width" , "1");
+ path.setAttribute("stroke-opacity", "0.85");
+
+ var cmd = [];
+ var r=3;
+ for(var j=0; j<data[i].length; j++){
+ var values = data[i];
+ var x = plot.axisX.getCoord(values[j].x, plotarea, plot);
+ var y = plot.axisY.getCoord(values[j].y, plotarea, plot);
+
+ if(j==0){ cmd.push("M"); }
+ else { cmd.push("L"); }
+ cmd.push(x+","+y);
+
+ // points on the line
+ var c=document.createElementNS(dojo.svg.xmlns.svg, "circle");
+ c.setAttribute("cx",x);
+ c.setAttribute("cy",y);
+ c.setAttribute("r","3");
+ c.setAttribute("fill", values[j].series.color);
+ c.setAttribute("fill-opacity", "0.6");
+ c.setAttribute("stroke-width", "1");
+ c.setAttribute("stroke-opacity", "0.85");
+ group.appendChild(c);
+ if(applyTo){ applyTo(c, data[i].src); }
+ }
+
+ // now run the path backwards from the previous series.
+ if(i == 0){
+ cmd.push("L");
+ cmd.push(x + "," + plot.axisY.getCoord(plot.axisX.origin, plotarea, plot));
+ cmd.push("L");
+ cmd.push(plot.axisX.getCoord(data[0][0].x, plotarea, plot) + "," +  plot.axisY.getCoord(plot.axisX.origin, plotarea, plot));
+ cmd.push("Z");
+ } else {
+ var values = data[i-1];
+ cmd.push("L");
+ cmd.push(x + "," + Math.round(plot.axisY.getCoord(values[values.length-1].y, plotarea, plot)));
+ for(var j=values.length-2; j>=0; j--){
+ var x = plot.axisX.getCoord(values[j].x, plotarea, plot);
+ var y = plot.axisY.getCoord(values[j].y, plotarea, plot);
+ cmd.push("L");
+ cmd.push(x+","+y);
+ }
+ }
+ path.setAttribute("d", cmd.join(" ")+ " Z");
+ group.appendChild(path);
+ }
+ return group; // SVGGElement
+ },
+ StackedCurvedArea: function(
+ /* dojo.charting.PlotArea */plotarea,
+ /* dojo.charting.Plot */plot,
+ /* object? */kwArgs,
+ /* function? */applyTo
+ ){
+ // summary
+ // Plots a set of stacked areas, using a tensioning factor to soften points.
+ // Bindings: x/y
+ var tension = 3;
+ var area = plotarea.getArea();
+ var group = document.createElementNS(dojo.svg.xmlns.svg, "g");
+
+ // precompile the data
+ var n = plot.series.length; // how many series
+ var data = [];
+ var totals = [];
+
+ // we're assuming that all series for this plot has the name x assignment for now.
+ for(var i=0; i<n; i++){
+ var tmp = plot.series[i].data.evaluate(kwArgs);
+ // run through and add current totals
+ for(var j=0; j<tmp.length; j++){
+ if(i==0){ totals.push(tmp[j].y); }
+ else { totals[j] += tmp[j].y; }
+ tmp[j].y = totals[j];
+ }
+ data.push(tmp);
+ }
+
+ for(var i=n-1; i>=0; i--){
+ var path = document.createElementNS(dojo.svg.xmlns.svg, "path");
+ path.setAttribute("fill", data[i][0].series.color);
+ path.setAttribute("fill-opacity", "0.4");
+ path.setAttribute("stroke", data[i][0].series.color);
+ path.setAttribute("stroke-width" , "1");
+ path.setAttribute("stroke-opacity", "0.85");
+
+ var cmd = [];
+ var r=3;
+ for(var j=0; j<data[i].length; j++){
+ var values = data[i];
+ var x = plot.axisX.getCoord(values[j].x, plotarea, plot);
+ var y = plot.axisY.getCoord(values[j].y, plotarea, plot);
+ var dx = area.left + 1;
+ var dy = area.bottom;
+ if(j>0){
+ dx = x - plot.axisX.getCoord(values[j-1].x, plotarea, plot);
+ dy = plot.axisY.getCoord(values[j-1].y, plotarea, plot);
+ }
+
+ if(j==0){ cmd.push("M"); }
+ else {
+ cmd.push("C");
+ var cx = x-(tension-1) * (dx/tension);
+ cmd.push(cx + "," + dy);
+ cx = x - (dx/tension);
+ cmd.push(cx + "," + y);
+ }
+ cmd.push(x+","+y);
+
+ // points on the line
+ var c=document.createElementNS(dojo.svg.xmlns.svg, "circle");
+ c.setAttribute("cx",x);
+ c.setAttribute("cy",y);
+ c.setAttribute("r","3");
+ c.setAttribute("fill", values[j].series.color);
+ c.setAttribute("fill-opacity", "0.6");
+ c.setAttribute("stroke-width", "1");
+ c.setAttribute("stroke-opacity", "0.85");
+ group.appendChild(c);
+ if(applyTo){ applyTo(c, data[i].src); }
+ }
+
+ // now run the path backwards from the previous series.
+ if(i == 0){
+ cmd.push("L");
+ cmd.push(x + "," + plot.axisY.getCoord(plot.axisX.origin, plotarea, plot));
+ cmd.push("L");
+ cmd.push(plot.axisX.getCoord(data[0][0].x, plotarea, plot) + "," +  plot.axisY.getCoord(plot.axisX.origin, plotarea, plot));
+ cmd.push("Z");
+ } else {
+ var values = data[i-1];
+ cmd.push("L");
+ cmd.push(x + "," + Math.round(plot.axisY.getCoord(values[values.length-1].y, plotarea, plot)));
+ for(var j=values.length-2; j>=0; j--){
+ var x = plot.axisX.getCoord(values[j].x, plotarea, plot);
+ var y = plot.axisY.getCoord(values[j].y, plotarea, plot);
+ var dx = x - plot.axisX.getCoord(values[j+1].x, plotarea, plot);
+ var dy = plot.axisY.getCoord(values[j+1].y, plotarea, plot);
+
+ cmd.push("C");
+ var cx = x-(tension-1) * (dx/tension);
+ cmd.push(cx + "," + dy);
+ cx = x - (dx/tension);
+ cmd.push(cx + "," + y);
+ cmd.push(x+","+y);
+ }
+ }
+ path.setAttribute("d", cmd.join(" ")+ " Z");
+ group.appendChild(path);
+ }
+ return group; // SVGGElement
+ },
+
+ /*********************************************************
+ * Single plotters: one series at a time.
+ *********************************************************/
+ DataBar: function(
+ /* array */data,
+ /* dojo.charting.PlotArea */plotarea,
+ /* dojo.charting.Plot */plot,
+ /* function? */applyTo
+ ){
+ // summary
+ // Plots a set of bars in relation to y==0.
+ // Bindings: x/y
+ var area = plotarea.getArea();
+ var group = document.createElementNS(dojo.svg.xmlns.svg, "g");
+
+ var n = data.length;
+ var w = (area.right-area.left)/(plot.axisX.range.upper - plot.axisX.range.lower); // the width of each group.
+ var yOrigin = plot.axisY.getCoord(plot.axisX.origin, plotarea, plot);
+
+ for(var i=0; i<n; i++){
+ // calculate offset
+ var value = data[i].y;
+ var yA = yOrigin;
+ var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w/2);
+ var y = plot.axisY.getCoord(value, plotarea, plot);
+ var h = Math.abs(yA-y);
+ if(value < plot.axisX.origin){
+ yA = y;
+ y = yOrigin;
+ }
+ var bar=document.createElementNS(dojo.svg.xmlns.svg, "rect");
+ bar.setAttribute("fill", data[i].series.color);
+ bar.setAttribute("stroke-width", "0");
+ bar.setAttribute("x", x);
+ bar.setAttribute("y", y);
+ bar.setAttribute("width", w);
+ bar.setAttribute("height", h);
+ bar.setAttribute("fill-opacity", "0.6");
+ if(applyTo){ applyTo(bar, data[i].src); }
+ group.appendChild(bar);
+ }
+ return group; // SVGGElement
+ },
+ Line: function(
+ /* array */data,
+ /* dojo.charting.PlotArea */plotarea,
+ /* dojo.charting.Plot */plot,
+ /* function? */applyTo
+ ){
+ // summary
+ // Plots the series as a line.
+ // Bindings: x/y
+ var area = plotarea.getArea();
+ var line = document.createElementNS(dojo.svg.xmlns.svg, "g");
+ var path = document.createElementNS(dojo.svg.xmlns.svg, "path");
+ line.appendChild(path);
+
+ path.setAttribute("fill", "none");
+ path.setAttribute("stroke", data[0].series.color);
+ path.setAttribute("stroke-width" , "2");
+ path.setAttribute("stroke-opacity", "0.85");
+ if(data[0].series.label != null){
+ path.setAttribute("title", data[0].series.label);
+ }
+
+ var cmd=[];
+ for(var i=0; i<data.length; i++){
+ var x = plot.axisX.getCoord(data[i].x, plotarea, plot);
+ var y = plot.axisY.getCoord(data[i].y, plotarea, plot);
+ if(i==0){ cmd.push("M"); }
+ else { cmd.push("L"); }
+ cmd.push(x+","+y);
+
+ // points on the line
+ var c=document.createElementNS(dojo.svg.xmlns.svg, "circle");
+ c.setAttribute("cx",x);
+ c.setAttribute("cy",y);
+ c.setAttribute("r","3");
+ c.setAttribute("fill", data[i].series.color);
+ c.setAttribute("fill-opacity", "0.6");
+ c.setAttribute("stroke-width", "1");
+ c.setAttribute("stroke-opacity", "0.85");
+ line.appendChild(c);
+ if(applyTo){ applyTo(c, data[i].src); }
+ }
+ path.setAttribute("d", cmd.join(" "));
+ return line; // SVGGElement
+ },
+ CurvedLine: function(
+ /* array */data,
+ /* dojo.charting.PlotArea */plotarea,
+ /* dojo.charting.Plot */plot,
+ /* function? */applyTo
+ ){
+ // summary
+ // Plots the series as a line with a tension factor for softening.
+ // Bindings: x/y
+ var tension = 3;
+ var area = plotarea.getArea();
+ var line = document.createElementNS(dojo.svg.xmlns.svg, "g");
+ var path = document.createElementNS(dojo.svg.xmlns.svg, "path");
+ line.appendChild(path);
+
+ path.setAttribute("fill", "none");
+ path.setAttribute("stroke", data[0].series.color);
+ path.setAttribute("stroke-width" , "2");
+ path.setAttribute("stroke-opacity", "0.85");
+ if(data[0].series.label != null){
+ path.setAttribute("title", data[0].series.label);
+ }
+
+ var cmd=[];
+ for(var i=0; i<data.length; i++){
+ var x = plot.axisX.getCoord(data[i].x, plotarea, plot);
+ var y = plot.axisY.getCoord(data[i].y, plotarea, plot);
+ var dx = area.left + 1;
+ var dy = area.bottom;
+ if(i>0){
+ dx = x - plot.axisX.getCoord(data[i-1].x, plotarea, plot);
+ dy = plot.axisY.getCoord(data[i-1].y, plotarea, plot);
+ }
+
+ if(i==0){ cmd.push("M"); }
+ else {
+ cmd.push("C");
+ var cx = x-(tension-1) * (dx/tension);
+ cmd.push(cx + "," + dy);
+ cx = x - (dx/tension);
+ cmd.push(cx + "," + y);
+ }
+ cmd.push(x+","+y);
+
+ // points on the line
+ var c=document.createElementNS(dojo.svg.xmlns.svg, "circle");
+ c.setAttribute("cx",x);
+ c.setAttribute("cy",y);
+ c.setAttribute("r","3");
+ c.setAttribute("fill", data[i].series.color);
+ c.setAttribute("fill-opacity", "0.6");
+ c.setAttribute("stroke-width", "1");
+ c.setAttribute("stroke-opacity", "0.85");
+ line.appendChild(c);
+ if(applyTo){ applyTo(c, data[i].src); }
+ }
+ path.setAttribute("d", cmd.join(" "));
+ return line; // SVGGElement
+ },
+ Area: function(
+ /* array */data,
+ /* dojo.charting.PlotArea */plotarea,
+ /* dojo.charting.Plot */plot,
+ /* function? */applyTo
+ ){
+ // summary
+ // Plots the series as an area.
+ // Bindings: x/y
+ var area = plotarea.getArea();
+ var line = document.createElementNS(dojo.svg.xmlns.svg, "g");
+ var path = document.createElementNS(dojo.svg.xmlns.svg, "path");
+ line.appendChild(path);
+
+ path.setAttribute("fill", data[0].series.color);
+ path.setAttribute("fill-opacity", "0.4");
+ path.setAttribute("stroke", data[0].series.color);
+ path.setAttribute("stroke-width" , "1");
+ path.setAttribute("stroke-opacity", "0.85");
+ if(data[0].series.label != null){
+ path.setAttribute("title", data[0].series.label);
+ }
+
+ var cmd=[];
+ for(var i=0; i<data.length; i++){
+ var x = plot.axisX.getCoord(data[i].x, plotarea, plot);
+ var y = plot.axisY.getCoord(data[i].y, plotarea, plot);
+ if(i==0){ cmd.push("M"); }
+ else { cmd.push("L"); }
+ cmd.push(x+","+y);
+
+ // points on the line
+ var c=document.createElementNS(dojo.svg.xmlns.svg, "circle");
+ c.setAttribute("cx",x);
+ c.setAttribute("cy",y);
+ c.setAttribute("r","3");
+ c.setAttribute("fill", data[i].series.color);
+ c.setAttribute("fill-opacity", "0.6");
+ c.setAttribute("stroke-width", "1");
+ c.setAttribute("stroke-opacity", "0.85");
+ line.appendChild(c);
+ if(applyTo){ applyTo(c, data[i].src); }
+ }
+ // finish it off
+ cmd.push("L");
+ cmd.push(x + "," + plot.axisY.getCoord(plot.axisX.origin, plotarea, plot));
+ cmd.push("L");
+ cmd.push(plot.axisX.getCoord(data[0].x, plotarea, plot) + "," +  plot.axisY.getCoord(plot.axisX.origin, plotarea, plot));
+ cmd.push("Z");
+ path.setAttribute("d", cmd.join(" "));
+ return line; // SVGGElement
+ },
+ CurvedArea: function(
+ /* array */data,
+ /* dojo.charting.PlotArea */plotarea,
+ /* dojo.charting.Plot */plot,
+ /* function? */applyTo
+ ){
+ // summary
+ // Plots the series as an area with a tension for softening.
+ // Bindings: x/y
+ var tension = 3;
+ var area = plotarea.getArea();
+ var line = document.createElementNS(dojo.svg.xmlns.svg, "g");
+ var path = document.createElementNS(dojo.svg.xmlns.svg, "path");
+ line.appendChild(path);
+
+ path.setAttribute("fill", data[0].series.color);
+ path.setAttribute("fill-opacity", "0.4");
+ path.setAttribute("stroke", data[0].series.color);
+ path.setAttribute("stroke-width" , "1");
+ path.setAttribute("stroke-opacity", "0.85");
+ if(data[0].series.label != null){
+ path.setAttribute("title", data[0].series.label);
+ }
+
+ var cmd=[];
+ for(var i=0; i<data.length; i++){
+ var x = plot.axisX.getCoord(data[i].x, plotarea, plot);
+ var y = plot.axisY.getCoord(data[i].y, plotarea, plot);
+ var dx = area.left + 1;
+ var dy = area.bottom;
+ if(i>0){
+ dx = x - plot.axisX.getCoord(data[i-1].x, plotarea, plot);
+ dy = plot.axisY.getCoord(data[i-1].y, plotarea, plot);
+ }
+
+ if(i==0){ cmd.push("M"); }
+ else {
+ cmd.push("C");
+ var cx = x-(tension-1) * (dx/tension);
+ cmd.push(cx + "," + dy);
+ cx = x - (dx/tension);
+ cmd.push(cx + "," + y);
+ }
+ cmd.push(x+","+y);
+
+ // points on the line
+ var c=document.createElementNS(dojo.svg.xmlns.svg, "circle");
+ c.setAttribute("cx",x);
+ c.setAttribute("cy",y);
+ c.setAttribute("r","3");
+ c.setAttribute("fill", data[i].series.color);
+ c.setAttribute("fill-opacity", "0.6");
+ c.setAttribute("stroke-width", "1");
+ c.setAttribute("stroke-opacity", "0.85");
+ line.appendChild(c);
+ if(applyTo){ applyTo(c, data[i].src); }
+ }
+ // finish it off
+ cmd.push("L");
+ cmd.push(x + "," + plot.axisY.getCoord(plot.axisX.origin, plotarea, plot));
+ cmd.push("L");
+ cmd.push(plot.axisX.getCoord(data[0].x, plotarea, plot) + "," +  plot.axisY.getCoord(plot.axisX.origin, plotarea, plot));
+ cmd.push("Z");
+ path.setAttribute("d", cmd.join(" "));
+ return line; // SVGGElement
+ },
+ HighLow: function(
+ /* array */data,
+ /* dojo.charting.PlotArea */plotarea,
+ /* dojo.charting.Plot */plot,
+ /* function? */applyTo
+ ){
+ // summary
+ // Plots the series as a set of high/low bars.
+ // Bindings: x/high/low
+ var area = plotarea.getArea();
+ var group = document.createElementNS(dojo.svg.xmlns.svg, "g");
+
+ var n = data.length;
+ var part = ((area.right-area.left)/(plot.axisX.range.upper - plot.axisX.range.lower))/4;
+ var w = part*2;
+
+ for(var i=0; i<n; i++){
+ var high = data[i].high;
+ var low = data[i].low;
+ if(low > high){
+ var t = low;
+ low = high;
+ high = t;
+ }
+
+ var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w/2);
+ var y = plot.axisY.getCoord(high, plotarea, plot);
+ var h = plot.axisY.getCoord(low, plotarea, plot)-y;
+
+ // high + low
+ var bar=document.createElementNS(dojo.svg.xmlns.svg, "rect");
+ bar.setAttribute("fill", data[i].series.color);
+ bar.setAttribute("stroke-width", "0");
+ bar.setAttribute("x", x);
+ bar.setAttribute("y", y);
+ bar.setAttribute("width", w);
+ bar.setAttribute("height", h);
+ bar.setAttribute("fill-opacity", "0.6");
+ if(applyTo){ applyTo(bar, data[i].src); }
+ group.appendChild(bar);
+ }
+ return group; // SVGGElement
+ },
+ HighLowClose: function(
+ /* array */data,
+ /* dojo.charting.PlotArea */plotarea,
+ /* dojo.charting.Plot */plot,
+ /* function? */applyTo
+ ){
+ // summary
+ // Plots the series as a set of high/low bars with a close indicator.
+ // Bindings: x/high/low/close
+ var area = plotarea.getArea();
+ var group = document.createElementNS(dojo.svg.xmlns.svg, "g");
+
+ var n = data.length;
+ var part = ((area.right-area.left)/(plot.axisX.range.upper - plot.axisX.range.lower))/4;
+ var w = part*2;
+
+ for(var i=0; i<n; i++){
+ var high = data[i].high;
+ var low = data[i].low;
+ if(low > high){
+ var t = low;
+ low = high;
+ high = t;
+ }
+ var c = data[i].close;
+
+ var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w/2);
+ var y = plot.axisY.getCoord(high, plotarea, plot);
+ var h = plot.axisY.getCoord(low, plotarea, plot)-y;
+ var close = plot.axisY.getCoord(c, plotarea, plot);
+
+ var g = document.createElementNS(dojo.svg.xmlns.svg, "g");
+
+ // high + low
+ var bar=document.createElementNS(dojo.svg.xmlns.svg, "rect");
+ bar.setAttribute("fill", data[i].series.color);
+ bar.setAttribute("stroke-width", "0");
+ bar.setAttribute("x", x);
+ bar.setAttribute("y", y);
+ bar.setAttribute("width", w);
+ bar.setAttribute("height", h);
+ bar.setAttribute("fill-opacity", "0.6");
+ g.appendChild(bar);
+
+ // close
+ var line=document.createElementNS(dojo.svg.xmlns.svg, "line");
+ line.setAttribute("x1", x);
+ line.setAttribute("x2", x+w+(part*2));
+ line.setAttribute("y1", close);
+ line.setAttribute("y2", close);
+ line.setAttribute("style", "stroke:"+data[i].series.color+";stroke-width:1px;stroke-opacity:0.6;");
+ g.appendChild(line);
+
+ if(applyTo){ applyTo(g, data[i].src); }
+ group.appendChild(g);
+ }
+ return group; // SVGGElement
+ },
+ HighLowOpenClose: function(
+ /* array */data,
+ /* dojo.charting.PlotArea */plotarea,
+ /* dojo.charting.Plot */plot,
+ /* function? */applyTo
+ ){
+ // summary
+ // Plots the series as a set of high/low bars with open and close indicators.
+ // Bindings: x/high/low/open/close
+ var area = plotarea.getArea();
+ var group = document.createElementNS(dojo.svg.xmlns.svg, "g");
+
+ var n = data.length;
+ var part = ((area.right-area.left)/(plot.axisX.range.upper - plot.axisX.range.lower))/4;
+ var w = part*2;
+
+ for(var i=0; i<n; i++){
+ var high = data[i].high;
+ var low = data[i].low;
+ if(low > high){
+ var t = low;
+ low = high;
+ high = t;
+ }
+ var o = data[i].open;
+ var c = data[i].close;
+
+ var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w/2);
+ var y = plot.axisY.getCoord(high, plotarea, plot);
+ var h = plot.axisY.getCoord(low, plotarea, plot)-y;
+ var open = plot.axisY.getCoord(o, plotarea, plot);
+ var close = plot.axisY.getCoord(c, plotarea, plot);
+
+ var g = document.createElementNS(dojo.svg.xmlns.svg, "g");
+
+ // high + low
+ var bar=document.createElementNS(dojo.svg.xmlns.svg, "rect");
+ bar.setAttribute("fill", data[i].series.color);
+ bar.setAttribute("stroke-width", "0");
+ bar.setAttribute("x", x);
+ bar.setAttribute("y", y);
+ bar.setAttribute("width", w);
+ bar.setAttribute("height", h);
+ bar.setAttribute("fill-opacity", "0.6");
+ g.appendChild(bar);
+
+ // open
+ var line=document.createElementNS(dojo.svg.xmlns.svg, "line");
+ line.setAttribute("x1", x-(part*2));
+ line.setAttribute("x2", x+w);
+ line.setAttribute("y1", open);
+ line.setAttribute("y2", open);
+ line.setAttribute("style", "stroke:"+data[i].series.color+";stroke-width:1px;stroke-opacity:0.6;");
+ g.appendChild(line);
+
+ // close
+ var line=document.createElementNS(dojo.svg.xmlns.svg, "line");
+ line.setAttribute("x1", x);
+ line.setAttribute("x2", x+w+(part*2));
+ line.setAttribute("y1", close);
+ line.setAttribute("y2", close);
+ line.setAttribute("style", "stroke:"+data[i].series.color+";stroke-width:1px;stroke-opacity:0.6;");
+ g.appendChild(line);
+
+ if(applyTo){ applyTo(g, data[i].src); }
+ group.appendChild(g);
+ }
+ return group; // SVGGElement
+ },
+ Scatter: function(
+ /* array */data,
+ /* dojo.charting.PlotArea */plotarea,
+ /* dojo.charting.Plot */plot,
+ /* function? */applyTo
+ ){
+ // summary
+ // Plots the series as a set of points.
+ // Bindings: x/y
+ var r=7;
+ var group = document.createElementNS(dojo.svg.xmlns.svg, "g");
+ for (var i=0; i<data.length; i++){
+ var x = plot.axisX.getCoord(data[i].x, plotarea, plot);
+ var y = plot.axisY.getCoord(data[i].y, plotarea, plot);
+ var point = document.createElementNS(dojo.svg.xmlns.svg, "path");
+ point.setAttribute("fill", data[i].series.color);
+ point.setAttribute("stroke-width", "0");
+ point.setAttribute("d",
+ "M " + x + "," + (y-r) + " " +
+ "Q " + x + "," + y + " " + (x+r) + "," + y + " " +
+ "Q " + x + "," + y + " " + x + "," + (y+r) + " " +
+ "Q " + x + "," + y + " " + (x-r) + "," + y + " " +
+ "Q " + x + "," + y + " " + x + "," + (y-r) + " " +
+ "Z"
+ );
+ if(applyTo){ applyTo(point, data[i].src); }
+ group.appendChild(point);
+ }
+ return group; // SVGGElement
+ },
+ Bubble: function(
+ /* array */data,
+ /* dojo.charting.PlotArea */plotarea,
+ /* dojo.charting.Plot */plot,
+ /* function? */applyTo
+ ){
+ // summary
+ // Plots the series as a set of points with a size factor.
+ // Bindings: x/y/size
+ var group = document.createElementNS(dojo.svg.xmlns.svg, "g");
+ var sizeFactor=1;
+ for (var i=0; i<data.length; i++){
+ var x = plot.axisX.getCoord(data[i].x, plotarea, plot);
+ var y = plot.axisY.getCoord(data[i].y, plotarea, plot);
+ if(i==0){
+ // figure out the size factor, start with the axis with the greater range.
+ var raw = data[i].size;
+ var dy = plot.axisY.getCoord(data[i].y + raw, plotarea, plot)-y;
+ sizeFactor = dy/raw;
+ }
+ if(sizeFactor<1) { sizeFactor = 1; }
+ var point = document.createElementNS(dojo.svg.xmlns.svg, "circle");
+ point.setAttribute("fill", data[i].series.color);
+ point.setAttribute("fill-opacity", "0.8");
+ point.setAttribute("stroke", data[i].series.color);
+ point.setAttribute("stroke-width", "1");
+ point.setAttribute("cx",x);
+ point.setAttribute("cy",y);
+ point.setAttribute("r", (data[i].size/2)*sizeFactor);
+ if(applyTo){ applyTo(point, data[i].src); }
+ group.appendChild(point);
+ }
+ return group; // SVGGElement
+ }
+ });
+ dojo.charting.Plotters["Default"] = dojo.charting.Plotters.Line;
+}

Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/charting/svg/Plotters.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/charting/svg/Plotters.js
------------------------------------------------------------------------------
    svn:keywords = "Date Rev Author URL Id"

Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/charting/svg/Plotters.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/charting/vml/Axis.js
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/charting/vml/Axis.js?view=auto&rev=509273
==============================================================================
--- ofbiz/trunk/framework/images/webapp/images/dojo/src/charting/vml/Axis.js (added)
+++ ofbiz/trunk/framework/images/webapp/images/dojo/src/charting/vml/Axis.js Mon Feb 19 09:56:06 2007
@@ -0,0 +1,272 @@
+/*
+ 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.vml.Axis");
+dojo.require("dojo.lang.common");
+
+if(dojo.render.vml.capable){
+ dojo.extend(dojo.charting.Axis, {
+ renderLines: function(
+ /* dojo.charting.PlotArea */plotArea,
+ /* dojo.charting.Plot */plot,
+ /* string */plane
+ ){
+ // summary
+ // Renders any reference lines for this axis.
+ if(this.nodes.lines){
+ while(this.nodes.lines.childNodes.length > 0){
+ this.nodes.lines.removeChild(this.nodes.lines.childNodes[0]);
+ }
+ if(this.nodes.lines.parentNode){
+ this.nodes.lines.parentNode.removeChild(this.nodes.lines);
+ this.nodes.lines = null;
+ }
+ }
+
+ var area = plotArea.getArea();
+ var g = this.nodes.lines = document.createElement("div");
+ g.setAttribute("id", this.getId()+"-lines");
+ for(var i=0; i<this._labels.length; i++){
+ if (this._labels[i].value == this.origin){ continue; }
+
+ var v = this.getCoord(this._labels[i].value, plotArea, plot);
+ var l=document.createElement("v:line");
+ var str=document.createElement("v:stroke");
+ str.dashstyle="dot";
+ l.appendChild(str);
+ l.setAttribute("strokecolor", "#666");
+ l.setAttribute("strokeweight", "1px");
+ var s=l.style;
+ s.position="absolute";
+ s.top="0px";
+ s.left="0px";
+ s.antialias="false";
+ if(plane == "x"){
+ l.setAttribute("from", v+"px,"+area.top+"px");
+ l.setAttribute("to", v+"px,"+area.bottom+"px");
+ }
+ else if (plane == "y"){
+ l.setAttribute("from", area.left+"px,"+v+"px");
+ l.setAttribute("to", area.right+"px,"+v+"px");
+ }
+ g.appendChild(l);
+ }
+ return g; // HTMLDivElement
+ },
+ renderTicks: function(
+ /* dojo.charting.PlotArea */plotArea,
+ /* dojo.charting.Plot */plot,
+ /* string */plane,
+ /* float */coord
+ ){
+ // summary
+ // Renders any tick lines for this axis.
+ if(this.nodes.ticks){
+ while(this.nodes.ticks.childNodes.length > 0){
+ this.nodes.ticks.removeChild(this.nodes.ticks.childNodes[0]);
+ }
+ if(this.nodes.ticks.parentNode){
+ this.nodes.ticks.parentNode.removeChild(this.nodes.ticks);
+ this.nodes.ticks = null;
+ }
+ }
+
+ var g = this.nodes.ticks = document.createElement("div");
+ g.setAttribute("id", this.getId()+"-ticks");
+ for(var i=0; i<this._labels.length; i++){
+ var v = this.getCoord(this._labels[i].value, plotArea, plot);
+
+ var l=document.createElement("v:line");
+ l.setAttribute("strokecolor", "#000");
+ l.setAttribute("strokeweight", "1px");
+ var s=l.style;
+ s.position="absolute";
+ s.top="0px";
+ s.left="0px";
+ s.antialias="false";
+ if(plane == "x"){
+ l.setAttribute("from", v+"px,"+coord+"px");
+ l.setAttribute("to", v+"px,"+(coord+3)+"px");
+ }
+ else if (plane == "y"){
+ l.setAttribute("from", (coord-2)+"px,"+v+"px");
+ l.setAttribute("to", (coord+2)+"px,"+v+"px");
+ }
+ g.appendChild(l);
+ }
+ return g; // HTMLDivElement
+ },
+ renderLabels: function(
+ /* dojo.charting.PlotArea */plotArea,
+ /* dojo.charting.Plot */plot,
+ /* string */plane,
+ /* float */coord,
+ /* int */textSize,
+ /* string */anchor
+ ){
+ // summary
+ // Render all labels for this axis.
+ function createLabel(label, x, y, textSize, anchor){
+ var text = document.createElement("div");
+ var s=text.style;
+ text.innerHTML=label;
+ s.fontSize=textSize+"px";
+ s.fontFamily="sans-serif";
+ s.position="absolute";
+ s.top = y+"px";
+ if(anchor == "center"){
+ s.left = x + "px";
+ s.textAlign="center";
+ } else if (anchor == "left"){
+ s.left = x + "px";
+ s.textAlign="left";
+ } else if (anchor == "right"){
+ s.right = x + "px";
+ s.textAlign="right";
+ }
+ return text;
+ };
+
+ // wipe if needed
+ if(this.nodes.labels){
+ while(this.nodes.labels.childNodes.length > 0){
+ this.nodes.labels.removeChild(this.nodes.labels.childNodes[0]);
+ }
+ if(this.nodes.labels.parentNode){
+ this.nodes.labels.parentNode.removeChild(this.nodes.labels);
+ this.nodes.labels = null;
+ }
+ }
+ var g = this.nodes.labels = document.createElement("div");
+ g.setAttribute("id", this.getId()+"-labels");
+
+ for(var i=0; i<this._labels.length; i++){
+ var v = this.getCoord(this._labels[i].value, plotArea, plot);
+ if(plane == "x"){
+ // ugly hack but it works.
+ var node=createLabel(this._labels[i].label, v, coord, textSize, anchor);
+ document.body.appendChild(node);
+ node.style.left = v-(node.offsetWidth/2)+"px";
+ g.appendChild(node);
+ }
+ else if (plane == "y"){
+ var node = createLabel(this._labels[i].label, coord, v, textSize, anchor);
+ document.body.appendChild(node);
+ node.style.top = v-(node.offsetHeight/2)+"px";
+ g.appendChild(node);
+ }
+ }
+ return g; // HTMLDivElement
+ },
+ render: function(
+ /* dojo.charting.PlotArea */plotArea,
+ /* dojo.charting.Plot */plot,
+ /* dojo.charting.Axis */drawAgainst,
+ /* string */plane
+ ){
+ // summary
+ // Renders this axis to the given plot.
+
+ // get the origin plot point.
+ var area = plotArea.getArea();
+ var stroke = 1;
+ var style = "stroke:#000;stroke-width:"+stroke+"px;";
+ var textSize=10;
+ var coord = drawAgainst.getCoord(this.origin, plotArea, plot);
+
+ // draw the axis.
+ var g = this.nodes.main = document.createElement("div");
+ g.setAttribute("id", this.getId()); // need a handle if we have to kill parts of the axis def.
+ var line = this.nodes.axis = document.createElement("v:line");
+ line.setAttribute("strokecolor", "#000");
+ line.setAttribute("strokeweight", stroke+"px");
+ var s=line.style;
+ s.position="absolute";
+ s.top="0px";
+ s.left="0px";
+ s.antialias="false";
+ if(plane == "x"){
+ line.setAttribute("from", area.left+"px,"+coord+"px");
+ line.setAttribute("to", area.right+"px,"+coord+"px");
+
+ // set up the labels
+ var y = coord + Math.floor(textSize/2);
+ if(this.showLines){
+ g.appendChild(this.renderLines(plotArea, plot, plane, y));
+ }
+ if(this.showTicks){
+ g.appendChild(this.renderTicks(plotArea, plot, plane, coord));
+ }
+ if(this.showLabels){
+ g.appendChild(this.renderLabels(plotArea, plot, plane, y, textSize, "center"));
+ }
+ if(this.showLabel && this.label){
+ var x = plotArea.size.width/2;
+ var y = coord + Math.round(textSize*1.5);
+ var text = document.createElement("div");
+ var s=text.style;
+ text.innerHTML=this.label;
+ s.fontSize=(textSize+2)+"px";
+ s.fontFamily="sans-serif";
+ s.fontWeight="bold";
+ s.position="absolute";
+ s.top = y+"px";
+ s.left = x + "px";
+ s.textAlign="center";
+ document.body.appendChild(text);
+ text.style.left = x-(text.offsetWidth/2)+"px";
+ g.appendChild(text);
+ }
+ } else {
+ line.setAttribute("from", coord+"px,"+area.top+"px");
+ line.setAttribute("to", coord+"px,"+area.bottom+"px");
+
+ // set up the labels
+ var isMax = this.origin == drawAgainst.range.upper;
+ var x = coord+4;
+ var anchor = "left";
+ if(!isMax){
+ x = area.right-coord+textSize+4;
+ anchor = "right";
+ if(coord == area.left){ x += (textSize*2)-(textSize/2); }
+ }
+ if(this.showLines){
+ g.appendChild(this.renderLines(plotArea, plot, plane, x));
+ }
+ if(this.showTicks){
+ g.appendChild(this.renderTicks(plotArea, plot, plane, coord));
+ }
+ if(this.showLabels){
+ g.appendChild(this.renderLabels(plotArea, plot, plane, x, textSize, anchor));
+ }
+ if(this.showLabel && this.label){
+ x += (textSize*2)-2;
+ var y = plotArea.size.height/2;
+ var text = document.createElement("div");
+ var s=text.style;
+ text.innerHTML=this.label;
+ s.fontSize=(textSize+2)+"px";
+ s.fontFamily="sans-serif";
+ s.fontWeight="bold";
+ s.position="absolute";
+ s.height = plotArea.size.height+"px";
+ s.writingMode = "tb-rl";
+ s.textAlign="center";
+ s[anchor] = x+"px";
+ document.body.appendChild(text);
+ s.top = y-(text.offsetHeight/2)+"px";
+ g.appendChild(text);
+ }
+ }
+ g.appendChild(line);
+ return g; // HTMLDivElement
+ }
+ });
+}

Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/charting/vml/Axis.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/charting/vml/Axis.js
------------------------------------------------------------------------------
    svn:keywords = "Date Rev Author URL Id"

Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/charting/vml/Axis.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/charting/vml/PlotArea.js
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/charting/vml/PlotArea.js?view=auto&rev=509273
==============================================================================
--- ofbiz/trunk/framework/images/webapp/images/dojo/src/charting/vml/PlotArea.js (added)
+++ ofbiz/trunk/framework/images/webapp/images/dojo/src/charting/vml/PlotArea.js Mon Feb 19 09:56:06 2007
@@ -0,0 +1,80 @@
+/*
+ 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.vml.PlotArea");
+dojo.require("dojo.lang.common");
+
+if(dojo.render.vml.capable){
+ dojo.extend(dojo.charting.PlotArea, {
+ initializePlot: function(plot){
+ // summary
+ // Initialize the plot node for data rendering.
+ plot.destroy();
+ plot.dataNode = document.createElement("div");
+ plot.dataNode.id  = plot.getId();
+ return plot.dataNode; // HTMLDivElement
+ },
+ initialize:function(){
+ // summary
+ // Initialize the PlotArea.
+
+ this.destroy(); // kill everything first.
+ var main = this.nodes.main = document.createElement("div");
+
+ // start with the background
+ var area = this.nodes.area = document.createElement("div");
+ area.id = this.getId();
+ area.style.width=this.size.width+"px";
+ area.style.height=this.size.height+"px";
+ area.style.position="absolute";
+ main.appendChild(area);
+
+ var bg = this.nodes.background = document.createElement("div");
+ bg.id = this.getId()+"-background";
+ bg.style.width=this.size.width+"px";
+ bg.style.height=this.size.height+"px";
+ bg.style.position="absolute";
+ bg.style.top="0px";
+ bg.style.left="0px";
+ bg.style.backgroundColor="#fff";
+ area.appendChild(bg);
+
+ // the plot group
+ var a=this.getArea();
+ var plots = this.nodes.plots = document.createElement("div");
+ plots.id = this.getId()+"-plots";
+ plots.style.width=this.size.width+"px";
+ plots.style.height=this.size.height+"px";
+ plots.style.position="absolute";
+ plots.style.top="0px";
+ plots.style.left="0px";
+ plots.style.clip="rect("
+ + a.top+" "
+ + a.right+" "
+ + a.bottom+" "
+ + a.left
+ +")";
+ area.appendChild(plots);
+ for(var i=0; i<this.plots.length; i++){
+ plots.appendChild(this.initializePlot(this.plots[i]));
+ }
+
+ var axes = this.nodes.axes = document.createElement("div");
+ axes.id = this.getId() + "-axes";
+ area.appendChild(axes);
+ var ax = this.getAxes();
+ for(var p in ax){
+ var obj = ax[p];
+ axes.appendChild(obj.axis.initialize(this, obj.plot, obj.drawAgainst, obj.plane));
+ }
+ return main; // HTMLDivElement
+ }
+ });
+}

Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/charting/vml/PlotArea.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/charting/vml/PlotArea.js
------------------------------------------------------------------------------
    svn:keywords = "Date Rev Author URL Id"

Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/charting/vml/PlotArea.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/charting/vml/Plotters.js
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/charting/vml/Plotters.js?view=auto&rev=509273
==============================================================================
--- ofbiz/trunk/framework/images/webapp/images/dojo/src/charting/vml/Plotters.js (added)
+++ ofbiz/trunk/framework/images/webapp/images/dojo/src/charting/vml/Plotters.js Mon Feb 19 09:56:06 2007
@@ -0,0 +1,1077 @@
+/*
+ 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.vml.Plotters");
+dojo.require("dojo.lang.common");
+
+if(dojo.render.vml.capable){
+ dojo.mixin(dojo.charting.Plotters, {
+ /*********************************************************
+ * Grouped plotters: need all series on a plot at once.
+ *********************************************************/
+ _group: function(plotarea){
+ var group = document.createElement("div");
+ group.style.position="absolute";
+ group.style.top="0px";
+ group.style.left="0px";
+ group.style.width=plotarea.size.width+"px";
+ group.style.height=plotarea.size.height+"px";
+ return group;
+ },
+ Bar: function(
+ /* dojo.charting.PlotArea */plotarea,
+ /* dojo.charting.Plot */plot,
+ /* object? */kwArgs,
+ /* function? */applyTo
+ ){
+ // summary
+ // Plots a set of grouped bars.
+ // Bindings: y
+ var area = plotarea.getArea();
+ var group = dojo.charting.Plotters._group(plotarea);
+
+ // precompile the data
+ var n = plot.series.length; // how many series
+ var data = [];
+ for(var i=0; i<n; i++){
+ var tmp = plot.series[i].data.evaluate(kwArgs);
+ data.push(tmp);
+ }
+
+ // calculate the width of each bar.
+ var space = 8;
+ var nPoints = data[0].length;
+ var width = ((area.right-area.left)-(space*(nPoints-1)))/nPoints; // the width of each group.
+ var barWidth = Math.round(width/n); // the width of each bar, no spaces.
+ var yOrigin = plot.axisY.getCoord(plot.axisX.origin, plotarea, plot);
+
+ for(var i=0; i<nPoints; i++){
+ // calculate offset
+ var xStart = area.left+(width*i)+(space*i);
+ for(var j=0; j<n; j++){
+ var value = data[j][i].y;
+ var yA = yOrigin;
+ var x = xStart + (barWidth*j);
+ var y = plot.axisY.getCoord(value, plotarea, plot);
+ var h = Math.abs(yA-y);
+ if(value < plot.axisX.origin){
+ yA = y;
+ y = yOrigin;
+ }
+
+ var bar=document.createElement("v:rect");
+ bar.style.position="absolute";
+ bar.style.top=y+1+"px";
+ bar.style.left=x+"px";
+ bar.style.width=barWidth+"px";
+ bar.style.height=h+"px";
+ bar.setAttribute("fillColor", data[j][i].series.color);
+ bar.setAttribute("stroked", "false");
+ bar.style.antialias="false";
+ var fill=document.createElement("v:fill");
+ fill.setAttribute("opacity", "0.6");
+ bar.appendChild(fill);
+ if(applyTo){ applyTo(bar, data[j][i].src); }
+ group.appendChild(bar);
+ }
+ }
+ return group; // HTMLDivElement
+ },
+ HorizontalBar: function(
+ /* dojo.charting.PlotArea */plotarea,
+ /* dojo.charting.Plot */plot,
+ /* object? */kwArgs,
+ /* function? */applyTo
+ ){
+ // summary
+ // Plots data in a set of grouped bars horizontally.
+ // Bindings: y
+ var area = plotarea.getArea();
+ var group = dojo.charting.Plotters._group(plotarea);
+
+ // precompile the data
+ var n = plot.series.length; // how many series
+ var data = [];
+ for(var i=0; i<n; i++){
+ var tmp = plot.series[i].data.evaluate(kwArgs);
+ data.push(tmp);
+ }
+
+ var space = 6;
+ var nPoints = data[0].length;
+ var h = ((area.bottom-area.top)-(space*(nPoints-1)))/nPoints;
+ var barH = h/n;
+ var xOrigin = plot.axisX.getCoord(0, plotarea, plot);
+
+ for(var i=0; i<nPoints; i++){
+ // calculate offset
+ var yStart = area.top+(h*i)+(space*i);
+ for(var j=0; j<n; j++){
+ var value = data[j][i].y;
+ var y = yStart + (barH*j);
+ var xA = xOrigin;
+ var x = plot.axisX.getCoord(value, plotarea, plot);
+ var w = Math.abs(x-xA);
+ if(value > 0){
+ x = xOrigin;
+ }
+
+ var bar=document.createElement("v:rect");
+ bar.style.position="absolute";
+ bar.style.top=y+1+"px";
+ bar.style.left=xA+"px";
+ bar.style.width=w+"px";
+ bar.style.height=barH+"px";
+ bar.setAttribute("fillColor", data[j][i].series.color);
+ bar.setAttribute("stroked", "false");
+ bar.style.antialias="false";
+ var fill=document.createElement("v:fill");
+ fill.setAttribute("opacity", "0.6");
+ bar.appendChild(fill);
+ if(applyTo){ applyTo(bar, data[j][i].src); }
+ group.appendChild(bar);
+ }
+ }
+
+ // calculate the width of each bar.
+ var space = 4;
+ var n = plot.series.length;
+ var h = ((area.bottom-area.top)-(space*(n-1)))/n;
+ var xOrigin = plot.axisX.getCoord(0, plotarea, plot);
+ for(var i=0; i<n; i++){
+ var series = plot.series[i];
+ var data = series.data.evaluate(kwArgs);
+ var y = area.top+(h*i)+(space*i);
+ var value = data[data.length-1].y;
+
+ var xA = xOrigin;
+ var x = plot.axisX.getCoord(value, plotarea, plot);
+ var w = Math.abs(xA-x);
+ if(value > 0){
+ xA = x;
+ x = xOrigin;
+ }
+
+ }
+ return group; // HTMLDivElement
+ },
+ Gantt: function(
+ /* dojo.charting.PlotArea */plotarea,
+ /* dojo.charting.Plot */plot,
+ /* object? */kwArgs,
+ /* function? */applyTo
+ ){
+ // summary
+ // Plots a grouped set of Gantt bars
+ // Bindings: high/low
+ var area = plotarea.getArea();
+ var group = dojo.charting.Plotters._group(plotarea);
+
+ // precompile the data
+ var n = plot.series.length; // how many series
+ var data = [];
+ for(var i=0; i<n; i++){
+ var tmp = plot.series[i].data.evaluate(kwArgs);
+ data.push(tmp);
+ }
+
+ var space = 2;
+ var nPoints = data[0].length;
+ var h = ((area.bottom-area.top)-(space*(nPoints-1)))/nPoints;
+ var barH = h/n;
+ for(var i=0; i<nPoints; i++){
+ // calculate offset
+ var yStart = area.top+(h*i)+(space*i);
+ for(var j=0; j<n; j++){
+ var high = data[j][i].high;
+ var low = data[j][i].low;
+ if(low > high){
+ var t = high;
+ high = low;
+ low = t;
+ }
+ var x = plot.axisX.getCoord(low, plotarea, plot);
+ var w = plot.axisX.getCoord(high, plotarea, plot) - x;
+ var y = yStart + (barH*j);
+
+ var bar=document.createElement("v:rect");
+ bar.style.position="absolute";
+ bar.style.top=y+1+"px";
+ bar.style.left=x+"px";
+ bar.style.width=w+"px";
+ bar.style.height=barH+"px";
+ bar.setAttribute("fillColor", data[j][i].series.color);
+ bar.setAttribute("stroked", "false");
+ bar.style.antialias="false";
+ var fill=document.createElement("v:fill");
+ fill.setAttribute("opacity", "0.6");
+ bar.appendChild(fill);
+ if(applyTo){ applyTo(bar, data[j][i].src); }
+ group.appendChild(bar);
+ }
+ }
+ return group; // HTMLDivElement
+ },
+ StackedArea: function(
+ /* dojo.charting.PlotArea */plotarea,
+ /* dojo.charting.Plot */plot,
+ /* object? */kwArgs,
+ /* function? */applyTo
+ ){
+ // summary
+ // Plots a set of stacked areas.
+ // Bindings: x/y
+ var area = plotarea.getArea();
+ var group = dojo.charting.Plotters._group(plotarea);
+
+ // precompile the data
+ var n = plot.series.length; // how many series
+ var data = [];
+ var totals = [];
+
+ // we're assuming that all series for this plot has the name x assignment for now.
+ for(var i=0; i<n; i++){
+ var tmp = plot.series[i].data.evaluate(kwArgs);
+ // run through and add current totals
+ for(var j=0; j<tmp.length; j++){
+ if(i==0){ totals.push(tmp[j].y); }
+ else { totals[j] += tmp[j].y; }
+ tmp[j].y = totals[j];
+ }
+ data.push(tmp);
+ }
+
+ for(var i=n-1; i>=0; i--){
+ var path=document.createElement("v:shape");
+ path.setAttribute("strokeweight", "1px");
+ path.setAttribute("strokecolor", data[i][0].series.color);
+ path.setAttribute("fillcolor", data[i][0].series.color);
+ path.setAttribute("coordsize", (area.right-area.left) + "," + (area.bottom-area.top));
+ path.style.position="absolute";
+ path.style.top="0px";
+ path.style.left="0px";
+ path.style.width=area.right-area.left+"px";
+ path.style.height=area.bottom-area.top+"px";
+ var stroke=document.createElement("v:stroke");
+ stroke.setAttribute("opacity", "0.8");
+ path.appendChild(stroke);
+ var fill=document.createElement("v:fill");
+ fill.setAttribute("opacity", "0.4");
+ path.appendChild(fill);
+
+ var cmd = [];
+ var r=3;
+ for(var j=0; j<data[i].length; j++){
+ var values = data[i];
+ var x = Math.round(plot.axisX.getCoord(values[j].x, plotarea, plot));
+ var y = Math.round(plot.axisY.getCoord(values[j].y, plotarea, plot));
+
+ if (j==0){
+ cmd.push("m");
+ cmd.push(x+","+y);
+ }else{
+ cmd.push("l");
+ cmd.push(x+","+y);
+ }
+
+ // add the circle.
+ var c = document.createElement("v:oval");
+ c.setAttribute("strokeweight", "1px");
+ c.setAttribute("strokecolor", values[j].series.color);
+ c.setAttribute("fillcolor", values[j].series.color);
+ var str=document.createElement("v:stroke");
+ str.setAttribute("opacity","0.8");
+ c.appendChild(str);
+ str=document.createElement("v:fill");
+ str.setAttribute("opacity","0.6");
+ c.appendChild(str);
+ var s=c.style;
+ s.position="absolute";
+ s.top=(y-r)+"px";
+ s.left=(x-r)+"px";
+ s.width=(r*2)+"px";
+ s.height=(r*2)+"px";
+ group.appendChild(c);
+ if(applyTo){ applyTo(c, data[j].src); }
+ }
+
+ // now run the path backwards from the previous series.
+ if(i == 0){
+ cmd.push("l");
+ cmd.push(x + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)));
+ cmd.push("l");
+ cmd.push(Math.round(plot.axisX.getCoord(data[0][0].x, plotarea, plot)) + "," +  Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)));
+ } else {
+ var values = data[i-1];
+ cmd.push("l");
+ cmd.push(x + "," + Math.round(plot.axisY.getCoord(values[values.length-1].y, plotarea, plot)));
+ for(var j=values.length-2; j>=0; j--){
+ var x = Math.round(plot.axisX.getCoord(values[j].x, plotarea, plot));
+ var y = Math.round(plot.axisY.getCoord(values[j].y, plotarea, plot));
+
+ cmd.push("l");
+ cmd.push(x+","+y);
+ }
+ }
+ path.setAttribute("path", cmd.join(" ")+" x e");
+ group.appendChild(path);
+ }
+ return group; // HTMLDivElement
+ },
+ StackedCurvedArea: function(
+ /* dojo.charting.PlotArea */plotarea,
+ /* dojo.charting.Plot */plot,
+ /* object? */kwArgs,
+ /* function? */applyTo
+ ){
+ // summary
+ // Plots a set of stacked areas, using a tensioning factor to soften points.
+ // Bindings: x/y
+ var tension = 3;
+ var area = plotarea.getArea();
+ var group = dojo.charting.Plotters._group(plotarea);
+
+ // precompile the data
+ var n = plot.series.length; // how many series
+ var data = [];
+ var totals = [];
+
+ // we're assuming that all series for this plot has the name x assignment for now.
+ for(var i=0; i<n; i++){
+ var tmp = plot.series[i].data.evaluate(kwArgs);
+ // run through and add current totals
+ for(var j=0; j<tmp.length; j++){
+ if(i==0){ totals.push(tmp[j].y); }
+ else { totals[j] += tmp[j].y; }
+ tmp[j].y = totals[j];
+ }
+ data.push(tmp);
+ }
+
+ for(var i=n-1; i>=0; i--){
+ var path=document.createElement("v:shape");
+ path.setAttribute("strokeweight", "1px");
+ path.setAttribute("strokecolor", data[i][0].series.color);
+ path.setAttribute("fillcolor", data[i][0].series.color);
+ path.setAttribute("coordsize", (area.right-area.left) + "," + (area.bottom-area.top));
+ path.style.position="absolute";
+ path.style.top="0px";
+ path.style.left="0px";
+ path.style.width=area.right-area.left+"px";
+ path.style.height=area.bottom-area.top+"px";
+ var stroke=document.createElement("v:stroke");
+ stroke.setAttribute("opacity", "0.8");
+ path.appendChild(stroke);
+ var fill=document.createElement("v:fill");
+ fill.setAttribute("opacity", "0.4");
+ path.appendChild(fill);
+
+ var cmd = [];
+ var r=3;
+ for(var j=0; j<data[i].length; j++){
+ var values = data[i];
+ var x = Math.round(plot.axisX.getCoord(values[j].x, plotarea, plot));
+ var y = Math.round(plot.axisY.getCoord(values[j].y, plotarea, plot));
+
+ if (j==0){
+ cmd.push("m");
+ cmd.push(x+","+y);
+ }else{
+ var lastx = Math.round(plot.axisX.getCoord(values[j-1].x, plotarea, plot));
+ var lasty = Math.round(plot.axisY.getCoord(values[j-1].y, plotarea, plot));
+ var dx=x-lastx;
+ var dy=y-lasty;
+
+ cmd.push("c");
+ var cx=Math.round((x-(tension-1)*(dx/tension)));
+ cmd.push(cx+","+lasty);
+ cx=Math.round((x-(dx/tension)));
+ cmd.push(cx+","+y);
+ cmd.push(x+","+y);
+ }
+
+ // add the circle.
+ var c = document.createElement("v:oval");
+ c.setAttribute("strokeweight", "1px");
+ c.setAttribute("strokecolor", values[j].series.color);
+ c.setAttribute("fillcolor", values[j].series.color);
+ var str=document.createElement("v:stroke");
+ str.setAttribute("opacity","0.8");
+ c.appendChild(str);
+ str=document.createElement("v:fill");
+ str.setAttribute("opacity","0.6");
+ c.appendChild(str);
+ var s=c.style;
+ s.position="absolute";
+ s.top=(y-r)+"px";
+ s.left=(x-r)+"px";
+ s.width=(r*2)+"px";
+ s.height=(r*2)+"px";
+ group.appendChild(c);
+ if(applyTo){ applyTo(c, data[j].src); }
+ }
+
+ // now run the path backwards from the previous series.
+ if(i == 0){
+ cmd.push("l");
+ cmd.push(x + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)));
+ cmd.push("l");
+ cmd.push(Math.round(plot.axisX.getCoord(data[0][0].x, plotarea, plot)) + "," +  Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)));
+ } else {
+ var values = data[i-1];
+ cmd.push("l");
+ cmd.push(x + "," + Math.round(plot.axisY.getCoord(values[values.length-1].y, plotarea, plot)));
+ for(var j=values.length-2; j>=0; j--){
+ var x = Math.round(plot.axisX.getCoord(values[j].x, plotarea, plot));
+ var y = Math.round(plot.axisY.getCoord(values[j].y, plotarea, plot));
+
+ var lastx = Math.round(plot.axisX.getCoord(values[j+1].x, plotarea, plot));
+ var lasty = Math.round(plot.axisY.getCoord(values[j+1].y, plotarea, plot));
+ var dx=x-lastx;
+ var dy=y-lasty;
+
+ cmd.push("c");
+ var cx=Math.round((x-(tension-1)*(dx/tension)));
+ cmd.push(cx+","+lasty);
+ cx=Math.round((x-(dx/tension)));
+ cmd.push(cx+","+y);
+ cmd.push(x+","+y);
+ }
+ }
+ path.setAttribute("path", cmd.join(" ")+" x e");
+ group.appendChild(path);
+ }
+ return group; // HTMLDivElement
+ },
+
+ /*********************************************************
+ * Single plotters: one series at a time.
+ *********************************************************/
+ DataBar: function(
+ /* array */data,
+ /* dojo.charting.PlotArea */plotarea,
+ /* dojo.charting.Plot */plot,
+ /* function? */applyTo
+ ){
+ // summary
+ // Plots a set of bars in relation to y==0.
+ // Bindings: x/y
+ var area = plotarea.getArea();
+ var group = dojo.charting.Plotters._group(plotarea);
+
+ var n = data.length;
+ var w = (area.right-area.left)/(plot.axisX.range.upper - plot.axisX.range.lower); // the width of each group.
+ var yOrigin = plot.axisY.getCoord(plot.axisX.origin, plotarea, plot);
+
+ for(var i=0; i<n; i++){
+ // calculate offset
+ var value = data[i].y;
+ var yA = yOrigin;
+ var x = plot.axisX.getCoord(data[i].x, plotarea, plot)-(w/2)+1;
+ var y = plot.axisY.getCoord(value, plotarea, plot);
+ var h = Math.abs(yA-y);
+ if(value < plot.axisX.origin){
+ yA = y;
+ y = yOrigin;
+ }
+ var bar=document.createElement("v:rect");
+ bar.style.position="absolute";
+ bar.style.top=y+1+"px";
+ bar.style.left=x+"px";
+ bar.style.width=w+"px";
+ bar.style.height=h+"px";
+ bar.setAttribute("fillColor", data[i].series.color);
+ bar.setAttribute("stroked", "false");
+ bar.style.antialias="false";
+ var fill=document.createElement("v:fill");
+ fill.setAttribute("opacity", "0.6");
+ bar.appendChild(fill);
+ if(applyTo){ applyTo(bar, data[i].src); }
+ group.appendChild(bar);
+ }
+ return group; // HTMLDivElement
+ },
+ Line: function(
+ /* array */data,
+ /* dojo.charting.PlotArea */plotarea,
+ /* dojo.charting.Plot */plot,
+ /* function? */applyTo
+ ){
+ // summary
+ // Plots the series as a line.
+ // Bindings: x/y
+ var area = plotarea.getArea();
+ var group = dojo.charting.Plotters._group(plotarea);
+
+ var path=document.createElement("v:shape");
+ path.setAttribute("strokeweight", "2px");
+ path.setAttribute("strokecolor", data[0].series.color);
+ path.setAttribute("fillcolor", "none");
+ path.setAttribute("filled", "false");
+ path.setAttribute("coordsize", (area.right-area.left) + "," + (area.bottom-area.top));
+ path.style.position="absolute";
+ path.style.top="0px";
+ path.style.left="0px";
+ path.style.width=area.right-area.left+"px";
+ path.style.height=area.bottom-area.top+"px";
+ var stroke=document.createElement("v:stroke");
+ stroke.setAttribute("opacity", "0.8");
+ path.appendChild(stroke);
+
+ var cmd = [];
+ var r=3;
+ fo