Skip to content

Commit 6226bf7

Browse files
DominikB2014billyvg
authored andcommitted
feat(insights): open http response rate summary chart in comparison view (#93132)
1. Exact same as #93050 except for http response rate summary chart (instead of landing page) 2. All updated the landing summary chart the pass in the `stringifiedSearch` into the queries, missed this in the previous PR
1 parent 6f8ec02 commit 6226bf7

File tree

2 files changed

+76
-5
lines changed

2 files changed

+76
-5
lines changed

static/app/views/insights/common/components/widgets/httpDomainSummaryResponseCodesChartWidget.tsx

Lines changed: 72 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,99 @@
11
import {MutableSearch} from 'sentry/utils/tokenizeSearch';
2+
import {useLocation} from 'sentry/utils/useLocation';
3+
import useOrganization from 'sentry/utils/useOrganization';
4+
import usePageFilters from 'sentry/utils/usePageFilters';
5+
import {Dataset} from 'sentry/views/alerts/rules/metric/types';
6+
import {Mode} from 'sentry/views/explore/contexts/pageParamsContext/mode';
7+
import {generateExploreCompareRoute} from 'sentry/views/explore/multiQueryMode/locationUtils';
8+
import {ChartType} from 'sentry/views/insights/common/components/chart';
9+
import {BaseChartActionDropdown} from 'sentry/views/insights/common/components/chartActionDropdown';
210
import {InsightsLineChartWidget} from 'sentry/views/insights/common/components/insightsLineChartWidget';
311
import {useHttpDomainSummaryChartFilter} from 'sentry/views/insights/common/components/widgets/hooks/useHttpDomainSummaryChartFilter';
412
import type {LoadableChartWidgetProps} from 'sentry/views/insights/common/components/widgets/types';
513
import {useSpanMetricsSeries} from 'sentry/views/insights/common/queries/useDiscoverSeries';
14+
import {getAlertsUrl} from 'sentry/views/insights/common/utils/getAlertsUrl';
15+
import {useAlertsProject} from 'sentry/views/insights/common/utils/useAlertsProject';
616
import {DataTitles} from 'sentry/views/insights/common/views/spans/types';
717
import {Referrer} from 'sentry/views/insights/http/referrers';
818
import {FIELD_ALIASES} from 'sentry/views/insights/http/settings';
919

1020
export default function HttpDomainSummaryResponseCodesChartWidget(
1121
props: LoadableChartWidgetProps
1222
) {
23+
const organization = useOrganization();
24+
const location = useLocation();
25+
const {selection} = usePageFilters();
26+
1327
const chartFilters = useHttpDomainSummaryChartFilter();
28+
const project = useAlertsProject();
29+
const search = MutableSearch.fromQueryObject(chartFilters);
30+
const referrer = Referrer.DOMAIN_SUMMARY_RESPONSE_CODE_CHART;
31+
1432
const {
1533
isPending: isResponseCodeDataLoading,
1634
data: responseCodeData,
1735
error: responseCodeError,
1836
} = useSpanMetricsSeries(
1937
{
20-
search: MutableSearch.fromQueryObject(chartFilters),
38+
search,
2139
yAxis: ['http_response_rate(3)', 'http_response_rate(4)', 'http_response_rate(5)'],
2240
transformAliasToInputFormat: true,
2341
},
24-
Referrer.DOMAIN_SUMMARY_RESPONSE_CODE_CHART,
42+
referrer,
2543
props.pageFilters
2644
);
2745

46+
const responseRateField = 'tags[http.response.status_code,number]';
47+
const stringifiedSearch = search.formatString();
48+
49+
const queries = [
50+
{
51+
yAxes: ['count()'],
52+
label: '3xx',
53+
query: `${stringifiedSearch} ${responseRateField}:>300 ${responseRateField}:<=399`,
54+
},
55+
{
56+
yAxes: ['count()'],
57+
label: '4xx',
58+
query: `${stringifiedSearch} ${responseRateField}:>400 ${responseRateField}:<=499`,
59+
},
60+
{
61+
yAxes: ['count()'],
62+
label: '5xx',
63+
query: `${stringifiedSearch} ${responseRateField}:>500 ${responseRateField}:<=599`,
64+
},
65+
];
66+
67+
const exploreUrl = generateExploreCompareRoute({
68+
organization,
69+
mode: Mode.AGGREGATE,
70+
location,
71+
queries: queries.map(query => ({
72+
...query,
73+
chartType: ChartType.LINE,
74+
})),
75+
});
76+
77+
const extraActions = [
78+
<BaseChartActionDropdown
79+
key="http response chart widget"
80+
exploreUrl={exploreUrl}
81+
referrer={referrer}
82+
alertMenuOptions={queries.map(query => ({
83+
key: query.label,
84+
label: query.label,
85+
to: getAlertsUrl({
86+
project,
87+
aggregate: query.yAxes[0]!,
88+
organization,
89+
pageFilters: selection,
90+
dataset: Dataset.EVENTS_ANALYTICS_PLATFORM,
91+
query: query.query,
92+
}),
93+
}))}
94+
/>,
95+
];
96+
2897
return (
2998
<InsightsLineChartWidget
3099
{...props}
@@ -35,6 +104,7 @@ export default function HttpDomainSummaryResponseCodesChartWidget(
35104
responseCodeData[`http_response_rate(4)`],
36105
responseCodeData[`http_response_rate(5)`],
37106
]}
107+
extraActions={extraActions}
38108
aliases={FIELD_ALIASES}
39109
isLoading={isResponseCodeDataLoading}
40110
error={responseCodeError}

static/app/views/insights/common/components/widgets/httpResponseCodesChartWidget.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,22 +42,23 @@ export default function HttpResponseCodesChartWidget(props: LoadableChartWidgetP
4242
);
4343

4444
const responseRateField = 'tags[http.response.status_code,number]';
45+
const stringifiedSearch = search.formatString();
4546

4647
const queries = [
4748
{
4849
yAxes: ['count()'],
4950
label: '3xx',
50-
query: `${responseRateField}:>300 ${responseRateField}:<=399`,
51+
query: `${stringifiedSearch} ${responseRateField}:>300 ${responseRateField}:<=399`,
5152
},
5253
{
5354
yAxes: ['count()'],
5455
label: '4xx',
55-
query: `${responseRateField}:>400 ${responseRateField}:<=499`,
56+
query: `${stringifiedSearch} ${responseRateField}:>400 ${responseRateField}:<=499`,
5657
},
5758
{
5859
yAxes: ['count()'],
5960
label: '5xx',
60-
query: `${responseRateField}:>500 ${responseRateField}:<=599`,
61+
query: `${stringifiedSearch} ${responseRateField}:>500 ${responseRateField}:<=599`,
6162
},
6263
];
6364

0 commit comments

Comments
 (0)