Files
sports-division/userguide.html
2026-03-01 15:14:42 -04:00

1169 lines
52 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Dominica Sports Division - User Guide</title>
<style>
:root {
--navy: #003366;
--navy-light: #004080;
--gold: #FFD700;
--gold-dark: #CCA800;
--bg: #f4f6f9;
--text: #333;
--text-light: #666;
--border: #dee2e6;
--white: #fff;
--admin: #dc3545;
--official: #0d6efd;
--coach: #198754;
--principal: #6f42c1;
--student: #fd7e14;
}
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
color: var(--text);
background: var(--bg);
line-height: 1.6;
}
/* ── Header ─────────────────────── */
.hero {
background: linear-gradient(135deg, var(--navy) 0%, var(--navy-light) 100%);
color: var(--white);
padding: 3rem 2rem;
text-align: center;
}
.hero h1 { font-size: 2.2rem; margin-bottom: 0.5rem; }
.hero .subtitle { font-size: 1.1rem; opacity: 0.85; }
.hero .version {
display: inline-block;
margin-top: 1rem;
background: rgba(255,255,255,0.15);
padding: 0.25rem 0.75rem;
border-radius: 1rem;
font-size: 0.8rem;
}
/* ── Layout ─────────────────────── */
.container { max-width: 960px; margin: 0 auto; padding: 2rem 1.5rem; }
/* ── Navigation ─────────────────── */
.toc {
background: var(--white);
border-radius: 0.5rem;
padding: 1.5rem 2rem;
margin-bottom: 2rem;
box-shadow: 0 1px 4px rgba(0,0,0,0.06);
}
.toc h2 {
font-size: 1.1rem;
color: var(--navy);
margin-bottom: 1rem;
padding-bottom: 0.5rem;
border-bottom: 2px solid var(--gold);
}
.toc ol { padding-left: 1.25rem; }
.toc li { margin-bottom: 0.35rem; }
.toc a {
color: var(--navy-light);
text-decoration: none;
font-weight: 500;
}
.toc a:hover { text-decoration: underline; color: var(--navy); }
/* ── Sections ───────────────────── */
.section {
background: var(--white);
border-radius: 0.5rem;
padding: 2rem;
margin-bottom: 1.5rem;
box-shadow: 0 1px 4px rgba(0,0,0,0.06);
}
.section h2 {
font-size: 1.4rem;
color: var(--navy);
margin-bottom: 0.25rem;
padding-bottom: 0.5rem;
border-bottom: 3px solid var(--gold);
}
.section h3 {
font-size: 1.1rem;
color: var(--navy);
margin-top: 1.5rem;
margin-bottom: 0.5rem;
}
.section h4 {
font-size: 0.95rem;
color: var(--navy-light);
margin-top: 1.25rem;
margin-bottom: 0.4rem;
}
.section p { margin-bottom: 0.75rem; }
.section ul, .section ol {
margin-bottom: 0.75rem;
padding-left: 1.5rem;
}
.section li { margin-bottom: 0.3rem; }
/* ── Role badges ────────────────── */
.role-badge {
display: inline-block;
padding: 0.15rem 0.55rem;
border-radius: 0.25rem;
font-size: 0.75rem;
font-weight: 700;
color: var(--white);
vertical-align: middle;
}
.role-admin { background: var(--admin); }
.role-official { background: var(--official); }
.role-coach { background: var(--coach); }
.role-principal { background: var(--principal); }
.role-student { background: var(--student); }
.role-all { background: var(--navy); }
/* ── Role cards ─────────────────── */
.role-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
gap: 1rem;
margin-top: 1rem;
}
.role-card {
border: 1px solid var(--border);
border-radius: 0.5rem;
padding: 1.25rem;
border-top: 4px solid var(--navy);
}
.role-card.admin { border-top-color: var(--admin); }
.role-card.official { border-top-color: var(--official); }
.role-card.coach { border-top-color: var(--coach); }
.role-card.principal { border-top-color: var(--principal); }
.role-card.student { border-top-color: var(--student); }
.role-card h4 { margin-top: 0; font-size: 1rem; }
.role-card p { font-size: 0.9rem; color: var(--text-light); margin-bottom: 0.5rem; }
.role-card ul { font-size: 0.9rem; padding-left: 1.25rem; margin: 0; }
.role-card li { margin-bottom: 0.2rem; }
/* ── Steps ──────────────────────── */
.steps { counter-reset: step; list-style: none; padding-left: 0; }
.steps li {
counter-increment: step;
position: relative;
padding-left: 2.5rem;
margin-bottom: 1rem;
}
.steps li::before {
content: counter(step);
position: absolute;
left: 0; top: 0;
width: 1.75rem; height: 1.75rem;
background: var(--navy);
color: var(--white);
border-radius: 50%;
font-size: 0.8rem;
font-weight: 700;
display: flex;
align-items: center;
justify-content: center;
}
.steps li strong { color: var(--navy); }
/* ── Status flow ────────────────── */
.status-flow {
display: flex;
align-items: center;
flex-wrap: wrap;
gap: 0.5rem;
margin: 1rem 0;
}
.status-pill {
padding: 0.3rem 0.75rem;
border-radius: 1rem;
font-size: 0.8rem;
font-weight: 600;
color: var(--white);
}
.status-draft { background: #6c757d; }
.status-registration { background: #0dcaf0; color: #000; }
.status-inprogress { background: #0d6efd; }
.status-completed { background: #198754; }
.status-archived { background: #333; }
.arrow { color: var(--text-light); font-weight: 700; font-size: 1.1rem; }
/* ── Tables ─────────────────────── */
table {
width: 100%;
border-collapse: collapse;
margin: 1rem 0;
font-size: 0.9rem;
}
th {
background: var(--navy);
color: var(--white);
padding: 0.6rem 0.75rem;
text-align: left;
font-weight: 600;
}
td {
padding: 0.5rem 0.75rem;
border-bottom: 1px solid var(--border);
vertical-align: top;
}
tr:hover td { background: rgba(0,51,102,0.03); }
/* ── Callouts ───────────────────── */
.callout {
padding: 0.75rem 1rem;
border-radius: 0.375rem;
margin: 1rem 0;
font-size: 0.9rem;
}
.callout-info {
background: #e7f1ff;
border-left: 4px solid #0d6efd;
}
.callout-warning {
background: #fff3cd;
border-left: 4px solid #ffc107;
}
.callout-tip {
background: #d1e7dd;
border-left: 4px solid #198754;
}
.callout strong { display: block; margin-bottom: 0.2rem; }
/* ── Key combo ──────────────────── */
kbd {
background: #eee;
border: 1px solid #ccc;
border-radius: 3px;
padding: 0.1rem 0.35rem;
font-size: 0.85em;
font-family: inherit;
}
/* ── Sidebar diagram ────────────── */
.sidebar-diagram {
background: var(--navy);
color: rgba(255,255,255,0.85);
border-radius: 0.5rem;
padding: 1.25rem;
font-family: monospace;
font-size: 0.85rem;
line-height: 1.8;
max-width: 300px;
margin: 1rem 0;
}
.sidebar-diagram .heading {
color: rgba(255,255,255,0.4);
font-size: 0.7rem;
text-transform: uppercase;
letter-spacing: 1px;
}
.sidebar-diagram .active {
color: var(--white);
border-left: 3px solid var(--gold);
padding-left: 0.5rem;
}
.sidebar-diagram .item { padding-left: 0.75rem; }
.sidebar-diagram .admin-only { color: rgba(255,255,255,0.4); font-style: italic; }
/* ── Print ──────────────────────── */
@media print {
.hero { padding: 1.5rem; }
.section { box-shadow: none; border: 1px solid #ddd; break-inside: avoid; }
body { background: white; }
}
/* ── Responsive ─────────────────── */
@media (max-width: 600px) {
.hero h1 { font-size: 1.6rem; }
.container { padding: 1rem; }
.section { padding: 1.25rem; }
.status-flow { flex-direction: column; align-items: flex-start; }
.role-grid { grid-template-columns: 1fr; }
}
</style>
</head>
<body>
<!-- ================================================================== -->
<!-- HEADER -->
<!-- ================================================================== -->
<div class="hero">
<h1>Dominica Sports Division</h1>
<div class="subtitle">School Athletics Tournament Management System &mdash; User Guide</div>
<div class="version">Version 1.0 &bull; February 2026</div>
</div>
<div class="container">
<!-- ================================================================== -->
<!-- TABLE OF CONTENTS -->
<!-- ================================================================== -->
<div class="toc">
<h2>Table of Contents</h2>
<ol>
<li><a href="#getting-started">Getting Started</a></li>
<li><a href="#roles">Roles &amp; Permissions</a></li>
<li><a href="#navigation">Navigating the Application</a></li>
<li><a href="#dashboard">Dashboard</a></li>
<li><a href="#tournaments">Tournament Management</a></li>
<li><a href="#schools">School Management</a></li>
<li><a href="#students">Student Management</a></li>
<li><a href="#events">Event Configuration</a></li>
<li><a href="#registration">Registration</a></li>
<li><a href="#scoring-track">Scoring: Track Events</a></li>
<li><a href="#scoring-field">Scoring: Field Events</a></li>
<li><a href="#scoring-highjump">Scoring: High Jump</a></li>
<li><a href="#reports">Reports</a></li>
<li><a href="#user-management">User Management (Admin)</a></li>
<li><a href="#scoring-config">Scoring Configuration (Admin)</a></li>
<li><a href="#quickref">Quick Reference by Role</a></li>
</ol>
</div>
<!-- ================================================================== -->
<!-- 1. GETTING STARTED -->
<!-- ================================================================== -->
<div class="section" id="getting-started">
<h2>1. Getting Started</h2>
<h3>Logging In</h3>
<ol class="steps">
<li>Open the application in your web browser. You will see the home page with a <strong>Sign In</strong> button.</li>
<li>Click <strong>Sign In</strong> to go to the login page.</li>
<li>Enter your <strong>Email</strong> and <strong>Password</strong> provided by your administrator.</li>
<li>Optionally check <strong>Remember Me</strong> to stay logged in between sessions.</li>
<li>Click <strong>Login</strong>. You will be taken to the Dashboard.</li>
</ol>
<div class="callout callout-info">
<strong>First-time users</strong>
Your account is created by an administrator. If you do not have login credentials, contact your system administrator.
</div>
<h3>Logging Out</h3>
<p>Click your name or initials in the top-right corner of the screen, then select <strong>Logout</strong> from the dropdown menu.</p>
<h3>Access Denied</h3>
<p>If you try to access a page you don't have permission for, you will see an "Access Denied" message. This means the feature is restricted to a different role. Contact your administrator if you believe this is an error.</p>
</div>
<!-- ================================================================== -->
<!-- 2. ROLES -->
<!-- ================================================================== -->
<div class="section" id="roles">
<h2>2. Roles &amp; Permissions</h2>
<p>The system has five user roles. Each role determines what features you can access. Every authenticated user can view the Dashboard, manage tournaments, schools, students, events, registrations, scoring, and reports. Administrative features are restricted to the Admin role.</p>
<div class="role-grid">
<div class="role-card admin">
<h4><span class="role-badge role-admin">Admin</span> Administrator</h4>
<p>Full system access including user and scoring configuration management.</p>
<ul>
<li>All standard features</li>
<li>Create &amp; manage user accounts</li>
<li>Configure scoring constants</li>
<li>Modify placement point values</li>
</ul>
</div>
<div class="role-card official">
<h4><span class="role-badge role-official">Official</span> Sports Official</h4>
<p>Manages tournaments, records scores, and generates reports.</p>
<ul>
<li>Create &amp; manage tournaments</li>
<li>Record track, field, and high jump scores</li>
<li>Manage registrations</li>
<li>Generate all reports</li>
</ul>
</div>
<div class="role-card coach">
<h4><span class="role-badge role-coach">Coach</span> School Coach</h4>
<p>Manages students and registrations for their school.</p>
<ul>
<li>View tournaments &amp; events</li>
<li>Register students for events</li>
<li>View scores &amp; reports</li>
<li>Manage student information</li>
</ul>
</div>
<div class="role-card principal">
<h4><span class="role-badge role-principal">Principal</span> School Principal</h4>
<p>Oversees school participation and reviews results.</p>
<ul>
<li>View tournaments &amp; events</li>
<li>Monitor school registrations</li>
<li>View scores &amp; standings</li>
<li>Generate school reports</li>
</ul>
</div>
<div class="role-card student">
<h4><span class="role-badge role-student">Student</span> Student Athlete</h4>
<p>Views tournament information and personal results.</p>
<ul>
<li>View tournaments &amp; events</li>
<li>Check registration status</li>
<li>View personal scores</li>
<li>View standings &amp; reports</li>
</ul>
</div>
</div>
<div class="callout callout-warning">
<strong>Admin-only features</strong>
The <em>Users</em> and <em>Scoring Config</em> sections in the sidebar are only visible to users with the Admin role. If you cannot see these menu items, your account does not have administrator privileges.
</div>
</div>
<!-- ================================================================== -->
<!-- 3. NAVIGATION -->
<!-- ================================================================== -->
<div class="section" id="navigation">
<h2>3. Navigating the Application</h2>
<p>The application uses a sidebar navigation layout with a top bar.</p>
<h3>Sidebar</h3>
<p>The sidebar is on the left side of the screen and is divided into sections:</p>
<div class="sidebar-diagram">
<div class="active">Dashboard</div>
<br>
<div class="heading">Management</div>
<div class="item">Tournaments</div>
<div class="item">Schools</div>
<div class="item">Students</div>
<div class="item">Events</div>
<br>
<div class="heading">Scoring</div>
<div class="item">Track Events</div>
<div class="item">Field Events</div>
<div class="item">High Jump</div>
<br>
<div class="heading">Reports</div>
<div class="item">Reports</div>
<br>
<div class="heading">Administration</div>
<div class="admin-only">Users (Admin only)</div>
<div class="admin-only">Scoring Config (Admin only)</div>
</div>
<p>The current page is highlighted with a gold left border. Click any item to navigate to that section.</p>
<h3>Top Bar</h3>
<p>The top bar shows your user avatar (initials) and name on the right side. Click it to access the logout option.</p>
<h3>Mobile Devices</h3>
<p>On smaller screens, the sidebar is hidden by default. Tap the <strong>menu icon</strong> (three horizontal lines) in the top-left corner to open it. Tap outside the sidebar or the menu icon again to close it.</p>
<h3>Notifications</h3>
<p>When you complete an action (such as creating a tournament or saving a score), a green success message or red error message appears at the top of the page. These notifications automatically disappear after 5 seconds, or you can close them by clicking the &times; button.</p>
</div>
<!-- ================================================================== -->
<!-- 4. DASHBOARD -->
<!-- ================================================================== -->
<div class="section" id="dashboard">
<h2>4. Dashboard</h2>
<p><span class="role-badge role-all">All Roles</span></p>
<p>The Dashboard is your home screen after logging in. It provides a quick overview of the system.</p>
<h3>Summary Cards</h3>
<p>At the top of the dashboard, four cards display key statistics:</p>
<ul>
<li><strong>Total Students</strong> &mdash; Number of registered students, with male/female breakdown</li>
<li><strong>Total Schools</strong> &mdash; Number of schools in the system</li>
<li><strong>Active Tournaments</strong> &mdash; Tournaments currently in progress or open for registration</li>
<li><strong>Total Registrations</strong> &mdash; Number of event registrations across all tournaments</li>
</ul>
<h3>School Standings</h3>
<p>Below the summary cards, a table shows the school standings for the selected tournament, including:</p>
<ul>
<li>School name and abbreviation</li>
<li>Total accumulated points</li>
<li>Number of 1st, 2nd, and 3rd place finishes</li>
</ul>
<h3>Tournament Selector</h3>
<p>Use the dropdown at the top of the standings section to switch between different tournaments and view their respective standings.</p>
</div>
<!-- ================================================================== -->
<!-- 5. TOURNAMENTS -->
<!-- ================================================================== -->
<div class="section" id="tournaments">
<h2>5. Tournament Management</h2>
<p><span class="role-badge role-all">All Roles</span></p>
<h3>Tournament Lifecycle</h3>
<p>Every tournament follows a defined status progression:</p>
<div class="status-flow">
<span class="status-pill status-draft">Draft</span>
<span class="arrow">&rarr;</span>
<span class="status-pill status-registration">Registration</span>
<span class="arrow">&rarr;</span>
<span class="status-pill status-inprogress">In Progress</span>
<span class="arrow">&rarr;</span>
<span class="status-pill status-completed">Completed</span>
<span class="arrow">&rarr;</span>
<span class="status-pill status-archived">Archived</span>
</div>
<h3>Viewing Tournaments</h3>
<p>The Tournaments page lists all tournaments. Use the status filter buttons at the top to show only tournaments with a specific status. Toggle <strong>Show Archived</strong> to include archived tournaments in the list. Each row shows the tournament name, dates, status, and event count.</p>
<h3>Creating a Tournament</h3>
<ol class="steps">
<li>Click the <strong>Add Tournament</strong> button on the Tournaments page.</li>
<li>Fill in the form: <strong>Name</strong>, <strong>Start Date</strong>, <strong>End Date</strong>, <strong>Zone</strong>, and <strong>School Level</strong> (Primary or Secondary).</li>
<li>Click <strong>Create</strong>. The tournament is created in <kbd>Draft</kbd> status.</li>
</ol>
<h3>Setting Up Event Levels</h3>
<p>Before opening registration, you must configure which events and levels are included in the tournament.</p>
<ol class="steps">
<li>Open the tournament's <strong>Details</strong> page.</li>
<li>Click <strong>Setup Event Levels</strong>.</li>
<li>Select an <strong>Event</strong> and <strong>Level</strong> combination and click <strong>Add</strong>.</li>
<li>Repeat for all desired event-level combinations.</li>
<li>To remove one, click the <strong>Remove</strong> button next to it.</li>
</ol>
<h3>Managing Tournament Status</h3>
<table>
<tr>
<th>Action</th>
<th>From Status</th>
<th>To Status</th>
<th>What Happens</th>
</tr>
<tr>
<td>Open Registration</td>
<td>Draft</td>
<td>Registration</td>
<td>Students can now be registered for events</td>
</tr>
<tr>
<td>Start Tournament</td>
<td>Registration</td>
<td>In Progress</td>
<td>Registration closes, scoring can begin</td>
</tr>
<tr>
<td>Complete</td>
<td>In Progress</td>
<td>Completed</td>
<td>Scoring finalized, final reports available</td>
</tr>
<tr>
<td>Archive</td>
<td>Completed</td>
<td>Archived</td>
<td>Tournament hidden from default views</td>
</tr>
</table>
<h3>Age Waiver</h3>
<p>On the tournament details page, you can toggle an <strong>age waiver</strong> for specific event levels. This bypasses age eligibility checks during registration for that event level.</p>
<h3>Editing &amp; Deleting</h3>
<p>Use the <strong>Edit</strong> button to modify tournament details. Use <strong>Delete</strong> to permanently remove a tournament (only possible while in Draft status).</p>
</div>
<!-- ================================================================== -->
<!-- 6. SCHOOLS -->
<!-- ================================================================== -->
<div class="section" id="schools">
<h2>6. School Management</h2>
<p><span class="role-badge role-all">All Roles</span></p>
<h3>Viewing Schools</h3>
<p>The Schools page lists all registered schools. Filter by:</p>
<ul>
<li><strong>Zone</strong> &mdash; Geographic zone (e.g., NW, N, NE, SE, S, SW, WC, SSC)</li>
<li><strong>School Level</strong> &mdash; Primary or Secondary</li>
</ul>
<p>Each row shows the school name, abbreviation, level, zone, and number of enrolled students.</p>
<h3>Adding a School</h3>
<ol class="steps">
<li>Click <strong>Add School</strong>.</li>
<li>Fill in <strong>Name</strong>, <strong>Short Name</strong> (abbreviation), <strong>School Level</strong> (Primary/Secondary), and <strong>Zone</strong>.</li>
<li>Click <strong>Create</strong>.</li>
</ol>
<h3>Editing a School</h3>
<p>Click the <strong>Edit</strong> button next to a school to change its details. You can also toggle the <strong>Active</strong> status to deactivate a school without deleting it.</p>
</div>
<!-- ================================================================== -->
<!-- 7. STUDENTS -->
<!-- ================================================================== -->
<div class="section" id="students">
<h2>7. Student Management</h2>
<p><span class="role-badge role-all">All Roles</span></p>
<h3>Viewing Students</h3>
<p>The Students page lists all athletes. Filter by:</p>
<ul>
<li><strong>School</strong> &mdash; Select a specific school</li>
<li><strong>Search</strong> &mdash; Type a name to search</li>
</ul>
<p>Each row shows the student ID, full name, date of birth, sex, and school.</p>
<h3>Adding a Student</h3>
<ol class="steps">
<li>Click <strong>Add Student</strong>.</li>
<li>Fill in: <strong>Student ID</strong> (external/existing ID), <strong>First Name</strong>, <strong>Last Name</strong>, <strong>Date of Birth</strong>, <strong>Sex</strong> (Male/Female), and <strong>School</strong>.</li>
<li>Click <strong>Create</strong>.</li>
</ol>
<div class="callout callout-tip">
<strong>Tip</strong>
Ensure the date of birth is accurate &mdash; the system uses it to determine age-based event level eligibility during registration.
</div>
<h3>Student Details</h3>
<p>Click a student's name to view their details page, which shows all their event registrations across tournaments.</p>
</div>
<!-- ================================================================== -->
<!-- 8. EVENTS -->
<!-- ================================================================== -->
<div class="section" id="events">
<h2>8. Event Configuration</h2>
<p><span class="role-badge role-all">All Roles</span></p>
<p>Events are the athletic competitions (e.g., 100m Dash, Long Jump, High Jump). They are organized into three categories:</p>
<table>
<tr>
<th>Category</th>
<th>Examples</th>
<th>Scoring Method</th>
</tr>
<tr>
<td><strong>Track</strong></td>
<td>80m, 100m, 200m, 400m, 1500m, 3000m, 5000m, 80mH, Relays</td>
<td>Timed with heats, semi-finals, finals</td>
</tr>
<tr>
<td><strong>Field</strong></td>
<td>Long Jump, Triple Jump, Shot Put, Discus, Javelin, Cricket Ball</td>
<td>Distance/weight measured, converted to points</td>
</tr>
<tr>
<td><strong>High Jump</strong></td>
<td>High Jump</td>
<td>Height-based with O/X/Pass attempts</td>
</tr>
</table>
<h3>Event Levels</h3>
<p>Each event can be run at different age/gender levels:</p>
<ul>
<li><strong>Primary:</strong> Junior Boys, Junior Girls, Senior Boys, Senior Girls</li>
<li><strong>Secondary:</strong> U14, U15, U16, U17, U20, U21, Open &mdash; each for Boys and Girls</li>
</ul>
<h3>Managing Events</h3>
<p>The Events page shows all events grouped by category. Indicators show which school levels the event applies to: <kbd>P</kbd> = Primary, <kbd>S</kbd> = Secondary. Events can be created, edited, or deleted. When creating an event, specify whether it is a relay and which school levels it applies to.</p>
</div>
<!-- ================================================================== -->
<!-- 9. REGISTRATION -->
<!-- ================================================================== -->
<div class="section" id="registration">
<h2>9. Registration</h2>
<p><span class="role-badge role-all">All Roles</span></p>
<p>Registration connects students to tournament events. A tournament must be in <kbd>Registration</kbd> status for new registrations to be added.</p>
<h3>Registering a Student</h3>
<ol class="steps">
<li>Navigate to the tournament's details page and find the event level you want.</li>
<li>Click <strong>View Registrations</strong> for that event level.</li>
<li>Click <strong>Register Student</strong>.</li>
<li>Select the student from the list. The system checks eligibility automatically based on age, sex, and school level.</li>
<li>Confirm the registration.</li>
</ol>
<div class="callout callout-warning">
<strong>Eligibility rules</strong>
<ul style="margin:0.25rem 0 0 1.25rem;">
<li>The student's sex must match the event level (Boys/Girls).</li>
<li>For secondary events, the student's age must fall within the level's range.</li>
<li>The student's school level must match the event's school level.</li>
<li>If an age waiver is enabled on the event level, age restrictions are bypassed.</li>
</ul>
</div>
<h3>Viewing Registrations</h3>
<p>Each event level's registration page shows all registered students, their school, registration date, and (once scored) their score and placement.</p>
<h3>Viewing by Student</h3>
<p>From a student's details page, you can view all events they are registered for across all tournaments.</p>
<h3>Unregistering</h3>
<p>To remove a student from an event, click the <strong>Unregister</strong> button next to their name in the registration list.</p>
</div>
<!-- ================================================================== -->
<!-- 10. TRACK EVENTS -->
<!-- ================================================================== -->
<div class="section" id="scoring-track">
<h2>10. Scoring: Track Events</h2>
<p><span class="role-badge role-all">All Roles</span></p>
<p>Track events use a rounds-based system with heats, advancement, and finals.</p>
<h3>Workflow Overview</h3>
<ol class="steps">
<li><strong>Create Rounds</strong> &mdash; Set up the round structure: Heats, Semi-Final, and/or Final. For each round, specify the number to advance (Top N) and fastest losers.</li>
<li><strong>Seed Heats</strong> &mdash; Click <strong>Seed Heats</strong> to automatically distribute registered competitors into heats using random seeding.</li>
<li><strong>Record Times</strong> &mdash; For each heat, enter the time (in seconds) for each lane. Mark any special statuses:
<ul>
<li><kbd>DNS</kbd> &mdash; Did Not Start</li>
<li><kbd>DNF</kbd> &mdash; Did Not Finish</li>
<li><kbd>DQ</kbd> &mdash; Disqualified</li>
</ul>
</li>
<li><strong>Save Times</strong> &mdash; Click <strong>Save Times</strong> to record the results for a heat.</li>
<li><strong>Calculate Advancement</strong> &mdash; Once all heats in a round are complete, click <strong>Calculate Advancement</strong> to determine which athletes advance to the next round.</li>
<li><strong>Populate Next Round</strong> &mdash; Click <strong>Populate Next Round</strong> to fill the next round's heats with advancing athletes.</li>
<li><strong>Complete</strong> &mdash; Mark each heat and round as complete when finished. Repeat until the Final round is scored.</li>
</ol>
<h3>Round Types</h3>
<table>
<tr>
<th>Round</th>
<th>Purpose</th>
</tr>
<tr>
<td>Heats</td>
<td>Qualifying round. Top N and fastest losers advance.</td>
</tr>
<tr>
<td>Semi-Final</td>
<td>Intermediate round (optional). Further narrows the field.</td>
</tr>
<tr>
<td>Final</td>
<td>Championship round. Determines placements and points.</td>
</tr>
</table>
<div class="callout callout-tip">
<strong>Tip</strong>
For small fields (8 or fewer athletes), you may skip directly to a Final round without heats.
</div>
</div>
<!-- ================================================================== -->
<!-- 11. FIELD EVENTS -->
<!-- ================================================================== -->
<div class="section" id="scoring-field">
<h2>11. Scoring: Field Events</h2>
<p><span class="role-badge role-all">All Roles</span></p>
<p>Field events measure distance or weight and convert raw performances to points.</p>
<h3>Scoring Workflow</h3>
<ol class="steps">
<li><strong>Select Event</strong> &mdash; Navigate to <strong>Field Events</strong> in the sidebar and select the tournament, event, and level.</li>
<li><strong>Record Performances</strong> &mdash; For each registered athlete, enter their best raw performance (distance in meters or throw distance). Click <strong>Record Score</strong> to save each entry.</li>
<li><strong>Calculate Scores</strong> &mdash; Once all performances are entered, click <strong>Calculate Scores</strong>. The system converts raw performances to points using World Athletics scoring constants (formula: Points = A &times; (B &minus; Performance)<sup>C</sup>).</li>
<li><strong>Calculate Placements</strong> &mdash; Click <strong>Calculate Placements</strong> to rank competitors and assign placement points (1st = 10 pts, 2nd = 8 pts, 3rd = 6 pts, etc.).</li>
</ol>
<h3>Results View</h3>
<p>After scoring, the field event page displays each competitor's raw performance, calculated points, and final placement with placement points earned.</p>
</div>
<!-- ================================================================== -->
<!-- 12. HIGH JUMP -->
<!-- ================================================================== -->
<div class="section" id="scoring-highjump">
<h2>12. Scoring: High Jump</h2>
<p><span class="role-badge role-all">All Roles</span></p>
<p>High Jump uses a unique grid-based scoring interface where heights are columns and competitors are rows.</p>
<h3>Scoring Workflow</h3>
<ol class="steps">
<li><strong>Add Heights</strong> &mdash; Click <strong>Add Height</strong> to define the starting height and subsequent increments. Each height becomes a column in the scoring grid.</li>
<li><strong>Record Attempts</strong> &mdash; For each competitor at each height, record the attempt result by clicking the corresponding cell:
<ul>
<li><kbd>O</kbd> &mdash; Clear (successfully jumped the height)</li>
<li><kbd>X</kbd> &mdash; Fail (did not clear)</li>
<li><kbd>&ndash;</kbd> &mdash; Pass (chose not to attempt this height)</li>
</ul>
</li>
<li><strong>Elimination</strong> &mdash; The system automatically marks athletes as <kbd>OUT</kbd> after three consecutive failures.</li>
<li><strong>Calculate Results</strong> &mdash; When the competition is complete, click <strong>Calculate Results</strong> to determine final placements based on the highest height cleared.</li>
</ol>
<div class="callout callout-info">
<strong>Tiebreaker rules</strong>
When two or more athletes clear the same maximum height, the system uses standard high jump tiebreaker rules: fewest failures at the final cleared height, then fewest total failures across all heights.
</div>
<h3>Removing Heights</h3>
<p>If a height was added in error, click <strong>Remove Height</strong> next to it (only possible if no attempts have been recorded at that height).</p>
</div>
<!-- ================================================================== -->
<!-- 13. REPORTS -->
<!-- ================================================================== -->
<div class="section" id="reports">
<h2>13. Reports</h2>
<p><span class="role-badge role-all">All Roles</span></p>
<p>The Reports section provides printable and downloadable reports for tournament analysis. Each report can be viewed on screen (HTML) or exported as a <strong>PDF</strong>.</p>
<h3>Available Reports</h3>
<table>
<tr>
<th>Report</th>
<th>Description</th>
<th>Filters</th>
</tr>
<tr>
<td><strong>Popular Events</strong></td>
<td>Shows events ranked by number of registrations</td>
<td>Tournament</td>
</tr>
<tr>
<td><strong>Registration by Gender</strong></td>
<td>Event registrations broken down by male/female</td>
<td>Tournament, Zone (optional)</td>
</tr>
<tr>
<td><strong>Event School Report</strong></td>
<td>Students per school for each event</td>
<td>Tournament, Event, Level (optional)</td>
</tr>
<tr>
<td><strong>Students by School</strong></td>
<td>List of students and their events, grouped by school</td>
<td>Tournament, School, Zone (optional)</td>
</tr>
<tr>
<td><strong>Scores by Event</strong></td>
<td>Event results with scores and placements</td>
<td>Tournament, Event, Level (optional)</td>
</tr>
<tr>
<td><strong>Student Points</strong></td>
<td>Individual student point totals across all events</td>
<td>Tournament, School, Zone (optional)</td>
</tr>
<tr>
<td><strong>School Standings</strong></td>
<td>Overall school standings with total points and placement counts</td>
<td>Tournament</td>
</tr>
</table>
<h3>Generating a Report</h3>
<ol class="steps">
<li>Navigate to <strong>Reports</strong> from the sidebar.</li>
<li>Select the <strong>report type</strong> from the list.</li>
<li>Choose the <strong>tournament</strong> and any optional filters (zone, school, event, level).</li>
<li>Click <strong>View Report</strong> to see the HTML version on screen.</li>
<li>Click <strong>Download PDF</strong> to export a formatted PDF document suitable for printing or distribution.</li>
</ol>
<div class="callout callout-tip">
<strong>Tip</strong>
The School Standings report is particularly useful for award ceremonies. The Students by School report is ideal for distributing to coaches before a tournament begins.
</div>
</div>
<!-- ================================================================== -->
<!-- 14. USER MANAGEMENT -->
<!-- ================================================================== -->
<div class="section" id="user-management">
<h2>14. User Management</h2>
<p><span class="role-badge role-admin">Admin Only</span></p>
<p>The User Management page allows administrators to create, edit, and manage user accounts and their roles.</p>
<h3>Viewing Users</h3>
<p>The user list shows all accounts with their name, email, role, associated school, and active status. Use the filters at the top to narrow by:</p>
<ul>
<li><strong>Role</strong> &mdash; Show only users with a specific role</li>
<li><strong>Status</strong> &mdash; Show only Active or Inactive users</li>
</ul>
<h3>Creating a User</h3>
<ol class="steps">
<li>Click <strong>Add User</strong>.</li>
<li>Fill in: <strong>Email</strong>, <strong>Password</strong>, <strong>First Name</strong>, <strong>Last Name</strong>.</li>
<li>Select a <strong>Role</strong> from the dropdown (Admin, Official, Coach, Principal, or Student).</li>
<li>If the role is Coach, Principal, or Student, a <strong>School</strong> dropdown appears &mdash; select the user's school.</li>
<li>Click <strong>Create User</strong>.</li>
</ol>
<div class="callout callout-warning">
<strong>Password requirements</strong>
Passwords must meet ASP.NET Identity's default policy: at least 6 characters, with uppercase, lowercase, digit, and special character requirements.
</div>
<h3>Editing a User</h3>
<ol class="steps">
<li>Click the <strong>Edit</strong> (pencil icon) button next to the user.</li>
<li>Modify the name, role, school assignment, or active status as needed.</li>
<li>Click <strong>Save Changes</strong>.</li>
</ol>
<p>Note: The email address cannot be changed after account creation. Passwords cannot be changed from this screen.</p>
<h3>Activating / Deactivating Users</h3>
<p>To quickly toggle a user's active status without opening the edit form, click the <strong>activate/deactivate</strong> button (person icon) in the Actions column. Active users have a green badge; inactive users have a red badge.</p>
<p>Deactivated users cannot log in to the system.</p>
</div>
<!-- ================================================================== -->
<!-- 15. SCORING CONFIG -->
<!-- ================================================================== -->
<div class="section" id="scoring-config">
<h2>15. Scoring Configuration</h2>
<p><span class="role-badge role-admin">Admin Only</span></p>
<p>The Scoring Configuration page allows administrators to adjust the mathematical constants used to convert raw athletic performances into points, and to set placement point values.</p>
<h3>World Athletics Scoring Constants</h3>
<p>Field events use the World Athletics formula to convert performances to points:</p>
<p style="text-align:center; font-size: 1.1rem; margin: 1rem 0;">
<strong>Points = A &times; (B &minus; Performance)<sup>C</sup></strong>
</p>
<p>Each event has three configurable coefficients: <strong>A</strong>, <strong>B</strong>, and <strong>C</strong>. These are pre-populated with standard values but can be adjusted for local scoring requirements.</p>
<h3>Configurable Events</h3>
<p>The following events have scoring constants that can be modified:</p>
<ul>
<li>Track: 100m, 400m, 1500m, 80mH</li>
<li>Jumps: Long Jump, Triple Jump, High Jump</li>
<li>Throws: Shot Put (3kg, 4kg, 5kg, 6kg), Discus (1kg&ndash;1.75kg), Javelin (400g&ndash;800g)</li>
</ul>
<h3>Placement Points</h3>
<p>You can modify how many points are awarded for each placement finish:</p>
<table>
<tr><th>Place</th><th>Default Points</th></tr>
<tr><td>1st</td><td>10</td></tr>
<tr><td>2nd</td><td>8</td></tr>
<tr><td>3rd</td><td>6</td></tr>
<tr><td>4th</td><td>5</td></tr>
<tr><td>5th</td><td>4</td></tr>
<tr><td>6th</td><td>3</td></tr>
<tr><td>7th</td><td>2</td></tr>
<tr><td>8th</td><td>1</td></tr>
</table>
<div class="callout callout-warning">
<strong>Caution</strong>
Changing scoring constants or placement points will affect future score calculations. Already-calculated scores are not automatically recalculated. If you change values mid-tournament, you may need to recalculate affected events.
</div>
</div>
<!-- ================================================================== -->
<!-- 16. QUICK REFERENCE -->
<!-- ================================================================== -->
<div class="section" id="quickref">
<h2>16. Quick Reference by Role</h2>
<p>Use this table to quickly find which features are available for your role.</p>
<table>
<tr>
<th>Feature</th>
<th style="text-align:center;">Admin</th>
<th style="text-align:center;">Official</th>
<th style="text-align:center;">Coach</th>
<th style="text-align:center;">Principal</th>
<th style="text-align:center;">Student</th>
</tr>
<tr>
<td>Dashboard</td>
<td style="text-align:center;">&#10003;</td>
<td style="text-align:center;">&#10003;</td>
<td style="text-align:center;">&#10003;</td>
<td style="text-align:center;">&#10003;</td>
<td style="text-align:center;">&#10003;</td>
</tr>
<tr>
<td>View Tournaments</td>
<td style="text-align:center;">&#10003;</td>
<td style="text-align:center;">&#10003;</td>
<td style="text-align:center;">&#10003;</td>
<td style="text-align:center;">&#10003;</td>
<td style="text-align:center;">&#10003;</td>
</tr>
<tr>
<td>Create/Edit Tournaments</td>
<td style="text-align:center;">&#10003;</td>
<td style="text-align:center;">&#10003;</td>
<td style="text-align:center;">&#10003;</td>
<td style="text-align:center;">&#10003;</td>
<td style="text-align:center;">&#10003;</td>
</tr>
<tr>
<td>Manage Schools</td>
<td style="text-align:center;">&#10003;</td>
<td style="text-align:center;">&#10003;</td>
<td style="text-align:center;">&#10003;</td>
<td style="text-align:center;">&#10003;</td>
<td style="text-align:center;">&#10003;</td>
</tr>
<tr>
<td>Manage Students</td>
<td style="text-align:center;">&#10003;</td>
<td style="text-align:center;">&#10003;</td>
<td style="text-align:center;">&#10003;</td>
<td style="text-align:center;">&#10003;</td>
<td style="text-align:center;">&#10003;</td>
</tr>
<tr>
<td>Configure Events</td>
<td style="text-align:center;">&#10003;</td>
<td style="text-align:center;">&#10003;</td>
<td style="text-align:center;">&#10003;</td>
<td style="text-align:center;">&#10003;</td>
<td style="text-align:center;">&#10003;</td>
</tr>
<tr>
<td>Register Students</td>
<td style="text-align:center;">&#10003;</td>
<td style="text-align:center;">&#10003;</td>
<td style="text-align:center;">&#10003;</td>
<td style="text-align:center;">&#10003;</td>
<td style="text-align:center;">&#10003;</td>
</tr>
<tr>
<td>Score Track Events</td>
<td style="text-align:center;">&#10003;</td>
<td style="text-align:center;">&#10003;</td>
<td style="text-align:center;">&#10003;</td>
<td style="text-align:center;">&#10003;</td>
<td style="text-align:center;">&#10003;</td>
</tr>
<tr>
<td>Score Field Events</td>
<td style="text-align:center;">&#10003;</td>
<td style="text-align:center;">&#10003;</td>
<td style="text-align:center;">&#10003;</td>
<td style="text-align:center;">&#10003;</td>
<td style="text-align:center;">&#10003;</td>
</tr>
<tr>
<td>Score High Jump</td>
<td style="text-align:center;">&#10003;</td>
<td style="text-align:center;">&#10003;</td>
<td style="text-align:center;">&#10003;</td>
<td style="text-align:center;">&#10003;</td>
<td style="text-align:center;">&#10003;</td>
</tr>
<tr>
<td>View/Generate Reports</td>
<td style="text-align:center;">&#10003;</td>
<td style="text-align:center;">&#10003;</td>
<td style="text-align:center;">&#10003;</td>
<td style="text-align:center;">&#10003;</td>
<td style="text-align:center;">&#10003;</td>
</tr>
<tr>
<td>Download PDF Reports</td>
<td style="text-align:center;">&#10003;</td>
<td style="text-align:center;">&#10003;</td>
<td style="text-align:center;">&#10003;</td>
<td style="text-align:center;">&#10003;</td>
<td style="text-align:center;">&#10003;</td>
</tr>
<tr style="background:#fff3cd;">
<td><strong>Manage Users</strong></td>
<td style="text-align:center;">&#10003;</td>
<td style="text-align:center;">&mdash;</td>
<td style="text-align:center;">&mdash;</td>
<td style="text-align:center;">&mdash;</td>
<td style="text-align:center;">&mdash;</td>
</tr>
<tr style="background:#fff3cd;">
<td><strong>Scoring Configuration</strong></td>
<td style="text-align:center;">&#10003;</td>
<td style="text-align:center;">&mdash;</td>
<td style="text-align:center;">&mdash;</td>
<td style="text-align:center;">&mdash;</td>
<td style="text-align:center;">&mdash;</td>
</tr>
</table>
<h3>Typical Workflow by Role</h3>
<h4><span class="role-badge role-admin">Admin</span> &mdash; System Setup</h4>
<ol>
<li>Create user accounts for officials, coaches, principals</li>
<li>Configure scoring constants and placement points</li>
<li>Set up schools and zones</li>
<li>Create events and event levels</li>
<li>All other tasks as needed</li>
</ol>
<h4><span class="role-badge role-official">Official</span> &mdash; Tournament Day</h4>
<ol>
<li>Create tournament and configure event levels</li>
<li>Open registration, then start tournament when ready</li>
<li>Score track events: seed heats, record times, calculate advancement</li>
<li>Score field events: record performances, calculate scores and placements</li>
<li>Score high jump: add heights, record attempts, calculate results</li>
<li>Generate reports for standings and awards</li>
<li>Complete and archive tournament</li>
</ol>
<h4><span class="role-badge role-coach">Coach</span> &mdash; Team Preparation</h4>
<ol>
<li>Add or verify student athlete profiles</li>
<li>Register students for appropriate events during registration period</li>
<li>Print Students by School report for team roster</li>
<li>Monitor scores and standings during tournament</li>
<li>Review Student Points report after completion</li>
</ol>
<h4><span class="role-badge role-principal">Principal</span> &mdash; School Oversight</h4>
<ol>
<li>Review student registrations for the school</li>
<li>Monitor school standings on dashboard</li>
<li>Generate School Standings report for board meetings</li>
<li>Review Students by School and Student Points reports</li>
</ol>
<h4><span class="role-badge role-student">Student</span> &mdash; Athlete</h4>
<ol>
<li>Check the dashboard for tournament information</li>
<li>Verify event registration on your student profile</li>
<li>View scores and placements after events</li>
<li>Check school standings</li>
</ol>
</div>
<!-- ================================================================== -->
<!-- FOOTER -->
<!-- ================================================================== -->
<div style="text-align:center; padding: 2rem 0 1rem; color: #999; font-size: 0.8rem;">
<p>&copy; 2026 Dominica Sports Division. All rights reserved.</p>
<p>For technical support, contact your system administrator.</p>
</div>
</div><!-- .container -->
</body>
</html>