1
0
forked from test/crm

fix: show grid fields, update onchange of grid cell

This commit is contained in:
Shariq Ansari 2024-12-23 17:21:05 +05:30
parent ed11fb48cb
commit 7b86773b73
3 changed files with 52 additions and 2 deletions

View File

@ -365,7 +365,11 @@
</div>
</div>
<div v-else-if="title == 'Data'" class="h-full flex flex-col px-3 sm:px-10">
<DataFields :doctype="doctype" :docname="doc.data.name" />
<DataFields
:doctype="doctype"
:docname="doc.data.name"
:meta="doc.data.fields_meta"
/>
</div>
<div
v-else

View File

@ -71,6 +71,10 @@ const props = defineProps({
type: String,
required: true,
},
meta: {
type: Object,
required: true,
},
})
const { isManager } = usersStore()
@ -105,8 +109,43 @@ const tabs = createResource({
cache: ['DataFields', props.doctype],
params: { doctype: props.doctype, type: 'Data Fields' },
auto: true,
transform: (_tabs) => parseTabs(_tabs),
})
function parseTabs(_tabs) {
_tabs.forEach((tab) => {
tab.sections.forEach((section) => {
section.fields.forEach((field) => {
if (field.type === 'Table') {
let name = props.meta[field.name].df.fieldname
let fields = props.meta[field.name].fields
field.fields = fields.map((field) => {
return {
...getFieldObj(field),
onChange: (value, index) => {
data.doc[name][index][field.fieldname] = value
},
}
})
field.gridFields = field.fields.filter((field) => field.in_list_view)
}
})
})
})
return _tabs
}
function getFieldObj(field) {
return {
label: field.label,
fieldname: field.fieldname,
fieldtype: field.fieldtype,
options: field.options,
in_list_view: field.in_list_view,
}
}
function saveChanges() {
data.save.submit()
}

View File

@ -76,6 +76,12 @@
v-model="data[field.name]"
:disabled="true"
/>
<Grid
v-else-if="field.type === 'Table'"
v-model="data[field.name]"
:fields="field.fields"
:gridFields="field.gridFields"
/>
<FormControl
v-else-if="field.type === 'Select'"
type="select"
@ -237,7 +243,8 @@ import EditIcon from '@/components/Icons/EditIcon.vue'
import IndicatorIcon from '@/components/Icons/IndicatorIcon.vue'
import UserAvatar from '@/components/UserAvatar.vue'
import Link from '@/components/Controls/Link.vue'
import { getMeta } from '../stores/meta'
import Grid from '@/components/Controls/Grid.vue'
import { getMeta } from '@/stores/meta'
import { usersStore } from '@/stores/users'
import { getFormat } from '@/utils'
import { flt } from '@/utils/numberFormat.js'