Split out mock backend, fix out-of-data bug
This commit is contained in:
@@ -8,10 +8,57 @@ state_grading = "have_data"
|
||||
state_no_data = "no_data"
|
||||
state_error = "error"
|
||||
|
||||
class StaffGradingBackend
|
||||
constructor: (ajax_url, mock_backend) ->
|
||||
@ajax_url = ajax_url
|
||||
@mock_backend = mock_backend
|
||||
if @mock_backend
|
||||
@mock_cnt = 0
|
||||
|
||||
mock: (cmd, data) ->
|
||||
# Return a mock response to cmd and data
|
||||
@mock_cnt++
|
||||
if cmd == 'get_next'
|
||||
response =
|
||||
success: true
|
||||
submission: 'submission! ' + @mock_cnt
|
||||
rubric: 'A rubric!' + @mock_cnt
|
||||
|
||||
else if cmd == 'save_grade'
|
||||
response =
|
||||
success: true
|
||||
submission: 'another submission! ' + @mock_cnt
|
||||
rubric: 'A rubric!' + @mock_cnt
|
||||
else
|
||||
response =
|
||||
success: false
|
||||
error: 'Unknown command ' + cmd
|
||||
|
||||
if @mock_cnt % 5 == 0
|
||||
response =
|
||||
success: true
|
||||
message: 'No more submissions'
|
||||
|
||||
|
||||
if @mock_cnt % 7 == 0
|
||||
response =
|
||||
success: false
|
||||
error: 'An error for testing'
|
||||
|
||||
return response
|
||||
|
||||
|
||||
post: (cmd, data, callback) ->
|
||||
if @mock_backend
|
||||
callback(@mock(cmd, data))
|
||||
else
|
||||
# TODO: replace with postWithPrefix when that's loaded
|
||||
$.post(@ajax_url + cmd, data, callback)
|
||||
|
||||
|
||||
class StaffGrading
|
||||
constructor: (mock_backend) ->
|
||||
@el = $('.staff-grading')
|
||||
@ajax_url = @el.data('ajax_url')
|
||||
constructor: (backend) ->
|
||||
@backend = backend
|
||||
|
||||
@error_container = $('.error-container')
|
||||
@submission_container = $('.submission-container')
|
||||
@@ -20,42 +67,12 @@ class StaffGrading
|
||||
@button.click @clicked
|
||||
@state = state_no_data
|
||||
|
||||
@mock_backend = mock_backend
|
||||
if @mock_backend
|
||||
@mock_cnt = 0
|
||||
|
||||
@get_next_submission()
|
||||
|
||||
mock: (cmd, data) ->
|
||||
# Return a mock response to cmd and data
|
||||
@mock_cnt++
|
||||
if cmd == 'get_next'
|
||||
response =
|
||||
'success': true
|
||||
'submission': 'submission! ' + @mock_cnt
|
||||
'rubric': 'A rubric!' + @mock_cnt
|
||||
else if cmd == 'save_grade'
|
||||
response =
|
||||
'success': true
|
||||
'submission': 'another submission! ' + @mock_cnt
|
||||
'rubric': 'A rubric!' + @mock_cnt
|
||||
else
|
||||
response =
|
||||
'success': false
|
||||
'error': 'Unknown command ' + cmd
|
||||
return response
|
||||
|
||||
|
||||
set_button_text: (text) ->
|
||||
@button.prop('value', text)
|
||||
|
||||
_post: (cmd, data, callback) ->
|
||||
if @mock_backend
|
||||
callback(@mock(cmd, data))
|
||||
else
|
||||
# TODO: replace with postWithPrefix when that's loaded
|
||||
$.post(@ajax_url + cmd, data, callback)
|
||||
|
||||
|
||||
ajax_callback: (response) =>
|
||||
if response.success
|
||||
@@ -67,11 +84,11 @@ class StaffGrading
|
||||
@error(response.error)
|
||||
|
||||
get_next_submission: () ->
|
||||
@_post('get_next', {}, @ajax_callback)
|
||||
@backend.post('get_next', {}, @ajax_callback)
|
||||
|
||||
submit_and_get_next: () ->
|
||||
data = {eval: '123'}
|
||||
@_post('save_grade', data, @ajax_callback)
|
||||
@backend.post('save_grade', data, @ajax_callback)
|
||||
|
||||
error: (msg) ->
|
||||
@error_container.html(msg)
|
||||
@@ -85,8 +102,8 @@ class StaffGrading
|
||||
@update()
|
||||
|
||||
no_more: () ->
|
||||
@submission_container.html(submission)
|
||||
@rubric_container.html(rubric)
|
||||
@submission_container.html('')
|
||||
@rubric_container.html('')
|
||||
@state = state_no_data
|
||||
@update()
|
||||
|
||||
@@ -117,5 +134,8 @@ class StaffGrading
|
||||
|
||||
|
||||
# for now, just create an instance and load it...
|
||||
mock_backend = true
|
||||
$(document).ready(() -> new StaffGrading(mock_backend))
|
||||
mock_backend = true
|
||||
ajax_url = $('.staff-grading').data('ajax_url')
|
||||
backend = new StaffGradingBackend(ajax_url, mock_backend)
|
||||
|
||||
$(document).ready(() -> new StaffGrading(backend))
|
||||
|
||||
Reference in New Issue
Block a user