fix modal afrer refactoring

This commit is contained in:
Dobromir Popov
2024-06-28 20:34:14 +03:00
parent ca92c07d4d
commit 5dba87f3dd
3 changed files with 43 additions and 25 deletions

View File

@ -1,16 +1,22 @@
//Refactor ToDo: show the whole month instead of just the current week by showing the shift start time in front of the rows, and show all shifts in the month from the first to the last week in the cell where we show one shift now
function PublisherShiftsModal({ publisher, shifts, onClose }) {
const monthInfo = common.getMonthDatesInfo(new Date(value));
import React, { useEffect } from 'react';
import Link from 'next/link';
import common from 'src/helpers/common';
const PublisherShiftsModal = ({ publisher, shifts, onClose, date }) => {
//Refactor ToDo: show the whole month instead of just the current week by showing the shift start time in front of the rows, and show all shifts in the month from the first to the last week in the cell where we show one shift now
const monthInfo = common.getMonthDatesInfo(new Date(date));
const monthShifts = shifts.filter(shift => {
const shiftDate = new Date(shift.startTime);
return shiftDate > monthInfo.firstDay && shiftDate < monthInfo.lastDay;
});
const weekShifts = monthShifts.filter(shift => {
const shiftDate = new Date(shift.startTime);
return common.getStartOfWeek(value) <= shiftDate && shiftDate <= common.getEndOfWeek(value);
return common.getStartOfWeek(date) <= shiftDate && shiftDate <= common.getEndOfWeek(date);
});
const dayShifts = weekShifts.map(shift => {
const isAvailable = publisher.availabilities?.some(avail =>
const isAvailable = publisher?.availabilities?.some(avail =>
avail.startTime <= shift.startTime && avail.endTime >= shift.endTime
);
let color = isAvailable ? getColorForShift(shift) : 'bg-gray-300';
@ -113,12 +119,12 @@ function PublisherShiftsModal({ publisher, shifts, onClose }) {
&times;
</button>
{/* <Link href={`/cart/publishers/edit/${modalPub.id}`}
{/* <Link href={`/cart/publishers/edit/${publisher.id}`}
className="mt-2 bg-blue-500 text-white p-1 rounded hover:bg-blue-600 active:bg-blue-700 focus:outline-none">
<i className="fas fa-edit" />
</Link> */}
{/* Edit button in the top right corner, next to the close button */}
<Link href={`/cart/publishers/edit/${modalPub.id}`} className="absolute top-3 right-12 p-2 bg-blue-500 text-white rounded-full hover:bg-blue-600 active:bg-blue-700 focus:outline-none">
<Link href={`/cart/publishers/edit/${publisher.id}`} className="absolute top-3 right-12 p-2 bg-blue-500 text-white rounded-full hover:bg-blue-600 active:bg-blue-700 focus:outline-none">
<i className="fas fa-edit" />
</Link>
@ -126,3 +132,17 @@ function PublisherShiftsModal({ publisher, shifts, onClose }) {
</div >
);
}
function getColorForShift(shift) {
const assignedCount = shift.assignedCount || 0; // Assuming each shift has an assignedCount property
switch (assignedCount) {
case 0: return 'bg-blue-300';
case 1: return 'bg-green-300';
case 2: return 'bg-yellow-300';
case 3: return 'bg-orange-300';
case 4: return 'bg-red-200';
default: return 'bg-gray-300';
}
}
export default PublisherShiftsModal;

View File

@ -93,7 +93,10 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
const shifts = await prisma.shift.findMany({
where: {
isActive: true,
isPublished: true,
OR: [
{ isPublished: true },
{ user: { role: 'admin' } } // Todo: example. fix this
],
startTime: {
gte: fromDate,
//lt: toDate,

View File

@ -821,8 +821,7 @@ export default function CalendarPage({ initialEvents, initialShifts }) {
className={`flex justify-between items-center p-4 sm:py-2 rounded-lg shadow-sm mb-2
${bgAndBorderColorClass} ${selectedBorderClass} ${activeOpacityClass}
${pub.currentMonthAssignments === pub.desiredShiftsPerMonth ? 'text-gray-400' : pub.currentMonthAssignments > pub.desiredShiftsPerMonth ? 'text-orange-300' : 'text-gray-800'}`}
onDoubleClick={(handlePublisherModalOpen.bind(this, pub))}
onClick={handleSelectedPublisher.bind(this, pub)}
onDoubleClick={() => handlePublisherModalOpen(pub)}
>
<span className={`${pub.isAvailableForShift ? 'font-bold' : 'font-medium'} `}>
{pub.firstName} {pub.lastName}
@ -838,11 +837,10 @@ export default function CalendarPage({ initialEvents, initialShifts }) {
<button tooltip="желани участия на месец" title="желани участия" className={`badge py-1 px-2 rounded-md text-xs ${pub.desiredShiftsPerMonth ? 'bg-purple-500 text-white' : 'bg-purple-200 text-gray-400'}`}>{pub.desiredShiftsPerMonth || 0}</button>
<button tooltip="push" title="push" className={`badge py-1 px-2 rounded-md text-xs bg-red-100`}
onClick={async () => {
if (selectedPublisher && selectedShiftId)
addAssignment(selectedPublisher, selectedShiftId);
handleSelectedPublisher(pub);
addAssignment(pub, selectedShiftId);
}}
>+</button>
</div>
</li>
);
@ -881,24 +879,21 @@ export default function CalendarPage({ initialEvents, initialShifts }) {
<div>
{/* <CustomCalendar date={value} shifts={shifts} /> */}
</div>
{isModalOpen && <PublisherShiftsModal publisher={modalPub} shifts={allShifts} onClose={() => setIsModalOpen(false)} />}
{isModalOpen && (
<PublisherShiftsModal
publisher={modalPub}
shifts={allShifts}
onClose={() => setIsModalOpen(false)}
date={value}
/>
)}
</ProtectedRoute >
</Layout >
</>
);
function getColorForShift(shift) {
const assignedCount = shift.assignedCount || 0; // Assuming each shift has an assignedCount property
switch (assignedCount) {
case 0: return 'bg-blue-300';
case 1: return 'bg-green-300';
case 2: return 'bg-yellow-300';
case 3: return 'bg-orange-300';
case 4: return 'bg-red-200';
default: return 'bg-gray-300';
}
}
}
import axiosServer from '../../../src/axiosServer';