This commit is contained in:
Paolo Arena
2021-02-18 12:19:17 +01:00
parent 0e6a350f4e
commit 7a202fbe8e
12 changed files with 377 additions and 8 deletions

View File

@@ -168,6 +168,8 @@ module.exports = function (ctx) {
framework: {
components: [
'QLayout',
'QBreadcrumbs',
'QBreadcrumbsEl',
'QDrawer',
'QItemSection',
'QHeader',

View File

@@ -944,5 +944,11 @@ $heightBtn: 100%;
}
.clpos{
color: gray;
color: #C0C0C0;
}
.clresp{
color: #206d24;
}
.clrespempty{
color: #DDDDDD;
}

View File

@@ -16,6 +16,7 @@ const msg_website_it = {
time_start: 'Ora Inizio',
time_end: 'Ora Fine',
hours: 'Ore',
note: 'Note Extra',
},
pages: {
home: 'Home',
@@ -59,14 +60,15 @@ const msg_website_it = {
chisiamo: 'Chi Siamo',
linkamici: 'Link Amici',
dovesiamo: 'Dove Siamo',
calendarioeventi: 'Calendario Eventi',
evento: 'Evento',
eventodef: 'Evento:',
prova: 'prova',
dbop: 'Operazioni',
projall: 'Tutti',
groups: 'Gruppi',
projectsShared: 'Miei Condivisi',
myprojects: 'Miei Personali',
projall: 'Comunitari',
groups: 'Lista Gruppi',
projectsShared: 'Condivisi da me',
myprojects: 'Privati',
favproj: 'Favoriti',
statusreg: {
reg: 'Partecipanti',
@@ -83,7 +85,7 @@ const msg_website_it = {
peoplelegend: 'Numero d\'Invitati'
},
admin_ecommerce: 'ECommerce',
ecommerce: 'E-Commerce',
ecommerce: 'Prodotti',
ecommerce_menu: 'ECommerce1',
hours: 'Ore',
},

View File

@@ -96,6 +96,8 @@ const routes_projects: IListRoutes[] = [
component: () => import('@/views/projects/proj-list/proj-list.vue'),
inmenu: functionality.SHOW_MESSAGES,
infooter: functionality.ENABLE_PROJECTS_LOADING,
onlySocioResidente: true,
onlyAdmin: true,
idelem: process.env.PROJECT_ID_MAIN
},
{
@@ -107,6 +109,8 @@ const routes_projects: IListRoutes[] = [
urlroute: 'myprojects',
level_parent: 0.0,
level_child: 0.5,
onlySocioResidente: true,
onlyAdmin: true,
component: () => import('@/views/projects/proj-list/proj-list.vue'),
inmenu: functionality.SHOW_MESSAGES,
infooter: functionality.ENABLE_PROJECTS_LOADING,
@@ -123,6 +127,8 @@ const routes_projects: IListRoutes[] = [
level_child: 0.5,
component: () => import('@/views/projects/proj-list/proj-list.vue'),
inmenu: functionality.SHOW_MESSAGES,
onlySocioResidente: true,
onlyAdmin: true,
infooter: functionality.ENABLE_PROJECTS_LOADING,
idelem: process.env.PROJECT_ID_MAIN
}
@@ -513,6 +519,27 @@ const baseroutes: IListRoutes[] = [
inmenu: true,
infooter: true,
},
{
active: true,
order: 80,
path: '/calendario-eventi',
materialIcon: 'event',
name: 'pages.calendarioeventi',
component: () => import('@/root/calendarioeventi/calendarioeventi.vue'),
extraclass: 'isCalendar',
inmenu: true,
infooter: true
},
{
active: true,
order: 90,
path: '/event/:typol/:eventid',
materialIcon: 'event',
name: 'pages.evento',
component: () => import('@/root/evento/evento.vue'),
inmenu: false,
infooter: false
},
{
active: true,
order: 1000,
@@ -523,6 +550,16 @@ const baseroutes: IListRoutes[] = [
inmenu: false,
infooter: false
},
{
active: true,
order: 110,
path: '/event/:typol',
materialIcon: 'event',
name: 'pages.eventodef',
component: () => import('@/root/evento/evento.vue'),
inmenu: false,
infooter: false
},
{
active: true,
order: 1000,
@@ -567,6 +604,7 @@ const baseroutes: IListRoutes[] = [
name: 'pages.ecommerce',
routes2: routes_ecommerce,
inmenu: true,
onlySocioResidente: true,
solotitle: true,
infooter: true
},

View File

@@ -0,0 +1,19 @@
import Vue from 'vue'
import { Component } from 'vue-property-decorator'
import { CEventsCalendar, CMyPage } from '@components'
import MixinBase from '@src/mixins/mixin-base'
import MixinMetaTags from '@src/mixins/mixin-metatags'
import { tools } from '@src/store/Modules/tools'
@Component({
mixins: [MixinBase],
components: { CEventsCalendar, CMyPage }
})
export default class Calendarioeventi extends MixinMetaTags {
public $t: any
public $q
public meta() {
return tools.metafunc(this)
}
}

View File

@@ -0,0 +1,25 @@
<template>
<CMyPage title='Calendario Eventi' imgbackground="../../statics/images/calendario_eventi.jpg" sizes="max-height: 120px" styleadd="bottom: -16px !important;">
<span>{{ setmeta({
title: 'Calendario Eventi',
description: "Calendario degli Eventi che si svolgono all'Associazione Shen di Lugo (RA)",
keywords: 'calendario eventi centro olistico' } ) }}
</span>
<CEventsCalendar :mysingleevent="null">
</CEventsCalendar>
<br>
<p class="cltexth3 text-blue q-ma-md" v-for="mycal in getarrValDb('EVENTS_CAL')">
<a :href="`../../statics/files/eventi/` + mycal.file" target="_blank">Calendario Eventi {{ mycal.label }} (PDF)</a><br>
</p>
<br>
</CMyPage>
</template>
<script lang="ts" src="./calendarioeventi.ts">
</script>
<style lang="scss" scoped>
@import './calendarioeventi.scss';
</style>

86
src/root/evento/evento.scss Executable file
View File

@@ -0,0 +1,86 @@
.listaev {
color: black;
font-size: 0.75rem;
font-weight: 400;
line-height: 1.25rem;
letter-spacing: 0.03333em;
&__date {
font-weight: bold;
color: #2ba0fd;
font-size: 1rem;
}
&__title {
color: red;
font-weight: 700;
letter-spacing: 0.066em;
}
&__details {
color: black;
}
&__tdimg {
width: 150px;
height: 150px;
}
&__tdimg_small {
width: auto;
height: 50px !important;
@media (max-width: 800px) {
height: 40px !important;
}
}
&__table {
margin: 10px;
border: solid 1px #4198ef;
border-radius: 1rem;
padding: 2px;
}
&__table tr {
border: solid 1px #4198ef;
border-radius: 1rem;
}
&__align_center_mobile {
text-align: center;
display: flex;
flex-direction: column;
align-items: center;
}
&__align_chips {
text-align: center;
display: flex;
flex-direction: column-reverse;
align-items: center;
}
&__img {
padding: 0.25rem !important;
float: left;
width: 150px;
height: 150px;
border-radius: 1rem;
@media (max-width: 718px) {
// PER VERSIONE MOBILE
float: none;
text-align: center;
margin: 0 auto;
}
}
&__img:hover {
transition: transform .2s;
transform: scale(1.05);
border: inset;
border-color: blue;
border-width: 1px;
}
}

127
src/root/evento/evento.ts Executable file
View File

@@ -0,0 +1,127 @@
import Vue from 'vue'
import { Component, Prop, Watch } from 'vue-property-decorator'
import { CalendarStore, GlobalStore, UserStore } from '@store'
import { Logo } from '../../components/logo/index'
import { Footer } from '../../components/Footer/index'
import { tools } from '../../store/Modules/tools'
import { toolsext } from '@src/store/Modules/toolsext'
import { static_data } from '@src/db/static_data'
import { Screen } from 'quasar'
import { CImgText } from '../../components/CImgText/index'
import { CCard, CEventsCalendar, CMyAvatar, CMyPage, CMySingleEvent } from '@components'
import MixinOperator from '@src/mixins/mixin-operator'
import MixinEvents from '../../mixins/mixin-events'
import { IEvents } from '@src/model'
import MixinBase from '@src/mixins/mixin-base'
import MixinUsers from '@src/mixins/mixin-users'
import MixinMetaTags from '@src/mixins/mixin-metatags'
@Component({
mixins: [MixinOperator, MixinBase, MixinEvents, MixinUsers],
components: { Logo, CImgText, CCard, CMyPage, CMyAvatar, CEventsCalendar }
})
export default class Evento extends MixinMetaTags {
public $q
public $t
public myevent: IEvents = null
public mylastevtypol: IEvents[] = []
public selected: boolean = false
public meta() {
return tools.metafunc(this)
}
@Watch('$route.params.typol')
public changetypol() {
// this.mytypetransgroup = ''
const datenow = tools.addDays(tools.getDateNow(), -1)
this.mylastevtypol = CalendarStore.state.eventlist.filter((rec) => ((rec.typol === this.$route.params.typol) && (new Date(rec.dateTimeEnd) >= datenow))).slice(-5)
console.log('[1] this.mylastevtypol', this.mylastevtypol)
if (this.mylastevtypol.length === 0) {
this.mylastevtypol = CalendarStore.state.eventlist.filter((rec) => (rec.typol === this.$route.params.typol)).slice(-1)
}
// console.log('myevent', this.myevent, 'eventid=', this.$route.params.eventid)
}
get nextevents() {
if (!!this.mylastevtypol && this.mylastevtypol.length > 1) {
return this.mylastevtypol
} else {
return []
}
}
public isnotmyevent(ev) {
if (!!this.$route.params.eventid)
return ev._id !== this.$route.params.eventid
else
return true
}
@Watch('$route.params.eventid')
public changeevent() {
let eventid = null
if (!!this.$route.params.eventid)
eventid = this.$route.params.eventid
if (!!this.$route.query.eventid)
eventid = this.$route.query.eventid
console.log('changeevent', eventid)
// this.mytypetransgroup = ''
if (!!eventid) {
this.myevent = CalendarStore.state.eventlist.find((rec) => rec._id === eventid)
} else {
if (!!this.mylastevtypol)
this.myevent = this.mylastevtypol[0]
}
}
@Watch('$route.query.eventid')
public changeeventquery() {
// console.log('changeevent QUERY', this.$route.query.eventid)
// this.mytypetransgroup = ''
if (!!this.$route.query.eventid) {
this.myevent = CalendarStore.state.eventlist.find((rec) => rec._id === this.$route.query.eventid)
} else {
if (!!this.mylastevtypol)
this.myevent = this.mylastevtypol[0]
}
}
public selectEvent(eventparam: IEvents) {
this.selected = !this.selected
}
public getTextEvent(myevent: IEvents) {
if (myevent.bodytext === '') {
return myevent.details
} else {
return myevent.bodytext
}
}
public mounted() {
this.changetypol()
this.changeevent()
// console.log('myevent', this.myevent)
}
get static_data() {
return static_data
}
get gettitle() {
if (!!this.myevent && (!!this.myevent.title))
return this.myevent.title
else
return ''
}
}

56
src/root/evento/evento.vue Executable file
View File

@@ -0,0 +1,56 @@
<template>
<div>
<CMyPage imgbackground="../../statics/images/calendario_eventi.jpg" :title="gettitle" sizes="max-height: 110px;"
styleadd="bottom: -36px !important;">
<span>{{ setmeta({
title: gettitle,
description: "",
keywords: '' } ) }}
</span>
<CEventsCalendar :mysingleevent="myevent" v-if="myevent">
</CEventsCalendar>
<q-separator>
</q-separator>
<div class="q-pa-md text-center" style="max-width: 380px; margin: auto auto 2px; " v-if="nextevents.length > 0">
<q-list bordered>
<q-item>
<q-item-section>
<q-item-label overline>PROSSIME DATE:</q-item-label>
</q-item-section>
</q-item>
<q-item clickable v-ripple
v-for="(ev, index) in nextevents"
v-if="isnotmyevent(ev)"
:to="`/event/${ev.typol}/${ev._id}`"
:key="index">
<q-item-section avatar v-if="tools.getimgev(ev)">
<q-avatar>
<img :src="tools.getimgev(ev)" :alt="ev.title">
</q-avatar>
</q-item-section>
<q-item-section>{{ev.title}}</q-item-section>
<q-item-section side top>{{tools.getstrDateTimeEventShort(mythis, ev)}}</q-item-section>
</q-item>
</q-list>
</div>
<div class="q-ma-md text-center">
<q-btn rounded outline type="a" to="/calendario-eventi" color="primary" icon="event"
:label="$t('pages.calendarioeventi')">
</q-btn>
</div>
</CMyPage>
</div>
</template>
<script lang="ts" src="./evento.ts">
</script>
<style lang="scss" scoped>
@import './evento.scss';
</style>

View File

@@ -17,7 +17,7 @@ import {
CStatus,
CStatusReg,
CNextZoom,
CVerifyTelegram, CVerifyEmail, CECommerce, CShareWithUs
CVerifyTelegram, CVerifyEmail, CECommerce, CShareWithUs, CEventsCalendar
} from '@components'
import MixinBase from '@src/mixins/mixin-base'
import { static_data } from '@src/db/static_data'
@@ -38,6 +38,7 @@ import { INotData } from '@src/model'
CVerifyTelegram,
CVerifyEmail,
CECommerce,
CEventsCalendar,
CShareWithUs
}
})
@@ -66,7 +67,6 @@ export default class Home extends MixinBase {
public arrvideo_yt = []
public arrvideo_mp4 = []
public arrsteps = [
{
label: '1',

View File

@@ -99,6 +99,7 @@
</div>
</div>
<q-btn class="enable-notifications shadow add-button" v-if="showbuttonHS" @click="addtoHomeScreen"
color="primary" rounded
size="md"
@@ -106,6 +107,13 @@
label="Aggiungi alle tue Applicazioni">
</q-btn>
<CEventsCalendar :mysingleevent="null" :showfirstN="getValDb('SHOW_LAST_EVENTS', false, 3)">
</CEventsCalendar>
<br>
<div class="q-pt-md q-pl-sm">
<div class="text-body2 text-italic text-grey">Versione App {{ getenv('APP_VERSION') }}</div>
</div>