【发布时间】:2020-04-17 05:48:04
【问题描述】:
https://blockbuilder.org/ninjakx/63295ea0a8052716644738d37d390e52
1)
当我点击焦点序号栏((复合图表的c2)时,它应该将选定的一个保持为红色,另一个保持为灰色,但事实并非如此。
2)
当我单击饼图时,我会看到红色条以及未过滤的条(灰色)。在这里单击红色条应该过滤其他图表,因为您可以看到我的表格和饼图正在更新,但是当我单击灰色条时,数据也被过滤,但对于饼图,它只添加灰色切片。
行号284-324:
chart_11.fadeDeselectedArea = function (brushSelection) {
var _chart = this;
var bars = _chart.chartBodyG().selectAll('rect.bar');
if (chart_11Filter.length) {
bars.classed(dc.constants.SELECTED_CLASS, function (d) {
return chart_11Filter.includes(d.data.key);
});
bars.classed(dc.constants.DESELECTED_CLASS, function (d) {
return !chart_11Filter.includes(d.data.key);
});
} else {
bars.classed(dc.constants.SELECTED_CLASS, false);
bars.classed(dc.constants.DESELECTED_CLASS, false);
}
};
chart_11.on('pretransition', function(chart) {
chart.selectAll('rect.bar').on('click.ordinal-select', function(d) {
var i = chart_11Filter.indexOf(d.data.key);
if(i >= 0)
chart_11Filter.splice(i, 1);
else
chart_11Filter.push(d.data.key);
chart.applyFilter();
chart.redrawGroup();
});
});
如果我使用上面的代码,那么我会得到这些东西所以我可以想到这些解决方案。 我可以通过使用上面的代码并将其应用于 c2 来更改 c2 条的颜色。 同样对于第二张图,我可以使用 css 在单击它们时禁用它们,或者我 可以使过滤器返回无。
但是当我尝试上述解决方案时,它不起作用。问题还是一样。
如果我通过将 chart_11 替换为 c2 来使此功能仅适用于 c2:
chart_11.fadeDeselectedArea = function (brushSelection) {
.
.
.
.
chart_11.on('pretransition', function(chart) {
.
.
.
我明白了:
编辑:
chart_11.on('pretransition', function(chart) {
chart.selectAll('rect.bar').on('click', null);
如果我添加它,我将能够禁用单击所有栏。我必须只为 C1 制作它。
chart_11.on('pretransition', function(chart) {
// chart.selectAll('rect.bar').on('click', null);
chart.selectAll('rect.bar').on('click.ordinal-select', function(d) {
我猜在这个函数中我的第二个问题可以解决。此功能必须自定义。访问子 C2 并选择其 rect.bar 和过滤器。 但无法为其编写代码。
【问题讨论】:
-
很抱歉问了很多问题。最初的仪表板是使用 power bi 构建的,由 4-5 页和许多图表组成。那时正处于试用期。所以现在我必须从头开始创建所有图表,并使其看起来类似于 power bi 仪表板。我在 python 和 python 库的可视化方面效率很高。因此,使用 dc.js 实现单个图形面临着许多挑战。 javascript不太好。如果我得到了示例,我可以用 javscript 编写函数,但如果没有,我会感到震惊。
-
当然,没问题。我从帮助人们使用 dc.js 中学到了很多东西,当我与一个优秀的编码人员一起工作并且我们扩大了 dc.js 的功能范围时,这尤其有趣。
-
我快速浏览了一下 - 现在没有时间深入研究代码。我想你想修改
c1和c2而不是持有它们的复合材料?子图表的工作方式与往常一样,复合图表只是将一个放在另一个前面,并采用轴和画笔等常见元素的图表。 -
是的,我只想从 c2 添加选择和删除栏。我希望 c1 在没有交互性的背景下。并且为了创建一个点击事件,我必须修改它以使其适用于 c2。
-
也许我误解了 - 看起来您的代码正在尝试修改
chart_11,它是复合父级,什么时候应该修改c2?