Skip to content

Releases: UniTime/unitime

UniTime 4.7 build 106

05 Jan 17:15
Compare
Choose a tag to compare

Course Timetabling

Multiple Class Setup: Cancelled Classes

  • Corrected the limits computation when there are cancelled classes. This fixes an issue introduced with Struts2 upgrade.
  • If a cancelled class (that has a parent class) is opened, do not open other classes of the same parent.

Timetable Grid: String index out of range fix

  • Make sure that DateUtil.getWeek(Date) returns a week that is relative to the current year.
    • So for instance, for 12/31/2023, week 53 is returned instead of 1.
  • This fixes the following error when display mode Per Date is used.
    • Failed to load timetables: String index out of range: -241
  • This also corrects the list of available weeks in the Week drop-down.

Timetable Grid: Curriculum

  • When showing a saved/committed solution, corrected matching of a curriculum reservation when the displayed curriculum has no major.

Event Management

Events Timetable: Curriculum

  • Corrected matching of a curriculum reservation when the displayed curriculum has no major.

Administration

Roll Forward Session: Room Partitions

  • Roll forward room partitions (Room.parentRoom property).

Bug Fixes

Online Scheduling Dashboards: Filter

  • Fixed the query when filtering by course and instructional method at the same time.
  • Corrected the ability to use not assignment:XX in the filter on the Enrollments tab, e.g.: not assignment:Vital

Student Scheduling Dashboards: Enrollments

  • When listing individual enrollments on the Courses tab:
    • Request priority column did not show for Vital and LC courses.
    • Adjusted display of request Priority column (include text, not just an icon).
    • Improved sorting by Priority, Alternative, and (request) Priority.

Course Timetabling Solver: Export CSV

  • Corrected Export Solution when the class names include external ids/class suffixes (i.e., unitime.solver.showClassSuffixes is true).

UniTime 4.8 build 92

14 Dec 15:14
Compare
Choose a tag to compare

Course Timetabling

Instructor Survey

  • Added an ability for departmental schedule managers to unsubmit the survey directly from the Instructor Survey page/dialog (meaning save and unsubmit).

Edit Instructor

  • It is now possible to reset the instructor's position.

Batch Student Scheduling

Solver Reports

  • Added Student Priority and Request Priority columns on various reports.
  • Added Not-Assigned LC Course Requests and Not-Assigned Critical Course Requests reports.
  • Added Critical Time Conflicts, Critical Availability Conflicts, and Critical Time & Availability Conflicts reports.
    • Only listing course requests that have Important, Vital, Critical, or LC priority.
    • For time conflicts, only courses with the same or higher priority are considered.

Online Student Scheduling

Email Notification Types

  • Added an ability to define which email notifications will be set based on the student status.
  • The following options are available:
    • Student Request Change (student made a change using the Student Course Requests page)
    • Student Enrollment Change (student made an enrollment change using the Student Scheduling Assistant page)
    • Admin Request Change (administrator or advisor made a change using the Student Course Requests page)
    • Admin Enrollment Change (administrator or advisor made an enrollment change using the Student Scheduling Assistant page)
    • Enrollment Approval (enrollment requiring consent has been approved)
    • Course Schedule Change (time or room of one of the classes has changed due to re-scheduling)
    • Course Enrollment Change (an enrollment change was done by wait-listing or re-scheduling)
    • Course Failed Enrollment Change (UniTime failed to make an enrollment change during wait-listing or re-scheduling)
    • External Enrollment Change (there has been an enrollment change done externally, outside of UniTime)

Instructor Schedule Changes

  • An email notification can be automatically sent to the instructor when
    • the instructor assignment is changed (instructor is added to/removed from a class),
    • the class that the instructor has is moved in time and/or room, or
    • the class that the instructor has assigned is canceled or reopened.
    • Optionally, an email can be sent when the percent share, check conflicts, or responsibility is changed.
  • Configuration:
    • Enable instructor notifications be setting unitime.notifications.instructorChanges.enabled=true (defaults to false).
    • Include the list of all currently assigned classes that the instructor has in the email notification by setting unitime.notifications.instructorChanges.includeSchedule (defaults to true).
    • Check/display the instructor's percent share, responsibility, and check for conflict changes by setting unitime.notifications.instructorChanges.checkShare (defaults to false).
  • Note: Instructor schedule changes are only available when the online student scheduling server is running, as the offering-reload action (Unlock button) triggers and tracks the changes.

