diff --git a/my-app/src/assets/upload.gif b/my-app/src/assets/upload.gif new file mode 100644 index 0000000..1443ebe Binary files /dev/null and b/my-app/src/assets/upload.gif differ diff --git a/my-app/src/model.js b/my-app/src/model.js index 372d0b1..a6e6851 100644 --- a/my-app/src/model.js +++ b/my-app/src/model.js @@ -17,6 +17,7 @@ export const model = { departments : [], locations: [], avgRatings: [], + /* courses the user selected as their favourite */ favourites: [], searchHistory:[], isReady: false, @@ -31,18 +32,19 @@ export const model = { filterOptions: { //apply-X-Filter boolean triggering flag wether corresponding filtering functions should run or not //different arrays require different data, some uses string arrays, some boolean values, and so on - applyTranscriptFilter: true, + applyTranscriptFilter: false, eligibility: "weak", //the possible values for the string are: "weak"/"moderate"/"strong" applyLevelFilter: true, level: ["PREPARATORY", "BASIC", "ADVANCED", "RESEARCH"], //the possible values for the array are: "PREPARATORY", "BASIC", "ADVANCED", "RESEARCH" - applyLanguageFilter: true, + applyLanguageFilter: false, language: "none", //the possible values for the string are: "none"/"english"/"swedish"/"both" - applyLocationFilter:true, + applyLocationFilter:false, location: [], //the possible values for the array are: 'KTH Campus', 'KTH Kista', 'AlbaNova', 'KTH Flemingsberg', 'KTH Solna', 'KTH Södertälje', 'Handelshögskolan', 'KI Solna', 'Stockholms universitet', 'KONSTFACK' applyCreditsFilter:true, creditMin: 0, creditMax: 45, - applyDepartmentFilter: true, + applyDepartmentFilter: false, + department: [], applyRemoveNullCourses: false, period: [true, true, true, true], applyPeriodFilter: true @@ -209,6 +211,7 @@ export const model = { updateLevelFilter(level) { this.filterOptions.level = level; + console.log(level); }, updateDepartmentFilter(department) { @@ -258,6 +261,29 @@ export const model = { setApplyPeriodFilter(periodfilterState) { this.filterOptions.applyPeriodFilter = periodfilterState; }, + //for better display we would like the departments in a structured format based on school + formatDepartments() { + const grouped = this.departments?.reduce((acc, item) => { + const [school, department] = item.split("/"); + if (!acc[school]) { + acc[school] = []; + } + acc[school].push(department?.trim()); + return acc; + }, {}); + const sortedGrouped = Object.keys(grouped) + .sort() + .reduce((acc, key) => { + acc[key] = grouped[key].sort(); + return acc; + }, {}); + const fields = Object.entries(sortedGrouped).map(([school, departments], index) => ({ + id: index + 1, + label: school, + subItems: departments, + })); + return fields; + }, async getAverageRating(courseCode) { const reviews = await getReviewsForCourse(courseCode); if (!reviews || reviews.length === 0) return null; diff --git a/my-app/src/pages/App.jsx b/my-app/src/pages/App.jsx index 2a3d4e6..3cb7a83 100644 --- a/my-app/src/pages/App.jsx +++ b/my-app/src/pages/App.jsx @@ -16,14 +16,14 @@ function App({ model }) { return ( /* The sidebar styling(under the menu)*/ -