Skip to content

Commit

Permalink
Merge pull request #21 from PCS-Poli-USP/develop
Browse files Browse the repository at this point in the history
Develop
  • Loading branch information
gdvcamargo authored Apr 16, 2024
2 parents 9749826 + 6eadbb0 commit fa63b59
Show file tree
Hide file tree
Showing 35 changed files with 2,024 additions and 185 deletions.
6 changes: 3 additions & 3 deletions src/components/allocation/automaticAllocation.accordion.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import Event from 'models/event.model';
import { useEffect, useState } from 'react';
import { weekDaysFormatter } from 'utils/classes/classes.formatter';
import ClassroomsService from 'services/classrooms.service';
import { sortClassrooms, sortEventsByClassroomAndTime } from 'utils/sorter';
import { sortClassrooms, sortEventsBySubjectAndClass } from 'utils/sorter';

interface AutomaticAllocationAccordionProps {
onEdit: (event: Event) => void;
Expand Down Expand Up @@ -50,8 +50,8 @@ export default function AutomaticAllocationAccordion({
});
}

allocatedEvents.sort(sortEventsByClassroomAndTime);
unallocatedEvents.sort(sortEventsByClassroomAndTime);
allocatedEvents.sort(sortEventsBySubjectAndClass);
unallocatedEvents.sort(sortEventsBySubjectAndClass);

