- ++Booking List

- ++Delete a Booking also for the Admin.
This commit is contained in:
Paolo Arena
2019-10-12 23:34:58 +02:00
parent bba0c05a73
commit eed1082ac6
23 changed files with 320 additions and 423 deletions

View File

@@ -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
}
}

View File

@@ -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>

View File

@@ -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')
}

View File

@@ -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>

View File

@@ -295,3 +295,4 @@ canvas {
margin: 1px;
margin-bottom: 5px;
}

View File

@@ -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')
}
}

View File

@@ -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"

View File

@@ -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'