Compare commits

..

4 Commits

Author SHA1 Message Date
Diego Perez
4d9592413a Merge branch 'main' into feat/uniqueID-calendar 2026-02-11 00:51:42 -06:00
4c6223b37d Merge branch 'main' into feat/uniqueID-calendar 2025-11-05 16:39:26 -06:00
ngupta
b1d88af8aa feat(calendar): add courseID 2025-10-26 11:37:53 -05:00
ngupta
517fd4cc78 test commit 2025-10-21 09:19:07 -05:00
4 changed files with 6 additions and 55 deletions

View File

@@ -216,3 +216,5 @@ Special thanks to the developers and contributors behind these amazing tools and
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=Longhorn-Developers/UT-Registration-Plus&type=Date" /> <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=Longhorn-Developers/UT-Registration-Plus&type=Date" />
</picture> </picture>
</a> </a>

View File

@@ -49,6 +49,7 @@ export default function CalendarCourseCell({
const { colors, uniqueId: courseID } = blockData.course; const { colors, uniqueId: courseID } = blockData.course;
const { dayIndex, startIndex } = blockData.calendarGridPoint; const { dayIndex, startIndex } = blockData.calendarGridPoint;
const [courseDepartment, courseInstructor] = courseDeptAndInstr.split('').map(part => part.trim());
let selectedCourse = false; let selectedCourse = false;
let selectedBlock = false; let selectedBlock = false;
@@ -131,7 +132,7 @@ export default function CalendarCourseCell({
'text-wrap': !timeAndLocation, 'text-wrap': !timeAndLocation,
})} })}
> >
{courseDeptAndInstr} {courseDepartment}, {courseID} {courseInstructor}
</Text> </Text>
{timeAndLocation && ( {timeAndLocation && (
<Text variant='h3-course' as='p' className='whitespace-pre-line'> <Text variant='h3-course' as='p' className='whitespace-pre-line'>

View File

@@ -1,5 +1,5 @@
import { Menu, MenuButton, MenuItem, MenuItems } from '@headlessui/react'; import { Menu, MenuButton, MenuItem, MenuItems } from '@headlessui/react';
import { CalendarDots, Export, FileCode, FilePng, FileText, Sidebar } from '@phosphor-icons/react'; import { CalendarDots, Export, FileCode, FilePng, Sidebar } from '@phosphor-icons/react';
import styles from '@views/components/calendar/CalendarHeader/CalendarHeader.module.scss'; import styles from '@views/components/calendar/CalendarHeader/CalendarHeader.module.scss';
import { Button } from '@views/components/common/Button'; import { Button } from '@views/components/common/Button';
import DialogProvider from '@views/components/common/DialogProvider/DialogProvider'; import DialogProvider from '@views/components/common/DialogProvider/DialogProvider';
@@ -11,7 +11,7 @@ import useSchedules from '@views/hooks/useSchedules';
import clsx from 'clsx'; import clsx from 'clsx';
import React from 'react'; import React from 'react';
import { handleExportJson, saveAsCal, saveAsText, saveCalAsPng } from '../utils'; import { handleExportJson, saveAsCal, saveCalAsPng } from '../utils';
interface CalendarHeaderProps { interface CalendarHeaderProps {
sidebarOpen?: boolean; sidebarOpen?: boolean;
@@ -111,18 +111,6 @@ export default function CalendarHeader({ sidebarOpen, onSidebarToggle }: Calenda
Save as .json Save as .json
</Button> </Button>
</MenuItem> </MenuItem>
<MenuItem>
<Button
className='w-full flex justify-start'
onClick={saveAsText}
color='ut-black'
size='small'
variant='minimal'
icon={FileText}
>
Save as .txt
</Button>
</MenuItem>
{/* <MenuItem> {/* <MenuItem>
<Button color='ut-black' size='small' variant='minimal' icon={FileTxt}> <Button color='ut-black' size='small' variant='minimal' icon={FileTxt}>
Export Unique IDs Export Unique IDs

View File

@@ -245,27 +245,6 @@ export const scheduleToIcsString = (schedule: Serialized<UserSchedule>) => {
return icsString; return icsString;
}; };
/**
* Returns the provided schedule in a human readable/copyable text format
* @param schedule - The schedule object
* @returns
*/
export const scheduleToText = (schedule: Serialized<UserSchedule>) => {
const lines: string[] = [];
lines.push(`Schedule: ${schedule.name}`);
lines.push('');
for (const c of schedule.courses) {
lines.push(c.fullName);
lines.push(`${c.creditHours} Credit Hours`);
lines.push(`${c.uniqueId}`);
lines.push('');
}
return lines.join('\n');
};
/** /**
* Saves the current schedule as a calendar file in the iCalendar format (ICS). * Saves the current schedule as a calendar file in the iCalendar format (ICS).
* Fetches the current active schedule and converts it into an ICS string. * Fetches the current active schedule and converts it into an ICS string.
@@ -283,25 +262,6 @@ export const saveAsCal = async () => {
downloadBlob(icsString, 'CALENDAR', 'schedule.ics'); downloadBlob(icsString, 'CALENDAR', 'schedule.ics');
}; };
/**
* Save current schedule as a plain text file consisting of
* Course Name - Course ID
* Course Time
* Unique Number
* Line Break
* Repeat
*/
export const saveAsText = async () => {
const schedule = await getSchedule();
if (!schedule) {
throw new Error('No schedule found');
}
const scheduleText = scheduleToText(schedule);
downloadBlob(scheduleText, 'TEXT', 'schedule.txt');
};
/** /**
* Saves current schedule to JSON that can be imported on other devices. * Saves current schedule to JSON that can be imported on other devices.
* @param id - Provided schedule ID to download * @param id - Provided schedule ID to download