首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DC.js中的数据过滤器

问DC.js中的数据过滤器
EN

Stack Overflow用户
提问于 2015-05-05 20:08:51
回答 1查看 3.2K关注 0票数 4

我正在使用DC.js,并试图在这个提琴手中添加预置日期过滤器。

​

代码语言:javascript
复制
            <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

我有画笔范围可以移动,但我不能让它触发过滤。我试了一下moveChart.redraw(); dc.redrawAll(); dc.renderAll();,还有几个没有运气的人。我已经看到了使用D3的例子,在我试图理解DC中的组对象在D3中时,逻辑变得很难理解。我迷路的地方是了解刷子事件,特别是在DC。我找不到像这样的直流样品。有人能注意到我错过了什么让这个DC工作吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-12 16:23:12

我认为这里的主要问题是您将直接的d3代码和dc.js代码混合在一起。在使用dc.js时,不需要创建自己的画笔对象,因为它已经创建了一个,而且.filter()方法已经绑定到它使用的画笔上。

您也不需要自己过滤数据,因为这正是交叉筛选器的作用所在。看起来您是在过滤原始数据数组,这没有任何效果,因为十字过滤器已经将其复制到其内部缓冲区中。

另一个诀窍是在过滤时使用dc.filters.RangedFilter对象,这样dc.js就可以知道一个范围是预定的,而不是两个离散的日期。

因此,与drawBrush函数的大部分内容不同,只需执行以下操作

代码语言:javascript
复制
timeChart.filter(null);
timeChart.filter(dc.filters.RangedFilter(new Date(st), new Date(end)));
dc.redrawAll();

同时移除多余的,不需要的刷子。

你的小提琴的工作叉:https://jsfiddle.net/gordonwoodhull/mr56bswz/1/

我还想补充一点,这并不是做范围/焦点图的正确方法,所以请使用其他例子--这主要是如何应用日期范围的一个例子。

距离图自身过滤和重置后保持过滤的奇怪行为来自于使用不同维度的焦点图--通常您希望它们位于相同的维度上,这样它们就不会互相观察。但这不是这个问题的焦点,这个问题已经有几年的历史了,所以我现在不打算解决这个问题。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30062328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档