Popover menu: update tracking attributes + move under Explore/logs (#78739)

* Popover menu: update event tracking attributes

* Popover menu: move under explore/loggs

* Popover menu: narrow down support to only Explore app
pull/78744/head
Matias Chomicki 2 years ago committed by GitHub
parent ec7d09b8e0
commit 630b8a30be
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 3
      public/app/features/explore/Logs/PopoverMenu.test.tsx
  2. 6
      public/app/features/explore/Logs/PopoverMenu.tsx
  3. 10
      public/app/features/logs/components/LogRows.test.tsx
  4. 4
      public/app/features/logs/components/LogRows.tsx

@ -2,8 +2,9 @@ import { render, screen } from '@testing-library/react';
import userEvent from '@testing-library/user-event'; import userEvent from '@testing-library/user-event';
import React from 'react'; import React from 'react';
import { createLogRow } from '../../logs/components/__mocks__/logRow';
import { PopoverMenu } from './PopoverMenu'; import { PopoverMenu } from './PopoverMenu';
import { createLogRow } from './__mocks__/logRow';
const row = createLogRow(); const row = createLogRow();

@ -5,7 +5,7 @@ import { GrafanaTheme2, LogRowModel } from '@grafana/data';
import { reportInteraction } from '@grafana/runtime'; import { reportInteraction } from '@grafana/runtime';
import { Menu, useStyles2 } from '@grafana/ui'; import { Menu, useStyles2 } from '@grafana/ui';
import { copyText } from '../utils'; import { copyText } from '../../logs/utils';
interface PopoverMenuProps { interface PopoverMenuProps {
selection: string; selection: string;
@ -87,8 +87,8 @@ export const PopoverMenu = ({
function track(action: string, selectionLength: number, dataSourceType: string | undefined) { function track(action: string, selectionLength: number, dataSourceType: string | undefined) {
reportInteraction(`grafana_explore_logs_popover_menu`, { reportInteraction(`grafana_explore_logs_popover_menu`, {
action, action,
selection_length: selectionLength, selectionLength: selectionLength,
ds_type: dataSourceType || 'unknown', datasourceType: dataSourceType || 'unknown',
}); });
} }

@ -3,7 +3,7 @@ import userEvent from '@testing-library/user-event';
import { range } from 'lodash'; import { range } from 'lodash';
import React from 'react'; import React from 'react';
import { LogRowModel, LogsDedupStrategy, LogsSortOrder } from '@grafana/data'; import { CoreApp, LogRowModel, LogsDedupStrategy, LogsSortOrder } from '@grafana/data';
import { LogRows, PREVIEW_LIMIT } from './LogRows'; import { LogRows, PREVIEW_LIMIT } from './LogRows';
import { createLogRow } from './__mocks__/logRow'; import { createLogRow } from './__mocks__/logRow';
@ -207,7 +207,7 @@ describe('LogRows', () => {
}); });
describe('Popover menu', () => { describe('Popover menu', () => {
function setup() { function setup(app = CoreApp.Explore) {
const rows: LogRowModel[] = [createLogRow({ uid: '1' })]; const rows: LogRowModel[] = [createLogRow({ uid: '1' })];
return render( return render(
<LogRows <LogRows
@ -223,6 +223,7 @@ describe('Popover menu', () => {
displayedFields={[]} displayedFields={[]}
onClickFilterOutValue={() => {}} onClickFilterOutValue={() => {}}
onClickFilterValue={() => {}} onClickFilterValue={() => {}}
app={app}
/> />
); );
} }
@ -247,4 +248,9 @@ describe('Popover menu', () => {
expect(screen.getByText('Add as line contains filter')).toBeInTheDocument(); expect(screen.getByText('Add as line contains filter')).toBeInTheDocument();
expect(screen.getByText('Add as line does not contain filter')).toBeInTheDocument(); expect(screen.getByText('Add as line does not contain filter')).toBeInTheDocument();
}); });
it('Does not appear outside Explore', async () => {
setup(CoreApp.Unknown);
await userEvent.click(screen.getByText('log message 1'));
expect(screen.queryByText('Copy selection')).not.toBeInTheDocument();
});
}); });

@ -15,12 +15,12 @@ import {
import { config } from '@grafana/runtime'; import { config } from '@grafana/runtime';
import { withTheme2, Themeable2 } from '@grafana/ui'; import { withTheme2, Themeable2 } from '@grafana/ui';
import { PopoverMenu } from '../../explore/Logs/PopoverMenu';
import { UniqueKeyMaker } from '../UniqueKeyMaker'; import { UniqueKeyMaker } from '../UniqueKeyMaker';
import { sortLogRows, targetIsElement } from '../utils'; import { sortLogRows, targetIsElement } from '../utils';
//Components //Components
import { LogRow } from './LogRow'; import { LogRow } from './LogRow';
import { PopoverMenu } from './PopoverMenu';
import { getLogRowStyles } from './getLogRowStyles'; import { getLogRowStyles } from './getLogRowStyles';
export const PREVIEW_LIMIT = 100; export const PREVIEW_LIMIT = 100;
@ -97,7 +97,7 @@ class UnThemedLogRows extends PureComponent<Props, State> {
}; };
popoverMenuSupported() { popoverMenuSupported() {
if (!config.featureToggles.logRowsPopoverMenu) { if (!config.featureToggles.logRowsPopoverMenu || this.props.app !== CoreApp.Explore) {
return false; return false;
} }
return Boolean(this.props.onClickFilterOutValue || this.props.onClickFilterValue); return Boolean(this.props.onClickFilterOutValue || this.props.onClickFilterValue);

Loading…
Cancel
Save