Top X management

Welcome to Fans United Top X Management Widget. The widget allows staff members with sufficient permissions to create new games/editions. You can use this widget as it is and embed it in your platform, or you can use the Management Panel to create games. Top X is a game where users must predict a specified number of correct scores for a prize. With successfull installiation, you can create and edit a Top X game or see the report about specific game.

Installation and usage

The easiest way to use fansunited-widget-top-x-management is to install it from npm as follows:

npm  install  fansunited-widget-top-x

or:

yarn  add  fansunited-widget-top-x

Here is an example how you can integrate Fans United Top X Management Widget:

import  'fansunited-widget-top-x/style.css';
import { TopXManager } from  'fansunited-widget-top-x';

const  App = () => {
return (
<TopXManager
	fansUnitedApiKey={'your-api-key'}
	fansUnitedClientId={'your-client-id'} />
);
}

Notes

  • The widget is bundled as a React component and its usage is as simple as the above example

  • Don't worry about your project's CSS. The widget's styling is done with Tailwind CSS and all classes are prefixed to avoid collisions with your existing CSS. This means that the widget's CSS will NOT affect yours. One important thing is that you need to import style.css file from package folder:

import 'fansunited-widget-top-x/style.css';

N.B: If you are using an entry point for importing all your stylings, you need to import fansunited-widget-top-x/style.css there as well

Props

type  TopXManagerProps = {
	fansUnitedApiKey: string;
	fansUnitedClientId: string;
	fansUnitedLanguage?: string;
	labels?: LabelsModel;
};

Fans United Top X Management Widget depends on Fans United JS SDK and Fans United Client API. Thats why fansUnitedApiKey and fansUnitedClientId are required. They will be provided to you from Fans United team. For other optional props here is some information:

  • fansUnitedLanguage - for our sports APIs FansUnited platform supports different languages. For now they are Bulgarian (bg), English (en) and Romanian (ro). If no value given it will be set to English (en).

  • labels - you can easily translate all labels, UI messages, descriptions, placeholders and etc. with this prop. By default, Fans United Match Quiz Management Widget is available in English so if no value is given, the widget will be translated in English.

Translation

You can easily translate Fans United Top X Management Widget in your language! You just need to pass an object to labels prop with concrete keys and values and that's it! Here's an example how you can do it:

import  'fansunited-widget-top-x/style.css';
import { TopXManager } from  'fansunited-widget-top-x';

const  labels = {
	userNotFound:  'User not found. Please try again.',
	clientConfigErrorMessage:  "There was a problem fetching client's configuration. Please check again your API key and client ID. For more information contact Fans United staff.",
	noGamesFound:  "No games were found. You can create a game by clicking the button 'Create game'",
	createEdition:  'Create game',
	name:  'Name',
	status:  'Status',
	creationDate:  'Created at',
	acceptUntil:  'Accept Until',
	actions:  'Actions',
	upcoming:  'Upcoming',
	inProgress:  'In progress',
	finished:  'Finished',
	pending:  'Pending',
	settled:  'Settled',
	live:  'Live',
	open:  'Open',
	canceled:  'Canceled',
	closed:  'Closed',
	edit:  'Edit',
	report:  'Report',
	timeFormat:  'DD-MM-YYYY, HH:mm',
	previous:  'Previous',
	next:  'Next',
	namePlaceholder:  'Please provide a name for your Top X edition.',
	description:  'Description',
	descriptionPlaceholder:  'Please describe your game.',
	matchSelection:  'Match selection',
	matchSelectionDescription:  'Select a number of matches to include in your game.',
	matchNumber:  'Match Number',
	selectTeamPlaceholder:  'Type your team...',
	selectTeamNoTeamFound:  'No Team Found',
	selectTeamNoMatchesFound:  'No matches were found',
	gameStatus:  'Game status',
	createGameStatusDescription:  'The provided choices are PENDING and OPEN. Keep in mind that if you choose OPEN you can NOT edit your game.',
	editGameStatusDescription:  'The provided choices are PENDING, OPEN and CANCELED. Keep in mind that if you choose OPEN you can NOT edit your game anymore and if you choose CANCELED the game will be canceled.',
	rules:  'Rules',
	rulesDescription:  'Describe your rules for participating in the game. You can type plain text or html tags.',
	flags:  'Flags',
	flagsPlaceholder:  'Type your flag and hit enter',
	repeatedFlagMessage:  'You have entered a repeated flag. Please enter a different one.',
	cutoffTime:  'Cutoff time',
	cutoffTimeDescriptionOnCreate:  'Predictions will be accepted until this time. If not provided it will be automatically generated 15 minutes from the first match played.',
	cutoffTimeDescriptionOnEdit:  "Predictions will be accepted until this time. Keep in mind that this field SHOUT NOT be empty.",
	editGame:  'Edit game',
	addFixture:  'Add fixture',
	removeFixture:  'Remove fixture',
	back:  'Back',
	reportFor:  'Report for',
	position:  'Position',
	points:  'Points',
	results:  'Results',
	goldenGoal:  'Golden Goal',
	predictions:  'Predictions',
	gameNotSettledMessage:  'Not all matches have been played and therefore no points awarded yet. Please come back after the matches finish to see the leaderboard.',
	clear:  'Clear',
	loadingMessage:  'Loading...',
	createGameMessage:  'You have successfully created a game.',
	editGameMessage:  'You have successfully edited a game.',
	clearCutoffMessage:  'You have cleared your cutoff time.',
	minFixturesMessage:  'There is a requirement how many minimum fixtures you need to provide to create/update game and it is:',
	sameChosenMatchMessage:  'Some of selected matches are repeating',
	invalidCutoffTimeMessage:  'Some of the provided matches start before cutoff time. Please choose cutoff time that is before the earliest match kickoff time.',
	createGameErrorMessage:  'There was a problem with creating the game. Please try again.',
	editGameErrorMessage:  'There was a problem with editing the game. Please try again.',
	leaderboardErrorMessage:  'There was a problem with displaying leaderboard. Please try again.',
	gamePredictionsErrorMessage:  'There was a problem with getting predictions for users. Please try again.',
};

const  App = () => {
return (
<TopXManager
	fansUnitedApiKey={'your-api-key'}
	fansUnitedClientId={'your-client-id'}
	labels={labels}/>
);
}

Here is all information about LabelsModel:

KeyDescriptionDefault Value
userNotFoundOn login screen when client gives invalid information about email or password.User not found. Please try again.
clientConfigErrorMessagereact-toastify error message when client is providing invalid value to fansUnitedApiKey or fansUnitedClientId prop.There was a problem fetching client's configuration. Please check again your API key and client ID. For more information contact Fans United staff.
noGamesFoundWhen there are no created games for specific client, this message will appear on screen.No games were found. You can create a game by clicking the button 'Create game'.
createEditionUsed as label on create button and as a title on screen when creating a game.Create game
nameLabel for name of a gameName
statusDisplayed in header of list of games. Status of a gameStatus
creationDateDisplayed in header of list of games. Date of created game in same format as given for timeFormat propCreated at
acceptUntilDisplayed in header of list of games. Date of predictions cutoff in same format as given for timeFormat propAccept until
actionsDisplayed in header of list of games. Two icon buttons with different actions.Actions
upcomingStatus of match for fixtureUpcoming
inProgressStatus of match for fixtureIn progress
finishedStatus of match for fixtureFinished
pendingStatus for specific game.Pending
settledStatus for specific game.Settled
liveStatus for specific game.Live
openStatus for specific game.Open
canceledStatus for specific game.Canceled
closedStatus for specific game.Closed
editPlaceholder for icon button edit.Edit
reportPlaceholder for icon button report.Report
timeFormatTimeformat for displaying dates. Widgets uses dayjs as a date dependency.DD.MM.YYYY, HH:mm
previousLabel for pagination button.Previous
nextLabel for pagination button.Next
namePlaceholderPlaceholder/desciption about input field for game name when creating/editing a game.Please provide a name for your Top X edition.
descriptionTitle for desciption input field when creating/editing a game.Description
descriptionPlaceholderPlaceholder/desciption about input field for game description when creating/editing a game.Please describe your game.
matchSelectionTitle for match selection sectionMatch selection
matchSelectionDescriptionDescription about match selection sectionSelect a number of matches to include in your game.
matchNumberTitle when you are adding a fixtureMatch Number
selectTeamPlaceholderPlaceholder for option search input fieldType your team...
selectTeamNoTeamFoundWhen you insert a name of a team that does not support your competition scope given by your features in Client APINo Team Found
selectTeamNoMatchesFoundWhen you choose a team from your search result, but it next 5 matches does not support your competition scope given by your features in Client APINo matches were found
gameStatusTitle for choosing a game status.Game status
createGameStatusDescriptionDescription about choosing a game status.This will be displayed when you CREATE a game!The provided choices are PENDING and OPEN. Keep in mind that if you choose OPEN you can NOT edit your game.
editGameStatusDescriptionDescription about choosing a game status.This will be displayed when you EDIT a game!The provided choices are PENDING, OPEN and CANCELED. Keep in mind that if you choose OPEN you can NOT edit your game anymore and if you choose CANCELED the game will be canceled.
rulesTitle for choosing game rules.Rules
rulesDescriptionDescription for choosing game rules.Describe your rules for participating in the game. You can type plain text or html tags.
flagsTitle for choosing game flags.Flags
flagsPlaceholderPlaceholder on input field for game flagsType your flag and hit enter
repeatedFlagMessagereact-toastify warning message when client submits same flag.You have entered a repeated flag. Please enter a different one.
cutoffTimeTitle for choosing a cutoff time for game.Cutoff time
cutoffTimeDescriptionOnCreateDescription about choosing a cutoff time for creating game.Predictions will be accepted until this time. If not provided it will be automatically generated 15 minutes from the first match played.
cutoffTimeDescriptionOnEditDescription about choosing a cutoff time for editing game.Predictions will be accepted until this time. Keep in mind that this field SHOUT NOT be empty.
editGameUsed as label on create button and as a title on screen when editing a game.Edit game
addFixtureLabel for add button. Add button is displayed when you have fixtures less than your maxFixtures provided by your features from Client APIAdd fixture
removeFixtureLabel for remove button. Remove button is displayed always on your fixture.Remove fixture
backTooltip content for back button (left arrow positioned on top-right corner). You can go back when you create/edit a game or when you visit report screen.Back
reportForLabel positioned on top left side of the screen. Part of Report screen title.Report for
positionLabel in header's report tablePosition
pointsLabel in header's report tablePoints
resultsLabel in header's report tableResults
goldenGoalLabel in header's report tableGolden Goal
predictionsLabel in header's report tablePredictions
gameNotSettledMessageModel message when client clicks on report button for game that is NOT settled.Not all matches have been played and therefore no points awarded yet. Please come back after the matches finish to see the leaderboard.
clearTooltip for clearing button (circled X). Button clears current choosen game cuttof time.Clear
loadingMessageWhen creating/editing a game displaying a react-toastify loading message.Loading...
createGameMessageWhen creating a game displaying a react-toastify successful message for created game.You have successfully created a game.
editGameMessageWhen editing a game displaying a react-toastify successful message for edited game.You have successfully edited a game.
clearCutoffMessageWhen clearing a cutoff time for a game displaying a react-toastify informational message for cleared input field about cutoff time for gameYou have cleared your cutoff time.
minFixturesMessageWhen creating/editing a game displaying a react-toastify warning message about minimum fixtures.There is a requirement how many minimum fixtures you need to provide to create/update game and it is:
sameChosenMatchMessageWhen creating/editing a game displaying a react-toastify warning message about same chosen match for different fixtures.Some of selected matches are repeating
invalidCutoffTimeMessageWhen creating/editing a game displaying a react-toastify warning message about invalid cutoff time for game.Some of the provided matches start before cutoff time. Please choose cutoff time that is before the earliest match kickoff time.
createGameErrorMessageWhen creating a game displaying a react-toastify error message.There was a problem with creating the game. Please try again.
editGameErrorMessageWhen editing a game displaying a react-toastify error message.There was a problem with editing the game. Please try again.
leaderboardErrorMessageWhen editing a game displaying a react-toastify error message.There was a problem with displaying leaderboard. Please try again.
gamePredictionsErrorMessageWhen editing a game displaying a react-toastify error message.There was a problem with getting predictions for users. Please try again.