From b1133e0aee7db10b77875725d270589841a683f6 Mon Sep 17 00:00:00 2001 From: Felix Homa Date: Mon, 28 Mar 2022 15:33:18 +0200 Subject: [PATCH] Custom Decimals --- Example.schema | 3 ++- .../cs/rvs/pingger/korrekturHelper/HtmlContext.java | 3 +++ .../rvs/pingger/korrekturHelper/KorrekturHelper.java | 4 ++++ .../cs/rvs/pingger/korrekturHelper/Utils.java | 7 ++++--- .../nodes/CheckboxMultiSelectNode.java | 7 ++++--- .../pingger/korrekturHelper/nodes/CheckboxNode.java | 4 ++-- .../rvs/pingger/korrekturHelper/nodes/EitherNode.java | 11 ++++++----- .../korrekturHelper/nodes/RadioMultiSelectNode.java | 8 +++++--- 8 files changed, 30 insertions(+), 17 deletions(-) diff --git a/Example.schema b/Example.schema index d9be8c6..7b17a86 100644 --- a/Example.schema +++ b/Example.schema @@ -2,7 +2,8 @@ // :base gibt die Start-Punkte an und überschreibt die maximal Punkt, wenn ungleich 0 :base 0.0 - +// Count of decimal places +:decimals 1 // Design für Punkte. Pts ist dabei für die Punkte, PtsText für den Text. die Punkte zählen als Teil des Textes (
  • 'Punkte'Text
  • ) // full -> best-Case :fullPts color: #0f0; font-weight: bold; diff --git a/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/HtmlContext.java b/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/HtmlContext.java index 2775c81..6475693 100644 --- a/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/HtmlContext.java +++ b/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/HtmlContext.java @@ -16,6 +16,8 @@ public class HtmlContext public String cbmsFail = ""; /** Style for checked Boxes in CheckboxMultiSelect */ public String cbmsOk = ""; + /** Number of Decimals on Points */ + public int decimals = 1; /** Style for the Points, when the best case Points have been achieved */ public String fullPtsStyle = ""; /** Style for the Text, when the best case Points have been achieved */ @@ -24,6 +26,7 @@ public class HtmlContext public MathContext mc = MathContext.DECIMAL32; /** Style for the Points, when the worst case Points have been achieved */ public String noPtsStyle = ""; + /** Style for the Text, when the best case Points have been achieved */ public String noPtsTextStyle = ""; diff --git a/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/KorrekturHelper.java b/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/KorrekturHelper.java index acedecb..d5f39cc 100644 --- a/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/KorrekturHelper.java +++ b/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/KorrekturHelper.java @@ -200,6 +200,10 @@ public class KorrekturHelper hc.basePoints = new BigDecimal(split[1]); break; + case ":decimals": + hc.decimals = Integer.parseInt(split[1]); + break; + case ":fullPts": hc.fullPtsStyle = split.length > 1 ? split[1] : ""; break; diff --git a/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/Utils.java b/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/Utils.java index f4e36fe..b05c88e 100644 --- a/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/Utils.java +++ b/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/Utils.java @@ -11,12 +11,13 @@ public class Utils /** * formats Points for Users * - * @param bd the {@link BigDecimal} to format + * @param bd the {@link BigDecimal} to format + * @param decimals decimals * @return the formatted String (1 decimal place) */ - public static String formatPoints(BigDecimal bd) + public static String formatPoints(BigDecimal bd, int decimals) { - return String.format("%.1f", bd.doubleValue()); + return String.format("%." + decimals + "f", bd.doubleValue()); } /** diff --git a/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/nodes/CheckboxMultiSelectNode.java b/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/nodes/CheckboxMultiSelectNode.java index 8b2faae..47603cd 100644 --- a/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/nodes/CheckboxMultiSelectNode.java +++ b/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/nodes/CheckboxMultiSelectNode.java @@ -58,7 +58,7 @@ public class CheckboxMultiSelectNode extends AbstractNode { throw new IllegalArgumentException("Expected []"); } points[i - 1] = new BigDecimal(s[1]); text[i - 1] = s[2]; - rbs[i - 1] = new JCheckBox(Utils.formatPoints(points[i - 1]) + "P - " + text[i - 1]); + rbs[i - 1] = new JCheckBox(Utils.formatPoints(points[i - 1], 2) + "P - " + text[i - 1]); rbs[i - 1].addActionListener(cl); content.add(rbs[i - 1]); } @@ -124,7 +124,8 @@ public class CheckboxMultiSelectNode extends AbstractNode var sb = new StringBuilder(); sb.append(""); sb.append(""); - sb.append(Utils.formatPoints(achievedPoints(hc.mc))).append(" / ").append(Utils.formatPoints(maxPoints)); + sb.append(Utils.formatPoints(achievedPoints(hc.mc), hc.decimals)).append(" / ") + .append(Utils.formatPoints(maxPoints, hc.decimals)); sb.append("P "); sb.append(baseMsg); sb.append("\n\t
      \n"); @@ -132,7 +133,7 @@ public class CheckboxMultiSelectNode extends AbstractNode { sb.append("\t\t"); sb.append(rbs[i].isSelected() ? "✓ " : "✗ "); - sb.append("(").append(Utils.formatPoints(points[i])).append("P) "); + sb.append("(").append(Utils.formatPoints(points[i], hc.decimals)).append("P) "); sb.append(text[i]); sb.append("\n"); } diff --git a/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/nodes/CheckboxNode.java b/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/nodes/CheckboxNode.java index 84ea154..ff206d2 100644 --- a/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/nodes/CheckboxNode.java +++ b/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/nodes/CheckboxNode.java @@ -33,7 +33,7 @@ public class CheckboxNode extends AbstractNode { throw new IllegalArgumentException("Not a [] Node"); } points = new BigDecimal(spl[1]); message = spl[2]; - cbx = new JCheckBox(Utils.formatPoints(points) + "P " + message); + cbx = new JCheckBox(Utils.formatPoints(points, 2) + "P " + message); cbx.addActionListener(e -> onChange(this)); content.add(cbx); } @@ -70,7 +70,7 @@ public class CheckboxNode extends AbstractNode public String toResultHtml(HtmlContext hc) { return "" - + Utils.formatPoints(achievedPoints(hc.mc)) + "P " + message + ""; + + Utils.formatPoints(achievedPoints(hc.mc), hc.decimals) + "P " + message + ""; } } diff --git a/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/nodes/EitherNode.java b/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/nodes/EitherNode.java index 4dcdc87..c621c5f 100644 --- a/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/nodes/EitherNode.java +++ b/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/nodes/EitherNode.java @@ -42,14 +42,15 @@ public class EitherNode extends AbstractNode messageFail = spl.length == 3 ? null : spl.length == 4 ? spl[3].substring(1).trim() : spl[4]; if (points.signum() > 0) { - btn_ok = new JRadioButton(Utils.formatPoints(points) + "P " + messageOK); + btn_ok = new JRadioButton(Utils.formatPoints(points, 2) + "P " + messageOK); btn_fail = new JRadioButton( Utils.ptsToString(BigDecimal.ZERO) + "P " + (messageFail == null ? messageOK : messageFail)); } else { - btn_ok = new JRadioButton(Utils.formatPoints(BigDecimal.ZERO) + "P " + messageOK); - btn_fail = new JRadioButton(Utils.formatPoints(points) + "P " + (messageFail == null ? messageOK : messageFail)); + btn_ok = new JRadioButton(Utils.formatPoints(BigDecimal.ZERO, 2) + "P " + messageOK); + btn_fail = new JRadioButton( + Utils.formatPoints(points, 2) + "P " + (messageFail == null ? messageOK : messageFail)); } btn_ok.addActionListener(e -> onChange(this)); btn_fail.addActionListener(e -> onChange(this)); @@ -127,8 +128,8 @@ public class EitherNode extends AbstractNode } return "" + // "" + // - Utils.formatPoints(achievedPoints(hc.mc)) + // - (points.signum() < 0 ? "" : " / " + Utils.formatPoints(maximumPoints())) + "P" + // + Utils.formatPoints(achievedPoints(hc.mc), hc.decimals) + // + (points.signum() < 0 ? "" : " / " + Utils.formatPoints(maximumPoints(), hc.decimals)) + "P" + // " " + // (points.signum() < 0 ? btn_fail.isSelected() ? messageOK : messageFail : btn_fail.isSelected() ? messageFail : messageOK) diff --git a/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/nodes/RadioMultiSelectNode.java b/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/nodes/RadioMultiSelectNode.java index 4bfa927..2be7f97 100644 --- a/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/nodes/RadioMultiSelectNode.java +++ b/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/nodes/RadioMultiSelectNode.java @@ -60,7 +60,7 @@ public class RadioMultiSelectNode extends AbstractNode { throw new IllegalArgumentException("Expected exactly 1 \\t"); } points[i - 1] = new BigDecimal(s[0]); text[i - 1] = s[1]; - rbs[i - 1] = new JRadioButton(Utils.formatPoints(points[i - 1]) + "P - " + text[i - 1]); + rbs[i - 1] = new JRadioButton(Utils.formatPoints(points[i - 1], 2) + "P - " + text[i - 1]); rbs[i - 1].addActionListener(cl); content.add(rbs[i - 1]); bg.add(rbs[i - 1]); @@ -131,12 +131,14 @@ public class RadioMultiSelectNode extends AbstractNode { return "" + // "" + // - Utils.formatPoints(BigDecimal.ZERO) + " / " + Utils.formatPoints(maxPoints) + "P " + // + Utils.formatPoints(BigDecimal.ZERO, hc.decimals) + " / " + Utils.formatPoints(maxPoints, hc.decimals) + + "P " + // (baseMsg == null ? "" : baseMsg) + ""; } return "" + // " " + // - Utils.formatPoints(achievedPoints(hc.mc)) + " / " + Utils.formatPoints(maxPoints) + "P " + // + Utils.formatPoints(achievedPoints(hc.mc), hc.decimals) + " / " + Utils.formatPoints(maxPoints, hc.decimals) + + "P " + // (baseMsg == null ? text[getSelected()] : baseMsg + " (" + text[getSelected()] + ")") + ""; }