zoukankan      html  css  js  c++  java
  • highcharts日期型X轴示例

    highcharts处理日期型X轴比较麻烦,用以下方法可以实现:

    HTML:

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="Highcharts_Default" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
    	<title></title>
    	<script src="../JS/jquery-1.7.min.js" type="text/javascript"></script>
    	<script src="../JS/highcharts.js" type="text/javascript"></script>
    </head>
    <body>
    	<div id="container" style="min- 400px; height: 400px; margin: 0 auto">
    	</div>
    </body>
    </html>

    前端脚本:

    <script type="text/javascript">
    	$(function () {
    		var chart;
    		$(document).ready(function () {
    			chart = new Highcharts.Chart({
    				chart: {
    					renderTo: 'container',
    					type: 'line',
    					marginRight: 130,
    					marginBottom: 25
    				},
    				title: {
    					text: '员工工资曲线图',
                        style:{
    					    fontSize: '20px'
                        },
    					x: -20 //center
    				},
    				subtitle: {
    					text: 'Source: WorldClimate.com',
    					x: -20
    				},
    				xAxis: {
    					type: 'datetime',
    					labels: {
    						step: 4, 
    						formatter: function () {
    							return Highcharts.dateFormat('%Y-%m-%d', this.value);
    						}
    					}
    				},
    				yAxis: {
    					title: {
    						text: '工资(¥)'
    					},
    					plotLines: [{
    						value: 0,
    						 1,
    						color: '#808080'
    					}]
    				},
    				tooltip: {
    					formatter: function () {
    						return '<b>' + this.series.name + '</b><br/>' +
    						Highcharts.dateFormat('%Y-%m-%d', this.x) + ': ¥' + this.y.toFixed(2);
    					}
    				},
    				legend: {
    					layout: 'vertical',
    					align: 'right',
    					verticalAlign: 'top',
    					x: -10,
    					y: 100,
    					borderWidth: 0
    				},
    				plotOptions: {
    					series: {
    						cursor: 'pointer',
    						dataLabels: {
    							enabled: true,
    							formatter: function() {
    								return '¥' + this.y.toFixed(2);
    							}
    						},
    						point: {
    							events: {
    								click: function() {
    									alert ('Category: '+ Highcharts.dateFormat('%Y-%m-%d', this.x) +', value: '+ this.y + ",id:" + this.id);
    								}
    							}
    						}
    					}
    				},
    				series: [<%=dataPoints%> ]
    			});
    		});
    
    	});
    </script>

    后台代码示例:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data.SqlClient;
    
    public partial class Highcharts_Default : System.Web.UI.Page
    {
        public string dataPoints="";
        protected void Page_Load(object sender, EventArgs e)
        {
            using (SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["dgmlOAConnectionString"].ConnectionString))
            {
                SqlCommand cmd = conn.CreateCommand();
                cmd.CommandText = "select max(money) as money,id, name,date from("
                    + " SELECT  sum(e.amount) as money,w.id, w.name,d.date,e.empCode"
                    + " FROM ProductpSchedule_Tasks t"
                    + "     INNER JOIN ProductpSchedule_Main m ON t.pid = m.id"
                    + "     INNER JOIN ProductpSchedule_ReportData d ON t.id = d.pid"
                    + "     INNER JOIN workcenter w ON w.code = d.workcenterCode"
                    + "     INNER JOIN department dept ON w.pid = dept.id"
                    + "     Inner join dbo.ProductpSchedule_ReportData_Emps e on e.pid=d.id"
                    + " WHERE d.date BETWEEN @date1 AND @date2 ";
                cmd.CommandText += " group by w.id, w.name,d.date,e.empCode) t"
                    + " group by id,name,date having(max(money))>0 order by id,date";
                cmd.Parameters.Add("date1", "2012-4-1");
                cmd.Parameters.Add("date2", "2012-9-1");
                conn.Open();
                SqlDataReader dr = cmd.ExecuteReader();
                string ser = "";
                string data = "";
                TimeSpan ticks =new TimeSpan(new DateTime(1970, 1, 1).Ticks);
                while (dr.Read())
                {
                    if (ser != dr["name"].ToString())
                    {
                        if (ser != "")
                        {
                            if (dataPoints != "")
                            {
                                dataPoints += ",";
                            }
                            dataPoints += "{name:'" + ser + "',data:[" + data + "]}";
                        }
                        ser = dr["name"].ToString();
                        data = "{x:" + new TimeSpan(DateTime.Parse(dr["date"].ToString()).Ticks).Subtract(ticks).Duration().TotalMilliseconds.ToString() + ",y:" + dr["money"].ToString() + ",id:" + dr["id"].ToString() + "}";
                   }
                    else
                    {
                        if (data != "")
                        {
                            data += ",";
                        }
                        data += "{x:" + new TimeSpan(DateTime.Parse(dr["date"].ToString()).Ticks).Subtract(ticks).Duration().TotalMilliseconds.ToString() + ",y:" + dr["money"].ToString() + ",id:" + dr["id"].ToString() + "}";
                    }
                }
                if (dataPoints != "")
                {
                    dataPoints += ",";
                }
                dataPoints += "{name:'" + ser + "',data:[" + data + "]}";
                //Response.Write(dataPoints);
                dr.Close();
                cmd.Dispose();
            }
        }
    }



  • 相关阅读:
    Mapreduce的Job运行流程
    Mapreduce的job提交流程
    Hadoop之hdfs
    Java之垃圾回收机制
    Java中线程死锁问题
    删除数据表重复元素方法
    JAVA
    php篇一 之上传文件
    php篇二 之微信公众号开发
    android + php 后台开发
  • 原文地址:https://www.cnblogs.com/apollokk/p/6713929.html
Copyright © 2011-2022 走看看