Skip to content
Snippets Groups Projects
Commit bc567102 authored by uhensler's avatar uhensler
Browse files

OO-4080: Use weighted values in quality heat map and trend diagram

parent 8a416d77
No related branches found
No related tags found
No related merge requests found
...@@ -32,31 +32,31 @@ import org.olat.core.gui.translator.Translator; ...@@ -32,31 +32,31 @@ import org.olat.core.gui.translator.Translator;
public enum ScaleType { public enum ScaleType {
zeroToMax { zeroToMax {
@Override @Override
public double getStepValue(int numberOfSteps, int step) { public double getStepValue(int numberOfSteps, double step) {
return step - 1; return step - 1;
} }
}, },
oneToMax { oneToMax {
@Override @Override
public double getStepValue(int numberOfSteps, int step) { public double getStepValue(int numberOfSteps, double step) {
return step; return step;
} }
}, },
maxToOne { maxToOne {
@Override @Override
public double getStepValue(int numberOfSteps, int step) { public double getStepValue(int numberOfSteps, double step) {
return numberOfSteps + 1 - step; return numberOfSteps + 1 - step;
} }
}, },
maxToZero { maxToZero {
@Override @Override
public double getStepValue(int numberOfSteps, int step) { public double getStepValue(int numberOfSteps, double step) {
return numberOfSteps - step; return numberOfSteps - step;
} }
}, },
zeroBallanced { zeroBallanced {
@Override @Override
public double getStepValue(int numberOfSteps, int step) { public double getStepValue(int numberOfSteps, double step) {
double offset = (numberOfSteps - 1) / 2.0; double offset = (numberOfSteps - 1) / 2.0;
return step - 1 - offset; return step - 1 - offset;
} }
...@@ -70,7 +70,7 @@ public enum ScaleType { ...@@ -70,7 +70,7 @@ public enum ScaleType {
* @param weight (optionl) * @param weight (optionl)
* @return * @return
*/ */
public double getStepValue(int numberOfSteps, int step, Integer weight) { public double getStepValue(int numberOfSteps, double step, Integer weight) {
double stepValue = getStepValue(numberOfSteps, step); double stepValue = getStepValue(numberOfSteps, step);
return weight != null return weight != null
? stepValue * weight.intValue() ? stepValue * weight.intValue()
...@@ -78,7 +78,7 @@ public enum ScaleType { ...@@ -78,7 +78,7 @@ public enum ScaleType {
}; };
abstract double getStepValue(int numberOfSteps, int step); abstract double getStepValue(int numberOfSteps, double step);
public String getKey() { public String getKey() {
return name(); return name();
......
...@@ -103,7 +103,7 @@ public class StatisticsCalculator { ...@@ -103,7 +103,7 @@ public class StatisticsCalculator {
log.debug("Raw grouped statistic: " + rawStatistic.toString()); log.debug("Raw grouped statistic: " + rawStatistic.toString());
Double rawAvg = rawStatistic.getRawAvg(); Double rawAvg = rawStatistic.getRawAvg();
boolean rawAvgMaxGood = !rubric.isStartGoodRating(); boolean rawAvgMaxGood = !rubric.isStartGoodRating();
Double scaledAvg = getScaledAvg(rubric, rawAvg); Double scaledAvg = rubric.getScaleType().getStepValue(rubric.getSteps(), rawAvg, rubric.getWeight());
RubricRating rating = evaluationFormManager.getRubricRating(rubric, scaledAvg); RubricRating rating = evaluationFormManager.getRubricRating(rubric, scaledAvg);
int steps = rubric.getSteps(); int steps = rubric.getSteps();
GroupedStatistic statistic = new GroupedStatisticImpl(rawStatistic.getIdentifier(), rawStatistic.getMultiKey(), GroupedStatistic statistic = new GroupedStatisticImpl(rawStatistic.getIdentifier(), rawStatistic.getMultiKey(),
...@@ -112,24 +112,6 @@ public class StatisticsCalculator { ...@@ -112,24 +112,6 @@ public class StatisticsCalculator {
return statistic; return statistic;
} }
private Double getScaledAvg(Rubric rubric, Double rawAvg) {
Double scaledAvg = rawAvg;
switch (rubric.getScaleType()) {
case maxToOne: {
scaledAvg = rubric.getSteps() + 1 - rawAvg;
break;
}
case zeroBallanced: {
double offset = (rubric.getSteps() - 1) / 2.0;
scaledAvg = rawAvg - 1 - offset;
break;
}
default:
break;
}
return scaledAvg;
}
MultiTrendSeries<String> getTrendsByIdentifiers(GroupedStatistics<GroupedStatistic> statistics, TemporalGroupBy temporalGroupBy) { MultiTrendSeries<String> getTrendsByIdentifiers(GroupedStatistics<GroupedStatistic> statistics, TemporalGroupBy temporalGroupBy) {
Set<TemporalKey> temporalKeys = new HashSet<>(); Set<TemporalKey> temporalKeys = new HashSet<>();
for (GroupedStatisticKeys groupedStatistic : statistics.getStatistics()) { for (GroupedStatisticKeys groupedStatistic : statistics.getStatistics()) {
......
...@@ -98,5 +98,17 @@ public class ScaleTypeTest { ...@@ -98,5 +98,17 @@ public class ScaleTypeTest {
softly.assertThat(ScaleType.zeroBallanced.getStepValue(7, 7)).isEqualTo(3); softly.assertThat(ScaleType.zeroBallanced.getStepValue(7, 7)).isEqualTo(3);
softly.assertAll(); softly.assertAll();
} }
@Test
public void shouldGetWeightedValue() {
SoftAssertions softly = new SoftAssertions();
softly.assertThat(ScaleType.oneToMax.getStepValue(6, 2, null)).isEqualTo(2);
softly.assertThat(ScaleType.oneToMax.getStepValue(6, 2, 2)).isEqualTo(4);
softly.assertThat(ScaleType.maxToOne.getStepValue(6, 3, 3)).isEqualTo(12);
softly.assertThat(ScaleType.zeroToMax.getStepValue(6, 2, 2)).isEqualTo(2);
softly.assertThat(ScaleType.maxToZero.getStepValue(6, 2, 1)).isEqualTo(4);
softly.assertThat(ScaleType.zeroBallanced.getStepValue(6, 3, 3)).isEqualTo(-1.5);
softly.assertAll();
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment