From 200c931f05948f6a26c842b31e2787b23d7d198a Mon Sep 17 00:00:00 2001 From: Shariq Ansari Date: Fri, 27 Sep 2024 20:34:14 +0530 Subject: [PATCH 1/3] feat: allow link filter to work in Link Field component --- frontend/src/components/Controls/Link.vue | 6 ++++++ frontend/src/components/SectionFields.vue | 3 +++ 2 files changed, 9 insertions(+) diff --git a/frontend/src/components/Controls/Link.vue b/frontend/src/components/Controls/Link.vue index 30b0b282..3bcb3d7f 100644 --- a/frontend/src/components/Controls/Link.vue +++ b/frontend/src/components/Controls/Link.vue @@ -69,6 +69,10 @@ const props = defineProps({ type: String, required: true, }, + filters: { + type: Array, + default: () => [], + }, modelValue: { type: String, default: '', @@ -122,6 +126,7 @@ const options = createResource({ params: { txt: text.value, doctype: props.doctype, + filters: props.filters, }, transform: (data) => { let allData = data.map((option) => { @@ -152,6 +157,7 @@ function reload(val) { params: { txt: val, doctype: props.doctype, + filters: props.filters, }, }) options.reload() diff --git a/frontend/src/components/SectionFields.vue b/frontend/src/components/SectionFields.vue index 24b14f96..f2029aa2 100644 --- a/frontend/src/components/SectionFields.vue +++ b/frontend/src/components/SectionFields.vue @@ -65,6 +65,7 @@ class="form-control" :value="data[field.name] && getUser(data[field.name]).full_name" doctype="User" + :filters="field.filters" @change="(data) => emit('update', field.name, data)" :placeholder="'Select' + ' ' + field.label + '...'" :hideMe="true" @@ -88,6 +89,7 @@ class="form-control select-text" :value="data[field.name]" :doctype="field.doctype" + :filters="field.filters" :placeholder="field.placeholder" @change="(data) => emit('update', field.name, data)" :onCreate="field.create" @@ -144,6 +146,7 @@ const _fields = computed(() => { if (df?.depends_on) evaluate_depends_on(df.depends_on, field) all_fields.push({ ...field, + filters: df.link_filters && JSON.parse(df.link_filters), placeholder: field.placeholder || field.label, }) }) From 45b006b580953f8fadf77c60599b87b3b5e56a99 Mon Sep 17 00:00:00 2001 From: Shariq Ansari Date: Fri, 27 Sep 2024 20:34:54 +0530 Subject: [PATCH 2/3] fix: only fetch org if org exist --- frontend/src/pages/Deal.vue | 11 +++++++---- frontend/src/pages/MobileDeal.vue | 11 +++++++---- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/frontend/src/pages/Deal.vue b/frontend/src/pages/Deal.vue index c9ef4fbb..a0492262 100644 --- a/frontend/src/pages/Deal.vue +++ b/frontend/src/pages/Deal.vue @@ -376,10 +376,13 @@ const deal = createResource({ params: { name: props.dealId }, cache: ['deal', props.dealId], onSuccess: async (data) => { - organization.update({ - params: { doctype: 'CRM Organization', name: data.organization }, - }) - organization.fetch() + if (data.organization) { + organization.update({ + params: { doctype: 'CRM Organization', name: data.organization }, + }) + organization.fetch() + } + let obj = { doc: data, $dialog, diff --git a/frontend/src/pages/MobileDeal.vue b/frontend/src/pages/MobileDeal.vue index 63b56743..08b8a54d 100644 --- a/frontend/src/pages/MobileDeal.vue +++ b/frontend/src/pages/MobileDeal.vue @@ -309,10 +309,13 @@ const deal = createResource({ params: { name: props.dealId }, cache: ['deal', props.dealId], onSuccess: async (data) => { - organization.update({ - params: { doctype: 'CRM Organization', name: data.organization }, - }) - organization.fetch() + if (data.organization) { + organization.update({ + params: { doctype: 'CRM Organization', name: data.organization }, + }) + organization.fetch() + } + let obj = { doc: data, $dialog, From 575d85dc657442927e27f7f1a8a597f0476b65bf Mon Sep 17 00:00:00 2001 From: Shariq Ansari Date: Fri, 27 Sep 2024 20:48:10 +0530 Subject: [PATCH 3/3] fix: allow link filters to work in settings page --- crm/api/doc.py | 1 + frontend/src/components/Fields.vue | 2 ++ frontend/src/components/Settings/SettingsPage.vue | 1 + 3 files changed, 4 insertions(+) diff --git a/crm/api/doc.py b/crm/api/doc.py index a5a7c51e..84a84458 100644 --- a/crm/api/doc.py +++ b/crm/api/doc.py @@ -685,6 +685,7 @@ def get_fields(doctype: str, allow_all_fieldtypes: bool = False): "depends_on": field.depends_on, "mandatory_depends_on": field.mandatory_depends_on, "read_only_depends_on": field.read_only_depends_on, + "link_filters": field.get("link_filters"), }) return _fields diff --git a/frontend/src/components/Fields.vue b/frontend/src/components/Fields.vue index c2bcd346..ac27882d 100644 --- a/frontend/src/components/Fields.vue +++ b/frontend/src/components/Fields.vue @@ -89,6 +89,7 @@ class="form-control flex-1" :value="data[field.name]" :doctype="field.options" + :filters="field.filters" @change="(v) => (data[field.name] = v)" :placeholder="__(field.placeholder || field.label)" :onCreate="field.create" @@ -110,6 +111,7 @@ class="form-control" :value="getUser(data[field.name]).full_name" :doctype="field.options" + :filters="field.filters" @change="(v) => (data[field.name] = v)" :placeholder="__(field.placeholder || field.label)" :hideMe="true" diff --git a/frontend/src/components/Settings/SettingsPage.vue b/frontend/src/components/Settings/SettingsPage.vue index e9a53bf0..90c49e70 100644 --- a/frontend/src/components/Settings/SettingsPage.vue +++ b/frontend/src/components/Settings/SettingsPage.vue @@ -122,6 +122,7 @@ const sections = computed(() => { } else { _sections[_sections.length - 1].fields.push({ ...field, + filters: field.link_filters && JSON.parse(field.link_filters), display_via_depends_on: evaluate_depends_on_value( field.depends_on, data.doc,