in source/idea/idea-cluster-manager/webapp/src/pages/cluster-admin/email-templates.tsx [119:240]
buildCreateEmailTemplateForm() {
let values = undefined;
const isUpdate = this.state.createModalType === "update";
if (isUpdate) {
const selected = this.getSelected();
if (selected != null) {
values = {
...selected,
};
}
}
return (
this.state.showCreateForm && (
<IdeaForm
ref={this.createForm}
name="create-update-email-template"
modal={true}
modalSize="medium"
title={isUpdate ? "Update Email Template" : "Create new Email Template"}
values={values}
onSubmit={() => {
if (!this.getCreateForm().validate()) {
return;
}
const values = this.getCreateForm().getValues();
let createOrUpdate;
if (isUpdate) {
createOrUpdate = (request: any) => this.emailTemplates().updateEmailTemplate(request);
values.name = this.getSelected()?.name;
} else {
createOrUpdate = (request: any) => this.emailTemplates().createEmailTemplate(request);
}
createOrUpdate({
template: values,
})
.then(() => {
this.setState(
{
emailTemplateSelected: false,
},
() => {
this.hideCreateForm();
this.getListing().fetchRecords();
}
);
})
.catch((error) => {
this.getCreateForm().setError(error.errorCode, error.message);
});
}}
onCancel={() => {
this.hideCreateForm();
}}
params={[
{
name: "title",
title: "Title",
description: "Enter a user friendly email template title",
data_type: "str",
param_type: "text",
validate: {
required: true,
},
},
{
name: "name",
title: "Template Name",
description: "Enter name for the email template",
help_text: "Name can only use lowercase alphabets, numbers, hyphens (-), underscores, and periods. Must be between 3 and 32 characters long.",
data_type: "str",
param_type: "text",
readonly: isUpdate,
validate: {
required: true,
regex: "^([a-z0-9-._]+){3,32}$",
message: "Only use lowercase alphabets, numbers, hyphens (-), underscores, and periods. Must be between 3 and 32 characters long.",
},
},
{
name: "template_type",
title: "Type",
description: "Select a template type",
data_type: "str",
param_type: "select",
choices: [
{
title: "Jinja2",
value: "jinja2",
},
],
default: "jinja2",
validate: {
required: true,
},
},
{
name: "subject",
title: "Email Subject",
description: "Enter the email subject",
data_type: "str",
param_type: "text",
validate: {
required: true,
},
},
{
name: "body",
title: "Email Body",
description: "Enter email template body",
data_type: "str",
param_type: "text",
multiline: true,
validate: {
required: true,
},
},
]}
/>
)
);
}