From a70d5cc263c0b226f5cbad641ad259a0c746faa2 Mon Sep 17 00:00:00 2001 From: nobohan Date: Wed, 18 Aug 2021 15:54:35 +0200 Subject: [PATCH] rdv: fullcalendar: save calendarRange id as an extended prop in the calendar entity --- .../ChillCalendarBundle/Form/CalendarType.php | 19 +++++++++++++++++++ .../Resources/public/vuejs/Calendar/App.vue | 11 +++++------ .../Resources/public/vuejs/Calendar/store.js | 6 ++++-- .../CalendarUserSelector.vue | 3 ++- .../Resources/views/Calendar/edit.html.twig | 4 ++++ .../Resources/views/Calendar/new.html.twig | 4 ++++ 6 files changed, 38 insertions(+), 9 deletions(-) diff --git a/src/Bundle/ChillCalendarBundle/Form/CalendarType.php b/src/Bundle/ChillCalendarBundle/Form/CalendarType.php index 9ff29a52c..30b9651a7 100644 --- a/src/Bundle/ChillCalendarBundle/Form/CalendarType.php +++ b/src/Bundle/ChillCalendarBundle/Form/CalendarType.php @@ -15,6 +15,7 @@ use Symfony\Component\Form\Extension\Core\Type\HiddenType; use Chill\MainBundle\Form\Type\CommentType; use Chill\CalendarBundle\Entity\Calendar; +use Chill\CalendarBundle\Entity\CalendarRange; use Chill\CalendarBundle\Entity\CancelReason; use Chill\CalendarBundle\Entity\Invite; use Chill\MainBundle\Entity\User; @@ -145,6 +146,24 @@ class CalendarType extends AbstractType )) ; + $builder->add('calendarRange', HiddenType::class); + $builder->get('calendarRange') + ->addModelTransformer(new CallbackTransformer( + function (?CalendarRange $calendarRange): int { + if (NULL !== $calendarRange) { + $res = $calendarRange->getId(); + } else { + $res = -1; + } + return $res; + }, + function (?string $calendarRangeId): CalendarRange { + return $this->om->getRepository(CalendarRange::class)->findOneBy(['id' => (int) $calendarRangeId]); + } + )) + ; + + // $builder->add('invites', HiddenType::class); // $builder->get('invites') // ->addModelTransformer(new CallbackTransformer( diff --git a/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/App.vue b/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/App.vue index d741ac924..3a7db6dc4 100644 --- a/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/App.vue +++ b/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/App.vue @@ -63,8 +63,8 @@ export default { select: this.onDateSelect, eventChange: this.onEventChange, eventClick: this.onEventClick, - eventMouseEnter: this.onEventMouseEnter, - eventMouseLeave: this.onEventMouseLeave, + // eventMouseEnter: this.onEventMouseEnter, + // eventMouseLeave: this.onEventMouseLeave, selectMirror: true, editable: true, headerToolbar: { @@ -82,9 +82,6 @@ export default { // console.log(calendar) }, updateEventsSource() { - console.log('updateEventsSource') - console.log(this.calendarEvents.selected) - this.calendarOptions.eventSources = this.calendarEvents.selected; if (window.startDate !== undefined) { this.calendarEvents.selected.push(currentEvent); @@ -94,12 +91,14 @@ export default { this.$store.dispatch('createEvent', payload); }, onEventChange(payload) { + console.log(payload.event.extendedProps); + console.log(this.calendarOptions.eventSources) this.$store.dispatch('updateEvent', payload); }, onEventClick(payload) { payload.event.setProp('backgroundColor','#3788d8'); payload.event.setProp('textColor','#ffffff'); - this.$store.dispatch('updateEvent', payload); + //this.$store.dispatch('updateEvent', payload); }, onEventMouseEnter(payload) { payload.event.setProp('borderColor','#444444'); diff --git a/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/store.js b/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/store.js index 8fae5eb00..20ed3118c 100644 --- a/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/store.js +++ b/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/store.js @@ -29,7 +29,7 @@ const store = createStore({ strict: debug, state: { activity: mapEntity(window.entity), - events: [] + currentEvent: null }, mutations: { @@ -65,7 +65,7 @@ const store = createStore({ // Calendar setEvents(state, payload) { console.log(payload) - state.events.push( {start: payload.start, end: payload.end}) + state.currentEvent = {start: payload.start, end: payload.end} } }, actions: { @@ -121,6 +121,8 @@ const store = createStore({ startDateInput.value = payload.event.start.toISOString(); let endDateInput = document.getElementById("chill_calendarbundle_calendar_endDate"); endDateInput.value = payload.event.end.toISOString(); + let calendarRangeInput = document.getElementById("chill_calendarbundle_calendar_calendarRange"); + calendarRangeInput.value = payload.event.extendedProps.calendarRangeId; commit('setEvents', payload); }, diff --git a/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/_components/CalendarUserSelector/CalendarUserSelector.vue b/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/_components/CalendarUserSelector/CalendarUserSelector.vue index 48bb02802..95706fd8f 100644 --- a/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/_components/CalendarUserSelector/CalendarUserSelector.vue +++ b/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/_components/CalendarUserSelector/CalendarUserSelector.vue @@ -80,6 +80,7 @@ export default { ({ start: i.startDate.datetime, end: i.endDate.datetime, + calendarRangeId: i.id //display: 'background' // can be an option for the disponibility }) ); @@ -93,7 +94,7 @@ export default { this.users.loaded = users; this.options = users; - + console.log(calendarEvents) this.calendarEvents.loaded = calendarEvents; whoami().then(me => new Promise((resolve, reject) => { let currentUser = users.find(u => u.id === me.id); diff --git a/src/Bundle/ChillCalendarBundle/Resources/views/Calendar/edit.html.twig b/src/Bundle/ChillCalendarBundle/Resources/views/Calendar/edit.html.twig index ddb34b345..784d3686d 100644 --- a/src/Bundle/ChillCalendarBundle/Resources/views/Calendar/edit.html.twig +++ b/src/Bundle/ChillCalendarBundle/Resources/views/Calendar/edit.html.twig @@ -34,6 +34,10 @@ {{ form_row(form.endDate) }} {% endif %} +{%- if form.calendarRange is defined -%} + {{ form_row(form.calendarRange) }} +{% endif %} + .. location {%- if form.cancelReason is defined -%} diff --git a/src/Bundle/ChillCalendarBundle/Resources/views/Calendar/new.html.twig b/src/Bundle/ChillCalendarBundle/Resources/views/Calendar/new.html.twig index 104b7caf2..501f2ebe1 100644 --- a/src/Bundle/ChillCalendarBundle/Resources/views/Calendar/new.html.twig +++ b/src/Bundle/ChillCalendarBundle/Resources/views/Calendar/new.html.twig @@ -34,6 +34,10 @@ {{ form_row(form.endDate) }} {% endif %} +{%- if form.calendarRange is defined -%} + {{ form_row(form.calendarRange) }} +{% endif %} + .. location {%- if form.cancelReason is defined -%}