UniTime 4.1 Release Notes
4.1.232
Wed, 19 Jul 2017
Student Scheduling
-
Online Student Scheduling Server: Release Master Lock
When there is no solver cluster (online student scheduling server runs within the Tomcat and there is no master lock), reload the server when requested.
This fixes an issue on the Manage Solvers page where the online scheduling server cannot be reloaded when the server is running locally (there is no cluster).
4.1.231
Fri, 28 Apr 2017
Course Timetabling
-
Automatic Hierarchical Constraints
Improved parsing of the General.AutomaticHierarchicalConstraints parameter.
If there is a date pattern that is not used or that does not exist, do not skip parsing of the rest of the parameter.
Check for English (not localized) versions of the preferences and for preference abbreviations.
Flexible and other constraints (that are not implemented by the GroupConstraint class) are now allowed as well.
Date patterns containing commas must use quotation marks, e.g., Preferred Same Start "Week 1,3,5".
-
Automatic Student Constraints
Added ability to automatically post certain distribution constraints between classes that are attended by the same students
(the given constraints are posted between all classes of a student).
This is only enabled when deterministic student sectioning is used.
The list of constraints that are to be posted (together with their preferences) is given by solver parameter General.AutomaticStudentConstraints.
Contains a comma delimited list of <preference> <constraint>, for example:
Preferred Max 1 Break, Strongly Preferred At Most 6 Hrs, Required 8h Work-Day
By default, the given constraints are posted on every set of classes that are attended by at least 5 students (must be all classes those 5 students are attending).
This can be changed by General.AutomaticStudentConstraints.StudentLimit solver parameter (defaults to 5).
-
Timetable Grid
Added room tooltip when resource is Room and when hovering over a room name (top left corner of each table).
-
Curricula
Last-Like Course Demands: Consider demand offering (Take Course Demands from Offering parameter on a course) when showing last-like enrollments and when Curricula Last Like Course Demands are used.
Multiple Majors: Fixed a null exception thrown when there are last-like or real students matching multiple majors of a multi-major curriculum on Oracle.
-
Class Assignment
Fixed a null exception thrown when there is a student conflict with a class event for a class that is not assigned.
This can happen when the Class Assignment page is configured not to change the past and a class is unassigned later in the term.
Also, do now show student conflicts with canceled classes / meetings.
-
Time Pattern Icons
Fixed an issue that was causing a "Coordinate out of bounds!" error when a time pattern icon for a pattern with more than 7 day combinations was being rendered.
The issue was introduced by a recent change allowing Room Sharing and Instructor Time Preferences grid to run over Sunday.
-
Curriculum Course Demands: Precision Fix
Make sure that the computation of the curriculum-based student course demands does not get stuck due to the floating point precision inaccuracy.
-
Instructor Preferences
Added ability for an instructor to edit his/her preferences, using Courses > Input Data > Instructor Detail page.
Permissions needed: Instructor Detail and Instructor Preferences, but NEVER HasRole permission (which should be reserved for manager roles).
Session/department statuses needed: Owner View (to see the detail page) and Owner Edit (for the ability to edit preferences).
If an instructor exists in two or more departments, there is a Department drop-down on the Instructor Detail page allowing the user to switch departments.
Student Scheduling
-
Banner XE Interface
When dropping a section and the DW action is not available, check for other D% action that can be used.
Log all the exceptions and Banner messages as warnings. Also log all the exceptions when no enrollment change is detected.
This fixes the issue of not seeing the "Section not available for student scheduling." in the log.
-
Course Requests, Student Scheduling Assistant
Added ability to hide up and down arrows in the Course Requests table.
This can be done by setting the application property unitime.enrollment.hideCourseRequestArrows to true (defaults to false).
Event Management
-
Personal Schedule: Examinations and Course-Related Events
Fixed an issue introduced by commit 8d552bf: OfferingCoordinator is not mapped error is shown when looking up a coordinator schedule (role:Coordinator in the event filter).
-
Event Timetable: Arrange Hours Classes
Do not show Arrange Hours classes on the week of January 1.
That is, when a week containing January 1 is selected in the Filter, not All Weeks or All Matching Weeks.
Examinations
-
PDF Reports: Period Chart
Period Chart report: corrected breaking of the report over the week's end.
This fixes an issue of not printing Monday periods in some cases.
Administration
-
Session Roll Forward: Fixed bug with Subject Area Roll Forward
The roll forward has been updated to fail when rolling subject areas forward into a session that does not have departments that match the departments the subject areas should be attached to.
-
Data Exchange: Course Offerings and Course Timetable Exports
Added ability to include individual class meetings in the course offerings and course timetable exports.
This feature can be enabled by setting the tmtbl.export.classMeetings application property to true (defaults to false).
-
HQL Reports: Export HQL
Improved the ability to download a particular HQL report, using UniTime/export?output=hql-report.csv URL.
Academic session can be selected using term parameter.
HQL appearance and admin-only permissions are checked (the user must have the appropriate permissions to be able to get the report).
Report parameter can contain name of the report (instead of unique id).
Individual report parameters can be looked up (no need to retrieve unique ids first), for example:
DEPARTMENT=<deptCode>, SUBJECT=<abbreviation>, ROOM=<name>, or RoomType=<reference>.
-
User Context: Default Academic Session
Added ability to shift current date by a given number of days when computing default academic session.
Application property unitime.session.defaultSessionShiftDays, defaults to 0.
This could be used, e.g., to start showing users the next academic session two weeks before the classes / events start.
4.1.218
Tue, 10 Jan 2017
Course Timetabling
-
Class: Change Managing Department
Do not delete the related class event if committed assignment is not deleted.
This fixes an issue of changing a controlling course to another subject area that has the same solver group
(the related class event was incorrectly deleted).
When a class event is being deleted, do not delete past meetings when tmtbl.classAssign.changePastMeetings is false.
Update the class event name when the controlling course of the class has changed.
-
Back-to-Back Distribution Preference
Avoid issues (especially ArrayIndexOutOfBoundsException) when classes that are in a back-to-back constraint can partially overlap in time.
-
Max N Hours A Day Distribution Preference
Conflict checking for the Max N Hours A Day group constraint corrected: do not return a constant variable (i.e., a committed class of some other problem) as a conflict.
Also, return the evaluated placement as a conflict when there is not enough time on the day for the class without unassigning a constant variable.
Fixed an issue in conflict checking of Max N Hours A Day group constraint to prevent the constraint from returning null conflicts when there are too many committed classes on a day.
-
Timetable Grid: Subject Area Resource
Added Subject Area as a Resource (showing all classes of a particular subject area in one table).
When Department is selected as a Resource, show classes by (controlling) department even when there is no departmental spread constraint created (solver mode).
-
Instructional Offering, Classes: Highlight Class Preferences
Added ability to set whether preferences that are set directly on a class are to be highlighted using user settings.
There is a new settings (named highlightClassPrefs) with the following values:
yes ... class preferences are to be highlighted
no ... class preferences are not to be highlighted
not set ... use the system default, as it is set using unitime.preferences.highlightClassPrefs application property
-
Room Sharing / Instructor Time Preferences Grid
Room Sharing / Instructor Time Preferences grid changed to allow for the week to run over Sunday.
For example unitime.room.sharingMode5=Su-Th 8am-9pm|6|3|96|252|6 would create a mode going from Sunday till Thursday, in half-hours between 8am and 9pm.
-
Google Maps API Keys
Google Maps Static API (used on Rooms, Room Detail, and in the mouseover popups):
API key can be provided in the unitime.minimap.apikey configuration property.
API secret for digital signatures can be provided in the unitime.minimap.secret configuration property.
See https://developers.google.com/maps/documentation/static-maps/get-api-key for more details.
Google Maps Standard API (used on Room Edit and Building Edit to enter/show coordinates):
API key can be provided in the unitime.coordinates.googlemap.apikey configuration property.
See https://developers.google.com/maps/documentation/javascript/get-api-key for more details.
Also, use the Google Maps v3 API (maps.googleapis.com) instead of the Google Maps v2 API (maps.google.com).
-
Instuctional Offerings, Classes, Examinations: Back
Encode the entered course number to UTF-8 for the navigation / back.
This fixes an issue with URL encoding when course number contains non-ASCII characters.
-
Add/Edit Curriculum
Shared Students Tooltip: Computation of projected students that are shared between two or more courses corrected.
Event Management
-
Event Timetable: Arrange Hours Classes
Added ability to show Event Detail page for Arrange Hours classes (classes that are not assigned in time and hence have no ClassEvent associated with).
This includes the Enrollments table (showing students enrolled in the class).
The Event Detail page for an arrange hours class is only available to users with Event Detail Arrange Hour Class permission.
The related permission check requires for the user to either also have the Class Detail permission for the class in question, or that the user is listed among the course coordinators or instructors of the class.
-
Events, Room Availability: Display Room Event Note
Display the room note on the top of the room grid on the Events and Room Availability pages (when showing a time grid for a single room).
Use white-space:pre-wrap for the room note (follow \n, but wrap the long lines if needed).
-
Events: Display of Class Events
It is now possible to restrict departmental managers to only see class events of their department(s) until the schedule is published.
That is until the session status includes no-role class schedule (e.g., Timetable Published).
Set unitime.events.hasRole.checkSessionStatusForClasses to true to enable this restriction (default is false, i.e., work as before).
-
Personal Schedule
Instructor: Added an option to include indirect examinations (that is cases where an instructor is assigned to a class for which the exam is held).
To enable this, set unitime.events.exams.considerClassInstructors to true.
If set to false, which is also the default, only exams that have the person assigned as instructor would show.
When showing an exam (or a course-related event) that is set on multiple classes, only show classes that relates to the student (or instructor).
Show all owners when the person is also the instructor associated directly with the exam or the contact of the course-related event.
Show all owners that the person is coordinating (if any).
Multiple Rooms Warning: The following warning has been added at the bottom of the page when a student is looking at a personal schedule and there
is at least one class or exam with two meetings at the same date and time with different rooms (e.g., an exam is placed in two or more rooms):
When multiple rooms are listed, please consult your instructor regarding your class or examination room location.
Student Scheduling
-
Request Groups (Batch)
Improved ability to keep students of the same request group together by shuffling students of a request group that are spread over multiple sections into a single section or into a fewer number of sections.
-
Reservations
When enumerating possible enrollments for a course request, do not skip enrollments without a reservation if there is a matching reservation that is not marked as must be used.
This change fixes an issue related to the server's capability to keep the student's current enrollment by creating a dummy reservation for it.
A student was not able to move into a different section in certain cases.
-
Online Student Scheduling Reports
Make sure each student is present only once in the student scheduling model that is used to generate the online scheduling report.
This fixes an issue with showing wrong numbers on the Time & Availability Conflicts report.
-
Student Course Requests
Student Course Requests page now checks for student eligibility to register.
This means that student status can be used to determine whether the wait-listing is enabled, if a student is allowed to make any changes, etc.
-
Online Student Scheduling Dashboard
Allow student status change during assistant mode and during registration (when Student Course Requests page can be used).
Classes for student dialog: Include Enrolled column containing student class enrollment date when the student is enrolled and course request date when not enrolled.
-
Student Sectioning Solver Reports, Online Student Scheduling Reports
Not-Assigned Course Requests: Added a new report showing individual course requests that are left unassigned.
Added ability to show all classes of an individual student when a row containing student unique id (in the first column named __Student) is clicked.
Export CSV: Do not export the first column when the column name starts with __ (contains unique id of a class, offering, exam, student, etc.).
-
Student Scheduling Assistnat, Student Scheduling Dashboard, Enrollments tables
Show room mouse-over tooltips on various pages, including
Student Scheduling Assistant: Class Schedule tab
Course Finder: List of Classes tab
Class, Instructional Offering, Examination, Event, Instructor: Enrollments table
Student Scheduling Dashboard: Enrollments tab, Enrollments of student table
API
-
Instructors API
Added an instructors API that returns a list of instructors for the given department or academic session.
Examples
GET UniTime/api/instructors?id=<DEP_ID>
GET UniTime/api/instructors?term=<TERM>&code=<DEPT_CODE>
GET UniTime/api/instructors?term=<TERM>
Permission Api Retrieve Instructors is required.
-
Student Groups API
Added a student groups API that returns a list of student groups for the given academic session.
Example: GET UniTime/api/student-groups?term=<TERM>
Permission Api Retrieve Student Groups is required.
-
Curricula API
Added a curricula API that returns a list of curricula for the given academic session.
Example: GET UniTime/api/curricula?term=<TERM>
Permission Api Retrieve Curricula is needed.
Same filter parameters as on the Curricula page can be used to filter the results (with c: prefix), examples:
GET UniTime/api/curricula?term<TERM>&c:department=0101&c:area=A
GET UniTime/api/curricula?term<TERM>&c:text=A/M1+or+A/M2
To retrieve more details about a particular curriculum, use:
GET UniTime/api/curricula?id=<CURR_ID> (details about a particular curriculum)
GET UniTime/api/curricula?term<TERM>&c:text=A/M1+or+A/M2&details=1 (return more information for all matching curricula)
Administration
-
Edit Roles: Fixed Delete
Edit Roles (bulk edit page for user roles) did not delete roles that were marked for deletion.
-
Academic Areas, Classifications, Majors: Delete
Do not allow an academic area, a classification, or a major to be deleted when it is being used (there is a curriculum associated with it).
When an academic area is deleted, delete all orphaned majors and minors as well.
-
GWT-based Administration Pages
Show the page loading (page grayed out, a blue message in the middle) when working.
In some cases, the function is wrapped in a deferred command to ensure that the page loading widget is shown immediately.
This is to ensure that no button is pressed multiple times.
4.1.197
Wed, 27 Jul 2016
Course Timetabling
-
Reservations: Show Class Suffixes
Added ability to show class suffixes (external ids) on the Reservations page and in the Reservations table.
Enable by setting unitime.reservations.showClassSuffixes to true (defaults to false).
-
Class Duration Model
Avoid NullPointerException when there is no date pattern (i.e., there is no default date pattern defined for the term).
-
Edit Course Offering
Fixed an issue that was causing a cross-listed offering to loose all coordinators when a not controlling course was edited.
Student Scheduling
-
Distributions
Linked Classes: Fixed computation of the Linked Classes constraint when it contains classes of two or more configurations of a course.
Add / Edit / Delete Distribution Preference: Notify the online student scheduling about the change, if needed.
-
Reservations (Online)
Reservation Limit: Do not cap the reservation limit (by the size of its classes / configurations) when the reservation allows for over the limit assignments.
Guess Reservation: Do not consider reservation limit when the reservation must be used.
Improve server's capability to keep the student's current enrollment (e.g., when there is a new reservation which the already enrolled students do not follow).
If there are reservations: allow user to keep the current enrollment by providing a dummy reservation for it.
-
Request Groups (Batch)
Added ability to filter which student groups will be used as request groups by the solver.
Students of a "request group" are to be kept together as much as possible.
Solver parameter Load.RequestGroupRegExp, containing a regular expression to be matched with student group name (when present).
Examination Timetabling
-
Examination Reports: Unavailability Conflicts
When counting conflicts from the database, do not create conflicts with no students.
This fixes the Direct Student Conflicts report (Examination Reports page).
Zero conflicts lines shown when the report is computed from the database and the "Show classes/courses" toggle is unchecked.
-
Examination Reports: Room Splits
Show all the assigned rooms of an exam that is split between more than four rooms.
With this change 3rd, 4th, 5th, ... room columns are added as needed (the report is no longer limited to four rooms).
-
Required Room Group of Strongly Discouraged Rooms
Database Load: If an exam is requiring a room group that contains strongly discouraged rooms, allow the exam to use these rooms even if there is no direct preference on such rooms on the exam.
Event Management
-
Email Notifications
Event room messages are now included in the confirmation email.
-
Time Selector
Fixed an issue showing 12:00 am instead of midnight in the end time of an interval selection (e.g., when adding an event).
Room Management
-
Permissions
Events: Fixed a JavaScript exception thrown when the user can edit event availability (has Room Edit Event Availability permission) but cannot edit event department (does not have Room Edit Change Event Properties permission).
Room Sharing: Do not allow a departmental manager to remove a department from the room sharing table that does not belong to him/her (if the room is not being controlled by a department of the manager).
Show room related properties (controlling department, room sharing, ignore distance conflicts, etc.):
A user that is allowed to edit course related room properties does not need to have Classes or Instructional Offerings permission.
That is, a user with RoomEditChangeRoomProperties, RoomEditChangeControll, RoomDetailAvailability, or RoomEditAvailability permission can also see course related room properties.
Show examination related properties (examination capacity, examination problems, period preferences):
A user that is allowed to edit examination related room properties does not need to have Examinations permission.
That is, a user with RoomEditChangeExaminationStatus, or RoomDetailPeriodPreferences permission can also see examination related room properties.
Show event related properties (event department, status, note, break time, event availability):
a user that is allowed to edit event related room properties does not need to have Events permission.
That is, a user with RoomEditChangeEventProperties, or RoomDetailEventAvailability, or RoomEditEventAvailability cam also see event related room properties.
-
Room Pictures
Rooms, Room Detail: added a mouse-over which shows a bigger picture (limited to 800 x 600 pixels).
Rooms API: fixed an issue with some pictures not being uploaded / deleted when the API is called multiple times in a sequence for a particular room.
Other
-
Security: Possible SQL Injection Fixed
Following features were corrected:
Instructional Offerings: Search, Worksheet PDF (course number)
Instructors: Manage Instructors List (department code)
Buildings: Update Rooms (room classifications)
-
API: Buildings
Added buildings API that can
return list of buildings for an academic session (GET api/buildings?term=<TERM> or GET api/buildings?sessionId=<TERM ID>)
creature or update a building (using POST request with the building as a payload)
delete a building (DELETE api/buildings?id=<BUILDING ID> or DELETE api/buildings?term=<TERM>&externalId=<EXTID> or DELETE api/buildings?term=<TERM>&building=<ABBV>)
Permissions:
ApiRetrieveRooms to retrieve list of buildings (GET request)
ApiRoomEdit to create, update, and delete a room, together with the appropriate BuildingAdd, BuildingEdit and BuildingDelete permission (POST and DELETE requests)
4.1.186
Sat, 4 Jun 2016
Event Management
-
Resource Lookup (Personal Timetable)
Lookup people only be external id (People Lookup is configured to only return people with an external id anyway).
This fixes an issue on the Personal Timetable: no schedule is displayed due to an instructor record with matching email or career account but no external id.
-
Display of Arrange Hours Classes
Improved event display of arranged hours classes:
Only display required rooms as assigned room (Location column).
Include effective date pattern in the display (Date column).
Arrange Hours message moved to Published Time column when Date column shows the date pattern.
Student Scheduling
-
Course Finder: Details
Default Course Detail Provider: added ability to include course catalog link in the course details.
-
Scheduling Assistant: Display of Arrange Hours Classes
Improved display of arranged hours classes:
Include required room(s) as assigned room(s) (Room column).
Include effective date pattern as assigned date (Date column).
-
Scheduling Assistant: Alternatives
To avoid confusion, show No Dates (in the Date column) and/or No Room (in the Room column) for a class with no date pattern and/or no room respectively.
If there are no alternatives, make sure that each course is mentioned in the conflict message only once.
-
Student Scheduling: Distributions
Do not skip same time sections when there is a Linked Classes constraint involved or when the section is involved in an Ignore Student Conflicts constraint.
Linked Classes: Added ability to force students to use the linked classes when they are requesting both courses.
There is a new solver parameter for this, named LinkedClasses.mustBeUsed, defaults to false.
Batch Scheduling: In the database load, assign students only after the distribution constraints has been loaded in.
Course Timetabling
-
Curricula Last-Like Course Demands, Curricula Requests Course Demands
Fixed a null exception when there are made up students (and include other students is enabled).
-
Instructional Offering Detail: Permissions
Class Delete No Enrollment Check split into the following permissions:
Class Delete No Enrollment Check (only applies to classes -- allows to delete a class which has students enrolled in it).
Offering Make Not Offered No Enrollment Check (allows to make an offering not offered when there are students enrolled in it).
Course Offering Delete From Cross List No Enrollment Check (allows to remove a course from a cross-list when it has students enrolled in it).
-
Course Offering: Show/Edit External Id
Instructional Offering Detail: Added ability to show external ids of a course.
Course external ids are shown when unitime.course.showExternalIds is set to true (defaults to false).
Add/Edit Course Offering: Added ability to edit external id of a course.
Course external id is editable when unitime.course.editExternalIds is set to true (defaults to false).
-
Course Timetabling: N Hour Work Day
Corrected the constraint check in the N Hour Work Day constraint.
Examination Timetabling
-
Examination Reports
Room Splits: fixed PDF/CSV version of the Room Splits report.
If an exam is split into 4 rooms, 3rd room is printed two times (as 3rd and 4th room) instead of printing the 4th room.
-
Examination Rooms
Fixed a JavaScript exception thrown when trying to edit an examination room for a problem with no periods.
Do not show period preferences table for an examination problem with no periods.
Make sure user cannot change examination types that are not visible to him/her.
-
Room Filter
When showing examination rooms, make sure that rooms which have no room sharing (no room departments) are also present in the list.
Other
-
Data Exchange: Academic Session Restore
Fixed an IndexOutOfBoundsException when Class_.managingDept is not set in the imported file.
Fixed an NullPointerException when Class_.managingDept is not set in the imported file.
-
UniTime Dialog Box: Enter To Submit
When ENTER is clicked, stop propagation of the event before executing the submit handler.
This is to prevent the confirmation to be clicked two times when ENTER is pressed and focus is on the Yes button.
-
Application Configuration: Date Pattern Format
Corrected extended variant of the unitime.pattern.format.useDates property (using extended instead of external).
4.1.175
Wed, 20 Apr 2016
Event Management
-
Events: List of Meetings
Make sure all the lines of event name, section, and title are always displayed (e.g., when sorting by date and looking at a cross-listed class).
Split instructors over multiple meeting lines (just like event name, section, title and note).
-
iCalendar Export
Added ability to avoid setting the ORGANIZER of an event (using the ATTENDEE with the ORGANIZER role instead).
This was done in an attempt to avoid receiving unsolicited accept/decline messages while keeping the instructor (or the main contact) of the event visible.
This feature is driven by the application property unitime.events.ics_set_organizer, which defaults to true (the existing behavior).
-
Event Detail: Examination Conflicts
Enrollments table of an examination event: include more than two exams on a day and back-to-back student conflicts.
Student Scheduling
-
Online Student Scheduling Dashboard during registration
Fixed the ability to use the Online Student Scheduling Dashboard during student registration phase (null exception when executing an action).
The issue was created in commit e486db4, with the ability to provide a custom action factory.
-
Class Detail: Enrollments
Fixed a Null exception preventing the Enrollment table from showing on a class.
The issue was introduced by commit 811bade, with the ability to exclude certain departments from student scheduling.
Rooms
-
Add/Edit Room: Data Validation
Room must have at least one department check disabled.
-
Edit Room: Room X does not exist
Corrected returned session information when the academic session is changed on the Rooms page (event management).
When user did not have a matching role in the selected academic session, wrong session information was returned.
This caused some issues when the user attempted to edit the room in such a case.
-
Rooms: Sort
Corrected sort by a number when there are Nulls in the table.
-
Rooms: All Departments
When a room is being shared among all departments (and there are more than three departments), display All instead of listing all the departments in the Departments column.
-
Room Features: Create/Update Room Feature
Fixed an issue causing the page not to work when there are no room fetaure types defined in the system.
-
Rooms: Permission Fixes
Rooms, Room Detail: do not check for Events permission.
This fixes the "Failed to load rooms: Access denied for Events" exception when the user is not allowed to see the events for the selected term.
Room Detail: show event properties after a room update if the uses has the RoomEditChangeEventProperties permission (when Events permission is not given).
Localization
-
Class Detail: Instructors
The small table with instructors now has localized headers.
-
Events
Provided a separate label for person's name (as opposed to a room name or an event name).
A few tweaks in the Czech translations.
Course Timetabling
-
Solution Commit / Uncommit
When a solution is committed or uncommitted, force solution refresh along the cluster.
Other
-
Roll Forward: Room Preferences on Departments
Neutral preference check corrected: do not roll or create Neutral room preferences on departments.
-
Roll Forward: Examination Configuration
Non-university location lookup: only lookup the location by its permanent id and session id (just like for the ordinary rooms).
This fixes the issue of rolling forward examination room information when the non-university location does not have a controlling department.
-
Anonymous User Context
UserContext.setProperty: do not set user data for an anonymous user.
This fixes the "ORA-01400: cannot insert NULL into (USER_DATA.EXTERNAL_UID)" exception when using an ICS feed that was created for an unauthenticated user.
-
Data Exchange: HQL Reports
Changed the exported report XML to comply with the Reports.dtd (flag elements are directly under report element).
Changed the importer to import both versions of the XML (flag elements are under report or under flags element).
-
Edit Date Pattern: Navigation
Added Previous and Next buttons on the Edit Date Pattern page.
-
Edit Time Pattern: Navigation
Added Previous and Next buttons on the Edit Time Pattern page.
4.1.164
Fri, 18 Mar 2016
Course Timetabling
-
Class Duration Types
Added ability to define different ways how class duration is entered and used in the system (to extend the former Minutes per Week selection).
There is a new page (Administration > Other > Class Duration Types), where the class duration types can be managed.
Permission ClassDurationTypes is needed to access the page, ClassDurationTypeEdit is needed to make changes.
Default duration type can be defined on an academic session, it can be overridden on the instructional offering configuration level (Instructional Offering Configuration page).
Name of the default duration type is used in the column headers (Classes, Instructional Offerings), abbreviations are used to suffix durations that are using a non-default duration type.
Following class duration types have been implemented:
Minutes per Week (default): this is the existing behavior (minutes per week == number of meetings in a week x minutes per meeting)
Average Weekly Minutes: average number of minutes a class takes during a week (weekly minutes = number of meetings x minutes per meeting x number of weeks of the date pattern / number of weeks in the term)
Parameter: number of weeks in the term (defaults to the number of weeks of the default date pattern)
Semester Minutes: number of minutes in the semester (semester minutes == number of meetings x minutes per meeting x number of weeks of the date pattern)
Semester Hours: number of hours in the semester (semester hours == number of meetings x minutes per meeting x number of weeks of the date pattern / minutes in an hour)
Parameter: number of minutes in an hour (defaults to 50); an hour is meant as a lesson or "hour of instruction"
Meetings Minutes: number of minutes of all the meetings, excluding vacations (meeting minutes == number of meetings based on the date pattern x minutes per meeting)
Parameters: allowed variation of the meeting minutes, expressed as lower and upper bound (defaults to 0.95,1.10 -- meaning a class can have 5% less time, combinations with 10% more time will be also considered).
If the number of meetings based on the date pattern exceeds the desired number of meeting minutes, only meetings covering the given number of meeting minutes are created.
Meeting Hours: just like meeting minutes, but with hours (meeting hours == number of meetings based on the date pattern x minutes per meeting / minutes in an hour)
Parameters: number of minutes in an hour and the allowed variation of the meeting minutes (defaults to 50,0.95,1.10 -- 50 minutes in an hour, 5% less time allowed, combinations with up to 10% excess time are considered).
It is possible to hide class duration types that are not to be used by the users.
If only one type is visible, there is no selection of the class duration type on the Instructional Offering Configuration page.
-
Cancelled Classes
Added ability to cancel a class.
Multiple Class Setup page: class with enrollments cannot be deleted, but it could be cancelled instead.
Cancelled classes retain their committed assignment, but the appropriate class event is cancelled.
Cancelled classes are not loaded into the course timetabling solver.
Cancelled classes cannot be edited or re-assigned and they do not block the room or instructor.
When a cancelled class is reopened, the appropriate event is also re-approved.
This could cause conflicts, that have to be manually resolved.
In student scheduling, cancelled classes are avoided (no valid enrollment can contain a cancelled class).
In online student scheduling, it is possible to keep existing students in cancelled classes when solver configuration parameter named Enrollment.CanKeepCancelledClass is set to true (defaults to false).
New permissions:
Class Delete: ability to delete a class (class cannot be deleted when there is a committed solution and at least one student enrolled in the class)
Class Delete No Enrollment Check: this permission overrides the enrollment check from the Class Delete permission (not given to any role by default)
Class Cancel: ability to cancel a class (there must be a committed solution)
The Class Delete and Class Cancel permissions are by default given to all roles that have Multiple Class Setup Class and / or Class Edit permissions.
Added a new permission (named Class Delete No Enrollment Check) that overrides the enrollment check from the Class Delete permission.
No role is given this permission by default.
Make Not-Offered: It is allowed to make an offering not-offered only when there are no students enrolled, there is no committed solution, or the user has the Class Delete No Enrollment Check permission.
Cross Lists: it is allowed to remove a cross-listed course from an offering only when there are no students enrolled, there is no committed solution, or the user has the Class Delete No Enrollment Check permission.
-
Conflicting Classes
Class Detail: Display conflicting classes.
There is a new table called Conflicting Classes, just below the Timetable section.
The table is only visible when the class is conflicting with some other class (or classes).
The same checking as on the Class Assignment page is used.
Instructional Offering Detail: Highlight conflicting classes with a light red background.
Conflicting classes are listed in the tool-tip (more details are provided on the Class Detail page, see above).
Conflict checking: avoid showing conflicts between classes that can overlap because of the Can Share Room or the Meet Together distribution.
-
Instructional Methods
Added instructional methods lookup table. Each method has a reference and a label.
Example instructional methods: Online, Hybrid, or Face-to-Face.
Instructional offering configuration can have an instructional method set.
If set, instructional method appears on various pages, including the Scheduling Assistant and Events.
It is usually included in the Type column, next to the instructional type, e.g., Lecture (Online).
-
Multiple-Major Curricula
A curriculum has a new property named multiple majors (boolean, default to false).
If a curriculum is marked as multiple-major: a student meets the curriculum only when he/she has all the selected majors (not one of the selected).
A multiple-major curriculum will inherit course projections from curricula that have no or one of the matching majors.
There can be multiple curricula that get combined together to form a multiple-major curriculum.
If a course is on several curricula, the highest percent share (of the particular classification) will be used.
These shares can be overridden on the multiple-major curriculum, but no courses can be deleted (course projection must be set to zero instead).
The parent (single or no major curricula) can have zero requested students, only acting as templates for the multiple-major curricula.
If there is no multiple-major curriculum, everything works like before.
-
Reservations
Remember the last sort in the reservation cookie.
Added Previous / Next buttons (Edit Reservation).
Added confirmation message when deleting a reservation (Edit Reservation).
Rooms
-
Overview
The room pages have been completely rewritten using the Google Web Toolkit.
The new pages are localizable, they are using the same Room Filter as is used in the event management, and they are allowing a change to propagate over to the future academic sessions as well.
It is also possible for users that are not managers in UniTime (e.g., instructors) and/or that have no relation to a particular department (e.g., students) to be allowed to use the new rooms pages.
When accessed from the Events menu, the Rooms, Room Groups and Room Features pages contain the selection of an academic session, just like the Events page.
It is possible to use the old pages by setting the application property unitime.legacy.rooms to true (defaults to false).
-
Rooms
The Rooms page now contains a Room Filter and a table with many features.
The table of rooms can be sorted by a given column, can show pretty much any room property, and it can be exported to PDF or CSV.
-
Add/Edit Room
Add Room and Edit Room page now contains all the functionality of the various edit pages that were accessible from the Room Detail page.
Moreover, it is now possible to make the update the room in the (selected) future academic sessions as well.
Only selected groups of properties can be updated in a particular future session.
-
Edit Room Departments
The page can be used to assign multiple rooms to a particular department or examination problem).
The page is only accessible when a department or an examination problem is selected in the Room Filter.
The page is now using the same table of rooms as the Rooms page and it is populated by all the rooms matching the Room Filter (except the selected department / examination problem).
Rooms not matching the Room Filter are left unchanged.
-
Room Groups / Features
The Room Groups and Room Features pages also use the Room Filter to list rooms (and matching room features and groups).
The Add and Edit pages are also using the same table as on the Rooms page with the list of rooms populated by all the rooms matching the Room Filter.
Rooms not matching the Room Filter are left unchanged.
When creating / updating a room group or feature, it is possible to select one or more future academic sessions that would be updated as well.
Besides of the properties of the group (or feature) like name, abbreviation department, etc., only rooms with a change are updated.
This means that the future group (or feature) is NOT reset to the rooms that are currently selected on the group (or feature).
Examination Timetabling
-
Examination Status
Added ability to set examination status individually for each examination type.
This examination status, if set, overrides the academic session status (for all users).
Examination statues can be defined on the Administration > Other > Status Types page (Apply: Examinations).
The following statuses are created by default: Examination Disabled, Examination Data Entry, Examination Timetabling, and Examination Published.
Examination statuses can be set on the Administration > Academic Sessions > Examination Statuses page.
This allows for each examination problem to be viewed, edited, timetabled, and published at a different time.
It is also possible to attach examination managers to each examination type (for the current academic session).
If this relation is defined, only the selected manager(s) can view, edit, or timetable the given examination problem (based on the status).
If this relation is NOT defined, all examination managers can view, edit, or timetable all examination problems.
This relation is also to be edited on the Administration > Academic Sessions > Examination Statuses page.
Only managers with a role that is academic session dependent and that allows accessing the examination solver are listed.
-
Data Exchange
Course Offering Export: More examination properties are now included (print offset, length, etc.).
Course Offering Import: Added ability to import examinations together with the offerings (including period and room assignments).
Batch Student Scheduling
-
Minimal Perturbation Mode
In priority and equal weighting, the difference of an enrollment (from the initial one) is computed as an average using the following schema:
an initial section counts as 1
same choice section counts as 0.9 (parameter StudentWeights.SameChoice)
same time section counts as 0.7 (parameter StudentWeights.SameTime)
different time section counts as 0
Non-initial enrollment weight is penalized with weight StudentWeights.Perturbation (defaults to 0.100).
When MPP is enabled, solution info contains the following three new properties:
Perturbations: same section assigned (% of initial section assigned over all course requests with initial enrollment)
Perturbations: same choice assigned (% of same time and instructor section assigned over all course requests with initial enrollment)
Perturbations: same time assigned (% of same time section assigned over all course requests with initial enrollment)
When Sectioning.KeepInitialAssignments is set to true (defaults to false), only the initial value is in the variable’s domain (when there is an initial value).
Also, there is a new global constraint (named FixInitialAssignments) that prevents unassignment of an initial value by another global constraint (limits, reservations).
-
Request Groups
Added ability to keep students of the same group together.
Measured as an average probability of two students (of a group) that are requesting the same course being given the same section (of the same subpart).
There is a new weight (named StudentWeights.SameGroup, defaults to 0.1) expressing how much this criterion affects the student weight (in both priority and equal weighting).
This means that if a student is being enrolled into a completely different section, the weight of such an enrollment is decreased by 10%
(the metric reflects how much are the students spread between the sections of the course).
There is a new Request Groups report on the Student Scheduling Solver Reports page.
Request groups are loaded in only when the solver parameter Load.RequestGroups is set to true, default is false
-
Interactive Changes
Added ability to use the Scheduling Assistant page to make changes in a student's schedule (current solution).
It is also possible to change input data (course and free time requests of a student).
This possibility can be disabled by setting the solver configuration parameter Interactive.UpdateCourseRequests to false (defaults to true).
-
Student Filter
Added ability to filter what student will get loaded into the batch student scheduling solver using a boolean query.
Solver parameter Load.StudentQuery, when set each student must match the query to be loaded in.
Students not matching the query would only count against the limits, just like with the no-batch status.
The parameter could be used together with the no-batch student status (both filters will apply in such a case).
Available query terms (similar to the Filter of the Student Dashboard):
status (reference of the student status)
area (abbreviation of the academic area)
major (code of the academic major)
clasf or classification (code of the academic classification)
group (code of the student group)
accommodation (code of the student accommodation)
student (external id of the student)
Examples:
group:G1 or group:G2
Only students of groups G1 and G2 will get loaded in.
area:A and (major:M1 or major:M2)
Only student of area A and major M1 or M2 will get loaded in.
status:Batch
Only students of Batch status will get loaded in.
Online Student Scheduling
-
Online Student Scheduling Dashboard
Added ability to use the Online Student Scheduling Dashboard page during the registration phase (Course Requests page is available to students).
This is done by leveraging the DatabaseServer (version of the online scheduling server that does not keep any data in memory).
-
Custom Interfaces
Added ability to use automated wait-listing together with the student enrollment provider interface.
Added ability to load course requests from an external system when there are none in UniTime (for a student).
Added ability to display degree plans from an external system.
-
Student Scheduling Assistant
Added ability to hide Rearrange Schedule button.
By setting unitime.enrollment.allowScheduleReset to false, defaults to true.
If made hidden, it is possible to show the button for advisors by setting unitime.enrollment.allowScheduleReset.manager to true.
Added ability to make enrolled course demands not editable (they can still be deleted, but it is harder to accidentally drop a course).
By setting unitime.enrollment.disableAssignedRequests to true, defaults to false.
If enrolled demands are made read-only, it is possible to make them editable for advisors by setting unitime.enrollment.disableAssignedRequests.manager to false.
Added ability to display a confirmation message when dropping a course.
By setting unitime.enrollment.confirmCourseDrop to true, defaults to false
Message: Together with other registration changes, the course {0} will be dropped. Do you want to proceed?
Where {0} is the course or courses that are to be dropped.
When there is an Arrange Hours class in the schedule, the following message is displayed at the top of the Time Grid tab.
This schedule only displays classes with assigned time. To see your full list of classes, please open the List of classes tab.
The message has a light blue background, same as other info messages.
-
Exclude Some Departments from Student Scheduling
There is a new ability to exclude some departments completely from student scheduling.
This is controlled by a new toggle that is present on each department (named Allow Student Scheduling on the Add/Edit Department page).
It defaults to true (student scheduling is enabled for the department).
When a department is excluded, all courses controlled by this department are not even loaded into the solver (both batch and online).
Students cannot see or take courses from the excluded department(s).
Instructional offerings that have all courses excluded from student scheduling do not need locking.
If all departments of a solver group are excluded from student scheduling, the commit restriction during online student scheduling phase does not apply to the solutions of such a solver group.
The online student scheduling server does not get automatically reloaded when the Allow Student Scheduling toggle is changed on a particular department during the online student scheduling phase.
It has to be reloaded manually, using the Manage Solvers page.
Other Improvements
-
iCalendar Queries
Automatically hash calendar queries to make the iCalendar URLs much shorter.
This is to overcome the 256 character limit on a subscribed calendar URL in Google Calendar.
Hashed queries are persisted in UniTime and they are automatically removed if not used for 92 days (can be changed by unitime.cleanup.hashedQueries property).
This feature can be disabled by setting the application property unitime.encode.hash to false.
-
Student Group Timetable
On the Events Timetable page, it is now possible to select a student group.
If a student group is selected, all classes / exams, and course-related events of students of the selected student group are displayed.
It is possible to hide some events by defining a minimal enrollment parameter (see below).
Parameters:
unitime.events.group.minimalEnrollment
Minimal enrollment for a class event to appear in the results (given as % of the group size or as an absolute number).
For instance, set it to 5 (only classes with at least 5 students of the group are shown) or to 10% (limit is 10% of the number of students in the group).
unitime.events.group.showGroupEnrollment
On the Events / Timetable page, count the enrollments only within the group (may be slow).
If set to true, enrollment field shows the number of students of the group enrolled in the class / exam / course related event (default is false).
GwtConstants: timeGridStudentGroupDoesNotOverlap
If true, it is assumed that there are no overlaps in the events of the group — the display is like on the personal timetable or when a single week / room is selected (defaults to false).
This property needs to be set in the JavaSource/org/unitime/timetable/gwt/resources/GwtConstants.properties before the build.
-
People Lookup dialog
Added individual lookup permissions to be able to filter what sources can be searched (by a user of the given role).
The following permissions were added:
Can Lookup Students (search student table)
Can Lookup Instructor (search departmental_instructor table)
Can Lookup Staff (search staff table)
Can Lookup Managers (search timetable_manager table)
Can Lookup Event Contacts (search event_contact table)
Can Lookup Ldap (query LDAP directory, if configured)
By default, all roles that can use the People Lookup dialog can search through all the sources.
On the personal schedule (event management), if another person is looked up, the new permissions are also used to filter the role:
Can Lookup Students is needed for the Student role (person is enrolled in a class, an exam, or a course related event as a student).
Can Lookup Instructors is needed for the Instructor and Coordinator roles (person is assigned to a class or an exam as an instructor or coordinator).
Can Lookup Event Contacts is needed for the Contact role (person is listed among contacts of the event).
-
UniTime RESTful API
UniTime now offers a number of RESTful APIs (many of which have been merged back to UniTime 3.5 and 4.0), using JSON messages.
Most APIs are for getting data out of UniTime, but there are a few exceptions.
Following connectors have been created so far: (including UniTime 3.5 and 4.0)
/api/events: ability to retrieve events (using the EventInterface class converted to JSON, example: GET UniTime/api/events?type=PERSON&ext=1001&term=Fal2010)
/api/json: JSON interface for GWT calls (that implement the GwtRpcRequest interface)
/api/exchange: to export/import UniTime's data exchange XML files
export example: GET UniTime/api/exchange?term=Fal2010&type=students
import example: POST UniTime/api/exchange (with the XML as payload)
/api/roles?id=<externalId> returns a list of academic sessions (and roles) for a person (returns a list of academic sessions when there is no id parameter)
/api/enrollments?eventId=<id> returns student enrollments for an event, a class (when classId parameter is used instead),
an exam (examId), a course offering (courseId), an instructional offering (offeringId), or instructional offering configuration (configId)
/api/instructor-schedule?id=<externalId>&term=<term> returns classes, courses, and examinations assigned to an instructor.
/api/class-info?classId=<id> returns information about a class (including assigned instructors and coordinators)
Following connectors are only available in UniTime 4.1:
/api/rooms: ability to retrieve rooms (using RoomDetailInterface class converted to JSON, example GET UniTime/api/rooms?r:building=EDUC)
The rooms API can be also used to create, update and delete rooms and to retrieve, upload and delete room pictures.
/api/sectioning: online student scheduling api (covering all functionality of the SectioningService)
The SectioningService is used by the Online Student Scheduling Assistant and the Online Student Scheduling Dashboard pages.
Example: POST UniTime/api/sectioning?term=Fal2010&studentId=1001&operation=section (with the payload containing course requests and optionally the previous student schedule).
Each connector has the appropriate permission (see Api... permissions), with the ability to either use HTTP-simple authentication or an API token.
It is possible to change the hibernate cache mode for a particular API connector by setting the unitime.api.X.cacheMode application property (where X is the connector name).
For example, setting unitime.api.enrollments.cacheMode=REFRESH will make the /api/enrollments connector to never read the hibernate cache, but it will keep it updated.
-
Course Timetabling Solver
Default search algorithm changed to use Great Deluge during the improvement phase.