- ++Booking List
- ++Delete a Booking also for the Admin.
This commit is contained in:
@@ -26,6 +26,7 @@ import { costanti } from '@src/store/Modules/costanti'
|
||||
import router from '@router'
|
||||
import { static_data } from '@src/db/static_data'
|
||||
import translate from '@src/globalroutines/util'
|
||||
import { lists } from '../../store/Modules/lists'
|
||||
|
||||
@Component({
|
||||
name: 'CEventsCalendar',
|
||||
@@ -339,10 +340,6 @@ export default class CEventsCalendar extends Vue {
|
||||
}
|
||||
}
|
||||
|
||||
public isCssColor(color) {
|
||||
return !!color && !!color.match(/^(#|(rgb|hsl)a?\()/)
|
||||
}
|
||||
|
||||
public showEvent(eventparam: IEvents) {
|
||||
// console.log('showEvent - INIZIO')
|
||||
this.myevent = eventparam
|
||||
@@ -357,22 +354,6 @@ export default class CEventsCalendar extends Vue {
|
||||
return endTime
|
||||
}
|
||||
|
||||
public displayClasses(eventparam) {
|
||||
return {
|
||||
[`bg-${eventparam.bgcolor}`]: !this.isCssColor(eventparam.bgcolor),
|
||||
'text-white': !this.isCssColor(eventparam.bgcolor)
|
||||
}
|
||||
}
|
||||
|
||||
public displayStyles(eventparam) {
|
||||
const s = { color: '' }
|
||||
if (this.isCssColor(eventparam.bgcolor)) {
|
||||
s['background-color'] = eventparam.bgcolor
|
||||
s.color = colors.luminosity(eventparam.bgcolor) > 0.5 ? 'black' : 'white'
|
||||
}
|
||||
return s
|
||||
}
|
||||
|
||||
public onDateChanged(mydate) {
|
||||
this.calendarView = 'day'
|
||||
}
|
||||
@@ -412,13 +393,14 @@ export default class CEventsCalendar extends Vue {
|
||||
}
|
||||
|
||||
public addBookEventMenu(eventparam) {
|
||||
if (!UserStore.state.isLogged) {
|
||||
if (!UserStore.state.isLogged || !UserStore.state.verified_email) {
|
||||
this.$router.push('/signin')
|
||||
} else {
|
||||
console.log('addBookEventMenu')
|
||||
this.resetForm()
|
||||
this.myevent = eventparam
|
||||
this.bookEventForm.msgbooking = translate('cal.bookingtextdefault') + ' ' + tools.gettextevent(this.myevent)
|
||||
// this.bookEventForm.msgbooking = translate('cal.bookingtextdefault') + ' ' + tools.gettextevent(this.myevent)
|
||||
this.bookEventForm.msgbooking = ''
|
||||
this.bookEventForm.numpeople = 1
|
||||
this.bookEventpage.state = EState.Creating
|
||||
|
||||
@@ -567,6 +549,7 @@ export default class CEventsCalendar extends Vue {
|
||||
console.log('bookedevent', bookedevent)
|
||||
|
||||
if (bookedevent) {
|
||||
this.bookEventForm._id = bookedevent._id
|
||||
this.bookEventForm.numpeople = bookedevent.numpeople
|
||||
this.bookEventForm.infoevent = bookedevent.infoevent
|
||||
this.bookEventForm.msgbooking = bookedevent.msgbooking
|
||||
@@ -581,7 +564,12 @@ export default class CEventsCalendar extends Vue {
|
||||
|
||||
get hasModifiedBooking() {
|
||||
return (this.bookEventpage.bookedevent.numpeople !== this.bookEventForm.numpeople) ||
|
||||
(this.bookEventpage.bookedevent.msgbooking !== this.bookEventForm.msgbooking)
|
||||
(this.bookEventpage.bookedevent.msgbooking !== this.bookEventForm.msgbooking) ||
|
||||
(this.bookEventpage.bookedevent.booked !== this.bookEventForm.booked)
|
||||
}
|
||||
|
||||
public sendMsg(myevent: IEvents) {
|
||||
// ..
|
||||
}
|
||||
|
||||
public saveBookEvent(myevent: IEvents) {
|
||||
@@ -593,7 +581,7 @@ export default class CEventsCalendar extends Vue {
|
||||
// close the dialog
|
||||
self.bookEventpage.show = false
|
||||
|
||||
self.bookEventForm.booked = true
|
||||
// self.bookEventForm.booked = self.bookEventForm.bookedcheck
|
||||
|
||||
const data: IBookedEvent = {
|
||||
id_bookedevent: myevent._id,
|
||||
@@ -722,11 +710,6 @@ export default class CEventsCalendar extends Vue {
|
||||
return await CalendarStore.actions.BookEvent(eventparam)
|
||||
}
|
||||
|
||||
public async CancelBookingEvent(eventparam: IEvents) {
|
||||
console.log('CancelBookingEvent ', eventparam._id)
|
||||
tools.askConfirm(this.$q, translate('cal.titlebooking'), translate('cal.cancelbooking') + ' ' + tools.gettextevent(eventparam) + '?', translate('dialog.yes'), translate('dialog.no'), this, costanti.FuncDialog.CANCEL_BOOKING, 0, { param1: eventparam })
|
||||
}
|
||||
|
||||
public isAlreadyBooked(eventparam: IEvents) {
|
||||
return CalendarStore.getters.findEventBooked(eventparam, true)
|
||||
}
|
||||
@@ -738,7 +721,7 @@ export default class CEventsCalendar extends Vue {
|
||||
}
|
||||
|
||||
public badgeClasses(eventparam, type) {
|
||||
const cssColor = this.isCssColor(eventparam.bgcolor)
|
||||
const cssColor = tools.isCssColor(eventparam.bgcolor)
|
||||
const isHeader = type === 'header'
|
||||
return {
|
||||
[`text-white bg-${eventparam.bgcolor}`]: !cssColor,
|
||||
@@ -751,7 +734,7 @@ export default class CEventsCalendar extends Vue {
|
||||
public badgeStyles(eventparam, type, timeStartPos, timeDurationHeight) {
|
||||
const s = { color: '', top: '', height: '' }
|
||||
|
||||
if (this.isCssColor(eventparam.bgcolor)) {
|
||||
if (tools.isCssColor(eventparam.bgcolor)) {
|
||||
s['background-color'] = eventparam.bgcolor
|
||||
s.color = colors.luminosity(eventparam.bgcolor) > 0.5 ? 'black' : 'white'
|
||||
}
|
||||
@@ -859,10 +842,19 @@ export default class CEventsCalendar extends Vue {
|
||||
return EState
|
||||
}
|
||||
|
||||
public getTitleBtnBooking() {
|
||||
if (this.bookEventpage.state === EState.Creating)
|
||||
return translate('dialog.book')
|
||||
else
|
||||
return translate('dialog.update')
|
||||
get checkseinviaMsg() {
|
||||
return (this.bookEventpage.state === EState.Creating) && (!this.bookEventForm.booked)
|
||||
}
|
||||
|
||||
get getTitleBtnBooking() {
|
||||
if (this.bookEventpage.state === EState.Creating) {
|
||||
return this.$t('dialog.book')
|
||||
} else {
|
||||
return this.$t('dialog.update')
|
||||
}
|
||||
}
|
||||
|
||||
get mythis() {
|
||||
return this
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,8 +9,8 @@ $t('
|
||||
<!-- display an myevent -->
|
||||
<q-dialog v-model="displayEvent">
|
||||
<q-card v-if="myevent">
|
||||
<q-toolbar :class="displayClasses(myevent)"
|
||||
:style="displayStyles(myevent) + ` min-width: `+ tools.myheight_dialog() + `px;`">
|
||||
<q-toolbar :class="tools.displayClasses(myevent)"
|
||||
:style="tools.displayStyles(myevent) + ` min-width: `+ tools.myheight_dialog() + `px;`">
|
||||
<q-toolbar-title>
|
||||
{{ $t('cal.event') }}
|
||||
</q-toolbar-title>
|
||||
@@ -83,7 +83,7 @@ $t('
|
||||
</div>
|
||||
<p v-if="myevent.linkpdf" style="margin-top: 10px; text-align: center">
|
||||
<q-btn size="md" type="a" :href="`../../statics/` + myevent.linkpdf"
|
||||
target="_blank" rounded color="primary" icon="info" label="Vedi Info">
|
||||
target="_blank" rounded color="primary" icon="info" :label="$t('cal.showinfo')">
|
||||
</q-btn>
|
||||
</p>
|
||||
</div>
|
||||
@@ -224,7 +224,7 @@ $t('
|
||||
<q-card v-if="bookEventpage.show" :style="`min-width: `+ tools.myheight_dialog() + `px;`">
|
||||
<q-toolbar class="bg-primary text-white">
|
||||
<q-toolbar-title>
|
||||
Book Event
|
||||
{{$t('cal.booking')}}
|
||||
</q-toolbar-title>
|
||||
<q-btn flat round color="white" icon="close" v-close-popup></q-btn>
|
||||
</q-toolbar>
|
||||
@@ -250,32 +250,27 @@ $t('
|
||||
<span v-if="myevent.time" class="cal__hours">
|
||||
-
|
||||
<span class="cal__hours-title">{{$t('cal.hours')}}: </span>
|
||||
<span class="cal__hours-content">{{$t('cal.starttime')}} {{ myevent.time }} {{$t('cal.endtime')}}: {{
|
||||
getEndTime(myevent) }}</span>
|
||||
<span class="cal__hours-content"><span v-if="!tools.isMobile()">{{$t('cal.starttime')}} </span>{{ myevent.time }} <span v-if="!tools.isMobile()">{{$t('cal.endtime')}} </span><span v-else> - </span> {{
|
||||
getEndTime(myevent) }}</span>
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
<div class="q-pa-sm">
|
||||
<q-card
|
||||
class="text-white windowcol">
|
||||
<!--<q-card-section>-->
|
||||
<!--<div class="text-h6"></div>-->
|
||||
<!--<div class="text-subtitle2">by John Doe</div>-->
|
||||
<!--</q-card-section>-->
|
||||
|
||||
<div class="q-pa-xs">
|
||||
<q-card class="text-white windowcol">
|
||||
<q-card-section>
|
||||
<q-input v-model="bookEventForm.msgbooking" :label="$t('cal.msgbooking')"
|
||||
autogrow>
|
||||
<q-checkbox :disable="(bookEventpage.bookedevent && bookEventpage.bookedevent.booked) || (bookEventpage.bookedevent === undefined)" style="color: black;" v-model="bookEventForm.booked" :label="$t('cal.bookingtextdefault')" color="green">
|
||||
</q-checkbox>
|
||||
|
||||
</q-input>
|
||||
|
||||
<div class="q-gutter-md centermydiv" style="max-width: 150px; margin-top:10px;">
|
||||
<div v-if="bookEventForm.booked" class="q-gutter-md centermydiv" style="max-width: 150px; margin-top:10px;">
|
||||
<q-select
|
||||
rounded outlined v-model="bookEventForm.numpeople"
|
||||
:options="tools.SelectListNumPeople"
|
||||
:label="$t('cal.selnumpeople')" emit-value map-options>
|
||||
</q-select>
|
||||
</div>
|
||||
|
||||
<q-input v-model="bookEventForm.msgbooking" :label="$t('cal.msgbooking')+':'" autogrow>
|
||||
</q-input>
|
||||
</q-card-section>
|
||||
</q-card>
|
||||
|
||||
@@ -284,16 +279,19 @@ $t('
|
||||
|
||||
<p v-if="myevent.linkpdf" style="margin-top: 10px; text-align: center">
|
||||
<q-btn size="md" type="a" :href="`../../statics/` + myevent.linkpdf"
|
||||
target="_blank" rounded color="primary" icon="info" label="Vedi Info">
|
||||
target="_blank" rounded color="primary" icon="info" :label="$t('cal.showinfo')">
|
||||
</q-btn>
|
||||
</p>
|
||||
</div>
|
||||
</q-card-section>
|
||||
<q-card-actions align="right">
|
||||
<q-btn v-if="bookEventpage.state === EState.Modifying" flat :label="$t('cal.cancelbooking')"
|
||||
color="negative" @click="CancelBookingEvent(myevent)"></q-btn>
|
||||
<q-btn flat :label="getTitleBtnBooking()" color="primary" @click="saveBookEvent(myevent)"
|
||||
color="negative" @click="tools.CancelBookingEvent(mythis, myevent, bookEventForm._id, true)"></q-btn>
|
||||
<q-btn v-if="checkseinviaMsg" flat :label="$t('dialog.sendmsg')" color="primary" @click="sendMsg(myevent)"></q-btn>
|
||||
<q-btn v-else flat :label="getTitleBtnBooking" color="primary" @click="saveBookEvent(myevent)"
|
||||
:disable="!(bookEventpage.state === EState.Creating || hasModifiedBooking)"></q-btn>
|
||||
|
||||
|
||||
<q-btn flat :label="$t('dialog.cancel')" color="primary" v-close-popup></q-btn>
|
||||
</q-card-actions>
|
||||
</q-card>
|
||||
@@ -543,7 +541,7 @@ $t('
|
||||
<span v-if="event.linkpdf" class="">
|
||||
<q-btn size="md" type="a" :href="`../../statics/` + event.linkpdf"
|
||||
target="_blank" rounded color="primary" icon="info"
|
||||
label="Vedi Info">
|
||||
:label="$t('cal.showinfo')">
|
||||
|
||||
</q-btn>
|
||||
</span>
|
||||
|
||||
@@ -151,7 +151,7 @@ export default class CSignIn extends Vue {
|
||||
// console.log('ERROR Subscription = ' + e)
|
||||
// })
|
||||
} else {
|
||||
this.$emit('checkErrors', riscode)
|
||||
this.$emit('SignIncheckErrors', riscode)
|
||||
}
|
||||
|
||||
this.iswaitingforRes = false
|
||||
@@ -160,7 +160,7 @@ export default class CSignIn extends Vue {
|
||||
.catch((error) => {
|
||||
// console.log('ERROR SIGNIN = ' + error)
|
||||
|
||||
this.$emit('checkErrors', error)
|
||||
this.$emit('SignIncheckErrors', error)
|
||||
})
|
||||
// console.log(' END submit')
|
||||
}
|
||||
|
||||
@@ -56,6 +56,11 @@
|
||||
:disable="$v.$error || iswaitingforRes">{{$t('login.enter')}}
|
||||
</q-btn>
|
||||
</div>
|
||||
<div align="center" style="margin-top:10px;">
|
||||
<q-btn flat rounded size="lg" color="primary" to="/signup">{{$t('reg.submit')}}
|
||||
</q-btn>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
@@ -295,3 +295,4 @@ canvas {
|
||||
margin: 1px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
|
||||
@@ -350,6 +350,10 @@ export default class Header extends Vue {
|
||||
return UserStore.state.isLogged
|
||||
}
|
||||
|
||||
get isVerified() {
|
||||
return UserStore.state.verified_email
|
||||
}
|
||||
|
||||
public loginOk() {
|
||||
tools.loginOk(this, false)
|
||||
}
|
||||
@@ -359,7 +363,7 @@ export default class Header extends Vue {
|
||||
}
|
||||
|
||||
public checkErrors(riscode) {
|
||||
tools.checkErrors(this, riscode)
|
||||
tools.SignIncheckErrors(this, riscode)
|
||||
}
|
||||
|
||||
public showNotif(msgcode) {
|
||||
@@ -369,4 +373,9 @@ export default class Header extends Vue {
|
||||
public mythis() {
|
||||
return this
|
||||
}
|
||||
|
||||
public clickregister() {
|
||||
this.right = false
|
||||
this.$router.replace('/signup')
|
||||
}
|
||||
}
|
||||
|
||||
@@ -132,32 +132,36 @@
|
||||
<div id="profile">
|
||||
<q-img class="absolute-top" src="../../statics/images/landing_first_section.png"
|
||||
style="height: 150px">
|
||||
<div class="absolute-bottom bg-transparent text-black center_img">
|
||||
|
||||
<q-avatar class="q-mb-sm center_img">
|
||||
<img src="../../statics/images/avatar-1.svg">
|
||||
</q-avatar>
|
||||
<q-btn class="absolute-top-right" style="margin-top: 9px; margin-right: 12px; color: white;"
|
||||
dense flat round icon="close" @click="right = !right">
|
||||
</q-btn>
|
||||
<div v-if="Username" class="text-weight-bold text-user">{{ Username }} - {{ myName }}</div>
|
||||
<div v-else class="text-italic">
|
||||
{{ $t('user.loggati') }}
|
||||
</div>
|
||||
|
||||
<!--<span class="text-white" v-if="Verificato"> {{$t('reg.verificato')}} </span>-->
|
||||
<!--<span class="text-white background-red" v-else> {{$t('reg.non_verificato')}} </span>-->
|
||||
|
||||
<div v-if="Username" id="user-actions">
|
||||
<q-btn round color="primary" icon="person"></q-btn>
|
||||
<q-btn round color="warning" icon="lock"></q-btn>
|
||||
<q-btn round color="secondary" icon="exit_to_app" @click='logoutHandler'></q-btn>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</q-img>
|
||||
<div class="absolute-top bg-transparent text-black center_img" style="margin-top: 10px;">
|
||||
|
||||
<q-avatar class="q-mb-sm center_img">
|
||||
<img src="../../statics/images/avatar-1.svg">
|
||||
</q-avatar>
|
||||
<q-btn class="absolute-top-right" style="margin-right: 10px; color: white;"
|
||||
dense flat round icon="close" @click="right = !right">
|
||||
</q-btn>
|
||||
<div v-if="isLogged" class="text-weight-bold text-user">{{ Username }} - {{ myName }}</div>
|
||||
<div v-else class="text-user text-italic bg-red">
|
||||
{{ $t('user.loggati') }}
|
||||
</div>
|
||||
|
||||
<div v-if="isLogged && !isVerified" class="text-verified">{{
|
||||
$t('components.authentication.email_verification.verify_email') }}
|
||||
</div>
|
||||
|
||||
<!--<span class="text-white" v-if="Verificato"> {{$t('reg.verificato')}} </span>-->
|
||||
<!--<span class="text-white background-red" v-else> {{$t('reg.non_verificato')}} </span>-->
|
||||
|
||||
<div v-if="isLogged" id="user-actions" class="text-center">
|
||||
<q-btn round color="primary" icon="person"></q-btn>
|
||||
<q-btn round color="warning" icon="lock"></q-btn>
|
||||
<q-btn round color="secondary" icon="exit_to_app" @click='logoutHandler'></q-btn>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div style="margin-top:120px;"></div>
|
||||
<div v-show="!Username">
|
||||
<div v-show="!isLogged">
|
||||
<div class="q-ma-md" style="">
|
||||
<CSignIn :mythis="mythis"
|
||||
@loginOk="loginOk"
|
||||
|
||||
@@ -10,6 +10,7 @@ export * from './CImgText'
|
||||
export * from './CImgTitle'
|
||||
export * from './CPreloadImages'
|
||||
export * from './CSignIn'
|
||||
export * from './CSignUp'
|
||||
export * from './CEventsCalendar'
|
||||
export * from './CDate'
|
||||
export * from './BannerCookies'
|
||||
|
||||
Reference in New Issue
Block a user