@opentinyvue/vue-huicharts-candle 2.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +22 -0
- package/index.d.ts +3 -0
- package/lib/index.js +217 -0
- package/package.json +20 -0
- package/src/candle.d.ts +33 -0
- package/src/chart-candle.vue.d.ts +6 -0
- package/src/types.d.ts +26 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2022 - present TinyVue Authors.
|
|
4
|
+
Copyright (c) 2022 - present Huawei Cloud Computing Technologies Co., Ltd.
|
|
5
|
+
|
|
6
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
8
|
+
in the Software without restriction, including without limitation the rights
|
|
9
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
11
|
+
furnished to do so, subject to the following conditions:
|
|
12
|
+
|
|
13
|
+
The above copyright notice and this permission notice shall be included in all
|
|
14
|
+
copies or substantial portions of the Software.
|
|
15
|
+
|
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
22
|
+
SOFTWARE.
|
package/index.d.ts
ADDED
package/lib/index.js
ADDED
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
import Core, { itemContent, itemPoint, itemLabel, getFormatted } from '@opentinyvue/vue-huicharts-core';
|
|
2
|
+
import { t } from '@opentinyvue/vue-locale';
|
|
3
|
+
import { $prefix } from '@opentinyvue/vue-common';
|
|
4
|
+
|
|
5
|
+
function normalizeComponent(scriptExports, render, staticRenderFns, functionalTemplate, injectStyles, scopeId, moduleIdentifier, shadowMode) {
|
|
6
|
+
var options = typeof scriptExports === "function" ? scriptExports.options : scriptExports;
|
|
7
|
+
if (render) {
|
|
8
|
+
options.render = render;
|
|
9
|
+
options.staticRenderFns = staticRenderFns;
|
|
10
|
+
options._compiled = true;
|
|
11
|
+
}
|
|
12
|
+
var hook;
|
|
13
|
+
if (injectStyles) {
|
|
14
|
+
hook = injectStyles;
|
|
15
|
+
}
|
|
16
|
+
if (hook) {
|
|
17
|
+
if (options.functional) {
|
|
18
|
+
options._injectStyles = hook;
|
|
19
|
+
var originalRender = options.render;
|
|
20
|
+
options.render = function renderWithStyleInjection(h, context) {
|
|
21
|
+
hook.call(context);
|
|
22
|
+
return originalRender(h, context);
|
|
23
|
+
};
|
|
24
|
+
} else {
|
|
25
|
+
var existing = options.beforeCreate;
|
|
26
|
+
options.beforeCreate = existing ? [].concat(existing, hook) : [hook];
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return {
|
|
30
|
+
exports: scriptExports,
|
|
31
|
+
options
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
var isNull = function isNull2(x) {
|
|
36
|
+
return x === null || x === void 0;
|
|
37
|
+
};
|
|
38
|
+
var defaultKName = "";
|
|
39
|
+
var getLegend = function getLegend2(args) {
|
|
40
|
+
var legendVisible = args.legendVisible;
|
|
41
|
+
if (!legendVisible) {
|
|
42
|
+
return {
|
|
43
|
+
show: false
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
var MA = args.MA, labelMap = args.labelMap, legendName = args.legendName, showMA = args.showMA;
|
|
47
|
+
var data2 = [defaultKName];
|
|
48
|
+
showMA && (data2 = data2.concat(MA.map(function(v) {
|
|
49
|
+
return "MA" + v;
|
|
50
|
+
})));
|
|
51
|
+
data2 = data2.map(function(v) {
|
|
52
|
+
return {
|
|
53
|
+
name: v
|
|
54
|
+
};
|
|
55
|
+
});
|
|
56
|
+
var formatter = function formatter2(name) {
|
|
57
|
+
var temp = labelMap[name];
|
|
58
|
+
return isNull(legendName[name]) ? isNull(temp) ? name : temp : legendName[name];
|
|
59
|
+
};
|
|
60
|
+
return {
|
|
61
|
+
show: true,
|
|
62
|
+
data: data2,
|
|
63
|
+
formatter
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
var getTooltip = function getTooltip2(args) {
|
|
67
|
+
var dataType = args.dataType, digit = args.digit, labelMap = args.labelMap, metrics = args.metrics;
|
|
68
|
+
var position = function position2(pos, params, dom, rect, size) {
|
|
69
|
+
var result = {
|
|
70
|
+
top: 10
|
|
71
|
+
};
|
|
72
|
+
var side = pos[0] < size.viewSize[0] / 2 ? "right" : "left";
|
|
73
|
+
result[side] = 60;
|
|
74
|
+
return result;
|
|
75
|
+
};
|
|
76
|
+
var formatter = function formatter2(options) {
|
|
77
|
+
var tplt = [];
|
|
78
|
+
tplt.push(itemContent(options[0].axisValue) + "<br>");
|
|
79
|
+
options.forEach(function(opt) {
|
|
80
|
+
var color = opt.color, componentSubType = opt.componentSubType, data2 = opt.data, seriesName = opt.seriesName;
|
|
81
|
+
var name = isNull(labelMap[seriesName]) ? seriesName : labelMap[seriesName];
|
|
82
|
+
tplt.push("" + itemPoint(color) + itemLabel(name) + ": ");
|
|
83
|
+
if (componentSubType === "candlestick") {
|
|
84
|
+
tplt.push("<br>");
|
|
85
|
+
metrics.slice(0, 4).forEach(function(m, i) {
|
|
86
|
+
var name2 = isNull(labelMap[m]) ? m : labelMap[m];
|
|
87
|
+
var value2 = getFormatted(data2[i + 1], dataType, digit);
|
|
88
|
+
tplt.push("" + itemLabel("- " + name2) + itemContent(value2) + "<br>");
|
|
89
|
+
});
|
|
90
|
+
} else if (componentSubType === "line") {
|
|
91
|
+
var value = getFormatted(data2, dataType, digit);
|
|
92
|
+
tplt.push(itemContent(value) + "<br>");
|
|
93
|
+
} else if (componentSubType === "bar") {
|
|
94
|
+
var _value = getFormatted(data2[1], dataType, digit);
|
|
95
|
+
tplt.push(itemContent(_value) + "<br>");
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
return tplt.join("");
|
|
99
|
+
};
|
|
100
|
+
return {
|
|
101
|
+
axisPointer: {
|
|
102
|
+
type: "cross"
|
|
103
|
+
},
|
|
104
|
+
formatter,
|
|
105
|
+
position,
|
|
106
|
+
trigger: "axis"
|
|
107
|
+
};
|
|
108
|
+
};
|
|
109
|
+
var getData = function getData2(args) {
|
|
110
|
+
var rows = args.rows, dimension = args.dimension, metrics = args.metrics;
|
|
111
|
+
return rows.map(function(item) {
|
|
112
|
+
var _ref2;
|
|
113
|
+
if (Array.isArray(item)) {
|
|
114
|
+
var _ref;
|
|
115
|
+
var newKeys = metrics.map(function(keyname) {
|
|
116
|
+
return keyname === "vol" ? "volume" : keyname;
|
|
117
|
+
});
|
|
118
|
+
newKeys.unshift(dimension);
|
|
119
|
+
return _ref = {}, _ref[newKeys[0]] = item[0], _ref[newKeys[1]] = item[1], _ref[newKeys[2]] = item[2], _ref[newKeys[3]] = item[3], _ref[newKeys[4]] = item[4], _ref[newKeys[5]] = item[5], _ref;
|
|
120
|
+
}
|
|
121
|
+
return _ref2 = {}, _ref2[dimension] = item[dimension], _ref2.open = item[metrics[0]], _ref2.close = item[metrics[1]], _ref2.lowest = item[metrics[2]], _ref2.highest = item[metrics[3]], _ref2.volume = item[metrics[4]], _ref2;
|
|
122
|
+
});
|
|
123
|
+
};
|
|
124
|
+
var candle = function candle2(columns, rows, settings, extra) {
|
|
125
|
+
var _settings$dimension = settings.dimension, dimension = _settings$dimension === void 0 ? columns[0] : _settings$dimension, _settings$metrics = settings.metrics, metrics = _settings$metrics === void 0 ? columns.slice(1, 6) : _settings$metrics, _settings$digit = settings.digit, digit = _settings$digit === void 0 ? 2 : _settings$digit; settings.itemStyle;
|
|
126
|
+
var _settings$labelMap = settings.labelMap, labelMap = _settings$labelMap === void 0 ? {} : _settings$labelMap, _settings$legendName = settings.legendName, legendName = _settings$legendName === void 0 ? {} : _settings$legendName, _settings$MA = settings.MA, MA = _settings$MA === void 0 ? [5, 10, 20, 30] : _settings$MA, _settings$showMA = settings.showMA, showMA = _settings$showMA === void 0 ? false : _settings$showMA, _settings$showVol = settings.showVol, showVol = _settings$showVol === void 0 ? false : _settings$showVol;
|
|
127
|
+
var _settings$showDataZoo = settings.showDataZoom, showDataZoom = _settings$showDataZoo === void 0 ? false : _settings$showDataZoo, _settings$downColor = settings.downColor, downColor = _settings$downColor === void 0 ? "#eb171f" : _settings$downColor, _settings$upColor = settings.upColor, upColor = _settings$upColor === void 0 ? "#00a874" : _settings$upColor;
|
|
128
|
+
var _settings$start = settings.start, start = _settings$start === void 0 ? 50 : _settings$start, _settings$end = settings.end, end = _settings$end === void 0 ? 100 : _settings$end, dataType = settings.dataType;
|
|
129
|
+
var tooltipVisible = extra.tooltipVisible, legendVisible = extra.legendVisible, t2 = extra.t;
|
|
130
|
+
defaultKName = t2("ui.chart.kName");
|
|
131
|
+
var data2 = getData({
|
|
132
|
+
dimension,
|
|
133
|
+
metrics,
|
|
134
|
+
rows
|
|
135
|
+
});
|
|
136
|
+
var legend = getLegend({
|
|
137
|
+
legendVisible,
|
|
138
|
+
MA,
|
|
139
|
+
labelMap,
|
|
140
|
+
legendName,
|
|
141
|
+
showMA
|
|
142
|
+
});
|
|
143
|
+
var ichartOption = {
|
|
144
|
+
legend,
|
|
145
|
+
MA: showMA ? MA : [],
|
|
146
|
+
volume: showVol,
|
|
147
|
+
data: data2,
|
|
148
|
+
upColor,
|
|
149
|
+
downColor
|
|
150
|
+
};
|
|
151
|
+
if (tooltipVisible) {
|
|
152
|
+
ichartOption.tooltip = getTooltip({
|
|
153
|
+
dataType,
|
|
154
|
+
digit,
|
|
155
|
+
labelMap,
|
|
156
|
+
metrics
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
if (showDataZoom) {
|
|
160
|
+
ichartOption.dataZoom = {
|
|
161
|
+
show: true,
|
|
162
|
+
start,
|
|
163
|
+
end
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
return ichartOption;
|
|
167
|
+
};
|
|
168
|
+
var render = function render2() {
|
|
169
|
+
var _vm = this;
|
|
170
|
+
var _h = _vm.$createElement;
|
|
171
|
+
var _c = _vm._self._c || _h;
|
|
172
|
+
return _c("div", {
|
|
173
|
+
staticClass: "hui-chart chart-box"
|
|
174
|
+
}, [_c("div", {
|
|
175
|
+
ref: "chartRef",
|
|
176
|
+
style: {
|
|
177
|
+
width: _vm.width,
|
|
178
|
+
height: _vm.height
|
|
179
|
+
}
|
|
180
|
+
}), _vm._t("default")], 2);
|
|
181
|
+
};
|
|
182
|
+
var staticRenderFns = [];
|
|
183
|
+
var __vue2_script = {
|
|
184
|
+
name: $prefix + "ChartCandle",
|
|
185
|
+
mixins: [Core],
|
|
186
|
+
data: function data() {
|
|
187
|
+
return {
|
|
188
|
+
iChartName: "CandlestickChart"
|
|
189
|
+
};
|
|
190
|
+
},
|
|
191
|
+
methods: {
|
|
192
|
+
updateChart: function updateChart(data2) {
|
|
193
|
+
var _data$columns = data2.columns, columns = _data$columns === void 0 ? [] : _data$columns, _data$rows = data2.rows, rows = _data$rows === void 0 ? [] : _data$rows;
|
|
194
|
+
var extra = {
|
|
195
|
+
tooltipVisible: this.tooltipVisible,
|
|
196
|
+
legendVisible: this.legendVisible,
|
|
197
|
+
t
|
|
198
|
+
};
|
|
199
|
+
this.huiChartOption = candle(columns, rows, this.settings, extra);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
};
|
|
203
|
+
var __cssModules = {};
|
|
204
|
+
var __component__ = /* @__PURE__ */ normalizeComponent(__vue2_script, render, staticRenderFns, false, __vue2_injectStyles);
|
|
205
|
+
function __vue2_injectStyles(context) {
|
|
206
|
+
for (var o in __cssModules) {
|
|
207
|
+
this[o] = __cssModules[o];
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
var HuiChartsCandle = /* @__PURE__ */ function() {
|
|
211
|
+
return __component__.exports;
|
|
212
|
+
}();
|
|
213
|
+
HuiChartsCandle.install = function(Vue) {
|
|
214
|
+
Vue.component(HuiChartsCandle.name, HuiChartsCandle);
|
|
215
|
+
};
|
|
216
|
+
|
|
217
|
+
export { HuiChartsCandle, HuiChartsCandle as default };
|
package/package.json
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@opentinyvue/vue-huicharts-candle",
|
|
3
|
+
"version": "2.21.0",
|
|
4
|
+
"description": "",
|
|
5
|
+
"main": "./lib/index.js",
|
|
6
|
+
"module": "./lib/index.js",
|
|
7
|
+
"sideEffects": false,
|
|
8
|
+
"type": "module",
|
|
9
|
+
"dependencies": {
|
|
10
|
+
"@opentinyvue/vue-huicharts-core": "~2.21.0",
|
|
11
|
+
"@opentinyvue/vue-locale": "~2.21.0",
|
|
12
|
+
"@opentinyvue/vue-common": "~2.21.0"
|
|
13
|
+
},
|
|
14
|
+
"license": "MIT",
|
|
15
|
+
"types": "index.d.ts",
|
|
16
|
+
"scripts": {
|
|
17
|
+
"build": "pnpm -w build:ui $npm_package_name",
|
|
18
|
+
"//postversion": "pnpm build"
|
|
19
|
+
}
|
|
20
|
+
}
|
package/src/candle.d.ts
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dimension 维度 string 默认为 columns[0]
|
|
3
|
+
* metrics 指标 array 默认为 [columns[1] ~ columns[5]]
|
|
4
|
+
* digit 设置数据类型为 percent 时保留的位数 number 默认为 2
|
|
5
|
+
* itemStyle 图形样式 object 内容参考文档
|
|
6
|
+
* labelMap 设置指标的别名 object -
|
|
7
|
+
* legendName 设置图表上方图例的别名 object -
|
|
8
|
+
* showMA 是否展示移动平均线指标 boolean 默认 为 false
|
|
9
|
+
* MA 移动平均线指标周期 array 默认 [5, 10, 20, 30]
|
|
10
|
+
* showVol 是否展示成交量 boolean 默认为 false
|
|
11
|
+
* downColor 下降颜色 string 默认为 #ec0000
|
|
12
|
+
* upColor 上升颜色 string 默认为 #00da3c
|
|
13
|
+
* showDataZoom 是否展示 dataZoom 控件 boolean 默认为 false
|
|
14
|
+
* start dataZoom 控件的起始位置 number 默认为 50,即中间位置
|
|
15
|
+
* end dataZoom 控件的结束位置 number 默认为 100,即末尾位置
|
|
16
|
+
* dataType 数据展示格式 string 可选值: KMB, normal, percent
|
|
17
|
+
*/
|
|
18
|
+
export declare const candle: (columns: any, rows: any, settings: any, extra: any) => {
|
|
19
|
+
legend: {
|
|
20
|
+
show: boolean;
|
|
21
|
+
data?: undefined;
|
|
22
|
+
formatter?: undefined;
|
|
23
|
+
} | {
|
|
24
|
+
show: boolean;
|
|
25
|
+
data: string[];
|
|
26
|
+
formatter: (name: any) => any;
|
|
27
|
+
};
|
|
28
|
+
MA: any;
|
|
29
|
+
volume: any;
|
|
30
|
+
data: any;
|
|
31
|
+
upColor: any;
|
|
32
|
+
downColor: any;
|
|
33
|
+
};
|
package/src/types.d.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*
|
|
3
|
+
* @title Props
|
|
4
|
+
*/
|
|
5
|
+
export interface TinyCandleProps {
|
|
6
|
+
/**
|
|
7
|
+
* @zh 数据由指标和维度组成,“维度” 指的是数据的属性,“指标” 是量化衡量标准
|
|
8
|
+
*
|
|
9
|
+
*/
|
|
10
|
+
dimension?: object;
|
|
11
|
+
/**
|
|
12
|
+
* @zh 配置项,各图表 Settings 属性配置请查阅各图表详情页面
|
|
13
|
+
*
|
|
14
|
+
*/
|
|
15
|
+
settings?: Object;
|
|
16
|
+
/**
|
|
17
|
+
* @zh 设置图表容器的宽度。
|
|
18
|
+
*
|
|
19
|
+
*/
|
|
20
|
+
width?: string;
|
|
21
|
+
/**
|
|
22
|
+
* @zh 设置图表容器的高度
|
|
23
|
+
*
|
|
24
|
+
*/
|
|
25
|
+
height?: string;
|
|
26
|
+
}
|