summaryrefslogtreecommitdiff
path: root/frontend/src/components/modals/custom-components
diff options
context:
space:
mode:
authorFabian Mastenbroek <mail.fabianm@gmail.com>2020-11-10 22:02:48 +0100
committerFabian Mastenbroek <mail.fabianm@gmail.com>2020-11-10 22:02:48 +0100
commitd0e07a0fc06a83ed45dd7c491e1475e340aa564e (patch)
tree0f70522dc6869afb0f467ff5375bc75e27ea8f44 /frontend/src/components/modals/custom-components
parent2cf9276550b49bc102fb84a6debbbbac694d3e92 (diff)
Perform form validation in modals
This change updates the modal components to perform validation before submitting the request.
Diffstat (limited to 'frontend/src/components/modals/custom-components')
-rw-r--r--frontend/src/components/modals/custom-components/NewPortfolioModalComponent.js19
-rw-r--r--frontend/src/components/modals/custom-components/NewScenarioModalComponent.js6
-rw-r--r--frontend/src/components/modals/custom-components/NewTopologyModalComponent.js8
3 files changed, 27 insertions, 6 deletions
diff --git a/frontend/src/components/modals/custom-components/NewPortfolioModalComponent.js b/frontend/src/components/modals/custom-components/NewPortfolioModalComponent.js
index 67646e2c..3c6b8724 100644
--- a/frontend/src/components/modals/custom-components/NewPortfolioModalComponent.js
+++ b/frontend/src/components/modals/custom-components/NewPortfolioModalComponent.js
@@ -5,15 +5,23 @@ import Modal from '../Modal'
import { AVAILABLE_METRICS, METRIC_NAMES } from '../../../util/available-metrics'
const NewPortfolioModalComponent = ({ show, callback }) => {
+ const form = useRef(null)
const textInput = useRef(null)
const repeatsInput = useRef(null)
const metricCheckboxes = useRef({})
- const onSubmit = () =>
- callback(textInput.current.value, {
- enabledMetrics: AVAILABLE_METRICS.filter((metric) => metricCheckboxes.current[metric].checked),
- repeatsPerScenario: parseInt(repeatsInput.current.value),
- })
+ const onSubmit = () => {
+ if (form.current.reportValidity()) {
+ callback(textInput.current.value, {
+ enabledMetrics: AVAILABLE_METRICS.filter((metric) => metricCheckboxes.current[metric].checked),
+ repeatsPerScenario: parseInt(repeatsInput.current.value),
+ })
+
+ return true
+ } else {
+ return false
+ }
+ }
const onCancel = () => callback(undefined)
return (
@@ -23,6 +31,7 @@ const NewPortfolioModalComponent = ({ show, callback }) => {
e.preventDefault()
this.onSubmit()
}}
+ innerRef={form}
>
<FormGroup>
<Label for="name">Name</Label>
diff --git a/frontend/src/components/modals/custom-components/NewScenarioModalComponent.js b/frontend/src/components/modals/custom-components/NewScenarioModalComponent.js
index 631082a2..01a5719c 100644
--- a/frontend/src/components/modals/custom-components/NewScenarioModalComponent.js
+++ b/frontend/src/components/modals/custom-components/NewScenarioModalComponent.js
@@ -13,6 +13,7 @@ const NewScenarioModalComponent = ({
topologies,
schedulers,
}) => {
+ const form = useRef(null)
const textInput = useRef(null)
const traceSelect = useRef(null)
const traceLoadInput = useRef(null)
@@ -22,6 +23,9 @@ const NewScenarioModalComponent = ({
const schedulerSelect = useRef(null)
const onSubmit = () => {
+ if (!form.current.reportValidity()) {
+ return false
+ }
callback(
textInput.current.value,
currentPortfolioId,
@@ -38,6 +42,7 @@ const NewScenarioModalComponent = ({
schedulerName: schedulerSelect.current.value,
}
)
+ return true
}
const onCancel = () => {
callback(undefined)
@@ -50,6 +55,7 @@ const NewScenarioModalComponent = ({
e.preventDefault()
onSubmit()
}}
+ innerRef={form}
>
<FormGroup>
<Label for="name">Name</Label>
diff --git a/frontend/src/components/modals/custom-components/NewTopologyModalComponent.js b/frontend/src/components/modals/custom-components/NewTopologyModalComponent.js
index b20ec13b..9fee8831 100644
--- a/frontend/src/components/modals/custom-components/NewTopologyModalComponent.js
+++ b/frontend/src/components/modals/custom-components/NewTopologyModalComponent.js
@@ -5,6 +5,7 @@ import Shapes from '../../../shapes'
import Modal from '../Modal'
const NewTopologyModalComponent = ({ show, onCreateTopology, onDuplicateTopology, onCancel, topologies }) => {
+ const form = useRef(null)
const textInput = useRef(null)
const originTopology = useRef(null)
@@ -17,11 +18,15 @@ const NewTopologyModalComponent = ({ show, onCreateTopology, onDuplicateTopology
}
const onSubmit = () => {
- if (originTopology.current.selectedIndex === 0) {
+ if (!form.current.reportValidity()) {
+ return false
+ } else if (originTopology.current.selectedIndex === 0) {
onCreate()
} else {
onDuplicate()
}
+
+ return true
}
return (
@@ -31,6 +36,7 @@ const NewTopologyModalComponent = ({ show, onCreateTopology, onDuplicateTopology
e.preventDefault()
onSubmit()
}}
+ innerRef={form}
>
<FormGroup>
<Label for="name">Name</Label>