Files
myprojplanet_vite/src/components/CMyRecCard/CMyRecCard.vue

349 lines
10 KiB
Vue
Raw Normal View History

<template>
<div
class="rec-card-wrapper"
:class="{ 'is-even': indexRow % 2 === 0, 'is-odd': indexRow % 2 !== 0 }"
:style="{ maxWidth: computedWidth() }"
>
<!-- Evento Calendar con data grande -->
<div
v-if="myrec && table === shared_consts.TABLES_MYBACHECAS"
class="event-card"
>
<div class="event-date-column">
<div class="date-stack">
<span class="day-of-week">{{ tools.getDayOfWeek(myrec.dateTimeStart) }}</span>
<span class="day-number">{{ tools.getstrDay(myrec.dateTimeStart) }}</span>
<span class="month-name">{{
tools.getstrMonth3Letters(myrec.dateTimeStart)
}}</span>
<span class="time-start">{{ tools.getstrTime(myrec.dateTimeStart) }}</span>
<span
v-if="
tools.getstrDay(myrec.dateTimeStart) === tools.getstrDay(myrec.dateTimeEnd)
2023-04-17 02:05:03 +02:00
"
class="time-end"
>
{{ tools.getstrTime(myrec.dateTimeEnd) }}
</span>
<!-- Data fine se diversa -->
<template
v-if="
tools.getstrDay(myrec.dateTimeStart) !== tools.getstrDay(myrec.dateTimeEnd)
"
>
<div class="date-separator"></div>
<span class="day-of-week">{{ tools.getDayOfWeek(myrec.dateTimeEnd) }}</span>
<span class="day-number">{{ tools.getstrDay(myrec.dateTimeEnd) }}</span>
<span class="month-name">{{
tools.getstrMonth3Letters(myrec.dateTimeEnd)
}}</span>
<span class="time-end">{{ tools.getstrTime(myrec.dateTimeEnd) }}</span>
</template>
<q-avatar
size="40px"
class="user-avatar"
>
<q-img
:src="getImgUser(myrec)"
:alt="myrec.username"
/>
</q-avatar>
2023-04-17 02:05:03 +02:00
</div>
</div>
<div
class="event-image-container"
:style="{ height: computedEventImageHeight() }"
>
<q-img
:src="tools.getFullFileName(myrec.photos, table, myrec.username, '')"
:alt="myrec.descr"
class="event-image"
@click="cmdExt(costanti.CMD_SHOW_PAGE, null, myrec)"
/>
</div>
2023-04-17 02:05:03 +02:00
</div>
<!-- Card Record Principale -->
<q-item
v-if="myrec"
clickable
v-ripple
class="modern-rec-card"
:class="{ 'is-attending': tools.isPartecipero(myrec) }"
>
<!-- Avatar / Immagine -->
2023-04-07 21:48:33 +02:00
<q-item-section
v-if="
2023-04-17 02:05:03 +02:00
(shared_consts.TABLES_VISU_IMG.includes(table) &&
myrec.photos &&
myrec.photos?.length > 0) ||
(myrec.mygrp && myrec.mygrp.photos?.length > 0)
2023-04-07 21:48:33 +02:00
"
avatar
@click="cmdExt(costanti.CMD_SHOW_PAGE, null, myrec)"
class="avatar-section"
2023-04-07 21:48:33 +02:00
>
<q-badge
v-if="showBadge()"
:color="fieldsTable.getColByAdType(myrec.adType)"
class="type-badge"
2023-04-07 21:48:33 +02:00
>
{{ fieldsTable.getValByTabAndId(table, 'adType', myrec.adType) }}
</q-badge>
<q-avatar
size="56px"
class="record-avatar"
>
<q-img
2023-04-17 02:05:03 +02:00
v-if="
myrec.mygrp &&
myrec.mygrp.groupname &&
tools.getValue(myrec.mygrp, 'photos', '')
"
:src="
tools.getFullFileName(
tools.getValue(myrec.mygrp, 'photos', ''),
'mygroups',
myrec.username,
myrec.groupname
)
"
alt="immagine del gruppo"
/>
2023-04-07 21:48:33 +02:00
<q-img
2023-04-17 02:05:03 +02:00
v-else
:src="tools.getFullFileName(myrec.photos, table, myrec.username, '')"
2023-04-07 21:48:33 +02:00
:alt="myrec.descr"
/>
2022-02-21 18:54:16 +01:00
</q-avatar>
</q-item-section>
<q-item-section
v-else-if="!myrec.organisedBy && table !== shared_consts.TABLES_MYBACHECAS"
avatar
@click="naviga(`/my/` + myrec.username)"
class="avatar-section"
>
2023-04-07 21:48:33 +02:00
<q-badge
v-if="showBadge()"
:color="fieldsTable.getColByAdType(myrec.adType)"
class="type-badge"
2023-04-07 21:48:33 +02:00
>
{{ fieldsTable.getValByTabAndId(table, 'adType', myrec.adType) }}
</q-badge>
<q-avatar
size="56px"
class="record-avatar"
>
2023-04-07 21:48:33 +02:00
<q-img
:src="getImgUser(myrec)"
:alt="myrec.username"
/>
</q-avatar>
</q-item-section>
<!-- Contenuto Principale -->
<q-item-section
@click="navigaExt(myrec)"
class="content-section"
>
<!-- Tags e Chips -->
<q-item-label class="tags-row">
<q-chip
2023-04-07 21:48:33 +02:00
v-for="(rec, ind) of tools.getArrSubSector(table, myrec)"
:key="'sub-' + ind"
dense
class="tag-chip subsector"
2023-04-07 21:48:33 +02:00
>
{{ rec.descr }}
</q-chip>
<q-chip
v-for="(rec, ind) of tools.getArrSector(table, myrec)"
:key="'sec-' + ind"
dense
class="tag-chip sector"
>
{{ rec.descr }}
</q-chip>
<template v-for="(recstatus, index) in myrec.idStatusSkill">
<q-badge
v-if="
recstatus === shared_consts.STATUSSKILL_ONLINE ||
myrec.idStatusSkill?.length > 1
"
:key="'stat-' + index"
:color="globalStore.getColByStatusSkills(recstatus)"
class="status-badge"
>
<q-icon
:name="globalStore.getStatusSkillIconById(recstatus)"
size="14px"
/>
{{ globalStore.getStatusSkillById(recstatus) }}
</q-badge>
</template>
</q-item-label>
<!-- Descrizione -->
<q-item-label
lines="3"
:class="[
'description-text',
{ 'event-title': table === shared_consts.TABLES_MYBACHECAS },
]"
v-if="myrec.descr"
>
{{ myrec.descr }}
</q-item-label>
<!-- Info Utente e Stats -->
<q-item-label class="user-stats-row">
<div class="user-name">
<span v-if="table === shared_consts.TABLES_MYBACHECAS && myrec.organisedBy">
{{ myrec.organisedBy }}
</span>
<span v-else>{{ getNameToShow(myrec) }}</span>
</div>
<div class="stats-container">
(
<template
v-if="
table === shared_consts.TABLES_MYBACHECAS &&
tools.getNumPartecipantes(myrec) > 0
"
>
<span class="stat-item">
{{ tools.getNumPartecipantes(myrec) }}
<q-icon
name="check_circle"
size="14px"
color="positive"
2023-04-07 21:48:33 +02:00
/>
</span>
</template>
<span class="stat-item">
{{ myrec.numseen || 0 }}
<q-icon
name="visibility"
size="14px"
color="primary"
/>
</span>
<span class="stat-item">
{{ myrec.numfav || 0 }}
<q-icon
:name="
userStore.isFavorite(myrec._id, table) ? 'favorite' : 'favorite_border'
"
size="14px"
color="negative"
/>
</span>
)
2023-04-07 21:48:33 +02:00
</div>
</q-item-label>
<!-- Badge Partecipazione -->
<q-item-label
v-if="tools.isPartecipero(myrec)"
class="attending-badge"
>
<q-icon
name="check_circle"
size="16px"
/>
{{ t('event.attend') }}
</q-item-label>
<!-- Città -->
2023-04-07 21:48:33 +02:00
<q-item-label
lines="2"
class="cities-text"
2023-04-07 21:48:33 +02:00
>
<span
v-for="(rec, ind) of myrec.mycities"
:key="ind"
2023-04-07 21:48:33 +02:00
>
<span v-if="ind > 0">, </span>{{ rec.comune }} ({{ rec.prov }})
</span>
2023-04-07 21:48:33 +02:00
</q-item-label>
</q-item-section>
<!-- Menu Azioni -->
<q-item-section
v-if="tools.canModifyThisRec(myrec, table) || editOn"
side
class="actions-section"
>
<q-btn
round
flat
dense
icon="more_vert"
size="sm"
class="action-menu-btn"
>
<q-menu>
<q-list dense>
<q-item
clickable
v-close-popup
@click="cmdExt(costanti.CMD_MODIFY, myrec._id, null)"
>
<q-item-section avatar>
<q-icon
name="edit"
size="18px"
color="primary"
/>
</q-item-section>
<q-item-section>{{ t('reg.edit') }}</q-item-section>
</q-item>
<q-item
clickable
v-close-popup
@click="cmdExt(costanti.CMD_CLONE, myrec._id, null)"
>
<q-item-section avatar>
<q-icon
name="content_copy"
size="18px"
color="primary"
/>
</q-item-section>
<q-item-section>{{ t('event.duplicate') }}</q-item-section>
</q-item>
<q-separator />
<q-item
clickable
v-close-popup
@click="cmdExt(costanti.CMD_DELETE, myrec._id, null)"
>
<q-item-section avatar>
<q-icon
name="delete"
size="18px"
color="negative"
/>
</q-item-section>
<q-item-section>{{ t('reg.elimina') }}</q-item-section>
</q-item>
</q-list>
</q-menu>
</q-btn>
</q-item-section>
</q-item>
<q-separator />
</div>
</template>
<script lang="ts" src="./CMyRecCard.ts"></script>
<style lang="scss" scoped>
@import './CMyRecCard.scss';
</style>