diff --git a/dataedit/static/peer_review/opr_reviewer.js b/dataedit/static/peer_review/opr_reviewer.js index dccd704f1..1a788460f 100644 --- a/dataedit/static/peer_review/opr_reviewer.js +++ b/dataedit/static/peer_review/opr_reviewer.js @@ -645,6 +645,19 @@ console.log(9) * Saves field review to current review list */ function saveEntrances() { + if (selectedState === "rejected") { + const comments = document.getElementById('comments'); + + if (comments.value.trim() === '') { + comments.setCustomValidity('Comment is required'); + showToast("Error", "The comment text field is required to save the field review!", "error"); + return; + } else { + comments.setCustomValidity(''); + } + + valuearea.reportValidity(); + } // If the field state is neither "ok" nor "rejected", user input should be checked for suggestions if (selectedState !== "ok" && selectedState !== "rejected") { const valuearea = document.getElementById('valuearea'); @@ -776,6 +789,7 @@ function saveEntrances() { selectNextField(); renderSummaryPageFields(); updateTabProgressIndicatorClasses(); + check_if_review_finished(); } function getFieldState(fieldKey) { if (state_dict && state_dict[fieldKey] !== undefined) { @@ -786,7 +800,6 @@ function getFieldState(fieldKey) { return null; } } -console.log(7) /** * Checks if all fields are reviewed and activates submit button if ready */ @@ -831,17 +844,19 @@ function checkReviewComplete() { } function checkFieldStates() { - const fieldList = getAllFieldsAndValues(); + const allFields = getAllFieldsAndValues(); - for (const { fieldName, fieldValue } of fieldList) { - if (!isEmptyValue(fieldValue)) { - const fieldState = state_dict[fieldName]; - if (fieldState !== 'ok' && fieldState !== 'rejected') { - return false; - } + for (const { fieldName, fieldValue } of allFields) { + if (!isEmptyValue(fieldValue)) { + const fieldState = getFieldState(fieldName); + const review = current_review["reviews"].find((r) => r.key === fieldName); + + if (!review || (fieldState === 'rejected' && (!review.fieldReview.additionalComment || review.fieldReview.additionalComment.trim() === ''))) { + return false; + } + } } - } - return true; + return true; } @@ -851,47 +866,46 @@ function checkFieldStates() { * Also deactivates the submitbutton. */ function check_if_review_finished() { - if (checkFieldStates() && !clientSideReviewFinished) { - clientSideReviewFinished = true; - showToast("Review completed!", "You completed the review and can now award a suitable badge!", 'success'); - // Creating the div with radio buttons - var reviewerDiv = $('
'); - var bronzeRadio = $(' BronzeThe review is complete. Please award a badge and finish the review.
'); - var finishButton = $(''); - - - - // Adding the radio buttons, text, and button to the div - reviewerDiv.append(reviewText); - reviewerDiv.append(bronzeRadio); - reviewerDiv.append(silverRadio); - reviewerDiv.append(goldRadio); - reviewerDiv.append(platinRadio); - reviewerDiv.append(finishButton); - - finishButton.on('click', finishPeerReview); - - if (config.review_finished !== true) { - // Displaying the div - reviewerDiv.show(); - $('#submit_summary').prop('disabled', true); - } else { - reviewerDiv.hide(); // Hiding the div - $('#submit_summary').hide(); - $('#peer_review-save').hide(); - // $('#review-window').hide(); - $('#review-window').css('visibility', 'hidden'); + if (!checkFieldStates()) { + return; } - // Adding the div to the desired location in the document - $('.content-finish-review').append(reviewerDiv); - } + if (!clientSideReviewFinished) { + clientSideReviewFinished = true; + showToast("Review completed!", "You completed the review and can now award a suitable badge!", 'success'); + + var reviewerDiv = $(''); + var bronzeRadio = $(' BronzeThe review is complete. Please award a badge and finish the review.
'); + var finishButton = $(''); + + reviewerDiv.append(reviewText); + reviewerDiv.append(bronzeRadio); + reviewerDiv.append(silverRadio); + reviewerDiv.append(goldRadio); + reviewerDiv.append(platinRadio); + reviewerDiv.append(finishButton); + + finishButton.on('click', finishPeerReview); + + if (!config.review_finished) { + reviewerDiv.show(); + $('#submit_summary').prop('disabled', true); + } else { + reviewerDiv.hide(); + $('#submit_summary').hide(); + $('#peer_review-save').hide(); + $('#review-window').css('visibility', 'hidden'); + } + + $('.content-finish-review').append(reviewerDiv); + } } + /** * Shows reviewer Comment and Suggestion Input options */