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 = "
| 1 | code | 编码 | " + topObj.code + " | / |
"
$("#indexTb").append(_tr);
_tr = "| 2 | name | 名称 | " + topObj.name + " | / |
"
$("#indexTb").append(_tr);
_tr = "| 3 | datatime | 时间 | " + 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;
}
}