From 37c7357fe847f0c1b3753ed86f729b2834e41ad8 Mon Sep 17 00:00:00 2001 From: Sergio Betanzos Date: Tue, 23 Feb 2021 11:16:36 +0100 Subject: [PATCH] F #3951: Add a way to go back from the log (#859) --- .../FormControl/SelectController.js | 24 +++++++------- .../src/client/constants/translates.js | 1 + .../Form/Create/Steps/Provider/index.js | 2 +- .../Provisions/Form/Create/index.js | 32 ++++++++++++++++--- .../Provisions/Form/Create/styles.js | 22 +++++++++++++ .../src/client/containers/Settings/index.js | 4 +-- src/fireedge/src/client/utils/schema.js | 3 +- 7 files changed, 67 insertions(+), 21 deletions(-) create mode 100644 src/fireedge/src/client/containers/Provisions/Form/Create/styles.js diff --git a/src/fireedge/src/client/components/FormControl/SelectController.js b/src/fireedge/src/client/components/FormControl/SelectController.js index 1e573e03fa..8244b42386 100644 --- a/src/fireedge/src/client/components/FormControl/SelectController.js +++ b/src/fireedge/src/client/components/FormControl/SelectController.js @@ -8,14 +8,14 @@ import ErrorHelper from 'client/components/FormControl/ErrorHelper' import { Tr } from 'client/components/HOC/Translate' const SelectController = memo( - ({ control, cy, name, label, multiple, native, values, error, fieldProps }) => ( - { - const defaultValue = multiple ? [values?.[0]?.value] : values?.[0]?.value + ({ control, cy, name, label, multiple, native, values, error, fieldProps }) => { + const defaultValue = multiple ? [values?.[0]?.value] : values?.[0]?.value - return ( + return ( + ( - ) - }} - name={name} - control={control} - /> - ), + )} + name={name} + control={control} + /> + ) + }, (prevProps, nextProps) => prevProps.error === nextProps.error ) diff --git a/src/fireedge/src/client/constants/translates.js b/src/fireedge/src/client/constants/translates.js index 137cfc82a2..45cae51168 100644 --- a/src/fireedge/src/client/constants/translates.js +++ b/src/fireedge/src/client/constants/translates.js @@ -23,6 +23,7 @@ module.exports = { Select: 'Select', SelectGroup: 'Select a group', SelectRequest: 'Select request', + BackToList: 'Back to %s list', /* dashboard */ InTotal: 'In Total', diff --git a/src/fireedge/src/client/containers/Provisions/Form/Create/Steps/Provider/index.js b/src/fireedge/src/client/containers/Provisions/Form/Create/Steps/Provider/index.js index b0c169f42f..ebae2c3f6d 100644 --- a/src/fireedge/src/client/containers/Provisions/Form/Create/Steps/Provider/index.js +++ b/src/fireedge/src/client/containers/Provisions/Form/Create/Steps/Provider/index.js @@ -40,7 +40,7 @@ const Provider = () => ({ setFormData(prev => ({ ...prev, [INPUTS_ID]: undefined })) isSelected - ? handleUnselect(ID, item => item.ID === ID) + ? handleUnselect(ID, item => item.ID !== ID) : handleSelect(provider) } diff --git a/src/fireedge/src/client/containers/Provisions/Form/Create/index.js b/src/fireedge/src/client/containers/Provisions/Form/Create/index.js index 1621418bf5..595589c709 100644 --- a/src/fireedge/src/client/containers/Provisions/Form/Create/index.js +++ b/src/fireedge/src/client/containers/Provisions/Form/Create/index.js @@ -1,19 +1,27 @@ import React, { useState, useEffect } from 'react' -import { Redirect } from 'react-router' +import { Redirect, useHistory } from 'react-router' -import { Container, LinearProgress } from '@material-ui/core' +import { Container, IconButton, LinearProgress } from '@material-ui/core' +import ArrowBackIcon from '@material-ui/icons/ChevronLeftRounded' import { useForm, FormProvider } from 'react-hook-form' import { yupResolver } from '@hookform/resolvers' import FormStepper from 'client/components/FormStepper' import Steps from 'client/containers/Provisions/Form/Create/Steps' +import FormCreateStyles from 'client/containers/Provisions/Form/Create/styles' import DebugLog from 'client/components/DebugLog' import { useProvision, useSocket, useFetch } from 'client/hooks' import { PATH } from 'client/router/provision' import { set, mapUserInputs } from 'client/utils' +import { Tr, Translate } from 'client/components/HOC' +import { T } from 'client/constants' + function ProvisionCreateForm () { + const classes = FormCreateStyles() + const history = useHistory() + const [uuid, setUuid] = useState(undefined) const { getProvision } = useSocket() @@ -60,17 +68,31 @@ function ProvisionCreateForm () { useEffect(() => { fetchRequest() }, []) if (uuid) { - return + return ( +
+
+ history.push(PATH.PROVISIONS.LIST)} + > + + + + + +
+ +
+ ) } if (error) { - return + return } return (!data) || loading ? ( ) : ( - + diff --git a/src/fireedge/src/client/containers/Provisions/Form/Create/styles.js b/src/fireedge/src/client/containers/Provisions/Form/Create/styles.js new file mode 100644 index 0000000000..34b4f9d846 --- /dev/null +++ b/src/fireedge/src/client/containers/Provisions/Form/Create/styles.js @@ -0,0 +1,22 @@ +import { makeStyles } from '@material-ui/core' + +export default makeStyles(theme => ({ + root: { + display: 'flex', + flexFlow: 'column' + }, + rootLog: { + display: 'flex', + flexFlow: 'column', + height: '100%' + }, + titleWrapper: { + marginBottom: '1em', + display: 'inline-flex', + alignItems: 'center', + gap: '0.8em' + }, + titleText: { + ...theme.typography.body1 + } +})) diff --git a/src/fireedge/src/client/containers/Settings/index.js b/src/fireedge/src/client/containers/Settings/index.js index ca85a792c5..7814a7ea96 100644 --- a/src/fireedge/src/client/containers/Settings/index.js +++ b/src/fireedge/src/client/containers/Settings/index.js @@ -61,7 +61,7 @@ const Settings = () => { const { handleSubmit, setError, reset, formState, ...methods } = useForm({ reValidateMode: 'onSubmit', defaultValues: settings, - resolver: yupResolver(FORM_SCHEMA) + resolver: () => yupResolver(FORM_SCHEMA) }) React.useEffect(() => { @@ -70,7 +70,7 @@ const Settings = () => { FORM_SCHEMA.cast(settings), { isSubmitted: false, error: false } ) - }, []) + }, [settings]) const onSubmit = dataForm => { const inputs = mapUserInputs(dataForm) diff --git a/src/fireedge/src/client/utils/schema.js b/src/fireedge/src/client/utils/schema.js index e580545033..4d02f1d8f3 100644 --- a/src/fireedge/src/client/utils/schema.js +++ b/src/fireedge/src/client/utils/schema.js @@ -60,6 +60,7 @@ export const schemaUserInput = ({ mandatory, name, type, options, defaultValue } } case 'list': { const values = getOptionsFromList(options) + const firstOption = values?.[0]?.value ?? undefined return { values, @@ -68,7 +69,7 @@ export const schemaUserInput = ({ mandatory, name, type, options, defaultValue } .trim() .concat(requiredSchema(mandatory, name, yup.string())) .oneOf(values.map(({ value }) => value)) - .default(defaultValue ?? undefined) + .default(defaultValue ?? firstOption) } } case 'array': {