Email Notifications Begin/End Dates

  • Added Notification Begin/End Date on the academic session.
  • One or both dates can be null (not set), in which case there is no begin and/or end date defined.
  • Other settings still apply, i.e., email notifications must be enabled for students and/or instructors, and student status must allow for the notifications.
  • It is possible to enable/disable notifications date checking for students and/or instructors.
    • For instructors, by setting unitime.notifications.instructorChanges.checkNotificationDates (defaults to true).
    • For students, by setting unitime.enrollment.email.checkNotificationDates (defaults to true).
      • Or only particular actions can check for dates by setting unitime.enrollment.email..checkNotificationDates parameter (not set by default).

Other

Name Formats

  • Added the following name formats, adding an external id after the last name or at the end of the name:
    • last-ext-first-middle
    • last-ext-first-middle-title
    • last-first-middle-ext
    • first-middle-last-ext
    • last-first-middle-title-ext
    • title-first-middle-last-ext
    • title-initial-last-ext
    • title-last-initial-ext
  • These can be added on the Administration > Defaults > User Settings, name property (and then selected on Preferences > Settings).

Default Solver Configuration

  • Added ability to change the default solver configuration by changing the unitime.solverConfig.defaultXxx application property.

Authentication: Active Directory

  • Added a Spring Security configuration compatible with Active Directory (unitime.spring.context.security=securityContextLDAP-AD.xml).
  • Using LDAP server authentication, user search instead of user DN matching, and using user name as the user's external id.

Bug Fixes

Online Scheduling Dashboards: Filter

  • Fixed the query when filtering by course and instructional method at the same time.
  • Corrected the ability to use not assignment:XX in the filter on the Enrollments tab, e.g.: not assignment:Vital

Student Scheduling Dashboards: Enrollments

  • When listing individual enrollments on the Courses tab:
    • Request priority column did not show for Vital and LC courses.
    • Adjusted display of request Priority column (include text, not just an icon).
    • Improved sorting by Priority, Alternative, and (request) Priority.

Course Timetabling Solver: Export CSV

  • Corrected Export Solution when the class names include external ids/class suffixes (i.e., unitime.solver.showClassSuffixes is true).

Multiple Class Setup: Delete Classes

  • When deleting an assignment, remove all related constraint infos to avoid Hibernate cache issues when an orphaned constraint info is automatically deleted.
  • This fixes a No row with the given identifier exists: ConstraintInfo issues.

UniTime 4.8 build 67

12 Oct 12:53
Compare
Choose a tag to compare

Technology Upgrade

Hibernate 6.2 / JGroups 5.2

  • UniTime updated to use the latest versions of Hibernate 6.2 and JGroups 5.2.
  • Infinispan 14 is now used for second-level cache and cache replication/invalidation when there are multiple web servers.
  • This, however, requires UniTime to use Java 11 or later (Java 8 is no longer supported).
  • Some HQL reports may need to be updated due to the Hibernate upgrade, e.g.,
    • table = id no longer works (e.g., Session = %SESSION% must be changed to Session.uniqueId = %SESSION%)
    • x is true needs to be changed to x = true
    • function BIT_AND needs to be changed to BITAND
    • InstructionalOffering.coordinators needs to be changed to InstructionalOffering.offeringCoordinators
    • Assignment.classId needs to be changed to Assignment.clazz.uniqueId
    • CourseOffering.isControl = 1 needs to be changed to CourseOffering.isControl = true
    • mod(x, n) may need to be changed to mod(cast(x as int), n)
    • sysdate - :days (where :days is an integer) may need to be changed to sysdate - numtodsinterval(:days, β€˜day’) (Oracle)
  • Some Scripts may need to be updated due to the Hibernate upgrade, e.g,
    • Query.setLong, setString, setDate, etc., needs to be changed to setParameter
    • QueueIn/QueueOut.setXml/getXML now takes a string (use setDocument/getDocument for XML access)

