stats step 3: elections, party positions and opinion feeds (schema, collectors, timers); world-opinions data moved into stats.wo_*
All checks were successful
Deploy production / deploy (push) Successful in 1m12s

This commit is contained in:
2026-10-25 22:16:25 +00:00
parent 030f3c08ee
commit 42c9351ebd
37 changed files with 75721 additions and 892 deletions

View File

@@ -0,0 +1,4 @@
import { loadWorldOpinions } from '#lib/server/world-opinions.js';
import type { PageServerLoad } from './$types';
export const load: PageServerLoad = async () => ({ wo: await loadWorldOpinions() });

View File

@@ -5,9 +5,14 @@
import CultureMap from '#lib/world-opinions/CultureMap.svelte';
import PartyCompass from '#lib/world-opinions/PartyCompass.svelte';
import WorldMap, { type MapMode } from '#lib/world-opinions/WorldMap.svelte';
import { countries, countryById, narratives, sources } from '#lib/world-opinions/data.js';
import { buildWorldOpinions, provideWorldOpinions } from '#lib/world-opinions/data.js';
import { Button } from '#lib/components/ui/button/index.js';
let { data } = $props();
// Static per load (stats.wo_*), so it is read once and shared with the components.
const wo = provideWorldOpinions(buildWorldOpinions(data.wo));
const { countries, countryById, narratives, sources } = wo;
const modes: { id: MapMode; label: string }[] = [
{ id: 'liberal', label: 'what "liberal" means' },
{ id: 'divide', label: 'what left vs right is about' },