From 3865c4bc9cfa94ba933841a3b278b68645c35211 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Fri, 1 Apr 2022 17:42:12 -0300 Subject: [PATCH] fix: restore function of unassigned review management page (#3774) * style: reformat manage-review-requests.js as StandardJS style * refactor: use switch statement instead of if/else-if/else * style: remove needless line break * fix: fix jquery selectors to be less fragile and easier to read * fix: clean up bs5 HTML/CSS for review request buttons --- ietf/static/js/manage-review-requests.js | 223 +++++++++--------- .../group/manage_review_requests.html | 34 ++- 2 files changed, 128 insertions(+), 129 deletions(-) diff --git a/ietf/static/js/manage-review-requests.js b/ietf/static/js/manage-review-requests.js index c1156d8c3..c3329f890 100644 --- a/ietf/static/js/manage-review-requests.js +++ b/ietf/static/js/manage-review-requests.js @@ -1,128 +1,119 @@ -$(document) - .ready(function () { - var form = $("form.review-requests"); - var saveButtons = form.find("[name=action][value^='save']"); +/* global $ */ +$(function () { + 'use strict' + const form = $('form.review-requests') + const saveButtons = form.find('[name=action][value^="save"]') - function updateSaveButtons() { - saveButtons.prop("disabled", form.find("[name$='-action'][value][value!=']") - .length == 0); - } + function updateSaveButtons () { + saveButtons.prop( + 'disabled', + form.find('[name$="-action"][value][value!=""]').length === 0 + ) + } - function setControlDisplay(row) { - var action = row.find("[name$='-action']") - .val(); - if (action == "assign") { - row.find(".reviewer-controls") - .show(); - row.find(".close-controls") - .hide(); - row.find(".assign-action,.close-action") - .hide(); - } else if (action == "close") { - row.find(".reviewer-controls") - .hide(); - row.find(".close-controls") - .show(); - row.find(".assign-action,.close-action") - .hide(); - } else { - row.find(".reviewer-controls,.close-controls") - .hide(); - row.find(".assign-action,.close-action") - .show(); + function setControlDisplay (row) { + const action = row.find('[name$="-action"]').val() + switch (action) { + case 'assign': + row.find('.reviewer-controls').show() + row.find('.close-controls').hide() + row.find('.assign-action,.close-action').hide() + break + + case 'close': + row.find('.reviewer-controls').hide() + row.find('.close-controls').show() + row.find('.assign-action,.close-action').hide() + break + + default: + row.find('.reviewer-controls,.close-controls').hide() + row.find('.assign-action,.close-action').show() + } + + updateSaveButtons() + } + + form.find('.assign-action button') + .on('click', function () { + const row = $(this).closest('.review-request') + const select = row.find('.reviewer-controls [name$="-reviewer"]') + if (!select.val()) { + // collect reviewers already assigned in this session + const reviewerAssigned = {} + select.find('option') + .each(function () { + if (this.value) { + reviewerAssigned[this.value] = 0 + } + }) + + form.find('[name$="-action"][value="assign"]') + .each(function () { + const v = $(this) + .closest('.review-request') + .find('[name$="-reviewer"]') + .val() + if (v) { + reviewerAssigned[v] += 1 + } + }) + + // by default, the select box contains a sorted list, so + // we should be able to select the first, unless that + // person has already been assigned to review in this + // session + let found = null + const options = select.find('option').get() + for (let round = 0; round < 100 && !found; ++round) { + for (let i = 0; i < options.length && !found; ++i) { + const v = options[i].value + if (!v) { + continue } - updateSaveButtons(); + if (reviewerAssigned[v] === round) { + found = v + } + } } - form.find(".assign-action button") - .on("click", function () { - var row = $(this) - .closest(".review-request"); + if (found) { + select.val(found) + } + } - var select = row.find(".reviewer-controls [name$='-reviewer']"); - if (!select.val()) { - // collect reviewers already assigned in this session - var reviewerAssigned = {}; - select.find("option") - .each(function () { - if (this.value) - reviewerAssigned[this.value] = 0; - }); + row.find('[name$="-action"]').val('assign') + setControlDisplay(row) + }) - form.find("[name$='-action'][value='assign']") - .each(function () { - var v = $(this) - .closest(".review-request") - .find("[name$='-reviewer']") - .val(); - if (v) - reviewerAssigned[v] += 1; - }); + form.find('.reviewer-controls .undo') + .on('click', function () { + const row = $(this).closest('.review-request') + row.find('[name$="-action"]').val('') + row.find('[name$="-reviewer"]').val($(this).data('initial')) + setControlDisplay(row) + }) - // by default, the select box contains a sorted list, so - // we should be able to select the first, unless that - // person has already been assigned to review in this - // session - var found = null; - var options = select.find("option") - .get(); - for (var round = 0; round < 100 && !found; ++round) { - for (var i = 0; i < options.length && !found; ++i) { - var v = options[i].value; - if (!v) - continue; + form.find('.close-action button') + .on('click', function () { + const row = $(this).closest('.review-request') + row.find('[name$="-action"]').val('close') + setControlDisplay(row) + }) - if (reviewerAssigned[v] == round) - found = v; - } - } + form.find('.close-controls .undo') + .on('click', function () { + const row = $(this).closest('.review-request') + row.find('[name$="-action"]').val('') + setControlDisplay(row) + }) - if (found) - select.val(found); - } + form.find('.assign-action,.close-action') + .each(function () { + const row = $(this).closest('.review-request') + setControlDisplay(row) + }) - row.find("[name$='-action']") - .val("assign"); - setControlDisplay(row); - }); - - form.find(".reviewer-controls .undo") - .on("click", function () { - var row = $(this) - .closest(".review-request"); - row.find("[name$='-action']") - .val(""); - row.find("[name$='-reviewer']") - .val($(this) - .data("initial")); - setControlDisplay(row); - }); - - form.find(".close-action button") - .on("click", function () { - var row = $(this) - .closest(".review-request"); - row.find("[name$='-action']") - .val("close"); - setControlDisplay(row); - }); - - form.find(".close-controls .undo") - .on("click", function () { - var row = $(this) - .closest(".review-request"); - row.find("[name$='-action']") - .val(""); - setControlDisplay(row); - }); - - form.find("[class$='-action']") - .each(function () { - var row = $(this) - .closest(".review-request"); - setControlDisplay(row); - }); - - updateSaveButtons(); - }); \ No newline at end of file + updateSaveButtons() +}) diff --git a/ietf/templates/group/manage_review_requests.html b/ietf/templates/group/manage_review_requests.html index 16f4fcab9..75e843813 100644 --- a/ietf/templates/group/manage_review_requests.html +++ b/ietf/templates/group/manage_review_requests.html @@ -145,16 +145,24 @@ Abstract: {{ r.doc.abstract|linkify|urlize_ietf_docs }} - {% if r.form.non_field_errors %} -
- {% for e in r.form.non_field_errors %}{{ e }}{% endfor %} +
+ {% if r.form.non_field_errors %} +
+
+
+ {% for e in r.form.non_field_errors %}{{ e }}{% endfor %} +
- {% endif %} - - -
+
+ {% endif %} +
+ + +