我知道这听起来像个愚蠢的问题,但收集图表数据的过程是什么?应该如何保存到DB中?
例如,我有一个门票应用程序,我想显示一个图表,以显示在过去30分钟,1小时,12小时,24小时内创建了多少张门票
我应该如何将这些数据存储在数据库中,以便以后能够在界面中使用它?
我的想法是创建一个TicketsSummary
表,并为每个创建的故障单在Db中创建一条新记录,并创建dateTime
之后,在ui中,根据过滤器(比如说最后30分钟),我从数据库中汇集CreatedDateTime >= (DateTime.UtcNow - TimeSpan.AddMinutes(-30))
为了使界面保持最新,我将每60秒汇集一次数据,并更新图表。
这是正确的方法吗?
Id CreatedDateTime Source
--------------------------------------------------
1 2017-04-13 05:17:29 Chat
2 2017-04-13 05:21:05 Email
3 2017-04-13 06:18:47 Chat
4 2017-04-13 06:49:10 Call Center
答案 0 :(得分:1)
通常,二维图表只是x值与y值相应映射的关联。在您的情况下,如果您基本上将绘制SELECT DATE(CreatedDateTime) as X, COUNT(*) as Y FROM TicketsSummary GROUP BY X
的结果(其中X和Y是您需要显示的值。
如果您想要动态更新,可以使用支持开箱即用的Highcharts(排序)。
基本上你需要类似下面的例子(在这里稍作修改)。 http://jsfiddle.net/w15e9chz/
您的想法是最初生成图表数据,并且在加载图表时(在事件:加载中),您可以设置函数的间隔,以便每隔60秒触发一次对服务器端的另一个AJAX调用并更新图表数据。
示例:
events: {
load: function () {
// set up the updating of the chart each second
setInterval(function () {
var series = this.series[0]; //You can do this for each series if there are more
$.ajax({ url: "/data/url", success: function (newData) {
series.setData(newData,true);//Assuming it is properly formatted.
});
}, 60000);
}
}