render()

in public/pages/CreateMonitor/containers/CreateMonitor/CreateMonitor.js [256:340]


  render() {
    const { initialValues, plugins } = this.state;
    const { edit, httpClient, monitorToEdit, notifications, isDarkMode } = this.props;

    return (
      <div style={{ padding: '25px 50px' }}>
        <Formik initialValues={initialValues} onSubmit={this.onSubmit} validateOnChange={false}>
          {({ values, errors, handleSubmit, isSubmitting, isValid, touched }) => (
            <Fragment>
              <EuiTitle size="l">
                <h1>{edit ? 'Edit' : 'Create'} monitor</h1>
              </EuiTitle>
              <EuiSpacer />

              <MonitorDetails
                values={values}
                errors={errors}
                httpClient={httpClient}
                monitorToEdit={monitorToEdit}
                plugins={plugins}
                isAd={values.searchType === SEARCH_TYPE.AD}
                detectorId={this.props.detectorId}
              />
              <EuiSpacer />

              {values.searchType !== SEARCH_TYPE.AD && (
                <div>
                  <DefineMonitor
                    values={values}
                    errors={errors}
                    touched={touched}
                    httpClient={httpClient}
                    detectorId={this.props.detectorId}
                    notifications={notifications}
                    isDarkMode={isDarkMode}
                  />
                  <EuiSpacer />
                </div>
              )}

              <FieldArray name={'triggerDefinitions'} validateOnChange={true}>
                {(triggerArrayHelpers) => (
                  <ConfigureTriggers
                    edit={edit}
                    triggerArrayHelpers={triggerArrayHelpers}
                    monitor={formikToMonitor(values)}
                    monitorValues={values}
                    setFlyout={this.props.setFlyout}
                    triggers={_.get(formikToMonitor(values), 'triggers', [])}
                    triggerValues={values}
                    isDarkMode={this.props.isDarkMode}
                    httpClient={httpClient}
                    notifications={notifications}
                  />
                )}
              </FieldArray>

              <EuiSpacer />
              <EuiFlexGroup alignItems="center" justifyContent="flexEnd">
                <EuiFlexItem grow={false}>
                  <EuiButtonEmpty onClick={this.onCancel}>Cancel</EuiButtonEmpty>
                </EuiFlexItem>
                <EuiFlexItem grow={false}>
                  <EuiButton fill onClick={handleSubmit} isLoading={isSubmitting}>
                    {edit ? 'Update' : 'Create'}
                  </EuiButton>
                </EuiFlexItem>
              </EuiFlexGroup>
              <SubmitErrorHandler
                errors={errors}
                isSubmitting={isSubmitting}
                isValid={isValid}
                onSubmitError={() =>
                  notifications.toasts.addDanger({
                    title: `Failed to ${edit ? 'update' : 'create'} the monitor`,
                    text: 'Fix all highlighted error(s) before continuing.',
                  })
                }
              />
            </Fragment>
          )}
        </Formik>
      </div>
    );
  }