test.html 5.98 KB
<!DOCTYPE html>
<html lang="pt-PT">
<head>
  <title>Teste</title>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  <link rel="icon" href="/static/favicon.ico">

<!-- MathJax3 -->
  <script>
  MathJax = {
    tex: {
      inlineMath: [['$$$', '$$$'], ['\\(', '\\)']]
    },
    svg: {
      fontCache: 'global'
    }
  };
  </script>
  <script async type="text/javascript" id="MathJax-script" src="/static/mathjax/es5/tex-svg.js"></script>

<!-- Scripts -->
  <script src="/static/jquery/jquery.min.js"></script>
  <script defer src="/static/popper.js/popper.min.js"></script>
  <script defer src="/static/fontawesome-free/js/all.min.js"></script>
  <script defer src="/static/bootstrap/js/bootstrap.min.js"></script>
  <script src="/static/codemirror/lib/codemirror.js"></script>
  <script src="/static/codemirror/addon/selection/active-line.js"></script>
  <script src="/static/codemirror/addon/edit/matchbrackets.js"></script>

<!-- Styles -->
  <link rel="stylesheet" type="text/css" href="/static/bootstrap/css/bootstrap.min.css">
  <link rel="stylesheet" type="text/css" href="/static/codemirror/lib/codemirror.css">
  <link rel="stylesheet" type="text/css" href="/static/codemirror/theme/darcula.css">
  <link rel="stylesheet" type="text/css" href="/static/css/github.css">  <!-- syntax highlight -->
  <link rel="stylesheet" type="text/css" href="/static/css/test.css">

<!-- My scripts -->
  <script defer src="/static/js/question_disabler.js"></script>
  <script defer src="/static/js/prevent_enter_submit.js"></script>

</head>
<!-- ===================================================================== -->
<body id="test">
<!-- ===================================================================== -->

<nav id="navbar" class="navbar navbar-expand-sm fixed-top navbar-dark bg-dark">
  <a class="navbar-brand" href="#">
    <img src="/static/logo_horizontal.png" height="30" alt="">
  </a>
  <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarText" aria-controls="navbarText" aria-expanded="false" aria-label="Toggle navigation">
    <span class="navbar-toggler-icon"></span>
  </button>

  <div class="collapse navbar-collapse" id="navbarText">
    <ul class="nav navbar-nav">
      <li class="nav-item"></li>
    </ul>

    <ul class="nav navbar-nav mx-auto">
        <li class="nav-item"><h5>
          <span class="navbar-text" id="clock"> --:-- </span>
          </h5>
        </li>
    </ul>

    <ul class="nav navbar-nav">
        <li class="nav-item">
          <span class="navbar-text">
            <i class="fas fa-user" aria-hidden="true"></i>
            <span id="name">{{ escape(t['student']['name']) }}</span>
            (<span id="number">{{ escape(t['student']['number']) }}</span>)
            <span class="caret"></span>
          </span>
        </li>
    </ul>
  </div>
</nav>

<!-- ===================================================================== -->
<div class="container">

  <div class="jumbotron">
    <h1 class="display-5">{{ t['title'] }}</h1>
    <hr>

    <h5>
      <div class="row">
        <label for="inicio" class="col-sm-3">Início:</label>
        <div class="col-sm-9" id="inicio">{{ str(t['start_time'].time())[:8]}}</div>
      </div>
      <div class="row">
        <label for="duracao" class="col-sm-3">Duração:</label>
        <div class="col-sm-9" id="duracao">{{ str(t['duration'])+' minutos' if t['duration'] > 0 else chr(8734) }}</div>
      </div>
    </h5>
  </div>

  <form action="/test" method="post" id="test" autocomplete="off">
    {% module xsrf_form_html() %}

    {% for i, q in enumerate(t['questions']) %}
      {% module Template(templ[q['type']], i=i, q=q, md=md(q['ref']), show_ref=t['show_ref']) %}
    {% end %}

    <div class="form-row">
    <div class="col-12">
      <button type="button" class="btn btn-success btn-lg btn-block" data-toggle="modal" data-target="#confirmar" id="form-button-submit">Submeter teste</button>
    </div>
  </div>
  </form>
  <hr>
</div> <!-- container -->

<!-- ===================================================================== -->

<!-- Modal de confirmacao submissao -->
<div class="modal fade" id="confirmar" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <h4 class="modal-title">Deseja submeter o teste?</h4>
      </div>
      <div class="modal-body">
        O teste será enviado para classificação e já não poderá voltar atrás.
        Antes de submeter, verifique se respondeu a todas as questões.
        Desactive as perguntas que não pretende classificar para evitar eventuais penalizações.
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-danger btn-lg" data-dismiss="modal">Oops, NÃO!!!</button>
        <button form="test" type="submit" class="btn btn-success btn-lg">Sim, submeter...</button>
      </div>
    </div>
  </div>
</div>

<script>
  $("textarea").each(function(i, ta) {
    CodeMirror.fromTextArea(ta, {
      lineNumbers: true,
      theme: "darcula",
      viewportMargin: Infinity,
      matchBrackets: true,
      styleActiveLine: true,
    });
  });
</script>

<script>

  var finishtime = new Date().getTime() + {{ t['duration']*60*1000 }};

  // Update the count down every 1 second
  var x = setInterval(function() {
    var now = new Date().getTime();
    var distance = finishtime - now;

    // Time calculations for days, hours, minutes and seconds
    var minutes = Math.floor((distance / (1000 * 60)));
    var seconds = Math.floor((distance % (1000 * 60)) / 1000);

    if (distance >= 1000*50) {
      $("#clock").html(minutes + ":" + seconds);
    }
    else if (distance >= 0) {
      $("#navbar").removeClass('bg-dark').addClass("bg-danger");
      $("#clock").html(seconds);
    }
    else {
      $("#clock").html(0);
      {% if t['autosubmit'] %}
        $("#test").submit();
      {% end %}
    }
  }, 1000);

</script>



</body>
</html>