diff --git a/.betterer.results b/.betterer.results
index 2f3246ea376..7d4f307f249 100644
--- a/.betterer.results
+++ b/.betterer.results
@@ -1731,7 +1731,9 @@ exports[`better eslint`] = {
[0, 0, 0, "No untranslated strings. Wrap text with ", "13"]
],
"public/app/features/alerting/unified/home/Insights.tsx:5381": [
- [0, 0, 0, "No untranslated strings. Wrap text with ", "0"]
+ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"],
+ [0, 0, 0, "No untranslated strings. Wrap text with ", "1"],
+ [0, 0, 0, "No untranslated strings. Wrap text with ", "2"]
],
"public/app/features/alerting/unified/home/PluginIntegrations.tsx:5381": [
[0, 0, 0, "No untranslated strings. Wrap text with ", "0"]
@@ -1742,9 +1744,10 @@ exports[`better eslint`] = {
"public/app/features/alerting/unified/hooks/useControlledFieldArray.ts:5381": [
[0, 0, 0, "Unexpected any. Specify a different type.", "0"]
],
- "public/app/features/alerting/unified/insights/RatingModal.tsx:5381": [
- [0, 0, 0, "No untranslated strings. Wrap text with ", "0"],
- [0, 0, 0, "No untranslated strings. Wrap text with ", "1"]
+ "public/app/features/alerting/unified/insights/InsightsMenuButton.tsx:5381": [
+ [0, 0, 0, "Do not use any type assertions.", "0"],
+ [0, 0, 0, "No untranslated strings. Wrap text with ", "1"],
+ [0, 0, 0, "No untranslated strings. Wrap text with ", "2"]
],
"public/app/features/alerting/unified/mocks.ts:5381": [
[0, 0, 0, "Do not use any type assertions.", "0"],
diff --git a/public/app/features/alerting/unified/home/Insights.tsx b/public/app/features/alerting/unified/home/Insights.tsx
index 43765a28c02..2bf21799cc2 100644
--- a/public/app/features/alerting/unified/home/Insights.tsx
+++ b/public/app/features/alerting/unified/home/Insights.tsx
@@ -14,6 +14,7 @@ import {
SceneVariableSet,
VariableValueSelectors,
} from '@grafana/scenes';
+import { Icon, Text, Tooltip } from '@grafana/ui';
import { config } from '../../../../core/config';
import { SectionFooter } from '../insights/SectionFooter';
@@ -173,7 +174,28 @@ export function getInsightsScenes() {
controls: [
new SceneReactObject({
component: SectionSubheader,
- props: { children:
Monitor the status of your system.
},
+ props: {
+ children: (
+ <>
+
+ Monitor the status of your system{' '}
+
+ Alerting insights provides pre-built dashboards to monitor your alerting data.
+
+
+ You can identify patterns in why things go wrong and discover trends in alerting performance
+ within your organization.
+
+ }
+ >
+
+
+
+ >
+ ),
+ },
}),
new SceneControlsSpacer(),
new SceneTimePicker({}),
diff --git a/public/app/features/alerting/unified/insights/RatingModal.tsx b/public/app/features/alerting/unified/insights/InsightsMenuButton.tsx
similarity index 53%
rename from public/app/features/alerting/unified/insights/RatingModal.tsx
rename to public/app/features/alerting/unified/insights/InsightsMenuButton.tsx
index 8611d4602e5..57883227bee 100644
--- a/public/app/features/alerting/unified/insights/RatingModal.tsx
+++ b/public/app/features/alerting/unified/insights/InsightsMenuButton.tsx
@@ -1,12 +1,67 @@
import { css } from '@emotion/css';
import { useState } from 'react';
-import { GrafanaTheme2 } from '@grafana/data';
+import { ExploreUrlState, serializeStateToUrlParam, toURLRange, GrafanaTheme2 } from '@grafana/data';
+import {
+ SceneComponentProps,
+ sceneGraph,
+ SceneObjectBase,
+ SceneObjectState,
+ SceneTimeRangeState,
+ SceneVariableSetState,
+} from '@grafana/scenes';
+import { DataQuery } from '@grafana/schema';
import { Button, Dropdown, Icon, IconButton, Menu, Modal, useStyles2 } from '@grafana/ui';
import { trackInsightsFeedback } from '../Analytics';
-export function InsightsRatingModal({ panel }: { panel: string }) {
+type DataQueryWithExpr = DataQuery & { expr: string };
+
+const getPrometheusExploreUrl = ({
+ queries,
+ range,
+ variables,
+}: {
+ queries?: DataQueryWithExpr[];
+ range: SceneTimeRangeState;
+ variables: SceneVariableSetState;
+}): string => {
+ // In Mimir-per-group panels, replace `$rule_group` in the query expression with the actual rule group value
+ const ruleGroup = variables?.variables.find((v) => v.state.name === 'rule_group')?.getValue() || null;
+ if (ruleGroup !== null) {
+ queries = queries?.map((query) => {
+ return {
+ ...query,
+ expr: query.expr.replace('$rule_group', String(ruleGroup)),
+ };
+ });
+ }
+ const urlState: ExploreUrlState = {
+ datasource: (queries?.length && queries[0].datasource?.uid) || null,
+ queries:
+ queries?.map(({ expr, refId }, i) => {
+ return { expr, refId };
+ }) || [],
+ range: toURLRange(range ? { from: range.from, to: range.to } : { from: 'now-1h', to: 'now' }),
+ };
+
+ const param = encodeURIComponent(serializeStateToUrlParam(urlState));
+
+ return `/explore?left=${param}`;
+};
+
+const InsightsMenuButtonRenderer = ({ model }: SceneComponentProps) => {
+ const data = sceneGraph.getData(model).useState();
+ const timeRange = sceneGraph.getTimeRange(model).useState();
+ const variables = sceneGraph.getVariables(model).useState();
+ const panel = model.state.panel;
+
+ const url = getPrometheusExploreUrl({
+ queries: data.data?.request?.targets as DataQueryWithExpr[],
+ range: timeRange,
+ variables: variables,
+ });
+
const styles = useStyles2(getStyles);
const [showModal, setShowModal] = useState(false);
@@ -50,6 +105,7 @@ export function InsightsRatingModal({ panel }: { panel: string }) {
const menu = (
);
@@ -62,6 +118,14 @@ export function InsightsRatingModal({ panel }: { panel: string }) {
{modal}
);
+};
+
+interface InsightsMenuButtonState extends SceneObjectState {
+ panel: string;
+}
+
+export class InsightsMenuButton extends SceneObjectBase {
+ static Component = InsightsMenuButtonRenderer;
}
const getStyles = (theme: GrafanaTheme2) => ({
diff --git a/public/app/features/alerting/unified/insights/grafana/Active.tsx b/public/app/features/alerting/unified/insights/grafana/Active.tsx
index 46528c23d69..dfea1cc8328 100644
--- a/public/app/features/alerting/unified/insights/grafana/Active.tsx
+++ b/public/app/features/alerting/unified/insights/grafana/Active.tsx
@@ -3,7 +3,7 @@ import { PanelBuilders, SceneFlexItem, SceneQueryRunner } from '@grafana/scenes'
import { DataSourceRef } from '@grafana/schema';
import { INSTANCE_ID, PANEL_STYLES } from '../../home/Insights';
-import { InsightsRatingModal } from '../RatingModal';
+import { InsightsMenuButton } from '../InsightsMenuButton';
export function getActiveGrafanaAlertsScene(datasource: DataSourceRef, panelTitle: string) {
const expr = INSTANCE_ID
@@ -41,7 +41,7 @@ export function getActiveGrafanaAlertsScene(datasource: DataSourceRef, panelTitl
],
})
.setNoValue('0')
- .setHeaderActions()
+ .setHeaderActions([new InsightsMenuButton({ panel: panelTitle })])
.build(),
});
}
diff --git a/public/app/features/alerting/unified/insights/grafana/AlertsByStateScene.tsx b/public/app/features/alerting/unified/insights/grafana/AlertsByStateScene.tsx
index 55ec514c57c..f9307c94442 100644
--- a/public/app/features/alerting/unified/insights/grafana/AlertsByStateScene.tsx
+++ b/public/app/features/alerting/unified/insights/grafana/AlertsByStateScene.tsx
@@ -2,7 +2,7 @@ import { PanelBuilders, SceneDataTransformer, SceneFlexItem, SceneQueryRunner }
import { DataSourceRef, GraphDrawStyle, TooltipDisplayMode } from '@grafana/schema';
import { INSTANCE_ID, overrideToFixedColor, PANEL_STYLES } from '../../home/Insights';
-import { InsightsRatingModal } from '../RatingModal';
+import { InsightsMenuButton } from '../InsightsMenuButton';
export function getGrafanaInstancesByStateScene(datasource: DataSourceRef, panelTitle: string) {
const expr = INSTANCE_ID
@@ -56,7 +56,7 @@ export function getGrafanaInstancesByStateScene(datasource: DataSourceRef, panel
.matchFieldsWithName('nodata')
.overrideColor(overrideToFixedColor('nodata'))
)
- .setHeaderActions()
+ .setHeaderActions([new InsightsMenuButton({ panel: panelTitle })])
.build(),
});
}
diff --git a/public/app/features/alerting/unified/insights/grafana/EvalSuccessVsFailuresScene.tsx b/public/app/features/alerting/unified/insights/grafana/EvalSuccessVsFailuresScene.tsx
index b3d9921660f..6ce91ac7570 100644
--- a/public/app/features/alerting/unified/insights/grafana/EvalSuccessVsFailuresScene.tsx
+++ b/public/app/features/alerting/unified/insights/grafana/EvalSuccessVsFailuresScene.tsx
@@ -2,7 +2,7 @@ import { PanelBuilders, SceneFlexItem, SceneQueryRunner } from '@grafana/scenes'
import { DataSourceRef, GraphDrawStyle, TooltipDisplayMode } from '@grafana/schema';
import { INSTANCE_ID, overrideToFixedColor, PANEL_STYLES } from '../../home/Insights';
-import { InsightsRatingModal } from '../RatingModal';
+import { InsightsMenuButton } from '../InsightsMenuButton';
export function getGrafanaEvalSuccessVsFailuresScene(datasource: DataSourceRef, panelTitle: string) {
const exprA = INSTANCE_ID
@@ -18,13 +18,13 @@ export function getGrafanaEvalSuccessVsFailuresScene(datasource: DataSourceRef,
queries: [
{
refId: 'A',
- exprA,
+ expr: exprA,
range: true,
legendFormat: 'success',
},
{
refId: 'B',
- exprB,
+ expr: exprB,
range: true,
legendFormat: 'failed',
},
@@ -46,7 +46,7 @@ export function getGrafanaEvalSuccessVsFailuresScene(datasource: DataSourceRef,
.matchFieldsWithName('failed')
.overrideColor(overrideToFixedColor('failed'))
)
- .setHeaderActions()
+ .setHeaderActions([new InsightsMenuButton({ panel: panelTitle })])
.build(),
});
}
diff --git a/public/app/features/alerting/unified/insights/grafana/InstanceStatusScene.tsx b/public/app/features/alerting/unified/insights/grafana/InstanceStatusScene.tsx
index 647c27c00ff..990d3d621e5 100644
--- a/public/app/features/alerting/unified/insights/grafana/InstanceStatusScene.tsx
+++ b/public/app/features/alerting/unified/insights/grafana/InstanceStatusScene.tsx
@@ -2,7 +2,7 @@ import { PanelBuilders, SceneFlexItem, SceneQueryRunner } from '@grafana/scenes'
import { DataSourceRef } from '@grafana/schema';
import { INSTANCE_ID, overrideToFixedColor } from '../../home/Insights';
-import { InsightsRatingModal } from '../RatingModal';
+import { InsightsMenuButton } from '../InsightsMenuButton';
export function getInstanceStatByStatusScene(
datasource: DataSourceRef,
panelTitle: string,
@@ -33,7 +33,7 @@ export function getInstanceStatByStatusScene(
.setData(query)
.setOverrides((b) => b.matchFieldsWithName(status).overrideColor(overrideToFixedColor(status)))
.setNoValue('0')
- .setHeaderActions()
+ .setHeaderActions([new InsightsMenuButton({ panel: panelTitle })])
.build(),
});
}
diff --git a/public/app/features/alerting/unified/insights/grafana/MissedIterationsScene.tsx b/public/app/features/alerting/unified/insights/grafana/MissedIterationsScene.tsx
index 7c1976df590..2bc5e3d426b 100644
--- a/public/app/features/alerting/unified/insights/grafana/MissedIterationsScene.tsx
+++ b/public/app/features/alerting/unified/insights/grafana/MissedIterationsScene.tsx
@@ -11,7 +11,7 @@ import {
import { DataSourceRef, GraphDrawStyle, TooltipDisplayMode } from '@grafana/schema';
import { INSTANCE_ID, PANEL_STYLES } from '../../home/Insights';
-import { InsightsRatingModal } from '../RatingModal';
+import { InsightsMenuButton } from '../InsightsMenuButton';
export function getGrafanaMissedIterationsScene(datasource: DataSourceRef, panelTitle: string) {
const expr = `sum by(rule_group) (grafanacloud_instance_rule_group_iterations_missed_total:rate5m{id="${INSTANCE_ID}"})`;
@@ -62,7 +62,7 @@ export function getGrafanaMissedIterationsScene(datasource: DataSourceRef, panel
.setData(transformation)
.setOption('tooltip', { mode: TooltipDisplayMode.Multi })
.setCustomFieldConfig('drawStyle', GraphDrawStyle.Line)
- .setHeaderActions()
+ .setHeaderActions([new InsightsMenuButton({ panel: panelTitle })])
.build(),
});
}
diff --git a/public/app/features/alerting/unified/insights/grafana/MostFiredInstancesTable.tsx b/public/app/features/alerting/unified/insights/grafana/MostFiredInstancesTable.tsx
index 0c5a0e44950..e14ba7d0d6e 100644
--- a/public/app/features/alerting/unified/insights/grafana/MostFiredInstancesTable.tsx
+++ b/public/app/features/alerting/unified/insights/grafana/MostFiredInstancesTable.tsx
@@ -14,7 +14,7 @@ import { Link, useStyles2 } from '@grafana/ui';
import { PANEL_STYLES } from '../../home/Insights';
import { createRelativeUrl } from '../../utils/url';
-import { InsightsRatingModal } from '../RatingModal';
+import { InsightsMenuButton } from '../InsightsMenuButton';
export function getMostFiredInstancesScene(datasource: DataSourceRef, panelTitle: string) {
const query = new SceneQueryRunner({
@@ -101,7 +101,7 @@ export function getMostFiredInstancesScene(datasource: DataSourceRef, panelTitle
.setDescription('The alert rule instances that have fired the most')
.setData(transformation)
.setNoValue('No new alerts fired last week')
- .setHeaderActions()
+ .setHeaderActions([new InsightsMenuButton({ panel: panelTitle })])
.build(),
});
}
diff --git a/public/app/features/alerting/unified/insights/grafana/Paused.tsx b/public/app/features/alerting/unified/insights/grafana/Paused.tsx
index eb7b1abb851..1607bab80f4 100644
--- a/public/app/features/alerting/unified/insights/grafana/Paused.tsx
+++ b/public/app/features/alerting/unified/insights/grafana/Paused.tsx
@@ -3,7 +3,7 @@ import { PanelBuilders, SceneFlexItem, SceneQueryRunner } from '@grafana/scenes'
import { DataSourceRef } from '@grafana/schema';
import { INSTANCE_ID, PANEL_STYLES } from '../../home/Insights';
-import { InsightsRatingModal } from '../RatingModal';
+import { InsightsMenuButton } from '../InsightsMenuButton';
export function getPausedGrafanaAlertsScene(datasource: DataSourceRef, panelTitle: string) {
const expr = INSTANCE_ID
@@ -41,7 +41,7 @@ export function getPausedGrafanaAlertsScene(datasource: DataSourceRef, panelTitl
],
})
.setNoValue('0')
- .setHeaderActions()
+ .setHeaderActions([new InsightsMenuButton({ panel: panelTitle })])
.build(),
});
}
diff --git a/public/app/features/alerting/unified/insights/grafana/RulesByEvaluation.tsx b/public/app/features/alerting/unified/insights/grafana/RulesByEvaluation.tsx
index 57d9bb90cc8..fb700d701e5 100644
--- a/public/app/features/alerting/unified/insights/grafana/RulesByEvaluation.tsx
+++ b/public/app/features/alerting/unified/insights/grafana/RulesByEvaluation.tsx
@@ -2,7 +2,7 @@ import { PanelBuilders, SceneFlexItem, SceneQueryRunner } from '@grafana/scenes'
import { DataSourceRef, GraphDrawStyle, TooltipDisplayMode } from '@grafana/schema';
import { INSTANCE_ID, overrideToFixedColor, PANEL_STYLES } from '../../home/Insights';
-import { InsightsRatingModal } from '../RatingModal';
+import { InsightsMenuButton } from '../InsightsMenuButton';
export function getGrafanaRulesByEvaluationScene(datasource: DataSourceRef, panelTitle: string) {
const expr = INSTANCE_ID
@@ -32,7 +32,7 @@ export function getGrafanaRulesByEvaluationScene(datasource: DataSourceRef, pane
.setOverrides((b) =>
b.matchFieldsWithName('active evaluation').overrideColor(overrideToFixedColor('active evaluation'))
)
- .setHeaderActions()
+ .setHeaderActions([new InsightsMenuButton({ panel: panelTitle })])
.build(),
});
}
diff --git a/public/app/features/alerting/unified/insights/grafana/RulesByEvaluationPercentage.tsx b/public/app/features/alerting/unified/insights/grafana/RulesByEvaluationPercentage.tsx
index a6728f14953..bbb2d854702 100644
--- a/public/app/features/alerting/unified/insights/grafana/RulesByEvaluationPercentage.tsx
+++ b/public/app/features/alerting/unified/insights/grafana/RulesByEvaluationPercentage.tsx
@@ -2,7 +2,7 @@ import { PanelBuilders, SceneFlexItem, SceneQueryRunner } from '@grafana/scenes'
import { DataSourceRef, GraphDrawStyle, TooltipDisplayMode } from '@grafana/schema';
import { INSTANCE_ID, overrideToFixedColor, PANEL_STYLES } from '../../home/Insights';
-import { InsightsRatingModal } from '../RatingModal';
+import { InsightsMenuButton } from '../InsightsMenuButton';
export function getGrafanaRulesByEvaluationPercentageScene(datasource: DataSourceRef, panelTitle: string) {
const expr = INSTANCE_ID
@@ -35,7 +35,7 @@ export function getGrafanaRulesByEvaluationPercentageScene(datasource: DataSourc
.setOverrides((b) =>
b.matchFieldsWithName('active evaluation').overrideColor(overrideToFixedColor('active evaluation'))
)
- .setHeaderActions()
+ .setHeaderActions([new InsightsMenuButton({ panel: panelTitle })])
.build(),
});
}
diff --git a/public/app/features/alerting/unified/insights/grafana/alertmanager/AlertsByState.tsx b/public/app/features/alerting/unified/insights/grafana/alertmanager/AlertsByState.tsx
index 0796b90a644..60e843a80b6 100644
--- a/public/app/features/alerting/unified/insights/grafana/alertmanager/AlertsByState.tsx
+++ b/public/app/features/alerting/unified/insights/grafana/alertmanager/AlertsByState.tsx
@@ -2,7 +2,7 @@ import { PanelBuilders, SceneFlexItem, SceneQueryRunner } from '@grafana/scenes'
import { DataSourceRef, GraphDrawStyle, TooltipDisplayMode } from '@grafana/schema';
import { INSTANCE_ID, overrideToFixedColor, PANEL_STYLES } from '../../../home/Insights';
-import { InsightsRatingModal } from '../../RatingModal';
+import { InsightsMenuButton } from '../../InsightsMenuButton';
export function getAlertsByStateScene(datasource: DataSourceRef, panelTitle: string) {
const expr = INSTANCE_ID
@@ -30,7 +30,7 @@ export function getAlertsByStateScene(datasource: DataSourceRef, panelTitle: str
.setCustomFieldConfig('drawStyle', GraphDrawStyle.Line)
.setOption('tooltip', { mode: TooltipDisplayMode.Multi })
.setOverrides((b) => b.matchFieldsWithName('active').overrideColor(overrideToFixedColor('active')))
- .setHeaderActions()
+ .setHeaderActions([new InsightsMenuButton({ panel: panelTitle })])
.build(),
});
}
diff --git a/public/app/features/alerting/unified/insights/grafana/alertmanager/NotificationsScene.tsx b/public/app/features/alerting/unified/insights/grafana/alertmanager/NotificationsScene.tsx
index 27f542f91b5..36f83ec7359 100644
--- a/public/app/features/alerting/unified/insights/grafana/alertmanager/NotificationsScene.tsx
+++ b/public/app/features/alerting/unified/insights/grafana/alertmanager/NotificationsScene.tsx
@@ -2,7 +2,7 @@ import { PanelBuilders, SceneFlexItem, SceneQueryRunner } from '@grafana/scenes'
import { DataSourceRef, GraphDrawStyle, TooltipDisplayMode } from '@grafana/schema';
import { overrideToFixedColor, PANEL_STYLES } from '../../../home/Insights';
-import { InsightsRatingModal } from '../../RatingModal';
+import { InsightsMenuButton } from '../../InsightsMenuButton';
export function getGrafanaAlertmanagerNotificationsScene(datasource: DataSourceRef, panelTitle: string) {
const query = new SceneQueryRunner({
@@ -38,7 +38,7 @@ export function getGrafanaAlertmanagerNotificationsScene(datasource: DataSourceR
.matchFieldsWithName('failed')
.overrideColor(overrideToFixedColor('failed'))
)
- .setHeaderActions()
+ .setHeaderActions([new InsightsMenuButton({ panel: panelTitle })])
.build(),
});
}
diff --git a/public/app/features/alerting/unified/insights/grafana/alertmanager/SilencesByStateScene.tsx b/public/app/features/alerting/unified/insights/grafana/alertmanager/SilencesByStateScene.tsx
index a1b68a0e0ed..a5664d87fa8 100644
--- a/public/app/features/alerting/unified/insights/grafana/alertmanager/SilencesByStateScene.tsx
+++ b/public/app/features/alerting/unified/insights/grafana/alertmanager/SilencesByStateScene.tsx
@@ -2,7 +2,7 @@ import { PanelBuilders, SceneFlexItem, SceneQueryRunner } from '@grafana/scenes'
import { DataSourceRef, GraphDrawStyle, TooltipDisplayMode } from '@grafana/schema';
import { INSTANCE_ID, PANEL_STYLES } from '../../../home/Insights';
-import { InsightsRatingModal } from '../../RatingModal';
+import { InsightsMenuButton } from '../../InsightsMenuButton';
export function getGrafanaAlertmanagerSilencesScene(datasource: DataSourceRef, panelTitle: string) {
const expr = INSTANCE_ID
@@ -29,7 +29,7 @@ export function getGrafanaAlertmanagerSilencesScene(datasource: DataSourceRef, p
.setData(query)
.setCustomFieldConfig('drawStyle', GraphDrawStyle.Line)
.setOption('tooltip', { mode: TooltipDisplayMode.Multi })
- .setHeaderActions()
+ .setHeaderActions([new InsightsMenuButton({ panel: panelTitle })])
.build(),
});
}
diff --git a/public/app/features/alerting/unified/insights/mimir/AlertsByState.tsx b/public/app/features/alerting/unified/insights/mimir/AlertsByState.tsx
index 415423fb212..ae12e43dc23 100644
--- a/public/app/features/alerting/unified/insights/mimir/AlertsByState.tsx
+++ b/public/app/features/alerting/unified/insights/mimir/AlertsByState.tsx
@@ -2,7 +2,7 @@ import { PanelBuilders, SceneFlexItem, SceneQueryRunner } from '@grafana/scenes'
import { DataSourceRef, GraphDrawStyle, TooltipDisplayMode } from '@grafana/schema';
import { INSTANCE_ID, overrideToFixedColor, PANEL_STYLES } from '../../home/Insights';
-import { InsightsRatingModal } from '../RatingModal';
+import { InsightsMenuButton } from '../InsightsMenuButton';
export function getAlertsByStateScene(datasource: DataSourceRef, panelTitle: string) {
const expr = INSTANCE_ID
@@ -30,7 +30,7 @@ export function getAlertsByStateScene(datasource: DataSourceRef, panelTitle: str
.setCustomFieldConfig('drawStyle', GraphDrawStyle.Line)
.setOption('tooltip', { mode: TooltipDisplayMode.Multi })
.setOverrides((b) => b.matchFieldsWithName('active').overrideColor(overrideToFixedColor('active')))
- .setHeaderActions()
+ .setHeaderActions([new InsightsMenuButton({ panel: panelTitle })])
.build(),
});
}
diff --git a/public/app/features/alerting/unified/insights/mimir/InvalidConfig.tsx b/public/app/features/alerting/unified/insights/mimir/InvalidConfig.tsx
index dba5a5b7ae3..8c9a43227cf 100644
--- a/public/app/features/alerting/unified/insights/mimir/InvalidConfig.tsx
+++ b/public/app/features/alerting/unified/insights/mimir/InvalidConfig.tsx
@@ -2,7 +2,7 @@ import { PanelBuilders, SceneFlexItem, SceneQueryRunner } from '@grafana/scenes'
import { BigValueGraphMode, DataSourceRef } from '@grafana/schema';
import { INSTANCE_ID, PANEL_STYLES } from '../../home/Insights';
-import { InsightsRatingModal } from '../RatingModal';
+import { InsightsMenuButton } from '../InsightsMenuButton';
export function getInvalidConfigScene(datasource: DataSourceRef, panelTitle: string) {
const expr = INSTANCE_ID
@@ -29,7 +29,7 @@ export function getInvalidConfigScene(datasource: DataSourceRef, panelTitle: str
.setData(query)
.setUnit('bool_yes_no')
.setOption('graphMode', BigValueGraphMode.None)
- .setHeaderActions()
+ .setHeaderActions([new InsightsMenuButton({ panel: panelTitle })])
.build(),
});
}
diff --git a/public/app/features/alerting/unified/insights/mimir/Notifications.tsx b/public/app/features/alerting/unified/insights/mimir/Notifications.tsx
index ca7576f8e22..f21497c946e 100644
--- a/public/app/features/alerting/unified/insights/mimir/Notifications.tsx
+++ b/public/app/features/alerting/unified/insights/mimir/Notifications.tsx
@@ -2,7 +2,7 @@ import { PanelBuilders, SceneFlexItem, SceneQueryRunner } from '@grafana/scenes'
import { DataSourceRef, GraphDrawStyle, TooltipDisplayMode } from '@grafana/schema';
import { INSTANCE_ID, overrideToFixedColor, PANEL_STYLES } from '../../home/Insights';
-import { InsightsRatingModal } from '../RatingModal';
+import { InsightsMenuButton } from '../InsightsMenuButton';
export function getNotificationsScene(datasource: DataSourceRef, panelTitle: string) {
const exprA = INSTANCE_ID
@@ -18,13 +18,13 @@ export function getNotificationsScene(datasource: DataSourceRef, panelTitle: str
queries: [
{
refId: 'A',
- exprA,
+ expr: exprA,
range: true,
legendFormat: 'success',
},
{
refId: 'B',
- exprB,
+ expr: exprB,
range: true,
legendFormat: 'failed',
},
@@ -46,7 +46,7 @@ export function getNotificationsScene(datasource: DataSourceRef, panelTitle: str
.matchFieldsWithName('failed')
.overrideColor(overrideToFixedColor('failed'))
)
- .setHeaderActions()
+ .setHeaderActions([new InsightsMenuButton({ panel: panelTitle })])
.build(),
});
}
diff --git a/public/app/features/alerting/unified/insights/mimir/Silences.tsx b/public/app/features/alerting/unified/insights/mimir/Silences.tsx
index 01646a5cefe..8cbddfd0205 100644
--- a/public/app/features/alerting/unified/insights/mimir/Silences.tsx
+++ b/public/app/features/alerting/unified/insights/mimir/Silences.tsx
@@ -2,7 +2,7 @@ import { PanelBuilders, SceneFlexItem, SceneQueryRunner } from '@grafana/scenes'
import { DataSourceRef, GraphDrawStyle, TooltipDisplayMode } from '@grafana/schema';
import { INSTANCE_ID, PANEL_STYLES } from '../../home/Insights';
-import { InsightsRatingModal } from '../RatingModal';
+import { InsightsMenuButton } from '../InsightsMenuButton';
export function getSilencesScene(datasource: DataSourceRef, panelTitle: string) {
const expr = INSTANCE_ID
@@ -29,7 +29,7 @@ export function getSilencesScene(datasource: DataSourceRef, panelTitle: string)
.setData(query)
.setCustomFieldConfig('drawStyle', GraphDrawStyle.Line)
.setOption('tooltip', { mode: TooltipDisplayMode.Multi })
- .setHeaderActions()
+ .setHeaderActions([new InsightsMenuButton({ panel: panelTitle })])
.build(),
});
}
diff --git a/public/app/features/alerting/unified/insights/mimir/perGroup/RuleGroupEvaluationDurationIntervalRatioScene.tsx b/public/app/features/alerting/unified/insights/mimir/perGroup/RuleGroupEvaluationDurationIntervalRatioScene.tsx
index bfca1bbaada..50f4084ac7c 100644
--- a/public/app/features/alerting/unified/insights/mimir/perGroup/RuleGroupEvaluationDurationIntervalRatioScene.tsx
+++ b/public/app/features/alerting/unified/insights/mimir/perGroup/RuleGroupEvaluationDurationIntervalRatioScene.tsx
@@ -2,7 +2,7 @@ import { PanelBuilders, SceneFlexItem, SceneQueryRunner } from '@grafana/scenes'
import { DataSourceRef, GraphDrawStyle, ThresholdsMode, TooltipDisplayMode } from '@grafana/schema';
import { INSTANCE_ID, PANEL_STYLES } from '../../../home/Insights';
-import { InsightsRatingModal } from '../../RatingModal';
+import { InsightsMenuButton } from '../../InsightsMenuButton';
export function getRuleGroupEvaluationDurationIntervalRatioScene(datasource: DataSourceRef, panelTitle: string) {
const expr = INSTANCE_ID
@@ -48,7 +48,7 @@ export function getRuleGroupEvaluationDurationIntervalRatioScene(datasource: Dat
},
],
})
- .setHeaderActions()
+ .setHeaderActions([new InsightsMenuButton({ panel: panelTitle })])
.build(),
});
}
diff --git a/public/app/features/alerting/unified/insights/mimir/perGroup/RuleGroupEvaluationDurationScene.tsx b/public/app/features/alerting/unified/insights/mimir/perGroup/RuleGroupEvaluationDurationScene.tsx
index db28b864fba..12ff616336a 100644
--- a/public/app/features/alerting/unified/insights/mimir/perGroup/RuleGroupEvaluationDurationScene.tsx
+++ b/public/app/features/alerting/unified/insights/mimir/perGroup/RuleGroupEvaluationDurationScene.tsx
@@ -2,7 +2,7 @@ import { PanelBuilders, SceneFlexItem, SceneQueryRunner } from '@grafana/scenes'
import { DataSourceRef, GraphDrawStyle, TooltipDisplayMode } from '@grafana/schema';
import { INSTANCE_ID, PANEL_STYLES } from '../../../home/Insights';
-import { InsightsRatingModal } from '../../RatingModal';
+import { InsightsMenuButton } from '../../InsightsMenuButton';
export function getRuleGroupEvaluationDurationScene(datasource: DataSourceRef, panelTitle: string) {
const expr = INSTANCE_ID
@@ -37,7 +37,7 @@ export function getRuleGroupEvaluationDurationScene(datasource: DataSourceRef, p
fixedColor: 'blue',
})
)
- .setHeaderActions()
+ .setHeaderActions([new InsightsMenuButton({ panel: panelTitle })])
.build(),
});
}
diff --git a/public/app/features/alerting/unified/insights/mimir/perGroup/RuleGroupEvaluationsScene.tsx b/public/app/features/alerting/unified/insights/mimir/perGroup/RuleGroupEvaluationsScene.tsx
index 5c872356be6..169731864bb 100644
--- a/public/app/features/alerting/unified/insights/mimir/perGroup/RuleGroupEvaluationsScene.tsx
+++ b/public/app/features/alerting/unified/insights/mimir/perGroup/RuleGroupEvaluationsScene.tsx
@@ -2,7 +2,7 @@ import { PanelBuilders, SceneFlexItem, SceneQueryRunner } from '@grafana/scenes'
import { DataSourceRef, GraphDrawStyle, TooltipDisplayMode } from '@grafana/schema';
import { INSTANCE_ID, overrideToFixedColor, PANEL_STYLES } from '../../../home/Insights';
-import { InsightsRatingModal } from '../../RatingModal';
+import { InsightsMenuButton } from '../../InsightsMenuButton';
export function getRuleGroupEvaluationsScene(datasource: DataSourceRef, panelTitle: string) {
const exprA = INSTANCE_ID
@@ -18,13 +18,13 @@ export function getRuleGroupEvaluationsScene(datasource: DataSourceRef, panelTit
queries: [
{
refId: 'A',
- exprA,
+ expr: exprA,
range: true,
legendFormat: 'success',
},
{
refId: 'B',
- exprB,
+ expr: exprB,
range: true,
legendFormat: 'failed',
},
@@ -46,7 +46,7 @@ export function getRuleGroupEvaluationsScene(datasource: DataSourceRef, panelTit
.matchFieldsWithName('failed')
.overrideColor(overrideToFixedColor('failed'))
)
- .setHeaderActions()
+ .setHeaderActions([new InsightsMenuButton({ panel: panelTitle })])
.build(),
});
}
diff --git a/public/app/features/alerting/unified/insights/mimir/perGroup/RuleGroupIntervalScene.tsx b/public/app/features/alerting/unified/insights/mimir/perGroup/RuleGroupIntervalScene.tsx
index ced1d761532..f54fc582bc4 100644
--- a/public/app/features/alerting/unified/insights/mimir/perGroup/RuleGroupIntervalScene.tsx
+++ b/public/app/features/alerting/unified/insights/mimir/perGroup/RuleGroupIntervalScene.tsx
@@ -2,7 +2,7 @@ import { PanelBuilders, SceneFlexItem, SceneQueryRunner } from '@grafana/scenes'
import { BigValueGraphMode, DataSourceRef } from '@grafana/schema';
import { INSTANCE_ID, PANEL_STYLES } from '../../../home/Insights';
-import { InsightsRatingModal } from '../../RatingModal';
+import { InsightsMenuButton } from '../../InsightsMenuButton';
export function getRuleGroupIntervalScene(datasource: DataSourceRef, panelTitle: string) {
const expr = INSTANCE_ID
@@ -29,7 +29,7 @@ export function getRuleGroupIntervalScene(datasource: DataSourceRef, panelTitle:
.setData(query)
.setUnit('s')
.setOption('graphMode', BigValueGraphMode.Area)
- .setHeaderActions()
+ .setHeaderActions([new InsightsMenuButton({ panel: panelTitle })])
.build(),
});
}
diff --git a/public/app/features/alerting/unified/insights/mimir/perGroup/RulesPerGroupScene.tsx b/public/app/features/alerting/unified/insights/mimir/perGroup/RulesPerGroupScene.tsx
index 33c77d319db..c2c9ac1b44d 100644
--- a/public/app/features/alerting/unified/insights/mimir/perGroup/RulesPerGroupScene.tsx
+++ b/public/app/features/alerting/unified/insights/mimir/perGroup/RulesPerGroupScene.tsx
@@ -2,7 +2,7 @@ import { PanelBuilders, SceneFlexItem, SceneQueryRunner } from '@grafana/scenes'
import { BigValueGraphMode, DataSourceRef } from '@grafana/schema';
import { INSTANCE_ID, PANEL_STYLES } from '../../../home/Insights';
-import { InsightsRatingModal } from '../../RatingModal';
+import { InsightsMenuButton } from '../../InsightsMenuButton';
export function getRulesPerGroupScene(datasource: DataSourceRef, panelTitle: string) {
const expr = INSTANCE_ID
@@ -36,7 +36,7 @@ export function getRulesPerGroupScene(datasource: DataSourceRef, panelTitle: str
})
)
.setNoValue('0')
- .setHeaderActions()
+ .setHeaderActions([new InsightsMenuButton({ panel: panelTitle })])
.build(),
});
}
diff --git a/public/app/features/alerting/unified/insights/mimir/rules/EvalSuccessVsFailuresScene.tsx b/public/app/features/alerting/unified/insights/mimir/rules/EvalSuccessVsFailuresScene.tsx
index 28722367a73..2cda38b4acf 100644
--- a/public/app/features/alerting/unified/insights/mimir/rules/EvalSuccessVsFailuresScene.tsx
+++ b/public/app/features/alerting/unified/insights/mimir/rules/EvalSuccessVsFailuresScene.tsx
@@ -2,7 +2,7 @@ import { PanelBuilders, SceneFlexItem, SceneQueryRunner } from '@grafana/scenes'
import { DataSourceRef, GraphDrawStyle, TooltipDisplayMode } from '@grafana/schema';
import { INSTANCE_ID, overrideToFixedColor, PANEL_STYLES } from '../../../home/Insights';
-import { InsightsRatingModal } from '../../RatingModal';
+import { InsightsMenuButton } from '../../InsightsMenuButton';
export function getEvalSuccessVsFailuresScene(datasource: DataSourceRef, panelTitle: string) {
const exprA = INSTANCE_ID
@@ -18,13 +18,13 @@ export function getEvalSuccessVsFailuresScene(datasource: DataSourceRef, panelTi
queries: [
{
refId: 'A',
- exprA,
+ expr: exprA,
range: true,
legendFormat: 'success',
},
{
refId: 'B',
- exprB,
+ expr: exprB,
range: true,
legendFormat: 'failed',
},
@@ -40,7 +40,7 @@ export function getEvalSuccessVsFailuresScene(datasource: DataSourceRef, panelTi
.setCustomFieldConfig('drawStyle', GraphDrawStyle.Line)
.setOption('tooltip', { mode: TooltipDisplayMode.Multi })
.setOverrides((b) => b.matchFieldsWithName('failed').overrideColor(overrideToFixedColor('failed')))
- .setHeaderActions()
+ .setHeaderActions([new InsightsMenuButton({ panel: panelTitle })])
.build(),
});
}
diff --git a/public/app/features/alerting/unified/insights/mimir/rules/Firing.tsx b/public/app/features/alerting/unified/insights/mimir/rules/Firing.tsx
index 0d35c6d4ec3..2b3532924a0 100644
--- a/public/app/features/alerting/unified/insights/mimir/rules/Firing.tsx
+++ b/public/app/features/alerting/unified/insights/mimir/rules/Firing.tsx
@@ -3,7 +3,7 @@ import { PanelBuilders, SceneFlexItem, SceneQueryRunner } from '@grafana/scenes'
import { DataSourceRef } from '@grafana/schema';
import { PANEL_STYLES } from '../../../home/Insights';
-import { InsightsRatingModal } from '../../RatingModal';
+import { InsightsMenuButton } from '../../InsightsMenuButton';
export function getFiringCloudAlertsScene(datasource: DataSourceRef, panelTitle: string) {
const query = new SceneQueryRunner({
@@ -37,7 +37,7 @@ export function getFiringCloudAlertsScene(datasource: DataSourceRef, panelTitle:
],
})
.setNoValue('0')
- .setHeaderActions()
+ .setHeaderActions([new InsightsMenuButton({ panel: panelTitle })])
.build(),
});
}
diff --git a/public/app/features/alerting/unified/insights/mimir/rules/InstancesByState.tsx b/public/app/features/alerting/unified/insights/mimir/rules/InstancesByState.tsx
index b054a358c98..962cbf80cb7 100644
--- a/public/app/features/alerting/unified/insights/mimir/rules/InstancesByState.tsx
+++ b/public/app/features/alerting/unified/insights/mimir/rules/InstancesByState.tsx
@@ -2,7 +2,7 @@ import { PanelBuilders, SceneFlexItem, SceneQueryRunner } from '@grafana/scenes'
import { DataSourceRef, GraphDrawStyle, TooltipDisplayMode } from '@grafana/schema';
import { overrideToFixedColor, PANEL_STYLES } from '../../../home/Insights';
-import { InsightsRatingModal } from '../../RatingModal';
+import { InsightsMenuButton } from '../../InsightsMenuButton';
export function getInstancesByStateScene(datasource: DataSourceRef, panelTitle: string) {
const query = new SceneQueryRunner({
@@ -26,7 +26,7 @@ export function getInstancesByStateScene(datasource: DataSourceRef, panelTitle:
.setCustomFieldConfig('drawStyle', GraphDrawStyle.Line)
.setOption('tooltip', { mode: TooltipDisplayMode.Multi })
.setOverrides((b) => b.matchFieldsWithName('firing').overrideColor(overrideToFixedColor('firing')))
- .setHeaderActions()
+ .setHeaderActions([new InsightsMenuButton({ panel: panelTitle })])
.build(),
});
}
diff --git a/public/app/features/alerting/unified/insights/mimir/rules/InstancesPercentageByState.tsx b/public/app/features/alerting/unified/insights/mimir/rules/InstancesPercentageByState.tsx
index 91cfb75801a..05a709085c8 100644
--- a/public/app/features/alerting/unified/insights/mimir/rules/InstancesPercentageByState.tsx
+++ b/public/app/features/alerting/unified/insights/mimir/rules/InstancesPercentageByState.tsx
@@ -2,7 +2,7 @@ import { PanelBuilders, SceneFlexItem, SceneQueryRunner } from '@grafana/scenes'
import { DataSourceRef, GraphDrawStyle, TooltipDisplayMode } from '@grafana/schema';
import { overrideToFixedColor, PANEL_STYLES } from '../../../home/Insights';
-import { InsightsRatingModal } from '../../RatingModal';
+import { InsightsMenuButton } from '../../InsightsMenuButton';
export function getInstancesPercentageByStateScene(datasource: DataSourceRef, panelTitle: string) {
const query = new SceneQueryRunner({
@@ -29,7 +29,7 @@ export function getInstancesPercentageByStateScene(datasource: DataSourceRef, pa
.setMax(1)
.setOption('tooltip', { mode: TooltipDisplayMode.Multi })
.setOverrides((b) => b.matchFieldsWithName('firing').overrideColor(overrideToFixedColor('firing')))
- .setHeaderActions()
+ .setHeaderActions([new InsightsMenuButton({ panel: panelTitle })])
.build(),
});
}
diff --git a/public/app/features/alerting/unified/insights/mimir/rules/MissedIterationsScene.tsx b/public/app/features/alerting/unified/insights/mimir/rules/MissedIterationsScene.tsx
index 59721817c19..2b5495a3e22 100644
--- a/public/app/features/alerting/unified/insights/mimir/rules/MissedIterationsScene.tsx
+++ b/public/app/features/alerting/unified/insights/mimir/rules/MissedIterationsScene.tsx
@@ -2,7 +2,7 @@ import { PanelBuilders, SceneFlexItem, SceneQueryRunner } from '@grafana/scenes'
import { DataSourceRef, GraphDrawStyle, TooltipDisplayMode } from '@grafana/schema';
import { INSTANCE_ID, overrideToFixedColor, PANEL_STYLES } from '../../../home/Insights';
-import { InsightsRatingModal } from '../../RatingModal';
+import { InsightsMenuButton } from '../../InsightsMenuButton';
export function getMissedIterationsScene(datasource: DataSourceRef, panelTitle: string) {
const expr = INSTANCE_ID
@@ -31,7 +31,7 @@ export function getMissedIterationsScene(datasource: DataSourceRef, panelTitle:
.setOption('tooltip', { mode: TooltipDisplayMode.Multi })
.setOption('legend', { showLegend: false })
.setOverrides((b) => b.matchFieldsWithName('missed').overrideColor(overrideToFixedColor('missed')))
- .setHeaderActions()
+ .setHeaderActions([new InsightsMenuButton({ panel: panelTitle })])
.build(),
});
}
diff --git a/public/app/features/alerting/unified/insights/mimir/rules/MostFiredRules.tsx b/public/app/features/alerting/unified/insights/mimir/rules/MostFiredRules.tsx
index 339c7b03651..2af5919329d 100644
--- a/public/app/features/alerting/unified/insights/mimir/rules/MostFiredRules.tsx
+++ b/public/app/features/alerting/unified/insights/mimir/rules/MostFiredRules.tsx
@@ -2,7 +2,7 @@ import { PanelBuilders, SceneDataTransformer, SceneFlexItem, SceneQueryRunner }
import { DataSourceRef } from '@grafana/schema';
import { PANEL_STYLES } from '../../../home/Insights';
-import { InsightsRatingModal } from '../../RatingModal';
+import { InsightsMenuButton } from '../../InsightsMenuButton';
export function getMostFiredRulesScene(datasource: DataSourceRef, panelTitle: string) {
const query = new SceneQueryRunner({
@@ -43,7 +43,7 @@ export function getMostFiredRulesScene(datasource: DataSourceRef, panelTitle: st
.setTitle(panelTitle)
.setDescription('The alert rules that have fired the most')
.setData(transformation)
- .setHeaderActions()
+ .setHeaderActions([new InsightsMenuButton({ panel: panelTitle })])
.build(),
});
}
diff --git a/public/app/features/alerting/unified/insights/mimir/rules/Pending.tsx b/public/app/features/alerting/unified/insights/mimir/rules/Pending.tsx
index 7667300015a..69501ca4bbf 100644
--- a/public/app/features/alerting/unified/insights/mimir/rules/Pending.tsx
+++ b/public/app/features/alerting/unified/insights/mimir/rules/Pending.tsx
@@ -3,7 +3,7 @@ import { PanelBuilders, SceneFlexItem, SceneQueryRunner } from '@grafana/scenes'
import { DataSourceRef } from '@grafana/schema';
import { PANEL_STYLES } from '../../../home/Insights';
-import { InsightsRatingModal } from '../../RatingModal';
+import { InsightsMenuButton } from '../../InsightsMenuButton';
export function getPendingCloudAlertsScene(datasource: DataSourceRef, panelTitle: string) {
const query = new SceneQueryRunner({
@@ -37,7 +37,7 @@ export function getPendingCloudAlertsScene(datasource: DataSourceRef, panelTitle
],
})
.setNoValue('0')
- .setHeaderActions()
+ .setHeaderActions([new InsightsMenuButton({ panel: panelTitle })])
.build(),
});
}