- Using CEventsCalendar also for show a Single Event, with his button edit/add/duplicate...
This commit is contained in:
@@ -35,13 +35,15 @@ import MixinOperator from '../../mixins/mixin-operator'
|
||||
import MixinEvents from '../../mixins/mixin-events'
|
||||
import { CDateTime } from '../CDateTime'
|
||||
import { CMyAvatar } from '../CMyAvatar'
|
||||
import { CMySingleEvent } from '../CMySingleEvent'
|
||||
|
||||
@Component({
|
||||
mixins: [MixinOperator, MixinUsers, MixinEvents],
|
||||
name: 'CEventsCalendar',
|
||||
components: { Logo, Footer, CTitle, CImgText, QDateTimeScroller, QDateScroller, CMySelect, CMyEditor, CDateTime, CMyAvatar }
|
||||
components: { Logo, Footer, CTitle, CImgText, QDateTimeScroller, QDateScroller, CMySelect, CMyEditor, CDateTime, CMyAvatar, CMySingleEvent }
|
||||
})
|
||||
export default class CEventsCalendar extends MixinEvents {
|
||||
@Prop ({required: false, default: null}) public mysingleevent: IEvents
|
||||
public $q
|
||||
public $t: any
|
||||
public calendarView = 'month'
|
||||
@@ -191,6 +193,10 @@ export default class CEventsCalendar extends MixinEvents {
|
||||
// }
|
||||
// ]
|
||||
|
||||
get visuAllCal() {
|
||||
return this.mysingleevent === null
|
||||
}
|
||||
|
||||
get title_cal() {
|
||||
if (this.titleFormatter && this.locale) {
|
||||
const mydate = new Date(this.selectedDate)
|
||||
@@ -986,6 +992,15 @@ export default class CEventsCalendar extends MixinEvents {
|
||||
return eventsloc
|
||||
}
|
||||
|
||||
public isEventEnabled(myevent) {
|
||||
// check if event is in the past
|
||||
const datenow = tools.addDays(tools.getDateNow(), -1)
|
||||
|
||||
// console.log('datenow', datenow, 'end', myevent.dateTimeEnd)
|
||||
|
||||
return (new Date(myevent.dateTimeEnd) >= datenow)
|
||||
}
|
||||
|
||||
public getTitleEv(event: IEvents) {
|
||||
return (!!event.short_tit) ? event.short_tit : event.title
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
86
src/components/CMySingleEvent/CMySingleEvent.scss
Normal file
86
src/components/CMySingleEvent/CMySingleEvent.scss
Normal 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;
|
||||
}
|
||||
|
||||
}
|
||||
85
src/components/CMySingleEvent/CMySingleEvent.ts
Normal file
85
src/components/CMySingleEvent/CMySingleEvent.ts
Normal file
@@ -0,0 +1,85 @@
|
||||
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, CMyAvatar, CMyPage } 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'
|
||||
|
||||
@Component({
|
||||
name: 'CMySingleEvent',
|
||||
mixins: [MixinOperator, MixinBase, MixinEvents, MixinUsers],
|
||||
components: { Logo, Footer, CImgText, CCard, CMyPage, CMyAvatar }
|
||||
})
|
||||
export default class CMySingleEvent extends MixinEvents {
|
||||
public $q
|
||||
public $t
|
||||
public myevent: IEvents = null
|
||||
public selected: boolean = false
|
||||
|
||||
@Watch('$route.params.eventid')
|
||||
public changeevent() {
|
||||
// this.mytypetransgroup = ''
|
||||
this.myevent = CalendarStore.state.eventlist.find((rec) => rec._id === this.$route.params.eventid)
|
||||
// console.log('myevent', this.myevent, 'eventid=', this.$route.params.eventid)
|
||||
}
|
||||
|
||||
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.changeevent()
|
||||
console.log('myevent', this.myevent)
|
||||
}
|
||||
|
||||
get static_data() {
|
||||
return static_data
|
||||
}
|
||||
|
||||
public duplicateEvent(event, numgg) {
|
||||
this.$emit('duplicateEvent', event, numgg)
|
||||
}
|
||||
|
||||
public askForInfoEventMenu(event) {
|
||||
this.$emit('askForInfoEventMenu', event)
|
||||
}
|
||||
|
||||
public deleteEvent(event) {
|
||||
this.$emit('deleteEvent', event)
|
||||
}
|
||||
|
||||
public editEvent(event) {
|
||||
this.$emit('editEvent', event)
|
||||
}
|
||||
|
||||
public addBookEventMenu(event) {
|
||||
this.$emit('addBookEventMenu', event)
|
||||
}
|
||||
|
||||
public EditBookEvent(event) {
|
||||
this.$emit('EditBookEvent', event)
|
||||
}
|
||||
|
||||
}
|
||||
172
src/components/CMySingleEvent/CMySingleEvent.vue
Normal file
172
src/components/CMySingleEvent/CMySingleEvent.vue
Normal file
@@ -0,0 +1,172 @@
|
||||
<template>
|
||||
<div>
|
||||
<CMyPage v-if="myevent" :imgbackground="myevent.img" :title="myevent.title" keywords="" description="">
|
||||
|
||||
<div class="q-ma-md">
|
||||
<div class="listaev__align_chips q-ma-md">
|
||||
<img :src="getImgEvent(myevent)"
|
||||
@click="selectEvent(myevent)"
|
||||
class="text-left padding_cell listaev__tdimg listaev__img cursor-pointer"
|
||||
:style="getStyleByEvent(myevent, true)">
|
||||
<q-chip dense v-if="isAlreadyBooked(myevent)" class="cltexth4 chipbooked shadow-5 q-mb-md"
|
||||
color="green" text-color="white"
|
||||
icon="event_available">{{$t('cal.booked')}}
|
||||
</q-chip>
|
||||
<q-chip v-if="selected" class="text-center shadow-5 glossy bg-blue chipmodif">
|
||||
|
||||
<q-btn v-if="editable" flat round color="white" icon="fas fa-copy">
|
||||
<q-menu
|
||||
transition-show="flip-right"
|
||||
transition-hide="flip-left">
|
||||
<q-list style="min-width: 100px">
|
||||
<q-item clickable @click="duplicateEvent(myevent, 7)">
|
||||
<q-item-section>Tra 1 Settimana</q-item-section>
|
||||
</q-item>
|
||||
<q-item clickable @click="duplicateEvent(myevent, 14)">
|
||||
<q-item-section>Tra 2 Settimane</q-item-section>
|
||||
</q-item>
|
||||
<q-item clickable @click="duplicateEvent(myevent, 7, 4)">
|
||||
<q-item-section>4 Eventi ogni Settimana</q-item-section>
|
||||
</q-item>
|
||||
</q-list>
|
||||
</q-menu>
|
||||
</q-btn>
|
||||
<q-btn v-if="editable" flat round color="white" icon="delete" v-close-popup
|
||||
@click="deleteEvent(myevent)"></q-btn>
|
||||
<q-btn v-if="editable" flat round color="white" icon="edit" v-close-popup
|
||||
@click="editEvent(myevent)"></q-btn>
|
||||
<q-btn flat round color="white" icon="cancel" @click="selectEvent(null)"></q-btn>
|
||||
</q-chip>
|
||||
<q-chip v-if="myevent.news" class="cltexth4 chipnews shadow-5 glossy text-right" color="red"
|
||||
text-color="white" icon-right="star" icon="star" dense
|
||||
style="">
|
||||
{{$t('event.news')}}
|
||||
</q-chip>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="listaev__date listaev__align_center_mobile">
|
||||
<span v-html="tools.getstrDateTimeEvent(mythis(), myevent, true)"></span>
|
||||
</div>
|
||||
|
||||
<div class="listaev__align_center_mobile">
|
||||
|
||||
<div style="margin: 10px;"></div>
|
||||
|
||||
<div class="">
|
||||
<!-- Se c'è un link, allora -->
|
||||
<q-btn v-if="myevent.linkpdf" size="md" type="a"
|
||||
:href="`../../statics/` + myevent.linkpdf"
|
||||
target="_blank"
|
||||
ripple rounded :label="myevent.title" :icon="myevent.icon"
|
||||
:color="myevent.bgcolor" text-color="white" glossy>
|
||||
|
||||
</q-btn>
|
||||
<!-- altrimenti mostra solo Chip -->
|
||||
<div v-else>
|
||||
<div v-if="tools.isMobile()" class="cltexth3 text-center"
|
||||
:style="`background-color: ${myevent.bgcolor} !important; color: white !important;`">
|
||||
{{myevent.title}}
|
||||
</div>
|
||||
<q-chip v-else class="cltexth3 text-center"
|
||||
:style="`background-color: ${myevent.bgcolor} !important; color: white !important;`"
|
||||
text-color="white"
|
||||
:icon="myevent.icon"
|
||||
dense>{{myevent.title}}
|
||||
</q-chip>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="margin: 10px;"></div>
|
||||
|
||||
<p v-if="myevent.bodytext" class="listaev__details text-left" v-html="myevent.bodytext"></p>
|
||||
<p v-else class="listaev__details" v-html="myevent.details"></p>
|
||||
|
||||
<div v-if="myevent.teacher" class="">
|
||||
<span class="cal__teacher-title">{{$t('cal.teacher')}}: <span
|
||||
class="margin_with"></span></span>
|
||||
|
||||
<q-chip>
|
||||
<CMyAvatar :myimg="getImgTeacherByUsername(myevent.teacher)"></CMyAvatar>
|
||||
<span class="cal__teacher-content">{{getTeacherByUsername(myevent.teacher)}}</span>
|
||||
</q-chip>
|
||||
<span v-if="getImgTeacherByUsername(myevent.teacher2) && isValidUsername(myevent.teacher2)"
|
||||
class="margin_avatar2"></span>
|
||||
<q-chip v-if="getImgTeacherByUsername(myevent.teacher2) && isValidUsername(myevent.teacher2)">
|
||||
<CMyAvatar :myimg="getImgTeacherByUsername(myevent.teacher2)"></CMyAvatar>
|
||||
<span class="cal__teacher-content">{{getTeacherByUsername(myevent.teacher2)}}</span>
|
||||
</q-chip>
|
||||
|
||||
<span v-if="myevent.wherecode" class="">
|
||||
<span v-if="tools.isMobile()"><br/></span>
|
||||
<span class="cal__where-title">{{$t('cal.where')}}: </span>
|
||||
|
||||
<q-chip>
|
||||
<q-avatar v-if="getWhereIcon(myevent.wherecode)">
|
||||
<img :src="`../../statics/images/avatar/` + getWhereIcon(myevent.wherecode)">
|
||||
</q-avatar>
|
||||
<q-avatar v-else color="blue" font-size="20px" text-color="white"
|
||||
icon="home">
|
||||
</q-avatar>
|
||||
<span class="cal__teacher-content">{{getWhereName(myevent.wherecode)}}</span>
|
||||
</q-chip>
|
||||
</span>
|
||||
</div>
|
||||
<div v-if="myevent.contribtype" class="">
|
||||
<span class="cal__quota-title">{{$t('event.price')}}:<span
|
||||
class="margin_with"></span></span>
|
||||
<span v-if="!isShowPrice(myevent)" class="">
|
||||
<q-chip class="glossy" color="orange" text-color="white">
|
||||
<span class="cal__quota-content">{{getContribtypeById(myevent.contribtype)}}</span>
|
||||
</q-chip>
|
||||
</span>
|
||||
|
||||
<q-chip v-if="myevent.price && isShowPrice(myevent)" class="glossy" color="orange"
|
||||
text-color="white" icon-right="star">
|
||||
<span class="cal__quota-content">{{getPrice(myevent)}}</span>
|
||||
</q-chip>
|
||||
</div>
|
||||
|
||||
|
||||
<p class="text-center">
|
||||
<span v-if="myevent.linkpdf" class="">
|
||||
<q-btn size="md" type="a" :href="`../../statics/` + myevent.linkpdf"
|
||||
target="_blank" rounded color="primary" icon="info"
|
||||
:label="$t('cal.showinfo')">
|
||||
|
||||
</q-btn>
|
||||
</span>
|
||||
</p>
|
||||
<div class="row justify-end">
|
||||
<q-btn rounded outline class="q-mx-sm"
|
||||
color="primary" @click="askForInfoEventMenu(myevent)"
|
||||
:label="$t('event.askinfo')">
|
||||
</q-btn>
|
||||
<q-btn rounded outline class="q-mx-sm"
|
||||
v-if="!myevent.nobookable && !isAlreadyBooked(myevent) && static_data.functionality.BOOKING_EVENTS"
|
||||
color="primary" @click="addBookEventMenu(myevent)"
|
||||
:label="$t('cal.booking')" :disable="!isEventEnabled(myevent)">
|
||||
</q-btn>
|
||||
<q-btn rounded outline class="q-mx-sm"
|
||||
v-if="!myevent.nobookable && isAlreadyBooked(myevent) && static_data.functionality.BOOKING_EVENTS"
|
||||
text-color="red"
|
||||
@click="EditBookEvent(myevent)"
|
||||
:label="$t('cal.modifybooking')">
|
||||
</q-btn>
|
||||
<!--
|
||||
<q-btn push rounded v-if="!myevent.nobookable && isAlreadyBooked(myevent)" color="positive" @click="BookEvent(myevent)"
|
||||
:label="$t('cal.booked')">
|
||||
</q-btn>
|
||||
-->
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</CMyPage>
|
||||
</div>
|
||||
</template>
|
||||
<script lang="ts" src="./CMySingleEvent.ts">
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
@import './CMySingleEvent.scss';
|
||||
</style>
|
||||
1
src/components/CMySingleEvent/index.ts
Normal file
1
src/components/CMySingleEvent/index.ts
Normal file
@@ -0,0 +1 @@
|
||||
export {default as CMySingleEvent} from './CMySingleEvent.vue'
|
||||
@@ -18,6 +18,7 @@ export * from './CPreloadImages'
|
||||
export * from './CSignIn'
|
||||
export * from './CSignUp'
|
||||
export * from './CEventsCalendar'
|
||||
export * from './CMySingleEvent'
|
||||
export * from './CDate'
|
||||
export * from './CDateTime'
|
||||
export * from './BannerCookies'
|
||||
|
||||
@@ -658,6 +658,7 @@ namespace Actions {
|
||||
await Projects.actions.dbLoad({ checkPending: true, onlyiffirsttime: true })
|
||||
|
||||
GlobalStore.state.finishLoading = true
|
||||
console.log('finishLoading', GlobalStore.state.finishLoading)
|
||||
|
||||
return true
|
||||
// console.log('setGlobal: END')
|
||||
|
||||
Reference in New Issue
Block a user