Progetti
This commit is contained in:
@@ -168,6 +168,8 @@ module.exports = function (ctx) {
|
||||
framework: {
|
||||
components: [
|
||||
'QLayout',
|
||||
'QBreadcrumbs',
|
||||
'QBreadcrumbsEl',
|
||||
'QDrawer',
|
||||
'QItemSection',
|
||||
'QHeader',
|
||||
|
||||
@@ -944,5 +944,11 @@ $heightBtn: 100%;
|
||||
}
|
||||
|
||||
.clpos{
|
||||
color: gray;
|
||||
color: #C0C0C0;
|
||||
}
|
||||
.clresp{
|
||||
color: #206d24;
|
||||
}
|
||||
.clrespempty{
|
||||
color: #DDDDDD;
|
||||
}
|
||||
|
||||
@@ -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',
|
||||
},
|
||||
|
||||
@@ -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
|
||||
},
|
||||
|
||||
0
src/root/calendarioeventi/calendarioeventi.scss
Executable file
0
src/root/calendarioeventi/calendarioeventi.scss
Executable file
19
src/root/calendarioeventi/calendarioeventi.ts
Executable file
19
src/root/calendarioeventi/calendarioeventi.ts
Executable 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)
|
||||
}
|
||||
|
||||
}
|
||||
25
src/root/calendarioeventi/calendarioeventi.vue
Executable file
25
src/root/calendarioeventi/calendarioeventi.vue
Executable 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
86
src/root/evento/evento.scss
Executable 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
127
src/root/evento/evento.ts
Executable 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
56
src/root/evento/evento.vue
Executable 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>
|
||||
@@ -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',
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user