- Load Events

- Edit Events
- When a field is updated: undate also memory list record

- Duplicate Event
This commit is contained in:
Paolo Arena
2019-10-20 22:44:18 +02:00
parent b8ec241b37
commit 9656b14cd0
11 changed files with 348 additions and 75 deletions

View File

@@ -349,7 +349,7 @@ export default class CEventsCalendar extends Vue {
}
public getEndTime(eventparam) {
let endTime = new Date(eventparam.date + ' ' + eventparam.time + ':00')
let endTime = new Date(eventparam.date)
endTime = date.addToDate(endTime, { minutes: eventparam.dur })
endTime = date.formatDate(endTime, 'HH:mm')
return endTime
@@ -421,8 +421,8 @@ export default class CEventsCalendar extends Vue {
this.resetForm()
this.contextDay = { ...eventparam }
let timestamp
if (eventparam.time) {
timestamp = eventparam.date + ' ' + eventparam.time
if (eventparam.withtime) {
timestamp = eventparam.date
const startTime = new Date(timestamp)
const endTime = date.addToDate(startTime, { minutes: eventparam.dur })
this.eventForm.dateTimeStart = this.formatDate(startTime) + ' ' + this.formatTime(startTime) // endTime.toString()
@@ -431,7 +431,7 @@ export default class CEventsCalendar extends Vue {
timestamp = eventparam.date
this.eventForm.dateTimeStart = timestamp
}
this.eventForm.allDay = !eventparam.time
this.eventForm.allDay = !eventparam.withtime
this.eventForm.bgcolor = eventparam.bgcolor
this.eventForm.icon = eventparam.icon
this.eventForm.title = eventparam.title
@@ -515,7 +515,7 @@ export default class CEventsCalendar extends Vue {
// an add
}
const data: IEvents = {
time: '',
withtime: false,
dur: 0,
dur2: 0,
title: form.title,
@@ -526,7 +526,7 @@ export default class CEventsCalendar extends Vue {
}
if (form.allDay === false) {
// get time into separate var
data.time = String(form.dateTimeStart).slice(11, 16)
// data.time = String(form.dateTimeStart).slice(11, 16)
data.dur = self.getDuration(form.dateTimeStart, form.dateTimeEnd, 'minutes')
}
if (update === true) {
@@ -685,7 +685,8 @@ export default class CEventsCalendar extends Vue {
return this.draggedEvent.date !== day.date
} else if (type === 'interval') {
stopAndPrevent(ev)
return this.draggedEvent.date !== day.date && this.draggedEvent.time !== day.time
// return this.draggedEvent.date !== day.date && this.draggedEvent.time !== day.time
return this.draggedEvent.date !== day.date
}
}
@@ -697,7 +698,7 @@ export default class CEventsCalendar extends Vue {
this.draggedEvent.side = void 0
} else if (type === 'interval') {
this.draggedEvent.date = day.date
this.draggedEvent.time = day.time
// this.draggedEvent.time = day.time
this.draggedEvent.side = void 0
}
}
@@ -724,6 +725,16 @@ export default class CEventsCalendar extends Vue {
return this.dateFormatter.format(mydate)
}
public getTeacherName(teacherusername) {
const op = CalendarStore.state.operators.find((myop) => myop.username === teacherusername)
return (op) ? `${op.name} ${op.surname}` : ''
}
public getTeacherImg(teacherusername) {
const op = CalendarStore.state.operators.find((myop) => myop.username === teacherusername)
return (op) ? op.img : 'avatar/noimage.png'
}
public badgeClasses(eventparam, type) {
const cssColor = tools.isCssColor(eventparam.bgcolor)
const isHeader = type === 'header'
@@ -743,7 +754,7 @@ export default class CEventsCalendar extends Vue {
s.color = colors.luminosity(eventparam.bgcolor) > 0.5 ? 'black' : 'white'
}
if (timeStartPos) {
s.top = timeStartPos(eventparam.time) + 'px'
s.top = timeStartPos(tools.getstrTime(eventparam.date)) + 'px'
}
if (timeDurationHeight) {
s.height = timeDurationHeight(eventparam.dur) + 'px'
@@ -786,7 +797,8 @@ export default class CEventsCalendar extends Vue {
for (let i = 0; i < CalendarStore.state.eventlist.length; ++i) {
// console.log(' ciclo i = ', i, CalendarStore.state.eventlist[i])
const dateEvent = new Date(CalendarStore.state.eventlist[i].date + ' 00:00:00')
// const dateEvent = new Date(CalendarStore.state.eventlist[i].date + ' 00:00:00')
const dateEvent = new Date(CalendarStore.state.eventlist[i].date)
if (dateEvent >= datenow) {
eventsloc.push(CalendarStore.state.eventlist[i])
@@ -802,14 +814,15 @@ export default class CEventsCalendar extends Vue {
for (let i = 0; i < CalendarStore.state.eventlist.length; ++i) {
let added = false
// console.log(' ciclo i = ', i, CalendarStore.state.eventlist[i])
if (CalendarStore.state.eventlist[i].date === dt) {
if (CalendarStore.state.eventlist[i].time) {
if (tools.getstrYYMMDDDate(CalendarStore.state.eventlist[i].date) === dt) {
// if (CalendarStore.state.eventlist[i].time) {
if (eventsloc.length > 0) {
// check for overlapping times
const startTime = new Date(CalendarStore.state.eventlist[i].date + ' ' + CalendarStore.state.eventlist[i].time)
// const startTime = new Date(CalendarStore.state.eventlist[i].date + ' ' + CalendarStore.state.eventlist[i].time)
const startTime = new Date(CalendarStore.state.eventlist[i].date)
const endTime = date.addToDate(startTime, { minutes: CalendarStore.state.eventlist[i].dur })
for (let j = 0; j < eventsloc.length; ++j) {
const startTime2 = new Date(eventsloc[j].date + ' ' + eventsloc[j].time)
const startTime2 = new Date(eventsloc[j].date)
const endTime2 = date.addToDate(startTime2, { minutes: eventsloc[j].dur2 })
if (date.isBetweenDates(startTime, startTime2, endTime2) || date.isBetweenDates(endTime, startTime2, endTime2)) {
eventsloc[j].side = 'left'
@@ -820,14 +833,15 @@ export default class CEventsCalendar extends Vue {
}
}
}
}
// }
if (!added) {
// CalendarStore.state.eventlist[i].side = void 0
eventsloc.push(CalendarStore.state.eventlist[i])
}
} else if (CalendarStore.state.eventlist[i].days) {
// check for overlapping dates
const startDate = new Date(CalendarStore.state.eventlist[i].date + ' 00:00:00')
// const startDate = new Date(CalendarStore.state.eventlist[i].date + ' 00:00:00')
const startDate = new Date(CalendarStore.state.eventlist[i].date)
const endDate = date.addToDate(startDate, { days: CalendarStore.state.eventlist[i].days })
if (date.isBetweenDates(dt, startDate, endDate)) {
eventsloc.push(CalendarStore.state.eventlist[i])
@@ -866,7 +880,8 @@ export default class CEventsCalendar extends Vue {
// check if event is in the past
const datenow = tools.addDays(tools.getDateNow(), -1)
let dateEvent = new Date(myevent.date + ' 00:00:00')
// let dateEvent = new Date(myevent.date + ' 00:00:00')
let dateEvent = new Date(myevent.date)
if (myevent.days) {
dateEvent = tools.addDays(dateEvent, myevent.days)

View File

@@ -32,16 +32,16 @@
<span class="cal__teacher-content">
<q-chip>
<q-avatar>
<img :src="`../../statics/images/avatar/` + myevent.avatar">
<img :src="`../../statics/images/` + getTeacherImg(myevent.teacher)">
</q-avatar>
<span class="cal__teacher-content">{{myevent.teacher}}</span>
<span class="cal__teacher-content">{{getTeacherName(myevent.teacher)}}</span>
</q-chip>
<span v-if="myevent.avatar2 && myevent.teacher2" class="margin_avatar2"></span>
<q-chip v-if="myevent.avatar2 && myevent.teacher2">
<span v-if="getTeacherImg(myevent.teacher2) && myevent.teacher2" class="margin_avatar2"></span>
<q-chip v-if="getTeacherImg(myevent.teacher2) && myevent.teacher2">
<q-avatar>
<img :src="`../../statics/images/avatar/` + myevent.avatar2">
<img :src="`../../statics/images/` + getTeacherImg(myevent.teacher2)">
</q-avatar>
<span class="cal__teacher-content">{{myevent.teacher2}}</span>
<span class="cal__teacher-content">{{getTeacherName(myevent.teacher2)}}</span>
</q-chip>
</span>
</div>
@@ -68,10 +68,10 @@
<span class="cal__hours-content">{{ myevent.infoextra }} </span>
</span>
<span v-else>
<span v-if="myevent.time" class="cal__hours">
<span v-if="myevent.withtime" 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')}}: {{
<span class="cal__hours-content">{{$t('cal.starttime')}} {{ tools.getstrTime(myevent.date) }} {{$t('cal.endtime')}}: {{
getEndTime(myevent) }}</span>
</span>
</span>
@@ -242,10 +242,10 @@
<span class="cal__hours-content">{{ myevent.infoextra }} </span>
</span>
<span v-else>
<span v-if="myevent.time" class="cal__hours">
<span v-if="myevent.withtime" class="cal__hours">
-
<span class="cal__hours-title">{{$t('cal.hours')}}: </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> {{
<span class="cal__hours-content"><span v-if="!tools.isMobile()">{{$t('cal.starttime')}} </span>{{ tools.getstrTime(myevent.date) }} <span v-if="!tools.isMobile()">{{$t('cal.endtime')}} </span><span v-else> - </span> {{
getEndTime(myevent) }}</span>
</span>
</span>
@@ -386,7 +386,7 @@
<div class="row justify-center">
<template v-for="(event, index) in eventsMap[date]">
<q-badge
v-if="!event.time"
v-if="!event.withtime"
:key="index"
style="width: 100%; cursor: pointer;"
class="ellipsis"
@@ -416,7 +416,7 @@
<template #day-body="{ date, timeStartPos, timeDurationHeight }">
<template v-for="(event, index) in getEvents(date)">
<q-badge
v-if="event.time"
v-if="event.withtime"
:key="index"
class="my-event justify-center ellipsis"
:class="badgeClasses(event, 'body')"
@@ -463,7 +463,7 @@
<div v-else>
<div v-if="event.date" class="listaev__date">
{{func_tools.getDateStr(event.date)}}
<span v-if="event.time" class="cal__hours-content"> - {{ event.time }} <span
<span v-if="event.withtime" class="cal__hours-content"> - {{ tools.getstrTime(event.date) }} <span
v-if="event.dur">- {{ getEndTime(event) }}</span></span>
<span v-if="event.days > 1"><br/>{{func_tools.getDateStr(tools.addDays(event.date, event.days - 1))}}</span>
</div>
@@ -506,16 +506,16 @@
<q-chip>
<q-avatar>
<img :src="`../../statics/images/avatar/` + event.avatar">
<img :src="`../../statics/images/` + getTeacherImg(event.teacher)">
</q-avatar>
<span class="cal__teacher-content">{{event.teacher}}</span>
<span class="cal__teacher-content">{{getTeacherName(event.teacher)}}</span>
</q-chip>
<span v-if="event.avatar2" class="margin_avatar2"></span>
<q-chip v-if="event.avatar2 && event.teacher2">
<span v-if="getTeacherImg(event.teacher2)" class="margin_avatar2"></span>
<q-chip v-if="getTeacherImg(event.teacher2) && event.teacher2">
<q-avatar>
<img :src="`../../statics/images/avatar/` + event.avatar2">
<img :src="`../../statics/images/` + getTeacherImg(event.teacher2)">
</q-avatar>
<span class="cal__teacher-content">{{event.teacher2}}</span>
<span class="cal__teacher-content">{{getTeacherName(event.teacher2)}}</span>
</q-chip>
<span v-if="event.where" class="">