Course Timetabling

Instructor Survey

  • Added a new page (Instructor Survey) that can be used by instructors to fill in their preferences and course requirements.
  • To be enabled by the Instructor Survey toggle on the academic session status page (Status Types page).
  • See https://help48.unitime.org/instructor-survey for more details.

Instructional Offering Cross Lists

  • Fix the instructors and offering coordinators when the controlling department is changed.
    • This means that each instructor/coordinator gets replaced with an instructor/coordinator from the controlling department with the matching external id.
    • An instructor/coordinator assignment gets deleted otherwise (the instructor has no external id or no matching instructor in the new controlling department).

Instructional Offering Detail: Make NOT Offered

  • Departmental schedule mangers cannot make a course not offered when it has a class they cannot edit (e.g., there is an externally managed class that is being timetabled).

Online Student Scheduling

Online Student Scheduling Dashboard: Advisor Recommendation

  • In the table showing the advisor recommendations for a student, added the following two columns:
    • Advised: date and time when the line was added or modified last
    • Advisor: person who advised the student (who added/modified the line last)

Course Finder, Online Scheduling Dashboard

  • When showing data directly from the database (online scheduling server is not running)
    • Correct date pattern formatting (using unitime.pattern.format.useDates property)
    • Include date pattern and required room for arranged hours classes
    • This applies to
      • List of classes on the Course Finder dialog
      • Enrollments of a student on the online dashboard (Student dialog)
      • Classes listed on the Enrollments tab

Course Finder: Filter

  • Course Finder dialog on the Scheduling Assistant, Course Requests, and Advisor Course Recommendations pages improved.
  • Added Filter section, which allows for filtering courses by:
    • Class start/end date (given course must have an enrollment that does not start before the given From date, or lasts past the To date)
    • Min/max credit
    • Instructor name (given course must have a class with a matching instructor name)
  • Notes:
    • Classes that do not display instructors are not considered by the instructor filter.
    • Classes that are not enabled for student scheduling are ignored (both instructor and class dates filters).
    • The filter is ONLY used for the list of courses, it does not guarantee that the student gets a class with the given instructor or within the given dates.
    • When used on the Student Course Requests page or Advisor Course Recommendations page at the time when the schedule of classes has not been published yet, only allow for credit filter (no filtering by class dates or instructor names until the schedule of classes is published).

Student Scheduling Dashboards: Show/Hide Columns

  • Added ability to show/hide columns on the dashboard tables (Enrollments, Students, and Change Log).

Student Scheduling Rules

  • Added student scheduling rules that can be used to define which courses a particular group of students can request/enroll in. These rules can be defined on the Administration > Other > Student Scheduling Rules page.
  • A group of students can be a student filter (same format as on the dashboards, e.g., group:SpecialStudents or primary-major:%-OL).
  • Each group of students can be restricted to particular course types (provided using a regular expression, e.g., !No Pre-Reg), course names (provided using a regular expression, e.g, .*[0-9]OL for all courses with OL suffix), or instructional methods (provided using a regular expression, e.g., PO|PH for course configurations with PO or PH instructional methods).
    • A course name or instructional method regular expression can be negated by using an exclamation mark as a prefix (e.g., !.*[0-9]OL for all courses without an OL suffix).
    • If multiple expressions are provided (e.g., both course and instructional method), depending on the mode of the rule, all of the expressions must match or just one.
  • Each rule can be restricted by a regular expression matching academic initiative, a regular expression matching term, start and end year.
  • The rules are processed in the given order.
  • For each student, the first matching rule is used (there are no course or instructional method restrictions when no rule applies).
  • A rule can apply only to filter (ability to look up a course), online scheduling, and/or batch scheduling. Advisors and/or admins may be allowed to ignore the rule (there could be special courses that only advisors and/or admins can put the students in).

Batch Student Scheduling

