From 0b186a5e1a76c2d593a596188a6432a44a796dc5 Mon Sep 17 00:00:00 2001 From: Sarah Vaupel Date: Fri, 7 Feb 2020 22:31:57 +0100 Subject: [PATCH] fix(exam-correct): fix request bodies --- .../src/utils/exam-correct/exam-correct.js | 77 ++++++++++--------- 1 file changed, 41 insertions(+), 36 deletions(-) diff --git a/frontend/src/utils/exam-correct/exam-correct.js b/frontend/src/utils/exam-correct/exam-correct.js index f29fcaf52..2f5abf2ed 100644 --- a/frontend/src/utils/exam-correct/exam-correct.js +++ b/frontend/src/utils/exam-correct/exam-correct.js @@ -152,9 +152,7 @@ export class ExamCorrect { setStatus(this._userInputStatus, STATUS.LOADING); - const body = { - user: this._userInput.value, - }; + const body = this._toRequestBody(this._userInput.value); this._app.httpClient.post({ url: EXAM_CORRECT_URL_POST, @@ -211,37 +209,18 @@ export class ExamCorrect { const rowInfo = { users: [user], - results: results, status: STATUS.LOADING, }; - if (results) rowInfo.results = results; - if (result) rowInfo.result = result === 'delete' ? null : result; + if (results && results !== {}) rowInfo.results = results; + if (result && result !== 'none') rowInfo.result = result; this._addRow(rowInfo); // clear inputs on validation success this._clearUserInput(); this._partInputs.forEach(clearInput); - const body = { - user: userId || user, - }; - if (results && results !== {}) body.results = results; - if (result) { - switch (result) { - case 'delete': { - body.grade = null; - break; - } - case 'attended': { - body.grade = { status: this._resultGradeSelect.value }; - break; - } - default: { - body.grade = { status: result }; - } - } - } - + const body = this._toRequestBody(userId || user, results, result); + this._app.httpClient.post({ url: EXAM_CORRECT_URL_POST, headers: EXAM_CORRECT_HEADERS, @@ -318,14 +297,11 @@ export class ExamCorrect { date: null, }; - console.log('response', response); - const candidateRows = (targetRow && [targetRow]) || [...this._element.rows]; for (let row of candidateRows) { let userElem = row.cells.item(this._cIndices.get('user')); const userIdent = userElem && userElem.getAttribute(EXAM_CORRECT_USER_ATTR); // TODO use other attribute identifier if (userIdent === user) { - console.log('response-update', row); let status = STATUS.FAILURE; switch (response.status) { case 'success': @@ -453,11 +429,7 @@ export class ExamCorrect { setStatus(statusElem, STATUS.LOADING); - const body = { - user: listItem.getAttribute(EXAM_CORRECT_USER_ATTR), - results: results.partResults, - grade: { status: results.result }, - }; + const body = this._toRequestBody(listItem.getAttribute(EXAM_CORRECT_USER_ATTR), results.partResults, results.result); this._app.httpClient.post({ url: EXAM_CORRECT_URL_POST, @@ -470,7 +442,6 @@ export class ExamCorrect { } _addRow(rowInfo) { - console.log('rowInfo', rowInfo); // TODO create and use template for this const newRow = document.createElement('TR'); newRow.classList.add('table__row'); @@ -513,7 +484,7 @@ export class ExamCorrect { const resultCell = document.createElement('TD'); resultCell.colSpan = 2; if (rowInfo.result) - resultCell.innerHTML = rowInfo.result; + resultCell.innerHTML = rowInfo.result === 'attended' ? this._resultGradeSelect.value : rowInfo.result; cells.set(this._cIndices.get('result'), resultCell); const statusCell = document.createElement('TD'); @@ -542,6 +513,40 @@ export class ExamCorrect { setStatus(this._userInputStatus, STATUS.NONE); } + _toRequestBody(user, partResults, examResult) { + const body = { + user: user, + }; + + if (partResults && Object.entries(partResults).length !== 0) + body.results = partResults; + + if (examResult) { + switch (examResult) { + case 'none': + break; + case 'delete': + body.grade = null; + break; + case 'attended': + body.grade = { status: examResult, result: { Right: this._resultGradeSelect.value } }; + break; + case 'passed': + case 'failed': + body.grade = { status: 'attended', result: { Left: examResult } }; + break; + case 'no-show': + case 'voided': + body.grade = { status: examResult }; + break; + default: + break; // TODO work in progress + } + } + + return body; + } + } // TODO move to general util section?