-Poter entrare nel login anche con l'username Telegram !

- Se clicchi sulla foto, mi apre il profilo anzichè l'invio dei RIS
- ++ Filtro sulle ricerche: Scegliere un Circuito specifico.
- Nella lista iscritti compaiono anche i cancellati...
- n "Attività" si vede tutto allargato, non sta nella dimensione della pagina.
- Nelle notifiche della campanellina non si vede più il titolo... (è vuoto).
- Non funziona il Filtro per Settore (nella Home sugli Eventi)
- Filtri avanzati da mostrare solo se clicco sul bottone.
- I menu in basso non funzionano !
- Nel menu "Iscritti" del circuito, non compare più la ricerca ! Riattivarla
- Opzione di mandare una email quando uno si registra al Circuito
- ++ Opzione per il Circuito: Chiedi di entrare agli admin (e non in automatico).
This commit is contained in:
Surya Paolo
2025-01-09 15:17:21 +01:00
parent 3734762a8b
commit da6bef1b96
35 changed files with 1386 additions and 1088 deletions

View File

@@ -396,6 +396,7 @@ export default defineComponent({
const myMapComp = ref(<any>null)
const tablesel = ref('')
const showfilteradv = ref(false)
const showSpin = ref(false)
const showNotification = ref(false)
@@ -914,6 +915,15 @@ export default defineComponent({
arrfilter_provices.push({ key: 'reg', value: idRegion })
}
} else if (item.table === 'circuits') {
const myfield = tools.getFieldSearchByTable(mytable.value, item.table, 'profile.mycircuits.circuitname')
obj[myfield] = item.value
if (myfield) {
if (item.value !== '' && item.value !== costanti.FILTER_TUTTI) {
filtersearch3and.push({ "profile.mycircuits.circuitname": item.value.name })
}
}
} else if (item.table === 'provinces') {
const myfield = tools.getFieldSearchByTable(mytable.value, item.table, 'mycities.prov')
@@ -1373,6 +1383,28 @@ export default defineComponent({
// console.log('REFRESH!')
// Controllo se la Regione è su Tutti, allora la provincia e comune devono andare vuoti
if (searchList.value) {
const filtroRegioni = searchList.value.find((myrec) => myrec.table === toolsext.TABREGIONS) // check if exist
if (filtroRegioni && filtroRegioni.value === costanti.FILTER_TUTTI) {
const filtroProv = searchList.value.find((myrec) => myrec.table === toolsext.TABPROVINCE) // check if exist
if (filtroProv) {
filtroProv.value = costanti.FILTER_TUTTI
tools.setCookie(tools.COOK_SEARCH + costanti.FILTER_SEP + mytable.value + costanti.FILTER_SEP + toolsext.TABPROVINCE, filtroProv.value)
}
}
/*const filtroCircuito = searchList.value.find((myrec) => myrec.table === 'circuits')
if (filtroCircuito && filtroCircuito.value !== costanti.FILTER_TUTTI) {
const filtroProv = searchList.value.find((myrec) => myrec.table === toolsext.TABPROVINCE) // check if exist
if (filtroProv && filtroRegioni) {
filtroRegioni.value = costanti.FILTER_TUTTI
filtroProv.value = costanti.FILTER_TUTTI
tools.setCookie(tools.COOK_SEARCH + costanti.FILTER_SEP + mytable.value + costanti.FILTER_SEP + toolsext.TABREGIONS, filtroRegioni.value)
tools.setCookie(tools.COOK_SEARCH + costanti.FILTER_SEP + mytable.value + costanti.FILTER_SEP + toolsext.TABPROVINCE, filtroProv.value)
}
}*/
}
startsearch.value = true
serverData.value = []
@@ -1680,7 +1712,7 @@ export default defineComponent({
myvertical.value = props.vertical
if (props.prop_search) {
showfilter.value = props.prop_showfilter || (tools.getCookie('s_adv', '0') !== '0')
showfilter.value = props.prop_showfilter || true
} else {
showfilter.value = props.prop_showfilter
}
@@ -1693,7 +1725,7 @@ export default defineComponent({
const checkScrollPosition = () => {
// console.log('checkScrollPosition')
const container = carouselTabRef.value
if (!container ) return
if (!container) return
if (!addEventScroll.value && carouselTabRef.value) {
carouselTabRef.value?.addEventListener('scroll', checkScrollPosition)
@@ -1706,10 +1738,10 @@ export default defineComponent({
console.log('carouselTabRef NO !')
}
console.log(' .... >>> AVANTI ', container.scrollLeft, container.clientWidth)
isAtStart.value = container.scrollLeft <= 0
isAtEnd.value = container.scrollLeft + container.clientWidth >= container.scrollWidth - 1
if (serverData.value.length > 0) { // Assicurarsi che ci siano elementi
console.log('entro dentro...')
const cardWidth = container.scrollWidth / serverData.value.length
@@ -1727,7 +1759,7 @@ export default defineComponent({
behavior: 'smooth',
});
};
function mounted() {
// console.log('mounted...')
try {
@@ -2656,7 +2688,7 @@ export default defineComponent({
function handleTransition(newVal: any, oldVal: any) {
// Se siamo vicini alla fine degli elementi caricati, carichiamo altri elementi
if (serverData.value.length - newVal <= 2 && !loading.value) {
onLoadScroll(newVal, () => {})
onLoadScroll(newVal, () => { })
}
}
@@ -2667,7 +2699,7 @@ export default defineComponent({
}
loading.value = true
try {
refresh_infscroll(done)
} catch (error) {
@@ -2687,7 +2719,7 @@ export default defineComponent({
autoplay.value = true
}
}
const stopAutoplay = () => {
if (autoplayInterval.value) {
clearInterval(autoplayInterval.value)
@@ -2695,7 +2727,7 @@ export default defineComponent({
}
autoplay.value = false
}
const onIntersection = (entry: any) => {
if (entry.isIntersecting) {
// console.log('PARTITO INTERSECTION!')
@@ -2705,7 +2737,7 @@ export default defineComponent({
stopAutoplay()
}
}
created()
@@ -2833,7 +2865,7 @@ export default defineComponent({
isAtStart,
isAtEnd,
activeIndex,
scroll,
scroll,
slideGridOriz,
autoplay,
onUpdateData,
@@ -2841,6 +2873,7 @@ export default defineComponent({
handleTransition,
loadMore,
onIntersection,
showfilteradv,
}
}
})

View File

@@ -28,9 +28,10 @@
v-if="butt_modif_new || mytitle"
:class="$q.screen.lt.sm ? `` : `q-ma-xs` + ` `"
>
<div class="q-table__title" style="min-width: 150px">
{{ mytitle }}
</div>
<q-toolbar class="bg-primary text-white">
<q-toolbar-title>{{ mytitle }}</q-toolbar-title>
</q-toolbar>
<q-space></q-space>
<div v-if="butt_modif_new" class="row justify-center">
<q-btn
@@ -96,146 +97,163 @@
:class="$q.screen.lt.sm ? `` : `row` + ` text-blue `"
>
<span v-for="(item, index) in searchList" :key="index">
<CMySelect
:col="fieldsTable.getColByColumns(mycolumns, item.key)"
v-if="
(item.type === costanti.FieldType.select ||
item.type === costanti.FieldType.select_by_server) &&
lengthopt(item, false, false) > 1
"
:label="labelcombo(item)"
v-model:value="item.value"
@update:value="searchval(item.value, item.table)"
:addall="item.addall"
:addnone="item.addnone"
:tablesel="
item.type === costanti.FieldType.select_by_server
? item.tablesel
: ''
"
:pickup="item.type === costanti.FieldType.select_by_server"
label-color="primary"
class="combowidth"
color="primary"
:icon_alternative="item.icon"
:optval="fieldsTable.getKeyByTable(item.table)"
:optlab="fieldsTable.getLabelByTable(item.table)"
:options="valoriopt(item, false, false)"
:filter="item && item.filter ? item.filter : ''"
:filter_extra="item.filter_extra"
:useinput="
item.useinput &&
item.type !== costanti.FieldType.select_by_server
"
<div
class="text-center q-my-xs"
v-if="item.type === costanti.FieldType.separator"
>
</CMySelect>
<q-btn
size="sm"
dense
:icon="
!showfilteradv ? 'fas fa-arrow-down' : 'fas fa-arrow-up'
"
:label="$t('grid.advanced_filters')"
@click="showfilteradv = !showfilteradv"
></q-btn>
</div>
<!--<div v-if="item.type === costanti.FieldType.multiselect_by_server">
<div v-if="!(item.filteradv && !showfilteradv)">
<CMySelect
:col="fieldsTable.getColByColumns(mycolumns, item.key)"
v-if="
(item.type === costanti.FieldType.select ||
item.type === costanti.FieldType.select_by_server) &&
lengthopt(item, false, false) > 1
"
:label="labelcombo(item)"
v-model:value="item.value"
@update:value="searchval(item.value, item.table)"
:addall="item.addall"
:addnone="item.addnone"
:tablesel="
item.type === costanti.FieldType.select_by_server
? item.tablesel
: ''
"
:pickup="item.type === costanti.FieldType.select_by_server"
label-color="primary"
class="combowidth"
color="primary"
:icon_alternative="item.icon"
:optval="fieldsTable.getKeyByTable(item.table)"
:optlab="fieldsTable.getLabelByTable(item.table)"
:options="valoriopt(item, false, false)"
:filter="item && item.filter ? item.filter : ''"
:filter_extra="item.filter_extra"
:useinput="
item.useinput &&
item.type !== costanti.FieldType.select_by_server
"
>
</CMySelect>
<!--<div v-if="item.type === costanti.FieldType.multiselect_by_server">
item: {{ item}}
</div>-->
<CMySelect
v-if="
item.type === costanti.FieldType.multiselect_by_server &&
lengthopt(item, false) > 1
"
:col="fieldsTable.getColByColumns(mycolumns, item.key)"
:multiselect_by_server="true"
:label="labelcombo(item)"
v-model:arrvalue="item.arrvalue"
@update:arrvalue="searchval(item.arrvalue, item.table)"
:addall="item.addall"
:addnone="item.addnone"
:tablesel="item.tablesel"
:pickup="true"
:param1="item.param1"
label-color="primary"
class="combowidth"
color="primary"
:icon_alternative="item.icon"
:optval="fieldsTable.getKeyByTable(item.table)"
:optlab="fieldsTable.getLabelByTable(item.table)"
:filter="item.filter"
:filter_extra="item.filter_extra"
:options="valoriopt(item, false)"
:useinput="true"
>
</CMySelect>
<CMySelect
v-if="
item.type === costanti.FieldType.multiselect_by_server &&
lengthopt(item, false) > 1
"
:col="fieldsTable.getColByColumns(mycolumns, item.key)"
:multiselect_by_server="true"
:label="labelcombo(item)"
v-model:arrvalue="item.arrvalue"
@update:arrvalue="searchval(item.arrvalue, item.table)"
:addall="item.addall"
:addnone="item.addnone"
:tablesel="item.tablesel"
:pickup="true"
:param1="item.param1"
label-color="primary"
class="combowidth"
color="primary"
:icon_alternative="item.icon"
:optval="fieldsTable.getKeyByTable(item.table)"
:optlab="fieldsTable.getLabelByTable(item.table)"
:filter="item.filter"
:filter_extra="item.filter_extra"
:options="valoriopt(item, false)"
:useinput="true"
>
</CMySelect>
<q-select
:behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'"
v-if="item.type === costanti.FieldType.multiselect"
v-model="item.arrvalue"
label-color="primary"
:label="labelcombo(item)"
@update:model-value="searchval(item.arrvalue, item.table)"
rounded
dense
outlined
multiple
options-dense
emit-value
map-options
stack-label
:useinput="item.useinput"
:options="valoriopt(item, item.addall, item.addnone)"
:filter="item.filter"
class="combowidth"
:option-value="fieldsTable.getKeyByTable(item.table)"
>
<template v-if="item.icon" v-slot:prepend>
<q-icon :name="item.icon" />
</template>
<template
v-if="item.arrvalue.length >= 1"
v-slot:selected-item="scope"
<q-select
:behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'"
v-if="item.type === costanti.FieldType.multiselect"
v-model="item.arrvalue"
label-color="primary"
:label="labelcombo(item)"
@update:model-value="searchval(item.arrvalue, item.table)"
rounded
dense
outlined
multiple
options-dense
emit-value
map-options
stack-label
:useinput="item.useinput"
:options="valoriopt(item, item.addall, item.addnone)"
:filter="item.filter"
class="combowidth"
:option-value="fieldsTable.getKeyByTable(item.table)"
>
<div
v-if="
scope.opt[fieldsTable.getLabelByTable(item.table)] ||
(scope.opt && checkIfShowRec(scope.opt))
"
<template v-if="item.icon" v-slot:prepend>
<q-icon :name="item.icon" />
</template>
<template
v-if="item.arrvalue.length >= 1"
v-slot:selected-item="scope"
>
<q-chip
removable
dense
@remove="scope.removeAtIndex(scope.index)"
v-if="checkIfShowRec(scope.opt)"
color="white"
text-color="mycol"
class="q-my-none q-ml-xs q-mr-none"
>
<q-avatar
color="primary"
text-color="white"
:icon="item.icon"
size="12px"
/>
{{
<div
v-if="
scope.opt[fieldsTable.getLabelByTable(item.table)] ||
scope.opt
}}
</q-chip>
</div>
</template>
<template
v-slot:option="{ itemProps, opt, selected, toggleOption }"
>
<q-item v-bind="itemProps">
<q-item-section>
<q-item-label>{{
opt[fieldsTable.getLabelByTable(item.table)]
}}</q-item-label>
</q-item-section>
<q-item-section side>
<q-toggle
:model-value="selected"
@update:model-value="toggleOption(opt)"
/>
</q-item-section>
</q-item>
</template>
</q-select>
(scope.opt && checkIfShowRec(scope.opt))
"
>
<q-chip
removable
dense
@remove="scope.removeAtIndex(scope.index)"
v-if="checkIfShowRec(scope.opt)"
color="white"
text-color="mycol"
class="q-my-none q-ml-xs q-mr-none"
>
<q-avatar
color="primary"
text-color="white"
:icon="item.icon"
size="12px"
/>
{{
scope.opt[fieldsTable.getLabelByTable(item.table)] ||
scope.opt
}}
</q-chip>
</div>
</template>
<template
v-slot:option="{ itemProps, opt, selected, toggleOption }"
>
<q-item v-bind="itemProps">
<q-item-section>
<q-item-label>{{
opt[fieldsTable.getLabelByTable(item.table)]
}}</q-item-label>
</q-item-section>
<q-item-section side>
<q-toggle
:model-value="selected"
@update:model-value="toggleOption(opt)"
/>
</q-item-section>
</q-item>
</template>
</q-select>
</div>
</span>
</div>
</div>
@@ -738,9 +756,20 @@
:class="$q.screen.lt.sm ? `` : `row` + ` text-blue `"
>
<span v-for="(item, index) in searchList" :key="index">
<!--<div class="text-center q-my-xs" v-if="(item.type === costanti.FieldType.separator)">
<q-btn size="sm" dense :icon="!showfilteradv ? 'fas fa-arrow-down' : 'fas fa-arrow-up'" label="Filtri Avanzati" @click="showfilteradv = !showfilteradv"></q-btn>
</div>-->
<div
class="text-center q-my-xs"
v-if="item.type === costanti.FieldType.separator"
>
<q-btn
size="sm"
dense
:icon="
!showfilteradv ? 'fas fa-arrow-down' : 'fas fa-arrow-up'
"
:label="$t('grid.advanced_filters')"
@click="showfilteradv = !showfilteradv"
></q-btn>
</div>
<CMySelect
:col="fieldsTable.getColByColumns(mycolumns, item.key)"