mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Explore/Logs: Add feature tracking for ad-hoc statistics in log rows (#56681)
* Add feature tracking for ad-hoc statistics in log rows * Make row prop mandatory in LogDetailsRow.tsx * Remove optional chaining * fix: failing test by mocking reportInteraction
This commit is contained in:
parent
b1761908c2
commit
f30ba0d34e
@ -109,6 +109,7 @@ class UnThemedLogDetails extends PureComponent<Props> {
|
||||
getStats={() => calculateLogsLabelStats(getRows(), key)}
|
||||
onClickFilterOutLabel={onClickFilterOutLabel}
|
||||
onClickFilterLabel={onClickFilterLabel}
|
||||
row={row}
|
||||
/>
|
||||
);
|
||||
})}
|
||||
@ -146,6 +147,7 @@ class UnThemedLogDetails extends PureComponent<Props> {
|
||||
}
|
||||
showDetectedFields={showDetectedFields}
|
||||
wrapLogMessage={wrapLogMessage}
|
||||
row={row}
|
||||
/>
|
||||
);
|
||||
})}
|
||||
|
@ -2,6 +2,8 @@ import { screen, render, fireEvent } from '@testing-library/react';
|
||||
import userEvent from '@testing-library/user-event';
|
||||
import React, { ComponentProps } from 'react';
|
||||
|
||||
import { LogRowModel } from '@grafana/data';
|
||||
|
||||
import { LogDetailsRow } from './LogDetailsRow';
|
||||
|
||||
type Props = ComponentProps<typeof LogDetailsRow>;
|
||||
@ -18,6 +20,7 @@ const setup = (propOverrides?: Partial<Props>) => {
|
||||
onClickShowDetectedField: () => {},
|
||||
onClickHideDetectedField: () => {},
|
||||
showDetectedFields: [],
|
||||
row: {} as LogRowModel,
|
||||
};
|
||||
|
||||
Object.assign(props, propOverrides);
|
||||
@ -31,6 +34,11 @@ const setup = (propOverrides?: Partial<Props>) => {
|
||||
);
|
||||
};
|
||||
|
||||
jest.mock('@grafana/runtime', () => ({
|
||||
...jest.requireActual('@grafana/runtime'),
|
||||
reportInteraction: jest.fn(),
|
||||
}));
|
||||
|
||||
describe('LogDetailsRow', () => {
|
||||
it('should render parsed key', () => {
|
||||
setup({ parsedKey: 'test key' });
|
||||
|
@ -1,7 +1,8 @@
|
||||
import { css, cx } from '@emotion/css';
|
||||
import React, { PureComponent } from 'react';
|
||||
|
||||
import { Field, LinkModel, LogLabelStatsModel, GrafanaTheme2 } from '@grafana/data';
|
||||
import { Field, LinkModel, LogLabelStatsModel, GrafanaTheme2, LogRowModel } from '@grafana/data';
|
||||
import { reportInteraction } from '@grafana/runtime';
|
||||
import { withTheme2, Themeable2, ClipboardButton, DataLinkButton, IconButton } from '@grafana/ui';
|
||||
|
||||
import { LogLabelStats } from './LogLabelStats';
|
||||
@ -21,6 +22,7 @@ export interface Props extends Themeable2 {
|
||||
showDetectedFields?: string[];
|
||||
onClickShowDetectedField?: (key: string) => void;
|
||||
onClickHideDetectedField?: (key: string) => void;
|
||||
row: LogRowModel;
|
||||
}
|
||||
|
||||
interface State {
|
||||
@ -108,6 +110,13 @@ class UnThemedLogDetailsRow extends PureComponent<Props, State> {
|
||||
this.setState({ fieldStats, fieldCount });
|
||||
}
|
||||
this.toggleFieldsStats();
|
||||
|
||||
reportInteraction('grafana_explore_logs_log_details_stats_clicked', {
|
||||
dataSourceType: this.props.row.datasourceType,
|
||||
fieldType: this.props.isLabel ? 'label' : 'detectedField',
|
||||
type: showFieldsStats ? 'close' : 'open',
|
||||
logRowUid: this.props.row.uid,
|
||||
});
|
||||
};
|
||||
|
||||
toggleFieldsStats() {
|
||||
|
Loading…
Reference in New Issue
Block a user