Skip to content

Commit 79bc718

Browse files
authored
feat(ourlogs): Use the explore chart widget to support the context actions (#89643)
This lets you switch to bar/line/area chart, and in the future will support adding to dashboard and creating alerts.
1 parent ba7c5b4 commit 79bc718

File tree

5 files changed

+66
-92
lines changed

5 files changed

+66
-92
lines changed

static/app/views/explore/charts/index.spec.tsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {render, screen} from 'sentry-test/reactTestingLibrary';
44

55
import {DurationUnit} from 'sentry/utils/discover/fields';
66
import {ExploreCharts} from 'sentry/views/explore/charts';
7+
import {defaultVisualizes} from 'sentry/views/explore/contexts/pageParamsContext/visualizes';
78

89
describe('ExploreCharts', () => {
910
it('renders the progressive loading indicator when the widget is progressively loading', async () => {
@@ -28,6 +29,8 @@ describe('ExploreCharts', () => {
2829
query={''}
2930
timeseriesResult={mockTimeseriesResult}
3031
isProgressivelyLoading
32+
visualizes={defaultVisualizes()}
33+
setVisualizes={() => {}}
3134
/>,
3235
{
3336
organization: OrganizationFixture({
@@ -47,6 +50,8 @@ describe('ExploreCharts', () => {
4750
query={''}
4851
timeseriesResult={mockTimeseriesResult}
4952
isProgressivelyLoading={false}
53+
visualizes={defaultVisualizes()}
54+
setVisualizes={() => {}}
5055
/>
5156
);
5257

static/app/views/explore/charts/index.tsx

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,7 @@ import {Widget} from 'sentry/views/dashboards/widgets/widget/widget';
2323
import {ConfidenceFooter} from 'sentry/views/explore/charts/confidenceFooter';
2424
import ChartContextMenu from 'sentry/views/explore/components/chartContextMenu';
2525
import {getProgressiveLoadingIndicator} from 'sentry/views/explore/components/progressiveLoadingIndicator';
26-
import {
27-
useExploreVisualizes,
28-
useSetExploreVisualizes,
29-
} from 'sentry/views/explore/contexts/pageParamsContext';
26+
import type {Visualize} from 'sentry/views/explore/contexts/pageParamsContext/visualizes';
3027
import {useChartInterval} from 'sentry/views/explore/hooks/useChartInterval';
3128
import {useTopEvents} from 'sentry/views/explore/hooks/useTopEvents';
3229
import {CHART_HEIGHT, INGESTION_DELAY} from 'sentry/views/explore/settings';
@@ -40,7 +37,10 @@ interface ExploreChartsProps {
4037
canUsePreviousResults: boolean;
4138
confidences: Confidence[];
4239
query: string;
40+
setVisualizes: (visualizes: Visualize[]) => void;
4341
timeseriesResult: ReturnType<typeof useSortedTimeSeries>;
42+
visualizes: Visualize[];
43+
hideContextMenu?: boolean;
4444
isProgressivelyLoading?: boolean;
4545
}
4646

@@ -67,10 +67,11 @@ export function ExploreCharts({
6767
query,
6868
timeseriesResult,
6969
isProgressivelyLoading,
70+
visualizes,
71+
setVisualizes,
72+
hideContextMenu,
7073
}: ExploreChartsProps) {
7174
const theme = useTheme();
72-
const visualizes = useExploreVisualizes();
73-
const setVisualizes = useSetExploreVisualizes();
7475
const [interval, setInterval, intervalOptions] = useChartInterval();
7576
const topEvents = useTopEvents();
7677
const isTopN = defined(topEvents) && topEvents > 0;
@@ -275,13 +276,19 @@ export function ExploreCharts({
275276
options={intervalOptions}
276277
/>
277278
</Tooltip>,
278-
<ChartContextMenu
279-
key="context"
280-
visualizeYAxes={chartInfo.yAxes}
281-
query={query}
282-
interval={interval}
283-
visualizeIndex={index}
284-
/>,
279+
[
280+
...(hideContextMenu
281+
? []
282+
: [
283+
<ChartContextMenu
284+
key="context"
285+
visualizeYAxes={chartInfo.yAxes}
286+
query={query}
287+
interval={interval}
288+
visualizeIndex={index}
289+
/>,
290+
]),
291+
],
285292
]}
286293
revealActions="always"
287294
Visualization={

static/app/views/explore/logs/logsChart.tsx

Lines changed: 0 additions & 76 deletions
This file was deleted.

static/app/views/explore/logs/logsTab.tsx

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {useCallback} from 'react';
1+
import {useCallback, useState} from 'react';
22
import styled from '@emotion/styled';
33

44
import {openModal} from 'sentry/actionCreators/modal';
@@ -14,6 +14,8 @@ import {IconTable} from 'sentry/icons';
1414
import {t} from 'sentry/locale';
1515
import {space} from 'sentry/styles/space';
1616
import {LogsAnalyticsPageSource} from 'sentry/utils/analytics/logsAnalyticsEvent';
17+
import {DiscoverDatasets} from 'sentry/utils/discover/types';
18+
import {ExploreCharts} from 'sentry/views/explore/charts';
1719
import SchemaHintsList, {
1820
SchemaHintsSection,
1921
} from 'sentry/views/explore/components/schemaHintsList';
@@ -31,15 +33,19 @@ import {
3133
useSetLogsPageParams,
3234
useSetLogsQuery,
3335
} from 'sentry/views/explore/contexts/logs/logsPageParams';
36+
import type {Visualize} from 'sentry/views/explore/contexts/pageParamsContext/visualizes';
3437
import {useTraceItemAttributes} from 'sentry/views/explore/contexts/traceItemAttributeContext';
3538
import {useLogAnalytics} from 'sentry/views/explore/hooks/useAnalytics';
39+
import {useChartInterval} from 'sentry/views/explore/hooks/useChartInterval';
3640
import {HiddenColumnEditorLogFields} from 'sentry/views/explore/logs/constants';
37-
import {LogsChart} from 'sentry/views/explore/logs/logsChart';
3841
import {LogsTable} from 'sentry/views/explore/logs/logsTable';
42+
import {OurLogKnownFieldKey} from 'sentry/views/explore/logs/types';
3943
import {useExploreLogsTable} from 'sentry/views/explore/logs/useLogsQuery';
4044
import {ColumnEditorModal} from 'sentry/views/explore/tables/columnEditorModal';
4145
import {TraceItemDataset} from 'sentry/views/explore/types';
4246
import type {DefaultPeriod, MaxPickableDays} from 'sentry/views/explore/utils';
47+
import {ChartType} from 'sentry/views/insights/common/components/chart';
48+
import {useSortedTimeSeries} from 'sentry/views/insights/common/queries/useSortedTimeSeries';
4349

4450
export type LogsTabProps = {
4551
defaultPeriod: DefaultPeriod;
@@ -59,6 +65,25 @@ export function LogsTabContent({
5965
const setLogsPageParams = useSetLogsPageParams();
6066
const tableData = useExploreLogsTable({});
6167

68+
const [interval] = useChartInterval();
69+
70+
const timeseriesResult = useSortedTimeSeries(
71+
{
72+
search: logsSearch,
73+
yAxis: [`count(${OurLogKnownFieldKey.MESSAGE})`],
74+
interval,
75+
},
76+
'explore.ourlogs.main-chart',
77+
DiscoverDatasets.OURLOGS
78+
);
79+
const [visualizes, setVisualizes] = useState<Visualize[]>([
80+
{
81+
chartType: ChartType.BAR,
82+
yAxes: [`count(${OurLogKnownFieldKey.MESSAGE})`],
83+
label: 'A',
84+
},
85+
]);
86+
6287
const {attributes: stringAttributes, isLoading: stringAttributesLoading} =
6388
useTraceItemAttributes('string');
6489
const {attributes: numberAttributes, isLoading: numberAttributesLoading} =
@@ -142,7 +167,16 @@ export function LogsTabContent({
142167
</Feature>
143168
<Feature features="organizations:ourlogs-graph">
144169
<LogsItemContainer>
145-
<LogsChart />
170+
<ExploreCharts
171+
canUsePreviousResults
172+
confidences={['high']}
173+
query={logsSearch.formatString()}
174+
timeseriesResult={timeseriesResult}
175+
visualizes={visualizes}
176+
setVisualizes={setVisualizes}
177+
// TODO: we do not support log alerts nor adding to dashboards yet
178+
hideContextMenu
179+
/>
146180
</LogsItemContainer>
147181
</Feature>
148182
<LogsItemContainer>

static/app/views/explore/spans/spansTab.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ import {
4343
useExploreVisualizes,
4444
useSetExplorePageParams,
4545
useSetExploreQuery,
46+
useSetExploreVisualizes,
4647
} from 'sentry/views/explore/contexts/pageParamsContext';
4748
import {Mode} from 'sentry/views/explore/contexts/pageParamsContext/mode';
4849
import {
@@ -86,6 +87,7 @@ export function SpansTabContentImpl({
8687
const {selection} = usePageFilters();
8788
const mode = useExploreMode();
8889
const visualizes = useExploreVisualizes();
90+
const setVisualizes = useSetExploreVisualizes();
8991
const [samplesTab, setSamplesTab] = useTab();
9092

9193
const {tags: numberTags, isLoading: numberTagsLoading} = useSpanTags('number');
@@ -282,6 +284,8 @@ export function SpansTabContentImpl({
282284
query={query}
283285
timeseriesResult={timeseriesResult}
284286
isProgressivelyLoading={timeseriesIsProgressivelyLoading}
287+
visualizes={visualizes}
288+
setVisualizes={setVisualizes}
285289
/>
286290
<ExploreTables
287291
aggregatesTableResult={aggregatesTableResult}

0 commit comments

Comments
 (0)