This commit is contained in:
Louis Mazin 2026-09-20 02:51:24 +02:00
parent 7864fe058e
commit 4ddd003ef4

View File

@ -30,7 +30,9 @@ const MIN_SCHEDULE_HEIGHT = 180;
const MOBILE_TIME_COLUMN_WIDTH = 64; const MOBILE_TIME_COLUMN_WIDTH = 64;
const MOBILE_USER_COLUMN_WIDTH = 40; const MOBILE_USER_COLUMN_WIDTH = 40;
const MOBILE_DEFAULT_CONTENT_WIDTH = 236; const MOBILE_DEFAULT_CONTENT_WIDTH = 236;
const MOBILE_HOUR_HEIGHT = 80;
const MOBILE_MIN_HOUR_HEIGHT = 56;
const MOBILE_MAX_HOUR_HEIGHT = 80;
const USER_COLORS = [ const USER_COLORS = [
'#c56a3d', '#c56a3d',
@ -429,10 +431,8 @@ const WeeklySummaryPage = ({ userId }) => {
); );
/* /*
* Sur mobile, la hauteur du conteneur est volontairement * Sur mobile, la hauteur du planning est calculée
* limitée afin que le contenu interne puisse défiler. * directement à partir de la hauteur disponible.
*
* On ne calcule donc pas availableScheduleHeight ici.
*/ */
if (window.innerWidth < 768) { if (window.innerWidth < 768) {
return; return;
@ -1022,20 +1022,51 @@ const WeeklySummaryPage = ({ userId }) => {
* Hauteur du planning * Hauteur du planning
* ------------------------------------------------------------ * ------------------------------------------------------------
* *
* Desktop :
* la hauteur calculée doit tenir dans la Card.
*
* Mobile : * Mobile :
* chaque heure possède une hauteur fixe confortable. * - on part de la hauteur réelle de la fenêtre visible ;
* Le planning est donc volontairement plus haut que * - on retire la hauteur du header ;
* sa fenêtre visible et devient réellement scrollable. * - on garde une hauteur minimale par heure ;
* - on limite la hauteur maximale afin d'éviter
* des cases inutilement grandes ;
* - si le planning dépasse la fenêtre, le scroll
* vertical reste disponible.
*
* Desktop :
* - la hauteur disponible dans la Card est conservée.
*/ */
const mobileViewportHeight =
typeof window !== 'undefined'
? window.innerHeight * 0.6
: 500;
const mobileAvailableScheduleHeight =
Math.max(
mobileViewportHeight -
SCHEDULE_HEADER_HEIGHT,
0,
);
const calculatedMobileHourHeight =
hourCount > 0
? mobileAvailableScheduleHeight /
hourCount
: MOBILE_MIN_HOUR_HEIGHT;
const mobileHourHeight =
Math.min(
MOBILE_MAX_HOUR_HEIGHT,
Math.max(
MOBILE_MIN_HOUR_HEIGHT,
calculatedMobileHourHeight,
),
);
const scheduleHeight = isMobile const scheduleHeight = isMobile
? Math.max( ? Math.max(
MIN_SCHEDULE_HEIGHT, MIN_SCHEDULE_HEIGHT,
hourCount * hourCount *
MOBILE_HOUR_HEIGHT, mobileHourHeight,
) )
: Math.max( : Math.max(
MIN_SCHEDULE_HEIGHT, MIN_SCHEDULE_HEIGHT,
@ -1046,8 +1077,9 @@ const WeeklySummaryPage = ({ userId }) => {
SCHEDULE_HEADER_HEIGHT + SCHEDULE_HEADER_HEIGHT +
scheduleHeight; scheduleHeight;
const hourHeight = const hourHeight = isMobile
hourCount > 0 ? mobileHourHeight
: hourCount > 0
? scheduleHeight / hourCount ? scheduleHeight / hourCount
: 0; : 0;