var myCharts; //对应widget.js中MyWidget实例化后的对象 var thisWidget //当前页面业务 function initWidgetView(_thisWidget) { thisWidget = _thisWidget } function reloadData(params) { loadLineChartbySiteid(params); loadDetailedInfobySiteid(params); } function loadDetailedInfobySiteid(params) { $("#indexTb").empty(); var backend_url = params.nodejs_url_predix+"dataapi/Bdata?bid=get_" + params.layerid + "_single&datatype=" + params.datatype + "&siteid=" + params.siteid + "&datatime=" + params.datatime; $.ajax({ type: 'get', dataType: 'json', data: {}, async: false,//同步 url: backend_url, success: function (data) { var tableData = data.data.result; if (tableData != null && tableData.length > 0) { var topObj = tableData[0]; var _tr = "1code编码" + topObj.code + "/" $("#indexTb").append(_tr); _tr = "2name名称" + topObj.name + "/" $("#indexTb").append(_tr); _tr = "3datatime时间" + topObj.datatime + "/" $("#indexTb").append(_tr); var tmp_index = 4; for(var p in topObj){//遍历json对象的每个key/value对,p为key if (p!=='code' && p!=='name' && p!=='datatime' ){ _tr = ""+tmp_index+""+p+""+p+"" + topObj[p] + ""+getUnitByqindex(p)+"" $("#indexTb").append(_tr); tmp_index++; } } }else{ haoutil.msg("无查询记录,请更换查询条件!"); } }, error: function (request, textStatus) { haoutil.msg("查询错误,请联系管理员!!!") } }); } function getUnitByqindex(qindex){ qindex = qindex.toUpperCase(); if (qindex=='PM25' || qindex=='PM10' || qindex=='NO'|| qindex=='NO2'|| qindex=='NOX' || qindex=='SO2'){ return 'μg/m³'; }else if (qindex=='CO'){ return 'mg/m³'; }else { return '/'; } } function over(obj) { $('#indexTb tr').removeClass("over_tr"); $(obj).addClass("over_tr"); } function out(obj) { $(obj).removeClass("over_tr"); } function loadLineChartbySiteid(params) { if (myCharts) { $('#echart').removeAttr('_echarts_instance_'); } var backend_url = params.nodejs_url_predix + "dataapi/Bdata?bid=get_" + params.layerid + "_history&datatype=" + params.datatype + "&siteid=" + params.siteid + "&datatime=" + params.datatime + "&count=10"; // all 1006xx layer has the same legend !! var layerid = params.layerid+""; var legendData = all_layer_legends[layerid.substring(0,4)]; var legendData_selected = {}; legendData.forEach(element => { if (element==params.selected_qindex.toUpperCase()){ legendData_selected[element] =true; }else{ legendData_selected[element] =false; } }); if (legendData == null || legendData.length < 1) { return; } var colorData = echart_lines_color_list[params.layerid]; var myItemStyle = { normal: { // 拐点上显示数值 label: { show: true }, borderColor: 'red', // 拐点边框颜色 lineStyle: { width: 2, // 设置线宽 type: 'solid' //'dotted'虚线 'solid'实线 } } }; $.ajax({ type: 'get', dataType: 'json', data: {}, async: false,//同步 url: backend_url, success: function (data) { console.log(data); var tableData = data.data.result; if (tableData != null && tableData.length > 0) { var seriesObj = {}; var seriesData = []; var timeLineData = []; for (var i = 0; i < legendData.length; i++) { var singleLegend = legendData[i]; var sdata = {}; sdata.name = singleLegend; sdata.data = []; sdata.type = 'line'; sdata.symbolSize = 8; if (singleLegend.toUpperCase()=='CO'){ sdata.yAxisIndex =1; } sdata.itemStyle = myItemStyle; seriesObj[singleLegend] = sdata; } for (var i = 0; i < tableData.length; i++) { var indexObj = tableData[i]; timeLineData.push(shortenLegendTimeString(params.datatype, indexObj.datatime)); for (var j = 0; j < legendData.length; j++) { var singleLegend = legendData[j]; var sdata = seriesObj[singleLegend]; sdata.data.push(indexObj[singleLegend]) } } for (var i = 0; i < legendData.length; i++) { var singleLegend = legendData[i]; var mySeries = seriesObj[singleLegend]; seriesData.push(mySeries); } options = { title: { text: tableData[0]["name"], textStyle: { color: '#87CEFA', //颜色 }, top: '20px', x: 'center' }, legend: { // orient 设置布局方式,默认水平布局,可选值:'horizontal'(水平) ¦ 'vertical'(垂直) orient: 'horizontal', // x 设置水平安放位置,默认全图居中,可选值:'center' ¦ 'left' ¦ 'right' ¦ {number}(x坐标,单位px) x: 'center', // y 设置垂直安放位置,默认全图顶端,可选值:'top' ¦ 'bottom' ¦ 'center' ¦ {number}(y坐标,单位px) y: 'top', textStyle: { //图例文字的样式 color: '#87CEFA', }, data: legendData, selected:legendData_selected, color: 'white' }, // 图表距边框的距离,可选值:'百分比'¦ {number}(单位px) grid: { top: '20%', // 等价于 y: '16%' left: '3%', right: '5%', bottom: '3%', containLabel: true }, // 提示框 tooltip: { trigger: 'axis' }, toolbox:{ feature: { saveAsImage: { type:'jpeg'}, dataView: {}, magicType: { type: ['line', 'bar'], option: { // 类型切换时,下述配置项将被merge到对应类型的图表 series 中 line: { smooth: true }, bar: { label: { show: true } } } }, } }, xAxis: { name: '时间', type: 'category', axisLine: { lineStyle: { // 设置x轴颜色 color: '#87CEFA' } }, // 设置X轴数据旋转倾斜 axisLabel: { color: '#87CEFA', //坐标的字体颜色 interval: 0 //设置X轴数据间隔几个显示一个,为0表示都显示 }, // boundaryGap值为false的时候,折线第一个点在y轴上 boundaryGap: false, data: timeLineData, axisLine: { symbol: ['none', 'arrow'], //箭头一端没效果,一端箭头 symbolOffset: [0, 8], //箭头段移动8个像素 } }, yAxis: [{ name: '指标(μg/m³)', type: 'value', axisLine: { lineStyle: { // 设置y轴颜色 color: '#87CEFA', symbol: ['none', 'arrow'], //箭头一端没效果,一端箭头 symbolOffset: [0, 8], //箭头段移动8个像素 } }, },{ name: 'CO(mg/m³)', type: 'value', axisLine: { lineStyle: { // 设置y轴颜色 color: '#8700FA', symbol: ['none', 'arrow'], //箭头一端没效果,一端箭头 symbolOffset: [0, 8], //箭头段移动8个像素 } }, }], series: seriesData, color: colorData }; myCharts = echarts.init(document.getElementById('echart')); myCharts.setOption(options, true); window.onresize = function(){ myCharts.resize(); } }else{ haoutil.msg("无查询记录,请更换查询条件!"); } }, error: function (request, textStatus) { haoutil.msg("查询错误,请联系管理员!!!") } }); } function shortenLegendTimeString(datatype,full_time_str) { if (datatype == 'hour') { return full_time_str.substring(8, 13); } else if (datatype == 'day') { return full_time_str.substring(8, 10) ; } else { return full_time_str; } }