Logs: update show original line with defaults

This commit is contained in:
L2D2Grafana
2026-01-07 07:43:00 -08:00
parent 1e841eaba8
commit aacaf0ca26
2 changed files with 19 additions and 26 deletions
@@ -1,16 +1,7 @@
import { css } from '@emotion/css';
import { memo } from 'react';
import { memo, useMemo } from 'react';
import {
LogsDedupStrategy,
LogsMetaItem,
LogsMetaKind,
LogRowModel,
CoreApp,
Labels,
store,
shallowCompare,
} from '@grafana/data';
import { LogsDedupStrategy, LogsMetaItem, LogsMetaKind, LogRowModel, CoreApp, Labels, store } from '@grafana/data';
import { Trans, t } from '@grafana/i18n';
import { config, reportInteraction } from '@grafana/runtime';
import { Button, Dropdown, Menu, ToolbarButton, useStyles2 } from '@grafana/ui';
@@ -58,6 +49,14 @@ export const LogsMetaRow = memo(
}: Props) => {
const style = useStyles2(getStyles);
// Filter out default fields from displayedFields to show only user-added fields
const nonDefaultFields = useMemo(() => {
if (!displayedFields?.length || !defaultDisplayedFields?.length) {
return [];
}
return displayedFields.filter((field) => !defaultDisplayedFields.includes(field));
}, [displayedFields, defaultDisplayedFields]);
const logsMetaItem: Array<LogsMetaItem | MetaItemProps> = [...meta];
// Add deduplication info
@@ -69,16 +68,12 @@ export const LogsMetaRow = memo(
});
}
// Add detected fields info
if (
visualisationType === 'logs' &&
displayedFields?.length > 0 &&
shallowCompare(displayedFields, defaultDisplayedFields) === false
) {
// Add detected fields info - only show when user has added fields beyond defaults
if (visualisationType === 'logs' && nonDefaultFields.length > 0) {
logsMetaItem.push(
{
label: t('explore.logs-meta-row.label.showing-only-selected-fields', 'Showing only selected fields'),
value: <LogLabelsList labels={displayedFields} />,
value: <LogLabelsList labels={nonDefaultFields} />,
},
{
label: '',
@@ -302,10 +302,8 @@ export const LogListContextProvider = ({
// 3. Always add LOG_LINE_BODY
orderedFields.push(LOG_LINE_BODY_FIELD_NAME);
// 4. Add OTEL_LOG_ATTRIBUTES if it's in OTel fields
if (otelDisplayedFields.includes(OTEL_LOG_LINE_ATTRIBUTES_FIELD_NAME)) {
orderedFields.push(OTEL_LOG_LINE_ATTRIBUTES_FIELD_NAME);
}
// 4. Always add OTEL_LOG_ATTRIBUTES
orderedFields.push(OTEL_LOG_LINE_ATTRIBUTES_FIELD_NAME);
// 5. Add any other OTel fields that aren't already included
otelDisplayedFields.forEach((field) => {
@@ -321,12 +319,12 @@ export const LogListContextProvider = ({
return orderedFields;
}, [tableDefaultFields, otelDisplayedFields]);
// OTel displayed fields
// Pass default displayed fields (table defaults + OTel defaults) to parent
useEffect(() => {
if (config.featureToggles.otelLogsFormatting && showLogAttributes !== false) {
onLogOptionsChange?.('defaultDisplayedFields', otelDisplayedFields);
if (defaultDisplayedFields.length > 0) {
onLogOptionsChange?.('defaultDisplayedFields', defaultDisplayedFields);
}
}, [onLogOptionsChange, otelDisplayedFields, showLogAttributes]);
}, [onLogOptionsChange, defaultDisplayedFields]);
// Set default displayed fields (table defaults + OTel defaults) when displayedFields is empty or missing table defaults
useEffect(() => {