From 411757230b9dba09e835e22ab883ad6869961c63 Mon Sep 17 00:00:00 2001 From: Yue Zhang Date: Mon, 18 Aug 2025 16:59:00 -0700 Subject: [PATCH] This hides the filter actions buttons (but not copy json) when embedded. --- .../explore/contexts/logs/logsPageParams.tsx | 5 + .../explore/logs/tables/logsTableRow.tsx | 154 +++++++++++------- 2 files changed, 100 insertions(+), 59 deletions(-) diff --git a/static/app/views/explore/contexts/logs/logsPageParams.tsx b/static/app/views/explore/contexts/logs/logsPageParams.tsx index 8528203098887e..59695b84198adf 100644 --- a/static/app/views/explore/contexts/logs/logsPageParams.tsx +++ b/static/app/views/explore/contexts/logs/logsPageParams.tsx @@ -358,6 +358,11 @@ export function useLogsLimitToTraceId() { return limitToTraceId; } +export function useLogsIsTableFrozen() { + const {isTableFrozen} = useLogsPageParams(); + return isTableFrozen; +} + export function useSetLogsCursor() { const setPageParams = useSetLogsPageParams(); const {setCursorForFrozenPages, isTableFrozen} = useLogsPageParams(); diff --git a/static/app/views/explore/logs/tables/logsTableRow.tsx b/static/app/views/explore/logs/tables/logsTableRow.tsx index 4779f9d46fc5f7..b59df9b737470a 100644 --- a/static/app/views/explore/logs/tables/logsTableRow.tsx +++ b/static/app/views/explore/logs/tables/logsTableRow.tsx @@ -14,6 +14,8 @@ import {trackAnalytics} from 'sentry/utils/analytics'; import type {TableDataRow} from 'sentry/utils/discover/discoverQuery'; import type {EventsMetaType} from 'sentry/utils/discover/eventView'; import {FieldValueType} from 'sentry/utils/fields'; +import type {UseApiQueryResult} from 'sentry/utils/queryClient'; +import type RequestError from 'sentry/utils/requestError/requestError'; import useCopyToClipboard from 'sentry/utils/useCopyToClipboard'; import {useLocation} from 'sentry/utils/useLocation'; import useOrganization from 'sentry/utils/useOrganization'; @@ -33,7 +35,9 @@ import { useLogsAddSearchFilter, useLogsAnalyticsPageSource, useLogsFields, + useLogsIsTableFrozen, } from 'sentry/views/explore/contexts/logs/logsPageParams'; +import type {TraceItemDetailsResponse} from 'sentry/views/explore/hooks/useTraceItemDetails'; import { DEFAULT_TRACE_ITEM_HOVER_TIMEOUT, DEFAULT_TRACE_ITEM_HOVER_TIMEOUT_WITH_AUTO_REFRESH, @@ -368,7 +372,6 @@ function LogRowDetails({ }) { const location = useLocation(); const organization = useOrganization(); - const addSearchFilter = useLogsAddSearchFilter(); const project = useProjectFromId({ project_id: '' + dataRow[OurLogKnownFieldKey.PROJECT_ID], }); @@ -383,25 +386,14 @@ function LogRowDetails({ typeof severityText === 'string' ? severityText : null ); const missingLogId = !dataRow[OurLogKnownFieldKey.ID]; - const {data, isPending, isError} = useExploreLogsTableRow({ + const fullLogDataResult = useExploreLogsTableRow({ logId: String(dataRow[OurLogKnownFieldKey.ID] ?? ''), projectId: String(dataRow[OurLogKnownFieldKey.PROJECT_ID] ?? ''), traceId: String(dataRow[OurLogKnownFieldKey.TRACE_ID] ?? ''), enabled: !missingLogId, }); - const {onClick: betterCopyToClipboard} = useCopyToClipboard({ - text: isPending || isError ? '' : ourlogToJson(data), - onCopy: () => { - trackAnalytics('logs.table.row_copied_as_json', { - log_id: String(dataRow[OurLogKnownFieldKey.ID]), - organization, - }); - }, - - successMessage: t('Copied!'), - errorMessage: t('Failed to copy'), - }); + const {data, isPending, isError} = fullLogDataResult; const theme = useTheme(); const logColors = getLogColors(level, theme); @@ -481,53 +473,97 @@ function LogRowDetails({ flexDirection: 'row', }} > - - - - - - - - + )} ); } + +function LogRowDetailsFilterActions({tableDataRow}: {tableDataRow: OurLogsResponseItem}) { + const addSearchFilter = useLogsAddSearchFilter(); + return ( + + + + + ); +} + +function LogRowDetailsActions({ + fullLogDataResult, + tableDataRow, +}: { + fullLogDataResult: UseApiQueryResult; + tableDataRow: OurLogsResponseItem; +}) { + const {data, isPending, isError} = fullLogDataResult; + const isTableFrozen = useLogsIsTableFrozen(); + const organization = useOrganization(); + const showFilterButtons = !isTableFrozen; + + const {onClick: betterCopyToClipboard} = useCopyToClipboard({ + text: isPending || isError ? '' : ourlogToJson(data), + onCopy: () => { + trackAnalytics('logs.table.row_copied_as_json', { + log_id: String(tableDataRow[OurLogKnownFieldKey.ID]), + organization, + }); + }, + + successMessage: t('Copied!'), + errorMessage: t('Failed to copy'), + }); + return ( + + {showFilterButtons ? ( + + ) : ( + + )} + + + + + ); +}