我正在尝试使用从MVC控制器获取的数据来提供d3.js,并且我在努力传递DateTimes。
数据本身很简单,我有一个对象列表“事件”,“事件”有一个属性DateTime。我的目标是在折线图中显示同一天的事件数与天数。
传递给d3.js的json格式为:
[{"Count":3,"Datum":"\/Date(1376604000000)\/"},{"Count":2,"Datum":"\/Date(1376690400000)\/"}]
我现在尝试了一段时间,但无法弄清楚如何解析这个日期,以便d3.js可以使用它。在我找到的另一个帖子上
var date = new Date(parseInt(jsonDate.substr(6)));
可以构造“Datum”字符串之外的日期。但是如何将它集成到d3.js的设置中呢?
编辑/解决方案感谢Lars
如上所述返回JSON的Controller可能如下所示:
public JsonResult results()
{
var results = from a in db.results
group a by new { y = a.Begin.Year, m = a.Begin.Month, d = a.Begin.Day }
into g
select new
{
Count = g.Count(),
Datum = g.Select(d => d.Begin).FirstOrDefault()
};
return Json(results, JsonRequestBehavior.AllowGet);
}
设为d3的数据源:
d3.json("http://localhost:50123/results", function (error, data) {
data.forEach(function (d) {
d.Datum = new Date(parseInt(d.Datum.substr(6)));;
d.Count = d.Count;
});
稍微调整xAx:
var xAxis = d3.svg.axis()
.scale(x)
.ticks(d3.time.days, 1)
.orient("bottom");