From 7b8a15d22404106bf95d8f0825045adac140e4f6 Mon Sep 17 00:00:00 2001 From: Shariq Ansari Date: Mon, 18 Mar 2024 15:02:23 +0530 Subject: [PATCH] refactor: organization modal --- .../components/Modals/OrganizationModal.vue | 44 +++++++------ frontend/src/components/NewDeal.vue | 4 +- frontend/src/components/NewLead.vue | 12 ---- frontend/src/pages/Deal.vue | 2 +- frontend/src/pages/Organization.vue | 65 ++++++++++--------- frontend/src/pages/Organizations.vue | 2 +- 6 files changed, 63 insertions(+), 66 deletions(-) diff --git a/frontend/src/components/Modals/OrganizationModal.vue b/frontend/src/components/Modals/OrganizationModal.vue index e967ec91..e3595636 100644 --- a/frontend/src/components/Modals/OrganizationModal.vue +++ b/frontend/src/components/Modals/OrganizationModal.vue @@ -115,9 +115,9 @@ v-for="action in dialogOptions.actions" :key="action.label" v-bind="action" - > - {{ action.label }} - + :label="action.label" + :loading="loading" + /> @@ -130,16 +130,11 @@ import WebsiteIcon from '@/components/Icons/WebsiteIcon.vue' import OrganizationsIcon from '@/components/Icons/OrganizationsIcon.vue' import TerritoryIcon from '@/components/Icons/TerritoryIcon.vue' import Link from '@/components/Controls/Link.vue' -import { organizationsStore } from '@/stores/organizations' import { call, FeatherIcon } from 'frappe-ui' import { ref, nextTick, watch, computed, h } from 'vue' import { useRouter } from 'vue-router' const props = defineProps({ - organization: { - type: Object, - default: {}, - }, options: { type: Object, default: { @@ -152,8 +147,9 @@ const props = defineProps({ const router = useRouter() const show = defineModel() -const { organizations } = organizationsStore() +const organization = defineModel('organization') +const loading = ref(false) const title = ref(null) const detailMode = ref(false) const editMode = ref(false) @@ -165,13 +161,15 @@ let _organization = ref({ industry: '', }) +let doc = ref({}) + async function updateOrganization() { - const old = { ...props.organization } + const old = { ...doc.value } const newOrg = { ..._organization.value } - const nameChanged = old.name !== newOrg.name - delete old.name - delete newOrg.name + const nameChanged = old.organization_name !== newOrg.organization_name + delete old.organization_name + delete newOrg.organization_name const otherFieldChanged = JSON.stringify(old) !== JSON.stringify(newOrg) const values = newOrg @@ -182,21 +180,23 @@ async function updateOrganization() { } let name + loading.value = true if (nameChanged) { name = await callRenameDoc() } if (otherFieldChanged) { name = await callSetValue(values) } - handleOrganizationUpdate({ name }) + handleOrganizationUpdate({ name }, nameChanged) } async function callRenameDoc() { const d = await call('frappe.client.rename_doc', { doctype: 'CRM Organization', - old_name: props.organization.name, - new_name: _organization.value.name, + old_name: doc.value?.organization_name, + new_name: _organization.value.organization_name, }) + loading.value = false return d } @@ -206,6 +206,7 @@ async function callSetValue(values) { name: _organization.value.name, fieldname: values, }) + loading.value = false return d.name } @@ -216,16 +217,18 @@ async function callInsertDoc() { ..._organization.value, }, }) + loading.value = false doc.name && handleOrganizationUpdate(doc) } -function handleOrganizationUpdate(doc) { - organizations.reload() - if (doc.name && props.options.redirect) { +function handleOrganizationUpdate(doc, renamed = false) { + if (doc.name && (props.options.redirect || renamed)) { router.push({ name: 'Organization', params: { organizationId: doc.name }, }) + } else { + organization.value.reload?.() } show.value = false props.options.afterInsert && props.options.afterInsert(doc) @@ -296,7 +299,8 @@ watch( nextTick(() => { // TODO: Issue with FormControl // title.value.el.focus() - _organization.value = { ...props.organization } + doc.value = organization.value?.doc || organization.value || {} + _organization.value = { ...doc.value } if (_organization.value.name) { editMode.value = true } diff --git a/frontend/src/components/NewDeal.vue b/frontend/src/components/NewDeal.vue index 7087bdcb..d9573256 100644 --- a/frontend/src/components/NewDeal.vue +++ b/frontend/src/components/NewDeal.vue @@ -61,10 +61,10 @@ diff --git a/frontend/src/components/NewLead.vue b/frontend/src/components/NewLead.vue index 6baee351..382e1b5c 100644 --- a/frontend/src/components/NewLead.vue +++ b/frontend/src/components/NewLead.vue @@ -59,20 +59,11 @@ -