115 lines
3.7 KiB
TypeScript
115 lines
3.7 KiB
TypeScript
export enum Announcement {
|
|
RE = 'Re',
|
|
CONTRA = 'Contra',
|
|
RE_NO_NINETY = 'Re: No ninety',
|
|
CONTRA_NO_NINETY = 'Contra: No ninety',
|
|
RE_NO_SIXTY = 'Re: No sixty',
|
|
CONTRA_NO_SIXTY = 'Contra: No sixty',
|
|
RE_NO_THIRTY = 'Re: No thirty',
|
|
CONTRA_NO_THIRTY = 'Contra: No thirty'
|
|
}
|
|
|
|
/**
|
|
* Returns all available announcement values
|
|
*/
|
|
export function getAllAnnouncementValues(): Announcement[] {
|
|
return [
|
|
Announcement.RE,
|
|
Announcement.RE_NO_NINETY,
|
|
Announcement.RE_NO_SIXTY,
|
|
Announcement.RE_NO_THIRTY,
|
|
Announcement.CONTRA,
|
|
Announcement.CONTRA_NO_NINETY,
|
|
Announcement.CONTRA_NO_SIXTY,
|
|
Announcement.CONTRA_NO_THIRTY
|
|
];
|
|
}
|
|
|
|
/**
|
|
* Checks if the selected announcements are a valid set of announcements.
|
|
* E.g.: If RE_NO_NINETY is newly selected, RE also has to be selected
|
|
* @param selectedAnnouncements The list of selected announcements
|
|
*/
|
|
export function checkValidity(selectedAnnouncements: Announcement[]): boolean {
|
|
// First check all "RE" Announcements
|
|
if(selectedAnnouncements.indexOf(Announcement.RE_NO_THIRTY) !== -1) {
|
|
if(selectedAnnouncements.indexOf(Announcement.RE_NO_SIXTY) === -1) {
|
|
return false;
|
|
}
|
|
}
|
|
if(selectedAnnouncements.indexOf(Announcement.RE_NO_SIXTY) !== -1) {
|
|
if(selectedAnnouncements.indexOf(Announcement.RE_NO_NINETY) === -1) {
|
|
return false;
|
|
}
|
|
}
|
|
if(selectedAnnouncements.indexOf(Announcement.RE_NO_NINETY) !== -1) {
|
|
if(selectedAnnouncements.indexOf(Announcement.RE) === -1) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
// Now same for "CONTRA"
|
|
if(selectedAnnouncements.indexOf(Announcement.CONTRA_NO_THIRTY) !== -1) {
|
|
if(selectedAnnouncements.indexOf(Announcement.CONTRA_NO_SIXTY) === -1) {
|
|
return false;
|
|
}
|
|
}
|
|
if(selectedAnnouncements.indexOf(Announcement.CONTRA_NO_SIXTY) !== -1) {
|
|
if(selectedAnnouncements.indexOf(Announcement.CONTRA_NO_NINETY) === -1) {
|
|
return false;
|
|
}
|
|
}
|
|
if(selectedAnnouncements.indexOf(Announcement.CONTRA_NO_NINETY) !== -1) {
|
|
if(selectedAnnouncements.indexOf(Announcement.CONTRA) === -1) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
// all fine, return true
|
|
return true
|
|
}
|
|
|
|
/**
|
|
* Returns the names of the two highest announcements from the given list, one for RE and one for CONTRA if applicable
|
|
* @param selectedAnnouncements The list of announcements to check
|
|
*/
|
|
export function returnTwoHighestAnnouncements(selectedAnnouncements: Announcement[]): string {
|
|
let finalString: string = '';
|
|
|
|
// First check "RE" announcements
|
|
if(selectedAnnouncements.indexOf(Announcement.RE_NO_THIRTY) !== -1) {
|
|
finalString += Announcement.RE_NO_THIRTY;
|
|
} else if (selectedAnnouncements.indexOf(Announcement.RE_NO_SIXTY) !== -1) {
|
|
finalString += Announcement.RE_NO_SIXTY;
|
|
} else if (selectedAnnouncements.indexOf(Announcement.RE_NO_NINETY) !== -1) {
|
|
finalString += Announcement.RE_NO_NINETY;
|
|
} else if (selectedAnnouncements.indexOf(Announcement.RE) !== -1) {
|
|
finalString += Announcement.RE;
|
|
}
|
|
|
|
// If there was a "RE" announcement, add a ", " so we can list the CONTRA announcement properly
|
|
if(finalString !== '') {
|
|
finalString += ', ';
|
|
}
|
|
|
|
// Now check "CONTRA"
|
|
if(selectedAnnouncements.indexOf(Announcement.CONTRA_NO_THIRTY) !== -1) {
|
|
finalString += Announcement.CONTRA_NO_THIRTY;
|
|
} else if (selectedAnnouncements.indexOf(Announcement.CONTRA_NO_SIXTY) !== -1) {
|
|
finalString += Announcement.CONTRA_NO_SIXTY;
|
|
} else if (selectedAnnouncements.indexOf(Announcement.CONTRA_NO_NINETY) !== -1) {
|
|
finalString += Announcement.CONTRA_NO_NINETY;
|
|
} else if (selectedAnnouncements.indexOf(Announcement.CONTRA) !== -1) {
|
|
finalString += Announcement.CONTRA;
|
|
} else {
|
|
// Remove the last two chars from the finalString (", ")
|
|
finalString = finalString.substring(0, finalString.length-2);
|
|
}
|
|
|
|
if(finalString === '') {
|
|
finalString = 'None';
|
|
}
|
|
|
|
return finalString;
|
|
}
|