diff --git a/frappe/desk/page/form_builder/form_builder.js b/frappe/desk/page/form_builder/form_builder.js index b668c93b39..b2010d4efa 100644 --- a/frappe/desk/page/form_builder/form_builder.js +++ b/frappe/desk/page/form_builder/form_builder.js @@ -43,5 +43,121 @@ function load_form_builder(wrapper) { customize: is_customize_form, }); }); + } else { + let d = new frappe.ui.Dialog({ + title: __("Edit DocType"), + fields: [ + { + label: __("Select DocType"), + fieldname: "doctype", + fieldtype: "Link", + options: "DocType", + only_select: 1, + }, + { + label: __("Customize"), + fieldname: "customize", + fieldtype: "Check", + }, + ], + primary_action_label: __("Edit"), + primary_action({ doctype, customize }) { + frappe.set_route("form-builder", doctype, customize ? "customize" : null); + }, + secondary_action_label: __("Create New DocType"), + secondary_action() { + d.hide(); + let new_d = new frappe.ui.Dialog({ + title: __("Create New DocType"), + fields: [ + { + label: __("DocType Name"), + fieldname: "doctype_name", + fieldtype: "Data", + reqd: 1, + }, + { fieldtype: "Column Break" }, + { + label: __("Module"), + fieldname: "module", + fieldtype: "Link", + options: "Module Def", + reqd: 1, + }, + { fieldtype: "Section Break" }, + { + label: __("Is Submittable"), + fieldname: "is_submittable", + fieldtype: "Check", + description: __( + "Once submitted, submittable documents cannot be changed. They can only be Cancelled and Amended." + ), + depends_on: "eval:!doc.istable && !doc.issingle", + }, + { + label: __("Is Child Table"), + fieldname: "istable", + fieldtype: "Check", + description: __("Child Tables are shown as a Grid in other DocTypes"), + depends_on: "eval:!doc.is_submittable && !doc.issingle", + }, + { + label: __("Editable Grid"), + fieldname: "editable_grid", + fieldtype: "Check", + depends_on: "istable", + default: 1, + }, + { + label: __("Is Single"), + fieldname: "issingle", + fieldtype: "Check", + description: __( + "Single Types have only one record no tables associated. Values are stored in tabSingles" + ), + depends_on: "eval:!doc.istable && !doc.is_submittable", + }, + { + label: __("Custom?"), + fieldname: "custom", + fieldtype: "Check", + }, + ], + primary_action_label: __("Create & Continue"), + primary_action(values) { + if (!values.istable) values.editable_grid = 0; + frappe.db + .insert({ + doctype: "DocType", + name: values.doctype_name, + module: values.module, + istable: values.istable, + editable_grid: values.editable_grid, + issingle: values.issingle, + custom: values.custom, + is_submittable: values.is_submittable, + fields: [ + { + label: "Title", + fieldname: "title", + fieldtype: "Data", + }, + ], + }) + .then((doc) => { + frappe.set_route("form-builder", doc.name); + }); + }, + secondary_action_label: __("Back"), + secondary_action() { + new_d.hide(); + d.show(); + }, + }); + new_d.show(); + }, + }); + + d.show(); } }