首先引用highcharts的主脚本,此处略。
以下为封装的代码:
/// <summary>
/// 生成仪表盘脚本
/// </summary>
/// <param name="jzcode">机组编号</param>
/// <param name="data">指针数据</param>
/// <param name="jzname">机组名称</param>
/// <param name="title">仪表标题</param>
/// <param name="unit">单位</param>
/// <param name="min">仪表最小值</param>
/// <param name="max">机组最大值</param>
/// <param name="isneed">是否要波动</param>
/// <returns></returns>
public static string GetDashboard(string jzcode, decimal data, string jzname, string title = "发电煤耗", string unit = " g/kWh", int min = 0, int max = 350,bool isneed=true)
{
StringBuilder sb = new StringBuilder();
sb.Append("$('#jz" + jzcode + "').highcharts({\r\n");
sb.Append("chart: {\r\n");
sb.Append("type: 'gauge',");
sb.Append("plotBackgroundColor: null,\r\n");
sb.Append("plotBackgroundImage: null,\r\n");
sb.Append("plotBorderWidth: 0,\r\n");
sb.Append("plotShadow: false\r\n");
sb.Append("},\r\n");
sb.Append("credits: { enabled: false },\r\n");
sb.Append("exporting: { enabled: false },\r\n");
sb.Append("title: {\r\n");
sb.Append("text: '" + jzname + "'\r\n");
sb.Append("},\r\n");
sb.Append("pane: {\r\n");
sb.Append("startAngle: -150,\r\n");
sb.Append("endAngle: 150,\r\n");
sb.Append("background: [{\r\n");
sb.Append("backgroundColor: {\r\n");
sb.Append("linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },\r\n");
sb.Append("stops: [\r\n");
sb.Append("[0, '#FFF'],\r\n");
sb.Append("[1, '#333']\r\n");
sb.Append("]\r\n");
sb.Append("},\r\n");
sb.Append("borderWidth: 0,\r\n");
sb.Append("outerRadius: '109%'\r\n");
sb.Append("}, {\r\n");
sb.Append("backgroundColor: {\r\n");
sb.Append("linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },\r\n");
sb.Append("stops: [\r\n");
sb.Append("[0, '#333'],\r\n");
sb.Append("[1, '#FFF']\r\n");
sb.Append("]\r\n");
sb.Append("},\r\n");
sb.Append("borderWidth: 1,\r\n");
sb.Append("outerRadius: '107%'\r\n");
sb.Append("}, {\r\n");
sb.Append("}, {\r\n");
sb.Append("backgroundColor: '#DDD',\r\n");
sb.Append("borderWidth: 0,\r\n");
sb.Append("outerRadius: '105%',\r\n");
sb.Append("innerRadius: '103%'\r\n");
sb.Append("}]\r\n");
sb.Append("},\r\n");
sb.Append("yAxis: {\r\n");
sb.Append("min: " + min + ",\r\n");
sb.Append("max: " + max + ",\r\n");
sb.Append("minorTickInterval: 'auto',\r\n");
sb.Append("minorTickWidth: 1,\r\n");
sb.Append("minorTickLength: 10,\r\n");
sb.Append("minorTickPosition: 'inside',\r\n");
sb.Append("minorTickColor: '#666',\r\n");
sb.Append("tickPixelInterval: 30,\r\n");
sb.Append("tickWidth: 2,\r\n");
sb.Append("tickPosition: 'inside',\r\n");
sb.Append("tickLength: 10,\r\n");
sb.Append("tickColor: '#666',\r\n");
sb.Append("labels: {\r\n");
sb.Append(" step: 2,\r\n");
sb.Append(" rotation: 'auto'\r\n");
sb.Append("},\r\n");
sb.Append("title: {\r\n");
sb.Append(" text: '" + title + "'\r\n");
sb.Append("},\r\n");
sb.Append("plotBands: [{\r\n");
sb.Append(" from: 0,\r\n");
sb.Append(" to: 300,\r\n");
sb.Append(" color: '#55BF3B' // green\r\n");
sb.Append("}, {\r\n");
sb.Append(" from: 300,\r\n");
sb.Append(" to: 330,\r\n");
sb.Append(" color: '#DDDF0D' // yellow\r\n");
sb.Append("}, {\r\n");
sb.Append(" from: 330,\r\n");
sb.Append(" to: 350,\r\n");
sb.Append(" color: '#DF5353' // red\r\n");
sb.Append("}]\r\n");
sb.Append("},\r\n");
sb.Append("series: [{\r\n");
sb.Append(" name: '" + jzname + "',\r\n");
sb.Append(" data: [" + Math.Round(data,2) + "],\r\n");
sb.Append(" tooltip: {\r\n");
sb.Append(" valueSuffix: ' " + unit + "'\r\n");
sb.Append(" }\r\n");
sb.Append("}]\r\n");
sb.Append("}\r\n");
if (isneed)
{
sb.Append(",function (chart) {\r\n");
sb.Append(" if (!chart.renderer.forExport) {\r\n");
sb.Append(" setInterval(function () {\r\n");
sb.Append(" var point = chart.series[0].points[0],\r\n");
sb.Append(" newVal,\r\n");
sb.Append(" inc = Math.round((Math.random() - 0.5) * 5);\r\n");
sb.Append(" newVal = point.y + inc;\r\n");
sb.Append(" if (newVal < min || newVal > max) {\r\n");
sb.Append(" newVal = point.y - inc;\r\n");
sb.Append(" }\r\n");
sb.Append(" if(point.y>0)");
sb.Append(" point.update(newVal);\r\n");
sb.Append(" }, 3000);\r\n");
sb.Append(" }}\r\n");
}
sb.Append(" );\r\n");
return sb.ToString();
}