<commit_before>h3 Testaufgaben (Runde {{test.run}})
uib-progressbar(
  type="info"
  value="test.count"
  max="test.tests.length"
  title="Fortschritt"
) {{test.count}}/{{test.tests.length}}
uib-progressbar(
  type="success"
  value="test.score.current"
  max="test.score.max"
  title="Punkte"
) {{test.score.current}}/{{test.score.max}}
uib-tabset(justified="true")
  uib-tab(heading="Aufgaben"  active="true")
    h4 Aufgabe {{test.form.$submitted ? test.count : test.count+1}}
    uib-alert(type="warning" close="test.reload()" ng-if="test.error && test.error.status === 412") Du hast diesen Test bereits in einem anderen Browser fortgesetzt.
    div(markdown="test.tests[test.item].text")
    form(novalidate name="test.form" ng-switch="test.tests[test.item].type" ng-submit="test.submit()")
      .form-group(ng-switch-when="input" ng-class="{'has-success': test.output.correct === true, 'has-error': test.output.correct === false}")
        label.control-label(for="item") Antwort
        input#item.form-control(type="text" required autocomplete="off" name="item" ng-model="test.response")
        p.help-block(ng-bind="test.output.feedback || (test.output.correct ? test.tests[test.item].feedback_right||test.feedback.right : test.tests[test.item].feedback_wrong||test.feedback.wrong)" ng-show="test.form.$submitted")
      .form-group(ng-switch-when="single" ng-class="{'has-success': test.form.$submitted&&test.response.correct, 'has-error': test.form.$submitted&&!test.response.correct}")
        .radio(ng-repeat="c in test.tests[test.item].choices track by c._id")
          label
            input(type="radio" required name="item" ng-value="c" ng-model="test.response")
            |  {{c.text}}
        p.help-block(ng-bind="test.response.feedback || (test.response.correct ? test.tests[test.item].feedback_right||test.feedback.right : test.tests[test.item].feedback_wrong||test.feedback.wrong)" ng-show="test.form.$submitted")
      .form-group(ng-switch-when="multiple")
        div(ng-repeat="c in test.tests[test.item].choices track by c._id" ng-class="{'has-success': test.form.$submitted&&!!test.response[c._id]===c.correct, 'has-error': test.form.$submitted&&!!test.response[c._id]!==c.correct}")
          .checkbox
            label
              input(type="checkbox" name="item" ng-model="test.response[c._id]")
              |  {{c.text}}
          p.help-block(ng-bind="!!test.response[c._id] === c.correct ? (c.feedback_right || c.feedback || test.feedback.right) : (c.feedback_wrong || c.feedback || test.feedback.wrong)" ng-show="test.form.$submitted")
      .form-group
        button.btn(
          type="submit"
          ng-if="!test.form.$submitted"
          ng-class="{'btn-primary': test.form.$valid, 'btn-disabled': test.form.$invalid}"
          ng-disabled="test.form.$invalid"
        ) Antwort abschicken
        button.btn.btn-default(
          type="button"
          ng-if="test.form.$submitted"
          ng-click="test.next()"
          ng-bind="test.count === test.tests.length ? 'Test wiederholen' : 'Nächste Aufgabe'"
        )
  uib-tab(heading="Verlauf" select="test.getGuesses()")
    uib-alert(ng-if="test.guesses.length===0" type="info") Es liegen noch keine abgeschlossenen Testdurchgänge vor.
    table.table(ng-if="test.guesses.length>0")
      thead
        tr
          th Durchgang
          th Gestartet
          th Punkte
      tbody
        tr(ng-repeat="g in test.guesses track by g._id")
          th(ng-bind="$index+1")
          td(ng-bind="g.createdAt | date : 'medium'")
          td {{g.score}}/{{test.score.max}} ({{g.score/test.score.max*100 | number : 1}}%)
  uib-tab(heading="Regeln")
    h4 Aufgabentypen
    dl.dl-horizontal
      dt Einfachauswahl
      dd Eine der angebotenen Antwortmöglichkeiten ist korrekt. Für die korrekte Beantwortung gibt es einen Punkt.
      dt Mehrfachauswahl
      dd Jede der angebotenen Optionen ist entweder korrekt oder falsch und muss explizit mittels Kontrollkästchen beantwortet werden. Für jede korrekt ab- bzw. angewählte Aussage gibt es einen Punkt, man kann also maximal so viele Punkte bekommen wie es Optionen in einer Aufgabe gibt. Punktabzug bei Fehlern gibt es nicht.
      dt Ausfüllen
      dd Es gibt keine Antwortoptionen, sondern du musst eine kurze Lösung selbst generieren, z.B. eine Rechenaufgabe usw.
    h4 Feedback
    p Auf deine Antwort bekommst du ein Feedback. Bei Auswahl-Aufgaben kannst du auch dann noch die anderen Antworten anwählen um deren Feedback zu sehen, dies wird dann aber nicht mehr als deine Antwort gewertet.
<commit_msg>Add markdown support for test answers and feedback<commit_after>h3 Testaufgaben (Runde {{test.run}})
uib-progressbar(
  type="info"
  value="test.count"
  max="test.tests.length"
  title="Fortschritt"
) {{test.count}}/{{test.tests.length}}
uib-progressbar(
  type="success"
  value="test.score.current"
  max="test.score.max"
  title="Punkte"
) {{test.score.current}}/{{test.score.max}}
uib-tabset(justified="true")
  uib-tab(heading="Aufgaben"  active="true")
    h4 Aufgabe {{test.form.$submitted ? test.count : test.count+1}}
    uib-alert(type="warning" close="test.reload()" ng-if="test.error && test.error.status === 412") Du hast diesen Test bereits in einem anderen Browser fortgesetzt.
    div(markdown="test.tests[test.item].text")
    form(novalidate name="test.form" ng-switch="test.tests[test.item].type" ng-submit="test.submit()")
      .form-group(ng-switch-when="input" ng-class="{'has-success': test.output.correct === true, 'has-error': test.output.correct === false}")
        label.control-label(for="item") Antwort
        input#item.form-control(type="text" required autocomplete="off" name="item" ng-model="test.response")
        p.help-block(markdown="test.output.feedback || (test.output.correct ? test.tests[test.item].feedback_right||test.feedback.right : test.tests[test.item].feedback_wrong||test.feedback.wrong)" ng-show="test.form.$submitted")
      .form-group(ng-switch-when="single" ng-class="{'has-success': test.form.$submitted&&test.response.correct, 'has-error': test.form.$submitted&&!test.response.correct}")
        .radio(ng-repeat="c in test.tests[test.item].choices track by c._id")
          input(type="radio" id="{{'item'+$index}}" required name="item" ng-value="c" ng-model="test.response")
          label(for="{{'item'+$index" markdown="c.text")
        p.help-block(markdown="test.response.feedback || (test.response.correct ? test.tests[test.item].feedback_right||test.feedback.right : test.tests[test.item].feedback_wrong||test.feedback.wrong)" ng-show="test.form.$submitted")
      .form-group(ng-switch-when="multiple")
        div(ng-repeat="c in test.tests[test.item].choices track by c._id" ng-class="{'has-success': test.form.$submitted&&!!test.response[c._id]===c.correct, 'has-error': test.form.$submitted&&!!test.response[c._id]!==c.correct}")
          .checkbox
            input(type="checkbox" id="{{'item'+$index}}" name="item" ng-model="test.response[c._id]")
            label(for="{{'item'+$index}}" markdown="c.text")
          p.help-block(markdown="!!test.response[c._id] === c.correct ? (c.feedback_right || c.feedback || test.feedback.right) : (c.feedback_wrong || c.feedback || test.feedback.wrong)" ng-show="test.form.$submitted")
      .form-group
        button.btn(
          type="submit"
          ng-if="!test.form.$submitted"
          ng-class="{'btn-primary': test.form.$valid, 'btn-disabled': test.form.$invalid}"
          ng-disabled="test.form.$invalid"
        ) Antwort abschicken
        button.btn.btn-default(
          type="button"
          ng-if="test.form.$submitted"
          ng-click="test.next()"
          ng-bind="test.count === test.tests.length ? 'Test wiederholen' : 'Nächste Aufgabe'"
        )
  uib-tab(heading="Verlauf" select="test.getGuesses()")
    uib-alert(ng-if="test.guesses.length===0" type="info") Es liegen noch keine abgeschlossenen Testdurchgänge vor.
    table.table(ng-if="test.guesses.length>0")
      thead
        tr
          th Durchgang
          th Gestartet
          th Punkte
      tbody
        tr(ng-repeat="g in test.guesses track by g._id")
          th(ng-bind="$index+1")
          td(ng-bind="g.createdAt | date : 'medium'")
          td {{g.score}}/{{test.score.max}} ({{g.score/test.score.max*100 | number : 1}}%)
  uib-tab(heading="Regeln")
    h4 Aufgabentypen
    dl.dl-horizontal
      dt Einfachauswahl
      dd Eine der angebotenen Antwortmöglichkeiten ist korrekt. Für die korrekte Beantwortung gibt es einen Punkt.
      dt Mehrfachauswahl
      dd Jede der angebotenen Optionen ist entweder korrekt oder falsch und muss explizit mittels Kontrollkästchen beantwortet werden. Für jede korrekt ab- bzw. angewählte Aussage gibt es einen Punkt, man kann also maximal so viele Punkte bekommen wie es Optionen in einer Aufgabe gibt. Punktabzug bei Fehlern gibt es nicht.
      dt Ausfüllen
      dd Es gibt keine Antwortoptionen, sondern du musst eine kurze Lösung selbst generieren, z.B. eine Rechenaufgabe usw.
    h4 Feedback
    p Auf deine Antwort bekommst du ein Feedback. Bei Auswahl-Aufgaben kannst du auch dann noch die anderen Antworten anwählen um deren Feedback zu sehen, dies wird dann aber nicht mehr als deine Antwort gewertet.

{'fraction_non_alphanumeric': 0.15757118205349438, 'fraction_numerical': 0.0032355478861087143, 'mean_word_length': 3.552282768777614, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4537446', 'n_tokens_mistral': 3127, 'n_tokens_neox': 3107, 'n_words': 601}