diff --git a/superset-frontend/src/views/CRUD/alert/AlertReportModal.tsx b/superset-frontend/src/views/CRUD/alert/AlertReportModal.tsx index b416bdaf5fd..1b8a802fe74 100644 --- a/superset-frontend/src/views/CRUD/alert/AlertReportModal.tsx +++ b/superset-frontend/src/views/CRUD/alert/AlertReportModal.tsx @@ -257,7 +257,6 @@ const StyledSwitchContainer = styled.div` export const StyledInputContainer = styled.div` flex: 1; - margin: ${({ theme }) => theme.gridUnit * 2}px; margin-top: 0; .helper { @@ -361,6 +360,11 @@ const timezoneHeaderStyle = (theme: SupersetTheme) => css` margin: ${theme.gridUnit * 3}px 0; `; +const inputSpacer = (theme: SupersetTheme) => + css` + margin-right: ${theme.gridUnit * 3}px; + `; + type NotificationAddStatus = 'active' | 'disabled' | 'hidden'; interface NotificationMethodAddProps { @@ -368,6 +372,46 @@ interface NotificationMethodAddProps { onClick: () => void; } +const TRANSLATIONS = { + ADD_NOTIFICATION_METHOD_TEXT: t('Add notification method'), + ADD_DELIVERY_METHOD_TEXT: t('Add delivery method'), + SAVE_TEXT: t('Save'), + ADD_TEXT: t('Add'), + EDIT_REPORT_TEXT: t('Edit Report'), + EDIT_ALERT_TEXT: t('Edit Alert'), + ADD_REPORT_TEXT: t('Add Report'), + ADD_ALERT_TEXT: t('Add Alert'), + REPORT_NAME_TEXT: t('Report name'), + ALERT_NAME_TEXT: t('Alert name'), + OWNERS_TEXT: t('Owners'), + DESCRIPTION_TEXT: t('Description'), + ACTIVE_TEXT: t('Active'), + ALERT_CONDITION_TEXT: t('Alert condition'), + DATABASE_TEXT: t('Database'), + SQL_QUERY_TEXT: t('SQL Query'), + TRIGGER_ALERT_IF_TEXT: t('Trigger Alert If...'), + CONDITION_TEXT: t('Condition'), + VALUE_TEXT: t('Value'), + VALUE_TOOLTIP: t('Threshold value should be double precision number'), + REPORT_SCHEDULE_TEXT: t('Report schedule'), + ALERT_CONDITION_SCHEDULE_TEXT: t('Alert condition schedule'), + TIMEZONE_TEXT: t('Timezone'), + SCHEDULE_SETTINGS_TEXT: t('Schedule settings'), + LOG_RETENTION_TEXT: t('Log retention'), + WORKING_TIMEOUT_TEXT: t('Working timeout'), + TIME_IN_SECONDS_TEXT: t('Time in seconds'), + SECONDS_TEXT: t('seconds'), + GRACE_PERIOD_TEXT: t('Grace period'), + MESSAGE_CONTENT_TEXT: t('Message content'), + DASHBOARD_TEXT: t('Dashboard'), + CHART_TEXT: t('Chart'), + SEND_AS_PNG_TEXT: t('Send as PNG'), + SEND_AS_CSV_TEXT: t('Send as CSV'), + SEND_AS_TEXT: t('Send as text'), + IGNORE_CACHE_TEXT: t('Ignore cache when generating screenshot'), + NOTIFICATION_METHOD_TEXT: t('Notification method'), +}; + const NotificationMethodAdd: FunctionComponent = ({ status = 'active', onClick, @@ -386,8 +430,8 @@ const NotificationMethodAdd: FunctionComponent = ({ {' '} {status === 'active' - ? t('Add notification method') - : t('Add delivery method')} + ? TRANSLATIONS.ADD_NOTIFICATION_METHOD_TEXT + : TRANSLATIONS.ADD_DELIVERY_METHOD_TEXT} ); }; @@ -1051,7 +1095,9 @@ const AlertReportModal: FunctionComponent = ({ disablePrimaryButton={disableSave} onHandledPrimaryAction={onSave} onHide={hide} - primaryButtonName={isEditMode ? t('Save') : t('Add')} + primaryButtonName={ + isEditMode ? TRANSLATIONS.SAVE_TEXT : TRANSLATIONS.ADD_TEXT + } show={show} width="100%" maxWidth="1450px" @@ -1063,12 +1109,12 @@ const AlertReportModal: FunctionComponent = ({ )} {isEditMode && isReport - ? t('Edit Report') + ? TRANSLATIONS.EDIT_REPORT_TEXT : isEditMode - ? t('Edit Alert') + ? TRANSLATIONS.EDIT_ALERT_TEXT : isReport - ? t('Add Report') - : t('Add Alert')} + ? TRANSLATIONS.ADD_REPORT_TEXT + : TRANSLATIONS.ADD_ALERT_TEXT} } > @@ -1076,7 +1122,9 @@ const AlertReportModal: FunctionComponent = ({
- {isReport ? t('Report name') : t('Alert name')} + {isReport + ? TRANSLATIONS.REPORT_NAME_TEXT + : TRANSLATIONS.ALERT_NAME_TEXT} *
@@ -1084,19 +1132,24 @@ const AlertReportModal: FunctionComponent = ({ type="text" name="name" value={currentAlert ? currentAlert.name : ''} - placeholder={isReport ? t('Report name') : t('Alert name')} + placeholder={ + isReport + ? TRANSLATIONS.REPORT_NAME_TEXT + : TRANSLATIONS.ALERT_NAME_TEXT + } onChange={onTextChange} + css={inputSpacer} />
- {t('Owners')} + {TRANSLATIONS.OWNERS_TEXT} *
= ({ } options={loadOwnerOptions} onChange={onOwnersChange} + css={inputSpacer} />
-
{t('Description')}
+
{TRANSLATIONS.DESCRIPTION_TEXT}
@@ -1128,23 +1183,23 @@ const AlertReportModal: FunctionComponent = ({ onChange={onActiveSwitch} checked={currentAlert ? currentAlert.active : true} /> -
Active
+
{TRANSLATIONS.ACTIVE_TEXT}
{!isReport && (
-

{t('Alert condition')}

+

{TRANSLATIONS.ALERT_CONDITION_TEXT}

- {t('Database')} + {TRANSLATIONS.DATABASE_TEXT} *
= ({
- {t('SQL Query')} + {TRANSLATIONS.SQL_QUERY_TEXT} *
= ({
-
- {t('Trigger Alert If...')} +
+ {TRANSLATIONS.TRIGGER_ALERT_IF_TEXT} *
= ({
- {t('Working timeout')} + {TRANSLATIONS.WORKING_TIMEOUT_TEXT} *
@@ -1282,41 +1336,47 @@ const AlertReportModal: FunctionComponent = ({ min="1" name="working_timeout" value={currentAlert?.working_timeout || ''} - placeholder={t('Time in seconds')} + placeholder={TRANSLATIONS.TIME_IN_SECONDS_TEXT} onChange={onTimeoutVerifyChange} /> - seconds + {TRANSLATIONS.SECONDS_TEXT}
{!isReport && ( -
{t('Grace period')}
+
+ {TRANSLATIONS.GRACE_PERIOD_TEXT} +
- seconds + + {TRANSLATIONS.SECONDS_TEXT} +
)}
-

{t('Message content')}

+

{TRANSLATIONS.MESSAGE_CONTENT_TEXT}

*
- {t('Dashboard')} - {t('Chart')} + + {TRANSLATIONS.DASHBOARD_TEXT} + + {TRANSLATIONS.CHART_TEXT} {contentType === 'chart' ? ( = ({ /> ) : ( = ({ onChange={onFormatChange} value={reportFormat} > - {t('Send as PNG')} - {t('Send as CSV')} + + {TRANSLATIONS.SEND_AS_PNG_TEXT} + + + {TRANSLATIONS.SEND_AS_CSV_TEXT} + {TEXT_BASED_VISUALIZATION_TYPES.includes(chartVizType) && ( - {t('Send as text')} + {TRANSLATIONS.SEND_AS_TEXT} )} @@ -1372,12 +1436,12 @@ const AlertReportModal: FunctionComponent = ({ checked={forceScreenshot} onChange={onForceScreenshotChange} > - Ignore cache when generating screenshot + {TRANSLATIONS.IGNORE_CACHE_TEXT}
)} -

{t('Notification method')}

+

{TRANSLATIONS.NOTIFICATION_METHOD_TEXT}

*
{notificationSettings.map((notificationSetting, i) => ( @@ -1387,6 +1451,11 @@ const AlertReportModal: FunctionComponent = ({ key={`NotificationMethod-${i}`} onUpdate={updateNotificationSetting} onRemove={removeNotificationSetting} + css={css` + .input-container { + margin-left: 0; + } + `} /> ))}