1 | import { __assign, __extends } from "tslib";
|
2 | import { jsx } from '@antv/f-engine';
|
3 | import { isNil, mix } from '@antv/util';
|
4 | import Geometry from '../geometry';
|
5 |
|
6 | var COLORS = ['#E62C3B', '#0E9976', '#999999'
|
7 | ];
|
8 | export default (function (View) {
|
9 | return 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 |
|
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 |