Releases: UniTime/unitime
Releases Β· UniTime/unitime
UniTime 4.8 build 170
Course Timetabling
Class Assignment: Room Partitions
- Consider room partitions when checking room availability (other non-class events).
Multiple Class Setup: Room-related Columns
- In order to be consistent with the Instructional Offering Configuration page, the order of the room-related columns changed to be: Nbr Rooms, Splt Attd, and Room Ratio.
- Instead of Room Ratio, Nbr Rooms, and Splt Attd.
Edit Scheduling Subpart: Subpart Credit
- Max Units made editable when editing Variable Min/Max credit without the need to change the credit type first (when editing existing credit information).
- Fixed an issue when no units or max units are provided (for a type that requires units/max units) or when the provided units are not a number.
Course Timetabling Solver: Optimization
- In order for the solver to start optimization even when a complete solution cannot be found, added an ability to halt the initial search phase when a maximum number of non-improving iterations is reached.
- This can be controlled by the Search.MaxIdleIterations parameter.
- It defaults to 1000.
- Set to -1 to disable the ability to halt the initial search phase (previous behavior).
- Set to 0 to disable the construction heuristics, going directly to the optimization phases.
- Added an ability to disable the max-idle limitation during the first part of the search, effectively setting up a minimal construction time.
- Parameter Search.MinConstructionTime, which can be in seconds or in percentage of the total time (Termination.TimeOut).
- Defaults to 10% of the total time limit. So, if max-idle is enabled, it will not stop construction or the IFS phase during the first 10% time of the solver run.
- Improved the ability to assign an unassigned class during the optimization phase.
- To enable this, add ;org.cpsolver.coursett.neighbourhoods.Suggestion@0.1 to the following parameters:
- HillClimber.AdditionalNeighbours
- GreatDeluge.AdditionalNeighbours
- SimulatedAnnealing.AdditionalNeighbours
- This is especially needed when the construction phase is disabled or the solver struggles to find a complete solution when one exists.
- To enable this, add ;org.cpsolver.coursett.neighbourhoods.Suggestion@0.1 to the following parameters:
Course Timetabling Solver: Random Student Swap Selection
- Added a neighborhood selection that attempts to swap a student between alternative sections of a course.
- To be used with the Hill Climber (HC), Great Deluge (GD), or Simulated Annealing (SA) algorithms.
- Enable by adding the RandomStudentSwap class to the AdditionalNeighbours properties.
- The selection is only available/enabled when the solver is using a single thread as student class assignments are not included in the solution/
Course Timetabling Solver: Simulated Annealing
- Various improvements and changes in an attempt to make the SA algorithm more reliable.
- Added minimal and maximal temperature.
- Improved temperature training (when SimulatedAnnealing.InitialTemperature is set to -1)
Examination Timetabling
Room Partitions
- Added support for room partitions in the examination timetabling.
Student Scheduling
Student Scheduling Solver: Linked Classes
- Allow one class to be present in multiple Linked Classes distributions between the same two courses.
- This allows for the Linked Classes to overlap with each other, e.g., when most classes can be linked one-to-one, but there are exceptions (e.g., one course has an additional course that can be used with any class of the other course).
Events
Lookup Classes/Examination: Bugfix
- Populate the event filter even when it is not present.
- This fixes an issue caused by a recent change, having the events and rooms parameters incorrectly interpreted.
Edit Event: Meeting Contacts
- Record which meetings have their contacts changed in the Notes.
Administration
Data Exchange: Course Offering XML
- Added an optional attribute class.roomRatio, defaults to 1.
- Added an optional attribute class.splitAttendance for classes with two or more rooms, defaults to false.
Add/Edit Date Pattern: Make Default
- Added a confirmation dialog when the Make Default button is clicked.
- Added an option to hide the Make Default button on this page by setting unitime.pattern.showMakeDefault to false.
- If the Make Default button is disabled, the default date pattern can still be set on the Edit Academic Session page.
Scripts: ECMAScript
- Nashorn is now included in the UniTime distribution.
- Starting with Java 15, ECMAScript has been removed from JDK.
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.