import { defineComponent, onMounted, PropType, ref, toRef, watch, } from 'vue' import { IMyElem, IMyPage, IOperators } from '@src/model' import { useGlobalStore } from '@store/globalStore' import { CImgTitle } from '../CImgTitle/index' import { CTitle } from '@/components/CTitle/index' import { tools } from '@store/Modules/tools' import { shared_consts } from '@/common/shared_vuejs' import LandingFooter from '@/components/LandingFooter/LandingFooter' import { COpenStreetMap } from '@src/components/COpenStreetMap' import { CCardCarousel } from '@src/components/CCardCarousel' import { CMyPage } from '@src/components/CMyPage' import { CMyPageIntro } from '@src/components/CMyPageIntro' import { CEventsCalendar } from '@src/components/CEventsCalendar' import { CMyEditor } from '@src/components/CMyEditor' import { CMyFieldRec } from '@src/components/CMyFieldRec' import MixinMetaTags from '@/mixins/mixin-metatags' import { useQuasar } from 'quasar' import { useI18n } from '@/boot/i18n' export default defineComponent({ name: 'CMyElem', components: { CImgTitle, CTitle, LandingFooter, CEventsCalendar, CCardCarousel, COpenStreetMap, CMyPage, CMyPageIntro, CMyEditor, CMyFieldRec }, props: { myelem: { type: Object as PropType, required: true, }, path: { type: String, required: false, default: '', }, editOn: { type: Boolean, required: false, default: false, }, addOn: { type: Boolean, required: false, default: false, } }, setup(props) { const globalStore = useGlobalStore() const { setmeta, getsrcbyimg } = MixinMetaTags() const $q = useQuasar() const { t } = useI18n() const animare = ref(0) const slide = ref(0) const slide2 = ref(0) const disableSave = ref(true) const enableEdit = ref(false) const enableAdd = ref(true) const neworder = ref(0) const myel = toRef(props, 'myelem') const newtype = ref('') watch(() => myel.value.order, (value, oldval) => { mounted() }) function getArrDisciplines() { return globalStore.disciplines.filter((rec: any) => rec.showinhome) } function getheightgallery() { if (tools.isMobile()) return '400px' else return '600px' } function saveElem(exit?: boolean) { // Save Elem record const myelem = props.myelem myelem.order = neworder.value globalStore.saveMyElem($q, t, myelem).then((ris) => { if (ris) { // OK disableSave.value = true if (exit) enableEdit.value = false } }) } function addNewElem(order?: number) { const newrec: IMyElem = { _id: undefined, type: newtype.value, path: props.myelem.path, order: order ? order : 1000, active: true, container: '' } if (newrec.type === shared_consts.ELEMTYPE.CAROUSEL_IMGS) { newrec.container2 = '8' newrec.height = 600 } globalStore.addNewElem($q, t, newrec) } function delElem() { $q.dialog({ message: 'Eliminare ' + props.myelem.container + ' ?', html: true, ok: { label: 'Elimina', push: true, }, title: '', cancel: true, persistent: false, }).onOk(async () => { // Save Elem record await globalStore.delMyElem($q, t, props.myelem).then((ris) => { if (ris) { // OK disableSave.value = true } }) }) } function modifElem(value: any) { disableSave.value = false } function mounted() { neworder.value = props.myelem.order if (props.myelem) newtype.value = props.myelem.type } function clickOnElem() { if (props.editOn) { enableEdit.value = true } } onMounted(mounted) return { tools, shared_consts, getArrDisciplines, getheightgallery, slide, slide2, animare, setmeta, getsrcbyimg, saveElem, myel, disableSave, modifElem, delElem, addNewElem, newtype, neworder, enableEdit, enableAdd, clickOnElem, } }, })