Advertisement
Guest User

Untitled

a guest
Feb 21st, 2020
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import React, {useState, useEffect} from 'react'
  2. import {
  3.     Dialog,
  4.     DialogActions,
  5.     DialogContent,
  6.     DialogContentText,
  7.     Button,
  8.     DialogTitle, } from '@material-ui/core';
  9. import firebase from '../../../../firebase'
  10. import Input from '../../../../components/UI/Input/Input'
  11. import { addProductForms } from '../../../../helpers/forms'
  12. import { checkValidity } from 'helpers/utility';
  13.  
  14. const AddProduct = props => {    
  15.     const [formData, setFormData] = useState({...addProductForms});    
  16.     const [formState, setFormState] = useState({
  17.         isValid: false,
  18.         values: {},
  19.         touched: {},
  20.         errors: {},
  21.         errorMsg: {}
  22.     });
  23.    
  24.     const handleSubmit = (data) => {
  25.         data.preventDefault();
  26.  
  27.         if(formElementsArray.length === Object.keys(formState.values).length){
  28.             let validation = false
  29.             for(let i in formState.errors){
  30.                 (formState.errors[i] === false) ? validation = false : validation = true
  31.             }
  32.             if(validation === true) return false
  33.             test01(!validation)
  34.             firebase.addProduct(formElementsArray[0].config.value, formState.values)
  35.             console.log('Pomyślnie dodano do bazy')
  36.         }
  37.         else return false        
  38.     };
  39.    
  40.     const updateFormData = (event, name ) => {    
  41.         event.persist()
  42.         var values = { ...formData }
  43.         values[name].value = event.target.value
  44.         setFormData(values);
  45.  
  46.         let error = checkValidity(event.target.value, values[name].validation)
  47.        
  48.         setFormState(formState => ({
  49.             ...formState,
  50.             values: {
  51.                 ...formState.values,
  52.                 [name]:
  53.                 event.target.type === 'checkbox'
  54.                 ? event.target.checked
  55.                 : event.target.value
  56.             },
  57.             errors: {
  58.                 ...formState.errors,
  59.                 [name]: !error ? false : true
  60.             },
  61.             errorMsg: {
  62.                 ...formState.errorMsg,
  63.                 [name]: !error ? '' : error
  64.             },
  65.             touched: {
  66.                 ...formState.touched,
  67.                 [name]: true
  68.             }
  69.         }));
  70.     };    
  71.    
  72.     var formElementsArray = []
  73.     for (let key in formData) {
  74.         formElementsArray.push({
  75.             id: key,
  76.             config: formData[key]
  77.         });
  78.     }
  79.    
  80.     const clearFormData = () => {
  81.         for(let i in formData) {
  82.             var values = { ...formData }
  83.             values[i].value = ""
  84.             setFormData(values);
  85.         }
  86.     }
  87.  
  88.     useEffect(() => {
  89.         clearFormData();
  90.     }, [props.open])
  91.  
  92.     const hasError = field =>
  93.         formState.touched[field] && formState.errors[field] ? true : false;
  94.  
  95.     console.log(formState)
  96.  
  97.     let viewForm =(
  98.     <DialogContent>
  99.         {formElementsArray.map( formElement => (
  100.         <Input
  101.             key={formElement.id}
  102.             setkey={formElement.id}
  103.             elementType={formElement.config.elementType}
  104.             elementConfig={formElement.config.elementConfig}
  105.             value={formElement.config.value || ''}        
  106.             changed={e => updateFormData(e, formElement.id)}
  107.             shouldValidate={formElement.config.validation}
  108.             touched={formElement.config.touched}
  109.             error={formState.errors[formElement.id]}
  110.             errorMsg={formState.errorMsg[formElement.id]} />
  111.         ))}
  112.     </DialogContent>
  113.     );
  114.  
  115.     const test01 = (value) => {
  116.         if(value) return `${props.changed}`
  117.         else return console.log('Błąd danych uzupełnij dane.')
  118.     }
  119.  
  120.     return(
  121.     <Dialog
  122.         open={props.open}
  123.         aria-labelledby="form-dialog-title"
  124.         fullWidth={true}
  125.         onClose={props.checked} >
  126.         <DialogTitle id="form-dialog-title">Dodaj sprzęt</DialogTitle>
  127.         <form onSubmit={handleSubmit}>
  128.         {viewForm}          
  129.         <DialogActions>
  130.             <Button onClick={props.checked} color="primary">
  131.             Anuluj
  132.             </Button>
  133.             <Button type="submit" onClick={test01} color="primary">
  134.             Dodaj
  135.             </Button>
  136.         </DialogActions>
  137.         </form>
  138.     </Dialog>
  139.     )
  140.  
  141. }
  142.  
  143. export default AddProduct;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement