Axis.js
上传用户:kimgenplus
上传日期:2016-06-05
资源大小:20877k
文件大小:7k
源码类别:

OA系统

开发平台:

Java

  1. /*
  2. Copyright (c) 2004-2006, The Dojo Foundation
  3. All Rights Reserved.
  4. Licensed under the Academic Free License version 2.1 or above OR the
  5. modified BSD license. For more information on Dojo licensing, see:
  6. http://dojotoolkit.org/community/licensing.shtml
  7. */
  8. dojo.provide("dojo.charting.vml.Axis");
  9. dojo.require("dojo.lang.common");
  10. if (dojo.render.vml.capable) {
  11. dojo.extend(dojo.charting.Axis, {renderLines:function (plotArea, plot, plane) {
  12. if (this.nodes.lines) {
  13. while (this.nodes.lines.childNodes.length > 0) {
  14. this.nodes.lines.removeChild(this.nodes.lines.childNodes[0]);
  15. }
  16. if (this.nodes.lines.parentNode) {
  17. this.nodes.lines.parentNode.removeChild(this.nodes.lines);
  18. this.nodes.lines = null;
  19. }
  20. }
  21. var area = plotArea.getArea();
  22. var g = this.nodes.lines = document.createElement("div");
  23. g.setAttribute("id", this.getId() + "-lines");
  24. for (var i = 0; i < this._labels.length; i++) {
  25. if (this._labels[i].value == this.origin) {
  26. continue;
  27. }
  28. var v = this.getCoord(this._labels[i].value, plotArea, plot);
  29. var l = document.createElement("v:line");
  30. var str = document.createElement("v:stroke");
  31. str.dashstyle = "dot";
  32. l.appendChild(str);
  33. l.setAttribute("strokecolor", "#666");
  34. l.setAttribute("strokeweight", "1px");
  35. var s = l.style;
  36. s.position = "absolute";
  37. s.top = "0px";
  38. s.left = "0px";
  39. s.antialias = "false";
  40. if (plane == "x") {
  41. l.setAttribute("from", v + "px," + area.top + "px");
  42. l.setAttribute("to", v + "px," + area.bottom + "px");
  43. } else {
  44. if (plane == "y") {
  45. l.setAttribute("from", area.left + "px," + v + "px");
  46. l.setAttribute("to", area.right + "px," + v + "px");
  47. }
  48. }
  49. g.appendChild(l);
  50. }
  51. return g;
  52. }, renderTicks:function (plotArea, plot, plane, coord) {
  53. if (this.nodes.ticks) {
  54. while (this.nodes.ticks.childNodes.length > 0) {
  55. this.nodes.ticks.removeChild(this.nodes.ticks.childNodes[0]);
  56. }
  57. if (this.nodes.ticks.parentNode) {
  58. this.nodes.ticks.parentNode.removeChild(this.nodes.ticks);
  59. this.nodes.ticks = null;
  60. }
  61. }
  62. var g = this.nodes.ticks = document.createElement("div");
  63. g.setAttribute("id", this.getId() + "-ticks");
  64. for (var i = 0; i < this._labels.length; i++) {
  65. var v = this.getCoord(this._labels[i].value, plotArea, plot);
  66. var l = document.createElement("v:line");
  67. l.setAttribute("strokecolor", "#000");
  68. l.setAttribute("strokeweight", "1px");
  69. var s = l.style;
  70. s.position = "absolute";
  71. s.top = "0px";
  72. s.left = "0px";
  73. s.antialias = "false";
  74. if (plane == "x") {
  75. l.setAttribute("from", v + "px," + coord + "px");
  76. l.setAttribute("to", v + "px," + (coord + 3) + "px");
  77. } else {
  78. if (plane == "y") {
  79. l.setAttribute("from", (coord - 2) + "px," + v + "px");
  80. l.setAttribute("to", (coord + 2) + "px," + v + "px");
  81. }
  82. }
  83. g.appendChild(l);
  84. }
  85. return g;
  86. }, renderLabels:function (plotArea, plot, plane, coord, textSize, anchor) {
  87. function createLabel(label, x, y, textSize, anchor) {
  88. var text = document.createElement("div");
  89. var s = text.style;
  90. text.innerHTML = label;
  91. s.fontSize = textSize + "px";
  92. s.fontFamily = "sans-serif";
  93. s.position = "absolute";
  94. s.top = y + "px";
  95. if (anchor == "center") {
  96. s.left = x + "px";
  97. s.textAlign = "center";
  98. } else {
  99. if (anchor == "left") {
  100. s.left = x + "px";
  101. s.textAlign = "left";
  102. } else {
  103. if (anchor == "right") {
  104. s.right = x + "px";
  105. s.textAlign = "right";
  106. }
  107. }
  108. }
  109. return text;
  110. }
  111. if (this.nodes.labels) {
  112. while (this.nodes.labels.childNodes.length > 0) {
  113. this.nodes.labels.removeChild(this.nodes.labels.childNodes[0]);
  114. }
  115. if (this.nodes.labels.parentNode) {
  116. this.nodes.labels.parentNode.removeChild(this.nodes.labels);
  117. this.nodes.labels = null;
  118. }
  119. }
  120. var g = this.nodes.labels = document.createElement("div");
  121. g.setAttribute("id", this.getId() + "-labels");
  122. for (var i = 0; i < this._labels.length; i++) {
  123. var v = this.getCoord(this._labels[i].value, plotArea, plot);
  124. if (plane == "x") {
  125. var node = createLabel(this._labels[i].label, v, coord, textSize, anchor);
  126. document.body.appendChild(node);
  127. node.style.left = v - (node.offsetWidth / 2) + "px";
  128. g.appendChild(node);
  129. } else {
  130. if (plane == "y") {
  131. var node = createLabel(this._labels[i].label, coord, v, textSize, anchor);
  132. document.body.appendChild(node);
  133. node.style.top = v - (node.offsetHeight / 2) + "px";
  134. g.appendChild(node);
  135. }
  136. }
  137. }
  138. return g;
  139. }, render:function (plotArea, plot, drawAgainst, plane) {
  140. if (!this._rerender && this.nodes.main) {
  141. return this.nodes.main;
  142. }
  143. this._rerender = false;
  144. var area = plotArea.getArea();
  145. var stroke = 1;
  146. var style = "stroke:#000;stroke-width:" + stroke + "px;";
  147. var textSize = 10;
  148. var coord = drawAgainst.getCoord(this.origin, plotArea, plot);
  149. var g = this.nodes.main = document.createElement("div");
  150. g.setAttribute("id", this.getId());
  151. var line = this.nodes.axis = document.createElement("v:line");
  152. line.setAttribute("strokecolor", "#000");
  153. line.setAttribute("strokeweight", stroke + "px");
  154. var s = line.style;
  155. s.position = "absolute";
  156. s.top = "0px";
  157. s.left = "0px";
  158. s.antialias = "false";
  159. if (plane == "x") {
  160. line.setAttribute("from", area.left + "px," + coord + "px");
  161. line.setAttribute("to", area.right + "px," + coord + "px");
  162. var y = coord + Math.floor(textSize / 2);
  163. if (this.showLines) {
  164. g.appendChild(this.renderLines(plotArea, plot, plane, y));
  165. }
  166. if (this.showTicks) {
  167. g.appendChild(this.renderTicks(plotArea, plot, plane, coord));
  168. }
  169. if (this.showLabels) {
  170. g.appendChild(this.renderLabels(plotArea, plot, plane, y, textSize, "center"));
  171. }
  172. if (this.showLabel && this.label) {
  173. var x = plotArea.size.width / 2;
  174. var y = coord + Math.round(textSize * 1.5);
  175. var text = document.createElement("div");
  176. var s = text.style;
  177. text.innerHTML = this.label;
  178. s.fontSize = (textSize + 2) + "px";
  179. s.fontFamily = "sans-serif";
  180. s.fontWeight = "bold";
  181. s.position = "absolute";
  182. s.top = y + "px";
  183. s.left = x + "px";
  184. s.textAlign = "center";
  185. document.body.appendChild(text);
  186. text.style.left = x - (text.offsetWidth / 2) + "px";
  187. g.appendChild(text);
  188. }
  189. } else {
  190. line.setAttribute("from", coord + "px," + area.top + "px");
  191. line.setAttribute("to", coord + "px," + area.bottom + "px");
  192. var isMax = this.origin == drawAgainst.range.upper;
  193. var x = coord + 4;
  194. var anchor = "left";
  195. if (!isMax) {
  196. x = area.right - coord + textSize + 4;
  197. anchor = "right";
  198. if (coord == area.left) {
  199. x += (textSize * 2) - (textSize / 2);
  200. }
  201. }
  202. if (this.showLines) {
  203. g.appendChild(this.renderLines(plotArea, plot, plane, x));
  204. }
  205. if (this.showTicks) {
  206. g.appendChild(this.renderTicks(plotArea, plot, plane, coord));
  207. }
  208. if (this.showLabels) {
  209. g.appendChild(this.renderLabels(plotArea, plot, plane, x, textSize, anchor));
  210. }
  211. if (this.showLabel && this.label) {
  212. x += (textSize * 2) - 2;
  213. var y = plotArea.size.height / 2;
  214. var text = document.createElement("div");
  215. var s = text.style;
  216. text.innerHTML = this.label;
  217. s.fontSize = (textSize + 2) + "px";
  218. s.fontFamily = "sans-serif";
  219. s.fontWeight = "bold";
  220. s.position = "absolute";
  221. s.height = plotArea.size.height + "px";
  222. s.writingMode = "tb-rl";
  223. s.textAlign = "center";
  224. s[anchor] = x + "px";
  225. document.body.appendChild(text);
  226. s.top = y - (text.offsetHeight / 2) + "px";
  227. g.appendChild(text);
  228. }
  229. }
  230. g.appendChild(line);
  231. return g;
  232. }});
  233. }