From 611fdcd5cb1c2b87d550b068c1f34243c2a45d5c Mon Sep 17 00:00:00 2001 From: Tore Brede <Tore.Brede@uib.no> Date: Thu, 7 Oct 2021 16:52:34 +0200 Subject: [PATCH] GREG-60: Updates to summary page --- frontend/public/locales/en/common.json | 9 +- frontend/public/locales/nb/common.json | 9 +- frontend/public/locales/nn/common.json | 11 +- .../src/routes/register/personFormMethods.ts | 2 +- frontend/src/routes/register/stepSummary.tsx | 209 ++++++------------ frontend/src/themes/main.ts | 1 + frontend/src/themes/uib.ts | 1 + frontend/src/themes/uio.ts | 3 +- 8 files changed, 98 insertions(+), 147 deletions(-) diff --git a/frontend/public/locales/en/common.json b/frontend/public/locales/en/common.json index 41b15694..0dbe62d8 100644 --- a/frontend/public/locales/en/common.json +++ b/frontend/public/locales/en/common.json @@ -21,7 +21,9 @@ "roleStartDate": "From", "roleEndDate": "To", "comment": "Comment", - "email": "E-mail" + "email": "E-mail", + "fullName": "Full name", + "mobilePhone": "Mobile phone" }, "loading": "Loading...", "termsHeader": "Terms", @@ -66,6 +68,9 @@ "summaryPage": "Check that the values are correct before saving.", "registerContactInfo": "Register contact info", "registerPeriod": "Register period", - "registerPeriodText": "Enter role and duration." + "registerPeriodText": "Enter role and duration.", + "summaryContactInformation": "Summary contact information", + "summaryPeriod": "Summary period", + "contactInformation": "Contact information" } } diff --git a/frontend/public/locales/nb/common.json b/frontend/public/locales/nb/common.json index fd070f31..97f53956 100644 --- a/frontend/public/locales/nb/common.json +++ b/frontend/public/locales/nb/common.json @@ -21,7 +21,9 @@ "roleStartDate": "Fra", "roleEndDate": "Til", "comment": "Kommentar", - "email": "E-post" + "email": "E-post", + "fullName": "Full navn", + "mobilePhone": "Mobilnummer" }, "loading": "Laster...", "termsHeader": "Vilkår", @@ -66,6 +68,9 @@ "summaryPage": "Sjekk at alt stemmer før lagring.", "registerContactInfo": "Registrere kontaktinfo", "registerPeriod": "Registrere periode", - "registerPeriodText": "Fyll inn rolle og periode." + "registerPeriodText": "Fyll inn rolle og periode.", + "summaryContactInformation": "Summary contact information", + "summaryPeriod": "Summary period", + "contactInformation": "Kontaktinformasjon" } } diff --git a/frontend/public/locales/nn/common.json b/frontend/public/locales/nn/common.json index 63d8ebd2..5373de6f 100644 --- a/frontend/public/locales/nn/common.json +++ b/frontend/public/locales/nn/common.json @@ -22,7 +22,9 @@ "roleStartDate": "Frå", "roleEndDate": "Til", "comment": "Kommentar", - "email": "E-post" + "email": "E-post", + "fullName": "Fullt namn", + "mobilePhone": "Mobilnummer" }, "loading": "Lastar...", "termsHeader": "Vilkår", @@ -30,7 +32,7 @@ "firstName": "Fornamn", "lastName": "Etternamn", "dateOfBirth": "Fødselsdato", - "name": "Navn", + "name": "Namn", "role": "Gjesterolle", "period": "Periode", "ou": "Organisasjon", @@ -67,6 +69,9 @@ "summaryPage": "Sjekk at alt stemmer før lagring.", "registerContactInfo": "Registrere kontaktinfo", "registerPeriod": "Registrere periode", - "registerPeriodText": "Fyll inn rolle og periode." + "registerPeriodText": "Fyll inn rolle og periode.", + "summaryContactInformation": "Summary contact information", + "summaryPeriod": "Summary period", + "contactInformation": "Kontaktinformasjon" } } diff --git a/frontend/src/routes/register/personFormMethods.ts b/frontend/src/routes/register/personFormMethods.ts index 489a0b51..6dc1bf8a 100644 --- a/frontend/src/routes/register/personFormMethods.ts +++ b/frontend/src/routes/register/personFormMethods.ts @@ -1,3 +1,3 @@ export interface PersonFormMethods { - doSubmit: () => Promise<void> + doSubmit: () => void } diff --git a/frontend/src/routes/register/stepSummary.tsx b/frontend/src/routes/register/stepSummary.tsx index c09177ed..ecbdeb58 100644 --- a/frontend/src/routes/register/stepSummary.tsx +++ b/frontend/src/routes/register/stepSummary.tsx @@ -1,11 +1,18 @@ -import React, { forwardRef, Ref, useEffect, useImperativeHandle, useState } from 'react' +import React, { forwardRef, Ref, useImperativeHandle, useState } from 'react' import { useTranslation } from 'react-i18next' -import { Controller, SubmitHandler, useForm } from 'react-hook-form' -import { Box, Stack, TextField } from '@mui/material' +import { + Box, + Grid, + Table, + TableBody, + TableCell, + TableHead, + TableRow, + Typography, +} from '@mui/material' import format from 'date-fns/format' -import { DatePicker } from '@mui/lab' import { RegisterFormData } from './formData' import { postJsonOpts } from '../../utils' import { PersonFormMethods } from './personFormMethods' @@ -21,23 +28,23 @@ interface StepSummaryProperties { } const StepSummary = forwardRef((props: StepSummaryProperties, ref: Ref<PersonFormMethods>) => { - const { i18n, t } = useTranslation(['common']) + const { t } = useTranslation(['common']) const { formData, onSubmitSuccess, onSubmitFailure } = props const ous = useOus() const roleTypes = useRoleTypes() const [submitState, setSubmitState] = useState(SubmitState.NotSubmitted) - const submit: SubmitHandler<RegisterFormData> = (data) => { + const submit = () => { const payload = { - first_name: data.first_name, - last_name: data.last_name, - email: data.email, + first_name: formData.first_name, + last_name: formData.last_name, + email: formData.email, role: { - type: data.role_type, - start_date: data.role_start === null ? null : format(data.role_start as Date, 'yyyy-MM-dd'), - end_date: data.role_end === null ? null : format(data.role_end as Date, 'yyyy-MM-dd'), - comments: data.comment, - orgunit_id: data.ou_id, + type: formData.role_type, + start_date: formData.role_start === null ? null : format(formData.role_start as Date, 'yyyy-MM-dd'), + end_date: formData.role_end === null ? null : format(formData.role_end as Date, 'yyyy-MM-dd'), + comments: formData.comment, + orgunit_id: formData.ou_id, }, } @@ -65,141 +72,67 @@ const StepSummary = forwardRef((props: StepSummaryProperties, ref: Ref<PersonFor }) } - const getSelectedOrganisationalUnit = () => { - if (formData?.ou_id) { - const ousArray = ous.filter(((value) => value.id === formData.ou_id)) - - if (ousArray.length === 0) { - return '' - } - - if (i18n.language === 'en') { - return ousArray[0].en - } - return ousArray[0].nb - } - return '' - } - - const getSelectedRoleType = () => { - if (formData?.role_type) { - const roleTypeArray = roleTypes.filter(((value) => value.identifier === formData.role_type)) - - if (roleTypeArray.length === 0) { - return '' - } - - if (i18n.language === 'en') { - return roleTypeArray[0].name_en - } - return roleTypeArray[0].name_nb - } - return '' - } - - const { - reset, - register, - handleSubmit, - control, - } = useForm<RegisterFormData>() - const onSubmit = handleSubmit(submit) - - useEffect(() => { - reset(formData) - }, []) - function doSubmit() { - return onSubmit() + return submit() } useImperativeHandle(ref, () => ({ doSubmit })) return ( <> + <Typography variant='h5' sx={{ + paddingTop: '1rem', + paddingBottom: '1rem', + }}>{t('registerWizardText.summaryContactInformation')}</Typography> <Box sx={{ typography: 'subtitle2' }}> {t('registerWizardText.summaryPage')} </Box> <Box sx={{ maxWidth: '30rem' }}> - <form onSubmit={onSubmit}> - <Stack spacing={2}> - <TextField - id='firstName' - label={t('input.firstName')} - disabled - {...register('first_name')} - /> - <TextField - id='lastName' - label={t('input.lastName')} - disabled - {...register('last_name')} - /> - - <TextField - id='email' - label={t('input.email')} - disabled - {...register('email')} - /> - - <TextField - id='ou' - value={getSelectedOrganisationalUnit()} - label={t('ou')} - disabled - /> - - <TextField - id='roletype-select' - value={getSelectedRoleType()} - label={t('input.roleType')} - disabled - /> - - <Controller name='role_start' - control={control} - render={({ field }) => ( - <DatePicker - mask='____-__-__' - label={t('input.roleStartDate')} - disabled - value={field.value} - inputFormat='yyyy-MM-dd' - onChange={(value) => { - field.onChange(value) - }} - renderInput={(params) => <TextField {...params} />} - />)} - /> - - <Controller name='role_end' - control={control} - render={({ field }) => ( - <DatePicker - mask='____-__-__' - label={t('input.roleEndDate')} - disabled - value={field.value} - inputFormat='yyyy-MM-dd' - onChange={(value) => { - field.onChange(value) - }} - renderInput={(params) => <TextField {...params} />} - />)} - /> - - <TextField - id='comment' - label={t('input.comment')} - disabled - multiline - rows={5} - {...register(`comment`)} - /> - - </Stack> - </form> + + <Box sx={{ padding: '1rem', bgcolor: 'primary.dark' }}>{t('registerWizardText.contactInformation')}</Box> + + <Grid container> + <Grid item xs={4}> + {t('input.fullName')} + </Grid> + <Grid item xs={8}> + {formData.first_name} {formData.last_name} + </Grid> + <Grid item xs={4}> + {t('input.email')} + </Grid> + <Grid item xs={8}> + {formData.email} + </Grid> + </Grid> + + <Typography variant='h5' sx={{ + paddingTop: '1rem', + paddingBottom: '1rem', + }}>{t('registerWizardText.summaryPeriod')}</Typography> + + <Table> + <TableHead sx={{ + padding: '1rem', + bgcolor: 'primary.dark', + }}> + + <TableRow> + <TableCell>Guest role</TableCell> + <TableCell>Period</TableCell> + <TableCell>Department</TableCell> + <TableCell>Comment</TableCell> + </TableRow> + </TableHead> + <TableBody> + <TableRow> + <TableCell>{formData.role_type}</TableCell> + <TableCell>{formData.role_start === null ? null : format(formData.role_start as Date, 'yyyy-MM-dd')}-{formData.role_end === null ? null : format(formData.role_end as Date, 'yyyy-MM-dd')}</TableCell> + <TableCell>{formData.ou_id}</TableCell> + <TableCell>{formData.comment}</TableCell> + </TableRow> + </TableBody> + </Table> {/* TODO For now just showing a heading to give the user some feedback */} {submitState === SubmitState.SubmitSuccess && ( diff --git a/frontend/src/themes/main.ts b/frontend/src/themes/main.ts index 70d898fc..e07e4ce5 100644 --- a/frontend/src/themes/main.ts +++ b/frontend/src/themes/main.ts @@ -15,6 +15,7 @@ const mainTheme: ThemeOptions = { palette: { primary: { main: '#3293ED', + dark: '#1565c0' }, }, components: { diff --git a/frontend/src/themes/uib.ts b/frontend/src/themes/uib.ts index b1c29bbe..a659679e 100644 --- a/frontend/src/themes/uib.ts +++ b/frontend/src/themes/uib.ts @@ -4,6 +4,7 @@ const uibTheme: ThemeOptions = { palette: { primary: { main: '#ba000d', + dark: '#1565c0' }, }, } diff --git a/frontend/src/themes/uio.ts b/frontend/src/themes/uio.ts index 6cc69287..c5f908ec 100644 --- a/frontend/src/themes/uio.ts +++ b/frontend/src/themes/uio.ts @@ -3,7 +3,8 @@ import { ThemeOptions } from "@mui/material" const uioTheme: ThemeOptions = { palette: { primary: { - main: "#4977af" + main: "#4977af", + dark: '#1565c0' } }, } -- GitLab