Skip to content

Commit c8c9f1c

Browse files
[FEATURE] Detector must have at least one alert set opensearch-project#288 (opensearch-project#289)
* [FEATURE] Detector must have at least one alert set opensearch-project#288 Signed-off-by: Jovan Cvetkovic <[email protected]> * [FEATURE] Detector must have at least one alert set opensearch-project#288 Signed-off-by: Jovan Cvetkovic <[email protected]> Signed-off-by: Jovan Cvetkovic <[email protected]>
1 parent 5508caa commit c8c9f1c

File tree

2 files changed

+23
-7
lines changed

2 files changed

+23
-7
lines changed

public/pages/CreateDetector/components/ConfigureAlerts/containers/ConfigureAlerts.tsx

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import {
2727
parseNotificationChannelsToOptions,
2828
} from '../utils/helpers';
2929
import { NotificationsService } from '../../../../../services';
30+
import { validateName } from '../../../../../utils/validation';
3031

3132
interface ConfigureAlertsProps extends RouteComponentProps {
3233
detector: Detector;
@@ -81,8 +82,9 @@ export default class ConfigureAlerts extends Component<ConfigureAlertsProps, Con
8182

8283
onAlertTriggerChanged = (newDetector: Detector): void => {
8384
const isTriggerDataValid = newDetector.triggers.every((trigger) => {
84-
return !!trigger.name && trigger.severity;
85+
return !!trigger.name && validateName(trigger.name) && trigger.severity;
8586
});
87+
8688
this.props.changeDetector(newDetector);
8789
this.props.updateDataValidState(DetectorCreationStep.CONFIGURE_ALERTS, isTriggerDataValid);
8890
};
@@ -130,9 +132,13 @@ export default class ConfigureAlerts extends Component<ConfigureAlertsProps, Con
130132
paddingSize={'none'}
131133
initialIsOpen={true}
132134
extraAction={
133-
<EuiButton color="danger" onClick={() => this.onDelete(index)}>
134-
Remove alert trigger
135-
</EuiButton>
135+
triggers.length > 1 ? (
136+
<EuiButton color="danger" onClick={() => this.onDelete(index)}>
137+
Remove alert trigger
138+
</EuiButton>
139+
) : (
140+
<></>
141+
)
136142
}
137143
>
138144
<EuiHorizontalRule margin={'xs'} />

public/pages/Detectors/components/UpdateAlertConditions/UpdateAlertConditions.tsx

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import {
2323
getPlugins,
2424
successNotificationToast,
2525
} from '../../../../utils/helpers';
26+
import { DetectorCreationStep } from '../../../CreateDetector/models/types';
2627

2728
export interface UpdateAlertConditionsProps
2829
extends RouteComponentProps<any, any, { detectorHit: DetectorHit }> {
@@ -39,6 +40,7 @@ export interface UpdateAlertConditionsState {
3940
rulesOptions: RuleOptions[];
4041
submitting: boolean;
4142
plugins: string[];
43+
isTriggerNameValid: boolean;
4244
}
4345

4446
export default class UpdateAlertConditions extends Component<
@@ -53,6 +55,7 @@ export default class UpdateAlertConditions extends Component<
5355
rulesOptions: [],
5456
submitting: false,
5557
plugins: [],
58+
isTriggerNameValid: true,
5659
};
5760
}
5861

@@ -189,8 +192,15 @@ export default class UpdateAlertConditions extends Component<
189192
});
190193
};
191194

195+
updateDataValidState = (step: DetectorCreationStep, isValid: boolean): void => {
196+
this.setState({
197+
isTriggerNameValid: isValid,
198+
});
199+
};
200+
192201
render() {
193-
const { detector, rulesOptions, submitting } = this.state;
202+
const { detector, rulesOptions, submitting, isTriggerNameValid } = this.state;
203+
const isSaveDisabled = submitting || !isTriggerNameValid;
194204
return (
195205
<div>
196206
<ConfigureAlerts
@@ -199,7 +209,7 @@ export default class UpdateAlertConditions extends Component<
199209
detector={detector}
200210
rulesOptions={rulesOptions}
201211
changeDetector={this.changeDetector}
202-
updateDataValidState={() => {}}
212+
updateDataValidState={this.updateDataValidState}
203213
hasNotificationPlugin={this.state.plugins.includes(OS_NOTIFICATION_PLUGIN)}
204214
/>
205215

@@ -211,7 +221,7 @@ export default class UpdateAlertConditions extends Component<
211221
</EuiFlexItem>
212222
<EuiFlexItem grow={false}>
213223
<EuiButton
214-
disabled={submitting}
224+
disabled={isSaveDisabled}
215225
fill={true}
216226
isLoading={submitting}
217227
onClick={this.onSave}

0 commit comments

Comments
 (0)