{"version":3,"sources":["contexts/yearContext.tsx","components/Header.tsx","components/Footer.tsx","components/Layout.tsx","pages/Organizations/compoents/OrganizationSelect.tsx","utils/helpers.ts","hooks/useForm.ts","components/forms/DateTime.tsx","components/forms/FormInput.tsx","pages/Competitors/components/CompetitorForm.tsx","pages/Competitors/components/CompetitiorModal.tsx","pages/Competitors/components/CompetitorsList.tsx","components/Loader.tsx","pages/Competitors/Competitors.tsx","pages/Competitors/components/SignUpCheckbox.tsx","pages/Competitors/components/CompetitorsSignUpList.tsx","pages/Competitors/SignUp.tsx","pages/Competitions/components/CompetitionForm.tsx","pages/Competitions/components/CompetitionEditDialog.tsx","pages/Competitions/components/CompetitionList.tsx","pages/Competitions/Competitions.tsx","pages/Competitors/components/CompetitorsDrawList.tsx","pages/Competitors/Draw.tsx","pages/Competitors/components/ScoresForm.js","pages/Competitors/components/ScoresModal.js","pages/Competitors/components/ScoreListItem.js","pages/Competitors/components/CompetitorsScoreListItem.js","pages/Competitors/components/CompetitorsScoreList.js","pages/Competitors/Score.tsx","pages/Categories/components/CategoryForm.tsx","pages/Categories/components/CategoryModal.tsx","pages/Categories/components/CategoryList.tsx","pages/Categories/Categories.tsx","pages/Referees/components/RefereeEditForm.tsx","pages/Referees/components/RrefereeEditDialog.tsx","pages/Referees/components/RefereeList.tsx","pages/Referees/Referees.tsx","pages/Organizations/compoents/OrganizationEditForm.tsx","pages/Organizations/compoents/OrganizationEditDialog.tsx","pages/Organizations/compoents/OrgnaizationList.tsx","pages/Organizations/Organizations.tsx","App.tsx","registerServiceWorker.js","indexApp.tsx","utils/adalConfig.ts","index.ts"],"names":["YearContext","React","createContext","YearContextProvider","props","useState","Date","getUTCFullYear","toString","year","setYear","Provider","value","children","Header","isOpen","setIsOpen","useContext","Navbar","color","light","className","expand","NavbarBrand","href","NavbarToggler","onClick","Collapse","navbar","Nav","NavItem","NavLink","isAdmin","exact","path","Form","inline","FormGroup","Label","CustomInput","bsSize","id","onChange","e","target","type","UncontrolledDropdown","nav","inNavbar","DropdownToggle","caret","getUser","userName","getHighesRole","DropdownMenu","right","DropdownItem","authContext","logOut","Footer","Container","fluid","OrganizationSelect","selectDefault","useAxios","url","method","loading","error","data","useEffect","name","organizations","map","organization","key","validDate","date","moment","isValid","formatDate","utc","format","useForm","callback","validate","values","setValues","errors","setErrors","isSubmitting","setIsSubmitting","Object","keys","length","handleChange","persist","checked","console","log","handleSubmit","preventDefault","clearForm","DateTime","label","placeholder","closeOnSelect","viewMode","locale","inputProps","timeFormat","FormFeedback","FormInput","validationMessage","otherProps","for","Input","CompetitorForm","toggleModal","organizationId","getCompetitors","competitor","headers","Authorization","getToken","manual","setCompetitor","Number","then","response","status","finally","surname","birthDate","coach","onSubmit","Row","form","Col","sm","check","isPartOfMP","Button","disabled","size","block","CompetitorModal","buttonLabel","buttonColor","Modal","toggle","ModalHeader","ModalBody","CompetitorsList","competitors","Alert","Table","responsive","index","isReferee","Loader","Component","Competitors","selectedOrganizationId","setSelectedOrganizationId","SignUpCheckbox","competitionId","competitorId","setSignedUp","isSignedUp","CompetitorsSignUpList","useParams","slice","SignUp","setOrganizationId","CompetitionForm","getCompetitions","competition","setRequest","city","phone","contact","CompetitionEditDialog","CompetitionList","competitions","title","colSpan","Competitions","MPCompetitions","filter","otherCompetitions","CompetitorsDrawList","category","Card","CardHeader","description","Badge","CardBody","DrawList","competitorsCount","categories","config","ScoresForm","createScore","defaultScore","state","dScore","eScore","disciplineId","deduction","categoryId","axios","post","res","getScore","get","score","setState","isLoading","updateScore","put","event","isButtonDisabled","this","step","required","ResultsModal","modal","setLastUpdatedId","getRefereeCategory","hasVault","lg","hasUnevenBars","hasBalanceBeam","hasFloor","ResultListItem","totalScore","dScoreRank","eScoreRank","totalScoreRank","CompetitorsScoreListItem","getScoreByDiscipline","discipline","scores","highlight","isLocked","ScoresModal","ScoreListItem","Math","round","totalDScore","totalDScoreRank","totalEScore","totalEScoreRank","ScoreHeader","CompetitorsScoreList","catch","sortCompetitors","field","sortedCompetitors","_","orderBy","lastUpdatedId","editingDiscipline","window","localStorage","getItem","message","class","Score","activeTab","setActiveTab","getCompetition","tabs","classnames","active","tab","TabContent","TabPane","tabId","validateCategory","yearFrom","yearTo","CategoryForm","setCategory","md","CategoryModal","buttonType","CategoryList","Categories","RefereeEditForm","getReferees","referee","csgsA","csgsB","csgsC","cgf1","cgf2","cgf3","RefereeEditDialog","RefereeList","referees","Referees","validateOrganization","OrganizationEditForm","getOrganizations","setOrganization","OrganizationEditDialog","OrganizationList","Organizations","Layout","component","Draw","isLocalhost","Boolean","location","hostname","match","registerValidSW","swUrl","navigator","serviceWorker","register","registration","onupdatefound","installingWorker","installing","onstatechange","controller","rootElement","document","getElementById","ReactDOM","render","App","URL","process","origin","addEventListener","fetch","indexOf","ready","unregister","reload","checkValidServiceWorker","registerServiceWorker","adalConfig","tenant","clientId","endpoints","api","cacheLocation","AuthenticationContext","withAdalLogin","getCachedToken","getCachedUser","user","profile","roles","includes","runWithAdal","require"],"mappings":"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","file":"static/js/main.d32dc374.chunk.js","sourcesContent":["import React, { useState } from 'react';\r\n\r\nconst YearContext = React.createContext([{}, () => { }] as any)\r\n\r\nconst YearContextProvider = (props: any) => {\r\n const [year, setYear] = useState<string>(new Date().getUTCFullYear().toString())\r\n return (\r\n <YearContext.Provider value={[year, setYear]}>\r\n {props.children}\r\n </YearContext.Provider>\r\n )\r\n}\r\n\r\nexport { YearContext, YearContextProvider };","import React, { useState, useContext } from \"react\";\r\nimport { Route } from \"react-router\";\r\nimport {\r\n\tCollapse,\r\n\tNavbar,\r\n\tNavbarToggler,\r\n\tNavbarBrand,\r\n\tNav,\r\n\tNavItem,\r\n\tNavLink,\r\n\tCustomInput,\r\n\tFormGroup,\r\n\tLabel,\r\n\tForm,\r\n\tUncontrolledDropdown,\r\n\tDropdownToggle,\r\n\tDropdownMenu,\r\n\tDropdownItem\r\n} from \"reactstrap\";\r\n\r\nimport { getUser, getHighesRole, authContext, isAdmin } from \"../utils/adalConfig\";\r\nimport { YearContext } from \"../contexts/yearContext\";\r\n\r\nexport default function Header() {\r\n\tconst [isOpen, setIsOpen] = useState(false);\r\n\tconst [year, setYear] = useContext(YearContext);\r\n\r\n\treturn (\r\n\t\t<div>\r\n\t\t\t<Navbar color=\"light\" light className=\"mb-4\" expand=\"md\">\r\n\t\t\t\t<NavbarBrand href=\"/\">CSGS SIS</NavbarBrand>\r\n\t\t\t\t<NavbarToggler onClick={() => setIsOpen(!isOpen)} />\r\n\t\t\t\t<Collapse isOpen={isOpen} navbar>\r\n\t\t\t\t\t<Nav className=\"\" navbar>\r\n\t\t\t\t\t\t<NavItem>\r\n\t\t\t\t\t\t\t<NavLink href=\"/\">Závody</NavLink>\r\n\t\t\t\t\t\t</NavItem>\r\n\t\t\t\t\t\t{isAdmin() && <>\r\n\t\t\t\t\t\t\t<NavItem>\r\n\t\t\t\t\t\t\t\t<NavLink href=\"/competitors/list\">ZávodnÃci</NavLink>\r\n\t\t\t\t\t\t\t</NavItem>\r\n\t\t\t\t\t\t\t<NavItem>\r\n\t\t\t\t\t\t\t\t<NavLink href=\"/referees/list\">RozhodÄÃ</NavLink>\r\n\t\t\t\t\t\t\t</NavItem>\r\n\t\t\t\t\t\t\t<NavItem>\r\n\t\t\t\t\t\t\t\t<NavLink href=\"/organizations/list\">OddÃly</NavLink>\r\n\t\t\t\t\t\t\t</NavItem>\r\n\t\t\t\t\t\t</>}\r\n\t\t\t\t\t</Nav>\r\n\t\t\t\t\t<Nav className=\"ml-auto\" navbar>\r\n\t\t\t\t\t\t<Route exact path=\"/\" >\r\n\t\t\t\t\t\t\t<NavItem>\r\n\t\t\t\t\t\t\t\t<div className=\"d-inline-block p-1\">\r\n\t\t\t\t\t\t\t\t\t<Form inline>\r\n\t\t\t\t\t\t\t\t\t\t<FormGroup>\r\n\t\t\t\t\t\t\t\t\t\t\t<Label>Rok</Label>\r\n\t\t\t\t\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t\t\t<CustomInput bsSize=\"sm\" id=\"year\" value={year} onChange={(e) => setYear(e.target.value)} type=\"select\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t<option>2019</option>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<option>2020</option>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<option>2021</option>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<option>2022</option>\r\n\t\t\t\t\t\t\t\t\t\t\t</CustomInput>\r\n\t\t\t\t\t\t\t\t\t\t</FormGroup>\r\n\t\t\t\t\t\t\t\t\t</Form>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</NavItem>\r\n\t\t\t\t\t\t</Route>\r\n\t\t\t\t\t\t<NavItem>\r\n\t\t\t\t\t\t\t<UncontrolledDropdown nav inNavbar>\r\n\t\t\t\t\t\t\t\t<DropdownToggle nav caret>\r\n\t\t\t\t\t\t\t\t\t<i className=\"fas fa-user\"></i>\r\n\t\t\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t{getUser()?.userName}\r\n\t\t\t\t\t\t\t\t\t{\" \"}\r\n\t\t\t\t\t\t\t\t\t{getHighesRole()}\r\n\t\t\t\t\t\t\t\t</DropdownToggle>\r\n\t\t\t\t\t\t\t\t<DropdownMenu right>\r\n\t\t\t\t\t\t\t\t\t<DropdownItem onClick={() => authContext.logOut()}>\r\n\t\t\t\t\t\t\t\t\t\tLogout\r\n \t\t\t\t</DropdownItem>\r\n\t\t\t\t\t\t\t\t</DropdownMenu>\r\n\t\t\t\t\t\t\t</UncontrolledDropdown>\r\n\t\t\t\t\t\t</NavItem>\r\n\t\t\t\t\t</Nav>\r\n\t\t\t\t</Collapse>\r\n\t\t\t</Navbar>\r\n\t\t</div >\r\n\t);\r\n}\r\n","import React from 'react';\r\n\r\nconst Footer = () => {\r\n return (\r\n <div className=\"footer small\">\r\n CSGS © 2019\r\n </div>\r\n );\r\n};\r\n\r\nexport default Footer;","import React from \"react\";\r\nimport { Container } from \"reactstrap\";\r\nimport Header from \"./Header\";\r\nimport Footer from \"./Footer\";\r\n\r\nexport default (props: any) => (\r\n\t<div>\r\n\t\t<Header />\r\n\t\t<Container fluid>{props.children}</Container>\r\n\t\t<Footer />\r\n\t</div>\r\n);\r\n","import React, { useEffect } from \"react\";\r\nimport { CustomInput, InputProps } from \"reactstrap\";\r\nimport useAxios from 'axios-hooks';\r\n\r\nimport { Organization } from \"../../../model\";\r\n\r\ntype IOrganizationSelectProps = InputProps & {\r\n\tselectDefault?: boolean\r\n}\r\n\r\nexport default function OrganizationSelect({ onChange, className, selectDefault, value }: IOrganizationSelectProps) {\r\n\tconst [{ loading, error, data }] = useAxios({\r\n\t\turl: '/api/organizations',\r\n\t\tmethod: 'get'\r\n\t});\r\n\r\n\tuseEffect(() => {\r\n\t\tif (selectDefault) {\r\n\t\t\tonChange!({\r\n\t\t\t\ttarget: {\r\n\t\t\t\t\tvalue: 1,\r\n\t\t\t\t\tname: \"organizationId\"\r\n\t\t\t\t}\r\n\t\t\t} as any)\r\n\t\t}\r\n\t}, [selectDefault]);\r\n\r\n\tif (error) return <div>PÅ™i stahovánà seznamu organizacà ze serveru doÅ¡lo k chybÄ›.</div>\r\n\r\n\treturn (\r\n\t\t<CustomInput\r\n\t\t\ttype=\"select\"\r\n\t\t\tonChange={onChange}\r\n\t\t\tname=\"organizationId\"\r\n\t\t\tid=\"organization\"\r\n\t\t\tvalue={value}\r\n\t\t\tclassName={className}\r\n\t\t>\r\n\t\t\t{loading ? (\r\n\t\t\t\t<option value={0}>Loading...</option>\r\n\t\t\t) : (\r\n\t\t\t\t\tdata.organizations?.map((organization: Organization) => (\r\n\t\t\t\t\t\t<option key={organization.id} value={organization.id}>\r\n\t\t\t\t\t\t\t{organization.name}\r\n\t\t\t\t\t\t</option>\r\n\t\t\t\t\t))\r\n\t\t\t\t)}\r\n\t\t</CustomInput>\r\n\t);\r\n}\r\n","import moment from \"moment\";\r\n\r\nexport function validDate(date: string) {\r\n\tvar utc = moment(date);\r\n\treturn utc.isValid();\r\n}\r\n\r\nexport function formatDate(date: string) {\r\n\tif (date) {\r\n\t\treturn moment.utc(date).format(\"DD. MM. YYYY\");\r\n\t}\r\n\treturn \"\";\r\n}\r\n\r\nexport function isInPast(date: string) {\r\n\treturn moment.utc(date).isBefore();\r\n}\r\n","import { useState, useEffect } from \"react\";\r\n\r\nconst useForm = (callback: any, validate: any) => {\r\n\tconst [values, setValues] = useState<any>({});\r\n\tconst [errors, setErrors] = useState<any>({});\r\n\tconst [isSubmitting, setIsSubmitting] = useState<boolean>(false);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (Object.keys(errors).length === 0 && isSubmitting) {\r\n\t\t\tcallback();\r\n\t\t}\r\n\t}, [errors]);\r\n\r\n\tconst handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\r\n\t\tif (e) e.preventDefault();\r\n\t\tsetErrors(validate(values));\r\n\t\tsetIsSubmitting(true);\r\n\t};\r\n\r\n\tconst handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n\t\tif (e.persist) e.persist();\r\n\t\tif (e.target.type === \"checkbox\") {\r\n\t\t\tsetValues((values: any) => ({\r\n\t\t\t\t...values,\r\n\t\t\t\t[e.target.name]: e.target.checked\r\n\t\t\t}));\r\n\t\t} else {\r\n\t\t\tsetValues((values: any) => ({\r\n\t\t\t\t...values,\r\n\t\t\t\t[e.target.name]: e.target.value\r\n\t\t\t}));\r\n\t\t}\r\n\t\tconsole.log(e.target.value);\r\n\t\tconsole.log(values);\r\n\t};\r\n\r\n\tconst clearForm = () => {\r\n\t\tsetIsSubmitting(false);\r\n\t\tsetValues({});\r\n\t\tsetErrors({});\r\n\t};\r\n\r\n\treturn {\r\n\t\thandleChange,\r\n\t\thandleSubmit,\r\n\t\tclearForm,\r\n\t\tsetValues,\r\n\t\tvalues,\r\n\t\terrors\r\n\t};\r\n};\r\n\r\nexport default useForm;\r\n","import React from \"react\";\r\nimport { FormGroup, Label, FormFeedback } from \"reactstrap\";\r\n\r\nimport Datetime from \"react-datetime\";\r\nimport \"moment/locale/cs\";\r\nimport moment from \"moment\";\r\nimport { formatDate } from \"../../utils/helpers\";\r\n\r\ntype IProps = {\r\n\tonChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n\tvalue: string;\r\n\terrors: any;\r\n\tlabel: string;\r\n\tname: string;\r\n\tplaceholder?: string\r\n};\r\n\r\nexport default function DateTime({ onChange, value, errors, label, name, placeholder }: IProps) {\r\n\treturn (\r\n\t\t<FormGroup>\r\n\t\t\t<Label>{label}</Label>\r\n\t\t\t<Datetime\r\n\t\t\t\tonChange={(value) =>\r\n\t\t\t\t\tonChange({\r\n\t\t\t\t\t\ttarget: {\r\n\t\t\t\t\t\t\tname: name,\r\n\t\t\t\t\t\t\tvalue: value\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} as any)\r\n\t\t\t\t}\r\n\t\t\t\tvalue={formatDate(value)}\r\n\t\t\t\tcloseOnSelect={true}\r\n\t\t\t\tviewMode=\"years\"\r\n\t\t\t\tlocale=\"cs\"\r\n\t\t\t\tinputProps={{ placeholder: placeholder }}\r\n\t\t\t\tutc={true}\r\n\t\t\t\ttimeFormat={false}\r\n\t\t\t\tclassName={errors[name] && \"is-danger is-invalid\"}\r\n\t\t\t/>\r\n\t\t\t<FormFeedback className={errors[name] && \"d-block\"}>\r\n\t\t\t\t{errors[name]}\r\n\t\t\t</FormFeedback>\r\n\t\t</FormGroup>\r\n\t);\r\n}\r\n","import React from \"react\";\r\nimport { FormGroup, Label, Input, FormFeedback, InputProps } from \"reactstrap\";\r\n\r\ntype IFormInput = InputProps & {\r\n\tvalidationMessage: string;\r\n\tlabel: string;\r\n};\r\n\r\nexport default function FormInput({\r\n\tname,\r\n\tvalidationMessage,\r\n\ttype,\r\n\tvalue,\r\n\tlabel,\r\n\tonChange,\r\n\t...otherProps\r\n}: IFormInput) {\r\n\treturn (\r\n\t\t<FormGroup>\r\n\t\t\t<Label for={name}>{label}</Label>\r\n\t\t\t<Input\r\n\t\t\t\ttype={type}\r\n\t\t\t\tonChange={onChange}\r\n\t\t\t\tvalue={value || \"\"}\r\n\t\t\t\tclassName={`form-control ${validationMessage &&\r\n\t\t\t\t\t\"is-danger is-invalid\"}`}\r\n\t\t\t\tname={name}\r\n\t\t\t\t{...otherProps}\r\n\t\t\t/>\r\n\t\t\t{validationMessage && (\r\n\t\t\t\t<FormFeedback className=\"invalid-feedback\">\r\n\t\t\t\t\t{validationMessage}\r\n\t\t\t\t</FormFeedback>\r\n\t\t\t)}\r\n\t\t</FormGroup>\r\n\t);\r\n}\r\n","import React, { useEffect } from \"react\";\r\nimport { Form, Row, Col, Button, CustomInput, FormGroup } from \"reactstrap\";\r\nimport useAxios from 'axios-hooks';\r\n\r\nimport useForm from \"../../../hooks/useForm\";\r\nimport DateTime from \"../../../components/forms/DateTime\";\r\nimport FormInput from \"../../../components/forms/FormInput\";\r\nimport { getToken } from \"../../../utils/adalConfig\";\r\nimport { Competitor } from \"../../../model\";\r\n\r\ninterface IProps {\r\n\ttoggleModal: () => any\r\n\torganizationId: number\r\n\tgetCompetitors: ({ }) => any\r\n\tcompetitor?: Competitor\r\n}\r\n\r\nconst CompetitorForm = ({ toggleModal, organizationId, getCompetitors, competitor }: IProps) => {\r\n\tconst validateCompetitor = (values: any) => {\r\n\t\tlet errors: any = {};\r\n\t\tif (!values.name) {\r\n\t\t\terrors.name = \"Pole nesmà být prázdné.\";\r\n\t\t}\r\n\t\tif (!values.surname) {\r\n\t\t\terrors.surname = \"Pole nesmà být prázdné.\";\r\n\t\t}\r\n\t\tif (!values.birthDate) {\r\n\t\t\terrors.birthDate = \"Pole nesmà být prázdné.\";\r\n\t\t}\r\n\t\tif (!values.coach) {\r\n\t\t\terrors.coach = \"Pole nesmà být prázdné.\";\r\n\t\t}\r\n\t\treturn errors;\r\n\t};\r\n\r\n\tuseEffect(() => {\r\n\t\tcompetitor && setValues(competitor)\r\n\t}, [competitor])\r\n\r\n\tconst [{ loading, error }, setCompetitor] = useAxios({\r\n\t\turl: `/api/competitors`,\r\n\t\tmethod: competitor ? 'put' : 'post',\r\n\t\theaders: { Authorization: \"bearer \" + getToken() },\r\n\t}, {\r\n\t\tmanual: true,\r\n\t})\r\n\r\n\tconst { values, handleChange, handleSubmit, errors, setValues } = useForm(\r\n\t\tregister,\r\n\t\tvalidateCompetitor\r\n\t);\r\n\r\n\tfunction register() {\r\n\t\tsetCompetitor({\r\n\t\t\tdata: {\r\n\t\t\t\t...values,\r\n\t\t\t\torganizationId: Number(organizationId)\r\n\t\t\t}\r\n\t\t}).then(\r\n\t\t\tresponse => {\r\n\t\t\t\tif (response && response.status == 200 || 201) {\r\n\t\t\t\t\tgetCompetitors({\r\n\t\t\t\t\t\turl: `/api/competitors/organization/${organizationId}`\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t).finally(\r\n\t\t\ttoggleModal()\r\n\t\t);\r\n\t}\r\n\r\n\treturn (\r\n\t\t<Form onSubmit={handleSubmit}>\r\n\t\t\t<Row form>\r\n\t\t\t\t<Col sm={6}>\r\n\t\t\t\t\t<FormInput name=\"surname\" label=\"PÅ™ÃjmenÃ\" type=\"text\" value={values.surname} validationMessage={errors.surname} onChange={handleChange} />\r\n\t\t\t\t</Col>\r\n\t\t\t\t<Col sm={6}>\r\n\t\t\t\t\t<FormInput name=\"name\" label=\"Jméno\" type=\"text\" value={values.name} validationMessage={errors.name} onChange={handleChange} />\r\n\t\t\t\t</Col>\r\n\t\t\t</Row>\r\n\t\t\t<Row form>\r\n\t\t\t\t<Col sm={6}>\r\n\t\t\t\t\t<DateTime\r\n\t\t\t\t\t\tlabel=\"Datum narozenÃ\"\r\n\t\t\t\t\t\tonChange={handleChange}\r\n\t\t\t\t\t\tvalue={values.birthDate}\r\n\t\t\t\t\t\terrors={errors}\r\n\t\t\t\t\t\tname=\"birthDate\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t</Col>\r\n\t\t\t\t<Col sm={6}>\r\n\t\t\t\t\t<FormInput name=\"coach\" label=\"Trenér\" value={values.coach} type=\"text\" validationMessage={errors.coach} onChange={handleChange} />\r\n\t\t\t\t</Col>\r\n\t\t\t</Row>\r\n\t\t\t<FormGroup check inline>\r\n\t\t\t\t<CustomInput type=\"checkbox\" label=\"Je souÄástà MP?\" checked={values.isPartOfMP} onChange={handleChange} id=\"isPartOfMP\" name=\"isPartOfMP\" />\r\n\t\t\t</FormGroup>\r\n\t\t\t<Button\r\n\t\t\t\ttype=\"submit\"\r\n\t\t\t\tclassName=\"ml-auto mt-4\"\r\n\t\t\t\tcolor=\"primary\"\r\n\t\t\t\tdisabled={loading}\r\n\t\t\t\tsize=\"lg\"\r\n\t\t\t\tblock\r\n\t\t\t>\r\n\t\t\t\tUložit\r\n\t\t\t</Button>\r\n\t\t</Form>\r\n\t);\r\n};\r\n\r\nexport default CompetitorForm;\r\n","import React from \"react\";\r\nimport { Button, Modal, ModalHeader, ModalBody } from \"reactstrap\";\r\n\r\nimport CompetitorForm from \"./CompetitorForm\";\r\nimport { Competitor } from \"../../../model\";\r\n\r\ntype IProps = {\r\n\tbuttonLabel: string,\r\n\tbuttonColor: string,\r\n\tcompetitor?: Competitor,\r\n\torganizationId: number,\r\n\tgetCompetitors: React.Dispatch<React.SetStateAction<any>>\r\n}\r\n\r\nexport default function CompetitorModal({ buttonLabel, buttonColor, organizationId, getCompetitors, competitor }: IProps) {\r\n\tconst [isOpen, setIsOpen] = React.useState<boolean>(false)\r\n\r\n\treturn (\r\n\t\t<div>\r\n\t\t\t<Button color={buttonColor} onClick={() => setIsOpen(!isOpen)}>\r\n\t\t\t\t{buttonLabel}\r\n\t\t\t</Button>\r\n\t\t\t<Modal isOpen={isOpen} toggle={() => setIsOpen(!isOpen)}>\r\n\t\t\t\t<ModalHeader toggle={() => setIsOpen(!isOpen)}>\r\n\t\t\t\t\tRegistrace nové závodnice\r\n\t\t\t\t</ModalHeader>\r\n\t\t\t\t<ModalBody>\r\n\t\t\t\t\t<CompetitorForm organizationId={organizationId} getCompetitors={getCompetitors} competitor={competitor} toggleModal={() => setIsOpen(!isOpen)} />\r\n\t\t\t\t</ModalBody>\r\n\t\t\t</Modal>\r\n\t\t</div>\r\n\t);\r\n}\r\n","import React from \"react\";\r\nimport { Table, Alert } from \"reactstrap\";\r\nimport { Competitor } from \"../../../model\";\r\nimport { formatDate } from \"../../../utils/helpers\";\r\nimport CompetitorModal from \"./CompetitiorModal\";\r\nimport { isAdmin, isReferee } from \"../../../utils/adalConfig\";\r\n\r\ntype IProps = {\r\n\tcompetitors: Competitor[]\r\n\torganizationId: number\r\n\tgetCompetitors: () => any\r\n}\r\n\r\nexport default function CompetitorsList({ competitors, organizationId, getCompetitors }: IProps) {\r\n\tif (competitors.length < 1) {\r\n\t\treturn (\r\n\t\t\t<Alert color=\"info\">\r\n\t\t\t\tTento oddÃl zatÃm nezaregistroval žádné závodnÃky.\r\n\t\t\t\t</Alert>\r\n\t\t);\r\n\t}\r\n\treturn (\r\n\t\t<Table size=\"sm\" responsive>\r\n\t\t\t<thead>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<th>#</th>\r\n\t\t\t\t\t<th>PÅ™ÃjmenÃ</th>\r\n\t\t\t\t\t<th>Jméno</th>\r\n\t\t\t\t\t<th>RoÄnÃk</th>\r\n\t\t\t\t\t<th>Trenér</th>\r\n\t\t\t\t\t<th className=\"center\">Je souÄástà MP?</th>\r\n\t\t\t\t\t<th></th>\r\n\t\t\t\t</tr>\r\n\t\t\t</thead>\r\n\t\t\t<tbody>\r\n\t\t\t\t{competitors?.map((competitor, index) => (\r\n\t\t\t\t\t<tr key={competitor.id}>\r\n\t\t\t\t\t\t<td>{index + 1}</td>\r\n\t\t\t\t\t\t<td>{competitor.surname}</td>\r\n\t\t\t\t\t\t<td>{competitor.name}</td>\r\n\t\t\t\t\t\t<td>{formatDate(competitor.birthDate)}</td>\r\n\t\t\t\t\t\t<td>{competitor.coach}</td>\r\n\t\t\t\t\t\t<td className=\"center\">{competitor.isPartOfMP ? \"Ano\" : \"Ne\"}</td>\r\n\t\t\t\t\t\t{(isReferee() || isAdmin()) && <td>\r\n\t\t\t\t\t\t\t<CompetitorModal buttonLabel=\"Upravit\" buttonColor=\"link\" organizationId={organizationId} getCompetitors={getCompetitors} competitor={competitor} />\r\n\t\t\t\t\t\t</td>}\r\n\t\t\t\t\t</tr>\r\n\t\t\t\t))}\r\n\t\t\t</tbody>\r\n\t\t</Table>\r\n\t);\r\n}\r\n","import React, { Component } from \"react\";\r\n\r\nclass Loader extends Component {\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t<div className=\"spinner\">\r\n\t\t\t\t<div className=\"cube1\"></div>\r\n\t\t\t\t<div className=\"cube2\"></div>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n}\r\n\r\nexport default Loader;\r\n","import React, { useState } from \"react\";\r\nimport { Container, Label } from \"reactstrap\";\r\nimport OrganizationSelect from \"../Organizations/compoents/OrganizationSelect\";\r\nimport useAxios from \"axios-hooks\";\r\n\r\nimport CompetitorList from \"./components/CompetitorsList\";\r\nimport CompetitorModal from \"./components/CompetitiorModal\";\r\nimport Loader from \"../../components/Loader\";\r\n\r\nexport default function Competitors() {\r\n\tconst [selectedOrganizationId, setSelectedOrganizationId] = React.useState(1)\r\n\tconst [{ loading, error, data }, getCompetitors] = useAxios({\r\n\t\turl: `/api/competitors/organization/${selectedOrganizationId}`,\r\n\t\tmethod: \"get\",\r\n\t});\r\n\r\n\tfunction onChange(e: React.ChangeEvent<HTMLInputElement>) {\r\n\t\tsetSelectedOrganizationId(Number(e.target.value))\r\n\t\tgetCompetitors({\r\n\t\t\turl: `/api/competitors/organization/${e.target.value}`\r\n\t\t});\r\n\t}\r\n\tif (loading) return <Loader />\r\n\tif (error) return <div>PÅ™i naÄÃtánà závodnÃků doÅ¡lo k chybÄ›.</div>\r\n\r\n\treturn (\r\n\t\t<Container fluid>\r\n\t\t\t<h1>ZávodnÃci</h1>\r\n\r\n\t\t\t<Label>OddÃl</Label>\r\n\t\t\t<OrganizationSelect value={selectedOrganizationId} className=\"mb-4\" onChange={onChange} />\r\n\t\t\t<CompetitorModal\r\n\t\t\t\tbuttonColor=\"primary\"\r\n\t\t\t\tbuttonLabel=\"Nová závodnice\"\r\n\t\t\t\tgetCompetitors={getCompetitors}\r\n\t\t\t\torganizationId={selectedOrganizationId}\r\n\t\t\t/>\r\n\r\n\t\t\t<div className=\"mt-4\">\r\n\t\t\t\t<CompetitorList competitors={data.competitors} organizationId={selectedOrganizationId} getCompetitors={getCompetitors} />\r\n\t\t\t</div>\r\n\t\t</Container>\r\n\t);\r\n}\r\n","import React from \"react\";\r\nimport { CustomInput } from \"reactstrap\";\r\nimport useAxios from 'axios-hooks'\r\n\r\ntype IProps = {\r\n\tcompetitionId: string;\r\n\tcompetitorId: number;\r\n}\r\n\r\nexport default function SignUpCheckbox({ competitionId, competitorId }: IProps) {\r\n\tconst [{ loading, error, data }, setSignedUp] = useAxios({\r\n\t\turl: `/api/competitions/${competitionId}/competitor/${competitorId}`,\r\n\t\tmethod: 'get'\r\n\t})\r\n\r\n\tif (error) return <span>PÅ™i stahovánà dat ze serveru doÅ¡lo k chybÄ›.</span>\r\n\tif (loading) return <span>Loading...</span>\r\n\treturn (\r\n\t\t<CustomInput\r\n\t\t\tchecked={data.isSignedUp}\r\n\t\t\tid={competitorId.toString()}\r\n\t\t\tlabel={data.isSignedUp ? \"PÅ™ihlášena\" : \"Odhlášena\"}\r\n\t\t\tonChange={() => setSignedUp({ url: `/api/competitions/${competitionId}/competitor/${competitorId}/togglesignin` })}\r\n\t\t\ttype=\"checkbox\"\r\n\t\t/>\r\n\r\n\t);\r\n}\r\n","import React, { useEffect } from 'react';\r\nimport { useParams } from \"react-router-dom\";\r\nimport { Table } from \"reactstrap\";\r\nimport { Competitor } from '../../../model';\r\nimport SignUpCheckbox from \"../components/SignUpCheckbox\";\r\nimport useAxios from 'axios-hooks';\r\nimport Loader from '../../../components/Loader';\r\n\r\ntype IProps = {\r\n organizationId: string\r\n}\r\n\r\nexport default function CompetitorsSignUpList({ organizationId }: IProps) {\r\n const [{ loading, error, data }, getCompetitors] = useAxios({ url: `/api/competitors/organization/${organizationId}`, method: 'get' })\r\n const { id } = useParams<{ id: string | undefined }>();\r\n\r\n useEffect(() => {\r\n getCompetitors({ url: `/api/competitors/organization/${organizationId}` })\r\n }, [organizationId])\r\n\r\n if (error) {\r\n return <div>PÅ™i stahovánà dat ze serveru doÅ¡lo k chybÄ›.</div>;\r\n }\r\n if (loading) {\r\n return <Loader />;\r\n }\r\n\r\n return (\r\n <Table size=\"sm\" responsive>\r\n <thead>\r\n <tr>\r\n <th>#</th>\r\n <th>PÅ™ÃjmenÃ</th>\r\n <th>Jméno</th>\r\n <th>RoÄnÃk</th>\r\n <th>Trenér</th>\r\n <th></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {data.competitors?.map((competitor: Competitor, index: number) => (\r\n <tr key={competitor.id}>\r\n <td>{index + 1}</td>\r\n <td>{competitor.surname}</td>\r\n <td>{competitor.name}</td>\r\n <td>{competitor.birthDate.slice(0, 4)}</td>\r\n <td>{competitor.coach}</td>\r\n <td>\r\n <SignUpCheckbox\r\n competitionId={id!}\r\n competitorId={competitor.id}\r\n />\r\n </td>\r\n </tr>\r\n ))}\r\n </tbody>\r\n </Table>\r\n )\r\n}","import React, { useState } from \"react\";\r\n\r\nimport OrganizationSelect from \"../Organizations/compoents/OrganizationSelect\";\r\nimport CompetitorsSignUpList from \"./components/CompetitorsSignUpList\";\r\n\r\n\r\nfunction SignUp() {\r\n\tconst [organizationId, setOrganizationId] = useState(\"1\")\r\n\tconst onOrganizationChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n\t\tsetOrganizationId(e.target.value)\r\n\t};\r\n\treturn (\r\n\t\t<div>\r\n\t\t\t<h2>\r\n\t\t\t\tPÅ™ihláška závodnÃků{\" \"}\r\n\t\t\t\t<span className=\"float-right\">\r\n\t\t\t\t\t{/* {competition && competition.name} {competition && competition.date} */}\r\n\t\t\t\t</span>\r\n\t\t\t</h2>\r\n\t\t\t<h4>OddÃl</h4>\r\n\t\t\t<OrganizationSelect className=\"mb-4\" value={organizationId} onChange={onOrganizationChange} />\r\n\t\t\t<CompetitorsSignUpList organizationId={organizationId} />\r\n\t\t</div>\r\n\t);\r\n}\r\n\r\nexport default SignUp;\r\n","import React, { useEffect } from 'react'\r\nimport { Form, Button, FormGroup, CustomInput } from 'reactstrap'\r\nimport useForm from '../../../hooks/useForm';\r\nimport useAxios from 'axios-hooks';\r\nimport { getToken } from \"../../../utils/adalConfig\";\r\nimport DateTime from '../../../components/forms/DateTime';\r\nimport FormInput from '../../../components/forms/FormInput';\r\nimport { Competition } from '../../../model';\r\n\r\ninterface IProps {\r\n getCompetitons: () => any\r\n competiton?: Competition\r\n}\r\n\r\nexport default function CompetitionForm({ getCompetitions, competition }: any) {\r\n // Validation messages\r\n const validateCompetition = (values: any) => {\r\n let errors: any = {};\r\n if (!values.name) {\r\n errors.name = \"Jméno nesmà být prázdné.\";\r\n }\r\n if (!values.city) {\r\n errors.city = \"MÄ›sto nesmà být prázdné.\";\r\n }\r\n if (!values.date) {\r\n errors.date = \"Datum nesmà být prázdné.\";\r\n }\r\n if (!values.phone) {\r\n errors.phone = \"Pole nesmà být prázdné.\";\r\n }\r\n if (!values.contact) {\r\n errors.contact = \"Pole nesmà být prázdné.\";\r\n }\r\n return errors;\r\n };\r\n\r\n const [{ loading, error }, setRequest] = useAxios({\r\n url: `/api/competitions`,\r\n method: competition ? 'put' : 'post',\r\n headers: { Authorization: \"bearer \" + getToken() },\r\n }, {\r\n manual: true,\r\n })\r\n\r\n function submit() {\r\n setRequest({\r\n data: { ...values }\r\n }).then(response => {\r\n if (response?.status == 201 || 200) {\r\n getCompetitions();\r\n }\r\n })\r\n }\r\n\r\n useEffect(() => {\r\n competition && setValues(competition)\r\n }, [competition])\r\n\r\n const { values, handleChange, handleSubmit, setValues, errors } = useForm(\r\n submit,\r\n validateCompetition\r\n );\r\n\r\n return (\r\n <Form id=\"form\" onSubmit={handleSubmit}>\r\n <FormInput\r\n name=\"name\"\r\n label=\"Název\"\r\n type=\"text\"\r\n onChange={handleChange}\r\n value={values.name}\r\n validationMessage={errors.name}\r\n />\r\n <DateTime\r\n label=\"Datum\"\r\n onChange={handleChange}\r\n value={values.date}\r\n errors={errors}\r\n name=\"date\"\r\n />\r\n <FormInput\r\n name=\"city\"\r\n label=\"MÄ›sto\"\r\n type=\"text\"\r\n onChange={handleChange}\r\n value={values.city}\r\n validationMessage={errors.city}\r\n />\r\n <FormInput\r\n name=\"contact\"\r\n label=\"PoÅ™adatel\"\r\n type=\"text\"\r\n onChange={handleChange}\r\n value={values.contact}\r\n validationMessage={errors.contact}\r\n />\r\n <FormInput\r\n name=\"phone\"\r\n label=\"Telefon na poÅ™adatele\"\r\n type=\"text\"\r\n onChange={handleChange}\r\n value={values.phone}\r\n validationMessage={errors.phone}\r\n />\r\n <FormGroup>\r\n <CustomInput type=\"checkbox\" className=\"\" label=\"Je souÄástà MP?\" checked={values.isPartOfMP} onChange={handleChange} id=\"isPartOfMP\" name=\"isPartOfMP\" />\r\n </FormGroup>\r\n <Button\r\n color=\"primary\"\r\n form=\"form\"\r\n size=\"lg\"\r\n type=\"submit\"\r\n block\r\n onClick={handleSubmit}\r\n >\r\n Uložit\r\n </Button>\r\n </Form>\r\n )\r\n}","import React, { useState } from \"react\";\r\nimport {\r\n Button,\r\n Modal,\r\n ModalHeader,\r\n ModalBody,\r\n} from \"reactstrap\";\r\n\r\nimport CompetitionForm from \"./CompetitionForm\";\r\nimport { Competition } from \"../../../model\";\r\nimport { AxiosPromise } from \"axios\";\r\nimport { isAdmin } from \"../../../utils/adalConfig\";\r\n\r\ntype ICompetitionDialog = {\r\n buttonLabel: string;\r\n buttonColor: string;\r\n className?: string;\r\n getCompetitions: () => AxiosPromise<any>\r\n competition?: Competition;\r\n}\r\n\r\nexport default function CompetitionEditDialog({ competition, buttonLabel, buttonColor, className, getCompetitions }: ICompetitionDialog) {\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const toggle = () => setIsOpen(!isOpen);\r\n\r\n if (isAdmin()) {\r\n return (\r\n <>\r\n <Button color={buttonColor} className={className} onClick={() => setIsOpen(true)}>\r\n {buttonLabel}\r\n </Button>\r\n <Modal isOpen={isOpen} toggle={toggle}>\r\n <ModalHeader toggle={toggle}>\r\n {competition ? \"Editace závodu\" : \"Nový závod\"}\r\n </ModalHeader>\r\n <ModalBody>\r\n <CompetitionForm toggle={toggle} getCompetitions={getCompetitions} competition={competition} />\r\n </ModalBody>\r\n </Modal>\r\n </>\r\n );\r\n }\r\n return null;\r\n}","import React from \"react\";\r\nimport { Table, Alert } from \"reactstrap\";\r\nimport { Competition } from \"../../../model\";\r\nimport { formatDate } from \"../../../utils/helpers\";\r\nimport { isAdmin, isReferee } from \"../../../utils/adalConfig\";\r\nimport CompetitionEditDialog from \"./CompetitionEditDialog\";\r\n\r\ntype ICompetitionListProps = {\r\n\tcompetitions: Competition[]\r\n\ttitle: string\r\n\tyear: string\r\n\tgetCompetitions: () => any\r\n}\r\n\r\nexport default function CompetitionList({ competitions, title, year, getCompetitions }: ICompetitionListProps) {\r\n\tfunction renderCompetitionRow(competition: Competition) {\r\n\t\treturn (\r\n\t\t\t<tr key={competition.id}>\r\n\t\t\t\t<td>{competition.id}</td>\r\n\t\t\t\t<td>{formatDate(competition.date)}</td>\r\n\t\t\t\t<td>{competition.name}</td>\r\n\t\t\t\t<td>{competition.city}</td>\r\n\t\t\t\t<td>{competition.contact}</td>\r\n\t\t\t\t<td>{competition.phone}</td>\r\n\t\t\t\t{isAdmin() && <>\r\n\t\t\t\t\t<td><a href={\"/competition/\" + competition.id + \"/signup\"}>PÅ™ihlášky</a></td>\r\n\t\t\t\t\t<td><a href={\"/competition/\" + competition.id + \"/categories\"}>Kategorie</a></td>\r\n\t\t\t\t\t<td><a href={\"/competition/\" + competition.id + \"/draw\"}>Startovnà listina</a></td>\r\n\t\t\t\t</>}\r\n\t\t\t\t{(isAdmin() || isReferee()) && <td><a href={\"/competition/\" + competition.id + \"/score\"}>Výsledky</a></td>}\r\n\t\t\t\t{isAdmin() && <td><CompetitionEditDialog buttonLabel=\"Upravit\" buttonColor=\"link\" competition={competition} getCompetitions={getCompetitions} /></td>}\r\n\t\t\t</tr>\r\n\t\t)\r\n\t}\r\n\tif (competitions.length === 0) {\r\n\t\treturn (\r\n\t\t\t<>\r\n\t\t\t\t<h2>{title} {year}</h2>\r\n\t\t\t\t<Alert color=\"info\">V tomto roce zatÃm nebyly naplánovány žádné závody.</Alert>\r\n\t\t\t</>\r\n\t\t)\r\n\t}\r\n\treturn (\r\n\t\t<>\r\n\t\t\t<h2>{title} - rok {year}</h2>\r\n\t\t\t<Table size=\"sm\" responsive>\r\n\t\t\t\t<thead>\r\n\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t<th>#</th>\r\n\t\t\t\t\t\t<th>Datum</th>\r\n\t\t\t\t\t\t<th>Název</th>\r\n\t\t\t\t\t\t<th>MÄ›sto</th>\r\n\t\t\t\t\t\t<th>PoÅ™adatel</th>\r\n\t\t\t\t\t\t<th>Telefon na poÅ™adatele</th>\r\n\t\t\t\t\t\t<th colSpan={5}></th>\r\n\t\t\t\t\t</tr>\r\n\t\t\t\t</thead>\r\n\t\t\t\t<tbody>\r\n\t\t\t\t\t{competitions?.map(renderCompetitionRow)}\r\n\t\t\t\t</tbody>\r\n\t\t\t</Table>\r\n\t\t</>\r\n\t)\r\n}\r\n","import React, { useContext, useEffect } from \"react\";\r\nimport { Container, Button } from \"reactstrap\";\r\nimport CompetitionList from \"./components/CompetitionList\";\r\nimport { YearContext } from \"../../contexts/yearContext\";\r\nimport { Competition } from \"../../model\";\r\nimport useAxios from \"axios-hooks\";\r\nimport Loader from \"../../components/Loader\";\r\nimport CompetitionEditDialog from \"./components/CompetitionEditDialog\";\r\nimport { getToken } from \"../../utils/adalConfig\";\r\nimport ScoreModal from \"../Score/components/ScoreModal\";\r\n// import ScoreModal from \"../Score/components/ScoreModal\";\r\n\r\nexport default function Competitions() {\r\n\tconst [year] = useContext(YearContext)\r\n\tconst [{ loading, error, data }, getCompetitions] = useAxios({\r\n\t\turl: `/api/competitions/year/${year}`,\r\n\t\tmethod: 'get',\r\n\t\theaders: { Authorization: \"bearer \" + getToken() },\r\n\t}\r\n\t);\r\n\r\n\tuseEffect(() => {\r\n\t\tgetCompetitions({ url: `/api/competitions/year/${year}` })\r\n\t}, [year])\r\n\r\n\tif (loading) {\r\n\t\treturn <Loader />;\r\n\t}\r\n\tif (error) {\r\n\t\treturn <div>PÅ™i naÄÃtánà dat doÅ¡lo k chybÄ›.</div>;\r\n\t}\r\n\r\n\tconst MPCompetitions = data.competitions?.filter((competition: Competition) => competition.isPartOfMP == true)\r\n\tconst otherCompetitions = data.competitions?.filter((competition: Competition) => competition.isPartOfMP == false)\r\n\r\n\treturn (\r\n\t\t<Container fluid>\r\n\t\t\t<h1>Závody</h1>\r\n\t\t\t<CompetitionEditDialog className=\"mb-3\" buttonLabel=\"Nový závod\" buttonColor=\"primary\" getCompetitions={getCompetitions} />\r\n\t\t\t<CompetitionList competitions={MPCompetitions} title=\"Moravský pohár\" getCompetitions={getCompetitions} year={year} />\r\n\t\t\t<CompetitionList competitions={otherCompetitions} title=\"Ostatnà závody\" getCompetitions={getCompetitions} year={year} />\r\n\t\t\t{/* <ScoreModal buttonLabel=\"Ukázka nového zadávánà výsledků\" /> */}\r\n\t\t</Container>\r\n\t);\r\n}\r\n","import React from \"react\";\r\nimport { Table, Alert, Card, CardBody, CardHeader, Badge } from \"reactstrap\";\r\nimport { Competitor } from \"../../../model\";\r\n\r\nexport default function CompetitorsDrawList({ category }: any) {\r\n\r\n\tif (category.competitors.length < 1) {\r\n\t\treturn (\r\n\t\t\t<Alert color=\"info\">\r\n\t\t\t\tDo této kategorie nejsou pÅ™ihlášeny žádné závodnice.\r\n\t\t\t</Alert>\r\n\t\t);\r\n\t}\r\n\r\n\treturn (\r\n\t\t<Card className=\"mb-4\">\r\n\t\t\t<CardHeader>\r\n\t\t\t\t<b>\r\n\t\t\t\t\t{category.name} - {category.description}\r\n\t\t\t\t</b>{\" \"}\r\n\t\t\t\t<Badge color=\"dark\">{category.competitors.length}</Badge>\r\n\t\t\t</CardHeader>\r\n\t\t\t<CardBody>\r\n\t\t\t\t<Table size=\"sm\" responsive>\r\n\t\t\t\t\t<thead>\r\n\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t<th>#</th>\r\n\t\t\t\t\t\t\t<th>PÅ™ÃjmenÃ</th>\r\n\t\t\t\t\t\t\t<th>Jméno</th>\r\n\t\t\t\t\t\t\t<th>RoÄnÃk</th>\r\n\t\t\t\t\t\t\t<th>Trenér</th>\r\n\t\t\t\t\t\t\t<th>OddÃl</th>\r\n\t\t\t\t\t\t</tr>\r\n\t\t\t\t\t</thead>\r\n\t\t\t\t\t<tbody>\r\n\t\t\t\t\t\t{category.competitors?.map((competitor: Competitor, index: number) => (\r\n\t\t\t\t\t\t\t<tr key={competitor.id}>\r\n\t\t\t\t\t\t\t\t<td>{index + 1}</td>\r\n\t\t\t\t\t\t\t\t<td>{competitor.surname}</td>\r\n\t\t\t\t\t\t\t\t<td>{competitor.name}</td>\r\n\t\t\t\t\t\t\t\t<td>{competitor.birthDate.slice(0, 4)}</td>\r\n\t\t\t\t\t\t\t\t<td>{competitor.coach}</td>\r\n\t\t\t\t\t\t\t\t<td>{competitor.organization.name}</td>\r\n\t\t\t\t\t\t\t</tr>\r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t</tbody>\r\n\t\t\t\t</Table>\r\n\t\t\t</CardBody>\r\n\t\t</Card>\r\n\t);\r\n}\r\n","import React from \"react\";\r\nimport useAxios from \"axios-hooks\";\r\nimport { useParams } from \"react-router\";\r\nimport { Container, Badge, Alert } from \"reactstrap\";\r\n\r\nimport { getToken } from \"../../utils/adalConfig\";\r\nimport CompetitorsDrawList from \"./components/CompetitorsDrawList\";\r\nimport Loader from \"../../components/Loader\";\r\nimport { formatDate } from \"../../utils/helpers\";\r\nimport { Category } from \"../../model\";\r\n\r\nexport default function DrawList() {\r\n\tconst { id } = useParams<{ id: string | undefined }>();\r\n\tconst [{ loading, error, data }] = useAxios({\r\n\t\turl: `api/competitions/${id}/drawlist`,\r\n\t\tmethod: \"get\",\r\n\t\theaders: { Authorization: \"bearer \" + getToken() }\r\n\t});\r\n\r\n\tif (error) {\r\n\t\treturn <Alert>PÅ™i stahovánà dat ze serveru doÅ¡lo k chybÄ›.</Alert>;\r\n\t}\r\n\tif (loading) {\r\n\t\treturn <Loader />;\r\n\t}\r\n\treturn (\r\n\t\t<Container fluid>\r\n\t\t\t<h1>\r\n\t\t\t\tStartovnà listina - {data.name} {formatDate(data.date)}{\" \"}\r\n\t\t\t\t<Badge>{data.competitorsCount}</Badge>\r\n\t\t\t</h1>\r\n\t\t\t{data.categories?.map((category: Category) => (\r\n\t\t\t\t<div key={category.id}>\r\n\t\t\t\t\t<CompetitorsDrawList\r\n\t\t\t\t\t\tcategory={category}\r\n\t\t\t\t\t/>\r\n\t\t\t\t</div>\r\n\t\t\t))}\r\n\t\t</Container>\r\n\t);\r\n}\r\n","import React from \"react\";\r\nimport { Input, Label, Form, FormGroup, Button, Row, Col } from \"reactstrap\";\r\nimport axios from \"axios\";\r\n\r\nimport { getToken } from \"../../../utils/adalConfig\";\r\n\r\nconst config = {\r\n\theaders: { Authorization: \"bearer \" + getToken() }\r\n};\r\n\r\nexport default class ScoresForm extends React.Component {\r\n\tconstructor() {\r\n\t\tsuper();\r\n\r\n\t\tthis.state = {\r\n\t\t\tid: 0,\r\n\t\t\tdefaultScore: 10,\r\n\t\t\teScore: null,\r\n\t\t\tdScore: null,\r\n\t\t\tdeduction: 0,\r\n\t\t\tdisciplineId: null,\r\n\t\t\tcompetitorId: null,\r\n\t\t\tisLoading: true,\r\n\t\t\tisButtonDisabled: false\r\n\t\t};\r\n\t}\r\n\r\n\tcreateScore = () => {\r\n\t\tconst data = {\r\n\t\t\tdefaultScore: Number(this.state.defaultScore),\r\n\t\t\tdScore: Number(this.state.dScore),\r\n\t\t\teScore: Number(this.state.eScore),\r\n\t\t\tdisciplineId: Number(this.state.disciplineId),\r\n\t\t\tdeduction: Number(this.state.deduction),\r\n\t\t\tcompetitorId: this.state.competitorId,\r\n\t\t\tcompetitionId: this.props.competitionId,\r\n\t\t\tcategoryId: this.props.category.id\r\n\t\t};\r\n\r\n\t\treturn axios.post(`/api/scores`, data, config).then(res => {\r\n\t\t\tif (res.status === 201) {\r\n\t\t\t\tthis.props.getCompetitors();\r\n\t\t\t}\r\n\t\t\tthis.props.toggleModal();\r\n\t\t});\r\n\t};\r\n\r\n\tgetScore = disciplineId => {\r\n\t\tconst competitorId = this.props.competitor.id;\r\n\t\tconst competitionId = this.props.competitionId;\r\n\r\n\t\taxios\r\n\t\t\t.get(\r\n\t\t\t\t`/api/scores/competitor/${competitorId}/competition/${competitionId}/discipline/${disciplineId}`,\r\n\t\t\t\tconfig\r\n\t\t\t)\r\n\t\t\t.then(res => {\r\n\t\t\t\tif (res.status === 200) {\r\n\t\t\t\t\tconst score = res.data;\r\n\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\teScore: score.eScore,\r\n\t\t\t\t\t\tdScore: score.dScore,\r\n\t\t\t\t\t\tdefaultScore: score.defaultScore,\r\n\t\t\t\t\t\tdeduction: score.deduction,\r\n\t\t\t\t\t\tid: score.id,\r\n\t\t\t\t\t\tisLoading: false\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.setState({ isLoading: false });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t};\r\n\r\n\tupdateScore = score => {\r\n\t\tconst data = {\r\n\t\t\teScore: Number(score.eScore),\r\n\t\t\tdScore: Number(score.dScore),\r\n\t\t\tdefaultScore: Number(score.defaultScore),\r\n\t\t\tdeduction: Number(score.deduction),\r\n\t\t\tcompetitorId: this.state.competitorId,\r\n\t\t\tcompetitionId: this.props.competitionId,\r\n\t\t\tcategoryId: this.props.category.id,\r\n\t\t\tdisciplineId: Number(this.state.disciplineId),\r\n\t\t\tid: score.id\r\n\t\t};\r\n\r\n\t\tconst config = {\r\n\t\t\theaders: {\r\n\t\t\t\tAuthorization: \"bearer \" + getToken(),\r\n\t\t\t\t\"Content-Type\": \"application/json\"\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\treturn axios.put(`/api/scores`, data, config).then(res => {\r\n\t\t\tif (res.status === 200) {\r\n\t\t\t\tthis.props.getCompetitors();\r\n\t\t\t\tthis.props.toggleModal();\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\tcomponentDidMount() {\r\n\t\tthis.setState({\r\n\t\t\tdisciplineId: this.props.disciplineId,\r\n\t\t\tcompetitorId: this.props.competitor.id,\r\n\t\t\tcompetitionId: this.props.competition\r\n\t\t});\r\n\t\tthis.getScore(this.props.disciplineId);\r\n\t}\r\n\r\n\thandleSubmit = event => {\r\n\t\tevent.preventDefault();\r\n\t\tthis.setState({ isButtonDisabled: true });\r\n\t\tif (this.state.id === 0) {\r\n\t\t\tthis.createScore(this.state);\r\n\t\t} else {\r\n\t\t\tthis.updateScore(this.state);\r\n\t\t}\r\n\t};\r\n\r\n\tonChange = e => this.setState({ [e.target.name]: e.target.value });\r\n\r\n\trender() {\r\n\t\tif (this.state.isLoading) {\r\n\t\t\treturn <div>Loading...</div>;\r\n\t\t}\r\n\t\treturn (\r\n\t\t\t<Form onSubmit={this.handleSubmit}>\r\n\t\t\t\t<Row>\r\n\t\t\t\t\t<Col sm={6}>\r\n\t\t\t\t\t\t<FormGroup>\r\n\t\t\t\t\t\t\t<Label>Známka D</Label>\r\n\t\t\t\t\t\t\t<Input\r\n\t\t\t\t\t\t\t\ttype=\"number\"\r\n\t\t\t\t\t\t\t\tstep=\"0.001\"\r\n\t\t\t\t\t\t\t\trequired\r\n\t\t\t\t\t\t\t\tonChange={this.onChange}\r\n\t\t\t\t\t\t\t\tname=\"dScore\"\r\n\t\t\t\t\t\t\t\tbsSize=\"sm\"\r\n\t\t\t\t\t\t\t\tvalue={this.state.dScore}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</FormGroup>\r\n\t\t\t\t\t</Col>\r\n\t\t\t\t\t<Col sm={6}>\r\n\t\t\t\t\t\t<FormGroup>\r\n\t\t\t\t\t\t\t<Label>Známka E</Label>\r\n\t\t\t\t\t\t\t<Input\r\n\t\t\t\t\t\t\t\ttype=\"number\"\r\n\t\t\t\t\t\t\t\tstep=\"0.001\"\r\n\t\t\t\t\t\t\t\trequired\r\n\t\t\t\t\t\t\t\tonChange={this.onChange}\r\n\t\t\t\t\t\t\t\tname=\"eScore\"\r\n\t\t\t\t\t\t\t\tbsSize=\"sm\"\r\n\t\t\t\t\t\t\t\tvalue={this.state.eScore}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</FormGroup>\r\n\t\t\t\t\t</Col>\r\n\t\t\t\t</Row>\r\n\t\t\t\t<Row>\r\n\t\t\t\t\t<Col sm={6}>\r\n\t\t\t\t\t\t<FormGroup>\r\n\t\t\t\t\t\t\t<Label>Výchozà známka</Label>\r\n\t\t\t\t\t\t\t<Input\r\n\t\t\t\t\t\t\t\ttype=\"number\"\r\n\t\t\t\t\t\t\t\tstep=\"0.001\"\r\n\t\t\t\t\t\t\t\trequired\r\n\t\t\t\t\t\t\t\tonChange={this.onChange}\r\n\t\t\t\t\t\t\t\tname=\"defaultScore\"\r\n\t\t\t\t\t\t\t\tbsSize=\"sm\"\r\n\t\t\t\t\t\t\t\tvalue={this.state.defaultScore}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</FormGroup>\r\n\t\t\t\t\t</Col>\r\n\t\t\t\t\t<Col sm={6}>\r\n\t\t\t\t\t\t<FormGroup>\r\n\t\t\t\t\t\t\t<Label>Neutrálnà srážky</Label>\r\n\t\t\t\t\t\t\t<Input\r\n\t\t\t\t\t\t\t\ttype=\"number\"\r\n\t\t\t\t\t\t\t\tstep=\"0.001\"\r\n\t\t\t\t\t\t\t\trequired\r\n\t\t\t\t\t\t\t\tonChange={this.onChange}\r\n\t\t\t\t\t\t\t\tname=\"deduction\"\r\n\t\t\t\t\t\t\t\tbsSize=\"sm\"\r\n\t\t\t\t\t\t\t\tvalue={this.state.deduction}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</FormGroup>\r\n\t\t\t\t\t</Col>\r\n\t\t\t\t</Row>\r\n\t\t\t\t<Button\r\n\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\tblock\r\n\t\t\t\t\tdisabled={this.state.isButtonDisabled}\r\n\t\t\t\t\ttype=\"submit\"\r\n\t\t\t\t>\r\n\t\t\t\t\tUložit\r\n\t\t\t\t</Button>\r\n\t\t\t</Form>\r\n\t\t);\r\n\t}\r\n}\r\n","import React from \"react\";\r\nimport {\r\n\tModal,\r\n\tModalHeader,\r\n\tModalBody,\r\n\tCard,\r\n\tCardBody,\r\n\tCardHeader,\r\n\tRow,\r\n\tCol\r\n} from \"reactstrap\";\r\n\r\nimport { getRefereeCategory, isAdmin } from \"../../../utils/adalConfig\";\r\nimport ScoresForm from \"./ScoresForm\";\r\n\r\nclass ResultsModal extends React.Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n\t\tthis.state = {\r\n\t\t\tmodal: false\r\n\t\t};\r\n\t}\r\n\r\n\ttoggleModal = () => {\r\n\t\tthis.setState({\r\n\t\t\tmodal: !this.state.modal\r\n\t\t});\r\n\t\tthis.props.setLastUpdatedId(this.props.competitor.id);\r\n\t};\r\n\r\n\trender() {\r\n\t\tconsole.log(\"Has bars?\", getRefereeCategory() == \"UnevenBars\");\r\n\t\treturn (\r\n\t\t\t<div>\r\n\t\t\t\t<a color=\"link\" className=\"text-primary\" onClick={this.toggleModal}>\r\n\t\t\t\t\t{this.props.buttonLabel}\r\n\t\t\t\t</a>\r\n\t\t\t\t<Modal\r\n\t\t\t\t\tisOpen={this.state.modal}\r\n\t\t\t\t\ttoggle={this.toggle}\r\n\t\t\t\t\tclassName=\"modal-lg\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<ModalHeader toggle={this.toggleModal}>\r\n\t\t\t\t\t\tVýsledky {this.props.competitor.name}{\" \"}\r\n\t\t\t\t\t\t{this.props.competitor.surname}\r\n\t\t\t\t\t</ModalHeader>\r\n\t\t\t\t\t<ModalBody>\r\n\t\t\t\t\t\t<Row>\r\n\t\t\t\t\t\t\t{this.props.category.hasVault &&\r\n\t\t\t\t\t\t\t\t(isAdmin() || getRefereeCategory() == \"Vault\") && (\r\n\t\t\t\t\t\t\t\t\t<Col className=\"mb-2\" lg={6}>\r\n\t\t\t\t\t\t\t\t\t\t<Card>\r\n\t\t\t\t\t\t\t\t\t\t\t<CardHeader>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<strong>PÅ™eskok</strong>\r\n\t\t\t\t\t\t\t\t\t\t\t</CardHeader>\r\n\t\t\t\t\t\t\t\t\t\t\t<CardBody>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<ScoresForm\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tdisciplineId=\"1\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\ttoggleModal={this.toggleModal}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tgetCompetitors={this.props.getCompetitors}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcompetitor={this.props.competitor}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcategory={this.props.category}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcompetitionId={this.props.competitionId}\r\n\t\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t</CardBody>\r\n\t\t\t\t\t\t\t\t\t\t</Card>\r\n\t\t\t\t\t\t\t\t\t</Col>\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t{this.props.category.hasUnevenBars &&\r\n\t\t\t\t\t\t\t\t(isAdmin() || getRefereeCategory() == \"UnevenBars\") && (\r\n\t\t\t\t\t\t\t\t\t<Col className=\"mb-2\" lg={6}>\r\n\t\t\t\t\t\t\t\t\t\t<Card>\r\n\t\t\t\t\t\t\t\t\t\t\t<CardHeader>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<strong>Bradla</strong>\r\n\t\t\t\t\t\t\t\t\t\t\t</CardHeader>\r\n\t\t\t\t\t\t\t\t\t\t\t<CardBody>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<ScoresForm\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tdisciplineId=\"2\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\ttoggleModal={this.toggleModal}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tgetCompetitors={this.props.getCompetitors}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcompetitor={this.props.competitor}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcategory={this.props.category}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcompetitionId={this.props.competitionId}\r\n\t\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t</CardBody>\r\n\t\t\t\t\t\t\t\t\t\t</Card>\r\n\t\t\t\t\t\t\t\t\t</Col>\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t{this.props.category.hasBalanceBeam &&\r\n\t\t\t\t\t\t\t\t(isAdmin() || getRefereeCategory() == \"BalanceBeam\") && (\r\n\t\t\t\t\t\t\t\t\t<Col className=\"mb-2\" lg={6}>\r\n\t\t\t\t\t\t\t\t\t\t<Card>\r\n\t\t\t\t\t\t\t\t\t\t\t<CardHeader>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<strong>Kladina</strong>\r\n\t\t\t\t\t\t\t\t\t\t\t</CardHeader>\r\n\t\t\t\t\t\t\t\t\t\t\t<CardBody>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<ScoresForm\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tdisciplineId=\"3\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\ttoggleModal={this.toggleModal}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tgetCompetitors={this.props.getCompetitors}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcompetitor={this.props.competitor}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcategory={this.props.category}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcompetitionId={this.props.competitionId}\r\n\t\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t</CardBody>\r\n\t\t\t\t\t\t\t\t\t\t</Card>\r\n\t\t\t\t\t\t\t\t\t</Col>\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t{this.props.category.hasFloor &&\r\n\t\t\t\t\t\t\t\t(isAdmin() || getRefereeCategory() == \"Floor\") && (\r\n\t\t\t\t\t\t\t\t\t<Col className=\"mb-2\" lg={6}>\r\n\t\t\t\t\t\t\t\t\t\t<Card>\r\n\t\t\t\t\t\t\t\t\t\t\t<CardHeader>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<strong>Prostná</strong>\r\n\t\t\t\t\t\t\t\t\t\t\t</CardHeader>\r\n\t\t\t\t\t\t\t\t\t\t\t<CardBody>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<ScoresForm\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tdisciplineId=\"4\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\ttoggleModal={this.toggleModal}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tgetCompetitors={this.props.getCompetitors}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcompetitor={this.props.competitor}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcategory={this.props.category}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcompetitionId={this.props.competitionId}\r\n\t\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t</CardBody>\r\n\t\t\t\t\t\t\t\t\t\t</Card>\r\n\t\t\t\t\t\t\t\t\t</Col>\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t</Row>\r\n\t\t\t\t\t</ModalBody>\r\n\t\t\t\t</Modal>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n}\r\n\r\nexport default ResultsModal;\r\n","import React, { Component } from \"react\";\r\nimport { isAdmin, getRefereeCategory, isReferee } from \"../../../utils/adalConfig\";\r\n\r\nclass ResultListItem extends Component {\r\n\trender() {\r\n\t\tconst score = this.props.score[0];\r\n\t\tconst eScore = score ? score.eScore : \"\";\r\n\t\tconst dScore = score ? score.dScore : \"\";\r\n\t\tconst deduction = score ? score.deduction : \"\";\r\n\t\tconst defaultScore = score ? score.defaultScore : \"\";\r\n\t\tconst totalScore = score ? score.totalScore : \"\";\r\n\r\n\t\treturn (\r\n\t\t\t<>\r\n\t\t\t\t<td className=\"border-left center\">\r\n\t\t\t\t\t{dScore}\r\n\t\t\t\t\t<br />\r\n\t\t\t\t\t<span className=\"small\">{score && score.dScoreRank}</span>\r\n\t\t\t\t</td>\r\n\t\t\t\t<td className=\"center\">\r\n\t\t\t\t\t{eScore}\r\n\t\t\t\t\t<br />\r\n\t\t\t\t\t<span className=\"small\">{score && score.eScoreRank}</span>\r\n\t\t\t\t</td>\r\n\t\t\t\t<td className=\"center\">{defaultScore}</td>\r\n\t\t\t\t<td className=\"center\">{deduction}</td>\r\n\t\t\t\t<td className=\"border-right center\">\r\n\t\t\t\t\t<strong>{totalScore}</strong>\r\n\t\t\t\t\t<br />\r\n\t\t\t\t\t<span className=\"small\">{score && score.totalScoreRank}</span>\r\n\t\t\t\t</td>\r\n\t\t\t</>\r\n\t\t);\r\n\t}\r\n}\r\n\r\nexport default ResultListItem;\r\n","import React from \"react\";\r\nimport ScoresModal from \"./ScoresModal\";\r\nimport ScoreListItem from \"./ScoreListItem\";\r\nimport { isAdmin, getRefereeCategory, isReferee } from \"../../../utils/adalConfig\";\r\n\r\nexport default class CompetitorsScoreListItem extends React.Component {\r\n\tgetScoreByDiscipline = discipline => {\r\n\t\tconst score = this.props.competitor.scores.filter(\r\n\t\t\tscore => score.competitionId === this.props.competition.id\r\n\t\t);\r\n\t\treturn score.filter(score => score.disciplineId === discipline);\r\n\t};\r\n\r\n\trender() {\r\n\t\tconst {\r\n\t\t\tcompetitor,\r\n\t\t\tcompetition,\r\n\t\t\tgetCompetitors,\r\n\t\t\tcategory,\r\n\t\t\thighlight,\r\n\t\t\tsetLastUpdatedId,\r\n\t\t} = this.props;\r\n\t\tconsole.log(\"RefereeCategrory\", getRefereeCategory())\r\n\t\treturn (\r\n\t\t\t<>\r\n\t\t\t\t<tr key={competitor.id} className={highlight ? \"table-active\" : \"\"}>\r\n\t\t\t\t\t{isAdmin() &&<td className=\"center\">{this.props.index + 1}</td>}\r\n\t\t\t\t\t<td>{competitor.surname}</td>\r\n\t\t\t\t\t<td>{competitor.name}</td>\r\n\t\t\t\t\t<td>{competitor.birthDate.slice(0, 4)}</td>\r\n\t\t\t\t\t<td>{competitor.organization.name}</td>\r\n\t\t\t\t\t<td>{competitor.coach}</td>\r\n\t\t\t\t\t<td className=\"center\">\r\n\t\t\t\t\t\t{!category.isLocked && (isAdmin() || isReferee()) && (\r\n\t\t\t\t\t\t\t<ScoresModal\r\n\t\t\t\t\t\t\t\tbuttonLabel=\"Zapsat\"\r\n\t\t\t\t\t\t\t\tcompetitor={competitor}\r\n\t\t\t\t\t\t\t\tgetCompetitors={getCompetitors}\r\n\t\t\t\t\t\t\t\tsetLastUpdatedId={setLastUpdatedId}\r\n\t\t\t\t\t\t\t\tcategory={category}\r\n\t\t\t\t\t\t\t\tcompetitionId={competition.id}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t{category.hasVault && (isAdmin() || getRefereeCategory() == \"Vault\") && (\r\n\t\t\t\t\t\t<ScoreListItem score={this.getScoreByDiscipline(1)} />\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{category.hasUnevenBars && (isAdmin() || getRefereeCategory() == \"UnevenBars\") && (\r\n\t\t\t\t\t\t<ScoreListItem score={this.getScoreByDiscipline(2)} />\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{category.hasBalanceBeam && (isAdmin() || getRefereeCategory() == \"BalanceBeam\") && (\r\n\t\t\t\t\t\t<ScoreListItem score={this.getScoreByDiscipline(3)} />\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{category.hasFloor && (isAdmin() || (getRefereeCategory() == \"Floor\")) && (\r\n\t\t\t\t\t\t<ScoreListItem score={this.getScoreByDiscipline(4)} />\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{isAdmin() && <>\r\n\t\t\t\t\t\t<td className=\"center\">\r\n\t\t\t\t\t\t\t<strong>{Math.round(competitor.totalDScore * 1000) / 1000}</strong>\r\n\t\t\t\t\t\t\t<span className=\"small\">\r\n\t\t\t\t\t\t\t\t<br /> {competitor.totalDScoreRank}\r\n\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t</td>\r\n\t\t\t\t\t\t<td className=\"center\">\r\n\t\t\t\t\t\t\t<strong>{Math.round(competitor.totalEScore * 1000) / 1000}</strong>\r\n\t\t\t\t\t\t\t<span className=\"small\">\r\n\t\t\t\t\t\t\t\t<br /> {competitor.totalEScoreRank}\r\n\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t</td>\r\n\t\t\t\t\t\t<td className=\"center\">\r\n\t\t\t\t\t\t\t<strong>{Math.round(competitor.totalScore * 1000) / 1000}</strong>\r\n\t\t\t\t\t\t</td>\r\n\t\t\t\t\t</>}\r\n\t\t\t\t</tr>\r\n\t\t\t</>\r\n\t\t);\r\n\t}\r\n}\r\n","import React from \"react\";\r\nimport { Table, Alert } from \"reactstrap\";\r\nimport axios from \"axios\";\r\nimport _ from \"lodash\";\r\n\r\nimport { getToken, getRefereeCategory, isAdmin, isReferee } from \"../../../utils/adalConfig\";\r\nimport CompetitorsScoreListItem from \"./CompetitorsScoreListItem\";\r\n\r\nconst config = {\r\n\theaders: { Authorization: \"bearer \" + getToken() },\r\n};\r\n\r\nconst ScoreHeader = () => (\r\n\t<>\r\n\t\t<th className=\"border-left center\">D</th>\r\n\t\t<th className=\"center\">E</th>\r\n\t\t<th className=\"center\">VZ</th>\r\n\t\t<th className=\"center\">NS</th>\r\n\t\t<th className=\"border-right center\">CEL</th>\r\n\t</>\r\n);\r\n\r\nexport default class CompetitorsScoreList extends React.Component {\r\n\tconstructor() {\r\n\t\tsuper();\r\n\r\n\t\tthis.state = {\r\n\t\t\tcompetitors: [],\r\n\t\t\tloading: true,\r\n\t\t\tlastUpdatedId: 0,\r\n\t\t\terror: null,\r\n\t\t};\r\n\t}\r\n\r\n\tcomponentDidMount() {\r\n\t\tthis.getCompetitors();\r\n\t\tthis.setState({\r\n\t\t\teditingDiscipline: window.localStorage.getItem(\"editingDiscipline\"),\r\n\t\t});\r\n\t}\r\n\r\n\tgetCompetitors = () => {\r\n\t\taxios\r\n\t\t\t.get(\r\n\t\t\t\t`/api/competitors/competition/${this.props.competition.id}/category/${this.props.category.id}`,\r\n\t\t\t\tconfig\r\n\t\t\t)\r\n\t\t\t.then((res) => {\r\n\t\t\t\tconst competitors = res.data;\r\n\t\t\t\tthis.setState({ competitors, loading: false });\r\n\t\t\t})\r\n\t\t\t.catch((error) => {\r\n\t\t\t\tthis.setState({ error, loading: false });\r\n\t\t\t});\r\n\t};\r\n\r\n\tsortCompetitors = (field) => {\r\n\t\tvar sortedCompetitors = _.orderBy(this.state.competitors, [field], [\"asc\"]);\r\n\t\tthis.setState({ competitors: sortedCompetitors });\r\n\t};\r\n\r\n\tsetLastUpdatedId = (id) => {\r\n\t\tthis.setState({ lastUpdatedId: id });\r\n\t};\r\n\r\n\trender() {\r\n\t\tconst { competition, category } = this.props;\r\n\t\tif (this.state.loading) {\r\n\t\t\treturn <div>Loading...</div>;\r\n\t\t}\r\n\t\tif (this.state.error) {\r\n\t\t\treturn <div>{this.state.error.message}</div>;\r\n\t\t}\r\n\t\tif (this.state.competitors.length < 1) {\r\n\t\t\treturn (\r\n\t\t\t\t<Alert color=\"dark\">\r\n\t\t\t\t\tDo této kategorie zatÃm nejsou pÅ™ihlášeni žádnà závodnÃci.\r\n\t\t\t\t</Alert>\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\treturn (\r\n\t\t\t<Table size=\"sm\" responsive>\r\n\t\t\t\t<thead>\r\n\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t{isAdmin() &&\r\n\t\t\t\t\t\t<th className=\"center\">\r\n\t\t\t\t\t\t\t<a onClick={() => this.sortCompetitors(\"totalScoreRank\")}>\r\n\t\t\t\t\t\t\t\t{category.isLocked ? \"PoÅ™adÃ\" : \"#\"}\r\n\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t</th>}\r\n\t\t\t\t\t\t<th>\r\n\t\t\t\t\t\t\t<a onClick={() => this.sortCompetitors(\"surname\")}>PÅ™ÃjmenÃ</a>\r\n\t\t\t\t\t\t</th>\r\n\t\t\t\t\t\t<th>Jméno</th>\r\n\t\t\t\t\t\t<th>RoÄnÃk</th>\r\n\t\t\t\t\t\t<th>OddÃl</th>\r\n\t\t\t\t\t\t<th>Trenér</th>\r\n\t\t\t\t\t\t<th />\r\n\t\t\t\t\t\t{category.hasVault && (isAdmin() || getRefereeCategory() == \"Vault\") && <th class=\"text-center\" colSpan=\"5\">PÅ™eskok</th>}\r\n\t\t\t\t\t\t{category.hasUnevenBars && (isAdmin() || getRefereeCategory() == \"UnevenBars\") && <th class=\"text-center\" colSpan=\"5\">Bradla</th>}\r\n\t\t\t\t\t\t{category.hasBalanceBeam && (isAdmin() || getRefereeCategory() == \"BalanceBeam\") && <th class=\"text-center\" colSpan=\"5\">Kladina</th>}\r\n\t\t\t\t\t\t{category.hasFloor && (isAdmin() || getRefereeCategory() == \"Floor\") && <th class=\"text-center\" colSpan=\"5\">Prostná</th>}\r\n\t\t\t\t\t\t{isAdmin() && <th colSpan=\"3\" className=\"center\" />}\r\n\r\n\t\t\t\t\t</tr>\r\n\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t<th colSpan={isAdmin() ? 7 : 6} />\r\n\t\t\t\t\t\t{category.hasVault && (isAdmin() || getRefereeCategory() == \"Vault\") && <ScoreHeader />}\r\n\t\t\t\t\t\t{category.hasUnevenBars && (isAdmin() || getRefereeCategory() == \"UnevenBars\") && <ScoreHeader />}\r\n\t\t\t\t\t\t{category.hasBalanceBeam && (isAdmin() || getRefereeCategory() == \"BalanceBeam\") && <ScoreHeader />}\r\n\t\t\t\t\t\t{category.hasFloor && (isAdmin() || getRefereeCategory() == \"Floor\") && <ScoreHeader />}\r\n\t\t\t\t\t\t{isAdmin() &&\r\n\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t<th className=\"center\">\r\n\t\t\t\t\t\t\t\t<strong>D</strong>\r\n\t\t\t\t\t\t\t</th>\r\n\t\t\t\t\t\t\t<th className=\"center\">\r\n\t\t\t\t\t\t\t\t<strong>E</strong>\r\n\t\t\t\t\t\t\t</th>\r\n\t\t\t\t\t\t\t<th className=\"center\"><strong>Celkem</strong></th>\r\n\t\t\t\t\t\t </>}\r\n\t\t\t\t\t</tr>\r\n\t\t\t\t</thead>\r\n\t\t\t\t<tbody>\r\n\t\t\t\t\t{this.state.competitors?.map((competitor, index) => (\r\n\t\t\t\t\t\t<CompetitorsScoreListItem\r\n\t\t\t\t\t\t\tkey={competitor.id}\r\n\t\t\t\t\t\t\tindex={index}\r\n\t\t\t\t\t\t\tcompetitor={competitor}\r\n\t\t\t\t\t\t\tsetLastUpdatedId={this.setLastUpdatedId}\r\n\t\t\t\t\t\t\thighlight={this.state.lastUpdatedId === competitor.id}\r\n\t\t\t\t\t\t\tgetCompetitors={this.getCompetitors}\r\n\t\t\t\t\t\t\tcategory={category}\r\n\t\t\t\t\t\t\tcompetition={competition}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t))}\r\n\t\t\t\t</tbody>\r\n\t\t\t</Table>\r\n\t\t);\r\n\t}\r\n}\r\n","import React, { useState, useEffect } from \"react\";\r\nimport {\r\n\tContainer,\r\n\tTabContent,\r\n\tTabPane,\r\n\tNav,\r\n\tNavItem,\r\n\tNavLink,\r\n\tAlert\r\n} from \"reactstrap\";\r\nimport classnames from \"classnames\";\r\nimport useAxios from 'axios-hooks';\r\nimport { useParams } from \"react-router-dom\";\r\n\r\nimport { getToken } from \"../../utils/adalConfig\";\r\nimport Loader from \"../../components/Loader\";\r\nimport CompetitorScoreList from \"./components/CompetitorsScoreList\";\r\nimport { formatDate } from \"../../utils/helpers\";\r\nimport { Category } from \"../../model\";\r\n\r\nfunction Score() {\r\n\tconst [activeTab, setActiveTab] = useState<number>(0);\r\n\tconst { id } = useParams<{ id: string | undefined }>();\r\n\tconst [{ loading, error, data }, getCompetition] = useAxios({\r\n\t\turl: `/api/competitions/${id}`,\r\n\t\tmethod: 'get',\r\n\t\theaders: { Authorization: \"bearer \" + getToken() }\r\n\t})\r\n\r\n\tuseEffect(() => {\r\n\t\tgetCompetition();\r\n\t}, [id]);\r\n\r\n\tfunction toggleTab(tab: number) {\r\n\t\tif (activeTab !== tab) {\r\n\t\t\tsetActiveTab(tab);\r\n\t\t}\r\n\t}\r\n\r\n\tif (loading) {\r\n\t\treturn <Loader />;\r\n\t}\r\n\tif (data.categories?.length === 0) {\r\n\t\treturn <Alert color=\"info\">Tento závod nemá založené žádné kragorie.</Alert>\r\n\t}\r\n\treturn (\r\n\t\t<Container fluid>\r\n\t\t\t<h1>\r\n\t\t\t\tVýsledková listina\r\n\t\t\t\t<span className=\"float-right\">\r\n\t\t\t\t\t{data.name} {formatDate(data.date)}\r\n\t\t\t\t</span>\r\n\t\t\t</h1>\r\n\t\t\t<div className=\"clearfix\"></div>\r\n\t\t\t<Nav tabs>\r\n\t\t\t\t{data.categories?.map((category: Category, index: number) => (\r\n\t\t\t\t\t<NavItem key={index}>\r\n\t\t\t\t\t\t<NavLink\r\n\t\t\t\t\t\t\tclassName={classnames({\r\n\t\t\t\t\t\t\t\tactive: activeTab === index\r\n\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\ttoggleTab(index);\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{category.name}\r\n\t\t\t\t\t\t</NavLink>\r\n\t\t\t\t\t</NavItem>\r\n\t\t\t\t))}\r\n\t\t\t</Nav>\r\n\t\t\t<TabContent activeTab={activeTab}>\r\n\t\t\t\t{data.categories?.map((category: Category, index: number) => (\r\n\t\t\t\t\t<TabPane key={index} tabId={index}>\r\n\t\t\t\t\t\t<h4>\r\n\t\t\t\t\t\t\t{category.name} - {category.description}\r\n\t\t\t\t\t\t</h4>\r\n\t\t\t\t\t\t<CompetitorScoreList\r\n\t\t\t\t\t\t\tcompetition={data}\r\n\t\t\t\t\t\t\tcategory={category}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t</TabPane>\r\n\t\t\t\t))}\r\n\t\t\t</TabContent>\r\n\t\t</Container>\r\n\t);\r\n}\r\n\r\nexport default Score;\r\n","import React, { useEffect } from \"react\";\r\nimport { Form, Input, FormGroup, Button, Label, Row, Col } from \"reactstrap\";\r\nimport useAxios from 'axios-hooks';\r\n\r\nimport { getToken } from \"../../../utils/adalConfig\";\r\nimport useForm from \"../../../hooks/useForm\";\r\nimport FormInput from \"../../../components/forms/FormInput\";\r\nimport { validDate, formatDate } from \"../../../utils/helpers\";\r\nimport DateTime from \"../../../components/forms/DateTime\";\r\nimport { Category } from \"../../../model\";\r\n\r\ntype IProps = {\r\n\tcompetitionId?: string;\r\n\tgetCompetition: (id: string) => void;\r\n\tcategory?: Category;\r\n};\r\n\r\nconst validateCategory = (values: any) => {\r\n\tlet errors: any = {};\r\n\tif (!values.name) {\r\n\t\terrors.name = \"Jméno nesmà být prázdné.\";\r\n\t}\r\n\tif (values.name?.length > 50) {\r\n\t\terrors.name = \"Maximálnà délka jména je 50 znaků.\";\r\n\t}\r\n\tif (!values.description) {\r\n\t\terrors.description = \"Popis nesmà být prázdný.\";\r\n\t}\r\n\tif (values.description?.length > 50) {\r\n\t\terrors.description = \"Maximálnà délka popisu je 50 znaků.\";\r\n\t}\r\n\tif (!validDate(values.yearFrom)) {\r\n\t\terrors.yearFrom = \"Datum nenà ve formátu dd.mm.yyyy.\";\r\n\t}\r\n\tif (!validDate(values.yearTo)) {\r\n\t\terrors.yearTo = \"Datum nenà ve formátu dd.mm.yyyy.\";\r\n\t}\r\n\tif (!values.yearFrom) {\r\n\t\terrors.yearFrom = \"Od data narozenà nesmà být prázdné.\";\r\n\t}\r\n\tif (!values.yearTo) {\r\n\t\terrors.yearTo = \"Do data narozenà nesmà být prázdné.\";\r\n\t}\r\n\treturn errors;\r\n};\r\n\r\nexport default function CategoryForm({\r\n\tcompetitionId,\r\n\tgetCompetition,\r\n\tcategory,\r\n}: IProps) {\r\n\tconst [{ loading, error }, setCategory] = useAxios({\r\n\t\turl: `/api/categories`,\r\n\t\tmethod: category ? 'put' : 'post',\r\n\t\theaders: { Authorization: \"bearer \" + getToken() }\r\n\t}, { manual: true })\r\n\r\n\tconst { values, handleChange, handleSubmit, setValues, errors } = useForm(\r\n\t\tsubmit,\r\n\t\tvalidateCategory\r\n\t);\r\n\r\n\tuseEffect(() => {\r\n\t\tcategory && setValues(category)\r\n\t}, [category])\r\n\r\n\tfunction submit() {\r\n\t\tsetCategory({\r\n\t\t\tdata: { ...values, competitionId: Number(competitionId) },\r\n\t\t\tmethod: category ? \"put\" : \"post\",\r\n\t\t}).then(response => {\r\n\t\t\tif (response?.status == 200 || 201) {\r\n\t\t\t\tgetCompetition(competitionId!)\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\treturn (\r\n\t\t<div>\r\n\t\t\t<Form onSubmit={handleSubmit}>\r\n\t\t\t\t<FormInput\r\n\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\tlabel=\"Název\"\r\n\t\t\t\t\tonChange={handleChange}\r\n\t\t\t\t\tname=\"name\"\r\n\t\t\t\t\tvalue={values.name}\r\n\t\t\t\t\tplaceholder=\"jméno\"\r\n\t\t\t\t\tvalidationMessage={errors.name}\r\n\t\t\t\t/>\r\n\t\t\t\t<FormInput\r\n\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\tlabel=\"Popis\"\r\n\t\t\t\t\tonChange={handleChange}\r\n\t\t\t\t\tname=\"description\"\r\n\t\t\t\t\tvalue={values.description}\r\n\t\t\t\t\tplaceholder=\"popis\"\r\n\t\t\t\t\tvalidationMessage={errors.description}\r\n\t\t\t\t/>\r\n\r\n\t\t\t\t<Row>\r\n\t\t\t\t\t<Col md={6}>\r\n\t\t\t\t\t\t<DateTime\r\n\t\t\t\t\t\t\tlabel=\"Od data narozenÃ\"\r\n\t\t\t\t\t\t\tonChange={handleChange}\r\n\t\t\t\t\t\t\tvalue={values.yearFrom}\r\n\t\t\t\t\t\t\tplaceholder=\"dd.mm.yyyy\"\r\n\t\t\t\t\t\t\terrors={errors}\r\n\t\t\t\t\t\t\tname=\"yearFrom\"\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t</Col>\r\n\t\t\t\t\t<Col md={6}>\r\n\t\t\t\t\t\t<DateTime\r\n\t\t\t\t\t\t\tlabel=\"Do data narozenÃ\"\r\n\t\t\t\t\t\t\tonChange={handleChange}\r\n\t\t\t\t\t\t\tvalue={values.yearTo}\r\n\t\t\t\t\t\t\tplaceholder=\"dd.mm.yyyy\"\r\n\t\t\t\t\t\t\terrors={errors}\r\n\t\t\t\t\t\t\tname=\"yearTo\"\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t</Col>\r\n\t\t\t\t</Row>\r\n\t\t\t\t<Row>\r\n\t\t\t\t\t<Col md={3}>\r\n\t\t\t\t\t\t<FormGroup check>\r\n\t\t\t\t\t\t\t<Label for=\"hasVault\">\r\n\t\t\t\t\t\t\t\t<Input\r\n\t\t\t\t\t\t\t\t\ttype=\"checkbox\"\r\n\t\t\t\t\t\t\t\t\tonChange={handleChange}\r\n\t\t\t\t\t\t\t\t\tchecked={values.hasVault || false}\r\n\t\t\t\t\t\t\t\t\tname=\"hasVault\"\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\tPÅ™eskok\r\n\t\t\t\t\t\t\t</Label>\r\n\t\t\t\t\t\t</FormGroup>\r\n\t\t\t\t\t</Col>\r\n\t\t\t\t\t<Col md={3}>\r\n\t\t\t\t\t\t<FormGroup check>\r\n\t\t\t\t\t\t\t<Label for=\"hasUnevenBars\">\r\n\t\t\t\t\t\t\t\t<Input\r\n\t\t\t\t\t\t\t\t\ttype=\"checkbox\"\r\n\t\t\t\t\t\t\t\t\tonChange={handleChange}\r\n\t\t\t\t\t\t\t\t\tchecked={values.hasUnevenBars || false}\r\n\t\t\t\t\t\t\t\t\tname=\"hasUnevenBars\"\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\tBradla\r\n\t\t\t\t\t\t\t</Label>\r\n\t\t\t\t\t\t</FormGroup>\r\n\t\t\t\t\t</Col>\r\n\t\t\t\t\t<Col md={3}>\r\n\t\t\t\t\t\t<FormGroup check>\r\n\t\t\t\t\t\t\t<Label for=\"hasBalanceBeam\">\r\n\t\t\t\t\t\t\t\t<Input\r\n\t\t\t\t\t\t\t\t\ttype=\"checkbox\"\r\n\t\t\t\t\t\t\t\t\tonChange={handleChange}\r\n\t\t\t\t\t\t\t\t\tchecked={values.hasBalanceBeam || false}\r\n\t\t\t\t\t\t\t\t\tname=\"hasBalanceBeam\"\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\tKladina\r\n\t\t\t\t\t\t\t</Label>\r\n\t\t\t\t\t\t</FormGroup>\r\n\t\t\t\t\t</Col>\r\n\t\t\t\t\t<Col md={3}>\r\n\t\t\t\t\t\t<FormGroup check>\r\n\t\t\t\t\t\t\t<Label for=\"hasFloor\">\r\n\t\t\t\t\t\t\t\t<Input\r\n\t\t\t\t\t\t\t\t\ttype=\"checkbox\"\r\n\t\t\t\t\t\t\t\t\tonChange={handleChange}\r\n\t\t\t\t\t\t\t\t\tchecked={values.hasFloor || false}\r\n\t\t\t\t\t\t\t\t\tname=\"hasFloor\"\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\tProstná\r\n\t\t\t\t\t\t\t</Label>\r\n\t\t\t\t\t\t</FormGroup>\r\n\t\t\t\t\t</Col>\r\n\t\t\t\t</Row>\r\n\t\t\t\t<FormGroup check>\r\n\t\t\t\t\t<Label for=\"isLocked\">\r\n\t\t\t\t\t\t<Input\r\n\t\t\t\t\t\t\ttype=\"checkbox\"\r\n\t\t\t\t\t\t\tonChange={handleChange}\r\n\t\t\t\t\t\t\tchecked={values.isLocked || false}\r\n\t\t\t\t\t\t\tname=\"isLocked\"\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\tJe uzamÄena pro zapisovánà výsledků\r\n\t\t\t\t\t</Label>\r\n\t\t\t\t</FormGroup>\r\n\t\t\t\t<Button\r\n\t\t\t\t\ttype=\"submit\"\r\n\t\t\t\t\tclassName=\"ml-auto mt-4\"\r\n\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\tsize=\"lg\"\r\n\t\t\t\t\tblock\r\n\t\t\t\t>\r\n\t\t\t\t\tUložit\r\n\t\t\t\t</Button>\r\n\t\t\t</Form>\r\n\t\t</div>\r\n\t);\r\n};\r\n","import React, { useState } from \"react\";\r\nimport { Button, Modal, ModalHeader, ModalBody } from \"reactstrap\";\r\n\r\nimport CategoryForm from \"./CategoryForm\";\r\nimport { Category } from \"../../../model\";\r\n\r\ninterface IProps {\r\n\tbuttonLabel: string\r\n\tbuttonType: string\r\n\tcategory?: Category\r\n\tcompetitionId?: string\r\n\tgetCompetition: () => any\r\n}\r\n\r\nexport default function CategoryModal({ buttonLabel, buttonType, category, competitionId, getCompetition }: IProps) {\r\n\tconst [isOpen, setIsOpen] = useState(false);\r\n\r\n\tconst toggleModal = () => {\r\n\t\tsetIsOpen(!isOpen);\r\n\t};\r\n\r\n\treturn (\r\n\t\t<div>\r\n\t\t\t<Button color={buttonType} onClick={toggleModal}>\r\n\t\t\t\t{buttonLabel}\r\n\t\t\t</Button>\r\n\t\t\t<Modal isOpen={isOpen} toggle={toggleModal}>\r\n\t\t\t\t<ModalHeader toggle={toggleModal}>Kategorie</ModalHeader>\r\n\t\t\t\t<ModalBody>\r\n\t\t\t\t\t<CategoryForm\r\n\t\t\t\t\t\tgetCompetition={getCompetition}\r\n\t\t\t\t\t\tcategory={category}\r\n\t\t\t\t\t\tcompetitionId={competitionId}\r\n\t\t\t\t\t/>\r\n\t\t\t\t</ModalBody>\r\n\t\t\t</Modal>\r\n\t\t</div>\r\n\t);\r\n}\r\n","import React from \"react\";\r\nimport { Table, Alert } from \"reactstrap\";\r\nimport { formatDate } from \"../../../utils/helpers\";\r\n\r\nimport CategoryModal from \"./CategoryModal\";\r\nimport { Category, Competition } from \"../../../model\";\r\n\r\ninterface IProps {\r\n\tcompetition: Competition;\r\n\tgetCompetition: () => any\r\n}\r\n\r\nexport default function CategoryList({ competition, getCompetition }: IProps) {\r\n\tif (competition.categories.length < 1) {\r\n\t\treturn (\r\n\t\t\t<Alert color=\"info\">\r\n\t\t\t\tPro tento závod zatÃm nejsou vytvoÅ™eny žádné kategorie.\r\n\t\t\t</Alert>\r\n\t\t);\r\n\t}\r\n\treturn (\r\n\t\t<Table size=\"sm\" responsive>\r\n\t\t\t<thead>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<th>Název</th>\r\n\t\t\t\t\t<th>Popis</th>\r\n\t\t\t\t\t<th>Od data narozenÃ</th>\r\n\t\t\t\t\t<th>Do data narozenÃ</th>\r\n\t\t\t\t\t<th>PÅ™eskok</th>\r\n\t\t\t\t\t<th>Bradla</th>\r\n\t\t\t\t\t<th>Kladina</th>\r\n\t\t\t\t\t<th>Prostná</th>\r\n\t\t\t\t\t<th>UzamÄena</th>\r\n\t\t\t\t\t<th></th>\r\n\t\t\t\t</tr>\r\n\t\t\t</thead>\r\n\t\t\t<tbody>\r\n\t\t\t\t{competition.categories?.map((category: Category) => (\r\n\t\t\t\t\t<tr key={category.id}>\r\n\t\t\t\t\t\t<td>{category.name}</td>\r\n\t\t\t\t\t\t<td>{category.description}</td>\r\n\t\t\t\t\t\t<td>{formatDate(category.yearFrom)}</td>\r\n\t\t\t\t\t\t<td>{formatDate(category.yearTo)}</td>\r\n\t\t\t\t\t\t<td>{category.hasVault ? \"Ano\" : \"Ne\"}</td>\r\n\t\t\t\t\t\t<td>{category.hasUnevenBars ? \"Ano\" : \"Ne\"}</td>\r\n\t\t\t\t\t\t<td>{category.hasBalanceBeam ? \"Ano\" : \"Ne\"}</td>\r\n\t\t\t\t\t\t<td>{category.hasFloor ? \"Ano\" : \"Ne\"}</td>\r\n\t\t\t\t\t\t<td>{category.isLocked ? \"Ano\" : \"Ne\"}</td>\r\n\t\t\t\t\t\t<td>\r\n\t\t\t\t\t\t\t<CategoryModal\r\n\t\t\t\t\t\t\t\tbuttonType=\"link\"\r\n\t\t\t\t\t\t\t\tbuttonLabel=\"Upravit\"\r\n\t\t\t\t\t\t\t\tcategory={category}\r\n\t\t\t\t\t\t\t\tcompetitionId={competition.id}\r\n\t\t\t\t\t\t\t\tgetCompetition={getCompetition}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</td>\r\n\t\t\t\t\t</tr>\r\n\t\t\t\t))}\r\n\t\t\t</tbody>\r\n\t\t</Table>\r\n\t);\r\n};\r\n","import React from \"react\";\r\nimport useAxios from \"axios-hooks\";\r\nimport { useParams } from \"react-router-dom\";\r\n\r\nimport { getToken } from \"../../utils/adalConfig\";\r\nimport Loader from \"../../components/Loader\";\r\nimport CategoryList from \"./components/CategoryList\";\r\nimport CategoryModal from \"./components/CategoryModal\";\r\nimport { formatDate } from \"../../utils/helpers\";\r\n\r\nexport default function Categories() {\r\n\tconst { id } = useParams<{ id: string | undefined }>();\r\n\tconst [{ loading, error, data }, getCompetition] = useAxios({\r\n\t\turl: `/api/competitions/${id}`,\r\n\t\tmethod: \"get\",\r\n\t\theaders: { Authorization: \"bearer \" + getToken() }\r\n\t});\r\n\r\n\tif (loading) {\r\n\t\treturn <Loader />;\r\n\t}\r\n\r\n\tif (error) {\r\n\t\treturn <div>PÅ™i naÄÃtánà dat rozhodÄÃch ze serveru doÅ¡lo k chybÄ›.</div>;\r\n\t}\r\n\r\n\treturn (\r\n\t\t<div>\r\n\t\t\t<h1 className=\"mb-4\">\r\n\t\t\t\tKategorie{\" \"}\r\n\t\t\t\t<span className=\"float-right\">\r\n\t\t\t\t\t{data.name} {formatDate(data.date)}\r\n\t\t\t\t</span>\r\n\t\t\t</h1>\r\n\t\t\t<div className=\"clearfix\"></div>\r\n\t\t\t<CategoryModal\r\n\t\t\t\tbuttonType=\"primary\"\r\n\t\t\t\tgetCompetition={getCompetition}\r\n\t\t\t\tcompetitionId={id}\r\n\t\t\t\tbuttonLabel=\"Nová kategorie\"\r\n\t\t\t/>\r\n\t\t\t<br />\r\n\t\t\t<CategoryList competition={data} getCompetition={getCompetition} />\r\n\t\t</div>\r\n\t);\r\n}\r\n","import React, { useEffect } from \"react\";\r\nimport {\r\n Button,\r\n Form,\r\n FormGroup,\r\n Label,\r\n Row,\r\n Col\r\n} from \"reactstrap\";\r\nimport useForm from \"../../../hooks/useForm\";\r\nimport FormInput from \"../../../components/forms/FormInput\";\r\nimport DateTime from \"../../../components/forms/DateTime\";\r\nimport OrganizationSelect from \"../../Organizations/compoents/OrganizationSelect\";\r\nimport { Referee } from \"../../../model\";\r\nimport { formatDate } from \"../../../utils/helpers\";\r\nimport useAxios from 'axios-hooks';\r\nimport { getToken } from \"../../../utils/adalConfig\";\r\n\r\n\r\ntype IProps = {\r\n toggle: () => void\r\n getReferees: () => any\r\n referee?: Referee\r\n}\r\n\r\nexport default function RefereeEditForm({ toggle, getReferees, referee }: IProps) {\r\n\r\n // Validation messages\r\n const validateReferee = (values: any) => {\r\n let errors: any = {};\r\n if (!values.name) {\r\n errors.name = \"Jméno nesmà být prázdné.\";\r\n }\r\n if (!values.surname) {\r\n errors.surname = \"PÅ™Ãjmenà nesmà být prázdné.\";\r\n }\r\n if (!values.birthDate) {\r\n errors.birthDate = \"Datum narozenà nesmà být prázdné.\";\r\n }\r\n return errors;\r\n };\r\n\r\n const { values, handleChange, handleSubmit, setValues, errors } = useForm(\r\n submit,\r\n validateReferee\r\n );\r\n\r\n const [{ loading, error }, setRequest] = useAxios({\r\n url: `/api/referees`,\r\n method: 'post',\r\n headers: { Authorization: \"bearer \" + getToken() },\r\n }, {\r\n manual: true,\r\n })\r\n\r\n function submit() {\r\n delete values.organization\r\n setRequest({\r\n data: { ...values, organizationId: Number(values.organizationId) },\r\n method: referee ? \"put\" : \"post\",\r\n }).then(response => {\r\n if (response?.status == 200 || 201) {\r\n getReferees();\r\n }\r\n }).finally(\r\n toggle\r\n );\r\n }\r\n\r\n useEffect(() => {\r\n referee && setValues({ ...referee });\r\n }, [referee]);\r\n\r\n if (error) return <div>PÅ™i komunikaci se serverem doÅ¡lo k chybÄ›.</div>;\r\n\r\n if (loading) return <div>OdesÃlám data...</div>;\r\n\r\n return (\r\n <Form id=\"form\" onSubmit={handleSubmit}>\r\n <Row form>\r\n <Col>\r\n <FormInput\r\n name=\"name\"\r\n label=\"Jméno\"\r\n type=\"text\"\r\n onChange={handleChange}\r\n value={values.name}\r\n validationMessage={errors.name}\r\n />\r\n </Col>\r\n <Col>\r\n <FormInput\r\n name=\"surname\"\r\n label=\"PÅ™ÃjmenÃ\"\r\n type=\"text\"\r\n onChange={handleChange}\r\n value={values.surname}\r\n validationMessage={errors.surname}\r\n />\r\n </Col>\r\n </Row>\r\n <Row form>\r\n <Col>\r\n <DateTime\r\n label=\"Datum narozeni\"\r\n onChange={handleChange}\r\n value={values.birthDate}\r\n errors={errors}\r\n name=\"birthDate\"\r\n />\r\n </Col>\r\n <Col>\r\n <FormGroup>\r\n <Label>OddÃl</Label>\r\n <OrganizationSelect value={values.organizationId} selectDefault onChange={handleChange} />\r\n </FormGroup>\r\n </Col>\r\n </Row>\r\n <Row form>\r\n <Col>\r\n <DateTime\r\n label=\"ÄŒSGS - A\"\r\n onChange={handleChange}\r\n value={values.csgsA}\r\n errors={errors}\r\n name=\"csgsA\"\r\n />\r\n </Col>\r\n <Col>\r\n <DateTime\r\n label=\"ÄŒSGS - B\"\r\n onChange={handleChange}\r\n value={values.csgsB}\r\n errors={errors}\r\n name=\"csgsB\"\r\n />\r\n </Col>\r\n <Col>\r\n <DateTime\r\n label=\"ÄŒSGS - C\"\r\n onChange={handleChange}\r\n value={values.csgsC}\r\n errors={errors}\r\n name=\"csgsC\"\r\n />\r\n </Col>\r\n </Row>\r\n <Row form>\r\n <Col>\r\n <DateTime\r\n label=\"ÄŒGF1\"\r\n onChange={handleChange}\r\n value={values.cgf1}\r\n errors={errors}\r\n name=\"cgf1\"\r\n />\r\n </Col>\r\n <Col>\r\n <DateTime\r\n label=\"ÄŒGF2\"\r\n onChange={handleChange}\r\n value={values.cgf2}\r\n errors={errors}\r\n name=\"cgf2\"\r\n />\r\n </Col>\r\n <Col>\r\n <DateTime\r\n label=\"ÄŒGF3\"\r\n onChange={handleChange}\r\n value={values.cgf3}\r\n errors={errors}\r\n name=\"cgf3\"\r\n />\r\n </Col>\r\n </Row>\r\n <Button\r\n color=\"primary\"\r\n form=\"form\"\r\n size=\"lg\"\r\n type=\"submit\"\r\n block\r\n onClick={handleSubmit}\r\n >\r\n Uložit\r\n </Button>\r\n </Form>\r\n )\r\n}","import React, { useState } from \"react\";\r\nimport {\r\n Button,\r\n Modal,\r\n ModalHeader,\r\n ModalBody,\r\n} from \"reactstrap\";\r\n\r\nimport RefereeEditForm from \"./RefereeEditForm\";\r\nimport { Referee } from \"../../../model\";\r\nimport { AxiosPromise } from \"axios\";\r\n\r\ntype IRefereeDialog = {\r\n id?: number;\r\n buttonLabel: string;\r\n buttonColor: string;\r\n className?: string;\r\n getReferees: () => AxiosPromise<any>\r\n referee?: Referee;\r\n}\r\n\r\nexport default function RefereeEditDialog({ referee, buttonLabel, buttonColor, className, getReferees }: IRefereeDialog) {\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const toggle = () => setIsOpen(!isOpen);\r\n\r\n return (\r\n <>\r\n <Button color={buttonColor} className={className} onClick={() => setIsOpen(true)}>\r\n {buttonLabel}\r\n </Button>\r\n <Modal isOpen={isOpen} toggle={toggle}>\r\n <ModalHeader toggle={toggle}>\r\n {referee ? \"Editace rozhodÄÃho\" : \"Nový rozhodÄÃ\"}\r\n </ModalHeader>\r\n <ModalBody>\r\n <RefereeEditForm toggle={toggle} getReferees={getReferees} referee={referee} />\r\n </ModalBody>\r\n </Modal>\r\n </>\r\n );\r\n}","import React from \"react\";\r\n\r\nimport useAxios from \"axios-hooks\";\r\nimport { Table, Badge } from \"reactstrap\";\r\nimport Loader from \"../../../components/Loader\";\r\nimport { Referee } from \"../../../model\";\r\nimport RefereeEditDialog from \"./RrefereeEditDialog\";\r\nimport { formatDate } from \"../../../utils/helpers\";\r\nimport { getToken } from \"../../../utils/adalConfig\";\r\n\r\nexport default function RefereeList() {\r\n const [{ loading, error, data }, getReferees] = useAxios({\r\n url: `/api/referees`,\r\n method: 'get',\r\n headers: { Authorization: \"bearer \" + getToken() },\r\n })\r\n if (loading) return <Loader />\r\n if (error) return <div>PÅ™i naÄÃtánà dat ze serveru doÅ¡lo k chybÄ›.</div>\r\n return (\r\n <div>\r\n <RefereeEditDialog\r\n buttonColor=\"primary\"\r\n buttonLabel=\"Nový rozhodÄÃ\"\r\n className=\"mb-4\"\r\n getReferees={getReferees}\r\n />\r\n <Table>\r\n <thead>\r\n <tr>\r\n <th>Jméno</th>\r\n <th>PÅ™ÃjmenÃ</th>\r\n <th>Datum narozenÃ</th>\r\n <th>OddÃl</th>\r\n <th>ÄŒSGS - A</th>\r\n <th>ÄŒSGS - B</th>\r\n <th>ÄŒSGS - C</th>\r\n <th>ÄŒGF - I</th>\r\n <th>ÄŒGF - II</th>\r\n <th>ÄŒGF - III</th>\r\n <th></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {data.referees?.map((referee: Referee) =>\r\n <tr key={referee.id}>\r\n <td>{referee.name}</td>\r\n <td>{referee.surname}</td>\r\n <td>{formatDate(referee.birthDate)}</td>\r\n <td>{referee.organization.name}</td>\r\n <td>{formatDate(referee.csgsA)}</td>\r\n {/* <td>{isInPast(referee.csgsB) ? <div className=\"badge badge-secondary\">{formatDate(referee.csgsB)}</div> : <div className=\"badge badge-success\">{formatDate(referee.csgsB)}</div>}</td> */}\r\n <td>{formatDate(referee.csgsB)}</td>\r\n <td>{formatDate(referee.csgsC)}</td>\r\n <td>{formatDate(referee.cgf1)}</td>\r\n <td>{formatDate(referee.cgf2)}</td>\r\n <td>{formatDate(referee.cgf3)}</td>\r\n <td><RefereeEditDialog buttonColor=\"link\" referee={referee} getReferees={getReferees} buttonLabel=\"Upravit\" /></td>\r\n </tr>\r\n )}\r\n </tbody>\r\n </Table>\r\n </div>\r\n )\r\n}","import React from \"react\";\r\nimport RefereeList from \"./components/RefereeList\";\r\n\r\nexport default function Referees() {\r\n\treturn (\r\n\t\t<>\r\n\t\t\t<h1>RozhodÄÃ</h1>\r\n\t\t\t<RefereeList />\r\n\t\t</>\r\n\t);\r\n}\r\n\r\n\r\n","import React, { useEffect } from \"react\";\r\nimport useAxios from 'axios-hooks';\r\n\r\nimport { Organization } from \"../../../model\";\r\nimport { getToken } from \"../../../utils/adalConfig\";\r\nimport useForm from \"../../../hooks/useForm\";\r\nimport FormInput from \"../../../components/forms/FormInput\";\r\nimport { Button, Form } from \"reactstrap\";\r\n\r\ninterface IProps {\r\n organization?: Organization;\r\n getOrganizations: () => any;\r\n}\r\n\r\nconst validateOrganization = (values: any) => {\r\n let errors: any = {};\r\n if (!values.name) {\r\n errors.name = \"Jméno nesmà být prázdné.\";\r\n }\r\n if (values.name?.length > 100) {\r\n errors.name = \"Maximálnà délka jména je 50 znaků.\";\r\n }\r\n return errors;\r\n};\r\n\r\nexport default function OrganizationEditForm({ organization, getOrganizations }: IProps) {\r\n const [{ loading, error }, setOrganization] = useAxios({\r\n url: `/api/organizations`,\r\n method: organization ? 'put' : 'post',\r\n headers: { Authorization: \"bearer \" + getToken() }\r\n }, { manual: true })\r\n\r\n const { values, handleChange, handleSubmit, setValues, errors } = useForm(\r\n submit,\r\n validateOrganization\r\n );\r\n\r\n useEffect(() => {\r\n organization && setValues(organization)\r\n }, [organization])\r\n\r\n function submit() {\r\n setOrganization({\r\n data: values,\r\n method: organization ? \"put\" : \"post\",\r\n }).then(response => {\r\n if (response?.status == 200 || 201) {\r\n getOrganizations()\r\n }\r\n })\r\n }\r\n return (\r\n <div>\r\n <Form onSubmit={handleSubmit}>\r\n <FormInput\r\n type=\"text\"\r\n label=\"Název\"\r\n onChange={handleChange}\r\n name=\"name\"\r\n value={values.name}\r\n placeholder=\"jméno\"\r\n validationMessage={errors.name}\r\n />\r\n <Button\r\n type=\"submit\"\r\n className=\"ml-auto mt-4\"\r\n color=\"primary\"\r\n size=\"lg\"\r\n block\r\n >\r\n Uložit\r\n\t\t\t\t</Button>\r\n </Form>\r\n </div>\r\n )\r\n}","import React, { useState } from \"react\";\r\nimport { Button, Modal, ModalHeader, ModalBody } from \"reactstrap\";\r\n\r\nimport OrganizationForm from \"./OrganizationEditForm\";\r\nimport { Organization } from \"../../../model\";\r\n\r\ninterface IProps {\r\n buttonLabel: string\r\n buttonType: string\r\n organization?: Organization\r\n getOrganizations: () => any\r\n}\r\n\r\nexport default function OrganizationEditDialog({ organization, buttonLabel, buttonType, getOrganizations }: IProps) {\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const toggleModal = () => {\r\n setIsOpen(!isOpen);\r\n };\r\n\r\n return (\r\n <div>\r\n <Button color={buttonType} onClick={toggleModal}>\r\n {buttonLabel}\r\n </Button>\r\n <Modal isOpen={isOpen} toggle={toggleModal}>\r\n <ModalHeader toggle={toggleModal}>Kategorie</ModalHeader>\r\n <ModalBody>\r\n <OrganizationForm\r\n getOrganizations={getOrganizations}\r\n organization={organization}\r\n />\r\n </ModalBody>\r\n </Modal>\r\n </div>\r\n )\r\n}","import React, { useEffect } from \"react\";\r\nimport { Table } from \"reactstrap\";\r\nimport { Organization } from \"../../../model\";\r\nimport OrganizationEditDialog from \"./OrganizationEditDialog\";\r\n\r\ninterface IProps {\r\n getOrganizations: () => any;\r\n organizations: Organization[];\r\n}\r\n\r\nexport default function OrganizationList({ getOrganizations, organizations }: IProps) {\r\n\r\n return (\r\n <Table>\r\n <thead>\r\n <tr>\r\n <th>Název</th>\r\n <th></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {organizations?.map((organization: Organization) => (\r\n <tr>\r\n <td>{organization.name}</td>\r\n <td><OrganizationEditDialog buttonLabel=\"Upravit\" organization={organization} buttonType=\"link\" getOrganizations={getOrganizations} /></td>\r\n </tr>\r\n ))}\r\n </tbody>\r\n </Table>\r\n )\r\n}","import React from \"react\";\r\nimport useAxios from 'axios-hooks';\r\n\r\nimport OrganizationList from \"./compoents/OrgnaizationList\";\r\nimport OrganizationEditDialog from \"./compoents/OrganizationEditDialog\";\r\nimport Loader from \"../../components/Loader\";\r\nimport { getToken } from \"../../utils/adalConfig\";\r\n\r\nexport default function Organizations() {\r\n const [{ loading, error, data }, getOrganizations] = useAxios({\r\n url: '/api/organizations',\r\n method: 'get',\r\n headers: { Authorization: \"bearer \" + getToken() }\r\n });\r\n if (loading) {\r\n return (<Loader />)\r\n }\r\n\r\n if (error) {\r\n return <div>PÅ™i naÄÃtánà dat ze serveru doÅ¡lo k chybÄ›.</div>\r\n }\r\n\r\n return (\r\n <>\r\n <h1>OddÃly</h1>\r\n <OrganizationEditDialog buttonLabel=\"Nový oddÃl\" buttonType=\"primary\" getOrganizations={getOrganizations} />\r\n <br />\r\n <OrganizationList getOrganizations={getOrganizations} organizations={data.organizations} />\r\n </>\r\n );\r\n}\r\n\r\n\r\n","import React from \"react\";\r\nimport { Route } from \"react-router\";\r\n\r\nimport Layout from \"./components/Layout\";\r\nimport Competitors from \"./pages/Competitors/Competitors\";\r\nimport SignUp from \"./pages/Competitors/SignUp\";\r\nimport Competitions from \"./pages/Competitions/Competitions\";\r\nimport Draw from \"./pages/Competitors/Draw\";\r\nimport Score from \"./pages/Competitors/Score\";\r\nimport Categories from \"./pages/Categories/Categories\";\r\nimport Referees from \"./pages/Referees/Referees\";\r\nimport Organizations from \"./pages/Organizations/Organizations\";\r\n\r\nexport default () => (\r\n\t<Layout>\r\n\t\t<Route exact path=\"/\" component={Competitions} />\r\n\t\t<Route path=\"/competitors\" component={Competitors} />\r\n\t\t<Route path=\"/competition/:id/score\" component={Score} />\r\n\t\t<Route path=\"/competition/:id/signup\" component={SignUp} />\r\n\t\t<Route path=\"/competition/:id/categories\" component={Categories} />\r\n\t\t<Route path=\"/competition/:id/draw\" component={Draw} />\r\n\t\t<Route path=\"/referees\" component={Referees} />\r\n\t\t<Route path=\"/organizations\" component={Organizations} />\r\n\t</Layout>\r\n);\r\n","// In production, we register a service worker to serve assets from local cache.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\r\n// cached resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\r\n// This link also includes instructions on opting out of this behavior.\r\n\r\nconst isLocalhost = Boolean(\r\n\twindow.location.hostname === \"localhost\" ||\r\n\t\t// [::1] is the IPv6 localhost address.\r\n\t\twindow.location.hostname === \"[::1]\" ||\r\n\t\t// 127.0.0.1/8 is considered localhost for IPv4.\r\n\t\twindow.location.hostname.match(\r\n\t\t\t/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n\t\t)\r\n);\r\n\r\nexport default function register() {\r\n\tif (process.env.NODE_ENV === \"production\" && \"serviceWorker\" in navigator) {\r\n\t\t// The URL constructor is available in all browsers that support SW.\r\n\t\tconst publicUrl = new URL(process.env.PUBLIC_URL, window.location);\r\n\t\tif (publicUrl.origin !== window.location.origin) {\r\n\t\t\t// Our service worker won't work if PUBLIC_URL is on a different origin\r\n\t\t\t// from what our page is served on. This might happen if a CDN is used to\r\n\t\t\t// serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\twindow.addEventListener(\"load\", () => {\r\n\t\t\tconst swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n\t\t\tif (isLocalhost) {\r\n\t\t\t\t// This is running on localhost. Lets check if a service worker still exists or not.\r\n\t\t\t\tcheckValidServiceWorker(swUrl);\r\n\t\t\t} else {\r\n\t\t\t\t// Is not local host. Just register service worker\r\n\t\t\t\tregisterValidSW(swUrl);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n\r\nfunction registerValidSW(swUrl) {\r\n\tnavigator.serviceWorker\r\n\t\t.register(swUrl)\r\n\t\t.then(registration => {\r\n\t\t\tregistration.onupdatefound = () => {\r\n\t\t\t\tconst installingWorker = registration.installing;\r\n\t\t\t\tinstallingWorker.onstatechange = () => {\r\n\t\t\t\t\tif (installingWorker.state === \"installed\") {\r\n\t\t\t\t\t\tif (navigator.serviceWorker.controller) {\r\n\t\t\t\t\t\t\t// At this point, the old content will have been purged and\r\n\t\t\t\t\t\t\t// the fresh content will have been added to the cache.\r\n\t\t\t\t\t\t\t// It's the perfect time to display a \"New content is\r\n\t\t\t\t\t\t\t// available; please refresh.\" message in your web app.\r\n\t\t\t\t\t\t\tconsole.log(\"New content is available; please refresh.\");\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t// At this point, everything has been precached.\r\n\t\t\t\t\t\t\t// It's the perfect time to display a\r\n\t\t\t\t\t\t\t// \"Content is cached for offline use.\" message.\r\n\t\t\t\t\t\t\tconsole.log(\"Content is cached for offline use.\");\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t};\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.error(\"Error during service worker registration:\", error);\r\n\t\t});\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl) {\r\n\t// Check if the service worker can be found. If it can't reload the page.\r\n\tfetch(swUrl)\r\n\t\t.then(response => {\r\n\t\t\t// Ensure service worker exists, and that we really are getting a JS file.\r\n\t\t\tif (\r\n\t\t\t\tresponse.status === 404 ||\r\n\t\t\t\tresponse.headers.get(\"content-type\").indexOf(\"javascript\") === -1\r\n\t\t\t) {\r\n\t\t\t\t// No service worker found. Probably a different app. Reload the page.\r\n\t\t\t\tnavigator.serviceWorker.ready.then(registration => {\r\n\t\t\t\t\tregistration.unregister().then(() => {\r\n\t\t\t\t\t\twindow.location.reload();\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\t// Service worker found. Proceed as normal.\r\n\t\t\t\tregisterValidSW(swUrl);\r\n\t\t\t}\r\n\t\t})\r\n\t\t.catch(() => {\r\n\t\t\tconsole.log(\r\n\t\t\t\t\"No internet connection found. App is running in offline mode.\"\r\n\t\t\t);\r\n\t\t});\r\n}\r\n\r\nexport function unregister() {\r\n\tif (\"serviceWorker\" in navigator) {\r\n\t\tnavigator.serviceWorker.ready.then(registration => {\r\n\t\t\tregistration.unregister();\r\n\t\t});\r\n\t}\r\n}\r\n","import \"bootstrap/dist/css/bootstrap.css\";\r\nimport \"./index.css\";\r\nimport React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport { BrowserRouter } from \"react-router-dom\";\r\nimport App from \"./App\";\r\nimport registerServiceWorker from \"./registerServiceWorker\";\r\nimport { YearContextProvider } from \"./contexts/yearContext\";\r\n\r\nconst rootElement = document.getElementById(\"root\");\r\n\r\nReactDOM.render(\r\n\t<BrowserRouter>\r\n\t\t<YearContextProvider>\r\n\t\t\t<App />\r\n\t\t</YearContextProvider>\r\n\t</BrowserRouter>,\r\n\trootElement\r\n);\r\n\r\nregisterServiceWorker();\r\n","import {\r\n\tAuthenticationContext,\r\n\tadalFetch,\r\n\twithAdalLogin,\r\n\tAdalConfig,\r\n} from \"react-adal\";\r\n\r\nexport const adalConfig: AdalConfig = {\r\n\ttenant: \"69185946-0f2c-4446-a382-00b064295cad\",\r\n\tclientId: \"67d52712-dfbd-4944-a84b-6136ab7ad92e\",\r\n\tendpoints: {\r\n\t\tapi: \"69185946-0f2c-4446-a382-00b064295cad\",\r\n\t},\r\n\tcacheLocation: \"localStorage\",\r\n};\r\n\r\nexport const authContext = new AuthenticationContext(adalConfig);\r\n\r\nexport const adalApiFetch = (fetch: any, url: any, options: any) =>\r\n\tadalFetch(authContext, adalConfig.endpoints!.api, fetch, url, options);\r\n\r\nexport const withAdalLoginApi = withAdalLogin(\r\n\tauthContext,\r\n\tadalConfig.endpoints!.api\r\n);\r\n\r\nexport const getToken = () => {\r\n\treturn authContext.getCachedToken(authContext.config.clientId);\r\n};\r\n\r\nexport const getUser = () => {\r\n\t// console.log(authContext.getCachedUser().profile);\r\n\treturn authContext?.getCachedUser();\r\n};\r\n\r\nexport const isAdmin = () => {\r\n\tconst user = authContext.getCachedUser();\r\n\tif (user.profile?.roles) {\r\n\t\treturn user.profile.roles.includes(\"Admin\");\r\n\t}\r\n\treturn false;\r\n};\r\n\r\nexport const getRefereeCategory = () => {\r\n\tconst user = authContext.getCachedUser();\r\n\tconsole.log(user.profile.roles);\r\n\tif (user.profile.roles.includes(\"Referee.Vault\")) {\r\n\t\treturn \"Vault\";\r\n\t}\r\n\tif (user.profile.roles.includes(\"Referee.UnevenBars\")) {\r\n\t\treturn \"UnevenBars\";\r\n\t}\r\n\tif (user.profile.roles.includes(\"Referee.Floor\")) {\r\n\t\treturn \"Floor\";\r\n\t}\r\n\tif (user.profile.roles.includes(\"Referee.BalanceBeam\")) {\r\n\t\treturn \"BalanceBeam\";\r\n\t}\r\n\treturn false;\r\n}\r\n\r\nexport const isReferee = () => {\r\n\tconst user = authContext.getCachedUser();\r\n\tif (user.profile?.roles) {\r\n\t\treturn user.profile.roles.includes(\"Referee\");\r\n\t}\r\n\treturn false;\r\n};\r\n\r\nexport const getHighesRole = () => {\r\n\tif (isAdmin()) {\r\n\t\treturn \"[Admin]\";\r\n\t} else if (isReferee()) {\r\n\t\treturn \"[RozhodÄÃ]\";\r\n\t} else return null;\r\n};\r\n","import { runWithAdal } from \"react-adal\";\r\nimport { authContext } from \"./utils/adalConfig\";\r\n\r\nconst DO_NOT_LOGIN = false;\r\n\r\nrunWithAdal(\r\n\tauthContext,\r\n\t() => {\r\n\t\t// eslint-disable-next-line\r\n\t\trequire(\"./indexApp.tsx\");\r\n\t\tconsole.log(authContext.getCachedToken(authContext.config.clientId));\r\n\t\tconsole.log(authContext.getCachedUser());\r\n\t},\r\n\tDO_NOT_LOGIN\r\n);\r\n"],"sourceRoot":""}