ai generated solutions to our ai generated problems

This commit is contained in:
Heidi
2026-06-20 01:26:10 +01:00
parent a10b6fe657
commit eca52ca078
2 changed files with 49 additions and 30 deletions
+8 -8
View File
@@ -845,8 +845,8 @@ fn team_summary_for(conn: &Connection, team_name: &str) -> Result<TeamSummary, A
conn.query_row(
"SELECT
COUNT(DISTINCT session_id),
SUM(CASE WHEN victor_bool = 'Win' THEN 1 ELSE 0 END),
SUM(CASE WHEN victor_bool != 'Win' THEN 1 ELSE 0 END),
COUNT(DISTINCT CASE WHEN victor_bool = 'Win' THEN session_id END),
COUNT(DISTINCT CASE WHEN victor_bool != 'Win' THEN session_id END),
COALESCE(SUM(ground_kills), 0),
COALESCE(SUM(air_kills), 0),
COALESCE(SUM(assists), 0),
@@ -898,8 +898,8 @@ fn team_summaries_for(
"SELECT
team_name,
COUNT(DISTINCT session_id),
SUM(CASE WHEN victor_bool = 'Win' THEN 1 ELSE 0 END),
SUM(CASE WHEN victor_bool != 'Win' THEN 1 ELSE 0 END),
COUNT(DISTINCT CASE WHEN victor_bool = 'Win' THEN session_id END),
COUNT(DISTINCT CASE WHEN victor_bool != 'Win' THEN session_id END),
COALESCE(SUM(ground_kills), 0),
COALESCE(SUM(air_kills), 0),
COALESCE(SUM(assists), 0),
@@ -999,8 +999,8 @@ fn player_summaries_for(
"SELECT
UID,
COUNT(DISTINCT session_id),
SUM(CASE WHEN victor_bool = 'Win' THEN 1 ELSE 0 END),
SUM(CASE WHEN victor_bool != 'Win' THEN 1 ELSE 0 END),
COUNT(DISTINCT CASE WHEN victor_bool = 'Win' THEN session_id END),
COUNT(DISTINCT CASE WHEN victor_bool != 'Win' THEN session_id END),
COALESCE(SUM(ground_kills), 0),
COALESCE(SUM(air_kills), 0),
COALESCE(SUM(assists), 0),
@@ -1336,8 +1336,8 @@ fn period_history_for(conn: &Connection, team_name: &str) -> Result<Vec<PeriodHi
"SELECT
strftime('%Y-%m', endtime_unix, 'unixepoch') AS period,
COUNT(DISTINCT session_id),
SUM(CASE WHEN victor_bool = 'Win' THEN 1 ELSE 0 END),
SUM(CASE WHEN victor_bool != 'Win' THEN 1 ELSE 0 END)
COUNT(DISTINCT CASE WHEN victor_bool = 'Win' THEN session_id END),
COUNT(DISTINCT CASE WHEN victor_bool != 'Win' THEN session_id END)
FROM player_games_hist
WHERE team_name = ?1 COLLATE NOCASE AND endtime_unix > 0
GROUP BY period
+41 -22
View File
@@ -54,25 +54,43 @@ const siteGateEnabled = String(import.meta.env.VITE_SITE_GATE || 'false').toLowe
const staticDataBase = (import.meta.env.VITE_STATIC_DATA_BASE || '/data').replace(/\/+$/, '')
const staticDataEnabled = String(import.meta.env.VITE_STATIC_DATA || 'false').toLowerCase() === 'true'
const missingStaticDataPaths = new Set()
const pixelSunSvg = `data:image/svg+xml,${encodeURIComponent(`
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" shape-rendering="crispEdges">
<rect width="16" height="16" fill="none"/>
<path fill="currentColor" d="M5 1h6v1h2v2h1v2h1v4h-1v2h-1v2h-2v1H5v-1H3v-2H2v-2H1V6h1V4h1V2h2z"/>
<path fill="var(--sprite-light)" d="M5 3h5v1h2v2h1v3h-1v2h-2v1H5v-1H4V9H3V6h1V4h1z"/>
<path fill="var(--sprite-shine)" d="M5 3h3v1h2v2H8v1H5z"/>
<path fill="var(--sprite-shadow)" d="M11 9h2v2h-2v1H6v-1h3v-1h2z"/>
</svg>
`)}`
const pixelMoonSvg = `data:image/svg+xml,${encodeURIComponent(`
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" shape-rendering="crispEdges">
<rect width="16" height="16" fill="none"/>
<path fill="var(--sprite-light)" d="M7 1h5v1h2v2h1v7h-1v2h-2v1H6v-1H4v-2H3V5h1V3h3z"/>
<path fill="var(--sprite-mid)" d="M5 4h2v2H5zm5-1h2v1h1v2h-2V5h-1zm-4 6h2v2H6zm4 2h3v1h-1v1h-2zM4 7h1v3H4z"/>
<path fill="var(--sprite-shadow)" d="M5 10h1v2h2v1H6v-1H5zm7-5h1v2h-2V6h1zM8 3h1v2H7V4h1z"/>
<path fill="currentColor" d="M7 0h5v1h2v1h1v2h1v7h-1v2h-1v1h-2v1H6v-1H4v-1H3v-2H2V5h1V3h1V2h3zm0 1v1H5v1H4v2H3v6h1v2h2v1h6v-1h2v-2h1V4h-1V2h-2V1z"/>
<path fill="var(--sprite-shine)" d="M6 3h2v1H7v2H5V5h1zm4 4h2v1h1v1h-3zM8 11h1v1H7v-1z"/>
</svg>
`)}`
// Rendered inline (not via <img src="data:...">) so the SVGs live in the page's
// CSS scope and can resolve currentColor and the --sprite-* / --color-* theme
// variables. An external SVG image renders in an isolated document and would
// fall back to black for every themed fill.
function PixelSun(props) {
return (
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 16 16"
shapeRendering="crispEdges"
{...props}
>
<rect width="16" height="16" fill="none" />
<path fill="currentColor" d="M5 1h6v1h2v2h1v2h1v4h-1v2h-1v2h-2v1H5v-1H3v-2H2v-2H1V6h1V4h1V2h2z" />
<path fill="var(--sprite-light)" d="M5 3h5v1h2v2h1v3h-1v2h-2v1H5v-1H4V9H3V6h1V4h1z" />
<path fill="var(--sprite-shine)" d="M5 3h3v1h2v2H8v1H5z" />
<path fill="var(--sprite-shadow)" d="M11 9h2v2h-2v1H6v-1h3v-1h2z" />
</svg>
)
}
function PixelMoon(props) {
return (
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 16 16"
shapeRendering="crispEdges"
{...props}
>
<rect width="16" height="16" fill="none" />
<path fill="var(--sprite-light)" d="M7 1h5v1h2v2h1v7h-1v2h-2v1H6v-1H4v-2H3V5h1V3h3z" />
<path fill="var(--sprite-mid)" d="M5 4h2v2H5zm5-1h2v1h1v2h-2V5h-1zm-4 6h2v2H6zm4 2h3v1h-1v1h-2zM4 7h1v3H4z" />
<path fill="var(--sprite-shadow)" d="M5 10h1v2h2v1H6v-1H5zm7-5h1v2h-2V6h1zM8 3h1v2H7V4h1z" />
<path fill="currentColor" d="M7 0h5v1h2v1h1v2h1v7h-1v2h-1v1h-2v1H6v-1H4v-1H3v-2H2V5h1V3h1V2h3zm0 1v1H5v1H4v2H3v6h1v2h2v1h6v-1h2v-2h1V4h-1V2h-2V1z" />
<path fill="var(--sprite-shine)" d="M6 3h2v1H7v2H5V5h1zm4 4h2v1h1v1h-3zM8 11h1v1H7v-1z" />
</svg>
)
}
const defaultAnalyticsPreferences = {
chosen: false,
@@ -2900,9 +2918,9 @@ function PixelMountains() {
ref={skyRef}
style={skyPaths}
>
<img alt="" className="pixel-sun" src={pixelSunSvg} />
<PixelSun className="pixel-sun" aria-hidden="true" />
<span className="pixel-moon-group">
<img alt="" className="pixel-moon" src={pixelMoonSvg} />
<PixelMoon className="pixel-moon" aria-hidden="true" />
<span className="pixel-star pixel-star-a" />
<span className="pixel-star pixel-star-b" />
<span className="pixel-star pixel-star-c" />
@@ -3063,10 +3081,11 @@ function TeamProfilePage({ navigate, profile, requestedTeam, teams }) {
</div>
</div>
<div className="mt-6 grid gap-5 sm:grid-cols-2 xl:grid-cols-4">
<div className="mt-6 grid gap-5 sm:grid-cols-2 xl:grid-cols-5">
<Stat label="Roster" value={formatNumber(summary?.player_count)} />
<Stat label="Battles" value={formatNumber(summary?.total_battles)} />
<Stat label="Wins" value={formatNumber(summary?.wins)} />
<Stat label="Win rate" value={`${Number(summary?.win_rate || 0).toFixed(1)}%`} />
<Stat label="KDR" value={Number(summary?.kdr || 0).toFixed(1)} />
</div>
</div>