From 059ccbd42b5cb78545810f91cd316c18a9836e25 Mon Sep 17 00:00:00 2001 From: Riku Rauhala Date: Tue, 25 Feb 2025 19:42:52 +0200 Subject: [PATCH 1/8] [Faculties] Use Stack for layout --- .../frontend/src/pages/Faculties/index.tsx | 70 ++++++++++--------- 1 file changed, 36 insertions(+), 34 deletions(-) diff --git a/services/frontend/src/pages/Faculties/index.tsx b/services/frontend/src/pages/Faculties/index.tsx index a65d425cd..cfe11da0c 100644 --- a/services/frontend/src/pages/Faculties/index.tsx +++ b/services/frontend/src/pages/Faculties/index.tsx @@ -1,4 +1,4 @@ -import { Container, Tab, Tabs } from '@mui/material' +import { Container, Stack, Tab, Tabs } from '@mui/material' import { useState } from 'react' import { useParams } from 'react-router' @@ -40,39 +40,41 @@ export const Faculties = () => { return ( - setTab(newTab)} sx={{ marginBottom: 2 }} value={tab}> - - - - {isAdmin && } - - {tab === 0 && ( - - )} - {tab === 1 && ( - - )} - {tab === 2 && ( - - )} - {tab === 3 && isAdmin && } + + setTab(newTab)} value={tab}> + + + + {isAdmin && } + + {tab === 0 && ( + + )} + {tab === 1 && ( + + )} + {tab === 2 && ( + + )} + {tab === 3 && isAdmin && } + ) } From 9aba7ab5c5fea35de4b5898b83ba7c82570983cd Mon Sep 17 00:00:00 2001 From: Riku Rauhala Date: Tue, 25 Feb 2025 19:56:44 +0200 Subject: [PATCH 2/8] [Study programme] Upgrade tabs to MUI --- .../FilterDegreeCoursesModal.jsx | 4 +- .../src/components/common/CreditsProduced.jsx | 4 +- .../BarChart.jsx | 0 .../DataTable.jsx | 0 .../LineGraph.jsx | 0 .../StackedBarChart.jsx | 0 .../index.jsx | 2 +- .../CreditCriteriaForm.jsx | 0 .../DegreeCourseTableView.jsx | 0 .../index.jsx | 2 +- .../CourseYearFilter.jsx | 0 .../OverallStatsTable.jsx | 0 .../index.jsx | 2 +- .../BarChart.tsx | 0 .../BasicDataTable.tsx | 0 .../PopulationLink.tsx | 0 .../ProgressOfStudents.tsx | 0 .../StudyTrackDataTable.jsx | 0 .../StudyTrackSelector.tsx | 0 .../index.jsx | 2 +- .../index.jsx => TagsTab/TagModal.jsx} | 0 .../{Tags => TagsTab}/index.jsx | 10 +- .../index.jsx => UpdateStatisticsTab.tsx} | 2 +- .../src/pages/StudyProgramme/index.jsx | 149 ------------------ .../src/pages/StudyProgramme/index.tsx | 139 ++++++++++++++++ 25 files changed, 150 insertions(+), 166 deletions(-) rename services/frontend/src/pages/StudyProgramme/{BasicOverview => BasicInformationTab}/BarChart.jsx (100%) rename services/frontend/src/pages/StudyProgramme/{BasicOverview => BasicInformationTab}/DataTable.jsx (100%) rename services/frontend/src/pages/StudyProgramme/{BasicOverview => BasicInformationTab}/LineGraph.jsx (100%) rename services/frontend/src/pages/StudyProgramme/{BasicOverview => BasicInformationTab}/StackedBarChart.jsx (100%) rename services/frontend/src/pages/StudyProgramme/{BasicOverview => BasicInformationTab}/index.jsx (99%) rename services/frontend/src/pages/StudyProgramme/{DegreeCourses => DegreeCoursesTab}/CreditCriteriaForm.jsx (100%) rename services/frontend/src/pages/StudyProgramme/{DegreeCourses => DegreeCoursesTab}/DegreeCourseTableView.jsx (100%) rename services/frontend/src/pages/StudyProgramme/{DegreeCourses => DegreeCoursesTab}/index.jsx (97%) rename services/frontend/src/pages/StudyProgramme/{ProgrammeCourses => ProgrammeCoursesTab}/CourseYearFilter.jsx (100%) rename services/frontend/src/pages/StudyProgramme/{ProgrammeCourses => ProgrammeCoursesTab}/OverallStatsTable.jsx (100%) rename services/frontend/src/pages/StudyProgramme/{ProgrammeCourses => ProgrammeCoursesTab}/index.jsx (91%) rename services/frontend/src/pages/StudyProgramme/{StudyTrackOverview => StudyTracksAndClassStatisticsTab}/BarChart.tsx (100%) rename services/frontend/src/pages/StudyProgramme/{StudyTrackOverview => StudyTracksAndClassStatisticsTab}/BasicDataTable.tsx (100%) rename services/frontend/src/pages/StudyProgramme/{StudyTrackOverview => StudyTracksAndClassStatisticsTab}/PopulationLink.tsx (100%) rename services/frontend/src/pages/StudyProgramme/{StudyTrackOverview => StudyTracksAndClassStatisticsTab}/ProgressOfStudents.tsx (100%) rename services/frontend/src/pages/StudyProgramme/{StudyTrackOverview => StudyTracksAndClassStatisticsTab}/StudyTrackDataTable.jsx (100%) rename services/frontend/src/pages/StudyProgramme/{StudyTrackOverview => StudyTracksAndClassStatisticsTab}/StudyTrackSelector.tsx (100%) rename services/frontend/src/pages/StudyProgramme/{StudyTrackOverview => StudyTracksAndClassStatisticsTab}/index.jsx (99%) rename services/frontend/src/pages/StudyProgramme/{TagModal/index.jsx => TagsTab/TagModal.jsx} (100%) rename services/frontend/src/pages/StudyProgramme/{Tags => TagsTab}/index.jsx (96%) rename services/frontend/src/pages/StudyProgramme/{UpdateView/index.jsx => UpdateStatisticsTab.tsx} (94%) delete mode 100644 services/frontend/src/pages/StudyProgramme/index.jsx create mode 100644 services/frontend/src/pages/StudyProgramme/index.tsx diff --git a/services/frontend/src/components/PopulationDetails/PopulationCourses/FilterDegreeCoursesModal.jsx b/services/frontend/src/components/PopulationDetails/PopulationCourses/FilterDegreeCoursesModal.jsx index 73796a5a5..2ff396eef 100644 --- a/services/frontend/src/components/PopulationDetails/PopulationCourses/FilterDegreeCoursesModal.jsx +++ b/services/frontend/src/components/PopulationDetails/PopulationCourses/FilterDegreeCoursesModal.jsx @@ -1,7 +1,7 @@ import { useState } from 'react' import { Button, Icon, Modal, Container } from 'semantic-ui-react' -import { DegreeCoursesTable } from '@/pages/StudyProgramme/DegreeCourses' +import { DegreeCoursesTab } from '@/pages/StudyProgramme/DegreeCoursesTab' export const FilterDegreeCoursesModal = ({ studyProgramme, year }) => { const [open, setOpen] = useState(false) @@ -25,7 +25,7 @@ export const FilterDegreeCoursesModal = ({ studyProgramme, year }) => { Hide degree courses - + - - -
-

Update data on Study tracks and class statistics view

- - -
- +
+ + Click an Update button to update the data on the corresponding tab + + Update Basic information + + setSkipBasic(false)} stats={basicStats} /> + + Update Study tracks and class statistics + + setSkipStudyTrack(false)} stats={studyTrackStats} /> + +
) } From def64d56125f1c40dc214d2cf9e591448577f83a Mon Sep 17 00:00:00 2001 From: Riku Rauhala Date: Wed, 26 Feb 2025 10:00:41 +0200 Subject: [PATCH 8/8] [Study programme] Update tests --- cypress/e2e/Population_statistics.js | 2 +- cypress/e2e/Study_programme_overview.js | 32 +++++++++++-------- .../StudentTable/ProgressTab/index.jsx | 4 +-- .../StudentTable/TagsTab/index.jsx | 2 +- .../Students/StudentDetails/TagsTable.tsx | 7 ++-- .../src/pages/StudyProgramme/index.tsx | 2 +- 6 files changed, 28 insertions(+), 21 deletions(-) diff --git a/cypress/e2e/Population_statistics.js b/cypress/e2e/Population_statistics.js index fb513040b..efc1411a1 100644 --- a/cypress/e2e/Population_statistics.js +++ b/cypress/e2e/Population_statistics.js @@ -354,7 +354,7 @@ describe('Population statistics tests', () => { cy.contains('Tags').click() cy.contains('No tags defined. You can define them here.').find('a').click() }) - cy.url().should('include', '/study-programme/KH50_001?p_m_tab=0&p_tab=4') + cy.url().should('include', '/study-programme/KH50_001?tab=4') cy.contains('Matemaattisten tieteiden kandiohjelma') cy.contains('Create tags for study programme') cy.contains('button', 'Create a new tag').should('be.disabled') diff --git a/cypress/e2e/Study_programme_overview.js b/cypress/e2e/Study_programme_overview.js index 4fe2895b0..1f1f24695 100644 --- a/cypress/e2e/Study_programme_overview.js +++ b/cypress/e2e/Study_programme_overview.js @@ -37,7 +37,7 @@ describe('Study programme overview', () => { }) }) - describe('Basic information view works for basic user', () => { + describe('Basic information tab works for basic user', () => { beforeEach(() => { cy.init('/study-programme') cy.contains('a', 'Matemaattisten tieteiden kandiohjelma').click({ force: true }) @@ -261,15 +261,15 @@ describe('Study programme overview', () => { }) }) - describe('Study track overview works for basic user', () => { + describe('Study tracks and class statistics tab works for basic user', () => { beforeEach(() => { cy.init('/study-programme') cy.contains('a', 'Matemaattisten tieteiden kandiohjelma').click() - cy.get('.attached').contains('Study tracks and class statistics').click() + cy.cs('study-tracks-and-class-statistics-tab').click() }) // If the backend breaks for one of the sections, the section header is not rendered and this will fail - it('Study tracks and class statistics -tab loads', () => { + it('Study tracks and class statistics', () => { cy.get('[data-cy=Section-studyTrackOverview]') cy.get('[data-cy=Section-studyTrackProgress]') cy.get('[data-cy=Section-averageGraduationTimesStudyTracks]') @@ -494,11 +494,11 @@ describe('Study programme overview', () => { }) }) - describe('Programme courses works for basic user', () => { + describe('Programme courses tab works for basic user', () => { beforeEach(() => { cy.init('/study-programme') cy.contains('a', 'Matemaattisten tieteiden kandiohjelma').click() - cy.get('.attached').contains('Programme courses').click() + cy.cs('programme-courses-tab').click() }) it('content loads', () => { @@ -681,11 +681,11 @@ describe('Study programme overview', () => { }) }) - describe('Degree courses works for basic user', () => { + describe('Degree courses tab works for basic user', () => { beforeEach(() => { cy.init('/study-programme') cy.contains('a', 'Matemaattisten tieteiden kandiohjelma').click() - cy.get('.attached').contains('Degree courses').click() + cy.cs('degree-courses-tab').click() }) it('content loads', () => { @@ -702,11 +702,11 @@ describe('Study programme overview', () => { }) }) - describe('Tags view works for basic user', () => { + describe('Tags tab works for basic user', () => { beforeEach(() => { cy.init('/study-programme') cy.contains('a', 'Matemaattisten tieteiden kandiohjelma').click({ force: true }) - cy.get('.attached').contains('Tags').click() + cy.cs('tags-tab').click() }) it('can create and delete tags for population', () => { @@ -751,7 +751,9 @@ describe('Study programme overview', () => { cy.contains('Successfully added tags to students.') - cy.contains('td', name).get('i.level.up.alternate.icon').click() + cy.contains('td', name).within(() => { + cy.get('i.level.up.alternate.icon').click() + }) cy.contains('Matemaattisten tieteiden kandiohjelma 2022 - 2023') cy.contains(`Tagged with: ${name}`) @@ -772,7 +774,7 @@ describe('Study programme overview', () => { } cy.get('a').contains('Matemaattisten tieteiden kandiohjelma').invoke('removeAttr', 'target').click() - cy.url().should('include', '/study-programme/KH50_001?p_tab=4') + cy.url().should('include', '/study-programme/KH50_001?tab=4') deleteTag(name) }) @@ -813,7 +815,7 @@ describe('Study programme overview', () => { }) it('can access study tracks', () => { - cy.get('.attached').contains('Study tracks and class statistics').click() + cy.cs('study-tracks-and-class-statistics-tab').click() cy.get('[data-cy=Section-studyTrackOverview]') cy.get('[data-cy=Section-studyTrackProgress]') @@ -821,7 +823,9 @@ describe('Study programme overview', () => { }) it("doesn't see other tabs", () => { - cy.get('div.ui.tabular.menu a').should('have.length', 2) + cy.cs('degree-courses-tab').should('not.exist') + cy.cs('tags-tab').should('not.exist') + cy.cs('update-statistics-tab').should('not.exist') }) }) }) diff --git a/services/frontend/src/components/PopulationStudents/StudentTable/ProgressTab/index.jsx b/services/frontend/src/components/PopulationStudents/StudentTable/ProgressTab/index.jsx index c4ed46a95..d64b50c92 100644 --- a/services/frontend/src/components/PopulationStudents/StudentTable/ProgressTab/index.jsx +++ b/services/frontend/src/components/PopulationStudents/StudentTable/ProgressTab/index.jsx @@ -479,8 +479,8 @@ export const ProgressTable = ({ curriculum, criteria, students, months, programm <> {!isStudyGuidanceGroupProgramme && (
- Criteria can be changed here. Please - refresh page after changes. + Criteria can be changed here. Please refresh page + after changes.
)} diff --git a/services/frontend/src/components/PopulationStudents/StudentTable/TagsTab/index.jsx b/services/frontend/src/components/PopulationStudents/StudentTable/TagsTab/index.jsx index 7a5dfe9bf..7746a72a0 100644 --- a/services/frontend/src/components/PopulationStudents/StudentTable/TagsTab/index.jsx +++ b/services/frontend/src/components/PopulationStudents/StudentTable/TagsTab/index.jsx @@ -21,7 +21,7 @@ export const TagsTab = ({ combinedProgramme, mainProgramme, programmeForTagsLink >

No tags defined. You can define them{' '} - {}} to={`/study-programme/${programmeForTagsLink}?p_m_tab=0&p_tab=4`}> + {}} to={`/study-programme/${programmeForTagsLink}?tab=4`}> here . diff --git a/services/frontend/src/pages/Students/StudentDetails/TagsTable.tsx b/services/frontend/src/pages/Students/StudentDetails/TagsTable.tsx index 6165ee1ef..fe1b9423a 100644 --- a/services/frontend/src/pages/Students/StudentDetails/TagsTable.tsx +++ b/services/frontend/src/pages/Students/StudentDetails/TagsTable.tsx @@ -36,7 +36,10 @@ export const TagsTable = ({ student }: { student: any }) => { } } - if (tagData.length === 0) return null + if (tagData.length === 0) { + return null + } + return (
{ {tagData.map(({ programme, tags }) => ( - + {getTextIn(programme.name)} diff --git a/services/frontend/src/pages/StudyProgramme/index.tsx b/services/frontend/src/pages/StudyProgramme/index.tsx index 3f977ec40..37eea6ec8 100644 --- a/services/frontend/src/pages/StudyProgramme/index.tsx +++ b/services/frontend/src/pages/StudyProgramme/index.tsx @@ -171,7 +171,7 @@ export const StudyProgramme = () => { variant="scrollable" > {tabs.map(tab => ( - + ))} {tabs.map(tab => currentTab === tabs.indexOf(tab) && tab.component)}