diff --git a/superset/assets/src/explore/controls.jsx b/superset/assets/src/explore/controls.jsx index 0900d2cf1b..917a274460 100644 --- a/superset/assets/src/explore/controls.jsx +++ b/superset/assets/src/explore/controls.jsx @@ -1495,6 +1495,14 @@ export const controls = { description: t('Whether to display the legend (toggles)'), }, + send_time_range: { + type: 'CheckboxControl', + label: t('Propagate'), + renderTrigger: true, + default: false, + description: t('Send range filter events to other charts'), + }, + show_labels: { type: 'CheckboxControl', label: t('Show Labels'), diff --git a/superset/assets/src/explore/visTypes.jsx b/superset/assets/src/explore/visTypes.jsx index 69b129794e..ac4285c364 100644 --- a/superset/assets/src/explore/visTypes.jsx +++ b/superset/assets/src/explore/visTypes.jsx @@ -179,7 +179,7 @@ export const visTypes = { expanded: true, controlSetRows: [ ['color_scheme'], - ['show_brush', 'show_legend'], + ['show_brush', 'send_time_range', 'show_legend'], ['rich_tooltip', 'show_markers'], ['line_interpolation'], ], diff --git a/superset/assets/src/visualizations/nvd3_vis.js b/superset/assets/src/visualizations/nvd3_vis.js index efa8064dc0..1baf5f576a 100644 --- a/superset/assets/src/visualizations/nvd3_vis.js +++ b/superset/assets/src/visualizations/nvd3_vis.js @@ -363,6 +363,17 @@ export default function nvd3Vis(slice, payload) { throw new Error('Unrecognized visualization for nvd3' + vizType); } + if (isTruthy(fd.show_brush) && isTruthy(fd.send_time_range)) { + chart.focus.dispatch.on('brush', (event) => { + const extent = event.extent; + if (extent.some(d => d.toISOString === undefined)) { + return; + } + const timeRange = extent.map(d => d.toISOString().slice(0, -1)).join(' : '); + event.brush.on('brushend', () => slice.addFilter('__time_range', timeRange, false, true)); + }); + } + if (chart.xAxis && chart.xAxis.staggerLabels) { chart.xAxis.staggerLabels(staggerLabels); }