Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
concept-front-mojsprat-v2
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Djordje Mutavdzic
concept-front-mojsprat-v2
Commits
fbd917d3
Commit
fbd917d3
authored
Jul 07, 2022
by
Djordje
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add validation
parent
0a67c27a
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
56 additions
and
24 deletions
+56
-24
RegisterForm.tsx
src/components/register/RegisterForm.tsx
+52
-23
internal-types.ts
src/internal-types.ts
+4
-1
No files found.
src/components/register/RegisterForm.tsx
View file @
fbd917d3
import
{
TextField
,
Box
,
Typography
,
Button
,
styled
,
ButtonProps
,
Select
,
FormControl
,
InputLabel
,
MenuItem
}
from
"@mui/material"
;
import
{
TextField
,
Box
,
Button
,
Select
,
FormControl
,
InputLabel
,
MenuItem
}
from
"@mui/material"
;
import
{
red
}
from
"@mui/material/colors"
;
import
React
,
{
useEffect
,
useState
}
from
"react"
;
import
React
,
{
useEffect
,
useState
}
from
"react"
;
import
{
Navigate
,
useParams
}
from
"react-router-dom"
;
import
{
use
Navigate
,
useParams
}
from
"react-router-dom"
;
import
{
getPreRegisterData
}
from
"../../actions/data-manager"
;
import
{
getPreRegisterData
,
registerUser
}
from
"../../actions/data-manager"
;
import
{
RegistrationInfo
}
from
"../../internal-types"
;
import
{
RegistrationInfo
}
from
"../../internal-types"
;
const
classes
=
{
const
classes
=
{
...
@@ -60,32 +59,43 @@ const classes = {
...
@@ -60,32 +59,43 @@ const classes = {
export
const
RegisterForm
=
():
JSX
.
Element
=>
{
export
const
RegisterForm
=
():
JSX
.
Element
=>
{
let
navigate
=
useNavigate
();
let
{
buildingId
}
=
useParams
();
let
{
buildingId
}
=
useParams
();
const
[
buildingUnits
,
setBuildingUnits
]
=
useState
([]);
const
[
buildingUnits
,
setBuildingUnits
]
=
useState
([]);
const
[
invalidUrl
,
setInvalidUrl
]
=
useState
(
false
);
const
[
registerInfo
,
setRegisterInfo
]
=
useState
<
RegistrationInfo
>
(
const
[
registerInfo
,
setRegisterInfo
]
=
useState
<
RegistrationInfo
>
({
name
:
''
,
lastName
:
''
,
email
:
''
,
username
:
''
,
password
:
''
,
mobile
:
''
,
units
:
[]
});
{
firstName
:
''
,
lastName
:
''
,
email
:
''
,
username
:
''
,
password
:
''
,
mobile
:
''
,
pendingBuildings
:
{
id
:
buildingId
!
,
units
:
[]
}
});
const
[
errorField
,
setErrorField
]
=
useState
(
''
);
const
[
errorMessage
,
setErrorMessage
]
=
useState
(
''
);
const
registerCallBack
=
(
err
:
any
,
data
:
any
,
dsp
:
any
)
=>
{
if
(
!!
err
)
{
if
(
err
.
wrongField
)
{
setErrorField
(
err
.
wrongField
);
setErrorMessage
(
err
.
errorMessage
);
}
return
;
}
navigate
(
'../../login'
,
{
replace
:
true
});
}
useEffect
(()
=>
{
useEffect
(()
=>
{
getPreRegisterData
(
buildingId
,
(
err
:
any
,
data
:
any
,
dsp
:
any
)
=>
{
getPreRegisterData
(
buildingId
,
(
err
:
any
,
data
:
any
,
dsp
:
any
)
=>
{
if
(
err
)
{
if
(
err
)
{
setInvalidUrl
(
true
);
navigate
(
'../register/error'
,
{
replace
:
true
}
);
return
;
return
;
}
}
setBuildingUnits
(
data
.
units
);
setBuildingUnits
(
data
.
units
);
});
});
},
[])
},
[
buildingId
,
navigate
]);
useEffect
(()
=>
{
console
.
log
(
registerInfo
.
units
)
},
[
registerInfo
.
units
])
return
(
return
(
<>
<>
{
invalidUrl
&&
<
Navigate
replace
to=
'../register/error'
/>
}
{
buildingUnits
&&
{
buildingUnits
&&
<
Box
sx=
{
{
display
:
'flex'
,
flexDirection
:
'column'
,
gap
:
'20px'
}
}
>
<
Box
sx=
{
{
display
:
'flex'
,
flexDirection
:
'column'
,
gap
:
'20px'
}
}
>
<
Box
sx=
{
{
display
:
'flex'
,
gap
:
'20px'
}
}
>
<
Box
sx=
{
{
display
:
'flex'
,
gap
:
'20px'
}
}
>
<
TextField
<
TextField
hiddenLabel
hiddenLabel
...
@@ -93,10 +103,13 @@ export const RegisterForm = (): JSX.Element => {
...
@@ -93,10 +103,13 @@ export const RegisterForm = (): JSX.Element => {
size=
'small'
size=
'small'
label=
"First name"
label=
"First name"
sx=
{
classes
.
textField
}
sx=
{
classes
.
textField
}
value=
{
registerInfo
.
n
ame
}
value=
{
registerInfo
.
firstN
ame
}
onChange=
{
(
e
)
=>
{
onChange=
{
(
e
)
=>
{
setRegisterInfo
({
...
registerInfo
,
name
:
e
.
target
.
value
})
setRegisterInfo
({
...
registerInfo
,
firstName
:
e
.
target
.
value
})
}
}
/>
}
}
error=
{
"firstName"
===
errorField
}
helperText=
{
"firstName"
===
errorField
?
errorMessage
:
null
}
/>
<
TextField
<
TextField
hiddenLabel
hiddenLabel
variant=
"outlined"
variant=
"outlined"
...
@@ -106,7 +119,10 @@ export const RegisterForm = (): JSX.Element => {
...
@@ -106,7 +119,10 @@ export const RegisterForm = (): JSX.Element => {
value=
{
registerInfo
.
lastName
}
value=
{
registerInfo
.
lastName
}
onChange=
{
(
e
)
=>
{
onChange=
{
(
e
)
=>
{
setRegisterInfo
({
...
registerInfo
,
lastName
:
e
.
target
.
value
})
setRegisterInfo
({
...
registerInfo
,
lastName
:
e
.
target
.
value
})
}
}
/>
}
}
error=
{
"lastName"
===
errorField
}
helperText=
{
"lastName"
===
errorField
?
errorMessage
:
null
}
/>
</
Box
>
</
Box
>
<
TextField
<
TextField
...
@@ -118,6 +134,8 @@ export const RegisterForm = (): JSX.Element => {
...
@@ -118,6 +134,8 @@ export const RegisterForm = (): JSX.Element => {
onChange=
{
(
e
)
=>
{
onChange=
{
(
e
)
=>
{
setRegisterInfo
({
...
registerInfo
,
email
:
e
.
target
.
value
})
setRegisterInfo
({
...
registerInfo
,
email
:
e
.
target
.
value
})
}
}
}
}
error=
{
"email"
===
errorField
}
helperText=
{
"email"
===
errorField
?
errorMessage
:
null
}
/>
/>
<
TextField
<
TextField
variant=
"outlined"
variant=
"outlined"
...
@@ -128,6 +146,8 @@ export const RegisterForm = (): JSX.Element => {
...
@@ -128,6 +146,8 @@ export const RegisterForm = (): JSX.Element => {
onChange=
{
(
e
)
=>
{
onChange=
{
(
e
)
=>
{
setRegisterInfo
({
...
registerInfo
,
username
:
e
.
target
.
value
})
setRegisterInfo
({
...
registerInfo
,
username
:
e
.
target
.
value
})
}
}
}
}
error=
{
"username"
===
errorField
}
helperText=
{
"username"
===
errorField
?
errorMessage
:
null
}
/>
/>
<
TextField
<
TextField
variant=
"outlined"
variant=
"outlined"
...
@@ -150,24 +170,33 @@ export const RegisterForm = (): JSX.Element => {
...
@@ -150,24 +170,33 @@ export const RegisterForm = (): JSX.Element => {
onChange=
{
(
e
)
=>
{
onChange=
{
(
e
)
=>
{
setRegisterInfo
({
...
registerInfo
,
mobile
:
e
.
target
.
value
})
setRegisterInfo
({
...
registerInfo
,
mobile
:
e
.
target
.
value
})
}
}
}
}
error=
{
"mobile"
===
errorField
}
helperText=
{
"mobile"
===
errorField
?
errorMessage
:
null
}
/>
/>
<
FormControl
fullWidth
size=
"small"
>
<
FormControl
fullWidth
size=
"small"
>
<
InputLabel
>
Select your units
</
InputLabel
>
<
InputLabel
>
Select your units
</
InputLabel
>
<
Select
<
Select
label=
"Select your units"
label=
"Select your units"
sx=
{
classes
.
select
}
sx=
{
classes
.
select
}
value=
{
registerInfo
.
units
}
value=
{
registerInfo
.
pendingBuildings
.
units
}
multiple
multiple
onChange=
{
(
e
)
=>
{
onChange=
{
(
e
)
=>
{
let
units
:
string
[]
=
typeof
e
.
target
.
value
===
'string'
?
e
.
target
.
value
.
split
(
','
)
:
e
.
target
.
value
;
let
units
:
string
[]
=
typeof
e
.
target
.
value
===
'string'
?
e
.
target
.
value
.
split
(
','
)
:
e
.
target
.
value
;
setRegisterInfo
({
...
registerInfo
,
units
})
setRegisterInfo
({
...
registerInfo
,
pendingBuildings
:
{
...
registerInfo
.
pendingBuildings
,
units
}
})
}
}
}
}
error=
{
"units"
===
errorField
}
>
>
{
buildingUnits
.
map
((
unit
:
any
,
index
)
=>
<
MenuItem
value=
{
unit
.
address
}
key=
{
index
}
>
{
unit
.
address
}
</
MenuItem
>)
}
{
buildingUnits
.
map
((
unit
:
any
,
index
)
=>
<
MenuItem
value=
{
unit
}
key=
{
index
}
>
{
unit
.
address
}
</
MenuItem
>)
}
</
Select
>
</
Select
>
</
FormControl
>
</
FormControl
>
<
Button
sx=
{
classes
.
registerButton
}
variant=
'contained'
>
Register
</
Button
>
<
Button
sx=
{
classes
.
registerButton
}
variant=
'contained'
onClick=
{
()
=>
{
registerUser
(
buildingId
,
registerInfo
,
registerCallBack
);
}
}
>
Register
</
Button
>
</
Box
>
</
Box
>
}
}
</>);
</>);
...
...
src/internal-types.ts
View file @
fbd917d3
export
type
RegistrationInfo
=
{
export
type
RegistrationInfo
=
{
n
ame
:
string
,
firstN
ame
:
string
,
lastName
:
string
,
lastName
:
string
,
email
:
string
,
email
:
string
,
username
:
string
,
username
:
string
,
password
:
string
,
password
:
string
,
mobile
:
string
,
mobile
:
string
,
pendingBuildings
:
{
id
:
string
,
units
:
string
[]
units
:
string
[]
}
}
}
export
type
LoginInfo
=
{
export
type
LoginInfo
=
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment