Browse Source

expres required

amenpunk 3 years ago
parent
commit
a5c93e4189
1 changed files with 66 additions and 31 deletions
  1. 66 31
      psicoadmin/src/Pages/Puestos.js

+ 66 - 31
psicoadmin/src/Pages/Puestos.js

15
 import HighlightOffIcon from '@mui/icons-material/HighlightOff';
15
 import HighlightOffIcon from '@mui/icons-material/HighlightOff';
16
 
16
 
17
 import NotFound from '../Images/not_found.png';
17
 import NotFound from '../Images/not_found.png';
18
+const SUPPORTED_FORMATS = ["image/jpg", "image/jpeg", "image/gif", "image/png"];
18
 
19
 
19
 
20
 
20
 const NewPlazaSchema = Yup.object().shape({
21
 const NewPlazaSchema = Yup.object().shape({
25
         if(!value || value.length <= 0) return false
26
         if(!value || value.length <= 0) return false
26
         return value[0].size < 200000
27
         return value[0].size < 200000
27
     }).test('fileType', "El tipo del archivo no es válido", value => {
28
     }).test('fileType', "El tipo del archivo no es válido", value => {
28
-        let SUPPORTED_FORMATS = ["image/jpg", "image/jpeg", "image/gif", "image/png"];
29
         if(!value) return false
29
         if(!value) return false
30
         return SUPPORTED_FORMATS.includes(value[0].type)
30
         return SUPPORTED_FORMATS.includes(value[0].type)
31
     })
31
     })
32
 })
32
 })
33
+
34
+const ExpressSchema = Yup.object().shape({
35
+    link : Yup.string().required('El enlace es requerido').url("Debes agregar un enlace válido, recurda iniciar con http o https ").min(5).max(190),
36
+})
33
     
37
     
34
 let data = [{
38
 let data = [{
35
     nombre : 'The standard Lorem Ipsum passage, used since the 1500s',
39
     nombre : 'The standard Lorem Ipsum passage, used since the 1500s',
160
 
164
 
161
     let [ filename, setFilename ] = React.useState('');
165
     let [ filename, setFilename ] = React.useState('');
162
     let [ file, setFile ] = React.useState(undefined);
166
     let [ file, setFile ] = React.useState(undefined);
167
+    let [ type, setType ] = React.useState(undefined);
168
+    let [ validType, setValidType ] = React.useState(false);
169
+
163
     let { visible, onClose } = props
170
     let { visible, onClose } = props
164
     const hiddenFileInput = React.useRef(null);
171
     const hiddenFileInput = React.useRef(null);
165
 
172
 
167
         hiddenFileInput.current.click();
174
         hiddenFileInput.current.click();
168
     };
175
     };
169
 
176
 
177
+    React.useEffect(() => {
178
+
179
+        if( SUPPORTED_FORMATS.includes(type) ){
180
+            setValidType(true)
181
+        }else{
182
+            setValidType(false)
183
+        }
184
+
185
+    }, [type])
186
+
187
+
188
+
170
     return (
189
     return (
171
         <Modal size="lg" aria-labelledby="contained-modal-title-vcenter" centered  show={visible} onHide={onClose}>
190
         <Modal size="lg" aria-labelledby="contained-modal-title-vcenter" centered  show={visible} onHide={onClose}>
172
             <Modal.Header>
191
             <Modal.Header>
185
                     }}
204
                     }}
186
 
205
 
187
                     validationSchema={NewPlazaSchema}
206
                     validationSchema={NewPlazaSchema}
188
-                    onSubmit={async (values) => {
189
-                        console.log('VALUES >> ',values)
207
+                    onSubmit={ (values) => {
208
+                        // console.log('VALUES >> ',values)
209
+                        props.setManual(false)
190
                     }} >
210
                     }} >
191
 
211
 
192
 
212
 
196
 
216
 
197
                                 <Col md="4">
217
                                 <Col md="4">
198
                                     <div className="img-container">
218
                                     <div className="img-container">
199
-                                        <img alt="agregar plaza manual" src={ file ? file : NotFound}/>
219
+                                        <img alt="agregar plaza manual" src={ validType ? file : NotFound}/>
200
                                     </div>
220
                                     </div>
201
                                 </Col>
221
                                 </Col>
202
 
222
 
225
                                             let myFiles =Array.from(files);
245
                                             let myFiles =Array.from(files);
226
                                             setFieldValue("imagen", myFiles);
246
                                             setFieldValue("imagen", myFiles);
227
                                             setFilename(myFiles[0].name)
247
                                             setFilename(myFiles[0].name)
228
-
229
-                                            // var reader = new FileReader();
230
-                                            // var url = reader.readAsDataURL(files[0]);
231
-                                            // console.log('img url  >> ', url)
232
-                                            // setFile(reader.result);j
248
+                                            setType(myFiles[0].type)
233
                                             const objectUrl = URL.createObjectURL(files[0])
