Releases: UniTime/unitime
Releases · UniTime/unitime
UniTime 4.8 build 159
Course Timetabling
Instructional Offering Configuration
- Delete: Fixed a possible "deleted object would be re-saved by cascade" exception when deleting a configuration that participates in a distribution preference.
- Delete: Fixed a possible "deleted instance passed to merge" exception when deleting a configuration that has teaching requests.
- Delete: Skip validation for a configuration that is being deleted.
Solution (Database) Save
- A few changes to make the save faster:
- Faster computation of the number of no-conflict placements in variable info.
- When General.SaveConstraintInfos is false; do not compute no-conflict placements in variable infos at all.
Edit Class/Scheduling Subpart
- Added an ability to search the list of available date patterns.
- Enable by setting unitime.classEdit.searchableDatePattern to true (defaults to false).
- When enabled, the Date Pattern list box is replaced by a text field with suggestions.
Extended Student Conflicts Constraint
- Fixed a concurrency issue.
Student Scheduling
Wait-Listing
- Position: Consider current enrollment when computing the wait-list position.
- Processing Order: Do not prioritize students wait-listing for a course swap.
Student Scheduling Assistant
- Suggestions: When the Suggestions dialog is opened, include ARIA status labels for drop and wait-list buttons when they are present.
- Suggestions: Drop and Wait-List buttons are now easier to get to.
Unavailabilities
- Added unavailability distance conflicts (distance conflicts between sections and unavailabilities).
- This is particularly useful when unavailabilities from other overlapping academic sessions are enabled.
- Using the new solver parameter Distances.MaxTravelDistanceInMinutes, a different max travel time in minutes can be defined for unavailabilities.
- Added Student Unavailability Conflicts solver report (listing time and distance conflicts).
Batch Scheduling: Visiting F2F Priority
- Added a new course request priority Visiting F2F that can be used to lower priority of visiting students for getting in face-to-face courses.
- Can be enabled by identifying visiting students with Load.VisitingStudentFilter (e.g., not campus:XX)
- A course request is considered face-to-face, if there is at least one possible enrollment with a face-to-face class.
- When Load.VisitingFaceToFaceCheckFirstChoiceOnly is set to true (defaults to false), only the first-choice course is checked for face-to-face classes.
- Only course requests without a priority can have their priority lowered (set to Visiting F2F).
Advisor Course Recommendations
- Show recommendations from the other academic session(s) if a student is advised in two or more parallel sessions.
Student Scheduling Assistant / Student Course Requests
- Available Sessions: Prefer sessions with matching student campus (in the order they are displayed).
- If two or more academic sessions start on the same date, prefer the academic session whose initiative matches the student's campus.
- Property unitime.studentScheduling.preferredStudentCampus can be used to provide regular expression for preferred student campuses.
- Enable by setting unitime.studentScheduling.preferSessionsWithMatchingCampus to true, defaults to false.
- If two or more academic sessions start on the same date, prefer the academic session whose initiative matches the student's campus.
Student Scheduling Solver: Credit Limits
- Added an ability to adjust the student's min/max credit limit by their enrollment in other parallel sessions.
- I.e., sessions with matching academic terms and years but different initiatives.
- Enable by setting the solver parameter Load.DecreaseCreditLimitsByOtherSessionEnrollments to true (defaults to false).
Examination Timetabling
Distribution Constraints
- The examination distribution constraints were rewritten to make them easier to extend and customize.
- For soft constraints, penalizations are now counted on individual examination pairs.
- This better ascertains how well the constraint is satisfied, especially for constraints posted between many exams.
Events
Personal Schedule: Additional Emails
- Added an option to disable lookup for events where the person's email is listed in the Additional Emails field.
- Disable by setting unitime.events.personal.considerAdditionalEmails to false, defaults to true.
Event Filter
- Added an ability to skip computation of most event counts on the filter to make it load and operate faster.
- To enable set unitime.events.eventFilter.skipCounts to true (defaults to false).
Other
GWT-Based Pages: Cookies
- Avoid using cookies when possible (e.g., to store filter settings). Use HTML5 local/session storage instead.
- This is to avoid error 400 - Bad Request: Request header is too large when using long texts in the filters.
Administration
Add/Edit Timetable Manager
- External Manager Lookup: Only reset the email address (to the one from the LDAP directory) when it is left blank.
Data Exchange API
- Corrected XML import response.
UniTime 4.8 build 147
Course Timetabling
Multiple Class Setup
- Date Pattern: Corrected the name of the default date pattern when a date pattern is set on the scheduling subpart.
Add/Edit Room
- Preference: Do not allow for Required preference (for a department) unless there is already a required department for the room.
- Required preference set directly on a room usually makes no or very little sense and usually only creates confusion when a room is accidentally marked as required (as no other rooms can be used for the department by the course timetabling solver).
Student Scheduling
Batch Student Solver Reports, Online Student Scheduling Reports
- Filter: In the filter's drop-down, added Advisor text field and My Students checkbox.
- This is to make it easier for non-admin users to use.
Other
Main page
- To prevent an XSS vulnerability, sanitize the message when provided as a parameter.
UniTime 4.7 build 111
Student Scheduling
Batch Student Solver Reports: Export CSV
- Corrected permission checking for the published student scheduling solver.
Other
Main page
- To prevent an XSS vulnerability, sanitize the message when provided as a parameter.
UniTime 4.8 build 145
Course Timetabling
Instructional Offerings / Classes
- Added experimental user settings that allow for the header row on the Instructional Offerings and Classes pages to freeze (has sticky position).
- To enable, add
stickyTables
manager setting with yes and no options (using Default Manager Settings page, sticky table headers are enabled when set to yes).
Instructional Offering Configuration
- When unlimited enrollment is selected, make sure that all classes have zero number of rooms.
Reservations, Instructional Offering Detail, Student Scheduling Dashboards
- Reservations table: Always show the reservation flags such as Allow Time Conflict, Can Assign Over Limit, Student Must Follow, and Do Not Reserve Space.
- This ensures that the reservation/override always clearly states what it does.
Event Management
Events: Filter by Day of Week
- Fixed a Hibernate 6.x issue when filtering by day of the week on MySQL and PostgreSQL.
Administration: Event Statuses
- Corrected an issue causing a room sometimes to be shown under the wrong department/room type.
Student Scheduling
Batch Student Solver Reports, Online Student Scheduling Reports
- Added an ability to filter reports using a Filter with capabilities similar to those on the dashboard pages.
- Added Conflicting Course Requests report: a variant of the Not-Assigned Course Requests report, but only showing course requests with time conflicts.
- Added Not-Used Curriculum Reservations report.
- Added Reservations report: showing all reservations and their current enrollments/limits.
- Added XLS export.
Batch Student Solver Dashboard, Online Student Scheduling Dashboard
- Reservation Tooltip:
- Do not show limit (null) for unlimited classes.
- Show flags for curriculum override reservations.
- Individual, Curriculum: Limit the number of restrictions to 5 lines.
- Added XLS export.
Administration
Rooms: Custom URL
- Added an ability to provide custom room URLs (based on their name, building, room number, or external id).
- See the
unitime.rooms.url
properties for more details.
UniTime 4.8 build 139
Course Timetabling
Multiple Class Setup
- Added column with the capacity of the assigned room (Cap).
- Added mouse-over for assigned rooms.
- Fixed the ability to clear External Id (when modification of external ids is allowed).
Student Scheduling
Student Email Notifications
- Created a plain-text template alternative for student scheduling emails.
- Plain-text student emails can be enabled by setting unitime.enrollment.email.plainText to true (defaults to false).
Advisor Course Recommendations
- Ensure that the advisor's additional notes do not overlap with the signature on the generated PDF.
Online Student Scheduling Dashboard: Filter
- The following checks now allow for a partial match using %:
- area, classification, major, concentration,
- campus, accommodation, degree, program, minor,
- primary-area, primary-classification, primary-major, primary-concentration, primary-degree,
- group, status
- For example, area:A% matches all areas starting with A. Or, LC:% matches all students that are in a group of LC type.
Universal Reservation Override: Student Filter
- Added a missing check on student minors.
- The following checks now allow for a partial match using %:
- area, classification, major, concentration,
- campus, accommodation, degree, program, minor,
- primary-area, primary-classification, primary-major, primary-concentration, primary-degree,
- group, status
Administration
Roll Forward: Travel Times, Room Partitions
- Corrected roll forward of room partitions and travel times on Oracle (empty external id check was incorrect).
UniTime 4.8 build 134
Course Timetabling
Extended Student Conflicts
- Added an experimental global constraint that does not allow any two classes that the same student can attend to have a conflict.
- The constraint checks any two classes of different offerings that share at least one student and that the student is allowed to take (not restricted by reservations).
- Class pairs included in the Ignore Student Conflicts constraints are ignored.
- Some classes may be excluded by using ExtendedStudentConflicts.IgnoreClasses parameter which may contain a regular expression matching class name(s).
- Pairs of classes of the same offering are checked, too.
- In this case, the course structure must allow the two classes to be attended together (e.g., they are from the same configuration),
- and at least one student in the offering can take both classes.
- This feature is enabled by default and can be disabled by setting ExtendedStudentConflicts.CheckSameCourse to false.
- To enable this constraint, add org.cpsolver.coursett.constraint.ExtendedStudentConflicts to General.GlobalConstraints (which contains a semicolon-separated list of global constraint classes that should be automatically added to the problem)
Room Edit: Room Features & Groups
- Disabled pre-fetching of room relations (such as departments, features, and groups) when loading the data for the Room Edit page.
- This fixes a potential Hibernate issue that is causing room groups and features to disappear (not get loaded) in some cases that are hard to explain or reproduce.
- The pre-fetching can be enabled by setting unitime.rooms.prefetchRelations to true.
Multiple Class Setup
- Multiple Class Setup page rewritten to GWT to make the page faster and more reliable.
- To use the old (Struts2-based) page, set unitime.legacy.course.multiple_class_setup to true.
- When the managing department is changed, only remove preferences that no longer apply (e.g., keep global room feature/group preferences).
- Former behavior (clear all room-related preferences) set unitime.legacy.course.clear_preferences to true.
Instructional Offering Configuration
- Instructional Offering Configuration page rewritten to GWT to make the page faster and more reliable.
- To use the old (Struts2-based) page, set unitime.legacy.course.instr_offering_config to true.
- When the managing department is changed, only remove preferences that no longer apply (e.g., keep global room feature/group preferences).
- Former behavior (clear all room-related preferences) set unitime.legacy.course.clear_preferences to true.
Scheduling Subpart Detail: Classes
- Show the External Id column when there is at least one class with an external id filled in (instead of showing the column when there is a class with a timetable).
- Show Student Schedule Note when at least one class has a note (instead of always showing the column).
Instructional Offering Detail: Configuration
- Show the Timetable column when there is at least one class with a timetable (instead of always showing the Timetable columns).
- Show the External Id column when there is at least one class with an external id filled in (instead of always showing the column).
- Show Student Schedule Note when at least one class has a note (instead of never showing the column).
Student Scheduling
Scheduling Assistant: Submit Schedule
- Fixed a possible TransientObjectException when a new course request is added to an existing course demand.
- The problem is related to the recent Hibernate 6.2.22 update.
Student Scheduling: Reservations
- Student Scheduling Solver: Improved handling of reservations with restrictions from two or more configurations by computing and using configuration-specific limit caps and reservation limits.
- This makes the computation of reserved and unreserved space for a config or a section much more accurate.
- Online Student Scheduling: Corrected the computation of reservation limit for reservations with restrictions from two or more configurations.
- This fixes an issue causing some space not to be reserved when a reservation was set between a configuration and one or more sections of a different config.
- Online Student Scheduling: The checking of available space (e.g., when a student clicks Submit Schedule) for reservations with restrictions from two or more configurations has been corrected.
- This applies especially to reservations marked as exclusive (to be checked only at the levels they are set).
- Add/Edit Reservation: The computation of the selected spaces when restrictions from two or more configurations are selected has been corrected.
Examination Timetabling
Examination Timetable
- Load the examination grid page faster when data from the database is shown.
- This is done by pre-fetching all exams and their relations (like the Examination Reports page already does).
Room Splits
- No longer limit the number of rooms an exam can use.
- This fixes the ArrayIndexOutOfBoundsException when an exam is split into more than 32 rooms.
Administration
Data Exchange: Last-Like Course Demand Import
- Open transaction before subject areas are loaded.
- This fixes a Null exception introduced with Hibernate 6.x changes.
Data Exchange: Curriculum Import
- An incremental mode (when incremental="true" in the root element) was added.
- Only curricula of matching abbreviations are removed.
- If the XML contains curriculum A/M1, the existing A/M1 curriculum is deleted first.
Data Exchange: Reservations Import
- An incremental mode (when incremental="true" in the root element) was added.
- Only reservations for matching courses and types have been removed.
- If the XML contains a curriculum reservation for ALG 101, all previous curriculum reservations for this course are deleted first.
User Context: Test Sessions
- Added checking for test session status for Advisor, Instructor, and Student roles.
- The test session is only available when the role has the Allow Test Sessions permission.
Technology Upgrade
- Hibernate upgraded to version 6.4 (from 6.2).
- Please note that in HQL, = null or != null no longer works (use is null or is not null instead).
- Apache Struts upgraded to version 6.4 (from 2.5).
Authentication: OAuth2
- Added an ability to use OAuth2 authentication.
- See https://help.unitime.org/OAuth2 for more details.
Docker Installation
- Added the ability to install UniTime as a Docker container.
- See https://help.unitime.org/docker for more details.
UniTime 4.8 build 115
Course Timetabling
Scheduling Subparts: Limit, Course Name
- Do not pre-compute scheduling subpart limits and course names.
- This fixes an issue of showing an incorrect limit after a class limit change or when a class has been added or removed from a subpart.
- The drawback is that these fields are no longer available in the reports, to fix this replace
- ss.limit with (select sum(c.expectedCapacity) from Class_ c where c.schedulingSubpart = s)
- ss.courseName with (select co.subjectAreaAbbv || ' ' || co.courseNbr from CourseOffering co where co.isControl = true and co.instructionalOffering = ss.instrOfferingConfig.instructionalOffering)
Multiple Class Setup
- Prevent premature submission of the page by only enabling all the submit buttons after the page is fully loaded.
- This fixes a problem when some classes are deleted because the page is submitted for a massive course configuration while it is still being loaded.
Instructional Offering: Limit, Demand
- Do not compute demand and limit fields within the data model (formula).
- It does not save anve time and just complicates the query.
- This is to avoid showing old data, e.g., when an instructional offering configuration is updated.
- The drawback is that these fields are no longer available in the reports, to fix this replace
- io.limit with (select sum(ioc.limit) from InstrOfferingConfig ioc where ioc.instructionalOffering = io)
- io.demand with (select sum(co.demand + (case when cox is null then 0 else cox.demand end)) from CourseOffering co left outer join co.demandOffering cox where co.instructionalOffering = io)
- This way, the fields are only computed when needed.
Student Scheduling
Batch Student Solver Reports: Export CSV
- Corrected permission checking for the published student scheduling solver.
UniTime 4.8 build 110
Course Timetabling
Instructor Unavailability: Daylight Saving Dates
- Corrected instructor unavailability on daylight saving days (i.e., days with 23 or 25 hours).
Travel Time: Default/Computed Distances
- Show default/computed distances in blue.
Course Timetabling: Multiple Rooms Split Attendance
- When a class needs two or more rooms, added an ability to set the class as requiring split attendance.
- When split attendance is set for the class, the class is expected to be split among the assigned rooms (the total room capacity must meet the class limit times room ratio).
- When split attendance is not set for the class (which is the default), each room must be big enough to fit the class.
- Split Attendance can be set on the Instructional Offering Configuration page (all classes of a subpart) or the Multiple Class Setup page (individual classes).
Course Timetabling: Multiple Rooms With Different Preferences
- The ability to provide different preferences for each room has been added for classes that need two or more rooms.
- This includes cases when some rooms are prohibited in some positions, e.g., a class needs a classroom and some other room.
- Room-related preferences can be only defined on the class or the scheduling subpart level, for rooms, room groups, room features, and buildings.
Course Timetabling: Solution Commit
- Solution commit made a little faster by loading the event date mappings only once.
Student Scheduling
Student Scheduling Assistant / Course Requests: Access Control
- Added an ability to limit how many users can use the page (Scheduling Assistant and/or Course Requests) at the same time.
- Automatically leave the page after a given time of inactivity (showing a warning first).
- Parameters for Scheduling Assistant:
- unitime.accessControl.sectioning.maxActiveUsers .. Maximal number of users using the page at the same time (not set or zero for disabled).
- unitime.accessControl.sectioning.activeLimitInMinutes .. Number of minutes of inactivity for the user to get the Inactive Warning (defaults to 15 minutes, set to zero to disable).
- Parameters for Course Requests:
- unitime.accessControl.requests.maxActiveUsers .. Maximal number of users using the page at the same time (not set or zero for disabled).
- unitime.accessControl.requests.activeLimitInMinutes .. Number of minutes of inactivity for the user to get the Inactive Warning (defaults to 15 minutes, set to zero to disable).
- When the Inactive Warning shows, the user has a minute to dismiss the warning before the page is exited automatically.
Universal Reservation Override: Student Filter
- Added a universal reservation override type that allows to reserve space for students using a student filter.
- Student filter is a boolean expression that may contain the following attributes:
- area, classification, campus, major, minor, concentration, degree, program, group, accommodation, student, advisor, status
- primary-area, primary-classification, primary-major, primary-concentration, primary-degree, primary-program, primary-campus
- For example, the following filter will match all programs that end with -OL or -HY:
- primary-program:%-OL or primary-program:%-HY
Student Availability: Check Other Academic Sessions
- Added an ability to check student schedules from other overlapping academic sessions. The classes of other academic sessions show up as unavailablies (blue color, not clickable).
- They are also used as unavailabilities: the solver would not assign a class in the current academic session to a time that conflicts with a class of some other academic session that the student has.
- Unless the class is of scheduling subpart that allows for overlaps, in which case the overlapping time is minimized instead.
- This feature is not enabled by default, to enable it set the following properties:
- Batch student scheduling: set the solver parameter Load.IncludeUnavailabilitiesFromOtherSessions to true.
- Online student scheduling: there are two options,
- the unavailable times are either loaded from the database (when General.CheckUnavailabilitiesFromOtherSessionsUsingDatabase is true),
- or from the other online student scheduling solver servers (when General.CheckUnavailabilitiesFromOtherSessions is true).
Event Management
Rooms: Event Email
- Added event emails on rooms, non-university locations, and event statuses.
- When sending an event confirmation email, automatically CC all rooms of changed meetings.
- Event Statuses page can now edit a default event email for a department and a room type pairs.
- Event Statusess and Add/Edit Room pages can now edit event emails of an individual room.
Administration
Data Exchange: Academic Session Export
- Fixed the occasional "Unable to export: No row with the given identifier exists" error on records that do exist.
UniTime 4.7 build 109
Course Timetabling
Instructor Unavailability: Daylight Saving Dates
- Corrected instructor unavailability on daylight saving days (i.e., days with 23 or 25 hours).
Travel Time: Default/Computed Distances
- Show default/computed distances in blue.
Administration
Data Exchange: Course Offering XML Import
- Fixed checking of the seatingType attribute on exams.
UniTime 4.8 build 98
Course Timetabling
Instructional Offering Detail: Instructor Requirements
- Ensure that only requirements (instructor surveys) from the correct academic session are listed.
- Include instructor surveys for assigned instructors who did not fill in course requirements for the course.
Classes, Class Assignments: Manager Filter
- Added an ability to select multiple managers.
Timetable: Room Filter
- Added an option to include the Room Filter (from the Rooms page) in the Filter section.
- To be enabled by setting unitime.timeGrid.roomFilter to true (defaults to false).
- When room or class filters are used, do not show instructors, curricula, etc. that have no matching classes.
Instructor Survey: Copy Course Requirements
- Corrected copy of courses from a different academic session (the query filling in the remaining courses that the instructor has currently assigned was wrong).
Timetable Grid: Curriculum
- When showing a saved/committed solution, corrected matching of a curriculum reservation when the displayed curriculum has no major.
Class Weights: Number of Weeks Class Weights
- Added "Nbr Weeks Class Weights" option for the Class Weights solver parameter, weighting classes by the number of weeks they are using.
- Classes using the default date pattern have a weight of 1.0, a class meeting only every other week would be weighted 0.5.
Event Management
Events Timetable: Curriculum
- Corrected matching of a curriculum reservation when the displayed curriculum has no major.
Online Student Scheduling
Instructor Schedule Changes
- Corrected change detection when assignment changes are disabled (and there is a Lec-Lec combination with the same external id).
Administration
Timetabling Managers: Update Other Academic Sessions
- Added an ability to update departments and solver groups in the academic sessions with the same academic initiative.
- Academic sessions in the finished status are not included.
- By default, the current and all future sessions (with the same initiative) are selected when a new manager is being added.
- For existing managers, the academic sessions with the same departments and solver groups are selected by default.
Test HQL, Reports: Improved Error Handling
- When the provided HQL is incorrect, display a more meaningful error message.