The Courses page showcases a comprehensive list of courses, featuring vital information like the course title, institution name, dates of creation and updates, as well as associated functionalities like Edit course, Delete course, Add TA, Duplicate course.
The aim is to craft a user-friendly and interactive interface, facilitating seamless navigation and management of course-related data.
Intuitive Course Management: Developed a streamlined interface for easy navigation and management of courses
Enhanced Widgets: Incorporated optimized widgets ensuring functionality and user engagement
Responsive Design: The interface is accessible across various devices enhancing user experience
Performance Optimization: Enhanced loading speeds and overall performance metrics by required code refactoring
The features have been implemented using ReactJS and TypeScript.
The instructor column is now visible only for admin and superadmin users, enhancing the interface for better clarity. This dynamic feature ensures that the interface adapts based on the user's role, providing relevant information as needed.
Action buttons now have hover effects, enhancing readability and providing visual feedback to users. Hovering over action buttons triggers visual cues, making it easier for users to identify interactive elements.
Page headers are now customized based on the user's role, offering a personalized experience. Depending on who is signing in, the page headers dynamically adjust to display relevant information, improving user engagement.
Implemented a search functionality based on instructors, allowing users to quickly find relevant information. Users can now easily search for instructors, streamlining the navigation process and improving user experience.
Added a link on the course name that opens a modal dialogue box, displaying detailed course information. This feature provides users with quick access to essential course details without navigating away from the current page.
During the instructor selection process, all users were displayed in the dropdown menu, leading to potential confusion and inefficiency. Now, only actual instructors are shown, streamlining the selection process.
Conducted code refactoring to enhance usability, maintainability, and performance. Added relevant comments to the codebase for improved understanding and documentation. Optimized UI code and made code snippets as independent as possible for better modularity and scalability.
- Course.tsx
- CourseColumns.tsx
- CourseCopy.tsx
- CourseDelete.tsx
- CourseDetails.tsx
- CourseEditor.tsx
- CourseUtil.tsx
- interfaces.ts
A class should have only one reason to change, meaning it should have only one responsibility.
Implementation: Each component or class in the codebase is designed to handle a single responsibility, such as managing course data, rendering UI components, or handling user authentication.
The principle of separating a computer program into distinct sections, such that each section addresses a separate concern.
Implementation: The codebase is structured to separate concerns related to data management, user interface rendering, and business logic, promoting modular and maintainable code.
A behavioral design pattern that defines a family of algorithms, encapsulates each algorithm, and makes them interchangeable.
Implementation: The strategy pattern is applied to customize page headers dynamically based on the user's role. Different strategies for header customization are defined and selected at runtime based on the current user's role.
A behavioral design pattern where an object, known as the subject, maintains a list of its dependents, called observers, and notifies them of any state changes.
Implementation: The observer pattern is used to implement hover effects on action buttons. Observers are registered to listen for mouse hover events, and when triggered, they update the UI to provide visual feedback to users.
A structural design pattern that allows behavior to be added to individual objects dynamically, without affecting the behavior of other objects from the same class.
Implementation: The decorator pattern is employed to add hover effects to action buttons without modifying their core behavior. Hover functionality is dynamically added to button components, enhancing their visual appearance.
A behavioral design pattern that defines the skeleton of an algorithm in the superclass but lets subclasses override specific steps of the algorithm without changing its structure.
Implementation: The template method pattern is utilized in rendering page headers based on the user's role. A template method defines the overall structure of the header, while specific methods are overridden in subclasses to customize header content for different user roles.
Since the changes revolve around UI implementation, the features need to be manually checked on the webpages.
- Check if instructor column is visible when logged in as an admin/superadmin
- Check if the buttons show some text on hovering the icons
- Verify that the page header changes based on the role of the logged-in user
- Verify if the search functionality is working for Searching Instructors
- Check if there is a link on the course name to view the course information
- Check if only instructors are seen in the drop-down while creating the course
- Riya Gori
- Aniket Singh Shaktawat [email protected]
- Pankhi Saini [email protected]
- Siddharth Shah [email protected]