https://blockbuilder.org/ninjakx/63295ea0a8052716644738d37d390e52
1)
Когда я нажимаю на порядковую панель фокуса ((c2 составной диаграммы), она следует оставить выбранный красный и серый, но это не так.
2)
Когда я нажимаю на p ie график Я получаю красные столбцы вместе с нефильтрованным (серый). Здесь нажатие на красную полосу должно отфильтровать другие графики, это происходит так, как вы можете видеть мою таблицу, и диаграмма p ie обновляется, но когда я нажимаю на серую полосу, данные также фильтруются, но для диаграммы p ie это просто добавляет серый дольки.
Строка №. 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();
});
});
Если я воспользуюсь приведенным выше кодом, я получу эти вещи, так что я могу думать об этих решениях. Я могу изменить цвет полосы с2 при нажатии, используя приведенный выше код и применив его к с2. также для второго графика я могу использовать css, чтобы отключить щелчок по ним, или я могу сделать фильтр, чтобы не возвращать ничего.
Но когда я попробовал вышеуказанные решения, это не сработало. Проблемы остались прежними.
Если я сделаю эту функцию применимой только для c2, заменив chart_11 на 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 и фильтр. Но не могу написать код для него.