fix: show asterisk for mandatory fields and also validate before saving
This commit is contained in:
parent
6773266667
commit
f4cd8bf6b3
@ -188,11 +188,16 @@ def get_doctype_fields(doctype):
|
||||
else:
|
||||
section_fields.append(get_field_obj(field))
|
||||
|
||||
all_fields = []
|
||||
section_fields = []
|
||||
for section in sections:
|
||||
all_fields.append(sections[section])
|
||||
section_fields.append(sections[section])
|
||||
|
||||
return all_fields
|
||||
fields = [field for field in fields if field.fieldtype not in "Tab Break"]
|
||||
fields_meta = {}
|
||||
for field in fields:
|
||||
fields_meta[field.fieldname] = field
|
||||
|
||||
return section_fields, fields_meta
|
||||
|
||||
|
||||
def get_field_obj(field):
|
||||
|
||||
@ -27,7 +27,7 @@ def get_deal(name):
|
||||
fields=["contact", "is_primary"],
|
||||
)
|
||||
|
||||
deal["doctype_fields"] = get_doctype_fields("CRM Deal")
|
||||
deal["doctype_fields"], deal["all_fields"] = get_doctype_fields("CRM Deal")
|
||||
deal["doctype"] = "CRM Deal"
|
||||
deal["_form_script"] = get_form_script('CRM Deal')
|
||||
return deal
|
||||
|
||||
@ -8,6 +8,7 @@
|
||||
>
|
||||
<div class="w-[106px] shrink-0 text-sm text-gray-600">
|
||||
{{ field.label }}
|
||||
<span class="text-red-500">{{ field.reqd ? ' *' : '' }}</span>
|
||||
</div>
|
||||
<div
|
||||
class="grid min-h-[28px] flex-1 items-center overflow-hidden text-base"
|
||||
|
||||
@ -355,6 +355,8 @@ const organization = computed(() => {
|
||||
function updateDeal(fieldname, value, callback) {
|
||||
value = Array.isArray(fieldname) ? '' : value
|
||||
|
||||
if (validateRequired(fieldname, value)) return
|
||||
|
||||
createResource({
|
||||
url: 'frappe.client.set_value',
|
||||
params: {
|
||||
@ -386,6 +388,20 @@ function updateDeal(fieldname, value, callback) {
|
||||
})
|
||||
}
|
||||
|
||||
function validateRequired(fieldname, value) {
|
||||
let meta = deal.data.all_fields || {}
|
||||
if (meta[fieldname]?.reqd && !value) {
|
||||
createToast({
|
||||
title: 'Error Updating Deal',
|
||||
text: `${meta[fieldname].label} is a required field`,
|
||||
icon: 'x',
|
||||
iconClasses: 'text-red-600',
|
||||
})
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
const breadcrumbs = computed(() => {
|
||||
let items = [{ label: 'Deals', route: { name: 'Deals' } }]
|
||||
items.push({
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user