Skip to content

Commit

Permalink
In schedule generator, only allow courses matching requirement to be …
Browse files Browse the repository at this point in the history
…added (#948)

* fix: in schedule generator, only allow courses matching requirement to be added

* chore: add dummy commit
  • Loading branch information
Destaq authored Oct 29, 2024
1 parent e7a6e71 commit 61c2955
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 4 deletions.
20 changes: 18 additions & 2 deletions src/components/Modals/NewCourse/NewCourseModal.vue
Original file line number Diff line number Diff line change
Expand Up @@ -53,20 +53,27 @@ import store from '@/store';
import {
getRelatedRequirementIdsForCourseOptOut,
getRelatedUnfulfilledRequirements,
getFilterForRequirementFulfillment,
} from '@/requirements/requirement-frontend-utils';
import { specificRosterCoursesArray } from '@/assets/courses/typed-full-courses';
import { seasonAndYearToRosterIdentifier } from '../../../user-data-converter';
export default defineComponent({
props: {
// TODO: filter by selectedRequirement for schedule generator
// selectedRequirement: { type: String, required: false, default: '' },
year: { type: Number, required: false, default: undefined },
season: {
type: String as PropType<FirestoreSemesterSeason>,
required: false,
default: undefined,
},
// An optional filter for the course selector. If set, only
// allows for viewing (and so selecting) courses that fulfill
// the given requirement.
filterForRequirementID: {
type: String as PropType<string>,
required: false,
default: '',
},
},
components: { CourseSelector, TeleportModal, SelectedRequirementEditor },
emits: {
Expand Down Expand Up @@ -100,6 +107,15 @@ export default defineComponent({
if (this.season !== undefined && this.year !== undefined) {
const currRoster = seasonAndYearToRosterIdentifier(this.season, this.year);
const courses = specificRosterCoursesArray(currRoster);
if (this.filterForRequirementID) {
return courses.filter(
getFilterForRequirementFulfillment(
store.state.userRequirementsMap,
store.state.toggleableRequirementChoices,
this.filterForRequirementID
)
);
}
return courses;
}
return undefined;
Expand Down
4 changes: 2 additions & 2 deletions src/components/ScheduleGenerate/RequirementCourses.vue
Original file line number Diff line number Diff line change
Expand Up @@ -26,19 +26,19 @@
</button>
</div>
<div v-if="showDropdown">
<p class="requirement-header-subtext">Please select a major requirement.</p>
<p class="requirement-header-subtext">Please select a major/minor requirement.</p>
<all-requirements-dropdown
:available-choices="availableRequirements"
:choice="selectedRequirement.reqName"
@on-select="selectRequirement"
/>
<!-- TODO: filter course showing to ones that fulfill req -->
<new-course-modal
@close-course-modal="closeCourseModal"
v-if="isCourseModalOpen"
@add-course="addCourse"
:year="year"
:season="season"
:filterForRequirementID="selectedRequirement.reqId"
/>
<div class="requirement-courses">
<div v-for="c in uniqueify(selectedRequirement.courses)" :key="c.crseId">
Expand Down

0 comments on commit 61c2955

Please sign in to comment.