diff --git a/REUSE.toml b/REUSE.toml index 4c49b6fbc..8fbc7526a 100644 --- a/REUSE.toml +++ b/REUSE.toml @@ -2687,6 +2687,15 @@ SPDX-FileCopyrightText = [ "2025 Jonas Huber © Reiner Lemoine Institut", ] +[[annotations]] +path = "dataedit/templates/partials/review_item_snippet.html" +precedence = "override" +SPDX-License-Identifier = "AGPL-3.0-or-later" +SPDX-FileCopyrightText = [ + "2025 Jonas Huber © Reiner Lemoine Institut", +] + + [[annotations]] path = "oedb/script.py.mako" precedence = "override" diff --git a/dataedit/static/peer_review/opr_reviewer_logic.js b/dataedit/static/peer_review/opr_reviewer_logic.js index bde1ec1d0..39ffc7422 100644 --- a/dataedit/static/peer_review/opr_reviewer_logic.js +++ b/dataedit/static/peer_review/opr_reviewer_logic.js @@ -1,74 +1,108 @@ // SPDX-FileCopyrightText: 2025 Reiner Lemoine Institut // SPDX-License-Identifier: AGPL-3.0-or-later -import {current_review, getAllFieldsAndValues, getErrorMsg, showToast} from "./peer_review.js"; -import {isEmptyValue, isEffectivelyEmpty, sendJson} from "./utilities.js";import {getFieldState} from "./state_current_review.js"; +import { + current_review, + getAllFieldsAndValues, + getErrorMsg, + showToast, +} from "./peer_review.js"; +import { isEmptyValue, isEffectivelyEmpty, sendJson } from "./utilities.js"; +import { getFieldState } from "./state_current_review.js"; export function finishPeerReview() { - $('#peer_review-submitting').removeClass('d-none'); + $("#peer_review-submitting").removeClass("d-none"); var selectedBadge = $('input[name="reviewer-option"]:checked').val(); console.log(selectedBadge); current_review.badge = selectedBadge; current_review.reviewFinished = true; - let json = JSON.stringify({reviewType: 'finished', reviewData: current_review, reviewBadge: selectedBadge}); - sendJson("POST", config.url_peer_review, json).then(function() { - window.location = config.url_table; - }).catch(function(err) { - // TODO evaluate error, show user message - $('#peer_review-submitting').addClass('d-none'); - alert(getErrorMsg(err)); + let json = JSON.stringify({ + reviewType: "finished", + reviewData: current_review, + reviewBadge: selectedBadge, }); + sendJson("POST", config.url_peer_review, json) + .then(function () { + window.location = config.url_table; + }) + .catch(function (err) { + // TODO evaluate error, show user message + $("#peer_review-submitting").addClass("d-none"); + alert(getErrorMsg(err)); + }); } export function check_if_review_finished() { - if (!checkFieldStates()) { - return; - } - - if (!clientSideReviewFinished) { - clientSideReviewFinished = true; - showToast("Review completed!", "You completed the review and can now award a suitable badge!", 'success'); + if (!checkFieldStates()) { + return; + } - var reviewerDiv = $('
'); - var bronzeRadio = $(' Bronze
'); - var silverRadio = $(' Silver
'); - var goldRadio = $(' Gold
'); - var platinRadio = $(' Platin
'); - var reviewText = $('

The review is complete. Please award a badge and finish the review.

'); - var finishButton = $(''); + if (!clientSideReviewFinished) { + clientSideReviewFinished = true; + showToast( + "Review completed!", + "You completed the review and can now award a suitable badge!", + "success" + ); - reviewerDiv.append(reviewText); - reviewerDiv.append(bronzeRadio); - reviewerDiv.append(silverRadio); - reviewerDiv.append(goldRadio); - reviewerDiv.append(platinRadio); - reviewerDiv.append(finishButton); + var reviewerDiv = $( + '
' + ); + var bronzeRadio = $( + ' Bronze
' + ); + var silverRadio = $( + ' Silver
' + ); + var goldRadio = $( + ' Gold
' + ); + var platinRadio = $( + ' Platin
' + ); + var reviewText = $( + "

The review is complete. Please award a badge and finish the review.

" + ); + var finishButton = $( + '' + ); - finishButton.on('click', finishPeerReview); + reviewerDiv.append(reviewText); + reviewerDiv.append(bronzeRadio); + reviewerDiv.append(silverRadio); + reviewerDiv.append(goldRadio); + reviewerDiv.append(platinRadio); + reviewerDiv.append(finishButton); - 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'); - } + finishButton.on("click", finishPeerReview); - $('.content-finish-review').append(reviewerDiv); + 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); + } } export function checkFieldStates() { - const allFields = getAllFieldsAndValues(); - for (const { fieldName, fieldValue } of allFields) { - console.log(fieldName, fieldValue) - if (!isEffectivelyEmpty(fieldName, fieldValue)) { - const fieldState = getFieldState(fieldName); + const allFields = getAllFieldsAndValues(); + for (const { fieldName, fieldValue } of allFields) { + console.log(fieldName, fieldValue); + if (!isEffectivelyEmpty(fieldName, fieldValue)) { + const fieldState = getFieldState(fieldName); - if (fieldState !== 'ok' && fieldState !== 'rejected' && fieldState !== 'suggestion') { - return false; - } - } + if ( + fieldState !== "ok" && + fieldState !== "rejected" && + fieldState !== "suggestion" + ) { + return false; + } } - return true; -} \ No newline at end of file + } + return true; +} diff --git a/dataedit/templates/dataedit/opr_contributor.html b/dataedit/templates/dataedit/opr_contributor.html index 44f1ebb20..2063ffa7b 100644 --- a/dataedit/templates/dataedit/opr_contributor.html +++ b/dataedit/templates/dataedit/opr_contributor.html @@ -190,14 +190,14 @@