function evil(fn) { var fn = function; //一个变量指向function,防止有些前端编译工具报错 return new fn('return ' + fn)(); } function t5_hk(code,name,lang,_title){ $.ajax({ type: "get", url:"http://web.ifzq.gtimg.cn/appstock/app/day/query?_var=fdays_data_hk" + code + "&code=hk" + code + "&r=0.47100851714007463", datatype:"script", success:function(){ var res = evil("fdays_data_hk" + code).data; res = res["hk" + code].data; // 图标数据 var data = format_t5_hk(res); // 坐标极值数组 var yaxis_data = axisdata(data); // 日期数组 var data_date = formatedate_t5_hk(data,lang); // x轴数据数组 var timearr = timeforx_t5_hk(res,data_date) var option = opt_t5_hk(name,data,yaxis_data,lang,_title,timearr) var mychart = echarts.init(document.getelementbyid("main")); mychart.setoption(option) } }) } // 计算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 format_t5_hk(res){ // 每日数据原始长度 var data_lens = res[res.length - 1].data.length; var res_data = []; $.each(res,function(index,data){ var _arr = []; var volume_arr = []; var change_arr = []; $.each(data.data,function(i,n){ var sparr = n.split(" "); _arr.push(sparr[1]); if(i == 0){ volume_arr.push(sparr[2]) }else{ volume_arr.push(sparr[2] - data.data[i-1].split(" ")[2]) }; change_arr.push(todecimal((sparr[1] - data.prec) / data.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); res_data.push({ date:data.date, data:_arr, volume:volume_arr, change:change_arr, datamax:datamax, datamin:datamin, changemax:changemax, changemin:changemin }); }); res_data.sort(function(a,b){ return a.date - b.date }); $.each(res_data,function(index,data){ for(var i = 0;i < index * data_lens;i++){ data.data.unshift("-"); data.volume.unshift("-"); data.change.unshift("-"); }; dis_lens = data_lens * res.length - data.data.length; for(var j = 0;j < dis_lens;j++){ data.data.push("-") data.volume.push("-") data.change.push("-") } }); return res_data } function formatedate_t5_hk(data,lang){ var datearr = []; $.each(data,function(index,item){ datearr.push(item.date); }); datearr.sort(); $.each(datearr,function(ind,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_t5_hk(data,datearr){ data = data.sort(function(a,b){ return a.date - b.date }); var axisarr = []; $.each(data,function(index,item){ $.each(item.data,function(e,arr){ var itime = arr.split(" ")[0]; itime = itime.slice(0,2) + ":" + itime.slice(2,4) if(e == 0){ axisarr.push(datearr[index]) }else{ axisarr.push(datearr[index] + " " +itime) } }); if(index == data.length - 1){ var it_lens = item.data.length; $.each(data[0].data,function(i,time){ if(i > it_lens - 1){ var t = time.split(" ")[0]; t = t.slice(0,2) + ":" + t.slice(2,4); axisarr.push(datearr[index] + " " + t) } }) } }); return axisarr } // 自定义提示框回调封装 function tooltip_t5_hk(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; } }); } _cate = param[0].axisvaluelabel; 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_hk(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_hk("hk",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:331, } }, 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){ 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){ value = todecimal(value) > 0 ? "+" + todecimal(value) : todecimal(value); return value + "%" } } }], series: [{ name:"price", type: 'line', yaxisindex: 0, data: data[0].data, itemstyle:{ color:"#c23531" }, linestyle:{ color:"#c23531" }, },{ name:"price", type: 'line', yaxisindex: 0, data: data[1].data, itemstyle:{ color:"#2f4554" }, linestyle:{ color:"#2f4554" }, },{ name:"price", type: 'line', yaxisindex: 0, data: data[2].data, itemstyle:{ color:"#61a0a8" }, linestyle:{ color:"#61a0a8" } },{ name:"price", type: 'line', yaxisindex: 0, data: data[3].data, itemstyle:{ color:"#d48265" }, linestyle:{ color:"#d48265" } },{ name:"price", type: 'line', yaxisindex: 0, data: data[4].data, 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 } }] } }