- Griglia Orizzontale a Carosello

- Aggiornato Tabella Eventi
- Lista Ultimi Movimenti
- Ultime strette di mano
- Ultimi Invitanti alla App
This commit is contained in:
Surya Paolo
2024-10-17 00:35:29 +02:00
parent ec356c70d9
commit eb2cadb490
32 changed files with 2107 additions and 490 deletions

View File

@@ -167,6 +167,7 @@ export const shared_consts = {
MAPPACOMUNI: 370,
MAPPAGETCOORDINATE: 380,
EDITADDRESSBYCOORD: 390,
GRID_ORIZ: 400,
},
QUERYTYPE_MYGROUP: 1,
@@ -310,8 +311,8 @@ export const shared_consts = {
TABLES_WITH_SORTING: ['mybachecas', 'myhosps'],
TABLES_REC_ID: ['skills', 'goods', 'subskills', 'myskills', 'mybachecas', 'myhosps', 'mygoods'],
// costanti.VISUTABLE_SCHEDA_USER, VISUTABLE_SCHEDA_GROUP, VISUTABLE_USER_TABGROUP, VISUTABLE_USER_TABCIRCUIT, VISUTABLE_GROUP_CIRCUIT
VERTIC_SHOW_GRID: [-1, 2, -3, -4, -5, -6],
// costanti.VISUTABLE_SCHEDA_USER, VISUTABLE_SCHEDA_GROUP, VISUTABLE_USER_TABGROUP, VISUTABLE_USER_TABCIRCUIT, VISUTABLE_GROUP_CIRCUIT, VISUTABLE_
VERTIC_SHOW_GRID: [-1, 2, -3, -4, -5, -6, -10],
TABLES_UPDATE_LASTIFIED: ['myskills', 'mybachecas', 'myhosps', 'mygoods', 'bots'],
TABLES_FINDER: ['myskills', 'mybachecas', 'myhosps', 'mygoods', 'mygroups'],
@@ -1668,6 +1669,10 @@ export const shared_consts = {
value: 280,
label: 'Tutorial',
},
{
value: 400,
label: 'Griglia Tabelle',
},
],
TypesElemAdminTools: [

View File

@@ -0,0 +1,29 @@
.cltitlebg{
}
.titletext {
color: white;
font-size: 3rem;
font-weight: 500;
line-height: 3rem;
text-shadow: .25rem .25rem .5rem black;
letter-spacing: .00937em;
opacity: 0.9;
}
@media (max-width: 718px) {
// PER VERSIONE MOBILE
.titletext {
color: white;
font-size: 2rem;
font-weight: 500;
line-height: 2rem;
text-shadow: .25rem .25rem .5rem black;
}
}
.q-img__content > div{
background: rgba(0,0,0,0.17) !important;
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,46 @@
<template>
<div class="q-ma-xs">
<CGridTableRec
ref="myGridRef"
v-if="searchList.length > 0 && table"
:prop_mytable="table"
:options="tools.optionsTable(table)"
:prop_mytitlenew="tools.getTitleAnnuncio(table)"
prop_mytitle=""
:prop_mycolumns="col"
:prop_colkey="prop_colkey"
:col_title="col_title"
:col_footer="col_footer"
:col_tabfooter="col_tabfooter"
:vertical="tipovisu"
:prop_pagination="mypagination"
:showType="showType"
:hint="hint"
:nodataLabel="noMsgRecord"
:prop_search="prop_search"
:finder="true"
labelElemFind="trovati"
:choose_visutype="visuType"
:butt_modif_new="false"
:noresultLabel="
t('grid.nosearchfound') + ' ' + (showMap ? t('grid.intheareamap') : '')
"
:arrfilters="arrfilterand"
:filtercustom="filtercustom"
:prop_searchList="searchList"
labelBtnAddRow="NONE"
:prop_SortFieldsAvailable="mySortFieldsAvailable"
labelBtnAddExtra=""
:extraparams="tools.extraparams(table, { myrecfiltertoggle })"
:prop_showMap="showMap"
@clickButtBar="clickButtBar"
>
</CGridTableRec>
</div>
</template>
<script lang="ts" src="./CGridOriz.ts">
</script>
<style lang="scss" scoped>
@import './CGridOriz.scss';
</style>

View File

@@ -0,0 +1 @@
export { default as CGridOriz } from './CGridOriz.vue'

View File

@@ -68,4 +68,11 @@
.hint_search{
color: gray;
}
.clOrizzontal{
}
.q-carousel__slide{
padding: 8px !important;
}

View File

@@ -1,4 +1,4 @@
import { defineComponent, PropType, ref, watch, toRef, onMounted, onBeforeUnmount, toRefs, computed, inject, onUnmounted } from 'vue'
import { defineComponent, PropType, ref, watch, toRef, onMounted, onBeforeUnmount, toRefs, computed, inject, onUnmounted, nextTick } from 'vue'
import { useI18n } from '@src/boot/i18n'
import { tools } from '../../store/Modules/tools'
@@ -361,6 +361,8 @@ export default defineComponent({
const showMap = ref(false)
const showMapAtLeast1 = ref(false)
const mapInitialized = ref(false)
const slideGridOriz = ref(0)
const autoplay = ref(true)
const newRecordBool = ref(false)
@@ -371,6 +373,12 @@ export default defineComponent({
const recModif = ref(<any>{})
const showInnerDialog = ref(false)
const carouselTabRef = ref(<any>null)
const isAtStart = ref(true)
const isAtEnd = ref(false)
const activeIndex = ref(0)
const addEventScroll = ref(false)
const mytable = ref('')
const mytitle = ref('')
const mytitlenew = ref('')
@@ -1209,6 +1217,8 @@ export default defineComponent({
spinner_visible.value = false
changetable.value = false
startsearch.value = false
checkScrollPosition()
})
}
@@ -1306,6 +1316,8 @@ export default defineComponent({
// console.log(' ...DONE ')
done(pagination.value.rowsNumber === 0 ? true : false)
checkScrollPosition()
alreadymounting.value = true
})
} else {
@@ -1660,13 +1672,55 @@ export default defineComponent({
myvertical.value = props.vertical
showfilter.value = props.prop_showfilter || (tools.getCookie('s_adv', '0') !== '0')
if (props.prop_search) {
showfilter.value = props.prop_showfilter || (tools.getCookie('s_adv', '0') !== '0')
} else {
showfilter.value = props.prop_showfilter
}
} catch (e) {
console.error('ERRORE', e)
}
}
const checkScrollPosition = () => {
console.log('checkScrollPosition')
const container = carouselTabRef.value
if (!container ) return
if (!addEventScroll.value && carouselTabRef.value) {
carouselTabRef.value?.addEventListener('scroll', checkScrollPosition)
addEventScroll.value = true
}
if (carouselTabRef.value) {
console.log('carouselTabRef LISTEN')
} else {
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
activeIndex.value = Math.round(container.scrollLeft / cardWidth)
}
}
const scroll = (direction: any) => {
const container = carouselTabRef.value;
if (!container || !serverData.value.length) return;
const cardWidth = container.scrollWidth / serverData.value.length;
container.scrollBy({
left: direction * cardWidth,
behavior: 'smooth',
});
};
function mounted() {
// console.log('mounted...')
try {
@@ -1713,6 +1767,10 @@ export default defineComponent({
changeTable(tablesel.value, true)
nextTick(() => {
checkScrollPosition()
})
// Aggiungi gli listener agli eventi della tastiera
document.addEventListener('keydown', onEscapeKey);
// window.addEventListener('popstate', onBackButton);
@@ -2188,7 +2246,7 @@ export default defineComponent({
newRecord.value = {}
newRecordBool.value = false
tools.showPositiveNotif($q, t('db.recupdated'))
// refresh()
} else {
@@ -2476,6 +2534,10 @@ export default defineComponent({
// Rimuovi i listener al distruggere del componente
onBeforeUnmount(() => {
document.removeEventListener('keydown', onEscapeKey);
carouselTabRef.value?.removeEventListener('scroll', checkScrollPosition)
// window.removeEventListener('popstate', onBackButton);
});
@@ -2700,6 +2762,13 @@ export default defineComponent({
gotoCurrentLocation,
showInMap,
showMapAtLeast1,
carouselTabRef,
isAtStart,
isAtEnd,
activeIndex,
scroll,
slideGridOriz,
autoplay,
}
}
})

View File

@@ -267,12 +267,17 @@
dense
type="search"
debounce="500"
:hint="!hintinbtnsearch ? hint: ''"
:hint="!hintinbtnsearch ? hint : ''"
:error-message="noresultLabel"
:error="(getNumRecFromQuery() === 0 && !startsearch) && myfilter !== ''"
:error="
getNumRecFromQuery() === 0 && !startsearch && myfilter !== ''
"
:label="hintinbtnsearch ? hint : $t('grid.search')"
@keyup.enter="doSearch"
@clear="myfilter = ''; doSearch()"
@clear="
myfilter = '';
doSearch();
"
@update:model-value="findByDebounce ? doSearch() : null"
:clearable="!!myfilter"
class="col q-mx-xs"
@@ -284,10 +289,10 @@
</q-input>
<q-btn
v-if="prop_search && myfilter || search"
v-if="(prop_search && myfilter) || search"
color="primary"
icon="fas fa-search"
@click="showSearchOnTop ? showSearchDialog = true : doSearch()"
@click="showSearchOnTop ? (showSearchDialog = true) : doSearch()"
/>
<q-btn-toggle
@@ -400,181 +405,192 @@
</div>
</div>
<div v-for="(row, indexrow) in serverData" :key="indexrow">
<div
v-if="
showType === costanti.SHOW_MYCARD ||
(myvertical !== costanti.VISUTABLE_USER_TABGROUP &&
myvertical !== costanti.VISUTABLE_USER_TABCIRCUIT &&
myvertical === costanti.VISUTABLE_LISTA &&
shared_consts.TABLES_VISU_CMYSRECCARD.includes(tablesel))
"
<div v-if="myvertical === costanti.VISUTABLE_GRID_ORIZ">
<q-carousel
swipeable
animated
:autoplay="autoplay"
v-model="slideGridOriz"
navigation
control-color="blue-4"
control-text-color="white"
arrows
ref="carousel"
transition-next="slide-left"
transition-prev="slide-right"
height="500px"
width="100%"
control-type="push"
class="bg-grey-2 shadow-2 rounded-borders"
@mouseenter="autoplay = false"
@mouseleave="autoplay = true"
>
<div v-if="row && withdate">
<div v-if="setShowMonth(row, indexrow)">
<div>
<div v-if="row.dateTimeStart">
<strong>{{ tools.getstrMonth(row.dateTimeStart) }}</strong>
</div>
<q-carousel-slide
v-for="(rec, indexrow) in serverData"
:key="indexrow"
:name="indexrow"
>
<CMyRecCard
:table="tablesel"
:prop_myrec="rec"
@cmdext="cmdExt"
:editOn="editOn"
:margin_right="margin_right"
>
</CMyRecCard>
</q-carousel-slide>
</q-carousel>
<div v-if="false">
<div class="card-carousel-container">
<div class="card-carousel" ref="carouselTabRef">
<q-card
v-for="(rec, indexrow) in serverData"
:key="indexrow"
:class="`my-card-elem center_img bordered ` + ' titolo_card'"
:style="`height: auto; !important; width: 350px !important;`"
>
<CMyRecCard
:table="tablesel"
:prop_myrec="rec"
@cmdext="cmdExt"
:editOn="editOn"
:margin_right="margin_right"
>
</CMyRecCard>
</q-card>
</div>
<div
class="swipe-indicator left"
v-if="!isAtStart"
@click="scroll(-1)"
>
<q-icon name="chevron_left" size="2rem" color="white" />
</div>
<div
class="swipe-indicator right"
v-if="!isAtEnd"
@click="scroll(1)"
>
<q-icon name="chevron_right" size="2rem" color="white" />
</div>
<div class="scroll-indicator">
<div
v-for="(_, index) in serverData"
:key="index"
:class="['dot', { active: index === activeIndex }]"
></div>
</div>
</div>
</div>
</div>
<div v-else>
<div v-for="(row, indexrow) in serverData" :key="indexrow">
<div
v-if="
showType === costanti.SHOW_MYCARD ||
(myvertical !== costanti.VISUTABLE_USER_TABGROUP &&
myvertical !== costanti.VISUTABLE_USER_TABCIRCUIT &&
myvertical === costanti.VISUTABLE_LISTA &&
shared_consts.TABLES_VISU_CMYSRECCARD.includes(tablesel))
"
>
<div v-if="row && withdate">
<div v-if="setShowMonth(row, indexrow)">
<div>
<q-separator />
<div v-if="row.dateTimeStart">
<strong>{{
tools.getstrMonth(row.dateTimeStart)
}}</strong>
</div>
<div>
<q-separator />
</div>
</div>
</div>
</div>
</div>
<CMyRecGrpCard
v-if="tablesel === shared_consts.TABLES_MYGROUPS"
:table="tablesel"
:prop_myrec="row"
@cmdext="cmdExt"
>
</CMyRecGrpCard>
<CMyRecCircuitCard
v-else-if="tablesel === shared_consts.TABLES_CIRCUITS"
:table="tablesel"
:prop_myrec="row"
@cmdext="cmdExt"
>
</CMyRecCircuitCard>
<CMyRecCard
v-else
:table="tablesel"
:prop_myrec="row"
@cmdext="cmdExt"
:editOn="editOn"
:margin_right="margin_right"
>
</CMyRecCard>
</div>
<div
v-else-if="
(showType === costanti.SHOW_USERINFO &&
myvertical !== costanti.VISUTABLE_SCHEDA_USER) ||
(myvertical === 2 &&
shared_consts.TABLES_VISU_LISTA_USER.includes(tablesel))
"
class="fill-all-width"
>
<div>
<CMyUser
:notsetcmd="true"
:mycontact="row"
:visu="visufind"
:groupname="extrafield"
:circuitname="circuitname"
:actionType="actionType"
:labelextra="col_title ? row[col_title] : ''"
:labelFooter="
col_footer
? tools.getLabelFooterByRow(row, col_footer, tablesel)
: ''
"
@showInnerDialog="showInnerDialog"
<CMyRecGrpCard
v-if="tablesel === shared_consts.TABLES_MYGROUPS"
:table="tablesel"
:prop_myrec="row"
@cmdext="cmdExt"
>
</CMyUser>
<q-separator></q-separator>
</CMyRecGrpCard>
<CMyRecCircuitCard
v-else-if="tablesel === shared_consts.TABLES_CIRCUITS"
:table="tablesel"
:prop_myrec="row"
@cmdext="cmdExt"
>
</CMyRecCircuitCard>
<CMyRecCard
v-else
:table="tablesel"
:prop_myrec="row"
@cmdext="cmdExt"
:editOn="editOn"
:margin_right="margin_right"
>
</CMyRecCard>
</div>
</div>
<div
v-else-if="
(showType === costanti.SHOW_GROUPINFO &&
myvertical !== costanti.VISUTABLE_SCHEDA_GROUP) ||
(myvertical === 2 && tablesel === 'mygroups') ||
myvertical === costanti.VISUTABLE_GROUP_CIRCUIT
"
class="fill-all-width"
>
<div>
<CMyGroups
v-model="filtergrp"
:circuitname="circuitname"
:finder="false"
:mygrp="row"
:visu="visufind ? visufind : costanti.FIND_GROUP"
/>
</div>
</div>
<div
v-else-if="
showType === costanti.SHOW_MOVEMENTS && tablesel === 'movements'
"
>
<CSingleMovement :mov="row" />
<!--<div v-if="false" class="q-pa-xs row items-start q-gutter-xs">
<q-card class="my-card text-black">
<q-toolbar
class="bg-primary text-white"
style="min-height: 30px"
<div
v-else-if="
(showType === costanti.SHOW_USERINFO &&
myvertical !== costanti.VISUTABLE_SCHEDA_USER) ||
(myvertical === 2 &&
shared_consts.TABLES_VISU_LISTA_USER.includes(tablesel))
"
class="fill-all-width"
>
<div>
<CMyUser
:notsetcmd="true"
:mycontact="row"
:visu="visufind"
:groupname="extrafield"
:circuitname="circuitname"
:actionType="actionType"
:labelextra="col_title ? row[col_title] : ''"
:labelFooter="
col_footer
? tools.getLabelFooterByRow(row, col_footer, tablesel)
: ''
"
@showInnerDialog="showInnerDialog"
>
<q-toolbar-title>
<span class="q-ma-sm">
<q-icon
v-if="tools.isEntrataByRecMov(row)"
name="fas fa-box-tissue"
color="green"
></q-icon>
<q-icon
v-else-if="tools.isUscitaByRecMov(row)"
name="fas fa-share-square"
color="red"
></q-icon>
</span>
{{
tools.isEntrataByRecMov(row)
? t('movement.movin')
: tools.isUscitaByRecMov(row)
? t('movement.movout')
: ''
}}
</q-toolbar-title>
</q-toolbar>
<q-card-section>
<div v-for="col in mycolumns" :key="col.name">
<div
v-if="
showColCheck(
col,
tools.TIPOVIS_SHOW_RECORD,
true,
1,
row
)
"
:class="
!col.extrafield ||
(col.extrafield &&
(col.tipovisu !== costanti.TipoVisu.LINK ||
(col.tipovisu === costanti.TipoVisu.LINK &&
userStore.getImgByProfile(row, true, col))))
? `tdclass`
: ``
"
>
<div :class="getclrow(row)">
<CMyPopupEdit
:table="mytable"
:canEdit="false"
:canModify="false"
:disable="false"
:mycol="col"
:row="row"
:field="col.field"
:visulabel="true"
:subfield="col.subfield"
minuteinterval="1"
@save="SaveValue"
@show="selItem(row, col)"
@showandsave="showandsave"
>
</CMyPopupEdit>
</div>
</div>
</div>
</q-card-section>
</q-card>
</div>-->
</CMyUser>
<q-separator></q-separator>
</div>
</div>
<div
v-else-if="
(showType === costanti.SHOW_GROUPINFO &&
myvertical !== costanti.VISUTABLE_SCHEDA_GROUP) ||
(myvertical === 2 && tablesel === 'mygroups') ||
myvertical === costanti.VISUTABLE_GROUP_CIRCUIT
"
class="fill-all-width"
>
<div>
<CMyGroups
v-model="filtergrp"
:circuitname="circuitname"
:finder="false"
:mygrp="row"
:visu="visufind ? visufind : costanti.FIND_GROUP"
/>
</div>
</div>
<div
v-else-if="
showType === costanti.SHOW_MOVEMENTS && tablesel === 'movements'
"
>
<CSingleMovement :mov="row" />
</div>
</div>
</div>
<template v-slot:loading>

View File

@@ -1158,6 +1158,57 @@
>
</q-input>
</div>
<div v-else-if="myel.type === shared_consts.ELEMTYPE.GRID_ORIZ">
<div v-if="enableEdit" class="row">
<q-select
v-model="myel.container"
:options="[
{ label: 'Eventi', value: 'mybachecas' },
{ label: 'Servizi', value: 'myskills' },
]"
label="Tabella"
emit-value
map-options
@input="saveElem"
style="min-width: 120px"
>
</q-select>
<br />
<q-select
v-model="myel.number"
:options="[
{ label: 'Orizzontale', value: costanti.VISUTABLE_GRID_ORIZ },
{ label: 'Griglia', value: costanti.VISUTABLE_LISTA },
{ label: 'Scheda User', value: costanti.VISUTABLE_SCHEDA_USER },
{ label: 'User Info', value: costanti.SHOW_USERINFO },
]"
label="Visualizzazione"
emit-value
map-options
style="min-width: 120px"
@input="saveElem"
>
</q-select>
<q-toggle
v-model="myel.parambool"
color="positive"
label="Search"
@update:model-value="modifElem"
></q-toggle>
<q-toggle
v-model="myel.parambool2"
color="positive"
label="Finder"
@update:model-value="modifElem"
></q-toggle>
<q-toggle
v-model="myel.parambool3"
color="positive"
label="Mostra Mappa"
@update:model-value="modifElem"
></q-toggle>
</div>
</div>
<div v-else-if="myel.type === shared_consts.ELEMTYPE.CALENDAR">
<div v-if="enableEdit" class="row">
<q-input

View File

@@ -9,6 +9,7 @@ import { useGlobalStore } from '@store/globalStore'
import { CImgTitle } from '../CImgTitle/index'
import { CImgPoster } from '@/components/CImgPoster'
import { CTitle } from '@/components/CTitle/index'
import { CGridOriz } from '@/components/CGridOriz/index'
import { tools } from '@store/Modules/tools'
import { shared_consts } from '@/common/shared_vuejs'
import { LandingFooter } from '@/components/LandingFooter'
@@ -66,7 +67,7 @@ export default defineComponent({
CTitleBanner, CShareSocial, CCheckAppRunning, CRegistration,
CVisuVideoPromoAndPDF, CECommerce, CCatalogo, CAITools,
CMapComuni, CMapUsers, CMapGetCoordinates, CMapEditAddressByCoord,
CDashGroup, CMovements,
CDashGroup, CMovements, CGridOriz,
// , //CMapMarker,
},
emits: ['selElemClick'],

View File

@@ -325,7 +325,13 @@
:key="index"
:name="index"
:img-src="
getsrcbyimg(costanti.DIR_UPLOAD + `pages/` + myel.path + `/` + rec.imagefile)
getsrcbyimg(
costanti.DIR_UPLOAD +
`pages/` +
myel.path +
`/` +
rec.imagefile
)
"
:alt="rec.alt"
class="carousel_slide"
@@ -482,6 +488,16 @@
<div v-if="editOn" class="elemEdit">CSendRISTo</div>
<CSendRISTo></CSendRISTo>
</div>
<div v-else-if="myel.type === shared_consts.ELEMTYPE.GRID_ORIZ">
<div v-if="editOn" class="elemEdit">Griglia Orizzontale</div>
<CGridOriz
:table="myel.container"
:tipovisu="myel.number"
:prop_search="myel.parambool"
:finder="myel.parambool2"
:showMap="myel.parambool3"
></CGridOriz>
</div>
<div v-else-if="myel.type === shared_consts.ELEMTYPE.STATUSREG">
<div v-if="editOn" class="elemEdit">CStatusReg</div>
<CStatusReg> </CStatusReg>

View File

@@ -164,6 +164,9 @@
<q-item-label caption>{{
tools.getUserNameOnlyIfToShow(row, col)
}}</q-item-label>
<q-item-label v-if="row.profile.resid_province" style="text-align:right;">
({{ row.profile.resid_province }})
</q-item-label>
</q-item-section>
<q-item-section side></q-item-section>
</q-item>

View File

@@ -21,7 +21,7 @@
/* Arrotonda leggermente gli angoli */
border-radius: 8px;
/* Aggiungi un po' di spazio interno intorno ai contenuti */
padding: 16px;
padding: 8px;
/* Colore di sfondo bianco per separare dal resto del contenuto */
background-color: #eff;

View File

@@ -1,10 +1,6 @@
<!--suppress ALL -->
<template>
<div
class="q-py-xs centermydiv cardrec"
:style="{ maxWidth: computedWidth }"
>
<div class="q-py-xs centermydiv cardrec" :style="{ maxWidth: computedWidth }">
<div v-if="myrec && table === shared_consts.TABLES_MYBACHECAS">
<div class="row">
<div class="col-2 q-my-sm">
@@ -18,9 +14,69 @@
<span class="ev_month">{{
tools.getstrMonth3Letters(myrec.dateTimeStart)
}}</span>
<span class="ev_hour">{{
tools.getstrTime(myrec.dateTimeStart)
}}</span>
<span
v-if="
tools.getstrDay(myrec.dateTimeStart) ===
tools.getstrDay(myrec.dateTimeEnd)
"
class="ev_hour_end"
>{{ tools.getstrTime(myrec.dateTimeEnd) }}</span
>
<div
v-if="
tools.getstrDay(myrec.dateTimeStart) !==
tools.getstrDay(myrec.dateTimeEnd)
"
class="q-mx-sm"
>
------
</div>
<span
v-if="
tools.getstrDay(myrec.dateTimeStart) !==
tools.getstrDay(myrec.dateTimeEnd)
"
class="ev_dayofweek"
>{{ tools.getDayOfWeek(myrec.dateTimeEnd) }}</span
>
<span
v-if="
tools.getstrDay(myrec.dateTimeStart) !==
tools.getstrDay(myrec.dateTimeEnd)
"
class="ev_day"
>{{ tools.getstrDay(myrec.dateTimeEnd) }}</span
>
<span
v-if="
tools.getstrDay(myrec.dateTimeStart) !==
tools.getstrDay(myrec.dateTimeEnd)
"
class="ev_month"
>{{ tools.getstrMonth3Letters(myrec.dateTimeEnd) }}</span
>
<span
v-if="
tools.getstrDay(myrec.dateTimeStart) !==
tools.getstrDay(myrec.dateTimeEnd)
"
class="ev_hour_end"
>{{ tools.getstrTime(myrec.dateTimeEnd) }}</span
>
<q-avatar size="50px" class="q-my-sm">
<q-img
:src="getImgUser(myrec)"
:alt="myrec.username"
img-class="imgprofile"
height="50px"
/>
</q-avatar>
</div>
</div>
<div class="col-10">
<div class="col-10">
<q-img
:src="
tools.getFullFileName(myrec.photos, table, myrec.username, '')
@@ -28,12 +84,12 @@
:alt="myrec.descr"
img-class="imgprofile"
height="270px"
fit="contain"
fit="cover"
@click="cmdExt(costanti.CMD_SHOW_PAGE, null, myrec)"
/>
<div class="event_date">
<!--<div class="event_date">
<span v-html="tools.getstrDateTimeEvent($t, myrec, true, true)"></span>
</div>
</div>-->
</div>
</div>
</div>
@@ -101,7 +157,7 @@
</q-item-section>
<q-item-section
v-else-if="!myrec.organisedBy"
v-else-if="!myrec.organisedBy && table !== shared_consts.TABLES_MYBACHECAS"
avatar
@click="naviga(`/my/` + myrec.username)"
>
@@ -158,19 +214,20 @@
style="vertical-align: middle"
>
<q-badge
v-if="(recstatus === shared_consts.STATUSSKILL_ONLINE) || myrec.idStatusSkill.length > 1"
v-if="
recstatus === shared_consts.STATUSSKILL_ONLINE ||
myrec.idStatusSkill.length > 1
"
dense
:color="globalStore.getColByStatusSkills(recstatus)"
text-color="white"
text-color="white"
>
<q-icon
:name="globalStore.getStatusSkillIconById(recstatus)"
color="white"
/>&nbsp;
{{ globalStore.getStatusSkillById(recstatus) }}
</q-badge>
</span>
<!--<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>

View File

@@ -10,6 +10,8 @@ import { CCopyBtn } from '../CCopyBtn'
import { CMyFieldRec } from '../CMyFieldRec'
import { CMyValueDb } from '../CMyValueDb'
import VueBarcode from 'vue-barcode'
import { func_tools, toolsext } from '@store/Modules/toolsext'
import { IBaseOrder, IGasordine, IOrder, IOrderCart, IProduct } from '@src/model'

View File

@@ -223,6 +223,11 @@
<div class="product_code">
&nbsp; {{ t('ecomm.codice') }}: {{ myproduct.productInfo.code }}
</div>
<div v-if="false" class="barcode">
<barcode :value="myproduct.productInfo.code" format="EAN-13">
</barcode>
<vue-barcode ></vue-barcode>
</div>
<div
v-if="
myproduct.productInfo.subcatprods &&

View File

@@ -23,13 +23,28 @@
font-style: italic;
}
:root {
--causale-text-color: #555;
--causale-bg-color: #f9f9f9;
}
body.body--dark {
--causale-text-color: #bbb;
--causale-bg-color: #333;
}
.causale {
font-style: italic; /* Testo in corsivo */
color: #555; /* Colore del testo (può essere un grigio o un altro colore per le citazioni) */
border-left: 4px solid #ccc; /* Linea a sinistra per emulare lo stile di una citazione */
padding-left: 10px; /* Spazi a sinistra per il padding */
margin: 8px 0; /* Spaziatura sopra e sotto */
}
position: relative;
/* Necessario per il posizionamento corretto del pseudo-elemento */
font-style: italic;
color: #555;
padding-left: 0px;
margin: 8px 0;
color: var(--causale-text-color);
background-color: var(--causale-bg-color);
}
.userto,
.userfrom {
white-space: pre-wrap;
@@ -42,15 +57,15 @@
/* Allinea gli elementi al centro verticalmente */
}
.q-item__section--main ~ .q-item__section--side{
.q-item__section--main~.q-item__section--side {
padding-left: 2px !important;
}
.q-item__section--side{
.q-item__section--side {
padding-right: 4px !important;
}
.schede-mov{
.schede-mov {
margin-top: 2px;
margin-bottom: 2px;
padding-top: 2px;

View File

@@ -9,8 +9,6 @@
'background-odd': index % 2 !== 0,
},
]"
clickable
v-ripple
>
<q-item-section v-if="visu !== 1" avatar @click="navigabyMov(mov, true)">
<CMyImgUser :mov="mov" :from="true"> </CMyImgUser>
@@ -31,9 +29,6 @@
<q-item-label class="causalDest" v-if="mov.causalDest">{{
mov.causalDest
}}</q-item-label>
<q-item-label class="causale" v-if="mov.causal">&quot;{{
mov.causal
}}&quot;</q-item-label>
<q-item-label v-if="visu !== 1" lines="3">
{{ t('movement.from') }}
<span class="userfrom">{{
@@ -49,7 +44,11 @@
<q-item-label caption lines="1" v-if="mov.circuitfrom" class="circuit">{{
mov.circuitfrom.name
}}</q-item-label>
<q-item-label caption lines="1" v-if="mov.transactionDate" class="date">{{
<q-item-label class="causale" v-if="mov.causal">
<q-icon name="fas fa-star" color="orange"></q-icon>
&quot;{{ mov.causal }}&quot;</q-item-label
>
<q-item-label caption lines="1" v-if="mov.transactionDate" class="date text-right">{{
tools.getstrDateTime(mov.transactionDate)
}}</q-item-label>
</q-item-section>

View File

@@ -6,4 +6,18 @@
display: flex;
justify-content: space-between;
/* Distribuisce gli elementi uniformemente */
}
.clDateStrette{
color: white;
font-style: italic;
}
.iscritto_da, .iscritto_da_name{
font-style: italic;
font-size: 0.85rem;
color: lightgray;
}
.iscritto_da_name{
color: white !important;
}

View File

@@ -231,6 +231,7 @@ export default defineComponent({
getImgUserByUsername,
gotoPage,
userStore,
t,
}
}

View File

@@ -102,73 +102,17 @@
:myval="datastat.num_teleg_pending" mycol="negative"></CCardStat>-->
</div>
<div class="column animazione">
<q-tabs v-model="mytab" class="text-blue">
<q-tab
name="reg"
:label="$t('statusreg.newreg')"
icon="fas fa-user-plus"
/>
<q-tab
name="online"
:label="$t('statusreg.onlineusers')"
icon="fas fa-wifi"
/>
<q-tab
name="diffusori"
:label="$t('statusreg.diffusori')"
icon="fas fa-medal"
/>
<q-tab
name="strettelist"
:label="$t('statusreg.strettelist')"
icon="fas fa-handshake"
/>
</q-tabs>
<q-tab-panels v-model="mytab" animated>
<q-tab-panel name="reg">
<div class="q-pa-md" style="max-width: 350px; margin: auto">
<transition-group
name="fade"
mode="out-in"
appear
enter-active-class="animazione fadeIn"
leave-active-class="animazione fadeOut"
>
<q-item
v-for="(user, index) in lastsreg"
:key="index"
class="animated"
v-ripple
>
<q-item-section>
<q-item-label lines="1">
<CMyFieldRec
table="users"
:id="user._id"
:rec="user"
field="username"
:canEdit="false"
:canModify="false"
:fieldtype="costanti.FieldType.username_chip"
>
</CMyFieldRec>
</q-item-label>
</q-item-section>
<q-item-section side>
<q-item-label>{{
tools.getstrDateTimeShort(user.date_reg)
}}</q-item-label>
</q-item-section>
</q-item>
</transition-group>
</div>
</q-tab-panel>
<q-tab-panel name="online">
<div class="q-pa-md" style="max-width: 350px; margin: auto">
<q-list bordered>
<q-list bordered>
<q-expansion-item
group="somegroup"
icon="fas fa-user-plus"
:label="$t('statusreg.newreg')"
default-opened
header-class="text-primary"
>
<q-card>
<q-card-section>
<div class="q-pa-md" style="max-width: 350px; margin: auto">
<transition-group
name="fade"
mode="out-in"
@@ -177,11 +121,11 @@
leave-active-class="animazione fadeOut"
>
<q-item
v-for="(user, index) in lastsonline"
v-for="(user, index) in lastsreg"
:key="index"
class="animated chip_shadow q-ma-sm"
clickable
v-ripple
clickable
@click="gotoPage(`/my/${user.username}`)"
>
<q-item-section avatar>
@@ -197,212 +141,326 @@
</q-avatar>
</q-item-section>
<q-item-section class="">
<q-item-label>{{
tools.getNameToShow(user)
}}</q-item-label>
<q-item-label>
{{ tools.getNameToShow(user, null, {showprov: true, html: true}) }}
</q-item-label>
<q-item-label caption>{{
tools.getUserNameOnlyIfToShow(user)
tools.getUserNameOnlyIfToShow(user, null, {showprov: true, html: true})
}}</q-item-label>
<q-item-label class="iscritto_da">
{{ t('statusreg.invite_by') }}:
<span class="iscritto_da_name">{{
tools.getNameToShow(user.user_aportador)
}}</span>
</q-item-label>
</q-item-section>
<q-item-section side>
<div
:class="
`text-h6 q-mr-sm text-bold ` + $q.dark.isActive
? `text-white`
: `text-black`
"
>
<CTimeAgo :datetime="user.lasttimeonline" />
</div>
<q-item-label style="color: white">{{
tools.getstrshortDate(user.date_reg)
}}</q-item-label>
</q-item-section>
</q-item>
</transition-group>
</q-list>
</div>
</q-card-section>
</q-card>
</q-expansion-item>
<q-separator />
<q-expansion-item
expand-separator
group="somegroup"
icon="fas fa-medal"
:label="$t('statusreg.lastsharedlink')"
header-class="text-purple"
>
<div>
<div class="text-center text-bold text-h6">Unisciti a RISO</div>
<div class="text-center">
Se ancora non sei registrato a RISO, scegli un invitante che
conosci. Questa persona dovrà ammetterti per permetterti di
accedere alle funzionalità.
</div>
</q-tab-panel>
<q-tab-panel name="diffusori">
<div class="q-pa-md" style="max-width: 350px; margin: auto">
<div class="text-center text-bold text-h6">
Aiuta RISO a crescere
</div>
<div class="text-center">
Condividi il tuo link d'invito, alimentando nuovi ingressi
alla RETE Solidale di RISO.
</div>
<q-list bordered>
<transition-group
name="fade"
mode="out-in"
appear
enter-active-class="animazione fadeIn"
leave-active-class="animazione fadeOut"
>
<q-item
v-for="(user, index) in diffusorilist"
:key="index"
class="animated chip_shadow q-ma-sm"
clickable
v-ripple
@click="gotoPage(`/my/${user.username}`)"
</div>
<q-item
v-for="(user, index) in lastssharedlink"
:key="index"
class="animated chip_shadow q-ma-sm"
clickable
v-ripple
@click="gotoPage(`/registrati/${user.user_aportador.username}`)"
>
<q-item-section avatar>
<q-avatar round size="48px">
<img
:src="userStore.getImgByProfile(user.user_aportador)"
/>
</q-avatar>
</q-item-section>
<q-item-section class="">
<q-item-label>
{{ tools.getNameToShow(user.user_aportador, null, {showprov: true, html: true}) }}
</q-item-label>
<q-item-label caption>{{
tools.getUserNameOnlyIfToShow(user.user_aportador, null, {showprov: true, html: true})
}}</q-item-label>
<q-item-label class="iscritto_da">
{{ t('statusreg.has_invited') }}:
<span class="iscritto_da_name">{{
tools.getNameToShow(user)
}}</span>
</q-item-label>
</q-item-section>
<q-item-section side
><span class="text-h6 q-mr-sm"></span
></q-item-section>
</q-item>
</q-expansion-item>
<q-expansion-item
group="somegroup"
icon="fas fa-wifi"
:label="
$t('statusreg.onlineusers', { today: datastat.online_today })
"
header-class="text-teal"
>
<q-card>
<q-card-section>
<div class="q-pa-md" style="max-width: 350px; margin: auto">
<q-list bordered>
<transition-group
name="fade"
mode="out-in"
appear
enter-active-class="animazione fadeIn"
leave-active-class="animazione fadeOut"
>
<q-item-section avatar>
<q-avatar round size="48px">
<img :src="userStore.getImgByProfile(user)" />
<q-badge
v-if="tools.isUserOnline(user)"
align="top"
floating
color="green"
>online</q-badge
>
</q-avatar>
</q-item-section>
<q-item-section class="">
<q-item-label overline>
<div class="index_diffusore">{{ index + 1 }}°</div>
</q-item-label>
<q-item-label>
{{ tools.getNameToShow(user) }}</q-item-label
>
<q-item-label caption>{{
tools.getUserNameOnlyIfToShow(user)
}}</q-item-label>
</q-item-section>
<q-item-section side
><div
:class="
`text-h6 q-mx-sm q-px-sm text-bold ` +
($q.dark.isActive ? `text-white` : `text-black`)
"
>
{{ user.count }}
</div></q-item-section
<q-item
v-for="(user, index) in lastsonline"
:key="index"
class="animated chip_shadow q-ma-sm"
clickable
v-ripple
@click="gotoPage(`/my/${user.username}`)"
>
</q-item>
</transition-group>
</q-list>
</div>
</q-tab-panel>
<q-tab-panel name="strettelist">
<div class="q-pa-md" style="max-width: 350px; margin: auto">
<div class="text-center text-bold text-h6">
Strette di Mano
</div>
<div class="text-center">
Più persone conoscerai di persona e maggiore aumenterà la
Rete di fiducia.
</div>
<q-list bordered>
<transition-group
name="fade"
mode="out-in"
appear
enter-active-class="animazione fadeIn"
leave-active-class="animazione fadeOut"
>
<q-item
v-for="(user, index) in strettelist"
:key="index"
class="animated chip_shadow q-ma-sm"
clickable
v-ripple
@click="gotoPage(`/my/${user.username}`)"
>
<q-item-section avatar>
<q-avatar round size="48px">
<img :src="userStore.getImgByProfile(user)" />
<q-badge
v-if="tools.isUserOnline(user)"
align="top"
floating
color="green"
>online</q-badge
<q-item-section avatar>
<q-avatar round size="48px">
<img :src="userStore.getImgByProfile(user)" />
<q-badge
v-if="tools.isUserOnline(user)"
align="top"
floating
color="green"
>online</q-badge
>
</q-avatar>
</q-item-section>
<q-item-section class="">
<q-item-label
>{{ tools.getNameToShow(user, null, {showprov: true, html: true}) }}
</q-item-label>
<q-item-label caption>{{
tools.getUserNameOnlyIfToShow(user, null, {showprov: true, html: true})
}}</q-item-label>
</q-item-section>
<q-item-section side>
<div
:class="
`text-h6 q-mr-sm text-bold ` + $q.dark.isActive
? `text-white`
: `text-black`
"
>
</q-avatar>
</q-item-section>
<q-item-section class="">
<q-item-label overline>
<div class="index_diffusore">{{ index + 1 }}°</div>
</q-item-label>
<q-item-label>
{{ tools.getNameToShow(user) }}</q-item-label
>
<q-item-label caption>{{
tools.getUserNameOnlyIfToShow(user)
}}</q-item-label>
</q-item-section>
<q-item-section side
><div
:class="
`text-h6 q-mx-sm q-px-sm text-bold ` +
($q.dark.isActive ? `text-white` : `text-black`)
"
>
{{ user.count }}
</div></q-item-section
<CTimeAgo :datetime="user.lasttimeonline" />
</div>
</q-item-section>
</q-item>
</transition-group>
</q-list>
</div>
</q-card-section>
</q-card>
</q-expansion-item>
<q-separator />
<q-expansion-item
v-if="false"
expand-separator
group="somegroup"
icon="fas fa-medal"
:label="$t('statusreg.diffusori')"
header-class="text-purple"
>
<q-card>
<q-card-section>
<div class="q-pa-md" style="max-width: 350px; margin: auto">
<div class="text-center text-bold text-h6">
Aiuta RISO a crescere
</div>
<div class="text-center">
Condividi il tuo link d'invito, alimentando nuovi ingressi
alla RETE Solidale di RISO.
</div>
<q-list bordered>
<transition-group
name="fade"
mode="out-in"
appear
enter-active-class="animazione fadeIn"
leave-active-class="animazione fadeOut"
>
<q-item
v-for="(user, index) in diffusorilist"
:key="index"
class="animated chip_shadow q-ma-sm"
clickable
v-ripple
@click="gotoPage(`/my/${user.username}`)"
>
</q-item>
</transition-group>
</q-list>
</div>
</q-tab-panel>
<q-tab-panel name="sharedlink">
<div class="q-pa-md" style="max-width: 300px">
<div class="text-center text-bold text-h6">
Registrati con questi invitanti:
</div>
<div class="text-center">
Cliccare sulla persona per procedere alla registrazione
</div>
<q-list bordered>
<transition-group
name="fade"
mode="out-in"
appear
enter-active-class="animazione fadeIn"
leave-active-class="animazione fadeOut"
>
<q-item
v-for="(user, index) in lastssharedlink"
:key="index"
class="animated chip_shadow q-ma-sm"
clickable
v-ripple
@click="gotoPage(`/registrati/${user.username}`)"
>
<q-item-section avatar>
<q-avatar round size="48px">
<img :src="userStore.getImgByProfile(user)" />
<q-badge
v-if="tools.isUserOnline(user)"
align="top"
floating
color="green"
>online</q-badge
<q-item-section avatar>
<q-avatar round size="48px">
<img :src="userStore.getImgByProfile(user)" />
<q-badge
v-if="tools.isUserOnline(user)"
align="top"
floating
color="green"
>online</q-badge
>
</q-avatar>
</q-item-section>
<q-item-section class="">
<q-item-label overline>
<div class="index_diffusore">
{{ index + 1 }}°
</div>
</q-item-label>
<q-item-label>
{{ tools.getNameToShow(user, null, {showprov: true, html: true}) }}
</q-item-label>
<q-item-label caption>{{
tools.getUserNameOnlyIfToShow(user, null, {showprov: true, html: true})
}}</q-item-label>
</q-item-section>
<q-item-section side
><div
:class="
`text-h6 q-mx-sm q-px-sm text-bold ` +
($q.dark.isActive ? `text-white` : `text-black`)
"
>
</q-avatar>
</q-item-section>
<q-item-section class="">
<q-item-label overline>
<div class="index_diffusore">{{ index + 1 }}°</div>
</q-item-label>
<q-item-label>
{{ tools.getNameToShow(user) }}</q-item-label
{{ user.count }}
</div></q-item-section
>
<q-item-label caption>{{
tools.getUserNameOnlyIfToShow(user)
}}</q-item-label>
</q-item-section>
<q-item-section side
><span class="text-h6 q-mr-sm"></span
></q-item-section>
</q-item>
</transition-group>
</q-list>
</div>
</q-tab-panel>
</q-tab-panels>
</div>
</q-item>
</transition-group>
</q-list>
</div>
</q-card-section>
</q-card>
</q-expansion-item>
<q-separator />
<q-expansion-item
group="somegroup"
icon="fas fa-handshake"
:label="$t('handshake.last_strettedimano')"
header-class="bg-teal text-white"
expand-icon-class="text-white"
>
<q-card class="bg-teal-2">
<q-card-section>
<div class="q-pa-md" style="max-width: 350px; margin: auto">
<div class="text-center text-bold text-h6">
Strette di Mano
</div>
<div class="text-center">
Più persone conoscerai di persona e maggiore aumenterà la
Rete di fiducia.
</div>
<q-list bordered>
<transition-group
name="fade"
mode="out-in"
appear
enter-active-class="animazione fadeIn"
leave-active-class="animazione fadeOut"
>
<q-item
v-for="(user, index) in strettelist"
:key="index"
class="animated chip_shadow q-ma-sm"
clickable
v-ripple
>
<q-item-section avatar>
<q-avatar
round
size="48px"
@click="gotoPage(`/my/${user.username}`)"
>
<img :src="userStore.getImgByProfile(user)" />
<q-badge
v-if="tools.isUserOnline(user)"
align="top"
floating
color="green"
>online</q-badge
>
</q-avatar>
</q-item-section>
<q-item-section class="">
<q-item-label class="clDateStrette">
{{
tools.getstrDateTimeLong(
user.profile.handshake.date
)
}}</q-item-label
>
<q-item-label>
{{ tools.getNameToShow(user, null, {showprov: true, html: true}) }}
</q-item-label>
<q-item-label style="text-align: right">
{{ tools.getNameToShow(user.userfriend, null, {showprov: true, html: true}) }}
</q-item-label
>
</q-item-section>
<q-item-section side>
<q-avatar
round
size="48px"
@click="
gotoPage(`/my/${user.userfriend.username}`)
"
>
<img
:src="
userStore.getImgByProfile(user.userfriend)
"
/>
<q-badge
v-if="tools.isUserOnline(user.userfriend)"
align="top"
floating
color="green"
>online</q-badge
>
</q-avatar>
</q-item-section>
</q-item>
</transition-group>
</q-list>
</div>
</q-card-section>
</q-card>
</q-expansion-item>
</q-list>
<!--<CGeoChart :mydata="datastat.arr_nations">

View File

@@ -1132,8 +1132,9 @@ h3 {
.imgprofile {
border: 0px solid rgb(29, 118, 13);
border-radius: 16px;
box-shadow: 0 0 45px rgba(246, 246, 246, 0.2);
box-shadow: 0 0 10px rgba(0, 0, 0, 0.5) !important;
margin: 1px;
object-position: 50% 5% !important;
}
.imgprofile_small {
@@ -1404,8 +1405,10 @@ h3 {
.chip_shadow {
border-radius: 20px;
background: #1729ea;
background: -webkit-linear-gradient(45deg, #17ead9, #6078ea) !important;
background: linear-gradient(45deg, #17ead9, #6078ea) !important;
background: -webkit-linear-gradient(45deg, #1e90ff, #3742fa) !important; /* A combination of lighter blues */
background: linear-gradient(45deg, #3a90e7, #8e92e4) !important;
box-shadow: 1px 1px 3px #5f6f8b;
color: #ffffff; /* Ensure the text is white for better contrast */
}
.last_access {
@@ -1948,6 +1951,20 @@ h3 {
text-align: center;
}
.ev_hour, .ev_hour_end {
color: black;
font-size: 0.85rem;
text-align: center;
}
.ev_hour{
color: green;
}
.ev_hour_end{
color: red;
}
.col-105 {
height: auto;
width: 90%;
@@ -2314,6 +2331,13 @@ $coloreprincipale: lightblue;
--background-odd-light: white;
--background-even-dark: rgba(45, 45, 45, 0.7); /* Aggiustare per il tema dark */
--background-odd-dark: rgba(30, 30, 30, 1); /* Aggiustare per il tema dark */
--text-color: #555;
--bg-color: #f9f9f9;
}
body.body--dark {
--text-color: #bbb;
--bg-color: #333;
}
.background-even {
@@ -2347,3 +2371,21 @@ $coloreprincipale: lightblue;
}
}
.citation {
font-style: italic; /* Testo in corsivo per indicare una citazione */
border-left: 4px solid #cccccc; /* Barra verticale per evidenziare la citazione */
margin: 10px 0; /* Spaziatura verticale */
padding: 10px 20px; /* Spaziatura interna */
color: #555555; /* Colore del testo leggermente attenuato */
background-color: #f9f9f9; /* Sfondo leggero per evidenziare la citazione */
}
.comment {
font-size: 0.9em; /* Testo leggermente più piccolo */
color: #666666; /* Colore del testo attenuato */
background-color: #f4f4f4; /* Sfondo neutro */
padding: 10px; /* Spaziatura interna */
border-radius: 5px; /* Angoli arrotondati */
box-shadow: 1px 1px 5px rgba(0, 0, 0, 0.1); /* Leggera ombra per effetto di profondità */
margin: 10px 0; /* Spaziatura verticale */
}

View File

@@ -140,6 +140,7 @@ export interface IMyElem {
parambool2?: boolean
parambool3?: boolean
number?: number
num2?: number
imgback?: string
ratio?: string
containerHtml?: string

View File

@@ -313,7 +313,7 @@ const msg_it = {
domanda_removefriend: 'Rimuovi dagli Amici {username}?',
domanda_removehandshake: 'Rimuovi dalla lista Strette di Mano {username}?',
domanda_exit_fromgroup: 'Uscire dal Gruppo {groupname} ?',
domanda_addadminofmygroup: 'Aggiungere {username} come Amministratore del Gruppo {groupname} ?',
domanda_addadminofmygroup: 'Aggiungere {username} come Amministratore / Amministratrice del Gruppo {groupname} ?',
domanda_removeadminofmygroup: 'Rimuovere {username} dall\' incarico di Amministratore del Gruppo {groupname} ?',
removedfriend: 'Rimosso dalla lista di Amici',
removedhandshake: 'Rimosso dalla lista Strette di Mano',
@@ -1255,6 +1255,7 @@ const msg_it = {
handshake: {
strettadimano: 'Stretta di mano',
strettedimano: 'Strette di mano',
last_strettedimano: 'Ultime Strette di mano',
received: 'Ricevute',
incommon: 'Strette in Comune',
accept_trust: 'Accetta la Stretta di mano',
@@ -1452,7 +1453,7 @@ const msg_it = {
remove_from_mylist: 'Rimuovi dal Circuito',
reject_ask: 'Rifiuta l\'ingresso dal Circuito',
domanda_exit_fromcircuit: 'Sei veramente sicuro di voler uscire dal {circuitname} ?',
domanda_addadminofcircuit: 'Aggiungere {username} come Amministratore del {circuitname} ?',
domanda_addadminofcircuit: 'Aggiungere {username} come Amministratore/Amministratrice del {circuitname} ?',
domanda_removeadminofcircuit: 'Rimuovere {username} dall\' incarico di Amministratore del {circuitname} ?',
domanda_refuse_circuit: 'Rifiutare la richiesta di {username} per entrare nel {circuitname}?',
refusedcircuit: 'Rifiutato a {username} la richiesta di entrare nel Circuito',
@@ -1673,6 +1674,8 @@ const msg_it = {
},
statusreg: {
invite_by: 'Invitata da',
has_invited: 'ha invitato',
reg: 'Utenti Attivi',
verifieds: 'Verificati',
online_today: 'On Line Oggi',
@@ -1681,11 +1684,12 @@ const msg_it = {
autorizzare: 'In attesa di Abilitazione',
passeggeri: 'Passeggeri Navi',
giainlista: 'Gia in Lista',
newreg: 'Iscritti',
onlineusers: 'OnLine',
newreg: 'Ultimi Iscritti',
onlineusers: 'OnLine ({today} oggi)',
diffusori: 'Diffusori',
strettelist: 'Strette',
sharedlink: 'Diffusori',
lastsharedlink: 'Ultimi invitanti alla App',
nationality: 'Nazionalità',
nationality_born: 'Nazione di Nascita',
verified: 'Verificata',

View File

@@ -310,6 +310,7 @@ export const costanti = {
VISUTABLE_USER_TABGROUP: -4,
VISUTABLE_USER_TABCIRCUIT: -5,
VISUTABLE_GROUP_CIRCUIT: -6,
VISUTABLE_GRID_ORIZ: -10,
DIR_UPLOAD: 'upload/',

View File

@@ -165,6 +165,7 @@ export const colmyelems = [
AddCol({ name: 'parambool2', label_trans: 'myelems.parambool2', fieldtype: costanti.FieldType.boolean }),
AddCol({ name: 'parambool3', label_trans: 'myelems.parambool3', fieldtype: costanti.FieldType.boolean }),
AddCol({ name: 'number', label_trans: 'myelems.number', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'num2', label_trans: 'myelems.num2', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'imgback', label_trans: 'myelems.imgback' }),
AddCol({ name: 'size', label_trans: 'myelems.size' }),
AddCol({ name: 'ratio', label_trans: 'myelems.ratio' }),

View File

@@ -3309,6 +3309,11 @@ export const tools = {
if (mytimestamp) return date.formatDate(mytimestamp, 'DD/MM HH:mm')
return ''
},
getstrDateTimeLong(mytimestamp: Date | number | string | undefined) {
// console.log('getstrDate', mytimestamp)
if (mytimestamp) return date.formatDate(mytimestamp, 'DD/MMM/YYYY HH:mm')
return ''
},
getstrDateMonthTimeShort(mytimestamp: Date | number | string | undefined) {
// console.log('getstrDate', mytimestamp)

View File

@@ -683,12 +683,12 @@ export const useUserStore = defineStore('UserStore', {
},
getLinkProfileAndRIS(username: string, qtyris: string, causale: string = ''): string {
let myparams = ''
if (username === '')
username = this.my.username
let mylink = tools.getUrlSite() + '/my/' + username
let myval = tools.strToVal(qtyris, true)
if (myval !== null) {
if (myparams)
@@ -773,7 +773,7 @@ export const useUserStore = defineStore('UserStore', {
return myrec
},
getNameToShow(user: any, col: any = null): string {
getNameToShow(user: any, col: any = null, options: any = {}): string {
let name = ''
let myrec = this.getRecByCol(user, col)
@@ -812,14 +812,27 @@ export const useUserStore = defineStore('UserStore', {
if (!name && myrec.extrarec && myrec.extrarec.hasOwnProperty('contoComDest'))
return myrec.extrarec.contoComDest
return name
return name + (options && options.showprov ? this.getProvinceByUser(myrec, options ? options.html : false) : '')
},
getUserNameOnlyIfToShow(user: any, col: any = null): string {
getProvinceByUser(user: IUserFields, html: boolean = false) {
let mystr = ''
if (user && user.profile && user.profile.resid_province)
mystr = `(${user.profile.resid_province})`
if (html) {
mystr = `<span style='text-align: right'>${mystr}</span>`
}
return mystr
},
getUserNameOnlyIfToShow(user: any, col: any = null, options: any): string {
let myrec = this.getRecByCol(user, col)
if (myrec.name || myrec.surname) {
return myrec.username
return myrec.username + ((options && options.showprov) ? this.getProvinceByUser(myrec, options.html) : '')
}
return ''

View File

@@ -14,5 +14,9 @@
.qualifica{
border: solid 2px #4198ef;
border-radius: 1rem;
padding: 5px;
padding: 4px;
margin: 2px;
text-align: center;
box-shadow: 0 0 0 1px #4A89F3;
text-shadow: .05rem .05rem .15rem #878787;
}

View File

@@ -129,9 +129,9 @@
<div v-if="userStore.userprofile._id" class="col-12 text-h8 q-mt-sm">
<span v-if="userStore.userprofile.profile.qualifica">
<em
><span class="qualifica">{{
><div class="qualifica">{{
userStore.userprofile.profile.qualifica
}}</span></em
}}</div></em
>
</span>
</div>
@@ -247,9 +247,9 @@
>
<span v-if="userStore.userprofile.profile.qualifica">
<em
><span class="qualifica">{{
><div class="qualifica">{{
userStore.userprofile.profile.qualifica
}}</span></em
}}</div></em
>
</span>
</div>