Skip to main content

Managing Participants in TMX

The Participants tab in TMX provides comprehensive tools for managing tournament participants, from initial registration through check-in and assignment to events. This page demonstrates practical usage of the Competition Factory's Participant Governor.

Screenshots Coming Soon

This page will be updated with screenshots showing the TMX participant management interface.

Overview​

Participant management in TMX includes:

  • Registration - Adding new participants with required and optional information
  • Import/Export - Bulk operations via CSV, Google Sheets, or JSON
  • Check-in - Managing arrival and withdrawal status
  • Search & Filter - Finding participants by various criteria
  • Editing - Updating participant information
  • Assignment - Adding participants to events

Factory Methods Used​

The Participants feature uses these key factory methods:

Adding Participants​

// Single participant
tournamentEngine.addParticipant({
participant: {
participantType: 'INDIVIDUAL',
person: {
standardGivenName: 'John',
standardFamilyName: 'Doe',
nationalityCode: 'USA',
},
},
});

// Bulk participants
tournamentEngine.addParticipants({
participants: [/* array of participant objects */],
allowDuplicateParticipantIdPairs: false,
});

Participant Search and Retrieval​

// Get all participants
const { participants } = tournamentEngine.getParticipants({
participantFilters: { participantTypes: ['INDIVIDUAL'] },
});

// Find specific participant
const { participant } = tournamentEngine.findParticipant({
participantId,
});

// Search by name
const results = tournamentEngine.searchParticipants({
searchText: 'John Doe',
});

Updating Participants​

// Update participant details
tournamentEngine.modifyParticipant({
participantId,
participant: {
person: {
standardGivenName: 'John',
standardFamilyName: 'Smith',
},
},
});

// Add participant contact info
tournamentEngine.addParticipantContact({
participantId,
contact: {
emailAddress: 'john@example.com',
phoneNumber: '+1-555-0123',
},
});

Key Features​

Registration Workflow​

  1. Participant Creation

    • Required fields: name, participant type
    • Optional fields: nationality, contact info, rankings
    • Automatic ID generation
    • Duplicate detection
  2. Validation

    • Name validation
    • Contact information format checking
    • Nationality code validation
    • Rating/ranking validation
  3. Storage

    • Added to tournament record
    • Available for event assignment
    • Preserved across sessions

Import Options​

Google Sheets Integration​

// TMX can import directly from Google Sheets
// Uses factory's participant structure

CSV Import​

// Standard CSV format
// Headers: firstName, lastName, nationality, rating, etc.
// Mapped to factory participant structure

JSON Import​

// Direct factory-compatible JSON
tournamentEngine.setState(tournamentRecord);

Participant Assignment​

// Assign participant to event
tournamentEngine.addEventEntries({
eventId,
participantIds: [participantId],
});

// Assign with entry status
tournamentEngine.addEventEntries({
eventId,
participantIds: [participantId],
entryStatus: 'DIRECT_ACCEPTANCE',
});

Participant Data Structure​

TMX uses the standard factory participant structure:

{
participantId: 'uuid',
participantType: 'INDIVIDUAL',
participantRole: 'COMPETITOR',
person: {
personId: 'uuid',
standardGivenName: 'John',
standardFamilyName: 'Doe',
nationalityCode: 'USA',
sex: 'MALE'
},
rankings: [
{
rankingType: 'RATING',
ratingType: 'UTR',
rating: 12.5
}
],
timeItems: [
{
itemType: 'CHECK_IN',
itemValue: '2024-01-15T09:00:00Z'
}
]
}

UI Components​

TMX uses these courthive-components for participant management:

  • ParticipantsList - Table view with sorting and filtering
  • ParticipantForm - Add/edit participant details
  • ParticipantSearch - Real-time search interface
  • BulkImport - Import workflow component
  • CheckInManager - Check-in status tracking

Common Patterns​

Adding a New Participant​

// 1. Create participant object
const participant = {
participantType: 'INDIVIDUAL',
person: {
standardGivenName: firstName,
standardFamilyName: lastName,
nationalityCode: country,
},
};

// 2. Add to tournament
const result = tournamentEngine.addParticipant({ participant });

// 3. Handle result
if (result.success) {
const { participant } = result;
// Update UI with new participant
}

Bulk Import Workflow​

// 1. Parse import data (CSV, Sheets, etc.)
const participants = parseImportData(data);

// 2. Validate participants
const validated = participants.filter((p) => validateParticipant(p));

// 3. Add to tournament
const result = tournamentEngine.addParticipants({
participants: validated,
});

// 4. Report results
console.log(`Added: ${result.added.length}`);
console.log(`Duplicates: ${result.duplicates.length}`);
console.log(`Errors: ${result.errors.length}`);

Participant Check-in​

// Add check-in time item
tournamentEngine.addTimeItem({
itemType: 'CHECK_IN',
itemValue: new Date().toISOString(),
participants: [{ participantId }],
});

// Query checked-in participants
const { participants } = tournamentEngine.getParticipants({
participantFilters: {
participantTypes: ['INDIVIDUAL'],
},
withScaleValues: true,
});

const checkedIn = participants.filter((p) => p.timeItems?.some((t) => t.itemType === 'CHECK_IN'));

Best Practices​

Data Quality​

  • Use factory methods to validate before invoking remote execution

Performance​

  • Use bulk operations for multiple participants
  • Understand factory based filtering capbilities

Next Steps​

Once participants are registered, proceed to Events & Categories to create tournament events and assign participants.