feat: enhance document handling with error triggering and settings helpers via app
This commit is contained in:
parent
7e9d9a5fed
commit
23a823f2bb
@ -1,4 +1,6 @@
|
|||||||
import { getScript } from '@/data/script'
|
import { getScript } from '@/data/script'
|
||||||
|
import { globalStore } from '@/stores/global'
|
||||||
|
import { showSettings, activeSettingsPage } from '@/composables/settings'
|
||||||
import { runSequentially, parseAssignees } from '@/utils'
|
import { runSequentially, parseAssignees } from '@/utils'
|
||||||
import { createDocumentResource, createResource, toast } from 'frappe-ui'
|
import { createDocumentResource, createResource, toast } from 'frappe-ui'
|
||||||
import { reactive } from 'vue'
|
import { reactive } from 'vue'
|
||||||
@ -24,6 +26,7 @@ export function useDocument(doctype, docname) {
|
|||||||
toast.success(__('Document updated successfully'))
|
toast.success(__('Document updated successfully'))
|
||||||
},
|
},
|
||||||
onError: (err) => {
|
onError: (err) => {
|
||||||
|
triggerOnError(err)
|
||||||
let errorMessage = __('Error updating document')
|
let errorMessage = __('Error updating document')
|
||||||
if (err.exc_type == 'MandatoryError') {
|
if (err.exc_type == 'MandatoryError') {
|
||||||
const fieldName = err.messages
|
const fieldName = err.messages
|
||||||
@ -76,8 +79,21 @@ export function useDocument(doctype, docname) {
|
|||||||
|
|
||||||
controllersCache[doctype][docname || ''] = {}
|
controllersCache[doctype][docname || ''] = {}
|
||||||
|
|
||||||
|
const { makeCall } = globalStore()
|
||||||
|
|
||||||
|
let helpers = {}
|
||||||
|
|
||||||
|
helpers.crm = {
|
||||||
|
makePhoneCall: makeCall,
|
||||||
|
openSettings: (page) => {
|
||||||
|
showSettings.value = true
|
||||||
|
activeSettingsPage.value = page
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
const controllersArray = await setupScript(
|
const controllersArray = await setupScript(
|
||||||
documentsCache[doctype][docname || ''],
|
documentsCache[doctype][docname || ''],
|
||||||
|
helpers,
|
||||||
)
|
)
|
||||||
|
|
||||||
if (!controllersArray || controllersArray.length === 0) return
|
if (!controllersArray || controllersArray.length === 0) return
|
||||||
@ -133,6 +149,13 @@ export function useDocument(doctype, docname) {
|
|||||||
await trigger(handler)
|
await trigger(handler)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function triggerOnError() {
|
||||||
|
const handler = async function () {
|
||||||
|
await (this.onError?.() || this.on_error?.())
|
||||||
|
}
|
||||||
|
await trigger(handler)
|
||||||
|
}
|
||||||
|
|
||||||
async function triggerOnRefresh() {
|
async function triggerOnRefresh() {
|
||||||
const handler = async function () {
|
const handler = async function () {
|
||||||
await this.refresh?.()
|
await this.refresh?.()
|
||||||
@ -234,6 +257,7 @@ export function useDocument(doctype, docname) {
|
|||||||
triggerOnLoad,
|
triggerOnLoad,
|
||||||
triggerOnBeforeCreate,
|
triggerOnBeforeCreate,
|
||||||
triggerOnSave,
|
triggerOnSave,
|
||||||
|
triggerOnError,
|
||||||
triggerOnRefresh,
|
triggerOnRefresh,
|
||||||
triggerOnChange,
|
triggerOnChange,
|
||||||
triggerOnRowAdd,
|
triggerOnRowAdd,
|
||||||
|
|||||||
@ -38,7 +38,7 @@ export function getScript(doctype, view = 'Form') {
|
|||||||
let scriptDefs = doctypeScripts[doctype]
|
let scriptDefs = doctypeScripts[doctype]
|
||||||
if (!scriptDefs || Object.keys(scriptDefs).length === 0) return null
|
if (!scriptDefs || Object.keys(scriptDefs).length === 0) return null
|
||||||
|
|
||||||
const { $dialog, $socket, makeCall } = globalStore()
|
const { $dialog, $socket } = globalStore()
|
||||||
|
|
||||||
helpers.createDialog = $dialog
|
helpers.createDialog = $dialog
|
||||||
helpers.toast = toast
|
helpers.toast = toast
|
||||||
@ -51,10 +51,6 @@ export function getScript(doctype, view = 'Form') {
|
|||||||
throw new Error(message || __('An error occurred'))
|
throw new Error(message || __('An error occurred'))
|
||||||
}
|
}
|
||||||
|
|
||||||
helpers.crm = {
|
|
||||||
makePhoneCall: makeCall,
|
|
||||||
}
|
|
||||||
|
|
||||||
return setupMultipleFormControllers(scriptDefs, document, helpers)
|
return setupMultipleFormControllers(scriptDefs, document, helpers)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user