bar_series.js 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. /**
  2. * DevExtreme (viz/series/bar_series.js)
  3. * Version: 19.1.16
  4. * Build date: Tue Oct 18 2022
  5. *
  6. * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED
  7. * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
  8. */
  9. "use strict";
  10. var extend = require("../../core/utils/extend").extend;
  11. var each = require("../../core/utils/iterator").each;
  12. var scatterSeries = require("./scatter_series");
  13. var areaSeries = require("./area_series").chart.area;
  14. var chartSeries = scatterSeries.chart;
  15. var polarSeries = scatterSeries.polar;
  16. var _extend = extend;
  17. var _each = each;
  18. exports.chart = {};
  19. exports.polar = {};
  20. var baseBarSeriesMethods = {
  21. _createLegendState: function(styleOptions, defaultColor) {
  22. return {
  23. fill: styleOptions.color || defaultColor,
  24. hatching: styleOptions.hatching
  25. }
  26. },
  27. _parsePointStyle: function(style, defaultColor, defaultBorderColor) {
  28. var color = style.color || defaultColor;
  29. var base = chartSeries._parsePointStyle.call(this, style, color, defaultBorderColor);
  30. base.fill = color;
  31. base.hatching = style.hatching;
  32. base.dashStyle = style.border && style.border.dashStyle || "solid";
  33. delete base.r;
  34. return base
  35. },
  36. _applyMarkerClipRect: function(settings) {
  37. settings["clip-path"] = null
  38. },
  39. _setGroupsSettings: function(animationEnabled, firstDrawing) {
  40. var that = this;
  41. var settings = {};
  42. chartSeries._setGroupsSettings.apply(that, arguments);
  43. if (animationEnabled && firstDrawing) {
  44. settings = this._getAffineCoordOptions()
  45. } else {
  46. if (!animationEnabled) {
  47. settings = {
  48. scaleX: 1,
  49. scaleY: 1,
  50. translateX: 0,
  51. translateY: 0
  52. }
  53. }
  54. }
  55. that._markersGroup.attr(settings)
  56. },
  57. _drawPoint: function(options) {
  58. options.hasAnimation = options.hasAnimation && !options.firstDrawing;
  59. options.firstDrawing = false;
  60. chartSeries._drawPoint.call(this, options)
  61. },
  62. _getMainColor: function() {
  63. return this._options.mainSeriesColor
  64. },
  65. _createPointStyles: function(pointOptions) {
  66. var that = this;
  67. var mainColor = pointOptions.color || that._getMainColor();
  68. return {
  69. normal: that._parsePointStyle(pointOptions, mainColor, mainColor),
  70. hover: that._parsePointStyle(pointOptions.hoverStyle || {}, mainColor, mainColor),
  71. selection: that._parsePointStyle(pointOptions.selectionStyle || {}, mainColor, mainColor)
  72. }
  73. },
  74. _updatePointsVisibility: function() {
  75. var visibility = this._options.visible;
  76. each(this._points, function(_, point) {
  77. point._options.visible = visibility
  78. })
  79. },
  80. _getOptionsForPoint: function() {
  81. return this._options
  82. },
  83. _animate: function(firstDrawing) {
  84. var that = this;
  85. var complete = function() {
  86. that._animateComplete()
  87. };
  88. var animateFunc = function(drawnPoints, complete) {
  89. var lastPointIndex = drawnPoints.length - 1;
  90. _each(drawnPoints || [], function(i, point) {
  91. point.animate(i === lastPointIndex ? complete : void 0, point.getMarkerCoords())
  92. })
  93. };
  94. that._animatePoints(firstDrawing, complete, animateFunc)
  95. },
  96. getValueRangeInitialValue: areaSeries.getValueRangeInitialValue,
  97. _patchMarginOptions: function(options) {
  98. options.checkInterval = true;
  99. return options
  100. },
  101. _defaultAggregator: "sum",
  102. _defineDrawingState: function() {},
  103. usePointsToDefineAutoHiding: function() {
  104. return false
  105. }
  106. };
  107. exports.chart.bar = _extend({}, chartSeries, baseBarSeriesMethods, {
  108. _getAffineCoordOptions: function() {
  109. var rotated = this._options.rotated;
  110. var direction = rotated ? "X" : "Y";
  111. var settings = {
  112. scaleX: rotated ? .001 : 1,
  113. scaleY: rotated ? 1 : .001
  114. };
  115. settings["translate" + direction] = this.getValueAxis().getTranslator().translate("canvas_position_default");
  116. return settings
  117. },
  118. _animatePoints: function(firstDrawing, complete, animateFunc) {
  119. var that = this;
  120. that._markersGroup.animate({
  121. scaleX: 1,
  122. scaleY: 1,
  123. translateY: 0,
  124. translateX: 0
  125. }, void 0, complete);
  126. if (!firstDrawing) {
  127. animateFunc(that._drawnPoints, complete)
  128. }
  129. },
  130. checkSeriesViewportCoord: function(axis, coord) {
  131. if (0 === this._points.length) {
  132. return false
  133. }
  134. if (axis.isArgumentAxis) {
  135. return true
  136. }
  137. var translator = axis.getTranslator();
  138. var range = this.getViewport();
  139. var min = translator.translate(range.categories ? range.categories[0] : range.min);
  140. var max = translator.translate(range.categories ? range.categories[range.categories.length - 1] : range.max);
  141. var rotated = this.getOptions().rotated;
  142. var inverted = axis.getOptions().inverted;
  143. return rotated && !inverted || !rotated && inverted ? coord >= min && coord <= max : coord >= max && coord <= min
  144. },
  145. getSeriesPairCoord: function(coord, isArgument) {
  146. var oppositeCoord = null;
  147. var rotated = this._options.rotated;
  148. var isOpposite = !isArgument && !rotated || isArgument && rotated;
  149. var coordName = isOpposite ? "vy" : "vx";
  150. var oppositeCoordName = isOpposite ? "vx" : "vy";
  151. var points = this.getPoints();
  152. for (var i = 0; i < points.length; i++) {
  153. var p = points[i];
  154. var tmpCoord = void 0;
  155. if (isArgument) {
  156. tmpCoord = p.getCenterCoord()[coordName[1]] === coord ? p[oppositeCoordName] : void 0
  157. } else {
  158. tmpCoord = p[coordName] === coord ? p[oppositeCoordName] : void 0
  159. }
  160. if (this.checkAxisVisibleAreaCoord(!isArgument, tmpCoord)) {
  161. oppositeCoord = tmpCoord;
  162. break
  163. }
  164. }
  165. return oppositeCoord
  166. }
  167. });
  168. exports.polar.bar = _extend({}, polarSeries, baseBarSeriesMethods, {
  169. _animatePoints: function(firstDrawing, complete, animateFunc) {
  170. animateFunc(this._drawnPoints, complete)
  171. },
  172. _setGroupsSettings: chartSeries._setGroupsSettings,
  173. _drawPoint: function(point, groups, animationEnabled) {
  174. chartSeries._drawPoint.call(this, point, groups, animationEnabled)
  175. },
  176. _parsePointStyle: function(style) {
  177. var base = baseBarSeriesMethods._parsePointStyle.apply(this, arguments);
  178. base.opacity = style.opacity;
  179. return base
  180. },
  181. _createGroups: chartSeries._createGroups,
  182. _setMarkerGroupSettings: function() {
  183. var that = this;
  184. var markersSettings = that._createPointStyles(that._getMarkerGroupOptions()).normal;
  185. markersSettings.class = "dxc-markers";
  186. that._applyMarkerClipRect(markersSettings);
  187. var groupSettings = _extend({}, markersSettings);
  188. delete groupSettings.opacity;
  189. that._markersGroup.attr(groupSettings)
  190. },
  191. _createLegendState: areaSeries._createLegendState
  192. });