- Load Events
- Edit Events - When a field is updated: undate also memory list record - Duplicate Event
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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="">
|
||||
|
||||
@@ -125,10 +125,10 @@ export default class CGridTableRec extends Vue {
|
||||
this.colVisib = []
|
||||
this.colExtra = []
|
||||
this.mycolumns.forEach((elem) => {
|
||||
if (elem.field !== '')
|
||||
if (elem.field !== tools.NOFIELD)
|
||||
this.colVisib.push(elem.field)
|
||||
|
||||
if (elem.visible && elem.field === '')
|
||||
if (elem.visible && elem.field === tools.NOFIELD)
|
||||
this.colExtra.push(elem.name)
|
||||
|
||||
})
|
||||
@@ -298,9 +298,9 @@ export default class CGridTableRec extends Vue {
|
||||
|
||||
// Save on Server
|
||||
GlobalStore.actions.saveFieldValue(mydata).then((esito) => {
|
||||
if (esito)
|
||||
if (esito) {
|
||||
tools.showPositiveNotif(this.$q, this.$t('db.recupdated'))
|
||||
else {
|
||||
} else {
|
||||
tools.showNegativeNotif(this.$q, this.$t('db.recfailed'))
|
||||
this.undoVal()
|
||||
}
|
||||
@@ -325,10 +325,13 @@ export default class CGridTableRec extends Vue {
|
||||
}
|
||||
}
|
||||
|
||||
public ActionAfterYes(action, item) {
|
||||
public ActionAfterYes(action, item, data) {
|
||||
if (action === lists.MenuAction.DELETE_RECTABLE) {
|
||||
if (this.serverData.length > 0)
|
||||
this.serverData.splice(this.serverData.indexOf(item), 1)
|
||||
} else if (action === lists.MenuAction.DUPLICATE_RECTABLE) {
|
||||
// Add record duplicated
|
||||
this.serverData.push(data)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -345,7 +348,7 @@ export default class CGridTableRec extends Vue {
|
||||
}
|
||||
|
||||
public visuValByType(col, val) {
|
||||
if (col.isdate) {
|
||||
if (col.fieldtype === 'date') {
|
||||
if (val === undefined) {
|
||||
return '[]'
|
||||
} else {
|
||||
@@ -369,7 +372,7 @@ export default class CGridTableRec extends Vue {
|
||||
let mytab = null
|
||||
if (this.tablesList) {
|
||||
if (!this.tablesel) {
|
||||
this.tablesel = this.tablesList[0].value
|
||||
this.tablesel = this.tablesList[1].value
|
||||
}
|
||||
|
||||
mytab = this.tablesList.find((rec) => rec.value === this.tablesel)
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<template>
|
||||
<div class="q-pa-sm">
|
||||
|
||||
<q-table
|
||||
:data="serverData"
|
||||
:columns="mycolumns"
|
||||
@@ -83,8 +84,8 @@
|
||||
|
||||
<q-tr v-if="mytable" slot="body" slot-scope="props" :props="props">
|
||||
<q-td v-for="col in mycolumns" :key="col.name" :props="props" v-if="colVisib.includes(col.field)">
|
||||
<div v-if="col.isdate">
|
||||
<div style="max-width: 250px">
|
||||
<div v-if="col.fieldtype === 'date'">
|
||||
<div style="max-width: 250px; min-width: 200px">
|
||||
<q-input dense v-model="props.row[col.name]">
|
||||
<template v-slot:prepend>
|
||||
<q-icon name="event" class="cursor-pointer">
|
||||
@@ -117,6 +118,9 @@
|
||||
</q-input>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="col.fieldtype === 'boolean'">
|
||||
<q-checkbox v-model="props.row[col.name])" label="" />
|
||||
</div>
|
||||
<div v-else>
|
||||
<div :class="getclassCol(col)">
|
||||
{{ visuValByType(col, props.row[col.name]) }}
|
||||
|
||||
Reference in New Issue
Block a user