amenpunk преди 3 години
родител
ревизия
a5c93e4189
променени са 1 файла, в които са добавени 66 реда и са изтрити 31 реда
  1. 66 31
      psicoadmin/src/Pages/Puestos.js

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

@@ -15,6 +15,7 @@ import EditIcon from '@mui/icons-material/Edit';
15 15
 import HighlightOffIcon from '@mui/icons-material/HighlightOff';
16 16
 
17 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 21
 const NewPlazaSchema = Yup.object().shape({
@@ -25,11 +26,14 @@ const NewPlazaSchema = Yup.object().shape({
25 26
         if(!value || value.length <= 0) return false
26 27
         return value[0].size < 200000
27 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 29
         if(!value) return false
30 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 38
 let data = [{
35 39
     nombre : 'The standard Lorem Ipsum passage, used since the 1500s',
@@ -160,6 +164,9 @@ function Manual ( props ) {
160 164
 
161 165
     let [ filename, setFilename ] = React.useState('');
162 166
     let [ file, setFile ] = React.useState(undefined);
167
+    let [ type, setType ] = React.useState(undefined);
168
+    let [ validType, setValidType ] = React.useState(false);
169
+
163 170
     let { visible, onClose } = props
164 171
     const hiddenFileInput = React.useRef(null);
165 172
 
@@ -167,6 +174,18 @@ function Manual ( props ) {
167 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 189
     return (
171 190
         <Modal size="lg" aria-labelledby="contained-modal-title-vcenter" centered  show={visible} onHide={onClose}>
172 191
             <Modal.Header>
@@ -185,8 +204,9 @@ function Manual ( props ) {
185 204
                     }}
186 205
 
187 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,7 +216,7 @@ function Manual ( props ) {
196 216
 
197 217
                                 <Col md="4">
198 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 220
                                     </div>
201 221
                                 </Col>
202 222
 
@@ -225,18 +245,9 @@ function Manual ( props ) {
225 245
                                             let myFiles =Array.from(files);
226 246
                                             setFieldValue("imagen", myFiles);
227 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 249
                                             const objectUrl = URL.createObjectURL(files[0])
234
-                                            console.log(objectUrl)
235 250
                                             setFile(objectUrl)
236
-
237
-
238
-
239
-
240 251
                                         }}
241 252
                                         style={{display: 'none'}}
242 253
                                     />
@@ -291,18 +302,42 @@ function Express (props) {
291 302
                 <h4 className="modal-title">Agregar plaza express</h4>
292 303
             </Modal.Header>
293 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 333
                             </div>
303
-                        </div>
304
-                    </div>
305
-                </div>
334
+                        </Form>
335
+                    )}
336
+
337
+                </Formik>
338
+
339
+
340
+
306 341
             </Modal.Body>
307 342
         </Modal>
308 343
     )
@@ -330,14 +365,12 @@ export function Puestos() {
330 365
         exclusive: true,
331 366
     };
332 367
 
333
-
334 368
     let [manual, setManual] = React.useState(false);
335 369
     let [expres, setExpress] = React.useState(false);
336 370
 
337
-    const showExpress = () => setExpress(true)
338
-
339 371
     return (
340 372
         <div className="content-section">
373
+
341 374
             <div className="main">
342 375
                 <Row>
343 376
                     <Col md="2" sm="2" xs="2">
@@ -353,7 +386,7 @@ export function Puestos() {
353 386
                         <div className="add_producto">
354 387
                             <div onClick={() => setManual(true) } className="btn_add_producto"> <span >Agregar manual</span> </div>
355 388
                         </div>
356
-                        <div onClick={showExpress} className="add_producto">
389
+                        <div onClick={() => setExpress(true) } className="add_producto">
357 390
                             <div className="btn_add_producto"> <span >Agregar express</span> </div>
358 391
                         </div>
359 392
                     </Col>
@@ -369,8 +402,10 @@ export function Puestos() {
369 402
                     </Row>
370 403
                 </div>
371 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 409
         </div>
375 410
     )
376 411
 }