Solver Load: Replace Pending courses with Substitutes

  • Added ability to treat substitute course demands as primary when a primary course demand was skipped entirely due to one of the following reasons:
    • pending override request (when Load.ReplacePendingWithSubstitute is true, defaults to false)
    • canceled override request (when Load.ReplaceCancelledWithSubstitute is true, defaults to false)
    • rejected override request (when Load.ReplaceRejectedWithSubstitute is true, defaults to false)
    • not offered course (when Load.ReplaceNotOfferedWithSubstitute is true, defaults to false)
  • More precisely, when a course demand is skipped (all its courses are skipped for some reason), and at least one of the courses is skipped due to a reason that is enabled, then
    • Take the top most substitute course demand and treat it as primary.
    • The position of the substitute course is kept (it shows at the bottom of the primary requests instead of at the top of the substitutes).
  • Course demands that do not allow for substitutes (Wait-List or No-Sub toggle is checked) are not replaced with a substitute.

Batch Student Solver Reports: Solution Statistics

  • Added Requested Courses - impossible row: percentage of requested courses that have no possible enrollment (e.g., due to having all classes disabled).

Bug Fixes

Academic Sessions

  • Academic Session column: use academic year (instead of session start year) when identifying an academic session.

Examination PDF Reports, Enrollment Audit PDF Reports

  • Use academic year (instead of session start year) when naming an output file.

Instructor Detail

  • Previous/Next buttons on the Instructor Detail page: follow the order in which the instructors were listed on the Instructors page.
    • Instead of using the default order (instructor names).
  • Also applies to Previous/Next buttons on the Edit Instructor, Instructor Assignment Preferences, and Instructor Preferences pages.

UniTime 4.7 build 101

11 Oct 15:42
Compare
Choose a tag to compare

Course Timetabling

Timetable Grid: Hide Auxiliary Instructors

  • Added an ability to hide instructors with auxiliary responsibilities.
    • When class instructors are used (instead of solution instructors), hide instructors with auxiliary teaching responsibilities.
    • A teaching responsibility can be marked as Auxiliary on the Administration > Other > Teaching Responsibilities page.
    • The conflicts are still checked for such instructors, showing when the data are loaded into the solver.
      • They only do not show when there is no solver loaded in memory for the user,
      • or for committed solutions to other problems (when unitime.timeGrid.fixInstructors is also set to true).
  • Enabled when tmtbl.timeGrid.useClassInstructors.hideAuxiliary is set to true (defaults to false).

Timetable Grid: Class Filter

  • Added ability to filter by instructional offering configuration name, for example, config:1
  • The value is a regular expression that the configuration name must match.

Distribution Type: Same Days-Time-Weeks

  • Added Same Days-Time-Weeks distribution type (SAME_DTW).
    • Given classes must be taught at the same time of day, on the same days, and on the same weeks (i.e., must have the same date pattern).
      • It is the combination of Same Days, Same Time, and Same Weeks distribution preferences.
    • When prohibited or (strongly) discouraged: Any pair of classes cannot be taught on the same days during the same time and during overlapping date patterns.
      • In other words, the given classes cannot overlap.

Instructional Offering Detail: Make NOT Offered

  • Departmental schedule managers cannot make a course not offered when it has a class they cannot edit (e.g., there is an externally managed class that is being timetabled).

Saved Timetables: Select Imported Solution

  • Added ability to select an imported solution (that does not have any GlobalInfo saved).

Instructional Offering Cross Lists

  • Fix the instructors and offering coordinators when the controlling department is changed.
    • This means that each instructor/coordinator gets replaced with an instructor/coordinator from the controlling department with the matching external id.
    • An instructor/coordinator assignment gets deleted otherwise (the instructor has no external id or no matching instructor in the new controlling department).

Event Management

Event Room Availability: Too Many Meetings Warning

  • When the search results in more than 10000 meetings, a warning is shown (as the query is limited to 10001 records).
  • This is the same warning as on the Events page.

Administration

Data Exchange: Scripts, Reports

  • Added an ability to export all scripts and all HQL reports using the Data Exchange page.

Bug Fixes

Add/Edit Solver Configuration: Date Parameters

  • Use yyyy-MM-dd format for parameters of date type.

Add/Edit Solver Configuration: Validation

  • When the validation of the Add/Edit Solver Configuration page fails, ensure that
    • default parameters are loaded in,
    • add/edit operation is preserved, and
    • field errors are displayed.

