feat: added trigger function on row add & remove
This commit is contained in:
parent
727d0a9acd
commit
336083a00f
@ -327,9 +327,15 @@ const props = defineProps({
|
|||||||
type: String,
|
type: String,
|
||||||
required: true,
|
required: true,
|
||||||
},
|
},
|
||||||
|
parentFieldname: {
|
||||||
|
type: String,
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
const triggerOnChange = inject('triggerOnChange')
|
const triggerOnChange = inject('triggerOnChange')
|
||||||
|
const triggerOnRowAdd = inject('triggerOnRowAdd')
|
||||||
|
const triggerOnRowRemove = inject('triggerOnRowRemove')
|
||||||
|
|
||||||
const {
|
const {
|
||||||
getGridViewSettings,
|
getGridViewSettings,
|
||||||
@ -419,11 +425,16 @@ const addRow = () => {
|
|||||||
newRow['__islocal'] = true
|
newRow['__islocal'] = true
|
||||||
newRow['idx'] = rows.value.length + 1
|
newRow['idx'] = rows.value.length + 1
|
||||||
newRow['doctype'] = props.doctype
|
newRow['doctype'] = props.doctype
|
||||||
|
newRow['parentfield'] = props.parentFieldname
|
||||||
|
newRow['parenttype'] = props.parentDoctype
|
||||||
rows.value.push(newRow)
|
rows.value.push(newRow)
|
||||||
|
triggerOnRowAdd(newRow)
|
||||||
}
|
}
|
||||||
|
|
||||||
const deleteRows = () => {
|
const deleteRows = () => {
|
||||||
rows.value = rows.value.filter((row) => !selectedRows.has(row.name))
|
rows.value = rows.value.filter((row) => !selectedRows.has(row.name))
|
||||||
|
triggerOnRowRemove(selectedRows, rows.value)
|
||||||
|
|
||||||
showRowList.value.pop()
|
showRowList.value.pop()
|
||||||
selectedRows.clear()
|
selectedRows.clear()
|
||||||
}
|
}
|
||||||
|
|||||||
@ -26,6 +26,7 @@
|
|||||||
v-model="data[field.fieldname]"
|
v-model="data[field.fieldname]"
|
||||||
:doctype="field.options"
|
:doctype="field.options"
|
||||||
:parentDoctype="doctype"
|
:parentDoctype="doctype"
|
||||||
|
:parentFieldname="field.fieldname"
|
||||||
/>
|
/>
|
||||||
<FormControl
|
<FormControl
|
||||||
v-else-if="field.fieldtype === 'Select'"
|
v-else-if="field.fieldtype === 'Select'"
|
||||||
@ -226,10 +227,16 @@ const { getUser } = usersStore()
|
|||||||
let triggerOnChange
|
let triggerOnChange
|
||||||
|
|
||||||
if (!isGridRow) {
|
if (!isGridRow) {
|
||||||
const { triggerOnChange: trigger } = useDocument(doctype, data.value.name)
|
const {
|
||||||
|
triggerOnChange: trigger,
|
||||||
|
triggerOnRowAdd,
|
||||||
|
triggerOnRowRemove,
|
||||||
|
} = useDocument(doctype, data.value.name)
|
||||||
triggerOnChange = trigger
|
triggerOnChange = trigger
|
||||||
|
|
||||||
provide('triggerOnChange', triggerOnChange)
|
provide('triggerOnChange', triggerOnChange)
|
||||||
|
provide('triggerOnRowAdd', triggerOnRowAdd)
|
||||||
|
provide('triggerOnRowRemove', triggerOnRowRemove)
|
||||||
} else {
|
} else {
|
||||||
triggerOnChange = inject('triggerOnChange')
|
triggerOnChange = inject('triggerOnChange')
|
||||||
}
|
}
|
||||||
|
|||||||
@ -101,6 +101,7 @@
|
|||||||
v-model="settings.doc.dropdown_items"
|
v-model="settings.doc.dropdown_items"
|
||||||
doctype="CRM Dropdown Item"
|
doctype="CRM Dropdown Item"
|
||||||
parentDoctype="FCRM Settings"
|
parentDoctype="FCRM Settings"
|
||||||
|
parentFieldname="dropdown_items"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -83,6 +83,36 @@ export function useDocument(doctype, docname) {
|
|||||||
return await c[fieldname]?.()
|
return await c[fieldname]?.()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function triggerOnRowAdd(row) {
|
||||||
|
const dt = row?.doctype ? row.doctype : doctype
|
||||||
|
const c = getController(dt)
|
||||||
|
if (!c) return
|
||||||
|
|
||||||
|
c.currentRowIdx = row.idx
|
||||||
|
c.value = row
|
||||||
|
|
||||||
|
return await c[row.parentfield + '_add']?.()
|
||||||
|
}
|
||||||
|
|
||||||
|
async function triggerOnRowRemove(selectedRows, rows) {
|
||||||
|
if (!selectedRows) return
|
||||||
|
const dt = rows[0]?.doctype ? rows[0].doctype : doctype
|
||||||
|
const c = getController(dt)
|
||||||
|
if (!c) return
|
||||||
|
|
||||||
|
if (selectedRows.size === 1) {
|
||||||
|
const selectedRow = Array.from(selectedRows)[0]
|
||||||
|
c.currentRowIdx = rows.find((r) => r.name === selectedRow).idx
|
||||||
|
} else {
|
||||||
|
delete c.currentRowIdx
|
||||||
|
}
|
||||||
|
|
||||||
|
c.selectedRows = Array.from(selectedRows)
|
||||||
|
c.rows = rows
|
||||||
|
|
||||||
|
return await c[rows[0].parentfield + '_remove']?.()
|
||||||
|
}
|
||||||
|
|
||||||
function getOldValue(fieldname, row) {
|
function getOldValue(fieldname, row) {
|
||||||
if (!documentsCache[doctype][docname]) return ''
|
if (!documentsCache[doctype][docname]) return ''
|
||||||
|
|
||||||
@ -103,6 +133,8 @@ export function useDocument(doctype, docname) {
|
|||||||
actions: computed(() => getActions()),
|
actions: computed(() => getActions()),
|
||||||
getOldValue,
|
getOldValue,
|
||||||
triggerOnChange,
|
triggerOnChange,
|
||||||
|
triggerOnRowAdd,
|
||||||
|
triggerOnRowRemove,
|
||||||
triggerOnRefresh,
|
triggerOnRefresh,
|
||||||
setupFormScript,
|
setupFormScript,
|
||||||
}
|
}
|
||||||
|
|||||||
@ -163,8 +163,6 @@ export function getScript(doctype, view = 'Form') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
row.parent = row.parent || data.name
|
row.parent = row.parent || data.name
|
||||||
row.parentype = row.parenttype || data.doctype
|
|
||||||
row.parentfield = row.parentfield || parentField
|
|
||||||
|
|
||||||
return createDocProxy(row, instance)
|
return createDocProxy(row, instance)
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user