diff --git a/src/main/java/org/olat/modules/forms/ui/RubricAvgRenderer.java b/src/main/java/org/olat/modules/forms/ui/RubricAvgRenderer.java index 0735bff7ad71f6096882e312b51110f69df5d655..5ea399dc29f25ffe5dd3b0d8f3c5bd4ee23f36dc 100644 --- a/src/main/java/org/olat/modules/forms/ui/RubricAvgRenderer.java +++ b/src/main/java/org/olat/modules/forms/ui/RubricAvgRenderer.java @@ -19,6 +19,7 @@ */ package org.olat.modules.forms.ui; +import org.apache.commons.lang.StringEscapeUtils; import org.olat.core.CoreSpringFactory; import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiCellRenderer; import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableComponent; @@ -49,28 +50,33 @@ public class RubricAvgRenderer implements FlexiCellRenderer { URLBuilder ubu, Translator translator) { if (cellValue instanceof Double) { Double value = (Double) cellValue; - render(target, value); + render(target, value, translator); } } - public String render(Double avg) { + public String render(Double avg, Translator translator) { StringOutput target = new StringOutput(); - render(target, avg); + render(target, avg, translator); return target.toString(); } - private void render(StringOutput target, Double value) { + private void render(StringOutput target, Double value, Translator translator) { + EvaluationFormManager evaluationFormManager = CoreSpringFactory.getImpl(EvaluationFormManager.class); + RubricRating rating = evaluationFormManager.getRubricRating(rubric, value); + target.append("<div class='o_rubric_avg o_nowrap "); - target.append(getRatingCssClass(rubric, value)); + String ratingCss = getRatingCssClass(rating); + target.append(ratingCss, ratingCss != null); target.append("'>"); - target.append("<i class='o_icon o_icon-fw ").append(getRatingIconCssClass(rubric, value)).append("'> </i> "); + if (ratingCss != null) { + target.append("<i class='o_icon o_icon-fw ").append(getRatingIconCssClass(rating)).append("' title=\""); + target.append(StringEscapeUtils.escapeHtml(getRatingIconExplanation(rating, rubric, translator))).append("\"> </i> "); + } target.append(EvaluationFormFormatter.formatDouble(value)); target.append("</div>"); } - public static String getRatingCssClass(Rubric rubric, Double value) { - EvaluationFormManager evaluationFormManager = CoreSpringFactory.getImpl(EvaluationFormManager.class); - RubricRating rating = evaluationFormManager.getRubricRating(rubric, value); + public static String getRatingCssClass(RubricRating rating) { switch (rating) { case SUFFICIENT: return "o_rubric_sufficient"; case NEUTRAL: return "o_rubric_neutral"; @@ -78,10 +84,8 @@ public class RubricAvgRenderer implements FlexiCellRenderer { default: return null; } } - - public static String getRatingIconCssClass(Rubric rubric, Double value) { - EvaluationFormManager evaluationFormManager = CoreSpringFactory.getImpl(EvaluationFormManager.class); - RubricRating rating = evaluationFormManager.getRubricRating(rubric, value); + + public static String getRatingIconCssClass(RubricRating rating) { switch (rating) { case SUFFICIENT: return "o_icon_rubric_sufficient"; case NEUTRAL: return "o_icon_rubric_neutral"; @@ -90,5 +94,16 @@ public class RubricAvgRenderer implements FlexiCellRenderer { } } + public static String getRatingIconExplanation(RubricRating rating, Rubric rubric, Translator translator) { + + switch (rating) { + case SUFFICIENT: return translator.translate("rubric.sufficient.explanation", new String[]{rubric.getLowerBoundSufficient()+ "", rubric.getUpperBoundSufficient()+""}); + case NEUTRAL: return translator.translate("rubric.neutral.explanation", new String[]{rubric.getLowerBoundNeutral()+ "", rubric.getUpperBoundNeutral()+""}); + case INSUFFICIENT: return translator.translate("rubric.insufficient.explanation", new String[]{rubric.getLowerBoundInsufficient()+ "", rubric.getUpperBoundInsufficient()+""}); + default: return null; + } + } + + } diff --git a/src/main/java/org/olat/modules/forms/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/modules/forms/ui/_i18n/LocalStrings_de.properties index 4a6e5de5bac37059b46f3ef75da5a0f9c2eebad5..4ec3860a12c0f331314e501d8de16ea0b1f18874 100644 --- a/src/main/java/org/olat/modules/forms/ui/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/modules/forms/ui/_i18n/LocalStrings_de.properties @@ -89,9 +89,11 @@ reports.table.overview=\u00dcbersicht reports.table.report=Tabellen rubic.column.label=Spaltenbeschriftung rubric.insufficient=Ungen\u00fcgend +rubric.insufficient.explanation=Ungen\u00fcgende Beurteilung (Wert zwischen {0} und {1}) rubric.lower.bound=von rubric.name=Name rubric.neutral=Neutral +rubric.neutral.explanation=Neutrale Beurteilung (Wert zwischen {0} und {1}) rubric.no.response.enabled.show=anzeigen rubric.no.response.enabled=Spalte "$\:no.response" rubric.report.avg.abrev=\u00F8 @@ -117,7 +119,8 @@ rubric.scale.maxToOne=Absteigende Likert-Skala (x bis 1) rubric.scale.oneToMax=Aufsteigende Likert-Skala (1 bis x) rubric.scale.type=Skalentyp rubric.scale.zeroBallanced=Symmetrische Likert-Skala (-x bis x) -rubric.sufficient=Gen\u00fcgend +rubric.sufficient=Gut +rubric.sufficient.explanation=Gute Beurteilung (Wert zwischen {0} und {1}) rubric.upper.bound=bis save.as.done=Speichern und abschliessen save.intermediate=Zwischenspeichern diff --git a/src/main/java/org/olat/modules/forms/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/modules/forms/ui/_i18n/LocalStrings_en.properties index 1fdcc1193a489e8b32681fd14a6a4a6a68779f48..2e32e748242d2d1edc1709187c65381b8fc07f25 100644 --- a/src/main/java/org/olat/modules/forms/ui/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/modules/forms/ui/_i18n/LocalStrings_en.properties @@ -90,9 +90,11 @@ reports.table.overview=Overview reports.table.report=Tables rubic.column.label=Column label rubric.insufficient=Insufficient +rubric.insufficient.explanation=Insufficient rating (Value between {0} and {1}) rubric.lower.bound=from rubric.name=Name rubric.neutral=Neutral +rubric.insufficient.explanation=Neutral rating (Value between {0} and {1}) rubric.no.response.enabled.show=show rubric.no.response.enabled=Column "$\:no.response" rubric.report.avg.abrev=\u00F8 @@ -118,7 +120,8 @@ rubric.scale.maxToOne=Descending Likert scale (x to 1) rubric.scale.oneToMax=Ascending Likert scale (1 to x) rubric.scale.type=Scale type rubric.scale.zeroBallanced=Ballanced Likert scale (-x to x) -rubric.sufficient=Sufficient +rubric.sufficient=Good +rubric.insufficient.explanation=Good rating (Value between {0} and {1}) rubric.upper.bound=to save.as.done=Save and finish save.intermediate=Quick save diff --git a/src/main/java/org/olat/modules/quality/analysis/ui/HeatMapRenderer.java b/src/main/java/org/olat/modules/quality/analysis/ui/HeatMapRenderer.java index ba8dbfe1415d17dde9fb5fbc750d0d6c3d5fcbc6..1e85a3b8bf0d09b23d7091492715d49c82dee5ba 100644 --- a/src/main/java/org/olat/modules/quality/analysis/ui/HeatMapRenderer.java +++ b/src/main/java/org/olat/modules/quality/analysis/ui/HeatMapRenderer.java @@ -19,12 +19,15 @@ */ package org.olat.modules.quality.analysis.ui; +import org.olat.core.CoreSpringFactory; import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiCellRenderer; import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableComponent; import org.olat.core.gui.render.Renderer; import org.olat.core.gui.render.StringOutput; import org.olat.core.gui.render.URLBuilder; import org.olat.core.gui.translator.Translator; +import org.olat.modules.forms.EvaluationFormManager; +import org.olat.modules.forms.RubricRating; import org.olat.modules.forms.model.xml.Rubric; import org.olat.modules.forms.ui.EvaluationFormFormatter; import org.olat.modules.forms.ui.RubricAvgRenderer; @@ -70,7 +73,9 @@ public class HeatMapRenderer implements FlexiCellRenderer { } public String getColorCss(GroupedStatistic statistic) { - String colorCss = RubricAvgRenderer.getRatingCssClass(rubric, statistic.getAvg()); + EvaluationFormManager evaluationFormManager = CoreSpringFactory.getImpl(EvaluationFormManager.class); + RubricRating rating = evaluationFormManager.getRubricRating(rubric, statistic.getAvg()); + String colorCss = RubricAvgRenderer.getRatingCssClass(rating); if (colorCss == null) { colorCss = "o_qual_hm_basecolor"; }