Course Timetabling Solver Load: Distributions

  • When a distribution with One of Each or Pairwise structure is used
    • estimate the number of individual distribution constraints that would be posted,
    • if there are over 1,000 of them > print a warning
    • if there are over 10,000 of them > print an error, ignore the distribution preference.
  • This is to prevent speed / out-of-memory issues, especially when one-of-each is used as it can lead to a lot of individual constraints.

Add/Edit Department: Fixes to the new GWT-based page

  • Department Status: sort the list of available departmental statuses
  • Controlling Department Statuses: sort the list of available departments by their code

Add/Edit Course Offering: Fixes to the new GWT-based page

  • Show Please wait... during loading of the page.
  • Adding coordinators does not need a server call (remember the list of available instructors from the previous call).

Time Preferences: Combination of Instructor Preferences

  • Fixed an issue with combining multiple instructor time preferences on a class.

Curricula: Curriculum Requested Enrollments

  • Fixed a permission evaluation issue when editing requested enrollments for multiple curricula.

Edit Distribution Preference

  • Fixed the instructional type auto selection when there is only one course in the selected subject area.

UniTime 4.7 build 91

13 Apr 07:31
Compare
Choose a tag to compare

Course Timetabling

Online Conflicts

  • Online/Offline Room: Added a distribution constraints Online/Offline Room that prevents (or penalizes) a pair of classes which are taught on the same day and one is placed in and online room and the other is not.
  • No Student Online Conflicts: Added a global constraint No Student Online Conflicts that prevents a student from having two classes on the same day, one being online and the other not.
    • To be registered by setting General.GlobalConstraints=org.cpsolver.coursett.constraint.NoStudentOnlineConflicts.
  • Online classes are identified by a regular expression matching the room name and set in the General.OnlineRoom parameter.
    • It defaults to (?i)ONLINE|
    • Classes without a room are considered online when the parameter matches a blank string.
    • If a class has multiple rooms, all rooms must be online for the class to be considered online.

Batch Student Scheduling

Learning Communities: Reservations Priority

  • Added a new LC priority level (as the very first one).
  • To be used for courses with LC reservations (by setting solver parameter Load.LCRequestPriority=LC).
  • This is to ensure that LC courses are assigned first.

Online Student Scheduling

Email Notifications

  • Added ability to provide source-action for user/externally initiated emails.
  • When showing advisor recommendations, include Critical column when there is at least one course marked as critical.

Bug Fixes

Examination Timetable: Instructor Timetable

  • Fixed a NullPointerException thrown when there is an instructor that is assigned only to an exam (or exams) that is not loaded in the solver.

Instructor Detail: Teaching Preference

  • Corrected the teaching preference permission check on the Instructor Detail page.
  • This fixes the NumberFormatException when the instructor's teaching preference is Prohibited but the maximal teaching load is set.

Solver Parameters: Visible

  • Make sure that a new parameter is created as visible when the Visible toggle is not changed (which returns null).

Class Detail: Parent Class

  • Corrected Parent Class link.

Academic Session Import: Curriculum Reservations

  • Fix CurriculumReservation.area -> CurriculumReservation.areas when importing session from an older instance of UniTime (before the change of the relation to academic areas from one-to-many to many-to-many).

UniTime 4.7 build 81

06 Mar 13:28
Compare
Choose a tag to compare

Student Scheduling

Re-Scheduling

  • Added a re-scheduling mode to the wait-listing: It does not allow for wait-listing, but students can be moved around when there was a change and re-scheduling is enabled.
  • On an instructional offering (Edit Course Offering for the controlling course), the Wait-Listing can be either
    • Wait-Listing Enabled,
    • Re-Scheduling Enabled -- this is the new mode,
    • Wait-Listing Disabled.
  • The default setting (property unitime.offering.waitListDefault) can now be WaitList, ReSchedule, or Disabled, with the default being Disabled.
  • There is now a new student status scheduling toggle (Re-Scheduling) that indicates whether the student status allows for re-scheduling.
  • When automatically moving students around, added ability to avoid sections that have already started.
    • This can be enabled by setting unitime.sectioning.config.ReScheduling.AvoidPastSections to true.
  • Added ability to ignore time conflicts where two classes are overlapping only over the break time of the first one.
    • To enable set unitime.sectioning.config.ReScheduling.IgnoreBreakTimeConflicts to true (defaults to false, break time conflicts are not allowed).

