Skip to content
Snippets Groups Projects

Resolve "Assignment weights"

1 file
+ 27
1
Compare changes
  • Side-by-side
  • Inline
@@ -30,6 +30,31 @@
@@ -30,6 +30,31 @@
id="grading-overlay"
id="grading-overlay"
class="dialog">
class="dialog">
<script>
<script>
 
document.addEventListener("DOMContentLoaded", () => {
 
populateWeightsFromFormula();
 
});
 
 
function populateWeightsFromFormula() {
 
let formula = document.getElementById("formula").value;
 
 
const regex = /\(([^*()]+)\s*\*\s*([\d.]+)\)/g;
 
let match;
 
let totalWeight = 0;
 
 
document.querySelectorAll(".weight-field").forEach(field => (field.value = ""));
 
 
while ((match = regex.exec(formula)) !== null) {
 
let assignment = match[1].trim();
 
let weight = parseFloat(match[2]);
 
totalWeight += weight;
 
 
let input = document.querySelector(`[data-assignment="${assignment}"]`);
 
if (input) {
 
input.value = weight;
 
}
 
}
 
}
 
function updateFormula() {
function updateFormula() {
let formula = "";
let formula = "";
let totalWeight = 0;
let totalWeight = 0;
@@ -134,7 +159,8 @@
@@ -134,7 +159,8 @@
class="textfield"
class="textfield"
type="text"
type="text"
th:value="${object.gradingFormula?.formula}"
th:value="${object.gradingFormula?.formula}"
th:placeholder="#{grading.formula.enter}" />
th:placeholder="#{grading.formula.enter}"
 
onchange="populateWeightsFromFormula()" />
<div class="font-200 pl-1">
<div class="font-200 pl-1">
<span th:text="|#{grading.available_scores}:|"></span>
<span th:text="|#{grading.available_scores}:|"></span>
<span
<span
Loading