- Statistiche

- Menu e Sottomenu
- Lista ultimi Movimenti
This commit is contained in:
Surya Paolo
2024-09-26 02:14:50 +02:00
parent 4ac0acc2f3
commit 4c9e5ae991
101 changed files with 2215 additions and 9516 deletions

View File

@@ -1,452 +0,0 @@
.testo-banda {
//background: -webkit-gradient(linear, left top, left bottom, from(#3144f0), to(transparent));
//background: linear-gradient(180deg, #3144f0, transparent);
//background: rgba(0, 0, 0, .6)
}
$grayshadow: #555;
$textcol: blue;
$textcol_scuro: darkblue;
p {
margin: 0 0 1.25rem;
//text-shadow: .125rem .125rem .25rem $grayshadow;
}
h4 {
font-size: 1.25rem;
}
.mycard {
visibility: hidden;
}
.landing {
}
.landing_background {
background: #000 url(../../../public/images/foto1.jpg) no-repeat 50% fixed;
background-size: cover
}
.landing > section {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
//padding: 0 16px
}
.intro {
display: flex;
justify-content: space-between;
align-items: stretch;
/* flex-flow: row nowrap; */
padding: 1.25rem 0 1.25rem 0;
margin: .125rem;
* {
width: 100%;
flex: 1;
margin-left: auto;
margin-right: auto;
}
&__associazione {
min-width: 350px;
}
&__comeassociarsi {
min-width: 350px;
}
}
.subtitle {
font-weight: 600;
text-align: center;
letter-spacing: 0.125rem;
text-transform: uppercase;
font-size: 1rem;
}
.landing > section.padding {
padding: 5.62rem 1rem;
}
.landing > section.padding_testo {
padding-top: 1.25rem;
padding-bottom: 1rem;
}
.landing > section.padding_gallery {
padding-top: 3.125rem;
padding-bottom: 5.625rem;
}
.landing > section > div {
position: relative;
width: 100%
}
.maxwidth1200 {
max-width: 1200px;
}
.landing__toolbar {
background: -webkit-gradient(linear, left top, left bottom, from(#000), to(transparent));
background: linear-gradient(180deg, #000, transparent);
padding: 0 !important
}
.landing__toolbar .q-btn {
border-radius: 0 0 .315rem .315rem;
-ms-flex-item-align: stretch;
align-self: stretch
}
.landing__hero {
min-height: 50vh
}
.landing__header {
height: 18vh
}
.landing__arrow {
bottom: 1.5rem;
opacity: .4
}
.landing__front {
background: -webkit-gradient(linear, left top, left bottom, from(transparent), color-stop(15%, rgba(0, 0, 0, .6)));
background: linear-gradient(180deg, transparent, rgba(0, 0, 0, .6) 15%)
}
.landing__logo {
width: 9.40rem;
height: 9.40rem;
margin-top: 1.315rem;
//-webkit-animation: logo-rotate 240s linear infinite;
//animation: logo-rotate 240s linear infinite
}
.landing__features .q-icon {
font-size: 4rem
}
h4 {
line-height: 1.5;
text-shadow: .25rem .25rem .5rem $grayshadow;
}
.landing__features h4, .landing__features h6 {
margin: 1rem 0
}
.landing__features p {
opacity: .7;
font-size: 1rem;
line-height: 1.5;
}
.landing__footer {
//background: -webkit-gradient(linear, left top, left bottom, color-stop(65%, rgba(0, 0, 0, .1)), to(#000));
background: linear-gradient(180deg, rgba(0, 0, 0, .8) 95%, #FFF);
padding-top: 4.5rem !important;
padding-bottom: 4.5rem !important;
padding-left: 1.25rem;
padding-right: 1.25rem;
color: #9f9f9f;
}
.icon_contact:hover {
color: blue;
border-color: white;
border-width: .0625rem;
}
.landing__footer .doc-link {
color: $textcol;
}
.landing__footer .doc-link:hover {
opacity: .8
}
.landing__swirl-bg {
background-repeat: no-repeat !important;
background-position: top;
background-size: contain !important;
background-image: url(../../../public/images/landing_first_section.png) !important
}
.feat-descr {
font-size: 1.15rem;
}
.feat-descr:hover {
transition: opacity 0.5s ease-in-out;
opacity: 0.9;
}
.q-col-gutter-sm {
padding: 3.125rem 3.125rem;
//margin-left: -48px
}
body.mobile .landing {
//background: unset
}
body.mobile .landing:before {
content: "";
position: fixed;
top: 0;
height: 100vh;
left: 0;
right: 0;
bottom: 0;
z-index: -1;
//background: #000 url(../../public/images/cover.jpg) 50%;
background-size: cover
}
/*
@-webkit-keyframes logo-rotate {
to {
-webkit-transform: rotate(-1turn);
transform: rotate(-1turn)
}
}
@keyframes logo-rotate {
to {
-webkit-transform: rotate(-1turn);
transform: rotate(-1turn)
}
}
*/
.home {
//background-color: rgb(250, 250, 250);
padding: 3.125rem;
display: flex;
//flex-wrap: nowrap;
flex-direction: column;
align-items: center;
justify-content: space-between;
}
.btn-start {
margin: 3.125rem;
}
.shadow {
//color: white;
text-shadow: 0.125rem 0.125rem 0.25rem $grayshadow;
}
.text-h1, h1 {
font-size: 3rem;
font-weight: bold;
line-height: 3rem;
letter-spacing: -.01562em;
margin-bottom: 8px !important;
}
.text-h2 {
font-size: 3.75rem;
font-weight: 300;
line-height: 3.75rem;
letter-spacing: -.00833em;
}
.text-weight-bold {
font-weight: 700;
}
.text-vers {
font-size: 0.75rem;
font-weight: 400;
line-height: 1.75rem;
letter-spacing: .00937em;
text-shadow: .25rem .25rem .5rem $grayshadow;
}
.homep-cover-img-1 {
background: #000 url(../../../public/images/foto1.jpg) no-repeat 50% fixed;
//transition: background-image 1s ease-in-out;
}
.homep-cover-img-2 {
background: #000 url(../../../public/images/foto2.jpg) no-repeat 50% fixed;
//transition: background-image 1s ease-in-out;
}
.homep-cover-img-3 {
background: #000 url(../../../public/images/foto3.jpg) no-repeat 50% fixed;
//transition: background-image 1s ease-in-out;
}
.homep-cover-img.hide-filter:before {
opacity: 0
}
.landing__footer-icons {
font-size: 1.75rem
}
.landing__footer-icons a {
margin: 0 .5rem .5rem;
text-decoration: none;
outline: 0;
color: $textcol;
transition: color .28s
}
.landing__footer-icons a:hover {
color: $textcol_scuro;
}
.doc-img {
max-width: 100%;
}
.mylist {
background: #3fdaff;
padding-left: 1.25rem;
}
.clgutter {
margin-top: 1.25rem;
padding: .62rem;
}
.carousel_img_3 {
//background-image: url(../../public/images/cibo_sano.jpg);
background-size: cover !important;
background-position: 50% center !important;
background-repeat: no-repeat !important;
}
@media (max-width: 718px) {
// PER VERSIONE MOBILE
.landing__hero {
text-align: center
}
.landing__header {
height: 7vh
}
.clgutter {
margin-top: 0;
padding: 0;
}
.landing__hero .text-h1, h1 {
font-size: 2rem;
line-height: 2.05rem;
margin-bottom: 1.25rem
}
.landing > section.padding {
padding: 2.5rem 1rem;
}
.landing > section.padding_testo {
padding-top: 1.25rem;
padding-bottom: 1rem;
}
.landing > section.padding_gallery {
padding-top: 3.125rem;
padding-bottom: 5.625rem;
max-width: 800px;
}
.landing > section.padding_gallery > div {
padding-top: 3.125rem;
padding-bottom: 5.625rem;
}
.landing__features h4, .landing__features h6 {
margin: 1.25rem 0
}
h4 {
line-height: 1.4;
text-shadow: 0.25rem 0.25rem 0.5rem $grayshadow;
}
.landing .feature-item {
text-align: center;
margin-top: 1.25rem;
}
.landing__hero-content {
padding-bottom: 11.25rem;
}
.landing__hero2-content {
padding-bottom: 7.25rem;
}
.landing__hero-btns {
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center
}
.q-col-gutter-sm {
padding: .625rem .315rem;
}
.text-subtitle1 {
font-size: 1.25rem;
}
.text-vers {
font-size: 0.6rem;
}
.carousel_img_3 {
//background-image: url(../../public/images/cibo_sano.jpg);
background-size: 620px 620px !important;
background-position: 50% top !important;
background-repeat: no-repeat !important;
}
}
.custom-caption {
text-align: center;
padding: .75rem;
color: $textcol;
background-color: rgba(0, 0, 0, .3);
}
.sfondo-grigio {
padding: 1rem;
color: $textcol;
background-color: rgba(0, 0, 0, .35);
}
.mycontacts {
color: gray;
letter-spacing: 0.078rem;
}
.mycontacts_title {
text-shadow: 0.125rem 0.125rem 0.125rem #555;
font-weight: bold;
color: #999;
letter-spacing: 0.125rem;
}
.mycontacts_text {
color: #999;
letter-spacing: 0.093rem;
}

View File

@@ -1,78 +0,0 @@
import { defineComponent, ref, onMounted, watch, computed } from 'vue'
import { useGlobalStore } from '@store/globalStore'
import { useRoute } from 'vue-router'
import { useUserStore } from '@store/UserStore'
import { Logo } from '../../components/logo'
import { LandingFooter } from '../../components/LandingFooter'
import { CMyPage } from '../../components/CMyPage/index'
import { tools } from '@src/store/Modules/tools'
import { static_data } from '@src/db/static_data'
import { toolsext } from '@src/store/Modules/toolsext'
import { Screen } from 'quasar'
import { CCardCarousel, CEventsCalendar, COpenStreetMap } from '@components'
import MixinBase from '@src/mixins/mixin-base'
import { firstimagehome } from '@src/db/static_data'
import MixinMetaTags from '@/mixins/mixin-metatags'
export default defineComponent({
name: 'home_arcadei',
components: { Logo, LandingFooter, CMyPage, CCardCarousel, CEventsCalendar, COpenStreetMap },
setup() {
const animare = ref(0)
const slide = ref('first')
const slide2 = ref(1)
const getImmagini = ref([
{
title: '', subtitle: '',
alt: 'Arcadei',
img: 'images/arcadei/img1.png'
},
])
const userStore = useUserStore()
const globalStore = useGlobalStore()
const { setValDb, getValDb } = MixinBase()
const { setmeta, getsrcbyimg } = MixinMetaTags()
function getheightgallery() {
if (tools.isMobile())
return '400px'
else
return '600px'
}
function created() {
//
}
function getArrDisciplines() {
return globalStore.disciplines.filter((rec: any) => rec.showinhome)
}
created()
return {
tools,
toolsext,
static_data,
animare,
slide,
slide2,
getheightgallery,
getArrDisciplines,
getImmagini,
getValDb,
firstimagehome,
getsrcbyimg,
setmeta,
}
},
})

View File

@@ -1,221 +0,0 @@
<template>
<q-page>
<CMyPage title="Home">
<div class="landing">
<section>
<div class="landing__hero maxwidth1200 text-white">
<q-carousel
animated
:autoplay="animare"
swipeable
infinite
navigation
transition-next="slide-left"
transition-prev="slide-right"
v-model="slide"
:height="getheightgallery()"
width="100%"
>
<q-carousel-slide name="first"
:img-src="getsrcbyimg(firstimagehome())">
<div class="landing__header"></div>
<div class="landing__hero-content row justify-center q-gutter-xs clgutter">
<div class="row">
&nbsp;
</div>
<div class="flex justify-end">
<div class="q-gutter-xs testo-banda clgutter">
<h1 class="text-h1 shadow-max">{{tools.getappname()}}</h1>
<div class="text-subtitle1 shadow text-italic q-pl-sm">
&nbsp;
</div>
<div class="text-subtitle1 shadow-max big text-italic q-pl-sm">
</div>
<div class="text-subtitle2 shadow text-italic q-pl-sm">
</div>
<div>
<br>
<br>
<div v-if="!tools.isLogged()" style="margin: 5px; padding: 5px;" class="home">
<br>
<br>
</div>
</div>
</div>
</div>
</div>
<div class="landing__arrow absolute-bottom text-center">
<i aria-hidden="true"
class="q-icon text-h2 text-white material-icons">expand_more</i>
</div>
</q-carousel-slide>
<q-carousel-slide name="second"
:img-src="getsrcbyimg('images/background2.jpg')" alt="">
<div class="landing__header"></div>
<div class="landing__hero2-content row justify-center q-gutter-xs clgutter">
<div class="row">
<logo></logo>
</div>
<div class="flex justify-end">
<div class="q-gutter-xs testo-banda clgutter">
<h1 class="text-h1 shadow-max">{{tools.getappname()}}</h1>
<h2 class="text-subtitle1 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp')}}
</h2>
<h2 class="text-subtitle1 shadow-max big text-italic q-pl-sm">
<strong>{{$t('msg.sottoTitoloApp2')}}</strong>
</h2>
<h2 class="text-subtitle2 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp3')}}
</h2>
</div>
</div>
</div>
<div class="landing__arrow absolute-bottom text-center">
<i aria-hidden="true"
class="q-icon text-h2 text-white material-icons">expand_more</i>
</div>
</q-carousel-slide>
<q-carousel-slide name="third"
:img-src="getsrcbyimg('images/background3.jpg')">
<div class="landing__header"></div>
<div class="landing__hero2-content row justify-center q-gutter-xs clgutter">
<div class="row">
<logo></logo>
</div>
<div class="flex justify-end">
<div class="q-gutter-xs testo-banda clgutter">
<div class="text-h1 shadow-max">{{tools.getappname()}}</div>
<div class="text-subtitle1 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp')}}
</div>
<div class="text-subtitle1 shadow-max big text-italic q-pl-sm"><strong>{{$t('msg.sottoTitoloApp2')}}</strong>
</div>
<div class="text-subtitle2 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp3')}}
</div>
<div class="text-subtitle3 shadow text-italic q-pl-sm ">
{{$t('msg.sottoTitoloApp4')}}
</div>
</div>
</div>
</div>
<div class="landing__arrow absolute-bottom text-center">
<!--<i aria-hidden="true"-->
<!--class="q-icon text-h2 text-white material-icons">expand_more</i>-->
</div>
</q-carousel-slide>
</q-carousel>
</div>
</section>
<div class="q-pa-md q-gutter-md">
<div v-if="isLogged && !isVerified" class="text-verified">{{
$t('components.authentication.email_verification.link_sent') }}
</div>
</div>
<CCardCarousel :myarr="getArrDisciplines()">
</CCardCarousel>
<CEventsCalendar :mysingleevent="null" :showfirstN="getValDb('SHOW_LAST_EVENTS', false, 3)">
</CEventsCalendar>
<div v-if="getValDb('VIDEO_HOME', false)" class="row justify-evenly items-center q-gutter-md ">
<div class="text-center">
<h4 class="subtitle text-blue" v-html="getValDb('VIDEO_TITLE', false)"></h4>
<div class="">
<video :width="tools.getwidthscale(mythis, 320, 800)"
:height="tools.getheightbywidth(mythis, 320, 180, 800)" controls>
<source :src="getValDb('VIDEO_HOME', false)" type="video/mp4">
</video>
</div>
<!--<q-video src="../../statics/video/Intervista_Cristina_Barattoni.mp4">-->
<!--</q-video>-->
</div>
</div>
<div v-if="getValDb('YT_VIDEO', false)" class="row justify-evenly items-center q-gutter-md ">
<div class="text-center">
<h4 class="subtitle text-blue" v-html="getValDb('YT_TITLE', false)"></h4>
<div class="">
<div class="">
<iframe
:width="tools.getwidthscale(mythis, getValDb('YT_W', false), 800)"
:height="tools.getheightbywidth(mythis, getValDb('YT_W', false), getValDb('YT_H', false), 800)"
:src="getValDb('YT_VIDEO', false)"
frameborder="0"
allowfullscreen
></iframe>
</div>
</div>
<!--<q-video src="../../statics/video/Intervista_Cristina_Barattoni.mp4">-->
<!--</q-video>-->
</div>
</div>
<section :class="`maxwidth padding_gallery `+ ($q.dark.isActive ? `bg-black` : `bg-white`) + ` text-grey-10 text-center`" >
<q-carousel
swipeable
animated
:autoplay="8000"
v-model="slide2"
arrows
thumbnails
infinite
height="600">
<q-carousel-slide v-for="(rec, index) in getImmagini" :key="index" :name="index"
:img-src="rec.img"
:alt="rec.alt"
class="carousel_slide">
<div class="absolute-bottom custom-caption" style="margin-bottom: 70px">
<div class="text-h5"><span
class="text-h6 text-grey-1 shadow-max">{{index + 1}}. </span><span
class="text-h6 text-grey-2 shadow">{{rec.title}}</span></div>
<div class="text-subtitle1"><span class="text-grey-4 shadow">{{rec.subtitle}}</span>
</div>
</div>
</q-carousel-slide>
</q-carousel>
</section>
<div v-if="!tools.isMobile()" style="margin: 60px 60px;"></div>
<COpenStreetMap :imgmap="getValDb('IMGMAP', false)" :urlmap="getValDb('URLMAP', false)" :title="getValDb('MAP_TITLE', false)"
:coordinates="getValDb('COORD_MAP_1', false)" :coord_big="getValDb('COORD_MAP_BIG', false)">
</COpenStreetMap>
<div class="q-ma-md"></div>
</div>
</CMyPage>
</q-page>
</template>
<script lang="ts" src="./home_arcadei.ts">
</script>
<style lang="scss" scoped>
@import './home_arcadei.scss';
</style>

View File

@@ -1,452 +0,0 @@
.testo-banda {
//background: -webkit-gradient(linear, left top, left bottom, from(#3144f0), to(transparent));
//background: linear-gradient(180deg, #3144f0, transparent);
//background: rgba(0, 0, 0, .6)
}
$grayshadow: #555;
$textcol: blue;
$textcol_scuro: darkblue;
p {
margin: 0 0 1.25rem;
//text-shadow: .125rem .125rem .25rem $grayshadow;
}
h4 {
font-size: 1.25rem;
}
.mycard {
visibility: hidden;
}
.landing {
}
.landing_background {
background: #000 url(../../../public/images/foto1.jpg) no-repeat 50% fixed;
background-size: cover
}
.landing > section {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
//padding: 0 16px
}
.intro {
display: flex;
justify-content: space-between;
align-items: stretch;
/* flex-flow: row nowrap; */
padding: 1.25rem 0 1.25rem 0;
margin: .125rem;
* {
width: 100%;
flex: 1;
margin-left: auto;
margin-right: auto;
}
&__associazione {
min-width: 350px;
}
&__comeassociarsi {
min-width: 350px;
}
}
.subtitle {
font-weight: 600;
text-align: center;
letter-spacing: 0.125rem;
text-transform: uppercase;
font-size: 1rem;
}
.landing > section.padding {
padding: 5.62rem 1rem;
}
.landing > section.padding_testo {
padding-top: 1.25rem;
padding-bottom: 1rem;
}
.landing > section.padding_gallery {
padding-top: 3.125rem;
padding-bottom: 5.625rem;
}
.landing > section > div {
position: relative;
width: 100%
}
.maxwidth1200 {
max-width: 1200px;
}
.landing__toolbar {
background: -webkit-gradient(linear, left top, left bottom, from(#000), to(transparent));
background: linear-gradient(180deg, #000, transparent);
padding: 0 !important
}
.landing__toolbar .q-btn {
border-radius: 0 0 .315rem .315rem;
-ms-flex-item-align: stretch;
align-self: stretch
}
.landing__hero {
min-height: 50vh
}
.landing__header {
height: 18vh
}
.landing__arrow {
bottom: 1.5rem;
opacity: .4
}
.landing__front {
background: -webkit-gradient(linear, left top, left bottom, from(transparent), color-stop(15%, rgba(0, 0, 0, .6)));
background: linear-gradient(180deg, transparent, rgba(0, 0, 0, .6) 15%)
}
.landing__logo {
width: 9.40rem;
height: 9.40rem;
margin-top: 1.315rem;
//-webkit-animation: logo-rotate 240s linear infinite;
//animation: logo-rotate 240s linear infinite
}
.landing__features .q-icon {
font-size: 4rem
}
h4 {
line-height: 1.5;
text-shadow: .25rem .25rem .5rem $grayshadow;
}
.landing__features h4, .landing__features h6 {
margin: 1rem 0
}
.landing__features p {
opacity: .7;
font-size: 1rem;
line-height: 1.5;
}
.landing__footer {
//background: -webkit-gradient(linear, left top, left bottom, color-stop(65%, rgba(0, 0, 0, .1)), to(#000));
background: linear-gradient(180deg, rgba(0, 0, 0, .8) 95%, #FFF);
padding-top: 4.5rem !important;
padding-bottom: 4.5rem !important;
padding-left: 1.25rem;
padding-right: 1.25rem;
color: #9f9f9f;
}
.icon_contact:hover {
color: blue;
border-color: white;
border-width: .0625rem;
}
.landing__footer .doc-link {
color: $textcol;
}
.landing__footer .doc-link:hover {
opacity: .8
}
.landing__swirl-bg {
background-repeat: no-repeat !important;
background-position: top;
background-size: contain !important;
background-image: url(../../../public/images/landing_first_section.png) !important
}
.feat-descr {
font-size: 1.15rem;
}
.feat-descr:hover {
transition: opacity 0.5s ease-in-out;
opacity: 0.9;
}
.q-col-gutter-sm {
padding: 3.125rem 3.125rem;
//margin-left: -48px
}
body.mobile .landing {
//background: unset
}
body.mobile .landing:before {
content: "";
position: fixed;
top: 0;
height: 100vh;
left: 0;
right: 0;
bottom: 0;
z-index: -1;
//background: #000 url(../../public/images/cover.jpg) 50%;
background-size: cover
}
/*
@-webkit-keyframes logo-rotate {
to {
-webkit-transform: rotate(-1turn);
transform: rotate(-1turn)
}
}
@keyframes logo-rotate {
to {
-webkit-transform: rotate(-1turn);
transform: rotate(-1turn)
}
}
*/
.home {
//background-color: rgb(250, 250, 250);
padding: 3.125rem;
display: flex;
//flex-wrap: nowrap;
flex-direction: column;
align-items: center;
justify-content: space-between;
}
.btn-start {
margin: 3.125rem;
}
.shadow {
//color: white;
text-shadow: 0.125rem 0.125rem 0.25rem $grayshadow;
}
.text-h1, h1 {
font-size: 3rem;
font-weight: bold;
line-height: 3rem;
letter-spacing: -.01562em;
margin-bottom: 8px !important;
}
.text-h2 {
font-size: 3.75rem;
font-weight: 300;
line-height: 3.75rem;
letter-spacing: -.00833em;
}
.text-weight-bold {
font-weight: 700;
}
.text-vers {
font-size: 0.75rem;
font-weight: 400;
line-height: 1.75rem;
letter-spacing: .00937em;
text-shadow: .25rem .25rem .5rem $grayshadow;
}
.homep-cover-img-1 {
background: #000 url(../../../public/images/foto1.jpg) no-repeat 50% fixed;
//transition: background-image 1s ease-in-out;
}
.homep-cover-img-2 {
background: #000 url(../../../public/images/foto2.jpg) no-repeat 50% fixed;
//transition: background-image 1s ease-in-out;
}
.homep-cover-img-3 {
background: #000 url(../../../public/images/foto3.jpg) no-repeat 50% fixed;
//transition: background-image 1s ease-in-out;
}
.homep-cover-img.hide-filter:before {
opacity: 0
}
.landing__footer-icons {
font-size: 1.75rem
}
.landing__footer-icons a {
margin: 0 .5rem .5rem;
text-decoration: none;
outline: 0;
color: $textcol;
transition: color .28s
}
.landing__footer-icons a:hover {
color: $textcol_scuro;
}
.doc-img {
max-width: 100%;
}
.mylist {
background: #3fdaff;
padding-left: 1.25rem;
}
.clgutter {
margin-top: 1.25rem;
padding: .62rem;
}
.carousel_img_3 {
//background-image: url(../../public/images/cibo_sano.jpg);
background-size: cover !important;
background-position: 50% center !important;
background-repeat: no-repeat !important;
}
@media (max-width: 718px) {
// PER VERSIONE MOBILE
.landing__hero {
text-align: center
}
.landing__header {
height: 7vh
}
.clgutter {
margin-top: 0;
padding: 0;
}
.landing__hero .text-h1, h1 {
font-size: 2rem;
line-height: 2.05rem;
margin-bottom: 1.25rem
}
.landing > section.padding {
padding: 2.5rem 1rem;
}
.landing > section.padding_testo {
padding-top: 1.25rem;
padding-bottom: 1rem;
}
.landing > section.padding_gallery {
padding-top: 3.125rem;
padding-bottom: 5.625rem;
max-width: 800px;
}
.landing > section.padding_gallery > div {
padding-top: 3.125rem;
padding-bottom: 5.625rem;
}
.landing__features h4, .landing__features h6 {
margin: 1.25rem 0
}
h4 {
line-height: 1.4;
text-shadow: 0.25rem 0.25rem 0.5rem $grayshadow;
}
.landing .feature-item {
text-align: center;
margin-top: 1.25rem;
}
.landing__hero-content {
padding-bottom: 11.25rem;
}
.landing__hero2-content {
padding-bottom: 7.25rem;
}
.landing__hero-btns {
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center
}
.q-col-gutter-sm {
padding: .625rem .315rem;
}
.text-subtitle1 {
font-size: 1.25rem;
}
.text-vers {
font-size: 0.6rem;
}
.carousel_img_3 {
//background-image: url(../../public/images/cibo_sano.jpg);
background-size: 620px 620px !important;
background-position: 50% top !important;
background-repeat: no-repeat !important;
}
}
.custom-caption {
text-align: center;
padding: .75rem;
color: $textcol;
background-color: rgba(0, 0, 0, .3);
}
.sfondo-grigio {
padding: 1rem;
color: $textcol;
background-color: rgba(0, 0, 0, .35);
}
.mycontacts {
color: gray;
letter-spacing: 0.078rem;
}
.mycontacts_title {
text-shadow: 0.125rem 0.125rem 0.125rem #555;
font-weight: bold;
color: #999;
letter-spacing: 0.125rem;
}
.mycontacts_text {
color: #999;
letter-spacing: 0.093rem;
}

View File

@@ -1,78 +0,0 @@
import { defineComponent, ref, onMounted, watch, computed } from 'vue'
import { useGlobalStore } from '@store/globalStore'
import { useRoute } from 'vue-router'
import { useUserStore } from '@store/UserStore'
import { Logo } from '../../components/logo'
import { LandingFooter } from '../../components/LandingFooter'
import { CMyPage } from '../../components/CMyPage/index'
import { tools } from '@src/store/Modules/tools'
import { static_data } from '@src/db/static_data'
import { toolsext } from '@src/store/Modules/toolsext'
import { Screen } from 'quasar'
import { CCardCarousel, CEventsCalendar, COpenStreetMap } from '@components'
import MixinBase from '@src/mixins/mixin-base'
import { firstimagehome } from '@src/db/static_data'
import MixinMetaTags from '@/mixins/mixin-metatags'
export default defineComponent({
name: 'home_arcadei',
components: { Logo, LandingFooter, CMyPage, CCardCarousel, CEventsCalendar, COpenStreetMap },
setup() {
const animare = ref(0)
const slide = ref('first')
const slide2 = ref(1)
const getImmagini = ref([
{
title: '', subtitle: '',
alt: 'Arcadei',
img: 'images/arcadei/img1.png'
},
])
const userStore = useUserStore()
const globalStore = useGlobalStore()
const { setValDb, getValDb } = MixinBase()
const { setmeta, getsrcbyimg } = MixinMetaTags()
function getheightgallery() {
if (tools.isMobile())
return '400px'
else
return '600px'
}
function created() {
//
}
function getArrDisciplines() {
return globalStore.disciplines.filter((rec: any) => rec.showinhome)
}
created()
return {
tools,
toolsext,
static_data,
animare,
slide,
slide2,
getheightgallery,
getArrDisciplines,
getImmagini,
getValDb,
firstimagehome,
getsrcbyimg,
setmeta,
}
},
})

View File

@@ -1,221 +0,0 @@
<template>
<q-page>
<CMyPage title="Home">
<div class="landing">
<section>
<div class="landing__hero maxwidth1200 text-white">
<q-carousel
animated
:autoplay="animare"
swipeable
infinite
navigation
transition-next="slide-left"
transition-prev="slide-right"
v-model="slide"
:height="getheightgallery()"
width="100%"
>
<q-carousel-slide name="first"
:img-src="getsrcbyimg(firstimagehome())">
<div class="landing__header"></div>
<div class="landing__hero-content row justify-center q-gutter-xs clgutter">
<div class="row">
&nbsp;
</div>
<div class="flex justify-end">
<div class="q-gutter-xs testo-banda clgutter">
<h1 class="text-h1 shadow-max">{{tools.getappname()}}</h1>
<div class="text-subtitle1 shadow text-italic q-pl-sm">
&nbsp;
</div>
<div class="text-subtitle1 shadow-max big text-italic q-pl-sm">
</div>
<div class="text-subtitle2 shadow text-italic q-pl-sm">
</div>
<div>
<br>
<br>
<div v-if="!tools.isLogged()" style="margin: 5px; padding: 5px;" class="home">
<br>
<br>
</div>
</div>
</div>
</div>
</div>
<div class="landing__arrow absolute-bottom text-center">
<i aria-hidden="true"
class="q-icon text-h2 text-white material-icons">expand_more</i>
</div>
</q-carousel-slide>
<q-carousel-slide name="second"
:img-src="getsrcbyimg('images/background2.jpg')" alt="">
<div class="landing__header"></div>
<div class="landing__hero2-content row justify-center q-gutter-xs clgutter">
<div class="row">
<logo></logo>
</div>
<div class="flex justify-end">
<div class="q-gutter-xs testo-banda clgutter">
<h1 class="text-h1 shadow-max">{{tools.getappname()}}</h1>
<h2 class="text-subtitle1 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp')}}
</h2>
<h2 class="text-subtitle1 shadow-max big text-italic q-pl-sm">
<strong>{{$t('msg.sottoTitoloApp2')}}</strong>
</h2>
<h2 class="text-subtitle2 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp3')}}
</h2>
</div>
</div>
</div>
<div class="landing__arrow absolute-bottom text-center">
<i aria-hidden="true"
class="q-icon text-h2 text-white material-icons">expand_more</i>
</div>
</q-carousel-slide>
<q-carousel-slide name="third"
:img-src="getsrcbyimg('images/background3.jpg')">
<div class="landing__header"></div>
<div class="landing__hero2-content row justify-center q-gutter-xs clgutter">
<div class="row">
<logo></logo>
</div>
<div class="flex justify-end">
<div class="q-gutter-xs testo-banda clgutter">
<div class="text-h1 shadow-max">{{tools.getappname()}}</div>
<div class="text-subtitle1 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp')}}
</div>
<div class="text-subtitle1 shadow-max big text-italic q-pl-sm"><strong>{{$t('msg.sottoTitoloApp2')}}</strong>
</div>
<div class="text-subtitle2 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp3')}}
</div>
<div class="text-subtitle3 shadow text-italic q-pl-sm ">
{{$t('msg.sottoTitoloApp4')}}
</div>
</div>
</div>
</div>
<div class="landing__arrow absolute-bottom text-center">
<!--<i aria-hidden="true"-->
<!--class="q-icon text-h2 text-white material-icons">expand_more</i>-->
</div>
</q-carousel-slide>
</q-carousel>
</div>
</section>
<div class="q-pa-md q-gutter-md">
<div v-if="isLogged && !isVerified" class="text-verified">{{
$t('components.authentication.email_verification.link_sent') }}
</div>
</div>
<CCardCarousel :myarr="getArrDisciplines()">
</CCardCarousel>
<CEventsCalendar :mysingleevent="null" :showfirstN="getValDb('SHOW_LAST_EVENTS', false, 3)">
</CEventsCalendar>
<div v-if="getValDb('VIDEO_HOME', false)" class="row justify-evenly items-center q-gutter-md ">
<div class="text-center">
<h4 class="subtitle text-blue" v-html="getValDb('VIDEO_TITLE', false)"></h4>
<div class="">
<video :width="tools.getwidthscale(mythis, 320, 800)"
:height="tools.getheightbywidth(mythis, 320, 180, 800)" controls>
<source :src="getValDb('VIDEO_HOME', false)" type="video/mp4">
</video>
</div>
<!--<q-video src="../../statics/video/Intervista_Cristina_Barattoni.mp4">-->
<!--</q-video>-->
</div>
</div>
<div v-if="getValDb('YT_VIDEO', false)" class="row justify-evenly items-center q-gutter-md ">
<div class="text-center">
<h4 class="subtitle text-blue" v-html="getValDb('YT_TITLE', false)"></h4>
<div class="">
<div class="">
<iframe
:width="tools.getwidthscale(mythis, getValDb('YT_W', false), 800)"
:height="tools.getheightbywidth(mythis, getValDb('YT_W', false), getValDb('YT_H', false), 800)"
:src="getValDb('YT_VIDEO', false)"
frameborder="0"
allowfullscreen
></iframe>
</div>
</div>
<!--<q-video src="../../statics/video/Intervista_Cristina_Barattoni.mp4">-->
<!--</q-video>-->
</div>
</div>
<section :class="`maxwidth padding_gallery `+ ($q.dark.isActive ? `bg-black` : `bg-white`) + ` text-grey-10 text-center`" >
<q-carousel
swipeable
animated
:autoplay="8000"
v-model="slide2"
arrows
thumbnails
infinite
height="600">
<q-carousel-slide v-for="(rec, index) in getImmagini" :key="index" :name="index"
:img-src="rec.img"
:alt="rec.alt"
class="carousel_slide">
<div class="absolute-bottom custom-caption" style="margin-bottom: 70px">
<div class="text-h5"><span
class="text-h6 text-grey-1 shadow-max">{{index + 1}}. </span><span
class="text-h6 text-grey-2 shadow">{{rec.title}}</span></div>
<div class="text-subtitle1"><span class="text-grey-4 shadow">{{rec.subtitle}}</span>
</div>
</div>
</q-carousel-slide>
</q-carousel>
</section>
<div v-if="!tools.isMobile()" style="margin: 60px 60px;"></div>
<COpenStreetMap :imgmap="getValDb('IMGMAP', false)" :urlmap="getValDb('URLMAP', false)" :title="getValDb('MAP_TITLE', false)"
:coordinates="getValDb('COORD_MAP_1', false)" :coord_big="getValDb('COORD_MAP_BIG', false)">
</COpenStreetMap>
<div class="q-ma-md"></div>
</div>
</CMyPage>
</q-page>
</template>
<script lang="ts" src="./home_arcadei.ts">
</script>
<style lang="scss" scoped>
@import './home_arcadei.scss';
</style>

View File

@@ -1,446 +0,0 @@
.testo-banda {
//background: -webkit-gradient(linear, left top, left bottom, from(#3144f0), to(transparent));
//background: linear-gradient(180deg, #3144f0, transparent);
//background: rgba(0, 0, 0, .6)
}
$grayshadow: #555;
$textcol: blue;
$textcol_scuro: darkblue;
p {
margin: 0 0 1.25rem;
//text-shadow: .125rem .125rem .25rem $grayshadow;
}
h4 {
font-size: 1.25rem;
}
.mycard {
visibility: hidden;
}
.landing {
}
.landing_background {
background: #000 url(../../../public/images/foto1.jpg) no-repeat 50% fixed;
background-size: cover
}
.landing > section {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
//padding: 0 16px
}
.intro {
display: flex;
justify-content: space-between;
align-items: stretch;
/* flex-flow: row nowrap; */
padding: 1.25rem 0 1.25rem 0;
margin: .125rem;
* {
width: 100%;
flex: 1;
margin-left: auto;
margin-right: auto;
}
&__associazione {
min-width: 350px;
}
&__comeassociarsi {
min-width: 350px;
}
}
.subtitle {
font-weight: 600;
text-align: center;
letter-spacing: 0.125rem;
text-transform: uppercase;
font-size: 1rem;
}
.landing > section.padding {
padding: 5.62rem 1rem;
}
.landing > section.padding_testo {
padding-top: 1.25rem;
padding-bottom: 1rem;
}
.landing > section.padding_gallery {
padding-top: 3.125rem;
padding-bottom: 5.625rem;
}
.landing > section > div {
position: relative;
width: 100%
}
.maxwidth1200 {
max-width: 1200px;
}
.landing__toolbar {
background: -webkit-gradient(linear, left top, left bottom, from(#000), to(transparent));
background: linear-gradient(180deg, #000, transparent);
padding: 0 !important
}
.landing__toolbar .q-btn {
border-radius: 0 0 .315rem .315rem;
-ms-flex-item-align: stretch;
align-self: stretch
}
.landing__hero {
min-height: 50vh
}
.landing__header {
height: 18vh
}
.landing__arrow {
bottom: 1.5rem;
opacity: .4
}
.landing__front {
background: -webkit-gradient(linear, left top, left bottom, from(transparent), color-stop(15%, rgba(0, 0, 0, .6)));
background: linear-gradient(180deg, transparent, rgba(0, 0, 0, .6) 15%)
}
.landing__logo {
width: 9.40rem;
height: 9.40rem;
margin-top: 1.315rem;
//-webkit-animation: logo-rotate 240s linear infinite;
//animation: logo-rotate 240s linear infinite
}
.landing__features .q-icon {
font-size: 4rem
}
h4 {
line-height: 1.5;
text-shadow: .25rem .25rem .5rem $grayshadow;
}
.landing__features h4, .landing__features h6 {
margin: 1rem 0
}
.landing__features p {
opacity: .7;
font-size: 1rem;
line-height: 1.5;
}
.landing__footer {
//background: -webkit-gradient(linear, left top, left bottom, color-stop(65%, rgba(0, 0, 0, .1)), to(#000));
background: linear-gradient(180deg, rgba(0, 0, 0, .8) 95%, #FFF);
padding-top: 4.5rem !important;
padding-bottom: 4.5rem !important;
padding-left: 1.25rem;
padding-right: 1.25rem;
color: #9f9f9f;
}
.icon_contact:hover {
color: blue;
border-color: white;
border-width: .0625rem;
}
.landing__footer .doc-link {
color: $textcol;
}
.landing__footer .doc-link:hover {
opacity: .8
}
.landing__swirl-bg {
background-repeat: no-repeat !important;
background-position: top;
background-size: contain !important;
background-image: url(../../../public/images/landing_first_section.png) !important
}
.feat-descr {
font-size: 1.15rem;
}
.feat-descr:hover {
transition: opacity 0.5s ease-in-out;
opacity: 0.9;
}
.q-col-gutter-sm {
padding: 3.125rem 3.125rem;
//margin-left: -48px
}
body.mobile .landing {
//background: unset
}
body.mobile .landing:before {
content: "";
position: fixed;
top: 0;
height: 100vh;
left: 0;
right: 0;
bottom: 0;
z-index: -1;
//background: #000 url(../../public/images/cover.jpg) 50%;
background-size: cover
}
/*
@-webkit-keyframes logo-rotate {
to {
-webkit-transform: rotate(-1turn);
transform: rotate(-1turn)
}
}
@keyframes logo-rotate {
to {
-webkit-transform: rotate(-1turn);
transform: rotate(-1turn)
}
}
*/
.home {
//background-color: rgb(250, 250, 250);
padding: 3.125rem;
display: flex;
//flex-wrap: nowrap;
flex-direction: column;
align-items: center;
justify-content: space-between;
}
.btn-start {
margin: 3.125rem;
}
.shadow {
//color: white;
text-shadow: 0.125rem 0.125rem 0.25rem $grayshadow;
}
.text-h1, h1 {
font-size: 3rem;
font-weight: bold;
line-height: 3rem;
letter-spacing: -.01562em;
margin-bottom: 8px !important;
}
.text-h2 {
font-size: 3.75rem;
font-weight: 300;
line-height: 3.75rem;
letter-spacing: -.00833em;
}
.text-weight-bold {
font-weight: 700;
}
.text-vers {
font-size: 0.75rem;
font-weight: 400;
line-height: 1.75rem;
letter-spacing: .00937em;
text-shadow: .25rem .25rem .5rem $grayshadow;
}
.homep-cover-img-1 {
background: #000 url(../../../public/images/foto1.jpg) no-repeat 50% fixed;
//transition: background-image 1s ease-in-out;
}
.homep-cover-img-2 {
background: #000 url(../../../public/images/foto2.jpg) no-repeat 50% fixed;
//transition: background-image 1s ease-in-out;
}
.homep-cover-img-3 {
background: #000 url(../../../public/images/foto3.jpg) no-repeat 50% fixed;
//transition: background-image 1s ease-in-out;
}
.homep-cover-img.hide-filter:before {
opacity: 0
}
.landing__footer-icons {
font-size: 1.75rem
}
.landing__footer-icons a {
margin: 0 .5rem .5rem;
text-decoration: none;
outline: 0;
color: $textcol;
transition: color .28s
}
.landing__footer-icons a:hover {
color: $textcol_scuro;
}
.doc-img {
max-width: 100%;
}
.mylist {
background: #3fdaff;
padding-left: 1.25rem;
}
.clgutter {
margin-top: 1.25rem;
padding: .62rem;
}
.carousel_img_3 {
//background-image: url(../../public/images/cibo_sano.jpg);
background-size: cover !important;
background-position: 50% center !important;
background-repeat: no-repeat !important;
}
@media (max-width: 718px) {
// PER VERSIONE MOBILE
.landing__hero {
text-align: center
}
.landing__header {
height: 7vh
}
.clgutter {
margin-top: 0;
padding: 0;
}
.landing__hero .text-h1, h1 {
font-size: 2rem;
line-height: 2.05rem;
margin-bottom: 1.25rem
}
.landing > section.padding {
padding: 2.5rem 1rem;
}
.landing > section.padding_testo {
padding-top: 1.25rem;
padding-bottom: 1rem;
}
.landing > section.padding_gallery {
padding-top: 3.125rem;
padding-bottom: 5.625rem;
max-width: 800px;
}
.landing > section.padding_gallery > div {
padding-top: 3.125rem;
padding-bottom: 5.625rem;
}
.landing__features h4, .landing__features h6 {
margin: 1.25rem 0
}
h4 {
line-height: 1.4;
text-shadow: 0.25rem 0.25rem 0.5rem $grayshadow;
}
.landing .feature-item {
text-align: center;
margin-top: 1.25rem;
}
.landing__hero-content {
padding-bottom: 11.25rem;
}
.landing__hero2-content {
padding-bottom: 7.25rem;
}
.landing__hero-btns {
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center
}
.q-col-gutter-sm {
padding: .625rem .315rem;
}
.text-subtitle1 {
font-size: 1.25rem;
}
.text-vers {
font-size: 0.6rem;
}
}
.custom-caption {
text-align: center;
padding: .75rem;
color: $textcol;
background-color: rgba(0, 0, 0, .3);
}
.sfondo-grigio {
padding: 1rem;
color: $textcol;
background-color: rgba(0, 0, 0, .35);
}
.mycontacts {
color: gray;
letter-spacing: 0.078rem;
}
.mycontacts_title {
text-shadow: 0.125rem 0.125rem 0.125rem #555;
font-weight: bold;
color: #999;
letter-spacing: 0.125rem;
}
.mycontacts_text {
color: #999;
letter-spacing: 0.093rem;
}

View File

@@ -1,78 +0,0 @@
import { defineComponent, ref, onMounted, watch, computed } from 'vue'
import { useGlobalStore } from '@store/globalStore'
import { useRoute } from 'vue-router'
import { useUserStore } from '@store/UserStore'
import { Logo } from '../../components/logo'
import { LandingFooter } from '../../components/LandingFooter'
import { CMyPage } from '../../components/CMyPage/index'
import { tools } from '@src/store/Modules/tools'
import { static_data } from '@src/db/static_data'
import { toolsext } from '@src/store/Modules/toolsext'
import { Screen } from 'quasar'
import { CCardCarousel, CEventsCalendar, COpenStreetMap } from '@components'
import MixinBase from '@src/mixins/mixin-base'
import { firstimagehome } from '@src/db/static_data'
import MixinMetaTags from '@/mixins/mixin-metatags'
export default defineComponent({
name: 'Home_tdv',
components: { Logo, LandingFooter, CMyPage, CCardCarousel, CEventsCalendar, COpenStreetMap },
setup() {
const animare = ref(0)
const slide = ref('first')
const slide2 = ref(1)
const getImmagini = ref([
{
title: '', subtitle: '',
alt: 'Elisa e Cristina insieme',
img: '../../statics/images/eventi_esterni/IMG_6035.jpg'
},
])
const userStore = useUserStore()
const globalStore = useGlobalStore()
const { setValDb, getValDb } = MixinBase()
const { setmeta, getsrcbyimg } = MixinMetaTags()
function getheightgallery() {
if (tools.isMobile())
return '400px'
else
return '600px'
}
function created() {
//
}
function getArrDisciplines() {
return globalStore.disciplines.filter((rec: any) => rec.showinhome)
}
created()
return {
tools,
toolsext,
static_data,
animare,
slide,
slide2,
getheightgallery,
getArrDisciplines,
getImmagini,
getValDb,
firstimagehome,
getsrcbyimg,
setmeta,
}
},
})

View File

@@ -1,220 +0,0 @@
<template>
<q-page>
<CMyPage title="Home">
<div class="landing">
<section>
<div class="landing__hero maxwidth1200 text-white">
<q-carousel
animated
:autoplay="animare"
swipeable
infinite
navigation
transition-next="slide-left"
transition-prev="slide-right"
v-model="slide"
:height="getheightgallery()"
width="100%"
>
<q-carousel-slide name="first"
:img-src="getsrcbyimg(firstimagehome())">
<div class="landing__header"></div>
<div class="landing__hero-content row justify-center q-gutter-xs clgutter">
<div class="row">
&nbsp;
</div>
<div class="flex justify-end">
<div class="q-gutter-xs testo-banda clgutter">
<h1 class="text-h1 shadow-max">{{tools.getappname()}}</h1>
<div class="text-subtitle1 shadow text-italic q-pl-sm">
&nbsp;
</div>
<div class="text-subtitle1 shadow-max big text-italic q-pl-sm">
</div>
<div class="text-subtitle2 shadow text-italic q-pl-sm">
</div>
<div>
<br>
<br>
<div v-if="!tools.isLogged()" style="margin: 5px; padding: 5px;" class="home">
<br>
<br>
</div>
</div>
</div>
</div>
</div>
<div class="landing__arrow absolute-bottom text-center">
<i aria-hidden="true"
class="q-icon text-h2 text-white material-icons">expand_more</i>
</div>
</q-carousel-slide>
<q-carousel-slide name="second"
:img-src="getsrcbyimg('images/background2.jpg')" alt="">
<div class="landing__header"></div>
<div class="landing__hero2-content row justify-center q-gutter-xs clgutter">
<div class="row">
<logo></logo>
</div>
<div class="flex justify-end">
<div class="q-gutter-xs testo-banda clgutter">
<h1 class="text-h1 shadow-max">{{tools.getappname()}}</h1>
<h2 class="text-subtitle1 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp')}}
</h2>
<h2 class="text-subtitle1 shadow-max big text-italic q-pl-sm">
<strong>{{$t('msg.sottoTitoloApp2')}}</strong>
</h2>
<h2 class="text-subtitle2 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp3')}}
</h2>
</div>
</div>
</div>
<div class="landing__arrow absolute-bottom text-center">
<i aria-hidden="true"
class="q-icon text-h2 text-white material-icons">expand_more</i>
</div>
</q-carousel-slide>
<q-carousel-slide name="third"
:img-src="getsrcbyimg('images/background3.jpg')">
<div class="landing__header"></div>
<div class="landing__hero2-content row justify-center q-gutter-xs clgutter">
<div class="row">
<logo></logo>
</div>
<div class="flex justify-end">
<div class="q-gutter-xs testo-banda clgutter">
<div class="text-h1 shadow-max">{{tools.getappname()}}</div>
<div class="text-subtitle1 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp')}}
</div>
<div class="text-subtitle1 shadow-max big text-italic q-pl-sm"><strong>{{$t('msg.sottoTitoloApp2')}}</strong>
</div>
<div class="text-subtitle2 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp3')}}
</div>
<div class="text-subtitle3 shadow text-italic q-pl-sm ">
{{$t('msg.sottoTitoloApp4')}}
</div>
</div>
</div>
</div>
<div class="landing__arrow absolute-bottom text-center">
<!--<i aria-hidden="true"-->
<!--class="q-icon text-h2 text-white material-icons">expand_more</i>-->
</div>
</q-carousel-slide>
</q-carousel>
</div>
</section>
<div class="q-pa-md q-gutter-md">
<div v-if="isLogged && !isVerified" class="text-verified">{{
$t('components.authentication.email_verification.link_sent') }}
</div>
</div>
<CCardCarousel :myarr="getArrDisciplines()">
</CCardCarousel>
<CEventsCalendar :mysingleevent="null" :showfirstN="getValDb('SHOW_LAST_EVENTS', false, 3)">
</CEventsCalendar>
<div v-if="getValDb('VIDEO_HOME', false)" class="row justify-evenly items-center q-gutter-md ">
<div class="text-center">
<h4 class="subtitle text-blue" v-html="getValDb('VIDEO_TITLE', false)"></h4>
<div class="">
<video :width="tools.getwidthscale(mythis, 320, 800)"
:height="tools.getheightbywidth(mythis, 320, 180, 800)" controls>
<source :src="getValDb('VIDEO_HOME', false)" type="video/mp4">
</video>
</div>
<!--<q-video src="../../statics/video/Intervista_Cristina_Barattoni.mp4">-->
<!--</q-video>-->
</div>
</div>
<div v-if="getValDb('YT_VIDEO', false)" class="row justify-evenly items-center q-gutter-md ">
<div class="text-center">
<h4 class="subtitle text-blue" v-html="getValDb('YT_TITLE', false)"></h4>
<div class="">
<div class="">
<iframe
:width="tools.getwidthscale(mythis, getValDb('YT_W', false), 800)"
:height="tools.getheightbywidth(mythis, getValDb('YT_W', false), getValDb('YT_H', false), 800)"
:src="getValDb('YT_VIDEO', false)"
frameborder="0"
allowfullscreen
></iframe>
</div>
</div>
<!--<q-video src="../../statics/video/Intervista_Cristina_Barattoni.mp4">-->
<!--</q-video>-->
</div>
</div>
<section class="maxwidth padding_gallery bg-white text-grey-10 text-center" >
<q-carousel
swipeable
animated
:autoplay="8000"
v-model="slide2"
arrows
thumbnails
infinite
:height="tools.heightgallery()">
<q-carousel-slide v-for="(rec, index) in getImmagini" :key="index" :name="index"
:img-src="rec.img"
:alt="rec.alt"
class="carousel_slide">
<div class="absolute-bottom custom-caption" style="margin-bottom: 70px">
<div class="text-h5"><span
class="text-h6 text-grey-1 shadow-max">{{index + 1}}. </span><span
class="text-h6 text-grey-2 shadow">{{rec.title}}</span></div>
<div class="text-subtitle1"><span class="text-grey-4 shadow">{{rec.subtitle}}</span>
</div>
</div>
</q-carousel-slide>
</q-carousel>
</section>
<div v-if="!tools.isMobile()" style="margin: 60px 60px;"></div>
<COpenStreetMap :imgmap="getValDb('IMGMAP', false)" :urlmap="getValDb('URLMAP', false)" :title="getValDb('MAP_TITLE', false)"
:coordinates="getValDb('COORD_MAP_1', false)" :coord_big="getValDb('COORD_MAP_BIG', false)">
</COpenStreetMap>
<div class="q-ma-md"></div>
</div>
</CMyPage>
</q-page>
</template>
<script lang="ts" src="./home_tdv.ts">
</script>
<style lang="scss" scoped>
@import './home_tdv.scss';
</style>

View File

@@ -127,6 +127,7 @@ const msg_website_it = {
only_residenti: 'Solo Residenti', only_residenti: 'Solo Residenti',
only_consiglio: 'Solo Consiglieri', only_consiglio: 'Solo Consiglieri',
color: 'Colore', color: 'Colore',
sottomenu: 'SottoMenu',
}, },
msg: { msg: {
myAppName: 'FreePlanet', myAppName: 'FreePlanet',

View File

@@ -1,452 +0,0 @@
.testo-banda {
//background: -webkit-gradient(linear, left top, left bottom, from(#3144f0), to(transparent));
//background: linear-gradient(180deg, #3144f0, transparent);
//background: rgba(0, 0, 0, .6)
}
$grayshadow: #555;
$textcol: blue;
$textcol_scuro: darkblue;
p {
margin: 0 0 1.25rem;
//text-shadow: .125rem .125rem .25rem $grayshadow;
}
h4 {
font-size: 1.25rem;
}
.mycard {
visibility: hidden;
}
.landing {
}
.landing_background {
background: #000 url(../../../public/images/foto1.jpg) no-repeat 50% fixed;
background-size: cover
}
.landing > section {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
//padding: 0 16px
}
.intro {
display: flex;
justify-content: space-between;
align-items: stretch;
/* flex-flow: row nowrap; */
padding: 1.25rem 0 1.25rem 0;
margin: .125rem;
* {
width: 100%;
flex: 1;
margin-left: auto;
margin-right: auto;
}
&__associazione {
min-width: 350px;
}
&__comeassociarsi {
min-width: 350px;
}
}
.subtitle {
font-weight: 600;
text-align: center;
letter-spacing: 0.125rem;
text-transform: uppercase;
font-size: 1rem;
}
.landing > section.padding {
padding: 5.62rem 1rem;
}
.landing > section.padding_testo {
padding-top: 1.25rem;
padding-bottom: 1rem;
}
.landing > section.padding_gallery {
padding-top: 3.125rem;
padding-bottom: 5.625rem;
}
.landing > section > div {
position: relative;
width: 100%
}
.maxwidth1200 {
max-width: 1200px;
}
.landing__toolbar {
background: -webkit-gradient(linear, left top, left bottom, from(#000), to(transparent));
background: linear-gradient(180deg, #000, transparent);
padding: 0 !important
}
.landing__toolbar .q-btn {
border-radius: 0 0 .315rem .315rem;
-ms-flex-item-align: stretch;
align-self: stretch
}
.landing__hero {
min-height: 50vh
}
.landing__header {
height: 18vh
}
.landing__arrow {
bottom: 1.5rem;
opacity: .4
}
.landing__front {
background: -webkit-gradient(linear, left top, left bottom, from(transparent), color-stop(15%, rgba(0, 0, 0, .6)));
background: linear-gradient(180deg, transparent, rgba(0, 0, 0, .6) 15%)
}
.landing__logo {
width: 9.40rem;
height: 9.40rem;
margin-top: 1.315rem;
//-webkit-animation: logo-rotate 240s linear infinite;
//animation: logo-rotate 240s linear infinite
}
.landing__features .q-icon {
font-size: 4rem
}
h4 {
line-height: 1.5;
text-shadow: .25rem .25rem .5rem $grayshadow;
}
.landing__features h4, .landing__features h6 {
margin: 1rem 0
}
.landing__features p {
opacity: .7;
font-size: 1rem;
line-height: 1.5;
}
.landing__footer {
//background: -webkit-gradient(linear, left top, left bottom, color-stop(65%, rgba(0, 0, 0, .1)), to(#000));
background: linear-gradient(180deg, rgba(0, 0, 0, .8) 95%, #FFF);
padding-top: 4.5rem !important;
padding-bottom: 4.5rem !important;
padding-left: 1.25rem;
padding-right: 1.25rem;
color: #9f9f9f;
}
.icon_contact:hover {
color: blue;
border-color: white;
border-width: .0625rem;
}
.landing__footer .doc-link {
color: $textcol;
}
.landing__footer .doc-link:hover {
opacity: .8
}
.landing__swirl-bg {
background-repeat: no-repeat !important;
background-position: top;
background-size: contain !important;
background-image: url(../../../public/images/landing_first_section.png) !important
}
.feat-descr {
font-size: 1.15rem;
}
.feat-descr:hover {
transition: opacity 0.5s ease-in-out;
opacity: 0.9;
}
.q-col-gutter-sm {
padding: 3.125rem 3.125rem;
//margin-left: -48px
}
body.mobile .landing {
//background: unset
}
body.mobile .landing:before {
content: "";
position: fixed;
top: 0;
height: 100vh;
left: 0;
right: 0;
bottom: 0;
z-index: -1;
//background: #000 url(../../public/images/cover.jpg) 50%;
background-size: cover
}
/*
@-webkit-keyframes logo-rotate {
to {
-webkit-transform: rotate(-1turn);
transform: rotate(-1turn)
}
}
@keyframes logo-rotate {
to {
-webkit-transform: rotate(-1turn);
transform: rotate(-1turn)
}
}
*/
.home {
//background-color: rgb(250, 250, 250);
padding: 3.125rem;
display: flex;
//flex-wrap: nowrap;
flex-direction: column;
align-items: center;
justify-content: space-between;
}
.btn-start {
margin: 3.125rem;
}
.shadow {
//color: white;
text-shadow: 0.125rem 0.125rem 0.25rem $grayshadow;
}
.text-h1, h1 {
font-size: 3rem;
font-weight: bold;
line-height: 3rem;
letter-spacing: -.01562em;
margin-bottom: 8px !important;
}
.text-h2 {
font-size: 3.75rem;
font-weight: 300;
line-height: 3.75rem;
letter-spacing: -.00833em;
}
.text-weight-bold {
font-weight: 700;
}
.text-vers {
font-size: 0.75rem;
font-weight: 400;
line-height: 1.75rem;
letter-spacing: .00937em;
text-shadow: .25rem .25rem .5rem $grayshadow;
}
.homep-cover-img-1 {
background: #000 url(../../../public/images/foto1.jpg) no-repeat 50% fixed;
//transition: background-image 1s ease-in-out;
}
.homep-cover-img-2 {
background: #000 url(../../../public/images/foto2.jpg) no-repeat 50% fixed;
//transition: background-image 1s ease-in-out;
}
.homep-cover-img-3 {
background: #000 url(../../../public/images/foto3.jpg) no-repeat 50% fixed;
//transition: background-image 1s ease-in-out;
}
.homep-cover-img.hide-filter:before {
opacity: 0
}
.landing__footer-icons {
font-size: 1.75rem
}
.landing__footer-icons a {
margin: 0 .5rem .5rem;
text-decoration: none;
outline: 0;
color: $textcol;
transition: color .28s
}
.landing__footer-icons a:hover {
color: $textcol_scuro;
}
.doc-img {
max-width: 100%;
}
.mylist {
background: #3fdaff;
padding-left: 1.25rem;
}
.clgutter {
margin-top: 1.25rem;
padding: .62rem;
}
.carousel_img_3 {
//background-image: url(../../public/images/cibo_sano.jpg);
background-size: cover !important;
background-position: 50% center !important;
background-repeat: no-repeat !important;
}
@media (max-width: 718px) {
// PER VERSIONE MOBILE
.landing__hero {
text-align: center
}
.landing__header {
height: 7vh
}
.clgutter {
margin-top: 0;
padding: 0;
}
.landing__hero .text-h1, h1 {
font-size: 2rem;
line-height: 2.05rem;
margin-bottom: 1.25rem
}
.landing > section.padding {
padding: 2.5rem 1rem;
}
.landing > section.padding_testo {
padding-top: 1.25rem;
padding-bottom: 1rem;
}
.landing > section.padding_gallery {
padding-top: 3.125rem;
padding-bottom: 5.625rem;
max-width: 800px;
}
.landing > section.padding_gallery > div {
padding-top: 3.125rem;
padding-bottom: 5.625rem;
}
.landing__features h4, .landing__features h6 {
margin: 1.25rem 0
}
h4 {
line-height: 1.4;
text-shadow: 0.25rem 0.25rem 0.5rem $grayshadow;
}
.landing .feature-item {
text-align: center;
margin-top: 1.25rem;
}
.landing__hero-content {
padding-bottom: 11.25rem;
}
.landing__hero2-content {
padding-bottom: 7.25rem;
}
.landing__hero-btns {
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center
}
.q-col-gutter-sm {
padding: .625rem .315rem;
}
.text-subtitle1 {
font-size: 1.25rem;
}
.text-vers {
font-size: 0.6rem;
}
.carousel_img_3 {
//background-image: url(../../public/images/cibo_sano.jpg);
background-size: 620px 620px !important;
background-position: 50% top !important;
background-repeat: no-repeat !important;
}
}
.custom-caption {
text-align: center;
padding: .75rem;
color: $textcol;
background-color: rgba(0, 0, 0, .3);
}
.sfondo-grigio {
padding: 1rem;
color: $textcol;
background-color: rgba(0, 0, 0, .35);
}
.mycontacts {
color: gray;
letter-spacing: 0.078rem;
}
.mycontacts_title {
text-shadow: 0.125rem 0.125rem 0.125rem #555;
font-weight: bold;
color: #999;
letter-spacing: 0.125rem;
}
.mycontacts_text {
color: #999;
letter-spacing: 0.093rem;
}

View File

@@ -1,78 +0,0 @@
import { defineComponent, ref, onMounted, watch, computed } from 'vue'
import { useGlobalStore } from '@store/globalStore'
import { useRoute } from 'vue-router'
import { useUserStore } from '@store/UserStore'
import { Logo } from '../../components/logo'
import { LandingFooter } from '../../components/LandingFooter'
import { CMyPage } from '../../components/CMyPage/index'
import { tools } from '@src/store/Modules/tools'
import { static_data } from '@src/db/static_data'
import { toolsext } from '@src/store/Modules/toolsext'
import { Screen } from 'quasar'
import { CCardCarousel, CEventsCalendar, COpenStreetMap } from '@components'
import MixinBase from '@src/mixins/mixin-base'
import { firstimagehome } from '@src/db/static_data'
import MixinMetaTags from '@/mixins/mixin-metatags'
export default defineComponent({
name: 'home_arcadei',
components: { Logo, LandingFooter, CMyPage, CCardCarousel, CEventsCalendar, COpenStreetMap },
setup() {
const animare = ref(0)
const slide = ref('first')
const slide2 = ref(1)
const getImmagini = ref([
{
title: '', subtitle: '',
alt: 'Arcadei',
img: 'images/arcadei/img1.png'
},
])
const userStore = useUserStore()
const globalStore = useGlobalStore()
const { setValDb, getValDb } = MixinBase()
const { setmeta, getsrcbyimg } = MixinMetaTags()
function getheightgallery() {
if (tools.isMobile())
return '400px'
else
return '600px'
}
function created() {
//
}
function getArrDisciplines() {
return globalStore.disciplines.filter((rec: any) => rec.showinhome)
}
created()
return {
tools,
toolsext,
static_data,
animare,
slide,
slide2,
getheightgallery,
getArrDisciplines,
getImmagini,
getValDb,
firstimagehome,
getsrcbyimg,
setmeta,
}
},
})

View File

@@ -1,221 +0,0 @@
<template>
<q-page>
<CMyPage title="Home">
<div class="landing">
<section>
<div class="landing__hero maxwidth1200 text-white">
<q-carousel
animated
:autoplay="animare"
swipeable
infinite
navigation
transition-next="slide-left"
transition-prev="slide-right"
v-model="slide"
:height="getheightgallery()"
width="100%"
>
<q-carousel-slide name="first"
:img-src="getsrcbyimg(firstimagehome())">
<div class="landing__header"></div>
<div class="landing__hero-content row justify-center q-gutter-xs clgutter">
<div class="row">
&nbsp;
</div>
<div class="flex justify-end">
<div class="q-gutter-xs testo-banda clgutter">
<h1 class="text-h1 shadow-max">{{tools.getappname()}}</h1>
<div class="text-subtitle1 shadow text-italic q-pl-sm">
&nbsp;
</div>
<div class="text-subtitle1 shadow-max big text-italic q-pl-sm">
</div>
<div class="text-subtitle2 shadow text-italic q-pl-sm">
</div>
<div>
<br>
<br>
<div v-if="!tools.isLogged()" style="margin: 5px; padding: 5px;" class="home">
<br>
<br>
</div>
</div>
</div>
</div>
</div>
<div class="landing__arrow absolute-bottom text-center">
<i aria-hidden="true"
class="q-icon text-h2 text-white material-icons">expand_more</i>
</div>
</q-carousel-slide>
<q-carousel-slide name="second"
:img-src="getsrcbyimg('images/background2.jpg')" alt="">
<div class="landing__header"></div>
<div class="landing__hero2-content row justify-center q-gutter-xs clgutter">
<div class="row">
<logo></logo>
</div>
<div class="flex justify-end">
<div class="q-gutter-xs testo-banda clgutter">
<h1 class="text-h1 shadow-max">{{tools.getappname()}}</h1>
<h2 class="text-subtitle1 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp')}}
</h2>
<h2 class="text-subtitle1 shadow-max big text-italic q-pl-sm">
<strong>{{$t('msg.sottoTitoloApp2')}}</strong>
</h2>
<h2 class="text-subtitle2 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp3')}}
</h2>
</div>
</div>
</div>
<div class="landing__arrow absolute-bottom text-center">
<i aria-hidden="true"
class="q-icon text-h2 text-white material-icons">expand_more</i>
</div>
</q-carousel-slide>
<q-carousel-slide name="third"
:img-src="getsrcbyimg('images/background3.jpg')">
<div class="landing__header"></div>
<div class="landing__hero2-content row justify-center q-gutter-xs clgutter">
<div class="row">
<logo></logo>
</div>
<div class="flex justify-end">
<div class="q-gutter-xs testo-banda clgutter">
<div class="text-h1 shadow-max">{{tools.getappname()}}</div>
<div class="text-subtitle1 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp')}}
</div>
<div class="text-subtitle1 shadow-max big text-italic q-pl-sm"><strong>{{$t('msg.sottoTitoloApp2')}}</strong>
</div>
<div class="text-subtitle2 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp3')}}
</div>
<div class="text-subtitle3 shadow text-italic q-pl-sm ">
{{$t('msg.sottoTitoloApp4')}}
</div>
</div>
</div>
</div>
<div class="landing__arrow absolute-bottom text-center">
<!--<i aria-hidden="true"-->
<!--class="q-icon text-h2 text-white material-icons">expand_more</i>-->
</div>
</q-carousel-slide>
</q-carousel>
</div>
</section>
<div class="q-pa-md q-gutter-md">
<div v-if="isLogged && !isVerified" class="text-verified">{{
$t('components.authentication.email_verification.link_sent') }}
</div>
</div>
<CCardCarousel :myarr="getArrDisciplines()">
</CCardCarousel>
<CEventsCalendar :mysingleevent="null" :showfirstN="getValDb('SHOW_LAST_EVENTS', false, 3)">
</CEventsCalendar>
<div v-if="getValDb('VIDEO_HOME', false)" class="row justify-evenly items-center q-gutter-md ">
<div class="text-center">
<h4 class="subtitle text-blue" v-html="getValDb('VIDEO_TITLE', false)"></h4>
<div class="">
<video :width="tools.getwidthscale(mythis, 320, 800)"
:height="tools.getheightbywidth(mythis, 320, 180, 800)" controls>
<source :src="getValDb('VIDEO_HOME', false)" type="video/mp4">
</video>
</div>
<!--<q-video src="../../statics/video/Intervista_Cristina_Barattoni.mp4">-->
<!--</q-video>-->
</div>
</div>
<div v-if="getValDb('YT_VIDEO', false)" class="row justify-evenly items-center q-gutter-md ">
<div class="text-center">
<h4 class="subtitle text-blue" v-html="getValDb('YT_TITLE', false)"></h4>
<div class="">
<div class="">
<iframe
:width="tools.getwidthscale(mythis, getValDb('YT_W', false), 800)"
:height="tools.getheightbywidth(mythis, getValDb('YT_W', false), getValDb('YT_H', false), 800)"
:src="getValDb('YT_VIDEO', false)"
frameborder="0"
allowfullscreen
></iframe>
</div>
</div>
<!--<q-video src="../../statics/video/Intervista_Cristina_Barattoni.mp4">-->
<!--</q-video>-->
</div>
</div>
<section :class="`maxwidth padding_gallery `+ ($q.dark.isActive ? `bg-black` : `bg-white`) + ` text-grey-10 text-center`" >
<q-carousel
swipeable
animated
:autoplay="8000"
v-model="slide2"
arrows
thumbnails
infinite
height="600">
<q-carousel-slide v-for="(rec, index) in getImmagini" :key="index" :name="index"
:img-src="rec.img"
:alt="rec.alt"
class="carousel_slide">
<div class="absolute-bottom custom-caption" style="margin-bottom: 70px">
<div class="text-h5"><span
class="text-h6 text-grey-1 shadow-max">{{index + 1}}. </span><span
class="text-h6 text-grey-2 shadow">{{rec.title}}</span></div>
<div class="text-subtitle1"><span class="text-grey-4 shadow">{{rec.subtitle}}</span>
</div>
</div>
</q-carousel-slide>
</q-carousel>
</section>
<div v-if="!tools.isMobile()" style="margin: 60px 60px;"></div>
<COpenStreetMap :imgmap="getValDb('IMGMAP', false)" :urlmap="getValDb('URLMAP', false)" :title="getValDb('MAP_TITLE', false)"
:coordinates="getValDb('COORD_MAP_1', false)" :coord_big="getValDb('COORD_MAP_BIG', false)">
</COpenStreetMap>
<div class="q-ma-md"></div>
</div>
</CMyPage>
</q-page>
</template>
<script lang="ts" src="./home_arcadei.ts">
</script>
<style lang="scss" scoped>
@import './home_arcadei.scss';
</style>

View File

@@ -1,446 +0,0 @@
.testo-banda {
//background: -webkit-gradient(linear, left top, left bottom, from(#3144f0), to(transparent));
//background: linear-gradient(180deg, #3144f0, transparent);
//background: rgba(0, 0, 0, .6)
}
$grayshadow: #555;
$textcol: blue;
$textcol_scuro: darkblue;
p {
margin: 0 0 1.25rem;
//text-shadow: .125rem .125rem .25rem $grayshadow;
}
h4 {
font-size: 1.25rem;
}
.mycard {
visibility: hidden;
}
.landing {
}
.landing_background {
background: #000 url(../../../public/images/foto1.jpg) no-repeat 50% fixed;
background-size: cover
}
.landing > section {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
//padding: 0 16px
}
.intro {
display: flex;
justify-content: space-between;
align-items: stretch;
/* flex-flow: row nowrap; */
padding: 1.25rem 0 1.25rem 0;
margin: .125rem;
* {
width: 100%;
flex: 1;
margin-left: auto;
margin-right: auto;
}
&__associazione {
min-width: 350px;
}
&__comeassociarsi {
min-width: 350px;
}
}
.subtitle {
font-weight: 600;
text-align: center;
letter-spacing: 0.125rem;
text-transform: uppercase;
font-size: 1rem;
}
.landing > section.padding {
padding: 5.62rem 1rem;
}
.landing > section.padding_testo {
padding-top: 1.25rem;
padding-bottom: 1rem;
}
.landing > section.padding_gallery {
padding-top: 3.125rem;
padding-bottom: 5.625rem;
}
.landing > section > div {
position: relative;
width: 100%
}
.maxwidth1200 {
max-width: 1200px;
}
.landing__toolbar {
background: -webkit-gradient(linear, left top, left bottom, from(#000), to(transparent));
background: linear-gradient(180deg, #000, transparent);
padding: 0 !important
}
.landing__toolbar .q-btn {
border-radius: 0 0 .315rem .315rem;
-ms-flex-item-align: stretch;
align-self: stretch
}
.landing__hero {
min-height: 50vh
}
.landing__header {
height: 18vh
}
.landing__arrow {
bottom: 1.5rem;
opacity: .4
}
.landing__front {
background: -webkit-gradient(linear, left top, left bottom, from(transparent), color-stop(15%, rgba(0, 0, 0, .6)));
background: linear-gradient(180deg, transparent, rgba(0, 0, 0, .6) 15%)
}
.landing__logo {
width: 9.40rem;
height: 9.40rem;
margin-top: 1.315rem;
//-webkit-animation: logo-rotate 240s linear infinite;
//animation: logo-rotate 240s linear infinite
}
.landing__features .q-icon {
font-size: 4rem
}
h4 {
line-height: 1.5;
text-shadow: .25rem .25rem .5rem $grayshadow;
}
.landing__features h4, .landing__features h6 {
margin: 1rem 0
}
.landing__features p {
opacity: .7;
font-size: 1rem;
line-height: 1.5;
}
.landing__footer {
//background: -webkit-gradient(linear, left top, left bottom, color-stop(65%, rgba(0, 0, 0, .1)), to(#000));
background: linear-gradient(180deg, rgba(0, 0, 0, .8) 95%, #FFF);
padding-top: 4.5rem !important;
padding-bottom: 4.5rem !important;
padding-left: 1.25rem;
padding-right: 1.25rem;
color: #9f9f9f;
}
.icon_contact:hover {
color: blue;
border-color: white;
border-width: .0625rem;
}
.landing__footer .doc-link {
color: $textcol;
}
.landing__footer .doc-link:hover {
opacity: .8
}
.landing__swirl-bg {
background-repeat: no-repeat !important;
background-position: top;
background-size: contain !important;
background-image: url(../../../public/images/landing_first_section.png) !important
}
.feat-descr {
font-size: 1.15rem;
}
.feat-descr:hover {
transition: opacity 0.5s ease-in-out;
opacity: 0.9;
}
.q-col-gutter-sm {
padding: 3.125rem 3.125rem;
//margin-left: -48px
}
body.mobile .landing {
//background: unset
}
body.mobile .landing:before {
content: "";
position: fixed;
top: 0;
height: 100vh;
left: 0;
right: 0;
bottom: 0;
z-index: -1;
//background: #000 url(../../public/images/cover.jpg) 50%;
background-size: cover
}
/*
@-webkit-keyframes logo-rotate {
to {
-webkit-transform: rotate(-1turn);
transform: rotate(-1turn)
}
}
@keyframes logo-rotate {
to {
-webkit-transform: rotate(-1turn);
transform: rotate(-1turn)
}
}
*/
.home {
//background-color: rgb(250, 250, 250);
padding: 3.125rem;
display: flex;
//flex-wrap: nowrap;
flex-direction: column;
align-items: center;
justify-content: space-between;
}
.btn-start {
margin: 3.125rem;
}
.shadow {
//color: white;
text-shadow: 0.125rem 0.125rem 0.25rem $grayshadow;
}
.text-h1, h1 {
font-size: 3rem;
font-weight: bold;
line-height: 3rem;
letter-spacing: -.01562em;
margin-bottom: 8px !important;
}
.text-h2 {
font-size: 3.75rem;
font-weight: 300;
line-height: 3.75rem;
letter-spacing: -.00833em;
}
.text-weight-bold {
font-weight: 700;
}
.text-vers {
font-size: 0.75rem;
font-weight: 400;
line-height: 1.75rem;
letter-spacing: .00937em;
text-shadow: .25rem .25rem .5rem $grayshadow;
}
.homep-cover-img-1 {
background: #000 url(../../../public/images/foto1.jpg) no-repeat 50% fixed;
//transition: background-image 1s ease-in-out;
}
.homep-cover-img-2 {
background: #000 url(../../../public/images/foto2.jpg) no-repeat 50% fixed;
//transition: background-image 1s ease-in-out;
}
.homep-cover-img-3 {
background: #000 url(../../../public/images/foto3.jpg) no-repeat 50% fixed;
//transition: background-image 1s ease-in-out;
}
.homep-cover-img.hide-filter:before {
opacity: 0
}
.landing__footer-icons {
font-size: 1.75rem
}
.landing__footer-icons a {
margin: 0 .5rem .5rem;
text-decoration: none;
outline: 0;
color: $textcol;
transition: color .28s
}
.landing__footer-icons a:hover {
color: $textcol_scuro;
}
.doc-img {
max-width: 100%;
}
.mylist {
background: #3fdaff;
padding-left: 1.25rem;
}
.clgutter {
margin-top: 1.25rem;
padding: .62rem;
}
.carousel_img_3 {
//background-image: url(../../public/images/cibo_sano.jpg);
background-size: cover !important;
background-position: 50% center !important;
background-repeat: no-repeat !important;
}
@media (max-width: 718px) {
// PER VERSIONE MOBILE
.landing__hero {
text-align: center
}
.landing__header {
height: 7vh
}
.clgutter {
margin-top: 0;
padding: 0;
}
.landing__hero .text-h1, h1 {
font-size: 2rem;
line-height: 2.05rem;
margin-bottom: 1.25rem
}
.landing > section.padding {
padding: 2.5rem 1rem;
}
.landing > section.padding_testo {
padding-top: 1.25rem;
padding-bottom: 1rem;
}
.landing > section.padding_gallery {
padding-top: 3.125rem;
padding-bottom: 5.625rem;
max-width: 800px;
}
.landing > section.padding_gallery > div {
padding-top: 3.125rem;
padding-bottom: 5.625rem;
}
.landing__features h4, .landing__features h6 {
margin: 1.25rem 0
}
h4 {
line-height: 1.4;
text-shadow: 0.25rem 0.25rem 0.5rem $grayshadow;
}
.landing .feature-item {
text-align: center;
margin-top: 1.25rem;
}
.landing__hero-content {
padding-bottom: 11.25rem;
}
.landing__hero2-content {
padding-bottom: 7.25rem;
}
.landing__hero-btns {
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center
}
.q-col-gutter-sm {
padding: .625rem .315rem;
}
.text-subtitle1 {
font-size: 1.25rem;
}
.text-vers {
font-size: 0.6rem;
}
}
.custom-caption {
text-align: center;
padding: .75rem;
color: $textcol;
background-color: rgba(0, 0, 0, .3);
}
.sfondo-grigio {
padding: 1rem;
color: $textcol;
background-color: rgba(0, 0, 0, .35);
}
.mycontacts {
color: gray;
letter-spacing: 0.078rem;
}
.mycontacts_title {
text-shadow: 0.125rem 0.125rem 0.125rem #555;
font-weight: bold;
color: #999;
letter-spacing: 0.125rem;
}
.mycontacts_text {
color: #999;
letter-spacing: 0.093rem;
}

View File

@@ -1,78 +0,0 @@
import { defineComponent, ref, onMounted, watch, computed } from 'vue'
import { useGlobalStore } from '@store/globalStore'
import { useRoute } from 'vue-router'
import { useUserStore } from '@store/UserStore'
import { Logo } from '../../components/logo'
import { LandingFooter } from '../../components/LandingFooter'
import { CMyPage } from '../../components/CMyPage/index'
import { tools } from '@src/store/Modules/tools'
import { static_data } from '@src/db/static_data'
import { toolsext } from '@src/store/Modules/toolsext'
import { Screen } from 'quasar'
import { CCardCarousel, CEventsCalendar, COpenStreetMap } from '@components'
import MixinBase from '@src/mixins/mixin-base'
import { firstimagehome } from '@src/db/static_data'
import MixinMetaTags from '@/mixins/mixin-metatags'
export default defineComponent({
name: 'Home_tdv',
components: { Logo, LandingFooter, CMyPage, CCardCarousel, CEventsCalendar, COpenStreetMap },
setup() {
const animare = ref(0)
const slide = ref('first')
const slide2 = ref(1)
const getImmagini = ref([
{
title: '', subtitle: '',
alt: 'Elisa e Cristina insieme',
img: '../../statics/images/eventi_esterni/IMG_6035.jpg'
},
])
const userStore = useUserStore()
const globalStore = useGlobalStore()
const { setValDb, getValDb } = MixinBase()
const { setmeta, getsrcbyimg } = MixinMetaTags()
function getheightgallery() {
if (tools.isMobile())
return '400px'
else
return '600px'
}
function created() {
//
}
function getArrDisciplines() {
return globalStore.disciplines.filter((rec: any) => rec.showinhome)
}
created()
return {
tools,
toolsext,
static_data,
animare,
slide,
slide2,
getheightgallery,
getArrDisciplines,
getImmagini,
getValDb,
firstimagehome,
getsrcbyimg,
setmeta,
}
},
})

View File

@@ -1,220 +0,0 @@
<template>
<q-page>
<CMyPage title="Home">
<div class="landing">
<section>
<div class="landing__hero maxwidth1200 text-white">
<q-carousel
animated
:autoplay="animare"
swipeable
infinite
navigation
transition-next="slide-left"
transition-prev="slide-right"
v-model="slide"
:height="getheightgallery()"
width="100%"
>
<q-carousel-slide name="first"
:img-src="getsrcbyimg(firstimagehome())">
<div class="landing__header"></div>
<div class="landing__hero-content row justify-center q-gutter-xs clgutter">
<div class="row">
&nbsp;
</div>
<div class="flex justify-end">
<div class="q-gutter-xs testo-banda clgutter">
<h1 class="text-h1 shadow-max">{{tools.getappname()}}</h1>
<div class="text-subtitle1 shadow text-italic q-pl-sm">
&nbsp;
</div>
<div class="text-subtitle1 shadow-max big text-italic q-pl-sm">
</div>
<div class="text-subtitle2 shadow text-italic q-pl-sm">
</div>
<div>
<br>
<br>
<div v-if="!tools.isLogged()" style="margin: 5px; padding: 5px;" class="home">
<br>
<br>
</div>
</div>
</div>
</div>
</div>
<div class="landing__arrow absolute-bottom text-center">
<i aria-hidden="true"
class="q-icon text-h2 text-white material-icons">expand_more</i>
</div>
</q-carousel-slide>
<q-carousel-slide name="second"
:img-src="getsrcbyimg('images/background2.jpg')" alt="">
<div class="landing__header"></div>
<div class="landing__hero2-content row justify-center q-gutter-xs clgutter">
<div class="row">
<logo></logo>
</div>
<div class="flex justify-end">
<div class="q-gutter-xs testo-banda clgutter">
<h1 class="text-h1 shadow-max">{{tools.getappname()}}</h1>
<h2 class="text-subtitle1 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp')}}
</h2>
<h2 class="text-subtitle1 shadow-max big text-italic q-pl-sm">
<strong>{{$t('msg.sottoTitoloApp2')}}</strong>
</h2>
<h2 class="text-subtitle2 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp3')}}
</h2>
</div>
</div>
</div>
<div class="landing__arrow absolute-bottom text-center">
<i aria-hidden="true"
class="q-icon text-h2 text-white material-icons">expand_more</i>
</div>
</q-carousel-slide>
<q-carousel-slide name="third"
:img-src="getsrcbyimg('images/background3.jpg')">
<div class="landing__header"></div>
<div class="landing__hero2-content row justify-center q-gutter-xs clgutter">
<div class="row">
<logo></logo>
</div>
<div class="flex justify-end">
<div class="q-gutter-xs testo-banda clgutter">
<div class="text-h1 shadow-max">{{tools.getappname()}}</div>
<div class="text-subtitle1 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp')}}
</div>
<div class="text-subtitle1 shadow-max big text-italic q-pl-sm"><strong>{{$t('msg.sottoTitoloApp2')}}</strong>
</div>
<div class="text-subtitle2 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp3')}}
</div>
<div class="text-subtitle3 shadow text-italic q-pl-sm ">
{{$t('msg.sottoTitoloApp4')}}
</div>
</div>
</div>
</div>
<div class="landing__arrow absolute-bottom text-center">
<!--<i aria-hidden="true"-->
<!--class="q-icon text-h2 text-white material-icons">expand_more</i>-->
</div>
</q-carousel-slide>
</q-carousel>
</div>
</section>
<div class="q-pa-md q-gutter-md">
<div v-if="isLogged && !isVerified" class="text-verified">{{
$t('components.authentication.email_verification.link_sent') }}
</div>
</div>
<CCardCarousel :myarr="getArrDisciplines()">
</CCardCarousel>
<CEventsCalendar :mysingleevent="null" :showfirstN="getValDb('SHOW_LAST_EVENTS', false, 3)">
</CEventsCalendar>
<div v-if="getValDb('VIDEO_HOME', false)" class="row justify-evenly items-center q-gutter-md ">
<div class="text-center">
<h4 class="subtitle text-blue" v-html="getValDb('VIDEO_TITLE', false)"></h4>
<div class="">
<video :width="tools.getwidthscale(mythis, 320, 800)"
:height="tools.getheightbywidth(mythis, 320, 180, 800)" controls>
<source :src="getValDb('VIDEO_HOME', false)" type="video/mp4">
</video>
</div>
<!--<q-video src="../../statics/video/Intervista_Cristina_Barattoni.mp4">-->
<!--</q-video>-->
</div>
</div>
<div v-if="getValDb('YT_VIDEO', false)" class="row justify-evenly items-center q-gutter-md ">
<div class="text-center">
<h4 class="subtitle text-blue" v-html="getValDb('YT_TITLE', false)"></h4>
<div class="">
<div class="">
<iframe
:width="tools.getwidthscale(mythis, getValDb('YT_W', false), 800)"
:height="tools.getheightbywidth(mythis, getValDb('YT_W', false), getValDb('YT_H', false), 800)"
:src="getValDb('YT_VIDEO', false)"
frameborder="0"
allowfullscreen
></iframe>
</div>
</div>
<!--<q-video src="../../statics/video/Intervista_Cristina_Barattoni.mp4">-->
<!--</q-video>-->
</div>
</div>
<section class="maxwidth padding_gallery bg-white text-grey-10 text-center" >
<q-carousel
swipeable
animated
:autoplay="8000"
v-model="slide2"
arrows
thumbnails
infinite
:height="tools.heightgallery()">
<q-carousel-slide v-for="(rec, index) in getImmagini" :key="index" :name="index"
:img-src="rec.img"
:alt="rec.alt"
class="carousel_slide">
<div class="absolute-bottom custom-caption" style="margin-bottom: 70px">
<div class="text-h5"><span
class="text-h6 text-grey-1 shadow-max">{{index + 1}}. </span><span
class="text-h6 text-grey-2 shadow">{{rec.title}}</span></div>
<div class="text-subtitle1"><span class="text-grey-4 shadow">{{rec.subtitle}}</span>
</div>
</div>
</q-carousel-slide>
</q-carousel>
</section>
<div v-if="!tools.isMobile()" style="margin: 60px 60px;"></div>
<COpenStreetMap :imgmap="getValDb('IMGMAP', false)" :urlmap="getValDb('URLMAP', false)" :title="getValDb('MAP_TITLE', false)"
:coordinates="getValDb('COORD_MAP_1', false)" :coord_big="getValDb('COORD_MAP_BIG', false)">
</COpenStreetMap>
<div class="q-ma-md"></div>
</div>
</CMyPage>
</q-page>
</template>
<script lang="ts" src="./home_tdv.ts">
</script>
<style lang="scss" scoped>
@import './home_tdv.scss';
</style>

View File

@@ -94,6 +94,7 @@ const msg_website_it = {
reg: 'Partecipanti', reg: 'Partecipanti',
verifieds: 'Verificati', verifieds: 'Verificati',
online_today: 'On Line Oggi', online_today: 'On Line Oggi',
activeusers: 'Utenti Attivi',
autorizzati: 'Autorizzati', autorizzati: 'Autorizzati',
autorizzare: 'In attesa di Abilitazione', autorizzare: 'In attesa di Abilitazione',
passeggeri: 'Passeggeri Navi', passeggeri: 'Passeggeri Navi',

View File

@@ -1,452 +0,0 @@
.testo-banda {
//background: -webkit-gradient(linear, left top, left bottom, from(#3144f0), to(transparent));
//background: linear-gradient(180deg, #3144f0, transparent);
//background: rgba(0, 0, 0, .6)
}
$grayshadow: #555;
$textcol: blue;
$textcol_scuro: darkblue;
p {
margin: 0 0 1.25rem;
//text-shadow: .125rem .125rem .25rem $grayshadow;
}
h4 {
font-size: 1.25rem;
}
.mycard {
visibility: hidden;
}
.landing {
}
.landing_background {
background: #000 url(../../../public/images/foto1.jpg) no-repeat 50% fixed;
background-size: cover
}
.landing > section {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
//padding: 0 16px
}
.intro {
display: flex;
justify-content: space-between;
align-items: stretch;
/* flex-flow: row nowrap; */
padding: 1.25rem 0 1.25rem 0;
margin: .125rem;
* {
width: 100%;
flex: 1;
margin-left: auto;
margin-right: auto;
}
&__associazione {
min-width: 350px;
}
&__comeassociarsi {
min-width: 350px;
}
}
.subtitle {
font-weight: 600;
text-align: center;
letter-spacing: 0.125rem;
text-transform: uppercase;
font-size: 1rem;
}
.landing > section.padding {
padding: 5.62rem 1rem;
}
.landing > section.padding_testo {
padding-top: 1.25rem;
padding-bottom: 1rem;
}
.landing > section.padding_gallery {
padding-top: 3.125rem;
padding-bottom: 5.625rem;
}
.landing > section > div {
position: relative;
width: 100%
}
.maxwidth1200 {
max-width: 1200px;
}
.landing__toolbar {
background: -webkit-gradient(linear, left top, left bottom, from(#000), to(transparent));
background: linear-gradient(180deg, #000, transparent);
padding: 0 !important
}
.landing__toolbar .q-btn {
border-radius: 0 0 .315rem .315rem;
-ms-flex-item-align: stretch;
align-self: stretch
}
.landing__hero {
min-height: 50vh
}
.landing__header {
height: 18vh
}
.landing__arrow {
bottom: 1.5rem;
opacity: .4
}
.landing__front {
background: -webkit-gradient(linear, left top, left bottom, from(transparent), color-stop(15%, rgba(0, 0, 0, .6)));
background: linear-gradient(180deg, transparent, rgba(0, 0, 0, .6) 15%)
}
.landing__logo {
width: 9.40rem;
height: 9.40rem;
margin-top: 1.315rem;
//-webkit-animation: logo-rotate 240s linear infinite;
//animation: logo-rotate 240s linear infinite
}
.landing__features .q-icon {
font-size: 4rem
}
h4 {
line-height: 1.5;
text-shadow: .25rem .25rem .5rem $grayshadow;
}
.landing__features h4, .landing__features h6 {
margin: 1rem 0
}
.landing__features p {
opacity: .7;
font-size: 1rem;
line-height: 1.5;
}
.landing__footer {
//background: -webkit-gradient(linear, left top, left bottom, color-stop(65%, rgba(0, 0, 0, .1)), to(#000));
background: linear-gradient(180deg, rgba(0, 0, 0, .8) 95%, #FFF);
padding-top: 4.5rem !important;
padding-bottom: 4.5rem !important;
padding-left: 1.25rem;
padding-right: 1.25rem;
color: #9f9f9f;
}
.icon_contact:hover {
color: blue;
border-color: white;
border-width: .0625rem;
}
.landing__footer .doc-link {
color: $textcol;
}
.landing__footer .doc-link:hover {
opacity: .8
}
.landing__swirl-bg {
background-repeat: no-repeat !important;
background-position: top;
background-size: contain !important;
background-image: url(../../../public/images/landing_first_section.png) !important
}
.feat-descr {
font-size: 1.15rem;
}
.feat-descr:hover {
transition: opacity 0.5s ease-in-out;
opacity: 0.9;
}
.q-col-gutter-sm {
padding: 3.125rem 3.125rem;
//margin-left: -48px
}
body.mobile .landing {
//background: unset
}
body.mobile .landing:before {
content: "";
position: fixed;
top: 0;
height: 100vh;
left: 0;
right: 0;
bottom: 0;
z-index: -1;
//background: #000 url(../../public/images/cover.jpg) 50%;
background-size: cover
}
/*
@-webkit-keyframes logo-rotate {
to {
-webkit-transform: rotate(-1turn);
transform: rotate(-1turn)
}
}
@keyframes logo-rotate {
to {
-webkit-transform: rotate(-1turn);
transform: rotate(-1turn)
}
}
*/
.home {
//background-color: rgb(250, 250, 250);
padding: 3.125rem;
display: flex;
//flex-wrap: nowrap;
flex-direction: column;
align-items: center;
justify-content: space-between;
}
.btn-start {
margin: 3.125rem;
}
.shadow {
//color: white;
text-shadow: 0.125rem 0.125rem 0.25rem $grayshadow;
}
.text-h1, h1 {
font-size: 3rem;
font-weight: bold;
line-height: 3rem;
letter-spacing: -.01562em;
margin-bottom: 8px !important;
}
.text-h2 {
font-size: 3.75rem;
font-weight: 300;
line-height: 3.75rem;
letter-spacing: -.00833em;
}
.text-weight-bold {
font-weight: 700;
}
.text-vers {
font-size: 0.75rem;
font-weight: 400;
line-height: 1.75rem;
letter-spacing: .00937em;
text-shadow: .25rem .25rem .5rem $grayshadow;
}
.homep-cover-img-1 {
background: #000 url(../../../public/images/foto1.jpg) no-repeat 50% fixed;
//transition: background-image 1s ease-in-out;
}
.homep-cover-img-2 {
background: #000 url(../../../public/images/foto2.jpg) no-repeat 50% fixed;
//transition: background-image 1s ease-in-out;
}
.homep-cover-img-3 {
background: #000 url(../../../public/images/foto3.jpg) no-repeat 50% fixed;
//transition: background-image 1s ease-in-out;
}
.homep-cover-img.hide-filter:before {
opacity: 0
}
.landing__footer-icons {
font-size: 1.75rem
}
.landing__footer-icons a {
margin: 0 .5rem .5rem;
text-decoration: none;
outline: 0;
color: $textcol;
transition: color .28s
}
.landing__footer-icons a:hover {
color: $textcol_scuro;
}
.doc-img {
max-width: 100%;
}
.mylist {
background: #3fdaff;
padding-left: 1.25rem;
}
.clgutter {
margin-top: 1.25rem;
padding: .62rem;
}
.carousel_img_3 {
//background-image: url(../../public/images/cibo_sano.jpg);
background-size: cover !important;
background-position: 50% center !important;
background-repeat: no-repeat !important;
}
@media (max-width: 718px) {
// PER VERSIONE MOBILE
.landing__hero {
text-align: center
}
.landing__header {
height: 7vh
}
.clgutter {
margin-top: 0;
padding: 0;
}
.landing__hero .text-h1, h1 {
font-size: 2rem;
line-height: 2.05rem;
margin-bottom: 1.25rem
}
.landing > section.padding {
padding: 2.5rem 1rem;
}
.landing > section.padding_testo {
padding-top: 1.25rem;
padding-bottom: 1rem;
}
.landing > section.padding_gallery {
padding-top: 3.125rem;
padding-bottom: 5.625rem;
max-width: 800px;
}
.landing > section.padding_gallery > div {
padding-top: 3.125rem;
padding-bottom: 5.625rem;
}
.landing__features h4, .landing__features h6 {
margin: 1.25rem 0
}
h4 {
line-height: 1.4;
text-shadow: 0.25rem 0.25rem 0.5rem $grayshadow;
}
.landing .feature-item {
text-align: center;
margin-top: 1.25rem;
}
.landing__hero-content {
padding-bottom: 11.25rem;
}
.landing__hero2-content {
padding-bottom: 7.25rem;
}
.landing__hero-btns {
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center
}
.q-col-gutter-sm {
padding: .625rem .315rem;
}
.text-subtitle1 {
font-size: 1.25rem;
}
.text-vers {
font-size: 0.6rem;
}
.carousel_img_3 {
//background-image: url(../../public/images/cibo_sano.jpg);
background-size: 620px 620px !important;
background-position: 50% top !important;
background-repeat: no-repeat !important;
}
}
.custom-caption {
text-align: center;
padding: .75rem;
color: $textcol;
background-color: rgba(0, 0, 0, .3);
}
.sfondo-grigio {
padding: 1rem;
color: $textcol;
background-color: rgba(0, 0, 0, .35);
}
.mycontacts {
color: gray;
letter-spacing: 0.078rem;
}
.mycontacts_title {
text-shadow: 0.125rem 0.125rem 0.125rem #555;
font-weight: bold;
color: #999;
letter-spacing: 0.125rem;
}
.mycontacts_text {
color: #999;
letter-spacing: 0.093rem;
}

View File

@@ -1,78 +0,0 @@
import { defineComponent, ref, onMounted, watch, computed } from 'vue'
import { useGlobalStore } from '@store/globalStore'
import { useRoute } from 'vue-router'
import { useUserStore } from '@store/UserStore'
import { Logo } from '../../components/logo'
import { LandingFooter } from '../../components/LandingFooter'
import { CMyPage } from '../../components/CMyPage/index'
import { tools } from '@src/store/Modules/tools'
import { static_data } from '@src/db/static_data'
import { toolsext } from '@src/store/Modules/toolsext'
import { Screen } from 'quasar'
import { CCardCarousel, CEventsCalendar, COpenStreetMap } from '@components'
import MixinBase from '@src/mixins/mixin-base'
import { firstimagehome } from '@src/db/static_data'
import MixinMetaTags from '@/mixins/mixin-metatags'
export default defineComponent({
name: 'home_arcadei',
components: { Logo, LandingFooter, CMyPage, CCardCarousel, CEventsCalendar, COpenStreetMap },
setup() {
const animare = ref(0)
const slide = ref('first')
const slide2 = ref(1)
const getImmagini = ref([
{
title: '', subtitle: '',
alt: 'Arcadei',
img: 'images/arcadei/img1.png'
},
])
const userStore = useUserStore()
const globalStore = useGlobalStore()
const { setValDb, getValDb } = MixinBase()
const { setmeta, getsrcbyimg } = MixinMetaTags()
function getheightgallery() {
if (tools.isMobile())
return '400px'
else
return '600px'
}
function created() {
//
}
function getArrDisciplines() {
return globalStore.disciplines.filter((rec: any) => rec.showinhome)
}
created()
return {
tools,
toolsext,
static_data,
animare,
slide,
slide2,
getheightgallery,
getArrDisciplines,
getImmagini,
getValDb,
firstimagehome,
getsrcbyimg,
setmeta,
}
},
})

View File

@@ -1,221 +0,0 @@
<template>
<q-page>
<CMyPage title="Home">
<div class="landing">
<section>
<div class="landing__hero maxwidth1200 text-white">
<q-carousel
animated
:autoplay="animare"
swipeable
infinite
navigation
transition-next="slide-left"
transition-prev="slide-right"
v-model="slide"
:height="getheightgallery()"
width="100%"
>
<q-carousel-slide name="first"
:img-src="getsrcbyimg(firstimagehome())">
<div class="landing__header"></div>
<div class="landing__hero-content row justify-center q-gutter-xs clgutter">
<div class="row">
&nbsp;
</div>
<div class="flex justify-end">
<div class="q-gutter-xs testo-banda clgutter">
<h1 class="text-h1 shadow-max">{{tools.getappname()}}</h1>
<div class="text-subtitle1 shadow text-italic q-pl-sm">
&nbsp;
</div>
<div class="text-subtitle1 shadow-max big text-italic q-pl-sm">
</div>
<div class="text-subtitle2 shadow text-italic q-pl-sm">
</div>
<div>
<br>
<br>
<div v-if="!tools.isLogged()" style="margin: 5px; padding: 5px;" class="home">
<br>
<br>
</div>
</div>
</div>
</div>
</div>
<div class="landing__arrow absolute-bottom text-center">
<i aria-hidden="true"
class="q-icon text-h2 text-white material-icons">expand_more</i>
</div>
</q-carousel-slide>
<q-carousel-slide name="second"
:img-src="getsrcbyimg('images/background2.jpg')" alt="">
<div class="landing__header"></div>
<div class="landing__hero2-content row justify-center q-gutter-xs clgutter">
<div class="row">
<logo></logo>
</div>
<div class="flex justify-end">
<div class="q-gutter-xs testo-banda clgutter">
<h1 class="text-h1 shadow-max">{{tools.getappname()}}</h1>
<h2 class="text-subtitle1 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp')}}
</h2>
<h2 class="text-subtitle1 shadow-max big text-italic q-pl-sm">
<strong>{{$t('msg.sottoTitoloApp2')}}</strong>
</h2>
<h2 class="text-subtitle2 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp3')}}
</h2>
</div>
</div>
</div>
<div class="landing__arrow absolute-bottom text-center">
<i aria-hidden="true"
class="q-icon text-h2 text-white material-icons">expand_more</i>
</div>
</q-carousel-slide>
<q-carousel-slide name="third"
:img-src="getsrcbyimg('images/background3.jpg')">
<div class="landing__header"></div>
<div class="landing__hero2-content row justify-center q-gutter-xs clgutter">
<div class="row">
<logo></logo>
</div>
<div class="flex justify-end">
<div class="q-gutter-xs testo-banda clgutter">
<div class="text-h1 shadow-max">{{tools.getappname()}}</div>
<div class="text-subtitle1 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp')}}
</div>
<div class="text-subtitle1 shadow-max big text-italic q-pl-sm"><strong>{{$t('msg.sottoTitoloApp2')}}</strong>
</div>
<div class="text-subtitle2 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp3')}}
</div>
<div class="text-subtitle3 shadow text-italic q-pl-sm ">
{{$t('msg.sottoTitoloApp4')}}
</div>
</div>
</div>
</div>
<div class="landing__arrow absolute-bottom text-center">
<!--<i aria-hidden="true"-->
<!--class="q-icon text-h2 text-white material-icons">expand_more</i>-->
</div>
</q-carousel-slide>
</q-carousel>
</div>
</section>
<div class="q-pa-md q-gutter-md">
<div v-if="isLogged && !isVerified" class="text-verified">{{
$t('components.authentication.email_verification.link_sent') }}
</div>
</div>
<CCardCarousel :myarr="getArrDisciplines()">
</CCardCarousel>
<CEventsCalendar :mysingleevent="null" :showfirstN="getValDb('SHOW_LAST_EVENTS', false, 3)">
</CEventsCalendar>
<div v-if="getValDb('VIDEO_HOME', false)" class="row justify-evenly items-center q-gutter-md ">
<div class="text-center">
<h4 class="subtitle text-blue" v-html="getValDb('VIDEO_TITLE', false)"></h4>
<div class="">
<video :width="tools.getwidthscale(mythis, 320, 800)"
:height="tools.getheightbywidth(mythis, 320, 180, 800)" controls>
<source :src="getValDb('VIDEO_HOME', false)" type="video/mp4">
</video>
</div>
<!--<q-video src="../../statics/video/Intervista_Cristina_Barattoni.mp4">-->
<!--</q-video>-->
</div>
</div>
<div v-if="getValDb('YT_VIDEO', false)" class="row justify-evenly items-center q-gutter-md ">
<div class="text-center">
<h4 class="subtitle text-blue" v-html="getValDb('YT_TITLE', false)"></h4>
<div class="">
<div class="">
<iframe
:width="tools.getwidthscale(mythis, getValDb('YT_W', false), 800)"
:height="tools.getheightbywidth(mythis, getValDb('YT_W', false), getValDb('YT_H', false), 800)"
:src="getValDb('YT_VIDEO', false)"
frameborder="0"
allowfullscreen
></iframe>
</div>
</div>
<!--<q-video src="../../statics/video/Intervista_Cristina_Barattoni.mp4">-->
<!--</q-video>-->
</div>
</div>
<section class="maxwidth padding_gallery bg-white text-grey-10 text-center" >
<q-carousel
swipeable
animated
:autoplay="8000"
v-model="slide2"
arrows
thumbnails
infinite
height="600">
<q-carousel-slide v-for="(rec, index) in getImmagini" :key="index" :name="index"
:img-src="rec.img"
:alt="rec.alt"
class="carousel_slide">
<div class="absolute-bottom custom-caption" style="margin-bottom: 70px">
<div class="text-h5"><span
class="text-h6 text-grey-1 shadow-max">{{index + 1}}. </span><span
class="text-h6 text-grey-2 shadow">{{rec.title}}</span></div>
<div class="text-subtitle1"><span class="text-grey-4 shadow">{{rec.subtitle}}</span>
</div>
</div>
</q-carousel-slide>
</q-carousel>
</section>
<div v-if="!tools.isMobile()" style="margin: 60px 60px;"></div>
<COpenStreetMap :imgmap="getValDb('IMGMAP', false)" :urlmap="getValDb('URLMAP', false)" :title="getValDb('MAP_TITLE', false)"
:coordinates="getValDb('COORD_MAP_1', false)" :coord_big="getValDb('COORD_MAP_BIG', false)">
</COpenStreetMap>
<div class="q-ma-md"></div>
</div>
</CMyPage>
</q-page>
</template>
<script lang="ts" src="./home_arcadei.ts">
</script>
<style lang="scss" scoped>
@import './home_arcadei.scss';
</style>

View File

@@ -1,452 +0,0 @@
.testo-banda {
//background: -webkit-gradient(linear, left top, left bottom, from(#3144f0), to(transparent));
//background: linear-gradient(180deg, #3144f0, transparent);
//background: rgba(0, 0, 0, .6)
}
$grayshadow: #555;
$textcol: blue;
$textcol_scuro: darkblue;
p {
margin: 0 0 1.25rem;
//text-shadow: .125rem .125rem .25rem $grayshadow;
}
h4 {
font-size: 1.25rem;
}
.mycard {
visibility: hidden;
}
.landing {
}
.landing_background {
background: #000 url(../../../public/images/foto1.jpg) no-repeat 50% fixed;
background-size: cover
}
.landing > section {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
//padding: 0 16px
}
.intro {
display: flex;
justify-content: space-between;
align-items: stretch;
/* flex-flow: row nowrap; */
padding: 1.25rem 0 1.25rem 0;
margin: .125rem;
* {
width: 100%;
flex: 1;
margin-left: auto;
margin-right: auto;
}
&__associazione {
min-width: 350px;
}
&__comeassociarsi {
min-width: 350px;
}
}
.subtitle {
font-weight: 600;
text-align: center;
letter-spacing: 0.125rem;
text-transform: uppercase;
font-size: 1rem;
}
.landing > section.padding {
padding: 5.62rem 1rem;
}
.landing > section.padding_testo {
padding-top: 1.25rem;
padding-bottom: 1rem;
}
.landing > section.padding_gallery {
padding-top: 3.125rem;
padding-bottom: 5.625rem;
}
.landing > section > div {
position: relative;
width: 100%
}
.maxwidth1200 {
max-width: 1200px;
}
.landing__toolbar {
background: -webkit-gradient(linear, left top, left bottom, from(#000), to(transparent));
background: linear-gradient(180deg, #000, transparent);
padding: 0 !important
}
.landing__toolbar .q-btn {
border-radius: 0 0 .315rem .315rem;
-ms-flex-item-align: stretch;
align-self: stretch
}
.landing__hero {
min-height: 50vh
}
.landing__header {
height: 18vh
}
.landing__arrow {
bottom: 1.5rem;
opacity: .4
}
.landing__front {
background: -webkit-gradient(linear, left top, left bottom, from(transparent), color-stop(15%, rgba(0, 0, 0, .6)));
background: linear-gradient(180deg, transparent, rgba(0, 0, 0, .6) 15%)
}
.landing__logo {
width: 9.40rem;
height: 9.40rem;
margin-top: 1.315rem;
//-webkit-animation: logo-rotate 240s linear infinite;
//animation: logo-rotate 240s linear infinite
}
.landing__features .q-icon {
font-size: 4rem
}
h4 {
line-height: 1.5;
text-shadow: .25rem .25rem .5rem $grayshadow;
}
.landing__features h4, .landing__features h6 {
margin: 1rem 0
}
.landing__features p {
opacity: .7;
font-size: 1rem;
line-height: 1.5;
}
.landing__footer {
//background: -webkit-gradient(linear, left top, left bottom, color-stop(65%, rgba(0, 0, 0, .1)), to(#000));
background: linear-gradient(180deg, rgba(0, 0, 0, .8) 95%, #FFF);
padding-top: 4.5rem !important;
padding-bottom: 4.5rem !important;
padding-left: 1.25rem;
padding-right: 1.25rem;
color: #9f9f9f;
}
.icon_contact:hover {
color: blue;
border-color: white;
border-width: .0625rem;
}
.landing__footer .doc-link {
color: $textcol;
}
.landing__footer .doc-link:hover {
opacity: .8
}
.landing__swirl-bg {
background-repeat: no-repeat !important;
background-position: top;
background-size: contain !important;
background-image: url(../../../public/images/landing_first_section.png) !important
}
.feat-descr {
font-size: 1.15rem;
}
.feat-descr:hover {
transition: opacity 0.5s ease-in-out;
opacity: 0.9;
}
.q-col-gutter-sm {
padding: 3.125rem 3.125rem;
//margin-left: -48px
}
body.mobile .landing {
//background: unset
}
body.mobile .landing:before {
content: "";
position: fixed;
top: 0;
height: 100vh;
left: 0;
right: 0;
bottom: 0;
z-index: -1;
//background: #000 url(../../public/images/cover.jpg) 50%;
background-size: cover
}
/*
@-webkit-keyframes logo-rotate {
to {
-webkit-transform: rotate(-1turn);
transform: rotate(-1turn)
}
}
@keyframes logo-rotate {
to {
-webkit-transform: rotate(-1turn);
transform: rotate(-1turn)
}
}
*/
.home {
//background-color: rgb(250, 250, 250);
padding: 3.125rem;
display: flex;
//flex-wrap: nowrap;
flex-direction: column;
align-items: center;
justify-content: space-between;
}
.btn-start {
margin: 3.125rem;
}
.shadow {
//color: white;
text-shadow: 0.125rem 0.125rem 0.25rem $grayshadow;
}
.text-h1, h1 {
font-size: 3rem;
font-weight: bold;
line-height: 3rem;
letter-spacing: -.01562em;
margin-bottom: 8px !important;
}
.text-h2 {
font-size: 3.75rem;
font-weight: 300;
line-height: 3.75rem;
letter-spacing: -.00833em;
}
.text-weight-bold {
font-weight: 700;
}
.text-vers {
font-size: 0.75rem;
font-weight: 400;
line-height: 1.75rem;
letter-spacing: .00937em;
text-shadow: .25rem .25rem .5rem $grayshadow;
}
.homep-cover-img-1 {
background: #000 url(../../../public/images/foto1.jpg) no-repeat 50% fixed;
//transition: background-image 1s ease-in-out;
}
.homep-cover-img-2 {
background: #000 url(../../../public/images/foto2.jpg) no-repeat 50% fixed;
//transition: background-image 1s ease-in-out;
}
.homep-cover-img-3 {
background: #000 url(../../../public/images/foto3.jpg) no-repeat 50% fixed;
//transition: background-image 1s ease-in-out;
}
.homep-cover-img.hide-filter:before {
opacity: 0
}
.landing__footer-icons {
font-size: 1.75rem
}
.landing__footer-icons a {
margin: 0 .5rem .5rem;
text-decoration: none;
outline: 0;
color: $textcol;
transition: color .28s
}
.landing__footer-icons a:hover {
color: $textcol_scuro;
}
.doc-img {
max-width: 100%;
}
.mylist {
background: #3fdaff;
padding-left: 1.25rem;
}
.clgutter {
margin-top: 1.25rem;
padding: .62rem;
}
.carousel_img_3 {
//background-image: url(../../public/images/cibo_sano.jpg);
background-size: cover !important;
background-position: 50% center !important;
background-repeat: no-repeat !important;
}
@media (max-width: 718px) {
// PER VERSIONE MOBILE
.landing__hero {
text-align: center
}
.landing__header {
height: 7vh
}
.clgutter {
margin-top: 0;
padding: 0;
}
.landing__hero .text-h1, h1 {
font-size: 2rem;
line-height: 2.05rem;
margin-bottom: 1.25rem
}
.landing > section.padding {
padding: 2.5rem 1rem;
}
.landing > section.padding_testo {
padding-top: 1.25rem;
padding-bottom: 1rem;
}
.landing > section.padding_gallery {
padding-top: 3.125rem;
padding-bottom: 5.625rem;
max-width: 800px;
}
.landing > section.padding_gallery > div {
padding-top: 3.125rem;
padding-bottom: 5.625rem;
}
.landing__features h4, .landing__features h6 {
margin: 1.25rem 0
}
h4 {
line-height: 1.4;
text-shadow: 0.25rem 0.25rem 0.5rem $grayshadow;
}
.landing .feature-item {
text-align: center;
margin-top: 1.25rem;
}
.landing__hero-content {
padding-bottom: 11.25rem;
}
.landing__hero2-content {
padding-bottom: 7.25rem;
}
.landing__hero-btns {
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center
}
.q-col-gutter-sm {
padding: .625rem .315rem;
}
.text-subtitle1 {
font-size: 1.25rem;
}
.text-vers {
font-size: 0.6rem;
}
.carousel_img_3 {
//background-image: url(../../public/images/cibo_sano.jpg);
background-size: 620px 620px !important;
background-position: 50% top !important;
background-repeat: no-repeat !important;
}
}
.custom-caption {
text-align: center;
padding: .75rem;
color: $textcol;
background-color: rgba(0, 0, 0, .3);
}
.sfondo-grigio {
padding: 1rem;
color: $textcol;
background-color: rgba(0, 0, 0, .35);
}
.mycontacts {
color: gray;
letter-spacing: 0.078rem;
}
.mycontacts_title {
text-shadow: 0.125rem 0.125rem 0.125rem #555;
font-weight: bold;
color: #999;
letter-spacing: 0.125rem;
}
.mycontacts_text {
color: #999;
letter-spacing: 0.093rem;
}

View File

@@ -1,78 +0,0 @@
import { defineComponent, ref, onMounted, watch, computed } from 'vue'
import { useGlobalStore } from '@store/globalStore'
import { useRoute } from 'vue-router'
import { useUserStore } from '@store/UserStore'
import { Logo } from '../../components/logo'
import { LandingFooter } from '../../components/LandingFooter'
import { CMyPage } from '../../components/CMyPage/index'
import { tools } from '@src/store/Modules/tools'
import { static_data } from '@src/db/static_data'
import { toolsext } from '@src/store/Modules/toolsext'
import { Screen } from 'quasar'
import { CCardCarousel, CEventsCalendar, COpenStreetMap } from '@components'
import MixinBase from '@src/mixins/mixin-base'
import { firstimagehome } from '@src/db/static_data'
import MixinMetaTags from '@/mixins/mixin-metatags'
export default defineComponent({
name: 'Home_tdv',
components: { Logo, LandingFooter, CMyPage, CCardCarousel, CEventsCalendar, COpenStreetMap },
setup() {
const animare = ref(0)
const slide = ref('first')
const slide2 = ref(1)
const getImmagini = ref([
{
title: '', subtitle: '',
alt: 'Elisa e Cristina insieme',
img: '../../statics/images/eventi_esterni/IMG_6035.jpg'
},
])
const userStore = useUserStore()
const globalStore = useGlobalStore()
const { setValDb, getValDb } = MixinBase()
const { setmeta, getsrcbyimg } = MixinMetaTags()
function getheightgallery() {
if (tools.isMobile())
return '400px'
else
return '600px'
}
function created() {
//
}
function getArrDisciplines() {
return globalStore.disciplines.filter((rec: any) => rec.showinhome)
}
created()
return {
tools,
toolsext,
static_data,
animare,
slide,
slide2,
getheightgallery,
getArrDisciplines,
getImmagini,
getValDb,
firstimagehome,
getsrcbyimg,
setmeta,
}
},
})

View File

@@ -1,220 +0,0 @@
<template>
<q-page>
<CMyPage title="Home">
<div class="landing">
<section>
<div class="landing__hero maxwidth1200 text-white">
<q-carousel
animated
:autoplay="animare"
swipeable
infinite
navigation
transition-next="slide-left"
transition-prev="slide-right"
v-model="slide"
:height="getheightgallery()"
width="100%"
>
<q-carousel-slide name="first"
:img-src="getsrcbyimg(firstimagehome())">
<div class="landing__header"></div>
<div class="landing__hero-content row justify-center q-gutter-xs clgutter">
<div class="row">
&nbsp;
</div>
<div class="flex justify-end">
<div class="q-gutter-xs testo-banda clgutter">
<h1 class="text-h1 shadow-max">{{tools.getappname()}}</h1>
<div class="text-subtitle1 shadow text-italic q-pl-sm">
&nbsp;
</div>
<div class="text-subtitle1 shadow-max big text-italic q-pl-sm">
</div>
<div class="text-subtitle2 shadow text-italic q-pl-sm">
</div>
<div>
<br>
<br>
<div v-if="!tools.isLogged()" style="margin: 5px; padding: 5px;" class="home">
<br>
<br>
</div>
</div>
</div>
</div>
</div>
<div class="landing__arrow absolute-bottom text-center">
<i aria-hidden="true"
class="q-icon text-h2 text-white material-icons">expand_more</i>
</div>
</q-carousel-slide>
<q-carousel-slide name="second"
:img-src="getsrcbyimg('images/background2.jpg')" alt="">
<div class="landing__header"></div>
<div class="landing__hero2-content row justify-center q-gutter-xs clgutter">
<div class="row">
<logo></logo>
</div>
<div class="flex justify-end">
<div class="q-gutter-xs testo-banda clgutter">
<h1 class="text-h1 shadow-max">{{tools.getappname()}}</h1>
<h2 class="text-subtitle1 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp')}}
</h2>
<h2 class="text-subtitle1 shadow-max big text-italic q-pl-sm">
<strong>{{$t('msg.sottoTitoloApp2')}}</strong>
</h2>
<h2 class="text-subtitle2 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp3')}}
</h2>
</div>
</div>
</div>
<div class="landing__arrow absolute-bottom text-center">
<i aria-hidden="true"
class="q-icon text-h2 text-white material-icons">expand_more</i>
</div>
</q-carousel-slide>
<q-carousel-slide name="third"
:img-src="getsrcbyimg('images/background3.jpg')">
<div class="landing__header"></div>
<div class="landing__hero2-content row justify-center q-gutter-xs clgutter">
<div class="row">
<logo></logo>
</div>
<div class="flex justify-end">
<div class="q-gutter-xs testo-banda clgutter">
<div class="text-h1 shadow-max">{{tools.getappname()}}</div>
<div class="text-subtitle1 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp')}}
</div>
<div class="text-subtitle1 shadow-max big text-italic q-pl-sm"><strong>{{$t('msg.sottoTitoloApp2')}}</strong>
</div>
<div class="text-subtitle2 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp3')}}
</div>
<div class="text-subtitle3 shadow text-italic q-pl-sm ">
{{$t('msg.sottoTitoloApp4')}}
</div>
</div>
</div>
</div>
<div class="landing__arrow absolute-bottom text-center">
<!--<i aria-hidden="true"-->
<!--class="q-icon text-h2 text-white material-icons">expand_more</i>-->
</div>
</q-carousel-slide>
</q-carousel>
</div>
</section>
<div class="q-pa-md q-gutter-md">
<div v-if="isLogged && !isVerified" class="text-verified">{{
$t('components.authentication.email_verification.link_sent') }}
</div>
</div>
<CCardCarousel :myarr="getArrDisciplines()">
</CCardCarousel>
<CEventsCalendar :mysingleevent="null" :showfirstN="getValDb('SHOW_LAST_EVENTS', false, 3)">
</CEventsCalendar>
<div v-if="getValDb('VIDEO_HOME', false)" class="row justify-evenly items-center q-gutter-md ">
<div class="text-center">
<h4 class="subtitle text-blue" v-html="getValDb('VIDEO_TITLE', false)"></h4>
<div class="">
<video :width="tools.getwidthscale(mythis, 320, 800)"
:height="tools.getheightbywidth(mythis, 320, 180, 800)" controls>
<source :src="getValDb('VIDEO_HOME', false)" type="video/mp4">
</video>
</div>
<!--<q-video src="../../statics/video/Intervista_Cristina_Barattoni.mp4">-->
<!--</q-video>-->
</div>
</div>
<div v-if="getValDb('YT_VIDEO', false)" class="row justify-evenly items-center q-gutter-md ">
<div class="text-center">
<h4 class="subtitle text-blue" v-html="getValDb('YT_TITLE', false)"></h4>
<div class="">
<div class="">
<iframe
:width="tools.getwidthscale(mythis, getValDb('YT_W', false), 800)"
:height="tools.getheightbywidth(mythis, getValDb('YT_W', false), getValDb('YT_H', false), 800)"
:src="getValDb('YT_VIDEO', false)"
frameborder="0"
allowfullscreen
></iframe>
</div>
</div>
<!--<q-video src="../../statics/video/Intervista_Cristina_Barattoni.mp4">-->
<!--</q-video>-->
</div>
</div>
<section class="maxwidth padding_gallery bg-white text-grey-10 text-center" >
<q-carousel
swipeable
animated
:autoplay="8000"
v-model="slide2"
arrows
thumbnails
infinite
:height="tools.heightgallery()">
<q-carousel-slide v-for="(rec, index) in getImmagini" :key="index" :name="index"
:img-src="rec.img"
:alt="rec.alt"
class="carousel_slide">
<div class="absolute-bottom custom-caption" style="margin-bottom: 70px">
<div class="text-h5"><span
class="text-h6 text-grey-1 shadow-max">{{index + 1}}. </span><span
class="text-h6 text-grey-2 shadow">{{rec.title}}</span></div>
<div class="text-subtitle1"><span class="text-grey-4 shadow">{{rec.subtitle}}</span>
</div>
</div>
</q-carousel-slide>
</q-carousel>
</section>
<div v-if="!tools.isMobile()" style="margin: 60px 60px;"></div>
<COpenStreetMap :imgmap="getValDb('IMGMAP', false)" :urlmap="getValDb('URLMAP', false)" :title="getValDb('MAP_TITLE', false)"
:coordinates="getValDb('COORD_MAP_1', false)" :coord_big="getValDb('COORD_MAP_BIG', false)">
</COpenStreetMap>
<div class="q-ma-md"></div>
</div>
</CMyPage>
</q-page>
</template>
<script lang="ts" src="./home_tdv.ts">
</script>
<style lang="scss" scoped>
@import './home_tdv.scss';
</style>

View File

@@ -1,452 +0,0 @@
.testo-banda {
//background: -webkit-gradient(linear, left top, left bottom, from(#3144f0), to(transparent));
//background: linear-gradient(180deg, #3144f0, transparent);
//background: rgba(0, 0, 0, .6)
}
$grayshadow: #555;
$textcol: blue;
$textcol_scuro: darkblue;
p {
margin: 0 0 1.25rem;
//text-shadow: .125rem .125rem .25rem $grayshadow;
}
h4 {
font-size: 1.25rem;
}
.mycard {
visibility: hidden;
}
.landing {
}
.landing_background {
background: #000 url(../../../public/images/foto1.jpg) no-repeat 50% fixed;
background-size: cover
}
.landing > section {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
//padding: 0 16px
}
.intro {
display: flex;
justify-content: space-between;
align-items: stretch;
/* flex-flow: row nowrap; */
padding: 1.25rem 0 1.25rem 0;
margin: .125rem;
* {
width: 100%;
flex: 1;
margin-left: auto;
margin-right: auto;
}
&__associazione {
min-width: 350px;
}
&__comeassociarsi {
min-width: 350px;
}
}
.subtitle {
font-weight: 600;
text-align: center;
letter-spacing: 0.125rem;
text-transform: uppercase;
font-size: 1rem;
}
.landing > section.padding {
padding: 5.62rem 1rem;
}
.landing > section.padding_testo {
padding-top: 1.25rem;
padding-bottom: 1rem;
}
.landing > section.padding_gallery {
padding-top: 3.125rem;
padding-bottom: 5.625rem;
}
.landing > section > div {
position: relative;
width: 100%
}
.maxwidth1200 {
max-width: 1200px;
}
.landing__toolbar {
background: -webkit-gradient(linear, left top, left bottom, from(#000), to(transparent));
background: linear-gradient(180deg, #000, transparent);
padding: 0 !important
}
.landing__toolbar .q-btn {
border-radius: 0 0 .315rem .315rem;
-ms-flex-item-align: stretch;
align-self: stretch
}
.landing__hero {
min-height: 50vh
}
.landing__header {
height: 18vh
}
.landing__arrow {
bottom: 1.5rem;
opacity: .4
}
.landing__front {
background: -webkit-gradient(linear, left top, left bottom, from(transparent), color-stop(15%, rgba(0, 0, 0, .6)));
background: linear-gradient(180deg, transparent, rgba(0, 0, 0, .6) 15%)
}
.landing__logo {
width: 9.40rem;
height: 9.40rem;
margin-top: 1.315rem;
//-webkit-animation: logo-rotate 240s linear infinite;
//animation: logo-rotate 240s linear infinite
}
.landing__features .q-icon {
font-size: 4rem
}
h4 {
line-height: 1.5;
text-shadow: .25rem .25rem .5rem $grayshadow;
}
.landing__features h4, .landing__features h6 {
margin: 1rem 0
}
.landing__features p {
opacity: .7;
font-size: 1rem;
line-height: 1.5;
}
.landing__footer {
//background: -webkit-gradient(linear, left top, left bottom, color-stop(65%, rgba(0, 0, 0, .1)), to(#000));
background: linear-gradient(180deg, rgba(0, 0, 0, .8) 95%, #FFF);
padding-top: 4.5rem !important;
padding-bottom: 4.5rem !important;
padding-left: 1.25rem;
padding-right: 1.25rem;
color: #9f9f9f;
}
.icon_contact:hover {
color: blue;
border-color: white;
border-width: .0625rem;
}
.landing__footer .doc-link {
color: $textcol;
}
.landing__footer .doc-link:hover {
opacity: .8
}
.landing__swirl-bg {
background-repeat: no-repeat !important;
background-position: top;
background-size: contain !important;
background-image: url(../../../public/images/landing_first_section.png) !important
}
.feat-descr {
font-size: 1.15rem;
}
.feat-descr:hover {
transition: opacity 0.5s ease-in-out;
opacity: 0.9;
}
.q-col-gutter-sm {
padding: 3.125rem 3.125rem;
//margin-left: -48px
}
body.mobile .landing {
//background: unset
}
body.mobile .landing:before {
content: "";
position: fixed;
top: 0;
height: 100vh;
left: 0;
right: 0;
bottom: 0;
z-index: -1;
//background: #000 url(../../public/images/cover.jpg) 50%;
background-size: cover
}
/*
@-webkit-keyframes logo-rotate {
to {
-webkit-transform: rotate(-1turn);
transform: rotate(-1turn)
}
}
@keyframes logo-rotate {
to {
-webkit-transform: rotate(-1turn);
transform: rotate(-1turn)
}
}
*/
.home {
//background-color: rgb(250, 250, 250);
padding: 3.125rem;
display: flex;
//flex-wrap: nowrap;
flex-direction: column;
align-items: center;
justify-content: space-between;
}
.btn-start {
margin: 3.125rem;
}
.shadow {
//color: white;
text-shadow: 0.125rem 0.125rem 0.25rem $grayshadow;
}
.text-h1, h1 {
font-size: 3rem;
font-weight: bold;
line-height: 3rem;
letter-spacing: -.01562em;
margin-bottom: 8px !important;
}
.text-h2 {
font-size: 3.75rem;
font-weight: 300;
line-height: 3.75rem;
letter-spacing: -.00833em;
}
.text-weight-bold {
font-weight: 700;
}
.text-vers {
font-size: 0.75rem;
font-weight: 400;
line-height: 1.75rem;
letter-spacing: .00937em;
text-shadow: .25rem .25rem .5rem $grayshadow;
}
.homep-cover-img-1 {
background: #000 url(../../../public/images/foto1.jpg) no-repeat 50% fixed;
//transition: background-image 1s ease-in-out;
}
.homep-cover-img-2 {
background: #000 url(../../../public/images/foto2.jpg) no-repeat 50% fixed;
//transition: background-image 1s ease-in-out;
}
.homep-cover-img-3 {
background: #000 url(../../../public/images/foto3.jpg) no-repeat 50% fixed;
//transition: background-image 1s ease-in-out;
}
.homep-cover-img.hide-filter:before {
opacity: 0
}
.landing__footer-icons {
font-size: 1.75rem
}
.landing__footer-icons a {
margin: 0 .5rem .5rem;
text-decoration: none;
outline: 0;
color: $textcol;
transition: color .28s
}
.landing__footer-icons a:hover {
color: $textcol_scuro;
}
.doc-img {
max-width: 100%;
}
.mylist {
background: #3fdaff;
padding-left: 1.25rem;
}
.clgutter {
margin-top: 1.25rem;
padding: .62rem;
}
.carousel_img_3 {
//background-image: url(../../public/images/cibo_sano.jpg);
background-size: cover !important;
background-position: 50% center !important;
background-repeat: no-repeat !important;
}
@media (max-width: 718px) {
// PER VERSIONE MOBILE
.landing__hero {
text-align: center
}
.landing__header {
height: 7vh
}
.clgutter {
margin-top: 0;
padding: 0;
}
.landing__hero .text-h1, h1 {
font-size: 2rem;
line-height: 2.05rem;
margin-bottom: 1.25rem
}
.landing > section.padding {
padding: 2.5rem 1rem;
}
.landing > section.padding_testo {
padding-top: 1.25rem;
padding-bottom: 1rem;
}
.landing > section.padding_gallery {
padding-top: 3.125rem;
padding-bottom: 5.625rem;
max-width: 800px;
}
.landing > section.padding_gallery > div {
padding-top: 3.125rem;
padding-bottom: 5.625rem;
}
.landing__features h4, .landing__features h6 {
margin: 1.25rem 0
}
h4 {
line-height: 1.4;
text-shadow: 0.25rem 0.25rem 0.5rem $grayshadow;
}
.landing .feature-item {
text-align: center;
margin-top: 1.25rem;
}
.landing__hero-content {
padding-bottom: 11.25rem;
}
.landing__hero2-content {
padding-bottom: 7.25rem;
}
.landing__hero-btns {
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center
}
.q-col-gutter-sm {
padding: .625rem .315rem;
}
.text-subtitle1 {
font-size: 1.25rem;
}
.text-vers {
font-size: 0.6rem;
}
.carousel_img_3 {
//background-image: url(../../public/images/cibo_sano.jpg);
background-size: 620px 620px !important;
background-position: 50% top !important;
background-repeat: no-repeat !important;
}
}
.custom-caption {
text-align: center;
padding: .75rem;
color: $textcol;
background-color: rgba(0, 0, 0, .3);
}
.sfondo-grigio {
padding: 1rem;
color: $textcol;
background-color: rgba(0, 0, 0, .35);
}
.mycontacts {
color: gray;
letter-spacing: 0.078rem;
}
.mycontacts_title {
text-shadow: 0.125rem 0.125rem 0.125rem #555;
font-weight: bold;
color: #999;
letter-spacing: 0.125rem;
}
.mycontacts_text {
color: #999;
letter-spacing: 0.093rem;
}

View File

@@ -1,78 +0,0 @@
import { defineComponent, ref, onMounted, watch, computed } from 'vue'
import { useGlobalStore } from '@store/globalStore'
import { useRoute } from 'vue-router'
import { useUserStore } from '@store/UserStore'
import { Logo } from '../../components/logo'
import { LandingFooter } from '../../components/LandingFooter'
import { CMyPage } from '../../components/CMyPage/index'
import { tools } from '@src/store/Modules/tools'
import { static_data } from '@src/db/static_data'
import { toolsext } from '@src/store/Modules/toolsext'
import { Screen } from 'quasar'
import { CCardCarousel, CEventsCalendar, COpenStreetMap } from '@components'
import MixinBase from '@src/mixins/mixin-base'
import { firstimagehome } from '@src/db/static_data'
import MixinMetaTags from '@/mixins/mixin-metatags'
export default defineComponent({
name: 'home_arcadei',
components: { Logo, LandingFooter, CMyPage, CCardCarousel, CEventsCalendar, COpenStreetMap },
setup() {
const animare = ref(0)
const slide = ref('first')
const slide2 = ref(1)
const getImmagini = ref([
{
title: '', subtitle: '',
alt: 'Arcadei',
img: 'images/arcadei/img1.png'
},
])
const userStore = useUserStore()
const globalStore = useGlobalStore()
const { setValDb, getValDb } = MixinBase()
const { setmeta, getsrcbyimg } = MixinMetaTags()
function getheightgallery() {
if (tools.isMobile())
return '400px'
else
return '600px'
}
function created() {
//
}
function getArrDisciplines() {
return globalStore.disciplines.filter((rec: any) => rec.showinhome)
}
created()
return {
tools,
toolsext,
static_data,
animare,
slide,
slide2,
getheightgallery,
getArrDisciplines,
getImmagini,
getValDb,
firstimagehome,
getsrcbyimg,
setmeta,
}
},
})

View File

@@ -1,221 +0,0 @@
<template>
<q-page>
<CMyPage title="Home">
<div class="landing">
<section>
<div class="landing__hero maxwidth1200 text-white">
<q-carousel
animated
:autoplay="animare"
swipeable
infinite
navigation
transition-next="slide-left"
transition-prev="slide-right"
v-model="slide"
:height="getheightgallery()"
width="100%"
>
<q-carousel-slide name="first"
:img-src="getsrcbyimg(firstimagehome())">
<div class="landing__header"></div>
<div class="landing__hero-content row justify-center q-gutter-xs clgutter">
<div class="row">
&nbsp;
</div>
<div class="flex justify-end">
<div class="q-gutter-xs testo-banda clgutter">
<h1 class="text-h1 shadow-max">{{tools.getappname()}}</h1>
<div class="text-subtitle1 shadow text-italic q-pl-sm">
&nbsp;
</div>
<div class="text-subtitle1 shadow-max big text-italic q-pl-sm">
</div>
<div class="text-subtitle2 shadow text-italic q-pl-sm">
</div>
<div>
<br>
<br>
<div v-if="!tools.isLogged()" style="margin: 5px; padding: 5px;" class="home">
<br>
<br>
</div>
</div>
</div>
</div>
</div>
<div class="landing__arrow absolute-bottom text-center">
<i aria-hidden="true"
class="q-icon text-h2 text-white material-icons">expand_more</i>
</div>
</q-carousel-slide>
<q-carousel-slide name="second"
:img-src="getsrcbyimg('images/background2.jpg')" alt="">
<div class="landing__header"></div>
<div class="landing__hero2-content row justify-center q-gutter-xs clgutter">
<div class="row">
<logo></logo>
</div>
<div class="flex justify-end">
<div class="q-gutter-xs testo-banda clgutter">
<h1 class="text-h1 shadow-max">{{tools.getappname()}}</h1>
<h2 class="text-subtitle1 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp')}}
</h2>
<h2 class="text-subtitle1 shadow-max big text-italic q-pl-sm">
<strong>{{$t('msg.sottoTitoloApp2')}}</strong>
</h2>
<h2 class="text-subtitle2 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp3')}}
</h2>
</div>
</div>
</div>
<div class="landing__arrow absolute-bottom text-center">
<i aria-hidden="true"
class="q-icon text-h2 text-white material-icons">expand_more</i>
</div>
</q-carousel-slide>
<q-carousel-slide name="third"
:img-src="getsrcbyimg('images/background3.jpg')">
<div class="landing__header"></div>
<div class="landing__hero2-content row justify-center q-gutter-xs clgutter">
<div class="row">
<logo></logo>
</div>
<div class="flex justify-end">
<div class="q-gutter-xs testo-banda clgutter">
<div class="text-h1 shadow-max">{{tools.getappname()}}</div>
<div class="text-subtitle1 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp')}}
</div>
<div class="text-subtitle1 shadow-max big text-italic q-pl-sm"><strong>{{$t('msg.sottoTitoloApp2')}}</strong>
</div>
<div class="text-subtitle2 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp3')}}
</div>
<div class="text-subtitle3 shadow text-italic q-pl-sm ">
{{$t('msg.sottoTitoloApp4')}}
</div>
</div>
</div>
</div>
<div class="landing__arrow absolute-bottom text-center">
<!--<i aria-hidden="true"-->
<!--class="q-icon text-h2 text-white material-icons">expand_more</i>-->
</div>
</q-carousel-slide>
</q-carousel>
</div>
</section>
<div class="q-pa-md q-gutter-md">
<div v-if="isLogged && !isVerified" class="text-verified">{{
$t('components.authentication.email_verification.link_sent') }}
</div>
</div>
<CCardCarousel :myarr="getArrDisciplines()">
</CCardCarousel>
<CEventsCalendar :mysingleevent="null" :showfirstN="getValDb('SHOW_LAST_EVENTS', false, 3)">
</CEventsCalendar>
<div v-if="getValDb('VIDEO_HOME', false)" class="row justify-evenly items-center q-gutter-md ">
<div class="text-center">
<h4 class="subtitle text-blue" v-html="getValDb('VIDEO_TITLE', false)"></h4>
<div class="">
<video :width="tools.getwidthscale(mythis, 320, 800)"
:height="tools.getheightbywidth(mythis, 320, 180, 800)" controls>
<source :src="getValDb('VIDEO_HOME', false)" type="video/mp4">
</video>
</div>
<!--<q-video src="../../statics/video/Intervista_Cristina_Barattoni.mp4">-->
<!--</q-video>-->
</div>
</div>
<div v-if="getValDb('YT_VIDEO', false)" class="row justify-evenly items-center q-gutter-md ">
<div class="text-center">
<h4 class="subtitle text-blue" v-html="getValDb('YT_TITLE', false)"></h4>
<div class="">
<div class="">
<iframe
:width="tools.getwidthscale(mythis, getValDb('YT_W', false), 800)"
:height="tools.getheightbywidth(mythis, getValDb('YT_W', false), getValDb('YT_H', false), 800)"
:src="getValDb('YT_VIDEO', false)"
frameborder="0"
allowfullscreen
></iframe>
</div>
</div>
<!--<q-video src="../../statics/video/Intervista_Cristina_Barattoni.mp4">-->
<!--</q-video>-->
</div>
</div>
<section :class="`maxwidth padding_gallery `+ ($q.dark.isActive ? `bg-black` : `bg-white`) + ` text-grey-10 text-center`" >
<q-carousel
swipeable
animated
:autoplay="8000"
v-model="slide2"
arrows
thumbnails
infinite
height="600">
<q-carousel-slide v-for="(rec, index) in getImmagini" :key="index" :name="index"
:img-src="rec.img"
:alt="rec.alt"
class="carousel_slide">
<div class="absolute-bottom custom-caption" style="margin-bottom: 70px">
<div class="text-h5"><span
class="text-h6 text-grey-1 shadow-max">{{index + 1}}. </span><span
class="text-h6 text-grey-2 shadow">{{rec.title}}</span></div>
<div class="text-subtitle1"><span class="text-grey-4 shadow">{{rec.subtitle}}</span>
</div>
</div>
</q-carousel-slide>
</q-carousel>
</section>
<div v-if="!tools.isMobile()" style="margin: 60px 60px;"></div>
<COpenStreetMap :imgmap="getValDb('IMGMAP', false)" :urlmap="getValDb('URLMAP', false)" :title="getValDb('MAP_TITLE', false)"
:coordinates="getValDb('COORD_MAP_1', false)" :coord_big="getValDb('COORD_MAP_BIG', false)">
</COpenStreetMap>
<div class="q-ma-md"></div>
</div>
</CMyPage>
</q-page>
</template>
<script lang="ts" src="./home_arcadei.ts">
</script>
<style lang="scss" scoped>
@import './home_arcadei.scss';
</style>

View File

@@ -1,446 +0,0 @@
.testo-banda {
//background: -webkit-gradient(linear, left top, left bottom, from(#3144f0), to(transparent));
//background: linear-gradient(180deg, #3144f0, transparent);
//background: rgba(0, 0, 0, .6)
}
$grayshadow: #555;
$textcol: blue;
$textcol_scuro: darkblue;
p {
margin: 0 0 1.25rem;
//text-shadow: .125rem .125rem .25rem $grayshadow;
}
h4 {
font-size: 1.25rem;
}
.mycard {
visibility: hidden;
}
.landing {
}
.landing_background {
background: #000 url(../../../public/images/foto1.jpg) no-repeat 50% fixed;
background-size: cover
}
.landing > section {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
//padding: 0 16px
}
.intro {
display: flex;
justify-content: space-between;
align-items: stretch;
/* flex-flow: row nowrap; */
padding: 1.25rem 0 1.25rem 0;
margin: .125rem;
* {
width: 100%;
flex: 1;
margin-left: auto;
margin-right: auto;
}
&__associazione {
min-width: 350px;
}
&__comeassociarsi {
min-width: 350px;
}
}
.subtitle {
font-weight: 600;
text-align: center;
letter-spacing: 0.125rem;
text-transform: uppercase;
font-size: 1rem;
}
.landing > section.padding {
padding: 5.62rem 1rem;
}
.landing > section.padding_testo {
padding-top: 1.25rem;
padding-bottom: 1rem;
}
.landing > section.padding_gallery {
padding-top: 3.125rem;
padding-bottom: 5.625rem;
}
.landing > section > div {
position: relative;
width: 100%
}
.maxwidth1200 {
max-width: 1200px;
}
.landing__toolbar {
background: -webkit-gradient(linear, left top, left bottom, from(#000), to(transparent));
background: linear-gradient(180deg, #000, transparent);
padding: 0 !important
}
.landing__toolbar .q-btn {
border-radius: 0 0 .315rem .315rem;
-ms-flex-item-align: stretch;
align-self: stretch
}
.landing__hero {
min-height: 50vh
}
.landing__header {
height: 18vh
}
.landing__arrow {
bottom: 1.5rem;
opacity: .4
}
.landing__front {
background: -webkit-gradient(linear, left top, left bottom, from(transparent), color-stop(15%, rgba(0, 0, 0, .6)));
background: linear-gradient(180deg, transparent, rgba(0, 0, 0, .6) 15%)
}
.landing__logo {
width: 9.40rem;
height: 9.40rem;
margin-top: 1.315rem;
//-webkit-animation: logo-rotate 240s linear infinite;
//animation: logo-rotate 240s linear infinite
}
.landing__features .q-icon {
font-size: 4rem
}
h4 {
line-height: 1.5;
text-shadow: .25rem .25rem .5rem $grayshadow;
}
.landing__features h4, .landing__features h6 {
margin: 1rem 0
}
.landing__features p {
opacity: .7;
font-size: 1rem;
line-height: 1.5;
}
.landing__footer {
//background: -webkit-gradient(linear, left top, left bottom, color-stop(65%, rgba(0, 0, 0, .1)), to(#000));
background: linear-gradient(180deg, rgba(0, 0, 0, .8) 95%, #FFF);
padding-top: 4.5rem !important;
padding-bottom: 4.5rem !important;
padding-left: 1.25rem;
padding-right: 1.25rem;
color: #9f9f9f;
}
.icon_contact:hover {
color: blue;
border-color: white;
border-width: .0625rem;
}
.landing__footer .doc-link {
color: $textcol;
}
.landing__footer .doc-link:hover {
opacity: .8
}
.landing__swirl-bg {
background-repeat: no-repeat !important;
background-position: top;
background-size: contain !important;
background-image: url(../../../public/images/landing_first_section.png) !important
}
.feat-descr {
font-size: 1.15rem;
}
.feat-descr:hover {
transition: opacity 0.5s ease-in-out;
opacity: 0.9;
}
.q-col-gutter-sm {
padding: 3.125rem 3.125rem;
//margin-left: -48px
}
body.mobile .landing {
//background: unset
}
body.mobile .landing:before {
content: "";
position: fixed;
top: 0;
height: 100vh;
left: 0;
right: 0;
bottom: 0;
z-index: -1;
//background: #000 url(../../public/images/cover.jpg) 50%;
background-size: cover
}
/*
@-webkit-keyframes logo-rotate {
to {
-webkit-transform: rotate(-1turn);
transform: rotate(-1turn)
}
}
@keyframes logo-rotate {
to {
-webkit-transform: rotate(-1turn);
transform: rotate(-1turn)
}
}
*/
.home {
//background-color: rgb(250, 250, 250);
padding: 3.125rem;
display: flex;
//flex-wrap: nowrap;
flex-direction: column;
align-items: center;
justify-content: space-between;
}
.btn-start {
margin: 3.125rem;
}
.shadow {
//color: white;
text-shadow: 0.125rem 0.125rem 0.25rem $grayshadow;
}
.text-h1, h1 {
font-size: 3rem;
font-weight: bold;
line-height: 3rem;
letter-spacing: -.01562em;
margin-bottom: 8px !important;
}
.text-h2 {
font-size: 3.75rem;
font-weight: 300;
line-height: 3.75rem;
letter-spacing: -.00833em;
}
.text-weight-bold {
font-weight: 700;
}
.text-vers {
font-size: 0.75rem;
font-weight: 400;
line-height: 1.75rem;
letter-spacing: .00937em;
text-shadow: .25rem .25rem .5rem $grayshadow;
}
.homep-cover-img-1 {
background: #000 url(../../../public/images/foto1.jpg) no-repeat 50% fixed;
//transition: background-image 1s ease-in-out;
}
.homep-cover-img-2 {
background: #000 url(../../../public/images/foto2.jpg) no-repeat 50% fixed;
//transition: background-image 1s ease-in-out;
}
.homep-cover-img-3 {
background: #000 url(../../../public/images/foto3.jpg) no-repeat 50% fixed;
//transition: background-image 1s ease-in-out;
}
.homep-cover-img.hide-filter:before {
opacity: 0
}
.landing__footer-icons {
font-size: 1.75rem
}
.landing__footer-icons a {
margin: 0 .5rem .5rem;
text-decoration: none;
outline: 0;
color: $textcol;
transition: color .28s
}
.landing__footer-icons a:hover {
color: $textcol_scuro;
}
.doc-img {
max-width: 100%;
}
.mylist {
background: #3fdaff;
padding-left: 1.25rem;
}
.clgutter {
margin-top: 1.25rem;
padding: .62rem;
}
.carousel_img_3 {
//background-image: url(../../public/images/cibo_sano.jpg);
background-size: cover !important;
background-position: 50% center !important;
background-repeat: no-repeat !important;
}
@media (max-width: 718px) {
// PER VERSIONE MOBILE
.landing__hero {
text-align: center
}
.landing__header {
height: 7vh
}
.clgutter {
margin-top: 0;
padding: 0;
}
.landing__hero .text-h1, h1 {
font-size: 2rem;
line-height: 2.05rem;
margin-bottom: 1.25rem
}
.landing > section.padding {
padding: 2.5rem 1rem;
}
.landing > section.padding_testo {
padding-top: 1.25rem;
padding-bottom: 1rem;
}
.landing > section.padding_gallery {
padding-top: 3.125rem;
padding-bottom: 5.625rem;
max-width: 800px;
}
.landing > section.padding_gallery > div {
padding-top: 3.125rem;
padding-bottom: 5.625rem;
}
.landing__features h4, .landing__features h6 {
margin: 1.25rem 0
}
h4 {
line-height: 1.4;
text-shadow: 0.25rem 0.25rem 0.5rem $grayshadow;
}
.landing .feature-item {
text-align: center;
margin-top: 1.25rem;
}
.landing__hero-content {
padding-bottom: 11.25rem;
}
.landing__hero2-content {
padding-bottom: 7.25rem;
}
.landing__hero-btns {
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center
}
.q-col-gutter-sm {
padding: .625rem .315rem;
}
.text-subtitle1 {
font-size: 1.25rem;
}
.text-vers {
font-size: 0.6rem;
}
}
.custom-caption {
text-align: center;
padding: .75rem;
color: $textcol;
background-color: rgba(0, 0, 0, .3);
}
.sfondo-grigio {
padding: 1rem;
color: $textcol;
background-color: rgba(0, 0, 0, .35);
}
.mycontacts {
color: gray;
letter-spacing: 0.078rem;
}
.mycontacts_title {
text-shadow: 0.125rem 0.125rem 0.125rem #555;
font-weight: bold;
color: #999;
letter-spacing: 0.125rem;
}
.mycontacts_text {
color: #999;
letter-spacing: 0.093rem;
}

View File

@@ -1,78 +0,0 @@
import { defineComponent, ref, onMounted, watch, computed } from 'vue'
import { useGlobalStore } from '@store/globalStore'
import { useRoute } from 'vue-router'
import { useUserStore } from '@store/UserStore'
import { Logo } from '../../components/logo'
import { LandingFooter } from '../../components/LandingFooter'
import { CMyPage } from '../../components/CMyPage/index'
import { tools } from '@src/store/Modules/tools'
import { static_data } from '@src/db/static_data'
import { toolsext } from '@src/store/Modules/toolsext'
import { Screen } from 'quasar'
import { CCardCarousel, CEventsCalendar, COpenStreetMap } from '@components'
import MixinBase from '@src/mixins/mixin-base'
import { firstimagehome } from '@src/db/static_data'
import MixinMetaTags from '@/mixins/mixin-metatags'
export default defineComponent({
name: 'Home_tdv',
components: { Logo, LandingFooter, CMyPage, CCardCarousel, CEventsCalendar, COpenStreetMap },
setup() {
const animare = ref(0)
const slide = ref('first')
const slide2 = ref(1)
const getImmagini = ref([
{
title: '', subtitle: '',
alt: 'Elisa e Cristina insieme',
img: '../../statics/images/eventi_esterni/IMG_6035.jpg'
},
])
const userStore = useUserStore()
const globalStore = useGlobalStore()
const { setValDb, getValDb } = MixinBase()
const { setmeta, getsrcbyimg } = MixinMetaTags()
function getheightgallery() {
if (tools.isMobile())
return '400px'
else
return '600px'
}
function created() {
//
}
function getArrDisciplines() {
return globalStore.disciplines.filter((rec: any) => rec.showinhome)
}
created()
return {
tools,
toolsext,
static_data,
animare,
slide,
slide2,
getheightgallery,
getArrDisciplines,
getImmagini,
getValDb,
firstimagehome,
getsrcbyimg,
setmeta,
}
},
})

View File

@@ -1,220 +0,0 @@
<template>
<q-page>
<CMyPage title="Home">
<div class="landing">
<section>
<div class="landing__hero maxwidth1200 text-white">
<q-carousel
animated
:autoplay="animare"
swipeable
infinite
navigation
transition-next="slide-left"
transition-prev="slide-right"
v-model="slide"
:height="getheightgallery()"
width="100%"
>
<q-carousel-slide name="first"
:img-src="getsrcbyimg(firstimagehome())">
<div class="landing__header"></div>
<div class="landing__hero-content row justify-center q-gutter-xs clgutter">
<div class="row">
&nbsp;
</div>
<div class="flex justify-end">
<div class="q-gutter-xs testo-banda clgutter">
<h1 class="text-h1 shadow-max">{{tools.getappname()}}</h1>
<div class="text-subtitle1 shadow text-italic q-pl-sm">
&nbsp;
</div>
<div class="text-subtitle1 shadow-max big text-italic q-pl-sm">
</div>
<div class="text-subtitle2 shadow text-italic q-pl-sm">
</div>
<div>
<br>
<br>
<div v-if="!tools.isLogged()" style="margin: 5px; padding: 5px;" class="home">
<br>
<br>
</div>
</div>
</div>
</div>
</div>
<div class="landing__arrow absolute-bottom text-center">
<i aria-hidden="true"
class="q-icon text-h2 text-white material-icons">expand_more</i>
</div>
</q-carousel-slide>
<q-carousel-slide name="second"
:img-src="getsrcbyimg('images/background2.jpg')" alt="">
<div class="landing__header"></div>
<div class="landing__hero2-content row justify-center q-gutter-xs clgutter">
<div class="row">
<logo></logo>
</div>
<div class="flex justify-end">
<div class="q-gutter-xs testo-banda clgutter">
<h1 class="text-h1 shadow-max">{{tools.getappname()}}</h1>
<h2 class="text-subtitle1 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp')}}
</h2>
<h2 class="text-subtitle1 shadow-max big text-italic q-pl-sm">
<strong>{{$t('msg.sottoTitoloApp2')}}</strong>
</h2>
<h2 class="text-subtitle2 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp3')}}
</h2>
</div>
</div>
</div>
<div class="landing__arrow absolute-bottom text-center">
<i aria-hidden="true"
class="q-icon text-h2 text-white material-icons">expand_more</i>
</div>
</q-carousel-slide>
<q-carousel-slide name="third"
:img-src="getsrcbyimg('images/background3.jpg')">
<div class="landing__header"></div>
<div class="landing__hero2-content row justify-center q-gutter-xs clgutter">
<div class="row">
<logo></logo>
</div>
<div class="flex justify-end">
<div class="q-gutter-xs testo-banda clgutter">
<div class="text-h1 shadow-max">{{tools.getappname()}}</div>
<div class="text-subtitle1 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp')}}
</div>
<div class="text-subtitle1 shadow-max big text-italic q-pl-sm"><strong>{{$t('msg.sottoTitoloApp2')}}</strong>
</div>
<div class="text-subtitle2 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp3')}}
</div>
<div class="text-subtitle3 shadow text-italic q-pl-sm ">
{{$t('msg.sottoTitoloApp4')}}
</div>
</div>
</div>
</div>
<div class="landing__arrow absolute-bottom text-center">
<!--<i aria-hidden="true"-->
<!--class="q-icon text-h2 text-white material-icons">expand_more</i>-->
</div>
</q-carousel-slide>
</q-carousel>
</div>
</section>
<div class="q-pa-md q-gutter-md">
<div v-if="isLogged && !isVerified" class="text-verified">{{
$t('components.authentication.email_verification.link_sent') }}
</div>
</div>
<CCardCarousel :myarr="getArrDisciplines()">
</CCardCarousel>
<CEventsCalendar :mysingleevent="null" :showfirstN="getValDb('SHOW_LAST_EVENTS', false, 3)">
</CEventsCalendar>
<div v-if="getValDb('VIDEO_HOME', false)" class="row justify-evenly items-center q-gutter-md ">
<div class="text-center">
<h4 class="subtitle text-blue" v-html="getValDb('VIDEO_TITLE', false)"></h4>
<div class="">
<video :width="tools.getwidthscale(mythis, 320, 800)"
:height="tools.getheightbywidth(mythis, 320, 180, 800)" controls>
<source :src="getValDb('VIDEO_HOME', false)" type="video/mp4">
</video>
</div>
<!--<q-video src="../../statics/video/Intervista_Cristina_Barattoni.mp4">-->
<!--</q-video>-->
</div>
</div>
<div v-if="getValDb('YT_VIDEO', false)" class="row justify-evenly items-center q-gutter-md ">
<div class="text-center">
<h4 class="subtitle text-blue" v-html="getValDb('YT_TITLE', false)"></h4>
<div class="">
<div class="">
<iframe
:width="tools.getwidthscale(mythis, getValDb('YT_W', false), 800)"
:height="tools.getheightbywidth(mythis, getValDb('YT_W', false), getValDb('YT_H', false), 800)"
:src="getValDb('YT_VIDEO', false)"
frameborder="0"
allowfullscreen
></iframe>
</div>
</div>
<!--<q-video src="../../statics/video/Intervista_Cristina_Barattoni.mp4">-->
<!--</q-video>-->
</div>
</div>
<section class="maxwidth padding_gallery bg-white text-grey-10 text-center" >
<q-carousel
swipeable
animated
:autoplay="8000"
v-model="slide2"
arrows
thumbnails
infinite
:height="tools.heightgallery()">
<q-carousel-slide v-for="(rec, index) in getImmagini" :key="index" :name="index"
:img-src="rec.img"
:alt="rec.alt"
class="carousel_slide">
<div class="absolute-bottom custom-caption" style="margin-bottom: 70px">
<div class="text-h5"><span
class="text-h6 text-grey-1 shadow-max">{{index + 1}}. </span><span
class="text-h6 text-grey-2 shadow">{{rec.title}}</span></div>
<div class="text-subtitle1"><span class="text-grey-4 shadow">{{rec.subtitle}}</span>
</div>
</div>
</q-carousel-slide>
</q-carousel>
</section>
<div v-if="!tools.isMobile()" style="margin: 60px 60px;"></div>
<COpenStreetMap :imgmap="getValDb('IMGMAP', false)" :urlmap="getValDb('URLMAP', false)" :title="getValDb('MAP_TITLE', false)"
:coordinates="getValDb('COORD_MAP_1', false)" :coord_big="getValDb('COORD_MAP_BIG', false)">
</COpenStreetMap>
<div class="q-ma-md"></div>
</div>
</CMyPage>
</q-page>
</template>
<script lang="ts" src="./home_tdv.ts">
</script>
<style lang="scss" scoped>
@import './home_tdv.scss';
</style>

View File

@@ -1,452 +0,0 @@
.testo-banda {
//background: -webkit-gradient(linear, left top, left bottom, from(#3144f0), to(transparent));
//background: linear-gradient(180deg, #3144f0, transparent);
//background: rgba(0, 0, 0, .6)
}
$grayshadow: #555;
$textcol: blue;
$textcol_scuro: darkblue;
p {
margin: 0 0 1.25rem;
//text-shadow: .125rem .125rem .25rem $grayshadow;
}
h4 {
font-size: 1.25rem;
}
.mycard {
visibility: hidden;
}
.landing {
}
.landing_background {
background: #000 url(../../../public/images/foto1.jpg) no-repeat 50% fixed;
background-size: cover
}
.landing > section {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
//padding: 0 16px
}
.intro {
display: flex;
justify-content: space-between;
align-items: stretch;
/* flex-flow: row nowrap; */
padding: 1.25rem 0 1.25rem 0;
margin: .125rem;
* {
width: 100%;
flex: 1;
margin-left: auto;
margin-right: auto;
}
&__associazione {
min-width: 350px;
}
&__comeassociarsi {
min-width: 350px;
}
}
.subtitle {
font-weight: 600;
text-align: center;
letter-spacing: 0.125rem;
text-transform: uppercase;
font-size: 1rem;
}
.landing > section.padding {
padding: 5.62rem 1rem;
}
.landing > section.padding_testo {
padding-top: 1.25rem;
padding-bottom: 1rem;
}
.landing > section.padding_gallery {
padding-top: 3.125rem;
padding-bottom: 5.625rem;
}
.landing > section > div {
position: relative;
width: 100%
}
.maxwidth1200 {
max-width: 1200px;
}
.landing__toolbar {
background: -webkit-gradient(linear, left top, left bottom, from(#000), to(transparent));
background: linear-gradient(180deg, #000, transparent);
padding: 0 !important
}
.landing__toolbar .q-btn {
border-radius: 0 0 .315rem .315rem;
-ms-flex-item-align: stretch;
align-self: stretch
}
.landing__hero {
min-height: 50vh
}
.landing__header {
height: 18vh
}
.landing__arrow {
bottom: 1.5rem;
opacity: .4
}
.landing__front {
background: -webkit-gradient(linear, left top, left bottom, from(transparent), color-stop(15%, rgba(0, 0, 0, .6)));
background: linear-gradient(180deg, transparent, rgba(0, 0, 0, .6) 15%)
}
.landing__logo {
width: 9.40rem;
height: 9.40rem;
margin-top: 1.315rem;
//-webkit-animation: logo-rotate 240s linear infinite;
//animation: logo-rotate 240s linear infinite
}
.landing__features .q-icon {
font-size: 4rem
}
h4 {
line-height: 1.5;
text-shadow: .25rem .25rem .5rem $grayshadow;
}
.landing__features h4, .landing__features h6 {
margin: 1rem 0
}
.landing__features p {
opacity: .7;
font-size: 1rem;
line-height: 1.5;
}
.landing__footer {
//background: -webkit-gradient(linear, left top, left bottom, color-stop(65%, rgba(0, 0, 0, .1)), to(#000));
background: linear-gradient(180deg, rgba(0, 0, 0, .8) 95%, #FFF);
padding-top: 4.5rem !important;
padding-bottom: 4.5rem !important;
padding-left: 1.25rem;
padding-right: 1.25rem;
color: #9f9f9f;
}
.icon_contact:hover {
color: blue;
border-color: white;
border-width: .0625rem;
}
.landing__footer .doc-link {
color: $textcol;
}
.landing__footer .doc-link:hover {
opacity: .8
}
.landing__swirl-bg {
background-repeat: no-repeat !important;
background-position: top;
background-size: contain !important;
background-image: url(../../../public/images/landing_first_section.png) !important
}
.feat-descr {
font-size: 1.15rem;
}
.feat-descr:hover {
transition: opacity 0.5s ease-in-out;
opacity: 0.9;
}
.q-col-gutter-sm {
padding: 3.125rem 3.125rem;
//margin-left: -48px
}
body.mobile .landing {
//background: unset
}
body.mobile .landing:before {
content: "";
position: fixed;
top: 0;
height: 100vh;
left: 0;
right: 0;
bottom: 0;
z-index: -1;
//background: #000 url(../../public/images/cover.jpg) 50%;
background-size: cover
}
/*
@-webkit-keyframes logo-rotate {
to {
-webkit-transform: rotate(-1turn);
transform: rotate(-1turn)
}
}
@keyframes logo-rotate {
to {
-webkit-transform: rotate(-1turn);
transform: rotate(-1turn)
}
}
*/
.home {
//background-color: rgb(250, 250, 250);
padding: 3.125rem;
display: flex;
//flex-wrap: nowrap;
flex-direction: column;
align-items: center;
justify-content: space-between;
}
.btn-start {
margin: 3.125rem;
}
.shadow {
//color: white;
text-shadow: 0.125rem 0.125rem 0.25rem $grayshadow;
}
.text-h1, h1 {
font-size: 3rem;
font-weight: bold;
line-height: 3rem;
letter-spacing: -.01562em;
margin-bottom: 8px !important;
}
.text-h2 {
font-size: 3.75rem;
font-weight: 300;
line-height: 3.75rem;
letter-spacing: -.00833em;
}
.text-weight-bold {
font-weight: 700;
}
.text-vers {
font-size: 0.75rem;
font-weight: 400;
line-height: 1.75rem;
letter-spacing: .00937em;
text-shadow: .25rem .25rem .5rem $grayshadow;
}
.homep-cover-img-1 {
background: #000 url(../../../public/images/foto1.jpg) no-repeat 50% fixed;
//transition: background-image 1s ease-in-out;
}
.homep-cover-img-2 {
background: #000 url(../../../public/images/foto2.jpg) no-repeat 50% fixed;
//transition: background-image 1s ease-in-out;
}
.homep-cover-img-3 {
background: #000 url(../../../public/images/foto3.jpg) no-repeat 50% fixed;
//transition: background-image 1s ease-in-out;
}
.homep-cover-img.hide-filter:before {
opacity: 0
}
.landing__footer-icons {
font-size: 1.75rem
}
.landing__footer-icons a {
margin: 0 .5rem .5rem;
text-decoration: none;
outline: 0;
color: $textcol;
transition: color .28s
}
.landing__footer-icons a:hover {
color: $textcol_scuro;
}
.doc-img {
max-width: 100%;
}
.mylist {
background: #3fdaff;
padding-left: 1.25rem;
}
.clgutter {
margin-top: 1.25rem;
padding: .62rem;
}
.carousel_img_3 {
//background-image: url(../../public/images/cibo_sano.jpg);
background-size: cover !important;
background-position: 50% center !important;
background-repeat: no-repeat !important;
}
@media (max-width: 718px) {
// PER VERSIONE MOBILE
.landing__hero {
text-align: center
}
.landing__header {
height: 7vh
}
.clgutter {
margin-top: 0;
padding: 0;
}
.landing__hero .text-h1, h1 {
font-size: 2rem;
line-height: 2.05rem;
margin-bottom: 1.25rem
}
.landing > section.padding {
padding: 2.5rem 1rem;
}
.landing > section.padding_testo {
padding-top: 1.25rem;
padding-bottom: 1rem;
}
.landing > section.padding_gallery {
padding-top: 3.125rem;
padding-bottom: 5.625rem;
max-width: 800px;
}
.landing > section.padding_gallery > div {
padding-top: 3.125rem;
padding-bottom: 5.625rem;
}
.landing__features h4, .landing__features h6 {
margin: 1.25rem 0
}
h4 {
line-height: 1.4;
text-shadow: 0.25rem 0.25rem 0.5rem $grayshadow;
}
.landing .feature-item {
text-align: center;
margin-top: 1.25rem;
}
.landing__hero-content {
padding-bottom: 11.25rem;
}
.landing__hero2-content {
padding-bottom: 7.25rem;
}
.landing__hero-btns {
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center
}
.q-col-gutter-sm {
padding: .625rem .315rem;
}
.text-subtitle1 {
font-size: 1.25rem;
}
.text-vers {
font-size: 0.6rem;
}
.carousel_img_3 {
//background-image: url(../../public/images/cibo_sano.jpg);
background-size: 620px 620px !important;
background-position: 50% top !important;
background-repeat: no-repeat !important;
}
}
.custom-caption {
text-align: center;
padding: .75rem;
color: $textcol;
background-color: rgba(0, 0, 0, .3);
}
.sfondo-grigio {
padding: 1rem;
color: $textcol;
background-color: rgba(0, 0, 0, .35);
}
.mycontacts {
color: gray;
letter-spacing: 0.078rem;
}
.mycontacts_title {
text-shadow: 0.125rem 0.125rem 0.125rem #555;
font-weight: bold;
color: #999;
letter-spacing: 0.125rem;
}
.mycontacts_text {
color: #999;
letter-spacing: 0.093rem;
}

View File

@@ -1,78 +0,0 @@
import { defineComponent, ref, onMounted, watch, computed } from 'vue'
import { useGlobalStore } from '@store/globalStore'
import { useRoute } from 'vue-router'
import { useUserStore } from '@store/UserStore'
import { Logo } from '../../components/logo'
import { LandingFooter } from '../../components/LandingFooter'
import { CMyPage } from '../../components/CMyPage/index'
import { tools } from '@src/store/Modules/tools'
import { static_data } from '@src/db/static_data'
import { toolsext } from '@src/store/Modules/toolsext'
import { Screen } from 'quasar'
import { CCardCarousel, CEventsCalendar, COpenStreetMap } from '@components'
import MixinBase from '@src/mixins/mixin-base'
import { firstimagehome } from '@src/db/static_data'
import MixinMetaTags from '@/mixins/mixin-metatags'
export default defineComponent({
name: 'home_arcadei',
components: { Logo, LandingFooter, CMyPage, CCardCarousel, CEventsCalendar, COpenStreetMap },
setup() {
const animare = ref(0)
const slide = ref('first')
const slide2 = ref(1)
const getImmagini = ref([
{
title: '', subtitle: '',
alt: 'Arcadei',
img: 'images/arcadei/img1.png'
},
])
const userStore = useUserStore()
const globalStore = useGlobalStore()
const { setValDb, getValDb } = MixinBase()
const { setmeta, getsrcbyimg } = MixinMetaTags()
function getheightgallery() {
if (tools.isMobile())
return '400px'
else
return '600px'
}
function created() {
//
}
function getArrDisciplines() {
return globalStore.disciplines.filter((rec: any) => rec.showinhome)
}
created()
return {
tools,
toolsext,
static_data,
animare,
slide,
slide2,
getheightgallery,
getArrDisciplines,
getImmagini,
getValDb,
firstimagehome,
getsrcbyimg,
setmeta,
}
},
})

View File

@@ -1,221 +0,0 @@
<template>
<q-page>
<CMyPage title="Home">
<div class="landing">
<section>
<div class="landing__hero maxwidth1200 text-white">
<q-carousel
animated
:autoplay="animare"
swipeable
infinite
navigation
transition-next="slide-left"
transition-prev="slide-right"
v-model="slide"
:height="getheightgallery()"
width="100%"
>
<q-carousel-slide name="first"
:img-src="getsrcbyimg(firstimagehome())">
<div class="landing__header"></div>
<div class="landing__hero-content row justify-center q-gutter-xs clgutter">
<div class="row">
&nbsp;
</div>
<div class="flex justify-end">
<div class="q-gutter-xs testo-banda clgutter">
<h1 class="text-h1 shadow-max">{{tools.getappname()}}</h1>
<div class="text-subtitle1 shadow text-italic q-pl-sm">
&nbsp;
</div>
<div class="text-subtitle1 shadow-max big text-italic q-pl-sm">
</div>
<div class="text-subtitle2 shadow text-italic q-pl-sm">
</div>
<div>
<br>
<br>
<div v-if="!tools.isLogged()" style="margin: 5px; padding: 5px;" class="home">
<br>
<br>
</div>
</div>
</div>
</div>
</div>
<div class="landing__arrow absolute-bottom text-center">
<i aria-hidden="true"
class="q-icon text-h2 text-white material-icons">expand_more</i>
</div>
</q-carousel-slide>
<q-carousel-slide name="second"
:img-src="getsrcbyimg('images/background2.jpg')" alt="">
<div class="landing__header"></div>
<div class="landing__hero2-content row justify-center q-gutter-xs clgutter">
<div class="row">
<logo></logo>
</div>
<div class="flex justify-end">
<div class="q-gutter-xs testo-banda clgutter">
<h1 class="text-h1 shadow-max">{{tools.getappname()}}</h1>
<h2 class="text-subtitle1 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp')}}
</h2>
<h2 class="text-subtitle1 shadow-max big text-italic q-pl-sm">
<strong>{{$t('msg.sottoTitoloApp2')}}</strong>
</h2>
<h2 class="text-subtitle2 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp3')}}
</h2>
</div>
</div>
</div>
<div class="landing__arrow absolute-bottom text-center">
<i aria-hidden="true"
class="q-icon text-h2 text-white material-icons">expand_more</i>
</div>
</q-carousel-slide>
<q-carousel-slide name="third"
:img-src="getsrcbyimg('images/background3.jpg')">
<div class="landing__header"></div>
<div class="landing__hero2-content row justify-center q-gutter-xs clgutter">
<div class="row">
<logo></logo>
</div>
<div class="flex justify-end">
<div class="q-gutter-xs testo-banda clgutter">
<div class="text-h1 shadow-max">{{tools.getappname()}}</div>
<div class="text-subtitle1 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp')}}
</div>
<div class="text-subtitle1 shadow-max big text-italic q-pl-sm"><strong>{{$t('msg.sottoTitoloApp2')}}</strong>
</div>
<div class="text-subtitle2 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp3')}}
</div>
<div class="text-subtitle3 shadow text-italic q-pl-sm ">
{{$t('msg.sottoTitoloApp4')}}
</div>
</div>
</div>
</div>
<div class="landing__arrow absolute-bottom text-center">
<!--<i aria-hidden="true"-->
<!--class="q-icon text-h2 text-white material-icons">expand_more</i>-->
</div>
</q-carousel-slide>
</q-carousel>
</div>
</section>
<div class="q-pa-md q-gutter-md">
<div v-if="isLogged && !isVerified" class="text-verified">{{
$t('components.authentication.email_verification.link_sent') }}
</div>
</div>
<CCardCarousel :myarr="getArrDisciplines()">
</CCardCarousel>
<CEventsCalendar :mysingleevent="null" :showfirstN="getValDb('SHOW_LAST_EVENTS', false, 3)">
</CEventsCalendar>
<div v-if="getValDb('VIDEO_HOME', false)" class="row justify-evenly items-center q-gutter-md ">
<div class="text-center">
<h4 class="subtitle text-blue" v-html="getValDb('VIDEO_TITLE', false)"></h4>
<div class="">
<video :width="tools.getwidthscale(mythis, 320, 800)"
:height="tools.getheightbywidth(mythis, 320, 180, 800)" controls>
<source :src="getValDb('VIDEO_HOME', false)" type="video/mp4">
</video>
</div>
<!--<q-video src="../../statics/video/Intervista_Cristina_Barattoni.mp4">-->
<!--</q-video>-->
</div>
</div>
<div v-if="getValDb('YT_VIDEO', false)" class="row justify-evenly items-center q-gutter-md ">
<div class="text-center">
<h4 class="subtitle text-blue" v-html="getValDb('YT_TITLE', false)"></h4>
<div class="">
<div class="">
<iframe
:width="tools.getwidthscale(mythis, getValDb('YT_W', false), 800)"
:height="tools.getheightbywidth(mythis, getValDb('YT_W', false), getValDb('YT_H', false), 800)"
:src="getValDb('YT_VIDEO', false)"
frameborder="0"
allowfullscreen
></iframe>
</div>
</div>
<!--<q-video src="../../statics/video/Intervista_Cristina_Barattoni.mp4">-->
<!--</q-video>-->
</div>
</div>
<section :class="`maxwidth padding_gallery `+ ($q.dark.isActive ? `bg-black` : `bg-white`) + ` text-grey-10 text-center`" >
<q-carousel
swipeable
animated
:autoplay="8000"
v-model="slide2"
arrows
thumbnails
infinite
height="600">
<q-carousel-slide v-for="(rec, index) in getImmagini" :key="index" :name="index"
:img-src="rec.img"
:alt="rec.alt"
class="carousel_slide">
<div class="absolute-bottom custom-caption" style="margin-bottom: 70px">
<div class="text-h5"><span
class="text-h6 text-grey-1 shadow-max">{{index + 1}}. </span><span
class="text-h6 text-grey-2 shadow">{{rec.title}}</span></div>
<div class="text-subtitle1"><span class="text-grey-4 shadow">{{rec.subtitle}}</span>
</div>
</div>
</q-carousel-slide>
</q-carousel>
</section>
<div v-if="!tools.isMobile()" style="margin: 60px 60px;"></div>
<COpenStreetMap :imgmap="getValDb('IMGMAP', false)" :urlmap="getValDb('URLMAP', false)" :title="getValDb('MAP_TITLE', false)"
:coordinates="getValDb('COORD_MAP_1', false)" :coord_big="getValDb('COORD_MAP_BIG', false)">
</COpenStreetMap>
<div class="q-ma-md"></div>
</div>
</CMyPage>
</q-page>
</template>
<script lang="ts" src="./home_arcadei.ts">
</script>
<style lang="scss" scoped>
@import './home_arcadei.scss';
</style>

View File

@@ -1,446 +0,0 @@
.testo-banda {
//background: -webkit-gradient(linear, left top, left bottom, from(#3144f0), to(transparent));
//background: linear-gradient(180deg, #3144f0, transparent);
//background: rgba(0, 0, 0, .6)
}
$grayshadow: #555;
$textcol: blue;
$textcol_scuro: darkblue;
p {
margin: 0 0 1.25rem;
//text-shadow: .125rem .125rem .25rem $grayshadow;
}
h4 {
font-size: 1.25rem;
}
.mycard {
visibility: hidden;
}
.landing {
}
.landing_background {
background: #000 url(../../../public/images/foto1.jpg) no-repeat 50% fixed;
background-size: cover
}
.landing > section {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
//padding: 0 16px
}
.intro {
display: flex;
justify-content: space-between;
align-items: stretch;
/* flex-flow: row nowrap; */
padding: 1.25rem 0 1.25rem 0;
margin: .125rem;
* {
width: 100%;
flex: 1;
margin-left: auto;
margin-right: auto;
}
&__associazione {
min-width: 350px;
}
&__comeassociarsi {
min-width: 350px;
}
}
.subtitle {
font-weight: 600;
text-align: center;
letter-spacing: 0.125rem;
text-transform: uppercase;
font-size: 1rem;
}
.landing > section.padding {
padding: 5.62rem 1rem;
}
.landing > section.padding_testo {
padding-top: 1.25rem;
padding-bottom: 1rem;
}
.landing > section.padding_gallery {
padding-top: 3.125rem;
padding-bottom: 5.625rem;
}
.landing > section > div {
position: relative;
width: 100%
}
.maxwidth1200 {
max-width: 1200px;
}
.landing__toolbar {
background: -webkit-gradient(linear, left top, left bottom, from(#000), to(transparent));
background: linear-gradient(180deg, #000, transparent);
padding: 0 !important
}
.landing__toolbar .q-btn {
border-radius: 0 0 .315rem .315rem;
-ms-flex-item-align: stretch;
align-self: stretch
}
.landing__hero {
min-height: 50vh
}
.landing__header {
height: 18vh
}
.landing__arrow {
bottom: 1.5rem;
opacity: .4
}
.landing__front {
background: -webkit-gradient(linear, left top, left bottom, from(transparent), color-stop(15%, rgba(0, 0, 0, .6)));
background: linear-gradient(180deg, transparent, rgba(0, 0, 0, .6) 15%)
}
.landing__logo {
width: 9.40rem;
height: 9.40rem;
margin-top: 1.315rem;
//-webkit-animation: logo-rotate 240s linear infinite;
//animation: logo-rotate 240s linear infinite
}
.landing__features .q-icon {
font-size: 4rem
}
h4 {
line-height: 1.5;
text-shadow: .25rem .25rem .5rem $grayshadow;
}
.landing__features h4, .landing__features h6 {
margin: 1rem 0
}
.landing__features p {
opacity: .7;
font-size: 1rem;
line-height: 1.5;
}
.landing__footer {
//background: -webkit-gradient(linear, left top, left bottom, color-stop(65%, rgba(0, 0, 0, .1)), to(#000));
background: linear-gradient(180deg, rgba(0, 0, 0, .8) 95%, #FFF);
padding-top: 4.5rem !important;
padding-bottom: 4.5rem !important;
padding-left: 1.25rem;
padding-right: 1.25rem;
color: #9f9f9f;
}
.icon_contact:hover {
color: blue;
border-color: white;
border-width: .0625rem;
}
.landing__footer .doc-link {
color: $textcol;
}
.landing__footer .doc-link:hover {
opacity: .8
}
.landing__swirl-bg {
background-repeat: no-repeat !important;
background-position: top;
background-size: contain !important;
background-image: url(../../../public/images/landing_first_section.png) !important
}
.feat-descr {
font-size: 1.15rem;
}
.feat-descr:hover {
transition: opacity 0.5s ease-in-out;
opacity: 0.9;
}
.q-col-gutter-sm {
padding: 3.125rem 3.125rem;
//margin-left: -48px
}
body.mobile .landing {
//background: unset
}
body.mobile .landing:before {
content: "";
position: fixed;
top: 0;
height: 100vh;
left: 0;
right: 0;
bottom: 0;
z-index: -1;
//background: #000 url(../../public/images/cover.jpg) 50%;
background-size: cover
}
/*
@-webkit-keyframes logo-rotate {
to {
-webkit-transform: rotate(-1turn);
transform: rotate(-1turn)
}
}
@keyframes logo-rotate {
to {
-webkit-transform: rotate(-1turn);
transform: rotate(-1turn)
}
}
*/
.home {
//background-color: rgb(250, 250, 250);
padding: 3.125rem;
display: flex;
//flex-wrap: nowrap;
flex-direction: column;
align-items: center;
justify-content: space-between;
}
.btn-start {
margin: 3.125rem;
}
.shadow {
//color: white;
text-shadow: 0.125rem 0.125rem 0.25rem $grayshadow;
}
.text-h1, h1 {
font-size: 3rem;
font-weight: bold;
line-height: 3rem;
letter-spacing: -.01562em;
margin-bottom: 8px !important;
}
.text-h2 {
font-size: 3.75rem;
font-weight: 300;
line-height: 3.75rem;
letter-spacing: -.00833em;
}
.text-weight-bold {
font-weight: 700;
}
.text-vers {
font-size: 0.75rem;
font-weight: 400;
line-height: 1.75rem;
letter-spacing: .00937em;
text-shadow: .25rem .25rem .5rem $grayshadow;
}
.homep-cover-img-1 {
background: #000 url(../../../public/images/foto1.jpg) no-repeat 50% fixed;
//transition: background-image 1s ease-in-out;
}
.homep-cover-img-2 {
background: #000 url(../../../public/images/foto2.jpg) no-repeat 50% fixed;
//transition: background-image 1s ease-in-out;
}
.homep-cover-img-3 {
background: #000 url(../../../public/images/foto3.jpg) no-repeat 50% fixed;
//transition: background-image 1s ease-in-out;
}
.homep-cover-img.hide-filter:before {
opacity: 0
}
.landing__footer-icons {
font-size: 1.75rem
}
.landing__footer-icons a {
margin: 0 .5rem .5rem;
text-decoration: none;
outline: 0;
color: $textcol;
transition: color .28s
}
.landing__footer-icons a:hover {
color: $textcol_scuro;
}
.doc-img {
max-width: 100%;
}
.mylist {
background: #3fdaff;
padding-left: 1.25rem;
}
.clgutter {
margin-top: 1.25rem;
padding: .62rem;
}
.carousel_img_3 {
//background-image: url(../../public/images/cibo_sano.jpg);
background-size: cover !important;
background-position: 50% center !important;
background-repeat: no-repeat !important;
}
@media (max-width: 718px) {
// PER VERSIONE MOBILE
.landing__hero {
text-align: center
}
.landing__header {
height: 7vh
}
.clgutter {
margin-top: 0;
padding: 0;
}
.landing__hero .text-h1, h1 {
font-size: 2rem;
line-height: 2.05rem;
margin-bottom: 1.25rem
}
.landing > section.padding {
padding: 2.5rem 1rem;
}
.landing > section.padding_testo {
padding-top: 1.25rem;
padding-bottom: 1rem;
}
.landing > section.padding_gallery {
padding-top: 3.125rem;
padding-bottom: 5.625rem;
max-width: 800px;
}
.landing > section.padding_gallery > div {
padding-top: 3.125rem;
padding-bottom: 5.625rem;
}
.landing__features h4, .landing__features h6 {
margin: 1.25rem 0
}
h4 {
line-height: 1.4;
text-shadow: 0.25rem 0.25rem 0.5rem $grayshadow;
}
.landing .feature-item {
text-align: center;
margin-top: 1.25rem;
}
.landing__hero-content {
padding-bottom: 11.25rem;
}
.landing__hero2-content {
padding-bottom: 7.25rem;
}
.landing__hero-btns {
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center
}
.q-col-gutter-sm {
padding: .625rem .315rem;
}
.text-subtitle1 {
font-size: 1.25rem;
}
.text-vers {
font-size: 0.6rem;
}
}
.custom-caption {
text-align: center;
padding: .75rem;
color: $textcol;
background-color: rgba(0, 0, 0, .3);
}
.sfondo-grigio {
padding: 1rem;
color: $textcol;
background-color: rgba(0, 0, 0, .35);
}
.mycontacts {
color: gray;
letter-spacing: 0.078rem;
}
.mycontacts_title {
text-shadow: 0.125rem 0.125rem 0.125rem #555;
font-weight: bold;
color: #999;
letter-spacing: 0.125rem;
}
.mycontacts_text {
color: #999;
letter-spacing: 0.093rem;
}

View File

@@ -1,78 +0,0 @@
import { defineComponent, ref, onMounted, watch, computed } from 'vue'
import { useGlobalStore } from '@store/globalStore'
import { useRoute } from 'vue-router'
import { useUserStore } from '@store/UserStore'
import { Logo } from '../../components/logo'
import { LandingFooter } from '../../components/LandingFooter'
import { CMyPage } from '../../components/CMyPage/index'
import { tools } from '@src/store/Modules/tools'
import { static_data } from '@src/db/static_data'
import { toolsext } from '@src/store/Modules/toolsext'
import { Screen } from 'quasar'
import { CCardCarousel, CEventsCalendar, COpenStreetMap } from '@components'
import MixinBase from '@src/mixins/mixin-base'
import { firstimagehome } from '@src/db/static_data'
import MixinMetaTags from '@/mixins/mixin-metatags'
export default defineComponent({
name: 'Home_tdv',
components: { Logo, LandingFooter, CMyPage, CCardCarousel, CEventsCalendar, COpenStreetMap },
setup() {
const animare = ref(0)
const slide = ref('first')
const slide2 = ref(1)
const getImmagini = ref([
{
title: '', subtitle: '',
alt: 'Elisa e Cristina insieme',
img: '../../statics/images/eventi_esterni/IMG_6035.jpg'
},
])
const userStore = useUserStore()
const globalStore = useGlobalStore()
const { setValDb, getValDb } = MixinBase()
const { setmeta, getsrcbyimg } = MixinMetaTags()
function getheightgallery() {
if (tools.isMobile())
return '400px'
else
return '600px'
}
function created() {
//
}
function getArrDisciplines() {
return globalStore.disciplines.filter((rec: any) => rec.showinhome)
}
created()
return {
tools,
toolsext,
static_data,
animare,
slide,
slide2,
getheightgallery,
getArrDisciplines,
getImmagini,
getValDb,
firstimagehome,
getsrcbyimg,
setmeta,
}
},
})

View File

@@ -1,220 +0,0 @@
<template>
<q-page>
<CMyPage title="Home">
<div class="landing">
<section>
<div class="landing__hero maxwidth1200 text-white">
<q-carousel
animated
:autoplay="animare"
swipeable
infinite
navigation
transition-next="slide-left"
transition-prev="slide-right"
v-model="slide"
:height="getheightgallery()"
width="100%"
>
<q-carousel-slide name="first"
:img-src="getsrcbyimg(firstimagehome())">
<div class="landing__header"></div>
<div class="landing__hero-content row justify-center q-gutter-xs clgutter">
<div class="row">
&nbsp;
</div>
<div class="flex justify-end">
<div class="q-gutter-xs testo-banda clgutter">
<h1 class="text-h1 shadow-max">{{tools.getappname()}}</h1>
<div class="text-subtitle1 shadow text-italic q-pl-sm">
&nbsp;
</div>
<div class="text-subtitle1 shadow-max big text-italic q-pl-sm">
</div>
<div class="text-subtitle2 shadow text-italic q-pl-sm">
</div>
<div>
<br>
<br>
<div v-if="!tools.isLogged()" style="margin: 5px; padding: 5px;" class="home">
<br>
<br>
</div>
</div>
</div>
</div>
</div>
<div class="landing__arrow absolute-bottom text-center">
<i aria-hidden="true"
class="q-icon text-h2 text-white material-icons">expand_more</i>
</div>
</q-carousel-slide>
<q-carousel-slide name="second"
:img-src="getsrcbyimg('images/background2.jpg')" alt="">
<div class="landing__header"></div>
<div class="landing__hero2-content row justify-center q-gutter-xs clgutter">
<div class="row">
<logo></logo>
</div>
<div class="flex justify-end">
<div class="q-gutter-xs testo-banda clgutter">
<h1 class="text-h1 shadow-max">{{tools.getappname()}}</h1>
<h2 class="text-subtitle1 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp')}}
</h2>
<h2 class="text-subtitle1 shadow-max big text-italic q-pl-sm">
<strong>{{$t('msg.sottoTitoloApp2')}}</strong>
</h2>
<h2 class="text-subtitle2 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp3')}}
</h2>
</div>
</div>
</div>
<div class="landing__arrow absolute-bottom text-center">
<i aria-hidden="true"
class="q-icon text-h2 text-white material-icons">expand_more</i>
</div>
</q-carousel-slide>
<q-carousel-slide name="third"
:img-src="getsrcbyimg('images/background3.jpg')">
<div class="landing__header"></div>
<div class="landing__hero2-content row justify-center q-gutter-xs clgutter">
<div class="row">
<logo></logo>
</div>
<div class="flex justify-end">
<div class="q-gutter-xs testo-banda clgutter">
<div class="text-h1 shadow-max">{{tools.getappname()}}</div>
<div class="text-subtitle1 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp')}}
</div>
<div class="text-subtitle1 shadow-max big text-italic q-pl-sm"><strong>{{$t('msg.sottoTitoloApp2')}}</strong>
</div>
<div class="text-subtitle2 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp3')}}
</div>
<div class="text-subtitle3 shadow text-italic q-pl-sm ">
{{$t('msg.sottoTitoloApp4')}}
</div>
</div>
</div>
</div>
<div class="landing__arrow absolute-bottom text-center">
<!--<i aria-hidden="true"-->
<!--class="q-icon text-h2 text-white material-icons">expand_more</i>-->
</div>
</q-carousel-slide>
</q-carousel>
</div>
</section>
<div class="q-pa-md q-gutter-md">
<div v-if="isLogged && !isVerified" class="text-verified">{{
$t('components.authentication.email_verification.link_sent') }}
</div>
</div>
<CCardCarousel :myarr="getArrDisciplines()">
</CCardCarousel>
<CEventsCalendar :mysingleevent="null" :showfirstN="getValDb('SHOW_LAST_EVENTS', false, 3)">
</CEventsCalendar>
<div v-if="getValDb('VIDEO_HOME', false)" class="row justify-evenly items-center q-gutter-md ">
<div class="text-center">
<h4 class="subtitle text-blue" v-html="getValDb('VIDEO_TITLE', false)"></h4>
<div class="">
<video :width="tools.getwidthscale(mythis, 320, 800)"
:height="tools.getheightbywidth(mythis, 320, 180, 800)" controls>
<source :src="getValDb('VIDEO_HOME', false)" type="video/mp4">
</video>
</div>
<!--<q-video src="../../statics/video/Intervista_Cristina_Barattoni.mp4">-->
<!--</q-video>-->
</div>
</div>
<div v-if="getValDb('YT_VIDEO', false)" class="row justify-evenly items-center q-gutter-md ">
<div class="text-center">
<h4 class="subtitle text-blue" v-html="getValDb('YT_TITLE', false)"></h4>
<div class="">
<div class="">
<iframe
:width="tools.getwidthscale(mythis, getValDb('YT_W', false), 800)"
:height="tools.getheightbywidth(mythis, getValDb('YT_W', false), getValDb('YT_H', false), 800)"
:src="getValDb('YT_VIDEO', false)"
frameborder="0"
allowfullscreen
></iframe>
</div>
</div>
<!--<q-video src="../../statics/video/Intervista_Cristina_Barattoni.mp4">-->
<!--</q-video>-->
</div>
</div>
<section class="maxwidth padding_gallery bg-white text-grey-10 text-center" >
<q-carousel
swipeable
animated
:autoplay="8000"
v-model="slide2"
arrows
thumbnails
infinite
:height="tools.heightgallery()">
<q-carousel-slide v-for="(rec, index) in getImmagini" :key="index" :name="index"
:img-src="rec.img"
:alt="rec.alt"
class="carousel_slide">
<div class="absolute-bottom custom-caption" style="margin-bottom: 70px">
<div class="text-h5"><span
class="text-h6 text-grey-1 shadow-max">{{index + 1}}. </span><span
class="text-h6 text-grey-2 shadow">{{rec.title}}</span></div>
<div class="text-subtitle1"><span class="text-grey-4 shadow">{{rec.subtitle}}</span>
</div>
</div>
</q-carousel-slide>
</q-carousel>
</section>
<div v-if="!tools.isMobile()" style="margin: 60px 60px;"></div>
<COpenStreetMap :imgmap="getValDb('IMGMAP', false)" :urlmap="getValDb('URLMAP', false)" :title="getValDb('MAP_TITLE', false)"
:coordinates="getValDb('COORD_MAP_1', false)" :coord_big="getValDb('COORD_MAP_BIG', false)">
</COpenStreetMap>
<div class="q-ma-md"></div>
</div>
</CMyPage>
</q-page>
</template>
<script lang="ts" src="./home_tdv.ts">
</script>
<style lang="scss" scoped>
@import './home_tdv.scss';
</style>

View File

@@ -138,6 +138,7 @@ export const shared_consts = {
CHECKAPPRUNNING: 135, CHECKAPPRUNNING: 135,
DASHBOARD: 140, DASHBOARD: 140,
DASHGROUP: 145, DASHGROUP: 145,
MOVEMENTS: 148,
CSENDRISTO: 150, CSENDRISTO: 150,
STATUSREG: 160, STATUSREG: 160,
CHECKIFISLOGGED: 170, CHECKIFISLOGGED: 170,
@@ -1654,6 +1655,10 @@ export const shared_consts = {
value: 145, value: 145,
label: 'DashGroup', label: 'DashGroup',
}, },
{
value: 148,
label: 'Lista Movimenti',
},
{ {
value: 150, value: 150,
label: 'SendCoinTo', label: 'SendCoinTo',
@@ -1799,10 +1804,12 @@ export const shared_consts = {
value: 7, value: 7,
label: 'Scheda (IMG + Testo)', label: 'Scheda (IMG + Testo)',
}, },
/*
Disattivato perchè attualmente non funziona bene
{ {
value: 9, value: 9,
label: 'Poster (IMG + Testo)', label: 'Poster (IMG + Testo)',
}, },*/
{ {
value: 195, value: 195,
label: 'Bottone', label: 'Bottone',
@@ -2241,5 +2248,11 @@ export const shared_consts = {
], ],
AccountType: {
USER: 0,
COLLECTIVE_ACCOUNT: 1,
COMMUNITY_ACCOUNT: 2,
},
} }

View File

@@ -3,6 +3,7 @@
max-width: 200px; max-width: 200px;
min-width: 120px; min-width: 120px;
padding: 1rem 1rem; padding: 1rem 1rem;
@media (max-width: 718px) { @media (max-width: 718px) {
// PER VERSIONE MOBILE // PER VERSIONE MOBILE
max-width: 150px; max-width: 150px;
@@ -16,6 +17,7 @@
width: 100%; width: 100%;
max-width: 60px; max-width: 60px;
min-width: 40px; min-width: 40px;
@media (max-width: 718px) { @media (max-width: 718px) {
// PER VERSIONE MOBILE // PER VERSIONE MOBILE
max-width: 50px; max-width: 50px;
@@ -28,7 +30,24 @@
.text-h5-short { .text-h5-short {
line-height: 1.25rem !important; line-height: 1.25rem !important;
@media (max-width: 718px) { @media (max-width: 718px) {
line-height: 1rem !important; line-height: 1rem !important;
} }
} }
.fixed-size {
width: 160px;
/* Larghezza fissa */
height: 150px;
/* Altezza fissa */
display: flex;
/* Assicura che il contenuto sia centralizzato */
flex-direction: column;
/* Impila gli elementi verticalmente */
justify-content: center;
/* Centra verticalmente */
align-items: center;
/* Centra orizzontalmente */
margin: 4px;
}

View File

@@ -12,6 +12,7 @@ export default defineComponent({
classColor: String, classColor: String,
colBack: String, colBack: String,
mystyle: String, mystyle: String,
myclass: String,
}, },
components: {}, components: {},
setup(props) { setup(props) {

View File

@@ -1,5 +1,5 @@
<template> <template>
<q-card :class="` text-center`" :style="mystyle"> <q-card :class="myclass" :style="mystyle" class="fixed-size">
<div <div
:class="`column q-pa-sm text-center align-center ` + classColor" :class="`column q-pa-sm text-center align-center ` + classColor"
style="align-items: center" style="align-items: center"
@@ -9,21 +9,18 @@
</div> </div>
<q-icon :name="icon" size="xl" :class="classColor + ` elem `" /> <q-icon :name="icon" size="xl" :class="classColor + ` elem `" />
<div> <div>
<div> <div></div>
</div>
</div> </div>
<div <div class="elem full-width elem-value text-h5 boldhigh">
class="elem full-width elem-value text-h5 boldhigh"
>
{{ mytextval }} {{ mytextval }}
<q-badge <q-badge
v-if="value_today > 0" v-if="value_today > 0"
align="top" align="top"
:label="`+` + value_today + ` oggi`" :label="`+` + value_today + ` oggi`"
:color="colBack" :color="colBack"
> >
</q-badge> </q-badge>
</div> </div>
</div> </div>
</q-card> </q-card>

View File

@@ -52,6 +52,7 @@ export default defineComponent({
costanti, costanti,
slide, slide,
autoplay, autoplay,
t,
} }
} }
}) })

View File

@@ -29,7 +29,7 @@
:src="directory + '/' + selectedImage.imagefile" :src="directory + '/' + selectedImage.imagefile"
:alt="selectedImage.imagefile" :alt="selectedImage.imagefile"
/> />
<q-btn color="primary" label="Close" @click="closeDialog" /> <q-btn color="primary" :label="t('dialog.close')" @click="closeDialog" />
</q-dialog> </q-dialog>
</template> </template>

View File

@@ -366,7 +366,7 @@ export default defineComponent({
const editOn = computed({ const editOn = computed({
get: () => globalStore.editOn, get: () => globalStore.editOn,
set: val => { set: val => {
globalStore.editOn = val tools.updateEditOn(val)
}, },
}) })
@@ -923,7 +923,7 @@ export default defineComponent({
objitem[item.key] = item.value objitem[item.key] = item.value
filtersearch.push(objitem) filtersearch.push(objitem)
} else if (item.arrvalue.length > 0) { } else if (item.arrvalue && item.arrvalue.length > 0) {
const myarr = item.arrvalue.filter((value: any) => { const myarr = item.arrvalue.filter((value: any) => {
if (typeof value === 'number') { if (typeof value === 'number') {
@@ -1617,16 +1617,21 @@ export default defineComponent({
} }
function created() { function created() {
mytable.value = props.prop_mytable
mytitle.value = props.prop_mytitle
mycolumns.value = props.prop_mycolumns
colkey.value = props.prop_colkey
pagination.value = props.prop_pagination
myvertical.value = props.vertical try {
// myvertical.value = tools.getCookie('myv_' + props.prop_mytable, props.vertical) mytable.value = props.prop_mytable
mytitle.value = props.prop_mytitle
mycolumns.value = props.prop_mycolumns
colkey.value = props.prop_colkey
pagination.value = props.prop_pagination
showfilter.value = props.prop_showfilter || (tools.getCookie('s_adv', '0') !== '0') myvertical.value = props.vertical
showfilter.value = props.prop_showfilter || (tools.getCookie('s_adv', '0') !== '0')
} catch (e) {
console.error('ERRORE', e)
}
} }
function mounted() { function mounted() {
@@ -1919,7 +1924,8 @@ export default defineComponent({
} else if (visib === '0') { } else if (visib === '0') {
// Se da togliere, lo togli // Se da togliere, lo togli
if (colVisib.value.includes(field)) if (colVisib.value.includes(field))
colVisib.value = colVisib.value.filter((myrec: any) => myrec !== field) if (colVisib.value)
colVisib.value = colVisib.value.filter((myrec: any) => myrec !== field)
} }
} }
} }

View File

@@ -121,7 +121,7 @@
:optval="fieldsTable.getKeyByTable(item.table)" :optval="fieldsTable.getKeyByTable(item.table)"
:optlab="fieldsTable.getLabelByTable(item.table)" :optlab="fieldsTable.getLabelByTable(item.table)"
:options="valoriopt(item, false, false)" :options="valoriopt(item, false, false)"
:filter="item.filter" :filter="item && item.filter ? item.filter : ''"
:filter_extra="item.filter_extra" :filter_extra="item.filter_extra"
:useinput=" :useinput="
item.useinput && item.useinput &&
@@ -568,7 +568,10 @@
</q-infinite-scroll> </q-infinite-scroll>
<q-table <q-table
v-else-if=" v-else-if="
!shared_consts.VERTIC_SHOW_GRID.includes(myvertical) && !loading !shared_consts.VERTIC_SHOW_GRID.includes(myvertical) &&
!loading &&
serverData &&
mycolumns
" "
:grid="shared_consts.VERTIC_SHOW_GRID.includes(myvertical)" :grid="shared_consts.VERTIC_SHOW_GRID.includes(myvertical)"
:grid-header=" :grid-header="

View File

@@ -324,7 +324,7 @@ export default defineComponent({
const editOn = computed({ const editOn = computed({
get: () => globalStore.editOn, get: () => globalStore.editOn,
set: val => { set: val => {
globalStore.editOn = val tools.updateEditOn(val)
}, },
}) })

View File

@@ -0,0 +1,145 @@
.prova {
color: red;
}
.q-list-header {
min-height: 12px;
padding: 5px 8px;
}
.menu-hr {
border-color: #dedede;
height: 0.5px;
}
.router-link-active {
color: #027be3;
background-color: #dadada !important;
border-right: 2px solid #027be3;
}
.list-label:first-child {
line-height: 20px;
padding: 5px;
margin: 1px;
}
.router-link-active {
color: #027be3;
background-color: #dadada !important;
border-right: 2px solid #027be3;
}
.router-link-active .item-primary {
color: #027be3;
}
.menu_freccina {
position: absolute;
right: 10px;
display: inline-block;
padding: 0 0 0 0;
-webkit-transform: rotate(-180deg);
transform: rotate(-180deg);
}
.my-menu,
.my-menu>i {
min-height: 40px;
min-width: 26px;
font-size: 1rem;
}
.my-menu-small,
.my-menu-small>i {
min-height: 40px;
min-width: 26px;
font-size: 0.75rem;
}
.isAdmin {
color: red !important;
}
.isSocioResidente {
color: darkgreen;
}
.isCalendar {}
.isManager {
color: green !important;
}
.isFacilitatore {
color: #201a80;
}
.my-menu-icon {
min-width: 2px;
font-size: 1rem;
}
.my-menu-icon>i {
min-width: 26px;
font-size: 1.25rem;
}
.clexpansion {
min-width: 0 !important;
}
.my-menu-active {
background-color: rgba(174, 189, 241, 0.71);
}
.my-menu-separat>i {
min-width: 26px;
font-size: 1rem;
}
.my-menu-icon-none>i {
display: none;
}
.clicon img,
.clicon {
font-size: 16px;
}
.q-item__section--avatar {
min-width: 30px;
}
.OLD_q-item__section--side {
padding-right: 8px;
}
.imgicon img {
font-size: 2.5rem !important;
border-radius: 8px;
}
/*
.menu-enter-active, .scale-enter {
-webkit-animation: moveFromTopFade .5s ease both;
animation: moveFromTopFade .5s ease both;
}
.menu-leave-to, .scale-leave-active {
-webkit-animation: moveToBottom .5s ease both;
animation: moveToBottom .5s ease both;
}
*/
.bigmenu {
font-size: 1.25rem;
font-weight: bold;
text-shadow: 0.0512rem 0.052rem .01rem #555;
}
.subtitle {
font-style: italic;
}

View File

@@ -0,0 +1,61 @@
import { computed, defineComponent, onMounted, PropType, ref, toRef, watch } from 'vue'
import { useI18n } from '@src/boot/i18n'
import { useUserStore } from '@store/UserStore'
import { useGlobalStore } from '@store/globalStore'
import { useQuasar } from 'quasar'
import { costanti } from '@costanti'
import { fieldsTable } from '@store/Modules/fieldsTable'
import { shared_consts } from '@/common/shared_vuejs'
import { IColGridTable, IOperators } from 'model'
import { tools } from '@store/Modules/tools'
import { static_data } from '@/db/static_data'
export default defineComponent({
name: 'CMenuItem',
props: {
item: Object,
getroute: Function,
getmymenuclass: Function,
getimgiconclass: Function,
clBase: String,
mainMenu: Boolean,
level: {
type: Number,
default: 0
},
},
components: {},
setup(props, { emit }) {
const $q = useQuasar()
const { t } = useI18n()
const userStore = useUserStore()
const globalStore = useGlobalStore()
function mounted() {
// ...
}
function getmenuByPath(pathoobj: any) {
let mymenufind = null
if (tools.isObject(pathoobj)) {
mymenufind = pathoobj
} else {
mymenufind = static_data.routes.find((menu: any) => menu.path === '/' + pathoobj)
}
return mymenufind
}
onMounted(mounted)
return {
tools,
getmenuByPath,
}
}
})

View File

@@ -0,0 +1,64 @@
<template>
<div :style="{ paddingLeft: `${level * 4}px` }">
<q-separator v-if="item.isseparator" />
<q-expansion-item
v-else-if="item.routes2 || item.sottoMenu"
:content-inset-level="item.level_parent"
:header-class="getmymenuclass(item)"
:header-inset-level="item.level_parent"
:icon="item.materialIcon"
:label="tools.getLabelByItem(item)"
active-class="my-menu-active"
:expand-icon-class="item.mainMenu ? 'my-menu-separat' : ''"
:expand-icon="
item.mainMenu || item.routes2 ? 'fas fa-chevron-down' : 'none'
"
>
<c-menu-item
v-for="(childItem, childIndex) in item.routes2 || item.sottoMenu"
:key="childIndex"
:item="getmenuByPath(childItem)"
:tools="tools"
:getroute="getroute"
:getmymenuclass="getmymenuclass"
:getimgiconclass="getimgiconclass"
:clBase="clBase"
:mainMenu="item.mainMenu"
:level="level + 1"
/>
</q-expansion-item>
<q-item
v-else
clickable
:to="getroute(item)"
:content-inset-level="item.level_parent"
:header-inset-level="item.level_parent"
active-class="my-menu-active"
expand-icon="none"
>
<q-item-section thumbnail>
<q-avatar
:icon="item.materialIcon"
:size="!!item.iconsize ? item.iconsize : '2rem'"
:font-size="!!item.iconsize ? item.iconsize : '2rem'"
text-color="primary"
square
rounded
>
</q-avatar>
</q-item-section>
<q-item-section>
<span :class="item.extraclass">{{ tools.getLabelByItem(item) }}</span>
<span v-if="item.subtitle" class="subtitle">{{ item.subtitle }}</span>
</q-item-section>
</q-item>
</div>
</template>
<script lang="ts" src="./CMenuItem.ts">
</script>
<style lang="scss" scoped>
@import './CMenuItem.scss';
</style>

View File

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

View File

@@ -0,0 +1,17 @@
.myfrom {
color: green;
font-weight: bold;
}
.myto {
color: red;
font-weight: bold;
}
.circuit {
color: blue;
}
.date {
color: gray;
}

View File

@@ -0,0 +1,89 @@
import { defineComponent, ref, computed, PropType, toRef, onMounted } from 'vue'
import { useUserStore } from '@store/UserStore'
import { useRouter } from 'vue-router'
import { useGlobalStore } from '@store/globalStore'
import { useI18n } from '@/boot/i18n'
import { CMyImgUser } from '@/components/CMyImgUser'
import { CCurrencyValue } from '@/components/CCurrencyValue'
import { tools } from '@store/Modules/tools'
import { IMovQuery, IMovement } from '@src/model'
import { shared_consts } from '@src/common/shared_vuejs'
export default defineComponent({
name: 'CMovements',
components: { CMyImgUser, CCurrencyValue },
props: {
numcol: {
type: Number,
required: false,
default: 3
},
},
setup(props, { emit }) {
const userStore = useUserStore()
const $router = useRouter()
const globalStore = useGlobalStore()
const { t } = useI18n();
const datastat = ref(<any>{})
const mylist = computed(() => {
if (globalStore.datastat)
return globalStore.datastat.last_transactions
else
return []
})
async function mounted() {
}
function getFromToStr(mov: any) {
let mystr = ''
if (mov) {
mystr += mov.str
}
return mystr
}
function navigabyMov(mov: IMovQuery, from: boolean) {
let link = ''
if (from) {
if (mov.tipocontofrom === shared_consts.AccountType.USER) {
link = `/my/` + mov.userfrom.username
} else if (mov.tipocontofrom === shared_consts.AccountType.COLLECTIVE_ACCOUNT) {
link = tools.getPathByGroup(mov.groupfrom)
} else if (mov.tipocontofrom === shared_consts.AccountType.COMMUNITY_ACCOUNT) {
link = '' // mov.contocomfrom.name
}
} else {
if (mov.tipocontoto === shared_consts.AccountType.USER) {
link = `/my/` + mov.userto.username
} else if (mov.tipocontoto === shared_consts.AccountType.COLLECTIVE_ACCOUNT) {
link = tools.getPathByGroup(mov.groupto)
} else if (mov.tipocontoto === shared_consts.AccountType.COMMUNITY_ACCOUNT) {
link = ''
}
}
$router.push(link)
}
onMounted(() => {
mounted()
})
return {
userStore,
tools,
mylist,
getFromToStr,
t,
navigabyMov,
}
}
})

View File

@@ -0,0 +1,61 @@
<template>
<q-list bordered>
<q-item
v-for="mov in mylist"
:key="mov._id"
class="q-mb-sm"
clickable
v-ripple
>
<q-item-section avatar @click="navigabyMov(mov, true)">
<CMyImgUser :mov="mov" :from="true"> </CMyImgUser>
</q-item-section>
<q-item-section>
<q-item-label v-if="mov.causal">{{ mov.causal }}</q-item-label>
<q-item-label lines="1">
{{ t('movement.from') }} <span class="myfrom">{{ mov.myfrom }}</span>
</q-item-label>
<q-item-label lines="1">
{{ t('movement.to') }}
<span class="myto">{{ mov.myto }}</span></q-item-label
>
<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"
>{{ tools.getstrDateTime(mov.transactionDate) }}</q-item-label
>
<q-item-label caption lines="1" style="text-align: center">
<CCurrencyValue
:symbol="mov.circuitfrom.symbol"
color="red"
v-model="mov.amount"
:small="true"
label=""
>
</CCurrencyValue
></q-item-label>
</q-item-section>
<q-item-section side @click="navigabyMov(mov, false)">
<CMyImgUser :mov="mov" :from="false"> </CMyImgUser>
</q-item-section>
</q-item>
</q-list>
</template>
<script lang="ts" src="./CMovements.ts">
</script>
<style lang="scss" scoped>
@import './CMovements.scss';
</style>

View File

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

View File

@@ -83,7 +83,7 @@ export default defineComponent({
} }
function condividipag() { function condividipag() {
const msg = self.location.host + tools.getPathByGroup(myrec.value, props.table) const msg = self.location.host + tools.getPathByGroup(myrec.value)
return tools.copyStringToClipboard($q, msg, true) return tools.copyStringToClipboard($q, msg, true)
} }

View File

@@ -1,7 +1,9 @@
<template> <template>
<div <div
v-if="myrec && myrec._id" v-if="myrec && myrec._id"
:class="$q.screen.lt.sm ? ' fulldiv ' : ' well-positioned-dialog'" :class="
$q.screen.lt.md || nopopup ? ' fulldiv ' : ' well-positioned-dialog'
"
> >
<div <div
:class="'items-start ' + (!isSmall ? ' q-gutter-xs full-height ' : '')" :class="'items-start ' + (!isSmall ? ' q-gutter-xs full-height ' : '')"
@@ -553,14 +555,7 @@
" "
class="my-card clBorderUser" class="my-card clBorderUser"
bordered bordered
@click=" @click="naviga(tools.getPathByGroup(myrec.mygrp))"
naviga(
tools.getPathByGroup(
myrec.mygrp,
shared_consts.TABLES_MYGROUPS
)
)
"
> >
<CMyGroup <CMyGroup
:mygrp="myrec.mygrp" :mygrp="myrec.mygrp"

View File

@@ -92,6 +92,8 @@ export default defineComponent({
const visuadd = ref(false) const visuadd = ref(false)
const direzadd = ref(1) const direzadd = ref(1)
const selectedClasses = ref(<any>[])
watch(() => myel.value.order, (value, oldval) => { watch(() => myel.value.order, (value, oldval) => {
mounted() mounted()
}) })
@@ -222,6 +224,11 @@ export default defineComponent({
if (props.myelem) if (props.myelem)
newtype.value = props.myelem.type newtype.value = props.myelem.type
if (myel.value.class4) {
selectedClasses.value = myel.value.class4.split(' ').filter(Boolean)
}
} }
function clickOnElem() { function clickOnElem() {
@@ -237,6 +244,27 @@ export default defineComponent({
modifElem() modifElem()
}
function dupNewCard() {
if (!myel.value.listcards)
return
const myfindcard = myel.value.listcards[tabCard.value]
if (myfindcard) {
let mycard = { ...myfindcard }
delete mycard._id
mycard._id = objectId()
const bakcard = [...myel.value.listcards]
myel.value.listcards = []
myel.value.listcards = [...bakcard, mycard]
modifElem()
}
} }
function addNewElemText() { function addNewElemText() {
@@ -284,7 +312,12 @@ export default defineComponent({
if (props.myelem.listcards) { if (props.myelem.listcards) {
props.myelem.listcards.forEach((rec: IMyCard) => { props.myelem.listcards.forEach((rec: IMyCard) => {
if (recpass._id === rec._id) { if (recpass._id === rec._id) {
rec.imagefile = myval if (myval.imagefile) {
rec.imagefile = myval.imagefile
rec.vers_img = tools.getGenerateVersionImage()
} else {
rec.imagefile = myval
}
} }
}) })
} }
@@ -292,7 +325,11 @@ export default defineComponent({
if (props.myelem.elemsText) { if (props.myelem.elemsText) {
props.myelem.elemsText.forEach((rec: IElemText) => { props.myelem.elemsText.forEach((rec: IElemText) => {
if (recpass._id === rec._id) { if (recpass._id === rec._id) {
rec.text = myval if (myval.imagefile) {
rec.text = myval.imagefile
} else {
rec.text = myval
}
} }
}) })
} }
@@ -335,6 +372,11 @@ export default defineComponent({
modifElem() modifElem()
} }
function updateSizeHeight(value: any) {
myel.value.heightimg = value; // Aggiorna widthimg con il nuovo valore
modifElem()
}
function toggleSize() { function toggleSize() {
emit('toggleSize', null) emit('toggleSize', null)
} }
@@ -402,6 +444,30 @@ export default defineComponent({
emit('saveElem', myelem) emit('saveElem', myelem)
} }
function classiImmagineOptions() {
// Ritorna l'array delle classi, ad esempio:
return [
{ label: 'Tonda', value: 'image-circle' },
{ label: 'Sbordata', value: 'image-round-bordered' },
{ label: 'Ombrata', value: 'image-ombra' },
// Aggiungi altre classi se necessario
];
}
function updateClass4(selectedOptions: any) {
// Aggiorna selectedClasses
selectedClasses.value = selectedOptions;
if (myel.value) {
// Imposta myel.class2 come stringa
myel.value.class4 = selectedOptions.join(' '); // Converte l'array in una stringa separata da spazi
saveElem()
}
}
onMounted(mounted) onMounted(mounted)
return { return {
@@ -449,6 +515,11 @@ export default defineComponent({
orderOptions, orderOptions,
addOrder, addOrder,
moveElem, moveElem,
updateSizeHeight,
dupNewCard,
updateClass4,
selectedClasses,
classiImmagineOptions,
} }
}, },

View File

@@ -173,16 +173,20 @@
dense dense
style="width: 150px" style="width: 150px"
/> />
<q-input <q-select
label="Altezza:" label="Altezza:"
@update:model-value="modifElem"
style="width: 100px"
v-model="myel.heightimg" v-model="myel.heightimg"
emit-value
map-options
:options="generateSizeOptions()"
use-input
use-chips
@input="saveElem"
filled filled
dense dense
v-on:keyup.enter="saveElem" @new-value="updateSizeHeight"
> style="width: 150px"
</q-input> />
</div> </div>
</q-expansion-item> </q-expansion-item>
@@ -281,6 +285,42 @@
> >
</CSelectAnimation> </CSelectAnimation>
</q-expansion-item> </q-expansion-item>
<q-expansion-item
dense
dense-toggle
expand-separator
label="Banner Iniziale"
icon="fas fa-play-circle"
>
<div>Banner:</div>
<q-input
dense
label="Titolo Banner:"
@update:model-value="modifElem"
v-model="myel.titleBanner"
filled
v-on:keyup.enter="saveElem"
>
</q-input>
<q-input
dense
label="Classe Banner:"
@update:model-value="modifElem"
v-model="myel.classBanner"
filled
v-on:keyup.enter="saveElem"
>
</q-input>
<CSelectColor
v-if="enableEdit"
style="min-width: 150px"
v-model="myel.color"
@update:model-value="modifElem"
title="Colore Titolo"
>
</CSelectColor>
</q-expansion-item>
<div v-if="myel.type === shared_consts.ELEMTYPE.TEXT"> <div v-if="myel.type === shared_consts.ELEMTYPE.TEXT">
<div v-if="enableEdit"> <div v-if="enableEdit">
<q-input <q-input
@@ -302,16 +342,22 @@
dense dense
dense-toggle dense-toggle
expand-separator expand-separator
label="Animazione" label="Classi per l'Immagine"
icon="fas fa-expand-alt" icon="fas fa-expand-alt"
> >
<CSelectAnimation <q-select
v-if="enableEdit && showAnimation" label="Classi:"
v-model="myel.anim2" v-model="selectedClasses"
@update:model-value="modifElem" emit-value
label="Animazione Immagini" map-options
> :options="classiImmagineOptions()"
</CSelectAnimation> use-chips
multiple
@update:model-value="updateClass4"
filled
dense
style="width: 350px"
/>
</q-expansion-item> </q-expansion-item>
<div class="row"> <div class="row">
<q-input <q-input
@@ -333,6 +379,15 @@
@click="addNewCard" @click="addNewCard"
> >
</q-btn> </q-btn>
<q-btn
rounded
dense
color="primary"
label="Scheda"
icon="fas fa-copy"
@click="dupNewCard"
>
</q-btn>
<q-tabs <q-tabs
v-model="tabCard" v-model="tabCard"
@@ -346,7 +401,7 @@
<q-tab <q-tab
v-for="(rec, ind) in myel.listcards" v-for="(rec, ind) in myel.listcards"
:key="ind" :key="ind"
:name="`card` + ind" :name="ind"
:label="`Scheda ` + (ind + 1)" :label="`Scheda ` + (ind + 1)"
icon="fas fa-pencil-alt" icon="fas fa-pencil-alt"
/> />
@@ -356,11 +411,11 @@
<q-tab-panel <q-tab-panel
v-for="(rec, ind) in myel.listcards" v-for="(rec, ind) in myel.listcards"
:key="ind" :key="ind"
:name="`card` + ind" :name="ind"
> >
<div v-if="enableEdit" class="column bordered q-ma-xs"> <div v-if="enableEdit" class="column bordered q-ma-xs">
<q-bar class="bg-primary text-white"> <q-bar class="bg-primary text-white">
Card {{ ind + 1 }} Scheda {{ ind + 1 }}
<q-space /> <q-space />
<q-btn <q-btn
icon="fas fa-trash-alt" icon="fas fa-trash-alt"
@@ -411,6 +466,17 @@
v-on:keyup.enter="saveElem" v-on:keyup.enter="saveElem"
> >
</q-input> </q-input>
<q-input
dense
style="min-width: 450px"
label="Link:"
class="fa-border"
@update:model-value="modifElem"
v-model="rec.link"
filled
v-on:keyup.enter="saveElem"
>
</q-input>
<CSelectColor <CSelectColor
v-if="enableEdit" v-if="enableEdit"
style="min-width: 150px" style="min-width: 150px"
@@ -602,15 +668,20 @@
style="width: 150px" style="width: 150px"
/> />
<q-input <q-select
label="Altezza Logo:" label="Altezza Logo:"
@update:model-value="modifElem" v-model="myel.heightimg"
v-model="myel.height" emit-value
map-options
:options="generateSizeOptions()"
use-input
use-chips
@input="saveElem"
filled filled
dense dense
v-on:keyup.enter="saveElem" @new-value="updateSizeHeight"
> style="width: 150px"
</q-input> />
</div> </div>
<q-btn <q-btn
@@ -869,27 +940,34 @@
> >
</q-input> </q-input>
<div class="col-12 col-sm-6 col-md-6 col-lg-6 col-xl-6 col-sticky"> <div class="col-12 col-sm-6 col-md-6 col-lg-6 col-xl-6 col-sticky">
<q-input <q-select
dense
label="Lunghezza:" label="Lunghezza:"
type="number"
@update:model-value="modifElem"
debounce="1000"
v-model="myel.widthimg" v-model="myel.widthimg"
emit-value
map-options
:options="generateSizeOptions()"
use-input
use-chips
@input="saveElem"
filled filled
v-on:keyup.enter="saveElem" dense
> @new-value="updateSizeWidth"
</q-input> style="width: 150px"
<q-input />
<q-select
label="Altezza:" label="Altezza:"
type="number"
@update:model-value="modifElem"
debounce="1000"
v-model="myel.heightimg" v-model="myel.heightimg"
emit-value
map-options
:options="generateSizeOptions()"
use-input
use-chips
@input="saveElem"
filled filled
v-on:keyup.enter="saveElem" dense
> @new-value="updateSizeHeight"
</q-input> style="width: 150px"
/>
<q-input <q-input
dense dense
label="Link:" label="Link:"

View File

@@ -1,6 +1,6 @@
import { import {
computed, computed,
defineComponent, onMounted, PropType, ref, toRef, watch, defineComponent, onMounted, PropType, ref, toRef, watch, nextTick,
} from 'vue' } from 'vue'
import { ICoordGPS, IMyCard, IMyElem, IMyPage, IOperators, ISocial } from '@src/model' import { ICoordGPS, IMyCard, IMyElem, IMyPage, IOperators, ISocial } from '@src/model'
@@ -34,6 +34,7 @@ import { CMyProfileTutorial } from '@src/components/CMyProfileTutorial'
import { CSendRISTo } from '@src/components/CSendRISTo' import { CSendRISTo } from '@src/components/CSendRISTo'
import { CDashboard } from '@src/components/CDashboard' import { CDashboard } from '@src/components/CDashboard'
import { CDashGroup } from '@src/components/CDashGroup' import { CDashGroup } from '@src/components/CDashGroup'
import { CMovements } from '@src/components/CMovements'
import { CCheckAppRunning } from '@src/components/CCheckAppRunning' import { CCheckAppRunning } from '@src/components/CCheckAppRunning'
import { CStatusReg } from '@src/components/CStatusReg' import { CStatusReg } from '@src/components/CStatusReg'
import { CTitleBanner } from '@src/components/CTitleBanner' import { CTitleBanner } from '@src/components/CTitleBanner'
@@ -65,7 +66,7 @@ export default defineComponent({
CTitleBanner, CShareSocial, CCheckAppRunning, CRegistration, CTitleBanner, CShareSocial, CCheckAppRunning, CRegistration,
CVisuVideoPromoAndPDF, CECommerce, CCatalogo, CAITools, CVisuVideoPromoAndPDF, CECommerce, CCatalogo, CAITools,
CMapComuni, CMapUsers, CMapGetCoordinates, CMapEditAddressByCoord, CMapComuni, CMapUsers, CMapGetCoordinates, CMapEditAddressByCoord,
CDashGroup, CDashGroup, CMovements,
// , //CMapMarker, // , //CMapMarker,
}, },
emits: ['selElemClick'], emits: ['selElemClick'],
@@ -125,6 +126,11 @@ export default defineComponent({
const coordaddr = ref(<ICoordGPS>{ address: '', coordinates: [0, 0] }) const coordaddr = ref(<ICoordGPS>{ address: '', coordinates: [0, 0] })
const carouselRef = ref(<any>null)
const isAtStart = ref(true)
const isAtEnd = ref(false)
const activeIndex = ref(0)
watch(() => myel.value.order, (value, oldval) => { watch(() => myel.value.order, (value, oldval) => {
mounted() mounted()
}) })
@@ -173,14 +179,28 @@ export default defineComponent({
disableSave.value = false disableSave.value = false
} }
const checkScrollPosition = () => {
const container = carouselRef.value
if (!container || !myel.value || !myel.value.listcards) return
isAtStart.value = container.scrollLeft <= 0
isAtEnd.value = container.scrollLeft + container.clientWidth >= container.scrollWidth - 1
const cardWidth = container.scrollWidth / myel.value.listcards.length
activeIndex.value = Math.round(container.scrollLeft / cardWidth)
}
function mounted() { function mounted() {
//console.log('mounted elem ')
//console.log(props.myelem.type)
myel.value = props.myelem myel.value = props.myelem
neworder.value = props.myelem.order neworder.value = props.myelem.order
if (props.myelem) if (props.myelem)
newtype.value = props.myelem.type newtype.value = props.myelem.type
nextTick(() => {
checkScrollPosition()
carouselRef.value?.addEventListener('scroll', checkScrollPosition)
})
} }
function clickOnElem() { function clickOnElem() {
@@ -271,6 +291,10 @@ export default defineComponent({
clickshare, clickshare,
isAppRunning, isAppRunning,
coordaddr, coordaddr,
isAtStart,
isAtEnd,
activeIndex,
carouselRef,
} }
}, },

View File

@@ -31,65 +31,71 @@
</div> </div>
<div <div
v-if="myel.type === shared_consts.ELEMTYPE.CARD" v-if="myel.type === shared_consts.ELEMTYPE.CARD"
:class="myel.span ? '' : ''" class="card-carousel-container"
> >
<div <div
:class="myel.class + (editOn ? ` clEdit` : ``) + getClass()" :class="myel.class + (editOn ? ` clEdit` : ``) + getClass()"
@click="clickOnElem" @click="clickOnElem"
class="card-carousel"
ref="carouselRef"
> >
<div v-for="(rec, ind) in myel.listcards" :key="ind"> <q-card
<q-card v-for="(rec, ind) in myel.listcards"
:class="`my-card center_img bordered ` + myel.class3" :key="ind"
:style="rec.style" :class="
`my-card-elem center_img bordered ` +
myel.class3 +
(rec.link ? ' titolo_card' : '')
"
:style="
rec.style +
`; height: ${myel.heightimg || `300px`} !important; width: ${
myel.widthimg || `300px`
} !important;`
"
@click="rec.link ? tools.openUrl(rec.link) : undefined"
>
<div
class="img-container"
:style="`height: ${
myel.heightimg.replace('px', '') * 0.7
}px; overflow: hidden;`"
> >
<q-img <q-img
:class="tools.getClassAnim(myel.anim2)" :class="tools.getClassAnim(myel.anim2) + ` ` + myel.class4"
:src="tools.getImgFileByElem(myel, rec)" :src="tools.getImgFileByElem(myel, rec)"
/> />
<q-card-section>
<div :class="rec.size" :style="`color: ` + rec.color">
{{ rec.alt }}
</div>
<div
:class="`q-mt-sm q-mb-xs ` + tools.getClassAnim(myel.anim)"
v-html="rec.content"
></div>
<div
v-if="rec.description"
class="text-caption"
:style="`color: ` + rec.colorsub"
>
{{ rec.description }}
</div>
</q-card-section>
<!--<q-card-actions>
<q-btn flat color="dark" label="Share"/>
<q-btn flat color="primary" label="Book"/>
<q-space/>
<q-btn
color="grey"
round
flat
dense
:icon="expanded ? 'keyboard_arrow_up' : 'keyboard_arrow_down'"
@click="expanded = !expanded"
/>
</q-card-actions>-->
<!--<q-slide-transition>
<div v-show="expanded">
<q-separator />
<q-card-section class="text-subtitle2">
</q-card-section>
</div> </div>
</q-slide-transition> <q-card-section>
--> <div :class="rec.size" :style="`color: ` + rec.color">
</q-card> {{ tools.getText(rec.alt) }}
</div> </div>
<div
:class="`q-mt-sm q-mb-xs ` + tools.getClassAnim(myel.anim)"
v-html="rec.content"
></div>
<div
v-if="rec.description"
class="text-caption"
:style="`color: ` + rec.colorsub"
>
{{ rec.description }}
</div>
</q-card-section>
</q-card>
</div>
<div class="swipe-indicator left" v-if="!isAtStart">
<q-icon name="chevron_left" size="2rem" color="white" />
</div>
<div class="swipe-indicator right" v-if="!isAtEnd">
<q-icon name="chevron_right" size="2rem" color="white" />
</div>
<div class="scroll-indicator">
<div
v-for="(_, index) in myel.listcards"
:key="index"
:class="['dot', { active: index === activeIndex }]"
></div>
</div> </div>
</div> </div>
@@ -468,6 +474,10 @@
<div v-if="editOn" class="elemEdit">CDashGroup</div> <div v-if="editOn" class="elemEdit">CDashGroup</div>
<CDashGroup></CDashGroup> <CDashGroup></CDashGroup>
</div> </div>
<div v-else-if="myel.type === shared_consts.ELEMTYPE.MOVEMENTS">
<div v-if="editOn" class="elemEdit">Lista Movimenti</div>
<CMovements></CMovements>
</div>
<div v-else-if="myel.type === shared_consts.ELEMTYPE.CSENDRISTO"> <div v-else-if="myel.type === shared_consts.ELEMTYPE.CSENDRISTO">
<div v-if="editOn" class="elemEdit">CSendRISTo</div> <div v-if="editOn" class="elemEdit">CSendRISTo</div>
<CSendRISTo></CSendRISTo> <CSendRISTo></CSendRISTo>

View File

@@ -1,12 +1,8 @@
<template> <template>
<div v-if="tools.isUserOk()"> <div v-if="tools.isUserOk()">
<div v-if="grp"> <div v-if="grp">
<q-item class="q-my-sm" clickable> <q-item class="q-my-sm" clickable>
<q-item-section <q-item-section avatar @click="naviga(tools.getPathByGroup(grp))">
avatar
@click="naviga(tools.getPathByGroup(grp, table))"
>
<q-avatar size="60px"> <q-avatar size="60px">
<q-img <q-img
:src="getImgGroup(grp)" :src="getImgGroup(grp)"
@@ -17,7 +13,7 @@
</q-avatar> </q-avatar>
</q-item-section> </q-item-section>
<q-item-section @click="naviga(tools.getPathByGroup(grp, table))"> <q-item-section @click="naviga(tools.getPathByGroup(grp))">
<q-item-label <q-item-label
><strong>{{ grp.title }}</strong> ({{ grp.groupname }}) ><strong>{{ grp.title }}</strong> ({{ grp.groupname }})
</q-item-label> </q-item-label>
@@ -33,7 +29,6 @@
:saldo="grp.account.saldo" :saldo="grp.account.saldo"
> >
</CSaldo> </CSaldo>
</q-item-label> </q-item-label>
</q-item-section> </q-item-section>

View File

@@ -2,10 +2,7 @@
<div v-if="tools.isUserOk()"> <div v-if="tools.isUserOk()">
<div v-if="grp"> <div v-if="grp">
<q-item class="q-my-sm" clickable> <q-item class="q-my-sm" clickable>
<q-item-section <q-item-section avatar @click="naviga(tools.getPathByGroup(grp))">
avatar
@click="naviga(tools.getPathByGroup(grp, table))"
>
<q-item-label v-if="labelextra" <q-item-label v-if="labelextra"
><strong>{{ labelextra }}</strong></q-item-label ><strong>{{ labelextra }}</strong></q-item-label
> >
@@ -19,7 +16,7 @@
</q-avatar> </q-avatar>
</q-item-section> </q-item-section>
<q-item-section @click="naviga(tools.getPathByGroup(grp, table))"> <q-item-section @click="naviga(tools.getPathByGroup(grp))">
<q-item-label <q-item-label
><strong>{{ grp.title }}</strong> ({{ grp.groupname }}) ><strong>{{ grp.title }}</strong> ({{ grp.groupname }})
</q-item-label> </q-item-label>

View File

@@ -0,0 +1,4 @@
.myflex{
display: flex;
flex: 1;
}

View File

@@ -0,0 +1,100 @@
import { defineComponent, onMounted, PropType, ref, watch } from 'vue'
import { useUserStore } from '@store/UserStore'
import { ICircuit, IImgGallery, IMovQuery, IUserFields, IUserProfile } from 'model'
import { costanti } from '@costanti'
import { shared_consts } from '@/common/shared_vuejs'
import { tools } from '@store/Modules/tools'
import { useQuasar } from 'quasar'
import { CSendCoins } from '@/components/CSendCoins'
import { CSaldo } from '@/components/CSaldo'
import { CUserInfoAccount } from '@/components/CUserInfoAccount'
import { useI18n } from '@/boot/i18n'
import { useRoute, useRouter } from 'vue-router'
import { useCircuitStore } from '@store/CircuitStore'
export default defineComponent({
name: 'CMyImgUser',
components: { CSendCoins, CSaldo, CUserInfoAccount },
emits: ['setCmd', 'showInnerDialog'],
props: {
mycontact: {
type: Object as PropType<IUserFields | null>,
required: false,
default: null,
},
mov: {
type: Object as PropType<IMovQuery | null>,
required: false,
default: null,
},
from: {
type: Boolean,
required: false,
default: false,
},
myusername: {
type: String,
required: false,
default: null,
},
groupname: {
type: String,
required: false,
default: '',
},
},
setup(props, { emit }) {
const userStore = useUserStore()
const $q = useQuasar()
const { t } = useI18n()
const $router = useRouter()
const $route = useRoute()
const showsendCoinTo = ref(false)
const showAccountInfo = ref(false)
const contact = ref(<IUserFields | null>null)
const circuit = ref(<ICircuit | null | undefined>null)
watch(() => props.mycontact, (newval, oldval) => {
mounted()
})
function mounted() {
if (props.mycontact) {
contact.value = props.mycontact
}
}
function getImgUser(profile: IUserFields) {
return userStore.getImgByProfile(profile)
}
function getImgUserMov(tipoconto: number, from: boolean) {
return userStore.getImgByMov(props.mov!, tipoconto, from, true)
}
function naviga(path: string) {
$router.push(path)
}
onMounted(mounted)
return {
contact,
costanti,
getImgUser,
getImgUserMov,
naviga,
shared_consts,
userStore,
tools,
circuit,
showAccountInfo,
showsendCoinTo,
}
},
})

View File

@@ -0,0 +1,22 @@
<template>
<q-avatar size="60px">
<q-img
v-if="contact || mov"
:src="
mov
? getImgUserMov(from ? mov.tipocontofrom : mov.tipocontoto, from)
: getImgUser(contact)
"
:alt="contact ? contact.username : ''"
img-class="imgprofile"
height="60px"
/>
</q-avatar>
</template>
<script lang="ts" src="./CMyImgUser.ts">
</script>
<style lang="scss" scoped>
@import './CMyImgUser.scss';
</style>

View File

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

View File

@@ -7,6 +7,7 @@ import { IMyElem, IMyPage } from '@src/model'
import { useGlobalStore } from '@store/globalStore' import { useGlobalStore } from '@store/globalStore'
import { LandingFooter } from '@/components/LandingFooter' import { LandingFooter } from '@/components/LandingFooter'
import { CMyElem } from '@/components/CMyElem' import { CMyElem } from '@/components/CMyElem'
import { CTitleBanner } from '@/components/CTitleBanner'
import { CMyEditElem } from '@/components/CMyEditElem' import { CMyEditElem } from '@/components/CMyEditElem'
import { CMyPageElem2 } from '@/components/CMyPageElem2' import { CMyPageElem2 } from '@/components/CMyPageElem2'
@@ -21,7 +22,10 @@ import { useRouter } from 'vue-router'
export default defineComponent({ export default defineComponent({
name: 'CMyPageElem', name: 'CMyPageElem',
components: { LandingFooter, CImgTitle, CTitle, CMyElem, CMyEditElem, CMyPageElem2 }, components: {
LandingFooter, CImgTitle, CTitle, CMyElem,
CMyEditElem, CMyPageElem2, CTitleBanner,
},
props: { props: {
title: String, title: String,
mypath: { mypath: {
@@ -73,7 +77,7 @@ export default defineComponent({
}, },
set(value: boolean) { set(value: boolean) {
return globalStore.editOn = value return tools.updateEditOn(value)
} }
}) })
const visuEditor = ref(false) const visuEditor = ref(false)

View File

@@ -83,8 +83,32 @@
<div v-for="myelem in myelems" :key="myelem._id"> <div v-for="myelem in myelems" :key="myelem._id">
<div> <div>
<transition :duration="1000" appear> <transition :duration="1000" appear>
<CTitleBanner
v-if="
(myelem.active || editOn) && !!rec.path && myelem.titleBanner
"
:class="`q-pa-xs `"
:title="myelem.titleBanner"
bgcolor="bg-primary"
:clcolor="myelem.color ? `` : `text-white`"
:mystyle="
myelem.color ? `color: ${myelem.color} !important;` : ``
"
:myclass="myelem.classBanner"
:canopen="true"
>
<CMyElem
:myelem="myelem"
:editOn="editOn"
:addOn="addOn"
:path="!!rec.path ? rec.path : ''"
:selElem="selElem"
@selElemClick="selElemClick"
>
</CMyElem>
</CTitleBanner>
<CMyElem <CMyElem
v-if="(myelem.active || editOn) && !!rec.path" v-else-if="(myelem.active || editOn) && !!rec.path"
:myelem="myelem" :myelem="myelem"
:editOn="editOn" :editOn="editOn"
:addOn="addOn" :addOn="addOn"

View File

@@ -41,7 +41,9 @@
> >
<q-item-label caption lines="1"></q-item-label> <q-item-label caption lines="1"></q-item-label>
<div v-if="visu === costanti.ASK_TRUST"> <div v-if="visu === costanti.ASK_TRUST">
<span class="text-italic">Reg: {{ tools.getstrDateShort(contact.date_reg) }}</span> <span class="text-italic"
>Reg: {{ tools.getstrDateShort(contact.date_reg) }}</span
>
</div> </div>
<q-item-label v-if="labelFooter" lines="1" <q-item-label v-if="labelFooter" lines="1"
@@ -63,7 +65,9 @@
:symbol="tools.getSymbolByCircuit(circuit)" :symbol="tools.getSymbolByCircuit(circuit)"
:color="tools.getColorByCircuit(circuit)" :color="tools.getColorByCircuit(circuit)"
:saldo="contact.account.saldo_pend" :saldo="contact.account.saldo_pend"
:valueextra="contact.account.saldo_pend !== contact.account.saldo ? '*': ''" :valueextra="
contact.account.saldo_pend !== contact.account.saldo ? '*' : ''
"
> >
</CSaldo> </CSaldo>
</div> </div>
@@ -418,7 +422,7 @@
clickable clickable
v-close-popup v-close-popup
dense dense
@click="naviga(`/my/` + contact.username + '?sendris=1')" @click="naviga(`/my/` + contact.username + '?sendris=0')"
> >
<q-item-section avatar> <q-item-section avatar>
<q-icon color="positive" name="fas fa-coins" /> <q-icon color="positive" name="fas fa-coins" />
@@ -807,7 +811,7 @@
clickable clickable
v-close-popup v-close-popup
dense dense
@click="naviga(`/my/` + contact.username + '?sendris=1')" @click="naviga(`/my/` + contact.username + '?sendris=0')"
> >
<q-item-section avatar> <q-item-section avatar>
<q-icon color="positive" name="fas fa-coins" /> <q-icon color="positive" name="fas fa-coins" />

View File

@@ -92,10 +92,10 @@ export default defineComponent({
const arrTypesAccounts = ref(<any>[ const arrTypesAccounts = ref(<any>[
{ {
label: t('circuit.user'), label: t('circuit.user'),
value: costanti.AccountType.USER, value: shared_consts.AccountType.USER,
}, },
]) ])
const tipoConto = ref(costanti.AccountType.USER) const tipoConto = ref(shared_consts.AccountType.USER)
const priceLabel = computed(() => circuitloaded.value ? `${qty.value} ` + circuitloaded.value.symbol : '') const priceLabel = computed(() => circuitloaded.value ? `${qty.value} ` + circuitloaded.value.symbol : '')
const arrayMarkerLabel = ref(<any>[]) const arrayMarkerLabel = ref(<any>[])
@@ -114,7 +114,7 @@ export default defineComponent({
watch(() => tipoConto.value, (newval, oldval) => { watch(() => tipoConto.value, (newval, oldval) => {
if (tipoConto.value === costanti.AccountType.COLLECTIVE_ACCOUNT) { if (tipoConto.value === shared_consts.AccountType.COLLECTIVE_ACCOUNT) {
if (arrGroupsList.value.length >= 1) if (arrGroupsList.value.length >= 1)
from_groupname.value = arrGroupsList.value[0].value from_groupname.value = arrGroupsList.value[0].value
} }
@@ -157,7 +157,7 @@ export default defineComponent({
arrTypesAccounts.value = [ arrTypesAccounts.value = [
{ {
label: t('circuit.user'), label: t('circuit.user'),
value: costanti.AccountType.USER, value: shared_consts.AccountType.USER,
}, },
] ]
@@ -165,13 +165,13 @@ export default defineComponent({
if (!!datasaved.value.circuit) { if (!!datasaved.value.circuit) {
circuitloaded.value = datasaved.value.circuit circuitloaded.value = datasaved.value.circuit
if (tipoConto.value === costanti.AccountType.USER) { if (tipoConto.value === shared_consts.AccountType.USER) {
accountloaded.value = userStore.getAccountByCircuitId(circuitloaded.value._id) accountloaded.value = userStore.getAccountByCircuitId(circuitloaded.value._id)
} else if (tipoConto.value === costanti.AccountType.COLLECTIVE_ACCOUNT) { } else if (tipoConto.value === shared_consts.AccountType.COLLECTIVE_ACCOUNT) {
groupSel.value = userStore.my.profile.manage_mygroups.find((group: IMyGroup) => from_groupname.value === group.groupname) groupSel.value = userStore.my.profile.manage_mygroups.find((group: IMyGroup) => from_groupname.value === group.groupname)
accountloaded.value = groupSel.value ? groupSel.value.account : null accountloaded.value = groupSel.value ? groupSel.value.account : null
} else if (tipoConto.value === costanti.AccountType.COMMUNITY_ACCOUNT) { } else if (tipoConto.value === shared_consts.AccountType.COMMUNITY_ACCOUNT) {
from_contocom.value = circuitloaded.value.path from_contocom.value = circuitloaded.value.path
accountloaded.value = circuitloaded.value ? circuitloaded.value.account : null accountloaded.value = circuitloaded.value ? circuitloaded.value.account : null
} }
@@ -197,14 +197,14 @@ export default defineComponent({
arrTypesAccounts.value.push( arrTypesAccounts.value.push(
{ {
label: t('circuit.conticollettivi'), label: t('circuit.conticollettivi'),
value: costanti.AccountType.COLLECTIVE_ACCOUNT, value: shared_consts.AccountType.COLLECTIVE_ACCOUNT,
}) })
} }
if (tools.iCanSendCoinsSuperUserCircuit(circuitsel.value) && (!props.to_contocom)) { if (tools.iCanSendCoinsSuperUserCircuit(circuitsel.value) && (!props.to_contocom)) {
arrTypesAccounts.value.push({ arrTypesAccounts.value.push({
label: t('circuit.contocom'), label: t('circuit.contocom'),
value: costanti.AccountType.COMMUNITY_ACCOUNT, value: shared_consts.AccountType.COMMUNITY_ACCOUNT,
}) })
} }
@@ -253,7 +253,7 @@ export default defineComponent({
arrTypesAccounts.value = [ arrTypesAccounts.value = [
{ {
label: t('circuit.user'), label: t('circuit.user'),
value: costanti.AccountType.USER, value: shared_consts.AccountType.USER,
}, },
] ]
@@ -341,8 +341,8 @@ export default defineComponent({
myrecsendcoin.groupdest = props.to_group ? props.to_group.groupname : '' myrecsendcoin.groupdest = props.to_group ? props.to_group.groupname : ''
myrecsendcoin.contoComDest = props.to_contocom myrecsendcoin.contoComDest = props.to_contocom
myrecsendcoin.grouporig = tipoConto.value === costanti.AccountType.COLLECTIVE_ACCOUNT ? from_groupname.value : '' myrecsendcoin.grouporig = tipoConto.value === shared_consts.AccountType.COLLECTIVE_ACCOUNT ? from_groupname.value : ''
myrecsendcoin.contoComOrig = tipoConto.value === costanti.AccountType.COMMUNITY_ACCOUNT ? from_contocom.value : '' myrecsendcoin.contoComOrig = tipoConto.value === shared_consts.AccountType.COMMUNITY_ACCOUNT ? from_contocom.value : ''
myrecsendcoin.dest = props.to_user ? props.to_user.username : '' myrecsendcoin.dest = props.to_user ? props.to_user.username : ''

View File

@@ -12,13 +12,9 @@
<q-btn flat round color="white" icon="close" v-close-popup></q-btn> <q-btn flat round color="white" icon="close" v-close-popup></q-btn>
</q-bar> </q-bar>
<q-card-section class="q-px-xs inset-shadow"> <q-card-section class="q-px-xs inset-shadow">
<CCheckCircuitsEnabled <CCheckCircuitsEnabled :to_user="to_user" :to_group="to_group">
:to_user="to_user"
:to_group="to_group"
>
</CCheckCircuitsEnabled> </CCheckCircuitsEnabled>
<q-select <q-select
v-if="!circuitname" v-if="!circuitname"
:behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'" :behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'"
@@ -69,14 +65,16 @@
/> />
</div> </div>
<q-input <q-input
v-if="tipoConto === costanti.AccountType.USER" v-if="tipoConto === shared_consts.AccountType.USER"
v-model="from_username" v-model="from_username"
class="full-width" class="full-width"
readonly readonly
> >
</q-input> </q-input>
<div <div
v-else-if="tipoConto === costanti.AccountType.COLLECTIVE_ACCOUNT" v-else-if="
tipoConto === shared_consts.AccountType.COLLECTIVE_ACCOUNT
"
> >
<q-select <q-select
v-model="from_groupname" v-model="from_groupname"
@@ -89,7 +87,11 @@
<!-- Mostra i gruppi su cui sei Admin --> <!-- Mostra i gruppi su cui sei Admin -->
</q-select> </q-select>
</div> </div>
<div v-else-if="tipoConto === costanti.AccountType.COMMUNITY_ACCOUNT"> <div
v-else-if="
tipoConto === shared_consts.AccountType.COMMUNITY_ACCOUNT
"
>
<q-input <q-input
v-model="from_contocom" v-model="from_contocom"
:label="$t('circuit.contocom')" :label="$t('circuit.contocom')"
@@ -247,16 +249,16 @@
? !( ? !(
qtyRef.hasError || qtyRef.hasError ||
!circuitloaded.transactionsEnabled || !circuitloaded.transactionsEnabled ||
(tipoConto === costanti.AccountType.USER && (tipoConto === shared_consts.AccountType.USER &&
to_user && to_user &&
from_username === to_user.username) || from_username === to_user.username) ||
(tipoConto === costanti.AccountType.COLLECTIVE_ACCOUNT && (tipoConto === shared_consts.AccountType.COLLECTIVE_ACCOUNT &&
!from_groupname) || !from_groupname) ||
(tipoConto === costanti.AccountType.COLLECTIVE_ACCOUT && (tipoConto === shared_consts.AccountType.COLLECTIVE_ACCOUT &&
to_group && to_group &&
from_groupname && from_groupname &&
to_group.groupname === from_groupname) || to_group.groupname === from_groupname) ||
(tipoConto === costanti.AccountType.COMMUNITY_ACCOUNT && (tipoConto === shared_consts.AccountType.COMMUNITY_ACCOUNT &&
!from_contocom) !from_contocom)
) )
: true) : true)

View File

@@ -34,7 +34,7 @@ export default defineComponent({
const usersList = ref(<any>{ show: false, title: '', list: [], listgroup: [] }) const usersList = ref(<any>{ show: false, title: '', list: [], listgroup: [] })
const tipoConto = ref(costanti.AccountType.USER) const tipoConto = ref(shared_consts.AccountType.USER)
const loading = ref(false) const loading = ref(false)
const circuitpath = computed(() => { const circuitpath = computed(() => {
const circ = circuitStore.getCircuitByProvinceAndCard(userStore.my.profile.resid_province, userStore.my.profile.resid_card) const circ = circuitStore.getCircuitByProvinceAndCard(userStore.my.profile.resid_province, userStore.my.profile.resid_card)
@@ -46,11 +46,11 @@ export default defineComponent({
const arrTypesAccounts = ref(<any>[ const arrTypesAccounts = ref(<any>[
{ {
label: t('circuit.user'), label: t('circuit.user'),
value: costanti.AccountType.USER, value: shared_consts.AccountType.USER,
}, },
{ {
label: t('circuit.conticollettivi'), label: t('circuit.conticollettivi'),
value: costanti.AccountType.COLLECTIVE_ACCOUNT, value: shared_consts.AccountType.COLLECTIVE_ACCOUNT,
} }
]) ])

View File

@@ -75,7 +75,7 @@
:options="arrTypesAccounts" :options="arrTypesAccounts"
/> />
<div v-if="tipoConto === costanti.AccountType.USER"> <div v-if="tipoConto === shared_consts.AccountType.USER">
<div v-for="(rec, i) in usersList.list" :key="i"> <div v-for="(rec, i) in usersList.list" :key="i">
<CMyUser <CMyUser
:mycontact="rec" :mycontact="rec"
@@ -86,7 +86,9 @@
</div> </div>
</div> </div>
<div <div
v-else-if="tipoConto === costanti.AccountType.COLLECTIVE_ACCOUNT" v-else-if="
tipoConto === shared_consts.AccountType.COLLECTIVE_ACCOUNT
"
> >
<div v-for="(grp, i) in usersList.listgroup" :key="i"> <div v-for="(grp, i) in usersList.listgroup" :key="i">
<CMyGroup :mygrp="grp" :visu="costanti.USER_GROUPS" :noaut="true"> <CMyGroup :mygrp="grp" :visu="costanti.USER_GROUPS" :noaut="true">

View File

@@ -113,7 +113,7 @@ export default defineComponent({
tools.checkApp() tools.checkApp()
if ($q.screen.lt.sm) { if ($q.screen.lt.sm) {
globalStore.setleftDrawerOpen(false) // globalStore.setleftDrawerOpen(false)
} }
if (riscode === tools.OK) { if (riscode === tools.OK) {
if (userStore.isLogged) { if (userStore.isLogged) {

View File

@@ -1,3 +1,9 @@
.index_diffusore { .index_diffusore {
font-size: 1rem; font-size: 1rem;
} }
.flex-container {
display: flex;
justify-content: space-between;
/* Distribuisce gli elementi uniformemente */
}

View File

@@ -28,8 +28,10 @@ import { useRouter } from 'vue-router'
export default defineComponent({ export default defineComponent({
name: 'CStatusReg', name: 'CStatusReg',
props: {}, props: {},
components: { CTitleBanner, CElemStat, components: {
CCardState, CCardStat, CLineChart, CMyFieldRec, CTimeAgo }, CTitleBanner, CElemStat,
CCardState, CCardStat, CLineChart, CMyFieldRec, CTimeAgo
},
setup(props, { attrs, slots, emit }) { setup(props, { attrs, slots, emit }) {
const { t } = useI18n() const { t } = useI18n()
const $q = useQuasar() const $q = useQuasar()
@@ -52,6 +54,7 @@ export default defineComponent({
num_reg: 0, num_reg: 0,
num_reg_today: 0, num_reg_today: 0,
online_today: 0, online_today: 0,
activeusers: 0,
num_passeggeri: 0, num_passeggeri: 0,
num_imbarcati: 0, num_imbarcati: 0,
num_teleg_attivo: 0, num_teleg_attivo: 0,
@@ -66,7 +69,13 @@ export default defineComponent({
strettelist: [], strettelist: [],
receiveRislist: [], receiveRislist: [],
receiveRislistgroup: [], receiveRislistgroup: [],
checkuser: { verified_email: false } checkuser: { verified_email: false },
num_transaz_tot: 0,
tot_RIS_transati: 0,
num_circuiti_attivi: 0,
num_circuiti: 0,
num_annunci: 0,
last_transactions: [],
}) })
const visustat = computed(() => { const visustat = computed(() => {
@@ -113,7 +122,7 @@ export default defineComponent({
function checkifpolling() { function checkifpolling() {
if (userStore.my.profile) { if (userStore.my.profile) {
//if (!tools.isUserOk() && tools.appid() === tools.IDAPP_RISO) //if (!tools.isUserOk() && tools.appid() === tools.IDAPP_RISO)
// NUMSEC_TO_POLLING.value = 10 // NUMSEC_TO_POLLING.value = 10
} }
if (eseguipolling.value) { if (eseguipolling.value) {

View File

@@ -7,28 +7,78 @@
bgcolor="bg-primary" bgcolor="bg-primary"
clcolor="text-white" clcolor="text-white"
mystyle="" mystyle=""
myclass="myshad" myclass="sfondo_gradiente_blu myshad"
:canopen="true" :canopen="true"
> >
<div class="flex flex-center"> <div class="flex flex-center">
<CElemStat <CElemStat
myclass="fixed-size"
:title="$t('statusreg.reg')" :title="$t('statusreg.reg')"
icon="fas fa-users" icon="fas fa-users"
:value_today="datastat.num_reg_today" :value_today="datastat.num_reg_today"
:mytextval="datastat.num_reg" :mytextval="
classColor="text-blue" datastat.activeusers + ' su ' + tools.numtostr(datastat.num_reg)
"
classColor="text-red"
colBack="green" colBack="green"
> >
</CElemStat> </CElemStat>
<CElemStat <CElemStat
v-if="true"
myclass="fixed-size"
:title="$t('statusreg.online_today')" :title="$t('statusreg.online_today')"
icon="fas fa-wifi" icon="fas fa-wifi"
:mytextval="datastat.online_today" :mytextval="datastat.online_today"
classColor="text-orange"
colBack="yellow"
>
</CElemStat>
<CElemStat
myclass="fixed-size"
v-f="datastat.num_annunci > 0"
:title="$t('statusreg.num_annunci')"
icon="fas fa-tshirt"
:value_today="0"
:mytextval="tools.numtostr(datastat.num_annunci)"
classColor="text-green" classColor="text-green"
colBack="orange"
>
</CElemStat>
<CElemStat
myclass="fixed-size"
v-f="datastat.num_circuiti_attivi > 0"
:title="$t('statusreg.num_circuiti_attivi')"
icon="fas fa-map-marker-alt"
:value_today="0"
:mytextval="
datastat.num_circuiti_attivi + ' su ' + datastat.num_circuiti
"
classColor="text-blue"
colBack="red" colBack="red"
> >
</CElemStat> </CElemStat>
<CElemStat
myclass="fixed-size"
v-f="datastat.num_transaz_tot > 0"
:title="$t('statusreg.numtransazioni')"
icon="fas fa-sync-alt"
:value_today="0"
:mytextval="tools.numtostr(datastat.num_transaz_tot)"
classColor="text-indigo"
colBack="green"
>
</CElemStat>
<CElemStat
myclass="fixed-size"
v-f="datastat.tot_RIS_transati > 0"
:title="$t('statusreg.totristransati')"
icon="img: images/1ris_rosso_100.png"
:value_today="0"
:mytextval="tools.numtostr(datastat.tot_RIS_transati) + ' RIS'"
classColor="text-blueviolet"
colBack="green"
>
</CElemStat>
<!--<CCardState :mytext="$t('statusreg.autorizzare')" :myval="datastat.num_autorizzare" <!--<CCardState :mytext="$t('statusreg.autorizzare')" :myval="datastat.num_autorizzare"
mycolor="yellow" :myperc="(datastat.num_autorizzare / datastat.num_teleg_attivo) * 100"></CCardState> mycolor="yellow" :myperc="(datastat.num_autorizzare / datastat.num_teleg_attivo) * 100"></CCardState>
@@ -78,7 +128,7 @@
<q-tab-panels v-model="mytab" animated> <q-tab-panels v-model="mytab" animated>
<q-tab-panel name="reg"> <q-tab-panel name="reg">
<div class="q-pa-md" style="max-width: 350px; margin: auto;"> <div class="q-pa-md" style="max-width: 350px; margin: auto">
<transition-group <transition-group
name="fade" name="fade"
mode="out-in" mode="out-in"
@@ -117,7 +167,7 @@
</div> </div>
</q-tab-panel> </q-tab-panel>
<q-tab-panel name="online"> <q-tab-panel name="online">
<div class="q-pa-md" style="max-width: 350px; margin: auto;"> <div class="q-pa-md" style="max-width: 350px; margin: auto">
<q-list bordered> <q-list bordered>
<transition-group <transition-group
name="fade" name="fade"
@@ -171,7 +221,7 @@
</div> </div>
</q-tab-panel> </q-tab-panel>
<q-tab-panel name="diffusori"> <q-tab-panel name="diffusori">
<div class="q-pa-md" style="max-width: 350px; margin: auto;"> <div class="q-pa-md" style="max-width: 350px; margin: auto">
<div class="text-center text-bold text-h6"> <div class="text-center text-bold text-h6">
Aiuta RISO a crescere Aiuta RISO a crescere
</div> </div>
@@ -234,7 +284,7 @@
</div> </div>
</q-tab-panel> </q-tab-panel>
<q-tab-panel name="strettelist"> <q-tab-panel name="strettelist">
<div class="q-pa-md" style="max-width: 350px; margin: auto;"> <div class="q-pa-md" style="max-width: 350px; margin: auto">
<div class="text-center text-bold text-h6"> <div class="text-center text-bold text-h6">
Strette di Mano Strette di Mano
</div> </div>

View File

@@ -6,3 +6,31 @@
padding-left: 2px; padding-left: 2px;
padding-right: 2px; padding-right: 2px;
} }
.profile-image {
width: 28px;
/* Puoi modificare la dimensione in base alle tue esigenze */
height: 28px;
/* Stesso valore per altezza */
border-radius: 50%;
/* Questo rende l'immagine rotonda */
object-fit: cover;
/* Questo mantiene le proporzioni dell'immagine */
margin-right: 8px;
/* Spazio tra l'immagine e il testo */
align-items: center;
}
.my-route-tab {
display: flex;
align-items: center;
/* Allineamento verticale */
}
.profile-label {
text-align: center;
/* Centra il testo sotto l'immagine */
font-size: 0.9rem;
/* Dimensione del testo */
}

View File

@@ -29,7 +29,8 @@ export default defineComponent({
const site = computed(() => globalStore.site) const site = computed(() => globalStore.site)
const { getMyUsername, Username } = MixinUsers()
const { getMyUsername, Username, getMyImg } = MixinUsers()
function mounted() { function mounted() {
// mounted // mounted
@@ -45,6 +46,7 @@ export default defineComponent({
Username, Username,
tools, tools,
site, site,
getMyImg,
} }
}, },

View File

@@ -1,7 +1,9 @@
<template> <template>
<q-footer <q-footer
v-if="tools.isUserOk() && site && site.confpages" :class="($q.dark.isActive v-if="tools.isUserOk() && site && site.confpages"
? `bg-black` : `bg-white`) + ` small-screen-only`" bordered > :class="($q.dark.isActive ? `bg-black` : `bg-white`) + ` small-screen-only`"
bordered
>
<q-toolbar> <q-toolbar>
<q-toolbar-title> <q-toolbar-title>
<q-tabs <q-tabs
@@ -77,8 +79,8 @@
v-if="site.confpages.showViewProfile" v-if="site.confpages.showViewProfile"
class="mylabfooter" class="mylabfooter"
:label="$t('tabdown.profile')" :label="$t('tabdown.profile')"
:to="`/my/` + getMyUsername()" @click="globalStore.rightDrawerOpen = true"
icon="person" :icon="getMyImg() ? `img: ` + getMyImg() : `fas fa-user`"
/> />
</q-tabs> </q-tabs>
</q-toolbar-title> </q-toolbar-title>

View File

@@ -1,6 +1,6 @@
import { useQuasar } from 'quasar' import { useQuasar } from 'quasar'
import { import {
defineComponent, onBeforeMount, onBeforeUnmount, onMounted, ref, toRefs, watch, inject, computed, defineComponent, onBeforeMount, onBeforeUnmount, onMounted, ref, toRefs, watch, inject, computed, nextTick,
} from 'vue' } from 'vue'
import { tools } from '@store/Modules/tools' import { tools } from '@store/Modules/tools'
@@ -80,6 +80,8 @@ export default defineComponent({
const dark = ref(false) const dark = ref(false)
const leftDrawerOpen = ref(globalStore.leftDrawerOpen)
const getClassColorHeader = computed(() => { const getClassColorHeader = computed(() => {
// if (tools.isTest()) return 'bg-light-blue' // if (tools.isTest()) return 'bg-light-blue'
// if (tools.isDebug()) return 'bg-info' // if (tools.isDebug()) return 'bg-info'
@@ -261,12 +263,13 @@ export default defineComponent({
globalStore.rightCoinsOpen = false globalStore.rightCoinsOpen = false
} }
const leftDrawerOpen = computed({ /*const leftDrawerOpen = computed({
get: () => globalStore.leftDrawerOpen, get: () => globalStore.leftDrawerOpen,
set: val => { set: val => {
globalStore.leftDrawerOpen = val globalStore.leftDrawerOpen = val
}, },
}) })*/
const rightDrawerOpen = computed({ const rightDrawerOpen = computed({
get: () => globalStore.rightDrawerOpen, get: () => globalStore.rightDrawerOpen,
@@ -447,6 +450,7 @@ export default defineComponent({
// Test this by running the code snippet below and then // Test this by running the code snippet below and then
// use the "TableOnlyView" checkbox in DevTools Network panel // use the "TableOnlyView" checkbox in DevTools Network panel
// console.log('Event LOAD') // console.log('Event LOAD')
if (window) { if (window) {
window.addEventListener('load', () => { window.addEventListener('load', () => {
@@ -470,6 +474,23 @@ export default defineComponent({
window.addEventListener('offline', updateOnlineStatus) window.addEventListener('offline', updateOnlineStatus)
}) })
} }
nextTick(() => {
if (tools.getCookie('menu3oriz') === '1') {
if ($q.screen.width < 800) {
leftDrawerOpen.value = false
// globalStore.leftDrawerOpen = false
} else {
leftDrawerOpen.value = true
globalStore.leftDrawerOpen = true
}
}
else if (tools.getCookie('menu3oriz') === '0') {
leftDrawerOpen.value = false
globalStore.leftDrawerOpen = false
}
})
} }
function imglogo() { function imglogo() {
@@ -535,6 +556,14 @@ export default defineComponent({
globalStore.changeCmdClick(value) globalStore.changeCmdClick(value)
} }
function clickMenu3Orizz() {
leftDrawerOpen.value = !leftDrawerOpen.value
globalStore.leftDrawerOpen = leftDrawerOpen.value
tools.setCookie('menu3oriz', globalStore.leftDrawerOpen ? '1' : '0')
}
onBeforeMount(BeforeMount) onBeforeMount(BeforeMount)
onMounted(mounted) onMounted(mounted)
@@ -600,6 +629,7 @@ export default defineComponent({
toHome, toHome,
products, products,
userStore, userStore,
clickMenu3Orizz,
} }
}, },

View File

@@ -13,13 +13,7 @@
:inverted="$q.theme === 'ios'" :inverted="$q.theme === 'ios'"
class="toolbar" class="toolbar"
> >
<q-btn <q-btn flat dense round @click="clickMenu3Orizz" aria-label="Menu">
flat
dense
round
@click="leftDrawerOpen = !leftDrawerOpen"
aria-label="Menu"
>
<q-icon name="menu" /> <q-icon name="menu" />
</q-btn> </q-btn>
@@ -196,7 +190,8 @@
site.confpages && site.confpages &&
site.confpages.showUserMenu && site.confpages.showUserMenu &&
tools.isLogged() && tools.isLogged() &&
getMyImg() getMyImg() &&
$q.screen.gt.sm
" "
size="36px" size="36px"
class="center_img cursor-pointer" class="center_img cursor-pointer"
@@ -212,7 +207,7 @@
/> />
</q-avatar> </q-avatar>
<q-btn <q-btn
v-else v-else-if="$q.screen.gt.sm"
class="q-mx-xs iconprofile_small" class="q-mx-xs iconprofile_small"
round round
dense dense
@@ -228,7 +223,7 @@
<q-drawer <q-drawer
side="left" side="left"
bordered bordered
show-if-above :show-if-above="globalStore.leftDrawerOpen"
:breakpoint="800" :breakpoint="800"
v-model="leftDrawerOpen" v-model="leftDrawerOpen"
:content-class="['bg-grey-1', 'q-pa-sm']" :content-class="['bg-grey-1', 'q-pa-sm']"
@@ -257,7 +252,7 @@
</q-btn> </q-btn>
<CSelectUserActive></CSelectUserActive> <CSelectUserActive></CSelectUserActive>
<div v-if="tools.isLogged()" class="text-weight-bold text-cart"> <div v-if="tools.isLogged()" class="text-weight-bold text-cart">
{{ $t('ecomm.carrello_di', { user: products.userActive.username }) }} {{ $t('ecomm.carrello_di', { user: products.userActive.username }) }}
</div> </div>
@@ -287,7 +282,7 @@
`text-center q-ma-xs boldhigh text-` + getColorText + ` text-h7` `text-center q-ma-xs boldhigh text-` + getColorText + ` text-h7`
" "
> >
Area Personale {{ t('header.area_personale') }}
</div> </div>
<q-avatar size="80px" class="center_img q-ma-md"> <q-avatar size="80px" class="center_img q-ma-md">
@@ -400,7 +395,7 @@
> >
&nbsp;{{ t('otherpages.myactivities') }} &nbsp;{{ t('otherpages.myactivities') }}
</q-btn> </q-btn>
<!--<q-btn round color="warning" icon="lock"></q-btn>-->
<q-btn <q-btn
rounded rounded
color="negative" color="negative"

View File

@@ -336,13 +336,12 @@ h3 {
.my-card { .my-card {
width: 100%; width: 100%;
max-width: 700px !important;
min-width: 350px; min-width: 350px;
padding: 1rem 1rem; padding: 1rem 1rem;
@media (max-width: 700px) { @media (max-width: 1024px) {
/* Versione Mobile */ /* Versione Mobile */
max-width: 400px !important; max-width: 1024px !important;
min-width: 250px; min-width: 250px;
} }
@@ -962,11 +961,10 @@ h3 {
width: 100%; width: 100%;
margin-left: auto; margin-left: auto;
margin-right: auto; margin-right: auto;
max-width: 700px;
min-width: 800px; min-width: 800px;
@media (max-width: 500px) { @media (max-width: 1024px) {
max-width: 350px; max-width: 1024px;
min-width: 300px; min-width: 300px;
} }
@@ -1837,12 +1835,12 @@ h3 {
.fulldiv { .fulldiv {
min-height: 100% !important; min-height: 100% !important;
max-width: 700px !important; max-width: 1024px !important;
min-width: 700px !important; min-width: 1024px !important;
@media (max-width: 700px) { @media (max-width: 1024px) {
/* Versione Mobile */ /* Versione Mobile */
max-width: 400px !important; max-width: 1024px !important;
min-width: 300px !important; min-width: 300px !important;
} }
} }
@@ -2106,4 +2104,170 @@ h3 {
/* Distanza dal lato */ /* Distanza dal lato */
z-index: 1000; z-index: 1000;
/* Opzionale: assicura che il bottone sia sopra altri elementi */ /* Opzionale: assicura che il bottone sia sopra altri elementi */
}
.text-blueviolet {
color: blueviolet;
}
$verde: #008000;
$blu: blue;
$rosso: #ff0000;
$trasparenza: 0.15;
$coloreprincipale: lightblue;
.sfondo_gradiente_blu {
background: linear-gradient(180deg, rgba(0, 70, 255, 0.25), rgba(0, 70, 275, 0.55), rgba(0, 70, 255, 0.75)) !important;
}
.sfondo_gradiente_fuchsia {
background: linear-gradient(180deg, rgba(255, 0, 150, 0.25), rgba(255, 0, 150, 0.55), rgba(255, 0, 150, 0.75)) !important;
}
.sfondo_gradiente_verde {
background: linear-gradient(180deg, rgba(12, 181, 12, 0.852)rgba(4, 185, 4, 0.55), rgba(12, 181, 12, 0.852)) !important;
}
.sfondo_trasparente {
background: rgba(0, 0, 0, 0.05) !important;
}
.sfondo_gradiente_arancione {
background: linear-gradient(180deg, rgba(255, 165, 0, 0.25), rgba(255, 165, 0, 0.55), rgba(255, 165, 0, 0.75)) !important;
}
.sfondo_gradiente_giallo {
background: linear-gradient(180deg, rgba(255, 255, 0, 0.25), rgba(255, 255, 0, 0.55), rgba(255, 255, 0, 0.75)) !important;
}
.sfondo_gradiente_rosso {
background: linear-gradient(180deg, rgba(red($rosso), green($rosso), blue($rosso), $trasparenza), $coloreprincipale, rgba(red($rosso), green($rosso), blue($rosso), $trasparenza)) !important;
}
.card-carousel-container {
width: 100%;
overflow: hidden;
position: relative;
}
.card-carousel {
display: flex;
overflow-x: auto;
scroll-snap-type: x mandatory;
-webkit-overflow-scrolling: touch;
scrollbar-width: none;
-ms-overflow-style: none;
padding: 1rem 0;
}
.card-carousel::-webkit-scrollbar {
display: none;
}
.my-card-elem {
flex: 0 0 auto;
margin-right: 1rem;
scroll-snap-align: start;
overflow: hidden;
transition: transform 0.3s ease;
}
.my-card-elem:hover {
transform: scale(1.05);
}
.img-container {
/*height: 150px; */
overflow: hidden;
}
.img-container .q-img {
height: 100%;
object-fit: cover;
}
.swipe-indicator {
position: absolute;
top: 50%;
transform: translateY(-50%);
background-color: rgba(0, 0, 0, 0.5);
border-radius: 50%;
width: 40px;
height: 40px;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
transition: opacity 0.3s ease;
}
.swipe-indicator.left {
left: 10px;
}
.swipe-indicator.right {
right: 10px;
}
.scroll-indicator {
display: flex;
justify-content: center;
margin-top: 1rem;
}
.dot {
width: 8px;
height: 8px;
border-radius: 50%;
background-color: #ccc;
margin: 0 4px;
transition: background-color 0.3s ease;
}
.dot.active {
background-color: #000;
}
.image-circle {
border-radius: 50%;
/* Rende l'immagine rotonda */
object-fit: cover;
/* Mantiene le proporzioni dell'immagine */
overflow: hidden;
/* Nasconde eventuali parti in eccesso */
}
.image-ombra {
box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
}
.image-round-bordered {
border-radius: 22px;
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.5);
object-fit: cover;
border: 2px solid #6b6e68a1;
}
/* Per aggiungere un effetto di transizione al passaggio del mouse */
.image-round-bordered:hover {
box-shadow: 0 8px 25px rgba(0, 0, 0, 0.7);
/* Ombra più marcata al passaggio del mouse */
transform: scale(1.05);
/* Effetto di zoom al passaggio del mouse */
transition: all 0.3s ease;
/* Transizione fluida */
}
.titolo_card:hover {
color: blue;
text-decoration: underline;
cursor: pointer;
}
.mylabfooter img {
border-radius: 50%;
object-fit: cover;
} }

View File

@@ -121,6 +121,12 @@ const msg_website_it = {
only_residenti: 'Solo Residenti', only_residenti: 'Solo Residenti',
only_consiglio: 'Solo Consiglieri', only_consiglio: 'Solo Consiglieri',
color: 'Colore', color: 'Colore',
mainMenu: 'Menu Principale',
subtitle: 'Sottotitolo',
lang: 'Lingua',
keywords: 'Parole Chiave',
desctiption: 'Descrizione',
heightimg: 'Altezza Immagine',
}, },
msg: { msg: {
myAppName: 'Riso', myAppName: 'Riso',

View File

@@ -209,7 +209,7 @@ function getDynamicPages(site: ISites): IListRoutes[] {
meta: { requiresAuth: true, newpage: true }, meta: { requiresAuth: true, newpage: true },
inmenu: false, inmenu: false,
infooter: false, infooter: false,
}, },
{ {
active: true, active: true,
order: 137, order: 137,
@@ -276,7 +276,7 @@ function getDynamicPages(site: ISites): IListRoutes[] {
{ {
active: true, active: true,
order: 150, order: 150,
path: '/fundraising', path: '/sostieniilprogetto',
materialIcon: 'fas fa-hand-holding-heart', materialIcon: 'fas fa-hand-holding-heart',
name: 'pages.fundraising', name: 'pages.fundraising',
component: () => import('@src/root/fundraising/fundraising.vue'), component: () => import('@src/root/fundraising/fundraising.vue'),

View File

@@ -0,0 +1,356 @@
<template>
<div v-if="finishLoading" class="no-border">
<q-list class="rounded-borders text-primary">
<div v-for="ind1 in getmenu" :key="ind1">
<!--<div class="q-list-header">{{replaceUnderlineToSpace(index)}}</div>-->
<div v-for="(myitemmenu, ind2) in myroutes" :key="ind2">
<div v-if="myitemmenu.active">
<div
v-if="
myitemmenu.routes2 &&
myitemmenu.inmenu &&
tools.visumenu(myitemmenu)
"
>
<span v-if="myitemmenu.isseparator">
<q-separator></q-separator>
</span>
<span v-else>
<q-expansion-item
:content-inset-level="myitemmenu.level_parent"
:header-class="getmymenuclass(myitemmenu)"
:header-inset-level="myitemmenu.level_parent"
:icon="myitemmenu.materialIcon"
:label="tools.getLabelByItem(myitemmenu)"
active-class="my-menu-active"
expand-icon-class="my-menu-separat"
>
<div
v-for="(child2, index) in myitemmenu.routes2"
:key="index"
>
<div v-if="child2.active && tools.visumenu(child2)">
<span v-if="child2.isseparator">
<q-separator></q-separator>
</span>
<span v-else>
<q-expansion-item
v-if="!child2.routes2"
:class="
`item item-link drawer-closer cursor-pointer ` +
clBase
"
:duration="300"
:header-inset-level="child2.level_child"
:icon="child2.materialIcon"
:label="tools.getLabelByItem(child2)"
:to="getroute(child2)"
active-class="my-menu-active"
expand-icon="none"
expand-icon-class="my-menu-icon-none"
>
<q-item-section avatar>
<q-avatar v-if="child2.img">
<div
:class="getimgiconclass(child2)"
:icon="`img:` + child2.img"
style="font-size: 2rem"
></div>
</q-avatar>
<div v-else>
<q-avatar
:icon="child2.materialIcon"
:size="child2.iconsize"
class="clicon"
color="primary"
text-color="white"
>
</q-avatar>
</div>
</q-item-section>
<q-item-section>
{{ tools.getLabelByItem(child2) }}
</q-item-section>
</q-expansion-item>
<q-expansion-item
v-else
:content-inset-level="child2.level_parent"
:header-class="getmymenuclass(child2)"
:header-inset-level="child2.level_parent"
:icon="child2.materialIcon"
:label="tools.getLabelByItem(child2)"
active-class="my-menu-active"
expand-icon-class="my-menu-separat"
>
<div
v-for="(child3, index) in child2.routes2"
:key="index"
>
<div v-if="child3.active">
<q-expansion-item
:class="
`item item-link drawer-closer cursor-pointer ` +
clBase
"
:duration="300"
:header-inset-level="child3.level_child"
:icon="child3.materialIcon"
:label="tools.getLabelByItem(child3)"
:to="getroute(child3)"
active-class="my-menu-active"
expand-icon-class="my-menu-icon-none"
>
<div
v-for="(child4, index) in child3.routes2"
:key="index"
>
<q-expansion-item
v-if="!!child3.routes2 && child3.active"
:key="index"
:class="
`item item-link drawer-closer cursor-pointer ` +
clBase
"
:duration="300"
:expand-icon="child4.icon"
:header-inset-level="child4.level_child"
:icon="child4.materialIcon"
:label="tools.getLabelByItem(child4)"
:to="getroute(child4)"
active-class="my-menu-active"
expand-icon-class="my-menu-separat"
>
</q-expansion-item>
</div>
</q-expansion-item>
</div>
</div>
</q-expansion-item>
</span>
</div>
</div>
</q-expansion-item>
</span>
</div>
<div
v-else-if="
myitemmenu.mainMenu &&
myitemmenu.inmenu &&
tools.visumenu(myitemmenu)
"
>
<span v-if="myitemmenu.isseparator">
<q-separator></q-separator>
</span>
<span v-else>
<q-expansion-item
:content-inset-level="myitemmenu.level_parent + 1"
:header-class="getmymenuclass(myitemmenu)"
:header-inset-level="myitemmenu.level_parent + 1"
:icon="myitemmenu.materialIcon"
:label="tools.getLabelByItem(myitemmenu)"
active-class="my-menu-active"
expand-icon-class="my-menu-separat"
>
<div
v-for="(child2, index) in myitemmenu.sottoMenu"
:key="index"
>
<div
v-if="
getmenuByPath(child2).active &&
tools.visumenu(getmenuByPath(child2))
"
>
<span v-if="getmenuByPath(child2).isseparator">
<q-separator></q-separator>
</span>
<span v-else>
<q-expansion-item
v-if="true"
:class="
`item item-link drawer-closer cursor-pointer ` +
clBase
"
:duration="300"
:header-inset-level="
getmenuByPath(child2).level_child + 3
"
:icon="getmenuByPath(child2).materialIcon"
:label="tools.getLabelByItem(getmenuByPath(child2))"
:to="getroute(getmenuByPath(child2))"
active-class="my-menu-active"
expand-icon="none"
expand-icon-class="my-menu-icon-none"
>
<q-item-section avatar>
<q-avatar v-if="getmenuByPath(child2).img">
<div
:class="getimgiconclass(getmenuByPath(child2))"
:icon="`img:` + getmenuByPath(child2).img"
style="font-size: 2rem"
></div>
</q-avatar>
<div v-else>
<q-avatar
:icon="getmenuByPath(child2).materialIcon"
:size="getmenuByPath(child2).iconsize"
class="clicon"
color="primary"
text-color="white"
>
</q-avatar>
</div>
</q-item-section>
<q-item-section>
{{ tools.getLabelByItem(getmenuByPath(child2)) }}
</q-item-section>
</q-expansion-item>
<q-expansion-item
v-else
:content-inset-level="
getmenuByPath(child2).level_parent + 1
"
:header-class="getmymenuclass(getmenuByPath(child2))"
:header-inset-level="
getmenuByPath(child2).level_parent + 2
"
:icon="getmenuByPath(child2).materialIcon"
:label="tools.getLabelByItem(getmenuByPath(child2))"
active-class="my-menu-active"
expand-icon-class="my-menu-separat"
>
<div
v-for="(child3, index) in getmenuByPath(child2)
.sottoMenu"
:key="index"
>
<div v-if="getmenuByPath(child3).active">
<q-expansion-item
:class="
`item item-link drawer-closer cursor-pointer ` +
clBase
"
:duration="300"
:header-inset-level="
getmenuByPath(child3).level_child + 1
"
:icon="getmenuByPath(child3).materialIcon"
:label="
tools.getLabelByItem(getmenuByPath(child3))
"
:to="getroute(getmenuByPath(child3))"
active-class="my-menu-active"
expand-icon-class="my-menu-icon-none"
>
<div
v-for="(child4, index) in getmenuByPath(
child3
).sottoMenu"
:key="index"
>
<q-expansion-item
v-if="
!!getmenuByPath(child3).sottoMenu &&
getmenuByPath(child3).active
"
:key="index"
:class="
`item item-link drawer-closer cursor-pointer ` +
clBase
"
:duration="300"
:expand-icon="child4.icon"
:header-inset-level="child4.level_child + 4"
:icon="child4.materialIcon"
:label="tools.getLabelByItem(child4)"
:to="getroute(child4)"
active-class="my-menu-active"
expand-icon-class="my-menu-separat"
>
</q-expansion-item>
</div>
</q-expansion-item>
</div>
</div>
</q-expansion-item>
</span>
</div>
</div>
</q-expansion-item>
</span>
</div>
<div v-else>
<div
v-if="
myitemmenu.inmenu &&
!myitemmenu.submenu &&
tools.visumenu(myitemmenu)
"
>
<q-slide-transition :duration="200">
<div v-show="true">
<span v-if="myitemmenu.isseparator">
<q-separator inset></q-separator>
</span>
<span v-else>
<q-list>
<q-item
clickable
:content-inset-level="myitemmenu.level_parent"
:header-inset-level="myitemmenu.level_parent"
:to="getroute(myitemmenu)"
active-class="my-menu-active"
expand-icon="none"
>
<q-item-section thumbnail>
<q-avatar
:icon="myitemmenu.materialIcon"
:size="
!!myitemmenu.iconsize
? myitemmenu.iconsize
: '2.5rem'
"
:font-size="
!!myitemmenu.iconsize
? myitemmenu.iconsize
: '2.5rem'
"
text-color="primary"
style="margin-left: 4px"
square
rounded
>
</q-avatar>
</q-item-section>
<q-item-section>
<span :class="myitemmenu.extraclass">{{
tools.getLabelByItem(myitemmenu)
}}</span>
<span v-if="myitemmenu.subtitle" class="subtitle">{{
myitemmenu.subtitle
}}</span>
</q-item-section>
</q-item>
</q-list>
</span>
</div>
</q-slide-transition>
</div>
</div>
</div>
</div>
</div>
</q-list>
</div>
</template>
<script lang="ts" src="./menuOne.ts">
</script>
<style lang="scss">
@import './menuOne.scss';
</style>

View File

@@ -1,6 +1,7 @@
.prova{ .prova {
color: red; color: red;
} }
.q-list-header { .q-list-header {
min-height: 12px; min-height: 12px;
padding: 5px 8px; padding: 5px 8px;
@@ -42,13 +43,15 @@
transform: rotate(-180deg); transform: rotate(-180deg);
} }
.my-menu, .my-menu > i{ .my-menu,
.my-menu>i {
min-height: 40px; min-height: 40px;
min-width: 26px; min-width: 26px;
font-size: 1rem; font-size: 1rem;
} }
.my-menu-small, .my-menu-small > i{ .my-menu-small,
.my-menu-small>i {
min-height: 40px; min-height: 40px;
min-width: 26px; min-width: 26px;
font-size: 0.75rem; font-size: 0.75rem;
@@ -56,35 +59,39 @@
.isAdmin { .isAdmin {
color: red !important; color: red !important;
background: linear-gradient(180deg, rgba(255, 0, 0, 0.15), white, rgba(255, 0, 0, 0.15));
} }
.isSocioResidente { .isSocioResidente {
color: darkgreen; color: darkgreen;
} }
.isCalendar { .isCalendar {}
.isDoc {
background: linear-gradient(180deg, rgba(152, 198, 226, 0.45), white, rgba(152, 198, 226, 0.45));
} }
.isManager { .isManager {
color: green !important; color: green !important;
background: linear-gradient(180deg, rgba(125, 151, 125, 0.273), white, rgba(0, 128, 0, 0.273));
} }
.isFacilitatore { .isFacilitatore {
color: #201a80; color: #201a80;
} }
.my-menu-icon{ .my-menu-icon {
min-width: 2px; min-width: 2px;
font-size: 1rem; font-size: 1rem;
} }
.my-menu-icon > i{ .my-menu-icon>i {
min-width: 26px; min-width: 26px;
font-size: 1.25rem; font-size: 1.25rem;
} }
.clexpansion{ .clexpansion {
min-width: 0 !important; min-width: 0 !important;
} }
@@ -92,24 +99,25 @@
background-color: rgba(174, 189, 241, 0.71); background-color: rgba(174, 189, 241, 0.71);
} }
.my-menu-separat > i{ .my-menu-separat>i {
min-width: 26px; min-width: 26px;
font-size: 1rem; font-size: 1rem;
} }
.my-menu-icon-none > i{ .my-menu-icon-none>i {
display: none; display: none;
} }
.clicon img, .clicon { .clicon img,
.clicon {
font-size: 16px; font-size: 16px;
} }
.q-item__section--avatar{ .q-item__section--avatar {
min-width: 30px; min-width: 30px;
} }
.OLD_q-item__section--side{ .OLD_q-item__section--side {
padding-right: 8px; padding-right: 8px;
} }
@@ -137,6 +145,7 @@
font-weight: bold; font-weight: bold;
text-shadow: 0.0512rem 0.052rem .01rem #555; text-shadow: 0.0512rem 0.052rem .01rem #555;
} }
.subtitle { .subtitle {
font-style: italic; font-style: italic;
} }

View File

@@ -6,16 +6,12 @@ import { useRoute } from 'vue-router'
import { static_data } from '@/db/static_data' import { static_data } from '@/db/static_data'
import { useUserStore } from '@store/UserStore' import { useUserStore } from '@store/UserStore'
import { CMenuItem } from '../../components/CMenuItem'
export default defineComponent({ export default defineComponent({
name: 'MenuOne', name: 'MenuOne',
props: {
clBase: {
type: String,
required: false,
default: 'my-menu',
},
},
components: { CMenuItem },
setup(props) { setup(props) {
const route = useRoute() const route = useRoute()
const userStore = useUserStore() const userStore = useUserStore()
@@ -29,10 +25,12 @@ export default defineComponent({
const myroutes = ref(<IListRoutes[]>[]) const myroutes = ref(<IListRoutes[]>[])
const getmenu = computed(() => globalStore.getmenu ) const getmenu = computed(() => globalStore.getmenu)
const islogged = computed(() => userStore.isLogged) const islogged = computed(() => userStore.isLogged)
const clBase = ref('my-menu')
function setParentVisibilityBasedOnRoute(parent: any) { function setParentVisibilityBasedOnRoute(parent: any) {
parent.routes.forEach((item: any) => { parent.routes.forEach((item: any) => {
if (path.value === item.path) { if (path.value === item.path) {
@@ -51,11 +49,11 @@ export default defineComponent({
myroutes.value = static_data.routes myroutes.value = static_data.routes
} }
watch(() => islogged.value,(to, from) => { watch(() => islogged.value, (to, from) => {
updatemenu() updatemenu()
}) })
watch(() => finishLoading.value,(to, from) => { watch(() => finishLoading.value, (to, from) => {
updatemenu() updatemenu()
}) })
@@ -78,7 +76,7 @@ export default defineComponent({
} }
function getmymenuclass(elem: IListRoutes) { function getmymenuclass(elem: IListRoutes) {
let menu: string = props.clBase let menu: string = clBase.value
if (elem.color) { if (elem.color) {
menu += ` ${elem.color}` menu += ` ${elem.color}`
@@ -111,6 +109,12 @@ export default defineComponent({
return 'clBase' return 'clBase'
} }
function getmenuByPath(path: string) {
const mymenufind = static_data.routes.find((menu: any) => menu.path === '/' + path)
return mymenufind
}
myroutes.value = static_data.routes myroutes.value = static_data.routes
return { return {
@@ -124,7 +128,8 @@ export default defineComponent({
myroutes, myroutes,
getimgiconclass, getimgiconclass,
getimgiconclass2, getimgiconclass2,
getmenuByPath,
clBase,
} }
}, },
}) })

View File

@@ -1,153 +1,24 @@
<template> <template>
<div v-if="finishLoading" class="no-border"> <div v-if="finishLoading" class="no-border">
<q-list class="rounded-borders text-primary"> <q-list class="rounded-borders text-primary">
<div v-for="ind1 in getmenu" :key="ind1"> <template v-for="menuItem in getmenu" :key="menuItem">
<!--<div class="q-list-header">{{replaceUnderlineToSpace(index)}}</div>--> <template v-for="(route, index) in myroutes" :key="index">
<div v-for="(myitemmenu, ind2) in myroutes" :key="ind2"> <CMenuItem
<div v-if="myitemmenu.active"> v-if="
<div v-if="myitemmenu.routes2 && myitemmenu.inmenu && tools.visumenu(myitemmenu)"> route.active &&
!route.submenu &&
<span v-if="myitemmenu.isseparator"> route.inmenu &&
<q-separator></q-separator> tools.visumenu(route)
</span> "
<span v-else> :item="route"
:getroute="getroute"
<q-expansion-item :getmymenuclass="getmymenuclass"
:content-inset-level="myitemmenu.level_parent" :getimgiconclass="getimgiconclass"
:header-class="getmymenuclass(myitemmenu)" :clBase="clBase"
:header-inset-level="myitemmenu.level_parent" :level="1"
:icon="myitemmenu.materialIcon" />
:label="tools.getLabelByItem(myitemmenu)" </template>
active-class="my-menu-active" </template>
expand-icon-class="my-menu-separat">
<div v-for="(child2, index) in myitemmenu.routes2" :key="index">
<div v-if="child2.active && tools.visumenu(child2)">
<span v-if="child2.isseparator">
<q-separator></q-separator>
</span>
<span v-else>
<q-expansion-item
v-if="!child2.routes2"
:class="`item item-link drawer-closer cursor-pointer ` + clBase"
:duration="300"
:header-inset-level="child2.level_child"
:icon="child2.materialIcon"
:label="tools.getLabelByItem(child2)"
:to="getroute(child2)"
active-class="my-menu-active"
expand-icon="none"
expand-icon-class="my-menu-icon-none">
<q-item-section avatar>
<q-avatar v-if="child2.img">
<div :class="getimgiconclass(child2)" :icon="`img:`+child2.img" style="font-size:2rem;"></div>
</q-avatar>
<div v-else>
<q-avatar
:icon="child2.materialIcon" :size="child2.iconsize" class="clicon"
color="primary"
text-color="white">
</q-avatar>
</div>
</q-item-section>
<q-item-section>
{{ tools.getLabelByItem(child2) }}
</q-item-section>
</q-expansion-item>
<q-expansion-item
v-else
:content-inset-level="child2.level_parent"
:header-class="getmymenuclass(child2)"
:header-inset-level="child2.level_parent"
:icon="child2.materialIcon"
:label="tools.getLabelByItem(child2)"
active-class="my-menu-active"
expand-icon-class="my-menu-separat">
<div v-for="(child3, index) in child2.routes2" :key="index">
<div v-if="child3.active">
<q-expansion-item
:class="`item item-link drawer-closer cursor-pointer ` + clBase"
:duration="300"
:header-inset-level="child3.level_child"
:icon="child3.materialIcon"
:label="tools.getLabelByItem(child3)"
:to="getroute(child3)"
active-class="my-menu-active"
expand-icon-class="my-menu-icon-none">
<div v-for="(child4, index) in child3.routes2" :key="index">
<q-expansion-item
v-if="!!child3.routes2 && child3.active"
:key="index"
:class="`item item-link drawer-closer cursor-pointer ` + clBase"
:duration="300"
:expand-icon="child4.icon"
:header-inset-level="child4.level_child"
:icon="child4.materialIcon"
:label="tools.getLabelByItem(child4)"
:to="getroute(child4)"
active-class="my-menu-active"
expand-icon-class="my-menu-separat">
</q-expansion-item>
</div>
</q-expansion-item>
</div>
</div>
</q-expansion-item>
</span>
</div>
</div>
</q-expansion-item>
</span>
</div>
<div v-else>
<div v-if="myitemmenu.inmenu && !myitemmenu.submenu && tools.visumenu(myitemmenu)">
<q-slide-transition :duration=200>
<div v-show="true">
<span v-if="myitemmenu.isseparator">
<q-separator inset></q-separator>
</span>
<span v-else>
<q-list>
<q-item clickable
:content-inset-level="myitemmenu.level_parent"
:header-inset-level="myitemmenu.level_parent"
:to="getroute(myitemmenu)"
active-class="my-menu-active"
expand-icon="none">
<q-item-section thumbnail>
<q-avatar
:icon="myitemmenu.materialIcon" :size="!!myitemmenu.iconsize ? myitemmenu.iconsize: '2.5rem'" :font-size="!!myitemmenu.iconsize ? myitemmenu.iconsize: '2.5rem'"
text-color="primary"
style="margin-left: 4px"
square
rounded>
</q-avatar>
</q-item-section>
<q-item-section>
<span :class="myitemmenu.extraclass">{{ tools.getLabelByItem(myitemmenu) }}</span>
<span v-if="myitemmenu.subtitle" class="subtitle">{{ myitemmenu.subtitle }}</span>
</q-item-section>
</q-item>
</q-list>
</span>
</div>
</q-slide-transition>
</div>
</div>
</div>
</div>
</div>
</q-list> </q-list>
</div> </div>
</template> </template>

View File

@@ -20,6 +20,7 @@ export interface INotData {
num_reg?: number num_reg?: number
num_reg_today?: number num_reg_today?: number
online_today?: number online_today?: number
activeusers?: number
num_passeggeri?: number num_passeggeri?: number
num_imbarcati?: number num_imbarcati?: number
email_non_verif?: number email_non_verif?: number
@@ -41,9 +42,13 @@ export interface INotData {
checkuser?: any // ICheckUser checkuser?: any // ICheckUser
numreg_untilday?: number numreg_untilday?: number
reg_daily?: string reg_daily?: string
imbarcati_daily?: string
imbarcati_weekly?: string
reg_weekly?: string reg_weekly?: string
num_transaz_tot?: number
tot_RIS_transati?: number
num_circuiti?: number
num_circuiti_attivi?: number
num_annunci?: number
last_transactions?: IMovement[]
} }
@@ -160,6 +165,8 @@ export interface IMyElem {
listcards?: IMyCard[] listcards?: IMyCard[]
catalogo?: ICatalogo catalogo?: ICatalogo
elemsText?: IElemText[] elemsText?: IElemText[]
titleBanner: string
classBanner: string
} }
export interface IElemText { export interface IElemText {
@@ -210,6 +217,8 @@ export interface IMyPage {
extraclass?: string extraclass?: string
loadFirst?: boolean loadFirst?: boolean
showFooter?: boolean showFooter?: boolean
mainMenu?: boolean
sottoMenu?: String[]
//Memory //Memory
loaded?: boolean loaded?: boolean
@@ -563,6 +572,8 @@ export interface IListRoutes {
idelem?: string idelem?: string
urlroute?: string urlroute?: string
img?: string img?: string
mainMenu?: boolean
sottoMenu?: String[]
// ------------------------ // ------------------------
faIcon?: string faIcon?: string
text?: string text?: string
@@ -657,6 +668,7 @@ export interface IMyCard {
color?: string color?: string
content?: string content?: string
colorsub?: string colorsub?: string
link?: string
} }
export interface ICatalogo { export interface ICatalogo {
@@ -1201,6 +1213,56 @@ export interface ICircuit {
account?: IAccount | null account?: IAccount | null
} }
export interface IMovUserProfile {
img: string
}
export interface IMovUserQuery {
verified_by_aportador: boolean
username: string
profile: IMovUserProfile
}
export interface IMovGroupQuery {
verified_by_aportador: boolean
groupname: string
title: string
photos: string
}
export interface IMovContoComQuery {
path: string
name: string
}
export interface IMovCircuitQuery {
name: string
symbol: string
}
export interface IMovQuery {
tipocontofrom: number
tipocontoto: number
userfrom: IMovUserQuery
userto: IMovUserQuery
groupfrom: IMovGroupQuery
groupto: IMovGroupQuery
contocomfrom: IMovContoComQuery
contocomto: IMovContoComQuery
circuitfrom: IMovCircuitQuery
transactionDate: Date
amount: number
causal: string
notifId: string
}
export interface IMovement { export interface IMovement {
_id: string _id: string
transactionDate: Date transactionDate: Date
@@ -1226,6 +1288,18 @@ export interface IMovVisu {
expiringDate: Date expiringDate: Date
} }
export interface ITransaction {
_id: string
transacDate: Date
mitt_username: string
mitt_group: string
dest_username: string
dest_group: string
circuito: string
amount: number
causale: string
}
export interface IAccount { export interface IAccount {
_id: string _id: string
username: string username: string

View File

@@ -1,452 +0,0 @@
.testo-banda {
//background: -webkit-gradient(linear, left top, left bottom, from(#3144f0), to(transparent));
//background: linear-gradient(180deg, #3144f0, transparent);
//background: rgba(0, 0, 0, .6)
}
$grayshadow: #555;
$textcol: blue;
$textcol_scuro: darkblue;
p {
margin: 0 0 1.25rem;
//text-shadow: .125rem .125rem .25rem $grayshadow;
}
h4 {
font-size: 1.25rem;
}
.mycard {
visibility: hidden;
}
.landing {
}
.landing_background {
background: #000 url(../../../public/images/foto1.jpg) no-repeat 50% fixed;
background-size: cover
}
.landing > section {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
//padding: 0 16px
}
.intro {
display: flex;
justify-content: space-between;
align-items: stretch;
/* flex-flow: row nowrap; */
padding: 1.25rem 0 1.25rem 0;
margin: .125rem;
* {
width: 100%;
flex: 1;
margin-left: auto;
margin-right: auto;
}
&__associazione {
min-width: 350px;
}
&__comeassociarsi {
min-width: 350px;
}
}
.subtitle {
font-weight: 600;
text-align: center;
letter-spacing: 0.125rem;
text-transform: uppercase;
font-size: 1rem;
}
.landing > section.padding {
padding: 5.62rem 1rem;
}
.landing > section.padding_testo {
padding-top: 1.25rem;
padding-bottom: 1rem;
}
.landing > section.padding_gallery {
padding-top: 3.125rem;
padding-bottom: 5.625rem;
}
.landing > section > div {
position: relative;
width: 100%
}
.maxwidth1200 {
max-width: 1200px;
}
.landing__toolbar {
background: -webkit-gradient(linear, left top, left bottom, from(#000), to(transparent));
background: linear-gradient(180deg, #000, transparent);
padding: 0 !important
}
.landing__toolbar .q-btn {
border-radius: 0 0 .315rem .315rem;
-ms-flex-item-align: stretch;
align-self: stretch
}
.landing__hero {
min-height: 50vh
}
.landing__header {
height: 18vh
}
.landing__arrow {
bottom: 1.5rem;
opacity: .4
}
.landing__front {
background: -webkit-gradient(linear, left top, left bottom, from(transparent), color-stop(15%, rgba(0, 0, 0, .6)));
background: linear-gradient(180deg, transparent, rgba(0, 0, 0, .6) 15%)
}
.landing__logo {
width: 9.40rem;
height: 9.40rem;
margin-top: 1.315rem;
//-webkit-animation: logo-rotate 240s linear infinite;
//animation: logo-rotate 240s linear infinite
}
.landing__features .q-icon {
font-size: 4rem
}
h4 {
line-height: 1.5;
text-shadow: .25rem .25rem .5rem $grayshadow;
}
.landing__features h4, .landing__features h6 {
margin: 1rem 0
}
.landing__features p {
opacity: .7;
font-size: 1rem;
line-height: 1.5;
}
.landing__footer {
//background: -webkit-gradient(linear, left top, left bottom, color-stop(65%, rgba(0, 0, 0, .1)), to(#000));
background: linear-gradient(180deg, rgba(0, 0, 0, .8) 95%, #FFF);
padding-top: 4.5rem !important;
padding-bottom: 4.5rem !important;
padding-left: 1.25rem;
padding-right: 1.25rem;
color: #9f9f9f;
}
.icon_contact:hover {
color: blue;
border-color: white;
border-width: .0625rem;
}
.landing__footer .doc-link {
color: $textcol;
}
.landing__footer .doc-link:hover {
opacity: .8
}
.landing__swirl-bg {
background-repeat: no-repeat !important;
background-position: top;
background-size: contain !important;
background-image: url(../../../public/images/landing_first_section.png) !important
}
.feat-descr {
font-size: 1.15rem;
}
.feat-descr:hover {
transition: opacity 0.5s ease-in-out;
opacity: 0.9;
}
.q-col-gutter-sm {
padding: 3.125rem 3.125rem;
//margin-left: -48px
}
body.mobile .landing {
//background: unset
}
body.mobile .landing:before {
content: "";
position: fixed;
top: 0;
height: 100vh;
left: 0;
right: 0;
bottom: 0;
z-index: -1;
//background: #000 url(../../public/images/cover.jpg) 50%;
background-size: cover
}
/*
@-webkit-keyframes logo-rotate {
to {
-webkit-transform: rotate(-1turn);
transform: rotate(-1turn)
}
}
@keyframes logo-rotate {
to {
-webkit-transform: rotate(-1turn);
transform: rotate(-1turn)
}
}
*/
.home {
//background-color: rgb(250, 250, 250);
padding: 3.125rem;
display: flex;
//flex-wrap: nowrap;
flex-direction: column;
align-items: center;
justify-content: space-between;
}
.btn-start {
margin: 3.125rem;
}
.shadow {
//color: white;
text-shadow: 0.125rem 0.125rem 0.25rem $grayshadow;
}
.text-h1, h1 {
font-size: 3rem;
font-weight: bold;
line-height: 3rem;
letter-spacing: -.01562em;
margin-bottom: 8px !important;
}
.text-h2 {
font-size: 3.75rem;
font-weight: 300;
line-height: 3.75rem;
letter-spacing: -.00833em;
}
.text-weight-bold {
font-weight: 700;
}
.text-vers {
font-size: 0.75rem;
font-weight: 400;
line-height: 1.75rem;
letter-spacing: .00937em;
text-shadow: .25rem .25rem .5rem $grayshadow;
}
.homep-cover-img-1 {
background: #000 url(../../../public/images/foto1.jpg) no-repeat 50% fixed;
//transition: background-image 1s ease-in-out;
}
.homep-cover-img-2 {
background: #000 url(../../../public/images/foto2.jpg) no-repeat 50% fixed;
//transition: background-image 1s ease-in-out;
}
.homep-cover-img-3 {
background: #000 url(../../../public/images/foto3.jpg) no-repeat 50% fixed;
//transition: background-image 1s ease-in-out;
}
.homep-cover-img.hide-filter:before {
opacity: 0
}
.landing__footer-icons {
font-size: 1.75rem
}
.landing__footer-icons a {
margin: 0 .5rem .5rem;
text-decoration: none;
outline: 0;
color: $textcol;
transition: color .28s
}
.landing__footer-icons a:hover {
color: $textcol_scuro;
}
.doc-img {
max-width: 100%;
}
.mylist {
background: #3fdaff;
padding-left: 1.25rem;
}
.clgutter {
margin-top: 1.25rem;
padding: .62rem;
}
.carousel_img_3 {
//background-image: url(../../public/images/cibo_sano.jpg);
background-size: cover !important;
background-position: 50% center !important;
background-repeat: no-repeat !important;
}
@media (max-width: 718px) {
// PER VERSIONE MOBILE
.landing__hero {
text-align: center
}
.landing__header {
height: 7vh
}
.clgutter {
margin-top: 0;
padding: 0;
}
.landing__hero .text-h1, h1 {
font-size: 2rem;
line-height: 2.05rem;
margin-bottom: 1.25rem
}
.landing > section.padding {
padding: 2.5rem 1rem;
}
.landing > section.padding_testo {
padding-top: 1.25rem;
padding-bottom: 1rem;
}
.landing > section.padding_gallery {
padding-top: 3.125rem;
padding-bottom: 5.625rem;
max-width: 800px;
}
.landing > section.padding_gallery > div {
padding-top: 3.125rem;
padding-bottom: 5.625rem;
}
.landing__features h4, .landing__features h6 {
margin: 1.25rem 0
}
h4 {
line-height: 1.4;
text-shadow: 0.25rem 0.25rem 0.5rem $grayshadow;
}
.landing .feature-item {
text-align: center;
margin-top: 1.25rem;
}
.landing__hero-content {
padding-bottom: 11.25rem;
}
.landing__hero2-content {
padding-bottom: 7.25rem;
}
.landing__hero-btns {
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center
}
.q-col-gutter-sm {
padding: .625rem .315rem;
}
.text-subtitle1 {
font-size: 1.25rem;
}
.text-vers {
font-size: 0.6rem;
}
.carousel_img_3 {
//background-image: url(../../public/images/cibo_sano.jpg);
background-size: 620px 620px !important;
background-position: 50% top !important;
background-repeat: no-repeat !important;
}
}
.custom-caption {
text-align: center;
padding: .75rem;
color: $textcol;
background-color: rgba(0, 0, 0, .3);
}
.sfondo-grigio {
padding: 1rem;
color: $textcol;
background-color: rgba(0, 0, 0, .35);
}
.mycontacts {
color: gray;
letter-spacing: 0.078rem;
}
.mycontacts_title {
text-shadow: 0.125rem 0.125rem 0.125rem #555;
font-weight: bold;
color: #999;
letter-spacing: 0.125rem;
}
.mycontacts_text {
color: #999;
letter-spacing: 0.093rem;
}

View File

@@ -1,78 +0,0 @@
import { defineComponent, ref, onMounted, watch, computed } from 'vue'
import { useGlobalStore } from '@store/globalStore'
import { useRoute } from 'vue-router'
import { useUserStore } from '@store/UserStore'
import { Logo } from '../../components/logo'
import { LandingFooter } from '../../components/LandingFooter'
import { CMyPage } from '../../components/CMyPage/index'
import { tools } from '@src/store/Modules/tools'
import { static_data } from '@src/db/static_data'
import { toolsext } from '@src/store/Modules/toolsext'
import { Screen } from 'quasar'
import { CCardCarousel, CEventsCalendar, COpenStreetMap } from '@components'
import MixinBase from '@src/mixins/mixin-base'
import { firstimagehome } from '@src/db/static_data'
import MixinMetaTags from '@/mixins/mixin-metatags'
export default defineComponent({
name: 'home_arcadei',
components: { Logo, LandingFooter, CMyPage, CCardCarousel, CEventsCalendar, COpenStreetMap },
setup() {
const animare = ref(0)
const slide = ref('first')
const slide2 = ref(1)
const getImmagini = ref([
{
title: '', subtitle: '',
alt: 'Arcadei',
img: 'images/arcadei/img1.png'
},
])
const userStore = useUserStore()
const globalStore = useGlobalStore()
const { setValDb, getValDb } = MixinBase()
const { setmeta, getsrcbyimg } = MixinMetaTags()
function getheightgallery() {
if (tools.isMobile())
return '400px'
else
return '600px'
}
function created() {
//
}
function getArrDisciplines() {
return globalStore.disciplines.filter((rec: any) => rec.showinhome)
}
created()
return {
tools,
toolsext,
static_data,
animare,
slide,
slide2,
getheightgallery,
getArrDisciplines,
getImmagini,
getValDb,
firstimagehome,
getsrcbyimg,
setmeta,
}
},
})

View File

@@ -1,221 +0,0 @@
<template>
<q-page>
<CMyPage title="Home">
<div class="landing">
<section>
<div class="landing__hero maxwidth1200 text-white">
<q-carousel
animated
:autoplay="animare"
swipeable
infinite
navigation
transition-next="slide-left"
transition-prev="slide-right"
v-model="slide"
:height="getheightgallery()"
width="100%"
>
<q-carousel-slide name="first"
:img-src="getsrcbyimg(firstimagehome())">
<div class="landing__header"></div>
<div class="landing__hero-content row justify-center q-gutter-xs clgutter">
<div class="row">
&nbsp;
</div>
<div class="flex justify-end">
<div class="q-gutter-xs testo-banda clgutter">
<h1 class="text-h1 shadow-max">{{tools.getappname()}}</h1>
<div class="text-subtitle1 shadow text-italic q-pl-sm">
&nbsp;
</div>
<div class="text-subtitle1 shadow-max big text-italic q-pl-sm">
</div>
<div class="text-subtitle2 shadow text-italic q-pl-sm">
</div>
<div>
<br>
<br>
<div v-if="!tools.isLogged()" style="margin: 5px; padding: 5px;" class="home">
<br>
<br>
</div>
</div>
</div>
</div>
</div>
<div class="landing__arrow absolute-bottom text-center">
<i aria-hidden="true"
class="q-icon text-h2 text-white material-icons">expand_more</i>
</div>
</q-carousel-slide>
<q-carousel-slide name="second"
:img-src="getsrcbyimg('images/background2.jpg')" alt="">
<div class="landing__header"></div>
<div class="landing__hero2-content row justify-center q-gutter-xs clgutter">
<div class="row">
<logo></logo>
</div>
<div class="flex justify-end">
<div class="q-gutter-xs testo-banda clgutter">
<h1 class="text-h1 shadow-max">{{tools.getappname()}}</h1>
<h2 class="text-subtitle1 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp')}}
</h2>
<h2 class="text-subtitle1 shadow-max big text-italic q-pl-sm">
<strong>{{$t('msg.sottoTitoloApp2')}}</strong>
</h2>
<h2 class="text-subtitle2 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp3')}}
</h2>
</div>
</div>
</div>
<div class="landing__arrow absolute-bottom text-center">
<i aria-hidden="true"
class="q-icon text-h2 text-white material-icons">expand_more</i>
</div>
</q-carousel-slide>
<q-carousel-slide name="third"
:img-src="getsrcbyimg('images/background3.jpg')">
<div class="landing__header"></div>
<div class="landing__hero2-content row justify-center q-gutter-xs clgutter">
<div class="row">
<logo></logo>
</div>
<div class="flex justify-end">
<div class="q-gutter-xs testo-banda clgutter">
<div class="text-h1 shadow-max">{{tools.getappname()}}</div>
<div class="text-subtitle1 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp')}}
</div>
<div class="text-subtitle1 shadow-max big text-italic q-pl-sm"><strong>{{$t('msg.sottoTitoloApp2')}}</strong>
</div>
<div class="text-subtitle2 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp3')}}
</div>
<div class="text-subtitle3 shadow text-italic q-pl-sm ">
{{$t('msg.sottoTitoloApp4')}}
</div>
</div>
</div>
</div>
<div class="landing__arrow absolute-bottom text-center">
<!--<i aria-hidden="true"-->
<!--class="q-icon text-h2 text-white material-icons">expand_more</i>-->
</div>
</q-carousel-slide>
</q-carousel>
</div>
</section>
<div class="q-pa-md q-gutter-md">
<div v-if="isLogged && !isVerified" class="text-verified">{{
$t('components.authentication.email_verification.link_sent') }}
</div>
</div>
<CCardCarousel :myarr="getArrDisciplines()">
</CCardCarousel>
<CEventsCalendar :mysingleevent="null" :showfirstN="getValDb('SHOW_LAST_EVENTS', false, 3)">
</CEventsCalendar>
<div v-if="getValDb('VIDEO_HOME', false)" class="row justify-evenly items-center q-gutter-md ">
<div class="text-center">
<h4 class="subtitle text-blue" v-html="getValDb('VIDEO_TITLE', false)"></h4>
<div class="">
<video :width="tools.getwidthscale(mythis, 320, 800)"
:height="tools.getheightbywidth(mythis, 320, 180, 800)" controls>
<source :src="getValDb('VIDEO_HOME', false)" type="video/mp4">
</video>
</div>
<!--<q-video src="../../statics/video/Intervista_Cristina_Barattoni.mp4">-->
<!--</q-video>-->
</div>
</div>
<div v-if="getValDb('YT_VIDEO', false)" class="row justify-evenly items-center q-gutter-md ">
<div class="text-center">
<h4 class="subtitle text-blue" v-html="getValDb('YT_TITLE', false)"></h4>
<div class="">
<div class="">
<iframe
:width="tools.getwidthscale(mythis, getValDb('YT_W', false), 800)"
:height="tools.getheightbywidth(mythis, getValDb('YT_W', false), getValDb('YT_H', false), 800)"
:src="getValDb('YT_VIDEO', false)"
frameborder="0"
allowfullscreen
></iframe>
</div>
</div>
<!--<q-video src="../../statics/video/Intervista_Cristina_Barattoni.mp4">-->
<!--</q-video>-->
</div>
</div>
<section :class="`maxwidth padding_gallery `+ ($q.dark.isActive ? `bg-black` : `bg-white`) + ` text-grey-10 text-center`" >
<q-carousel
swipeable
animated
:autoplay="8000"
v-model="slide2"
arrows
thumbnails
infinite
height="600">
<q-carousel-slide v-for="(rec, index) in getImmagini" :key="index" :name="index"
:img-src="rec.img"
:alt="rec.alt"
class="carousel_slide">
<div class="absolute-bottom custom-caption" style="margin-bottom: 70px">
<div class="text-h5"><span
class="text-h6 text-grey-1 shadow-max">{{index + 1}}. </span><span
class="text-h6 text-grey-2 shadow">{{rec.title}}</span></div>
<div class="text-subtitle1"><span class="text-grey-4 shadow">{{rec.subtitle}}</span>
</div>
</div>
</q-carousel-slide>
</q-carousel>
</section>
<div v-if="!tools.isMobile()" style="margin: 60px 60px;"></div>
<COpenStreetMap :imgmap="getValDb('IMGMAP', false)" :urlmap="getValDb('URLMAP', false)" :title="getValDb('MAP_TITLE', false)"
:coordinates="getValDb('COORD_MAP_1', false)" :coord_big="getValDb('COORD_MAP_BIG', false)">
</COpenStreetMap>
<div class="q-ma-md"></div>
</div>
</CMyPage>
</q-page>
</template>
<script lang="ts" src="./home_arcadei.ts">
</script>
<style lang="scss" scoped>
@import './home_arcadei.scss';
</style>

View File

@@ -435,6 +435,17 @@ function getRoutesAd(site: ISites) {
inmenu: false, inmenu: false,
infooter: false, infooter: false,
}, },
{
active: true,
order: 145,
path: '/attivita/:username',
materialIcon: 'fas fa-user',
name: 'mypages.attivita',
component: () => import('@/views/user/myactivities/myactivities.vue'),
meta: { requiresAuth: true },
inmenu: false,
infooter: false,
},
{ {
active: true, active: true,

View File

@@ -1205,6 +1205,7 @@ const msg_it = {
date_updated: 'Ult. Aggiornamento', date_updated: 'Ult. Aggiornamento',
}, },
mypages: { mypages: {
attivita: 'Attività',
find_people: 'Cerca Persone', find_people: 'Cerca Persone',
find_group: 'Cerca Gruppo', find_group: 'Cerca Gruppo',
manage_my_groups: 'Amministratore', manage_my_groups: 'Amministratore',
@@ -1537,6 +1538,8 @@ const msg_it = {
allmov: 'Vedi i movimenti di Tutto il Circuito', allmov: 'Vedi i movimenti di Tutto il Circuito',
showsaldi: 'Mostra i Saldi dei membri', showsaldi: 'Mostra i Saldi dei membri',
updatewallet: 'Aggiorna', updatewallet: 'Aggiorna',
from: 'Mittente:',
to: 'Destinatario:',
}, },
editor: { editor: {
showtool: 'Mostra strumenti per formattare il testo', showtool: 'Mostra strumenti per formattare il testo',
@@ -1648,9 +1651,10 @@ const msg_it = {
}, },
statusreg: { statusreg: {
reg: 'Partecipanti', reg: 'Utenti Attivi',
verifieds: 'Verificati', verifieds: 'Verificati',
online_today: 'On Line Oggi', online_today: 'On Line Oggi',
activeusers: 'Utenti Attivi',
autorizzati: 'Autorizzati', autorizzati: 'Autorizzati',
autorizzare: 'In attesa di Abilitazione', autorizzare: 'In attesa di Abilitazione',
passeggeri: 'Passeggeri Navi', passeggeri: 'Passeggeri Navi',
@@ -1669,6 +1673,11 @@ const msg_it = {
req: 'Passi', req: 'Passi',
people: 'Inv.', people: 'Inv.',
peoplelegend: 'Numero d\'Invitati', peoplelegend: 'Numero d\'Invitati',
numtransazioni: 'Scambi in RIS',
totristransati: 'RIS transati',
num_circuiti_attivi: 'Circuiti Attivi',
num_annunci: 'Annunci Attivi',
last_transactions: 'Ultime transazioni in RIS',
}, },
tutorial: { tutorial: {
@@ -1855,7 +1864,11 @@ const msg_it = {
err_removed: 'Errore durante la rimozione della casella di posta ', err_removed: 'Errore durante la rimozione della casella di posta ',
err_addemail: 'Errore durante la creazione della nuova casella di posta', err_addemail: 'Errore durante la creazione della nuova casella di posta',
err_setmailuserpwd: 'Errore durante la modifica della password', err_setmailuserpwd: 'Errore durante la modifica della password',
} },
header: {
area_personale: 'Area Personale',
},
}, },
}; };

View File

@@ -29,11 +29,6 @@ export const costanti = {
ENABLE_FRIENDS: false, ENABLE_FRIENDS: false,
ENABLE_CONTI_COLLETTIVI: true, ENABLE_CONTI_COLLETTIVI: true,
AccountType: {
USER: 0,
COLLECTIVE_ACCOUNT: 1,
COMMUNITY_ACCOUNT: 2,
},
Lang: { Lang: {
IT: 1, IT: 1,
@@ -115,6 +110,7 @@ export const costanti = {
visuonstat: true, visuonstat: true,
small: false, small: false,
showfavorite: true, showfavorite: true,
showinoptions: true,
}, },
{ {
visible: true, visible: true,
@@ -129,6 +125,7 @@ export const costanti = {
visuonstat: true, visuonstat: true,
small: false, small: false,
showfavorite: true, showfavorite: true,
showinoptions: true,
}, },
{ {
visible: true, visible: true,
@@ -145,6 +142,7 @@ export const costanti = {
table: 'myhosps', table: 'myhosps',
visuonstat: true, visuonstat: true,
showfavorite: true, showfavorite: true,
showinoptions: true,
}, },
{ {
visible: false, visible: false,
@@ -201,6 +199,7 @@ export const costanti = {
visuonstat: true, visuonstat: true,
small: false, small: false,
showfavorite: true, showfavorite: true,
showinoptions: true,
}, },
{ {
visible: false, visible: false,
@@ -276,6 +275,7 @@ export const costanti = {
small: false, small: false,
showfavorite: true, showfavorite: true,
forgroup: true, forgroup: true,
showinoptions: false,
}, },
], ],
@@ -430,6 +430,7 @@ export const costanti = {
currency: 15000, currency: 15000,
cards: 16000, cards: 16000,
color: 17000, color: 17000,
arrmenu: 18000,
}, },

View File

@@ -69,7 +69,7 @@ function AddCol(params: IColGridTable) {
allowNewValue: (params.allowNewValue === undefined) ? false : params.allowNewValue, allowNewValue: (params.allowNewValue === undefined) ? false : params.allowNewValue,
showpicprofile_ifnotset: (params.showpicprofile_ifnotset === undefined) ? false : params.showpicprofile_ifnotset, showpicprofile_ifnotset: (params.showpicprofile_ifnotset === undefined) ? false : params.showpicprofile_ifnotset,
extrafield: (params.extrafield === undefined) ? '' : params.extrafield, extrafield: (params.extrafield === undefined) ? '' : params.extrafield,
tipoconto: (params.tipoconto === undefined) ? costanti.AccountType.USER : params.tipoconto, tipoconto: (params.tipoconto === undefined) ? shared_consts.AccountType.USER : params.tipoconto,
visible: (params.visible === undefined) ? true : params.visible, visible: (params.visible === undefined) ? true : params.visible,
icon: (params.icon === undefined) ? '' : params.icon, icon: (params.icon === undefined) ? '' : params.icon,
action: (params.action === undefined) ? '' : params.action, action: (params.action === undefined) ? '' : params.action,
@@ -144,6 +144,7 @@ export const colmylistcards = [
AddCol({ name: 'color', label_trans: 'color' }), AddCol({ name: 'color', label_trans: 'color' }),
AddCol({ name: 'content', label_trans: 'content' }), AddCol({ name: 'content', label_trans: 'content' }),
AddCol({ name: 'colorsub', label_trans: 'colorsub' }), AddCol({ name: 'colorsub', label_trans: 'colorsub' }),
AddCol({ name: 'link', label_trans: 'link' }),
] ]
export const colmyelems = [ export const colmyelems = [
@@ -220,9 +221,15 @@ export const colmypage = [
AddCol({ name: 'order', label_trans: 'pages.order', fieldtype: costanti.FieldType.number }), AddCol({ name: 'order', label_trans: 'pages.order', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'active', label_trans: 'pages.active', fieldtype: costanti.FieldType.boolean }), AddCol({ name: 'active', label_trans: 'pages.active', fieldtype: costanti.FieldType.boolean }),
AddCol({ name: 'inmenu', label_trans: 'pages.inmenu', fieldtype: costanti.FieldType.boolean }), AddCol({ name: 'inmenu', label_trans: 'pages.inmenu', fieldtype: costanti.FieldType.boolean }),
AddCol({ name: 'infooter', label_trans: 'pages.infooter', fieldtype: costanti.FieldType.boolean }),
AddCol({ name: 'title', label_trans: 'pages.title' }), AddCol({ name: 'title', label_trans: 'pages.title' }),
AddCol({ name: 'subtitle', label_trans: 'pages.subtitle' }), AddCol({ name: 'subtitle', label_trans: 'pages.subtitle' }),
AddCol({ name: 'mainMenu', label_trans: 'pages.mainMenu', fieldtype: costanti.FieldType.boolean }),
AddCol({
name: 'sottoMenu', label_trans: 'pages.sottoMenu',
fieldtype: costanti.FieldType.multiselect,
jointable: 'mypages',
}),
AddCol({ name: 'infooter', label_trans: 'pages.infooter', fieldtype: costanti.FieldType.boolean }),
AddCol({ name: 'img1', label_trans: 'pages.img1' }), AddCol({ name: 'img1', label_trans: 'pages.img1' }),
AddCol({ name: 'content', label_trans: 'pages.contentfield', fieldtype: costanti.FieldType.html }), AddCol({ name: 'content', label_trans: 'pages.contentfield', fieldtype: costanti.FieldType.html }),
AddCol({ name: 'video1', label_trans: 'pages.video1' }), AddCol({ name: 'video1', label_trans: 'pages.video1' }),
@@ -732,7 +739,7 @@ export const colmyMovement = [
link: '/my/userfrom.username', link: '/my/userfrom.username',
noshowlabel: true, noshowlabel: true,
extrafield: 'movement.from', extrafield: 'movement.from',
tipoconto: costanti.AccountType.USER, tipoconto: shared_consts.AccountType.USER,
}), }),
AddCol({ AddCol({
name: 'groupfrom.groupname', name: 'groupfrom.groupname',
@@ -745,7 +752,7 @@ export const colmyMovement = [
link: '/grp/groupfrom.groupname', link: '/grp/groupfrom.groupname',
noshowlabel: true, noshowlabel: true,
extrafield: 'movement.fromCColl', extrafield: 'movement.fromCColl',
tipoconto: costanti.AccountType.COLLECTIVE_ACCOUNT, tipoconto: shared_consts.AccountType.COLLECTIVE_ACCOUNT,
}), }),
AddCol({ AddCol({
name: 'contocomfrom.path', name: 'contocomfrom.path',
@@ -758,7 +765,7 @@ export const colmyMovement = [
link: '/circuit/contocomfrom.path', link: '/circuit/contocomfrom.path',
noshowlabel: true, noshowlabel: true,
extrafield: 'movement.fromCCom', extrafield: 'movement.fromCCom',
tipoconto: costanti.AccountType.COMMUNITY_ACCOUNT, tipoconto: shared_consts.AccountType.COMMUNITY_ACCOUNT,
}), }),
AddCol({ AddCol({
name: 'userto.username', name: 'userto.username',
@@ -771,7 +778,7 @@ export const colmyMovement = [
link: '/my/userto.username', link: '/my/userto.username',
extrafield: 'movement.to', extrafield: 'movement.to',
noshowlabel: true, noshowlabel: true,
tipoconto: costanti.AccountType.USER, tipoconto: shared_consts.AccountType.USER,
}), }),
AddCol({ AddCol({
@@ -785,7 +792,7 @@ export const colmyMovement = [
link: '/grp/groupto.groupname', link: '/grp/groupto.groupname',
extrafield: 'movement.toCColl', extrafield: 'movement.toCColl',
noshowlabel: true, noshowlabel: true,
tipoconto: costanti.AccountType.COLLECTIVE_ACCOUNT, tipoconto: shared_consts.AccountType.COLLECTIVE_ACCOUNT,
}), }),
AddCol({ AddCol({
name: 'contocomfto.path', name: 'contocomfto.path',
@@ -798,7 +805,7 @@ export const colmyMovement = [
link: '/circuit/contocomto.path', link: '/circuit/contocomto.path',
noshowlabel: true, noshowlabel: true,
extrafield: 'movement.toCCom', extrafield: 'movement.toCCom',
tipoconto: costanti.AccountType.COMMUNITY_ACCOUNT, tipoconto: shared_consts.AccountType.COMMUNITY_ACCOUNT,
}), }),
AddCol({ AddCol({
@@ -820,7 +827,7 @@ export const colmyMovementTable = [
tipovisu: costanti.TipoVisu.LINK, tipovisu: costanti.TipoVisu.LINK,
fieldtype: costanti.FieldType.username_chip, fieldtype: costanti.FieldType.username_chip,
link: '/my/userfrom.username', link: '/my/userfrom.username',
tipoconto: costanti.AccountType.USER, tipoconto: shared_consts.AccountType.USER,
required: true, required: true,
}), }),
AddCol({ AddCol({
@@ -832,7 +839,7 @@ export const colmyMovementTable = [
tipovisu: costanti.TipoVisu.LINK, tipovisu: costanti.TipoVisu.LINK,
fieldtype: costanti.FieldType.username_chip, fieldtype: costanti.FieldType.username_chip,
link: '/grp/groupfrom.groupname', link: '/grp/groupfrom.groupname',
tipoconto: costanti.AccountType.COLLECTIVE_ACCOUNT, tipoconto: shared_consts.AccountType.COLLECTIVE_ACCOUNT,
required: true, required: true,
}), }),
AddCol({ AddCol({
@@ -844,7 +851,7 @@ export const colmyMovementTable = [
tipovisu: costanti.TipoVisu.LINK, tipovisu: costanti.TipoVisu.LINK,
fieldtype: costanti.FieldType.username_chip, fieldtype: costanti.FieldType.username_chip,
link: '/circuit/contocomfrom.path', link: '/circuit/contocomfrom.path',
tipoconto: costanti.AccountType.COMMUNITY_ACCOUNT, tipoconto: shared_consts.AccountType.COMMUNITY_ACCOUNT,
required: true, required: true,
}), }),
AddCol({ AddCol({
@@ -856,7 +863,7 @@ export const colmyMovementTable = [
tipovisu: costanti.TipoVisu.LINK, tipovisu: costanti.TipoVisu.LINK,
fieldtype: costanti.FieldType.username_chip, fieldtype: costanti.FieldType.username_chip,
link: '/my/userto.username', link: '/my/userto.username',
tipoconto: costanti.AccountType.USER, tipoconto: shared_consts.AccountType.USER,
required: true, required: true,
}), }),
@@ -869,7 +876,7 @@ export const colmyMovementTable = [
tipovisu: costanti.TipoVisu.LINK, tipovisu: costanti.TipoVisu.LINK,
fieldtype: costanti.FieldType.username_chip, fieldtype: costanti.FieldType.username_chip,
link: '/grp/groupto.groupname', link: '/grp/groupto.groupname',
tipoconto: costanti.AccountType.COLLECTIVE_ACCOUNT, tipoconto: shared_consts.AccountType.COLLECTIVE_ACCOUNT,
required: true, required: true,
}), }),
AddCol({ AddCol({
@@ -881,7 +888,7 @@ export const colmyMovementTable = [
tipovisu: costanti.TipoVisu.LINK, tipovisu: costanti.TipoVisu.LINK,
fieldtype: costanti.FieldType.username_chip, fieldtype: costanti.FieldType.username_chip,
link: '/circuit/contocomto.path', link: '/circuit/contocomto.path',
tipoconto: costanti.AccountType.COMMUNITY_ACCOUNT, tipoconto: shared_consts.AccountType.COMMUNITY_ACCOUNT,
required: true, required: true,
}), }),
@@ -2658,8 +2665,8 @@ export const fields = {
name: 'type', label_trans: 'col.type', fieldtype: costanti.FieldType.select, jointable: 'fieldstype', name: 'type', label_trans: 'col.type', fieldtype: costanti.FieldType.select, jointable: 'fieldstype',
}), }),
AddCol({ name: 'value_str', label_trans: 'col.value', fieldtype: costanti.FieldType.string }), AddCol({ name: 'value_str', label_trans: 'col.value', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'value_date', label_trans: 'cal.data', fieldtype: costanti.FieldType.date }),
AddCol({ name: 'value_num', label_trans: 'cal.num', fieldtype: costanti.FieldType.number }), AddCol({ name: 'value_num', label_trans: 'cal.num', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'value_date', label_trans: 'cal.data', fieldtype: costanti.FieldType.date }),
AddCol({ name: 'value_bool', label_trans: 'cal.bool', fieldtype: costanti.FieldType.boolean }), AddCol({ name: 'value_bool', label_trans: 'cal.bool', fieldtype: costanti.FieldType.boolean }),
AddCol({ name: 'serv', label_trans: 'cal.serv', fieldtype: costanti.FieldType.boolean }), AddCol({ name: 'serv', label_trans: 'cal.serv', fieldtype: costanti.FieldType.boolean }),
AddCol({ name: 'crypted', label_trans: 'cal.crypted', fieldtype: costanti.FieldType.boolean }), AddCol({ name: 'crypted', label_trans: 'cal.crypted', fieldtype: costanti.FieldType.boolean }),
@@ -3682,7 +3689,7 @@ export const colmyUserCircuit = [
fieldtype: costanti.FieldType.username_chip, fieldtype: costanti.FieldType.username_chip,
link: '/circuit/contocom', link: '/circuit/contocom',
noshowlabel: true, noshowlabel: true,
tipoconto: costanti.AccountType.COMMUNITY_ACCOUNT, tipoconto: shared_consts.AccountType.COMMUNITY_ACCOUNT,
}), }),
AddCol({ AddCol({
@@ -3693,7 +3700,7 @@ export const colmyUserCircuit = [
fieldtype: costanti.FieldType.username_chip, fieldtype: costanti.FieldType.username_chip,
link: '/circuit/groupname', link: '/circuit/groupname',
noshowlabel: true, noshowlabel: true,
tipoconto: costanti.AccountType.COLLECTIVE_ACCOUNT, tipoconto: shared_consts.AccountType.COLLECTIVE_ACCOUNT,
}), }),
AddCol({ name: 'deperibile', label_trans: 'account.deperibile', fieldtype: costanti.FieldType.boolean }), AddCol({ name: 'deperibile', label_trans: 'account.deperibile', fieldtype: costanti.FieldType.boolean }),
@@ -3726,7 +3733,7 @@ export const colTableNotifCoins = [
fieldtype: costanti.FieldType.username_chip, fieldtype: costanti.FieldType.username_chip,
link: '/my/extrarec.dest', link: '/my/extrarec.dest',
noshowlabel: true, noshowlabel: true,
tipoconto: costanti.AccountType.USER, tipoconto: shared_consts.AccountType.USER,
}), }),
AddCol({ AddCol({
@@ -3739,7 +3746,7 @@ export const colTableNotifCoins = [
fieldtype: costanti.FieldType.username_chip, fieldtype: costanti.FieldType.username_chip,
link: '/grp/extrarec.groupdest', link: '/grp/extrarec.groupdest',
noshowlabel: true, noshowlabel: true,
tipoconto: costanti.AccountType.COLLECTIVE_ACCOUNT, tipoconto: shared_consts.AccountType.COLLECTIVE_ACCOUNT,
}), }),
AddCol({ AddCol({
name: 'extrarec.contoComDest', name: 'extrarec.contoComDest',
@@ -3751,7 +3758,7 @@ export const colTableNotifCoins = [
fieldtype: costanti.FieldType.username_chip, fieldtype: costanti.FieldType.username_chip,
link: '/circuit/extrarec.contoComDest', link: '/circuit/extrarec.contoComDest',
noshowlabel: true, noshowlabel: true,
tipoconto: costanti.AccountType.COMMUNITY_ACCOUNT, tipoconto: shared_consts.AccountType.COMMUNITY_ACCOUNT,
}), }),
AddCol({ name: 'extrarec.qty', field: 'extrarec', subfield: 'qty', label_trans: 'movement.amount', fieldtype: costanti.FieldType.currency }), AddCol({ name: 'extrarec.qty', field: 'extrarec', subfield: 'qty', label_trans: 'movement.amount', fieldtype: costanti.FieldType.currency }),
AddCol({ name: 'extrarec.causal', field: 'extrarec', subfield: 'causal', label_trans: 'movement.causal', tipovisu: costanti.TipoVisu.TESTO_BORDATO }), AddCol({ name: 'extrarec.causal', field: 'extrarec', subfield: 'causal', label_trans: 'movement.causal', tipovisu: costanti.TipoVisu.TESTO_BORDATO }),
@@ -3936,6 +3943,13 @@ export const fieldsTable = {
colkey: 'path', colkey: 'path',
collabel: 'title', collabel: 'title',
}, },
{
value: 'mypages',
label: 'Pagine Web',
columns: colmypage,
colkey: 'path',
collabel: 'title',
},
{ {
value: 'products', value: 'products',
label: 'Prodotti', label: 'Prodotti',

View File

@@ -14,6 +14,7 @@ import {
IUserFields, IUserFields,
Privacy, Privacy,
TipoVisu, IGroup, IMySkill, IMyBacheca, IImgGallery, IMsgGlobParam, IUserExport, ISpecialField, IAccount, IMyCircuit, ISendCoin, IMovement, IMovVisu, INotif, IMyElem, IMyCard, ILabelValue, ILabelValueStr, IAnim, ILang, IGroupShort, IPagination, IFavorite, IBookmark, TipoVisu, IGroup, IMySkill, IMyBacheca, IImgGallery, IMsgGlobParam, IUserExport, ISpecialField, IAccount, IMyCircuit, ISendCoin, IMovement, IMovVisu, INotif, IMyElem, IMyCard, ILabelValue, ILabelValueStr, IAnim, ILang, IGroupShort, IPagination, IFavorite, IBookmark,
IMovQuery,
} from '@model' } from '@model'
import MixinBase from '@/mixins/mixin-base' import MixinBase from '@/mixins/mixin-base'
@@ -489,7 +490,7 @@ export const tools = {
{ label: 'sienna', value: '#a0522d' }, { label: 'sienna', value: '#a0522d' },
{ label: 'silver', value: '#c0c0c0' }, { label: 'silver', value: '#c0c0c0' },
{ label: 'skyblue', value: '#87ceeb' }, { label: 'skyblue', value: '#87ceeb' },
{ label: 'slateblue', value: '#6a5acd' }, { label: 'slateblue', value: '#6a5acdd' },
{ label: 'slategray', value: '#708090' }, { label: 'slategray', value: '#708090' },
{ label: 'snow', value: '#fffafa' }, { label: 'snow', value: '#fffafa' },
{ label: 'springgreen', value: '#00ff7f' }, { label: 'springgreen', value: '#00ff7f' },
@@ -7352,8 +7353,8 @@ export const tools = {
return this.getPathByTableAndRec(table, rec) return this.getPathByTableAndRec(table, rec)
}, },
getPathByGroup(grp: any, table: string) { getPathByGroup(grp: any) {
return '/' + shared_consts.getDirectoryByTable(table) + '/' + grp.groupname return '/' + shared_consts.getDirectoryByTable(shared_consts.TABLES_MYGROUPS) + '/' + grp.groupname
}, },
getPathByCircuit(circuit: any, table: string) { getPathByCircuit(circuit: any, table: string) {
@@ -7369,7 +7370,7 @@ export const tools = {
if (shared_consts.TABLES_REC_ID.includes(table)) { if (shared_consts.TABLES_REC_ID.includes(table)) {
return '/' + shared_consts.getDirectoryByTable(table) + '/' + rec['_id'] return '/' + shared_consts.getDirectoryByTable(table) + '/' + rec['_id']
} else if (table === toolsext.TABMYGROUPS) { } else if (table === toolsext.TABMYGROUPS) {
return this.getPathByGroup(rec, table) return this.getPathByGroup(rec)
} else if (table === toolsext.TABCIRCUITS) { } else if (table === toolsext.TABCIRCUITS) {
return this.getPathByCircuit(rec, table) return this.getPathByCircuit(rec, table)
} }
@@ -8009,7 +8010,7 @@ export const tools = {
let obj = { label: '', value: '', icon: '' } let obj = { label: '', value: '', icon: '' }
for (let i = 0; i < costanti.MAINCARDS.length; i++) { for (let i = 0; i < costanti.MAINCARDS.length; i++) {
let rec: any = costanti.MAINCARDS[i] let rec: any = costanti.MAINCARDS[i]
if (rec.table) { if (rec.table && rec.showinoptions) {
obj.label = rec.title obj.label = rec.title
obj.value = rec.table obj.value = rec.table
obj.icon = rec.icon obj.icon = rec.icon
@@ -8561,10 +8562,26 @@ export const tools = {
openUrl(url: string) { openUrl(url: string) {
url = url.replace('{link_chat_territoriale}', this.getLinkChatTerritoriale())
window.open(url, '_blank'); window.open(url, '_blank');
}, },
getText(mystr: string) {
mystr = mystr.replace('{miaprovincia}', this.getProvincia())
if (mystr.includes('{titolo_prov_riso}')) {
let titleprovincia = translate('dashboard.link_gruppo_telegram')
titleprovincia = titleprovincia.replace('{prov}', this.getProvincia())
mystr = mystr.replace('{titolo_prov_riso}', titleprovincia)
}
return mystr
},
getCircuitYourProvince() { getCircuitYourProvince() {
const circuitStore = useCircuitStore() const circuitStore = useCircuitStore()
@@ -8737,6 +8754,15 @@ export const tools = {
return shared_consts.VERSIONI_PRODOTTO.find((rec: any) => rec.value === versione) return shared_consts.VERSIONI_PRODOTTO.find((rec: any) => rec.value === versione)
}, },
numtostr(value: number): string {
try {
value = Math.round(value)
return value.toLocaleString('it-IT')
} catch (e) {
return ''
}
},
convertToDecimal6(stringValue: string) { convertToDecimal6(stringValue: string) {
// Converti la stringa in un numero // Converti la stringa in un numero
try { try {
@@ -8876,6 +8902,63 @@ export const tools = {
}, },
updateEditOn(value: boolean) {
const globalStore = useGlobalStore()
globalStore.editOn = value
if (this.getCookie('edn') === '1' && !value) {
this.setCookie('edn', '0')
}
if (this.getCookie('edn') !== '1' && value) {
this.setCookie('edn', '1')
}
},
replaceStringCaseInsensitive(originalString: string, searchString: string, replaceString: string) {
// Crea una regex con il flag 'i' per la ricerca case-insensitive
const regex = new RegExp(searchString, 'gi'); // 'g' per global, 'i' per case-insensitive
return originalString.replace(regex, replaceString);
},
getStringaConto(mov: IMovQuery) {
let mystr = ''
let mystrfrom = ''
let mystrto = ''
let tipocontofrom = shared_consts.AccountType.USER
let tipocontoto = shared_consts.AccountType.USER
if (mov.contocomfrom && mov.contocomfrom.name) {
mystrfrom += mov.contocomfrom.name + ' '
tipocontofrom = shared_consts.AccountType.COMMUNITY_ACCOUNT
}
if (mov.groupfrom) {
mystrfrom += mov.groupfrom.groupname + ' '
tipocontofrom = shared_consts.AccountType.COLLECTIVE_ACCOUNT
}
if (mov.userfrom) {
mystrfrom += mov.userfrom.username + ' '
}
if (mov.contocomto && mov.contocomto.name) {
mystrto += mov.contocomto.name + ' '
tipocontoto = shared_consts.AccountType.COMMUNITY_ACCOUNT
}
if (mov.groupto) {
mystrto += mov.groupto.groupname + ' '
tipocontoto = shared_consts.AccountType.COLLECTIVE_ACCOUNT
}
if (mov.userto) {
mystrto += mov.userto.username + ' '
}
mystr = t('movement.from') + mystrfrom + ' ' + t('movement.to') + mystrto
return { str: mystr.trim(), tipocontofrom, tipocontoto }
},
// FINE ! // FINE !
// getLocale() { // getLocale() {

View File

@@ -8,7 +8,7 @@ import { Router } from 'vue-router'
import { ISpecialField } from 'model' import { ISpecialField } from 'model'
export const func_tools = { export const func_tools = {
getLocale(vero ?: boolean): string { getLocale(vero?: boolean): string {
const userStore = useUserStore() const userStore = useUserStore()
if (userStore) { if (userStore) {
return userStore.lang return userStore.lang
@@ -85,7 +85,7 @@ export const toolsext = {
TABGALLERY: 'gallery', TABGALLERY: 'gallery',
TABMAILINGLIST: 'mailinglist', TABMAILINGLIST: 'mailinglist',
TABGROUPS: 'groups', TABGROUPS: 'groups',
TABMYPAGE: 'mypage', TABMYPAGE: 'mypages',
TABMYELEMS: 'myelems', TABMYELEMS: 'myelems',
TABMYBOT: 'bots', TABMYBOT: 'bots',
TABCALZOOM: 'calzoom', TABCALZOOM: 'calzoom',
@@ -201,21 +201,21 @@ export const toolsext = {
return userStore.my[keystr] return userStore.my[keystr]
} }
} else if (table === 'todos') { } else if (table === 'todos') {
// console.log('id', id, 'idmain', idmain) // console.log('id', id, 'idmain', idmain)
const indcat = todos.categories.indexOf(idmain) const indcat = todos.categories.indexOf(idmain)
console.log('indcat', indcat) console.log('indcat', indcat)
if (indcat >= 0) { if (indcat >= 0) {
const myrec = todos.todos[indcat].find((rec: any) => rec._id === id) const myrec = todos.todos[indcat].find((rec: any) => rec._id === id)
// console.log('myrec', myrec) // console.log('myrec', myrec)
let ris = null let ris = null
if (myrec) { if (myrec) {
ris = myrec[keystr] ris = myrec[keystr]
}
console.log('ris', ris)
return ris
} }
console.log('ris', ris)
return ris
}
return '' return ''
} else { } else {
const ris = globalStore.getValueSettingsByKey(keystr, serv) const ris = globalStore.getValueSettingsByKey(keystr, serv)

View File

@@ -16,6 +16,7 @@ import {
ISignupIscrizioneConacreisOptions, ISignupIscrizioneConacreisOptions,
ISignupIscrizioneArcadeiOptions, ISignupIscrizioneArcadeiOptions,
ISettings, ISettings,
IMovQuery,
} from '@src/model' } from '@src/model'
import { tools } from '@store/Modules/tools' import { tools } from '@store/Modules/tools'
import translate from '@src/globalroutines/util' import translate from '@src/globalroutines/util'
@@ -415,16 +416,16 @@ export const useUserStore = defineStore('UserStore', {
if (row.hasOwnProperty(col.name)) { if (row.hasOwnProperty(col.name)) {
value = row[col.name] value = row[col.name]
} }
let tipoconto = costanti.AccountType.USER let tipoconto = shared_consts.AccountType.USER
if (col.hasOwnProperty('tipoconto') && col.tipoconto) { if (col.hasOwnProperty('tipoconto') && col.tipoconto) {
tipoconto = col.tipoconto tipoconto = col.tipoconto
} }
let img = '' let img = ''
if (tipoconto === costanti.AccountType.USER) { if (tipoconto === shared_consts.AccountType.USER) {
img = this.getImgByUsername(value) img = this.getImgByUsername(value)
} else if (tipoconto === costanti.AccountType.COLLECTIVE_ACCOUNT) { } else if (tipoconto === shared_consts.AccountType.COLLECTIVE_ACCOUNT) {
img = this.getImgByGroupname(value) img = this.getImgByGroupname(value)
} else if (tipoconto === costanti.AccountType.COMMUNITY_ACCOUNT) { } else if (tipoconto === shared_consts.AccountType.COMMUNITY_ACCOUNT) {
img = this.getImgByCircuitpath(value) img = this.getImgByCircuitpath(value)
} }
@@ -445,14 +446,14 @@ export const useUserStore = defineStore('UserStore', {
if (!reale) if (!reale)
img = 'images/noimg-user.svg' img = 'images/noimg-user.svg'
let tipoconto = costanti.AccountType.USER let tipoconto = shared_consts.AccountType.USER
if (col && col.hasOwnProperty('tipoconto') && col.tipoconto) { if (col && col.hasOwnProperty('tipoconto') && col.tipoconto) {
tipoconto = col.tipoconto tipoconto = col.tipoconto
} }
if (tipoconto === costanti.AccountType.COLLECTIVE_ACCOUNT) { if (tipoconto === shared_consts.AccountType.COLLECTIVE_ACCOUNT) {
img = this.getImgByGroupname(myrec.groupname) img = this.getImgByGroupname(myrec.groupname)
} else if (tipoconto === costanti.AccountType.COMMUNITY_ACCOUNT) { } else if (tipoconto === shared_consts.AccountType.COMMUNITY_ACCOUNT) {
img = this.getImgByCircuitpath(myrec.path) img = this.getImgByCircuitpath(myrec.path)
} else { } else {
if (myrec.profile && myrec.profile.img) { if (myrec.profile && myrec.profile.img) {
@@ -470,6 +471,35 @@ export const useUserStore = defineStore('UserStore', {
return '' return ''
}, },
getImgByMov(mov: IMovQuery, tipoconto: number, from: boolean, reale: boolean): string {
try {
let img = ''
if (!reale)
img = 'images/noimg-user.svg'
if (tipoconto === shared_consts.AccountType.COLLECTIVE_ACCOUNT) {
img = this.getImgByGroup(from ? mov.groupfrom : mov.groupto)
// img = this.getImgByGroupname(from ? mov.groupfrom.groupname : mov.groupto.groupname)
} else if (tipoconto === shared_consts.AccountType.COMMUNITY_ACCOUNT) {
img = this.getImgByCircuitpath(from ? mov.contocomfrom.path : mov.contocomto.path)
} else {
let myuser = from ? mov.userfrom : mov.userto
if (myuser && myuser.profile.img) {
img = costanti.DIR_UPLOAD + 'profile/' + myuser.username + '/' + myuser.profile.img
}
}
return img
} catch (e) {
//
}
if (!reale)
return 'images/noimg-user.svg'
else
return ''
},
IsAskedCircuitByName(name: string): boolean { IsAskedCircuitByName(name: string): boolean {
if (this.my.profile.asked_circuits && this.my.profile.asked_circuits.length > 0) if (this.my.profile.asked_circuits && this.my.profile.asked_circuits.length > 0)
@@ -621,7 +651,7 @@ export const useUserStore = defineStore('UserStore', {
return this.getImgByCircuit(mycirc) return this.getImgByCircuit(mycirc)
}, },
getImgByGroup(group: IMyGroup | null): string { getImgByGroup(group: any): string {
try { try {
// ++Todo: Sistemare! // ++Todo: Sistemare!
@@ -718,12 +748,12 @@ export const useUserStore = defineStore('UserStore', {
let name = '' let name = ''
let myrec = this.getRecByCol(user, col) let myrec = this.getRecByCol(user, col)
let tipoconto = costanti.AccountType.USER let tipoconto = shared_consts.AccountType.USER
if (col && col.hasOwnProperty('tipoconto')) { if (col && col.hasOwnProperty('tipoconto')) {
tipoconto = col.tipoconto tipoconto = col.tipoconto
} }
if (tipoconto === costanti.AccountType.USER) { if (tipoconto === shared_consts.AccountType.USER) {
if (!!myrec.name) if (!!myrec.name)
name = myrec.name + ' ' name = myrec.name + ' '
if (!!myrec.surname) if (!!myrec.surname)
@@ -735,14 +765,14 @@ export const useUserStore = defineStore('UserStore', {
if (col && col.field === 'extrarec' && !name) { if (col && col.field === 'extrarec' && !name) {
name = myrec.dest name = myrec.dest
} }
} else if (tipoconto === costanti.AccountType.COLLECTIVE_ACCOUNT) { } else if (tipoconto === shared_consts.AccountType.COLLECTIVE_ACCOUNT) {
if (myrec.hasOwnProperty('descr')) if (myrec.hasOwnProperty('descr'))
return myrec.descr return myrec.descr
else if (myrec.hasOwnProperty('groupname')) else if (myrec.hasOwnProperty('groupname'))
return myrec.groupname return myrec.groupname
else if (myrec.hasOwnProperty('grouporig')) else if (myrec.hasOwnProperty('grouporig'))
return myrec.grouporig return myrec.grouporig
} else if (tipoconto === costanti.AccountType.COMMUNITY_ACCOUNT) { } else if (tipoconto === shared_consts.AccountType.COMMUNITY_ACCOUNT) {
if (myrec.hasOwnProperty('name')) if (myrec.hasOwnProperty('name'))
return myrec.name return myrec.name
else if (myrec.hasOwnProperty('contocom')) else if (myrec.hasOwnProperty('contocom'))
@@ -1451,8 +1481,8 @@ export const useUserStore = defineStore('UserStore', {
if (isLogged) { if (isLogged) {
// console.log('this.isLogged', this.isLogged) // console.log('this.isLogged', this.isLogged)
if (!tools.isMobile) //if (!tools.isMobile)
globalStore.setleftDrawerOpen(localStorage.getItem(toolsext.localStorage.leftDrawerOpen) === 'true') // globalStore.setleftDrawerOpen(localStorage.getItem(toolsext.localStorage.leftDrawerOpen) === 'true')
globalStore.setCategorySel(localStorage.getItem(toolsext.localStorage.categorySel)) globalStore.setCategorySel(localStorage.getItem(toolsext.localStorage.categorySel))
await globalStore.checkUpdates() await globalStore.checkUpdates()

View File

@@ -575,6 +575,8 @@ export const useGlobalStore = defineStore('GlobalStore', {
level_parent: page.l_par, level_parent: page.l_par,
submenu: page.submenu, submenu: page.submenu,
extraclass: page.extraclass, extraclass: page.extraclass,
mainMenu: page.mainMenu,
sottoMenu: page.sottoMenu,
}) })
} }
} }
@@ -985,6 +987,8 @@ export const useGlobalStore = defineStore('GlobalStore', {
await globalroutines('readall', 'config', null) await globalroutines('readall', 'config', null)
this.editOn = tools.getCookie('edn', '0') === '1'
return isok return isok
}, },

View File

@@ -37,7 +37,9 @@
<!--:style="tools.displayStyles(myevent) + ` min-width: `+ tools.myheight_dialog() + `px;`">--> <!--:style="tools.displayStyles(myevent) + ` min-width: `+ tools.myheight_dialog() + `px;`">-->
<q-toolbar-title> <q-toolbar-title>
{{ circuit.name }} {{ circuit.name }}
<div v-if="groupnameSel">Gruppo: {{ groupnameSel.groupname }}</div> <div v-if="groupnameSel">
Gruppo: {{ groupnameSel.groupname }}
</div>
</q-toolbar-title> </q-toolbar-title>
<q-btn flat round color="white" icon="close" v-close-popup></q-btn> <q-btn flat round color="white" icon="close" v-close-popup></q-btn>
</q-toolbar> </q-toolbar>
@@ -45,9 +47,17 @@
<div v-html="t('circuit.disclaimer')"></div> <div v-html="t('circuit.disclaimer')"></div>
</q-card-section> </q-card-section>
<q-card-section class="inset-shadow"> <q-card-section class="inset-shadow">
<div style="font-weight: bold; font-size: 1.25rem">Regolamento:</div> <div style="font-weight: bold; font-size: 1.25rem">
<q-btn label="vedi Regolamento" @click="showrules = !showrules"></q-btn> Regolamento:
<div v-if="showrules && circuit" v-html="getRegulation(circuit.regulation)"></div> </div>
<q-btn
label="vedi Regolamento"
@click="showrules = !showrules"
></q-btn>
<div
v-if="showrules && circuit"
v-html="getRegulation(circuit.regulation)"
></div>
</q-card-section> </q-card-section>
<q-card-actions align="center"> <q-card-actions align="center">
<q-btn <q-btn
@@ -56,17 +66,22 @@
color="positive" color="positive"
:label="$t('circuit.acceptregulation')" :label="$t('circuit.acceptregulation')"
@click=" @click="
requestToEnterCircuit = false; requestToEnterCircuit = false;
tools.setRequestCircuit( tools.setRequestCircuit(
$q, $q,
userStore.my.username, userStore.my.username,
circuit.name, circuit.name,
true, true,
groupnameSel ? groupnameSel.groupname : '' groupnameSel ? groupnameSel.groupname : ''
); );
" "
/> />
<q-btn outline :label="$t('dialog.cancel')" icon="close" v-close-popup></q-btn> <q-btn
outline
:label="$t('dialog.cancel')"
icon="close"
v-close-popup
></q-btn>
</q-card-actions> </q-card-actions>
</q-card> </q-card>
</q-dialog> </q-dialog>
@@ -79,7 +94,10 @@ tools.setRequestCircuit(
</div> </div>
</div> </div>
<div v-if="circuit"> <div v-if="circuit">
<div class="absolute-top-right q-mr-sm q-my-md" style="margin-top: 50px !important"> <div
class="absolute-top-right q-mr-sm q-my-md"
style="margin-top: 50px !important"
>
<div class="column"> <div class="column">
<q-btn <q-btn
v-if="userStore.IsMyCircuitByName(circuit.name)" v-if="userStore.IsMyCircuitByName(circuit.name)"
@@ -88,33 +106,37 @@ tools.setRequestCircuit(
icon="fas fa-ellipsis-h" icon="fas fa-ellipsis-h"
style="z-index: 1" style="z-index: 1"
> >
<q-menu> <q-menu>
<q-list v-if="true" style="min-width: 150px"> <q-list v-if="true" style="min-width: 150px">
<q-item <q-item
clickable clickable
v-close-popup v-close-popup
v-if="true" v-if="true"
@click="(saldo !== 0) ? @click="
tools.showNegativeNotif($q, t('circuit.per_uscire_dal_circuito_occorre_essere_a_zero'), 30000) : saldo !== 0
tools.removeFromMyCircuits( ? tools.showNegativeNotif(
$q, $q,
userStore.my.username, t(
circuit.name, 'circuit.per_uscire_dal_circuito_occorre_essere_a_zero'
'', ),
$t('circuit.domanda_exit_fromcircuit', { 30000
circuitname: circuit.name, )
}) : tools.removeFromMyCircuits(
) $q,
userStore.my.username,
circuit.name,
'',
$t('circuit.domanda_exit_fromcircuit', {
circuitname: circuit.name,
})
)
" "
> >
<q-item-section avatar> <q-item-section avatar>
<q-icon color="negative" name="fas fa-user-minus" /> <q-icon color="negative" name="fas fa-user-minus" />
</q-item-section> </q-item-section>
<q-item-section> <q-item-section>
{{ {{ $t('circuit.exit_circuit') }}
$t('circuit.exit_circuit')
}}
</q-item-section> </q-item-section>
</q-item> </q-item>
@@ -153,9 +175,17 @@ tools.setRequestCircuit(
</div> </div>
<div style="align-self: center; vertical-align: middle"> <div style="align-self: center; vertical-align: middle">
<q-btn label="Lista Circuiti" to="/circuits" rounded icon="fas fa-arrow-circle-left" /> <q-btn
label="Lista Circuiti"
to="/circuits"
rounded
icon="fas fa-arrow-circle-left"
/>
</div> </div>
<div v-if="circuit.name" class="fit column no-wrap justify-evenly items-center content-start"> <div
v-if="circuit.name"
class="fit column no-wrap justify-evenly items-center content-start"
>
<div class="row justify-center"> <div class="row justify-center">
<q-avatar v-if="getImgCircuit()" size="70px"> <q-avatar v-if="getImgCircuit()" size="70px">
<q-img <q-img
@@ -186,11 +216,24 @@ tools.setRequestCircuit(
<q-bar dense class="bg-primary text-white"> <q-bar dense class="bg-primary text-white">
{{ t('circuit.movements') }}: {{ t('circuit.movements') }}:
<q-space /> <q-space />
<q-btn flat round color="white" icon="close" v-close-popup></q-btn> <q-btn
flat
round
color="white"
icon="close"
v-close-popup
></q-btn>
</q-bar> </q-bar>
<q-card-section class="q-px-xs inset-shadow"> <q-card-section class="q-px-xs inset-shadow">
<q-option-group v-model="showwhommov" :options="optionsmov" color="primary" /> <q-option-group
<q-toggle v-model="tabellare" label="Formato Tabella"></q-toggle> v-model="showwhommov"
:options="optionsmov"
color="primary"
/>
<q-toggle
v-model="tabellare"
label="Formato Tabella"
></q-toggle>
<CGridTableRec <CGridTableRec
v-if="tabellare && !loading" v-if="tabellare && !loading"
@@ -269,7 +312,12 @@ tools.setRequestCircuit(
</q-dialog> </q-dialog>
</div> </div>
<div class="text-center"> <div class="text-center">
<q-spinner v-if="loadSaldo" color="primary" size="3em" :thickness="2" /> <q-spinner
v-if="loadSaldo"
color="primary"
size="3em"
:thickness="2"
/>
</div> </div>
<q-btn <q-btn
v-if="account && !loadSaldo" v-if="account && !loadSaldo"
@@ -317,7 +365,9 @@ tools.setRequestCircuit(
<template v-slot:avatar> <template v-slot:avatar>
<q-icon name="fas fa-info" color="red" size="sm" /> <q-icon name="fas fa-info" color="red" size="sm" />
</template> </template>
<span v-html="$t('circuit.entra_italia_solo_dopo_aver_fido')"></span> <span
v-html="$t('circuit.entra_italia_solo_dopo_aver_fido')"
></span>
</q-banner> </q-banner>
<q-banner <q-banner
v-if="circuitStore.IsNationalAndNotEnterInLocal(circuit.name)" v-if="circuitStore.IsNationalAndNotEnterInLocal(circuit.name)"
@@ -326,20 +376,24 @@ tools.setRequestCircuit(
style="text-align: center" style="text-align: center"
> >
<template v-slot:avatar> <template v-slot:avatar>
<q-icon class="vertical-align center" name="fas fa-info" color="white" size="sm" /> <q-icon
class="vertical-align center"
name="fas fa-info"
color="white"
size="sm"
/>
</template> </template>
<em style="font-weight: bold"> <em style="font-weight: bold">
{{ {{ $t('circuit.beforeentertolocalcircuit') }}
$t('circuit.beforeentertolocalcircuit')
}}
</em> </em>
<br /> <br />
</q-banner> </q-banner>
<q-banner <q-banner
v-if=" v-if="
userStore.my.profile && userStore.my.profile &&
userStore.my.profile.calc && userStore.my.profile.calc.numGoodsAndServices <= 0 && userStore.my.profile.calc &&
userStore.my.profile.calc.numGoodsAndServices <= 0 &&
globalStore.site.confpages.showRIS && globalStore.site.confpages.showRIS &&
userStore.IsMyCircuitByName(circuit.name) userStore.IsMyCircuitByName(circuit.name)
" "
@@ -352,29 +406,31 @@ tools.setRequestCircuit(
</template> </template>
<em style="font-weight: bold"> <em style="font-weight: bold">
{{ {{ $t('db.insertgoodorservices_to_enter_circuit') }}
$t('db.insertgoodorservices_to_enter_circuit')
}}
</em> </em>
<br /> <br />
</q-banner> </q-banner>
<q-banner <q-banner
v-else-if=" v-else-if="
globalStore.site.confpages.showRIS && globalStore.site.confpages.showRIS &&
userStore.my.profile.calc && userStore.my.profile.calc.numGoodsAndServices <= 0 userStore.my.profile.calc &&
userStore.my.profile.calc.numGoodsAndServices <= 0
" "
rounded rounded
class="bg-deep-purple text-white" class="bg-deep-purple text-white"
style="text-align: center" style="text-align: center"
> >
<template v-slot:avatar> <template v-slot:avatar>
<q-icon class="vertical-align center" name="fas fa-info" color="red" size="sm" /> <q-icon
class="vertical-align center"
name="fas fa-info"
color="red"
size="sm"
/>
</template> </template>
<em style="font-weight: bold"> <em style="font-weight: bold">
{{ {{ $t('db.insertgoodorservices_to_enter_circuit') }}
$t('db.insertgoodorservices_to_enter_circuit')
}}
</em> </em>
<br /> <br />
</q-banner> </q-banner>
@@ -394,8 +450,8 @@ tools.setRequestCircuit(
color="primary" color="primary"
:label="$t('circuit.ask')" :label="$t('circuit.ask')"
@click=" @click="
requestToEnterCircuit = true; requestToEnterCircuit = true;
groupnameSel = null; groupnameSel = null;
" "
/> />
@@ -415,9 +471,17 @@ groupnameSel = null;
</div> </div>
</div> </div>
</div> </div>
<div v-if="circuit.name" class="no-wrap justify-evenly items-center content-start"> <div
v-if="circuit.name"
class="no-wrap justify-evenly items-center content-start"
>
<q-tabs v-model="tabcircuit" class="text-blue" no-caps> <q-tabs v-model="tabcircuit" class="text-blue" no-caps>
<q-tab :label="t('shared.info1')" name="info" icon="fas fa-info" @click="loadCircuit()"></q-tab> <q-tab
:label="t('shared.info1')"
name="info"
icon="fas fa-info"
@click="loadCircuit()"
></q-tab>
<q-tab <q-tab
v-if=" v-if="
tools.iCanShowCircuitsMember(circuit) || tools.iCanShowCircuitsMember(circuit) ||
@@ -484,7 +548,11 @@ groupnameSel = null;
<q-btn rounded icon="fas fa-user-plus" class="text-center"> <q-btn rounded icon="fas fa-user-plus" class="text-center">
<q-menu> <q-menu>
<q-item>Chiedi di Entrare nei Circuiti:</q-item> <q-item>Chiedi di Entrare nei Circuiti:</q-item>
<q-list v-for="(group, ind) of groupsListAdmin" :key="ind" class="q-pa-sm"> <q-list
v-for="(group, ind) of groupsListAdmin"
:key="ind"
class="q-pa-sm"
>
<q-item <q-item
v-if=" v-if="
!userStore.IsMyCircuitByNameAndGroup( !userStore.IsMyCircuitByNameAndGroup(
@@ -511,8 +579,8 @@ groupnameSel = null;
color="primary" color="primary"
:label="group.groupname" :label="group.groupname"
@click=" @click="
requestToEnterCircuit = true; requestToEnterCircuit = true;
groupnameSel = group; groupnameSel = group;
" "
/> />
<q-btn <q-btn
@@ -682,7 +750,10 @@ groupnameSel = group;
<q-card-section> <q-card-section>
<div class="col-12 text-h8"> <div class="col-12 text-h8">
<span v-if="checkifShow('descr')" v-html="circuit.longdescr"></span> <span
v-if="checkifShow('descr')"
v-html="circuit.longdescr"
></span>
</div> </div>
</q-card-section> </q-card-section>
@@ -704,7 +775,11 @@ groupnameSel = group;
}) })
}}: }}:
<div class="row justify-center"> <div class="row justify-center">
<q-icon name="fas fa-hand-point-right" class="iconcirc" size="lg"></q-icon> <q-icon
name="fas fa-hand-point-right"
class="iconcirc"
size="lg"
></q-icon>
<q-btn <q-btn
v-if="circuit.link_group" v-if="circuit.link_group"
@@ -714,7 +789,17 @@ groupnameSel = group;
size="md" size="md"
rounded rounded
:label=" :label="
$t('circuit.link_chat', { name: circuit.name }) $t('circuit.link_chat', {
name: tools.replaceStringCaseInsensitive(
tools.replaceStringCaseInsensitive(
circuit.name,
'circuito',
''
),
'RIS',
'RISO'
),
})
" "
:href="circuit.link_group" :href="circuit.link_group"
target="__blank" target="__blank"
@@ -730,7 +815,11 @@ groupnameSel = group;
}} }}
</div> </div>
<div v-for="(user, index) of circuit.admins" :key="index"> <div v-for="(user, index) of circuit.admins" :key="index">
<CMyUser :mycontact="user" :visu="costanti.FIND_PEOPLE" @setCmd="tools.setCmd"></CMyUser> <CMyUser
:mycontact="user"
:visu="costanti.FIND_PEOPLE"
@setCmd="tools.setCmd"
></CMyUser>
</div> </div>
<div class="sezioni"> <div class="sezioni">
<q-icon name="fas fa-coins" class="iconcirc"></q-icon> <q-icon name="fas fa-coins" class="iconcirc"></q-icon>
@@ -742,7 +831,8 @@ groupnameSel = group;
`background-color: ` + `background-color: ` +
tools.getColorByCircuit(circuit) tools.getColorByCircuit(circuit)
" "
>{{ tools.getSymbolByCircuit(circuit) }}</em> >{{ tools.getSymbolByCircuit(circuit) }}</em
>
</span> </span>
</div> </div>
<div :class="$q.screen.lt.sm ? '' : 'row'"> <div :class="$q.screen.lt.sm ? '' : 'row'">
@@ -832,8 +922,7 @@ groupnameSel = group;
? t('dialog.yes') ? t('dialog.yes')
: t('dialog.no') : t('dialog.no')
}} }}
{{ {{}}
}}
</span> </span>
</div> </div>
<!--<div <!--<div
@@ -866,7 +955,10 @@ groupnameSel = group;
<q-card-section> <q-card-section>
<div class="centermydiv"> <div class="centermydiv">
<q-btn label="vedi Regolamento" @click="showrules = !showrules"></q-btn> <q-btn
label="vedi Regolamento"
@click="showrules = !showrules"
></q-btn>
</div> </div>
<div class="col-12 text-h8"> <div class="col-12 text-h8">
<span <span
@@ -887,7 +979,7 @@ groupnameSel = group;
v-if=" v-if="
!!circuit.date_updated && !!circuit.date_updated &&
tools.getstrDate(circuit.date_updated) !== tools.getstrDate(circuit.date_updated) !==
tools.getstrDate(circuit.date_created) tools.getstrDate(circuit.date_created)
" "
class="container text-h8" class="container text-h8"
> >
@@ -914,7 +1006,10 @@ groupnameSel = group;
</div> </div>
</q-tab-panel> </q-tab-panel>
<q-tab-panel name="members" v-if="tools.iCanShowCircuitsMember(circuit)"> <q-tab-panel
name="members"
v-if="tools.iCanShowCircuitsMember(circuit)"
>
<q-tabs <q-tabs
v-show="tools.iAmAdminCircuit(circuit.name)" v-show="tools.iAmAdminCircuit(circuit.name)"
v-model="tabmembers" v-model="tabmembers"
@@ -1004,7 +1099,9 @@ groupnameSel = group;
<q-card v-if="circuit.name"> <q-card v-if="circuit.name">
<q-card-section> <q-card-section>
<div class="text-h7">{{ t('circuit.contocomunitario') }}:</div> <div class="text-h7">{{ t('circuit.contocomunitario') }}:</div>
<div class="text-h8 q-mb-sm">{{ $t('circuit.info_contocom') }}</div> <div class="text-h8 q-mb-sm">
{{ $t('circuit.info_contocom') }}
</div>
</q-card-section> </q-card-section>
<q-separator /> <q-separator />
@@ -1025,8 +1122,8 @@ groupnameSel = group;
:qtarem=" :qtarem="
circuit.account circuit.account
? circuitStore.getRemainingCoinsToSend( ? circuitStore.getRemainingCoinsToSend(
circuit.account circuit.account
) )
: 0 : 0
" "
></CSaldo> ></CSaldo>
@@ -1084,8 +1181,16 @@ groupnameSel = group;
></CGridTableRec> ></CGridTableRec>
</div> </div>
</div> </div>
<div v-else class="fit column no-wrap justify-evenly items-center content-start"> <div
<q-skeleton type="QAvatar" size="140px" height="140px" animation="fade" /> v-else
class="fit column no-wrap justify-evenly items-center content-start"
>
<q-skeleton
type="QAvatar"
size="140px"
height="140px"
animation="fade"
/>
<q-card flat bordered style="width: 250px"> <q-card flat bordered style="width: 250px">
<div class="text-h7"> <div class="text-h7">
<q-skeleton :animation="animation" /> <q-skeleton :animation="animation" />
@@ -1114,6 +1219,6 @@ groupnameSel = group;
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import "./mycircuit.scss"; @import './mycircuit.scss';
</style> </style>

Some files were not shown because too many files have changed in this diff Show More