|
@@ -1,9 +1,9 @@
|
1
|
|
-import React, { useState, useEffect } from 'react';
|
|
1
|
+import React, { useState, useCallback } from 'react';
|
2
|
2
|
import { Row, Col } from 'react-bootstrap'
|
3
|
3
|
|
4
|
4
|
import toast, { Toaster } from 'react-hot-toast';
|
5
|
5
|
|
6
|
|
-import {
|
|
6
|
+import {
|
7
|
7
|
ToggleButton, ToggleButtonGroup, Box,
|
8
|
8
|
Paper, Pagination,
|
9
|
9
|
} from '@mui/material';
|
|
@@ -12,7 +12,7 @@ import { ViewList as ViewListIcon, ViewModule as ViewModuleIcon, } from '@mui/ic
|
12
|
12
|
|
13
|
13
|
import { default as useAuth } from '../Auth/useAuth';
|
14
|
14
|
import { Service } from '../Utils/HTTP';
|
15
|
|
-import { Divide } from '../Utils/Paginate';
|
|
15
|
+// import { Divide } from '../Utils/Paginate';
|
16
|
16
|
|
17
|
17
|
import Express from '../Components/Modal/AgregarExpress';
|
18
|
18
|
import Manual from '../Components/Modal/AgregarManual';
|
|
@@ -25,93 +25,98 @@ import { ListMode } from '../Components/Puestos/ListMode'
|
25
|
25
|
import { GridMode } from '../Components/Puestos/GridMode'
|
26
|
26
|
import { Add as AddIcon, } from '@mui/icons-material/'
|
27
|
27
|
|
|
28
|
+import { Loading } from '../Components/Generics/loading'
|
|
29
|
+import { ErrorMessage } from '../Components/Generics/Error'
|
|
30
|
+
|
|
31
|
+import { useQuery } from 'react-query';
|
28
|
32
|
|
29
|
33
|
export function Puestos() {
|
30
|
34
|
|
31
|
|
- const Complete = (status, message) => {
|
32
|
|
- console.log(status, message);
|
|
35
|
+ const auth = useAuth();
|
|
36
|
+ const token = auth.getToken();
|
33
|
37
|
|
34
|
|
- if(!status){
|
|
38
|
+ const Complete = useCallback((status, message) => {
|
|
39
|
+
|
|
40
|
+ if (!status) {
|
35
|
41
|
return toast.error(message)
|
36
|
42
|
}
|
37
|
43
|
|
38
|
44
|
let rest = new Service("/plaza/getall")
|
39
|
45
|
rest
|
40
|
46
|
.get(token)
|
41
|
|
- .then(({data}) => {
|
42
|
|
- let entries = data.map( e => {
|
43
|
|
- return {
|
44
|
|
- nombre : e.nombrepuesto,
|
45
|
|
- description : e.notas,
|
46
|
|
- id : e.id,
|
47
|
|
- created: e.create_day,
|
48
|
|
- data: e
|
49
|
|
- };
|
50
|
|
- })
|
51
|
|
- setData(Divide(entries))
|
|
47
|
+ .then(({ data }) => {
|
|
48
|
+ return data;
|
|
49
|
+ // let entries = data.map(e => {
|
|
50
|
+ // return {
|
|
51
|
+ // nombre: e.nombrepuesto,
|
|
52
|
+ // description: e.notas,
|
|
53
|
+ // id: e.id,
|
|
54
|
+ // created: e.create_day,
|
|
55
|
+ // data: e
|
|
56
|
+ // };
|
|
57
|
+ // })
|
|
58
|
+ //setData(Divide(entries))
|
52
|
59
|
})
|
53
|
60
|
.catch((error) => {
|
54
|
|
- console.log('error fetching data ', error );
|
|
61
|
+ console.log('error fetching data ', error);
|
55
|
62
|
})
|
56
|
63
|
|
57
|
64
|
toast.success(message)
|
58
|
|
- }
|
59
|
|
-
|
60
|
|
- const auth = useAuth();
|
61
|
|
-
|
62
|
|
- const [data, setData] = useState([]);
|
63
|
|
- const [page, setPage] = useState(1);
|
64
|
|
- const [categorias, setCategorias] = useState([]);
|
65
|
|
-
|
66
|
|
- const token = auth.getToken();
|
67
|
|
-
|
68
|
|
- const changePage = ( _ , value) => setPage(value);
|
69
|
|
-
|
70
|
|
- useEffect(() => {
|
|
65
|
+ },[token])
|
71
|
66
|
|
|
67
|
+ const getAll = useCallback(async () => {
|
72
|
68
|
let rest = new Service("/plaza/getall")
|
|
69
|
+ let response = await rest.getQuery(token);
|
|
70
|
+ return response;
|
|
71
|
+ },[token])
|
|
72
|
+
|
|
73
|
+ useCallback(() => {
|
|
74
|
+ let rest = new Service("/categoria/getAll")
|
73
|
75
|
rest
|
74
|
76
|
.get(token)
|
75
|
|
- .then(({data}) => {
|
76
|
|
- let entries = data.map( e => {
|
77
|
|
- return {
|
78
|
|
- nombre : e.nombrepuesto,
|
79
|
|
- description : e.notas,
|
80
|
|
- id : e.id,
|
81
|
|
- created: e.create_day,
|
82
|
|
- data: e
|
83
|
|
- };
|
84
|
|
- })
|
85
|
|
- setData(Divide(entries))
|
86
|
|
- })
|
87
|
|
- .catch((error) => {
|
88
|
|
- console.log('error fetching data ', error );
|
89
|
|
- })
|
90
|
|
-
|
91
|
|
- rest = new Service("/categoria/getAll")
|
92
|
|
- rest
|
93
|
|
- .get(token)
|
94
|
|
- .then(({data}) => {
|
95
|
|
- setCategorias(data)
|
|
77
|
+ .then(({ data }) => {
|
|
78
|
+ console.log(data)
|
|
79
|
+ setCategorias(data);
|
96
|
80
|
})
|
97
|
81
|
.catch((error) => {
|
98
|
|
- console.log('error fetching data ', error );
|
|
82
|
+ console.log('error fetching data ', error);
|
|
83
|
+ return error;
|
99
|
84
|
})
|
100
|
85
|
|
101
|
|
-
|
102
|
86
|
},[token])
|
103
|
87
|
|
|
88
|
+ const { isLoading, error, data } = useQuery('puestos', getAll);
|
|
89
|
+ console.log( isLoading, error, data )
|
|
90
|
+
|
|
91
|
+ const [page, setPage] = useState(1);
|
|
92
|
+ const [categorias, setCategorias] = useState([]);
|
|
93
|
+
|
|
94
|
+ const changePage = useCallback((_, value) => setPage(value),[]);
|
|
95
|
+
|
|
96
|
+ // useEffect(() => {
|
|
97
|
+ // // let entries = data.map( e => {
|
|
98
|
+ // // return {
|
|
99
|
+ // // nombre : e.nombrepuesto,
|
|
100
|
+ // // description : e.notas,
|
|
101
|
+ // // id : e.id,
|
|
102
|
+ // // created: e.create_day,
|
|
103
|
+ // // data: e
|
|
104
|
+ // // };
|
|
105
|
+ // // })
|
|
106
|
+ // // setData(Divide(entries))
|
|
107
|
+ // }, [])
|
|
108
|
+
|
104
|
109
|
// const [alignment, setAlignment] = React.useState('list');
|
105
|
110
|
const [alignment, setAlignment] = React.useState('grid');
|
106
|
111
|
|
107
|
|
- const handleChange = (_event, newAlignment) => setAlignment(newAlignment)
|
|
112
|
+ const handleChange = useCallback((_event, newAlignment) => setAlignment(newAlignment),[])
|
108
|
113
|
|
109
|
114
|
const children = [
|
110
|
115
|
<ToggleButton value="list" key="list">
|
111
|
116
|
<ViewListIcon />
|
112
|
117
|
</ToggleButton>,
|
113
|
118
|
<ToggleButton value="grid" key="grid">
|
114
|
|
- <ViewModuleIcon/>
|
|
119
|
+ <ViewModuleIcon />
|
115
|
120
|
</ToggleButton>,
|
116
|
121
|
];
|
117
|
122
|
|
|
@@ -130,16 +135,28 @@ export function Puestos() {
|
130
|
135
|
let [del, setDelete] = React.useState(false);
|
131
|
136
|
let [show, setShow] = React.useState(false);
|
132
|
137
|
|
|
138
|
+ if (isLoading) return <Loading />
|
|
139
|
+
|
|
140
|
+ if (error) {
|
|
141
|
+ return (
|
|
142
|
+ <Paper sx={{ mb: 2, padding: 2, height: '100%', minHeight: '95vh' }}>
|
|
143
|
+ <main id="loading_or_content">
|
|
144
|
+ <ErrorMessage/>
|
|
145
|
+ </main>
|
|
146
|
+ </Paper>
|
|
147
|
+ )
|
|
148
|
+ }
|
|
149
|
+
|
133
|
150
|
return (
|
134
|
151
|
<div className="content-section">
|
135
|
152
|
<div className="main">
|
136
|
153
|
<Box sx={{}}>
|
137
|
|
- <Paper sx={{ mb: 2, padding : 2, height: '100%', minHeight:'95vh' }}>
|
|
154
|
+ <Paper sx={{ mb: 2, padding: 2, height: '100%', minHeight: '95vh' }}>
|
138
|
155
|
|
139
|
|
- <Row style={{paddingBottom : 15}}>
|
|
156
|
+ <Row style={{ paddingBottom: 15 }}>
|
140
|
157
|
<Col md="2" sm="2" xs="2">
|
141
|
158
|
<div className="breadcrumb-header">
|
142
|
|
- <Box sx={{ float : 'left',display: 'flex', flexDirection: 'column', alignItems: 'center', '& > :not(style) + :not(style)': { mt: 2 }, }} >
|
|
159
|
+ <Box sx={{ float: 'left', display: 'flex', flexDirection: 'column', alignItems: 'center', '& > :not(style) + :not(style)': { mt: 2 }, }} >
|
143
|
160
|
<ToggleButtonGroup size="small" {...control}>
|
144
|
161
|
{children}
|
145
|
162
|
</ToggleButtonGroup>
|
|
@@ -148,72 +165,81 @@ export function Puestos() {
|
148
|
165
|
</Col>
|
149
|
166
|
<Col md="10" sm='10' xs="10">
|
150
|
167
|
<div className="add_producto">
|
151
|
|
- <div onClick={() => setManual(true) } className="btn_add_producto">
|
152
|
|
- <span className="btn_plaza_common" >Agregar manual <AddIcon fontSize="small"/></span>
|
|
168
|
+ <div onClick={() => setManual(true)} className="btn_add_producto">
|
|
169
|
+ <span className="btn_plaza_common" >Agregar manual <AddIcon fontSize="small" /></span>
|
153
|
170
|
</div>
|
154
|
171
|
</div>
|
155
|
|
- <div onClick={() => setExpress(true) } className="add_producto">
|
156
|
|
- <div className="btn_add_producto">
|
157
|
|
- <span className="btn_plaza_common">Agregar express <AddIcon fontSize="small"/></span>
|
|
172
|
+ <div onClick={() => setExpress(true)} className="add_producto">
|
|
173
|
+ <div className="btn_add_producto">
|
|
174
|
+ <span className="btn_plaza_common">Agregar express <AddIcon fontSize="small" /></span>
|
158
|
175
|
</div>
|
159
|
176
|
</div>
|
160
|
177
|
</Col>
|
161
|
178
|
</Row>
|
162
|
|
- <div className={`main_productos ${ alignment === 'grid' ? 'activar_vista' : 'desactivar_vista' }`} id="grid_view">
|
163
|
|
- <Row>
|
164
|
|
- <GridMode
|
165
|
|
- showing={alignment}
|
166
|
|
- data={data}
|
167
|
|
- index={page - 1}
|
168
|
|
- setPuesto={setPuesto}
|
169
|
|
- setEdit={setEdit}
|
170
|
|
- setDelete={setDelete}
|
171
|
|
- setShow={setShow}
|
|
179
|
+
|
|
180
|
+ <div >
|
|
181
|
+ <div className={`main_productos ${alignment === 'grid' ? 'activar_vista' : 'desactivar_vista'}`} id="grid_view">
|
|
182
|
+ <Row>
|
|
183
|
+ <GridMode
|
|
184
|
+ showing={alignment}
|
|
185
|
+ data={[]}
|
|
186
|
+ // data={data}
|
|
187
|
+ index={0}
|
|
188
|
+ // index={page - 1}
|
|
189
|
+ setPuesto={setPuesto}
|
|
190
|
+ setEdit={setEdit}
|
|
191
|
+ setDelete={setDelete}
|
|
192
|
+ setShow={setShow}
|
172
|
193
|
/>
|
173
|
|
- </Row>
|
174
|
|
- </div>
|
175
|
|
- <div className={`main_list_products ${alignment === 'list' ? 'activar_vista' : 'desactivar_vista'}`} id="list_view_products">
|
176
|
|
- <Row>
|
177
|
|
- <ListMode
|
178
|
|
- showing={alignment}
|
179
|
|
- data={data}
|
180
|
|
- index={page - 1}
|
181
|
|
- setPuesto={setPuesto}
|
182
|
|
- setEdit={setEdit}
|
183
|
|
- setDelete={setDelete}
|
184
|
|
- setShow={setShow}
|
|
194
|
+ </Row>
|
|
195
|
+ </div>
|
|
196
|
+ <div className={`main_list_products ${alignment === 'list' ? 'activar_vista' : 'desactivar_vista'}`} id="list_view_products">
|
|
197
|
+ <Row>
|
|
198
|
+ <ListMode
|
|
199
|
+ showing={alignment}
|
|
200
|
+ data={[]}
|
|
201
|
+ // data={data}
|
|
202
|
+ // index={page - 1}
|
|
203
|
+ index={0}
|
|
204
|
+ setPuesto={setPuesto}
|
|
205
|
+ setEdit={setEdit}
|
|
206
|
+ setDelete={setDelete}
|
|
207
|
+ setShow={setShow}
|
185
|
208
|
/>
|
186
|
|
- </Row>
|
187
|
|
- </div>
|
188
|
|
-
|
189
|
|
- <Pagination
|
190
|
|
- sx={{
|
191
|
|
- "& ul" :{
|
192
|
|
- paddingTop: "20px",
|
193
|
|
- justifyContent: "center"
|
194
|
|
- }
|
195
|
|
- }}
|
196
|
|
- siblingCount={2}
|
197
|
|
- boundaryCount={2}
|
198
|
|
- shape='rounded'
|
199
|
|
- count={data.length}
|
200
|
|
- page={page}
|
201
|
|
- onChange={changePage}
|
|
209
|
+ </Row>
|
|
210
|
+ </div>
|
|
211
|
+
|
|
212
|
+ <Pagination
|
|
213
|
+ sx={{
|
|
214
|
+ "& ul": {
|
|
215
|
+ paddingTop: "20px",
|
|
216
|
+ justifyContent: "center"
|
|
217
|
+ }
|
|
218
|
+ }}
|
|
219
|
+ siblingCount={2}
|
|
220
|
+ boundaryCount={2}
|
|
221
|
+ shape='rounded'
|
|
222
|
+ // count={data.length}
|
|
223
|
+ count={0}
|
|
224
|
+ page={page}
|
|
225
|
+ onChange={changePage}
|
202
|
226
|
/>
|
203
|
227
|
|
|
228
|
+
|
|
229
|
+ </div>
|
|
230
|
+
|
204
|
231
|
</Paper>
|
205
|
232
|
</Box>
|
206
|
|
-
|
207
|
233
|
</div>
|
208
|
234
|
|
209
|
|
- <Express setExpress={setExpress} visible={expres} onClose={() => setExpress(false) } />
|
210
|
|
- <Manual categorias={categorias} Complete={Complete} visible={manual} onClose={() => setManual(false)}/>
|
|
235
|
+ <Express setExpress={setExpress} visible={expres} onClose={() => setExpress(false)} />
|
|
236
|
+ <Manual categorias={categorias} Complete={Complete} visible={manual} onClose={() => setManual(false)} />
|
211
|
237
|
|
212
|
238
|
<Editar categorias={categorias} Complete={Complete} puesto={puesto} visible={edit} onClose={() => setEdit(false)} />
|
213
|
239
|
<Eliminar puesto={puesto} visible={del} onClose={() => setDelete(false)} />
|
214
|
|
- <Mostrar puesto={puesto} visible={show} onClose={() => setShow(false)} />
|
|
240
|
+ <Mostrar puesto={puesto} visible={show} onClose={() => setShow(false)} />
|
215
|
241
|
|
216
|
|
- <Toaster position="bottom-right" reverseOrder={false} />
|
|
242
|
+ <Toaster position="bottom-right" reverseOrder={false} />
|
217
|
243
|
|
218
|
244
|
</div>
|
219
|
245
|
)
|