249
                                             const objectUrl = URL.createObjectURL(files[0])
234
-                                            console.log(objectUrl)
235
                                             setFile(objectUrl)
250
                                             setFile(objectUrl)
236
-
237
-
238
-
239
-
240
                                         }}
251
                                         }}
241
                                         style={{display: 'none'}}
252
                                         style={{display: 'none'}}
242
                                     />
253
                                     />
291
                 <h4 className="modal-title">Agregar plaza express</h4>
302
                 <h4 className="modal-title">Agregar plaza express</h4>
292
             </Modal.Header>
303
             </Modal.Header>
293
             <Modal.Body>
304
             <Modal.Body>
294
-                <div className="data_product">
295
-                    <div className="row">
296
-                        <div className="col-md-12">
297
-                            <input type="link" name="link" placeholder="Link de la plaza"/>
298
-                        </div>
299
-                        <div className="add_producto_confirm">
300
-                            <div className="btn_add_producto_confirm">
301
-                                <span type="submit">Agregar plaza</span>
305
+
306
+                <Formik
307
+                    initialValues={{
308
+                        link : ''
309
+                    }}
310
+                    validationSchema={ExpressSchema}
311
+                    onSubmit={ (values) => {
312
+                        props.setExpress(false)
313
+                        console.log('VALUES Express >> ',values)
314
+                    }} 
315
+                >
316
+                    { ({ errors, touched, validateField, validateForm, setFieldValue   }) =>  (
317
+
318
+                        <Form>
319
+                            <div className="data_product">
320
+                                <div className="row">
321
+                                    <div className="col-md-12">
322
+                                        {/* <input type="link" name="link" placeholder="Link de la plaza"/> */}
323
+                                        <Field type="link" name="link" placeholder="Link de la plaza"/>
324
+                                        {errors.link && touched.link && <div className="error_feedback">{errors.link}</div>}
325
+                                    </div>
326
+                                    <div className="add_producto_confirm">
327
+                                        <button className="btn_add_producto_confirm" type="submit">Agregar plaza</button>
328
+                                        {/* <div className="btn_add_producto_confirm"> */}
329
+                                        {/*     <span type="submit">Agregar plaza</span> */}
330
+                                        {/* </div> */}
331
+                                    </div>
332
+                                </div>
302
                             </div>
333
                             </div>
303
-                        </div>
304
-                    </div>
305
-                </div>
334
+                        </Form>
335
+                    )}
336
+
337
+                </Formik>
338
+
339
+
340
+
306
             </Modal.Body>
341
             </Modal.Body>
307
         </Modal>
342
         </Modal>
308
     )
343
     )
330
         exclusive: true,
365
         exclusive: true,
331
     };
366
     };
332
 
367
 
333
-
334
     let [manual, setManual] = React.useState(false);
368
     let [manual, setManual] = React.useState(false);
335
     let [expres, setExpress] = React.useState(false);
369
     let [expres, setExpress] = React.useState(false);
336
 
370
 
337
-    const showExpress = () => setExpress(true)
338
-
339
     return (
371
     return (
340
         <div className="content-section">
372
         <div className="content-section">
373
+
341
             <div className="main">
374
             <div className="main">
342
                 <Row>
375
                 <Row>
343
                     <Col md="2" sm="2" xs="2">
376
                     <Col md="2" sm="2" xs="2">
353
                         <div className="add_producto">
386
                         <div className="add_producto">
354
                             <div onClick={() => setManual(true) } className="btn_add_producto"> <span >Agregar manual</span> </div>
387
                             <div onClick={() => setManual(true) } className="btn_add_producto"> <span >Agregar manual</span> </div>
355
                         </div>
388
                         </div>
356
-                        <div onClick={showExpress} className="add_producto">
389
+                        <div onClick={() => setExpress(true) } className="add_producto">
357
                             <div className="btn_add_producto"> <span >Agregar express</span> </div>
390
                             <div className="btn_add_producto"> <span >Agregar express</span> </div>
358
                         </div>
391
                         </div>
359
                     </Col>
392
                     </Col>
369
                     </Row>
402
                     </Row>
370
                 </div>
403
                 </div>
371
             </div>
404
             </div>
372
-            <Express visible={expres} onClose={ () => setExpress(false) } />
373
-            <Manual visible={manual}  onClose={ () => setManual(false) } />
405
+
406
+            <Express setExpress={setExpress} visible={expres} onClose={ () => setExpress(false) } />
407
+            <Manual setManual={setManual} visible={manual}  onClose={ () => setManual(false) } />
408
+
374
         </div>
409
         </div>
375
     )
410
     )
376
 }
411
 }