diff --git a/frappe/website/doctype/web_form/web_form.py b/frappe/website/doctype/web_form/web_form.py index 2b56799f39..50512dc821 100644 --- a/frappe/website/doctype/web_form/web_form.py +++ b/frappe/website/doctype/web_form/web_form.py @@ -503,6 +503,13 @@ def get_form_data(doctype, docname, web_form_name): frappe.throw(_("Not permitted"), frappe.PermissionError) out.web_form = frappe.get_doc('Web Form', web_form_name) + + # For Table fields, server-side processing for meta + for field in out.web_form.web_form_fields: + if field.fieldtype == "Table": + field.fields = get_in_list_view_fields(field.options) + out.update({field.fieldname: field.fields}) + return out @frappe.whitelist() diff --git a/frappe/website/js/web_form_class.js b/frappe/website/js/web_form_class.js index c285167b63..cfca46ebf6 100644 --- a/frappe/website/js/web_form_class.js +++ b/frappe/website/js/web_form_class.js @@ -13,38 +13,38 @@ export default class WebForm { docname: this.docname, web_form_name: this.web_form_name }, - freeze: true + freeze: true, }).then(r => { const { doc, web_form, links } = r.message; + web_form.web_form_fields.map(df => { + if (df.fieldtype === 'Table') { + + df.get_data = () => { + let data = [] + if(doc) { + data = doc[df.fieldname]; + } + return data; + } + + df.options = null; + + if (r.message.hasOwnProperty(df.fieldname)) { + df.fields = r.message[df.fieldname]; + } + } + }); + this.render(doc, web_form, links); + }); } - render(doc, web_form, links) { + + render(doc, web_form) { const query_params = frappe.utils.get_query_params(); web_form.web_form_fields.map(df => { - if (df.fieldtype === 'Table') { - df.get_data = () => { - let data = [] - if(doc) { - data = doc[df.fieldname]; - } - return data; - } - - df.fields = [ - { - fieldtype: 'Link', - fieldname: "role", - options: "Role", - label: __("Role"), - in_list_view: 1 // added - } - ]; - - df.options = null; - } if (df.fieldtype==='Attach') { df.is_private = true;