feat: 全面代码更新 - ECharts 5.4.2 重构、新增量化分析模块、前端库升级
- 升级 ECharts 到 5.4.2,重构 lib/ 目录结构 - 新增 DataTables 2.x 和 FixedColumns 插件 - 新增 quant/ 宏观研究报告模块 - 重构图表页面:stock_trend、hkholdbycode 等采用 JS fetch API.doorcome.cn 模式 - 新增 CLAUDE.md 补充页面文档和新数据流说明 - 更新 inc/config.php TuShare API 配置 - 更新新闻联播分析模块 news/ 和相关研究报告 research/ - 新增 api_document/ 参考文档 - 清理 .gitignore,排除 uploads/xls/.mcp.json/ source maps 等非代码文件 - 所有 PHP 文件通过 php -l 语法检查 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
+197
-197
@@ -1,198 +1,198 @@
|
||||
// 日期选择
|
||||
// By Ziyue(http://www.web-v.com/)
|
||||
var months = new Array("一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月");
|
||||
var daysInMonth = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
|
||||
var days = new Array("日","一", "二", "三", "四", "五", "六");
|
||||
var today;
|
||||
|
||||
document.writeln("<div id='Calendar' style='position:absolute; z-index:1; visibility: hidden; filter:\"progid:DXImageTransform.Microsoft.Shadow(direction=135,color=#999999,strength=3)\"'></div>");
|
||||
|
||||
function getDays(month, year)
|
||||
{
|
||||
//下面的这段代码是判断当前是否是闰年的
|
||||
if (1 == month)
|
||||
return ((0 == year % 4) && (0 != (year % 100))) || (0 == year % 400) ? 29 : 28;
|
||||
else
|
||||
return daysInMonth[month];
|
||||
}
|
||||
|
||||
function getToday()
|
||||
{
|
||||
//得到今天的年,月,日
|
||||
this.now = new Date();
|
||||
this.year = this.now.getFullYear();
|
||||
this.month = this.now.getMonth();
|
||||
this.day = this.now.getDate();
|
||||
}
|
||||
|
||||
function getStringDay(str)
|
||||
{
|
||||
//得到输入框的年,月,日
|
||||
var str=str.split("-")
|
||||
|
||||
this.now = new Date(parseFloat(str[0]),parseFloat(str[1])-1,parseFloat(str[2]));
|
||||
this.year = this.now.getFullYear();
|
||||
this.month = this.now.getMonth();
|
||||
this.day = this.now.getDate();
|
||||
}
|
||||
|
||||
function newCalendar() {
|
||||
//var parseYear = parseInt(document.all.Year.options[document.all.Year.selectedIndex].value);
|
||||
var parseYear = parseInt(document.getElementById('Year').options[document.getElementById('Year').selectedIndex].value);
|
||||
//var newCal = new Date(parseYear, document.all.Month.selectedIndex, 1);
|
||||
var newCal = new Date(parseYear, document.getElementById('Month').selectedIndex, 1);
|
||||
var day = -1;
|
||||
var startDay = newCal.getDay();
|
||||
var daily = 0;
|
||||
|
||||
if ((today.year == newCal.getFullYear()) &&(today.month == newCal.getMonth()))
|
||||
day = today.day;
|
||||
|
||||
var tableCal = document.getElementById('calendar');
|
||||
var intDaysInMonth =getDays(newCal.getMonth(), newCal.getFullYear());
|
||||
|
||||
for (var intWeek = 1; intWeek < tableCal.rows.length;intWeek++)
|
||||
for (var intDay = 0;intDay < tableCal.rows[intWeek].cells.length;intDay++)
|
||||
{
|
||||
var cell = tableCal.rows[intWeek].cells[intDay];
|
||||
if ((intDay == startDay) && (0 == daily))
|
||||
daily = 1;
|
||||
|
||||
if(day==daily) //今天,调用今天的Class
|
||||
{
|
||||
cell.style.background='#6699CC';
|
||||
cell.style.color='#FFFFFF';
|
||||
//cell.style.fontWeight='bold';
|
||||
}
|
||||
else if(intDay==6) //周六
|
||||
cell.style.color='green';
|
||||
else if (intDay==0) //周日
|
||||
cell.style.color='red';
|
||||
|
||||
if ((daily > 0) && (daily <= intDaysInMonth))
|
||||
{
|
||||
cell.innerText = daily;
|
||||
daily++;
|
||||
}
|
||||
else
|
||||
cell.innerText = "";
|
||||
}
|
||||
}
|
||||
|
||||
function GetDate(InputBox)
|
||||
{
|
||||
var sDate;
|
||||
//这段代码处理鼠标点击的情况
|
||||
if (event.srcElement.tagName == "TD")
|
||||
if (event.srcElement.innerText != "")
|
||||
{
|
||||
sDate = document.getElementById('Year').value + "-" + document.getElementById('Month').value + "-" + event.srcElement.innerText;
|
||||
//eval("document.all."+InputBox).value=sDate;
|
||||
document.getElementById(InputBox).value=sDate;
|
||||
HiddenCalendar();
|
||||
}
|
||||
}
|
||||
|
||||
function HiddenCalendar()
|
||||
{
|
||||
//关闭选择窗口
|
||||
document.getElementById('Calendar').style.visibility='hidden';
|
||||
}
|
||||
|
||||
function ShowCalendar(InputBox)
|
||||
{
|
||||
var x,y,intLoop,intWeeks,intDays;
|
||||
var DivContent;
|
||||
var year,month,day;
|
||||
//var o=eval("document.getElementById("+InputBox+")");
|
||||
o=document.getElementById(InputBox);
|
||||
var thisyear; //真正的今年年份
|
||||
|
||||
thisyear=new getToday();
|
||||
thisyear=thisyear.year;
|
||||
|
||||
today = o.value;
|
||||
if(isDate(today))
|
||||
today = new getStringDay(today);
|
||||
else
|
||||
today = new getToday();
|
||||
|
||||
//显示的位置
|
||||
x=o.offsetLeft;
|
||||
y=o.offsetTop;
|
||||
while(o=o.offsetParent)
|
||||
{
|
||||
x+=o.offsetLeft;
|
||||
y+=o.offsetTop;
|
||||
}
|
||||
//document.all.Calendar.style.left=x+2;
|
||||
//document.all.Calendar.style.top=y+20;
|
||||
//document.all.Calendar.style.visibility="visible";
|
||||
document.getElementById('Calendar').style.left=x+2;
|
||||
document.getElementById('Calendar').style.top=y+20;
|
||||
document.getElementById('Calendar').style.visibility="visible";
|
||||
|
||||
//下面开始输出日历表格(border-color:#9DBAF7)
|
||||
DivContent="<table border='0' cellspacing='0' style='border:1px solid #0066FF; background-color:#EDF2FC'>";
|
||||
DivContent+="<tr>";
|
||||
DivContent+="<td style='border-bottom:1px solid #0066FF; background-color:#C7D8FA'>";
|
||||
|
||||
//年
|
||||
DivContent+="<select name='Year' id='Year' onChange='newCalendar()' style='font-family:Verdana; font-size:12px'>";
|
||||
for (intLoop = thisyear - 10; intLoop < (thisyear + 3); intLoop++)
|
||||
DivContent+="<option value= " + intLoop + " " + (today.year == intLoop ? "Selected" : "") + ">" + intLoop + "</option>";
|
||||
DivContent+="</select>";
|
||||
|
||||
//月
|
||||
DivContent+="<select name='Month' id='Month' onChange='newCalendar()' style='font-family:Verdana; font-size:12px'>";
|
||||
for (intLoop = 0; intLoop < months.length; intLoop++)
|
||||
DivContent+="<option value= " + (intLoop + 1) + " " + (today.month == intLoop ? "Selected" : "") + ">" + months[intLoop] + "</option>";
|
||||
DivContent+="</select>";
|
||||
|
||||
DivContent+="</td>";
|
||||
|
||||
DivContent+="<td style='border-bottom:1px solid #0066FF; background-color:#C7D8FA; font-weight:bold; font-family:Wingdings 2,Wingdings,Webdings; font-size:16px; padding-top:2px; color:#4477FF; cursor:hand' align='center' title='关闭' onClick='javascript:HiddenCalendar()'>S</td>";
|
||||
DivContent+="</tr>";
|
||||
|
||||
DivContent+="<tr><td align='center' colspan='2'>";
|
||||
DivContent+="<table id='calendar' border='0' width='100%'>";
|
||||
|
||||
//星期
|
||||
DivContent+="<tr>";
|
||||
for (intLoop = 0; intLoop < days.length; intLoop++)
|
||||
DivContent+="<td align='center' style='font-size:12px'>" + days[intLoop] + "</td>";
|
||||
DivContent+="</tr>";
|
||||
|
||||
//天
|
||||
for (intWeeks = 0; intWeeks < 6; intWeeks++)
|
||||
{
|
||||
DivContent+="<tr>";
|
||||
for (intDays = 0; intDays < days.length; intDays++)
|
||||
DivContent+="<td onClick='GetDate(\"" + InputBox + "\")' style='cursor:hand; border-right:1px solid #BBBBBB; border-bottom:1px solid #BBBBBB; color:#215DC6; font-family:Verdana; font-size:12px' align='center'></td>";
|
||||
DivContent+="</tr>";
|
||||
}
|
||||
DivContent+="</table></td></tr></table>";
|
||||
|
||||
//document.all.Calendar.innerHTML=DivContent;
|
||||
document.getElementById('Calendar').innerHTML=DivContent;
|
||||
newCalendar();
|
||||
}
|
||||
|
||||
function isDate(dateStr)
|
||||
{
|
||||
var datePat = /^(\d{4})(\-)(\d{1,2})(\-)(\d{1,2})$/;
|
||||
var matchArray = dateStr.match(datePat);
|
||||
if (matchArray == null) return false;
|
||||
var month = matchArray[3];
|
||||
var day = matchArray[5];
|
||||
var year = matchArray[1];
|
||||
if (month < 1 || month > 12) return false;
|
||||
if (day < 1 || day > 31) return false;
|
||||
if ((month==4 || month==6 || month==9 || month==11) && day==31) return false;
|
||||
if (month == 2)
|
||||
{
|
||||
var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
|
||||
if (day > 29 || (day==29 && !isleap)) return false;
|
||||
}
|
||||
return true;
|
||||
// 日期选择
|
||||
// By Ziyue(http://www.web-v.com/)
|
||||
var months = new Array("一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月");
|
||||
var daysInMonth = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
|
||||
var days = new Array("日","一", "二", "三", "四", "五", "六");
|
||||
var today;
|
||||
|
||||
document.writeln("<div id='Calendar' style='position:absolute; z-index:1; visibility: hidden; filter:\"progid:DXImageTransform.Microsoft.Shadow(direction=135,color=#999999,strength=3)\"'></div>");
|
||||
|
||||
function getDays(month, year)
|
||||
{
|
||||
//下面的这段代码是判断当前是否是闰年的
|
||||
if (1 == month)
|
||||
return ((0 == year % 4) && (0 != (year % 100))) || (0 == year % 400) ? 29 : 28;
|
||||
else
|
||||
return daysInMonth[month];
|
||||
}
|
||||
|
||||
function getToday()
|
||||
{
|
||||
//得到今天的年,月,日
|
||||
this.now = new Date();
|
||||
this.year = this.now.getFullYear();
|
||||
this.month = this.now.getMonth();
|
||||
this.day = this.now.getDate();
|
||||
}
|
||||
|
||||
function getStringDay(str)
|
||||
{
|
||||
//得到输入框的年,月,日
|
||||
var str=str.split("-")
|
||||
|
||||
this.now = new Date(parseFloat(str[0]),parseFloat(str[1])-1,parseFloat(str[2]));
|
||||
this.year = this.now.getFullYear();
|
||||
this.month = this.now.getMonth();
|
||||
this.day = this.now.getDate();
|
||||
}
|
||||
|
||||
function newCalendar() {
|
||||
//var parseYear = parseInt(document.all.Year.options[document.all.Year.selectedIndex].value);
|
||||
var parseYear = parseInt(document.getElementById('Year').options[document.getElementById('Year').selectedIndex].value);
|
||||
//var newCal = new Date(parseYear, document.all.Month.selectedIndex, 1);
|
||||
var newCal = new Date(parseYear, document.getElementById('Month').selectedIndex, 1);
|
||||
var day = -1;
|
||||
var startDay = newCal.getDay();
|
||||
var daily = 0;
|
||||
|
||||
if ((today.year == newCal.getFullYear()) &&(today.month == newCal.getMonth()))
|
||||
day = today.day;
|
||||
|
||||
var tableCal = document.getElementById('calendar');
|
||||
var intDaysInMonth =getDays(newCal.getMonth(), newCal.getFullYear());
|
||||
|
||||
for (var intWeek = 1; intWeek < tableCal.rows.length;intWeek++)
|
||||
for (var intDay = 0;intDay < tableCal.rows[intWeek].cells.length;intDay++)
|
||||
{
|
||||
var cell = tableCal.rows[intWeek].cells[intDay];
|
||||
if ((intDay == startDay) && (0 == daily))
|
||||
daily = 1;
|
||||
|
||||
if(day==daily) //今天,调用今天的Class
|
||||
{
|
||||
cell.style.background='#6699CC';
|
||||
cell.style.color='#FFFFFF';
|
||||
//cell.style.fontWeight='bold';
|
||||
}
|
||||
else if(intDay==6) //周六
|
||||
cell.style.color='green';
|
||||
else if (intDay==0) //周日
|
||||
cell.style.color='red';
|
||||
|
||||
if ((daily > 0) && (daily <= intDaysInMonth))
|
||||
{
|
||||
cell.innerText = daily;
|
||||
daily++;
|
||||
}
|
||||
else
|
||||
cell.innerText = "";
|
||||
}
|
||||
}
|
||||
|
||||
function GetDate(InputBox)
|
||||
{
|
||||
var sDate;
|
||||
//这段代码处理鼠标点击的情况
|
||||
if (event.srcElement.tagName == "TD")
|
||||
if (event.srcElement.innerText != "")
|
||||
{
|
||||
sDate = document.getElementById('Year').value + "-" + document.getElementById('Month').value + "-" + event.srcElement.innerText;
|
||||
//eval("document.all."+InputBox).value=sDate;
|
||||
document.getElementById(InputBox).value=sDate;
|
||||
HiddenCalendar();
|
||||
}
|
||||
}
|
||||
|
||||
function HiddenCalendar()
|
||||
{
|
||||
//关闭选择窗口
|
||||
document.getElementById('Calendar').style.visibility='hidden';
|
||||
}
|
||||
|
||||
function ShowCalendar(InputBox)
|
||||
{
|
||||
var x,y,intLoop,intWeeks,intDays;
|
||||
var DivContent;
|
||||
var year,month,day;
|
||||
//var o=eval("document.getElementById("+InputBox+")");
|
||||
o=document.getElementById(InputBox);
|
||||
var thisyear; //真正的今年年份
|
||||
|
||||
thisyear=new getToday();
|
||||
thisyear=thisyear.year;
|
||||
|
||||
today = o.value;
|
||||
if(isDate(today))
|
||||
today = new getStringDay(today);
|
||||
else
|
||||
today = new getToday();
|
||||
|
||||
//显示的位置
|
||||
x=o.offsetLeft;
|
||||
y=o.offsetTop;
|
||||
while(o=o.offsetParent)
|
||||
{
|
||||
x+=o.offsetLeft;
|
||||
y+=o.offsetTop;
|
||||
}
|
||||
//document.all.Calendar.style.left=x+2;
|
||||
//document.all.Calendar.style.top=y+20;
|
||||
//document.all.Calendar.style.visibility="visible";
|
||||
document.getElementById('Calendar').style.left=x+2;
|
||||
document.getElementById('Calendar').style.top=y+20;
|
||||
document.getElementById('Calendar').style.visibility="visible";
|
||||
|
||||
//下面开始输出日历表格(border-color:#9DBAF7)
|
||||
DivContent="<table border='0' cellspacing='0' style='border:1px solid #0066FF; background-color:#EDF2FC'>";
|
||||
DivContent+="<tr>";
|
||||
DivContent+="<td style='border-bottom:1px solid #0066FF; background-color:#C7D8FA'>";
|
||||
|
||||
//年
|
||||
DivContent+="<select name='Year' id='Year' onChange='newCalendar()' style='font-family:Verdana; font-size:12px'>";
|
||||
for (intLoop = thisyear - 10; intLoop < (thisyear + 3); intLoop++)
|
||||
DivContent+="<option value= " + intLoop + " " + (today.year == intLoop ? "Selected" : "") + ">" + intLoop + "</option>";
|
||||
DivContent+="</select>";
|
||||
|
||||
//月
|
||||
DivContent+="<select name='Month' id='Month' onChange='newCalendar()' style='font-family:Verdana; font-size:12px'>";
|
||||
for (intLoop = 0; intLoop < months.length; intLoop++)
|
||||
DivContent+="<option value= " + (intLoop + 1) + " " + (today.month == intLoop ? "Selected" : "") + ">" + months[intLoop] + "</option>";
|
||||
DivContent+="</select>";
|
||||
|
||||
DivContent+="</td>";
|
||||
|
||||
DivContent+="<td style='border-bottom:1px solid #0066FF; background-color:#C7D8FA; font-weight:bold; font-family:Wingdings 2,Wingdings,Webdings; font-size:16px; padding-top:2px; color:#4477FF; cursor:hand' align='center' title='关闭' onClick='javascript:HiddenCalendar()'>S</td>";
|
||||
DivContent+="</tr>";
|
||||
|
||||
DivContent+="<tr><td align='center' colspan='2'>";
|
||||
DivContent+="<table id='calendar' border='0' width='100%'>";
|
||||
|
||||
//星期
|
||||
DivContent+="<tr>";
|
||||
for (intLoop = 0; intLoop < days.length; intLoop++)
|
||||
DivContent+="<td align='center' style='font-size:12px'>" + days[intLoop] + "</td>";
|
||||
DivContent+="</tr>";
|
||||
|
||||
//天
|
||||
for (intWeeks = 0; intWeeks < 6; intWeeks++)
|
||||
{
|
||||
DivContent+="<tr>";
|
||||
for (intDays = 0; intDays < days.length; intDays++)
|
||||
DivContent+="<td onClick='GetDate(\"" + InputBox + "\")' style='cursor:hand; border-right:1px solid #BBBBBB; border-bottom:1px solid #BBBBBB; color:#215DC6; font-family:Verdana; font-size:12px' align='center'></td>";
|
||||
DivContent+="</tr>";
|
||||
}
|
||||
DivContent+="</table></td></tr></table>";
|
||||
|
||||
//document.all.Calendar.innerHTML=DivContent;
|
||||
document.getElementById('Calendar').innerHTML=DivContent;
|
||||
newCalendar();
|
||||
}
|
||||
|
||||
function isDate(dateStr)
|
||||
{
|
||||
var datePat = /^(\d{4})(\-)(\d{1,2})(\-)(\d{1,2})$/;
|
||||
var matchArray = dateStr.match(datePat);
|
||||
if (matchArray == null) return false;
|
||||
var month = matchArray[3];
|
||||
var day = matchArray[5];
|
||||
var year = matchArray[1];
|
||||
if (month < 1 || month > 12) return false;
|
||||
if (day < 1 || day > 31) return false;
|
||||
if ((month==4 || month==6 || month==9 || month==11) && day==31) return false;
|
||||
if (month == 2)
|
||||
{
|
||||
var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
|
||||
if (day > 29 || (day==29 && !isleap)) return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
+119
-119
@@ -1,119 +1,119 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
|
||||
</head>
|
||||
<?php
|
||||
ini_set('error_reporting', E_ALL);
|
||||
|
||||
$mysqli = new mysqli('localhost','root','nancysimon','myquant');
|
||||
|
||||
$ts_code = '000001.SH';
|
||||
$day_st = '20190101';
|
||||
$day_end = '20190701';
|
||||
$where = " and trade_date>'".$day_st."'";
|
||||
if($day_end) $where .= " and trade_date <'".$day_end."'";
|
||||
$date_range = "and trade_date";
|
||||
$sql= <<<EOF
|
||||
select trade_date, close from index_hist_pro where ts_code = '$ts_code' $where order by trade_date asc
|
||||
EOF;
|
||||
#echo $sql;
|
||||
$result = $mysqli->query($sql);
|
||||
|
||||
$tDate=array('交易日');
|
||||
$idx=array('上证指数');
|
||||
|
||||
if($result && $result->num_rows>0) {
|
||||
#$data = $result->fetch_all();
|
||||
while($row=$result->fetch_assoc()){
|
||||
array_push($tDate,$row['trade_date']);
|
||||
array_push($idx,$row['close']);
|
||||
}
|
||||
}
|
||||
#Free result and close connection.
|
||||
$result->free();
|
||||
$mysqli->close();
|
||||
?>
|
||||
<body style="height: 100%; margin: 0">
|
||||
<!-- 为 ECharts 准备一个具备大小(宽高)的 DOM -->
|
||||
<div id="container" style="height: 400px;width: 600px"></div>
|
||||
<script type="text/javascript" src="http://echarts.baidu.com/gallery/vendors/echarts/echarts.min.js"></script>
|
||||
<script type="text/javascript" src="http://echarts.baidu.com/gallery/vendors/echarts-gl/echarts-gl.min.js"></script>
|
||||
<script type="text/javascript" src="http://echarts.baidu.com/gallery/vendors/echarts-stat/ecStat.min.js"></script>
|
||||
<script type="text/javascript" src="http://echarts.baidu.com/gallery/vendors/echarts/extension/dataTool.min.js"></script>
|
||||
<script type="text/javascript" src="http://echarts.baidu.com/gallery/vendors/simplex.js"></script>
|
||||
<script type="text/javascript">
|
||||
var dom = document.getElementById("container");
|
||||
var myChart = echarts.init(dom);
|
||||
var app = {};
|
||||
option = null;
|
||||
option = {
|
||||
title: {
|
||||
text: '折线图堆叠'
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
legend: {
|
||||
data:['邮件营销','联盟广告','视频广告','直接访问','搜索引擎']
|
||||
},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
toolbox: {
|
||||
feature: {
|
||||
saveAsImage: {}
|
||||
}
|
||||
},
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
boundaryGap: false,
|
||||
data: ['周一','周二','周三','周四','周五','周六','周日']
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name:'邮件营销',
|
||||
type:'line',
|
||||
stack: '总量',
|
||||
data:[120, 132, 101, 134, 90, 230, 210]
|
||||
},
|
||||
{
|
||||
name:'联盟广告',
|
||||
type:'line',
|
||||
stack: '总量',
|
||||
data:[220, 182, 191, 234, 290, 330, 310]
|
||||
},
|
||||
{
|
||||
name:'视频广告',
|
||||
type:'line',
|
||||
stack: '总量',
|
||||
data:[150, 232, 201, 154, 190, 330, 410]
|
||||
},
|
||||
{
|
||||
name:'直接访问',
|
||||
type:'line',
|
||||
stack: '总量',
|
||||
data:[320, 332, 301, 334, 390, 330, 320]
|
||||
},
|
||||
{
|
||||
name:'搜索引擎',
|
||||
type:'line',
|
||||
stack: '总量',
|
||||
data:[820, 932, 901, 934, 1290, 1330, 1320]
|
||||
}
|
||||
]
|
||||
};
|
||||
;
|
||||
if (option && typeof option === "object") {
|
||||
myChart.setOption(option, true);
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
|
||||
</head>
|
||||
<?php
|
||||
ini_set('error_reporting', E_ALL);
|
||||
|
||||
$mysqli = new mysqli('localhost','root','nancysimon','myquant');
|
||||
|
||||
$ts_code = '000001.SH';
|
||||
$day_st = '20190101';
|
||||
$day_end = '20190701';
|
||||
$where = " and trade_date>'".$day_st."'";
|
||||
if($day_end) $where .= " and trade_date <'".$day_end."'";
|
||||
$date_range = "and trade_date";
|
||||
$sql= <<<EOF
|
||||
select trade_date, close from index_hist_pro where ts_code = '$ts_code' $where order by trade_date asc
|
||||
EOF;
|
||||
#echo $sql;
|
||||
$result = $mysqli->query($sql);
|
||||
|
||||
$tDate=array('交易日');
|
||||
$idx=array('上证指数');
|
||||
|
||||
if($result && $result->num_rows>0) {
|
||||
#$data = $result->fetch_all();
|
||||
while($row=$result->fetch_assoc()){
|
||||
array_push($tDate,$row['trade_date']);
|
||||
array_push($idx,$row['close']);
|
||||
}
|
||||
}
|
||||
#Free result and close connection.
|
||||
$result->free();
|
||||
$mysqli->close();
|
||||
?>
|
||||
<body style="height: 100%; margin: 0">
|
||||
<!-- 为 ECharts 准备一个具备大小(宽高)的 DOM -->
|
||||
<div id="container" style="height: 400px;width: 600px"></div>
|
||||
<script type="text/javascript" src="http://echarts.baidu.com/gallery/vendors/echarts/echarts.min.js"></script>
|
||||
<script type="text/javascript" src="http://echarts.baidu.com/gallery/vendors/echarts-gl/echarts-gl.min.js"></script>
|
||||
<script type="text/javascript" src="http://echarts.baidu.com/gallery/vendors/echarts-stat/ecStat.min.js"></script>
|
||||
<script type="text/javascript" src="http://echarts.baidu.com/gallery/vendors/echarts/extension/dataTool.min.js"></script>
|
||||
<script type="text/javascript" src="http://echarts.baidu.com/gallery/vendors/simplex.js"></script>
|
||||
<script type="text/javascript">
|
||||
var dom = document.getElementById("container");
|
||||
var myChart = echarts.init(dom);
|
||||
var app = {};
|
||||
option = null;
|
||||
option = {
|
||||
title: {
|
||||
text: '折线图堆叠'
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
legend: {
|
||||
data:['邮件营销','联盟广告','视频广告','直接访问','搜索引擎']
|
||||
},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
toolbox: {
|
||||
feature: {
|
||||
saveAsImage: {}
|
||||
}
|
||||
},
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
boundaryGap: false,
|
||||
data: ['周一','周二','周三','周四','周五','周六','周日']
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name:'邮件营销',
|
||||
type:'line',
|
||||
stack: '总量',
|
||||
data:[120, 132, 101, 134, 90, 230, 210]
|
||||
},
|
||||
{
|
||||
name:'联盟广告',
|
||||
type:'line',
|
||||
stack: '总量',
|
||||
data:[220, 182, 191, 234, 290, 330, 310]
|
||||
},
|
||||
{
|
||||
name:'视频广告',
|
||||
type:'line',
|
||||
stack: '总量',
|
||||
data:[150, 232, 201, 154, 190, 330, 410]
|
||||
},
|
||||
{
|
||||
name:'直接访问',
|
||||
type:'line',
|
||||
stack: '总量',
|
||||
data:[320, 332, 301, 334, 390, 330, 320]
|
||||
},
|
||||
{
|
||||
name:'搜索引擎',
|
||||
type:'line',
|
||||
stack: '总量',
|
||||
data:[820, 932, 901, 934, 1290, 1330, 1320]
|
||||
}
|
||||
]
|
||||
};
|
||||
;
|
||||
if (option && typeof option === "object") {
|
||||
myChart.setOption(option, true);
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+92
-92
@@ -1,93 +1,93 @@
|
||||
<!DOCTYPE html>
|
||||
<html style="height: 100%">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
</head>
|
||||
<?php
|
||||
ini_set('error_reporting', E_ALL);
|
||||
include_once "inc/getData.inc.php";
|
||||
$day_st='20180101';
|
||||
$day_end=date('Ymd');
|
||||
$data=getIndexData('000001.SH',$day_st,$day_end);
|
||||
$data1=getIndexData('399001.SZ',$day_st,$day_end);
|
||||
$legend=array('上证综指','深证成指');
|
||||
?>
|
||||
<body style="height: 100%; margin: 0">
|
||||
<div id="container" style="height: 400px;width: 1000px"></div>
|
||||
<script type="text/javascript" src="../js/echarts.min.js"></script>
|
||||
<script type="text/javascript" src="../js/echarts-gl.min.js"></script>
|
||||
<script type="text/javascript" src="../js/ecStat.min.js"></script>
|
||||
<script type="text/javascript" src="../js/dataTool.min.js"></script>
|
||||
<script type="text/javascript" src="../js/simplex.js"></script>
|
||||
<script type="text/javascript" src="../js/grey.js"></script>
|
||||
<script type="text/javascript">
|
||||
var dom = document.getElementById("container");
|
||||
var myChart = echarts.init(dom,'grey');
|
||||
var app = {};
|
||||
option = null;
|
||||
legend = <?php echo json_encode($legend);?>;
|
||||
option = {
|
||||
title: {
|
||||
text: '历史数据折线图',
|
||||
subtext:"双轴显示",
|
||||
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: 'category',
|
||||
//type: 'time',
|
||||
boundaryGap: false,
|
||||
data: <?php echo json_encode($data['tDate']); ?>
|
||||
},
|
||||
yAxis: [{
|
||||
type: 'value',
|
||||
name:legend[0], //图列
|
||||
show:true
|
||||
},
|
||||
{
|
||||
type:'value',
|
||||
name:legend[1], //图例
|
||||
//scale:true, //true 不强制包含0刻度
|
||||
boundaryGap:false,
|
||||
show:true
|
||||
}],
|
||||
series: [
|
||||
{
|
||||
name:legend[0],
|
||||
type:'line',
|
||||
yAxisIndex:0,
|
||||
data:<?php echo json_encode($data['idx']); ?>
|
||||
},
|
||||
{
|
||||
name:legend[1],
|
||||
type:'line',
|
||||
yAxisIndex:1,
|
||||
data:<?php echo json_encode($data1['idx']); ?>
|
||||
}
|
||||
]
|
||||
};
|
||||
;
|
||||
if (option && typeof option === "object") {
|
||||
myChart.setOption(option, true);
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
<!DOCTYPE html>
|
||||
<html style="height: 100%">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
</head>
|
||||
<?php
|
||||
ini_set('error_reporting', E_ALL);
|
||||
include_once "inc/getData.inc.php";
|
||||
$day_st='20180101';
|
||||
$day_end=date('Ymd');
|
||||
$data=getIndexData('000001.SH',$day_st,$day_end);
|
||||
$data1=getIndexData('399001.SZ',$day_st,$day_end);
|
||||
$legend=array('上证综指','深证成指');
|
||||
?>
|
||||
<body style="height: 100%; margin: 0">
|
||||
<div id="container" style="height: 400px;width: 1000px"></div>
|
||||
<script type="text/javascript" src="../js/echarts.min.js"></script>
|
||||
<script type="text/javascript" src="../js/echarts-gl.min.js"></script>
|
||||
<script type="text/javascript" src="../js/ecStat.min.js"></script>
|
||||
<script type="text/javascript" src="../js/dataTool.min.js"></script>
|
||||
<script type="text/javascript" src="../js/simplex.js"></script>
|
||||
<script type="text/javascript" src="../js/grey.js"></script>
|
||||
<script type="text/javascript">
|
||||
var dom = document.getElementById("container");
|
||||
var myChart = echarts.init(dom,'grey');
|
||||
var app = {};
|
||||
option = null;
|
||||
legend = <?php echo json_encode($legend);?>;
|
||||
option = {
|
||||
title: {
|
||||
text: '历史数据折线图',
|
||||
subtext:"双轴显示",
|
||||
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: 'category',
|
||||
//type: 'time',
|
||||
boundaryGap: false,
|
||||
data: <?php echo json_encode($data['tDate']); ?>
|
||||
},
|
||||
yAxis: [{
|
||||
type: 'value',
|
||||
name:legend[0], //图列
|
||||
show:true
|
||||
},
|
||||
{
|
||||
type:'value',
|
||||
name:legend[1], //图例
|
||||
//scale:true, //true 不强制包含0刻度
|
||||
boundaryGap:false,
|
||||
show:true
|
||||
}],
|
||||
series: [
|
||||
{
|
||||
name:legend[0],
|
||||
type:'line',
|
||||
yAxisIndex:0,
|
||||
data:<?php echo json_encode($data['idx']); ?>
|
||||
},
|
||||
{
|
||||
name:legend[1],
|
||||
type:'line',
|
||||
yAxisIndex:1,
|
||||
data:<?php echo json_encode($data1['idx']); ?>
|
||||
}
|
||||
]
|
||||
};
|
||||
;
|
||||
if (option && typeof option === "object") {
|
||||
myChart.setOption(option, true);
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,93 +1,93 @@
|
||||
var cfg = window.chartConfig;
|
||||
var dom = document.getElementById("container");
|
||||
var myChart = echarts.init(dom,'dark');
|
||||
var app = {};
|
||||
option = null;
|
||||
|
||||
option = {
|
||||
title: {
|
||||
//text: legend[0]+' V.S '+legend[2],
|
||||
text: cfg.title,
|
||||
subtext: cfg.subtitle,
|
||||
textAlign:'center',
|
||||
left:'50%'
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
legend: {
|
||||
data: cfg.legend,
|
||||
right:'20'
|
||||
},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
toolbox: {
|
||||
feature: {
|
||||
saveAsImage: {}
|
||||
}
|
||||
},
|
||||
xAxis: {
|
||||
//type: 'category',
|
||||
type: 'time',
|
||||
boundaryGap: false
|
||||
},
|
||||
yAxis: [{
|
||||
type: 'value',
|
||||
name:legend[0], //图列
|
||||
show:true,
|
||||
scale:true,
|
||||
},
|
||||
{
|
||||
type:'value',
|
||||
name:legend[1]+'-'+unit, //图例
|
||||
scale:true, //auto sacle
|
||||
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: cfg.data,
|
||||
},
|
||||
{
|
||||
name:legend[1],
|
||||
type:'line',
|
||||
yAxisIndex:1,
|
||||
symbol:'none', //数据圆点
|
||||
smooth:false,
|
||||
data: cfg.data2,
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
if (option && typeof option === "object") {
|
||||
myChart.setOption(option, true);
|
||||
var cfg = window.chartConfig;
|
||||
var dom = document.getElementById("container");
|
||||
var myChart = echarts.init(dom,'dark');
|
||||
var app = {};
|
||||
option = null;
|
||||
|
||||
option = {
|
||||
title: {
|
||||
//text: legend[0]+' V.S '+legend[2],
|
||||
text: cfg.title,
|
||||
subtext: cfg.subtitle,
|
||||
textAlign:'center',
|
||||
left:'50%'
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
legend: {
|
||||
data: cfg.legend,
|
||||
right:'20'
|
||||
},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
toolbox: {
|
||||
feature: {
|
||||
saveAsImage: {}
|
||||
}
|
||||
},
|
||||
xAxis: {
|
||||
//type: 'category',
|
||||
type: 'time',
|
||||
boundaryGap: false
|
||||
},
|
||||
yAxis: [{
|
||||
type: 'value',
|
||||
name:legend[0], //图列
|
||||
show:true,
|
||||
scale:true,
|
||||
},
|
||||
{
|
||||
type:'value',
|
||||
name:legend[1]+'-'+unit, //图例
|
||||
scale:true, //auto sacle
|
||||
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: cfg.data,
|
||||
},
|
||||
{
|
||||
name:legend[1],
|
||||
type:'line',
|
||||
yAxisIndex:1,
|
||||
symbol:'none', //数据圆点
|
||||
smooth:false,
|
||||
data: cfg.data2,
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
if (option && typeof option === "object") {
|
||||
myChart.setOption(option, true);
|
||||
}
|
||||
@@ -1,16 +1,16 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by Simon
|
||||
* For stock index compare and draw in echart
|
||||
* Date: 2019/5/26
|
||||
*
|
||||
**/
|
||||
#set dispay_errors to adjust when coding
|
||||
ini_set('display_errors',1);
|
||||
?>
|
||||
<form name ="myform" id="myform" method="post">
|
||||
|
||||
<input type="hidden" name="x" id= "x" value='<?php //echo json_encode=($l_x)?>' />
|
||||
</form>
|
||||
<script src='../js/echarts.min.js'></script>
|
||||
<script src='js/itrend.basic.js'
|
||||
<?php
|
||||
/**
|
||||
* Created by Simon
|
||||
* For stock index compare and draw in echart
|
||||
* Date: 2019/5/26
|
||||
*
|
||||
**/
|
||||
#set dispay_errors to adjust when coding
|
||||
ini_set('display_errors',1);
|
||||
?>
|
||||
<form name ="myform" id="myform" method="post">
|
||||
|
||||
<input type="hidden" name="x" id= "x" value='<?php //echo json_encode=($l_x)?>' />
|
||||
</form>
|
||||
<script src='../js/echarts.min.js'></script>
|
||||
<script src='js/itrend.basic.js'
|
||||
|
||||
+15
-15
@@ -1,16 +1,16 @@
|
||||
<?php
|
||||
ini_set("display_errors","On");
|
||||
ini_set('error_reporting', 'E_ALL & ~E_NOTICE');
|
||||
include_once("getBasic.inc.php");
|
||||
$link = mysqli_connect('localhost', 'root', 'nancysimon', 'myquant');
|
||||
|
||||
if (!$link) {
|
||||
die('Connect Error (' . mysqli_connect_errno() . ') '
|
||||
. mysqli_connect_error());
|
||||
}
|
||||
|
||||
echo 'Success... ' . mysqli_get_host_info($link) . "\n";
|
||||
|
||||
mysqli_close($link);
|
||||
log_pv();
|
||||
<?php
|
||||
ini_set("display_errors","On");
|
||||
ini_set('error_reporting', 'E_ALL & ~E_NOTICE');
|
||||
include_once("getBasic.inc.php");
|
||||
$link = mysqli_connect('localhost', 'root', 'nancysimon', 'myquant');
|
||||
|
||||
if (!$link) {
|
||||
die('Connect Error (' . mysqli_connect_errno() . ') '
|
||||
. mysqli_connect_error());
|
||||
}
|
||||
|
||||
echo 'Success... ' . mysqli_get_host_info($link) . "\n";
|
||||
|
||||
mysqli_close($link);
|
||||
log_pv();
|
||||
?>
|
||||
+76
-76
@@ -1,77 +1,77 @@
|
||||
var cfg = window.chartConfig;
|
||||
var dom = document.getElementById("container");
|
||||
var myChart = echarts.init(dom,'dark');
|
||||
var app = {};
|
||||
option = null;
|
||||
|
||||
option = {
|
||||
title: {
|
||||
//text: cfg.legend[0]+' V.S '+cfg.legend[2],
|
||||
text: cfg.title,
|
||||
//subtext: subtxt,
|
||||
textAlign:'center',
|
||||
left:'50%'
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
legend: {
|
||||
data:cfg.legend,
|
||||
right:'20'
|
||||
},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
toolbox: {
|
||||
feature: {
|
||||
saveAsImage: {}
|
||||
}
|
||||
},
|
||||
xAxis: {
|
||||
//type: 'category',
|
||||
type: 'time',
|
||||
boundaryGap: false
|
||||
},
|
||||
yAxis: [{
|
||||
type: 'value',
|
||||
name:cfg.legend[0], //图列
|
||||
show:true,
|
||||
scale:true,
|
||||
//min:190000,
|
||||
}
|
||||
],
|
||||
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:cfg.legend[0],
|
||||
type:'line',
|
||||
yAxisIndex:0,
|
||||
symbol:'none',
|
||||
data:cfg.data,
|
||||
itemStyle:{normal:{label:{show:true}}}, //显示数字
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
if (option && typeof option === "object") {
|
||||
myChart.setOption(option, true);
|
||||
var cfg = window.chartConfig;
|
||||
var dom = document.getElementById("container");
|
||||
var myChart = echarts.init(dom,'dark');
|
||||
var app = {};
|
||||
option = null;
|
||||
|
||||
option = {
|
||||
title: {
|
||||
//text: cfg.legend[0]+' V.S '+cfg.legend[2],
|
||||
text: cfg.title,
|
||||
//subtext: subtxt,
|
||||
textAlign:'center',
|
||||
left:'50%'
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
legend: {
|
||||
data:cfg.legend,
|
||||
right:'20'
|
||||
},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
toolbox: {
|
||||
feature: {
|
||||
saveAsImage: {}
|
||||
}
|
||||
},
|
||||
xAxis: {
|
||||
//type: 'category',
|
||||
type: 'time',
|
||||
boundaryGap: false
|
||||
},
|
||||
yAxis: [{
|
||||
type: 'value',
|
||||
name:cfg.legend[0], //图列
|
||||
show:true,
|
||||
scale:true,
|
||||
//min:190000,
|
||||
}
|
||||
],
|
||||
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:cfg.legend[0],
|
||||
type:'line',
|
||||
yAxisIndex:0,
|
||||
symbol:'none',
|
||||
data:cfg.data,
|
||||
itemStyle:{normal:{label:{show:true}}}, //显示数字
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
if (option && typeof option === "object") {
|
||||
myChart.setOption(option, true);
|
||||
}
|
||||
+106
-106
@@ -1,107 +1,107 @@
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">股票代码:</label>
|
||||
<div class="layui-input-block" id="ccc">
|
||||
<input type="text" name="stockcode" value="{$data.stockcode}" autocomplete="off" class="layui-input" id="kw" onKeyup="getContent(this);">
|
||||
<div id="append"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">股票名称:</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="stockname" value="{$data.stockname}" autocomplete="off" class="layui-input" id="codename">
|
||||
<input type="hidden" name="" value="" class="layui-input" id="hiddenname">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function(){
|
||||
$(document).keydown(function(e){
|
||||
e = e || window.event;
|
||||
var keycode = e.which ? e.which : e.keyCode;
|
||||
if(keycode == 38){
|
||||
if(jQuery.trim($("#append").html())==""){
|
||||
return;
|
||||
}
|
||||
movePrev();
|
||||
}else if(keycode == 40){
|
||||
if(jQuery.trim($("#append").html())==""){
|
||||
return;
|
||||
}
|
||||
$("#kw").blur();
|
||||
if($(".item").hasClass("addbg")){
|
||||
moveNext();
|
||||
}else{
|
||||
$(".item").removeClass('addbg').eq(0).addClass('addbg');
|
||||
}
|
||||
|
||||
}else if(keycode == 13){
|
||||
dojob();
|
||||
}
|
||||
});
|
||||
|
||||
var movePrev = function(){
|
||||
$("#kw").blur();
|
||||
var index = $(".addbg").prevAll().length;
|
||||
if(index == 0){
|
||||
$(".item").removeClass('addbg').eq($(".item").length-1).addClass('addbg');
|
||||
}else{
|
||||
$(".item").removeClass('addbg').eq(index-1).addClass('addbg');
|
||||
}
|
||||
}
|
||||
|
||||
var moveNext = function(){
|
||||
var index = $(".addbg").prevAll().length;
|
||||
if(index == $(".item").length-1){
|
||||
$(".item").removeClass('addbg').eq(0).addClass('addbg');
|
||||
}else{
|
||||
$(".item").removeClass('addbg').eq(index+1).addClass('addbg');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
var dojob = function(){
|
||||
$("#kw").blur();
|
||||
var value = $(".addbg").text();
|
||||
$("#kw").val(value);
|
||||
$("#append").hide().html("");
|
||||
}
|
||||
});
|
||||
function getContent(obj){
|
||||
var kw = jQuery.trim($(obj).val());
|
||||
if(kw == ""){
|
||||
$("#append").hide().html("");
|
||||
return false;
|
||||
}
|
||||
$.ajax({
|
||||
url:"{:U('question/stock')}",
|
||||
data:{"key":kw},
|
||||
dataType:"json",
|
||||
type:"POST",
|
||||
success:function(data){
|
||||
var html = "";
|
||||
for (var i = 0; i < data.length; i++) {
|
||||
if (data[i][0].indexOf(kw) >= 0) {
|
||||
html = html + "<div namelist="+data[i][4]+" codelist="+data[i][0]+" class='item' onmouseenter='getFocus(this)' onClick='getCon(this);'>"+data[i][0]+"--"+data[i][4]+"</div>"
|
||||
}
|
||||
}
|
||||
if(html != ""){
|
||||
$("#append").show().html(html);
|
||||
}else{
|
||||
$("#append").hide().html("");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
function getFocus(obj){
|
||||
$(".item").removeClass("addbg");
|
||||
$(obj).addClass("addbg");
|
||||
}
|
||||
function getCon(obj){
|
||||
var value = $(obj).attr('codelist')
|
||||
var name = $(obj).attr('namelist');
|
||||
console.log(name)
|
||||
$("#kw").val(value);
|
||||
$("#codename").val(name);
|
||||
$("#append").hide().html("");
|
||||
}
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">股票代码:</label>
|
||||
<div class="layui-input-block" id="ccc">
|
||||
<input type="text" name="stockcode" value="{$data.stockcode}" autocomplete="off" class="layui-input" id="kw" onKeyup="getContent(this);">
|
||||
<div id="append"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">股票名称:</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="stockname" value="{$data.stockname}" autocomplete="off" class="layui-input" id="codename">
|
||||
<input type="hidden" name="" value="" class="layui-input" id="hiddenname">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function(){
|
||||
$(document).keydown(function(e){
|
||||
e = e || window.event;
|
||||
var keycode = e.which ? e.which : e.keyCode;
|
||||
if(keycode == 38){
|
||||
if(jQuery.trim($("#append").html())==""){
|
||||
return;
|
||||
}
|
||||
movePrev();
|
||||
}else if(keycode == 40){
|
||||
if(jQuery.trim($("#append").html())==""){
|
||||
return;
|
||||
}
|
||||
$("#kw").blur();
|
||||
if($(".item").hasClass("addbg")){
|
||||
moveNext();
|
||||
}else{
|
||||
$(".item").removeClass('addbg').eq(0).addClass('addbg');
|
||||
}
|
||||
|
||||
}else if(keycode == 13){
|
||||
dojob();
|
||||
}
|
||||
});
|
||||
|
||||
var movePrev = function(){
|
||||
$("#kw").blur();
|
||||
var index = $(".addbg").prevAll().length;
|
||||
if(index == 0){
|
||||
$(".item").removeClass('addbg').eq($(".item").length-1).addClass('addbg');
|
||||
}else{
|
||||
$(".item").removeClass('addbg').eq(index-1).addClass('addbg');
|
||||
}
|
||||
}
|
||||
|
||||
var moveNext = function(){
|
||||
var index = $(".addbg").prevAll().length;
|
||||
if(index == $(".item").length-1){
|
||||
$(".item").removeClass('addbg').eq(0).addClass('addbg');
|
||||
}else{
|
||||
$(".item").removeClass('addbg').eq(index+1).addClass('addbg');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
var dojob = function(){
|
||||
$("#kw").blur();
|
||||
var value = $(".addbg").text();
|
||||
$("#kw").val(value);
|
||||
$("#append").hide().html("");
|
||||
}
|
||||
});
|
||||
function getContent(obj){
|
||||
var kw = jQuery.trim($(obj).val());
|
||||
if(kw == ""){
|
||||
$("#append").hide().html("");
|
||||
return false;
|
||||
}
|
||||
$.ajax({
|
||||
url:"{:U('question/stock')}",
|
||||
data:{"key":kw},
|
||||
dataType:"json",
|
||||
type:"POST",
|
||||
success:function(data){
|
||||
var html = "";
|
||||
for (var i = 0; i < data.length; i++) {
|
||||
if (data[i][0].indexOf(kw) >= 0) {
|
||||
html = html + "<div namelist="+data[i][4]+" codelist="+data[i][0]+" class='item' onmouseenter='getFocus(this)' onClick='getCon(this);'>"+data[i][0]+"--"+data[i][4]+"</div>"
|
||||
}
|
||||
}
|
||||
if(html != ""){
|
||||
$("#append").show().html(html);
|
||||
}else{
|
||||
$("#append").hide().html("");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
function getFocus(obj){
|
||||
$(".item").removeClass("addbg");
|
||||
$(obj).addClass("addbg");
|
||||
}
|
||||
function getCon(obj){
|
||||
var value = $(obj).attr('codelist')
|
||||
var name = $(obj).attr('namelist');
|
||||
console.log(name)
|
||||
$("#kw").val(value);
|
||||
$("#codename").val(name);
|
||||
$("#append").hide().html("");
|
||||
}
|
||||
</script>
|
||||
Reference in New Issue
Block a user