Home Page With Element ! (Modular)

Arcadei Project...
Inscription
This commit is contained in:
paoloar77
2022-10-28 17:07:13 +02:00
parent 8e3ada35ea
commit 2399124a33
45 changed files with 2651 additions and 299 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

@@ -603,6 +603,41 @@ export const shared_consts = {
}, },
], ],
Cat_Interesse_Arcadei: [
{
value: 1,
label: 'Agricoltura sostenibile e naturale, agro biodiversità, sviluppo delle filiere locali finalizzate all\'autonomia alimentare (orto, g.a.s.)',
},
{
value: 2,
label: 'Creazione ed Integrazione ecologica di nuove strutture abitative, rimboschimento, conservazione del territorio, del paesaggio e di tutti gli equilibri naturali.',
},
{
value: 4,
label: 'Economia circolare e creazione di sistemi di unità di conto scambio beni e servizi, sistemi di baratto, dono e solidarietà.',
},
{
value: 8,
label: 'Ricerca, sviluppo e implementazione di tecnologie di approvigionamento energetico.',
},
{
value: 16,
label: 'Risveglio del potenziale umano e ricerca spirituale',
},
{
value: 32,
label: 'Benessere, salute e guarigione relazionale della comunità.',
},
{
value: 64,
label: 'Formazione, informazione, divulgazione, Educazione e trasmissione generazionale della conoscenza.',
},
{
value: 128,
label: 'Convivialità, arte e cultura. Tutela, conservazione e promozione delle tradizioni e culture locali.',
},
],
Pub_to_Share: [ Pub_to_Share: [
{ {
value: 0, value: 0,
@@ -1140,6 +1175,102 @@ export const shared_consts = {
FASE3_MONETA_ABILITATA: 3, FASE3_MONETA_ABILITATA: 3,
}, },
TypesElem: [
{
value: 5,
label: 'Titolo',
},
{
value: 6,
label: 'Margine',
},
{
value: 8,
label: 'ImgTitolo',
},
{
value: 10,
label: 'Testo',
},
{
value: 20,
label: 'Html',
},
{
value: 30,
label: 'Immagine',
},
{
value: 40,
label: 'Separatore',
},
{
value: 50,
label: 'Video',
},
{
value: 55,
label: 'Pagina',
},
{
value: 58,
label: 'Pagina Intro',
},
{
value: 60,
label: 'Galleria',
},
{
value: 70,
label: 'Calendario',
},
{
value: 80,
label: 'Carosello Discipline',
},
{
value: 85,
label: 'Carosello Home',
},
{
value: 110,
label: 'Carosello Immagini',
},
{
value: 90,
label: 'Footer',
},
{
value: 100,
label: 'Check Email',
},
{
value: 120,
label: 'OpenStreetMap',
},
],
ELEMTYPE: {
TITLE: 5,
MARGINI: 6,
IMGTITLE: 8,
TEXT: 10,
HTML: 20,
IMAGE: 30,
SEPARATOR: 40,
VIDEO: 50,
PAGE: 55,
PAGEINTRO: 58,
GALLERY: 60,
CALENDAR: 70,
CAROUSEL_IDISCIPLINE: 80,
CAROUSEL_HOME: 85,
FOOTER: 90,
CHECK_EMAIL: 100,
CAROUSEL_IMGS: 110,
OPENSTREETMAP: 120,
},
getStatusStr(status: number) { getStatusStr(status: number) {
const trovatorec = this.OrderStatusStr.find((rec) => rec.value === status) const trovatorec = this.OrderStatusStr.find((rec) => rec.value === status)
return (trovatorec) ? trovatorec.label : '' return (trovatorec) ? trovatorec.label : ''

View File

@@ -285,7 +285,7 @@ export default defineComponent({
let colsel = ref(<IColGridTable | null>{ name: '', field: '', sortable: false }) let colsel = ref(<IColGridTable | null>{ name: '', field: '', sortable: false })
let valPrec = '' let valPrec = ''
let separator: 'horizontal' const separator = 'horizontal'
const myfilter = ref('') const myfilter = ref('')
const myfilterand: any = ref([]) const myfilterand: any = ref([])
let rowsel: any = {} let rowsel: any = {}
@@ -386,13 +386,13 @@ export default defineComponent({
for (const item of searchList.value) { for (const item of searchList.value) {
if (item.table === tablecat) { if (item.table === tablecat) {
const valsaved = tools.getCookie(tools.COOK_SEARCH + tablecat + '_' + newval, costanti.FILTER_TUTTI) const valsaved = tools.getCookie(tools.COOK_SEARCH + tablecat + '_' + newval, costanti.FILTER_TUTTI)
const rec = searchList.value.find((rec) => rec.table === tablecat) // check if exist const rec = searchList.value.find((myrec) => myrec.table === tablecat) // check if exist
let trovato = false let trovato = false
let arrvalues = [] let arrvalues = []
if (rec) { if (rec) {
arrvalues = valoriopt.value(rec.value, false, false) arrvalues = valoriopt.value(rec.value, false, false)
if (arrvalues) if (arrvalues)
trovato = arrvalues.find((rec: any) => rec[rec.key] === valsaved) trovato = arrvalues.find((myrec: any) => myrec[myrec.key] === valsaved)
} }
console.log(' ...item', item) console.log(' ...item', item)
if (valsaved && trovato) if (valsaved && trovato)
@@ -417,13 +417,13 @@ export default defineComponent({
for (const item of searchList.value) { for (const item of searchList.value) {
if (item.table === tableprov) { if (item.table === tableprov) {
const valsaved = tools.getCookie(tools.COOK_SEARCH + tableprov + '_' + newval, costanti.FILTER_TUTTI) const valsaved = tools.getCookie(tools.COOK_SEARCH + tableprov + '_' + newval, costanti.FILTER_TUTTI)
const rec = searchList.value.find((rec) => rec.table === tableprov) // check if exist const rec = searchList.value.find((myrec) => myrec.table === tableprov) // check if exist
let trovato = false let trovato = false
let arrvalues = [] let arrvalues = []
if (rec) { if (rec) {
arrvalues = valoriopt.value(rec.value, false, false) arrvalues = valoriopt.value(rec.value, false, false)
if (arrvalues) if (arrvalues)
trovato = arrvalues.find((rec: any) => rec[rec.key] === valsaved) trovato = arrvalues.find((myrec: any) => myrec[myrec.key] === valsaved)
} }
if (valsaved && trovato) if (valsaved && trovato)
item.value = valsaved item.value = valsaved
@@ -434,13 +434,13 @@ export default defineComponent({
} }
} else if (item.table === toolsext.TABCITIES) { } else if (item.table === toolsext.TABCITIES) {
const valsaved = tools.getCookie(tools.COOK_SEARCH + toolsext.TABCITIES + '_' + newval, costanti.FILTER_TUTTI) const valsaved = tools.getCookie(tools.COOK_SEARCH + toolsext.TABCITIES + '_' + newval, costanti.FILTER_TUTTI)
const rec = searchList.value.find((rec) => rec.table === toolsext.TABCITIES) // check if exist const rec = searchList.value.find((myrec) => myrec.table === toolsext.TABCITIES) // check if exist
let trovato = false let trovato = false
let arrvalues = [] let arrvalues = []
if (rec) { if (rec) {
arrvalues = valoriopt.value(rec.value, false, false) arrvalues = valoriopt.value(rec.value, false, false)
if (arrvalues) if (arrvalues)
trovato = arrvalues.find((rec: any) => rec[rec.key] === valsaved) trovato = arrvalues.find((myrec: any) => myrec[myrec.key] === valsaved)
} }
if (valsaved && trovato) if (valsaved && trovato)
item.value = valsaved item.value = valsaved
@@ -837,7 +837,7 @@ export default defineComponent({
pagination.value.rowsNumber = getRowsNumberCount(myfilter) pagination.value.rowsNumber = getRowsNumberCount(myfilter)
// clear out existing data and add new // clear out existing data and add new
if (returnedData.value === []) { if (!returnedData.value || returnedData.value.length === 0) {
serverData.value = [] serverData.value = []
} else { } else {
// if (serverData.length > 0) // if (serverData.length > 0)

View File

@@ -0,0 +1,452 @@
.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

@@ -0,0 +1,62 @@
import {
defineComponent, onMounted, PropType, ref, toRef, watch,
} from 'vue'
import { IMyElem, IMyPage, IOperators } from '@src/model'
import { useGlobalStore } from '@store/globalStore'
import { CImgTitle } from '../CImgTitle/index'
import { CTitle } from '@/components/CTitle/index'
import { tools } from '@store/Modules/tools'
import { shared_consts } from '@/common/shared_vuejs'
import LandingFooter from '@/components/LandingFooter/LandingFooter'
import { COpenStreetMap } from '@src/components/COpenStreetMap'
import { CCardCarousel } from '@src/components/CCardCarousel'
import { CMyPage } from '@src/components/CMyPage'
import { CMyPageIntro } from '@src/components/CMyPageIntro'
import { CEventsCalendar } from '@src/components/CEventsCalendar'
import MixinMetaTags from '@/mixins/mixin-metatags'
export default defineComponent({
name: 'CMyElem',
components: { CImgTitle, CTitle, LandingFooter, CEventsCalendar, CCardCarousel, COpenStreetMap, CMyPage, CMyPageIntro },
props: {
myelem: {
type: Object as PropType<IMyElem>,
required: true,
},
},
setup(props) {
const globalStore = useGlobalStore()
const { setmeta, getsrcbyimg } = MixinMetaTags()
const animare = ref(0)
const slide = ref(0)
const slide2 = ref(0)
function getArrDisciplines() {
return globalStore.disciplines.filter((rec: any) => rec.showinhome)
}
function getheightgallery() {
if (tools.isMobile())
return '400px'
else
return '600px'
}
return {
tools,
shared_consts,
getArrDisciplines,
getheightgallery,
slide,
slide2,
animare,
setmeta,
getsrcbyimg,
}
},
})

View File

@@ -0,0 +1,156 @@
<template>
<div v-if="myelem">
<div v-if="myelem.type === shared_consts.ELEMTYPE.TEXT">
<div :class="myelem.class">{{ myelem.container }}</div>
</div>
<div v-if="myelem.type === shared_consts.ELEMTYPE.MARGINI">
<div :style="`margin: ` + myelem.size"></div>
</div>
<div v-else-if="myelem.type === shared_consts.ELEMTYPE.TITLE">
<CTitle
:imgbackground="myelem.imgback"
:headtitle="myelem.title" :sizes="myelem.size" :styleadd="myelem.styleadd">
</CTitle>
</div>
<div v-else-if="myelem.type === shared_consts.ELEMTYPE.IMGTITLE">
<CImgTitle v-if="myelem.container" :src="myelem.container" :title="myelem.title">
</CImgTitle>
</div>
<div v-else-if="myelem.type === shared_consts.ELEMTYPE.HTML">
<div :class="myelem.class" v-html="myelem.containerHtml"></div>
</div>
<div v-else-if="myelem.type === shared_consts.ELEMTYPE.IMAGE">
<div class="text-center">
<q-img :src="myelem.container" class="img" :width="myelem.width" :height="myelem.height"></q-img>
</div>
</div>
<div v-else-if="myelem.type === shared_consts.ELEMTYPE.VIDEO">
<q-video v-if="!!rec.container" :src="rec.container" :ratio="rec.ratio">
</q-video>
</div>
<div v-else-if="myelem.type === shared_consts.ELEMTYPE.FOOTER">
<LandingFooter></LandingFooter>
</div>
<div v-else-if="myelem.type === shared_consts.ELEMTYPE.PAGE">
<CMyPage :mypath="myelem.container"></CMyPage>
</div>
<div v-else-if="myelem.type === shared_consts.ELEMTYPE.PAGEINTRO">
<CMyPageIntro :mypath="myelem.container" :maxheightimg="myelem.heightimg" :maxwidthimg="myelem.widthimg" :link="myelem.link"></CMyPageIntro>
</div>
<div v-else-if="myelem.type === shared_consts.ELEMTYPE.CAROUSEL_IDISCIPLINE">
<CCardCarousel :myarr="getArrDisciplines()">
</CCardCarousel>
</div>
<div v-else-if="myelem.type === shared_consts.ELEMTYPE.OPENSTREETMAP">
<!-- Da Fare -->
<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>
<div v-else-if="myelem.type === shared_consts.ELEMTYPE.CAROUSEL_IMGS">
<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 myelem.list" :key="index" :name="index"
:img-src="getsrcbyimg(`images/`+ rec.imagefile)"
: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 v-if="rec.alt"
class="text-h6 text-grey-2 shadow">{{rec.alt}}</span></div>
<div class="text-subtitle1" v-if="rec.description"><span class="text-grey-4 shadow">{{rec.description}}</span>
</div>
</div>
</q-carousel-slide>
</q-carousel>
</section>
</div>
<div v-else-if="myelem.type === shared_consts.ELEMTYPE.CAROUSEL_HOME">
<section>
<div class="landing">
<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
v-for="(myrec, ind) in myelem.list" :key="ind"
:name="ind"
:img-src="getsrcbyimg(`images/`+ myrec.imagefile)">
<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">
{{myelem.container}}&nbsp;
</div>
<div class="text-subtitle1 shadow-max big text-italic q-pl-sm">
{{myelem.container2}}
</div>
<div class="text-subtitle2 shadow text-italic q-pl-sm">
{{myelem.container3}}
</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>
</div>
</div>
</section>
</div>
<div v-else-if="myelem.type === shared_consts.ELEMTYPE.CALENDAR">
<CEventsCalendar :mysingleevent="null" :showfirstN="myelem.number || 3">
</CEventsCalendar>
</div>
<div v-else-if="myelem.type === shared_consts.ELEMTYPE.CHECK_EMAIL">
<div class="q-pa-md q-gutter-md">
<div v-if="tools.isLogged() && !isVerified" class="text-verified">{{
$t('components.authentication.email_verification.link_sent') }}
</div>
</div>
</div>
</div>
</template>
<script lang="ts" src="./CMyElem.ts">
</script>
<style lang="scss" scoped>
@import './CMyElem.scss';
</style>

View File

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

View File

@@ -54,12 +54,12 @@ export default defineComponent({
const load = async (): Promise<void> => { const load = async (): Promise<void> => {
// console.log('load', mypath.value) // console.log('load', mypath.value)
if (mypath.value !== '') rec.value = await globalStore.loadPage('/'+mypath.value) if (mypath.value !== '') rec.value = await globalStore.loadPage('/' + mypath.value)
} }
watch(() => props.mypath, async (to: string, from: string) => { watch(() => props.mypath, async (to: string, from: string) => {
// console.log('load', mypath.value) // console.log('load', mypath.value)
if (mypath.value !== '') rec.value = await globalStore.loadPage('/'+mypath.value) if (mypath.value !== '') rec.value = await globalStore.loadPage('/' + mypath.value)
}) })
// onMounted(load) // onMounted(load)

View File

@@ -1,7 +1,6 @@
<template> <template>
<div> <div>
<div v-if="mypath && !!rec"> <div v-if="mypath && !!rec">
<div class="q-ma-sm q-gutter-sm q-pa-xs"> <div class="q-ma-sm q-gutter-sm q-pa-xs">
<div v-if="!!rec.img1" class="text-center"> <div v-if="!!rec.img1" class="text-center">
<q-img :src="``+ rec.img1" class="img"></q-img> <q-img :src="``+ rec.img1" class="img"></q-img>

View File

View File

@@ -0,0 +1,79 @@
import {
defineComponent, onMounted, ref, toRef, watch,
} from 'vue'
import { IMyPage } from '@src/model'
import { useGlobalStore } from '@store/globalStore'
import { LandingFooter } from '@/components/LandingFooter'
import { CImgTitle } from '../CImgTitle/index'
import { CTitle } from '../CTitle/index'
import { useRouter } from 'vue-router'
export default defineComponent({
name: 'CMyPageIntro',
components: { LandingFooter, CImgTitle, CTitle },
props: {
title: String,
mypath: {
type: String,
required: false,
default: '',
},
img: {
type: String,
required: false,
default: '',
},
sizes: {
type: String,
required: false,
default: '',
},
styleadd: {
type: String,
required: false,
default: '',
},
maxheightimg: {
type: Number,
},
maxwidthimg: {
type: Number,
},
link: {
type: String,
},
},
setup(props) {
const rec = ref<IMyPage | null>(null)
const mypath = toRef(props, 'mypath')
const $router = useRouter()
const globalStore = useGlobalStore()
const load = async (): Promise<void> => {
// console.log('load', mypath.value)
if (mypath.value !== '') rec.value = await globalStore.loadPage('/' + mypath.value)
}
watch(() => props.mypath, async (to: string, from: string) => {
// console.log('load', mypath.value)
if (mypath.value !== '') rec.value = await globalStore.loadPage('/' + mypath.value)
})
function openclick() {
if (props.link)
$router.push(props.link)
}
// onMounted(load)
load()
return { rec, openclick }
},
})

View File

@@ -0,0 +1,22 @@
<template>
<div>
<div v-if="mypath && !!rec">
<div class="q-ma-sm q-gutter-sm q-pa-xs">
<div v-if="!!rec.img1" class="text-center">
<q-btn v-if="link" @click="openclick">
<q-img :src="rec.img1" :height="maxheightimg + `px`" :width="maxwidthimg + `px`" fit="fill"></q-img>
</q-btn>
<q-img v-else :src="rec.img1" :height="maxheightimg + `px`" :width="maxwidthimg + `px`" fit="fill" @click="openclick"></q-img>
</div>
<div v-if="!!rec.content" v-html="rec.content"></div>
</div>
</div>
</div>
</template>
<script lang="ts" src="./CMyPageIntro.ts">
</script>
<style lang="scss" scoped>
@import './CMyPageIntro.scss';
</style>

View File

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

View File

@@ -7,8 +7,12 @@ import { LandingFooter } from '../../components/LandingFooter/index'
import { tools } from '../../store/Modules/tools' import { tools } from '../../store/Modules/tools'
import { static_data } from '@src/db/static_data' import { static_data } from '@src/db/static_data'
import { CImgText } from '../../components/CImgText/index' import { CCard } from '@/components/CCard/index'
import { CCard, CMyAvatar, CMyTeacher, CMyPage } from '@components' import { CImgText } from '@/components/CImgText/index'
import { CMyAvatar } from '@/components/CMyAvatar/index'
import { CMyTeacher } from '@/components/CMyTeacher/index'
import { CMyPage } from '@/components/CMyPage/index'
import { IEvents, IOperators } from '@src/model' import { IEvents, IOperators } from '@src/model'
import MixinEvents from '@/mixins/mixin-events' import MixinEvents from '@/mixins/mixin-events'

View File

@@ -61,10 +61,6 @@ h4 {
background-size: cover background-size: cover
} }
.carousel_slide {
}
.gallery { .gallery {
background-size: cover; background-size: cover;
background-position: center center; background-position: center center;

View File

@@ -0,0 +1,34 @@
.signup {
width: 100%;
margin: 0 auto;
max-width: 450px;
}
.wrapper {
display: flex;
align-items: center;
justify-content: center;
}
.clCellCode {
border-radius: 32px;
border-right: #2d2260;
height: 50px;
font-size: 1rem;
padding: 8px;
}
.clCell {
border-radius: 32px;
border-right: #2d2260;
height: 50px;
font-size: 1rem;
padding: 8px;
}
.vue-country-select{
border-radius: 32px;
}

View File

@@ -0,0 +1,255 @@
import { ISignupIscrizioneConacreisOptions } from 'model'
import { tools } from '@store/Modules/tools'
import { Logo } from '@/components/logo'
import { CDate } from '@/components/CDate'
import { CMyPage } from '@/components/CMyPage'
import { CTitleBanner } from '../CTitleBanner'
import { computed, defineComponent, reactive, ref, watch } from 'vue'
import { useQuasar } from 'quasar'
import { useUserStore } from '@store/UserStore'
import { useRouter } from 'vue-router'
import { useGlobalStore } from '@store/globalStore'
import { useI18n } from '@/boot/i18n'
import MixinUsers from '@/mixins/mixin-users'
import useVuelidate from '@vuelidate/core'
import { email, minLength, required } from 'vuelidate/lib/validators'
// import {Loading, QSpinnerFacebook, QSpinnerGears} from 'quasar'
export default defineComponent({
name: 'CSignUpIscrizioneArcadei',
components: { Logo, CTitleBanner, CDate, CMyPage },
setup() {
const $q = useQuasar()
const userStore = useUserStore()
const $router = useRouter()
const globalStore = useGlobalStore()
const { t } = useI18n()
// @ts-ignore
const v$ = useVuelidate(validations, signup)
const countryname = ref('')
const countryborn = ref('')
const iamadult = ref(false)
const duplicate_email = ref(false)
const duplicate_username = ref(false)
const { mySurname, Email, myCell } = MixinUsers()
const { getMyUsername } = MixinUsers()
const signup = ref({
accetta_carta_costituzionale_on: false,
newsletter_on: false,
terms: false
} as ISignupIscrizioneConacreisOptions)
const validations: any = computed(() => {
const valid: any = {
signup: {
name: {
required
},
surname: {
required
},
email: {
email,
required
},
fiscalcode: {
required,
minLength: minLength(16)
},
residency_address: {
required
},
residency_city: {
required
},
residency_province: {
required
},
residency_zipcode: {
required
},
dateofbirth: {
required
},
born_city: {
required
},
born_province: {
required
},
born_country: {
required
},
metodo_pagamento: {
required
},
terms: {
required
},
}
}
return valid
})
function created() {
if (!!getMyUsername() && (!userStore.my.profile.socio)) {
signup.value.name = userStore.my.name
signup.value.surname = mySurname.toString()
signup.value.email = Email.toString()
signup.value.cell_phone = myCell.toString()
}
v$.value.$reset()
}
function allowSubmit() {
const error = v$.value.$error || v$.value.$invalid
// console.log('v', v$, 'error', error, 'terms', signup.value.terms, 'carta', signup.value.accetta_carta_costituzionale_on)
return !error && signup.value.terms && signup.value.accetta_carta_costituzionale_on
}
function errorMsg(cosa: string, item: any) {
try {
if (!item.$error) {
return ''
}
console.log('item', item)
// console.log('errorMsg', cosa, item)
if (item.$params.email && !item.email) {
return t('reg.err.email')
}
// console.log('item', item)
if (item.minLength !== undefined) {
if (!item.minLength) {
return t('reg.err.atleast') + ` ${item.$params.minLength.min} ` + t('reg.err.char')
}
}
if (item.complexity !== undefined) {
if (!item.complexity) {
return t('reg.err.complexity')
}
}
// if (!item.maxLength) { return t('reg.err.notmore') + ` ${item.$params.maxLength.max} ` + t('reg.err.char') }
if (item.required !== undefined) {
if (!item.required) {
return t('reg.err.required')
}
}
// console.log(' ....avanti')
if (cosa === 'email') {
// console.log("EMAIL " + item.isUnique);
// console.log(item);
if (!item.isUnique) {
return t('reg.err.duplicate_email')
}
} else if (cosa === 'username') {
// console.log(item);
console.log('username')
console.log(item.$error)
if (!item.isUnique) {
return t('reg.err.duplicate_username')
}
} else if ((cosa === 'name') || (cosa === 'surname')) {
// console.log(item);
}
return ''
} catch (error) {
// console.log("ERR : " + error);
}
}
function submitOk() {
v$.value.signup.value.touch()
if (signup.value) {
signup.value.email = tools.removespaces(signup.value.email!)
signup.value.email = signup.value.email.toLowerCase()
signup.value.residency_country = tools.CapitalizeAllWords(signup.value.residency_country)
signup.value.residency_address = tools.CapitalizeAllWords(signup.value.residency_address)
signup.value.residency_city = tools.CapitalizeAllWords(signup.value.residency_city)
signup.value.residency_province = signup.value.residency_province!.toUpperCase()
signup.value.born_province = signup.value.born_province!.toUpperCase()
duplicate_email.value = false
duplicate_username.value = false
if (!signup.value.terms) {
tools.showNotif($q, t('reg.err.terms'))
return
}
if (!signup.value.accetta_carta_costituzionale_on) {
tools.showNotif($q, t('reg.err.accetta_carta_costituzionale_on'))
return
}
if (v$.value.signup.value.$error) {
tools.showNotif($q, t('reg.err.errore_generico'))
return
}
signup.value.name = tools.CapitalizeAllWords(signup.value.name)
signup.value.surname = tools.CapitalizeAllWords(signup.value.surname)
signup.value.annoTesseramento = 2023
$q.loading.show({ message: t('reg.iscrizioneincorso') })
console.log(signup)
return userStore.iscrivitiConacreis(tools.clone(signup))
.then((ris) => {
if (tools.SignUpcheckErrors($q, $router, ris.code, ris.msg))
$q.loading.hide()
}).catch((error: any) => {
console.log('ERROR = ' + error)
$q.loading.hide()
})
}
}
function selectcountry({ name, iso2, dialCode }: {name: string, iso2: string, dialCode: string}) {
// console.log(name, iso2, dialCode)
signup.value.residency_country = name
countryname.value = name
}
function selectcountryborn({ name, iso2, dialCode }: {name: string, iso2: string, dialCode: string}) {
// console.log(name, iso2, dialCode)
signup.value.born_country = name
countryborn.value = name
}
created()
return {
tools,
selectcountryborn,
selectcountry,
submitOk,
errorMsg,
allowSubmit,
}
}
})

View File

@@ -0,0 +1,299 @@
<template>
<div>
<div class="text-center">
<logo></logo>
<CTitleBanner :title="$t('pages.SignUpIscrizione')" :canopen="true" :visible="false">
<div class="q-gutter-xs">
<p class="q-ml-md text-center">
Leggi
<span class="underline"> <router-link to="/il-nostro-progetto" custom v-slot="{ navigate }">
<span class="footer_link" @click="navigate" @keypress.enter="navigate" role="link">Il Nostro Progetto</span>
</router-link></span>
</p>
<q-input
v-model="signup.name"
rounded outlined
@blur="v$.signup.name.$touch"
:error="v$.signup.name.$error"
maxlength="30"
:error-message="errorMsg('name', v$.signup.name)"
:label="$t('reg.name')">
<template v-slot:prepend>
<q-icon name="person"/>
</template>
</q-input>
<q-input
v-model="signup.surname"
rounded outlined
@blur="v$.signup.surname.$touch"
:error="v$.signup.surname.$error"
maxlength="30"
:error-message="errorMsg('surname', v$.signup.surname)"
:label="$t('reg.surname')">
<template v-slot:prepend>
<q-icon name="person"/>
</template>
</q-input>
<q-input
v-model="signup.email"
rounded outlined
@blur="v$.signup.email.$touch"
:error="v$.signup.email.$error"
:error-message="errorMsg('email', v$.signup.email)"
maxlength="50"
debounce="1000"
:label="$t('reg.email')">
<template v-slot:prepend>
<q-icon name="email"/>
</template>
</q-input>
<q-input
v-model="signup.fiscalcode"
rounded outlined
@blur="v$.signup.fiscalcode.$touch"
:error="v$.signup.fiscalcode.$error"
maxlength="20"
mask="AAAAAA##A##A###A"
debounce="1000"
:error-message="errorMsg('fiscalcode', v$.signup.fiscalcode)"
:label="$t('reg.fiscalcode')">
<template v-slot:prepend>
<q-icon name="person"/>
</template>
</q-input>
<q-input
v-model="signup.residency_address"
rounded outlined
@blur="v$.signup.residency_address.$touch"
:error="v$.signup.residency_address.$error"
maxlength="60"
debounce="1000"
:error-message="errorMsg('residency_address', v$.signup.residency_address)"
:label="$t('reg.residency_address')">
<template v-slot:prepend>
<q-icon name="person"/>
</template>
</q-input>
<q-input
v-model="signup.residency_city"
rounded outlined
@blur="v$.signup.residency_city.$touch"
:error="v$.signup.residency_city.$error"
maxlength="60"
debounce="1000"
:error-message="errorMsg('residency_city', v$.signup.residency_city)"
:label="$t('reg.residency_city')">
<template v-slot:prepend>
<q-icon name="person"/>
</template>
</q-input>
<q-input
v-model="signup.residency_province"
rounded outlined
@blur="v$.signup.residency_province.$touch"
:error="v$.signup.residency_province.$error"
maxlength="3"
debounce="1000"
:error-message="errorMsg('residency_province', v$.signup.residency_province)"
:label="$t('reg.residency_province')">
<template v-slot:prepend>
<q-icon name="person"/>
</template>
</q-input>
<q-input
v-model="signup.residency_zipcode"
rounded outlined
@blur="v$.signup.residency_zipcode.$touch"
:error="v$.signup.residency_zipcode.$error"
maxlength="10"
debounce="1000"
:error-message="errorMsg('residency_zipcode', v$.signup.residency_zipcode)"
:label="$t('reg.residency_zipcode')">
<template v-slot:prepend>
<q-icon name="person"/>
</template>
</q-input>
<q-input
v-model="countryname"
:readonly="true"
rounded outlined
debounce="1000"
:label="$t('reg.nationality')">
<template v-slot:prepend>
<vue-country-code
@onSelect="selectcountry"
:preferredCountries="tools.getprefCountries"
:dropdownOptions="{ disabledDialCode: true }"
>
</vue-country-code>
</template>
</q-input>
<br>
<vue-tel-input
v-model="signup.cell_phone"
:placeholder="$t('reg.cell')"
maxlength="20"
debounce="1000"
:enabledCountryCode="true"
inputClasses="clCell"
wrapperClasses="clCellCode">
</vue-tel-input>
<br>
<q-input
v-model="signup.dateofbirth"
debounce="1000"
@blur="v$.signup.dateofbirth.$touch"
:error="v$.signup.dateofbirth.$error"
:error-message="errorMsg('dateofbirth', v$.signup.dateofbirth)"
stack-label
:label="$t('reg.dateofbirth')"
rounded
type="date"
mask="date"
fill-mask
outlined>
</q-input>
<q-input
v-model="signup.born_city"
rounded outlined
@blur="v$.signup.born_city.$touch"
:error="v$.signup.born_city.$error"
maxlength="60"
debounce="1000"
:error-message="errorMsg('born_city', v$.signup.born_city)"
:label="$t('reg.born_city')">
<template v-slot:prepend>
<q-icon name="person"/>
</template>
</q-input>
<q-input
v-model="signup.born_province"
rounded outlined
@blur="v$.signup.born_province.$touch"
:error="v$.signup.born_province.$error"
maxlength="3"
debounce="1000"
:error-message="errorMsg('born_province', v$.signup.born_province)"
:label="$t('reg.born_province')">
<template v-slot:prepend>
<q-icon name="person"/>
</template>
</q-input>
<!--<CDate :mydate="signup.dateofbirth" @input="setDateOfBirth(arguments[0])"
:rounded="true" :outlined="true"
:dense="false"
:label="$t('reg.dateofbirth')">
</CDate>-->
<q-input
v-model="countryborn"
:readonly="true"
rounded outlined
debounce="1000"
:label="$t('reg.nationality_born')">
<template v-slot:prepend>
<vue-country-code
@onSelect="selectcountryborn"
:preferredCountries="tools.getprefCountries"
:dropdownOptions="{ disabledDialCode: true }"
>
</vue-country-code>
</template>
</q-input>
<br>
<!--<div v-if="!tools.isMobile()"><br></div>-->
<q-select
rounded outlined v-model="signup.metodo_pagamento"
:options="tools.SelectMetodiPagamento"
:label="$t('reg.metodopagamento')" emit-value map-options>
</q-select>
<q-checkbox
v-model="signup.accetta_carta_costituzionale_on"
color="secondary">
<span v-html="$t('reg.accetta_carta_costituzionale_on')"></span>
</q-checkbox>
<q-checkbox
v-model="signup.terms"
color="secondary"
@blur="v$.signup.terms.$touch"
:error="v$.signup.terms.$error"
:error-message="`${errorMsg('terms', v$.signup.terms)}`"
:label="$t('reg.terms')">
</q-checkbox>
<div class="wrapper">
<q-btn rounded size="lg" color="positive" @click="submitOk" :disabled='!allowSubmit'
:label="$t('reg.iscriviti')">
</q-btn>
</div>
<br>
</div>
</CTitleBanner>
<br>
</div>
</div>
</template>
<script lang="ts" src="./CSignUpIscrizioneArcadei.ts">
</script>
<style lang="scss" scoped>
@import './CSignUpIscrizioneArcadei.scss';
</style>

View File

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

View File

@@ -0,0 +1,9 @@
import { ISignupIscrizioneConacreisOptions } from 'model'
import { email, minLength, required, sameAs } from 'vuelidate/lib/validators'
export interface ISignupConacreis {
signup: ISignupIscrizioneConacreisOptions,
validationGroup: string[]
}

View File

@@ -0,0 +1,34 @@
.signup {
width: 100%;
margin: 0 auto;
max-width: 450px;
}
.wrapper {
display: flex;
align-items: center;
justify-content: center;
}
.clCellCode {
border-radius: 32px;
border-right: #2d2260;
height: 50px;
font-size: 1rem;
padding: 8px;
}
.clCell {
border-radius: 32px;
border-right: #2d2260;
height: 50px;
font-size: 1rem;
padding: 8px;
}
.vue-country-select{
border-radius: 32px;
}

View File

@@ -0,0 +1,255 @@
import { ISignupIscrizioneConacreisOptions } from 'model'
import { tools } from '@store/Modules/tools'
import { Logo } from '@/components/logo'
import { CDate } from '@/components/CDate'
import { CMyPage } from '@/components/CMyPage'
import { CTitleBanner } from '../CTitleBanner'
import { computed, defineComponent, reactive, ref, watch } from 'vue'
import { useQuasar } from 'quasar'
import { useUserStore } from '@store/UserStore'
import { useRouter } from 'vue-router'
import { useGlobalStore } from '@store/globalStore'
import { useI18n } from '@/boot/i18n'
import MixinUsers from '@/mixins/mixin-users'
import useVuelidate from '@vuelidate/core'
import { email, minLength, required } from 'vuelidate/lib/validators'
// import {Loading, QSpinnerFacebook, QSpinnerGears} from 'quasar'
export default defineComponent({
name: 'CSignUpIscrizioneConacreis',
components: { Logo, CTitleBanner, CDate, CMyPage },
setup() {
const $q = useQuasar()
const userStore = useUserStore()
const $router = useRouter()
const globalStore = useGlobalStore()
const { t } = useI18n()
// @ts-ignore
const v$ = useVuelidate(validations, signup)
const countryname = ref('')
const countryborn = ref('')
const iamadult = ref(false)
const duplicate_email = ref(false)
const duplicate_username = ref(false)
const { mySurname, Email, myCell } = MixinUsers()
const { getMyUsername } = MixinUsers()
const signup = ref({
accetta_carta_costituzionale_on: false,
newsletter_on: false,
terms: false
} as ISignupIscrizioneConacreisOptions)
const validations: any = computed(() => {
const valid: any = {
signup: {
name: {
required
},
surname: {
required
},
email: {
email,
required
},
fiscalcode: {
required,
minLength: minLength(16)
},
residency_address: {
required
},
residency_city: {
required
},
residency_province: {
required
},
residency_zipcode: {
required
},
dateofbirth: {
required
},
born_city: {
required
},
born_province: {
required
},
born_country: {
required
},
metodo_pagamento: {
required
},
terms: {
required
},
}
}
return valid
})
function created() {
if (!!getMyUsername() && (!userStore.my.profile.socio)) {
signup.value.name = userStore.my.name
signup.value.surname = mySurname.toString()
signup.value.email = Email.toString()
signup.value.cell_phone = myCell.toString()
}
v$.value.$reset()
}
function allowSubmit() {
const error = v$.value.$error || v$.value.$invalid
// console.log('v', v$, 'error', error, 'terms', signup.value.terms, 'carta', signup.value.accetta_carta_costituzionale_on)
return !error && signup.value.terms && signup.value.accetta_carta_costituzionale_on
}
function errorMsg(cosa: string, item: any) {
try {
if (!item.$error) {
return ''
}
console.log('item', item)
// console.log('errorMsg', cosa, item)
if (item.$params.email && !item.email) {
return t('reg.err.email')
}
// console.log('item', item)
if (item.minLength !== undefined) {
if (!item.minLength) {
return t('reg.err.atleast') + ` ${item.$params.minLength.min} ` + t('reg.err.char')
}
}
if (item.complexity !== undefined) {
if (!item.complexity) {
return t('reg.err.complexity')
}
}
// if (!item.maxLength) { return t('reg.err.notmore') + ` ${item.$params.maxLength.max} ` + t('reg.err.char') }
if (item.required !== undefined) {
if (!item.required) {
return t('reg.err.required')
}
}
// console.log(' ....avanti')
if (cosa === 'email') {
// console.log("EMAIL " + item.isUnique);
// console.log(item);
if (!item.isUnique) {
return t('reg.err.duplicate_email')
}
} else if (cosa === 'username') {
// console.log(item);
console.log('username')
console.log(item.$error)
if (!item.isUnique) {
return t('reg.err.duplicate_username')
}
} else if ((cosa === 'name') || (cosa === 'surname')) {
// console.log(item);
}
return ''
} catch (error) {
// console.log("ERR : " + error);
}
}
function submitOk() {
v$.value.signup.value.touch()
if (signup.value) {
signup.value.email = tools.removespaces(signup.value.email!)
signup.value.email = signup.value.email.toLowerCase()
signup.value.residency_country = tools.CapitalizeAllWords(signup.value.residency_country)
signup.value.residency_address = tools.CapitalizeAllWords(signup.value.residency_address)
signup.value.residency_city = tools.CapitalizeAllWords(signup.value.residency_city)
signup.value.residency_province = signup.value.residency_province!.toUpperCase()
signup.value.born_province = signup.value.born_province!.toUpperCase()
duplicate_email.value = false
duplicate_username.value = false
if (!signup.value.terms) {
tools.showNotif($q, t('reg.err.terms'))
return
}
if (!signup.value.accetta_carta_costituzionale_on) {
tools.showNotif($q, t('reg.err.accetta_carta_costituzionale_on'))
return
}
if (v$.value.signup.value.$error) {
tools.showNotif($q, t('reg.err.errore_generico'))
return
}
signup.value.name = tools.CapitalizeAllWords(signup.value.name)
signup.value.surname = tools.CapitalizeAllWords(signup.value.surname)
signup.value.annoTesseramento = 2023
$q.loading.show({ message: t('reg.iscrizioneincorso') })
console.log(signup)
return userStore.iscrivitiConacreis(tools.clone(signup))
.then((ris) => {
if (tools.SignUpcheckErrors($q, $router, ris.code, ris.msg))
$q.loading.hide()
}).catch((error: any) => {
console.log('ERROR = ' + error)
$q.loading.hide()
})
}
}
function selectcountry({ name, iso2, dialCode }: {name: string, iso2: string, dialCode: string}) {
// console.log(name, iso2, dialCode)
signup.value.residency_country = name
countryname.value = name
}
function selectcountryborn({ name, iso2, dialCode }: {name: string, iso2: string, dialCode: string}) {
// console.log(name, iso2, dialCode)
signup.value.born_country = name
countryborn.value = name
}
created()
return {
tools,
selectcountryborn,
selectcountry,
submitOk,
errorMsg,
allowSubmit,
}
}
})

View File

@@ -0,0 +1,299 @@
<template>
<div>
<div class="text-center">
<logo></logo>
<CTitleBanner :title="$t('pages.SignUpIscrizione')" :canopen="true" :visible="false">
<div class="q-gutter-xs">
<p class="q-ml-md text-center">
Leggi
<span class="underline"> <router-link to="/il-nostro-progetto" custom v-slot="{ navigate }">
<span class="footer_link" @click="navigate" @keypress.enter="navigate" role="link">Il Nostro Progetto</span>
</router-link></span>
</p>
<q-input
v-model="signup.name"
rounded outlined
@blur="v$.signup.name.$touch"
:error="v$.signup.name.$error"
maxlength="30"
:error-message="errorMsg('name', v$.signup.name)"
:label="$t('reg.name')">
<template v-slot:prepend>
<q-icon name="person"/>
</template>
</q-input>
<q-input
v-model="signup.surname"
rounded outlined
@blur="v$.signup.surname.$touch"
:error="v$.signup.surname.$error"
maxlength="30"
:error-message="errorMsg('surname', v$.signup.surname)"
:label="$t('reg.surname')">
<template v-slot:prepend>
<q-icon name="person"/>
</template>
</q-input>
<q-input
v-model="signup.email"
rounded outlined
@blur="v$.signup.email.$touch"
:error="v$.signup.email.$error"
:error-message="errorMsg('email', v$.signup.email)"
maxlength="50"
debounce="1000"
:label="$t('reg.email')">
<template v-slot:prepend>
<q-icon name="email"/>
</template>
</q-input>
<q-input
v-model="signup.fiscalcode"
rounded outlined
@blur="v$.signup.fiscalcode.$touch"
:error="v$.signup.fiscalcode.$error"
maxlength="20"
mask="AAAAAA##A##A###A"
debounce="1000"
:error-message="errorMsg('fiscalcode', v$.signup.fiscalcode)"
:label="$t('reg.fiscalcode')">
<template v-slot:prepend>
<q-icon name="person"/>
</template>
</q-input>
<q-input
v-model="signup.residency_address"
rounded outlined
@blur="v$.signup.residency_address.$touch"
:error="v$.signup.residency_address.$error"
maxlength="60"
debounce="1000"
:error-message="errorMsg('residency_address', v$.signup.residency_address)"
:label="$t('reg.residency_address')">
<template v-slot:prepend>
<q-icon name="person"/>
</template>
</q-input>
<q-input
v-model="signup.residency_city"
rounded outlined
@blur="v$.signup.residency_city.$touch"
:error="v$.signup.residency_city.$error"
maxlength="60"
debounce="1000"
:error-message="errorMsg('residency_city', v$.signup.residency_city)"
:label="$t('reg.residency_city')">
<template v-slot:prepend>
<q-icon name="person"/>
</template>
</q-input>
<q-input
v-model="signup.residency_province"
rounded outlined
@blur="v$.signup.residency_province.$touch"
:error="v$.signup.residency_province.$error"
maxlength="3"
debounce="1000"
:error-message="errorMsg('residency_province', v$.signup.residency_province)"
:label="$t('reg.residency_province')">
<template v-slot:prepend>
<q-icon name="person"/>
</template>
</q-input>
<q-input
v-model="signup.residency_zipcode"
rounded outlined
@blur="v$.signup.residency_zipcode.$touch"
:error="v$.signup.residency_zipcode.$error"
maxlength="10"
debounce="1000"
:error-message="errorMsg('residency_zipcode', v$.signup.residency_zipcode)"
:label="$t('reg.residency_zipcode')">
<template v-slot:prepend>
<q-icon name="person"/>
</template>
</q-input>
<q-input
v-model="countryname"
:readonly="true"
rounded outlined
debounce="1000"
:label="$t('reg.nationality')">
<template v-slot:prepend>
<vue-country-code
@onSelect="selectcountry"
:preferredCountries="tools.getprefCountries"
:dropdownOptions="{ disabledDialCode: true }"
>
</vue-country-code>
</template>
</q-input>
<br>
<vue-tel-input
v-model="signup.cell_phone"
:placeholder="$t('reg.cell')"
maxlength="20"
debounce="1000"
:enabledCountryCode="true"
inputClasses="clCell"
wrapperClasses="clCellCode">
</vue-tel-input>
<br>
<q-input
v-model="signup.dateofbirth"
debounce="1000"
@blur="v$.signup.dateofbirth.$touch"
:error="v$.signup.dateofbirth.$error"
:error-message="errorMsg('dateofbirth', v$.signup.dateofbirth)"
stack-label
:label="$t('reg.dateofbirth')"
rounded
type="date"
mask="date"
fill-mask
outlined>
</q-input>
<q-input
v-model="signup.born_city"
rounded outlined
@blur="v$.signup.born_city.$touch"
:error="v$.signup.born_city.$error"
maxlength="60"
debounce="1000"
:error-message="errorMsg('born_city', v$.signup.born_city)"
:label="$t('reg.born_city')">
<template v-slot:prepend>
<q-icon name="person"/>
</template>
</q-input>
<q-input
v-model="signup.born_province"
rounded outlined
@blur="v$.signup.born_province.$touch"
:error="v$.signup.born_province.$error"
maxlength="3"
debounce="1000"
:error-message="errorMsg('born_province', v$.signup.born_province)"
:label="$t('reg.born_province')">
<template v-slot:prepend>
<q-icon name="person"/>
</template>
</q-input>
<!--<CDate :mydate="signup.dateofbirth" @input="setDateOfBirth(arguments[0])"
:rounded="true" :outlined="true"
:dense="false"
:label="$t('reg.dateofbirth')">
</CDate>-->
<q-input
v-model="countryborn"
:readonly="true"
rounded outlined
debounce="1000"
:label="$t('reg.nationality_born')">
<template v-slot:prepend>
<vue-country-code
@onSelect="selectcountryborn"
:preferredCountries="tools.getprefCountries"
:dropdownOptions="{ disabledDialCode: true }"
>
</vue-country-code>
</template>
</q-input>
<br>
<!--<div v-if="!tools.isMobile()"><br></div>-->
<q-select
rounded outlined v-model="signup.metodo_pagamento"
:options="tools.SelectMetodiPagamento"
:label="$t('reg.metodopagamento')" emit-value map-options>
</q-select>
<q-checkbox
v-model="signup.accetta_carta_costituzionale_on"
color="secondary">
<span v-html="$t('reg.accetta_carta_costituzionale_on')"></span>
</q-checkbox>
<q-checkbox
v-model="signup.terms"
color="secondary"
@blur="v$.signup.terms.$touch"
:error="v$.signup.terms.$error"
:error-message="`${errorMsg('terms', v$.signup.terms)}`"
:label="$t('reg.terms')">
</q-checkbox>
<div class="wrapper">
<q-btn rounded size="lg" color="positive" @click="submitOk" :disabled='!allowSubmit'
:label="$t('reg.iscriviti')">
</q-btn>
</div>
<br>
</div>
</CTitleBanner>
<br>
</div>
</div>
</template>
<script lang="ts" src="./CSignUpIscrizioneConacreis.ts">
</script>
<style lang="scss" scoped>
@import './CSignUpIscrizioneConacreis.scss';
</style>

View File

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

View File

@@ -16,6 +16,8 @@ export * from './CMyCart'
export * from './CMyFieldDb' export * from './CMyFieldDb'
export * from './CMyFieldRec' export * from './CMyFieldRec'
export * from './CMyPage' export * from './CMyPage'
export * from './CMyPageIntro'
export * from './CMyElem'
export * from './CMyTeacher' export * from './CMyTeacher'
export * from './CProfile' export * from './CProfile'
export * from './CProvaPao' export * from './CProvaPao'

View File

@@ -706,6 +706,11 @@ $heightBtn: 100%;
} }
} }
.imgintro {
margin-left: auto;
margin-right: auto;
}
.img2 { .img2 {
margin-left: auto; margin-left: auto;
margin-right: auto; margin-right: auto;
@@ -1095,6 +1100,12 @@ $heightBtn: 100%;
-webkit-font-smoothing: antialiased; -webkit-font-smoothing: antialiased;
} }
.q-carousel__slide {
background-size: contain !important;
background-position: 50% center !important;
background-repeat: no-repeat !important;
}
.carousel_img { .carousel_img {
//background-image: url(../../public/images/cibo_sano.jpg); //background-image: url(../../public/images/cibo_sano.jpg);
background-size: contain !important; background-size: contain !important;

View File

@@ -270,6 +270,21 @@ const routes_manager: IListRoutes[] = [
onlyManager: true, onlyManager: true,
onlyFacilitatore: true onlyFacilitatore: true
}, },
{
active: true,
order: 10,
path: '/admin/iscrittiarcadei',
materialIcon: 'fas fa-users',
name: 'otherpages.admin.iscrittiarcadei',
component: () => import('@/rootgen/admin/iscrittiarcadei/iscrittiarcadei.vue'),
inmenu: true,
submenu: true,
level_parent: 0,
level_child: 0.5,
onlyManager: true,
onlyFacilitatore: true
},
/* /*
{ {
active: true, active: true,
@@ -345,6 +360,20 @@ const routes_manager: IListRoutes[] = [
onlyManager: true, onlyManager: true,
onlyEditor: true onlyEditor: true
}, },
{
active: true,
order: 32,
path: '/admin/home',
materialIcon: 'fas fa-file-alt',
name: 'otherpages.admin.Home',
component: () => import('@/rootgen/admin/home/home.vue'),
inmenu: true,
submenu: true,
level_parent: 0,
level_child: 0.5,
onlyManager: true,
onlyEditor: true
},
{ {
active: true, active: true,
order: 30, order: 30,
@@ -546,7 +575,7 @@ const baseroutes: 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,
path: '/circuit/:path', path: '/circuit/:path',

View File

@@ -113,13 +113,27 @@ export interface IMyBot {
export interface IMyElem { export interface IMyElem {
_id?: string _id?: string
type?: string type?: number
title?: string title?: string
container?: string container?: string
container2?: string
container3?: string
number?: number
imgback?: string
ratio?: string
containerHtml?: string
size?: string size?: string
order?: string order?: string
width?: string
height?: string height?: string
heightimg?: string
widthimg?: string
link?: string
onlyif_logged?: boolean
active?: boolean active?: boolean
class?: string
styleadd?: string
list?: IImgGallery[]
} }
@@ -300,6 +314,7 @@ export interface IGlobalState {
newstosent: INewsToSent[], newstosent: INewsToSent[],
gallery: IGallery[], gallery: IGallery[],
mypage: IMyPage[], mypage: IMyPage[],
myelems: IMyElem[],
templemail: ITemplEmail[], templemail: ITemplEmail[],
opzemail: ISettings[], opzemail: ISettings[],
mailinglist: IMailinglist[], mailinglist: IMailinglist[],
@@ -822,7 +837,7 @@ export interface IProvince {
link_grp: string link_grp: string
} }
export interface IMySkill extends IMyMain{ export interface IMySkill extends IMyMain {
_id: number _id: number
idSector: number idSector: number
idSkill: number idSkill: number
@@ -834,7 +849,7 @@ export interface IMySkill extends IMyMain{
NumLevel: number NumLevel: number
adType: number adType: number
note: string note: string
//**ADDFIELD_MYSKILL // **ADDFIELD_MYSKILL
website: string website: string
descr: string descr: string
date_created?: Date, date_created?: Date,
@@ -847,7 +862,7 @@ export interface IMyMain {
pub_to_share?: number pub_to_share?: number
} }
export interface IMyGoods extends IMyMain{ export interface IMyGoods extends IMyMain {
_id: number _id: number
idSector: number idSector: number
idSkill: number idSkill: number
@@ -860,7 +875,7 @@ export interface IMyGoods extends IMyMain{
NumLevel: number NumLevel: number
adType: number adType: number
note: string note: string
//**ADDFIELD_MYSKILL // **ADDFIELD_MYSKILL
website: string website: string
descr: string descr: string
date_created?: Date, date_created?: Date,
@@ -881,7 +896,7 @@ export interface IMyBacheca extends IMyMain {
NumLevel: number NumLevel: number
adType: number adType: number
note: string note: string
//**ADDFIELD_MYBACHECAS // **ADDFIELD_MYBACHECAS
website: string website: string
descr: string descr: string
date_created?: Date, date_created?: Date,

View File

@@ -50,3 +50,40 @@ export interface ISignupIscrizioneConacreisOptions {
terms?: boolean terms?: boolean
note?: string note?: string
} }
export interface ISignupIscrizioneArcadeiOptions {
userId?: string
name?: string
surname?: string
email?: string
fiscalcode?: string
residency_address?: string
residency_city?: string
residency_province?: string
residency_country?: string
residency_zipcode?: string
dateofbirth?: Date
dateofreg?: Date
dateofapproved?: Date
born_city?: string
born_province?: string
born_country?: string
cell_phone?: string
newsletter_on?: boolean
accetta_carta_costituzionale_on?: boolean
metodo_pagamento?: number
iscrizione_compilata?: boolean
ha_pagato?: boolean
codiceConacreis?: string
annoTesseramento?: number
numTesseraInterna?: number
biografia?: string
motivazioni?: string
competenze_professionalita?: string
cosa_potrei_offrire?: string
cosa_vorrei_ricevere?: string
altre_comunicazioni?: string
come_ci_hai_conosciuto?: string
terms?: boolean
note?: string
}

View File

@@ -13,33 +13,20 @@ import { tools } from '@src/store/Modules/tools'
import { static_data } from '@src/db/static_data' import { static_data } from '@src/db/static_data'
import { toolsext } from '@src/store/Modules/toolsext' import { toolsext } from '@src/store/Modules/toolsext'
import { Screen } from 'quasar' import { Screen } from 'quasar'
import { CCardCarousel, CEventsCalendar, COpenStreetMap } from '@components' import { CCardCarousel, CEventsCalendar, CMyElem, COpenStreetMap } from '@components'
import MixinBase from '@src/mixins/mixin-base' import MixinBase from '@src/mixins/mixin-base'
import { firstimagehome } from '@src/db/static_data' import { firstimagehome } from '@src/db/static_data'
import MixinMetaTags from '@/mixins/mixin-metatags' import MixinMetaTags from '@/mixins/mixin-metatags'
export default defineComponent({ export default defineComponent({
name: 'home_arcadei', name: 'home_arcadei',
components: { Logo, LandingFooter, CMyPage, CCardCarousel, CEventsCalendar, COpenStreetMap }, components: { Logo, LandingFooter, CMyPage, CMyElem },
setup() { 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 userStore = useUserStore()
const globalStore = useGlobalStore() const globalStore = useGlobalStore()
const { setValDb, getValDb } = MixinBase() const { setValDb, getValDb } = MixinBase()
const { setmeta, getsrcbyimg } = MixinMetaTags()
function getheightgallery() { function getheightgallery() {
if (tools.isMobile()) if (tools.isMobile())
@@ -52,26 +39,15 @@ export default defineComponent({
// //
} }
function getArrDisciplines() {
return globalStore.disciplines.filter((rec: any) => rec.showinhome)
}
created() created()
return { return {
tools, tools,
toolsext, toolsext,
static_data, static_data,
animare,
slide,
slide2,
getheightgallery, getheightgallery,
getArrDisciplines,
getImmagini,
getValDb, getValDb,
firstimagehome, globalStore,
getsrcbyimg,
setmeta,
} }
}, },
}) })

View File

@@ -1,214 +1,11 @@
<template> <template>
<q-page> <q-page>
<CMyPage title="Home"> <CMyPage title="Home">
<div class="landing"> <span v-for="(myelem, ind) in globalStore.myelems" :key="ind">
<section> <CMyElem v-if="myelem.active" :myelem="myelem">
<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> </CMyElem>
<div class="text-subtitle2 shadow text-italic q-pl-sm"> </span>
</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> </CMyPage>
</q-page> </q-page>
</template> </template>

View File

@@ -28,11 +28,6 @@ export default defineComponent({
const slide2 = ref(1) const slide2 = ref(1)
const getImmagini = ref([ const getImmagini = ref([
{
title: '', subtitle: '',
alt: 'Elisa e Cristina insieme',
img: '../../statics/images/eventi_esterni/IMG_6035.jpg'
},
]) ])
const userStore = useUserStore() const userStore = useUserStore()

View File

24
src/rootgen/admin/home/home.ts Executable file
View File

@@ -0,0 +1,24 @@
import { defineComponent, ref, onMounted } from 'vue'
import { CImgText } from '../../../components/CImgText/index'
import { CCard } from '@/components/CCard'
import { CMyPage } from '@/components/CMyPage'
import { CTitleBanner } from '@/components/CTitleBanner'
import { CGridTableRec } from '@/components/CGridTableRec'
import { colmyelems } from '@src/store/Modules/fieldsTable'
import MixinMetaTags from '@/mixins/mixin-metatags'
export default defineComponent({
name: 'Home',
components: { CImgText, CCard, CMyPage, CTitleBanner, CGridTableRec },
setup() {
const { setmeta } = MixinMetaTags()
return {
colmyelems,
setmeta,
}
}
})

31
src/rootgen/admin/home/home.vue Executable file
View File

@@ -0,0 +1,31 @@
ù<template>
<CMyPage title="Pagina Home" imgbackground="images/calendario_eventi.jpg" sizes="max-height: 120px">
<span>{{
setmeta({
title: 'Pagina Home',
description: '',
keywords: '',
})
}}
</span>
<div class="q-ma-sm q-gutter-sm q-pa-xs">
<CTitleBanner title="Pagina Home"></CTitleBanner>
<CGridTableRec
prop_mytable="myelems"
prop_mytitle="Pagina Home"
:prop_mycolumns="colmyelems"
prop_colkey="title"
nodataLabel="Nessun elemento di Pagina Home"
noresultLabel="Il filtro selezionato non ha trovato nessun risultato">
</CGridTableRec>
</div>
</CMyPage>
</template>
<script lang="ts" src="./home.ts">
</script>
<style lang="scss" scoped>
@import 'home.scss';
</style>

View File

@@ -0,0 +1,140 @@
import { defineComponent, ref, onMounted } from 'vue'
import { CImgText } from '../../../components/CImgText/index'
import { CCard } from '@/components/CCard'
import { CMyPage } from '@/components/CMyPage'
import { CTitleBanner } from '@/components/CTitleBanner'
import { CGridTableRec } from '@/components/CGridTableRec'
import { useUserStore } from '@store/UserStore'
import { colTableIscrittiArcadei } from '@src/store/Modules/fieldsTable'
import MixinBase from '@src/mixins/mixin-base'
import { IParamsQuery, ISignupIscrizioneArcadeiOptions, ISignupIscrizioneConacreisOptions } from '@src/model'
import { shared_consts } from '@src/common/shared_vuejs'
import { tools } from '@store/Modules/tools'
export default defineComponent({
name: 'Iscrittiarcadei',
components: { CImgText, CCard, CMyPage, CTitleBanner, CGridTableRec },
setup(props) {
const userStore = useUserStore()
const arrfilterand: any = ref([])
const myrec: any = ref([])
const pagination = ref({
sortBy: 'name',
descending: false,
page: 2,
rowsPerPage: 5
// rowsNumber: xx if getting data from a server
})
const myfilter = ref('')
function mounted()
{
arrfilterand.value = [
{
label: 'Manca il pagamento',
value: 0
},
{
label: 'Da Tesserare',
value: shared_consts.FILTER_TO_MAKE_MEMBERSHIP_CARD
},
{
label: 'Tesserati',
value: shared_consts.FILTER_MEMBERSHIP_CARD_OK
},
]
}
function getcolIscrittiArcadei()
{
return colTableIscrittiArcadei
}
function loadrec(): ISignupIscrizioneArcadeiOptions[]
{
const sortBy = 'numshared'
const descending = 1
const myobj: any = {}
if (descending)
myobj[sortBy] = -1
else
myobj[sortBy] = 1
const params: any = {
table: 'iscrittiarcadei',
startRow: 0,
endRow: 10000,
filter: '',
filterand: myfilter.value,
sortBy: myobj,
descending,
userId: userStore.my._id
}
console.log('myload', params)
return globalStore.loadTable(params).then((data: any) => {
return data.rows
})
}
async function exportLista()
{
myrec = await loadrec()
const sep = ';'
let mystr = ''
mystr += 'anno' + sep + 'numero_tessera' + sep + 'Conacreis' + sep + 'data_richiesta_iscrizione' + sep + 'data_approvazione_iscrizione' + sep
+ 'nome' + sep + 'cognome' + sep + 'codice_fiscale' + sep + 'partita_iva' + sep + 'nazione' + sep + 'indirizzo' + sep
+ 'localita' + sep + 'Prov' + sep + 'cap' + sep + 'nazione_nascita' + sep + 'data_nascita' + sep
+ 'luogo_nascita' + sep + 'provincia_nascita' + sep + 'email' + sep + 'telefono' + sep + 'quota_versata' + '\n'
let index = 1
for (const rec of myrec) {
mystr += rec.annoTesseramento + sep
mystr += (!!rec.numTesseraInterna ? rec.numTesseraInterna : ' ') + sep
mystr += (!!rec.codiceConacreis ? rec.codiceConacreis + sep : ' ') + sep
mystr += tools.getstrDate(rec.dateofreg) + sep
mystr += tools.getstrDate(rec.dateofapproved) + sep
mystr += rec.name + sep
mystr += rec.surname + sep
mystr += rec.fiscalcode + sep
mystr += ' ' + sep // partita_iva
mystr += rec.residency_country + sep
mystr += rec.residency_address + sep
mystr += rec.residency_city + sep
mystr += rec.residency_province + sep
mystr += rec.residency_zipcode + sep
mystr += rec.born_country + sep
mystr += tools.getstrDate(rec.dateofbirth) + sep
mystr += rec.born_city + sep
mystr += rec.born_province + sep
mystr += rec.email + sep
mystr += rec.cell_phone + sep
mystr += (rec.ha_pagato ? 'si' : 'no') + sep
// mystr += 'si' + sep
// mystr += 'si' + sep
mystr += '\n'
index++
}
tools.copyStringToClipboard(this, mystr, false)
}
savefilter(filter: any)
{
console.log('filter', filter)
myfilter.value = filter
}
}
})

View File

@@ -0,0 +1,48 @@
<template>
<CMyPage title="Iscritti Arcadei" imgbackground="../../statics/images/iscritti_conacreis.jpg"
sizes="max-height: 120px">
<span>{{
setmeta({
title: 'Iscritti Arcadei',
description: "",
keywords: ''
})
}}
</span>
<div class="q-ma-sm q-gutter-sm q-pa-xs">
<CTitleBanner title="Iscritti Arcadei"></CTitleBanner>
<q-btn
rounded
dense
color="primary"
size="md"
label="Copia questa Lista negli appunti"
@click="exportLista()">
</q-btn>
<CGridTableRec prop_mytable="iscrittiarcadei"
prop_mytitle="Iscritti Arcadei"
:prop_mycolumns="getcolIscrittiArcadei"
prop_colkey="name"
nodataLabel="Nessun Iscritto Arcadei"
noresultLabel="Il filtro selezionato non ha trovato nessun risultato"
:arrfilters="arrfilterand"
@savefilter="savefilter"
>
</CGridTableRec>
</div>
</CMyPage>
</template>
<script lang="ts" src="./iscrittiarcadei.ts">
</script>
<style lang="scss" scoped>
@import 'iscrittiarcadei.scss';
</style>

View File

@@ -1,4 +1,4 @@
<template> ù<template>
<CMyPage title="Pagine" imgbackground="images/calendario_eventi.jpg" sizes="max-height: 120px"> <CMyPage title="Pagine" imgbackground="images/calendario_eventi.jpg" sizes="max-height: 120px">
<span>{{ <span>{{
setmeta({ setmeta({

View File

@@ -60,6 +60,7 @@ const msg_it = {
accountslist: 'Conti', accountslist: 'Conti',
movslist: 'Movimenti', movslist: 'Movimenti',
iscritticonacreis: 'Iscritti Conacreis', iscritticonacreis: 'Iscritti Conacreis',
iscrittiarcadei: 'Iscritti Arcadei',
zoomlist: 'Calendario Zoom', zoomlist: 'Calendario Zoom',
extralist: 'Lista Extra', extralist: 'Lista Extra',
dbop: 'Db Operations', dbop: 'Db Operations',
@@ -69,6 +70,7 @@ const msg_it = {
newsletter: 'Newsletter', newsletter: 'Newsletter',
monete: 'Monete', monete: 'Monete',
pages: 'Pagine', pages: 'Pagine',
Home: 'Pagina Home',
operators: 'Operatori', operators: 'Operatori',
disciplines: 'Discipline', disciplines: 'Discipline',
media: 'Media', media: 'Media',

View File

@@ -123,6 +123,40 @@ export const colgallery = [
AddCol(DuplicateRec), AddCol(DuplicateRec),
] ]
export const colmyelems = [
AddCol({ name: 'active', label_trans: 'myelems.active', fieldtype: costanti.FieldType.boolean }),
AddCol({ name: 'title', label_trans: 'myelems.title' }),
AddCol({ name: 'order', label_trans: 'myelems.order', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'type', label_trans: 'myelems.type', fieldtype: costanti.FieldType.select, jointable: 'elemtypes' }),
AddCol({ name: 'container', label_trans: 'myelems.container' }),
AddCol({ name: 'container2', label_trans: 'myelems.container2' }),
AddCol({ name: 'container3', label_trans: 'myelems.container3' }),
AddCol({ name: 'number', label_trans: 'myelems.number', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'imgback', label_trans: 'myelems.imgback' }),
AddCol({ name: 'size', label_trans: 'myelems.size' }),
AddCol({ name: 'ratio', label_trans: 'myelems.ratio' }),
AddCol({ name: 'containerHtml', label_trans: 'myelems.containerHtml', fieldtype: costanti.FieldType.html }),
AddCol({ name: 'height', label_trans: 'myelems.height', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'heightimg', label_trans: 'myelems.heightimg', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'widthimg', label_trans: 'pages.widthimg', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'link', label_trans: 'pages.link', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'width', label_trans: 'myelems.width', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'onlyif_logged', label_trans: 'myelems.onlyif_logged', fieldtype: costanti.FieldType.boolean }),
AddCol({ name: 'color', label_trans: 'myelems.color' }),
AddCol({ name: 'class', label_trans: 'myelems.class' }),
AddCol({ name: 'styleadd', label_trans: 'myelems.styleadd' }),
AddCol({
name: 'list',
label_trans: 'gallery.list',
fieldtype: costanti.FieldType.listimages,
jointable: '',
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView,
isInModif: true,
}),
AddCol(DeleteRec),
AddCol(DuplicateRec),
]
export const colmsg_templates = [ export const colmsg_templates = [
AddCol({ name: 'title', label_trans: 'pages.title' }), AddCol({ name: 'title', label_trans: 'pages.title' }),
AddCol({ name: 'typemsg', label_trans: 'TypeMsg', fieldtype: costanti.FieldType.number }), AddCol({ name: 'typemsg', label_trans: 'TypeMsg', fieldtype: costanti.FieldType.number }),
@@ -273,7 +307,7 @@ export const getcolorderscart = [
AddCol({ name: 'created_at', label_trans: 'order.created_at', fieldtype: costanti.FieldType.date }), AddCol({ name: 'created_at', label_trans: 'order.created_at', fieldtype: costanti.FieldType.date }),
AddCol({ name: 'status', label_trans: 'order.status' }), AddCol({ name: 'status', label_trans: 'order.status' }),
AddCol({ name: 'items', label_trans: 'order.items' }), AddCol({ name: 'items', label_trans: 'order.items' }),
AddCol({ name: 'userId', label_trans: 'order.users', fieldtype: costanti.FieldType.select, jointable: 'users', }), AddCol({ name: 'userId', label_trans: 'order.users', fieldtype: costanti.FieldType.select, jointable: 'users' }),
AddCol({ name: 'note', label_trans: 'order.note' }), AddCol({ name: 'note', label_trans: 'order.note' }),
AddCol(DeleteRec), AddCol(DeleteRec),
AddCol(DuplicateRec), AddCol(DuplicateRec),
@@ -795,7 +829,7 @@ export const colmyGoods = [
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist, showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist,
noshowlabel: true, noshowlabel: true,
icon: 'fas fa-hand-holding', icon: 'fas fa-hand-holding',
//icon: 'fas fa-hands-helping', // icon: 'fas fa-hands-helping',
// isadvanced_field: true, // isadvanced_field: true,
}), }),
AddCol({ AddCol({
@@ -806,7 +840,7 @@ export const colmyGoods = [
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist, showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist,
noshowlabel: true, noshowlabel: true,
icon: 'fas fa-shipping-fast', icon: 'fas fa-shipping-fast',
//icon: 'fas fa-hands-helping', // icon: 'fas fa-hands-helping',
// isadvanced_field: true, // isadvanced_field: true,
}), }),
AddCol({ AddCol({
@@ -817,7 +851,7 @@ export const colmyGoods = [
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist, showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist,
noshowlabel: true, noshowlabel: true,
icon: 'fas fa-filter', icon: 'fas fa-filter',
//icon: 'fas fa-hands-helping', // icon: 'fas fa-hands-helping',
// isadvanced_field: true, // isadvanced_field: true,
}), }),
AddCol({ AddCol({
@@ -860,7 +894,7 @@ export const colmyGoods = [
*/ */
//**ADDFIELD_MYSKILL // **ADDFIELD_MYSKILL
AddCol({ AddCol({
name: 'website', label_trans: 'reg.website', isadvanced_field: true, fieldtype: costanti.FieldType.link, name: 'website', label_trans: 'reg.website', isadvanced_field: true, fieldtype: costanti.FieldType.link,
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist showWhen: costanti.showWhen.NewRec + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist
@@ -973,7 +1007,7 @@ export const colmySkills = [
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist, showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist,
noshowlabel: true, noshowlabel: true,
icon: 'fas fa-hand-holding', icon: 'fas fa-hand-holding',
//icon: 'fas fa-hands-helping', // icon: 'fas fa-hands-helping',
// isadvanced_field: true, // isadvanced_field: true,
}), }),
AddCol({ AddCol({
@@ -1029,7 +1063,7 @@ export const colmySkills = [
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView, showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView,
isadvanced_field: true, isadvanced_field: true,
}), }),
//**ADDFIELD_MYSKILL // **ADDFIELD_MYSKILL
AddCol({ AddCol({
name: 'website', label_trans: 'reg.website', isadvanced_field: true, fieldtype: costanti.FieldType.link, name: 'website', label_trans: 'reg.website', isadvanced_field: true, fieldtype: costanti.FieldType.link,
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist showWhen: costanti.showWhen.NewRec + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist
@@ -1097,7 +1131,7 @@ export const colmyHosp = [
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist, showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist,
noshowlabel: true, noshowlabel: true,
icon: 'fas fa-asterisk', icon: 'fas fa-asterisk',
//icon: 'fas fa-hands-helping', // icon: 'fas fa-hands-helping',
isadvanced_field: false, isadvanced_field: false,
sortable: false, sortable: false,
}), }),
@@ -1133,7 +1167,7 @@ export const colmyHosp = [
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist, showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist,
noshowlabel: true, noshowlabel: true,
icon: 'fas fa-hand-holding', icon: 'fas fa-hand-holding',
//icon: 'fas fa-hands-helping', // icon: 'fas fa-hands-helping',
isadvanced_field: false, isadvanced_field: false,
sortable: false, sortable: false,
}), }),
@@ -1165,7 +1199,7 @@ export const colmyHosp = [
isadvanced_field: true, isadvanced_field: true,
sortable: false, sortable: false,
}), }),
//**ADDFIELD_MYBACHECAS // **ADDFIELD_MYBACHECAS
AddCol({ AddCol({
name: 'link_maplocation', label_trans: 'reg.link_maplocation', isadvanced_field: true, fieldtype: costanti.FieldType.link, name: 'link_maplocation', label_trans: 'reg.link_maplocation', isadvanced_field: true, fieldtype: costanti.FieldType.link,
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist, showWhen: costanti.showWhen.NewRec + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist,
@@ -1308,7 +1342,7 @@ export const colmyBachecas = [
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist, showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist,
noshowlabel: true, noshowlabel: true,
icon: 'fas fa-hand-holding', icon: 'fas fa-hand-holding',
//icon: 'fas fa-hands-helping', // icon: 'fas fa-hands-helping',
isadvanced_field: false, isadvanced_field: false,
sortable: false, sortable: false,
}), }),
@@ -1337,7 +1371,7 @@ export const colmyBachecas = [
isadvanced_field: true, isadvanced_field: true,
sortable: false, sortable: false,
}), }),
//**ADDFIELD_MYBACHECAS // **ADDFIELD_MYBACHECAS
AddCol({ AddCol({
name: 'website', label_trans: 'reg.website', isadvanced_field: true, fieldtype: costanti.FieldType.link, name: 'website', label_trans: 'reg.website', isadvanced_field: true, fieldtype: costanti.FieldType.link,
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist, showWhen: costanti.showWhen.NewRec + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist,
@@ -1459,6 +1493,54 @@ export const colTableIscrittiConacreis = [
AddCol(DuplicateRec), AddCol(DuplicateRec),
] ]
export const colTableIscrittiArcadei = [
AddCol({ name: 'annoTesseramento', label_trans: 'reg.annoTesseramento', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'numTesseraInterna', label_trans: 'reg.numTesseraInterna', fieldtype: costanti.FieldType.number }),
AddCol({
name: 'metodo_pagamento',
label_trans: 'reg.metodo_pagamento',
fieldtype: costanti.FieldType.select,
jointable: 'metodo_pagamento',
}),
AddCol({ name: 'ha_pagato', label_trans: 'reg.ha_pagato', fieldtype: costanti.FieldType.boolean }),
AddCol({ name: 'name', label_trans: 'reg.name', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'surname', label_trans: 'reg.surname', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'dateofreg', label_trans: 'reg.dateofreg', fieldtype: costanti.FieldType.onlydate }),
AddCol({ name: 'dateofapproved', label_trans: 'reg.dateofapproved', fieldtype: costanti.FieldType.onlydate }),
AddCol({ name: 'email', label_trans: 'reg.email', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'email2', label_trans: 'reg.email2', fieldtype: costanti.FieldType.string }),
// AddCol({ name: 'fiscalcode', label_trans: 'reg.fiscalcode', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'residency_address', label_trans: 'reg.residency_address', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'residency_city', label_trans: 'reg.residency_city', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'residency_province', label_trans: 'reg.residency_province', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'residency_country', label_trans: 'reg.residency_country', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'residency_zipcode', label_trans: 'reg.residency_zipcode', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'dateofbirth', label_trans: 'reg.dateofbirth', fieldtype: costanti.FieldType.onlydate }),
AddCol({ name: 'born_city', label_trans: 'reg.born_city', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'born_province', label_trans: 'reg.born_province', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'born_country', label_trans: 'reg.born_country', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'cell_phone', label_trans: 'reg.cell_phone', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'cell_phone2', label_trans: 'reg.cell_phone2', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'doctype', label_trans: 'reg.doctype', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'documentnumber', label_trans: 'reg.documentnumber', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'quota_versata', label_trans: 'reg.quota_versata', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'categorie_interesse', label_trans: 'reg.categorie_interesse', fieldtype: costanti.FieldType.multiselect, jointable: 'cat_interesse_arcadei', }),
AddCol({ name: 'altre_comunicazioni', label_trans: 'reg.altre_comunicazioni', fieldtype: costanti.FieldType.string }),
AddCol({
name: 'come_ci_hai_conosciuto',
label_trans: 'reg.come_ci_hai_conosciuto',
fieldtype: costanti.FieldType.string,
}),
AddCol({
name: 'iscrizione_compilata',
label_trans: 'reg.iscrizione_compilata',
fieldtype: costanti.FieldType.boolean
}),
AddCol({ name: 'note', label_trans: 'reg.note', fieldtype: costanti.FieldType.string }),
AddCol(DeleteRec),
AddCol(DuplicateRec),
]
export const colTableProducts = [ export const colTableProducts = [
AddCol({ name: 'active', label_trans: 'products.active', fieldtype: costanti.FieldType.boolean }), AddCol({ name: 'active', label_trans: 'products.active', fieldtype: costanti.FieldType.boolean }),
AddCol({ name: 'code', label_trans: 'products.code' }), AddCol({ name: 'code', label_trans: 'products.code' }),
@@ -2131,8 +2213,8 @@ export const colTableUsersCNM = [
label_trans: 'reg.consiglio', label_trans: 'reg.consiglio',
fieldtype: costanti.FieldType.boolean, fieldtype: costanti.FieldType.boolean,
}), }),
AddCol({ name: 'profile.motivazioni', field: 'profile', subfield: 'motivazioni', label_trans: 'reg.motivazioni', }), AddCol({ name: 'profile.motivazioni', field: 'profile', subfield: 'motivazioni', label_trans: 'reg.motivazioni' }),
AddCol({ name: 'profile.biografia', field: 'profile', subfield: 'biografia', label_trans: 'reg.biografia', }), AddCol({ name: 'profile.biografia', field: 'profile', subfield: 'biografia', label_trans: 'reg.biografia' }),
AddCol({ AddCol({
name: 'profile.competenze_professionalita', name: 'profile.competenze_professionalita',
field: 'profile', field: 'profile',
@@ -2355,8 +2437,8 @@ export const colTableUsersISP = [
fieldtype: costanti.FieldType.boolean, fieldtype: costanti.FieldType.boolean,
}), }),
// AddCol({ name: 'profile.motivazioni', field: 'profile', subfield: 'motivazioni', label_trans: 'reg.motivazioni', }), // AddCol({ name: 'profile.motivazioni', field: 'profile', subfield: 'motivazioni', label_trans: 'reg.motivazioni', }),
AddCol({ name: 'profile.biografia', field: 'profile', subfield: 'biografia', label_trans: 'reg.biografia', }), AddCol({ name: 'profile.biografia', field: 'profile', subfield: 'biografia', label_trans: 'reg.biografia' }),
AddCol({ name: 'profile.qualifica', field: 'profile', subfield: 'qualifica', label_trans: 'reg.qualifica', }), AddCol({ name: 'profile.qualifica', field: 'profile', subfield: 'qualifica', label_trans: 'reg.qualifica' }),
AddCol({ AddCol({
name: 'profile.paymenttypes', name: 'profile.paymenttypes',
field: 'profile', field: 'profile',
@@ -2476,7 +2558,7 @@ export const colTableCircuitComplete = [
}), }),
AddCol({ name: 'regulation', label_trans: 'circuit.regulation', fieldtype: costanti.FieldType.html }), AddCol({ name: 'regulation', label_trans: 'circuit.regulation', fieldtype: costanti.FieldType.html }),
AddCol({ name: 'systemUserDescr', label_trans: 'circuit.systemUserDescr' }), AddCol({ name: 'systemUserDescr', label_trans: 'circuit.systemUserDescr' }),
AddCol({ name: 'systemUserId', label_trans: 'circuit.systemUserId', fieldtype: costanti.FieldType.select, jointable: 'users', }), AddCol({ name: 'systemUserId', label_trans: 'circuit.systemUserId', fieldtype: costanti.FieldType.select, jointable: 'users' }),
AddCol({ name: 'createdBy', label_trans: 'circuit.founder', fieldtype: costanti.FieldType.select, jointable: 'users', AddCol({ name: 'createdBy', label_trans: 'circuit.founder', fieldtype: costanti.FieldType.select, jointable: 'users',
showWhen: costanti.showWhen.InPage + costanti.showWhen.InView, showWhen: costanti.showWhen.InPage + costanti.showWhen.InView,
}), }),
@@ -2629,7 +2711,7 @@ export const colTableCircuit = [
export const colmyUserCircuit = [ export const colmyUserCircuit = [
AddCol({ name: 'circuitId', label_trans: 'account.circuitId', fieldtype: costanti.FieldType.string }), AddCol({ name: 'circuitId', label_trans: 'account.circuitId', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'userId', label_trans: 'account.users', fieldtype: costanti.FieldType.select, jointable: 'users', }), AddCol({ name: 'userId', label_trans: 'account.users', fieldtype: costanti.FieldType.select, jointable: 'users' }),
AddCol({ name: 'name', label_trans: 'circuit.name' }), AddCol({ name: 'name', label_trans: 'circuit.name' }),
AddCol({ name: 'deperibile', label_trans: 'account.deperibile', fieldtype: costanti.FieldType.boolean }), AddCol({ name: 'deperibile', label_trans: 'account.deperibile', fieldtype: costanti.FieldType.boolean }),
AddCol({ name: 'fidoConcesso', label_trans: 'account.fidoConcesso', fieldtype: costanti.FieldType.number }), AddCol({ name: 'fidoConcesso', label_trans: 'account.fidoConcesso', fieldtype: costanti.FieldType.number }),
@@ -2932,6 +3014,13 @@ export const fieldsTable = {
colkey: '_id', colkey: '_id',
collabel: 'title', collabel: 'title',
}, },
{
value: 'myelems',
label: 'Elementi',
columns: colmyelems,
colkey: '_id',
collabel: 'title',
},
{ {
value: 'templemail', value: 'templemail',
label: 'Template Email', label: 'Template Email',
@@ -3000,6 +3089,15 @@ export const fieldsTable = {
colicon: 'icon', colicon: 'icon',
noshow: true, noshow: true,
}, },
{
value: 'elemtypes',
label: 'Tipi di Elementi',
columns: colTableGeneric,
colkey: 'value',
collabel: 'label',
colicon: 'icon',
noshow: true,
},
{ {
value: 'confsite_opt', value: 'confsite_opt',
label: 'Configura Opzioni Sito', label: 'Configura Opzioni Sito',
@@ -3052,6 +3150,14 @@ export const fieldsTable = {
collabel: 'label', collabel: 'label',
noshow: true, noshow: true,
}, },
{
value: 'cat_interesse_arcadei',
label: 'Categorie d\'Interesse Arcadei',
columns: colTableGeneric,
colkey: 'value',
collabel: 'label',
noshow: true,
},
{ {
value: 'lang', value: 'lang',
label: 'Lingua', label: 'Lingua',

View File

@@ -84,6 +84,7 @@ export const toolsext = {
TABMAILINGLIST: 'mailinglist', TABMAILINGLIST: 'mailinglist',
TABGROUPS: 'groups', TABGROUPS: 'groups',
TABMYPAGE: 'mypage', TABMYPAGE: 'mypage',
TABMYELEMS: 'myelems',
TABMYBOT: 'bots', TABMYBOT: 'bots',
TABCALZOOM: 'calzoom', TABCALZOOM: 'calzoom',
TABTEMPLEMAIL: 'templemail', TABTEMPLEMAIL: 'templemail',

View File

@@ -4,7 +4,7 @@ import {
ICircuit, IMyCircuit, ICircuit, IMyCircuit,
IFriends, IMsgGlobParam, IFriends, IMsgGlobParam,
ISigninOptions, ISigninOptions,
ISignupOptions, IUserFields, IUserNotifType, IUserProfile, IUserState, IAccount, IColGridTable, ISignupOptions, IUserFields, IUserNotifType, IUserProfile, IUserState, IAccount, IColGridTable, ISignupIscrizioneConacreisOptions,
} 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'
@@ -777,6 +777,50 @@ export const useUserStore = defineStore('UserStore', {
return arrtokens.filter((token: IToken) => token.access !== 'auth') return arrtokens.filter((token: IToken) => token.access !== 'auth')
}, },
async iscrivitiConacreis(authData: ISignupIscrizioneConacreisOptions) {
console.log('iscrivitiConacreis')
this.setServerCode(tools.CALLING)
authData.userId = this.my._id
return Api.SendReq('/iscritti_conacreis', 'POST', authData)
.then((res) => {
if (res.status === 200) {
return { code: serv_constants.RIS_ISCRIZIONE_OK, msg: '' }
} else {
return { code: toolsext.ERR_GENERICO, msg: '' }
}
}).catch((error) => {
console.log('Err', error)
this.setErrorCatch(error)
return { code: this.getServerCode, msg: this.getMsg }
})
},
async iscrivitiArcadei(authData: ISignupIscrizioneArcadeiOptions) {
console.log('iscrivitiArcadei')
this.setServerCode(tools.CALLING)
authData.userId = this.my._id
return Api.SendReq('/iscritti_arcadei', 'POST', authData)
.then((res) => {
if (res.status === 200) {
return { code: serv_constants.RIS_ISCRIZIONE_OK, msg: '' }
} else {
return { code: toolsext.ERR_GENERICO, msg: '' }
}
}).catch((error) => {
console.log('Err', error)
this.setErrorCatch(error)
return { code: this.getServerCode, msg: this.getMsg }
})
},
async signin($router: Router, authData: ISigninOptions) { async signin($router: Router, authData: ISigninOptions) {
console.log('LOGIN signin') console.log('LOGIN signin')
const globalStore = useGlobalStore() const globalStore = useGlobalStore()

View File

@@ -108,6 +108,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
gallery: [], gallery: [],
mailinglist: [], mailinglist: [],
mypage: [], mypage: [],
myelems: [],
calzoom: [], calzoom: [],
producers: [], producers: [],
groups: [], groups: [],
@@ -191,7 +192,6 @@ export const useGlobalStore = defineStore('GlobalStore', {
return mystate.menulinks return mystate.menulinks
//return cfgrouter.getmenu()
}, },
getRespByUsername: (state: IGlobalState) => (username: string) => { getRespByUsername: (state: IGlobalState) => (username: string) => {
@@ -224,6 +224,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
else if (table === toolsext.TABOPZEMAIL) ris = state.opzemail else if (table === toolsext.TABOPZEMAIL) ris = state.opzemail
else if (table === toolsext.TABMAILINGLIST) ris = state.mailinglist else if (table === toolsext.TABMAILINGLIST) ris = state.mailinglist
else if (table === toolsext.TABMYPAGE) ris = state.mypage else if (table === toolsext.TABMYPAGE) ris = state.mypage
else if (table === toolsext.TABMYELEMS) ris = state.myelems
else if (table === toolsext.TABCALZOOM) ris = state.calzoom else if (table === toolsext.TABCALZOOM) ris = state.calzoom
else if (table === 'producers') ris = state.producers else if (table === 'producers') ris = state.producers
else if (table === 'storehouses') ris = state.storehouses else if (table === 'storehouses') ris = state.storehouses
@@ -424,7 +425,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
if ($router) { if ($router) {
if (tools.sito_online(false)) { if (tools.sito_online(false)) {
// console.log('SITO ONLINE', arrpagesroute) // console.log('SITO ONLINE', arrpagesroute)
arrpagesroute.forEach(function (route: any) { arrpagesroute.forEach((route: any) => {
$router.addRoute(route) $router.addRoute(route)
}) })
@@ -444,7 +445,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
const trovato = this.mypage.filter((rec: IMyPage) => (rec.path === mypathsel) && (rec.active)) const trovato = this.mypage.filter((rec: IMyPage) => (rec.path === mypathsel) && (rec.active))
//if ($router.currentRoute.value.fullPath in ) { // if ($router.currentRoute.value.fullPath in ) {
if (trovato) { if (trovato) {
$router.replace(mypathsel) $router.replace(mypathsel)
} }
@@ -643,7 +644,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
// console.log('saveSubscriptionToServer: ', newSub) // console.log('saveSubscriptionToServer: ', newSub)
// console.log('context', context) // console.log('context', context)
let options = null const options = null
let notreg = false let notreg = false
if (userStore.isTokenInvalid) { if (userStore.isTokenInvalid) {
@@ -870,7 +871,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
async caricaTabella(table: string, extrapar: string) { async caricaTabella(table: string, extrapar: string) {
let myarr = [] const myarr = []
const sortBy = 'descr' const sortBy = 'descr'
const descending = 1 const descending = 1
const myobj: any = {} const myobj: any = {}
@@ -940,7 +941,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
console.log('loadPageTest') console.log('loadPageTest')
let obj = { test: 'OK! Versione Client: ' + tools.getvers() } const obj = { test: 'OK! Versione Client: ' + tools.getvers() }
return Api.SendReq('/testServer', 'POST', obj) return Api.SendReq('/testServer', 'POST', obj)
.then((res) => { .then((res) => {
@@ -963,7 +964,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
if (res.data.rec) { if (res.data.rec) {
return res.data.rec return res.data.rec
} else { } else {
res.data return res.data
} }
} }
}) })
@@ -1405,7 +1406,8 @@ export const useGlobalStore = defineStore('GlobalStore', {
this.mailinglist = (res.data.mailinglist) ? [...res.data.mailinglist] : [] this.mailinglist = (res.data.mailinglist) ? [...res.data.mailinglist] : []
} }
this.mypage = (res.data.mypage) ? [...res.data.mypage] : [] this.mypage = (res.data.mypage) ? [...res.data.mypage] : []
console.log('this.mypage', this.mypage) this.myelems = (res.data.myelems) ? [...res.data.myelems] : []
// console.log('this.mypage', this.mypage)
let isLogged = false let isLogged = false
@@ -1578,8 +1580,8 @@ export const useGlobalStore = defineStore('GlobalStore', {
let mydateend = tools.addDays(mydate, numdays) let mydateend = tools.addDays(mydate, numdays)
mydate = tools.getstrYYMMDDDate(mydate) mydate = tools.getstrYYMMDDDate(mydate)
mydateend = tools.getstrYYMMDDDate(mydateend) mydateend = tools.getstrYYMMDDDate(mydateend)
let filter = { dateTimeStart: { $gte: mydate, $lte: mydateend } } const filter = { dateTimeStart: { $gte: mydate, $lte: mydateend } }
let obj = { _id: num, datestr: mystr, filter } const obj = { _id: num, datestr: mystr, filter }
return obj return obj
}, },
@@ -1587,7 +1589,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
getArrDateEvent() { getArrDateEvent() {
const arr = [] const arr = []
let obj = {} const obj = {}
arr.push(this.getItemDate(1, -30, 30, 'Eventi Passati')) arr.push(this.getItemDate(1, -30, 30, 'Eventi Passati'))
arr.push(this.getItemDate(2, 0, 14, 'Da Oggi a 2 sett.')) arr.push(this.getItemDate(2, 0, 14, 'Da Oggi a 2 sett.'))
@@ -1604,7 +1606,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
let obj = {} let obj = {}
for (let i = 0; i < 120; i++) { for (let i = 0; i < 120; i++) {
let mydate = tools.addDays(tools.getDateNow(), i - 30) const mydate = tools.addDays(tools.getDateNow(), i - 30)
obj = { _id: mydate, datestr: tools.getstrVeryShortDate(mydate) } obj = { _id: mydate, datestr: tools.getstrVeryShortDate(mydate) }
arr.push(obj) arr.push(obj)
} }
@@ -1624,9 +1626,11 @@ export const useGlobalStore = defineStore('GlobalStore', {
else if (table === 'confsite_opt') myarr = tools.ConfSiteOpt else if (table === 'confsite_opt') myarr = tools.ConfSiteOpt
else if (table === 'bottype') myarr = shared_consts.BotType else if (table === 'bottype') myarr = shared_consts.BotType
else if (table === 'visibility') myarr = shared_consts.Visibility else if (table === 'visibility') myarr = shared_consts.Visibility
else if (table === 'cat_interesse_arcadei') myarr = shared_consts.Cat_Interesse_Arcadei
else if (table === 'pub_to_share') myarr = shared_consts.Pub_to_Share else if (table === 'pub_to_share') myarr = shared_consts.Pub_to_Share
else if (table === 'visibilGroup') myarr = shared_consts.VisibilGroup else if (table === 'visibilGroup') myarr = shared_consts.VisibilGroup
else if (table === 'statuscircuit') myarr = shared_consts.StatusCircuit else if (table === 'statuscircuit') myarr = shared_consts.StatusCircuit
else if (table === 'elemtypes') myarr = shared_consts.TypesElem
else if (table === 'lang') myarr = shared_consts.Lang else if (table === 'lang') myarr = shared_consts.Lang
else if (table === 'regions') myarr = shared_consts.Regions else if (table === 'regions') myarr = shared_consts.Regions
else if (table === 'shippings') myarr = shared_consts.Shippings else if (table === 'shippings') myarr = shared_consts.Shippings
@@ -1658,14 +1662,14 @@ export const useGlobalStore = defineStore('GlobalStore', {
if (addnone) { if (addnone) {
const mykey = fieldsTable.getKeyByTable(table) const mykey = fieldsTable.getKeyByTable(table)
const collab = fieldsTable.getLabelByTable(table) const collab = fieldsTable.getLabelByTable(table)
let obj: any = {} const obj: any = {}
obj[mykey] = costanti.FILTER_NESSUNO obj[mykey] = costanti.FILTER_NESSUNO
obj[collab] = '[Nessuno]' obj[collab] = '[Nessuno]'
if (table === toolsext.TABMYGOODS) { if (table === toolsext.TABMYGOODS) {
obj['idSectorGood'] = [] obj.idSectorGood = []
} else if ((table === toolsext.TABMYSKILLS)) { } else if ((table === toolsext.TABMYSKILLS)) {
obj['idSector'] = [] obj.idSector = []
} }
myarr = [obj, ...myarr] myarr = [obj, ...myarr]

View File

@@ -43,7 +43,7 @@
"single" "single"
], ],
"semicolon": [true, "never"], "semicolon": [true, "never"],
"trailing-comma": [true, {"multiline": "never", "singleline": "never"}], "trailing-comma": [true, {"multiline": "ignore", "singleline": "never"}],
"triple-equals": [ "triple-equals": [
true, true,
"allow-null-check" "allow-null-check"