some error debugging and for frontend thicker lines around blocks

This commit is contained in:
jenz
2026-08-24 12:59:16 +02:00
parent 1ae342151e
commit 9c4c02c532
13 changed files with 27 additions and 15 deletions
@@ -62,7 +62,7 @@ export default async function CountryPlayersPage({
</div>
</div>
<div className="panel divide-y divide-base-border">
<div className="panel row-divide">
{players.map((p) => (
<Link
key={p.steamid}
@@ -22,7 +22,7 @@ export default async function CountriesPage() {
{countries.length === 0 ? (
<div className="panel p-6 text-sm text-ink-muted">No countries recorded yet.</div>
) : (
<div className="panel divide-y divide-base-border">
<div className="panel row-divide">
<div className="grid grid-cols-[1fr_auto_auto] gap-6 px-4 py-2 text-xs text-ink-faint uppercase tracking-wide">
<div>Country</div>
<div className="text-right w-24">Total playtime</div>
@@ -45,4 +45,12 @@
.row-interactive:hover {
background-color: rgba(63, 211, 122, 0.05);
}
/* Clearly visible separation between stacked list rows — a plain 1px
divide-y read as almost invisible once rows have very different
heights (e.g. a session with 15 map names next to one with 2). */
.row-divide > * + * {
border-top-width: 2px;
border-top-color: theme('colors.base.divider');
}
}
@@ -35,7 +35,7 @@ export default async function MapPeriodsPage({
</p>
</div>
<div className="panel divide-y divide-base-border">
<div className="panel row-divide">
<div className="grid grid-cols-[1fr_auto_auto] gap-4 px-4 py-2 text-xs text-ink-faint uppercase tracking-wide">
<div>Session</div>
<div className="text-right w-16">Players</div>
@@ -107,7 +107,7 @@ export default async function MapPeriodDetailPage({
{players.length === 0 ? (
<div className="text-sm text-ink-muted">No recorded players during this period.</div>
) : (
<div className="divide-y divide-base-border">
<div className="row-divide">
{players.map((p, i) => (
<Link
key={`${p.steamid}-${i}`}
@@ -145,7 +145,7 @@ export default async function MapPeriodDetailPage({
</div>
<div className="text-sm text-accent">Result: {event.result ?? '—'}</div>
</div>
<div className="divide-y divide-base-border">
<div className="row-divide">
{event.choices.map((c, i) => (
<Link
key={`${c.steamid}-${i}`}
@@ -123,7 +123,7 @@ export default async function PlayerDetailPage({
{sessions.length === 0 ? (
<div className="text-sm text-ink-muted">No recorded sessions yet.</div>
) : (
<div className="divide-y divide-base-border">
<div className="row-divide">
<div className="grid grid-cols-[1fr_1fr_100px] gap-4 pb-2 text-xs text-ink-faint uppercase tracking-wide">
<div>Started</div>
<div>Map(s)</div>
@@ -366,7 +366,7 @@ export default function MapPopulationChart() {
)}
{selectedMap && (
<div className="mt-4 pt-4 border-t border-base-border">
<div className="mt-4 pt-4 border-t-2 border-base-divider">
<div className="stat-label mb-1">
Players during{' '}
<Link href={`/maps/period/${selectedMap.map_id}`} className="text-accent hover:underline">
@@ -38,7 +38,7 @@ export default function MapSearch() {
className="w-full bg-base-panel border border-base-border rounded-lg px-4 py-3 text-ink placeholder:text-ink-faint focus:border-accent/50 transition-colors"
/>
<div className="panel divide-y divide-base-border">
<div className="panel row-divide">
{loading ? (
<div className="p-4 text-sm text-ink-faint font-mono">loading</div>
) : maps.length === 0 ? (
@@ -52,7 +52,7 @@ export default function PlayerSearch() {
</select>
</div>
<div className="panel divide-y divide-base-border">
<div className="panel row-divide">
{loading ? (
<div className="p-4 text-sm text-ink-faint font-mono">loading</div>
) : players.length === 0 ? (
@@ -370,7 +370,7 @@ export default function PopulationChart() {
return (
<div className="panel p-6">
{/* Currently online — always visible, always live, not tied to the date range below */}
<div className="mb-6 pb-6 border-b border-base-border">
<div className="mb-6 pb-6 border-b-2 border-base-divider">
<div className="flex items-center justify-between mb-3">
<div className="flex items-center gap-2">
<span className="relative flex w-2 h-2">
@@ -553,7 +553,7 @@ export default function PopulationChart() {
</div>
{selectedPoint && (
<div className="mt-4 pt-4 border-t border-base-border">
<div className="mt-4 pt-4 border-t-2 border-base-divider">
<div className="stat-label mb-3">
Online at {new Date(selectedPoint.t).toLocaleString()}
{selectedPoint.mapName && (
@@ -279,7 +279,7 @@ export default function RecurringWindowChart() {
)}
{selected && (
<div className="mt-4 pt-4 border-t border-base-border">
<div className="mt-4 pt-4 border-t-2 border-base-divider">
<div className="stat-label mb-3">
{new Date(`${selected.date}T00:00:00Z`).toLocaleDateString(undefined, { weekday: 'long', month: 'short', day: 'numeric' })}, {startTime}{endTime} — {selectedPlayers.length} player
{selectedPlayers.length === 1 ? '' : 's'}, sorted by time spent in the window
@@ -11,6 +11,7 @@ module.exports = {
DEFAULT: '#0B0F0E', // near-black, slight green cast — server-ops feel
panel: '#121715',
border: '#1F2723',
divider: '#3C4A44', // brighter, deliberately higher-contrast — for separating list rows, not just outlining a panel
},
accent: {
DEFAULT: '#3FD37A', // "server online" green
@@ -102,8 +102,9 @@ public void select_user_session(int client)
public void SQL_FinishedQuerySelectUserSession(Database db, DBResultSet results, const char[] error, int Serial)
{
if (!db)
if (!db || strlen(error))
{
LogError("Query error 3: %s", error);
delete results;
return;
}
@@ -168,8 +169,9 @@ public void upsert_player(int client)
public void SQL_FinishedQueryUpsertPlayerCallback(Database db, DBResultSet results, const char[] error, int Serial)
{
if (!db)
if (!db || strlen(error))
{
LogError("Query error 3: %s", error);
delete results;
return;
}
@@ -205,8 +207,9 @@ public void upsert_name_history(int client)
public void SQL_FinishedQueryUpsertNameHistoryCallback(Database db, DBResultSet results, const char[] error, int Serial)
{
if (!db)
if (!db || strlen(error))
{
LogError("Query error 3: %s", error);
delete results;
return;
}