From cd29e5313214b67175cda8af2c5783ddfc960721 Mon Sep 17 00:00:00 2001 From: Lixian Zhou Date: Thu, 5 Feb 2026 20:35:53 -0500 Subject: [PATCH] adjust calendar height --- app/.DS_Store | Bin 20484 -> 20484 bytes client/.DS_Store | Bin 14340 -> 14340 bytes .../center-calendar/CenterCalendar.js | 160 +++++++++--------- .../src/components/customers/CustomersList.js | 6 +- .../dashboard/DashboardCustomersList.js | 17 +- client/src/shared/components/Export.js | 12 +- 6 files changed, 109 insertions(+), 86 deletions(-) diff --git a/app/.DS_Store b/app/.DS_Store index 61eaee2197d374825b57991c1eec0c1587882360..6dbe7dc914c4d4a7b38417b30f62b95ee671b5fc 100644 GIT binary patch delta 613 zcmZ|LOGuPq6vpxQ|03fIPR{3Cbu2H4V`^o_m>Ff}Xlf2wsbxYJFC)z&tr;PTC@X8z z4SB($TFfS*1iL79TM5xZh`_9n3TY*D*%TJl!oFrEaMRg5Jm+iWRILk#YbA@YM=LW;v;U4!HXM!nS@tPSvR`7|>%*jM)lqPAF zxzZ!^3M-Z0RYFp`w@v*-_y$C#f0 delta 634 zcmaLTNl27&7{~GF`_F79C+F319A`!ut!$CfQ54kDB&D2Ga@W*L%b3%mp_1vvBBRZq zdaGkj8(u;rE$U#=a_Hj05FuL+Qk|m64o2IX3LS!;%a`Br`Sb+o2{O3awlZnQfqj9t zcCU95wIF0+=pvJOahPR^tE#%D)>2m+*xAxt5$N*k4Yp4GT$DN6`@0~uEtFEnSd#itIN3*|GduB3?M`{t)5}zJtcdIg=o^8+S z))14#$qLDoJgJmMX^|t+D}6F7BXVCxWkO!dlzfyK`6l1x2Z}JFh{iz-2`ptfiKMZP z_2l5AoC>O_rk-8+*-aDsIYndBr6LlLPaXKN>(Y#t5Q|A%2&mzOqI{Qub8XU&v!nmQZJ28wHEre6j?I<;fwpr z_dMLHMMT=7?9q<+KZ=<-8}+k^HTr2s5lSz3iA7ol)2sIQnJgg#_baL55Aw?8ZV%XJEXZSVD`UTj-UfK=A zL$iiQImU5L7?S6?U^ref9IqIT*SWy}?m=!b#4sZ~;31EA%o9eL;0;rHu)s59a{dY( J3X7jf`3*)MmKOj3 diff --git a/client/.DS_Store b/client/.DS_Store index 98da61bba52e3ce8b5c7fc456eaaa16626b92930..1e4f33913fb4c0b8910c7ef57e898bd680d024d3 100644 GIT binary patch delta 834 zcmdteTS${}7zXh7`ERlBYajN_o!tS~)OoltONdpj)kbQLHm03~4zs>!kW)6z4i`aq z6)l24XoVL+2MWQ2X+{wxL>E>BC4m)KbQ6|PK}2<7pKKR)*LCmB!+Z1cKEM9%{_fFP z&GPc<+IoK=)YuZ`Up$VSLC|P(I>BK_1y30*I$PWJ9XqAn{42BbA!i4_@`Mjex1@UoR3tR|bSJ##pbR-%0=B`pZkD`Z1)#KcRz4i+=<2Cx5= zH@J%OBan+$QQ3`86N~Mb+5l zcJl_aCHilOQ}mK%=snG=hzly82pc>qTrK?AsKSL1#uh{o;{)!hnk)t|h>N&{Aywx( zZr~<{F@|wW;12HM9vi9MNwooUD%+zeh}qVK~X^v+1c73(R=f}JP*9QpC_BlChxqp)d~Cb zlI41J-5THemd)EbdU^{E&FOM4Rn?FYjU_V1pb<;uor-NizCx+;verzvm*Fv6wFl;x z>UB0JhN;(lXbyNhq4dx|Dz;-Z5ld;aic&fhwEP2_qm=Xvq%+&2MrJrw4tEC3rrH*B z%vC%7Ud)NF;+OaXNNlJq#({>H8hkX+NE4grBtRE^>?K5){lqv#oFgO{$eOStuf6L>MA2qVe?6WF$Tu5kgKDTdL4I16|$fhWt7ABFx;%2~VrK z)ovAL*F?eNT~VdC>FtU(qiCkTvj3o;X135yhlSWpkbd^C&jKxC4l;znVKR(ZsK*#% zf-I*v%^3^Vw1A7alU(H**O}%vcgb^)hdkmjPk3q-@RHZObxauuKQvOY)t^6Ic^ O&bu%DXV00k{`X(J%&Ln3 diff --git a/client/src/components/center-calendar/CenterCalendar.js b/client/src/components/center-calendar/CenterCalendar.js index 6e2f898..1d0ea14 100644 --- a/client/src/components/center-calendar/CenterCalendar.js +++ b/client/src/components/center-calendar/CenterCalendar.js @@ -458,8 +458,8 @@ const EventsCalendar = () => { } }; - const calendarView =
-
+ const calendarView =
+
{calendar && } {/* Dynamic Legend */}
@@ -483,85 +483,87 @@ const EventsCalendar = () => {
-
-
+
+
List
- {(!groupedEvents || groupedEvents.size === 0) && ( -
- No events for this period -
- )} - { - Array.from(groupedEvents?.keys())?.map((key) => { - return
-
{key}
- { - groupedEvents.get(key).map(eventItem =>
currentTab === 'medicalCalendar' && goToView(eventItem.id)} - style={{ cursor: currentTab === 'medicalCalendar' ? 'pointer' : 'default', padding: '8px 12px', borderRadius: '4px' }} - > - {/* Medical Events */} - {currentTab === 'medicalCalendar' && ( - <> -
- {formatFullName(eventItem.customer)} - {moment(eventItem?.start_time).format('HH:mm')} - {moment(eventItem?.stop_time || eventItem?.start_time).format('HH:mm')} -
-
Provider: {eventItem?.doctor || '-'}
- - )} - - {/* Activities */} - {currentTab === 'activitiesCalendar' && ( - <> -
- {eventItem.title} - {moment(eventItem?.start_time).format('HH:mm')} -
-
Location: {eventItem?.event_location || '-'}
- - )} - - {/* Attendance Notes */} - {currentTab === 'incidentsCalendar' && ( - <> -
- {eventItem?.target_name || eventItem.title} - {moment(eventItem?.start_time).format('MM/DD')} -
-
Reason: {eventItem?.description || '-'}
- - )} - - {/* Meal Plan */} - {currentTab === 'mealPlanCalendar' && ( - <> -
- {eventItem.title} - {eventItem?.meal_type || '-'} -
-
Ingredients: {eventItem?.ingredients || '-'}
- - )} - - {/* Important Dates / Reminders */} - {currentTab === 'reminderDatesCalendar' && ( - <> -
- {eventItem.title} - {moment(eventItem?.start_time).format('MM/DD')} -
-
{eventItem?.target_type === 'vehicle' ? 'Vehicle' : 'Person'}: {eventItem?.target_name || '-'}
- {eventItem?.event_prediction_date &&
Deadline: {moment(eventItem?.event_prediction_date).format('MM/DD/YYYY')}
} - - )} -
) - } +
+ {(!groupedEvents || groupedEvents.size === 0) && ( +
+ No events for this period
- }) - } + )} + { + Array.from(groupedEvents?.keys())?.map((key) => { + return
+
{key}
+ { + groupedEvents.get(key).map(eventItem =>
currentTab === 'medicalCalendar' && goToView(eventItem.id)} + style={{ cursor: currentTab === 'medicalCalendar' ? 'pointer' : 'default', padding: '8px 12px', borderRadius: '4px' }} + > + {/* Medical Events */} + {currentTab === 'medicalCalendar' && ( + <> +
+ {formatFullName(eventItem.customer)} + {moment(eventItem?.start_time).format('HH:mm')} - {moment(eventItem?.stop_time || eventItem?.start_time).format('HH:mm')} +
+
Provider: {eventItem?.doctor || '-'}
+ + )} + + {/* Activities */} + {currentTab === 'activitiesCalendar' && ( + <> +
+ {eventItem.title} + {moment(eventItem?.start_time).format('HH:mm')} +
+
Location: {eventItem?.event_location || '-'}
+ + )} + + {/* Attendance Notes */} + {currentTab === 'incidentsCalendar' && ( + <> +
+ {eventItem?.target_name || eventItem.title} + {moment(eventItem?.start_time).format('MM/DD')} +
+
Reason: {eventItem?.description || '-'}
+ + )} + + {/* Meal Plan */} + {currentTab === 'mealPlanCalendar' && ( + <> +
+ {eventItem.title} + {eventItem?.meal_type || '-'} +
+
Ingredients: {eventItem?.ingredients || '-'}
+ + )} + + {/* Important Dates / Reminders */} + {currentTab === 'reminderDatesCalendar' && ( + <> +
+ {eventItem.title} + {moment(eventItem?.start_time).format('MM/DD')} +
+
{eventItem?.target_type === 'vehicle' ? 'Vehicle' : 'Person'}: {eventItem?.target_name || '-'}
+ {eventItem?.event_prediction_date &&
Deadline: {moment(eventItem?.event_prediction_date).format('MM/DD/YYYY')}
} + + )} +
) + } +
+ }) + } +
diff --git a/client/src/components/customers/CustomersList.js b/client/src/components/customers/CustomersList.js index 98cc15d..48f33d8 100644 --- a/client/src/components/customers/CustomersList.js +++ b/client/src/components/customers/CustomersList.js @@ -50,7 +50,7 @@ const CustomersList = () => { navigate(`/customers`); } - const additionalButtons = ( + const additionalButtons = ({ showExportDropdown, onExportToggle }) => ( <>
diff --git a/client/src/shared/components/Export.js b/client/src/shared/components/Export.js index 5bd62ca..0985595 100644 --- a/client/src/shared/components/Export.js +++ b/client/src/shared/components/Export.js @@ -2,12 +2,16 @@ import React, { useState } from "react"; import { Dropdown } from "react-bootstrap"; import { Download } from "react-bootstrap-icons"; -const Export = ({ columns, data, filename = "export", customActions = [] }) => { - const [showExportDropdown, setShowExportDropdown] = useState(false); +const Export = ({ columns, data, filename = "export", customActions = [], show, onToggle }) => { + const [internalShow, setInternalShow] = useState(false); const [exportColumns, setExportColumns] = useState( columns.map(col => ({ ...col, show: true })) ); + // Use external control if provided, otherwise use internal state + const showExportDropdown = show !== undefined ? show : internalShow; + const handleToggle = onToggle || ((isOpen) => setInternalShow(isOpen)); + const handleColumnToggle = (columnKey) => { const updatedColumns = exportColumns.map(col => col.key === columnKey ? { ...col, show: !col.show } : col @@ -17,7 +21,7 @@ const Export = ({ columns, data, filename = "export", customActions = [] }) => { const handleCancel = () => { setExportColumns(columns.map(col => ({ ...col, show: true }))); - setShowExportDropdown(false); + handleToggle(false); }; const generateCSV = () => { @@ -179,7 +183,7 @@ const Export = ({ columns, data, filename = "export", customActions = [] }) => { id="export-dropdown" className="me-2" show={showExportDropdown} - onToggle={() => setShowExportDropdown(!showExportDropdown)} + onToggle={handleToggle} autoClose={false} >