- Migliorata la Notifica degli Eventi su Telegram
- Gli annunci (beni/servizi/ospitalità) ora possono essere visti anche tramite un link, anche per chi non è dentro alla App. - Aggiunto bottone "Aggiorna" per aggiornare il Saldo attuale. - I "Conti Collettivi" ora vengono chiamati Gruppi (o Conto di Gruppo).
This commit is contained in:
@@ -49,13 +49,18 @@ export default defineComponent({
|
||||
type: String,
|
||||
required: true,
|
||||
},
|
||||
subtitle: {
|
||||
type: String,
|
||||
required: false,
|
||||
default: '',
|
||||
},
|
||||
prop_mytable: {
|
||||
type: String,
|
||||
required: false,
|
||||
default: '',
|
||||
},
|
||||
prop_mycolumns: {
|
||||
type: Object as PropType<[]>,
|
||||
type: Object as PropType<any[]>,
|
||||
required: false,
|
||||
default: null,
|
||||
},
|
||||
@@ -303,9 +308,10 @@ export default defineComponent({
|
||||
const globalStore = useGlobalStore()
|
||||
const isfinishLoading = computed(() => globalStore.finishLoading)
|
||||
|
||||
const pagination = ref({ sortBy: 'desc', descending: false, page: 1, rowsNumber: 10, rowsPerPage: 10 } as IPagination)
|
||||
const pagination = ref({ sortBy: 'desc', descending: false, page: 1, rowsNumber: 0, rowsPerPage: 10 } as IPagination)
|
||||
|
||||
const addRow = ref('Aggiungi')
|
||||
const actmonth = ref('')
|
||||
|
||||
const newRecordBool = ref(false)
|
||||
const newRecordBoolOld = ref(false)
|
||||
@@ -317,7 +323,7 @@ export default defineComponent({
|
||||
|
||||
const mytable = ref('')
|
||||
const mytitle = ref('')
|
||||
const mycolumns = ref([])
|
||||
const mycolumns = ref([] as any[])
|
||||
const colkey = ref('')
|
||||
const search = ref('')
|
||||
|
||||
@@ -326,6 +332,7 @@ export default defineComponent({
|
||||
const showNotification = ref(false)
|
||||
|
||||
const loading = ref(false)
|
||||
const alreadymounting = ref(false)
|
||||
const editOn = computed({
|
||||
get: () => globalStore.editOn,
|
||||
set: val => {
|
||||
@@ -343,13 +350,13 @@ export default defineComponent({
|
||||
|
||||
const myinfscroll = ref(null)
|
||||
|
||||
const serverData: any = ref([])
|
||||
const serverData: any = ref([] as any[])
|
||||
const numRecLoaded = ref(0)
|
||||
const spinner_visible = ref(false)
|
||||
const changetable = ref(false)
|
||||
const searchList = ref([] as ISearchList[])
|
||||
|
||||
const actual = ''
|
||||
const actual = ref(<any>'')
|
||||
|
||||
let idsel = ''
|
||||
const colsel = ref({ name: '', field: '', sortable: false } as IColGridTable | null)
|
||||
@@ -386,11 +393,14 @@ export default defineComponent({
|
||||
const ordinam_desc = ref(false)
|
||||
|
||||
|
||||
const valoriopt = computed(() => (item: any, addall: boolean, addnone: boolean) => {
|
||||
const getNumRecFromQuery = computed(() => () => {
|
||||
return serverData.value.length
|
||||
})
|
||||
const valoriopt = computed(() => (item: any, addall?: boolean, addnone?: boolean) => {
|
||||
// console.log('valoriopt', item.table)
|
||||
return globalStore.getTableJoinByName(item.table, addall, addnone, item.filter)
|
||||
})
|
||||
const lengthopt = computed(() => (item: any, addall: boolean, addnone: boolean) => {
|
||||
const lengthopt = computed(() => (item: any, addall: boolean, addnone?: boolean) => {
|
||||
// console.log('valoriopt', item.table)
|
||||
const valori = globalStore.getTableJoinByName(item.table, addall, addnone, item.filter)
|
||||
return (valori ? valori.length : 0)
|
||||
@@ -1094,6 +1104,7 @@ export default defineComponent({
|
||||
myinfscroll.value.resume()
|
||||
}
|
||||
done()
|
||||
alreadymounting.value = true
|
||||
return
|
||||
}
|
||||
|
||||
@@ -1158,6 +1169,8 @@ export default defineComponent({
|
||||
|
||||
// console.log(' ...DONE ')
|
||||
done(pagination.value.rowsNumber === 0 ? true : false)
|
||||
|
||||
alreadymounting.value = true
|
||||
})
|
||||
} else {
|
||||
startsearch.value = false
|
||||
@@ -1169,7 +1182,6 @@ export default defineComponent({
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function refresh_arr() {
|
||||
const myarr = [...serverData.value]
|
||||
serverData.value = []
|
||||
@@ -1185,7 +1197,7 @@ export default defineComponent({
|
||||
}
|
||||
|
||||
function refresh_infscroll(done: any) {
|
||||
// console.log('refresh_infscroll', 'pag', pagination.value.rowsNumber)
|
||||
console.log('refresh_infscroll', 'pag', pagination.value.rowsNumber, 'done', done)
|
||||
rowclicksel.value = null
|
||||
|
||||
onUpdateData(0,
|
||||
@@ -1197,7 +1209,7 @@ export default defineComponent({
|
||||
|
||||
|
||||
function refresh() {
|
||||
// console.log('refresh', 'startsearch', startsearch.value)
|
||||
console.log('refresh', 'startsearch', startsearch.value)
|
||||
|
||||
clickbuttsearch.value = true
|
||||
// console.log('refresh')
|
||||
@@ -1508,12 +1520,13 @@ export default defineComponent({
|
||||
myvertical.value = props.vertical
|
||||
// myvertical.value = tools.getCookie('myv_' + props.prop_mytable, props.vertical)
|
||||
|
||||
showfilter.value = tools.getCookie('s_adv', '0') !== '0'
|
||||
showfilter.value = props.prop_showfilter || (tools.getCookie('s_adv', '0') !== '0')
|
||||
}
|
||||
|
||||
function mounted() {
|
||||
searchList.value = props.prop_searchList
|
||||
|
||||
|
||||
// console.log('GridTable mounted', tablesel.value)
|
||||
|
||||
// console.log('props.filtercustom', props.filtercustom)
|
||||
@@ -1548,7 +1561,8 @@ export default defineComponent({
|
||||
|
||||
// console.log('2) tablesel', tablesel.value)
|
||||
|
||||
changeTable(tablesel.value)
|
||||
changeTable(tablesel.value, true)
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1696,7 +1710,7 @@ export default defineComponent({
|
||||
}
|
||||
}
|
||||
|
||||
function changeTable(mysel: any) {
|
||||
function changeTable(mysel: any, mounted: boolean) {
|
||||
// console.log('changeTable', tablesel.value)
|
||||
changetable.value = true
|
||||
if (tablesel.value === undefined || tablesel.value === '')
|
||||
@@ -2171,7 +2185,7 @@ export default defineComponent({
|
||||
|
||||
if (index > 1) {
|
||||
// console.log('onLoadScroll', index, 'RECLOAD', numRecLoaded.value, 'ROWS: ', pagination.value.rowsNumber, 'PAGE: ', pagination.value.page)
|
||||
if (numRecLoaded.value < pagination.value.rowsNumber || (pagination.value.rowsNumber <= 0 && clickbuttsearch.value)) {
|
||||
if ((numRecLoaded.value < pagination.value.rowsNumber || (pagination.value.rowsNumber <= 0 && clickbuttsearch.value))) {
|
||||
if (pagination.value.rowsNumber === 0) {
|
||||
pagination.value.page = 0
|
||||
}
|
||||
@@ -2369,6 +2383,9 @@ export default defineComponent({
|
||||
lengthopt,
|
||||
update_col,
|
||||
startsearch,
|
||||
getNumRecFromQuery,
|
||||
actmonth,
|
||||
alreadymounting,
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
@@ -66,19 +66,27 @@
|
||||
<q-spinner-tail size="2em" color="primary" />
|
||||
</q-inner-loading>
|
||||
|
||||
<CTitleBanner
|
||||
v-if="subtitle"
|
||||
:title="subtitle"
|
||||
bgcolor="bg-blue"
|
||||
clcolor="text-white"
|
||||
>
|
||||
</CTitleBanner>
|
||||
|
||||
<div v-if="shared_consts.VERTIC_SHOW_GRID.includes(myvertical)">
|
||||
<div v-if="(prop_search || canEdit) && finder" class="q-my-xs text-right">
|
||||
<!--<q-btn
|
||||
size="sm"
|
||||
dense
|
||||
icon="fas fa-filter"
|
||||
:label="$t('grid.showfilters')"
|
||||
:label="t('grid.showfilters')"
|
||||
@click="showfilter = !showfilter"
|
||||
></q-btn>
|
||||
-->
|
||||
</div>
|
||||
<q-slide-transition>
|
||||
<div v-show="showfilter || prop_showfilter">
|
||||
<div v-show="showfilter">
|
||||
<div
|
||||
v-show="searchList"
|
||||
:class="$q.screen.lt.sm ? `` : `row` + ` text-blue `"
|
||||
@@ -89,7 +97,7 @@
|
||||
v-if="
|
||||
(item.type === costanti.FieldType.select ||
|
||||
item.type === costanti.FieldType.select_by_server) &&
|
||||
lengthopt(item, false) > 1
|
||||
lengthopt(item, false, false) > 1
|
||||
"
|
||||
:label="labelcombo(item)"
|
||||
v-model:value="item.value"
|
||||
@@ -108,7 +116,7 @@
|
||||
:icon_alternative="item.icon"
|
||||
:optval="fieldsTable.getKeyByTable(item.table)"
|
||||
:optlab="fieldsTable.getLabelByTable(item.table)"
|
||||
:options="valoriopt(item, false)"
|
||||
:options="valoriopt(item, false, false)"
|
||||
:filter="item.filter"
|
||||
:filter_extra="item.filter_extra"
|
||||
:useinput="
|
||||
@@ -236,7 +244,7 @@
|
||||
>
|
||||
<q-btn
|
||||
dense
|
||||
label="Filtra Ricerca"
|
||||
:label="!showfilter ? 'Apri Filtri' : 'Chiudi Filtri'"
|
||||
color="positive"
|
||||
icon="fas fa-filter"
|
||||
@click="showfilter = !showfilter"
|
||||
@@ -249,18 +257,11 @@
|
||||
{{ getNumFilterSelected() }}
|
||||
</q-badge>
|
||||
</q-btn>
|
||||
<q-btn
|
||||
dense
|
||||
icon="add"
|
||||
color="primary"
|
||||
@click="createNewRecordDialog"
|
||||
/>
|
||||
|
||||
<q-btn
|
||||
dense
|
||||
color="orange"
|
||||
icon="fas fa-bell"
|
||||
label="Avvisami se..."
|
||||
label="Notifiche"
|
||||
@click="showNotification = !showNotification"
|
||||
></q-btn>
|
||||
</div>
|
||||
@@ -272,11 +273,14 @@
|
||||
type="search"
|
||||
debounce="500"
|
||||
:hint="hint"
|
||||
:error-message="noresultLabel"
|
||||
:error="getNumRecFromQuery() === 0 && !startsearch"
|
||||
label="Cerca"
|
||||
v-on:keyup.enter="doSearch"
|
||||
>
|
||||
<template v-slot:prepend>
|
||||
<q-icon name="search" />
|
||||
<q-spinner-oval v-if="startsearch" color="primary" size="1em" />
|
||||
<q-icon v-else name="search" />
|
||||
</template>
|
||||
<template v-slot:after>
|
||||
<q-select
|
||||
@@ -320,7 +324,7 @@
|
||||
multiple
|
||||
dense
|
||||
options-dense
|
||||
:display-value="$t('grid.columns')"
|
||||
:display-value="t('grid.columns')"
|
||||
emit-value
|
||||
map-options
|
||||
:options="mycolumns"
|
||||
@@ -330,11 +334,13 @@
|
||||
</q-select>
|
||||
</div>
|
||||
|
||||
<div v-if="pagination.rowsNumber === 1 && prop_search">
|
||||
{{ pagination.rowsNumber }} elemento trovato
|
||||
</div>
|
||||
<div v-if="pagination.rowsNumber > 1 && prop_search">
|
||||
{{ pagination.rowsNumber }} {{ labelElemFind }}
|
||||
<div class="q-ma-sm">
|
||||
<div v-if="pagination.rowsNumber === 1 && prop_search">
|
||||
{{ pagination.rowsNumber }} elemento trovato
|
||||
</div>
|
||||
<div v-if="pagination.rowsNumber > 1 && prop_search">
|
||||
{{ pagination.rowsNumber }} {{ labelElemFind }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div v-if="choose_visutype && $q.screen.gt.xs" class="">
|
||||
@@ -355,15 +361,16 @@
|
||||
</div>
|
||||
<q-infinite-scroll
|
||||
ref="myinfscroll"
|
||||
v-if="shared_consts.VERTIC_SHOW_GRID.includes(myvertical) && !loading"
|
||||
v-if="
|
||||
shared_consts.VERTIC_SHOW_GRID.includes(myvertical) &&
|
||||
!loading &&
|
||||
alreadymounting
|
||||
"
|
||||
:initial-index="0"
|
||||
@load="onLoadScroll"
|
||||
:offset="350"
|
||||
debounce="300"
|
||||
>
|
||||
<div v-if="numRecLoaded === 0 && !startsearch">
|
||||
<div class="text-grey text-italic">{{ nodataLabel }}</div>
|
||||
</div>
|
||||
<div v-if="showHeaderCol">
|
||||
<div
|
||||
v-for="col in mycolumns"
|
||||
@@ -571,13 +578,15 @@
|
||||
</div>
|
||||
</div>
|
||||
<template v-slot:loading>
|
||||
<div class="row justify-center q-my-md">
|
||||
<q-spinner-dots color="primary" size="40px" />
|
||||
</div>
|
||||
<div class="row justify-center q-my-md">
|
||||
<q-spinner-dots color="primary" size="40px" />
|
||||
</div>
|
||||
</template>
|
||||
</q-infinite-scroll>
|
||||
<q-table
|
||||
v-else
|
||||
v-else-if="
|
||||
!shared_consts.VERTIC_SHOW_GRID.includes(myvertical) && !loading
|
||||
"
|
||||
:grid="shared_consts.VERTIC_SHOW_GRID.includes(myvertical)"
|
||||
:grid-header="
|
||||
shared_consts.VERTIC_SHOW_GRID.includes(myvertical) &&
|
||||
@@ -654,15 +663,6 @@
|
||||
>
|
||||
<span style="display: none">{{ (actual = null) }}</span>
|
||||
|
||||
<q-btn
|
||||
v-if="enableExport"
|
||||
color="primary"
|
||||
icon-right="archive"
|
||||
:label="t('export.csv')"
|
||||
no-caps
|
||||
@click="exportTable"
|
||||
/>
|
||||
|
||||
<q-select
|
||||
:behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'"
|
||||
v-if="tablesList"
|
||||
@@ -677,6 +677,15 @@
|
||||
>
|
||||
</q-select>
|
||||
|
||||
<q-btn
|
||||
v-if="enableExport"
|
||||
color="primary"
|
||||
icon-right="archive"
|
||||
:label="t('export.csv')"
|
||||
no-caps
|
||||
@click="exportTable"
|
||||
/>
|
||||
|
||||
<div class="row">
|
||||
<q-toggle
|
||||
v-for="(filt, index) of arrfilters"
|
||||
@@ -857,6 +866,8 @@
|
||||
type="search"
|
||||
debounce="500"
|
||||
:hint="hint"
|
||||
:error-message="noresultLabel"
|
||||
:error="getNumRecFromQuery() === 0 && !startsearch"
|
||||
label="Cerca"
|
||||
v-on:keyup.enter="doSearch"
|
||||
>
|
||||
@@ -889,7 +900,7 @@
|
||||
multiple
|
||||
dense
|
||||
options-dense
|
||||
:display-value="$t('grid.columns')"
|
||||
:display-value="t('grid.columns')"
|
||||
emit-value
|
||||
map-options
|
||||
:options="mycolumns"
|
||||
@@ -1278,13 +1289,13 @@
|
||||
</q-card-section>
|
||||
<q-card-actions align="center">
|
||||
<q-btn
|
||||
:label="$t('dialog.insert')"
|
||||
:label="t('dialog.insert')"
|
||||
color="primary"
|
||||
@click="saveNewRecord"
|
||||
></q-btn>
|
||||
<q-btn
|
||||
flat
|
||||
:label="$t('dialog.cancel')"
|
||||
:label="t('dialog.cancel')"
|
||||
color="primary"
|
||||
v-close-popup
|
||||
@click="annulla"
|
||||
@@ -1352,13 +1363,13 @@
|
||||
</q-card-section>
|
||||
<q-card-actions align="center">
|
||||
<q-btn
|
||||
:label="$t('dialog.save')"
|
||||
:label="t('dialog.save')"
|
||||
color="primary"
|
||||
@click="saveNewRecord"
|
||||
></q-btn>
|
||||
<q-btn
|
||||
flat
|
||||
:label="$t('dialog.cancel')"
|
||||
:label="t('dialog.cancel')"
|
||||
color="primary"
|
||||
v-close-popup
|
||||
@click="annulla"
|
||||
@@ -1417,13 +1428,13 @@
|
||||
</q-card-section>
|
||||
<q-card-actions align="center">
|
||||
<q-btn
|
||||
:label="$t('dialog.ok')"
|
||||
:label="t('dialog.ok')"
|
||||
color="primary"
|
||||
@click="saverecModif"
|
||||
></q-btn>
|
||||
<q-btn
|
||||
flat
|
||||
:label="$t('dialog.cancel')"
|
||||
:label="t('dialog.cancel')"
|
||||
color="primary"
|
||||
@click="cancelrecModif"
|
||||
></q-btn>
|
||||
|
||||
Reference in New Issue
Block a user