From 6813bc6cafa904b732797cfeb4de9ff7b6f2c64a Mon Sep 17 00:00:00 2001 From: Shariq Ansari Date: Wed, 7 May 2025 12:15:49 +0530 Subject: [PATCH] fix: added triggerOnRefresh & getActions method (cherry picked from commit 9e3124d29ed94721a198468cae6ff722020f62b7) --- frontend/src/data/document.js | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/frontend/src/data/document.js b/frontend/src/data/document.js index 38aa444b..25fb9d3d 100644 --- a/frontend/src/data/document.js +++ b/frontend/src/data/document.js @@ -1,6 +1,7 @@ import { getScript } from '@/data/script' import { createToast } from '@/utils' import { createDocumentResource } from 'frappe-ui' +import { computed } from 'vue' const documentsCache = {} @@ -35,19 +36,39 @@ export function useDocument(doctype, docname) { } function setupFormScript() { + if (documentsCache[doctype][docname]['controllers']) return + const controllers = setupScript(documentsCache[doctype][docname]) if (!controllers) return documentsCache[doctype][docname]['controllers'] = controllers } - async function triggerOnChange(fieldname, row) { - let controllers = documentsCache[doctype][docname]?.controllers + function getController(dt = null) { + let controllers = documentsCache[doctype][docname]?.controllers || {} if (Object.keys(controllers).length === 0) return - let _dt = row?.doctype ? row.doctype : doctype - let doctypeClassName = _dt.replace(/\s+/g, '') + dt = dt || doctype + let doctypeClassName = dt.replace(/\s+/g, '') const c = controllers[doctypeClassName] + return c || null + } + + function getActions() { + let c = getController() || setupFormScript() + if (!c) return [] + return c?.actions || [] + } + + async function triggerOnRefresh() { + const c = getController() + if (!c) return + return await c.refresh() + } + + async function triggerOnChange(fieldname, row) { + const dt = row?.doctype ? row.doctype : doctype + const c = getController(dt) if (!c) return if (row) { @@ -79,10 +100,10 @@ export function useDocument(doctype, docname) { return { document: documentsCache[doctype][docname], - getActions: () => - documentsCache[doctype][docname]?.controller?.actions || [], + actions: computed(() => getActions()), getOldValue, triggerOnChange, + triggerOnRefresh, setupFormScript, } }