//窗口大小变化时延时刷新图表大小
$(window).resize(function () {
var bodyWidth = $(window).width()
var bodyHeight = $(window).height()
$("#provinceChart").width(bodyWidth / 2 < 600 ? 600 : bodyWidth / 2 - 20)
$("#industryChart").width(bodyWidth / 2 < 600 ? 600 : bodyWidth / 2 - 20)
$("#industryOneChart").width(bodyWidth / 2 < 600 ? 600 : bodyWidth / 2 - 20)
$("#provinceChart").height(bodyHeight / 2 - 40)
$("#industryChart").height(bodyHeight / 2 - 40)
$("#industryOneChart").height(bodyHeight / 2 - 40)
$("#cityTable").width(bodyWidth / 2 < 600 ? 600 : bodyWidth / 2 - 20)
$("#cityTable").height(bodyHeight / 2 - 40)
})
//初始化加载
$(document).ready(function () {
var bodyWidth = $(window).width()
var bodyHeight = $(window).height()
$("#provinceChart").width(bodyWidth / 2 < 600 ? 600 : bodyWidth / 2 - 20)
$("#industryChart").width(bodyWidth / 2 < 600 ? 600 : bodyWidth / 2 - 20)
$("#industryOneChart").width(bodyWidth / 2 < 600 ? 600 : bodyWidth / 2 - 20)
$("#provinceChart").height(bodyHeight / 2 - 40)
$("#industryChart").height(bodyHeight / 2 - 40)
$("#industryOneChart").height(bodyHeight / 2 - 40)
$("#cityTable").width(bodyWidth / 2 < 600 ? 600 : bodyWidth / 2 - 20)
$("#cityTable").height(bodyHeight / 2 - 40)
setDate()
getIndustry()
})
//初始化日期
function setDate() {
var current = new Date()
var today = new Date(current.getFullYear(), current.getMonth(), current.getDate()).format("yyyy-MM-dd")
var yesterday = new Date(current.getFullYear(), current.getMonth(), current.getDate() - 1).format("yyyy-MM-dd")
var beforeday = new Date(current.getFullYear(), current.getMonth(), current.getDate() - 2).format("yyyy-MM-dd")
$("#date1").datebox("setValue", today)
$("#date2").datebox("setValue", yesterday)
$("#date3").datebox("setValue", beforeday)
queryProvinceData()
updateProvinceData()
}
//每5分钟更新省级图表
function updateProvinceData() {
var interval = window.setInterval(loadData, 300000)
function loadData() {
queryProvinceData()
}
}
var industryCount //行业数量
//初始一级下拉框
function getIndustry() {
ajax({
url: "/web/industry/getTopIndustryComboData.json",
dataType: "json",
success: function (data) {
industryCount = data.length
for (var i in data) {
if (!isNaN(i)) {
$("#industry").append("")
}
}
queryIndustryData(0)
getSecondIndustryComboData()
},
error: function () {
error.apply(this, arguments)
},
})
}
//加载二级行业下拉框
var secondIdustryCount
function getSecondIndustryComboData() {
var industryCode = $("#industry").find("option:selected").val()
ajax({
url: "/web/industry/getIndustryComboDataByParent.json",
dataType: "json",
data: { industryCode: industryCode },
success: function (data) {
$("#industry1").empty()
secondIdustryCount = data.length
for (var i in data) {
if (!isNaN(i)) {
$("#industry1").append("")
}
}
if (secondIdustryCount > 0) {
querySecondIdustryData(0)
getTableData(0)
}
//加载定时任务,刷新图表数据
updateCityDistrictData(secondIdustryCount)
},
error: function () {
error.apply(this, arguments)
},
})
}
var industryIndex = 0 //市级下拉框下标
//每隔30秒切换地区和行业
function updateCityDistrictData(count) {
var secondIdustryIndex = 0 //区县级下拉框下标
var interval = window.setInterval(loadData, 30000)
function loadData() {
secondIdustryIndex += 1
if (secondIdustryIndex >= secondIdustryCount || count == 0) {
//如果区县循环完毕,切换市级下拉框选项
industryIndex += 1
if (industryIndex == industryCount) {
industryIndex = 0
}
secondIdustryIndex = 0
$("#industry").get(0).selectedIndex = industryIndex
queryIndustryData(industryIndex)
getSecondIndustryComboData() //重新加载区县下拉框
window.clearInterval(interval) //停止定时任务
} else {
$("#industry1").get(0).selectedIndex = secondIdustryIndex
querySecondIdustryData(secondIdustryIndex)
getTableData(secondIdustryIndex)
}
}
}
function transform(data) {
if (data) {
var transformData = []
$.each(data, function (i, n) {
if (n["y"] == -9999) {
n["y"] = null
}
if (new Date(n["x"]).getMinutes() % 10 == 0) {
transformData.push(n)
}
})
return transformData
}
return data
}
//查询省级的负荷
function queryProvinceData() {
var date1 = $("#date1").datebox("getValue").replace(/-/g, "")
var date2 = $("#date2").datebox("getValue").replace(/-/g, "")
var date3 = $("#date3").datebox("getValue").replace(/-/g, "")
var first = $("#date1").datebox("getValue")
var second = $("#date2").datebox("getValue")
var third = $("#date3").datebox("getValue")
ajax({
url: "/web/flucatuationLoad/getOneCityLoadData.json",
type: "POST",
dataType: "JSON",
beforeSend: function () {
$("#provinceChart").mask("数据加载中....")
},
data: {
city: 0,
date1: date1,
date2: date2,
date3: date3,
},
success: function (jsonData) {
//省级查询完成后查询市级数据
$("#provinceChart").unmask()
if (jsonData.status == 1) {
var data = jsonData.data
var today = {}
var yesterday = {}
var beforeday = {}
today["name"] = first
yesterday["name"] = second
beforeday["name"] = third
today["data"] = {}
yesterday["data"] = {}
beforeday["data"] = {}
if (null == data) {
showDayChart("provinceChart", [today, yesterday, beforeday], { title: { text: "单位:(万千瓦)" } }, "【宁夏】")
return
}
chartData = data.chartData
today["data"] = transform(chartData.date1)
yesterday["data"] = transform(chartData.date2)
beforeday["data"] = transform(chartData.date3)
showDayChart("provinceChart", [today, yesterday, beforeday], { title: { text: "单位:(万千瓦)" } }, "【宁夏】")
}
},
error: function () {
$("#provinceChart").unmask()
alert("服务存在异常,请稍后再试")
},
})
}
//查询一级行业的负荷
function queryIndustryData(index) {
$("#industry").get(0).selectedIndex = index
var industry = $("#industry").find("option:selected").val()
var industryName = $("#industry").find("option:selected").text()
var date1 = $("#date1").datebox("getValue").replace(/-/g, "")
var date2 = $("#date2").datebox("getValue").replace(/-/g, "")
var date3 = $("#date3").datebox("getValue").replace(/-/g, "")
var first = $("#date1").datebox("getValue")
var second = $("#date2").datebox("getValue")
var third = $("#date3").datebox("getValue")
ajax({
url: "/web/flucatuationLoad/getOneIndustryLoadData.json",
type: "POST",
dataType: "JSON",
beforeSend: function () {
$("#industryChart").mask("数据加载中....")
},
data: {
date1: date1,
date2: date2,
date3: date3,
industry: industry,
},
success: function (jsonData) {
$("#industryChart").unmask()
if (jsonData.status == 1) {
var data = jsonData.data
var today = {}
var yesterday = {}
var beforeday = {}
today["name"] = first
yesterday["name"] = second
beforeday["name"] = third
today["data"] = {}
yesterday["data"] = {}
beforeday["data"] = {}
if (null == data) {
showDayChart("industryChart", [today, yesterday, beforeday], { title: { text: "单位:(万千瓦)" } }, "【" + industryName + "】")
return
}
chartData = data.chartData
today["data"] = transform(chartData.date1)
yesterday["data"] = transform(chartData.date2)
beforeday["data"] = transform(chartData.date3)
showDayChart("industryChart", [today, yesterday, beforeday], { title: { text: "单位:(万千瓦)" } }, "【" + industryName + "】")
}
},
error: function () {
$("#industryChart").unmask()
alert("服务存在异常,请稍后再试")
},
})
}
//查询二级行业的负荷
function querySecondIdustryData(index) {
$("#industry1").get(0).selectedIndex = index
var industry = $("#industry1").find("option:selected").val()
var industryName = $("#industry1").find("option:selected").text()
$("#tableTitle").html("【" + industryName + "】企业负荷详情")
var date1 = $("#date1").datebox("getValue").replace(/-/g, "")
var date2 = $("#date2").datebox("getValue").replace(/-/g, "")
var date3 = $("#date3").datebox("getValue").replace(/-/g, "")
var first = $("#date1").datebox("getValue")
var second = $("#date2").datebox("getValue")
var third = $("#date3").datebox("getValue")
ajax({
url: "/web/flucatuationLoad/getOneIndustryLoadData.json",
type: "POST",
dataType: "JSON",
beforeSend: function () {
$("#industryOneChart").mask("数据加载中....")
},
data: {
date1: date1,
date2: date2,
date3: date3,
industry: industry,
},
success: function (jsonData) {
$("#industryChart").unmask()
if (jsonData.status == 1) {
var data = jsonData.data
var today = {}
var yesterday = {}
var beforeday = {}
today["name"] = first
yesterday["name"] = second
beforeday["name"] = third
today["data"] = {}
yesterday["data"] = {}
beforeday["data"] = {}
if (null == data) {
showDayChart("industryOneChart", [today, yesterday, beforeday], { title: { text: "单位:(万千瓦)" } }, "【" + industryName + "】")
return
}
chartData = data.chartData
today["data"] = transform(chartData.date1)
yesterday["data"] = transform(chartData.date2)
beforeday["data"] = transform(chartData.date3)
showDayChart("industryOneChart", [today, yesterday, beforeday], { title: { text: "单位:(万千瓦)" } }, "【" + industryName + "】")
}
},
error: function () {
$("#industryOneChart").unmask()
alert("服务存在异常,请稍后再试")
},
})
}
/**
* 企业负荷波动详情
*/
function getTableData(index) {
$("#industry1").get(0).selectedIndex = index
var industry = $("#industry1").find("option:selected").val()
var date = $("#date1").datebox("getValue").replace(/-/g, "") + "000000"
ajax({
url: "/web/flucatuationLoad/getIndustryFlucatuationLoadDetail.json",
type: "POST",
dataType: "JSON",
data: {
industry: industry,
time: date,
},
success: function (jsonData) {
if (jsonData.data != null) {
$("#flick-table").datagrid("loadData", jsonData.data)
}
},
error: function () {
alert("数据查询出错了!")
},
})
}
function showDayChart(id, series, yAxis, title) {
$("#" + id).highcharts({
title: {
text: title + "负荷波动情况",
x: -20,
},
xAxis: {
type: "datetime",
tickInterval: 3 * 3600 * 1000,
gridLineWidth: 0, // 默认是0,即在图上没有纵轴间隔线
// 自定义x刻度上显示的时间格式,根据间隔大小,以下面预设的小时/分钟/日的格式来显示
dateTimeLabelFormats: {
hour: "%H:%M",
day: "00:00",
},
},
yAxis: yAxis,
tooltip: {
crosshairs: {
width: 1,
color: "gray",
},
headerFormat: '时间:{point.key}
',
pointFormat: '{series.name}: {point.y}
',
valueDecimals: 2, // 数据值保留小数位数
xDateFormat: "%H:%M",
shared: true,
},
legend: {
borderWidth: 1,
align: "center", //水平方向位置
verticalAlign: "top", //垂直方向位置
y: 30, //距离Y轴的距离
},
plotOptions: {
column: {
dataLabels: {
enabled: false,
color: (Highcharts.theme && Highcharts.theme.dataLabelsColor) || "white",
},
},
series: {
connectNulls: true,
},
},
series: series,
})
}
//扩展Date的format方法
Date.prototype.format = function (format) {
var o = {
"M+": this.getMonth() + 1,
"d+": this.getDate(),
"h+": this.getHours(),
"m+": this.getMinutes(),
"s+": this.getSeconds(),
"q+": Math.floor((this.getMonth() + 3) / 3),
S: this.getMilliseconds(),
}
if (/(y+)/.test(format)) {
format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length))
}
for (var k in o) {
if (new RegExp("(" + k + ")").test(format)) {
format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length))
}
}
return format
}