         e?.preventDefault()
         @props.flux.getActions(@props.name).set_due_date(@props.assignment, @state.due_date)
         @setState(edit_due:false)
-
-    due_date_keydown: (e) ->
-        if e.keyCode == 27
-            @setState(edit_due:false)
 
     render_due: ->
         if @state.edit_due

        @props.flux.getActions(@props.name).set_grade(@props.assignment, @props.student, @state.grade)
        @setState(editing_grade:false)

    grade_keydown: (e) ->
        if e.keyCode == 27
            @setState(grade:@props.grade, editing_grade:false)

    render_grade: ->
        if @state.editing_grade
            <form onSubmit={@save_grade}>
                <Input autoFocus value={@state.grade} ref='grade_input' type='text' placeholder='Grade'
                       onChange={=>@setState(grade:@refs.grade_input.getValue())}
                       onKeyDown={@grade_keydown}
                />
            </form>
        else

###
TODO:

- [x] (1:30?) (0:45) add student/assignment note fields
    - let enter/edit it in the students page
- [ ] (0:15?) uniformly sort assignments everywhere, efficiently.
- [ ] (2:00?) way to send an email to every student in the class (require some sort of premium account)
- [ ] (6:00?) make everything look pretty
        - triangles for show/hide assignment info like for students
        - error messages in assignment page -- make hidable and truncate-able
        - escape to clear search boxes
        - make textarea component that renders using markdown and submits using shift+enter...
        - date picker for assignment due date

- [ ] (3:00?) bug searching / testing / debugging
        - [ ] bug/race: when changing all titles/descriptions, some don't get changed.  I think this is because
