Skip to content
Merged

merge #241

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions src/components/cards/FacultySelector.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -648,6 +648,7 @@ export default function FacultySelector({
renderOption={prettifyDomain}
/>
<ComboBox
key={`subject-${selectedDomain}`}
label="Subject"
value={selectedSubject}
options={subjects}
Expand All @@ -656,6 +657,7 @@ export default function FacultySelector({
{getCourseType(selectedSubject.split(' - ')[0]) === 'P' &&
!selectedSubject.split(' - ')[0].startsWith('BSTS') ? (
<ComboBox
key={`lab-${selectedDomain}-${selectedSubject}`}
label="Slot"
value={selectedLabShift}
onChange={e => {
Expand All @@ -671,6 +673,7 @@ export default function FacultySelector({
/>
) : (
<ComboBox
key={`slot-${selectedDomain}-${selectedSubject}`}
label="Slot"
value={selectedSlot}
options={[...slots].sort((a, b) => a.localeCompare(b))}
Expand Down
10 changes: 8 additions & 2 deletions src/components/cards/ViewTimeTable.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -313,12 +313,18 @@ export default function ViewTimeTable() {
const selectedData = allTimetables[selectedIndex] || [];
const visibleIndexes = getVisibleIndexes(timetableNumber, timetableCount);

console.log('selectedData', selectedData);
const convertedData = selectedData.map(
(item: { courseCode?: string; slotName?: string; facultyName?: string; venue?: string }) => ({
(item: {
courseCode?: string;
courseName?: string;
slotName?: string;
facultyName?: string;
}) => ({
code: item.courseCode || '00000000',
subject: item.courseName || '',
slot: item.slotName || 'NIL',
name: item.facultyName || 'Unknown',
venue: item.venue || '',
})
);

Expand Down
1 change: 1 addition & 0 deletions src/components/ui/ComboBox.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ export default function ComboBox({ label, value, options, onChange, renderOption

useEffect(() => {
if (value) setInputValue(renderOption ? renderOption(value) : value);
else setInputValue('');
}, [value, renderOption]);

return (
Expand Down
35 changes: 12 additions & 23 deletions src/components/ui/CompoundTable.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@ type dataProps = {
code: string;
slot: string;
name: string;
venue?: string;
subject?: string;
};

type groupedDataProps = {
[name: string]: { code: string; slot: string; venue?: string }[];
[name: string]: { code: string; slot: string }[];
};

type CompoundTableProps = {
Expand All @@ -24,20 +24,24 @@ const sortData = (data: dataProps[]): dataProps[] => {
};

const getGroupedData = (data: dataProps[]): groupedDataProps => {
return sortData(data).reduce((acc, { code, slot, name, venue }) => {
return sortData(data).reduce((acc, { code, slot, name }) => {
const codePrefix = code.slice(0, -1);
const groupKey = `${name}__${codePrefix}`;
(acc[groupKey] ||= []).push({ code, slot, venue });
(acc[groupKey] ||= []).push({ code, slot });
return acc;
}, {} as groupedDataProps);
};

export default function CompoundTable({ data, large }: CompoundTableProps) {
const groupedData = getGroupedData(data);

const tfs = data.map(d => {
return { slotName: d.slot, showName: true };
});
const tfs = data.map(d => ({
slotName: d.slot,
showName: true,
code: d.code,
subject: d.subject,
faculty: d.name,
}));

return (
<div className="flex flex-col lg:flex-row gap-4 m-2 text-black text-sm font-inter select-none lg:overflow-x-auto">
Expand Down Expand Up @@ -65,21 +69,6 @@ export default function CompoundTable({ data, large }: CompoundTableProps) {
>
{Object.entries(groupedData).map(([groupKey, entries], idx) => {
const displayName = groupKey.split('__')[0];
//console.log(displayName)
// let initials = "";
// const parts = displayName.split(" ");

// if (displayName.length > 12) {
// initials = parts[0];
// if (parts.length > 1) {
// initials += " " + parts[1].charAt(0);
// }
// initials += " " + parts[parts.length - 1].charAt(0);
// } else {
// initials = displayName;
// }
const initials =
displayName.length > 12 ? displayName.slice(0, 12) + '...' : displayName;
return (
<div key={idx} className="border-b-1 border-black last:border-b-0 pb-2">
<div className="space-y-1">
Expand All @@ -96,7 +85,7 @@ export default function CompoundTable({ data, large }: CompoundTableProps) {
<div className="truncate">{entry.slot.replace(/\+/g, '+\u200B')}</div>
</div>
<div className="w-[160px] shrink-0 break-words whitespace-normal text-right pr-4">
{i === 0 ? initials : ''}
{i === 0 ? displayName : ''}
</div>
</div>
))}
Expand Down
3 changes: 1 addition & 2 deletions src/components/ui/Navbar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -64,8 +64,7 @@ export default function Navbar({ page }: NavbarProps) {
)}
<div className="flex gap-4 mx-5 items-center">
<div className="rounded-xl bg-[#ffea79] text-black outline-2 outline-black px-6 py-2 text-sm font-medium">
Can&apos;t find faculty for your branch? Remaining Faculty lists will be updated by
tonight.
Can&apos;t find faculty for your branch? Remaining Faculty lists will be updated soon.
</div>
</div>

Expand Down
54 changes: 52 additions & 2 deletions src/components/ui/TimeTable.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,41 @@ import Image from 'next/image';
export type tableFacingSlot = {
slotName: string;
showName: boolean;
code?: string;
subject?: string;
faculty?: string;
};

type HoverSlot = slot & { code?: string; subject?: string; faculty?: string };

export default function TimeTable({ slotNames }: { slotNames: tableFacingSlot[] }) {
const slots: slot[] = slotNames
.map(slotNames => getSlot(slotNames.slotName, slotNames.showName))
const slots: HoverSlot[] = slotNames
.map(s =>
getSlot(s.slotName, s.showName).map(sl => ({
...sl,
code: s.code,
subject: s.subject,
faculty: s.faculty,
}))
)
.flat();
const [tip, setTip] = React.useState<{
title: string;
faculty?: string;
slotName: string;
color: string;
x: number;
y: number;
} | null>(null);
const showTip = (e: React.MouseEvent, s: HoverSlot) =>
setTip({
title: s.subject || s.code || s.slotName,
faculty: s.faculty,
slotName: s.slotName,
color: LAB_ROWS.includes(s.rowStart) ? '#96FFCA' : '#86d7FF',
x: e.clientX,
y: e.clientY,
});

const ROWS = 17;
const COLUMNS = 69;
Expand Down Expand Up @@ -176,6 +205,9 @@ export default function TimeTable({ slotNames }: { slotNames: tableFacingSlot[]
{slots.map((slot, i) => (
<div
key={`slot-${i}`}
onMouseEnter={e => showTip(e, slot)}
onMouseMove={e => showTip(e, slot)}
onMouseLeave={() => setTip(null)}
className={`border-black border-[0.5px] box-border flex items-center justify-center w-full h-full overflow-hidden ${
LAB_ROWS.includes(slot.rowStart) ? 'bg-[#96FFCA]' : 'bg-[#86d7FF]'
}`}
Expand All @@ -191,6 +223,24 @@ export default function TimeTable({ slotNames }: { slotNames: tableFacingSlot[]
</span>
</div>
))}

{tip && (
<div
className="fixed z-50 pointer-events-none bg-white text-black border-2 border-black rounded-xl shadow-[4px_4px_0px_0px_black] font-poppins max-w-[260px] overflow-hidden"
style={{ left: tip.x + 14, top: tip.y + 14 }}
>
<div
className="px-3 py-1 border-b-2 border-black text-xs font-bold"
style={{ backgroundColor: tip.color }}
>
{tip.slotName}
</div>
<div className="px-3 py-2">
<div className="font-semibold text-sm leading-snug">{tip.title}</div>
{tip.faculty && <div className="mt-1 text-xs text-gray-600">{tip.faculty}</div>}
</div>
</div>
)}
</div>
);
}
26 changes: 26 additions & 0 deletions src/data/SELECT_F/PCC_ECS.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
export const PCC_ECS = {
'BACSE105 - Data Structures and Algorithms': [
{ slot: 'D1+TD1', venue: 'TT201', faculty: 'HIMADRI LALA' },
{ slot: 'L49+L50', venue: 'TT247A', faculty: 'HIMADRI LALA' },
],
'BAEEE202 - Control Systems': [
{ slot: 'L37+L38', venue: 'TT045', faculty: 'MANIMOZHI M' },
{ slot: 'L55+L56', venue: 'TT045', faculty: 'GEETHA M' },
{ slot: 'L33+L34', venue: 'TT045', faculty: 'MANIMOZHI M' },
{ slot: 'L39+L40', venue: 'TT045', faculty: 'GEETHA M' },
{ slot: 'A1+TA1', venue: 'TT201', faculty: 'GEETHA M' },
{ slot: 'L5+L6', venue: 'TT045', faculty: 'DHANAMJAYULU C' },
{ slot: 'L7+L8', venue: 'TT045', faculty: 'DHANAMJAYULU C' },
],
'BAEEE206 - Electrical Machines': [
{ slot: 'B1+TB1', venue: 'TT204', faculty: 'BELWIN EDWARD J' },
{ slot: 'L53+L54', venue: 'TT035', faculty: 'BELWIN EDWARD J' },
{ slot: 'L43+L44', venue: 'TT035', faculty: 'BELWIN EDWARD J' },
{ slot: 'B2+TB2', venue: 'TT204', faculty: 'ANBARASAN P' },
{ slot: 'L31+L32', venue: 'TT035', faculty: 'MAGESHVARAN R' },
{ slot: 'L23+L24', venue: 'TT035', faculty: 'ANBARASAN P' },
{ slot: 'B1+TB1', venue: 'TT201', faculty: 'MAGESHVARAN R' },
{ slot: 'L45+L46', venue: 'TT035', faculty: 'MAGESHVARAN R' },
{ slot: 'L15+L16', venue: 'TT035', faculty: 'ANBARASAN P' },
],
};
123 changes: 123 additions & 0 deletions src/data/SELECT_F/UCC_ECS.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
export const UCC_ECS = {
'BACLE104 - Waste Management': [
{ slot: 'F2+TF2', venue: 'CDMM404', faculty: 'KAVITHA M.S' },
],
'BACLE105 - Disaster Mitigation and Management': [
{ slot: 'G2+TG2', venue: 'CDMM104', faculty: 'SURENDAR M' },
],
'BACLE106 - Urban Planning and Development': [
{ slot: 'G1+TG1', venue: 'CDMM405', faculty: 'MEENA T' },
],
'BAEEE291 - Innovative Design Project': [
{ slot: 'NIL', venue: 'NIL', faculty: 'ACADEMICS' },
],
'BAHUM106 - Micro Economics': [
{ slot: 'G1+TG1', venue: 'PRP425', faculty: 'NILAVATHY K' },
{ slot: 'G1+TG1', venue: 'TT621', faculty: 'SRIRAM G' },
{ slot: 'G2+TG2', venue: 'TT313', faculty: 'NILAVATHY K' },
{ slot: 'G2+TG2', venue: 'TT621', faculty: 'SAVITHA N' },
{ slot: 'G1+TG1', venue: 'SJT607', faculty: 'SAVITHA N' },
{ slot: 'C2+TC2', venue: 'SJT126', faculty: 'SALMAN HAIDER' },
{ slot: 'G1+TG1', venue: 'GDN107', faculty: 'SIVAKUMAR S' },
{ slot: 'G2+TG2', venue: 'GDN121', faculty: 'SIVAKUMAR S' },
{ slot: 'C2+TC2', venue: 'SJT617', faculty: 'SUMEETHA M' },
{ slot: 'G1+TG1', venue: 'PRP772', faculty: 'SALMAN HAIDER' },
{ slot: 'G2+TG2', venue: 'SJT324', faculty: 'SALMAN HAIDER' },
],
'BAHUM107 - Macro Economics': [
{ slot: 'C1+TC1', venue: 'PRP333', faculty: 'AQUIB PARVEZ' },
{ slot: 'C2+TC2', venue: 'PRP464', faculty: 'SHAHID HAMID RAINA' },
{ slot: 'G2+TG2', venue: 'PRP238A', faculty: 'AQUIB PARVEZ' },
{ slot: 'G1+TG1', venue: 'PRP426', faculty: 'AQUIB PARVEZ' },
{ slot: 'G1+TG1', venue: 'PRP464', faculty: 'ADIL AHMAD SHAH' },
],
'BAHUM109 - Principles of Sociology': [
{ slot: 'G2+TG2', venue: 'SJT602A', faculty: 'SREYA SEN' },
{ slot: 'C2+TC2', venue: 'TT621', faculty: 'KUBENDRAN A' },
{ slot: 'G1+TG1', venue: 'PRP465', faculty: 'BALAMURUGAN J' },
{ slot: 'C2+TC2', venue: 'SJT709', faculty: 'RAHUL SHUKLA' },
{ slot: 'C2+TC2', venue: 'SJT607', faculty: 'ABHIJIT DASGUPTA' },
],
'BAHUM110 - Sustainability and Society': [
{ slot: 'C2+TC2', venue: 'PRP772', faculty: 'RASHMI M' },
{ slot: 'G2+TG2', venue: 'TT204', faculty: 'RAJAMEENAKSHI J' },
{ slot: 'G2+TG2', venue: 'PRP575', faculty: 'RASHMI M' },
{ slot: 'G1+TG1', venue: 'PRP575', faculty: 'RASHMI M' },
{ slot: 'G1+TG1', venue: 'PRP378', faculty: 'SREYA SEN' },
{ slot: 'G2+TG2', venue: 'SJT222', faculty: 'RAHUL SHUKLA' },
{ slot: 'C1+TC1', venue: 'PRP378', faculty: 'SREYA SEN' },
{ slot: 'G1+TG1', venue: 'PRP569', faculty: 'RAHUL SHUKLA' },
],
'BAHUM111 - Introduction to Psychology': [
{ slot: 'C2+TC2', venue: 'TT204', faculty: 'TANU KUKREJA' },
{ slot: 'G1+TG1', venue: 'SJT324', faculty: 'JENEEFER JEBA RAJA SELVI N' },
{ slot: 'G2+TG2', venue: 'SJT617', faculty: 'TONY P JOSE' },
{ slot: 'G1+TG1', venue: 'PRP471', faculty: 'TONY P JOSE' },
{ slot: 'G1+TG1', venue: 'PRP568', faculty: 'MOHD OWAIS KHAN' },
{ slot: 'C2+TC2', venue: 'SJT619', faculty: 'MOHD OWAIS KHAN' },
],
'BAHUM112 - Psychology in Everyday Life': [
{ slot: 'C2+TC2', venue: 'SJT521', faculty: 'TONY P JOSE' },
{ slot: 'G2+TG2', venue: 'SMV121', faculty: 'BHUVANESWARI M' },
{ slot: 'G1+TG1', venue: 'GDNG07', faculty: 'BHUVANESWARI M' },
],
'BAHUM114 - Literature Through Films': [
{ slot: 'G2+TG2', venue: 'TT434', faculty: 'AJANTA SIRCAR' },
],
'BAHUM118 - Indian Heritage and Culture': [
{ slot: 'G1+TG1', venue: 'PRP371', faculty: 'RIZWAN AHMAD' },
{ slot: 'G2+TG2', venue: 'SJT627', faculty: 'RIZWAN AHMAD' },
{ slot: 'C2+TC2', venue: 'PRP371', faculty: 'RIZWAN AHMAD' },
{ slot: 'C2+TC2', venue: 'SMV217', faculty: 'BANGALORE MORARJI' },
],
'BAHUM119 - International Relations': [
{ slot: 'G2+TG2', venue: 'SMV219', faculty: 'BANGALORE MORARJI' },
{ slot: 'G1+TG1', venue: 'GDN122', faculty: 'BANGALORE MORARJI' },
{ slot: 'C1+TC1', venue: 'CDMM405', faculty: 'BANGALORE MORARJI' },
{ slot: 'C2+TC2', venue: 'SJT627', faculty: 'RAMNATH REGHUNADHAN' },
{ slot: 'G1+TG1', venue: 'PRP576', faculty: 'MULUGU S NEELOTPAL' },
{ slot: 'C2+TC2', venue: 'SMV218', faculty: 'MULUGU S NEELOTPAL' },
],
'BASTS101 - Qualitative and Quantitative Skills Practice I': [
{ slot: 'E1+TE1', venue: 'SMV116', faculty: 'TIME (APT)' },
{ slot: 'E2+TE2', venue: 'SMV101', faculty: 'TIME (APT)' },
{ slot: 'E2+TE2', venue: 'TT201', faculty: 'TIME (APT)' },
{ slot: 'E1+TE1', venue: 'TT204', faculty: 'TIME (APT)' },
{ slot: 'E2+TE2', venue: 'PRP251', faculty: 'SIXPHRASE (APT)' },
{ slot: 'E2+TE2', venue: 'SMV116', faculty: 'TIME (APT)' },
{ slot: 'E1+TE1', venue: 'SMV101', faculty: 'TIME (APT)' },
{ slot: 'E1+TE1', venue: 'CDMM403', faculty: 'TIME (APT)' },
{ slot: 'E1+TE1', venue: 'TT201', faculty: 'TIME (APT)' },
{ slot: 'E2+TE2', venue: 'TT204', faculty: 'TIME (APT)' },
{ slot: 'E1+TE1', venue: 'MB211', faculty: 'ETHNUS (APT)' },
{ slot: 'E2+TE2', venue: 'MB211', faculty: 'ETHNUS (APT)' },
{ slot: 'E1+TE1', venue: 'MB212', faculty: 'FACE (APT)' },
{ slot: 'E2+TE2', venue: 'MB212', faculty: 'FACE (APT)' },
{ slot: 'E1+TE1', venue: 'MB213', faculty: 'SIXPHRASE (APT)' },
{ slot: 'E1+TE1', venue: 'MB214', faculty: 'ETHNUS (APT)' },
{ slot: 'E2+TE2', venue: 'CDMM403', faculty: 'TIME (APT)' },
{ slot: 'E1+TE1', venue: 'PRP251', faculty: 'SIXPHRASE (APT)' },
{ slot: 'E2+TE2', venue: 'MB214', faculty: 'ETHNUS (APT)' },
{ slot: 'E2+TE2', venue: 'SJT215', faculty: 'FACE (APT)' },
{ slot: 'E1+TE1', venue: 'PRP426', faculty: 'SIXPHRASE (APT)' },
{ slot: 'E2+TE2', venue: 'PRP426', faculty: 'SIXPHRASE (APT)' },
{ slot: 'E1+TE1', venue: 'PRP427', faculty: 'ETHNUS (APT)' },
{ slot: 'E2+TE2', venue: 'PRP427', faculty: 'ETHNUS (APT)' },
{ slot: 'E2+TE2', venue: 'PRP429', faculty: 'FACE (APT)' },
{ slot: 'E2+TE2', venue: 'MB213', faculty: 'SIXPHRASE (APT)' },
{ slot: 'E1+TE1', venue: 'SJT215', faculty: 'FACE (APT)' },
{ slot: 'E1+TE1', venue: 'SJT222', faculty: 'ETHNUS (APT)' },
{ slot: 'E2+TE2', venue: 'SJT222', faculty: 'ETHNUS (APT)' },
{ slot: 'E2+TE2', venue: 'SJT223', faculty: 'FACE (APT)' },
{ slot: 'E2+TE2', venue: 'SJT224', faculty: 'SIXPHRASE (APT)' },
{ slot: 'E1+TE1', venue: 'SJT221', faculty: 'SIXPHRASE (APT)' },
{ slot: 'E2+TE2', venue: 'SJT221', faculty: 'SIXPHRASE (APT)' },
{ slot: 'E1+TE1', venue: 'SJT223', faculty: 'FACE (APT)' },
{ slot: 'E2+TE2', venue: 'PRP424', faculty: 'ETHNUS (APT)' },
{ slot: 'E1+TE1', venue: 'PRP425', faculty: 'FACE (APT)' },
{ slot: 'E1+TE1', venue: 'SJT224', faculty: 'SIXPHRASE (APT)' },
{ slot: 'E1+TE1', venue: 'PRP429', faculty: 'FACE (APT)' },
{ slot: 'E1+TE1', venue: 'PRP424', faculty: 'ETHNUS (APT)' },
{ slot: 'E2+TE2', venue: 'PRP425', faculty: 'FACE (APT)' },
],
};
5 changes: 5 additions & 0 deletions src/data/SELECT_F/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,15 @@ import { PCC } from './PCC';
import { UCC } from './UCC';
import { CON } from './FCON';
import { OE } from './OE';
import { PCC_ECS } from './PCC_ECS';
import { UCC_ECS } from './UCC_ECS';


export const SELECT_F = {
UniversityCoreCourses: UCC,
ProfessionalCoreCourses: PCC,
ConcentrationCourses: CON,
OpenElectiveCourses: OE,
'UCC_ECS' : UCC_ECS,
'PCC_ECS' : PCC_ECS,
};
4 changes: 2 additions & 2 deletions src/data/SHINE/DC.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ export const DC = {
{ slot: 'A2+TA2', venue: 'PRP251', faculty: 'VIJAYALAKSHMI S' },
],
'BHST308P - Microbiology and Pathology Lab': [
{ slot: 'L5+L6', venue: 'PRP150', faculty: 'VIJAYALAKSHMI S' },
{ slot: 'L35+L36', venue: 'PRP150', faculty: 'VIJAYALAKSHMI S' },
{ slot: 'L41+L42', venue: 'PRP150', faculty: 'VIJAYALAKSHMI S' },
{ slot: 'L59+L60', venue: 'PRP150', faculty: 'VIJAYALAKSHMI S' },
],
};
Loading