From cf6219700d6fd88511d4dbf983574c7d1a17f451 Mon Sep 17 00:00:00 2001 From: Evan Mattson Date: Mon, 28 Mar 2022 15:32:00 -0400 Subject: [PATCH 1/5] Replace null return with fallback for rows. --- .../js/components/wp-dashboard/WPDashboardPopularPages.js | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/assets/js/components/wp-dashboard/WPDashboardPopularPages.js b/assets/js/components/wp-dashboard/WPDashboardPopularPages.js index 3f400752f3b..71b769a27ee 100644 --- a/assets/js/components/wp-dashboard/WPDashboardPopularPages.js +++ b/assets/js/components/wp-dashboard/WPDashboardPopularPages.js @@ -113,12 +113,8 @@ export default function WPDashboardPopularPages( props ) { return ; } - // Skip rendering the table if there are no rows. - if ( ! report[ 0 ].data?.rows?.length ) { - return null; - } - - const rows = cloneDeep( report[ 0 ].data.rows ); + // data.rows is not guaranteed to be set so we need a fallback. + const rows = cloneDeep( report[ 0 ].data.rows ) || []; // Combine the titles from the pageTitles with the rows from the metrics report. rows.forEach( ( row ) => { const url = row.dimensions[ 0 ]; From 2906c17a4f36ae259010d0fb38e222324618fa9a Mon Sep 17 00:00:00 2001 From: Evan Mattson Date: Mon, 28 Mar 2022 15:32:45 -0400 Subject: [PATCH 2/5] Pass zero data message to ReportTable. --- assets/js/components/wp-dashboard/WPDashboardPopularPages.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/assets/js/components/wp-dashboard/WPDashboardPopularPages.js b/assets/js/components/wp-dashboard/WPDashboardPopularPages.js index 71b769a27ee..5726e25b9a3 100644 --- a/assets/js/components/wp-dashboard/WPDashboardPopularPages.js +++ b/assets/js/components/wp-dashboard/WPDashboardPopularPages.js @@ -34,6 +34,7 @@ import { MODULES_ANALYTICS, DATE_RANGE_OFFSET, } from '../../modules/analytics/datastore/constants'; +import { ZeroDataMessage } from '../../modules/analytics/components/common'; import { CORE_USER } from '../../googlesitekit/datastore/user/constants'; import PreviewTable from '../../components/PreviewTable'; import TableOverflowContainer from '../../components/TableOverflowContainer'; @@ -132,6 +133,7 @@ export default function WPDashboardPopularPages( props ) { columns={ tableColumns } limit={ 5 } gatheringData={ isGatheringData } + zeroState={ ZeroDataMessage } /> From 6a38d8b9b651356881b2eca1169f8750a75d1d81 Mon Sep 17 00:00:00 2001 From: Evan Mattson Date: Mon, 28 Mar 2022 15:54:55 -0400 Subject: [PATCH 3/5] Revise logic for rendering WidgetReportZero. --- .../js/components/wp-dashboard/WPDashboardPopularPages.js | 7 ++++++- .../components/wp-dashboard/WPDashboardSessionDuration.js | 5 +---- .../components/wp-dashboard/WPDashboardUniqueVisitors.js | 5 +---- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/assets/js/components/wp-dashboard/WPDashboardPopularPages.js b/assets/js/components/wp-dashboard/WPDashboardPopularPages.js index 5726e25b9a3..ecc5536b55e 100644 --- a/assets/js/components/wp-dashboard/WPDashboardPopularPages.js +++ b/assets/js/components/wp-dashboard/WPDashboardPopularPages.js @@ -42,6 +42,7 @@ import ReportTable from '../ReportTable'; import DetailsPermaLinks from '../DetailsPermaLinks'; import { numFmt } from '../../util'; import { isFeatureEnabled } from '../../features'; +import { isZeroReport } from '../../modules/analytics/util'; const { useSelect, useInViewSelect } = Data; export default function WPDashboardPopularPages( props ) { @@ -110,7 +111,11 @@ export default function WPDashboardPopularPages( props ) { return ; } - if ( isGatheringData && ! zeroDataStatesEnabled ) { + if ( + ! zeroDataStatesEnabled && + isGatheringData && + isZeroReport( report ) + ) { return ; } diff --git a/assets/js/components/wp-dashboard/WPDashboardSessionDuration.js b/assets/js/components/wp-dashboard/WPDashboardSessionDuration.js index fc5ab56c026..ac702779a60 100644 --- a/assets/js/components/wp-dashboard/WPDashboardSessionDuration.js +++ b/assets/js/components/wp-dashboard/WPDashboardSessionDuration.js @@ -89,10 +89,7 @@ const WPDashboardSessionDuration = ( { return ; } - if ( - isZeroReport( data ) && - ( zeroDataStatesEnabled ? isGatheringData === false : isGatheringData ) - ) { + if ( ! zeroDataStatesEnabled && isGatheringData && isZeroReport( data ) ) { return ; } diff --git a/assets/js/components/wp-dashboard/WPDashboardUniqueVisitors.js b/assets/js/components/wp-dashboard/WPDashboardUniqueVisitors.js index ac691f21fb3..c48f5b9a96b 100644 --- a/assets/js/components/wp-dashboard/WPDashboardUniqueVisitors.js +++ b/assets/js/components/wp-dashboard/WPDashboardUniqueVisitors.js @@ -87,10 +87,7 @@ const WPDashboardUniqueVisitors = ( { return ; } - if ( - isZeroReport( data ) && - ( zeroDataStatesEnabled ? isGatheringData === false : isGatheringData ) - ) { + if ( ! zeroDataStatesEnabled && isGatheringData && isZeroReport( data ) ) { return ; } From 6bc923e2b5dff2656a5aa0c73236b6ebc0a9fbb4 Mon Sep 17 00:00:00 2001 From: Evan Mattson Date: Mon, 28 Mar 2022 16:39:53 -0400 Subject: [PATCH 4/5] Refactor rows to only clone if data.rows. --- assets/js/components/wp-dashboard/WPDashboardPopularPages.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/assets/js/components/wp-dashboard/WPDashboardPopularPages.js b/assets/js/components/wp-dashboard/WPDashboardPopularPages.js index ecc5536b55e..19ec4d11bfd 100644 --- a/assets/js/components/wp-dashboard/WPDashboardPopularPages.js +++ b/assets/js/components/wp-dashboard/WPDashboardPopularPages.js @@ -120,7 +120,10 @@ export default function WPDashboardPopularPages( props ) { } // data.rows is not guaranteed to be set so we need a fallback. - const rows = cloneDeep( report[ 0 ].data.rows ) || []; + let rows = []; + if ( report[ 0 ].data.rows ) { + rows = cloneDeep( report[ 0 ].data.rows ); + } // Combine the titles from the pageTitles with the rows from the metrics report. rows.forEach( ( row ) => { const url = row.dimensions[ 0 ]; From 2b781ef3431553aaf89890936097499f51409be6 Mon Sep 17 00:00:00 2001 From: Evan Mattson Date: Mon, 28 Mar 2022 16:48:21 -0400 Subject: [PATCH 5/5] Fix logic for rendering WidgetReportZero in SC. --- assets/js/components/wp-dashboard/WPDashboardClicks.js | 5 +---- assets/js/components/wp-dashboard/WPDashboardImpressions.js | 5 +---- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/assets/js/components/wp-dashboard/WPDashboardClicks.js b/assets/js/components/wp-dashboard/WPDashboardClicks.js index 6971b2ea397..49d6ef58bb1 100644 --- a/assets/js/components/wp-dashboard/WPDashboardClicks.js +++ b/assets/js/components/wp-dashboard/WPDashboardClicks.js @@ -94,10 +94,7 @@ const WPDashboardClicks = ( { WidgetReportZero, WidgetReportError } ) => { ); } - if ( - isZeroReport( data ) && - ( zeroDataStatesEnabled ? isGatheringData === false : isGatheringData ) - ) { + if ( ! zeroDataStatesEnabled && isGatheringData && isZeroReport( data ) ) { return ; } diff --git a/assets/js/components/wp-dashboard/WPDashboardImpressions.js b/assets/js/components/wp-dashboard/WPDashboardImpressions.js index 57842294033..0961d4f3ad2 100644 --- a/assets/js/components/wp-dashboard/WPDashboardImpressions.js +++ b/assets/js/components/wp-dashboard/WPDashboardImpressions.js @@ -94,10 +94,7 @@ const WPDashboardImpressions = ( { WidgetReportZero, WidgetReportError } ) => { ); } - if ( - isZeroReport( data ) && - ( zeroDataStatesEnabled ? isGatheringData === false : isGatheringData ) - ) { + if ( ! zeroDataStatesEnabled && isGatheringData && isZeroReport( data ) ) { return ; }