339 lines
8.6 KiB
TypeScript
Executable File
339 lines
8.6 KiB
TypeScript
Executable File
import { defineComponent, onMounted, ref, toRef } from 'vue'
|
|
import { useI18n } from '@src/boot/i18n'
|
|
import { useUserStore } from '@store/UserStore'
|
|
import { useGlobalStore } from '@store/globalStore'
|
|
import { useQuasar } from 'quasar'
|
|
import { IColGridTable } from 'model'
|
|
import { CMyChipList } from '../CMyChipList'
|
|
import { CDate } from '../CDate'
|
|
import { CDateTime } from '../CDateTime'
|
|
import { CMyToggleList } from '../CMyToggleList'
|
|
import { CMySelect } from '../CMySelect'
|
|
import { CMyEditor } from '../CMyEditor'
|
|
import { CGallery } from '../CGallery'
|
|
import { tools } from '@store/Modules/tools'
|
|
import { costanti } from '@costanti'
|
|
|
|
import { fieldsTable } from '@store/Modules/fieldsTable'
|
|
|
|
export default defineComponent({
|
|
name: 'CMyPopupEdit',
|
|
props: {
|
|
row: {
|
|
type: Object,
|
|
required: true,
|
|
},
|
|
col: {
|
|
type: Object,
|
|
required: true,
|
|
},
|
|
canEdit: {
|
|
type: Boolean,
|
|
required: false,
|
|
default: false,
|
|
},
|
|
field: {
|
|
type: String,
|
|
required: false,
|
|
default: '',
|
|
},
|
|
subfield: {
|
|
type: String,
|
|
required: false,
|
|
default: '',
|
|
},
|
|
showall: {
|
|
type: Boolean,
|
|
required: false,
|
|
default: false,
|
|
},
|
|
view: {
|
|
type: String,
|
|
required: false,
|
|
default: 'row',
|
|
},
|
|
minuteinterval: {
|
|
type: String,
|
|
required: false,
|
|
default: '5',
|
|
},
|
|
disable: {
|
|
type: Boolean,
|
|
required: false,
|
|
default: false,
|
|
},
|
|
visulabel: {
|
|
type: Boolean,
|
|
required: false,
|
|
default: false,
|
|
},
|
|
|
|
},
|
|
components: { CMyChipList, CDateTime, CDate, CMyToggleList, CMySelect, CMyEditor, CGallery },
|
|
setup(props, { emit }) {
|
|
const $q = useQuasar()
|
|
const { t } = useI18n()
|
|
const userStore = useUserStore()
|
|
const globalStore = useGlobalStore()
|
|
|
|
const myvalue = ref('')
|
|
const myvalueprec = ref('false')
|
|
const countryname = ref('')
|
|
const visueditor = ref(false)
|
|
const showeditor = ref(true)
|
|
|
|
const myrow = toRef(props, 'row')
|
|
|
|
function isviewfield() {
|
|
return props.view === 'field'
|
|
}
|
|
|
|
function changeval(newval: any) {
|
|
console.log('changeval update:row', newval)
|
|
emit('update:row', newval)
|
|
}
|
|
|
|
function getrealval(newval: any) {
|
|
if (props.col.fieldtype === costanti.FieldType.hours) {
|
|
newval = newval.value
|
|
}
|
|
}
|
|
|
|
function changevalRec(newval: any) {
|
|
console.log('row', props.row, 'col', props.col, 'newval', newval)
|
|
console.log('row[col.name]', props.row[props.col.name])
|
|
myrow.value[props.col.name] = newval
|
|
console.log('changevalRec update:row', newval)
|
|
emit('update:row', props.row)
|
|
}
|
|
|
|
function changevalRecHours(newval: any) {
|
|
if (props.col.fieldtype === costanti.FieldType.hours) {
|
|
newval = newval.value
|
|
}
|
|
changevalRec(newval)
|
|
|
|
myvalue.value = newval
|
|
}
|
|
|
|
function updatedata() {
|
|
mounted()
|
|
}
|
|
|
|
function mounted() {
|
|
// console.log('mounted')
|
|
if ((props.subfield !== '') && (props.subfield !== '')) {
|
|
if (props.row[props.field] === undefined) {
|
|
myrow.value[props.field] = {}
|
|
myvalue.value = ''
|
|
} else {
|
|
myvalue.value = myrow.value[props.field][props.subfield]
|
|
}
|
|
} else {
|
|
if (props.field !== '')
|
|
myvalue.value = myrow.value[props.field]
|
|
else {
|
|
// @ts-ignore
|
|
myvalue.value = myrow.value
|
|
}
|
|
}
|
|
|
|
myvalueprec.value = myvalue.value
|
|
|
|
// console.log('myvalueprec', myvalueprec)
|
|
}
|
|
|
|
function OpenEdit() {
|
|
// console.log('OpenEdit')
|
|
emit('show')
|
|
}
|
|
|
|
function getval() {
|
|
let myval: any = 'false'
|
|
|
|
if ((props.subfield !== '') && (props.subfield !== '')) {
|
|
if (myrow.value[props.field] === undefined) {
|
|
myrow.value[props.field] = {}
|
|
myval = ''
|
|
} else {
|
|
myval = myrow.value[props.field][props.subfield]
|
|
}
|
|
} else {
|
|
if (props.field !== '')
|
|
myval = myrow.value[props.field]
|
|
else
|
|
myval = myrow.value
|
|
}
|
|
|
|
return myval
|
|
}
|
|
|
|
function SaveValueInt(newVal: any, valinitial: any) {
|
|
|
|
// console.log('SaveValueInt', newVal, valinitial)
|
|
|
|
// Update value in table memory
|
|
if (props.subfield !== '') {
|
|
if (myrow.value[props.field] === undefined)
|
|
myrow.value[props.field] = {}
|
|
myrow.value[props.field][props.subfield] = newVal
|
|
} else {
|
|
if (props.field !== '')
|
|
myrow.value[props.field] = newVal
|
|
else
|
|
myrow.value = newVal
|
|
}
|
|
|
|
emit('save', newVal, valinitial)
|
|
}
|
|
|
|
function annulla(val: any) {
|
|
emit('annulla', true)
|
|
}
|
|
|
|
function Savedb(newVal: any, valinitial: any) {
|
|
|
|
if (props.col.fieldtype === costanti.FieldType.boolean) {
|
|
// console.log('myvalue', myvalue, newVal, myvalueprec)
|
|
if (myvalueprec.value === undefined) {
|
|
newVal = true
|
|
myvalueprec.value = myvalue.value
|
|
myvalue.value = newVal
|
|
}
|
|
// console.log('DOPO myvalue', myvalue, newVal, myvalueprec)
|
|
}
|
|
|
|
// console.log('Savedb', newVal)
|
|
|
|
emit('showandsave', props.row, props.col, newVal, valinitial)
|
|
visueditor.value = false
|
|
}
|
|
|
|
function visuValByType(val: any, col: IColGridTable, row: any) {
|
|
if (col === undefined || row === undefined)
|
|
return
|
|
|
|
// let val = ''
|
|
// if (props.col.subfield !== '') {
|
|
// if (row[props.col.field] === undefined)
|
|
// row[props.col.field] = {}
|
|
//
|
|
// val = row[props.col.field][props.col.subfield]
|
|
// } else {
|
|
// val = row[props.col.field]
|
|
// }
|
|
//
|
|
if (props.col.fieldtype === costanti.FieldType.date) {
|
|
if (val === undefined) {
|
|
return '[]'
|
|
} else {
|
|
return tools.getstrDateTime(val)
|
|
}
|
|
} else if (props.col.fieldtype === costanti.FieldType.onlydate) {
|
|
if (val === undefined) {
|
|
return '[]'
|
|
} else {
|
|
return tools.getstrDate(val)
|
|
}
|
|
} else if (props.col.fieldtype === costanti.FieldType.boolean) {
|
|
return (val) ? t('dialog.yes') : t('dialog.no')
|
|
} else if (props.col.fieldtype === costanti.FieldType.binary) {
|
|
if (val === undefined)
|
|
return '[---]'
|
|
else
|
|
return globalStore.getArrStrByValueBinary(col, val)
|
|
} else if (props.col.fieldtype === costanti.FieldType.select) {
|
|
if (val === undefined)
|
|
return '[---]'
|
|
else
|
|
return globalStore.getValueByTable(col, val)
|
|
} else if (props.col.fieldtype === costanti.FieldType.multiselect) {
|
|
if (val === undefined)
|
|
return '[---]'
|
|
else
|
|
return globalStore.getMultiValueByTable(col, val)
|
|
} else {
|
|
if (val === undefined || val === null)
|
|
return '[]'
|
|
else if (val === '') {
|
|
return '[]'
|
|
} else {
|
|
let mystr = ''
|
|
if (props.showall) {
|
|
return val
|
|
} else {
|
|
mystr = tools.firstchars(val, tools.MAX_CHARACTERS)
|
|
}
|
|
if (val) {
|
|
if (val.length > tools.MAX_CHARACTERS)
|
|
mystr += '...'
|
|
} else {
|
|
return val
|
|
}
|
|
return mystr
|
|
}
|
|
}
|
|
}
|
|
|
|
function visInNewRec(col: any) {
|
|
return !props.col.notShowInNewRec
|
|
}
|
|
|
|
function getclassCol(col: any) {
|
|
if (col) {
|
|
let mycl = (props.col.disable || isviewfield) ? '' : 'colmodif'
|
|
mycl += ((props.col.fieldtype === costanti.FieldType.date) || (props.col.fieldtype === costanti.FieldType.onlydate)) ? ' coldate flex flex-container' : ''
|
|
|
|
return mycl
|
|
} else {
|
|
return ''
|
|
}
|
|
}
|
|
function selectcountry({ name, iso2, dialCode }: { name: string, iso2: string, dialCode: string}) {
|
|
// console.log(name, iso2, dialCode)
|
|
myvalueprec.value = myvalue.value
|
|
myvalue.value = iso2
|
|
countryname.value = name
|
|
}
|
|
|
|
function intcode_change(coderec: any) {
|
|
myvalueprec.value = myvalue.value
|
|
myvalue.value = '+' + coderec.dialCode
|
|
}
|
|
|
|
function onInput(phone: any, phoneObject: any, input: any) {
|
|
if (phoneObject?.formatted) {
|
|
myvalue.value = phoneObject.formatted
|
|
}
|
|
}
|
|
|
|
onMounted(mounted)
|
|
|
|
return {
|
|
myvalue,
|
|
countryname,
|
|
visueditor,
|
|
showeditor,
|
|
isviewfield,
|
|
changeval,
|
|
changevalRec,
|
|
changevalRecHours,
|
|
updatedata,
|
|
OpenEdit,
|
|
getval,
|
|
SaveValueInt,
|
|
annulla,
|
|
Savedb,
|
|
visuValByType,
|
|
visInNewRec,
|
|
getclassCol,
|
|
selectcountry,
|
|
intcode_change,
|
|
tools,
|
|
fieldsTable,
|
|
onInput,
|
|
}
|
|
}
|
|
})
|
|
|