Skip to content
Snippets Groups Projects

Resolve "Competition view"

Merged Björn Modée requested to merge 91-competition-view into dev
10 files
+ 199
45
Compare changes
  • Side-by-side
  • Inline
Files
10
@@ -10,10 +10,17 @@ import { City } from '../../../interfaces/ApiModels'
@@ -10,10 +10,17 @@ import { City } from '../../../interfaces/ApiModels'
import { AddCompetitionModel, FormModel } from '../../../interfaces/FormModels'
import { AddCompetitionModel, FormModel } from '../../../interfaces/FormModels'
import { AddButton, AddContent, AddForm } from '../styledComp'
import { AddButton, AddContent, AddForm } from '../styledComp'
 
/**
 
* Component description:
 
* This component handles the functionality when adding a competition to the system
 
* This component is a child component to CompetitionManager.tsx
 
*/
 
type formType = FormModel<AddCompetitionModel>
type formType = FormModel<AddCompetitionModel>
const noCitySelected = 'Välj stad'
const noCitySelected = 'Välj stad'
 
//Description of the form and what is required
const competitionSchema: Yup.SchemaOf<formType> = Yup.object({
const competitionSchema: Yup.SchemaOf<formType> = Yup.object({
model: Yup.object()
model: Yup.object()
.shape({
.shape({
@@ -45,20 +52,25 @@ const AddCompetition: React.FC = (props: any) => {
@@ -45,20 +52,25 @@ const AddCompetition: React.FC = (props: any) => {
const dispatch = useAppDispatch()
const dispatch = useAppDispatch()
const id = open ? 'simple-popover' : undefined
const id = open ? 'simple-popover' : undefined
const currentYear = new Date().getFullYear()
const currentYear = new Date().getFullYear()
 
 
// Handles the actual submition to the database
const handleCompetitionSubmit = async (values: formType, actions: FormikHelpers<formType>) => {
const handleCompetitionSubmit = async (values: formType, actions: FormikHelpers<formType>) => {
 
// The parameters sent
const params = {
const params = {
name: values.model.name,
name: values.model.name,
year: values.model.year,
year: values.model.year,
city_id: selectedCity?.id as number,
city_id: selectedCity?.id as number,
}
}
 
await axios
await axios
.post('/competitions', params)
.post('/competitions', params) // send to database
.then(() => {
.then(() => {
actions.resetForm()
actions.resetForm() // reset the form
setAnchorEl(null)
setAnchorEl(null)
dispatch(getCompetitions())
dispatch(getCompetitions()) // refresh competitions
setSelectedCity(undefined)
setSelectedCity(undefined)
})
})
 
// if the post request fails
.catch(({ response }) => {
.catch(({ response }) => {
console.warn(response.data)
console.warn(response.data)
if (response.data && response.data.message)
if (response.data && response.data.message)
@@ -83,6 +95,12 @@ const AddCompetition: React.FC = (props: any) => {
@@ -83,6 +95,12 @@ const AddCompetition: React.FC = (props: any) => {
>
>
Ny Tävling
Ny Tävling
</AddButton>
</AddButton>
 
 
{/**
 
* The "pop up" menu for adding a competition
 
* contains 3 fields; Name, Region and Year
 
*
 
*/}
<Popover
<Popover
id={id}
id={id}
open={open}
open={open}
Loading