feat: wateren integreren in dagelijkse uitdaging en bonus level #31

Closed
opened 2026-04-03 20:11:33 +02:00 by Ghost · 3 comments
Ghost commented 2026-04-03 20:11:33 +02:00 (Migrated from codeberg.org)

Beschrijving

Set 57 (Wateren) is nu een apart level met eigen quizType water. De dagelijkse uitdaging (set 98) en het bonus level (set 99) gebruiken momenteel alleen ALL_CITIES — wateren zijn daar niet in opgenomen.

Gewenst gedrag

  • Dagelijkse uitdaging: mix van steden én wateren (bijv. 8 steden + 2 wateren, of volledig willekeurig uit beide pools)
  • Bonus level: mix van steden én wateren

Technische overwegingen

  • dailyCities() pikt nu uit ALL_CITIES — moet uitgebreid worden met ALL_WATERS
  • Water-items hebben geen pop of marker — de rendering moet daar rekening mee houden (highlight op GeoJSON ipv stip)
  • De nearbyDistractors() functie moet zinvol werken als er zowel steden als wateren in de pool zitten (afleiders van hetzelfde type?)
  • wateren.geojson moet geladen zijn voordat een water-item getoond kan worden in daily/bonus context

Acceptatiecriteria

  • Dagelijkse uitdaging bevat af en toe wateren
  • Bonus level bevat af en toe wateren
  • Rendering wisselt correct tussen stip (stad) en highlight (water) per vraag
  • Afleiders zijn logisch (niet steden mengen met wateren als opties)
## Beschrijving Set 57 (Wateren) is nu een apart level met eigen quizType `water`. De dagelijkse uitdaging (set 98) en het bonus level (set 99) gebruiken momenteel alleen `ALL_CITIES` — wateren zijn daar niet in opgenomen. ## Gewenst gedrag - **Dagelijkse uitdaging:** mix van steden én wateren (bijv. 8 steden + 2 wateren, of volledig willekeurig uit beide pools) - **Bonus level:** mix van steden én wateren ## Technische overwegingen - `dailyCities()` pikt nu uit `ALL_CITIES` — moet uitgebreid worden met `ALL_WATERS` - Water-items hebben geen `pop` of `marker` — de rendering moet daar rekening mee houden (highlight op GeoJSON ipv stip) - De `nearbyDistractors()` functie moet zinvol werken als er zowel steden als wateren in de pool zitten (afleiders van hetzelfde type?) - `wateren.geojson` moet geladen zijn voordat een water-item getoond kan worden in daily/bonus context ## Acceptatiecriteria - [ ] Dagelijkse uitdaging bevat af en toe wateren - [ ] Bonus level bevat af en toe wateren - [ ] Rendering wisselt correct tussen stip (stad) en highlight (water) per vraag - [ ] Afleiders zijn logisch (niet steden mengen met wateren als opties)
Ghost commented 2026-04-04 10:31:17 +02:00 (Migrated from codeberg.org)

Impactanalyse

Complexiteit: Middelgroot

Wat moet er gebeuren

  1. dailyCities() uitbreiden met ALL_WATERS — relatief simpel
  2. Rendering per vraag switchen — bij elke vraag beslissen: stip (stad) of GeoJSON highlight (water). Raakt de hele vraag-flow (marker placement, feedback, scoring).
  3. wateren.geojson proactief laden — nu alleen geladen bij set 57. In daily/bonus context moet dit bij app-start of lazy bij eerste water-vraag.
  4. nearbyDistractors() aanpassen — MC-opties mogen niet steden met wateren mixen. Afleiders moeten van hetzelfde type zijn.

Risico's

  • Rendering-switch introduceert conditionele logica door de hele quiz-loop
  • GeoJSON laden kan falen → fallback nodig als water-item aan de beurt is
  • Testdekking moet flink uitgebreid: dagelijkse uitdaging + bonus met gemixte pools

Inschatting

Niet een quick win. Meerdere lagen van de app worden geraakt (data, rendering, quiz-logica, tests).

## Impactanalyse **Complexiteit: Middelgroot** ### Wat moet er gebeuren 1. **`dailyCities()` uitbreiden** met `ALL_WATERS` — relatief simpel 2. **Rendering per vraag switchen** — bij elke vraag beslissen: stip (stad) of GeoJSON highlight (water). Raakt de hele vraag-flow (marker placement, feedback, scoring). 3. **`wateren.geojson` proactief laden** — nu alleen geladen bij set 57. In daily/bonus context moet dit bij app-start of lazy bij eerste water-vraag. 4. **`nearbyDistractors()` aanpassen** — MC-opties mogen niet steden met wateren mixen. Afleiders moeten van hetzelfde type zijn. ### Risico's - Rendering-switch introduceert conditionele logica door de hele quiz-loop - GeoJSON laden kan falen → fallback nodig als water-item aan de beurt is - Testdekking moet flink uitgebreid: dagelijkse uitdaging + bonus met gemixte pools ### Inschatting Niet een quick win. Meerdere lagen van de app worden geraakt (data, rendering, quiz-logica, tests).
Ghost commented 2026-04-14 23:10:56 +02:00 (Migrated from codeberg.org)

Samengevoegd met #63. De scope van deze issue (wateren in daily/bonus) is daar opgenomen als onderdeel van de bredere 'daily/bonus per groep' feature — eenmaal de pool per-groep wordt opgebouwd moet die automatisch alle item-types uit die groep kunnen bevatten, niet alleen steden. Zie https://github.com/jelmerkk/topoquiz/issues/63#issuecomment-4247175430 voor de gecombineerde scope.

Samengevoegd met #63. De scope van deze issue (wateren in daily/bonus) is daar opgenomen als onderdeel van de bredere 'daily/bonus per groep' feature — eenmaal de pool per-groep wordt opgebouwd moet die automatisch alle item-types uit die groep kunnen bevatten, niet alleen steden. Zie https://github.com/jelmerkk/topoquiz/issues/63#issuecomment-4247175430 voor de gecombineerde scope.
Ghost commented 2026-04-15 11:17:59 +02:00 (Migrated from codeberg.org)

Scope opgenomen in #80 (redesign bonus + daily voor alle primitieven). Deze issue blijft closed.

Scope opgenomen in #80 (redesign bonus + daily voor alle primitieven). Deze issue blijft closed.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
jelmer/topoquiz#31
No description provided.