Scan to open on your phone
Point a camera at the QR code - it opens this exact paste, no app needed.
https://codepastes.com/zzgswjm8tpxb3x9tquiz gastronomiaPlain Text
<!doctype html>
<html lang="pt-BR">
<head><script>window["__codeletBootstrap__"]=JSON.parse('{"A":"A","B":"20261014-04-caa1adb","C":{"Abril Fatface":"YACgEZbkUVE,0","Albert Sans":"YAHO2HRfeh4,0","Alfa Slab One":"YACgEYS9sJU,0","Anton":"YACgEcYqQ-A,0","Archivo Black":"YACgEZulLoA,0","Archivo":"YAHO2-t-jNE,0","Arial":"YAGyDvJ_4Ts,0","Baloo 2":"YAHO2IcQUcM,0","Barlow Condensed":"YAFdJljEuFc,0","Barlow":"YAFdJsyuOPM,1","Bebas Neue":"YACgESME5ew,0","Bricolage Grotesque":"YAFyMcdwzpc,0","Canva Sans":"YAFdJjTk5UU,1","Caveat":"YALBs2ploWQ,0","Cinzel":"YACgEeV8bIQ,0","Cormorant Garamond":"YAFdJhX-538,0","Courier New":"YAGzXiGs0_8,0","Courier Prime":"YAD1aFjegN8,0","DM Sans":"YAD1aU3sLnI,0","DM Serif Display":"YAD1aYG82rc,0","Figtree":"YAHO2b-mV7A,0","Forum":"YACgEcnnqB4,0","Fraunces":"YAFdJpU7Kkk,0","Fredoka":"YACgEZml080,0","Georgia":"YAGzXkO0pEM,0","Hanken Grotesk":"YAHO2VB9G0I,0","Helvetica":"YAFcf7zkXN0,0","IBM Plex Mono":"YAFdJkmvhGI,0","IBM Plex Sans":"YAFdJgT0SHI,0","Impact":"YAFcfnjI7Vk,0","Instrument Sans":"YAHO2bKyaSQ,0","Instrument Serif":"YAHFeOnZNEk,0","Inter":"YAFdJvSyp_k,3","Italiana":"YAHO2Toik_w,0","Jacques Francois":"YAHO2a5g66Q,0","JetBrains Mono":"YAFdJksXcAk,0","Josefin Sans":"YAFdJjvw9Ps,0","Karla":"YAHO2V2NSXM,0","Lato":"YAFdJuFCnaw,0","Libre Baskerville":"YACgEUFdPdA,0","Libre Caslon Display":"YAHO2XhLmt0,0","Lobster":"YAD8SnSjSFI,0","Lora":"YACgEXvxf8Q,0","Manrope":"YAHO2b2feC4,0","Merriweather":"YACgEXvHxxs,0","Montserrat":"YAFdtQi73Xs,0","Noto Sans JP":"YAFdJiHXlcI,0","Noto Sans KR":"YAGsojZj-RQ,0","Nunito Sans":"YAFdtQJYB9w,1","Nunito":"YAFdJoNRMmU,1","Oleo Script":"YACgEQQ14jI,0","Oswald":"YACgEQY10lw,0","Outfit":"YAHO2nVlg14,0","Pacifico":"YADLjORQ1u4,0","Playfair Display":"YAFdJhem5V8,1","Plus Jakarta Sans":"YAHO2gdhi18,0","Poppins":"YAFdJjbTu24,1","Press Start 2P":"YAFyGr-8pmQ,0","Public Sans":"YAFdJj8NdaU,1","Quicksand":"YAFdJpYtCxE,1","Raleway":"YAFdJhmxbVQ,1","Roboto Slab":"YAFdJswIKAg,0","Rockwell":"YAFcfyVZnN0,0","Rye":"YACgEdQP21k,0","Sarabun":"YAFdJssSnME,0","Schibsted Grotesk":"YAHO2sWydRk,0","Segoe UI":"YAHNdRD1Klw,0","Source Sans 3":"YAG4lO1Mj10,0","Space Grotesk":"YAHO2sjPCSM,0","Space Mono":"YADW1-vpsoc,0","Spectral":"YAHO2rVUHIM,0","Times New Roman":"YAGzXW3gftg,0","Trebuchet MS":"YAFcfrglpVA,0","Ubuntu":"YACgERDU--Q,0","Verdana":"YAGzXTctYtQ,0","Work Sans":"YAGXhLOKv44,0","Yellowtail":"YACgEYG4kG4,0"}}');</script><script src="/_sdk/05db820ba1544614.telemetry_sdk.js" integrity="sha512-a7JzkQDDcioSXpM61nxTfeRW7PcxWQy5+BrhyeTFmQFsXJ+Gncm0y50u7fTA7qOPegFnRgqCfa0mGUOK1yjDWQ=="></script>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Quiz de Gastronomia</title>
<link href="https://fonts.googleapis.com/css2?family=Raleway:wght@400;500;600;700;800&display=swap" rel="stylesheet">
<style>
:root { --ink:#173b40; --muted:#4a6567; --gold:#b77b29; --paper:#f8f5ec; }
* { box-sizing:border-box; }
body { margin:0; width:100%; font-family:Raleway,sans-serif; color:var(--ink); }
.app-shell { width:100%; min-height:calc(100 * min(var(--vh, 1vh), 1vh)); background:radial-gradient(circle at 85% 5%,#e6d5ae 0%,transparent 36%),#f8f5ec; }
.editorial-card { background:#fffdf8; border:1px solid #dbdfd6; box-shadow:0 20px 65px rgba(19,56,59,.09); }
.eyebrow { letter-spacing:.18em; text-transform:uppercase; font-size:.72rem; font-weight:800; }
h1 { line-height:1.12; letter-spacing:-.04em; }
.choice { display:flex; align-items:center; width:100%; text-align:left; border:2px solid #c5d3cf; border-radius:14px; padding:16px 18px; background:#fff; color:#173b40; transition:background .18s,border-color .18s,transform .18s; cursor:pointer; line-height:1.5; font-weight:600; }
.choice:hover:not(:disabled) { border-color:#246873; transform:translateY(-2px); }
.choice.selected { border-color:#135765; background:#e9f4f2; }
.choice.correct { border-color:#196a45; background:#dff4e7; }
.choice.incorrect { border-color:#a52d35; background:#fce9e9; }
.choice:disabled { cursor:default; }
.choice-mark { display:inline-grid; place-items:center; flex:none; width:32px; height:32px; margin-right:14px; border-radius:50%; background:#e8efec; font-size:.82rem; font-weight:800; }
button:focus-visible, input:focus-visible { outline:3px solid #d29a3c; outline-offset:3px; }
.action { border-radius:12px; padding:14px 22px; font-weight:800; transition:filter .18s,transform .18s; }
.action:not(:disabled):hover { filter:brightness(1.12); transform:translateY(-1px); }
.action:disabled { opacity:.48; cursor:not-allowed; }
.quiz-item[hidden], [hidden] { display:none!important; }
@media(max-width:640px) { .choice { padding:14px; } }
</style>
<script src="https://cdn.tailwindcss.com/3.4.17" type="text/javascript"></script>
<script src="https://cdn.jsdelivr.net/npm/lucide@0.577.0/dist/umd/lucide.min.js" type="text/javascript"></script>
<script src="/_sdk/570d53629f0b998d.data_sdk.js" type="text/javascript" integrity="sha512-JEN39+V+Nvv9ZZOVS8vNk1iA9ErZJHTdgOw9KzPuMiK7m0I+KPEr/wmTnCFIQVsDjCZgJWfGnFi1IQh2Io2qyA=="></script>
<script src="/_sdk/0b63fb8940df03d4.editing_sdk.js" type="text/javascript" integrity="sha512-fFkkekAA7XKU9UcNO+7a7lGi1SDVYUdIo1lpZS9YpfVovu1WAj3C/MEr/w8zt6Jwq6OKflaYkwf4eOUpMYGz9A=="></script>
<script src="/_sdk/f195026a424c1f85.resizing_sdk.js" type="text/javascript" integrity="sha512-8On4Z+AXh1abEzZJ9Dbn9wOvFg+k1LsAaAzKGQ7LlfgXajZ9xEmZaZ1QVzv0AWhCZtCsEpWSOG9DgLri06TS7A=="></script>
</head>
<body data-template-id="__page-root" class="app-shell">
<main class="w-full px-4 py-8 sm:px-8 sm:py-12">
<div class="mx-auto w-full max-w-3xl">
<header class="mb-7 flex items-center justify-between gap-4 border-b border-[#c3ccc3] pb-5"><span data-template-id="brand-label" class="canva-text eyebrow"></span> <span data-template-id="header-category" class="canva-tag rounded-full border border-[#b8c8c3] px-3 py-1 text-right"></span>
</header>
<section id="start-screen" data-template-id="start-panel" class="canva-panel editorial-card rounded-3xl p-6 sm:p-10">
<p data-template-id="intro-kicker" class="canva-text eyebrow mb-4"></p>
<h1 data-template-id="main-title" class="canva-text mb-5 font-extrabold"></h1>
<p data-template-id="intro-description" class="canva-text mb-5 leading-relaxed"></p>
<p data-template-id="editorial-notice" class="canva-banner mb-7 rounded-xl border-l-4 border-[#b77b29] bg-[#fff5dc] p-4 leading-relaxed"></p>
<form id="start-form" class="border-t border-[#e0e5dd] pt-6"><label data-template-id="name-label" for="student-name" class="canva-text mb-2 block font-bold"></label> <input id="student-name" data-template-id="name-input" class="canva-input w-full rounded-xl border-2 border-[#a6bab5] bg-white px-4 py-3 text-[#173b40]" type="text" maxlength="100" autocomplete="name" required>
<p id="start-error" class="mt-2 font-semibold text-[#a52d35]" role="alert" hidden></p><button data-template-id="start-button" class="canva-button action mt-5 w-full bg-[#174e59] text-white sm:w-auto" type="submit"></button>
</form>
</section>
<section id="quiz-screen" data-template-id="quiz-panel" class="canva-panel editorial-card rounded-3xl p-6 sm:p-10" hidden aria-label="Questões">
<div class="mb-6 flex items-center justify-between gap-4"><span data-template-id="question-section-label" class="canva-text eyebrow"></span> <span id="progress-label" class="font-bold text-[#4a6567]" aria-live="polite"></span>
</div>
<div class="mb-8 h-2 overflow-hidden rounded-full bg-[#e5ece7]" role="progressbar" id="progress-bar" aria-valuemin="0" aria-valuemax="9" aria-valuenow="0" aria-label="Questões respondidas">
<div id="progress-fill" class="h-full rounded-full bg-[#b77b29] transition-all duration-300" style="width:0%"></div>
</div>
<div id="questions">
<article class="quiz-item" data-answer="1">
<p data-template-id="q1-source" class="canva-text eyebrow mb-3"></p>
<h2 data-template-id="q1-prompt" class="canva-text mb-6 font-bold leading-snug"></h2>
<div class="space-y-3" role="group" aria-label="Alternativas da questão 1"><button type="button" class="choice" data-option="0"><span class="choice-mark" aria-hidden="true">A</span><span data-template-id="q1-a" class="canva-text"></span></button> <button type="button" class="choice" data-option="1"><span class="choice-mark" aria-hidden="true">B</span><span data-template-id="q1-b" class="canva-text"></span></button> <button type="button" class="choice" data-option="2"><span class="choice-mark" aria-hidden="true">C</span><span data-template-id="q1-c" class="canva-text"></span></button>
</div>
</article>
<article class="quiz-item" data-answer="2" hidden>
<p data-template-id="q2-source" class="canva-text eyebrow mb-3"></p>
<h2 data-template-id="q2-prompt" class="canva-text mb-6 font-bold leading-snug"></h2>
<div class="space-y-3" role="group" aria-label="Alternativas da questão 2"><button type="button" class="choice" data-option="0"><span class="choice-mark" aria-hidden="true">A</span><span data-template-id="q2-a" class="canva-text"></span></button> <button type="button" class="choice" data-option="1"><span class="choice-mark" aria-hidden="true">B</span><span data-template-id="q2-b" class="canva-text"></span></button> <button type="button" class="choice" data-option="2"><span class="choice-mark" aria-hidden="true">C</span><span data-template-id="q2-c" class="canva-text"></span></button>
</div>
</article>
<article class="quiz-item" data-answer="0" hidden>
<p data-template-id="q3-source" class="canva-text eyebrow mb-3"></p>
<h2 data-template-id="q3-prompt" class="canva-text mb-6 font-bold leading-snug"></h2>
<div class="space-y-3" role="group" aria-label="Alternativas da questão 3"><button type="button" class="choice" data-option="0"><span class="choice-mark" aria-hidden="true">A</span><span data-template-id="q3-a" class="canva-text"></span></button> <button type="button" class="choice" data-option="1"><span class="choice-mark" aria-hidden="true">B</span><span data-template-id="q3-b" class="canva-text"></span></button> <button type="button" class="choice" data-option="2"><span class="choice-mark" aria-hidden="true">C</span><span data-template-id="q3-c" class="canva-text"></span></button>
</div>
</article>
<article class="quiz-item" data-answer="1" hidden>
<p data-template-id="q4-source" class="canva-text eyebrow mb-3"></p>
<h2 data-template-id="q4-prompt" class="canva-text mb-6 font-bold leading-snug"></h2>
<div class="space-y-3" role="group" aria-label="Alternativas da questão 4"><button type="button" class="choice" data-option="0"><span class="choice-mark" aria-hidden="true">A</span><span data-template-id="q4-a" class="canva-text"></span></button> <button type="button" class="choice" data-option="1"><span class="choice-mark" aria-hidden="true">B</span><span data-template-id="q4-b" class="canva-text"></span></button> <button type="button" class="choice" data-option="2"><span class="choice-mark" aria-hidden="true">C</span><span data-template-id="q4-c" class="canva-text"></span></button>
</div>
</article>
<article class="quiz-item" data-answer="2" hidden>
<p data-template-id="q5-source" class="canva-text eyebrow mb-3"></p>
<h2 data-template-id="q5-prompt" class="canva-text mb-6 font-bold leading-snug"></h2>
<div class="space-y-3" role="group" aria-label="Alternativas da questão 5"><button type="button" class="choice" data-option="0"><span class="choice-mark" aria-hidden="true">A</span><span data-template-id="q5-a" class="canva-text"></span></button> <button type="button" class="choice" data-option="1"><span class="choice-mark" aria-hidden="true">B</span><span data-template-id="q5-b" class="canva-text"></span></button> <button type="button" class="choice" data-option="2"><span class="choice-mark" aria-hidden="true">C</span><span data-template-id="q5-c" class="canva-text"></span></button>
</div>
</article>
<article class="quiz-item" data-answer="0" hidden>
<p data-template-id="q6-source" class="canva-text eyebrow mb-3"></p>
<h2 data-template-id="q6-prompt" class="canva-text mb-6 font-bold leading-snug"></h2>
<div class="space-y-3" role="group" aria-label="Alternativas da questão 6"><button type="button" class="choice" data-option="0"><span class="choice-mark" aria-hidden="true">A</span><span data-template-id="q6-a" class="canva-text"></span></button> <button type="button" class="choice" data-option="1"><span class="choice-mark" aria-hidden="true">B</span><span data-template-id="q6-b" class="canva-text"></span></button> <button type="button" class="choice" data-option="2"><span class="choice-mark" aria-hidden="true">C</span><span data-template-id="q6-c" class="canva-text"></span></button>
</div>
</article>
<article class="quiz-item" data-answer="1" hidden>
<p data-template-id="q7-source" class="canva-text eyebrow mb-3"></p>
<h2 data-template-id="q7-prompt" class="canva-text mb-6 font-bold leading-snug"></h2>
<div class="space-y-3" role="group" aria-label="Alternativas da questão 7"><button type="button" class="choice" data-option="0"><span class="choice-mark" aria-hidden="true">A</span><span data-template-id="q7-a" class="canva-text"></span></button> <button type="button" class="choice" data-option="1"><span class="choice-mark" aria-hidden="true">B</span><span data-template-id="q7-b" class="canva-text"></span></button> <button type="button" class="choice" data-option="2"><span class="choice-mark" aria-hidden="true">C</span><span data-template-id="q7-c" class="canva-text"></span></button>
</div>
</article>
<article class="quiz-item" data-answer="2" hidden>
<p data-template-id="q8-source" class="canva-text eyebrow mb-3"></p>
<h2 data-template-id="q8-prompt" class="canva-text mb-6 font-bold leading-snug"></h2>
<div class="space-y-3" role="group" aria-label="Alternativas da questão 8"><button type="button" class="choice" data-option="0"><span class="choice-mark" aria-hidden="true">A</span><span data-template-id="q8-a" class="canva-text"></span></button> <button type="button" class="choice" data-option="1"><span class="choice-mark" aria-hidden="true">B</span><span data-template-id="q8-b" class="canva-text"></span></button> <button type="button" class="choice" data-option="2"><span class="choice-mark" aria-hidden="true">C</span><span data-template-id="q8-c" class="canva-text"></span></button>
</div>
</article>
<article class="quiz-item" data-answer="0" hidden>
<p data-template-id="q9-source" class="canva-text eyebrow mb-3"></p>
<h2 data-template-id="q9-prompt" class="canva-text mb-6 font-bold leading-snug"></h2>
<div class="space-y-3" role="group" aria-label="Alternativas da questão 9"><button type="button" class="choice" data-option="0"><span class="choice-mark" aria-hidden="true">A</span><span data-template-id="q9-a" class="canva-text"></span></button> <button type="button" class="choice" data-option="1"><span class="choice-mark" aria-hidden="true">B</span><span data-template-id="q9-b" class="canva-text"></span></button> <button type="button" class="choice" data-option="2"><span class="choice-mark" aria-hidden="true">C</span><span data-template-id="q9-c" class="canva-text"></span></button>
</div>
</article>
</div>
<div id="feedback" class="mt-6 rounded-xl border p-4 font-bold leading-relaxed" role="status" aria-live="polite" hidden><span data-template-id="feedback-correct" class="canva-text" hidden></span> <span data-template-id="feedback-incorrect" class="canva-text" hidden></span> <span data-template-id="feedback-key-hint" class="canva-text mt-1 block font-medium"></span>
</div>
<div class="mt-7 flex flex-wrap gap-3"><button id="submit-answer" data-template-id="submit-button" class="canva-button action bg-[#174e59] text-white" type="button" disabled></button> <button id="next-question" data-template-id="next-button" class="canva-button action bg-[#b77b29] text-white" type="button" hidden></button>
</div>
</section>
<section id="result-screen" data-template-id="result-panel" class="canva-panel editorial-card rounded-3xl p-6 sm:p-10" hidden>
<p data-template-id="result-kicker" class="canva-text eyebrow mb-4"></p>
<h2 data-template-id="result-title" class="canva-text mb-7 font-extrabold"></h2>
<div class="grid gap-4 sm:grid-cols-2">
<div class="rounded-2xl bg-[#e8f1ec] p-5">
<p data-template-id="score-label" class="canva-text font-semibold"></p>
<p id="result-score" class="mt-2 text-3xl font-extrabold" aria-live="polite"></p>
</div>
<div class="rounded-2xl bg-[#f9edcf] p-5">
<p data-template-id="percentage-label" class="canva-text font-semibold"></p>
<p id="result-percentage" class="mt-2 text-3xl font-extrabold" aria-live="polite"></p>
</div>
</div>
<p id="attempt-display" class="mt-5 font-semibold" aria-live="polite"></p>
<p id="save-status" class="mt-3 font-semibold" role="status" aria-live="polite"></p>
<div class="mt-7 flex flex-wrap gap-3"><button id="retry-save" data-template-id="retry-save-button" class="canva-button action bg-[#b77b29] text-white" type="button" hidden></button> <button id="restart" data-template-id="restart-button" class="canva-button action bg-[#174e59] text-white" type="button"></button>
</div>
</section>
<footer class="pt-6 text-center">
<p data-template-id="footer-text" class="canva-text"></p>
</footer>
</div>
</main>
<script>
const items = [...document.querySelectorAll('.quiz-item')];
const startScreen = document.getElementById('start-screen');
const quizScreen = document.getElementById('quiz-screen');
const resultScreen = document.getElementById('result-screen');
const submitButton = document.getElementById('submit-answer');
const nextButton = document.getElementById('next-question');
const feedback = document.getElementById('feedback');
const saveStatus = document.getElementById('save-status');
let records = [], ready = false, index = 0, selected = null, score = 0, studentName = '', attempt = 1, saved = false, saving = false, pendingRecord = null;
function showScreen(screen) {
[startScreen, quizScreen, resultScreen].forEach(el => { el.hidden = el !== screen; });
window.scrollTo({top:0, behavior:'smooth'});
}
function showQuestion() {
items.forEach((item, i) => { item.hidden = i !== index; });
selected = null;
submitButton.disabled = true;
submitButton.hidden = false;
nextButton.hidden = true;
feedback.hidden = true;
document.querySelector('[data-template-id="feedback-correct"]').hidden = true;
document.querySelector('[data-template-id="feedback-incorrect"]').hidden = true;
document.getElementById('progress-label').textContent = `Questão ${index + 1} de ${items.length}`;
document.getElementById('progress-bar').setAttribute('aria-valuenow', String(index));
document.getElementById('progress-fill').style.width = `${index / items.length * 100}%`;
items[index].querySelectorAll('.choice').forEach(button => {
button.disabled = false;
button.classList.remove('selected','correct','incorrect');
button.setAttribute('aria-pressed','false');
});
}
document.getElementById('questions').addEventListener('click', event => {
const button = event.target.closest('.choice');
if (!button || button.disabled || !button.closest('.quiz-item') || button.closest('.quiz-item').hidden) return;
selected = Number(button.dataset.option);
items[index].querySelectorAll('.choice').forEach(option => {
const active = option === button;
option.classList.toggle('selected',active);
option.setAttribute('aria-pressed',String(active));
});
submitButton.disabled = false;
});
submitButton.addEventListener('click', () => {
if (selected === null) return;
const item = items[index], answer = Number(item.dataset.answer);
const correct = selected === answer;
if (correct) score++;
item.querySelectorAll('.choice').forEach(button => {
const choice = Number(button.dataset.option);
button.disabled = true;
button.classList.remove('selected');
button.classList.toggle('correct', choice === answer);
button.classList.toggle('incorrect', choice === selected && !correct);
});
feedback.hidden = false;
feedback.className = `mt-6 rounded-xl border p-4 font-bold leading-relaxed ${correct ? 'border-[#196a45] bg-[#e4f5e9] text-[#174f35]' : 'border-[#a52d35] bg-[#fff0ed] text-[#86272d]'}`;
document.querySelector('[data-template-id="feedback-correct"]').hidden = !correct;
document.querySelector('[data-template-id="feedback-incorrect"]').hidden = correct;
submitButton.hidden = true;
nextButton.hidden = false;
});
nextButton.addEventListener('click', () => {
index++;
if (index < items.length) showQuestion();
else finish();
});
document.getElementById('start-form').addEventListener('submit', event => {
event.preventDefault();
const error = document.getElementById('start-error');
studentName = document.getElementById('student-name').value.trim().replace(/\s+/g,' ');
if (!studentName) { error.textContent = 'Informe seu nome para começar.'; error.hidden = false; return; }
if (!ready) { error.textContent = 'A planilha ainda não está disponível. Tente novamente em instantes.'; error.hidden = false; return; }
error.hidden = true;
index = 0; score = 0; showQuestion(); showScreen(quizScreen);
});
const handler = { onDataChanged(data) { records = data; } };
async function init() {
try {
const result = await window.dataSdk.init(handler);
ready = result.isOk;
if (!ready) {
const error = document.getElementById('start-error');
error.textContent = 'Não foi possível conectar à planilha do Canva. Reabra a atividade e tente novamente.';
error.hidden = false;
}
} catch (_) {
const error = document.getElementById('start-error');
error.textContent = 'Não foi possível conectar à planilha do Canva. Reabra a atividade e tente novamente.';
error.hidden = false;
}
}
function finish() {
document.getElementById('progress-bar').setAttribute('aria-valuenow',String(items.length));
const percentage = `${Math.round(score / items.length * 100)}%`;
attempt = records.filter(row => String(row.student_name || '').trim().toLocaleLowerCase('pt-BR') === studentName.toLocaleLowerCase('pt-BR')).reduce((max,row) => Math.max(max,Number(row.attempt_number) || 0),0) + 1;
document.getElementById('result-score').textContent = `${score} / ${items.length}`;
document.getElementById('result-percentage').textContent = percentage;
document.getElementById('attempt-display').textContent = `Número da tentativa: ${attempt}`;
pendingRecord = {student_name:studentName,score,percentage,attempt_number:attempt,date:new Date().toISOString()};
saved = false;
showScreen(resultScreen);
saveResult();
}
async function saveResult() {
if (saving || saved || !pendingRecord) return;
saving = true;
const retry = document.getElementById('retry-save');
retry.hidden = true;
saveStatus.textContent = 'Registrando resultado na planilha do Canva…';
try {
if (records.length >= 999) throw new Error('limit');
const result = await window.dataSdk.create(pendingRecord);
if (!result.isOk) throw new Error('write');
saved = true;
saveStatus.textContent = 'Resultado registrado na planilha do Canva.';
} catch (error) {
saveStatus.textContent = error.message === 'limit'
? 'A planilha atingiu o limite de 999 registros. O resultado não foi salvo.'
: 'Não foi possível salvar o resultado. Tente novamente.';
retry.hidden = error.message === 'limit';
} finally { saving = false; }
}
document.getElementById('retry-save').addEventListener('click',saveResult);
document.getElementById('restart').addEventListener('click', () => {
pendingRecord = null;
saving = false;
showScreen(startScreen);
document.getElementById('student-name').focus();
});
init();
</script>
</body>
</html>24,818 chars · codepastes.com