feat: implement reports
This commit is contained in:
@@ -406,13 +406,13 @@ pub fn analyze(
|
||||
let mut credits: BTreeMap<String, Vec<f64>> = BTreeMap::new();
|
||||
let mut blank = 0usize;
|
||||
for r in &rows {
|
||||
if r.selected.is_empty() {
|
||||
if r.chosen().is_empty() {
|
||||
blank += 1;
|
||||
continue;
|
||||
}
|
||||
// A multiple-response item is credited to the joined set, so that
|
||||
// "chose A and C" is one response pattern rather than two options.
|
||||
let label = r.selected.join("+");
|
||||
let label = r.chosen().join("+");
|
||||
if let Some(&si) = student_index.get(r.student_key.as_str()) {
|
||||
chose.entry(label.clone()).or_default().push(si);
|
||||
}
|
||||
@@ -775,7 +775,7 @@ fn infer_key(rows: &[&crate::responses::Response]) -> Vec<String> {
|
||||
let mut out: BTreeSet<String> = BTreeSet::new();
|
||||
for r in rows {
|
||||
if r.credit >= 0.999 {
|
||||
for letter in &r.selected {
|
||||
for letter in r.chosen() {
|
||||
out.insert(letter.clone());
|
||||
}
|
||||
}
|
||||
@@ -857,6 +857,7 @@ mod tests {
|
||||
assessment_id: "a".into(),
|
||||
date: None,
|
||||
form: None,
|
||||
form_position: None,
|
||||
student_key: student.into(),
|
||||
sid: None,
|
||||
name: None,
|
||||
@@ -870,7 +871,9 @@ mod tests {
|
||||
} else {
|
||||
vec![letter.to_string()]
|
||||
},
|
||||
selected_source: vec![],
|
||||
eliminated: vec![],
|
||||
eliminated_source: vec![],
|
||||
correct: Some(credit >= 0.999),
|
||||
credit,
|
||||
points_possible: 1.0,
|
||||
|
||||
Reference in New Issue
Block a user