rdv: add main user in fullcalendar form

This commit is contained in:
nobohan 2021-08-18 16:51:16 +02:00
parent a70d5cc263
commit dbf72774c2
5 changed files with 45 additions and 14 deletions

View File

@ -45,14 +45,6 @@ class CalendarType extends AbstractType
public function buildForm(FormBuilderInterface $builder, array $options) public function buildForm(FormBuilderInterface $builder, array $options)
{ {
$builder $builder
->add('mainUser', EntityType::class, [
'required' => true,
'class' => User::class,
'choice_label' => function (User $entity) {
return $entity->getUsernameCanonical();
},
// TODO 'empty_data' =>
])
->add('comment', CommentType::class, [ ->add('comment', CommentType::class, [
'required' => false 'required' => false
]) ])
@ -73,6 +65,24 @@ class CalendarType extends AbstractType
]) ])
; ;
$builder->add('mainUser', HiddenType::class);
$builder->get('mainUser')
->addModelTransformer(new CallbackTransformer(
function (?User $user): int {
if (NULL !== $user) {
$res = $user->getId();
} else {
$res = -1; //TODO cannot be null in any ways...
}
return $res;
},
function (?int $userId): User {
return $this->om->getRepository(user::class)->findOneBy(['id' => (int) $userId]);
}
))
;
$builder->add('startDate', HiddenType::class); $builder->add('startDate', HiddenType::class);
$builder->get('startDate') $builder->get('startDate')
->addModelTransformer(new CallbackTransformer( ->addModelTransformer(new CallbackTransformer(
@ -149,7 +159,7 @@ class CalendarType extends AbstractType
$builder->add('calendarRange', HiddenType::class); $builder->add('calendarRange', HiddenType::class);
$builder->get('calendarRange') $builder->get('calendarRange')
->addModelTransformer(new CallbackTransformer( ->addModelTransformer(new CallbackTransformer(
function (?CalendarRange $calendarRange): int { function (?CalendarRange $calendarRange): ?int {
if (NULL !== $calendarRange) { if (NULL !== $calendarRange) {
$res = $calendarRange->getId(); $res = $calendarRange->getId();
} else { } else {
@ -157,8 +167,13 @@ class CalendarType extends AbstractType
} }
return $res; return $res;
}, },
function (?string $calendarRangeId): CalendarRange { function (?string $calendarRangeId): ?CalendarRange {
return $this->om->getRepository(CalendarRange::class)->findOneBy(['id' => (int) $calendarRangeId]); if (NULL !== $calendarRangeId) {
$res = $this->om->getRepository(CalendarRange::class)->findOneBy(['id' => (int) $calendarRangeId]);
} else {
$res = NULL;
}
return $res;
} }
)) ))
; ;

View File

@ -30,7 +30,7 @@ const currentEvent = {
start: window.startDate, start: window.startDate,
end: window.endDate end: window.endDate
}], }],
id: -1 id: window.mainUser
}; };
export default { export default {
@ -45,7 +45,8 @@ export default {
errorMsg: [], errorMsg: [],
users: { users: {
loaded: [], loaded: [],
selected: [] selected: [],
logged: null
}, },
calendarEvents: { calendarEvents: {
loaded: [], loaded: [],
@ -88,10 +89,14 @@ export default {
} }
}, },
onDateSelect(payload) { onDateSelect(payload) {
Object.assign(payload, {users: this.users});
this.$store.dispatch('createEvent', payload); this.$store.dispatch('createEvent', payload);
}, },
onEventChange(payload) { onEventChange(payload) {
console.log(payload.event);
console.log(payload.event.extendedProps); console.log(payload.event.extendedProps);
console.log(payload.event.source);
console.log(payload.event.source.id);
console.log(this.calendarOptions.eventSources) console.log(this.calendarOptions.eventSources)
this.$store.dispatch('updateEvent', payload); this.$store.dispatch('updateEvent', payload);
}, },

View File

@ -113,6 +113,9 @@ const store = createStore({
startDateInput.value = payload.startStr; startDateInput.value = payload.startStr;
let endDateInput = document.getElementById("chill_calendarbundle_calendar_endDate"); let endDateInput = document.getElementById("chill_calendarbundle_calendar_endDate");
endDateInput.value = payload.endStr; endDateInput.value = payload.endStr;
//TODO specify the mainUserInput value if not from a source
let mainUserInput = document.getElementById("chill_calendarbundle_calendar_mainUser");
mainUserInput.value = payload.users.logged.id;
commit('setEvents', payload); commit('setEvents', payload);
}, },
updateEvent({ commit }, payload) { updateEvent({ commit }, payload) {
@ -122,7 +125,10 @@ const store = createStore({
let endDateInput = document.getElementById("chill_calendarbundle_calendar_endDate"); let endDateInput = document.getElementById("chill_calendarbundle_calendar_endDate");
endDateInput.value = payload.event.end.toISOString(); endDateInput.value = payload.event.end.toISOString();
let calendarRangeInput = document.getElementById("chill_calendarbundle_calendar_calendarRange"); let calendarRangeInput = document.getElementById("chill_calendarbundle_calendar_calendarRange");
calendarRangeInput.value = payload.event.extendedProps.calendarRangeId; calendarRangeInput.value = Number(payload.event.extendedProps.calendarRangeId);
let mainUserInput = document.getElementById("chill_calendarbundle_calendar_mainUser");
mainUserInput.value = Number(payload.event.source.id);
//TODO check if working when reiszing an event
commit('setEvents', payload); commit('setEvents', payload);
}, },

View File

@ -94,9 +94,13 @@ export default {
this.users.loaded = users; this.users.loaded = users;
this.options = users; this.options = users;
console.log(users)
console.log(calendarEvents) console.log(calendarEvents)
this.calendarEvents.loaded = calendarEvents; this.calendarEvents.loaded = calendarEvents;
whoami().then(me => new Promise((resolve, reject) => { whoami().then(me => new Promise((resolve, reject) => {
this.users.logged = me;
let currentUser = users.find(u => u.id === me.id); let currentUser = users.find(u => u.id === me.id);
this.value = currentUser; this.value = currentUser;
this.selectUsers(currentUser); this.selectUsers(currentUser);

View File

@ -27,6 +27,7 @@
window.entity = {{ entity_json|json_encode|raw }}; window.entity = {{ entity_json|json_encode|raw }};
window.startDate = {{ entity.startDate|date('Y-m-d H:i:s')|json_encode|raw }}; window.startDate = {{ entity.startDate|date('Y-m-d H:i:s')|json_encode|raw }};
window.endDate = {{ entity.endDate|date('Y-m-d H:i:s')|json_encode|raw }}; window.endDate = {{ entity.endDate|date('Y-m-d H:i:s')|json_encode|raw }};
window.mainUser = {{ entity.mainUser.id }};
</script> </script>
{{ encore_entry_script_tags('vue_calendar') }} {{ encore_entry_script_tags('vue_calendar') }}
{% endblock %} {% endblock %}