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

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.Axis");
  9. dojo.require("dojo.lang.common");
  10. dojo.charting.Axis = function (label, scale, labels) {
  11. var id = "dojo-charting-axis-" + dojo.charting.Axis.count++;
  12. this.getId = function () {
  13. return id;
  14. };
  15. this.setId = function (key) {
  16. id = key;
  17. };
  18. this.scale = scale || "linear";
  19. this.label = label || "";
  20. this.showLabel = true;
  21. this.showLabels = true;
  22. this.showLines = false;
  23. this.showTicks = false;
  24. this.range = {upper:100, lower:0};
  25. this.origin = "min";
  26. this._origin = null;
  27. this.labels = labels || [];
  28. this._labels = [];
  29. this.nodes = {main:null, axis:null, label:null, labels:null, lines:null, ticks:null};
  30. this._rerender = false;
  31. };
  32. dojo.charting.Axis.count = 0;
  33. dojo.extend(dojo.charting.Axis, {getCoord:function (val, plotArea, plot) {
  34. val = parseFloat(val, 10);
  35. var area = plotArea.getArea();
  36. if (plot.axisX == this) {
  37. var offset = 0 - this.range.lower;
  38. var min = this.range.lower + offset;
  39. var max = this.range.upper + offset;
  40. val += offset;
  41. return (val * ((area.right - area.left) / max)) + area.left;
  42. } else {
  43. var max = this.range.upper;
  44. var min = this.range.lower;
  45. var offset = 0;
  46. if (min < 0) {
  47. offset += Math.abs(min);
  48. }
  49. max += offset;
  50. min += offset;
  51. val += offset;
  52. var pmin = area.bottom;
  53. var pmax = area.top;
  54. return (((pmin - pmax) / (max - min)) * (max - val)) + pmax;
  55. }
  56. }, initializeOrigin:function (drawAgainst, plane) {
  57. if (this._origin == null) {
  58. this._origin = this.origin;
  59. }
  60. if (isNaN(this._origin)) {
  61. if (this._origin.toLowerCase() == "max") {
  62. this.origin = drawAgainst.range[(plane == "y") ? "upper" : "lower"];
  63. } else {
  64. if (this._origin.toLowerCase() == "min") {
  65. this.origin = drawAgainst.range[(plane == "y") ? "lower" : "upper"];
  66. } else {
  67. this.origin = 0;
  68. }
  69. }
  70. }
  71. }, initializeLabels:function () {
  72. this._labels = [];
  73. if (this.labels.length == 0) {
  74. this.showLabels = false;
  75. this.showLines = false;
  76. this.showTicks = false;
  77. } else {
  78. if (this.labels[0].label && this.labels[0].value != null) {
  79. for (var i = 0; i < this.labels.length; i++) {
  80. this._labels.push(this.labels[i]);
  81. }
  82. } else {
  83. if (!isNaN(this.labels[0])) {
  84. for (var i = 0; i < this.labels.length; i++) {
  85. this._labels.push({label:this.labels[i], value:this.labels[i]});
  86. }
  87. } else {
  88. var a = [];
  89. for (var i = 0; i < this.labels.length; i++) {
  90. a.push(this.labels[i]);
  91. }
  92. var s = a.shift();
  93. this._labels.push({label:s, value:this.range.lower});
  94. if (a.length > 0) {
  95. var s = a.pop();
  96. this._labels.push({label:s, value:this.range.upper});
  97. }
  98. if (a.length > 0) {
  99. var range = this.range.upper - this.range.lower;
  100. var step = range / (this.labels.length - 1);
  101. for (var i = 1; i <= a.length; i++) {
  102. this._labels.push({label:a[i - 1], value:this.range.lower + (step * i)});
  103. }
  104. }
  105. }
  106. }
  107. }
  108. }, initialize:function (plotArea, plot, drawAgainst, plane) {
  109. this.destroy();
  110. this.initializeOrigin(drawAgainst, plane);
  111. this.initializeLabels();
  112. var node = this.render(plotArea, plot, drawAgainst, plane);
  113. return node;
  114. }, destroy:function () {
  115. for (var p in this.nodes) {
  116. while (this.nodes[p] && this.nodes[p].childNodes.length > 0) {
  117. this.nodes[p].removeChild(this.nodes[p].childNodes[0]);
  118. }
  119. if (this.nodes[p] && this.nodes[p].parentNode) {
  120. this.nodes[p].parentNode.removeChild(this.nodes[p]);
  121. }
  122. this.nodes[p] = null;
  123. }
  124. }});
  125. dojo.requireIf(dojo.render.svg.capable, "dojo.charting.svg.Axis");
  126. dojo.requireIf(dojo.render.vml.capable, "dojo.charting.vml.Axis");