From e84fc37cf68aab4372543e6c9c980678c6f9653e Mon Sep 17 00:00:00 2001 From: Tom Zhao <tom.zhao@dsv.su.se> Date: Thu, 30 Jan 2025 10:11:14 +0100 Subject: [PATCH] 97: Update supervisor view related code to reflect the latest grading criterions --- .../su/dsv/scipro/grading/TemplatePanel.html | 260 +++++++++++------- .../su/dsv/scipro/grading/TemplatePanel.java | 44 ++- 2 files changed, 204 insertions(+), 100 deletions(-) diff --git a/view/src/main/java/se/su/dsv/scipro/grading/TemplatePanel.html b/view/src/main/java/se/su/dsv/scipro/grading/TemplatePanel.html index 10a08fca07..06a3492e70 100644 --- a/view/src/main/java/se/su/dsv/scipro/grading/TemplatePanel.html +++ b/view/src/main/java/se/su/dsv/scipro/grading/TemplatePanel.html @@ -2,156 +2,226 @@ <html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org"> <body> <wicket:panel> - <wicket:container wicket:id="from2017"> - <div wicket:id="bachelorContainer"> - <div class="card mb-3 bg-light"> - <div class="card-body p-2"> - <p> - <strong>Omvandling från poäng till betyg för ett kandidatarbete görs enligt följande schema:</strong> - </p> + <wicket:container wicket:id="from202411"> + <div wicket:id="bachelorContainer"><!-- todo ! --> + <div class="card mb-3 bg-light"> + <div class="card-body p-2"> + <p> + <strong>Omvandling från poäng till betyg för ett kandidatarbete görs enligt följande schema: (varför svenska här?)</strong> + </p> - <p>[A] 28-26, at least 1 point on components U1-U12 and Ö1-Ö4, Ö6</p> + <p>[A] 31-29, at least 1 point on components U1-U12 and Ö1-Ö4, Ö6?</p> - <p>[B] 25-24, at least 1 point on components U1-U12 and Ö1-Ö3, Ö6</p> + <p>[B] 28-26, at least 1 point on components U1-U12 and Ö1-Ö3, Ö6?</p> - <p>[C] 23-20, at least 1 point on components U1-U12 and Ö1-Ö3, Ö6</p> + <p>[C] 25-22, at least 1 point on components U1-U12 and Ö1-Ö3, Ö6?</p> - <p>[D] 19-18, at least 1 point on components U1-U12 and Ö1-Ö3, Ö6</p> + <p>[D] 21-19, at least 1 point on components U1-U12 and Ö1-Ö3, Ö6?</p> - <p>[E] 17-16, at least 1 point on components U1-U12 and Ö1-Ö3, Ö6</p> + <p>[E] 18-16, at least 1 point on components U1-U12 and Ö1-Ö3, Ö6?</p> - <p>[Fx] at least 1 point on 8 of the components U1-U12 and at least 2 points altogether on components - Ö1-Ö3 - </p> + <p>[Fx] ???at least 1 point on 8 of the components U1-U12 and at least 2 points altogether on components + Ö1-Ö3??? + </p> + </div> </div> </div> - </div> - <div wicket:id="master15Container"> - <div class="card mb-3 bg-light"> - <div class="card-body p-2"> - <p> - <strong>Conversion from points to grades is done according to the following schema:</strong> - </p> + <div wicket:id="master15Container"><!-- todo ! --> + <div class="card mb-3 bg-light"> + <div class="card-body p-2"> + <p> + <strong>Conversion from points to grades is done according to the following schema:</strong> + </p> - <p>[A] 29-27, at least 1 point on components U1-U7, U10-U13 and Ö1-Ö4, Ö6, and at least 2 points on U8-U9</p> + <p>[A] 33-31, at least 1 point on components U1-U7, U10-U13 and Ö1-Ö4, Ö6, and at least 2 points on U8-U9?</p> - <p>[B] 26-25, at least 1 point on components U1-U7, U10-U13 and Ö1-Ö3, Ö6, and at least 2 points on U8-U9</p> + <p>[B] 30-28, at least 1 point on components U1-U7, U10-U13 and Ö1-Ö3, Ö6, and at least 2 points on U8-U9?</p> - <p>[C] 24-23, at least 1 point on components U1-U7, U10-U13 and Ö1-Ö3, Ö6, and at least 2 points on U8-U9</p> + <p>[C] 27-24, at least 1 point on components U1-U7, U10-U13 and Ö1-Ö3, Ö6, and at least 2 points on U8-U9?</p> - <p>[D] 22-21, at least 1 point on components U1-U7, U10-U13 and Ö1-Ö3, Ö6, and at least 2 points on U8-U9</p> + <p>[D] 23-21, at least 1 point on components U1-U7, U10-U13 and Ö1-Ö3, Ö6, and at least 2 points on U8-U9?</p> - <p>[E] 20-19, at least 1 point on components U1-U7, U10-U13 and Ö1-Ö3, Ö6, and at least 2 points on U8-U9</p> + <p>[E] 20-19, at least 1 point on components U1-U7, U10-U13 and Ö1-Ö3, Ö6, and at least 2 points on U8-U9?</p> - <p>[Fx] at least 1 point on 10 of the components U1-U13 and at least 2 points altogether on components Ö1-Ö3</p> + <p>[Fx] ???at least 1 point on 10 of the components U1-U13 and at least 2 points altogether on components Ö1-Ö3???</p> + </div> </div> </div> - </div> - <div wicket:id="master30Container"> - <div class="card mb-3 bg-light"> - <div class="card-body p-2"> - <p> - <strong>Conversion from points to grades is done according to the following schema:</strong> - <span class="text-body-secondary">Updated 2017-02-20</span> - </p> + <div wicket:id="master30Container"><!-- todo ! --> + <div class="card mb-3 bg-light"> + <div class="card-body p-2"> + <p> + <strong>Conversion from points to grades is done according to the following schema:</strong> + </p> - <p>[A] 33-31, at least 1 point on components U1-U4, U10-U12, Ö1-Ö4, Ö6, and at least 2 points on U5-U9, U13</p> + <p>[A] 37-35, at least 1 point on components U1-U4, U10-U12, Ö1-Ö4, Ö6, and at least 2 points on U5-U9, U13?</p> - <p>[B] 30-29, at least 1 point on components U1-U4, U10-U12, Ö1-Ö3, Ö6, and at least 2 points on U5-U9, U13</p> + <p>[B] 34-32, at least 1 point on components U1-U4, U10-U12, Ö1-Ö3, Ö6, and at least 2 points on U5-U9, U13?</p> - <p>[C] 28-27, at least 1 point on components U1-U4, U10-U12, Ö1-Ö3, Ö6, and at least 2 points on U5-U9, U13</p> + <p>[C] 31-28, at least 1 point on components U1-U4, U10-U12, Ö1-Ö3, Ö6, and at least 2 points on U5-U9, U13?</p> - <p>[D] 26-25, at least 1 point on components U1-U4, U10-U12, Ö1-Ö3, Ö6, and at least 2 points on U5-U9, U13</p> + <p>[D] 27-25, at least 1 point on components U1-U4, U10-U12, Ö1-Ö3, Ö6, and at least 2 points on U5-U9, U13?</p> - <p>[E] 24-23, at least 1 point on components U1-U4, U10-U12, Ö1-Ö3, Ö6, and at least 2 points on U5-U9, U13</p> + <p>[E] 25-23, at least 1 point on components U1-U4, U10-U12, Ö1-Ö3, Ö6, and at least 2 points on U5-U9, U13?</p> - <p>[Fx] at least 1 point on 12 of the components U1-U13 and at least 2 points altogether on components Ö1-Ö3</p> + <p>[Fx] ???at least 1 point on 12 of the components U1-U13 and at least 2 points altogether on components Ö1-Ö3???</p> + </div> + </div> + </div> + </wicket:container> + + <wicket:container wicket:id="between2017_202410"> + <div wicket:id="bachelorContainer"> + <div class="card mb-3 bg-light"> + <div class="card-body p-2"> + <p> + <strong>Omvandling från poäng till betyg för ett kandidatarbete görs enligt följande schema:</strong> + </p> + + <p>[A] 28-26, at least 1 point on components U1-U12 and Ö1-Ö4, Ö6</p> + + <p>[B] 25-24, at least 1 point on components U1-U12 and Ö1-Ö3, Ö6</p> + + <p>[C] 23-20, at least 1 point on components U1-U12 and Ö1-Ö3, Ö6</p> + + <p>[D] 19-18, at least 1 point on components U1-U12 and Ö1-Ö3, Ö6</p> + + <p>[E] 17-16, at least 1 point on components U1-U12 and Ö1-Ö3, Ö6</p> + + <p>[Fx] at least 1 point on 8 of the components U1-U12 and at least 2 points altogether on components + Ö1-Ö3 + </p> + </div> + </div> + </div> + + <div wicket:id="master15Container"> + <div class="card mb-3 bg-light"> + <div class="card-body p-2"> + <p> + <strong>Conversion from points to grades is done according to the following schema:</strong> + </p> + + <p>[A] 29-27, at least 1 point on components U1-U7, U10-U13 and Ö1-Ö4, Ö6, and at least 2 points on U8-U9</p> + + <p>[B] 26-25, at least 1 point on components U1-U7, U10-U13 and Ö1-Ö3, Ö6, and at least 2 points on U8-U9</p> + + <p>[C] 24-23, at least 1 point on components U1-U7, U10-U13 and Ö1-Ö3, Ö6, and at least 2 points on U8-U9</p> + + <p>[D] 22-21, at least 1 point on components U1-U7, U10-U13 and Ö1-Ö3, Ö6, and at least 2 points on U8-U9</p> + + <p>[E] 20-19, at least 1 point on components U1-U7, U10-U13 and Ö1-Ö3, Ö6, and at least 2 points on U8-U9</p> + + <p>[Fx] at least 1 point on 10 of the components U1-U13 and at least 2 points altogether on components Ö1-Ö3</p> + </div> + </div> + </div> + + <div wicket:id="master30Container"> + <div class="card mb-3 bg-light"> + <div class="card-body p-2"> + <p> + <strong>Conversion from points to grades is done according to the following schema:</strong> + <span class="text-body-secondary">Updated 2017-02-20</span> + </p> + + <p>[A] 33-31, at least 1 point on components U1-U4, U10-U12, Ö1-Ö4, Ö6, and at least 2 points on U5-U9, U13</p> + + <p>[B] 30-29, at least 1 point on components U1-U4, U10-U12, Ö1-Ö3, Ö6, and at least 2 points on U5-U9, U13</p> + + <p>[C] 28-27, at least 1 point on components U1-U4, U10-U12, Ö1-Ö3, Ö6, and at least 2 points on U5-U9, U13</p> + + <p>[D] 26-25, at least 1 point on components U1-U4, U10-U12, Ö1-Ö3, Ö6, and at least 2 points on U5-U9, U13</p> + + <p>[E] 24-23, at least 1 point on components U1-U4, U10-U12, Ö1-Ö3, Ö6, and at least 2 points on U5-U9, U13</p> + + <p>[Fx] at least 1 point on 12 of the components U1-U13 and at least 2 points altogether on components Ö1-Ö3</p> + </div> </div> </div> - </div> </wicket:container> <wicket:container wicket:id="upto2016"> - <div wicket:id="bachelorContainer"> - <div class="card mb-3 bg-light"> - <div class="card-body p-2"> - <p> - <strong> - Omvandling från poäng till betyg för ett kandidatarbete görs enligt följande - schema: - </strong> - </p> + <div wicket:id="bachelorContainer"> + <div class="card mb-3 bg-light"> + <div class="card-body p-2"> + <p> + <strong> + Omvandling från poäng till betyg för ett kandidatarbete görs enligt följande + schema: + </strong> + </p> - <p>[A] 27-25, minst 1 poäng på komponenterna U1-U12 samt Ö1-Ö4</p> + <p>[A] 27-25, minst 1 poäng på komponenterna U1-U12 samt Ö1-Ö4</p> - <p>[B] 24-23, minst 1 poäng på komponenterna U1-U12 samt Ö1-Ö3</p> + <p>[B] 24-23, minst 1 poäng på komponenterna U1-U12 samt Ö1-Ö3</p> - <p>[C] 22-19, minst 1 poäng på komponenterna U1-U12 samt Ö1-Ö3</p> + <p>[C] 22-19, minst 1 poäng på komponenterna U1-U12 samt Ö1-Ö3</p> - <p>[D] 18-17, minst 1 poäng på komponenterna U1-U12 samt Ö1-Ö3</p> + <p>[D] 18-17, minst 1 poäng på komponenterna U1-U12 samt Ö1-Ö3</p> - <p>[E] 16-15, minst 1 poäng på komponenterna U1-U12 samt Ö1-Ö3</p> + <p>[E] 16-15, minst 1 poäng på komponenterna U1-U12 samt Ö1-Ö3</p> - <p>[Fx] minst 1 poäng på åtta av komponenterna U1-U12 och minst två poäng sammanlagt på - komponenterna Ö1-Ö3 - </p> + <p>[Fx] minst 1 poäng på åtta av komponenterna U1-U12 och minst två poäng sammanlagt på + komponenterna Ö1-Ö3 + </p> + </div> </div> </div> - </div> - <div wicket:id="master15Container"> - <div class="card mb-3 bg-light"> - <div class="card-body p-2"> - <p> - <strong> - Omvandling från poäng till betyg för ett kandidatarbete görs enligt följande - schema: - </strong> - </p> + <div wicket:id="master15Container"> + <div class="card mb-3 bg-light"> + <div class="card-body p-2"> + <p> + <strong> + Omvandling från poäng till betyg för ett kandidatarbete görs enligt följande + schema: + </strong> + </p> - <p>[A] 28-26, minst 1 poäng på komponenterna U1-U7, U10-U13 samt Ö1-Ö4, minst 2 poäng på U8-U9</p> + <p>[A] 28-26, minst 1 poäng på komponenterna U1-U7, U10-U13 samt Ö1-Ö4, minst 2 poäng på U8-U9</p> - <p>[B] 25-24, minst 1 poäng på komponenterna U1-U7, U10-U13 samt Ö1-Ö3, minst 2 poäng på U8-U9</p> + <p>[B] 25-24, minst 1 poäng på komponenterna U1-U7, U10-U13 samt Ö1-Ö3, minst 2 poäng på U8-U9</p> - <p>[C] 23-22, minst 1 poäng på komponenterna U1-U7, U10-U13 samt Ö1-Ö3, minst 2 poäng på U8-U9</p> + <p>[C] 23-22, minst 1 poäng på komponenterna U1-U7, U10-U13 samt Ö1-Ö3, minst 2 poäng på U8-U9</p> - <p>[D] 21-20, minst 1 poäng på komponenterna U1-U7, U10-U13 samt Ö1-Ö3, minst 2 poäng på U8-U9</p> + <p>[D] 21-20, minst 1 poäng på komponenterna U1-U7, U10-U13 samt Ö1-Ö3, minst 2 poäng på U8-U9</p> - <p>[E] 19-18, minst 1 poäng på komponenterna U1-U7, U10-U13 samt Ö1-Ö3, minst 2 poäng på U8-U9</p> + <p>[E] 19-18, minst 1 poäng på komponenterna U1-U7, U10-U13 samt Ö1-Ö3, minst 2 poäng på U8-U9</p> - <p>[Fx] minst 1 poäng på tio av komponenterna U1-U13 och minst två poäng sammanlagt på komponenterna - Ö1-Ö3</p> + <p>[Fx] minst 1 poäng på tio av komponenterna U1-U13 och minst två poäng sammanlagt på komponenterna + Ö1-Ö3</p> + </div> </div> </div> - </div> - <div wicket:id="master30Container"> - <div class="card mb-3 bg-light"> - <div class="card-body p-2"> - <p> - <strong> - Omvandling från poäng till betyg för ett kandidatarbete görs enligt följande - schema: - </strong> - </p> + <div wicket:id="master30Container"> + <div class="card mb-3 bg-light"> + <div class="card-body p-2"> + <p> + <strong> + Omvandling från poäng till betyg för ett kandidatarbete görs enligt följande + schema: + </strong> + </p> - <p>[A] 32-30, minst 1 poäng på komponenterna U1-U4, U10-U12, Ö1-Ö4, minst 2 poäng på U5-U9, U13</p> + <p>[A] 32-30, minst 1 poäng på komponenterna U1-U4, U10-U12, Ö1-Ö4, minst 2 poäng på U5-U9, U13</p> - <p>[B] 29-28, minst 1 poäng på komponenterna U1-U4, U10-U12, Ö1-Ö3, minst 2 poäng på U5-U9, U13</p> + <p>[B] 29-28, minst 1 poäng på komponenterna U1-U4, U10-U12, Ö1-Ö3, minst 2 poäng på U5-U9, U13</p> - <p>[C] 27-26, minst 1 poäng på komponenterna U1-U4, U10-U12, Ö1-Ö3, minst 2 poäng på U5-U9, U13</p> + <p>[C] 27-26, minst 1 poäng på komponenterna U1-U4, U10-U12, Ö1-Ö3, minst 2 poäng på U5-U9, U13</p> - <p>[D] 25-24, minst 1 poäng på komponenterna U1-U4, U10-U12, Ö1-Ö3, minst 2 poäng på U5-U9, U13</p> + <p>[D] 25-24, minst 1 poäng på komponenterna U1-U4, U10-U12, Ö1-Ö3, minst 2 poäng på U5-U9, U13</p> - <p>[E] 23-22, minst 1 poäng på komponenterna U1-U4, U10-U12, Ö1-Ö3, minst 2 poäng på U5-U9, U13</p> + <p>[E] 23-22, minst 1 poäng på komponenterna U1-U4, U10-U12, Ö1-Ö3, minst 2 poäng på U5-U9, U13</p> - <p>[Fx] minst 1 poäng på tolv av komponenterna U1-U13 och minst två poäng sammanlagt på komponenterna - Ö1-Ö3</p> + <p>[Fx] minst 1 poäng på tolv av komponenterna U1-U13 och minst två poäng sammanlagt på komponenterna + Ö1-Ö3</p> + </div> </div> </div> - </div> </wicket:container> </wicket:panel> </body> diff --git a/view/src/main/java/se/su/dsv/scipro/grading/TemplatePanel.java b/view/src/main/java/se/su/dsv/scipro/grading/TemplatePanel.java index d314162b13..629f8fc67c 100644 --- a/view/src/main/java/se/su/dsv/scipro/grading/TemplatePanel.java +++ b/view/src/main/java/se/su/dsv/scipro/grading/TemplatePanel.java @@ -6,12 +6,32 @@ import org.apache.wicket.model.IModel; import se.su.dsv.scipro.project.Project; import se.su.dsv.scipro.system.DegreeType; +import java.time.LocalDate; + public class TemplatePanel extends Panel { public static final String BACHELOR_CONTAINER = "bachelorContainer"; public static final String MASTER_15_CONTAINER = "master15Container"; public static final String MASTER_30_CONTAINER = "master30Container"; + private enum GradingCategory { + UP_TO_2016, + BETWEEN_2017_202410, + FROM_202411; + + public static GradingCategory fromProjectStartDate(LocalDate projectStartDate) { + int year = projectStartDate.getYear(); + int month = projectStartDate.getMonthValue(); + + if (year < 2017) { + return UP_TO_2016; + } else { + return (year <= 2024 && month < 11) ? BETWEEN_2017_202410 : FROM_202411; + } + + } + } + public TemplatePanel(String id, final IModel<Project> projectIModel) { super(id, projectIModel); final DegreeType degreeType = projectIModel.getObject().getProjectType().getDegreeType(); @@ -20,20 +40,34 @@ public class TemplatePanel extends Panel { @Override protected void onConfigure() { super.onConfigure(); - setVisibilityAllowed(getYear(projectIModel.getObject()) < 2017); + setVisibilityAllowed(GradingCategory.fromProjectStartDate(projectIModel.getObject().getStartDate()) + == GradingCategory.UP_TO_2016); } }; addTemplates(degreeType, upto16); add(upto16); - final WebMarkupContainer from2017 = new WebMarkupContainer("from2017") { + + final WebMarkupContainer between2017_202410 = new WebMarkupContainer("between2017_202410") { @Override protected void onConfigure() { super.onConfigure(); - setVisibilityAllowed(getYear(projectIModel.getObject()) >= 2017); + setVisibilityAllowed(GradingCategory.fromProjectStartDate(projectIModel.getObject().getStartDate()) + == GradingCategory.BETWEEN_2017_202410); } }; - addTemplates(degreeType, from2017); - add(from2017); + addTemplates(degreeType, between2017_202410); + add(between2017_202410); + + final WebMarkupContainer from202411 = new WebMarkupContainer("from202411") { + @Override + protected void onConfigure() { + super.onConfigure(); + setVisibilityAllowed(GradingCategory.fromProjectStartDate(projectIModel.getObject().getStartDate()) + == GradingCategory.FROM_202411); + } + }; + addTemplates(degreeType, from202411); + add(from202411); } private void addTemplates(final DegreeType degreeType, final WebMarkupContainer container) {