• last updated 12 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
file websocket.tcl was initially added on branch oacs-5-10.

file websocket.adp was initially added on branch oacs-5-10.

Provide a showcase example of proctoring: admins will see the UI to examine results, regular users will start a proctored session

might be extended in the future

file display.adp was initially added on branch oacs-5-10.

file proctored-index.adp was initially added on branch oacs-5-10.

file index.tcl was initially added on branch oacs-5-10.

file index.adp was initially added on branch oacs-5-10.

file display.tcl was initially added on branch oacs-5-10.

Introduce a data model for "proctoring artifacts", aka the pictures

and audios, which so far have only lived as files in the filesystem

named after a convention

The new datamodel allows to quickly and reliably retrieve the pictures

collected by proctoring and also provides for a technical space, in

form of a JSON metadata column, to store additional information coming

from e.g. postprocessing phases.

The idea is to use this feature to provide reviewing tools of proctoring results and allow for flexile downstream postprocessing.

The file naming convention has not been changed for the time being, so this would be

retro-compatible. However, integrators should start relying on the new

data model to retrieve pictures.

  1. … 8 more files in changeset.
Trap errors happening when taking the picture, potentially dependent on the specific hardware/sowftware setup of the user, and abort the session in this case

added support for optionally turning off proctoring recodings

This options is useful e.g. for e.g. mock exams to avoid privacy issues.

  1. … 8 more files in changeset.
improve spelling

  1. … 1 more file in changeset.
Now that the proctoring display UI has been ported, notify by default new proctoring events via websockets

  1. … 1 more file in changeset.
Do not handle 400 responses in any special way: cases found in practice were always the result of a client-side timeout

Hide timing information from the user

Streamline proctoring upload:

- do not hardcode a timeout, requests will either complete or eventually fail

- use a single event handler at the end of the request to decide if and how to reschedule the upload. This prevents the possibility that the same error event triggers multiple uploads via different handlers

- improve documentation

Make sure that in case of errors that are also detected as timeouts, we do not reschedule the failed picture twice

Address a problem encountered already with proctoring uploads: in cases that count both as timeouts and errors, the rescheduling of the request would happen twice. If the condition persists, the number of requests can grow out of control

fix bug in javascript, when only the screen-stream should be recorded

Allow in the include to selectively disable combinations of audio, camera and desktop recording (at least one stream needs to be enabled for proctoring to happen)

This allows to better tailor proctoring behavior to the user needs and privacy requirements

    • -128
    • +152
    ./resources/proctored-page.js
  1. … 2 more files in changeset.
Handle the case where the iframe URL points to an external website: just skip the iframe-loop check

Always make sure to clear any previously scheduled upload, before scheduling another one

This handles the case when a connection times out (readyState 4 and status = 0). In this case both the rescheduling in the readystatechange handler and in the timeout handler would be executed.

Check stream refactoring: break down better the various error situations so they can be reported to the user

Include stream name in the error message

Enforce also that, after proctoring has successfully started, captured videos do not stop anymore

This could mean that the video entered some invalid state, as we had already defined an event handler to restart a paused video...

Improve error message

Avoid suddent request bursts when e.g. connectivity resumes

Include the technical error message in the popup to the user when missing stream error occurs

  1. … 4 more files in changeset.
Store the previous picture by a deep value copy, rather then by reference, as the original canvas is going to be watermarked

Try to ask the browser to disable noise suppression on the microphone, so that silence detection won't trigger in case of "normal" environmental silence