Course Finder

  • Added ability to filter out courses that do not have any classes that are enabled for student scheduling.
  • To enable, set unitime.custom.CourseMatcherProvider=org.unitime.timetable.onlinesectioning.match.SkipDisabledCourseMatcher
  • When OnlineOnlyCourseMatcherProvider is used already, set unitime.sectioning.config.Filter.ShowDisabled=false instead.

Course Timetabling

Student Online Conflicts

  • Added an experimental criterion that tries to minimize cases where a student has an online and in-person class on the same day.
  • Online classes are identified by a regular expression matching the room name and set in the StudentConflict.OnlineRoom parameter
    • it defaults to (?i)(ONLINE|) -- room name is ONLINE or there is no room assigned
    • classes without a room are considered online when the parameter matches a blank string
    • if a class has multiple rooms, all rooms must be online for the class to be considered online
  • The criterion is weighted by the Comparator.StudentOnlineConflictWeight parameter, defaults to one half of the Comparator.StudentConflictWeight
  • To enable add org.cpsolver.coursett.criteria.additional.StudentOnlineConflict into General.AdditionalCriteria paramete.

Assign Instructors: Copy Instructor Assignments to Sub-Subparts

  • Added ability to copy instructor assignments to children classes of the same instructional type, e.g., from Lec 1 to Lec 1a and Lec 1b.
  • Only enabled when unitime.instructors.copyToSubSubparts is set to true (defaults to false).

Administration

Clustering: custom timeouts and other parameters

  • For the TCP configurations of the hibernate, sectioning, and the solver cluster, the following parameters have been added so that they can be configured without modifying the XML configuration file:
# TCP & TCPPING protocols -- port range
jgroups.tcp.port_range=3
# FD protocol -- time limit and the number of tries
jgroups.fd.timeout=5000
jgroups.fd.max_tries=5
# FD_SOCK protocol - ports, 0 means to pick a random port above 10000
jgroups.fd_sock.port_range=50
jgroups.fd_sock.start_port=0
jgroups.fd_sock.client_bind_port=0
# VERIFY_SUSPECT protocol -- time limit
jgroups.verify_suspect.timeout=2500

LDAP Lookup: Additional Properties

  • The following application properties have been added in order to make the LDAP people lookup more configurable.
    • LDAP context referral (no referral is set when left not set): tmtbl.lookup.ldap.referral
    • LDAP attributes:
      • user id: tmtbl.lookup.ldap.uid
      • full name: tmtbl.lookup.ldap.cn
      • last name: tmtbl.lookup.ldap.sn
      • first name: tmtbl.lookup.ldap.givenName
    • Added ability to skip entries without email: when tmtbl.lookup.ldap.skipWhenNoEmail is set to true (defaults to false).

Java 20 Support

  • ASM updated to 9.4 (was 9.2). This is to support Java 19 and Java 20.

UniTime 4.7 build 71

02 Feb 08:28
Compare
Choose a tag to compare

Student Scheduling

Wait-Listing

  • UniTime 4.7 includes various improvements in wait-listing, including the ability to swap a course or wait-list for a different section of a course that the student is already enrolled in.
  • Also, there is a new Wait-List Preferences dialog that provides additional options to the student, including setting up a swap or providing section requirements.
  • The course re-scheduling (automatic updates to student schedules after the course change) has been updated and made more robust. It also currently only triggers on courses that allow for wait-listing while the wait-listing is enabled.

Student Scheduling Preferences

  • UniTime 4.7 includes various improvements in student scheduling, including the ability for a student to indicate whether he/she prefers dense vs sparse schedule or online vs face-to-face classes.
  • When enabled, a student may also require only online classes, or limit the days during which he/she can attend classes.
    • This is to better support Summer (or similar) sessions that contain multiple optional modules, and where students may be allowed to take some courses while not being present at the campus.

Override Requests: Course-specific Notes

  • Requests Override dialog updated to allow for course-specific notes.

