Files
myprojplanet_vite/src/components/CMyCardService/CMyCardService.vue

1635 lines
56 KiB
Vue

<template>
<div
v-if="myrec && myrec._id"
:class="$q.screen.lt.md || nopopup ? ' fulldiv ' : ' well-positioned-dialog'"
>
<div :class="'items-start ' + (!isSmall ? ' q-gutter-xs full-height ' : '')">
<div class="row">
<q-toolbar
v-if="!nopopup"
dense
class="bg-blue text-white riempi"
>
<q-toolbar-title> {{ tools.getTitleAnnuncio(table) }}</q-toolbar-title>
<q-btn
v-if="!isSmall && showAnteprima"
:label="isSmall ? 'Apri scheda' : 'Riduci scheda'"
@click="toggleShowScheda"
text-color="purple"
:icon="!isSmall ? 'keyboard_arrow_up' : 'keyboard_arrow_down'"
class="q-mr-sm"
/>
<q-btn
flat
round
icon="close"
v-close-popup
></q-btn>
</q-toolbar>
<q-card
ref="cardRef"
:style="cardStyle"
:class="'my-card visudialog no-padding '"
bordered
>
<q-card-section>
<div v-if="!isSmall">
<CGalleryImages
v-if="myrec.photos.length > 0"
:imgGallery="myrec.photos"
:directory="
tools.getDirUpload() + tools.getDirectoryGall(myrec, table, '')
"
>
</CGalleryImages>
<div
v-else
class="text-center"
>
<img
class="text-center"
:src="tools.getimglogo()"
height="50"
alt="Immagine Logo"
/>
</div>
</div>
<div
v-if="!isSmall"
class="absolute-top-right q-mr-sm q-my-md"
>
<div class="column">
<q-btn
flat
round
icon="fas fa-ellipsis-h"
style="z-index: 1"
>
<q-menu>
<q-list
v-if="true"
style="min-width: 200px"
>
<q-item
v-if="myrec.profile && myrec.profile.username_telegram"
clickable
v-close-popup
@click.stop="tools.copyToClip($q, getlinkpage(), true)"
>
<q-item-section avatar>
<q-icon
color="blue"
name="fas fa-share"
/>
</q-item-section>
<q-item-section>
{{ $t('reaction.condividi') }}
</q-item-section>
</q-item>
<q-item
v-if="myrec.profile && myrec.profile.username_telegram"
clickable
v-close-popup
>
<q-item-section avatar>
<q-icon
color="blue"
name="telegram"
/>
</q-item-section>
<q-item-section>
<a
v-if="myrec.profile && myrec.profile.username_telegram"
:href="
tools.getHttpForTelegram(myrec.profile.username_telegram)
"
target="_blank"
>{{ $t('dialog.telegram') }} -
{{ tools.getNomeUtenteByRecUser(myrec) }}</a
>
</q-item-section>
</q-item>
<q-item
v-else-if="myrec.profile && !myrec.profile.username_telegram"
clickable
v-close-popup
>
<q-item-section avatar>
<q-icon
color="blue"
name="email"
/>
</q-item-section>
<q-item-section>
<a
v-if="myrec.email"
:href="
tools.isUserOk() ? tools.getemailto(myrec.email) : null
"
target="_blank"
>{{ $t('msgs.write_email') }} -
{{ tools.getNomeUtenteByRecUser(myrec) }}</a
>
</q-item-section>
</q-item>
<q-item
v-if="!nopopup && myrec.myreact"
clickable
v-close-popup
@click.stop="naviga(tools.getPathByTableAndRec(table, myrec))"
>
<q-item-section avatar>
<q-icon
color="blue"
name="fas fa-globe"
/>
</q-item-section>
<q-item-section>
{{ $t('event.openpage') }}
</q-item-section>
</q-item>
<q-separator />
<q-item
v-if="myrec"
clickable
v-close-popup
@click.stop="
clicca(
costanti.TIPOFAVBOOK.SEEN,
false,
t('cmd.seen', {
num: myrec.numseen ? myrec.numseen : 0,
})
)
"
>
<q-item-section avatar>
<q-icon
color="blue"
name="far fa-eye"
/>
</q-item-section>
<q-item-section>
{{
$t('cmd.seen', {
num: myrec.numseen ? myrec.numseen : 0,
})
}}
</q-item-section>
</q-item>
<q-item
v-if="myrec"
clickable
v-close-popup
@click.stop="
clicca(
costanti.TIPOFAVBOOK.FAVORITE,
false,
t('cmd.favorite', {
num: myrec.numfav ? myrec.numfav : 0,
})
)
"
>
<q-item-section avatar>
<q-icon
color="red"
name="favorite"
/>
</q-item-section>
<q-item-section>
{{
$t('cmd.favorite', {
num: myrec.numfav ? myrec.numfav : 0,
})
}}
</q-item-section>
</q-item>
<q-item
v-if="table === shared_consts.TABLES_MYBACHECAS"
clickable
v-close-popup
@click.stop="
clicca(
costanti.TIPOFAVBOOK.ATTEND,
false,
t('cmd.attend', {
num: numpart,
})
)
"
>
<q-item-section avatar>
<q-icon
color="green"
name="fas fa-user-check"
/>
</q-item-section>
<q-item-section>
{{
$t('cmd.attend', {
num: numpart,
})
}}
</q-item-section>
</q-item>
<q-item
v-if="myrec"
clickable
v-close-popup
@click.stop="
clicca(
costanti.TIPOFAVBOOK.BOOKMARK,
false,
t('cmd.bookmark', {
num: myrec.numbook ? myrec.numbook : 0,
})
)
"
>
<q-item-section avatar>
<q-icon
color="teal"
name="bookmark"
/>
</q-item-section>
<q-item-section>
{{
$t('cmd.bookmark', {
num: myrec.numbook ? myrec.numbook : 0,
})
}}
</q-item-section>
</q-item>
</q-list>
</q-menu>
</q-btn>
<q-btn
flat
round
color="blue"
icon="share"
style="z-index: 1"
@click.stop="tools.copyToClip($q, getlinkpage(), true)"
>
</q-btn>
<q-btn
flat
round
color="blue"
icon="far fa-eye"
style="z-index: 1"
>
<q-badge
v-if="myrec"
text-color="primary"
color="white"
class="badge-favbook"
:label="myrec.numseen ? myrec.numseen : 0"
floating
transparent
/>
</q-btn>
<q-btn
style="z-index: 1"
v-if="table === shared_consts.TABLES_MYBACHECAS"
flat
round
color="green"
:icon="
calendarStore.isPartecipero(myrec._id, table)
? 'fas fa-user-check'
: 'far fa-check-circle'
"
@click.stop="EditBookEvent(true)"
>
<q-badge
v-if="myrec.mybookings"
style="z-index: 1"
text-color="primary"
color="white"
class="badge-favbook"
:label="numpart"
floating
transparent
/>
</q-btn>
<q-btn
style="z-index: 1"
flat
round
color="red"
:icon="
userStore.isFavorite(myrec._id, table) ? 'favorite' : 'far fa-heart'
"
@click.stop="clicca(costanti.TIPOFAVBOOK.FAVORITE, true, '')"
>
<q-badge
v-if="myrec"
text-color="primary"
color="white"
class="badge-favbook"
:label="myrec.numfav ? myrec.numfav : 0"
floating
transparent
/>
</q-btn>
<div class="">
<q-btn
style="z-index: 1"
flat
round
color="teal"
:icon="
userStore.isBookmarked(myrec._id, table)
? 'bookmark'
: 'far fa-bookmark'
"
@click.stop="clicca(costanti.TIPOFAVBOOK.BOOKMARK, true, '')"
>
<q-badge
v-if="myrec"
text-color="primary"
color="white"
class="badge-favbook"
:label="myrec.numbook ? myrec.numbook : 0"
floating
transparent
/>
</q-btn>
</div>
</div>
</div>
<q-separator v-if="!isSmall" />
<q-list style="z-index: 5">
<q-item v-if="myrec.tipodiAttivita">
<q-item-section avatar>
<q-icon
color="blue"
name="fas fa-balance-scale"
/>
</q-item-section>
<q-item-section>
<q-item-label class="text-bold text-h7">
<q-chip
dense
color="green"
text-color="white"
>{{ getTipodiAttivita() }}
</q-chip>
</q-item-label>
</q-item-section>
</q-item>
<q-item v-if="myrec.adType">
<q-item-section avatar>
<div
v-if="showBadge()"
class="text-center"
>
<q-chip
dense
:color="fieldsTable.getColByAdType(myrec.adType)"
text-color="white"
>{{ fieldsTable.getValByTabAndId(table, 'adType', myrec.adType) }}
</q-chip>
</div>
</q-item-section>
</q-item>
<q-item v-if="myrec.typeHosp">
<q-item-section avatar>
<q-icon
color="blue"
name="fas fa-balance-scale"
/>
</q-item-section>
<q-item-section>
<q-item-label class="text-bold text-h7">
<q-chip
dense
color="green"
text-color="white"
>{{ getTypeHosps() }}
</q-chip>
</q-item-label>
</q-item-section>
</q-item>
<q-item v-if="myrec.descr">
<q-item-section>
<q-item-label
v-if="table === shared_consts.TABLES_MYBACHECAS"
class="text-h6 text-bold"
>{{ myrec.descr }}</q-item-label
>
<q-item-label
v-else
class="text-h7"
>{{ myrec.descr }}</q-item-label
>
</q-item-section>
</q-item>
<!--<q-item v-if="table === shared_consts.TABLES_MYHOSPS">
<div
v-if="myrec.preferences && myrec.preferences.length > 0"
class="preferences-section q-mb-sm"
>
<div class="preferences-icons-container">
<q-avatar
v-for="(prefId, ind) of myrec.preferences"
:key="ind"
size="32px"
:style="`background-color: ${tools.getPreferenceById(prefId)?.color || 'grey'}; cursor: pointer;`"
class="preference-icon-avatar"
@click.stop="showPreferencesDialog = true"
>
<q-icon
:name="tools.getPreferenceById(prefId)?.icon || 'help'"
size="18px"
color="white"
/>
<q-tooltip>{{ tools.getPreferenceById(prefId)?.label }}</q-tooltip>
</q-avatar>
</div>
</div>
</q-item>-->
<q-item
v-if="
myrec.idStatusSkill &&
myrec.idStatusSkill.length > 0 &&
JSON.stringify(myrec.idStatusSkill) !== '[1]'
"
>
<q-item-section avatar>
<q-icon
color="green"
name="mood"
/>
</q-item-section>
<q-item-section>
<q-item-label>
<span
v-for="(recstatus, index) in myrec.idStatusSkill"
:key="index"
>
<q-chip
dense
:color="globalStore.getColByStatusSkills(recstatus)"
text-color="white"
>
{{ globalStore.getStatusSkillById(recstatus) }}
</q-chip>
</span>
</q-item-label>
</q-item-section>
</q-item>
<div v-if="!isSmall">
<q-item v-if="myrec.dateTimeStart">
<q-item-section avatar>
<q-icon
color="green"
name="far fa-calendar-alt"
/>
</q-item-section>
<q-item-section>
<q-item-label>
<span>{{
tools.getstrDateMonthTimeLong(myrec.dateTimeStart)
}}</span>
</q-item-label>
</q-item-section>
</q-item>
<q-item v-if="myrec.dateTimeEnd">
<q-item-section avatar>
<q-icon
color="red"
name="far fa-calendar-alt"
/>
</q-item-section>
<q-item-section>
<q-item-label>
<span>{{ tools.getstrDateMonthTimeLong(myrec.dateTimeEnd) }}</span>
</q-item-label>
</q-item-section>
</q-item>
<q-item v-if="getSectorByRec(myrec)">
<q-item-section avatar>
<q-icon
color="blue"
name="category"
/>
</q-item-section>
<q-item-section>
<q-item-label>
<div class="category-hierarchy">
<q-chip
v-for="(recSect, ind) of arrSector"
:key="'sec-' + ind"
class="tag-chip sector"
:style="{
background: `linear-gradient(135deg, ${recSect.color}, ${recSect.color})`,
}"
:color="recSect.color"
>
<q-icon
v-if="recSect.icon"
:name="recSect.icon"
size="xs"
class="q-mr-xs"
/>
{{ recSect.descr }}
</q-chip>
<q-icon
v-if="arrSubSector.length > 0"
name="chevron_right"
size="sm"
class="hierarchy-arrow"
/>
<q-chip
v-for="(rec, ind) of arrSubSector"
:key="'sub-' + ind"
class="tag-chip subsector"
:style="{
background: `linear-gradient(135deg, ${getColorSubSector}, ${getColorSubSector})`,
opacity: 0.8,
}"
:color="getColorSubSector"
>
<q-icon
v-if="rec.icon"
:name="rec.icon"
size="xs"
class="q-mr-xs"
/>
{{ rec.descr }}
</q-chip>
</div>
</q-item-label>
</q-item-section>
</q-item>
<q-item
v-if="myrec.numMaxPeopleHosp"
class="q-mt-sm"
>
<q-item-section avatar>
<q-icon
color="blue"
name="fas fa-users"
/>
</q-item-section>
<q-item-section>
<q-item-label class="q-px-xs q-ma-xs">
<span class="accom_maxosp">{{ myrec.numMaxPeopleHosp }}</span
>{{ t('hosps.numMaxPeopleHosp') }}
</q-item-label>
</q-item-section>
</q-item>
<q-item v-if="!!myrec.accomodation && myrec.accomodation.length > 0">
<q-item-section avatar>
<q-icon
color="orange"
name="fas fa-bed"
/>
</q-item-section>
<q-item-section>
<q-item-label>
<CAccomodation
v-if="!!myrec.accomodation"
:mylist="myrec.accomodation"
:isInModif="false"
:edit="false"
:canModify="false"
>
</CAccomodation>
</q-item-label>
</q-item-section>
</q-item>
<q-item v-if="!!myrec.preferences && myrec.preferences.length > 0">
<q-item-section avatar>
<q-icon
color="red"
name="fas fa-asterisk"
/>
</q-item-section>
<q-item-section>
<q-item-label>
<CMyChipList
:rec="myrec"
:type="costanti.FieldType.multiselect"
:value="myrec.preferences"
size="md"
:options="
globalStore.getTableJoinByName(
toolsext.TABPREF,
false,
false,
null
)
"
:optval="fieldsTable.getKeyByTable(toolsext.TABPREF)"
:optlab="fieldsTable.getLabelByTable(toolsext.TABPREF)"
:dense="false"
></CMyChipList>
</q-item-label>
</q-item-section>
</q-item>
<q-separator />
<q-item-label v-if="myrec.note"
><div
v-html="myrec.note"
class="q-my-sm clBorderService clDescrEstesa"
></div
></q-item-label>
<q-item
v-if="
myrec.mycities &&
myrec.mycities.length > 0 &&
myrec.mycities[0].comune
"
>
<q-item-section avatar>
<q-icon
color="amber"
name="fas fa-map-marker-alt"
/>
</q-item-section>
<q-item-section>
<q-item-label>
<div v-if="myrec.address">
{{ myrec.address }}
</div>
<span
v-for="(city, index) in myrec.mycities"
:key="index"
>
<span v-if="city.comune">
{{ city.comune }} ({{ city.prov }})</span
><span v-if="myrec.mycities.length > 1"> - </span>
</span>
</q-item-label>
<q-item-label
v-if="myrec.profile.qualifica"
caption
>{{ myrec.biografia }}</q-item-label
>
</q-item-section>
</q-item>
<q-item
clickable
v-if="myrec.link_conference"
>
<q-item-section avatar>
<q-icon
color="blue"
name="fas fa-video"
/>
</q-item-section>
<q-item-section>
<div class="row items-center q-gutter-xs">
<div class="col-auto">
<span
v-html="
tools.getlinkhref(
myrec.link_conference,
$t('reg.link_conference')
)
"
></span>
</div>
<div class="col-auto">
<q-btn
flat
round
icon="fas fa-copy"
size="sm"
class="q-ml-xs"
@click.stop="tools.copyToClip($q, myrec.link_conference, true)"
/>
</div>
</div>
</q-item-section>
</q-item>
<q-item
clickable
v-if="table === 'mybachecas'"
>
<q-item-section avatar>
<q-icon
color="green"
name="fas fa-house-user"
/>
</q-item-section>
<q-item-section>
<q-item-label lines="1">
{{ $t('event.organisedBy') }}: {{ myrec.organisedBy }}
</q-item-label>
</q-item-section>
</q-item>
<q-card
v-if="myrec.mygrp && myrec.mygrp.groupname"
class="modern-card clBorderUser"
bordered
@click="naviga(tools.getPathByGroup(myrec.mygrp))"
>
<CMyGroup
:mygrp="myrec.mygrp"
:visu="costanti.USER_GROUPS"
:noaut="true"
>
</CMyGroup>
</q-card>
<q-card
v-else-if="
!myrec.organisedBy &&
shared_consts.TABLES_VISU_LISTA_USER.includes(table)
"
class="modern-card clBorderUser"
bordered
>
<CMyUser
:mycontact="myrec"
:visu="costanti.FIND_PEOPLE"
@setCmd="tools.setCmd"
>
</CMyUser>
</q-card>
<q-item
clickable
v-if="table === 'mybachecas' && myrec.contact_phone"
>
<q-item-section avatar>
<q-icon
color="green"
name="fas fa-phone"
/>
</q-item-section>
<q-item-section>
<q-item-label lines="1">
<CLabel
v-bind="$attrs"
:copy="true"
:value="myrec.contact_phone"
:label="$t('event.contact_phone')"
/>
</q-item-label>
</q-item-section>
</q-item>
<q-item
clickable
v-if="myrec.contact_email"
>
<q-item-section avatar>
<q-icon
color="blue"
name="fas fa-mail-bulk"
/>
</q-item-section>
<q-item-section>
<q-item-label lines="1">
{{ $t('event.contact_email') }}:
<span v-html="tools.getlinkEmailTo(myrec.contact_email)"
/></q-item-label>
</q-item-section>
</q-item>
<q-item
clickable
v-if="table === 'mybachecas' && myrec.contact_telegram"
>
<q-item-section avatar>
<q-icon
color="blue"
name="fab fa-telegram"
/>
</q-item-section>
<q-item-section>
<q-item-label lines="1">
{{ $t('msgs.telegrammsg') }}:
<a
:href="tools.getHttpForTelegram(myrec.contact_telegram)"
target="_blank"
>@{{ myrec.contact_telegram }}
</a>
</q-item-label>
</q-item-section>
</q-item>
<q-item
clickable
v-if="
myrec.coordinate_gps &&
(myrec.coordinate_gps.address || myrec.coordinate_gps.coordinates)
"
>
<q-item-section avatar>
<q-icon
color="blue"
name="fas fa-crosshairs"
/>
</q-item-section>
<q-item-section>
<q-item-label>
<div v-if="myrec.coordinate_gps.address">
{{ myrec.coordinate_gps.address }}
</div>
</q-item-label>
<q-item-label>
<div v-if="myrec.coordinate_gps.coordinates">
{{ tools.getCoordinatesToShow(myrec.coordinate_gps) }}
</div>
<q-btn
:label="t('attivita.vediinmappa')"
v-if="myrec.coordinate_gps.coordinates"
color="primary"
icon="fas fa-map-marker-alt"
size="md"
class="q-my-sm"
@click="showInMap(myrec)"
/>
</q-item-label>
</q-item-section>
</q-item>
<q-item
clickable
v-if="myrec.link_maplocation"
>
<q-item-section avatar>
<q-icon
color="blue"
name="fas fa-map-marker-alt"
/>
</q-item-section>
<q-item-section>
<q-item-label lines="1">
<span
v-html="tools.getlinkhref(myrec.link_maplocation, 'Apri Mappa')"
/></q-item-label>
</q-item-section>
</q-item>
<q-item
clickable
v-if="myrec.website"
>
<q-item-section avatar>
<q-icon
color="blue"
name="fas fa-globe"
/>
</q-item-section>
<q-item-section>
<q-item-label lines="1">
<span
v-html="
tools.getlinkhref(
myrec.website,
t('services.visit_website', {
link: tools.getMainLink(myrec.website),
})
)
"
/></q-item-label>
</q-item-section>
</q-item>
<q-item
clickable
v-if="myrec.email && !myrec.contact_email"
>
<q-item-section avatar>
<q-icon
color="blue-grey-6"
name="fas fa-envelope"
/>
</q-item-section>
<q-item-section>
<q-item-label lines="1">
<span v-html="tools.getlinkEmailTo(myrec.email)"
/></q-item-label>
</q-item-section>
</q-item>
<q-item
v-if="myrec.telegram_username"
clickable
>
<q-item-section avatar>
<q-icon
color="blue"
name="telegram"
/>
</q-item-section>
<q-item-section>
<a
v-if="myrec.telegram_username"
:href="tools.getHttpForTelegram(myrec.telegram_username)"
target="_blank"
>@{{ myrec.telegram_username }}</a
>
</q-item-section>
</q-item>
<q-item
clickable
v-if="myrec.whatsapp"
>
<q-item-section avatar>
<q-icon
color="green"
name="fab fa-whatsapp"
/>
</q-item-section>
<q-item-section>
<q-item-label lines="1">
{{ myrec.whatsapp }}
</q-item-label>
</q-item-section>
</q-item>
<q-item
clickable
v-if="myrec.cell_phone"
>
<q-item-section avatar>
<q-icon
color="green"
name="fas fa-mobile-alt"
/>
</q-item-section>
<q-item-section>
<q-item-label lines="1">
<span> {{ myrec.cell_phone }}: </span>
</q-item-label>
</q-item-section>
</q-item>
<q-item
clickable
v-if="table === shared_consts.TABLES_MYBACHECAS && numpart > 0"
>
<q-item-section avatar>
<q-icon
color="blue"
name="fas fa-user-check"
/>
</q-item-section>
<q-item-section>
<q-item-label lines="1">
<q-btn
rounded
color="primary"
:label="
numpart
? t('cmd.attend1', { num: numpart })
: t('cmd.attend', { num: numpart })
"
@click="
clicca(
costanti.TIPOFAVBOOK.ATTEND,
false,
t('cmd.attend', { num: numpart })
)
"
>
</q-btn>
</q-item-label>
</q-item-section>
</q-item>
<q-item
clickable
v-if="
table === 'mybachecas' && (myrec.min_partecip || myrec.max_partecip)
"
>
<q-item-section avatar>
<q-icon
color="blue"
name="fas fa-users"
/>
</q-item-section>
<q-item-section>
<q-item-label lines="1">
<span v-if="myrec.min_partecip"
>{{ $t('event.min_partecip') }}: {{ myrec.min_partecip }}</span
><br />
<span v-if="myrec.max_partecip"
>{{ $t('event.max_partecip') }}: {{ myrec.max_partecip }}</span
>
</q-item-label>
</q-item-section>
</q-item>
<q-item v-if="myrec.idContribType && myrec.idContribType.length > 0">
<q-item-section avatar>
<q-icon
color="green"
name="fas fa-hand-holding"
/>
</q-item-section>
<q-item-section>
<q-item-label>
<span v-if="myrec.contribstr"><br />{{ myrec.contribstr }}</span>
<span
v-for="(reccontr, index) in myrec.idContribType"
:key="index"
>
<q-chip
dense
:style="`background-color: ` + calendarStore.getColByContribType(reccontr)"
text-color="white"
>
{{ calendarStore.getContribtypeById(reccontr) }}
</q-chip>
</span>
</q-item-label>
</q-item-section>
</q-item>
<q-item>
<q-item-section avatar>
<q-icon
color="blue"
name="far fa-edit"
/>
</q-item-section>
<q-item-section>
<q-item-label>
{{ $t('reg.pub_updated') }}
<span v-if="myrec.date_updated">{{
tools.getstrDateMonthLong(myrec.date_updated)
}}</span
><span v-else>{{
tools.getstrDateMonthLong(myrec.date_created)
}}</span>
<span v-if="myrec.organisedBy || myrec.groupname"
><br />{{ $t('reg.who_updated') }}
<span class="text-bold"
><a :href="'my/' + myrec.username">{{
tools.getNomeUtenteByRecUser(myrec)
}}</a></span
></span
>
<span v-if="myrec.createdBy"
><br />{{ $t('services.createdBy') }}
<span class="text-bold"
><a :href="'my/' + myrec.createdBy">{{
myrec.createdBy
}}</a></span
></span
>
</q-item-label>
</q-item-section>
</q-item>
<q-item
clickable
v-if="false"
>
<q-item-section avatar>
<q-icon
color="red"
name="local_gas_station"
/>
</q-item-section>
<q-item-section>
<q-item-label></q-item-label>
<q-item-label caption>Fill your gas tank.</q-item-label>
</q-item-section>
</q-item>
</div>
</q-list>
<q-separator />
<div
v-if="isSmall && showAnteprima"
class="row justify-center"
>
<q-btn
:label="isSmall ? 'Apri scheda' : 'Riduci scheda'"
@click="toggleShowScheda"
color="purple"
class="q-mr-sm"
/>
<q-btn
outlined
rounded
:label="$t('dialog.close')"
color="primary"
icon="close"
v-close-popup
></q-btn>
</div>
</q-card-section>
<q-card-actions
v-if="!isSmall"
class="row justify-center q-px-xs"
>
<div class="row justify-evenly q-my-sm">
<div class="row q-mx-sm justify-evenly">
<q-btn
class="q-mx-xxs q-my-xs"
rounded
:label="
userStore.isFavorite(myrec._id, table)
? t('reaction.tipiace')
: t('reaction.mipiace')
"
text-color="red"
color="white"
:icon="
userStore.isFavorite(myrec._id, table) ? 'favorite' : 'far fa-heart'
"
@click="clicca(costanti.TIPOFAVBOOK.FAVORITE, true, '')"
>
</q-btn>
<q-btn
class="q-mx-xxs q-my-xs"
rounded
:label="$t('reaction.condividi')"
text-color="blue"
color="white"
icon="fas fa-share"
@click="condividi()"
>
</q-btn>
<q-btn
v-if="
(myrec.profile && myrec.profile.username_telegram) ||
myrec.contact_telegram
"
class="q-mx-xxs q-my-xs"
rounded
:label="$t('dialog.scrivi')"
text-color="primary"
color="white"
icon="telegram"
target="_blank"
@click="
tools.openUrl(
myrec.contact_telegram
? tools.getHttpForTelegram(myrec.contact_telegram)
: tools.getHttpForTelegram(myrec.profile.username_telegram)
)
"
/>
<q-btn
v-else-if="
myrec.profile &&
!myrec.profile.username_telegram &&
!myrec.contact_telegram
"
class="q-mx-xxs q-my-xs"
rounded
:label="$t('msgs.write_email')"
text-color="primary"
color="white"
icon="mail"
target="_blank"
@click="tools.openUrl(tools.getemailto(myrec.email))"
/>
<q-btn
v-if="table === shared_consts.TABLES_MYBACHECAS"
class="q-mx-xxs q-my-xs"
rounded
:text-color="
calendarStore.isPartecipero(myrec._id, table) ? 'white' : 'primary'
"
:color="
calendarStore.isPartecipero(myrec._id, table) ? 'green' : 'white'
"
:label="$t('event.attend')"
:icon="
calendarStore.isPartecipero(myrec._id, table)
? 'how_to_reg'
: 'check_circle'
"
@click="EditBookEvent(true)"
>
</q-btn>
<q-btn
rounded
outline
class="q-ma-sm"
v-if="isAlreadyBooked() && site.confpages?.bookingEvents"
text-color="red"
@click="EditBookEvent(true)"
:label="$t('cal.modifybooking')"
>
</q-btn>
</div>
</div>
<div
v-if="$q.screen.lt.sm"
class="row justify-center q-my-xs"
>
<q-btn
rounded
:label="$t('dialog.close')"
color="primary"
icon="close"
v-close-popup
/>
</div>
</q-card-actions>
</q-card>
</div>
<q-inner-loading
:showing="loading"
label="attendere..."
label-class="text-teal"
label-style="font-size: 1.1em"
/>
</div>
</div>
<div v-else-if="ismounted && !myrec">
<br /><br />
<q-banner
rounded
class="q-ma-md q-pa-md bg-negative text-white"
>
<div class="text-h6 text-center">
Pagina non trovata<br />
Probabilmente l'annuncio è stato cancellato
</div>
</q-banner>
<br /><br />
</div>
<q-dialog v-model="usersList.loadfromDb">
<q-card class="dialog_card">
<q-toolbar class="bg-primary text-white">
<q-toolbar-title>
{{ usersList.title }}
</q-toolbar-title>
<q-btn
flat
round
color="white"
icon="close"
v-close-popup
></q-btn>
</q-toolbar>
<q-card-section class="inset-shadow">
<div v-if="usersList.loadfromDb">
<CGridTableUser
prop_mytable="reactions"
prop_mytitle=""
:prop_mycolumns="colmyUserPeople"
prop_colkey="_id"
col_title="username"
:vertical="costanti.VISUTABLE_LISTA"
nodataLabel=" "
:prop_search="false"
:prop_showfilter="false"
hint=""
:finder="false"
:choose_visutype="false"
:finder_noNull="false"
:finder_noNullFilters="false"
:options="shared_consts.OPTIONS_SEARCH_USER_ALL_WORDS"
:butt_modif_new="false"
noresultLabel="Username o nome non trovato"
:arrfilters="arrfilterand"
:filtercustom="filtercustom"
:prop_searchList="searchList"
:showType="costanti.SHOW_USERINFO"
:showCol="false"
:extraparams="extraparams()"
>
</CGridTableUser>
</div>
<div v-else>
<div
v-for="(rec, i) in usersList.list"
:key="i"
>
<CMyUser
:mycontact="rec"
:visu="costanti.FIND_PEOPLE"
@setCmd="tools.setCmd"
>
</CMyUser>
</div>
</div>
</q-card-section>
</q-card>
</q-dialog>
<q-dialog v-model="bookedList.show">
<q-card
v-if="bookedList"
class="dialog_card"
>
<q-toolbar class="bg-primary text-white">
<q-toolbar-title>
{{ bookedList.title }}
</q-toolbar-title>
<q-btn
flat
round
color="white"
icon="close"
v-close-popup
></q-btn>
</q-toolbar>
<q-card-section class="q-pa-xs inset-shadow">
<div
v-for="(eventbook, index) in bookedList.list"
:key="index"
>
<CMyUser
:mycontact="{ username: eventbook.username }"
:visu="costanti.FIND_PEOPLE"
@setCmd="tools.setCmd"
>
</CMyUser>
<div>
{{ tools.getstrshortDateTime(eventbook.datebooked) }}
<span v-if="eventbook.msgbooking">{{ $t('sendmsg.write') }}: </span>
<q-separator />
</div>
{{ eventbook.msgbooking }}
<div>
<span v-if="eventbook.numpeople > 0"
>Partecipanti: {{ eventbook.numpeople }}<br
/></span>
<span v-if="eventbook.numpeopleLunch > 0"
>Pranzo: {{ eventbook.numpeopleLunch }}<br
/></span>
<span v-if="eventbook.numpeopleDinner > 0"
>Cena: {{ eventbook.numpeopleDinner }}<br
/></span>
<span v-if="eventbook.numpeopleDinnerShared > 0"
>C.Cond: {{ eventbook.numpeopleDinnerShared }}<br
/></span>
</div>
<div>
<div class="text-center">
<q-btn
v-if="myrec.userId === userStore.my._id"
rounded
color="red"
label="Elimina"
icon="fas fa-trash-alt"
@click="tools.CancelBookingEvent($q, myrec, eventbook._id, false)"
></q-btn>
</div>
</div>
</div>
<br />
<div class="text-center">
<q-btn
outlined
rounded
:label="$t('dialog.close')"
color="primary"
icon="close"
v-close-popup
></q-btn>
</div>
</q-card-section>
</q-card>
</q-dialog>
<q-dialog
v-model="askInfopage.show"
no-backdrop-dismiss
>
<q-card
v-if="askInfopage.show"
class="dialog_card"
>
<q-toolbar class="bg-primary text-white">
<q-toolbar-title>
{{ $t('cal.booking') }}
</q-toolbar-title>
<q-btn
flat
round
color="white"
icon="close"
v-close-popup
></q-btn>
</q-toolbar>
<q-card-section class="inset-shadow">
<div style="margin-top: 150px">
<q-chip
class="shadow-5 q-mb-md"
dense
>
{{ myrec.descr }}
</q-chip>
<div
v-if="myrec.dateTimeStart"
class="cal__when"
>
<span class="cal__where-title"
>{{ $t('cal.when') }}:
<span v-html="tools.getstrDateTimeEvent($t, myrec, true)"></span>
</span>
</div>
<div class="q-pa-xs">
<q-card class="text-white windowcol">
<q-card-section>
<q-input
v-model="askInfoForm.message"
:label="$t('cal.writemsg') + ':'"
autofocus
debounce="500"
type="textarea"
input-class="myinput-area"
>
</q-input>
</q-card-section>
</q-card>
</div>
</div>
</q-card-section>
<q-card-actions align="right">
<q-btn
flat
:label="$t('dialog.cancel')"
color="primary"
v-close-popup
></q-btn>
<q-btn
flat
:label="$t('dialog.sendmsg')"
color="primary"
@click="sendMsg(true)"
></q-btn>
</q-card-actions>
</q-card>
</q-dialog>
<!-- Categories Dialog -->
<q-dialog v-model="showPreferencesDialog">
<q-card
class="categories-dialog"
:style="{ minWidth: $q.screen.lt.sm ? '90vw' : '400px' }"
>
<q-card-section class="dialog-header">
<div class="text-h6">Categorie</div>
</q-card-section>
<q-separator />
<q-card-section class="dialog-content">
<div class="categories-grid">
<q-chip
v-for="(rec, ind) of myrec.preferences"
:key="ind"
class="category-chip shadow-3"
:style="`background-color: ${tools.getPreferenceById(rec).color}; color: white;`"
>
<q-icon
:name="tools.getPreferenceById(rec).icon"
left
size="18px"
/>
{{ tools.getPreferenceById(rec).label }}
</q-chip>
</div>
</q-card-section>
<q-separator />
<q-card-actions align="right">
<q-btn
flat
label="Chiudi"
color="primary"
v-close-popup
/>
</q-card-actions>
</q-card>
</q-dialog>
<q-dialog
v-model="bookEventpage.show"
no-backdrop-dismiss
>
<q-card
v-if="bookEventpage.show"
class="dialog_card"
>
<q-toolbar class="bg-primary text-white">
<q-toolbar-title>
{{ $t('cal.booking') }}
</q-toolbar-title>
<q-btn
flat
round
color="white"
icon="close"
v-close-popup
></q-btn>
</q-toolbar>
<div class="q-pa-xs">
<q-card
class="windowcol"
style="display: block"
>
<q-card-section class="q-pa-xs">
<div>{{ $t('cal.infoprenota') }}</div>
<br />
<div
style="display: inline-flex"
class="q-px-xs centermydiv"
>
<q-checkbox
style="color: black"
v-model="bookEventForm.booked"
:label="$t('cal.bookingtextdefault')"
color="green"
>
</q-checkbox>
<div
v-if="bookEventForm.booked"
class="q-gutter-xs q-mx-xs"
style="min-width: 140px"
>
<q-select
v-if="table === shared_consts.TABLES_MYBACHECAS"
:behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'"
rounded
style="max-width: 150px"
outlined
v-model="bookEventForm.numpeople"
:options="tools.SelectListNumPeople"
:label="$t('statusreg.reg')"
emit-value
map-options
>
</q-select>
</div>
</div>
<q-input
v-model="bookEventForm.msgbooking"
:label="$t('cal.writemsg') + ':'"
type="textarea"
debounce="500"
input-class="myinput-area"
>
</q-input>
</q-card-section>
</q-card>
</div>
<q-card-actions align="right">
<q-btn
flat
:label="$t('dialog.cancel')"
color="primary"
v-close-popup
></q-btn>
<q-btn
v-if="bookEventpage.state === EState.Modifying"
flat
:label="$t('cal.cancelbooking')"
color="negative"
@click="CancelBookingEvent($q, bookEventForm._id, true)"
></q-btn>
<q-btn
v-if="checkseinviaMsg()"
flat
:label="$t('dialog.sendonlymsg')"
color="primary"
@click="sendMsg(false)"
></q-btn>
<q-btn
v-else-if="bookEventForm.booked"
:label="getTitleBtnBooking()"
color="primary"
@click="saveBookEvent"
:disable="!(bookEventpage.state === EState.Creating || hasModifiedBooking)"
></q-btn>
</q-card-actions>
</q-card>
</q-dialog>
</template>
<script lang="ts" src="./CMyCardService.ts"></script>
<style lang="scss" scoped>
@import './CMyCardService.scss';
</style>