aboutsummaryrefslogtreecommitdiff
path: root/includes/js/dojox/charting/plot2d/Pie.js
diff options
context:
space:
mode:
Diffstat (limited to 'includes/js/dojox/charting/plot2d/Pie.js')
-rw-r--r--includes/js/dojox/charting/plot2d/Pie.js199
1 files changed, 0 insertions, 199 deletions
diff --git a/includes/js/dojox/charting/plot2d/Pie.js b/includes/js/dojox/charting/plot2d/Pie.js
deleted file mode 100644
index 2d0f55e..0000000
--- a/includes/js/dojox/charting/plot2d/Pie.js
+++ /dev/null
@@ -1,199 +0,0 @@
-if(!dojo._hasResource["dojox.charting.plot2d.Pie"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojox.charting.plot2d.Pie"] = true;
-dojo.provide("dojox.charting.plot2d.Pie");
-
-dojo.require("dojox.charting.Element");
-dojo.require("dojox.charting.axis2d.common");
-dojo.require("dojox.charting.plot2d.common");
-
-dojo.require("dojox.lang.functional");
-dojo.require("dojox.gfx");
-
-(function(){
- var df = dojox.lang.functional, du = dojox.lang.utils,
- dc = dojox.charting.plot2d.common,
- da = dojox.charting.axis2d.common,
- g = dojox.gfx;
-
- dojo.declare("dojox.charting.plot2d.Pie", dojox.charting.Element, {
- defaultParams: {
- labels: true,
- ticks: false,
- fixed: true,
- precision: 1,
- labelOffset: 20,
- labelStyle: "default", // default/rows/auto
- htmlLabels: true // use HTML to draw labels
- },
- optionalParams: {
- font: "",
- fontColor: "",
- radius: 0
- },
-
- constructor: function(chart, kwArgs){
- this.opt = dojo.clone(this.defaultParams);
- du.updateWithObject(this.opt, kwArgs);
- du.updateWithPattern(this.opt, kwArgs, this.optionalParams);
- this.run = null;
- this.dyn = [];
- },
- clear: function(){
- this.dirty = true;
- this.dyn = [];
- return this;
- },
- setAxis: function(axis){
- // nothing
- return this;
- },
- addSeries: function(run){
- this.run = run;
- return this;
- },
- calculateAxes: function(dim){
- // nothing
- return this;
- },
- getRequiredColors: function(){
- return this.run ? this.run.data.length : 0;
- },
- render: function(dim, offsets){
- if(!this.dirty){ return this; }
- this.dirty = false;
- this.cleanGroup();
- var s = this.group, color, t = this.chart.theme;
-
- // calculate the geometry
- var rx = (dim.width - offsets.l - offsets.r) / 2,
- ry = (dim.height - offsets.t - offsets.b) / 2,
- r = Math.min(rx, ry),
- taFont = "font" in this.opt ? this.opt.font : t.axis.font,
- size = taFont ? g.normalizedLength(g.splitFontString(taFont).size) : 0,
- taFontColor = "fontColor" in this.opt ? this.opt.fontColor : t.axis.fontColor,
- start = 0, step, sum, slices, labels, shift, labelR,
- run = this.run.data;
- if(typeof run[0] == "number"){
- sum = df.foldl1(run, "+");
- slices = dojo.map(run, function(x){ return x / sum; });
- if(this.opt.labels){
- labels = dojo.map(slices, function(x){
- return this._getLabel(x * 100) + "%";
- }, this);
- }
- }else{
- sum = df.foldl1(run, function(a, b){ return {y: a.y + b.y}; }).y;
- slices = df.map(run, function(x){ return x.y / sum; });
- if(this.opt.labels){
- labels = dojo.map(slices, function(x, i){
- var v = run[i];
- return "text" in v ? v.text : this._getLabel(x * 100) + "%";
- }, this);
- }
- }
- if(this.opt.labels){
- shift = df.foldl1(df.map(labels, function(label){
- return dojox.gfx._base._getTextBox(label, {font: taFont}).w;
- }, this), "Math.max(a, b)") / 2;
- if(this.opt.labelOffset < 0){
- r = Math.min(rx - 2 * shift, ry - size) + this.opt.labelOffset;
- }
- labelR = r - this.opt.labelOffset;
- }
- if("radius" in this.opt){
- r = this.opt.radius;
- labelR = r - this.opt.labelOffset;
- }
- var circle = {
- cx: offsets.l + rx,
- cy: offsets.t + ry,
- r: r
- };
-
- this.dyn = [];
- if(!this.run || !run.length){
- return this;
- }
- if(run.length == 1){
- // need autogenerated color
- color = new dojo.Color(t.next("color"));
- var shape = s.createCircle(circle).
- setFill(dc.augmentFill(t.run.fill, color)).
- setStroke(dc.augmentStroke(t.series.stroke, color));
- this.dyn.push({color: color, fill: shape.getFill(), stroke: shape.getStroke()});
- if(this.opt.labels){
- // draw the label
- var elem = da.createText[this.opt.htmlLabels && dojox.gfx.renderer != "vml" ? "html" : "gfx"]
- (this.chart, s, circle.cx, circle.cy + size / 2, "middle",
- "100%", taFont, taFontColor);
- if(this.opt.htmlLabels){ this.htmlElements.push(elem); }
- }
- return this;
- }
- // draw slices
- dojo.forEach(slices, function(x, i){
- // calculate the geometry of the slice
- var end = start + x * 2 * Math.PI, v = run[i];
- if(i + 1 == slices.length){
- end = 2 * Math.PI;
- }
- var step = end - start,
- x1 = circle.cx + r * Math.cos(start),
- y1 = circle.cy + r * Math.sin(start),
- x2 = circle.cx + r * Math.cos(end),
- y2 = circle.cy + r * Math.sin(end);
- // draw the slice
- var color, fill, stroke;
- if(typeof v == "object"){
- color = "color" in v ? v.color : new dojo.Color(t.next("color"));
- fill = "fill" in v ? v.fill : dc.augmentFill(t.series.fill, color);
- stroke = "stroke" in v ? v.stroke : dc.augmentStroke(t.series.stroke, color);
- }else{
- color = new dojo.Color(t.next("color"));
- fill = dc.augmentFill(t.series.fill, color);
- stroke = dc.augmentStroke(t.series.stroke, color);
- }
- var shape = s.createPath({}).
- moveTo(circle.cx, circle.cy).
- lineTo(x1, y1).
- arcTo(r, r, 0, step > Math.PI, true, x2, y2).
- lineTo(circle.cx, circle.cy).
- closePath().
- setFill(fill).
- setStroke(stroke);
- this.dyn.push({color: color, fill: fill, stroke: stroke});
- start = end;
- }, this);
- // draw labels
- if(this.opt.labels){
- start = 0;
- dojo.forEach(slices, function(slice, i){
- // calculate the geometry of the slice
- var end = start + slice * 2 * Math.PI, v = run[i];
- if(i + 1 == slices.length){
- end = 2 * Math.PI;
- }
- var labelAngle = (start + end) / 2,
- x = circle.cx + labelR * Math.cos(labelAngle),
- y = circle.cy + labelR * Math.sin(labelAngle) + size / 2;
- // draw the label
- var elem = da.createText[this.opt.htmlLabels && dojox.gfx.renderer != "vml" ? "html" : "gfx"]
- (this.chart, s, x, y, "middle",
- labels[i], taFont,
- (typeof v == "object" && "fontColor" in v)
- ? v.fontColor : taFontColor);
- if(this.opt.htmlLabels){ this.htmlElements.push(elem); }
- start = end;
- }, this);
- }
- return this;
- },
-
- // utilities
- _getLabel: function(number){
- return this.opt.fixed ? number.toFixed(this.opt.precision) : number.toString();
- }
- });
-})();
-
-}