Course Request Priorities

  • A new course request priority named Vital has been added.
    • The scale is now Critical > Vital > Important > No Priority
  • Advisors can now set the course request priority separately from no-subs/wait-list toggle.

Course Timetabling

Funding Department

  • An optional funding department has been added to classes. It can be used to group the class data differently for funding reporting than it is done for course timetabling.
  • The visibility of the funding department functionality is controlled by a property (unitime.courses.funding_departments_enabled) so it is not visible for institutions that do not use it.
  • Finding department can be defined on multiple levels: on the subject area (for courses controlled by a course of this subject), on a course, or on an individual class.
  • Similar to external managers, the funding department defaults to the controlling department of the class, and only departments marked as possible funding departments can be selected as additional options.
  • A number of pages have been rewritten to GWT as part of this effort, but it is possible to switch the user interface back to the original Struts based page. See unitime.legacy.xxx properties in the Application Configuration.
    • These include Departments, Subject Areas, Instructor Assignment, and Add/Edit Course Offering pages.

Room Partitions

  • Added ability to partition a room into multiple smaller rooms.
    • On the Add/Edit Room page, there is a new Partition of drop-down listing all rooms of the same building that are not partitions of some other rooms already.
    • Non-university locations cannot be partitioned.
    • On the Rooms page, there is a new Partitions of column (listing the parent room of room partition).
  • Added support for the course timetabling solver.
    • Parent room is unavailable when one of its partitions is occupied and vice versa (partitions cannot be used at the time when the parent class is occupied).
    • Timetable Grid page can include:
      • classes from all the partitions on the parent room,
      • classes of the parent room on each of the room partitions.
      • This is disabled by default, enable by setting unitime.timeGrid.classesAcrossPartitions to true.
  • Added support for conflict checking in the events, and for the computation and display of conflicting events.

Timetable Grid: Class Filter

  • Added ability to filter classes that will be listed on the Timetable page.
  • Enable by setting unitime.timeGrid.classFilter to true in the Application Configuration.
  • The filter may contain a boolean expression (for example: ALG or BIOL or C S).
  • The following tags are supported:
    • without any tags, both class name and instructor name are matched
    • class: match class name only
    • instructor: match instructor name or external id only
    • room: match assigned room
    • limit: match class limit (e.g., limit:>100 for classes over 100)

Daybreak Distribution Constraint

  • Added Daybreak constraint that checks for cases when there is an evening class and a morning class the following day.
  • There should be at least the given number of hours between an evening class followed by a morning class the next day.
  • The constraint can be also parameterized by a distance between the two classes:
    • The constraint only triggers when the distance between the two classes is over the provided distance.
    • Distance checking is disabled when distance is set to -1.

Other

Localization: Zanata > POEditor.com

  • Since Zanata is no longer being maintained, UniTime 4.7 translations have been moved to poeditor.com.
  • Single PO file per locale is now being used for data exchange.
  • Updated ant tasks for import/export scripts, added ability to automatically download PO file and update UniTime.gwt.xml config.
  • To build UniTime for a different language, for example German, just use
    • ant -Dlocale=de import-translations build

Dependencies: Apache Struts 2

  • All the Struts-based pages have been migrated to Apache Struts 2 (from Apache Struts 1).
    • There are only minor cosmetic changes, but all the URLs that used to have .do are now .action.
  • With this change, all pages can now be localized.

UniTime 4.6 build 99

02 Feb 08:46
Compare
Choose a tag to compare

Administration

Manage Solvers: Solver Allocated Memory

  • Added ability to disable computation of allocated memory of each solver instance (by setting unitime.solvers.memory to false).

Roll Forward Session: Building and Room Data, Teaching Requests

  • Fixed the following two errors caused by PostgreSQL being less lenient when it comes to query parameter types than MySQL or Oracle.
    • Roll Building and Room Data Forward From Session: operator does not exist: boolean = integer
    • Roll Forward Teaching Request For Subject Areas: operator does not exist: bigint = character varying

Edit Academic Session: Bugfix

  • Ensure that the academic session is not updated when the page is reloaded due to a date change.

UniTime 4.6 build 96

28 Jun 12:20
Compare
Choose a tag to compare

Student Scheduling

