From 546096e8a0a7fa22af779fd007b9a9829d380bac Mon Sep 17 00:00:00 2001 From: Victor Shnayder Date: Thu, 15 Nov 2012 10:23:24 -0500 Subject: [PATCH] Split out mock backend, fix out-of-data bug --- .../src/staff_grading/staff_grading.coffee | 98 +++++++++++-------- 1 file changed, 59 insertions(+), 39 deletions(-) diff --git a/lms/static/coffee/src/staff_grading/staff_grading.coffee b/lms/static/coffee/src/staff_grading/staff_grading.coffee index 4d754adfab..22416a5276 100644 --- a/lms/static/coffee/src/staff_grading/staff_grading.coffee +++ b/lms/static/coffee/src/staff_grading/staff_grading.coffee @@ -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))