使用plot绘制实时图表
先上图片
var dataObj = []; var dataLength = 60; var updateInterval = 3000; var options = { series: { shadowSize: 0,lines: { show: true },points: { show: true } }, grid: { hoverable: true }, yaxis: { min: 0, max: 100 }, xaxis: { show: false } }; var plot; var chartId; var serverId; var myTimer; var previousPoint = null ; var campArr //切换图表 function switchChart(id){ if ($( "#dgrd_course tr" ).length == 1){ return false ; } $( "div[id$='_DIV']" ).slideUp(); $( "#" +id+ "_DIV" ).slideDown( "fast" , function (){ $( ".headerTr img" ).attr( "src" , "../Images/tubiao01.gif" ); $( "#" +id).parent().parent().find( "img" )[0].src = "../Images/tubiao02.gif" ; chartId = id; var res = getChartData(); var war = getWarnData(); if (id == "S_CPU" ||id == "S_MEMORY" ||id== "S_DISK_SYS" ||id== "S_DISK_APP" ){ options.yaxis.max = 100; } else { if (war[0] == undefined){ //此为按实时数据最大值计算纵坐标最大高度 var arr = $( "#INPUT_" +chartId+serverId).val().split( "#" ); var max = Math.max.apply(Math,arr); options.yaxis.max = max*2; } else { //按报警值计算最大高度 options.yaxis.max = war[0][1]*2; } } plot = $.plot($( "#" +chartId+ "_DIV" ), [ {color: "#FF0000" ,label: "报警值" ,data:war},{color: "#9acd32" ,label: "实时值" ,data:res} ], options); bindHover(chartId+ "_DIV" ); clearTimeout(myTimer); getServerVal(); }); } //从服务器端获取数据 function getServerVal(){ $.get( 'Mon_mon_info_manager.aspx?ACTION=GETJSON&RND' +( new Date()).getMilliseconds(), function (data) { var dataAjax = $.parseJSON(data); for ( var i=0;i<dataAjax.length;i++){ for ( var key in dataAjax[i]){ var obj = $( "#INPUT_" +key+dataAjax[i][ "LIST_ID" ]) var val = obj.val(); if (val != undefined){ if (val == "" ){ obj.val(dataAjax[i][key]); } else { obj.val(val+ "#" +dataAjax[i][key]); } if (dataAjax[i][ "LIST_ID" ] == serverId){ $( "#" +key+ "_CUR" ).text(dataAjax[i][key]); } } } } var res = getChartData(); var war = getWarnData(); plot.setData([{color: "#FF0000" ,label: "报警值" ,data:war},{color: "#9acd32" ,label: "实时值" ,data:res}]); plot.draw(); myTimer = setTimeout(getServerVal, updateInterval); }); } //准备要显示的数据 function getChartData(){ var arr = $( "#INPUT_" +chartId+serverId).val().split( "#" ).reverse(); var res = []; for ( var i=0;i<dataLength-arr.length;++i){ arr.push(-1); } arr = arr.reverse(); for ( var i = 0; i < dataLength; ++i){ res.push([i, arr[arr.length-dataLength+i]]) } return res; } //获取报警值 function getWarnData(){ var res = []; for ( var i=0;i<campArr.length;i++){ var subArr = campArr[i].split( ">" ); if (subArr.length>1 && $.trim(subArr[0]) == chartId){ res.push([0,$.trim(subArr[1])]); res.push([dataLength-1,res[0][1]]); break ; } } return res; } //鼠标滑上显示提示信息 function showTooltip(x, y, contents) { $( '<div id="tooltip">' + contents + '</div>' ).css( { position: 'absolute' , display: 'none' , top: y - 10, left: x + 10, border: '1px solid #fdd' , padding: '2px' , 'background-color' : '#fee' , opacity: 0.80 }).appendTo( "body" ).fadeIn(200); } //每个动态生成的点的鼠标滑上事件 function bindHover(placeId){ $( "#" +placeId).bind( "plothover" , function (event, pos, item) { if (item) { $( "#tooltip" ).remove(); var y = item.datapoint[1].toFixed(2); showTooltip(item.pageX, item.pageY,y); } else { $( "#tooltip" ).remove(); } }); } //页面载入完成 $( function (){ if ($( "#dgrd_course tr" ).length > 1){ var firstRow = $($( "#dgrd_course tr" )[1]) firstRow.click(); updateInterval = Number($( "#TimeOutHF" ).val())*1000; } }); //服务器列表选中一行 function selectRow(id,camp){ if ($( "tr[id^='" + id + "']" ).attr( "class" ) == "selected_row" ){ return false ; } $( ".selected_row" ).attr( "class" , "TableLine1" ); $( "tr[id^='" + id + "']" ).attr( "class" , "selected_row" ); serverId = $.trim($( ".selected_row" ).attr( "id" )); campArr = camp.split( " and " ); switchChart( "S_CPU" ); } |
服务器断代码
Dim dblTotal1 As Integer = 0 Protected Sub Page_Load( ByVal sender As Object , ByVal e As System.EventArgs) Handles Me .Load If Not IsPostBack Then If Request( "ACTION" ) = "GETJSON" Then GetData() Return End If monManager.resetMonInfo() GetCircTime() BindGrid() End If End Sub '获取邮件轮训时间 Public Function GetCircTime() As Integer Try Dim configManager As New MON.MON.MON_PARAMETER Dim configTable As DataTable = configManager.getMonParameter() TimeOutHF.Value = configTable.Rows(0)( "LOG_CIRC" ).ToString() Catch ex As Exception lbl_message.Text = "<IMG src='../images/@warn.gif'>" & ex.Message Return -1 End Try End Function Public Function BindGrid() As Integer Try Dim manager As New MON.MON.MON_SERVER_LIST Dim tbDetValue As DataTable = manager.getServerListInfo() dgrd_course.DataSource = tbDetValue dgrd_course.DataBind() For Each dr As DataRow In tbDetValue.Rows Dim hf As New HiddenField hf.ID = "INPUT_S_CPU" & dr( "LIST_ID" ).ToString() Form1.Controls.Add(hf) hf = New HiddenField hf.ID = "INPUT_S_DISK_APP" & dr( "LIST_ID" ).ToString() Form1.Controls.Add(hf) hf = New HiddenField hf.ID = "INPUT_S_DISK_SYS" & dr( "LIST_ID" ).ToString() Form1.Controls.Add(hf) hf = New HiddenField hf.ID = "INPUT_S_MEMORY" & dr( "LIST_ID" ).ToString() Form1.Controls.Add(hf) hf = New HiddenField hf.ID = "INPUT_S_FLOW_IN" & dr( "LIST_ID" ).ToString() Form1.Controls.Add(hf) hf = New HiddenField hf.ID = "INPUT_S_FLOW_OUT" & dr( "LIST_ID" ).ToString() Form1.Controls.Add(hf) hf = New HiddenField hf.ID = "INPUT_S_WEB_PORT" & dr( "LIST_ID" ).ToString() Form1.Controls.Add(hf) hf = New HiddenField hf.ID = "INPUT_S_SQL_CONNECT" & dr( "LIST_ID" ).ToString() Form1.Controls.Add(hf) Next Return 1 Catch ex As Exception lbl_message.Text = "<IMG src='../images/@warn.gif'>" & ex.Message Return -1 End Try End Function Public Function GetData() As Integer Try Dim dt As DataTable = monManager.getMonInfo() Dim rs As String = JsonConvert.SerializeObject(dt) Response.Write(rs) Response. End () Return 1 Catch Return 0 End Try End Function Protected Sub dgrd_staff2_ItemDataBound( ByVal sender As Object , ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles dgrd_course.ItemDataBound If e.Item.ItemIndex < 0 Then Return End If Dim dr As DataRowView = CType (e.Item.DataItem, DataRowView) e.Item.Attributes.Add( "id" , dr.Row( "LIST_ID" ).ToString()) e.Item.Attributes.Add( "onclick" , "selectRow('" & dr.Row( "LIST_ID" ).ToString() & "','" & dr.Row( "camp" ) & "');" ) e.Item.Attributes.Add( "onmouseover" , "SetDataGridBackColor('LightBlue',false);" ) e.Item.Attributes.Add( "onmouseout" , "SetDataGridBackColor('white',true);" ) End Sub |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统