From 1c508cd1f40cd9d2aa66ca7f5bdd2e5813a523a6 Mon Sep 17 00:00:00 2001 From: Valerie Gia Date: Fri, 3 Apr 2026 14:50:58 -0700 Subject: [PATCH 1/2] Fix planner page link --- .../app/pages/NodePage/NodePreAggregationsTab.jsx | 2 +- .../pages/QueryPlannerPage/__tests__/index.test.jsx | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/datajunction-ui/src/app/pages/NodePage/NodePreAggregationsTab.jsx b/datajunction-ui/src/app/pages/NodePage/NodePreAggregationsTab.jsx index 283cb26ec..a41e2bd03 100644 --- a/datajunction-ui/src/app/pages/NodePage/NodePreAggregationsTab.jsx +++ b/datajunction-ui/src/app/pages/NodePage/NodePreAggregationsTab.jsx @@ -611,7 +611,7 @@ export default function NodePreAggregationsTab({ node }) {

Pre-aggregations are created when you use the{' '} - Query Planner to plan materializations + Explorer to plan materializations for metrics derived from this node.

diff --git a/datajunction-ui/src/app/pages/QueryPlannerPage/__tests__/index.test.jsx b/datajunction-ui/src/app/pages/QueryPlannerPage/__tests__/index.test.jsx index 9791b5258..7801d1d90 100644 --- a/datajunction-ui/src/app/pages/QueryPlannerPage/__tests__/index.test.jsx +++ b/datajunction-ui/src/app/pages/QueryPlannerPage/__tests__/index.test.jsx @@ -172,12 +172,12 @@ const mockCubeData = { }, }; -const renderPage = (initialEntries = ['/query-planner']) => { +const renderPage = (initialEntries = ['/planner']) => { return render( @@ -384,7 +384,7 @@ describe('QueryPlannerPage', () => { mockDjClient.cubeForPlanner.mockResolvedValue(mockCubeData); renderPage([ - '/query-planner?metrics=default.num_repair_orders,default.avg_repair_price', + '/planner?metrics=default.num_repair_orders,default.avg_repair_price', ]); await waitFor(() => { @@ -395,7 +395,7 @@ describe('QueryPlannerPage', () => { it('initializes from URL with cube parameter', async () => { mockDjClient.cubeForPlanner.mockResolvedValue(mockCubeData); - renderPage(['/query-planner?cube=default.test_cube']); + renderPage(['/planner?cube=default.test_cube']); await waitFor(() => { expect(mockDjClient.cubeForPlanner).toHaveBeenCalledWith( @@ -1489,7 +1489,7 @@ describe('QueryPlannerPage', () => { // cubeForPlanner returns data without cube_node_metrics array mockDjClient.cubeForPlanner.mockResolvedValue({ name: 'bad.cube' }); - renderPage(['/query-planner?cube=bad.cube']); + renderPage(['/planner?cube=bad.cube']); await waitFor(() => { expect(mockDjClient.cubeForPlanner).toHaveBeenCalledWith('bad.cube'); @@ -1502,7 +1502,7 @@ describe('QueryPlannerPage', () => { it('handles cubeForPlanner throwing during URL init', async () => { mockDjClient.cubeForPlanner.mockRejectedValue(new Error('Network error')); - renderPage(['/query-planner?cube=bad.cube']); + renderPage(['/planner?cube=bad.cube']); await waitFor(() => { expect(mockDjClient.cubeForPlanner).toHaveBeenCalled(); From a8caff372c0af16b72551de088e136502b244d9a Mon Sep 17 00:00:00 2001 From: Valerie Gia Date: Fri, 3 Apr 2026 15:21:00 -0700 Subject: [PATCH 2/2] Improve empty state copy in pre-aggregations tab --- .../src/app/pages/NodePage/NodePreAggregationsTab.jsx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/datajunction-ui/src/app/pages/NodePage/NodePreAggregationsTab.jsx b/datajunction-ui/src/app/pages/NodePage/NodePreAggregationsTab.jsx index a41e2bd03..fca9c3f27 100644 --- a/datajunction-ui/src/app/pages/NodePage/NodePreAggregationsTab.jsx +++ b/datajunction-ui/src/app/pages/NodePage/NodePreAggregationsTab.jsx @@ -610,9 +610,8 @@ export default function NodePreAggregationsTab({ node }) { No pre-aggregations found for this node.

- Pre-aggregations are created when you use the{' '} - Explorer to plan materializations - for metrics derived from this node. + Visit Explorer to plan materializations for + metrics derived from this node.

);