diff --git a/frontend/src/queries/query.ts b/frontend/src/queries/query.ts index 89417fbb8fb8a..56ffa4c66a0a0 100644 --- a/frontend/src/queries/query.ts +++ b/frontend/src/queries/query.ts @@ -17,6 +17,7 @@ import { OnlineExportContext, QueryExportContext } from '~/types' import { HogQLQueryString, + getShowLegend, isAsyncResponse, isDataTableNode, isDataVisualizationNode, @@ -39,7 +40,13 @@ export function queryExportContext( if (isDataTableNode(query) || isDataVisualizationNode(query)) { return queryExportContext(query.source, methodOptions, refresh) } else if (isInsightQueryNode(query)) { - return { source: query } + let showLegend = getShowLegend(query) + + return { + source: query, + // Include show_legend for PNG exports + show_legend: showLegend === true, + } } else if (isPersonsNode(query)) { return { path: getPersonsEndpoint(query) } } diff --git a/frontend/src/scenes/insights/InsightPageHeader.tsx b/frontend/src/scenes/insights/InsightPageHeader.tsx index bc386fcbda90f..94a9dd1166c30 100644 --- a/frontend/src/scenes/insights/InsightPageHeader.tsx +++ b/frontend/src/scenes/insights/InsightPageHeader.tsx @@ -340,6 +340,7 @@ export function InsightPageHeader({ insightLogicProps }: { insightLogicProps: In { format: ExporterFormat.PNG, insight: insight.id, + context: exportContext, dataAttr: `${RESOURCE_TYPE}-export-png`, }, { diff --git a/frontend/src/types.ts b/frontend/src/types.ts index 973de8f4d833d..6e1d4307f6cb0 100644 --- a/frontend/src/types.ts +++ b/frontend/src/types.ts @@ -4487,6 +4487,7 @@ export type OnlineExportContext = { export type QueryExportContext = { source: Record filename?: string + show_legend?: boolean } export interface ReplayExportContext { diff --git a/posthog/tasks/exports/image_exporter.py b/posthog/tasks/exports/image_exporter.py index 6a5d48c636f67..649ae2c9349b5 100644 --- a/posthog/tasks/exports/image_exporter.py +++ b/posthog/tasks/exports/image_exporter.py @@ -105,7 +105,12 @@ def _export_to_png(exported_asset: ExportedAsset, max_height_pixels: Optional[in wait_for_css_selector: CSSSelector screenshot_height: int = 600 if exported_asset.insight is not None: - url_to_render = absolute_uri(f"/exporter?token={access_token}&legend") + show_legend = False + if exported_asset.export_context: + show_legend = exported_asset.export_context.get("show_legend", False) + + legend_param = "&legend=true" if show_legend else "" + url_to_render = absolute_uri(f"/exporter?token={access_token}{legend_param}") wait_for_css_selector = ".ExportedInsight" screenshot_width = 800 elif exported_asset.dashboard is not None: