diff --git a/frontend/__snapshots__/exporter-exporter--event-table-insight--dark.png b/frontend/__snapshots__/exporter-exporter--event-table-insight--dark.png index defe9a15c5d83..5bb4a4c1d3146 100644 Binary files a/frontend/__snapshots__/exporter-exporter--event-table-insight--dark.png and b/frontend/__snapshots__/exporter-exporter--event-table-insight--dark.png differ diff --git a/frontend/__snapshots__/exporter-exporter--event-table-insight--light.png b/frontend/__snapshots__/exporter-exporter--event-table-insight--light.png index 434b9f6c6031d..d689f78421857 100644 Binary files a/frontend/__snapshots__/exporter-exporter--event-table-insight--light.png and b/frontend/__snapshots__/exporter-exporter--event-table-insight--light.png differ diff --git a/frontend/__snapshots__/exporter-exporter--sql-insight--dark.png b/frontend/__snapshots__/exporter-exporter--sql-insight--dark.png index 094625ed55b9b..efa7b618059ea 100644 Binary files a/frontend/__snapshots__/exporter-exporter--sql-insight--dark.png and b/frontend/__snapshots__/exporter-exporter--sql-insight--dark.png differ diff --git a/frontend/__snapshots__/exporter-exporter--sql-insight--light.png b/frontend/__snapshots__/exporter-exporter--sql-insight--light.png index 1b3996ee47fbf..fc8566e9fd5e4 100644 Binary files a/frontend/__snapshots__/exporter-exporter--sql-insight--light.png and b/frontend/__snapshots__/exporter-exporter--sql-insight--light.png differ diff --git a/frontend/__snapshots__/scenes-app-events--event-explorer--dark.png b/frontend/__snapshots__/scenes-app-events--event-explorer--dark.png index 9f9f1e35760c2..6fb3157f1ee82 100644 Binary files a/frontend/__snapshots__/scenes-app-events--event-explorer--dark.png and b/frontend/__snapshots__/scenes-app-events--event-explorer--dark.png differ diff --git a/frontend/__snapshots__/scenes-app-events--event-explorer--light.png b/frontend/__snapshots__/scenes-app-events--event-explorer--light.png index 36d31ff0564ad..f3e220cbf1e98 100644 Binary files a/frontend/__snapshots__/scenes-app-events--event-explorer--light.png and b/frontend/__snapshots__/scenes-app-events--event-explorer--light.png differ diff --git a/frontend/__snapshots__/scenes-app-sessionattributionexplorer--session-attribution-explorer--dark.png b/frontend/__snapshots__/scenes-app-sessionattributionexplorer--session-attribution-explorer--dark.png index 954ad1f02d6ba..798e3fbb8901c 100644 Binary files a/frontend/__snapshots__/scenes-app-sessionattributionexplorer--session-attribution-explorer--dark.png and b/frontend/__snapshots__/scenes-app-sessionattributionexplorer--session-attribution-explorer--dark.png differ diff --git a/frontend/__snapshots__/scenes-app-sessionattributionexplorer--session-attribution-explorer--light.png b/frontend/__snapshots__/scenes-app-sessionattributionexplorer--session-attribution-explorer--light.png index 66bd2187c7462..d2effb01ef961 100644 Binary files a/frontend/__snapshots__/scenes-app-sessionattributionexplorer--session-attribution-explorer--light.png and b/frontend/__snapshots__/scenes-app-sessionattributionexplorer--session-attribution-explorer--light.png differ diff --git a/frontend/__snapshots__/scenes-other-billing--billing-with-credit-cta--dark.png b/frontend/__snapshots__/scenes-other-billing--billing-with-credit-cta--dark.png index 3287c8e015277..49ae4a1f07e2e 100644 Binary files a/frontend/__snapshots__/scenes-other-billing--billing-with-credit-cta--dark.png and b/frontend/__snapshots__/scenes-other-billing--billing-with-credit-cta--dark.png differ diff --git a/frontend/src/queries/nodes/DataNode/LoadNext.tsx b/frontend/src/queries/nodes/DataNode/LoadNext.tsx index d6abf62714ebc..14a1bf612ed7b 100644 --- a/frontend/src/queries/nodes/DataNode/LoadNext.tsx +++ b/frontend/src/queries/nodes/DataNode/LoadNext.tsx @@ -1,9 +1,12 @@ import { useActions, useValues } from 'kea' import { LemonButton } from 'lib/lemon-ui/LemonButton' +import { useMemo } from 'react' import { dataNodeLogic } from '~/queries/nodes/DataNode/dataNodeLogic' import { DataNode } from '~/queries/schema' -import { isHogQLQuery } from '~/queries/utils' +import { isDataVisualizationNode, isHogQLQuery } from '~/queries/utils' + +import { DEFAULT_PAGE_SIZE } from '../DataVisualization/Components/Table' interface LoadNextProps { query: DataNode @@ -12,31 +15,48 @@ export function LoadNext({ query }: LoadNextProps): JSX.Element { const { canLoadNextData, nextDataLoading, numberOfRows, hasMoreData, dataLimit } = useValues(dataNodeLogic) const { loadNextData } = useActions(dataNodeLogic) - // No data means the user is controlling the pagination - if (!dataLimit) { + const text = useMemo(() => { + // if hogql based viz, show a different text + if (isDataVisualizationNode(query) && isHogQLQuery(query.source)) { + // No data limit means the user is controlling the pagination + if (!dataLimit) { + if (numberOfRows && numberOfRows <= DEFAULT_PAGE_SIZE) { + return `Showing ${numberOfRows === 1 ? '' : 'all'} ${numberOfRows === 1 ? 'one' : numberOfRows} ${ + numberOfRows === 1 ? 'entry' : 'entries' + }` + } + // If the number of rows is greater than the default page size, it's handled by pagination component + return '' + } + return `Default limit of ${dataLimit} rows reached` + } else if (isHogQLQuery(query) && !canLoadNextData && hasMoreData && dataLimit) { + return `Default limit of ${dataLimit} rows reached. Try adding a LIMIT clause to adjust.` + } + let result = `Showing ${ + hasMoreData && (numberOfRows ?? 0) > 1 ? 'first ' : canLoadNextData || numberOfRows === 1 ? '' : 'all ' + }${numberOfRows === 1 ? 'one' : numberOfRows} ${numberOfRows === 1 ? 'entry' : 'entries'}` + if (canLoadNextData) { + result += '. Click to load more.' + } else if (hasMoreData) { + result += '. Reached the end of results.' + } + return result + }, [query, dataLimit, numberOfRows, canLoadNextData, hasMoreData]) + + // pagination component exists + if ( + isDataVisualizationNode(query) && + isHogQLQuery(query.source) && + !dataLimit && + (!numberOfRows || numberOfRows > DEFAULT_PAGE_SIZE) + ) { return <>> } return (