Commit 094837eb454f6de44a4b11a555ae1c1a1cea0fef
1 parent
8bc0b519
Exists in
master
and in
1 other branch
- progress bar under the menu shows the remaining time.
- update BUGS.md - add example of random choice of questions in demo.yaml - update .gitignore - remove package-lock.json from git repository
Showing
5 changed files
with
39 additions
and
11 deletions
Show diff stats
BUGS.md
| @@ -5,7 +5,6 @@ | @@ -5,7 +5,6 @@ | ||
| 5 | - servidor ntpd para configurar a data/hora dos portateis dell | 5 | - servidor ntpd para configurar a data/hora dos portateis dell |
| 6 | - link na pagina com a nota para voltar ao principio. | 6 | - link na pagina com a nota para voltar ao principio. |
| 7 | - CRITICAL se answer for `i<n` a revisão de provas mostra apenas i (interpreta `<` como tag?) | 7 | - CRITICAL se answer for `i<n` a revisão de provas mostra apenas i (interpreta `<` como tag?) |
| 8 | -- sock.bind(sockaddr) OSError: [Errno 48] Address already in use | ||
| 9 | - na pagina grade.html as barras estao normalizadas para os limites scale_min e max do teste actual e nao do realizado. | 8 | - na pagina grade.html as barras estao normalizadas para os limites scale_min e max do teste actual e nao do realizado. |
| 10 | - codigo `hello world` nao esta a preservar o whitespace. O renderer de markdown gera a tag <code> que não preserva whitespace. Necessario adicionar <pre>. | 9 | - codigo `hello world` nao esta a preservar o whitespace. O renderer de markdown gera a tag <code> que não preserva whitespace. Necessario adicionar <pre>. |
| 11 | - teste nao esta a mostrar imagens de vez em quando. | 10 | - teste nao esta a mostrar imagens de vez em quando. |
| @@ -16,15 +15,14 @@ | @@ -16,15 +15,14 @@ | ||
| 16 | - melhorar o botao de autorizar (desliga-se), usar antes um botao? | 15 | - melhorar o botao de autorizar (desliga-se), usar antes um botao? |
| 17 | e.g. retornar None quando nao ha alteracoes relativamente à última vez. | 16 | e.g. retornar None quando nao ha alteracoes relativamente à última vez. |
| 18 | ou usar push (websockets?) | 17 | ou usar push (websockets?) |
| 19 | -- lidar com eventos unfocus. | ||
| 20 | -- servidor nao esta a lidar com eventos scroll/resize. ignorar? | ||
| 21 | - Test.reset_answers() unused. | 18 | - Test.reset_answers() unused. |
| 22 | - mudar ref do test para test_id (ref já é usado nas perguntas) | 19 | - mudar ref do test para test_id (ref já é usado nas perguntas) |
| 23 | - incluir test_id na tabela questions (futuro semestre, pode quebrar compatibilidade). | 20 | - incluir test_id na tabela questions (futuro semestre, pode quebrar compatibilidade). |
| 24 | -- na pagina admin, mostrar com cor vermelha as horas de entrada dos alunos que ja tenha excedido o tempo | 21 | +- na pagina admin, mostrar com cor vermelha as horas de entrada dos alunos que ja tenham excedido o tempo |
| 25 | 22 | ||
| 26 | # TODO | 23 | # TODO |
| 27 | 24 | ||
| 25 | +- mostrar unfocus e window area em /admin | ||
| 28 | - testar as perguntas todas no início do teste. | 26 | - testar as perguntas todas no início do teste. |
| 29 | - test: mostrar duração do teste com progressbar no navbar. | 27 | - test: mostrar duração do teste com progressbar no navbar. |
| 30 | - submissao fazer um post ajax? | 28 | - submissao fazer um post ajax? |
| @@ -65,6 +63,9 @@ ou usar push (websockets?) | @@ -65,6 +63,9 @@ ou usar push (websockets?) | ||
| 65 | 63 | ||
| 66 | # FIXED | 64 | # FIXED |
| 67 | 65 | ||
| 66 | +- lidar com eventos unfocus. | ||
| 67 | +- servidor nao esta a lidar com eventos resize. | ||
| 68 | +- sock.bind(sockaddr) OSError: [Errno 48] Address already in use | ||
| 68 | - dizer quanto desconta em cada pergunta de escolha multipla | 69 | - dizer quanto desconta em cada pergunta de escolha multipla |
| 69 | - se houver erros a abrir ficheiros .yaml de perguntas, depois dos testes diz "No errors found". | 70 | - se houver erros a abrir ficheiros .yaml de perguntas, depois dos testes diz "No errors found". |
| 70 | - se faltarem files na especificação do teste, o check não detecta e factory não gera para essas perguntas. | 71 | - se faltarem files na especificação do teste, o check não detecta e factory não gera para essas perguntas. |
demo/demo.yaml
| @@ -64,9 +64,10 @@ questions: | @@ -64,9 +64,10 @@ questions: | ||
| 64 | - tut-information | 64 | - tut-information |
| 65 | - tut-success | 65 | - tut-success |
| 66 | - tut-warning | 66 | - tut-warning |
| 67 | - - tut-alert | 67 | + - [tut-alert1, tut-alert2] |
| 68 | - tut-generator | 68 | - tut-generator |
| 69 | 69 | ||
| 70 | + | ||
| 70 | # test: | 71 | # test: |
| 71 | # - ref1 | 72 | # - ref1 |
| 72 | # - block: a | 73 | # - block: a |
demo/questions/questions-tutorial.yaml
| @@ -535,8 +535,24 @@ | @@ -535,8 +535,24 @@ | ||
| 535 | 535 | ||
| 536 | # ---------------------------------------------------------------------------- | 536 | # ---------------------------------------------------------------------------- |
| 537 | - type: alert | 537 | - type: alert |
| 538 | - ref: tut-alert | ||
| 539 | - title: Texto informativo (perigo) | 538 | + ref: tut-alert1 |
| 539 | + title: Texto informativo (perigo) - versão 1 | ||
| 540 | + text: | | ||
| 541 | + Não conta para avaliação. Texto importante. | ||
| 542 | + | ||
| 543 | +  | ||
| 544 | + | ||
| 545 | + As imagens podem ser adicionadas usando a notação standard em markdown. Há | ||
| 546 | + duas possibilidads: | ||
| 547 | + | ||
| 548 | + - Imagens inline: não têm título definido e podem ser incluídas no meio de | ||
| 549 | + uma linha de texto usando``. | ||
| 550 | + - Imagens centradas com título: ``. | ||
| 551 | + O título aprece por baixo da imagem. O título pode ser uma string vazia. | ||
| 552 | + | ||
| 553 | +- type: alert | ||
| 554 | + ref: tut-alert2 | ||
| 555 | + title: Texto informativo (perigo) - versão 2 | ||
| 540 | text: | | 556 | text: | |
| 541 | Não conta para avaliação. Texto importante. | 557 | Não conta para avaliação. Texto importante. |
| 542 | 558 | ||
| @@ -555,7 +571,7 @@ | @@ -555,7 +571,7 @@ | ||
| 555 | text: | | 571 | text: | |
| 556 | This question is not included in the test and will not shown up. | 572 | This question is not included in the test and will not shown up. |
| 557 | It also lacks a "ref" and is automatically named | 573 | It also lacks a "ref" and is automatically named |
| 558 | - `questions/questions-tutorial.yaml:0012`. | 574 | + `questions/questions-tutorial.yaml:0013`. |
| 559 | A warning is shown on the console about this. | 575 | A warning is shown on the console about this. |
| 560 | The number at the end is the index position of this question. | 576 | The number at the end is the index position of this question. |
| 561 | Indices start at 0. | 577 | Indices start at 0. |
perguntations/__init__.py
| @@ -32,7 +32,7 @@ proof of submission and for review. | @@ -32,7 +32,7 @@ proof of submission and for review. | ||
| 32 | ''' | 32 | ''' |
| 33 | 33 | ||
| 34 | APP_NAME = 'perguntations' | 34 | APP_NAME = 'perguntations' |
| 35 | -APP_VERSION = '2020.04.dev4' | 35 | +APP_VERSION = '2020.04.dev5' |
| 36 | APP_DESCRIPTION = __doc__ | 36 | APP_DESCRIPTION = __doc__ |
| 37 | 37 | ||
| 38 | __author__ = 'Miguel Barão' | 38 | __author__ = 'Miguel Barão' |
perguntations/templates/test.html
| @@ -44,8 +44,12 @@ | @@ -44,8 +44,12 @@ | ||
| 44 | <!-- ===================================================================== --> | 44 | <!-- ===================================================================== --> |
| 45 | <body> | 45 | <body> |
| 46 | <!-- ===================================================================== --> | 46 | <!-- ===================================================================== --> |
| 47 | +<div class="progress fixed-top" style="height: 60px; border-radius: 0px;"> | ||
| 48 | + <div class="progress-bar bg-secondary" role="progressbar" style="width: 100%" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100"></div> | ||
| 49 | +</div> | ||
| 47 | 50 | ||
| 48 | <nav id="navbar" class="navbar navbar-expand-sm fixed-top navbar-dark bg-dark"> | 51 | <nav id="navbar" class="navbar navbar-expand-sm fixed-top navbar-dark bg-dark"> |
| 52 | + | ||
| 49 | <a class="navbar-brand" href="#"> | 53 | <a class="navbar-brand" href="#"> |
| 50 | <img src="/static/logo_horizontal.png" height="30" alt=""> | 54 | <img src="/static/logo_horizontal.png" height="30" alt=""> |
| 51 | </a> | 55 | </a> |
| @@ -62,6 +66,7 @@ | @@ -62,6 +66,7 @@ | ||
| 62 | <li class="nav-item"><h5> | 66 | <li class="nav-item"><h5> |
| 63 | <span class="navbar-text" id="clock"> --:-- </span> | 67 | <span class="navbar-text" id="clock"> --:-- </span> |
| 64 | </h5> | 68 | </h5> |
| 69 | + | ||
| 65 | </li> | 70 | </li> |
| 66 | </ul> | 71 | </ul> |
| 67 | 72 | ||
| @@ -76,6 +81,7 @@ | @@ -76,6 +81,7 @@ | ||
| 76 | </li> | 81 | </li> |
| 77 | </ul> | 82 | </ul> |
| 78 | </div> | 83 | </div> |
| 84 | + | ||
| 79 | </nav> | 85 | </nav> |
| 80 | 86 | ||
| 81 | <!-- ===================================================================== --> | 87 | <!-- ===================================================================== --> |
| @@ -152,7 +158,8 @@ | @@ -152,7 +158,8 @@ | ||
| 152 | </script> | 158 | </script> |
| 153 | 159 | ||
| 154 | <script> | 160 | <script> |
| 155 | - var finishtime = new Date().getTime() + {{ t['duration']*60*1000 }}; | 161 | + var duration = {{ t['duration']*60*1000 }}; // ms |
| 162 | + var finishtime = new Date().getTime() + duration; | ||
| 156 | 163 | ||
| 157 | {% if t['duration'] == 0 %} | 164 | {% if t['duration'] == 0 %} |
| 158 | $("#clock").html("+\u221e"); | 165 | $("#clock").html("+\u221e"); |
| @@ -161,7 +168,7 @@ | @@ -161,7 +168,7 @@ | ||
| 161 | // Update the count down every 1 second | 168 | // Update the count down every 1 second |
| 162 | var x = setInterval(function() { | 169 | var x = setInterval(function() { |
| 163 | var now = new Date().getTime(); | 170 | var now = new Date().getTime(); |
| 164 | - var distance = finishtime - now; | 171 | + var distance = finishtime - now; // ms |
| 165 | 172 | ||
| 166 | // Time calculations for days, hours, minutes and seconds | 173 | // Time calculations for days, hours, minutes and seconds |
| 167 | var minutes = Math.floor((distance / (1000 * 60))); | 174 | var minutes = Math.floor((distance / (1000 * 60))); |
| @@ -180,6 +187,9 @@ | @@ -180,6 +187,9 @@ | ||
| 180 | $("#test").submit(); | 187 | $("#test").submit(); |
| 181 | {% end %} | 188 | {% end %} |
| 182 | } | 189 | } |
| 190 | + | ||
| 191 | + var progress = distance/duration*100 + '%' | ||
| 192 | + $('.progress-bar').css('width', progress).attr('aria-valuenow', progress); | ||
| 183 | }, 1000); | 193 | }, 1000); |
| 184 | 194 | ||
| 185 | {% end %} | 195 | {% end %} |