- Gruppi si chiamano ora "Organizzazioni".

- Categorie dei Gruppi aggiornate.
- Email ora compare sul profilo se non hai telegram e anche sugli annunci.
This commit is contained in:
Surya Paolo
2025-01-28 23:32:37 +01:00
parent 17bcc1644d
commit d65d4e3ffa
59 changed files with 555 additions and 328 deletions

View File

@@ -1,12 +1,16 @@
<template>
<div
v-if="(getLinkUserTelegram() && tools.isUserOk()) || showBtnActivities"
v-if="
((getLinkUserTelegram() || (myuser.email && tools.isEmailVerified())) &&
tools.isUserOk()) ||
showBtnActivities
"
class=""
>
<q-inner-loading id="spinner" :showing="loading">
<q-spinner-tail color="primary" size="4em"> </q-spinner-tail>
</q-inner-loading>
<div class="row justify-evenly items-center q-ma-xs">
<div class="row justify-center items-center q-ma-xs">
<div class="q-pa-xs">
<q-btn
v-if="
@@ -49,28 +53,34 @@
target="__blank"
>
</q-btn>
<div v-else-if="myuser.email && tools.isUserOk()" class="row q-ma-sx">
<CLabel
v-bind="$attrs"
:copy="true"
:value="tools.isUserOk() ? myuser.email : ''"
:label="$t('reg.email')"
/>
<q-btn
outline
icon="fas fa-envelope"
:color="$q.dark.isActive ? `white` : `black`"
:type="tools.isUserOk() ? 'a' : 'btn'"
size="md"
:label="$t('msgs.send_email')"
:href="tools.isUserOk() ? tools.getemailto(myuser.email) : null"
@click="
!tools.isUserOk() ? (showingtooltip = !showingtooltip) : false
"
target="__blank"
>
</q-btn>
<div
v-else-if="myuser.email && !tools.isUsernameTelegOk()"
class="row justify-center q-ma-sx"
>
<div>
<CLabel
v-bind="$attrs"
:copy="true"
:value="!tools.isUsernameTelegOk() ? myuser.email : ''"
:label="$t('reg.email')"
/>
</div>
<div>
<q-btn
outline
icon="fas fa-envelope"
:color="$q.dark.isActive ? `white` : `black`"
:type="tools.isUserOk() ? 'a' : 'btn'"
size="md"
:label="$t('msgs.write_email')"
:href="tools.isUserOk() ? tools.getemailto(myuser.email) : null"
@click="
!tools.isUserOk() ? (showingtooltip = !showingtooltip) : false
"
target="__blank"
>
</q-btn>
</div>
</div>
</div>
</div>

View File

