Compare commits
4 Commits
main
...
feat/uniqu
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4d9592413a | ||
| 4c6223b37d | |||
|
|
b1d88af8aa | ||
|
|
517fd4cc78 |
@@ -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" />
|
||||
</picture>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -49,6 +49,7 @@ export default function CalendarCourseCell({
|
||||
|
||||
const { colors, uniqueId: courseID } = blockData.course;
|
||||
const { dayIndex, startIndex } = blockData.calendarGridPoint;
|
||||
const [courseDepartment, courseInstructor] = courseDeptAndInstr.split('–').map(part => part.trim());
|
||||
|
||||
let selectedCourse = false;
|
||||
let selectedBlock = false;
|
||||
@@ -131,7 +132,7 @@ export default function CalendarCourseCell({
|
||||
'text-wrap': !timeAndLocation,
|
||||
})}
|
||||
>
|
||||
{courseDeptAndInstr}
|
||||
{courseDepartment}, {courseID} – {courseInstructor}
|
||||
</Text>
|
||||
{timeAndLocation && (
|
||||
<Text variant='h3-course' as='p' className='whitespace-pre-line'>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
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 { Button } from '@views/components/common/Button';
|
||||
import DialogProvider from '@views/components/common/DialogProvider/DialogProvider';
|
||||
@@ -11,7 +11,7 @@ import useSchedules from '@views/hooks/useSchedules';
|
||||
import clsx from 'clsx';
|
||||
import React from 'react';
|
||||
|
||||
import { handleExportJson, saveAsCal, saveAsText, saveCalAsPng } from '../utils';
|
||||
import { handleExportJson, saveAsCal, saveCalAsPng } from '../utils';
|
||||
|
||||
interface CalendarHeaderProps {
|
||||
sidebarOpen?: boolean;
|
||||
@@ -111,18 +111,6 @@ export default function CalendarHeader({ sidebarOpen, onSidebarToggle }: Calenda
|
||||
Save as .json
|
||||
</Button>
|
||||
</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>
|
||||
<Button color='ut-black' size='small' variant='minimal' icon={FileTxt}>
|
||||
Export Unique IDs
|
||||
|
||||
@@ -245,27 +245,6 @@ export const scheduleToIcsString = (schedule: Serialized<UserSchedule>) => {
|
||||
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).
|
||||
* 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');
|
||||
};
|
||||
|
||||
/**
|
||||
* 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.
|
||||
* @param id - Provided schedule ID to download
|
||||
|
||||
Reference in New Issue
Block a user