Logs: update show original line with defaults
This commit is contained in:
@@ -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(() => {
|
||||
|
||||
Reference in New Issue
Block a user