summaryrefslogtreecommitdiff
path: root/js/dojo-1.6/dojox/charting/axis2d/common.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/dojo-1.6/dojox/charting/axis2d/common.js')
-rw-r--r--js/dojo-1.6/dojox/charting/axis2d/common.js165
1 files changed, 165 insertions, 0 deletions
diff --git a/js/dojo-1.6/dojox/charting/axis2d/common.js b/js/dojo-1.6/dojox/charting/axis2d/common.js
new file mode 100644
index 0000000..995c9b0
--- /dev/null
+++ b/js/dojo-1.6/dojox/charting/axis2d/common.js
@@ -0,0 +1,165 @@
+/*
+ Copyright (c) 2004-2011, The Dojo Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+
+if(!dojo._hasResource["dojox.charting.axis2d.common"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojox.charting.axis2d.common"] = true;
+dojo.provide("dojox.charting.axis2d.common");
+
+dojo.require("dojox.gfx");
+
+(function(){
+ var g = dojox.gfx;
+
+ var clearNode = function(s){
+ s.marginLeft = "0px";
+ s.marginTop = "0px";
+ s.marginRight = "0px";
+ s.marginBottom = "0px";
+ s.paddingLeft = "0px";
+ s.paddingTop = "0px";
+ s.paddingRight = "0px";
+ s.paddingBottom = "0px";
+ s.borderLeftWidth = "0px";
+ s.borderTopWidth = "0px";
+ s.borderRightWidth = "0px";
+ s.borderBottomWidth = "0px";
+ };
+
+ var getBoxWidth = function(n){
+ // marginBox is incredibly slow, so avoid it if we can
+ if(n["getBoundingClientRect"]){
+ var bcr = n.getBoundingClientRect();
+ return bcr.width || (bcr.right - bcr.left);
+ }else{
+ return dojo.marginBox(n).w;
+ }
+ };
+
+ dojo.mixin(dojox.charting.axis2d.common, {
+ // summary:
+ // Common methods to be used by any axis. This is considered "static".
+ createText: {
+ gfx: function(chart, creator, x, y, align, text, font, fontColor){
+ // summary:
+ // Use dojox.gfx to create any text.
+ // chart: dojox.charting.Chart2D
+ // The chart to create the text into.
+ // creator: dojox.gfx.Surface
+ // The graphics surface to use for creating the text.
+ // x: Number
+ // Where to create the text along the x axis (CSS left).
+ // y: Number
+ // Where to create the text along the y axis (CSS top).
+ // align: String
+ // How to align the text. Can be "left", "right", "center".
+ // text: String
+ // The text to render.
+ // font: String
+ // The font definition, a la CSS "font".
+ // fontColor: String|dojo.Color
+ // The color of the resultant text.
+ // returns: dojox.gfx.Text
+ // The resultant GFX object.
+ return creator.createText({
+ x: x, y: y, text: text, align: align
+ }).setFont(font).setFill(fontColor); // dojox.gfx.Text
+ },
+ html: function(chart, creator, x, y, align, text, font, fontColor, labelWidth){
+ // summary:
+ // Use the HTML DOM to create any text.
+ // chart: dojox.charting.Chart2D
+ // The chart to create the text into.
+ // creator: dojox.gfx.Surface
+ // The graphics surface to use for creating the text.
+ // x: Number
+ // Where to create the text along the x axis (CSS left).
+ // y: Number
+ // Where to create the text along the y axis (CSS top).
+ // align: String
+ // How to align the text. Can be "left", "right", "center".
+ // text: String
+ // The text to render.
+ // font: String
+ // The font definition, a la CSS "font".
+ // fontColor: String|dojo.Color
+ // The color of the resultant text.
+ // labelWidth: Number?
+ // The maximum width of the resultant DOM node.
+ // returns: DOMNode
+ // The resultant DOMNode (a "div" element).
+
+ // setup the text node
+ var p = dojo.doc.createElement("div"), s = p.style, boxWidth;
+ clearNode(s);
+ s.font = font;
+ p.innerHTML = String(text).replace(/\s/g, " ");
+ s.color = fontColor;
+ // measure the size
+ s.position = "absolute";
+ s.left = "-10000px";
+ dojo.body().appendChild(p);
+ var size = g.normalizedLength(g.splitFontString(font).size);
+
+ // do we need to calculate the label width?
+ if(!labelWidth){
+ boxWidth = getBoxWidth(p);
+ }
+
+ // new settings for the text node
+ dojo.body().removeChild(p);
+
+ s.position = "relative";
+ if(labelWidth){
+ s.width = labelWidth + "px";
+ // s.border = "1px dotted grey";
+ switch(align){
+ case "middle":
+ s.textAlign = "center";
+ s.left = (x - labelWidth / 2) + "px";
+ break;
+ case "end":
+ s.textAlign = "right";
+ s.left = (x - labelWidth) + "px";
+ break;
+ default:
+ s.left = x + "px";
+ s.textAlign = "left";
+ break;
+ }
+ }else{
+ switch(align){
+ case "middle":
+ s.left = Math.floor(x - boxWidth / 2) + "px";
+ // s.left = Math.floor(x - p.offsetWidth / 2) + "px";
+ break;
+ case "end":
+ s.left = Math.floor(x - boxWidth) + "px";
+ // s.left = Math.floor(x - p.offsetWidth) + "px";
+ break;
+ //case "start":
+ default:
+ s.left = Math.floor(x) + "px";
+ break;
+ }
+ }
+ s.top = Math.floor(y - size) + "px";
+ s.whiteSpace = "nowrap"; // hack for WebKit
+ // setup the wrapper node
+ var wrap = dojo.doc.createElement("div"), w = wrap.style;
+ clearNode(w);
+ w.width = "0px";
+ w.height = "0px";
+ // insert nodes
+ wrap.appendChild(p)
+ chart.node.insertBefore(wrap, chart.node.firstChild);
+ return wrap; // DOMNode
+ }
+ }
+ });
+})();
+
+}