diff --git a/public/app/percona/integrated-alerting/components/Alerts/Alerts.tsx b/public/app/percona/integrated-alerting/components/Alerts/Alerts.tsx index 8a1bd2ecd8b1b..3762337395dee 100644 --- a/public/app/percona/integrated-alerting/components/Alerts/Alerts.tsx +++ b/public/app/percona/integrated-alerting/components/Alerts/Alerts.tsx @@ -6,7 +6,7 @@ import { Cell, Column, Row } from 'react-table'; import { OrgRole } from '@grafana/data'; import { config } from '@grafana/runtime'; -import { Icon, LinkButton, useStyles2 } from '@grafana/ui'; +import { LinkButton, useStyles2 } from '@grafana/ui'; import { Page } from 'app/core/components/Page/Page'; import { useNavModel } from 'app/core/hooks/useNavModel'; import { alertmanagerApi } from 'app/features/alerting/unified/api/alertmanagerApi'; @@ -26,6 +26,7 @@ import { AlertDetails } from './AlertDetails/AlertDetails'; import { ACTIONS_COLUMN, DATA_INTERVAL, SILENCES_URL } from './Alerts.constants'; import { Messages as AlertMessages } from './Alerts.messages'; import { getStyles } from './Alerts.styles'; +import { AlertsEmptyState } from './AlertsEmptyState'; const { table: { columns }, @@ -170,11 +171,7 @@ export const Alerts: FC = () => { columns={columns} pendingRequest={amAlertsIsLoading} autoResetExpanded={false} - emptyMessage={ -

- No alerts detected -

- } + emptyMessage={} getCellProps={getCellProps} renderExpandedRow={renderSelectedSubRow} /> diff --git a/public/app/percona/integrated-alerting/components/Alerts/AlertsEmptyState.messages.ts b/public/app/percona/integrated-alerting/components/Alerts/AlertsEmptyState.messages.ts new file mode 100644 index 0000000000000..671a0ac54be61 --- /dev/null +++ b/public/app/percona/integrated-alerting/components/Alerts/AlertsEmptyState.messages.ts @@ -0,0 +1,9 @@ +export const Messages = { + heading: 'No alerts detected', + templateLink: 'Alert rule templates', + alertRulesLink: 'Alert rules', + firstParagraph: + 'custom made by our database experts, for a faster start, and configure how you want to receive them at', + secondParagraph: 'For more information please visit our', + documentationLink: 'Percona Alerting documentation page', +}; diff --git a/public/app/percona/integrated-alerting/components/Alerts/AlertsEmptyState.styles.ts b/public/app/percona/integrated-alerting/components/Alerts/AlertsEmptyState.styles.ts new file mode 100644 index 0000000000000..dd2e8f1818304 --- /dev/null +++ b/public/app/percona/integrated-alerting/components/Alerts/AlertsEmptyState.styles.ts @@ -0,0 +1,20 @@ +import { css } from '@emotion/css'; + +import { GrafanaTheme2 } from '@grafana/data'; + +export const getStyles = (theme: GrafanaTheme2) => ({ + container: css({ + textAlign: 'center', + maxWidth: '600px', + margin: '0 auto', + }), + heading: css({ + marginBottom: theme.spacing(2), + }), + paragraph: css({ + marginTop: theme.spacing(2), + fontSize: theme.typography.body.fontSize, + lineHeight: theme.typography.body.lineHeight, + color: theme.colors.text.secondary, + }), +}); diff --git a/public/app/percona/integrated-alerting/components/Alerts/AlertsEmptyState.tsx b/public/app/percona/integrated-alerting/components/Alerts/AlertsEmptyState.tsx new file mode 100644 index 0000000000000..3839bc1bea4e2 --- /dev/null +++ b/public/app/percona/integrated-alerting/components/Alerts/AlertsEmptyState.tsx @@ -0,0 +1,36 @@ +import { FC } from 'react'; + +import { Icon, TextLink, useStyles2 } from '@grafana/ui'; + +import { Messages } from './AlertsEmptyState.messages'; +import { getStyles } from './AlertsEmptyState.styles'; + +export const AlertsEmptyState: FC = () => { + const styles = useStyles2(getStyles); + + return ( +
+

+ {Messages.heading} +

+

+ Use{' '} + + {Messages.templateLink},{' '} + {' '} + {Messages.firstParagraph}{' '} + + {Messages.alertRulesLink} + + . +

+

+ {Messages.secondParagraph}{' '} + + {Messages.documentationLink} + + . +

+
+ ); +};