diff options
Diffstat (limited to 'js/dojo/dojox/geo/charting/_base.js')
| -rw-r--r-- | js/dojo/dojox/geo/charting/_base.js | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/js/dojo/dojox/geo/charting/_base.js b/js/dojo/dojox/geo/charting/_base.js new file mode 100644 index 0000000..8a461da --- /dev/null +++ b/js/dojo/dojox/geo/charting/_base.js @@ -0,0 +1,55 @@ +//>>built +define("dojox/geo/charting/_base", ["dojo/_base/lang","dojo/_base/array","../../main", "dojo/_base/html","dojo/dom-geometry", + "dojox/gfx/matrix","dijit/Tooltip","dojo/_base/NodeList","dojo/NodeList-traverse"], + function(lang, arr, dojox, html, domGeom, matrix, Tooltip, NodeList, NodeListTraverse) { + var dgc = lang.getObject("geo.charting", true, dojox); + + dgc.showTooltip = function(/*String*/innerHTML, /*dojox.gfx.shape*/ gfxObject, /*String[]?*/ positions){ + var arroundNode = dgc._normalizeArround(gfxObject); + return Tooltip.show(innerHTML, arroundNode, positions); + }; + + dgc.hideTooltip = function( /*dojox.gfx.shape*/gfxObject){ + return Tooltip.hide(gfxObject); + }; + + dgc._normalizeArround = function(gfxObject){ + var bbox = dgc._getRealBBox(gfxObject); + //var bbox = gfxObject.getBoundingBox(); + //get the real screen coords for gfx object + var realMatrix = gfxObject._getRealMatrix() || {xx:1,xy:0,yx:0,yy:1,dx:0,dy:0}; + var point = matrix.multiplyPoint(realMatrix, bbox.x, bbox.y); + var gfxDomContainer = dgc._getGfxContainer(gfxObject); + gfxObject.x = domGeom.position(gfxDomContainer,true).x + point.x, + gfxObject.y = domGeom.position(gfxDomContainer,true).y + point.y, + gfxObject.w = bbox.width * realMatrix.xx, + gfxObject.h = bbox.height * realMatrix.yy + return gfxObject; + }; + + dgc._getGfxContainer = function(gfxObject){ + if (gfxObject.surface) { + return (new NodeList(gfxObject.surface.rawNode)).parents("div")[0]; + } else { + return (new NodeList(gfxObject.rawNode)).parents("div")[0]; + } + }; + + dgc._getRealBBox = function(gfxObject){ + var bboxObject = gfxObject.getBoundingBox(); + if(!bboxObject){//the gfx object is group + var shapes = gfxObject.children; + bboxObject = lang.clone(dgc._getRealBBox(shapes[0])); + arr.forEach(shapes, function(item){ + var nextBBox = dgc._getRealBBox(item); + bboxObject.x = Math.min(bboxObject.x, nextBBox.x); + bboxObject.y = Math.min(bboxObject.y, nextBBox.y); + bboxObject.endX = Math.max(bboxObject.x + bboxObject.width, nextBBox.x + nextBBox.width); + bboxObject.endY = Math.max(bboxObject.y + bboxObject.height, nextBBox.y + nextBBox.height); + }); + bboxObject.width = bboxObject.endX - bboxObject.x; + bboxObject.height = bboxObject.endY - bboxObject.y; + } + return bboxObject; + }; +}); |
