@talabes/football-lineup-generator
Version:
A TypeScript library for generating visual football lineup diagrams from team positioning data. Fork of ncamaa/football-lineup-generator with bug fixes and improvements.
89 lines (88 loc) • 2.34 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 declare enum SubstitutesPosition {
LEFT = "left",
BOTTOM = "bottom",
RIGHT = "right"
}
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 SubstitutesConfig {
enabled: boolean;
position: SubstitutesPosition;
}
export interface LineupConfig {
width?: number;
height?: number;
layoutType?: LayoutType;
showPlayerNames?: boolean;
showJerseyNumbers?: boolean;
showSubstitutes?: boolean | SubstitutesConfig;
fieldColor?: string;
lineColor?: string;
homeTeamColor?: string;
awayTeamColor?: string;
fontSize?: number;
playerCircleSize?: number;
interactive?: boolean;
onPlayerMove?: (playerId: number, team: Team, x: number, y: number) => void;
}
export interface FieldCoordinates {
x: number;
y: number;
}
export type PositionCoordinates = {
[key in Position]: FieldCoordinates;
};
export interface CustomPlayerCoordinate {
playerId: number;
team: Team;
x: number;
y: number;
}
export type CustomCoordinatesMap = Map<string, FieldCoordinates>;