return (
<Accordion
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@ function ClassroomsTables(props: any) {
toastSuccess(
`Alocação de ${subjectCode} - ${classCode} removida com sucesso!`,
);
window.location.reload();
})
.catch((error) => {
toastError(
Expand Down
70 changes: 35 additions & 35 deletions src/components/allocation/editEvent.modal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,14 @@ import {
ModalFooter,
ModalHeader,
ModalOverlay,
Select,
Spinner,
Stack,
Text,
useCheckboxGroup,
useDisclosure,
} from '@chakra-ui/react';
import { Select as CSelect } from '@chakra-ui/react';
import Select from 'react-select';
import Dialog from 'components/common/dialog.component';
import { appContext } from 'context/AppContext';
import { Building } from 'models/building.model';
Expand All @@ -29,6 +30,11 @@ import BuildingsService from 'services/buildings.service';
import ClassroomsService from 'services/classrooms.service';
import { Capitalize } from 'utils/formatters';

interface ClassroomOption {
value: string;
label: string;
}

interface EditEventModalProps {
isOpen: boolean;
onClose: () => void;
Expand All @@ -53,7 +59,7 @@ export default function EditEventModal({
onOpen: onOpenDialog,
onClose: onCloseDialog,
} = useDisclosure();
const { dbUser } = useContext(appContext);
const { loggedUser } = useContext(appContext);
const [availableClassrooms, setAvailableClassrooms] = useState<
AvailableClassroom[]
>([]);
Expand Down Expand Up @@ -82,7 +88,7 @@ export default function EditEventModal({
useEffect(() => {
getBuildingsList();
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [dbUser]);
}, [loggedUser]);

useEffect(() => {
getAvailableClassrooms();
Expand All @@ -92,10 +98,12 @@ export default function EditEventModal({
useEffect(() => {
resetClassroomsDropdown();
getAvailableClassrooms();
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [checkedEvents]);

useEffect(() => {
setCheckedEvents(classEvents.map((it) => it.id ?? ''));
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [classEvents]);

async function getAvailableClassrooms() {
Expand Down Expand Up @@ -124,21 +132,23 @@ export default function EditEventModal({
value.sort((a, b) => {
if (a.conflicted && !b.conflicted) return 1;
if (!a.conflicted && b.conflicted) return -1;
if (a.classroom_name < b.classroom_name) return -1;
if (a.classroom_name > b.classroom_name) return 1;
return 0;
}),
);
}

function getBuildingsList() {
if (dbUser) {
if (dbUser.isAdmin) {
if (loggedUser) {
if (loggedUser.isAdmin) {
setBuildingsLoading(true);
buildingsService.list().then((response) => {
setBuildingsList(response.data);
setBuildingsLoading(false);
});
} else {
setBuildingsList(dbUser.buildings);
setBuildingsList(loggedUser.buildings);
}
}
}
Expand Down Expand Up @@ -241,7 +251,7 @@ export default function EditEventModal({
{buildingsList.length !== 1 && (
<>
<FormLabel mt={4}>Prédio</FormLabel>
<Select
<CSelect
placeholder='Selecionar prédio'
onChange={(event) => {
setSelectedBuilding(
Expand All @@ -256,7 +266,7 @@ export default function EditEventModal({
{it.name}
</option>
))}
</Select>
</CSelect>
</>
)}
<FormLabel mt={4}>Salas disponíveis</FormLabel>
Expand All @@ -267,38 +277,28 @@ export default function EditEventModal({
</Alert>
)}
<Select
icon={classroomsLoading ? <Spinner size='sm' /> : undefined}
disabled={
classroomsLoading ||
!selectedBuilding ||
availableClassrooms.length < 1
}
placeholder='Sala - Capacidade'
isInvalid={
selectedClassroom &&
classData?.subscribers > selectedClassroom.capacity
}
value={selectedClassroom?.classroom_name}
onChange={(event) => {
placeholder={'Sala - Capacidade'}
isLoading={classroomsLoading}
options={availableClassrooms.map((it) =>
it.conflicted
? {
value: it.classroom_name,
label: `⚠️ ${it.classroom_name} - ${it.capacity}`,
}
: {
value: it.classroom_name,
label: `${it.classroom_name} - ${it.capacity}`,
},
)}
onChange={(selected) => {
const selectedClassroom = selected as ClassroomOption;
setSelectedClassroom(
availableClassrooms.find(
(it) => event.target.value === it.classroom_name,
(it) => selectedClassroom.value === it.classroom_name,
),
);
}}
>
{availableClassrooms.map((it) =>
it.conflicted ? (
<option key={it.classroom_name} value={it.classroom_name}>
⚠️ {it.classroom_name} - {it.capacity}
</option>
) : (
<option key={it.classroom_name} value={it.classroom_name}>
{it.classroom_name} - {it.capacity}
</option>
),
)}
</Select>
/>
</FormControl>

<Dialog
Expand Down
2 changes: 1 addition & 1 deletion src/components/classes/edit.modal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -416,7 +416,7 @@ export default function EditModal({
value={subjectCode}
errorBorderColor='crimson'
onChange={(event) => {
setSubjectCode(event.target.value);
setSubjectCode(event.target.value.toUpperCase());
if (event.target.value) setHasSubjectCodeError(false);
}}
/>
Expand Down
18 changes: 8 additions & 10 deletions src/components/classes/jupiterCrawler.popover.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ export default function JupiterCrawlerPopover({
subjects = [],
onSave,
}: JupiterCrawlerPopoverPrpos) {
const { dbUser } = useContext(appContext);
const { loggedUser } = useContext(appContext);

const buildingsService = new BuildingsService();

Expand All @@ -61,18 +61,16 @@ export default function JupiterCrawlerPopover({

useEffect(() => {
getBuildingsList();
}, [dbUser]);
}, [loggedUser]);

function handleAddClick() {
if (subjectInput.length > 6 && !subjectsList.includes(subjectInput)) {
if (subjectInput.length === 7 && !subjectsList.includes(subjectInput)) {
setSubjectsList((prev) => [...prev, subjectInput.replace(' ', '')]);
setSubjectInput('');
}
if (multSubjectInput.length > 6) {
const formatedInput = multSubjectInput.replace(' ', '');
const subjects = formatedInput
.split(',')
.filter((value) => value.length === 7);
const formatedInput = multSubjectInput.replaceAll(' ', '');
const subjects = formatedInput.split(',').filter((value) => (value.length === 7 && !subjectsList.includes(value)));
setSubjectsList((prev) => prev.concat(subjects));
setMultSubjectInput('');
}
Expand All @@ -91,15 +89,15 @@ export default function JupiterCrawlerPopover({
}

function getBuildingsList() {
if (dbUser) {
if (dbUser.isAdmin) {
if (loggedUser) {
if (loggedUser.isAdmin) {
setBuildingsLoading(true);
buildingsService.list().then((response) => {
setBuildingsList(response.data);
setBuildingsLoading(false);
});
} else {
setBuildingsList(dbUser.buildings);
setBuildingsList(loggedUser.buildings);
}
}
}
Expand Down
Loading

0 comments on commit fa63b59

Please sign in to comment.