Instructional Offering Detail: Wait-Listing

  • Always show that the offering is wait-listed when
    • wait-listing is set differently on the offering from what is set by default (unitime.offering.waitListDefault is true)
    • or the offering allows for wait-listing.
  • So, when the default is true and it is not changed on the offering, show that the offering is being wait-listed.
    • This allows to always check and show wait-listing problems (e.g., course is wait-listed and allows for closed section overrides at the same time).

Course Finder: Courses with matching campus first

  • When subject area starts with the student's campus code, move courses that match student's primary campus to the top of the list.
  • This is disabled by default, enable by setting unitime.enrollment.listOfferings.campusFirst to true.

Student Scheduling Dashboards: Enrollments

  • Corrected display of the number of not-assigned no-sub course requests.

Course Timetabling

Edit Course Offering: Permissions for External Managers

  • It is now possible to give external managers some control over the offering.
  • When unitime.permissions.courseOfferingAllowExternalEdits is true (defaults to false):
    • EditCourseOfferingCoordinators: passes when the external manager can edit at least one of the classes (ManagerLimitedEdit)
    • EditCourseOfferingNote: passes when the external manager can edit at least one of the classes (ManagerLimitedEdit)
    • EditCourseOffering: passes for the controlling course when the external manager can edit all the classes (ManagerEdit)
  • It now also possible for the external managers to edit reservations if all the classes are in their control (ReservationOffering permission).

Instructor Availability

  • Corrected combination of unavailable dates and blocking events (when unitime.events.instructorUnavailability is set to true).
  • This fixes an issue where unavailable dates were ignored when instructor unavailability events were enabled.

Distribution Type: Max N Consecutive Days

  • Added a distribution constraint that limits the number of consecutive days that can be taught each week.
  • Individual weeks are considered when FlexibleConstraint.CheckWeeks is set to true.

Distribution Type: Max N Days, Max N Half-Days

  • Added ability to evaluate the Max N Days and Max N Half-Days constraints separately for each week.
  • When FlexibleConstraint.CheckWeeks is set to true, defaults to false.

Distribution Type: Same Days-Room-Start

  • Given classes must start at the same time of day, on the same days and in the same room.
  • It is the combination of Same Days, Same Start and Same Room distribution preferences.
  • When prohibited or (strongly) discouraged: Any pair of classes classes cannot be taught on the same days during the same time in the same room.

Spread Constraint

  • Fixed an ArrayIndexOutOfBoundsException thrown when there are 7 working days (i.e., all days of the week are working days).

Timetable Grid: Export XLS

  • Avoid exporting empty resources (resources with no matching classes/meetings).
    • This is to fix NullPointerException in per-date mode, e.g., if there is an instructor with no classes.

Administration

Reporting: Room Utilization Report Helpers

  • Added code that can be called from scripts to generate room utilization and occupancy reports.
  • Currently these only work with the Oracle database.
  • The data generated by the reports can be broken down by room or building.
  • Within a room, it can also be further subdivided by the department and/or subject area teaching the classes using the room.
  • Within a building the data can be be further subdivided by the room type, department and/or subject area teaching the classes using the room.
  • Example utilization reports are available in the Documentation/Scripts.

Name Format: Include External ID

  • Added ability to include external id in the name format.
  • The following options are not available:
    • ext-last-first-middle
    • ext-first-middle-last
    • ext-last-first-middle-title
    • ext-title-first-middle-last
    • ext-title-initial-last
    • ext-title-last-initial
  • To make (some of) them available, added them as options in Administration > Defaults > User Settings, name parameter.

UniTime 4.6 build 82

01 Mar 14:01
Compare
Choose a tag to compare

Administration

Data Exchange: Course Offering XML Import

  • Fixed parsing of boolean values in some of the imports (including Course Offering XML import).

Data Exchange: Event XML Load

  • Added an ability to specify the current academic session on the root element (year and term attributes).
    • Course elements for course-related events do not need year and term specified separately in this case.
  • Lookup for the rooms in the current/default academic session first, only look for the rooms in all sessions when no matching room is found in the current/default session.

People Lookup: Source Mapping

  • Corrected source mapping when unitime.lookup.source.defaults property is used.