diff --git a/quasar.conf.js b/quasar.conf.js index 46a05ac..ad5b97d 100755 --- a/quasar.conf.js +++ b/quasar.conf.js @@ -168,6 +168,8 @@ module.exports = function (ctx) { framework: { components: [ 'QLayout', + 'QBreadcrumbs', + 'QBreadcrumbsEl', 'QDrawer', 'QItemSection', 'QHeader', diff --git a/src/App.scss b/src/App.scss index ea29cab..5f64e14 100755 --- a/src/App.scss +++ b/src/App.scss @@ -944,5 +944,11 @@ $heightBtn: 100%; } .clpos{ - color: gray; + color: #C0C0C0; +} +.clresp{ + color: #206d24; +} +.clrespempty{ + color: #DDDDDD; } diff --git a/src/db/lang/ws_it.js b/src/db/lang/ws_it.js index 38bc7b8..09fc170 100755 --- a/src/db/lang/ws_it.js +++ b/src/db/lang/ws_it.js @@ -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', }, diff --git a/src/db/static_data.ts b/src/db/static_data.ts index 292fdcf..8864bdd 100755 --- a/src/db/static_data.ts +++ b/src/db/static_data.ts @@ -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 }, diff --git a/src/root/calendarioeventi/calendarioeventi.scss b/src/root/calendarioeventi/calendarioeventi.scss new file mode 100755 index 0000000..e69de29 diff --git a/src/root/calendarioeventi/calendarioeventi.ts b/src/root/calendarioeventi/calendarioeventi.ts new file mode 100755 index 0000000..e79f6db --- /dev/null +++ b/src/root/calendarioeventi/calendarioeventi.ts @@ -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) + } + +} diff --git a/src/root/calendarioeventi/calendarioeventi.vue b/src/root/calendarioeventi/calendarioeventi.vue new file mode 100755 index 0000000..635860b --- /dev/null +++ b/src/root/calendarioeventi/calendarioeventi.vue @@ -0,0 +1,25 @@ + + + diff --git a/src/root/evento/evento.scss b/src/root/evento/evento.scss new file mode 100755 index 0000000..50a72ae --- /dev/null +++ b/src/root/evento/evento.scss @@ -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; + } + +} diff --git a/src/root/evento/evento.ts b/src/root/evento/evento.ts new file mode 100755 index 0000000..88da262 --- /dev/null +++ b/src/root/evento/evento.ts @@ -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 '' + } + +} diff --git a/src/root/evento/evento.vue b/src/root/evento/evento.vue new file mode 100755 index 0000000..9be7e21 --- /dev/null +++ b/src/root/evento/evento.vue @@ -0,0 +1,56 @@ + + + diff --git a/src/root/home/home.ts b/src/root/home/home.ts index 805e423..776a115 100755 --- a/src/root/home/home.ts +++ b/src/root/home/home.ts @@ -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', diff --git a/src/root/home/home.vue b/src/root/home/home.vue index 6e3e6ad..e66d128 100755 --- a/src/root/home/home.vue +++ b/src/root/home/home.vue @@ -99,6 +99,7 @@ + + + + + + +
+
Versione App {{ getenv('APP_VERSION') }}