更新:添加每日和每月数据选项,修改相关URL参数,更新JavaScript文件,增加股票指数历史数据获取功能
This commit is contained in:
+101
@@ -1,3 +1,11 @@
|
||||
/*
|
||||
* @Author: 杨水淼 yangshuimiao@jsjd.cc
|
||||
* @Date: 2025-03-21 11:58:51
|
||||
* @LastEditors: 杨水淼 yangshuimiao@jsjd.cc
|
||||
* @LastEditTime: 2025-07-08 14:47:38
|
||||
* @FilePath: \echarts\js\pubfunc.js
|
||||
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
||||
*/
|
||||
/**
|
||||
* hide switch the iframe
|
||||
* @param cbid:checkbox id
|
||||
@@ -32,4 +40,97 @@ function getRows(jsonData,array){
|
||||
|
||||
return listSplit;
|
||||
|
||||
}
|
||||
|
||||
function dmChange(parid,dayblock,monblock){
|
||||
var v= $('#'+parid).val();
|
||||
if(v=='Monthly'){
|
||||
$('#'+dayblock).css('display','none');
|
||||
$('#'+monblock).css('display','inline');
|
||||
}
|
||||
if(v=='Daily'){
|
||||
$('#'+dayblock).css('display','inline');
|
||||
$('#'+monblock).css('display','none');
|
||||
}
|
||||
}
|
||||
/*
|
||||
<option value='000001.SH'>上证指数</option>
|
||||
<option value='399001.SZ'>深圳成指</option>
|
||||
<option value='399005.SZ'>中小板指</option>
|
||||
<option value='399006.SZ'>创业板指</option>
|
||||
<option value='000016.SZ'>上证50</option>
|
||||
<option value='399300.SZ'>沪深300</option>
|
||||
<option value='399905.SZ'>中证500</option>
|
||||
*/
|
||||
function convertIndexCode(tscode){
|
||||
switch(tscode){
|
||||
case '000001.SH':
|
||||
return '上证指数';
|
||||
case '399001.SZ':
|
||||
return '深圳成指';
|
||||
case '399005.SZ':
|
||||
return '中小板指';
|
||||
case '399006.SZ':
|
||||
return '创业板指';
|
||||
case '000016.SZ':
|
||||
return '上证50';
|
||||
case '399300.SZ':
|
||||
return '沪深300';
|
||||
case '399905.SZ':
|
||||
return '中证500';
|
||||
default:
|
||||
return '';
|
||||
}
|
||||
}
|
||||
|
||||
function formatDateToYYYYMMDD(dateStr) {
|
||||
return dateStr.replace(/-/g, '');
|
||||
}
|
||||
|
||||
function pickData(data, dateKey, valueKey) {
|
||||
return data.map(item => ({
|
||||
value: [
|
||||
item[dateKey].slice(0, 4) + '-' + item[dateKey].slice(4, 6) + '-' + item[dateKey].slice(6, 8), // 格式化日期 yyyymmdd 转为 yyyy-mm-dd
|
||||
item[valueKey].toFixed(2) // 保留两位小数
|
||||
]
|
||||
}));
|
||||
}
|
||||
|
||||
/* 将上述pickData函数返回的结果,value计算返回最大值,最小值,均值,以及最后一个值 */
|
||||
function calculateStats(data) {
|
||||
if (data.length === 0) {
|
||||
return {
|
||||
max: null,
|
||||
min: null,
|
||||
avg: null,
|
||||
last: null
|
||||
};
|
||||
}
|
||||
|
||||
let max = -Infinity;
|
||||
let min = Infinity;
|
||||
let sum = 0;
|
||||
let last = null;
|
||||
|
||||
for (const item of data) {
|
||||
const value = parseFloat(item.value[1]); // 提取 value 数组中的第二个元素(数值部分)
|
||||
|
||||
if (value > max) {
|
||||
max = value;
|
||||
}
|
||||
if (value < min) {
|
||||
min = value;
|
||||
}
|
||||
sum += value;
|
||||
last = value; // 更新最后一个值
|
||||
}
|
||||
|
||||
const avg = sum / data.length;
|
||||
|
||||
return {
|
||||
max: max.toFixed(2),
|
||||
min: min.toFixed(2),
|
||||
avg: avg.toFixed(2),
|
||||
last: last.toFixed(2)
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
function doubleLineChart(){
|
||||
/*
|
||||
需要外部提供:
|
||||
chartid: div container id
|
||||
legend: array
|
||||
unit: str
|
||||
sub_text: str
|
||||
data:data1,data2, array
|
||||
*/
|
||||
var dom = document.getElementById("chartid");
|
||||
var myChart = echarts.init(dom,'dark');
|
||||
option = null;
|
||||
option = {
|
||||
title: {
|
||||
text: legend[0]+' V.S '+legend[2],
|
||||
subtext: subtxt,
|
||||
textAlign:'center',
|
||||
left:'50%'
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
legend: {
|
||||
data:legend,
|
||||
right:'20'
|
||||
},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
toolbox: {
|
||||
feature: {
|
||||
saveAsImage: {}
|
||||
}
|
||||
},
|
||||
xAxis: {
|
||||
type: 'time',
|
||||
boundaryGap: false
|
||||
},
|
||||
yAxis: [{
|
||||
type: 'value',
|
||||
name:legend[0], //图列
|
||||
show:true
|
||||
},
|
||||
{
|
||||
type:'value',
|
||||
name:legend[2]+unit, //图例
|
||||
//scale:true,
|
||||
boundaryGap:false,
|
||||
show:true,
|
||||
splitLine:{
|
||||
show:false, //Y2 坐标刻度横线
|
||||
},
|
||||
}
|
||||
],
|
||||
dataZoom: [{
|
||||
type: 'inside', //or slider
|
||||
start: 0,
|
||||
end: 100
|
||||
}, {
|
||||
start: 0,
|
||||
end: 100,
|
||||
handleIcon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4v1.3h1.3v-1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z',
|
||||
handleSize: '80%',
|
||||
handleStyle: {
|
||||
color: '#fff',
|
||||
shadowBlur: 3,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.6)',
|
||||
shadowOffsetX: 2,
|
||||
shadowOffsetY: 2
|
||||
}
|
||||
}],
|
||||
series: [
|
||||
{
|
||||
name:legend[0],
|
||||
type:'line',
|
||||
yAxisIndex:0,
|
||||
symbol:'none',
|
||||
data:data1
|
||||
},
|
||||
{
|
||||
name:legend[2],
|
||||
type:'line',
|
||||
yAxisIndex:1,
|
||||
symbol:'none', //数据圆点
|
||||
smooth:false,
|
||||
data:data2
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
if (option && typeof option === "object") {
|
||||
myChart.setOption(option, true);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user