Просмотр исходного кода

fix(metric-alerts): Add correct filter when clicking Open in Discover (#27096)

* fix(metric-alerts): Add correct filter when clicking Open in Discover

Add the correct event type filter when clicking the Open in Discover button on the Metric Alert Rule details page.

FIXES WOR-951

* fix search query to include event type and tag filters from metric alert rule

* refactor
Kelly Carino 3 лет назад
Родитель
Сommit
9cef53830c

+ 3 - 0
static/app/views/alerts/incidentRules/incidentRulePresets.tsx

@@ -26,6 +26,7 @@ type PresetCtaOpts = {
   orgSlug: string;
   projects: Project[];
   rule?: IncidentRule;
+  eventType?: string;
   start?: string;
   end?: string;
 };
@@ -252,6 +253,7 @@ export function makeDefaultCta({
   orgSlug,
   projects,
   rule,
+  eventType,
   start,
   end,
 }: PresetCtaOpts): PresetCta {
@@ -272,6 +274,7 @@ export function makeDefaultCta({
       orgSlug,
       projects,
       rule,
+      eventType,
       start,
       end,
       extraQueryParams,

+ 2 - 1
static/app/views/alerts/rules/details/metricChart.tsx

@@ -252,11 +252,12 @@ class MetricChart extends React.PureComponent<Props, State> {
     criticalDuration: number,
     warningDuration: number
   ) {
-    const {rule, orgId, projects, timePeriod} = this.props;
+    const {rule, orgId, projects, timePeriod, query} = this.props;
     const ctaOpts = {
       orgSlug: orgId,
       projects: projects as Project[],
       rule,
+      eventType: query,
       start: timePeriod.start,
       end: timePeriod.end,
     };

+ 4 - 2
static/app/views/alerts/utils/getIncidentRuleDiscoverUrl.tsx

@@ -17,11 +17,13 @@ export function getIncidentRuleDiscoverUrl(opts: {
   orgSlug: string;
   projects: Project[];
   rule?: IncidentRule;
+  eventType?: string;
   start?: string;
   end?: string;
   extraQueryParams?: Partial<NewQuery>;
 }) {
-  const {orgSlug, projects, rule, start, end, extraQueryParams} = opts;
+  const {orgSlug, projects, rule, eventType, start, end, extraQueryParams} = opts;
+  const eventTypeTagFilter = eventType && rule?.query ? eventType : '';
 
   if (!projects || !projects.length || !rule || (!start && !end)) {
     return '';
@@ -34,7 +36,7 @@ export function getIncidentRuleDiscoverUrl(opts: {
     name: (rule && rule.name) || '',
     orderby: `-${getAggregateAlias(rule.aggregate)}`,
     yAxis: rule.aggregate,
-    query: rule?.query ?? '',
+    query: (eventTypeTagFilter || rule?.query || eventType) ?? '',
     projects: projects
       .filter(({slug}) => rule.projects.includes(slug))
       .map(({id}) => Number(id)),