common.js 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. import { __spreadArray } from "tslib";
  2. import { each, isNil, isObject } from '@antv/util';
  3. import { AXIS_META_CONFIG_KEYS } from '../constant';
  4. import { addViewAnimation, deepAssign, pick } from '../utils';
  5. /**
  6. * 通用 legend 配置, 适用于带 colorField 或 seriesField 的图表
  7. * @param params
  8. */
  9. export function legend(params) {
  10. var chart = params.chart, options = params.options;
  11. var legend = options.legend, colorField = options.colorField, seriesField = options.seriesField;
  12. if (legend === false) {
  13. chart.legend(false);
  14. }
  15. else if (colorField || seriesField) {
  16. chart.legend(colorField || seriesField, legend);
  17. }
  18. return params;
  19. }
  20. /**
  21. * 通用 tooltip 配置
  22. * @param params
  23. */
  24. export function tooltip(params) {
  25. var chart = params.chart, options = params.options;
  26. var tooltip = options.tooltip;
  27. if (tooltip !== undefined) {
  28. chart.tooltip(tooltip);
  29. }
  30. return params;
  31. }
  32. /**
  33. * Interaction 配置
  34. * @param params
  35. */
  36. export function interaction(params) {
  37. var chart = params.chart, options = params.options;
  38. var interactions = options.interactions;
  39. each(interactions, function (i) {
  40. if (i.enable === false) {
  41. chart.removeInteraction(i.type);
  42. }
  43. else {
  44. chart.interaction(i.type, i.cfg || {});
  45. }
  46. });
  47. return params;
  48. }
  49. /**
  50. * 动画
  51. * @param params
  52. */
  53. export function animation(params) {
  54. var chart = params.chart, options = params.options;
  55. var animation = options.animation;
  56. // 所有的 Geometry 都使用同一动画(各个图形如有区别,自行覆盖)
  57. addViewAnimation(chart, animation);
  58. return params;
  59. }
  60. /**
  61. * 设置全局主题配置
  62. * @param params
  63. */
  64. export function theme(params) {
  65. var chart = params.chart, options = params.options;
  66. var theme = options.theme;
  67. // 存在主题才设置主题
  68. if (theme) {
  69. chart.theme(theme);
  70. }
  71. return params;
  72. }
  73. /**
  74. * 状态 state 配置
  75. * @param params
  76. */
  77. export function state(params) {
  78. var chart = params.chart, options = params.options;
  79. var state = options.state;
  80. if (state) {
  81. each(chart.geometries, function (geometry) {
  82. geometry.state(state);
  83. });
  84. }
  85. return params;
  86. }
  87. /**
  88. * 处理缩略轴的 adaptor
  89. * @param params
  90. */
  91. export function slider(params) {
  92. var chart = params.chart, options = params.options;
  93. var slider = options.slider;
  94. chart.option('slider', slider);
  95. return params;
  96. }
  97. /**
  98. * 处理缩略轴的 adaptor
  99. * @param params
  100. */
  101. export function scrollbar(params) {
  102. var chart = params.chart, options = params.options;
  103. var scrollbar = options.scrollbar;
  104. chart.option('scrollbar', scrollbar);
  105. return params;
  106. }
  107. /**
  108. * scale 的 adaptor
  109. * @param axes
  110. */
  111. export function scale(axes, meta) {
  112. return function (params) {
  113. var chart = params.chart, options = params.options;
  114. // 1. 轴配置中的 scale 信息
  115. var scales = {};
  116. each(axes, function (axis, field) {
  117. scales[field] = pick(axis, AXIS_META_CONFIG_KEYS);
  118. });
  119. // 2. meta 直接是 scale 的信息
  120. scales = deepAssign({}, meta, options.meta, scales);
  121. chart.scale(scales);
  122. return params;
  123. };
  124. }
  125. /**
  126. * annotation 配置
  127. * @param params
  128. */
  129. export function annotation(annotationOptions) {
  130. return function (params) {
  131. var chart = params.chart, options = params.options;
  132. var annotationController = chart.getController('annotation');
  133. /** 自定义 annotation */
  134. each(__spreadArray(__spreadArray([], (options.annotations || []), true), (annotationOptions || []), true), function (annotationOption) {
  135. // @ts-ignore
  136. annotationController.annotation(annotationOption);
  137. });
  138. return params;
  139. };
  140. }
  141. /**
  142. * 自动设置 limitInPlot
  143. * @param params
  144. */
  145. export function limitInPlot(params) {
  146. var chart = params.chart, options = params.options;
  147. var yAxis = options.yAxis, limitInPlot = options.limitInPlot;
  148. var value = limitInPlot;
  149. // 用户没有设置 limitInPlot,则自动根据 yAxis 是否有 min/max 来设置 limitInPlot
  150. if (isObject(yAxis) && isNil(limitInPlot)) {
  151. if (Object.values(pick(yAxis, ['min', 'max', 'minLimit', 'maxLimit'])).some(function (value) { return !isNil(value); })) {
  152. value = true;
  153. }
  154. else {
  155. value = false;
  156. }
  157. }
  158. chart.limitInPlot = value;
  159. return params;
  160. }
  161. /**
  162. * 坐标系转换
  163. */
  164. export function transformations(coordinateType) {
  165. if (coordinateType === void 0) { coordinateType = 'rect'; }
  166. return function (params) {
  167. var chart = params.chart, options = params.options;
  168. var coordinate = options.coordinate;
  169. var actions = Array.from(coordinate || [])
  170. .map(function (cfg) {
  171. if (cfg.type === 'reflectX')
  172. return ['reflect', 'x'];
  173. if (cfg.type === 'reflectY')
  174. return ['reflect', 'y'];
  175. if (cfg.type === 'transpose')
  176. return ['transpose'];
  177. return null;
  178. })
  179. .filter(function (d) { return !!d; });
  180. if (actions.length !== 0) {
  181. chart.coordinate({ type: coordinateType, actions: actions });
  182. }
  183. return params;
  184. };
  185. }
  186. export { pattern } from './pattern';
  187. //# sourceMappingURL=common.js.map