added a comment - - edited
Interface implementation details:
1. Ways to enter grade edit mode:
a. Click on the grade cell
b. If already editing a grade, press the Tab key: this applies the change to the current cell, and moves the focus to the next cell down, or the first cell of the next column if the current cell is the last.
c. If already editing a grade, press ctrl-arrow in the direction of another grade cell. This applies the change to the current cell, and moves the focus to the cell in the arrow's direction (phpmyadmin style)
2. Row update request is sent when:
a. [Enter] is pressed
b. [Tab] is pressed
c. Mouse is clicked outside the cell's boundaries
In all 3 cases above, the update request (which includes updating the grade in DB and reloading the row) happens only if:
a. We are in grade edit mode (focus is on a grade cell) AND
b. The grade value has been changed
3. Navigation can be done by using ctrl-arrow. The edit is applied in that case.
4. Ways to exit edit mode:
a. Press the [enter] to apply the edit
b. Click the mouse anywhere outside of the cell being edited: cancels the edit
1. Option to disable/enable immediate update of column averages and category averages. If disabled, an "Update averages" button should be displayed, which will send a global update AJAX request.
2. Option to switch ctrl-arrow navigation on/off
3. Option to jump from grade edit to feedback edit using tab, or from grade to grade, and then feedback to feedback once the column end is reached.