UNPKG

3.48 kBJavaScriptView Raw
1import { __assign, __extends } from "tslib";
2import { jsx } from '@antv/f-engine';
3import { isNil, mix } from '@antv/util';
4import Geometry from '../geometry';
5// 默认配色
6var COLORS = ['#E62C3B', '#0E9976', '#999999' // 平盘
7];
8export default (function (View) {
9 return /** @class */function (_super) {
10 __extends(Candlestick, _super);
11 function Candlestick() {
12 return _super !== null && _super.apply(this, arguments) || this;
13 }
14 Candlestick.prototype.getDefaultCfg = function () {
15 return {
16 geomType: 'candlestick'
17 };
18 };
19 Candlestick.prototype.getSize = function () {
20 var _a = this,
21 attrs = _a.attrs,
22 props = _a.props;
23 var _b = props.sizeRatio,
24 sizeRatio = _b === void 0 ? 0.5 : _b;
25 var x = attrs.x;
26 var scale = x.scale;
27 var values = scale.values;
28 return 1 / values.length * sizeRatio;
29 };
30 Candlestick.prototype._getColor = function (colors, child, prevChild) {
31 var normalized = child.normalized;
32 // 处理颜色
33 var y = normalized.y;
34 var open = y[0],
35 close = y[1];
36 if (close > open) {
37 return colors[0];
38 }
39 if (close < open) {
40 return colors[1];
41 }
42 // 相等的情况下,再和昨日的收盘价比较
43 if (!prevChild) {
44 // 第一个固定为涨
45 return colors[0];
46 }
47 var prevNormalized = prevChild.normalized;
48 // 处理颜色
49 var prevY = prevNormalized.y;
50 var prevClose = prevY[1];
51 if (close > prevClose) {
52 return colors[0];
53 }
54 if (close < prevClose) {
55 return colors[1];
56 }
57 return colors[2];
58 };
59 Candlestick.prototype.mapping = function () {
60 var records = _super.prototype.mapping.call(this);
61 var props = this.props;
62 var coord = props.coord;
63 var y0 = this.getY0Value();
64 var defaultSize = this.getSize();
65 var colorAttr = this.getAttr('color');
66 var colors = colorAttr ? colorAttr.range : COLORS;
67 for (var i = 0, len = records.length; i < len; i++) {
68 var record = records[i];
69 var children = record.children;
70 for (var j = 0, len_1 = children.length; j < len_1; j++) {
71 var child = children[j];
72 var normalized = child.normalized,
73 mappedSize = child.size;
74 // 没有指定size,则根据数据来计算默认size
75 if (isNil(mappedSize)) {
76 var x = normalized.x,
77 y = normalized.y,
78 _a = normalized.size,
79 size = _a === void 0 ? defaultSize : _a;
80 mix(child, coord.convertRect({
81 x: x,
82 y: y,
83 y0: y0,
84 size: size
85 }));
86 } else {
87 var x = child.x,
88 y = child.y;
89 var rect = {
90 x: x,
91 y: y,
92 y0: y0,
93 size: mappedSize
94 };
95 mix(child, coord.transformToRect(rect));
96 }
97 // 处理颜色
98 child.color = this._getColor(colors, child, children[j - 1]);
99 mix(child.shape, this.getSelectionStyle(child));
100 }
101 }
102 return records;
103 };
104 Candlestick.prototype.render = function () {
105 var props = this.props;
106 var records = this.mapping();
107 return jsx(View, __assign({}, props, {
108 records: records
109 }));
110 };
111 return Candlestick;
112 }(Geometry);
113});
\No newline at end of file