Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
f51f9c0
docs: add real-time dashboard feature breakdown document
richardfogaca Jan 9, 2026
5716d3a
docs: add implementation plans for real-time dashboard auto-refresh f…
richardfogaca Jan 10, 2026
4f75e04
docs: add gap analysis and fix critical requirement gaps
richardfogaca Jan 10, 2026
d51dacf
docs: mark critical gaps as resolved in gap analysis
richardfogaca Jan 10, 2026
643fded
docs: second pass gap analysis and fixes for real-time dashboard
richardfogaca Jan 10, 2026
6eeccf5
docs: incorporate design decisions for open questions
richardfogaca Jan 12, 2026
8c94aab
docs: update tooltip format to match designer screenshot
richardfogaca Jan 12, 2026
c68f7ff
feat(dashboard): implement real-time dashboard auto-refresh foundation
richardfogaca Jan 12, 2026
68364c5
fix(dashboard): resolve TypeScript and lint issues in auto-refresh
richardfogaca Jan 12, 2026
a29a69b
feat(dashboard): implement tab visibility auto-pause for auto-refresh
richardfogaca Jan 12, 2026
28f7a58
feat(dashboard): implement spinner suppression during auto-refresh
richardfogaca Jan 12, 2026
4599bde
feat(dashboard): prevent FiltersBadge flickering during auto-refresh
richardfogaca Jan 12, 2026
35da7a9
feat(dashboard): remove auto-refresh toast notifications
richardfogaca Jan 12, 2026
575ca10
feat(dashboard): add animation control infrastructure for auto-refresh
richardfogaca Jan 12, 2026
9bd4755
fix: remove unused import in useAutoRefreshTabPause test
richardfogaca Jan 12, 2026
0a246f0
feat(dashboard): add 5-second refresh interval option
richardfogaca Jan 12, 2026
1a8d6a6
fix: charts flickering
richardfogaca Jan 13, 2026
c72c35b
chore: fix linter and typing issues
richardfogaca Jan 13, 2026
d4e3bc5
fix: auto-refresh UI improvements and ECharts legend fix
richardfogaca Jan 14, 2026
9b8e400
fix(dashboard): unify auto-refresh indicator with bordered container,…
richardfogaca Jan 15, 2026
c9735ad
fix: auto refresh resumes when user is back to the dashboard
richardfogaca Jan 15, 2026
d61cc08
fix(charts): prevent flickering during auto-refresh by stabilizing or…
richardfogaca Jan 15, 2026
3debd37
chore: remove markdown files
richardfogaca Jan 15, 2026
472f61e
feat(auto-refresh): visual improvements to the auto refresh header
richardfogaca Jan 15, 2026
b3b409d
feat: put back the auto refresh pause on inactive tab checkbox
richardfogaca Jan 15, 2026
56a68d9
fix(dashboard): refine auto-refresh thresholds and make tab-pause opt-in
richardfogaca Jan 16, 2026
319326f
feat(dashboard): enforce auto-refresh limits and tidy refresh UX
richardfogaca Jan 16, 2026
cafd9c5
refactor(dashboard): clean up auto-refresh code and migrate tests to …
richardfogaca Jan 16, 2026
120990f
fix(dashboard): drop 5s preset and allow 1s custom refresh
richardfogaca Jan 16, 2026
300dcef
fix(realtime): fixed issue when a chart was deleted from dashboard an…
richardfogaca Jan 16, 2026
e73d7a9
fix(realtime): solve legends flickering
richardfogaca Jan 16, 2026
3213d35
feat: improvements to auto refresh dashboard
Jan 23, 2026
e9b2810
feat(realtime): use missed refresh counts instead of time based
Jan 23, 2026
f9df405
fix(dashboard): stabilize auto-refresh timing and tooltip messaging
richardfogaca Jan 23, 2026
e89ad13
fix(dashboard): improve auto-refresh tab pause handling and lazy-load…
richardfogaca Jan 26, 2026
196e592
fix(dashboard): prevent stale refresh cycles from re-arming timers wi…
richardfogaca Jan 27, 2026
a65a44f
chore: rebase with master branch
richardfogaca Jan 27, 2026
9032648
feat(dashboard): align auto-refresh status tests/docs and clean chart…
richardfogaca Jan 27, 2026
d1a454f
fix: remove platform-specific oxlint dependency from package.json
richardfogaca Jan 27, 2026
7949763
fix(tests): update test expectations after master merge
richardfogaca Jan 27, 2026
0e246de
fix: regenerate package-lock.json for CI compatibility
richardfogaca Jan 27, 2026
0ebefa3
fix: resolve package-lock.json conflicts with upstream master
richardfogaca Jan 27, 2026
17e4ada
fix: regenerate package-lock.json with npm 10.8.2 for CI compatibility
richardfogaca Jan 27, 2026
f6f8a6d
fix: restore package-lock.json from upstream to include all platform …
richardfogaca Jan 27, 2026
97f96a3
fix(dashboard): show 'Update auto-refresh' when already configured
richardfogaca Jan 29, 2026
c7cbd49
fix: remove deprecated testing library hook and simplify menu ref cac…
Feb 6, 2026
d773228
Merge upstream/master into feat/auto-refresh-dashboard and resolve da…
richardfogaca Feb 9, 2026
2b1bab5
Merge master into feat/auto-refresh-dashboard
richardfogaca Feb 9, 2026
473bde9
Merge master into feat/auto-refresh-dashboard
richardfogaca Feb 9, 2026
a6963bf
fix: resolve TypeScript errors from merge conflict artifacts
richardfogaca Feb 9, 2026
6c00e08
fix: address PR review - alphabetize icons and extract shared orderby…
Feb 10, 2026
b4d7f27
Merge remote-tracking branch 'origin/master' into feat/auto-refresh-d…
Feb 11, 2026
75607d6
fix: update test_extension_config_full to match updated views type si…
Feb 11, 2026
f36ba51
fix: increase timeout for dataset duplicate filter persistence test
Feb 11, 2026
edfdc7c
clean: remove rebase noise and fix legend crash during auto-refresh
richardfogaca Feb 12, 2026
0b03ec4
Merge remote-tracking branch 'origin/master' into feat/auto-refresh-d…
richardfogaca Feb 12, 2026
201b34d
fix: restore DashboardInfo types and update test expectations for CI
richardfogaca Feb 12, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -106,8 +106,11 @@ import {
MoreOutlined,
OrderedListOutlined,
PartitionOutlined,
PieChartOutlined,
PauseCircleOutlined,
PauseOutlined,
PicCenterOutlined,
PieChartOutlined,
PlayCircleOutlined,
PlusCircleOutlined,
PlusSquareOutlined,
PlusOutlined,
Expand Down Expand Up @@ -258,8 +261,11 @@ const AntdIcons = {
MoreOutlined,
OrderedListOutlined,
PartitionOutlined,
PieChartOutlined,
PauseCircleOutlined,
PauseOutlined,
PicCenterOutlined,
PieChartOutlined,
PlayCircleOutlined,
PlusCircleOutlined,
PlusSquareOutlined,
PlusOutlined,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@ export default function transformProps(chartProps: ChartProps) {
columnFormats = {},
currencyCodeColumn,
},
isRefreshing,
} = chartProps;
const {
boldText,
Expand Down Expand Up @@ -227,5 +228,6 @@ export default function transformProps(chartProps: ChartProps) {
shift: timeComparison,
dashboardTimeRange: formData?.extraFormData?.time_range,
columnConfig,
isRefreshing,
};
}
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ export default function transformProps(
currencyCodeColumn,
},
theme,
isRefreshing,
} = chartProps;
const {
metricNameFontSize,
Expand Down Expand Up @@ -135,5 +136,6 @@ export default function transformProps(
metricName: originalLabel,
showMetricName,
metricNameFontSize,
isRefreshing,
};
}
Original file line number Diff line number Diff line change
Expand Up @@ -353,6 +353,7 @@ function BigNumberVis({
onContextMenu,
formData,
xValueFormatter,
isRefreshing,
} = props;

// if can't find any non-null values, no point rendering the trendline
Expand Down Expand Up @@ -395,6 +396,7 @@ function BigNumberVis({
echartOptions={echartOptions}
eventHandlers={eventHandlers}
vizType={formData?.vizType}
isRefreshing={isRefreshing}
/>
)
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ export default function transformProps(
columnFormats = {},
currencyCodeColumn,
},
isRefreshing,
} = chartProps;
const {
colorPicker,
Expand Down Expand Up @@ -406,5 +407,6 @@ export default function transformProps(
onContextMenu,
xValueFormatter: formatTime,
refs,
isRefreshing,
};
}
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ export type BigNumberVizProps = {
trendLineData?: TimeSeriesDatum[];
mainColor?: string;
echartOptions?: EChartsCoreOption;
isRefreshing?: boolean;
onContextMenu?: (
clientX: number,
clientY: number,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,15 @@ import { allEventHandlers } from '../utils/eventHandlers';
import { BoxPlotChartTransformedProps } from './types';

export default function EchartsBoxPlot(props: BoxPlotChartTransformedProps) {
const { height, width, echartOptions, selectedValues, refs, formData } =
props;
const {
height,
width,
echartOptions,
selectedValues,
refs,
formData,
isRefreshing,
} = props;

const eventHandlers = allEventHandlers(props);

Expand All @@ -35,6 +42,7 @@ export default function EchartsBoxPlot(props: BoxPlotChartTransformedProps) {
eventHandlers={eventHandlers}
selectedValues={selectedValues}
vizType={formData.vizType}
isRefreshing={isRefreshing}
/>
);
}
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ export default function transformProps(
queriesData,
inContextMenu,
emitCrossFilters,
isRefreshing,
} = chartProps;
const { data = [] } = queriesData[0];
const { setDataMask = () => {}, onContextMenu } = hooks;
Expand Down Expand Up @@ -322,5 +323,6 @@ export default function transformProps(
onContextMenu,
refs,
coltypeMapping,
isRefreshing,
};
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,15 @@ import { BubbleChartTransformedProps } from './types';
import Echart from '../components/Echart';

export default function EchartsBubble(props: BubbleChartTransformedProps) {
const { height, width, echartOptions, refs, formData } = props;
const { height, width, echartOptions, refs, formData, isRefreshing } = props;
return (
<Echart
height={height}
width={width}
echartOptions={echartOptions}
refs={refs}
vizType={formData.vizType}
isRefreshing={isRefreshing}
/>
);
}
Original file line number Diff line number Diff line change
Expand Up @@ -95,8 +95,16 @@ export function formatTooltip(
}

export default function transformProps(chartProps: EchartsBubbleChartProps) {
const { height, width, hooks, queriesData, formData, inContextMenu, theme } =
chartProps;
const {
height,
width,
hooks,
queriesData,
formData,
inContextMenu,
theme,
isRefreshing,
} = chartProps;

const { data = [] } = queriesData[0];
const {
Expand Down Expand Up @@ -263,5 +271,6 @@ export default function transformProps(chartProps: EchartsBubbleChartProps) {
onContextMenu,
setDataMask,
formData,
isRefreshing,
};
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,15 @@ import Echart from '../components/Echart';
import { allEventHandlers } from '../utils/eventHandlers';

export default function EchartsFunnel(props: FunnelChartTransformedProps) {
const { height, width, echartOptions, selectedValues, refs, formData } =
props;
const {
height,
width,
echartOptions,
selectedValues,
refs,
formData,
isRefreshing,
} = props;

const eventHandlers = allEventHandlers(props);

Expand All @@ -35,6 +42,7 @@ export default function EchartsFunnel(props: FunnelChartTransformedProps) {
eventHandlers={eventHandlers}
selectedValues={selectedValues}
vizType={formData.vizType}
isRefreshing={isRefreshing}
/>
);
}
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ export default function transformProps(
theme,
emitCrossFilters,
datasource,
isRefreshing,
} = chartProps;
const data: DataRecord[] = queriesData[0].data || [];
const detectedCurrency = queriesData[0]?.detected_currency;
Expand Down Expand Up @@ -320,5 +321,6 @@ export default function transformProps(
onContextMenu,
refs,
coltypeMapping,
isRefreshing,
};
}
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ export default function EchartsGantt(props: EchartsGanttChartTransformedProps) {
formData,
setControlValue,
onLegendStateChanged,
isRefreshing,
} = props;
const extraControlRef = useRef<HTMLDivElement>(null);
const [extraHeight, setExtraHeight] = useState(0);
Expand Down Expand Up @@ -84,6 +85,7 @@ export default function EchartsGantt(props: EchartsGanttChartTransformedProps) {
selectedValues={selectedValues}
eventHandlers={eventHandlers}
vizType={formData.vizType}
isRefreshing={isRefreshing}
/>
</>
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,7 @@ export default function transformProps(chartProps: EchartsGanttChartProps) {
emitCrossFilters,
datasource,
legendState,
isRefreshing,
} = chartProps;

const {
Expand Down Expand Up @@ -453,5 +454,6 @@ export default function transformProps(chartProps: EchartsGanttChartProps) {
refs,
setControlValue,
onLegendStateChanged,
isRefreshing,
};
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,15 @@ import Echart from '../components/Echart';
import { allEventHandlers } from '../utils/eventHandlers';

export default function EchartsGauge(props: GaugeChartTransformedProps) {
const { height, width, echartOptions, selectedValues, refs, formData } =
props;
const {
height,
width,
echartOptions,
selectedValues,
refs,
formData,
isRefreshing,
} = props;

const eventHandlers = allEventHandlers(props);

Expand All @@ -35,6 +42,7 @@ export default function EchartsGauge(props: GaugeChartTransformedProps) {
eventHandlers={eventHandlers}
selectedValues={selectedValues}
vizType={formData.vizType}
isRefreshing={isRefreshing}
/>
);
}
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,7 @@ export default function transformProps(
theme,
emitCrossFilters,
datasource,
isRefreshing,
} = chartProps;

const gaugeSeriesOptions = defaultGaugeSeriesOption(theme);
Expand Down Expand Up @@ -379,5 +380,6 @@ export default function transformProps(
onContextMenu,
refs,
coltypeMapping,
isRefreshing,
};
}
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ export default function EchartsGraph({
emitCrossFilters,
refs,
coltypeMapping,
isRefreshing,
}: GraphChartTransformedProps) {
const getCrossFilterDataMask = (node: DataRow | undefined) => {
if (!node?.name || !node?.col) {
Expand Down Expand Up @@ -176,6 +177,7 @@ export default function EchartsGraph({
echartOptions={echartOptions}
eventHandlers={eventHandlers}
vizType={formData.vizType}
isRefreshing={isRefreshing}
/>
);
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,32 @@
* specific language governing permissions and limitations
* under the License.
*/
import { buildQueryContext, QueryFormData } from '@superset-ui/core';
import { buildQueryContext } from '@superset-ui/core';
import { EchartsGraphFormData } from './types';
import { buildColumnsOrderBy, applyOrderBy } from '../utils/orderby';

export default function buildQuery(formData: EchartsGraphFormData) {
const { source, target, source_category, target_category, row_limit } =
formData;
const orderby = buildColumnsOrderBy([
source,
target,
source_category,
target_category,
]);

export default function buildQuery(formData: QueryFormData) {
return buildQueryContext(formData, {
queryFields: {
source: 'columns',
target: 'columns',
source_category: 'columns',
target_category: 'columns',
},
buildQuery: baseQueryObject => [
{
...baseQueryObject,
...applyOrderBy(orderby, row_limit),
},
],
});
}
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,7 @@ export default function transformProps(
filterState,
emitCrossFilters,
theme,
isRefreshing,
} = chartProps;
const data: DataRecord[] = queriesData[0].data || [];
const coltypeMapping = getColtypesMapping(queriesData[0]);
Expand Down Expand Up @@ -375,5 +376,6 @@ export default function transformProps(
refs,
emitCrossFilters,
coltypeMapping,
isRefreshing,
};
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,15 @@ import { HeatmapTransformedProps } from './types';
import Echart from '../components/Echart';

export default function Heatmap(props: HeatmapTransformedProps) {
const { height, width, echartOptions, refs, formData } = props;
const { height, width, echartOptions, refs, formData, isRefreshing } = props;
return (
<Echart
refs={refs}
height={height}
width={width}
echartOptions={echartOptions}
vizType={formData.vizType}
isRefreshing={isRefreshing}
/>
);
}
Original file line number Diff line number Diff line change
Expand Up @@ -176,8 +176,15 @@ export default function transformProps(
chartProps: HeatmapChartProps,
): HeatmapTransformedProps {
const refs: Refs = {};
const { width, height, formData, queriesData, datasource, theme } =
chartProps;
const {
width,
height,
formData,
queriesData,
datasource,
theme,
isRefreshing,
} = chartProps;
const {
bottomMargin,
xAxis,
Expand Down Expand Up @@ -440,5 +447,6 @@ export default function transformProps(
width,
height,
formData,
isRefreshing,
};
}
Loading
Loading