var pageDef = { solar: { charts: [ { id: 'solarEchart1', echart: null, type: 'bar', series: ['发电电量', '入网电量'] }, { id: 'solarEchart2', echart: null, type: 'bar', series: ['发电时长', '故障次数'] }, { id: 'solarEchart3', echart: null, type: 'line', series: ['日电压', '日电流'] }, { id: 'solarEchart4', echart: null, type: 'line', series: ['日功率'] } ], }, storage: { charts: [ { id: 'storageEchart1', echart: null, type: 'bar', series: ['储能电量', '放电电量'] }, { id: 'storageEchart2', echart: null, type: 'bar', series: ['储能时长', '放电时长', '故障次数'] }, { id: 'storageEchart3', echart: null, type: 'line', series: ['日电压', '日电流'] }, { id: 'storageEchart4', echart: null, type: 'line', series: ['日功率'] } ], }, charge: { charts: [ { id: 'chargeEchart1', echart: null, type: 'bar', series: ['充电电量', '充电收益'] }, { id: 'chargeEchart2', echart: null, type: 'bar', series: ['充电次数', '充电时长', '故障次数'] }, { id: 'chargeEchart3', echart: null, type: 'line', series: ['日电压', '日电流'] }, { id: 'chargeEchart4', echart: null, type: 'line', series: ['日功率'] } ], } } var xdataBar = ['2025/3/1', '2025/3/2', '2025/3/3', '2025/3/4', '2025/3/5', '2025/3/6', '2025/3/7'] var ydataBar = [ [30, 28, 35, 18, 36, 27, 19], [10, 32, 20, 33, 39, 13, 22], ] var curActiveId = 'solar' function getRandomCurveData(m, n) { var data = [] var t0 = Date.parse('2025-03-01 00:00:00') var step = 600 var N = 86400 / step var y = 500; for (var i = 0; i < N; ++i) { // data[i] = { x: t0 + i * step * 1000, y: Math.sin(i * 0.1) * (n - m) } y = Math.floor((y + RAND(0, 50) - 25) * 100) / 100 data[i] = { x: t0 + i * step * 1000, y: y } } return data } function getCurveData(a, b, n) { var d = [[], []] for (var i = 0; i < n; ++i) { var v = RAND(a, b) d[0].push(v) d[1].push(v - RAND(50, 200)) } return d } function RAND(a, b) { return a + Math.random() * (b - a) } // 点击子页面菜单按钮,切换子页面 function initSubPage(id) { //if (curActiveId == id) return // 切换子菜单按钮样式,旧选择按钮恢复样式 if (curActiveId && curActiveId != '') { document.getElementById(curActiveId + 'Btn').className = 'btn btn-primary' // 隐藏旧菜单对应的表格子页面 $('#' + curActiveId).hide() } curActiveId = id // 切换子菜单按钮样式,新选择按钮设置样式 document.getElementById(curActiveId + 'Btn').className = 'btn btn-success btn-lg' // 显示新菜单对应的表格子页面 $('#' + curActiveId).show() var page = pageDef[id] if (!page) { alert("subpage [" + id + "] is undefined") return } page.charts.forEach(item => { if (item.type == 'bar') { item.echart = initEchartBar(item.id, item.series) for (var i = 0; i < item.series.length; ++i) { //updateEchartBar(item.echart, i, xdataBar, ydataBar[i]) } } else if (item.type == 'line') { item.echart = initEchartCurve(item.id, item.series) for (var i = 0; i < item.series.length; ++i) { updateEchartCurve(item.echart, i, G.getRandDataDay(100 * (i + 1), 200 * (i + 1))) } } if (id == 'solar') { if (item.id == 'solarEchart1') { var d = getCurveData(400, 500, 7) updateEchartBar(item.echart, 0, xdataBar, d[0]) updateEchartBar(item.echart, 1, xdataBar, d[1]) } else if (item.id == 'solarEchart2') { var d = getCurveData(480, 780, 7) updateEchartBar(item.echart, 0, xdataBar, d[0]) updateEchartBar(item.echart, 1, xdataBar, [0, 2, 0, 0, 3, 0, 1]) } } else if (id == 'storage') { } else if (id == 'charge') { } }); } window.onresize = () => { var page = pageDef[curActiveId] charts.charts.forEach(item => { if (item.echart) { item.echart.resize() } }) } $(document).ready(function () { initSubPage("solar") })