Spaces:
Running
Running
as turmas são 1n1, 1n2, 2n1, 2n2, 3n1, 3n2, 1eja, 2eja, 3eja - Follow Up Deployment
Browse files- README.md +7 -5
- index.html +915 -19
- prompts.txt +2 -0
README.md
CHANGED
|
@@ -1,10 +1,12 @@
|
|
| 1 |
---
|
| 2 |
-
title:
|
| 3 |
-
emoji:
|
| 4 |
-
colorFrom:
|
| 5 |
-
colorTo:
|
| 6 |
sdk: static
|
| 7 |
pinned: false
|
|
|
|
|
|
|
| 8 |
---
|
| 9 |
|
| 10 |
-
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
|
|
|
|
| 1 |
---
|
| 2 |
+
title: document-rio
|
| 3 |
+
emoji: 🐳
|
| 4 |
+
colorFrom: purple
|
| 5 |
+
colorTo: pink
|
| 6 |
sdk: static
|
| 7 |
pinned: false
|
| 8 |
+
tags:
|
| 9 |
+
- deepsite
|
| 10 |
---
|
| 11 |
|
| 12 |
+
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
|
index.html
CHANGED
|
@@ -1,19 +1,915 @@
|
|
| 1 |
-
<!
|
| 2 |
-
<html>
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
+
<html lang="pt-BR">
|
| 3 |
+
<head>
|
| 4 |
+
<meta charset="UTF-8">
|
| 5 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
| 6 |
+
<title>Questionário sobre Cidade Cinza</title>
|
| 7 |
+
<script src="https://cdn.tailwindcss.com"></script>
|
| 8 |
+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
| 9 |
+
<style>
|
| 10 |
+
/* Custom CSS for shuffle animation */
|
| 11 |
+
.shuffle-animation {
|
| 12 |
+
animation: shuffle 0.5s ease;
|
| 13 |
+
}
|
| 14 |
+
@keyframes shuffle {
|
| 15 |
+
0% { transform: translateY(0); }
|
| 16 |
+
25% { transform: translateY(-10px); }
|
| 17 |
+
50% { transform: translateY(0); }
|
| 18 |
+
75% { transform: translateY(10px); }
|
| 19 |
+
100% { transform: translateY(0); }
|
| 20 |
+
}
|
| 21 |
+
/* Results table styling */
|
| 22 |
+
.results-table {
|
| 23 |
+
width: 100%;
|
| 24 |
+
border-collapse: collapse;
|
| 25 |
+
}
|
| 26 |
+
.results-table th, .results-table td {
|
| 27 |
+
border: 1px solid #ddd;
|
| 28 |
+
padding: 8px;
|
| 29 |
+
}
|
| 30 |
+
.results-table tr:nth-child(even) {
|
| 31 |
+
background-color: #f2f2f2;
|
| 32 |
+
}
|
| 33 |
+
.results-table tr:hover {
|
| 34 |
+
background-color: #ddd;
|
| 35 |
+
}
|
| 36 |
+
</style>
|
| 37 |
+
</head>
|
| 38 |
+
<body class="bg-gray-100 font-sans">
|
| 39 |
+
<!-- Login Screen -->
|
| 40 |
+
<div id="loginScreen" class="min-h-screen flex items-center justify-center px-4 py-12">
|
| 41 |
+
<div class="w-full max-w-md bg-white rounded-lg shadow-md overflow-hidden">
|
| 42 |
+
<div class="bg-blue-600 py-4 px-6">
|
| 43 |
+
<h2 class="text-2xl font-bold text-white">Questionário sobre "Cidade Cinza"</h2>
|
| 44 |
+
<p class="text-blue-100 mt-1">Por favor, insira suas informações para começar</p>
|
| 45 |
+
</div>
|
| 46 |
+
<div class="p-6">
|
| 47 |
+
<div class="mb-4">
|
| 48 |
+
<label for="studentName" class="block text-gray-700 font-medium mb-2">Nome do Aluno</label>
|
| 49 |
+
<input type="text" id="studentName" class="w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500" placeholder="Seu nome completo" required>
|
| 50 |
+
</div>
|
| 51 |
+
<div class="mb-4">
|
| 52 |
+
<label for="studentClass" class="block text-gray-700 font-medium mb-2">Turma</label>
|
| 53 |
+
<select id="studentClass" class="w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500" required>
|
| 54 |
+
<option value="">Selecione sua turma</option>
|
| 55 |
+
<option value="1n1">1n1</option>
|
| 56 |
+
<option value="1n2">1n2</option>
|
| 57 |
+
<option value="2n1">2n1</option>
|
| 58 |
+
<option value="2n2">2n2</option>
|
| 59 |
+
<option value="3n1">3n1</option>
|
| 60 |
+
<option value="3n2">3n2</option>
|
| 61 |
+
<option value="1eja">1eja</option>
|
| 62 |
+
<option value="2eja">2eja</option>
|
| 63 |
+
<option value="3eja">3eja</option>
|
| 64 |
+
</select>
|
| 65 |
+
</div>
|
| 66 |
+
<div class="mb-6">
|
| 67 |
+
<label for="quizDate" class="block text-gray-700 font-medium mb-2">Data</label>
|
| 68 |
+
<input type="date" id="quizDate" class="w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500" required>
|
| 69 |
+
</div>
|
| 70 |
+
<button id="startQuizBtn" class="w-full bg-blue-600 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 transition duration-150">
|
| 71 |
+
Iniciar Questionário
|
| 72 |
+
</button>
|
| 73 |
+
</div>
|
| 74 |
+
</div>
|
| 75 |
+
</div>
|
| 76 |
+
|
| 77 |
+
<!-- Quiz Screen -->
|
| 78 |
+
<div id="quizScreen" class="min-h-screen hidden py-8 px-4">
|
| 79 |
+
<div class="max-w-4xl mx-auto">
|
| 80 |
+
<div class="flex justify-between items-center mb-6">
|
| 81 |
+
<h1 class="text-2xl font-bold text-gray-800">Questionário sobre "Cidade Cinza"</h1>
|
| 82 |
+
<div class="bg-gray-200 rounded-full px-4 py-2">
|
| 83 |
+
<span id="timer" class="text-gray-700 font-medium">00:00</span>
|
| 84 |
+
</div>
|
| 85 |
+
</div>
|
| 86 |
+
|
| 87 |
+
<div class="bg-white rounded-lg shadow-md overflow-hidden mb-6">
|
| 88 |
+
<div class="bg-gray-800 text-white px-4 py-3 flex justify-between items-center">
|
| 89 |
+
<h2 id="questionNumber" class="text-lg font-semibold">Pergunta 1</h2>
|
| 90 |
+
<div class="text-sm">
|
| 91 |
+
<span id="currentQuestion">1</span> de <span id="totalQuestions">10</span>
|
| 92 |
+
</div>
|
| 93 |
+
</div>
|
| 94 |
+
|
| 95 |
+
<div class="p-6">
|
| 96 |
+
<div class="mb-6 p-4 bg-gray-100 rounded-lg">
|
| 97 |
+
<p id="questionText" class="text-lg font-medium text-gray-800">A pergunta aparecerá aqui...</p>
|
| 98 |
+
</div>
|
| 99 |
+
|
| 100 |
+
<div id="imageContainer" class="mb-6 flex justify-center">
|
| 101 |
+
<img id="questionImage" src="" alt="Imagem ilustrativa" class="max-h-60 rounded-lg shadow-md">
|
| 102 |
+
</div>
|
| 103 |
+
|
| 104 |
+
<div id="answersContainer" class="space-y-3">
|
| 105 |
+
<!-- Answers will be inserted here -->
|
| 106 |
+
</div>
|
| 107 |
+
|
| 108 |
+
<div class="mt-8 flex justify-between">
|
| 109 |
+
<button id="prevQuestionBtn" class="bg-gray-300 hover:bg-gray-400 text-gray-800 font-bold py-2 px-4 rounded-md focus:outline-none focus:ring-2 focus:ring-gray-500 focus:ring-offset-2 transition duration-150">
|
| 110 |
+
<i class="fas fa-arrow-left"></i> Anterior
|
| 111 |
+
</button>
|
| 112 |
+
<button id="nextQuestionBtn" class="bg-blue-600 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 transition duration-150">
|
| 113 |
+
Próxima <i class="fas fa-arrow-right"></i>
|
| 114 |
+
</button>
|
| 115 |
+
<button id="submitQuizBtn" class="bg-green-600 hover:bg-green-700 text-white font-bold py-2 px-4 rounded-md focus:outline-none focus:ring-2 focus:ring-green-500 focus:ring-offset-2 transition duration-150 hidden">
|
| 116 |
+
Finalizar <i class="fas fa-check"></i>
|
| 117 |
+
</button>
|
| 118 |
+
</div>
|
| 119 |
+
</div>
|
| 120 |
+
</div>
|
| 121 |
+
|
| 122 |
+
<div class="bg-white rounded-lg shadow-md p-4">
|
| 123 |
+
<div class="flex flex-wrap gap-2">
|
| 124 |
+
<!-- Question navigation buttons will be inserted here -->
|
| 125 |
+
</div>
|
| 126 |
+
</div>
|
| 127 |
+
</div>
|
| 128 |
+
</div>
|
| 129 |
+
|
| 130 |
+
<!-- Results Screen -->
|
| 131 |
+
<div id="resultsScreen" class="min-h-screen hidden py-8 px-4">
|
| 132 |
+
<div class="max-w-3xl mx-auto">
|
| 133 |
+
<div class="bg-white rounded-lg shadow-md overflow-hidden">
|
| 134 |
+
<div class="bg-green-600 py-4 px-6">
|
| 135 |
+
<h2 class="text-2xl font-bold text-white">Resultado do Questionário</h2>
|
| 136 |
+
</div>
|
| 137 |
+
<div class="p-6">
|
| 138 |
+
<div class="flex items-center mb-6">
|
| 139 |
+
<div class="h-24 w-24 bg-blue-100 rounded-full flex items-center justify-center mr-6">
|
| 140 |
+
<span id="scoreCircle" class="text-3xl font-bold text-blue-600">0</span>
|
| 141 |
+
</div>
|
| 142 |
+
<div>
|
| 143 |
+
<h3 class="text-xl font-semibold text-gray-800" id="studentNameDisplay"></h3>
|
| 144 |
+
<p class="text-gray-600" id="studentInfoDisplay"></p>
|
| 145 |
+
<p class="mt-2 text-gray-800"><span id="correctAnswers">0</span> de <span id="totalQuestionsDisplay">10</span> corretas (<span id="percentage">0</span>%)</p>
|
| 146 |
+
</div>
|
| 147 |
+
</div>
|
| 148 |
+
|
| 149 |
+
<div id="wrongAnswersContainer" class="mb-6">
|
| 150 |
+
<!-- Wrong answers will be inserted here -->
|
| 151 |
+
</div>
|
| 152 |
+
|
| 153 |
+
<div class="flex justify-between">
|
| 154 |
+
<button id="viewResultsBtn" class="bg-blue-600 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 transition duration-150">
|
| 155 |
+
Ver Resultados Detalhados
|
| 156 |
+
</button>
|
| 157 |
+
<a href="index.html" class="bg-gray-300 hover:bg-gray-400 text-gray-800 font-bold py-2 px-4 rounded-md focus:outline-none focus:ring-2 focus:ring-gray-500 focus:ring-offset-2 transition duration-150">
|
| 158 |
+
Voltar ao Início
|
| 159 |
+
</a>
|
| 160 |
+
</div>
|
| 161 |
+
</div>
|
| 162 |
+
</div>
|
| 163 |
+
</div>
|
| 164 |
+
</div>
|
| 165 |
+
|
| 166 |
+
<!-- Admin Panel (hidden by default, accessible via URL parameter) -->
|
| 167 |
+
<div id="adminPanel" class="min-h-screen hidden py-8 px-4">
|
| 168 |
+
<div class="max-w-6xl mx-auto">
|
| 169 |
+
<div class="bg-white rounded-lg shadow-md overflow-hidden">
|
| 170 |
+
<div class="bg-purple-600 py-4 px-6">
|
| 171 |
+
<h2 class="text-2xl font-bold text-white">Painel Administrativo</h2>
|
| 172 |
+
</div>
|
| 173 |
+
<div class="p-6">
|
| 174 |
+
<div class="mb-6 flex justify-between items-center">
|
| 175 |
+
<div>
|
| 176 |
+
<h3 class="text-lg font-semibold text-gray-800">Resultados dos Alunos</h3>
|
| 177 |
+
<p class="text-gray-600">Visualize todas as respostas e desempenhos</p>
|
| 178 |
+
</div>
|
| 179 |
+
<div class="flex space-x-2">
|
| 180 |
+
<select id="classFilter" class="px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-purple-500">
|
| 181 |
+
<option value="">Todas as Turmas</option>
|
| 182 |
+
<option value="1n1">1n1</option>
|
| 183 |
+
<option value="1n2">1n2</option>
|
| 184 |
+
<option value="2n1">2n1</option>
|
| 185 |
+
<option value="2n2">2n2</option>
|
| 186 |
+
<option value="3n1">3n1</option>
|
| 187 |
+
<option value="3n2">3n2</option>
|
| 188 |
+
<option value="1eja">1eja</option>
|
| 189 |
+
<option value="2eja">2eja</option>
|
| 190 |
+
<option value="3eja">3eja</option>
|
| 191 |
+
</select>
|
| 192 |
+
<button id="exportResultsBtn" class="bg-green-600 hover:bg-green-700 text-white font-bold py-2 px-4 rounded-md focus:outline-none focus:ring-2 focus:ring-green-500 focus:ring-offset-2 transition duration-150">
|
| 193 |
+
Exportar Dados
|
| 194 |
+
</button>
|
| 195 |
+
</div>
|
| 196 |
+
</div>
|
| 197 |
+
|
| 198 |
+
<div class="overflow-x-auto">
|
| 199 |
+
<table id="resultsTable" class="results-table w-full">
|
| 200 |
+
<thead>
|
| 201 |
+
<tr class="bg-gray-100">
|
| 202 |
+
<th class="text-left py-2 px-4">Nome</th>
|
| 203 |
+
<th class="text-left py-2 px-4">Turma</th>
|
| 204 |
+
<th class="text-left py-2 px-4">Data</th>
|
| 205 |
+
<th class="text-left py-2 px-4">Respostas</th>
|
| 206 |
+
<th class="text-left py-2 px-4">Nota</th>
|
| 207 |
+
<th class="text-left py-2 px-4">Tempo</th>
|
| 208 |
+
</tr>
|
| 209 |
+
</thead>
|
| 210 |
+
<tbody id="resultsTableBody">
|
| 211 |
+
<!-- Results will be inserted here -->
|
| 212 |
+
</tbody>
|
| 213 |
+
</table>
|
| 214 |
+
</div>
|
| 215 |
+
</div>
|
| 216 |
+
</div>
|
| 217 |
+
</div>
|
| 218 |
+
</div>
|
| 219 |
+
|
| 220 |
+
<script>
|
| 221 |
+
// Question data with images (using placeholder images from Unsplash)
|
| 222 |
+
const questions = [
|
| 223 |
+
{
|
| 224 |
+
question: "Qual é a principal diferença entre grafite e pixo, segundo os artistas entrevistados no documentário \"Cidade Cinza\"?",
|
| 225 |
+
answers: [
|
| 226 |
+
{ text: "O grafite é sempre feito com permissão enquanto o pixo é sempre ilegal", correct: false },
|
| 227 |
+
{ text: "O grafite é considerado arte enquanto o pixo é visto apenas como vandalismo puro", correct: false },
|
| 228 |
+
{ text: "O grafite prioriza a estética e o apelo visual, já o pixo enfatiza a mensagem e a ocupação do espaço urbano", correct: true },
|
| 229 |
+
{ text: "O grafite utiliza apenas tintas spray profissionais enquanto o pixo usa materiais improvisados", correct: false },
|
| 230 |
+
{ text: "Não existe diferença significativa entre as duas manifestações urbanas", correct: false }
|
| 231 |
+
],
|
| 232 |
+
image: "https://source.unsplash.com/random/600x400/?graffiti,art",
|
| 233 |
+
explanation: "Resposta correta: O grafite prioriza a estética e o apelo visual, já o pixo enfatiza a mensagem e a ocupação do espaço urbano. O documentário mostra que grafiteiros buscam beleza plástica, enquanto pichadores veem seu ato como marca de presença e protesto."
|
| 234 |
+
},
|
| 235 |
+
{
|
| 236 |
+
question: "Como os artistas retratados no documentário justificam o pixo como forma de expressão artística?",
|
| 237 |
+
answers: [
|
| 238 |
+
{ text: "Por ser uma técnica mais simples e acessível do que o grafite tradicional", correct: false },
|
| 239 |
+
{ text: "Por representar uma forma de contestação social e afirmação de presença no espaço público", correct: true },
|
| 240 |
+
{ text: "Por ser mais facilmente aceito e compreendido pelo grande público", correct: false },
|
| 241 |
+
{ text: "Por exigir menos habilidade técnica e preparo artístico", correct: false },
|
| 242 |
+
{ text: "Por ser sempre realizado com autorização dos proprietários dos muros", correct: false }
|
| 243 |
+
],
|
| 244 |
+
image: "https://source.unsplash.com/random/600x400/?street,art",
|
| 245 |
+
explanation: "Resposta correta: Por representar uma forma de contestação social e afirmação de presença no espaço público. Muitos pichadores veem seu ato como resistência ao controle do espaço urbano."
|
| 246 |
+
},
|
| 247 |
+
{
|
| 248 |
+
question: "Qual foi o papel dos irmãos Os Gêmeos no desenvolvimento do grafite em São Paulo, conforme apresentado no documentário?",
|
| 249 |
+
answers: [
|
| 250 |
+
{ text: "Foram os pioneiros absolutos na introdução do pixo na cidade", correct: false },
|
| 251 |
+
{ text: "Contribuíram para internacionalizar o grafite brasileiro, dando visibilidade global à cena paulistana", correct: true },
|
| 252 |
+
{ text: "Atuaram como críticos ferrenhos de qualquer forma de arte urbana", correct: false },
|
| 253 |
+
{ text: "Trabalharam exclusivamente em espaços institucionais, nunca em intervenções urbanas", correct: false },
|
| 254 |
+
{ text: "Foram responsáveis diretos pela criminalização do grafite na cidade", correct: false }
|
| 255 |
+
],
|
| 256 |
+
image: "https://source.unsplash.com/random/600x400/?osgemeos,art",
|
| 257 |
+
explanation: "Resposta correta: Contribuíram para internacionalizar o grafite brasileiro, dando visibilidade global à cena paulistana. Os Gêmeos foram fundamentais para colocar o grafite brasileiro no cenário mundial."
|
| 258 |
+
},
|
| 259 |
+
{
|
| 260 |
+
question: "Como \"Cidade Cinza\" retrata a relação entre os artistas urbanos e o poder público municipal?",
|
| 261 |
+
answers: [
|
| 262 |
+
{ text: "Mostra uma cooperação constante e harmoniosa entre as partes", correct: false },
|
| 263 |
+
{ text: "Revela um cenário de conflito com períodos de repressão, mas também momentos de reconhecimento oficial", correct: true },
|
| 264 |
+
{ text: "Apresenta uma completa ausência de interferência governamental", correct: false },
|
| 265 |
+
{ text: "Demonstra que todos os artistas foram contratados formalmente pela prefeitura", correct: false },
|
| 266 |
+
{ text: "Indica que a prefeitura apoiava apenas o pixo, nunca o grafite", correct: false }
|
| 267 |
+
],
|
| 268 |
+
image: "https://source.unsplash.com/random/600x400/?city,government",
|
| 269 |
+
explanation: "Resposta correta: Revela um cenário de conflito com períodos de repressão, mas também momentos de reconhecimento oficial. O documentário mostra essa relação ambígua, com repressão e também projetos de urbanismo que incorporam o grafite."
|
| 270 |
+
},
|
| 271 |
+
{
|
| 272 |
+
question: "Qual a posição predominante entre os artistas do filme em relação à criminalização do pixo?",
|
| 273 |
+
answers: [
|
| 274 |
+
{ text: "Concordam plenamente com sua classificação como ato vandalico", correct: false },
|
| 275 |
+
{ text: "Defendem sua legitimidade como expressão cultural e criticam a repressão sistemática", correct: true },
|
| 276 |
+
{ text: "Acreditam que apenas o grafite deveria ser permitido por lei", correct: false },
|
| 277 |
+
{ text: "Consideram que o pixo só é aceitável em áreas abandonadas", correct: false },
|
| 278 |
+
{ text: "Não manifestam qualquer opinião formada sobre o assunto", correct: false }
|
| 279 |
+
],
|
| 280 |
+
image: "https://source.unsplash.com/random/600x400/?protest,art",
|
| 281 |
+
explanation: "Resposta correta: Defendem sua legitimidade como expressão cultural e criticam a repressão sistemática. Pichadores veem a criminalização como uma tentativa de silenciar formas de expressão marginalizadas."
|
| 282 |
+
},
|
| 283 |
+
{
|
| 284 |
+
question: "Qual foi o impacto da Lei Cidade Limpa sobre as manifestações de arte urbana em São Paulo, segundo o documentário?",
|
| 285 |
+
answers: [
|
| 286 |
+
{ text: "Estimulou o surgimento de novos artistas de rua", correct: false },
|
| 287 |
+
{ text: "Intensificou a fiscalização e repressão contra qualquer tipo de intervenção urbana", correct: true },
|
| 288 |
+
{ text: "Afetou apenas a publicidade comercial, sem relação com a arte de rua", correct: false },
|
| 289 |
+
{ text: "Transformou o pixo em patrimônio cultural oficial", correct: false },
|
| 290 |
+
{ text: "Na prática, nunca foi implementada de fato", correct: false }
|
| 291 |
+
],
|
| 292 |
+
image: "https://source.unsplash.com/random/600x400/?law,sign",
|
| 293 |
+
explanation: "Resposta correta: Intensificou a fiscalização e repressão contra qualquer tipo de intervenção urbana. A lei, originalmente voltada contra a poluição visual, foi aplicada também contra expressões artísticas."
|
| 294 |
+
},
|
| 295 |
+
{
|
| 296 |
+
question: "Como os artistas do filme percebem a inserção do grafite no circuito comercial de arte?",
|
| 297 |
+
answers: [
|
| 298 |
+
{ text: "Consideram que isso representa a perda da essência contestadora original", correct: true },
|
| 299 |
+
{ text: "Veem como a única forma legítima de valorização do grafite", correct: false },
|
| 300 |
+
{ text: "Acreditam que o mercado nunca realmente aceitou o grafite como arte", correct: false },
|
| 301 |
+
{ text: "Não fazem distinção entre grafite e pixo no contexto mercadológico", correct: false },
|
| 302 |
+
{ text: "Avaliam que o pixo tem maior valor comercial que o grafite", correct: false }
|
| 303 |
+
],
|
| 304 |
+
image: "https://source.unsplash.com/random/600x400/?commerce,art",
|
| 305 |
+
explanation: "Resposta correta: Consideram que isso representa a perda da essência contestadora original. Alguns veem a comercialização como traição aos princípios de resistência presente na arte de rua."
|
| 306 |
+
},
|
| 307 |
+
{
|
| 308 |
+
question: "O que o documentário revela sobre as tensões entre grafiteiros e pichadores?",
|
| 309 |
+
answers: [
|
| 310 |
+
{ text: "Mostra uma convivência sempre pacífica e colaborativa", correct: false },
|
| 311 |
+
{ text: "Expõe rivalidades, com grafiteiros muitas vezes criticando o pixo como vandalismo e pichadores acusando grafiteiros de \"vendidos\"", correct: true },
|
| 312 |
+
{ text: "Indica que todos os grafiteiros também praticam pixo regularmente", correct: false },
|
| 313 |
+
{ text: "Demonstra completa ausência de conflitos entre os grupos", correct: false },
|
| 314 |
+
{ text: "Revela que a polícia sempre mediou positivamente essas relações", correct: false }
|
| 315 |
+
],
|
| 316 |
+
image: "https://source.unsplash.com/random/600x400/?conflict,street",
|
| 317 |
+
explanation: "Resposta correta: Expõe rivalidades, com grafiteiros muitas vezes criticando o pixo como vandalismo e pichadores acusando grafiteiros de \"vendidos\". Essa divisão reflete diferentes visões sobre o papel da arte urbana."
|
| 318 |
+
},
|
| 319 |
+
{
|
| 320 |
+
question: "Qual é a visão central apresentada pelo documentário sobre o papel da arte urbana na transformação das cidades?",
|
| 321 |
+
answers: [
|
| 322 |
+
{ text: "Que ela contribui para piorar a degradação dos centros urbanos", correct: false },
|
| 323 |
+
{ text: "Que grafite e pixo funcionam como formas de resistência e humanização dos espaços cinzentos", correct: true },
|
| 324 |
+
{ text: "Que deveria ser restrita a museus e galerias especializadas", correct: false },
|
| 325 |
+
{ text: "Que não possui qualquer capacidade transformadora real", correct: false },
|
| 326 |
+
{ text: "Que apenas o grafite tem este poder, nunca o pixo", correct: false }
|
| 327 |
+
],
|
| 328 |
+
image: "https://source.unsplash.com/random/600x400/?city,transformation",
|
| 329 |
+
explanation: "Resposta correta: Que grafite e pixo funcionam como formas de resistência e humanização dos espaços cinzentos. O filme mostra como essas expressões trazem vida e crítica à paisagem urbana."
|
| 330 |
+
},
|
| 331 |
+
{
|
| 332 |
+
question: "Como os artistas entrevistados em \"Cidade Cinza\" enxergam o futuro dessas manifestações artísticas urbanas?",
|
| 333 |
+
answers: [
|
| 334 |
+
{ text: "Acreditam que ambas estão fadadas ao desaparecimento devido à repressão crescente", correct: false },
|
| 335 |
+
{ text: "Preveem que o grafite se tornará a única forma aceita de arte de rua", correct: false },
|
| 336 |
+
{ text: "Percebem que continuarão evoluindo e se adaptando como formas de expressão e resistência", correct: true },
|
| 337 |
+
{ text: "Esperam que o pixo substitua completamente o grafite no cenário urbano", correct: false },
|
| 338 |
+
{ text: "Não demonstram qualquer preocupação ou reflexão sobre o futuro", correct: false }
|
| 339 |
+
],
|
| 340 |
+
image: "https://source.unsplash.com/random/600x400/?future,city",
|
| 341 |
+
explanation: "Resposta correta: Percebem que continuarão evoluindo e se adaptando como formas de expressão e resistência. Apesar da repressão, os artistas veem essas manifestações como persistentes e mutáveis."
|
| 342 |
+
}
|
| 343 |
+
];
|
| 344 |
+
|
| 345 |
+
// DOM Elements
|
| 346 |
+
const loginScreen = document.getElementById('loginScreen');
|
| 347 |
+
const quizScreen = document.getElementById('quizScreen');
|
| 348 |
+
const resultsScreen = document.getElementById('resultsScreen');
|
| 349 |
+
const adminPanel = document.getElementById('adminPanel');
|
| 350 |
+
const studentName = document.getElementById('studentName');
|
| 351 |
+
const studentClass = document.getElementById('studentClass');
|
| 352 |
+
const quizDate = document.getElementById('quizDate');
|
| 353 |
+
const startQuizBtn = document.getElementById('startQuizBtn');
|
| 354 |
+
const questionText = document.getElementById('questionText');
|
| 355 |
+
const questionImage = document.getElementById('questionImage');
|
| 356 |
+
const answersContainer = document.getElementById('answersContainer');
|
| 357 |
+
const prevQuestionBtn = document.getElementById('prevQuestionBtn');
|
| 358 |
+
const nextQuestionBtn = document.getElementById('nextQuestionBtn');
|
| 359 |
+
const submitQuizBtn = document.getElementById('submitQuizBtn');
|
| 360 |
+
const questionNumber = document.getElementById('questionNumber');
|
| 361 |
+
const currentQuestion = document.getElementById('currentQuestion');
|
| 362 |
+
const totalQuestions = document.getElementById('totalQuestions');
|
| 363 |
+
const timer = document.getElementById('timer');
|
| 364 |
+
const studentNameDisplay = document.getElementById('studentNameDisplay');
|
| 365 |
+
const studentInfoDisplay = document.getElementById('studentInfoDisplay');
|
| 366 |
+
const correctAnswers = document.getElementById('correctAnswers');
|
| 367 |
+
const totalQuestionsDisplay = document.getElementById('totalQuestionsDisplay');
|
| 368 |
+
const percentage = document.getElementById('percentage');
|
| 369 |
+
const scoreCircle = document.getElementById('scoreCircle');
|
| 370 |
+
const wrongAnswersContainer = document.getElementById('wrongAnswersContainer');
|
| 371 |
+
const viewResultsBtn = document.getElementById('viewResultsBtn');
|
| 372 |
+
const resultsTableBody = document.getElementById('resultsTableBody');
|
| 373 |
+
const classFilter = document.getElementById('classFilter');
|
| 374 |
+
const exportResultsBtn = document.getElementById('exportResultsBtn');
|
| 375 |
+
|
| 376 |
+
// Quiz State
|
| 377 |
+
let quizState = {
|
| 378 |
+
currentQuestionIndex: 0,
|
| 379 |
+
shuffledQuestions: [],
|
| 380 |
+
shuffledAnswers: [],
|
| 381 |
+
userAnswers: Array(questions.length).fill(null),
|
| 382 |
+
timeElapsed: 0,
|
| 383 |
+
timerInterval: null,
|
| 384 |
+
studentName: '',
|
| 385 |
+
studentClass: '',
|
| 386 |
+
quizDate: ''
|
| 387 |
+
};
|
| 388 |
+
|
| 389 |
+
// Admin mode check from URL
|
| 390 |
+
const urlParams = new URLSearchParams(window.location.search);
|
| 391 |
+
const adminMode = urlParams.get('admin');
|
| 392 |
+
|
| 393 |
+
// Initialize the app
|
| 394 |
+
function initApp() {
|
| 395 |
+
if (adminMode === 'true') {
|
| 396 |
+
loginScreen.classList.add('hidden');
|
| 397 |
+
quizScreen.classList.add('hidden');
|
| 398 |
+
resultsScreen.classList.add('hidden');
|
| 399 |
+
adminPanel.classList.remove('hidden');
|
| 400 |
+
loadResults();
|
| 401 |
+
return;
|
| 402 |
+
}
|
| 403 |
+
|
| 404 |
+
// Set up event listeners
|
| 405 |
+
startQuizBtn.addEventListener('click', startQuiz);
|
| 406 |
+
prevQuestionBtn.addEventListener('click', showPreviousQuestion);
|
| 407 |
+
nextQuestionBtn.addEventListener('click', showNextQuestion);
|
| 408 |
+
submitQuizBtn.addEventListener('click', showResults);
|
| 409 |
+
viewResultsBtn.addEventListener('click', showDetailedResults);
|
| 410 |
+
classFilter.addEventListener('change', filterResults);
|
| 411 |
+
exportResultsBtn.addEventListener('click', exportResults);
|
| 412 |
+
|
| 413 |
+
// Set today's date as default
|
| 414 |
+
const today = new Date().toISOString().split('T')[0];
|
| 415 |
+
quizDate.value = today;
|
| 416 |
+
|
| 417 |
+
// Initialize the question navigator
|
| 418 |
+
initQuestionNavigator();
|
| 419 |
+
|
| 420 |
+
// Display total questions
|
| 421 |
+
totalQuestions.textContent = questions.length;
|
| 422 |
+
totalQuestionsDisplay.textContent = questions.length;
|
| 423 |
+
}
|
| 424 |
+
|
| 425 |
+
// Initialize question navigator buttons
|
| 426 |
+
function initQuestionNavigator() {
|
| 427 |
+
const questionNav = document.querySelector('.flex.flex-wrap.gap-2');
|
| 428 |
+
questionNav.innerHTML = '';
|
| 429 |
+
|
| 430 |
+
questions.forEach((_, index) => {
|
| 431 |
+
const btn = document.createElement('button');
|
| 432 |
+
btn.className = `w-10 h-10 rounded-full flex items-center justify-center ${index === 0 ? 'bg-blue-600 text-white' : 'bg-gray-200 text-gray-700 hover:bg-gray-300'} transition`;
|
| 433 |
+
btn.textContent = index + 1;
|
| 434 |
+
btn.onclick = () => goToQuestion(index);
|
| 435 |
+
|
| 436 |
+
const btnContainer = document.createElement('div');
|
| 437 |
+
btnContainer.className = 'tooltip-container relative';
|
| 438 |
+
|
| 439 |
+
const tooltip = document.createElement('span');
|
| 440 |
+
tooltip.className = 'tooltip hidden absolute z-10 w-36 px-3 py-2 text-sm font-medium text-white bg-gray-900 rounded-lg shadow-sm dark:bg-gray-700 bottom-full mb-2 left-1/2 transform -translate-x-1/2';
|
| 441 |
+
tooltip.textContent = `Questão ${index + 1}`;
|
| 442 |
+
|
| 443 |
+
btnContainer.appendChild(btn);
|
| 444 |
+
btnContainer.appendChild(tooltip);
|
| 445 |
+
|
| 446 |
+
// Show tooltip on hover
|
| 447 |
+
btn.addEventListener('mouseover', () => {
|
| 448 |
+
tooltip.classList.remove('hidden');
|
| 449 |
+
});
|
| 450 |
+
|
| 451 |
+
btn.addEventListener('mouseout', () => {
|
| 452 |
+
tooltip.classList.add('hidden');
|
| 453 |
+
});
|
| 454 |
+
|
| 455 |
+
questionNav.appendChild(btnContainer);
|
| 456 |
+
});
|
| 457 |
+
}
|
| 458 |
+
|
| 459 |
+
// Start the quiz
|
| 460 |
+
function startQuiz() {
|
| 461 |
+
if (!studentName.value || !studentClass.value || !quizDate.value) {
|
| 462 |
+
alert('Por favor, preencha todas as informações antes de começar.');
|
| 463 |
+
return;
|
| 464 |
+
}
|
| 465 |
+
|
| 466 |
+
// Save student info
|
| 467 |
+
quizState.studentName = studentName.value;
|
| 468 |
+
quizState.studentClass = studentClass.value;
|
| 469 |
+
quizState.quizDate = quizDate.value;
|
| 470 |
+
|
| 471 |
+
// Shuffle questions and answers
|
| 472 |
+
quizState.shuffledQuestions = shuffleArray([...questions]);
|
| 473 |
+
quizState.shuffledAnswers = quizState.shuffledQuestions.map(q => shuffleArray([...q.answers]));
|
| 474 |
+
quizState.userAnswers = Array(questions.length).fill(null);
|
| 475 |
+
quizState.currentQuestionIndex = 0;
|
| 476 |
+
quizState.timeElapsed = 0;
|
| 477 |
+
|
| 478 |
+
// Start timer
|
| 479 |
+
startTimer();
|
| 480 |
+
|
| 481 |
+
// Hide login screen and show quiz screen
|
| 482 |
+
loginScreen.classList.add('hidden');
|
| 483 |
+
quizScreen.classList.remove('hidden');
|
| 484 |
+
|
| 485 |
+
// Display first question
|
| 486 |
+
displayQuestion();
|
| 487 |
+
}
|
| 488 |
+
|
| 489 |
+
// Display current question
|
| 490 |
+
function displayQuestion() {
|
| 491 |
+
const currentQuestion = quizState.shuffledQuestions[quizState.currentQuestionIndex];
|
| 492 |
+
const currentAnswers = quizState.shuffledAnswers[quizState.currentQuestionIndex];
|
| 493 |
+
|
| 494 |
+
// Update question number
|
| 495 |
+
questionNumber.textContent = `Pergunta ${quizState.currentQuestionIndex + 1}`;
|
| 496 |
+
document.getElementById('currentQuestion').textContent = quizState.currentQuestionIndex + 1;
|
| 497 |
+
|
| 498 |
+
// Update question text
|
| 499 |
+
questionText.textContent = currentQuestion.question;
|
| 500 |
+
|
| 501 |
+
// Update question image
|
| 502 |
+
questionImage.src = currentQuestion.image;
|
| 503 |
+
questionImage.alt = `Imagem ilustrativa para a pergunta ${quizState.currentQuestionIndex + 1}`;
|
| 504 |
+
|
| 505 |
+
// Clear previous answers
|
| 506 |
+
answersContainer.innerHTML = '';
|
| 507 |
+
|
| 508 |
+
// Add new answers
|
| 509 |
+
currentAnswers.forEach((answer, index) => {
|
| 510 |
+
const answerDiv = document.createElement('div');
|
| 511 |
+
answerDiv.className = 'flex items-center p-3 bg-gray-100 rounded-md cursor-pointer hover:bg-gray-200 transition';
|
| 512 |
+
answerDiv.dataset.index = index;
|
| 513 |
+
|
| 514 |
+
const radio = document.createElement('input');
|
| 515 |
+
radio.type = 'radio';
|
| 516 |
+
radio.name = 'answer';
|
| 517 |
+
radio.id = `answer-${index}`;
|
| 518 |
+
radio.className = 'mr-3 h-5 w-5 text-blue-600 focus:ring-blue-500';
|
| 519 |
+
|
| 520 |
+
// Check if this answer was previously selected
|
| 521 |
+
if (quizState.userAnswers[quizState.currentQuestionIndex] === index) {
|
| 522 |
+
radio.checked = true;
|
| 523 |
+
}
|
| 524 |
+
|
| 525 |
+
const label = document.createElement('label');
|
| 526 |
+
label.htmlFor = `answer-${index}`;
|
| 527 |
+
label.className = 'text-gray-800 cursor-pointer';
|
| 528 |
+
label.textContent = answer.text;
|
| 529 |
+
|
| 530 |
+
answerDiv.appendChild(radio);
|
| 531 |
+
answerDiv.appendChild(label);
|
| 532 |
+
|
| 533 |
+
// Add click event
|
| 534 |
+
answerDiv.addEventListener('click', () => selectAnswer(index));
|
| 535 |
+
|
| 536 |
+
answersContainer.appendChild(answerDiv);
|
| 537 |
+
});
|
| 538 |
+
|
| 539 |
+
// Enable/disable navigation buttons
|
| 540 |
+
prevQuestionBtn.disabled = quizState.currentQuestionIndex === 0;
|
| 541 |
+
nextQuestionBtn.classList.toggle('hidden', quizState.currentQuestionIndex === questions.length - 1);
|
| 542 |
+
submitQuizBtn.classList.toggle('hidden', quizState.currentQuestionIndex !== questions.length - 1);
|
| 543 |
+
|
| 544 |
+
// Update question navigator buttons
|
| 545 |
+
updateQuestionNavigator();
|
| 546 |
+
}
|
| 547 |
+
|
| 548 |
+
// Update question navigator buttons
|
| 549 |
+
function updateQuestionNavigator() {
|
| 550 |
+
const buttons = document.querySelectorAll('.flex.flex-wrap.gap-2 button');
|
| 551 |
+
|
| 552 |
+
buttons.forEach((btn, index) => {
|
| 553 |
+
// Remove all active classes
|
| 554 |
+
btn.classList.remove('bg-blue-600', 'text-white', 'bg-gray-200', 'text-gray-700', 'bg-green-100', 'text-green-800', 'bg-red-100', 'text-red-800');
|
| 555 |
+
|
| 556 |
+
// Current question
|
| 557 |
+
if (index === quizState.currentQuestionIndex) {
|
| 558 |
+
btn.classList.add('bg-blue-600', 'text-white');
|
| 559 |
+
}
|
| 560 |
+
// Answered questions
|
| 561 |
+
else if (quizState.userAnswers[index] !== null) {
|
| 562 |
+
const isCorrect = checkAnswer(index, quizState.userAnswers[index]);
|
| 563 |
+
btn.classList.add(isCorrect ? 'bg-green-100' : 'bg-red-100', isCorrect ? 'text-green-800' : 'text-red-800');
|
| 564 |
+
}
|
| 565 |
+
// Unanswered questions
|
| 566 |
+
else {
|
| 567 |
+
btn.classList.add('bg-gray-200', 'text-gray-700');
|
| 568 |
+
}
|
| 569 |
+
});
|
| 570 |
+
}
|
| 571 |
+
|
| 572 |
+
// Select an answer
|
| 573 |
+
function selectAnswer(answerIndex) {
|
| 574 |
+
quizState.userAnswers[quizState.currentQuestionIndex] = answerIndex;
|
| 575 |
+
updateQuestionNavigator();
|
| 576 |
+
}
|
| 577 |
+
|
| 578 |
+
// Check if answer is correct
|
| 579 |
+
function checkAnswer(questionIndex, answerIndex) {
|
| 580 |
+
const question = quizState.shuffledQuestions[questionIndex];
|
| 581 |
+
const answer = quizState.shuffledAnswers[questionIndex][answerIndex];
|
| 582 |
+
return answer.correct;
|
| 583 |
+
}
|
| 584 |
+
|
| 585 |
+
// Navigate to previous question
|
| 586 |
+
function showPreviousQuestion() {
|
| 587 |
+
if (quizState.currentQuestionIndex > 0) {
|
| 588 |
+
quizState.currentQuestionIndex--;
|
| 589 |
+
displayQuestion();
|
| 590 |
+
}
|
| 591 |
+
}
|
| 592 |
+
|
| 593 |
+
// Navigate to next question
|
| 594 |
+
function showNextQuestion() {
|
| 595 |
+
if (quizState.userAnswers[quizState.currentQuestionIndex] === null) {
|
| 596 |
+
alert('Por favor, selecione uma resposta antes de prosseguir.');
|
| 597 |
+
return;
|
| 598 |
+
}
|
| 599 |
+
|
| 600 |
+
if (quizState.currentQuestionIndex < questions.length - 1) {
|
| 601 |
+
quizState.currentQuestionIndex++;
|
| 602 |
+
displayQuestion();
|
| 603 |
+
}
|
| 604 |
+
}
|
| 605 |
+
|
| 606 |
+
// Navigate to specific question
|
| 607 |
+
function goToQuestion(index) {
|
| 608 |
+
quizState.currentQuestionIndex = index;
|
| 609 |
+
displayQuestion();
|
| 610 |
+
}
|
| 611 |
+
|
| 612 |
+
// Start timer
|
| 613 |
+
function startTimer() {
|
| 614 |
+
clearInterval(quizState.timerInterval);
|
| 615 |
+
quizState.timeElapsed = 0;
|
| 616 |
+
updateTimerDisplay();
|
| 617 |
+
|
| 618 |
+
quizState.timerInterval = setInterval(() => {
|
| 619 |
+
quizState.timeElapsed++;
|
| 620 |
+
updateTimerDisplay();
|
| 621 |
+
}, 1000);
|
| 622 |
+
}
|
| 623 |
+
|
| 624 |
+
// Update timer display
|
| 625 |
+
function updateTimerDisplay() {
|
| 626 |
+
const minutes = Math.floor(quizState.timeElapsed / 60).toString().padStart(2, '0');
|
| 627 |
+
const seconds = (quizState.timeElapsed % 60).toString().padStart(2, '0');
|
| 628 |
+
timer.textContent = `${minutes}:${seconds}`;
|
| 629 |
+
}
|
| 630 |
+
|
| 631 |
+
// Show results
|
| 632 |
+
function showResults() {
|
| 633 |
+
if (quizState.userAnswers[quizState.currentQuestionIndex] === null) {
|
| 634 |
+
alert('Por favor, selecione uma resposta antes de finalizar.');
|
| 635 |
+
return;
|
| 636 |
+
}
|
| 637 |
+
|
| 638 |
+
// Stop timer
|
| 639 |
+
clearInterval(quizState.timerInterval);
|
| 640 |
+
|
| 641 |
+
// Calculate score
|
| 642 |
+
const correctCount = quizState.userAnswers.reduce((count, answerIndex, questionIndex) => {
|
| 643 |
+
return count + (checkAnswer(questionIndex, answerIndex) ? 1 : 0);
|
| 644 |
+
}, 0);
|
| 645 |
+
|
| 646 |
+
const score = Math.round((correctCount / questions.length) * 10);
|
| 647 |
+
const percentage = Math.round((correctCount / questions.length) * 100);
|
| 648 |
+
|
| 649 |
+
// Update results display
|
| 650 |
+
studentNameDisplay.textContent = quizState.studentName;
|
| 651 |
+
studentInfoDisplay.textContent = `${quizState.studentClass} - ${formatDate(quizState.quizDate)}`;
|
| 652 |
+
correctAnswers.textContent = correctCount;
|
| 653 |
+
percentage.textContent = percentage;
|
| 654 |
+
scoreCircle.textContent = score;
|
| 655 |
+
|
| 656 |
+
// Generate wrong answers list
|
| 657 |
+
wrongAnswersContainer.innerHTML = '';
|
| 658 |
+
const wrongAnswersCount = questions.length - correctCount;
|
| 659 |
+
|
| 660 |
+
if (wrongAnswersCount > 0) {
|
| 661 |
+
const wrongAnswersTitle = document.createElement('h4');
|
| 662 |
+
wrongAnswersTitle.className = 'text-lg font-semibold mb-3 text-gray-800';
|
| 663 |
+
wrongAnswersTitle.textContent = `Correção das ${wrongAnswersCount === 1 ? 'resposta incorreta' : 'respostas incorretas'}:`;
|
| 664 |
+
wrongAnswersContainer.appendChild(wrongAnswersTitle);
|
| 665 |
+
|
| 666 |
+
quizState.userAnswers.forEach((userAnswer, index) => {
|
| 667 |
+
if (!checkAnswer(index, userAnswer)) {
|
| 668 |
+
const questionItem = document.createElement('div');
|
| 669 |
+
questionItem.className = 'mb-4 p-3 bg-red-50 rounded-md';
|
| 670 |
+
|
| 671 |
+
const questionText = document.createElement('p');
|
| 672 |
+
questionText.className = 'font-medium text-red-800';
|
| 673 |
+
questionText.textContent = `${index + 1}. ${quizState.shuffledQuestions[index].question}`;
|
| 674 |
+
questionItem.appendChild(questionText);
|
| 675 |
+
|
| 676 |
+
const userAnswerText = document.createElement('p');
|
| 677 |
+
userAnswerText.className = 'ml-4 mt-1 text-red-600';
|
| 678 |
+
userAnswerText.textContent = `Sua resposta: ${quizState.shuffledAnswers[index][userAnswer].text}`;
|
| 679 |
+
questionItem.appendChild(userAnswerText);
|
| 680 |
+
|
| 681 |
+
const explanationText = document.createElement('p');
|
| 682 |
+
explanationText.className = 'ml-4 mt-1 text-gray-700';
|
| 683 |
+
explanationText.textContent = quizState.shuffledQuestions[index].explanation;
|
| 684 |
+
questionItem.appendChild(explanationText);
|
| 685 |
+
|
| 686 |
+
wrongAnswersContainer.appendChild(questionItem);
|
| 687 |
+
}
|
| 688 |
+
});
|
| 689 |
+
} else {
|
| 690 |
+
const allCorrect = document.createElement('div');
|
| 691 |
+
allCorrect.className = 'bg-green-100 text-green-800 p-3 rounded-md text-center font-medium';
|
| 692 |
+
allCorrect.textContent = 'Parabéns! Você acertou todas as questões!';
|
| 693 |
+
wrongAnswersContainer.appendChild(allCorrect);
|
| 694 |
+
}
|
| 695 |
+
|
| 696 |
+
// Store results
|
| 697 |
+
storeResults(correctCount, score);
|
| 698 |
+
|
| 699 |
+
// Hide quiz screen and show results screen
|
| 700 |
+
quizScreen.classList.add('hidden');
|
| 701 |
+
resultsScreen.classList.remove('hidden');
|
| 702 |
+
}
|
| 703 |
+
|
| 704 |
+
// Show detailed results
|
| 705 |
+
function showDetailedResults() {
|
| 706 |
+
const detailedResults = document.createElement('div');
|
| 707 |
+
detailedResults.className = 'mt-6 bg-white rounded-lg shadow-md p-6';
|
| 708 |
+
|
| 709 |
+
const title = document.createElement('h3');
|
| 710 |
+
title.className = 'text-xl font-semibold mb-4 text-gray-800';
|
| 711 |
+
title.textContent = 'Resultado Detalhado';
|
| 712 |
+
detailedResults.appendChild(title);
|
| 713 |
+
|
| 714 |
+
quizState.shuffledQuestions.forEach((question, index) => {
|
| 715 |
+
const questionDiv = document.createElement('div');
|
| 716 |
+
questionDiv.className = 'mb-6 p-4 border border-gray-200 rounded-lg';
|
| 717 |
+
|
| 718 |
+
// Question
|
| 719 |
+
const questionText = document.createElement('p');
|
| 720 |
+
questionText.className = 'font-medium text-gray-800 mb-3';
|
| 721 |
+
questionText.textContent = `${index + 1}. ${question.question}`;
|
| 722 |
+
questionDiv.appendChild(questionText);
|
| 723 |
+
|
| 724 |
+
// User answer
|
| 725 |
+
const userAnswer = document.createElement('p');
|
| 726 |
+
const isCorrect = checkAnswer(index, quizState.userAnswers[index]);
|
| 727 |
+
userAnswer.className = `font-medium ml-4 ${isCorrect ? 'text-green-600' : 'text-red-600'}`;
|
| 728 |
+
userAnswer.textContent = `Sua resposta: ${quizState.shuffledAnswers[index][quizState.userAnswers[index]].text}`;
|
| 729 |
+
questionDiv.appendChild(userAnswer);
|
| 730 |
+
|
| 731 |
+
if (!isCorrect) {
|
| 732 |
+
// Correct answer
|
| 733 |
+
const correctAnswer = question.answers.find(a => a.correct);
|
| 734 |
+
if (correctAnswer) {
|
| 735 |
+
const correctAnswerText = document.createElement('p');
|
| 736 |
+
correctAnswerText.className = 'font-medium ml-4 text-green-600';
|
| 737 |
+
correctAnswerText.textContent = `Resposta correta: ${correctAnswer.text}`;
|
| 738 |
+
questionDiv.appendChild(correctAnswerText);
|
| 739 |
+
}
|
| 740 |
+
}
|
| 741 |
+
|
| 742 |
+
// Explanation
|
| 743 |
+
if (question.explanation) {
|
| 744 |
+
const explanation = document.createElement('p');
|
| 745 |
+
explanation.className = 'ml-4 mt-2 text-gray-700 italic';
|
| 746 |
+
explanation.textContent = question.explanation;
|
| 747 |
+
questionDiv.appendChild(explanation);
|
| 748 |
+
}
|
| 749 |
+
|
| 750 |
+
detailedResults.appendChild(questionDiv);
|
| 751 |
+
});
|
| 752 |
+
|
| 753 |
+
// Add close button
|
| 754 |
+
const closeBtn = document.createElement('button');
|
| 755 |
+
closeBtn.className = 'mt-4 bg-blue-600 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 transition duration-150';
|
| 756 |
+
closeBtn.textContent = 'Fechar';
|
| 757 |
+
closeBtn.onclick = () => detailedResults.remove();
|
| 758 |
+
detailedResults.appendChild(closeBtn);
|
| 759 |
+
|
| 760 |
+
// Insert after wrong answers
|
| 761 |
+
wrongAnswersContainer.appendChild(detailedResults);
|
| 762 |
+
}
|
| 763 |
+
|
| 764 |
+
// Store results in localStorage
|
| 765 |
+
function storeResults(correctCount, score) {
|
| 766 |
+
// Format answers for storage (e.g., "1.c, 2.a, 3.b, ...")
|
| 767 |
+
const formattedAnswers = quizState.userAnswers.map((answerIndex, questionIndex) => {
|
| 768 |
+
if (answerIndex === null) return `${questionIndex + 1}.não respondida`;
|
| 769 |
+
const answerLetters = ['a', 'b', 'c', 'd', 'e'];
|
| 770 |
+
return `${questionIndex + 1}.${answerLetters[answerIndex]}`;
|
| 771 |
+
}).join(', ');
|
| 772 |
+
|
| 773 |
+
// Format time
|
| 774 |
+
const minutes = Math.floor(quizState.timeElapsed / 60).toString().padStart(2, '0');
|
| 775 |
+
const seconds = (quizState.timeElapsed % 60).toString().padStart(2, '0');
|
| 776 |
+
const formattedTime = `${minutes}:${seconds}`;
|
| 777 |
+
|
| 778 |
+
// Create result object
|
| 779 |
+
const result = {
|
| 780 |
+
name: quizState.studentName,
|
| 781 |
+
class: quizState.studentClass,
|
| 782 |
+
date: quizState.quizDate,
|
| 783 |
+
answers: formattedAnswers,
|
| 784 |
+
correct: correctCount,
|
| 785 |
+
score: score,
|
| 786 |
+
time: formattedTime,
|
| 787 |
+
timestamp: new Date().toISOString(),
|
| 788 |
+
originalOrder: quizState.shuffledQuestions.map(q => questions.findIndex(item => item.question === q.question))
|
| 789 |
+
};
|
| 790 |
+
|
| 791 |
+
// Get existing results or create new array
|
| 792 |
+
const existingResults = JSON.parse(localStorage.getItem('quizResults')) || [];
|
| 793 |
+
|
| 794 |
+
// Add new result
|
| 795 |
+
existingResults.push(result);
|
| 796 |
+
|
| 797 |
+
// Save back to localStorage
|
| 798 |
+
localStorage.setItem('quizResults', JSON.stringify(existingResults));
|
| 799 |
+
}
|
| 800 |
+
|
| 801 |
+
// Load results for admin panel
|
| 802 |
+
function loadResults() {
|
| 803 |
+
const results = JSON.parse(localStorage.getItem('quizResults')) || [];
|
| 804 |
+
|
| 805 |
+
// Clear table
|
| 806 |
+
resultsTableBody.innerHTML = '';
|
| 807 |
+
|
| 808 |
+
// Add each result to the table
|
| 809 |
+
results.forEach(result => {
|
| 810 |
+
const row = document.createElement('tr');
|
| 811 |
+
row.className = 'hover:bg-gray-50';
|
| 812 |
+
|
| 813 |
+
// Name
|
| 814 |
+
const nameCell = document.createElement('td');
|
| 815 |
+
nameCell.className = 'py-2 px-4';
|
| 816 |
+
nameCell.textContent = result.name;
|
| 817 |
+
row.appendChild(nameCell);
|
| 818 |
+
|
| 819 |
+
// Class
|
| 820 |
+
const classCell = document.createElement('td');
|
| 821 |
+
classCell.className = 'py-2 px-4';
|
| 822 |
+
classCell.textContent = result.class;
|
| 823 |
+
row.appendChild(classCell);
|
| 824 |
+
|
| 825 |
+
// Date
|
| 826 |
+
const dateCell = document.createElement('td');
|
| 827 |
+
dateCell.className = 'py-2 px-4';
|
| 828 |
+
dateCell.textContent = formatDate(result.date);
|
| 829 |
+
row.appendChild(dateCell);
|
| 830 |
+
|
| 831 |
+
// Answers
|
| 832 |
+
const answersCell = document.createElement('td');
|
| 833 |
+
answersCell.className = 'py-2 px-4 font-mono text-sm';
|
| 834 |
+
answersCell.textContent = result.answers;
|
| 835 |
+
row.appendChild(answersCell);
|
| 836 |
+
|
| 837 |
+
// Score
|
| 838 |
+
const scoreCell = document.createElement('td');
|
| 839 |
+
scoreCell.className = 'py-2 px-4 font-semibold';
|
| 840 |
+
scoreCell.textContent = `${result.correct}/${questions.length} (${result.score}/10)`;
|
| 841 |
+
row.appendChild(scoreCell);
|
| 842 |
+
|
| 843 |
+
// Time
|
| 844 |
+
const timeCell = document.createElement('td');
|
| 845 |
+
timeCell.className = 'py-2 px-4';
|
| 846 |
+
timeCell.textContent = result.time;
|
| 847 |
+
row.appendChild(timeCell);
|
| 848 |
+
|
| 849 |
+
resultsTableBody.appendChild(row);
|
| 850 |
+
});
|
| 851 |
+
}
|
| 852 |
+
|
| 853 |
+
// Filter results by class
|
| 854 |
+
function filterResults() {
|
| 855 |
+
const selectedClass = classFilter.value;
|
| 856 |
+
const rows = resultsTableBody.querySelectorAll('tr');
|
| 857 |
+
|
| 858 |
+
rows.forEach(row => {
|
| 859 |
+
const classCell = row.querySelector('td:nth-child(2)');
|
| 860 |
+
if (!selectedClass || classCell.textContent === selectedClass) {
|
| 861 |
+
row.style.display = '';
|
| 862 |
+
} else {
|
| 863 |
+
row.style.display = 'none';
|
| 864 |
+
}
|
| 865 |
+
});
|
| 866 |
+
}
|
| 867 |
+
|
| 868 |
+
// Export results to CSV
|
| 869 |
+
function exportResults() {
|
| 870 |
+
const results = JSON.parse(localStorage.getItem('quizResults')) || [];
|
| 871 |
+
if (results.length === 0) {
|
| 872 |
+
alert('Nenhum resultado encontrado para exportar.');
|
| 873 |
+
return;
|
| 874 |
+
}
|
| 875 |
+
|
| 876 |
+
// Create CSV header
|
| 877 |
+
let csv = 'Nome,Turma,Data,Respostas,Corretas,Total,Nota,Tempo\n';
|
| 878 |
+
|
| 879 |
+
// Add each result to CSV
|
| 880 |
+
results.forEach(result => {
|
| 881 |
+
csv += `"${result.name}","${result.class}","${formatDate(result.date)}","${result.answers}",${result.correct},${questions.length},${result.score},"${result.time}"\n`;
|
| 882 |
+
});
|
| 883 |
+
|
| 884 |
+
// Create download link
|
| 885 |
+
const blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' });
|
| 886 |
+
const url = URL.createObjectURL(blob);
|
| 887 |
+
const link = document.createElement('a');
|
| 888 |
+
link.href = url;
|
| 889 |
+
link.download = `resultados_questionario_${formatDate(new Date().toISOString())}.csv`;
|
| 890 |
+
document.body.appendChild(link);
|
| 891 |
+
link.click();
|
| 892 |
+
document.body.removeChild(link);
|
| 893 |
+
}
|
| 894 |
+
|
| 895 |
+
// Helper function to format date
|
| 896 |
+
function formatDate(dateString) {
|
| 897 |
+
const date = new Date(dateString);
|
| 898 |
+
return date.toLocaleDateString('pt-BR');
|
| 899 |
+
}
|
| 900 |
+
|
| 901 |
+
// Helper function to shuffle array
|
| 902 |
+
function shuffleArray(array) {
|
| 903 |
+
const newArray = [...array];
|
| 904 |
+
for (let i = newArray.length - 1; i > 0; i--) {
|
| 905 |
+
const j = Math.floor(Math.random() * (i + 1));
|
| 906 |
+
[newArray[i], newArray[j]] = [newArray[j], newArray[i]];
|
| 907 |
+
}
|
| 908 |
+
return newArray;
|
| 909 |
+
}
|
| 910 |
+
|
| 911 |
+
// Initialize the app when DOM is loaded
|
| 912 |
+
document.addEventListener('DOMContentLoaded', initApp);
|
| 913 |
+
</script>
|
| 914 |
+
<p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=asgdestroi/document-rio" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
|
| 915 |
+
</html>
|
prompts.txt
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
ok, gostaria que transformasse o questionário em um site onde na página de entrada o aluno colocasse o nome, a turma e a data, aí iria para a página com o questionário acima, cada pergunta deve ser ilustrada com uma imagem, cada aluno que entrar deve ver o questionário em ordem diferente e as respostas também, mantenha o gabarito de resposta certa, mas invisível ao aluno, ao final grave o nome do aluno em uma listagem que apenas eu tenha acesso com as respostas dele em padrão por exemplo (1.d, 2.a... etc) e a nota dele de 0 a 10 de acordo com as respostas em uma listagem por turma, perguntas e respostas: 1. Qual é a principal diferença entre grafite e pixo, segundo os artistas entrevistados em Cidade Cinza? a) Grafite é sempre legal, pixo é sempre crime. Errado. Ambos podem ser ilegais, mas o grafite também é aceito em projetos autorizados. b) Grafite é arte, pixo é apenas destruição. Parcialmente errado. O filme mostra que pichadores veem seu trabalho como expressão, não só vandalismo. c) Grafite busca beleza estética, pixo prioriza a mensagem e a ocupação do espaço. Correto. Artistas como Os Gêmeos e outros destacam que o grafite tem preocupação visual, enquanto o pixo é uma marca de existência e protesto. d) Grafite usa tinta spray, pixo só usa rolo. Errado. Ambos podem usar técnicas variadas. e) Não há diferença. Errado. O documentário deixa clara a tensão entre as duas práticas. 2. Por que alguns pichadores no filme defendem o pixo como forma legítima de arte? a) Porque é mais fácil e rápido que grafite. Não é o argumento principal. Eles focam na ideia de resistência. b) Porque é uma forma de desafiar o sistema e marcar presença na cidade. não, o mesmo de cima, mas faça a mesma pergunta usando mais texto, mas com a mesma estrutura e o mesmo para as respostas, mantendo o gabarito Aqui está a versão expandida das perguntas, mantendo a mesma estrutura e gabarito, mas com textos mais elaborados: 1. Qual é a principal diferença entre grafite e pixo, segundo os artistas entrevistados no documentário "Cidade Cinza"? a) O grafite é sempre feito com permissão enquanto o pixo é sempre ilegal b) O grafite é considerado arte enquanto o pixo é visto apenas como vandalismo puro c) O grafite prioriza a estética e o apelo visual, já o pixo enfatiza a mensagem e a ocupação do espaço urbano d) O grafite utiliza apenas tintas spray profissionais enquanto o pixo usa materiais improvisados e) Não existe diferença significativa entre as duas manifestações urbanas Resposta correta: c) O grafite prioriza a estética e o apelo visual, já o pixo enfatiza a mensagem e a ocupação do espaço urbano 2. Como os artistas retratados no documentário justificam o pixo como forma de expressão artística? a) Por ser uma técnica mais simples e acessível do que o grafite tradicional b) Por representar uma forma de contestação social e afirmação de presença no espaço público c) Por ser mais facilmente aceito e compreendido pelo grande público d) Por exigir menos habilidade técnica e preparo artístico e) Por ser sempre realizado com autorização dos proprietários dos muros Resposta correta: b) Por representar uma forma de contestação social e afirmação de presença no espaço público 3. Qual foi o papel dos irmãos Os Gêmeos no desenvolvimento do grafite em São Paulo, conforme apresentado no documentário? a) Foram os pioneiros absolutos na introdução do pixo na cidade b) Contribuíram para internacionalizar o grafite brasileiro, dando visibilidade global à cena paulistana c) Atuaram como críticos ferrenhos de qualquer forma de arte urbana d) Trabalharam exclusivamente em espaços institucionais, nunca em intervenções urbanas e) Foram responsáveis diretos pela criminalização do grafite na cidade Resposta correta: b) Contribuíram para internacionalizar o grafite brasileiro, dando visibilidade global à cena paulistana 4. Como "Cidade Cinza" retrata a relação entre os artistas urbanos e o poder público municipal? a) Mostra uma cooperação constante e harmoniosa entre as partes b) Revela um cenário de conflito com períodos de repressão, mas também momentos de reconhecimento oficial c) Apresenta uma completa ausência de interferência governamental d) Demonstra que todos os artistas foram contratados formalmente pela prefeitura e) Indica que a prefeitura apoiava apenas o pixo, nunca o grafite Resposta correta: b) Revela um cenário de conflito com períodos de repressão, mas também momentos de reconhecimento oficial 5. Qual a posição predominante entre os artistas do filme em relação à criminalização do pixo? a) Concordam plenamente com sua classificação como ato vandalico b) Defendem sua legitimidade como expressão cultural e criticam a repressão sistemática c) Acreditam que apenas o grafite deveria ser permitido por lei d) Consideram que o pixo só é aceitável em áreas abandonadas e) Não manifestam qualquer opinião formada sobre o assunto Resposta correta: b) Defendem sua legitimidade como expressão cultural e criticam a repressão sistemática 6. Qual foi o impacto da Lei Cidade Limpa sobre as manifestações de arte urbana em São Paulo, segundo o documentário? a) Estimulou o surgimento de novos artistas de rua b) Intensificou a fiscalização e repressão contra qualquer tipo de intervenção urbana c) Afetou apenas a publicidade comercial, sem relação com a arte de rua d) Transformou o pixo em patrimônio cultural oficial e) Na prática, nunca foi implementada de fato Resposta correta: b) Intensificou a fiscalização e repressão contra qualquer tipo de intervenção urbana 7. Como os artistas do filme percebem a inserção do grafite no circuito comercial de arte? a) Consideram que isso representa a perda da essência contestadora original b) Veem como a única forma legítima de valorização do grafite c) Acreditam que o mercado nunca realmente aceitou o grafite como arte d) Não fazem distinção entre grafite e pixo no contexto mercadológico e) Avaliam que o pixo tem maior valor comercial que o grafite Resposta correta: a) Consideram que isso representa a perda da essência contestadora original 8. O que o documentário revela sobre as tensões entre grafiteiros e pichadores? a) Mostra uma convivência sempre pacífica e colaborativa b) Expõe rivalidades, com grafiteiros muitas vezes criticando o pixo como vandalismo e pichadores acusando grafiteiros de "vendidos" c) Indica que todos os grafiteiros também praticam pixo regularmente d) Demonstra completa ausência de conflitos entre os grupos e) Revela que a polícia sempre mediou positivamente essas relações Resposta correta: b) Expõe rivalidades, com grafiteiros muitas vezes criticando o pixo como vandalismo e pichadores acusando grafiteiros de "vendidos" 9. Qual é a visão central apresentada pelo documentário sobre o papel da arte urbana na transformação das cidades? a) Que ela contribui para piorar a degradação dos centros urbanos b) Que grafite e pixo funcionam como formas de resistência e humanização dos espaços cinzentos c) Que deveria ser restrita a museus e galerias especializadas d) Que não possui qualquer capacidade transformadora real e) Que apenas o grafite tem este poder, nunca o pixo Resposta correta: b) Que grafite e pixo funcionam como formas de resistência e humanização dos espaços cinzentos 10. Como os artistas entrevistados em "Cidade Cinza" enxergam o futuro dessas manifestações artísticas urbanas? a) Acreditam que ambas estão fadadas ao desaparecimento devido à repressão crescente b) Preveem que o grafite se tornará a única forma aceita de arte de rua c) Percebem que continuarão evoluindo e se adaptando como formas de expressão e resistência d) Esperam que o pixo substitua completamente o grafite no cenário urbano e) Não demonstram qualquer preocupação ou reflexão sobre o futuro Resposta correta: c) Percebem que continuarão evoluindo e se adaptando como formas de expressão e resistência
|
| 2 |
+
as turmas são 1n1, 1n2, 2n1, 2n2, 3n1, 3n2, 1eja, 2eja, 3eja
|