football-lineup-generator
Version:
A TypeScript library for generating visual football lineup diagrams from team positioning data
70 lines (69 loc) • 1.8 kB
TypeScript
export declare enum Team {
RED = "red",
YELLOW = "yellow"
}
export declare enum Position {
GOALKEEPER = "goalkeeper",
CENTER_BACK = "center_back",
LEFT_BACK = "left_back",
RIGHT_BACK = "right_back",
DEFENSIVE_MIDFIELDER = "defensive_midfielder",
CENTER_MIDFIELDER = "center_midfielder",
ATTACKING_MIDFIELDER = "attacking_midfielder",
LEFT_MIDFIELDER = "left_midfielder",
RIGHT_MIDFIELDER = "right_midfielder",
LEFT_WINGER = "left_winger",
RIGHT_WINGER = "right_winger",
CENTER_FORWARD = "center_forward",
LEFT_FORWARD = "left_forward",
RIGHT_FORWARD = "right_forward",
SUBSTITUTE = "substitute"
}
export declare enum LayoutType {
FULL_PITCH = "full_pitch",// Both teams positioned all over the pitch
HALF_PITCH = "half_pitch",// Each team stays in their half
SPLIT_PITCH = "split_pitch"
}
export interface Player {
id: number;
name: string;
jerseyNumber?: number;
}
export interface PlayerPositioning {
player: Player;
team: Team;
position: Position;
}
export interface LineupData {
matchId?: number;
homeTeam: {
name: string;
color?: string;
players: PlayerPositioning[];
};
awayTeam: {
name: string;
color?: string;
players: PlayerPositioning[];
};
}
export interface LineupConfig {
width?: number;
height?: number;
layoutType?: LayoutType;
showPlayerNames?: boolean;
showJerseyNumbers?: boolean;
fieldColor?: string;
lineColor?: string;
homeTeamColor?: string;
awayTeamColor?: string;
fontSize?: number;
playerCircleSize?: number;
}
export interface FieldCoordinates {
x: number;
y: number;
}
export type PositionCoordinates = {
[key in Position]: FieldCoordinates;
};