From 499640e48b6f0e6c86b3c46cc119898836ba2d1b Mon Sep 17 00:00:00 2001 From: nobohan Date: Mon, 1 Jul 2024 15:33:39 +0200 Subject: [PATCH 01/19] Add a button to duplicate calendar ranges from a week to another one --- .../unreleased/Feature-20240701-153223.yaml | 5 + .../public/vuejs/MyCalendarRange/App2.vue | 298 +++++++++++++----- .../public/vuejs/MyCalendarRange/i18n.ts | 8 +- .../store/modules/calendarRanges.ts | 36 ++- 4 files changed, 266 insertions(+), 81 deletions(-) create mode 100644 .changes/unreleased/Feature-20240701-153223.yaml diff --git a/.changes/unreleased/Feature-20240701-153223.yaml b/.changes/unreleased/Feature-20240701-153223.yaml new file mode 100644 index 000000000..aaf7fa9c3 --- /dev/null +++ b/.changes/unreleased/Feature-20240701-153223.yaml @@ -0,0 +1,5 @@ +kind: Feature +body: Add a button to duplicate calendar ranges from a week to another one +time: 2024-07-01T15:32:23.602091234+02:00 +custom: + Issue: "123" diff --git a/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/MyCalendarRange/App2.vue b/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/MyCalendarRange/App2.vue index 1d353baed..873e780e4 100644 --- a/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/MyCalendarRange/App2.vue +++ b/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/MyCalendarRange/App2.vue @@ -1,7 +1,7 @@ diff --git a/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/MyCalendarRange/i18n.ts b/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/MyCalendarRange/i18n.ts index 2950c16da..4c910aa87 100644 --- a/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/MyCalendarRange/i18n.ts +++ b/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/MyCalendarRange/i18n.ts @@ -5,11 +5,9 @@ const appMessages = { show_my_calendar: "Afficher mon calendrier", show_weekends: "Afficher les week-ends", copy_range: "Copier", - copy_range_from_to: "Copier les plages d'un jour à l'autre", - copy_range_to_next_day: "Copier les plages du jour au jour suivant", - copy_range_from_day: "Copier les plages du ", - to_the_next_day: " au jour suivant", - copy_range_to_next_week: "Copier les plages de la semaine à la semaine suivante", + copy_range_from_to: "Copier les plages", + from_day_to_day: "d'un jour à l'autre", + from_week_to_week: "d'une semaine à l'autre", copy_range_how_to: "Créez les plages de disponibilités durant une journée et copiez-les facilement au jour suivant avec ce bouton. Si les week-ends sont cachés, le jour suivant un vendredi sera le lundi.", new_range_to_save: "Nouvelles plages à enregistrer", update_range_to_save: "Plages à modifier", diff --git a/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/MyCalendarRange/store/modules/calendarRanges.ts b/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/MyCalendarRange/store/modules/calendarRanges.ts index aaa530909..02f14e247 100644 --- a/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/MyCalendarRange/store/modules/calendarRanges.ts +++ b/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/MyCalendarRange/store/modules/calendarRanges.ts @@ -52,6 +52,23 @@ export default >{ } } + return founds; + }, + getRangesOnWeek: (state: CalendarRangesState) => (mondayDate: Date): EventInputCalendarRange[] => { + const founds = []; + for (let d of Array.from(Array(7).keys())) { + const dateOfWeek = new Date(mondayDate); + dateOfWeek.setDate(mondayDate.getDate() + d); + const dateStr = dateToISO(dateOfWeek); + for (let range of state.ranges) { + if (isEventInputCalendarRange(range) + && range.start.startsWith(dateStr) + ) { + founds.push(range); + } + } + } + return founds; }, }, @@ -238,7 +255,7 @@ export default >{ for (let r of rangesToCopy) { let start = new Date(ISOToDatetime(r.start)); - start.setFullYear(to.getFullYear(), to.getMonth(), to.getDate()) + start.setFullYear(to.getFullYear(), to.getMonth(), to.getDate()); let end = new Date(ISOToDatetime(r.end)); end.setFullYear(to.getFullYear(), to.getMonth(), to.getDate()); let location = ctx.rootGetters['locations/getLocationById'](r.locationId); @@ -246,6 +263,23 @@ export default >{ promises.push(ctx.dispatch('createRange', {start, end, location})); } + return Promise.all(promises).then(_ => Promise.resolve(null)); + }, + copyFromWeekToAnotherWeek(ctx, {fromMonday, toMonday}: {fromMonday: Date, toMonday: Date}): Promise { + + const rangesToCopy: EventInputCalendarRange[] = ctx.getters['getRangesOnWeek'](fromMonday); + const promises = []; + const diffTime = toMonday.getTime() - fromMonday.getTime(); + for (let r of rangesToCopy) { + let start = new Date(ISOToDatetime(r.start)); + let end = new Date(ISOToDatetime(r.end)); + start.setTime(start.getTime() + diffTime); + end.setTime(end.getTime() + diffTime); + let location = ctx.rootGetters['locations/getLocationById'](r.locationId); + + promises.push(ctx.dispatch('createRange', {start, end, location})); + } + return Promise.all(promises).then(_ => Promise.resolve(null)); } } From 843698a1d8aabb61756cb5c82c1a03d26e573816 Mon Sep 17 00:00:00 2001 From: nobohan Date: Mon, 1 Jul 2024 15:39:52 +0200 Subject: [PATCH 02/19] DX vuejs code style --- .../Resources/public/vuejs/MyCalendarRange/App2.vue | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/MyCalendarRange/App2.vue b/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/MyCalendarRange/App2.vue index 873e780e4..a2afd8fb0 100644 --- a/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/MyCalendarRange/App2.vue +++ b/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/MyCalendarRange/App2.vue @@ -241,9 +241,8 @@ const dateOptions: Intl.DateTimeFormatOptions = { const lastWeeks = computed((): Weeks[] => Array.from(Array(15).keys()).map((w) => { const lastMonday = getMonday(-w); - //copyFromWeek.value = getMonday(0); //TODO fix it return { - value: dateToISO(lastMonday), //TODO cast as maybe smthg else + value: dateToISO(lastMonday), text: `Semaine du ${lastMonday.toLocaleDateString("fr-FR", dateOptions)}`, }; }) @@ -253,7 +252,7 @@ const nextWeeks = computed((): Weeks[] => Array.from(Array(52).keys()).map((w) => { const nextMonday = getMonday(w + 1); return { - value: dateToISO(nextMonday), //TODO cast as maybe smthg else + value: dateToISO(nextMonday), text: `Semaine du ${nextMonday.toLocaleDateString("fr-FR", dateOptions)}`, }; }) From 3bee18b0fa8da6183600d187893567181b873ed6 Mon Sep 17 00:00:00 2001 From: nobohan Date: Thu, 13 Jun 2024 14:00:25 +0200 Subject: [PATCH 03/19] #271 Account for acp closing date inn action filters (export) --- .changes/unreleased/Fixed-20240613-135945.yaml | 5 +++++ .../AccompanyingPeriodWorkEndDateBetweenDateFilter.php | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 .changes/unreleased/Fixed-20240613-135945.yaml diff --git a/.changes/unreleased/Fixed-20240613-135945.yaml b/.changes/unreleased/Fixed-20240613-135945.yaml new file mode 100644 index 000000000..38028a735 --- /dev/null +++ b/.changes/unreleased/Fixed-20240613-135945.yaml @@ -0,0 +1,5 @@ +kind: Fixed +body: Take into account the acp closing date in the acp works date filter +time: 2024-06-13T13:59:45.561891547+02:00 +custom: + Issue: "271" diff --git a/src/Bundle/ChillPersonBundle/Export/Filter/SocialWorkFilters/AccompanyingPeriodWorkEndDateBetweenDateFilter.php b/src/Bundle/ChillPersonBundle/Export/Filter/SocialWorkFilters/AccompanyingPeriodWorkEndDateBetweenDateFilter.php index 92258ccf9..38ca39320 100644 --- a/src/Bundle/ChillPersonBundle/Export/Filter/SocialWorkFilters/AccompanyingPeriodWorkEndDateBetweenDateFilter.php +++ b/src/Bundle/ChillPersonBundle/Export/Filter/SocialWorkFilters/AccompanyingPeriodWorkEndDateBetweenDateFilter.php @@ -86,11 +86,11 @@ final readonly class AccompanyingPeriodWorkEndDateBetweenDateFilter implements F }; $end = match ($data['keep_null']) { true => $qb->expr()->orX( - $qb->expr()->gt('acpw.endDate', ':'.$as), + $qb->expr()->gt('COALESCE(acp.closingDate, acpw.endDate)', ':'.$as), $qb->expr()->isNull('acpw.endDate') ), false => $qb->expr()->andX( - $qb->expr()->gt('acpw.endDate', ':'.$as), + $qb->expr()->gt('COALESCE(acp.closingDate, acpw.endDate)', ':'.$as), $qb->expr()->isNotNull('acpw.endDate') ), default => throw new \LogicException('This value is not supported'), From 0573f567828413d88a33d98f276e767a473e20e4 Mon Sep 17 00:00:00 2001 From: nobohan Date: Wed, 3 Jul 2024 11:35:33 +0200 Subject: [PATCH 04/19] copy week in my calendar - improve layout --- .../public/vuejs/MyCalendarRange/App2.vue | 32 +++++++++---------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/MyCalendarRange/App2.vue b/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/MyCalendarRange/App2.vue index a2afd8fb0..e690f9524 100644 --- a/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/MyCalendarRange/App2.vue +++ b/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/MyCalendarRange/App2.vue @@ -63,7 +63,7 @@ -
+
@@ -105,38 +105,36 @@
-
+
-
-
+
+
{{ $t("copy_range_from_to") }}
-
+
-
-