From 63fa87d2b4e71e375d61d3ba0d81ac6054d25b95 Mon Sep 17 00:00:00 2001 From: Shariq Ansari Date: Mon, 10 Jul 2023 11:14:32 +0530 Subject: [PATCH] fix: update fields before save set default name to fields if not set --- frappe/core/doctype/doctype/doctype.js | 7 ++++++ frappe/public/js/form_builder/store.js | 31 ++++++++++++++++---------- 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/frappe/core/doctype/doctype/doctype.js b/frappe/core/doctype/doctype/doctype.js index 4f807b9f1c..7ebbd2b5b9 100644 --- a/frappe/core/doctype/doctype/doctype.js +++ b/frappe/core/doctype/doctype/doctype.js @@ -2,6 +2,13 @@ // MIT License. See license.txt frappe.ui.form.on("DocType", { + before_save: function (frm) { + let form_builder = frappe.form_builder; + if (form_builder?.store) { + form_builder.store.update_fields(); + frm.refresh_fields(); + } + }, refresh: function (frm) { frm.set_query("role", "permissions", function (doc) { if (doc.custom && frappe.session.user != "Administrator") { diff --git a/frappe/public/js/form_builder/store.js b/frappe/public/js/form_builder/store.js index cf2d9b33ce..91dee966f9 100644 --- a/frappe/public/js/form_builder/store.js +++ b/frappe/public/js/form_builder/store.js @@ -202,11 +202,8 @@ export const useStore = defineStore("form-builder-store", () => { }); } - async function save_changes() { - if (!dirty.value) { - frappe.show_alert({ message: __("No changes to save"), indicator: "orange" }); - return; - } + function update_fields() { + if (!dirty.value && !frm.value.is_new()) return; frappe.dom.freeze(__("Saving...")); @@ -216,14 +213,12 @@ export const useStore = defineStore("form-builder-store", () => { _doc.doc_type = doctype.value; _doc.fields = get_updated_fields(); validate_fields(_doc.fields, _doc.istable); - await frappe.call({ method: "save_customization", doc: _doc }); } else { - doc.value.fields = get_updated_fields(); - validate_fields(doc.value.fields, doc.value.istable); - await frappe.call("frappe.client.save", { doc: doc.value }); - frappe.toast("Fields Table Updated"); + let fields = get_updated_fields(); + validate_fields(fields, doc.value.istable); + doc.value.fields = fields; + return fields; } - fetch(); } catch (e) { console.error(e); } finally { @@ -244,6 +239,9 @@ export const useStore = defineStore("form-builder-store", () => { ) { idx++; tab.df.idx = idx; + if (tab.df.__unsaved) { + tab.df.name = "new-docfield-" + idx; + } fields.push(tab.df); } @@ -257,6 +255,9 @@ export const useStore = defineStore("form-builder-store", () => { if ((j == 0 && is_df_updated(section.df, get_df("Section Break"))) || j > 0) { idx++; section.df.idx = idx; + if (section.df.__unsaved) { + section.df.name = "new-docfield-" + idx; + } fields.push(section.df); } @@ -269,12 +270,18 @@ export const useStore = defineStore("form-builder-store", () => { ) { idx++; column.df.idx = idx; + if (column.df.__unsaved) { + column.df.name = "new-docfield-" + idx; + } fields.push(column.df); } column.fields.forEach((field) => { idx++; field.df.idx = idx; + if (field.df.__unsaved) { + field.df.name = "new-docfield-" + idx; + } fields.push(field.df); section.has_fields = true; }); @@ -321,7 +328,7 @@ export const useStore = defineStore("form-builder-store", () => { fetch, reset_changes, validate_fields, - save_changes, + update_fields, get_updated_fields, is_df_updated, get_layout,