@@ -1182,7 +1182,8 @@ export default defineComponent({
arrvalue: [],
filter: null,
useinput: false,
icon: 'fas fa-globe-europe'
icon: 'fas fa-globe-europe',
filteradv: true,
},
{
visible: true,
@@ -1196,6 +1197,7 @@ export default defineComponent({
addall: true,
useinput: false,
icon: 'engineering',
filteradv: true,
},
{
visible: true,
@@ -1209,6 +1211,7 @@ export default defineComponent({
useinput: true,
filter: null,
tablesel: 'visibility',
filteradv: true,
},
{
visible: true,

View File

@@ -20,16 +20,40 @@
:img-src="directory + '/' + myimg.imagefile"
@click="showImage(myimg)"
>
<div
v-if="myimg.description"
class="absolute-bottom custom-caption text-center subtitle"
>
{{ myimg.description }}
</div>
</q-carousel-slide>
</q-carousel>
<q-dialog v-model="dialogVisible">
<q-img
mode="contain"
v-if="selectedImage.imagefile"
:src="directory + '/' + selectedImage.imagefile"
:alt="selectedImage.imagefile"
/>
<q-btn color="primary" :label="t('dialog.close')" @click="closeDialog" />
<q-dialog v-model="dialogVisible" maximized>
<div class="q-ma-sm column justify-center">
<q-img
mode="contain"
v-if="selectedImage.imagefile"
:src="directory + '/' + selectedImage.imagefile"
:alt="selectedImage.imagefile"
@click="closeDialog"
>
<div
v-if="selectedImage.description"
class="absolute-bottom custom-caption text-center"
>
<div class="subtitle">{{ selectedImage.description }}</div>
</div>
</q-img>
<div>
<div class="text-center">
<q-btn
color="primary"
:label="t('dialog.close')"
@click="closeDialog"
/>
</div>
</div>
</div>
</q-dialog>
</template>

View File

@@ -2429,8 +2429,8 @@ export default defineComponent({
function showColCheck(col: IColGridTable, tipovis: number, visulabel: boolean, value: any = '', record: any = null) {
// if (col.isadvanced_field && !showfilteradv.value)
// return false
if (col.isadvanced_field && !showfilteradv.value)
return false
const check = tools.checkIfShowField(col, tipovis, visulabel, value)

View File

@@ -1404,10 +1404,19 @@
v-for="col in mycolumns"
:key="col.name"
>
<!--<div class="text-center q-my-xs" v-if="(col.fieldtype === costanti.FieldType.separator)">
<q-btn color="primary" size="md" dense :icon="!showfilteradv ? 'fas fa-arrow-down' : 'fas fa-arrow-up'"
label="Campi Avanzati" @click="showfilteradv = !showfilteradv"></q-btn>
</div>-->
<div
class="text-center q-my-xs"
v-if="col.fieldtype === costanti.FieldType.separator"
>
<q-btn
color="primary"
size="md"
dense
:icon="!showfilteradv ? 'fas fa-arrow-down' : 'fas fa-arrow-up'"
:label="$t('grid.show_campi_avanzati')"
@click="showfilteradv = !showfilteradv"
></q-btn>
</div>
<div
v-if="
showColCheck(
@@ -1473,12 +1482,21 @@
</q-bar>
<q-card-section class="inset-shadow">
<div v-for="col in mycolumns" :key="col.name">
<!--<div class="text-center q-my-xs" v-if="(col.fieldtype === costanti.FieldType.separator)">
<q-btn color="primary" size="md" dense :icon="!showfilteradv ? 'fas fa-arrow-down' : 'fas fa-arrow-up'"
label="Campi Avanzati" @click="showfilteradv = !showfilteradv"></q-btn>
</div>-->
<div
v-if="
class="text-center q-my-xs"
v-if="col.fieldtype === costanti.FieldType.separator"
>
<q-btn
color="primary"
size="md"
dense
:icon="!showfilteradv ? 'fas fa-arrow-down' : 'fas fa-arrow-up'"
:label="$t('grid.show_campi_avanzati')"
@click="showfilteradv = !showfilteradv"
></q-btn>
</div>
<div
v-else-if="
showColCheck(col, tools.TIPOVIS_EDIT_RECORD, false) &&
col.foredit
"

View File

@@ -2400,6 +2400,7 @@ export default defineComponent({
showInnerDialog,
lengthopt,
update_col,
showfilteradv,
}
}
})

View File

@@ -304,10 +304,19 @@
v-for="col in mycolumns"
:key="col.name"
>
<!--<div class="text-center q-my-xs" v-if="(col.fieldtype === costanti.FieldType.separator)">
<q-btn color="primary" size="md" dense :icon="!showfilteradv ? 'fas fa-arrow-down' : 'fas fa-arrow-up'"
label="Campi Avanzati" @click="showfilteradv = !showfilteradv"></q-btn>
</div>-->
<div
class="text-center q-my-xs"
v-if="col.fieldtype === costanti.FieldType.separator"
>
<q-btn
color="primary"
size="md"
dense
:icon="!showfilteradv ? 'fas fa-arrow-down' : 'fas fa-arrow-up'"
:label="$t('grid.show_campi_avanzati')"
@click="showfilteradv = !showfilteradv"
></q-btn>
</div>
<div
v-if="
showColCheck(
@@ -373,10 +382,19 @@
</q-bar>
<q-card-section class="inset-shadow">
<div v-for="col in mycolumns" :key="col.name">
<!--<div class="text-center q-my-xs" v-if="(col.fieldtype === costanti.FieldType.separator)">
<q-btn color="primary" size="md" dense :icon="!showfilteradv ? 'fas fa-arrow-down' : 'fas fa-arrow-up'"
label="Campi Avanzati" @click="showfilteradv = !showfilteradv"></q-btn>
</div>-->
<div
class="text-center q-my-xs"
v-if="col.fieldtype === costanti.FieldType.separator"
>
<q-btn
color="primary"
size="md"
dense
:icon="!showfilteradv ? 'fas fa-arrow-down' : 'fas fa-arrow-up'"
:label="$t('grid.show_campi_avanzati')"
@click="showfilteradv = !showfilteradv"
></q-btn>
</div>
<div
v-if="
showColCheck(col, tools.TIPOVIS_EDIT_RECORD, false) &&

View File

@@ -40,6 +40,16 @@
</div>
<q-card-section>
<span v-for="(rec, ind) of myaccount.recCatGrp" :key="ind">
<q-chip
dense
class="text-center shadow-5 glossy chipmodif text-white"
:style="`background-color: ${rec.color};`"
>
<q-icon :name="rec.icon" left />
{{ rec.descr }}</q-chip
></span
>
<div v-if="myaccount.date_created" class="container">
<q-icon name="fas fa-lightbulb" class="iconcirc"></q-icon>
{{

View File

@@ -233,13 +233,8 @@
:label="col.visulabel ? $t(col.label_trans) : col.label"
>
</q-input>
<q-field v-if="col.showLinkResult">
Diventerà:
<a
:href="tools.generateURL(col.showLinkResult, myvalue)"
target="_blank"
>{{ tools.generateURL(col.showLinkResult, myvalue) }}</a
>
<q-field v-if="col.showLinkResult && myvalue">
Diventerà: {{ tools.generateURL(col.showLinkResult, myvalue) }}
</q-field>
</div>
<div

View File

@@ -1,62 +1,137 @@
<template>
<div class="q-py-xs centermydiv cardrec"
:style="`max-width: `+ (tools.getwidth($q) - 20) +`px; ` + ($q.screen.lt.sm ? (`min-width: `+ (tools.getwidth($q) - 20) +`px;`) : ``)">
<q-item v-if="myrec" clickable v-ripple :class="`shadow-2 q-btn--rounded `+ ($q.dark.isActive ? `bg-black`: `bg-teal-1`)">
<q-item-section v-if="(shared_consts.TABLES_VISU_IMG.includes(table)) && (myrec.photos && myrec.photos.length > 0)" avatar
@click="cmdExt(costanti.CMD_OPEN_PAGE, myrec)">
<div
class="q-py-xs centermydiv cardrec"
:style="
`max-width: ` +
(tools.getwidth($q) - 20) +
`px; ` +
($q.screen.lt.sm ? `min-width: ` + (tools.getwidth($q) - 20) + `px;` : ``)
"
>
<q-item
v-if="myrec"
clickable
v-ripple
:class="
`shadow-2 q-btn--rounded ` +
($q.dark.isActive ? `bg-black` : `bg-teal-1`)
"
>
<q-item-section
v-if="
shared_consts.TABLES_VISU_IMG.includes(table) &&
myrec.photos &&
myrec.photos.length > 0
"
avatar
@click="cmdExt(costanti.CMD_OPEN_PAGE, myrec)"
>
<q-avatar size="60px">
<q-img :src="tools.getFullFileName(myrec.photos, table, myrec.username, myrec.groupname)" :alt="myrec.descr"
img-class="imgprofile" height="60px"/>
<q-img
:src="
tools.getFullFileName(
myrec.photos,
table,
myrec.username,
myrec.groupname
)
"
:alt="myrec.descr"
img-class="imgprofile"
height="60px"
/>
</q-avatar>
</q-item-section>
<q-item-section v-else avatar>
<q-avatar size="60px">
<q-img :src="getImgUser(myrec)" :alt="myrec.username" img-class="imgprofile" height="60px"/>
<q-img
:src="getImgUser(myrec)"
:alt="myrec.username"
img-class="imgprofile"
height="60px"
/>
</q-avatar>
</q-item-section>
<q-item-section @click="cmdExt(costanti.CMD_OPEN_PAGE, null, myrec)">
<q-item-label class="full-width">
<span v-for="(rec, ind) of myrec.recCatGrp" :key="ind"> <q-chip
<q-item-label class="row no-wrap" style="overflow-x: auto; white-space: nowrap;">
<q-chip
v-for="(rec, ind) of myrec.recCatGrp"
:key="ind"
dense
class="text-center shadow-5 glossy bg-blue chipmodif">{{ rec.descr }}</q-chip></span>
class="text-center shadow-5 glossy chipmodif text-white"
:style="`background-color: ${rec.color};`"
>
<q-icon :name="rec.icon" left />
{{ rec.descr }}</q-chip
>
<!--<span class="dateevent" v-if="myrec.dateTimeStart">dal <span class="datainizio">{{tools.getstrVeryShortDate(myrec.dateStart) }}</span> al <span class="datafine">{{ tools.getstrVeryShortDate(myrec.dateEnd) }}</span>
</span>-->
</q-item-label>
<q-item-label v-if="myrec.title" lines="1" :class="($q.dark.isActive ? `text_title_dark`: `text_title`)">
<q-item-label
v-if="myrec.title"
lines="1"
:class="$q.dark.isActive ? `text_title_dark` : `text_title`"
>
<span class="text-weight-bold">{{ myrec.title }}</span>
</q-item-label>
<q-item-label lines="3" v-if="myrec.descr">{{ myrec.descr }}<br>
<q-item-label lines="3" v-if="myrec.descr"
>{{ myrec.descr }}<br />
</q-item-label>
<q-item-label lines="1" style="text-align: right" class="text_user_city">
<span v-if="myrec.visibility && myrec.visibility.includes(shared_consts.Visibility_Group.PRIVATE)" class="q-mr-xs">
<q-icon name="fas fa-lock"></q-icon></span>
<span v-if="myrec.visibility && myrec.visibility.includes(shared_consts.Visibility_Group.HIDDEN)" class="q-mr-xs">
<q-icon name="fas fa-eye-slash"></q-icon></span>
<span v-for="(rec, ind) of myrec.mycities" :key="ind"><span v-if="ind > 0">, </span>{{ rec.comune }}</span>
<q-item-label
lines="1"
style="text-align: right"
class="text_user_city"
>
<span
v-if="
myrec.visibility &&
myrec.visibility.includes(shared_consts.Visibility_Group.PRIVATE)
"
class="q-mr-xs"
>
<q-icon name="fas fa-lock"></q-icon
></span>
<span
v-if="
myrec.visibility &&
myrec.visibility.includes(shared_consts.Visibility_Group.HIDDEN)
"
class="q-mr-xs"
>
<q-icon name="fas fa-eye-slash"></q-icon
></span>
<span v-for="(rec, ind) of myrec.mycities" :key="ind"
><span v-if="ind > 0">, </span>{{ rec.comune }}</span
>
</q-item-label>
</q-item-section>
<q-item-section side v-if="tools.canModifyThisRec(myrec, table)">
<q-item-label>
<q-btn rounded dense icon="fas fa-pencil-alt">
<q-menu>
<q-list style="min-width: 150px">
<q-item clickable v-close-popup
@click="cmdExt(costanti.CMD_MODIFY, myrec._id, null)">
<q-item
clickable
v-close-popup
@click="cmdExt(costanti.CMD_MODIFY, myrec._id, null)"
>
<q-item-section side>
<q-icon name="fas fa-pencil-alt"/>
<q-icon name="fas fa-pencil-alt" />
</q-item-section>
<q-item-section>{{ $t('reg.edit') }}</q-item-section>
</q-item>
</q-list>
<q-list style="min-width: 150px">
<q-item clickable v-close-popup @click="cmdExt(costanti.CMD_DELETE, myrec._id, null)">
<q-item
clickable
v-close-popup
@click="cmdExt(costanti.CMD_DELETE, myrec._id, null)"
>
<q-item-section side>
<q-icon name="fas fa-trash-alt"/>
<q-icon name="fas fa-trash-alt" />
</q-item-section>
<q-item-section>{{ $t('reg.elimina') }}</q-item-section>
</q-item>
@@ -65,11 +140,9 @@
</q-btn>
</q-item-label>
</q-item-section>
</q-item>
<q-separator inset="item"/>
<q-separator inset="item" />
</div>
</template>
<script lang="ts" src="./CMyRecGrpCard.ts">

View File

@@ -385,7 +385,8 @@ export default defineComponent({
}
myarrvalue.value = []
for (const val of props.arrvalue) {
let myarr = props.arrvalue
for (const val of myarr) {
rec = arrtempOpt.value.find((myrec: any) => val === (myrec[`${props.optval}`]))
if (rec) {
myarrvalue.value.push(rec[`${props.optval}`])
@@ -412,8 +413,13 @@ export default defineComponent({
if (props.multiple) {
let arrrec = []
if (props.arrvalue) {
for (const val of props.arrvalue) {
let myarr = props.arrvalue
if (myarr && !tools.isArray(myarr)) {
myarr = [myarr]
}
if (myarr) {
for (const val of myarr) {
rec = optionsreal.value.find((myrec: any) => val === (myrec[`${props.optval}`]))
if (rec) {
arrrec.push(rec[`${props.optval}`])

View File

@@ -41,7 +41,7 @@
<em>{{ contact.profile.qualifica }}</em>
<span v-if="tools.isFacil() && contact.profile.note"><span v-if="contact.profile.qualifica"><br></span><em style="color: blue;">Note: {{ contact.profile.note }}</em></span>
<span v-if="tools.isFacil() && contact.profile.da_contattare"><br><em style="color: red;">Da Contattare</em></span>
<span v-if="tools.isBitActive(contact.perm, shared_consts.Permissions.Facilitatore.value)"><br><em style="color: blue;"> Facilitatore RISO</em></span>
<!--<span v-if="tools.isBitActive(contact.perm, shared_consts.Permissions.Facilitatore.value)"><br><em style="color: blue;"> Facilitatore RISO</em></span>-->
</q-item-label
>
<q-item-label caption lines="1"></q-item-label>
@@ -326,7 +326,7 @@
<q-list style="min-width: 150px">
<q-item
clickable
v-if="!tools.isUserAdminGroup(groupname, contact.username)"
v-if="!tools.isUserAdminGroup(groupname, contact.username, true)"
v-close-popup
@click="
tools.addtoAdminOfMyGroup($q, contact.username, groupname)
@@ -340,7 +340,7 @@
<q-item
clickable
v-if="
tools.isUserAdminGroup(groupname, contact.username) &&
tools.isUserAdminGroup(groupname, contact.username, true) &&
tools.iAmTheCreatorOfTheGroup(groupname)
"
v-close-popup
@@ -517,7 +517,7 @@
<q-item
clickable
v-if="
!tools.isUserAdminCircuit(circuitname, contact.username)
!tools.isUserAdminCircuit(circuitname, contact.username, true)
"
v-close-popup
@click="
@@ -534,7 +534,7 @@
<q-item
clickable
v-if="
tools.isUserAdminCircuit(circuitname, contact.username) &&
tools.isUserAdminCircuit(circuitname, contact.username, true) &&
tools.iAmTheCreatorOfTheCircuit(circuitname)
"
v-close-popup
@@ -594,7 +594,7 @@
<q-item
clickable
v-if="
!tools.isUserAdminCircuit(circuitname, contact.username)
!tools.isUserAdminCircuit(circuitname, contact.username, true)
"
v-close-popup
@click="
@@ -611,7 +611,7 @@
<q-item
clickable
v-if="
tools.isUserAdminCircuit(circuitname, contact.username) &&
tools.isUserAdminCircuit(circuitname, contact.username, true) &&
tools.iAmTheCreatorOfTheCircuit(circuitname)
"
v-close-popup

View File

@@ -201,7 +201,7 @@
<q-list style="min-width: 150px">
<q-item
clickable
v-if="!tools.isUserAdminGroup(groupname, contact.username)"
v-if="!tools.isUserAdminGroup(groupname, contact.username, true)"
v-close-popup
@click="
tools.addtoAdminOfMyGroup($q, contact.username, groupname)
@@ -215,7 +215,7 @@
<q-item
clickable
v-if="
tools.isUserAdminGroup(groupname, contact.username) &&
tools.isUserAdminGroup(groupname, contact.username, true) &&
tools.iAmTheCreatorOfTheGroup(groupname)
"
v-close-popup