use*_*096 3 d3.js crossfilter dc.js
我正在使用DC.js,我正在尝试向此jsfiddler添加预设日期过滤器.
<div id="header" class='row logoSize'>
<img src="logo-main2.png" />
<div class="buttons-container"></div>
<div class="startEnd" id="start">2015-02-12</div>
<div class="startEnd" id="end">2015-02-17</div>
<div class="startEnd" id="brushYears">gggg</div>
</div>
<div class='row '>
<div class="dc-data-count">
<h2>
Card Activity Report
<span>
<span class="filter-count"></span>
selected out of
<span class="total-count"></span>
records
<span id="titleCount"></span>
<a class="btn btn-sm btn-success" href="javascript:dc.filterAll(); dc.renderAll();">Reset All</a>
</h2>
</div>
</div>
<div class='row'>
<div class='span12' id='dc-time-chart'>
<h4>
Activity counts per Day
<span class="muted pull-right" style="margin-right: 115px; ">From the chart below select a date range to filter by
<a class="reset btn btn-sm btn-success"
href="javascript:timeChart.filterAll();dc.redrawAll();"
style="display: none;">
reset
</a>
</span>
</h4>
</div>
<div class="clearfix"></div>
</div>
<div class="row">
<div id="daily-move-chart">
<div class="clearfix"></div>
</div>
</div>
</div>
<pre id="data">
ID,Action,AuditDate,DataProvider,MachineName,UserName,PersonID,Count
Run Code Online (Sandbox Code Playgroud)
我有刷移动范围,但我不能让它触发过滤.我试过了moveChart.redraw(); dc.redrawAll(); dc.renderAll();,还有一些没有运气.我看过使用D3的例子,当我试图理解DC中的组对象在D3中时,逻辑很难理解.我迷路的地方是了解刷机事件,尤其是DC.我找不到像这样使用刷子的任何DC样本.有人可以注意到我缺少什么使这项工作DC吗?
我认为这里的主要问题是你将直接d3代码与dc.js代码混合在一起.使用dc.js时,您不需要创建自己的画笔对象,因为它已经创建了一个,并且该.filter()方法已经绑定到它使用的画笔.
您也不需要自己过滤数据,因为这正是crossfilter的用途.看起来您正在过滤原始数据数组,因为crossfilter已将其复制到其内部缓冲区中,因此无效.
另一个技巧是dc.filters.RangedFilter在过滤时使用对象,以便dc.js知道范围是有意的,而不是两个离散日期.
所以,而不是你的drawBrush功能的大部分,只是做
timeChart.filter(null);
timeChart.filter(dc.filters.RangedFilter(new Date(st), new Date(end)));
dc.redrawAll();
Run Code Online (Sandbox Code Playgroud)
并删除额外的,不需要的刷子.
你这个小提琴的工作叉:https://jsfiddle.net/gordonwoodhull/mr56bswz/1/
我还补充说,这不是真正做范围/焦点图表的正确方法,所以请使用其他示例 - 这主要是如何应用日期范围的示例.
范围图表过滤本身的奇怪行为,以及在重置后保持过滤,来自焦点图表,使用范围图表中的不同维度 - 通常您希望它们在相同的维度上,因此它们不会相互观察.但这不是这个问题的焦点,已经有几年了,所以我现在不打算解决这个问题.
| 归档时间: |
|
| 查看次数: |
2629 次 |
| 最近记录: |