function t5(stock,code,name,lang,_title){ $.ajax({ type: "get", url:"http://data.gtimg.cn/flashdata/hushen/4day/" + stock + "/" + stock + code + ".js?maxage=43200", datatype:"script", cache:"false", success:function(){ var data_t5 = format_t5(min_data_4d); // 坐标极值数组 var yaxis_data = axisdata(data_t5); var data_date = formatedate_t5(min_data_4d,lang); var timearr = timeforx(min_data_4d,data_date); var option = opt_t5(name,data_t5,yaxis_data,lang,_title,timearr) var mychart = echarts.init(document.getelementbyid("main")); mychart.setoption(option) } }) } function format_t5(data){ var datevsvalue = []; $.each(data,function(index,item){ var dataarr = item.data.split("^"); var _arr = [] var volume_arr = []; var change_arr = []; $.each(dataarr,function(i,e){ var sparr = e.split("~"); if(e.length > 0){ _arr.push(sparr[1]) }else{ dataarr.splice(i) } if(i == 0){ volume_arr.push(sparr[2]) }else{ volume_arr.push(sparr[2] - dataarr[i-1].split("~")[2]) }; change_arr.push(todecimal((sparr[1] - item.prec) / item.prec * 100)) }); var datamax = math.max.apply(null,_arr); var datamin = math.min.apply(null,_arr); var changemax = math.max.apply(null,change_arr); var changemin = math.min.apply(null,change_arr); datevsvalue.push({ date:item.date, value:_arr, volume:volume_arr, change:change_arr, datamax:datamax, datamin:datamin, changemax:changemax, changemin:changemin }); }); datevsvalue.sort(function(a,b){ return a.date - b.date }); $.each(datevsvalue,function(index,item){ var new_arr = []; var new_volumearr = []; var new_changearr = []; if(index > 0){ var unshiftarr = []; for(var i = 0;i < item.value.length * index;i++ ){ unshiftarr.push("-") } new_arr = unshiftarr.concat(item.value); new_volumearr = unshiftarr.concat(item.volume); new_changearr = unshiftarr.concat(item.change); }else{ new_arr = item.value new_volumearr = item.volume new_changearr = item.change } if(index < datevsvalue.length - 1){ var pusharr = []; for(var i = 0;i < item.value.length * (datevsvalue.length - index - 1) ;i++){ pusharr.push("-") }; new_arr = new_arr.concat(pusharr) new_volumearr = new_volumearr.concat(pusharr) new_changearr = new_changearr.concat(pusharr) } datevsvalue[index].value = new_arr datevsvalue[index].volume = new_volumearr datevsvalue[index].change = new_changearr }); return datevsvalue }; // 计算y轴坐标极值 function axisdata(data){ var valmax_arr = []; var valmin_arr = []; var chmax_arr = []; var chmin_arr = []; $.each(data,function(index,json){ valmax_arr.push(json.datamax) valmin_arr.push(json.datamin) chmax_arr.push(json.changemax) chmin_arr.push(json.changemin) }); var valmax = math.max.apply(null,valmax_arr); var valmin = math.min.apply(null,valmin_arr); var chmax = math.max.apply(null,chmax_arr); var chmin = math.min.apply(null,chmin_arr); return { valuemax:valmax, valuemin:valmin, changemax:chmax, changemin:chmin, } } function formatedate_t5(data,lang){ var datearr = []; $.each(data,function(index,item){ datearr.push(item.date); }); datearr.sort(); $.each(datearr,function(ind,date){ date = "20" + date; date = date.slice(0,4) + "/" + date.slice(4,6) + "/" + date.slice(6,8); if(lang == "cn"){ var day = numtocn(new date(date).getday()); }else{ var day = numtoen(new date(date).getday()); } date = date + ' ' + day; datearr[ind] = date }); return datearr } // 建立数组作x轴刻度显示 function timeforx(data,datearr){ var axisarr = [] $.each(data,function(index,item){ var timearr = item.data.split("^"); timearr = removeempty(timearr); $.each(timearr,function(i,n){ var _time = n.split("~")[0]; var inow = _time.slice(0,2) + ":" + _time.slice(2,4) if(i == 0){ timearr[i] = datearr[index] }else{ timearr[i] = datearr[index] + " " + inow } }); axisarr = axisarr.concat(timearr) }) return axisarr } /* 数组去空值 */ function removeempty(arr){ var _arr = new array(); $.each(arr,function(index,val){ if(val !== '' && val !== undefined){ _arr.push(val) } }); return _arr; } // 提示框中文格式回调封装 function tooltip_t5(stock,param,data,lang,name){ var html = ""; var _cate,_val,_change,_volume,get_ind; var idate = new date(); var iyear = idate.getfullyear(); var imon = idate.getmonth() + 1; imon = imon < 10 ? "0" + imon : imon; var itoday = idate.getdate(); itoday = itoday < 10 ? "0" + itoday : itoday; var str_date = iyear + "/" + imon + "/" + itoday; // 如悬停点为当日且还未产生数据 if(str_date == param[0].axisvaluelabel.split(" ")[0]){ var flag_val = true; var flag_change = true; $.each(param,function(i,serious){ switch(serious.seriesname){ case "price": if(serious.data != "-"){ flag_val = false; _val = todecimal(serious.data); get_ind = serious.dataindex; _volume = data[data.length - 1].volume[get_ind]; }; break; case "change": if(serious.data != "-"){ flag_change = false; _change = todecimal(serious.data) + "%"; }; break; } }); if(flag_val){ _val = "-"; _change = "-"; _volume = "-" }; }else{ $.each(param,function(i,serious){ switch(serious.seriesname){ case "price": if(serious.data != "-"){ _val = todecimal(serious.data); get_ind = serious.dataindex; _volume = data[i].volume[get_ind]; }; break; case "change": if(serious.data != "-"){ _change = todecimal(serious.data) + "%"; }; break; } }); } if(param[0].axisvalue.indexof(":") < 0){ _cate = param[0].axisvalue + " 09:30" }else{ _cate = param[0].axisvalue }; if(_volume >= 10000){ _volume = showm(lang,_volume,stock) } if(param[0].componentsubtype == "line"){ if(lang == "cn"){ var til_value = "价格"; var til_change = "涨跌幅"; var til_volume = "成交量"; }else{ var til_value = "price" var til_change = "change" var til_volume = "volume" } html += '
' + name + '
' + '
' + _cate + '
' + '
' + '' + til_value + ':' + _val + '
' + '' + til_change + ':' + _change + '
' + '' + til_volume + ':' + _volume + '
' } return html; } function opt_t5(name,data,axis_data,lang,_title,datearr){ var upcolor = '#ec0000'; var upbordercolor = '#8a0000'; var downcolor = '#00da3c'; var downbordercolor = '#008f28'; // 提示框参数配置 var settooltip = { trigger: 'axis', axispointer: { type: 'cross' }, formatter:function(param){ return tooltip_t5("hushen",param,data,lang,name) } }; return { title: { text: _title, left: 0 }, tooltip: settooltip, grid: { left: '10%', right: '10%', bottom: '15%' }, xaxis: { type: 'category', splitline:{ show:true }, data:datearr, scale: true, boundarygap : false, axispointer: { label:{ formatter:function(params){ var axiscate = "" if(params.value.indexof(":") < 0){ axiscate = params.value + " 09:30" }else{ axiscate = params.value } return axiscate } } }, axisline: {onzero: false}, axistick:{ show:false, }, axislabel:{ align:'left', interval:241, } }, yaxis: [{ // 价格 type: 'value', min: axis_data.valuemin, max: axis_data.valuemax, splitnumber:5, interval:(axis_data.valuemax - axis_data.valuemin) / 5, scale: true, splitarea: { show: true }, axispointer: { label:{ formatter:function(params){ return todecimal(params.value) } } }, axislabel:{ formatter:function(value,index){ console.log(value) return todecimal(value) } } },{ // 涨跌幅 type: 'value', min: axis_data.changemin, max: axis_data.changemax, splitnumber: 5, interval:(axis_data.changemax - axis_data.changemin) / 5, scale: true, splitarea: { show: true }, axispointer: { label:{ formatter:function(params){ return todecimal(params.value) + "%" } } }, axislabel:{ formatter:function(value,index){ console.log(value) value = todecimal(value) > 0 ? "+" + todecimal(value) : todecimal(value); return value + "%" } } }], series: [{ name:"price", type: 'line', yaxisindex: 0, data: data[0].value, itemstyle:{ color:"#c23531" }, linestyle:{ color:"#c23531" }, },{ name:"price", type: 'line', yaxisindex: 0, data: data[1].value, itemstyle:{ color:"#2f4554" }, linestyle:{ color:"#2f4554" }, },{ name:"price", type: 'line', yaxisindex: 0, data: data[2].value, itemstyle:{ color:"#61a0a8" }, linestyle:{ color:"#61a0a8" }, },{ name:"price", type: 'line', yaxisindex: 0, data: data[3].value, itemstyle:{ color:"#d48265" }, linestyle:{ color:"#d48265" }, },{ name:"price", type: 'line', yaxisindex: 0, data: data[4].value, itemstyle:{ color:"#91c7ae" }, linestyle:{ color:"#91c7ae" }, },{ name:"change", type: 'line', yaxisindex: 1, data: data[0].change, linestyle: { opacity: 0 }, itemstyle:{ opacity: 0 } },{ name:"change", type: 'line', yaxisindex: 1, data: data[1].change, linestyle: { opacity: 0 }, itemstyle:{ opacity: 0 } },{ name:"change", type: 'line', yaxisindex: 1, data: data[2].change, linestyle: { opacity: 0 }, itemstyle:{ opacity: 0 } },{ name:"change", type: 'line', yaxisindex: 1, data: data[3].change, linestyle: { opacity: 0 }, itemstyle:{ opacity: 0 } },{ name:"change", type: 'line', yaxisindex: 1, data: data[4].change, linestyle: { opacity: 0 }, itemstyle:{ opacity: 0 } }] } }