From 431dda453be2ce4b08cb623dd37d4dc329c1b40d Mon Sep 17 00:00:00 2001 From: Yaro Kasear Date: Mon, 18 Aug 2025 09:56:00 -0500 Subject: [PATCH] Update coffee route and template to include score tracking --- inventory/routes/index.py | 4 ++-- inventory/templates/coffee.html | 22 +++++++++++++++------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/inventory/routes/index.py b/inventory/routes/index.py index 5cebe20..797b3c9 100644 --- a/inventory/routes/index.py +++ b/inventory/routes/index.py @@ -33,9 +33,9 @@ def generate_solvable_matrix(level, seed_clicks=None): @main.route("/12648243") def coffee(): level = request.args.get('level', 0, int) + score = request.args.get('score', 0, int) matrix, clicked = generate_solvable_matrix(level) - best_score = len([x for x in clicked if not (len(clicked) % 2)]) - return render_template("coffee.html", matrix=matrix, level=level, clicked=clicked, best_score=best_score) + return render_template("coffee.html", matrix=matrix, level=level, clicked=clicked, score=score) @main.route("/playground") def playground(): diff --git a/inventory/templates/coffee.html b/inventory/templates/coffee.html index 2b8c0d5..4ae9b20 100644 --- a/inventory/templates/coffee.html +++ b/inventory/templates/coffee.html @@ -7,7 +7,11 @@ {% endblock %} {% block precontent %} -
+ {{ toolbars.render_toolbar( + id = 'score', + left = 'Loading...' | safe, + right= ('Score: ' + score|string + '') | safe + ) }} {% endblock %} {% block content %} @@ -27,6 +31,7 @@ {% endblock %} {% block script %} + var score = {{ score }}; const gridSize = {{ level + 3 }}; var clickOrder = {}; var clickCounter = 0; @@ -43,9 +48,7 @@ .reduce((n, arr) => n + (arr.length & 1), 0); - document.getElementById('best_score').textContent = `Best Score: ${bestScore}`; - console.log(clickOrder, bestScore); - + document.getElementById('best_score').textContent = `Perfect Clicks: ${bestScore}`; Object.entries(clickOrder).forEach(([key, value]) => { const light = document.querySelector(`#light-${key}`); @@ -71,8 +74,13 @@ light.addEventListener('click', function() { const [x, y] = this.id.split('-').slice(1).map(Number); const checkbox = document.querySelector(`#checkbox-${x}-${y}`); + ++score; + document.getElementById('current_score').textContent = `Score: ${score}`; - checkbox.click(); + // Toggle manually + checkbox.checked = !checkbox.checked; + // Fire a non-bubbling change so it won't climb back to .light + checkbox.dispatchEvent(new Event('change')); updateLights(); }); }); @@ -99,10 +107,10 @@ const allUnchecked = Array.from(document.querySelectorAll('.form-check-input')).every(cb => !cb.checked); if (allChecked && !window.__alreadyNavigated && {{ level }} < 51) { window.__alreadyNavigated = true; - location.href = "{{ url_for('main.coffee', level=level + 1) }}"; + location.href = `{{ url_for('main.coffee', level=level + 1) | safe }}&score=${score - bestScore}`; } else if (allUnchecked && !window.__alreadyNavigated && {{ level }} > -2) { window.__alreadyNavigated = true; - location.href = "{{ url_for('main.coffee', level=level - 1) }}"; + location.href = `{{ url_for('main.coffee', level=level - 1) | safe }}&score=${score + bestScore}`; } }); });