Skip to content

UniTime 4.1 build 218

Compare
Choose a tag to compare
@tomas-muller tomas-muller released this 12 Jan 13:37
· 2992 commits to master since this release

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):
  • Google Maps Standard API (used on Room Edit and Building Edit to enter/show coordinates):
  • 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=&code=<DEPT_CODE>
    • GET UniTime/api/instructors?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=
  • 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=
  • 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&c:department=0101&c:area=A
    • GET UniTime/api/curricula?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&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.