|
@@ -1,15 +1,14 @@
|
1
|
|
-import React, { useState, useCallback, useRef} from 'react';
|
|
1
|
+import React, { useState, useCallback } from 'react';
|
2
|
2
|
import { Row, Col } from 'react-bootstrap'
|
3
|
3
|
import { Toaster } from 'react-hot-toast';
|
4
|
4
|
|
5
|
5
|
import {
|
6
|
|
- ToggleButton, ToggleButtonGroup, Box,
|
7
|
|
- Paper, Pagination,Chip
|
|
6
|
+ ToggleButton, ToggleButtonGroup, Box,
|
|
7
|
+ Paper, Pagination, Chip
|
8
|
8
|
} from '@mui/material';
|
9
|
9
|
|
10
|
10
|
import { ViewList as ViewListIcon, ViewModule as ViewModuleIcon, } from '@mui/icons-material';
|
11
|
11
|
|
12
|
|
-import { default as useAuth } from '../Auth/useAuth';
|
13
|
12
|
import { Service } from '../Utils/HTTP';
|
14
|
13
|
import { Divide } from '../Utils/Paginate';
|
15
|
14
|
|
|
@@ -26,175 +25,175 @@ import { Add as AddIcon, } from '@mui/icons-material/'
|
26
|
25
|
|
27
|
26
|
import { Loading } from '../Components/Generics/loading'
|
28
|
27
|
import { ErrorMessage } from '../Components/Generics/Error'
|
|
28
|
+import { useSelector } from 'react-redux';
|
29
|
29
|
|
30
|
30
|
import { useQuery } from 'react-query';
|
31
|
31
|
|
32
|
32
|
export function Puestos() {
|
33
|
33
|
|
34
|
|
- const auth = useAuth();
|
35
|
|
- const token = useRef(auth.getToken());
|
36
|
|
- const [page, setPage] = useState(1);
|
37
|
|
-
|
38
|
|
- const getAll = async () => {
|
39
|
|
- let rest = new Service("/plaza/getall")
|
40
|
|
- let response = await rest.getQuery(token.current);
|
41
|
|
- return response;
|
42
|
|
- }
|
43
|
|
-
|
44
|
|
- const { isLoading, error, data : result } = useQuery('puestos', getAll);
|
45
|
|
- const changePage = useCallback((_, value) => setPage(value),[]);
|
46
|
|
- const [alignment, setAlignment] = React.useState('grid');
|
47
|
|
- const handleChange = useCallback((_event, newAlignment) => setAlignment(newAlignment),[])
|
48
|
|
-
|
49
|
|
- const children = [
|
50
|
|
- <ToggleButton value="list" key="list">
|
51
|
|
- <ViewListIcon />
|
52
|
|
- </ToggleButton>,
|
53
|
|
- <ToggleButton value="grid" key="grid">
|
54
|
|
- <ViewModuleIcon />
|
55
|
|
- </ToggleButton>,
|
56
|
|
- ];
|
57
|
|
-
|
58
|
|
- const control = {
|
59
|
|
- value: alignment,
|
60
|
|
- onChange: handleChange,
|
61
|
|
- exclusive: true,
|
62
|
|
- };
|
63
|
|
-
|
64
|
|
- let [manual, setManual] = React.useState(false);
|
65
|
|
- let [expres, setExpress] = React.useState(false);
|
66
|
|
-
|
67
|
|
- let [puesto, setPuesto] = React.useState(false);
|
68
|
|
- let [edit, setEdit] = React.useState(false);
|
69
|
|
- let [del, setDelete] = React.useState(false);
|
70
|
|
- let [show, setShow] = React.useState(false);
|
71
|
|
-
|
72
|
|
- const toggle = useCallback((type,puesto) => {
|
73
|
|
- setPuesto(puesto)
|
74
|
|
- switch(type){
|
75
|
|
- case "VER": {
|
76
|
|
- setShow(!show);
|
77
|
|
- break;
|
78
|
|
- }
|
79
|
|
- case "EDIT": {
|
80
|
|
- setEdit(!edit)
|
81
|
|
- break;
|
82
|
|
- }
|
83
|
|
- case "DEL": {
|
84
|
|
- setDelete(!del)
|
85
|
|
- break;
|
86
|
|
- }
|
87
|
|
- default: break;
|
88
|
|
- }
|
89
|
|
- },[edit,del,show])
|
90
|
|
-
|
91
|
|
- if (isLoading){
|
92
|
|
- return(
|
93
|
|
- <Paper sx={{ mb: 2, padding: 2, height: '100%', minHeight: '95vh' }}>
|
94
|
|
- <main id="loading_or_content">
|
95
|
|
- <Loading />
|
96
|
|
- </main>
|
97
|
|
- </Paper>
|
98
|
|
- )
|
99
|
|
- }
|
100
|
|
-
|
101
|
|
- if (error) {
|
102
|
|
- return (
|
103
|
|
- <Paper sx={{ mb: 2, padding: 2, height: '100%', minHeight: '95vh' }}>
|
104
|
|
- <main id="loading_or_content">
|
105
|
|
- <ErrorMessage/>
|
106
|
|
- </main>
|
107
|
|
- </Paper>
|
108
|
|
- )
|
|
34
|
+ const auth = useSelector((state) => state.token)
|
|
35
|
+ const [page, setPage] = useState(1);
|
|
36
|
+
|
|
37
|
+ const getAll = async () => {
|
|
38
|
+ let rest = new Service("/plaza/getall")
|
|
39
|
+ let response = await rest.getQuery(auth.token);
|
|
40
|
+ return response;
|
|
41
|
+ }
|
|
42
|
+
|
|
43
|
+ const { isLoading, error, data: result } = useQuery('puestos', getAll);
|
|
44
|
+ const changePage = useCallback((_, value) => setPage(value), []);
|
|
45
|
+ const [alignment, setAlignment] = React.useState('grid');
|
|
46
|
+ const handleChange = useCallback((_event, newAlignment) => setAlignment(newAlignment), [])
|
|
47
|
+
|
|
48
|
+ const children = [
|
|
49
|
+ <ToggleButton value="list" key="list">
|
|
50
|
+ <ViewListIcon />
|
|
51
|
+ </ToggleButton>,
|
|
52
|
+ <ToggleButton value="grid" key="grid">
|
|
53
|
+ <ViewModuleIcon />
|
|
54
|
+ </ToggleButton>,
|
|
55
|
+ ];
|
|
56
|
+
|
|
57
|
+ const control = {
|
|
58
|
+ value: alignment,
|
|
59
|
+ onChange: handleChange,
|
|
60
|
+ exclusive: true,
|
|
61
|
+ };
|
|
62
|
+
|
|
63
|
+ let [manual, setManual] = React.useState(false);
|
|
64
|
+ let [expres, setExpress] = React.useState(false);
|
|
65
|
+
|
|
66
|
+ let [puesto, setPuesto] = React.useState(false);
|
|
67
|
+ let [edit, setEdit] = React.useState(false);
|
|
68
|
+ let [del, setDelete] = React.useState(false);
|
|
69
|
+ let [show, setShow] = React.useState(false);
|
|
70
|
+
|
|
71
|
+ const toggle = useCallback((type, puesto) => {
|
|
72
|
+ setPuesto(puesto)
|
|
73
|
+ switch (type) {
|
|
74
|
+ case "VER": {
|
|
75
|
+ setShow(!show);
|
|
76
|
+ break;
|
|
77
|
+ }
|
|
78
|
+ case "EDIT": {
|
|
79
|
+ setEdit(!edit)
|
|
80
|
+ break;
|
|
81
|
+ }
|
|
82
|
+ case "DEL": {
|
|
83
|
+ setDelete(!del)
|
|
84
|
+ break;
|
|
85
|
+ }
|
|
86
|
+ default: break;
|
109
|
87
|
}
|
|
88
|
+ }, [edit, del, show])
|
110
|
89
|
|
111
|
|
- const total_items = Divide(result.data).length
|
|
90
|
+ if (isLoading) {
|
|
91
|
+ return (
|
|
92
|
+ <Paper sx={{ mb: 2, padding: 2, height: '100%', minHeight: '95vh' }}>
|
|
93
|
+ <main id="loading_or_content">
|
|
94
|
+ <Loading />
|
|
95
|
+ </main>
|
|
96
|
+ </Paper>
|
|
97
|
+ )
|
|
98
|
+ }
|
112
|
99
|
|
|
100
|
+ if (error) {
|
113
|
101
|
return (
|
114
|
|
- <div className="content-section">
|
115
|
|
- <div className="main">
|
116
|
|
- <Box>
|
117
|
|
- <Paper sx={{ mb: 2, padding: 2, }}>
|
118
|
|
-
|
119
|
|
- <Row style={{ paddingBottom: 15 }}>
|
120
|
|
- <Col md="2" sm="2" xs="2">
|
121
|
|
- <div className="breadcrumb-header">
|
122
|
|
- <Box sx={{ float: 'left', display: 'flex', flexDirection: 'column', alignItems: 'center', '& > :not(style) + :not(style)': { mt: 2 }, }} >
|
123
|
|
- <ToggleButtonGroup size="small" {...control}>
|
124
|
|
- {children}
|
125
|
|
- </ToggleButtonGroup>
|
126
|
|
- </Box>
|
127
|
|
- </div>
|
128
|
|
- </Col>
|
129
|
|
- <Col md="10" sm='10' xs="10">
|
130
|
|
- <div className="add_producto">
|
131
|
|
- <div onClick={() => setManual(true)} className="btn_add_producto">
|
132
|
|
- <span className="btn_plaza_common" >Agregar manual <AddIcon fontSize="small" /></span>
|
133
|
|
- </div>
|
134
|
|
- </div>
|
135
|
|
- <div onClick={() => setExpress(true)} className="add_producto">
|
136
|
|
- <div className="btn_add_producto">
|
137
|
|
- <span className="btn_plaza_common">Agregar express <AddIcon fontSize="small" /></span>
|
138
|
|
- </div>
|
139
|
|
- </div>
|
140
|
|
- </Col>
|
141
|
|
- </Row>
|
142
|
|
-
|
143
|
|
- <div>
|
144
|
|
- <div className={`main_productos ${alignment === 'grid' ? 'activar_vista' : 'desactivar_vista'}`} id="grid_view">
|
145
|
|
- <Row>
|
146
|
|
- <GridMode
|
147
|
|
- toggle={toggle}
|
148
|
|
- showing={alignment}
|
149
|
|
- data={Divide( result.data )}
|
150
|
|
- index={page - 1}
|
151
|
|
- />
|
152
|
|
- </Row>
|
153
|
|
- </div>
|
154
|
|
- <div className={`main_list_products ${alignment === 'list' ? 'activar_vista' : 'desactivar_vista'}`} id="list_view_products">
|
155
|
|
- <Row>
|
156
|
|
- <ListMode
|
157
|
|
- toggle={toggle}
|
158
|
|
- showing={alignment}
|
159
|
|
- data={Divide( result.data )}
|
160
|
|
- index={page - 1}
|
161
|
|
- />
|
162
|
|
- </Row>
|
163
|
|
- </div>
|
164
|
|
-
|
165
|
|
- <div id="pagi_bottom">
|
166
|
|
- <Pagination
|
167
|
|
- sx={{
|
168
|
|
- "& ul": {
|
169
|
|
- paddingTop: "20px",
|
170
|
|
- justifyContent: "center"
|
171
|
|
- }
|
172
|
|
- }}
|
173
|
|
- siblingCount={2}
|
174
|
|
- boundaryCount={2}
|
175
|
|
- shape='rounded'
|
176
|
|
- count={total_items}
|
177
|
|
- page={page}
|
178
|
|
- onChange={changePage}
|
179
|
|
- />
|
180
|
|
-
|
181
|
|
- <Chip label={"Total: "+ ( result? result.data.length : 0 ) } />
|
182
|
|
- </div>
|
183
|
|
-
|
184
|
|
- </div>
|
185
|
|
- </Paper>
|
186
|
|
- </Box>
|
|
102
|
+ <Paper sx={{ mb: 2, padding: 2, height: '100%', minHeight: '95vh' }}>
|
|
103
|
+ <main id="loading_or_content">
|
|
104
|
+ <ErrorMessage />
|
|
105
|
+ </main>
|
|
106
|
+ </Paper>
|
|
107
|
+ )
|
|
108
|
+ }
|
|
109
|
+
|
|
110
|
+ const total_items = Divide(result.data).length
|
|
111
|
+
|
|
112
|
+ return (
|
|
113
|
+ <div className="content-section">
|
|
114
|
+ <div className="main">
|
|
115
|
+ <Box>
|
|
116
|
+ <Paper sx={{ mb: 2, padding: 2, }}>
|
|
117
|
+
|
|
118
|
+ <Row style={{ paddingBottom: 15 }}>
|
|
119
|
+ <Col md="2" sm="2" xs="2">
|
|
120
|
+ <div className="breadcrumb-header">
|
|
121
|
+ <Box sx={{ float: 'left', display: 'flex', flexDirection: 'column', alignItems: 'center', '& > :not(style) + :not(style)': { mt: 2 }, }} >
|
|
122
|
+ <ToggleButtonGroup size="small" {...control}>
|
|
123
|
+ {children}
|
|
124
|
+ </ToggleButtonGroup>
|
|
125
|
+ </Box>
|
|
126
|
+ </div>
|
|
127
|
+ </Col>
|
|
128
|
+ <Col md="10" sm='10' xs="10">
|
|
129
|
+ <div className="add_producto">
|
|
130
|
+ <div onClick={() => setManual(true)} className="btn_add_producto">
|
|
131
|
+ <span className="btn_plaza_common" >Agregar manual <AddIcon fontSize="small" /></span>
|
|
132
|
+ </div>
|
|
133
|
+ </div>
|
|
134
|
+ <div onClick={() => setExpress(true)} className="add_producto">
|
|
135
|
+ <div className="btn_add_producto">
|
|
136
|
+ <span className="btn_plaza_common">Agregar express <AddIcon fontSize="small" /></span>
|
|
137
|
+ </div>
|
|
138
|
+ </div>
|
|
139
|
+ </Col>
|
|
140
|
+ </Row>
|
|
141
|
+
|
|
142
|
+ <div>
|
|
143
|
+ <div className={`main_productos ${alignment === 'grid' ? 'activar_vista' : 'desactivar_vista'}`} id="grid_view">
|
|
144
|
+ <Row>
|
|
145
|
+ <GridMode
|
|
146
|
+ toggle={toggle}
|
|
147
|
+ showing={alignment}
|
|
148
|
+ data={Divide(result.data)}
|
|
149
|
+ index={page - 1}
|
|
150
|
+ />
|
|
151
|
+ </Row>
|
|
152
|
+ </div>
|
|
153
|
+ <div className={`main_list_products ${alignment === 'list' ? 'activar_vista' : 'desactivar_vista'}`} id="list_view_products">
|
|
154
|
+ <Row>
|
|
155
|
+ <ListMode
|
|
156
|
+ toggle={toggle}
|
|
157
|
+ showing={alignment}
|
|
158
|
+ data={Divide(result.data)}
|
|
159
|
+ index={page - 1}
|
|
160
|
+ />
|
|
161
|
+ </Row>
|
|
162
|
+ </div>
|
|
163
|
+
|
|
164
|
+ <div id="pagi_bottom">
|
|
165
|
+ <Pagination
|
|
166
|
+ sx={{
|
|
167
|
+ "& ul": {
|
|
168
|
+ paddingTop: "20px",
|
|
169
|
+ justifyContent: "center"
|
|
170
|
+ }
|
|
171
|
+ }}
|
|
172
|
+ siblingCount={2}
|
|
173
|
+ boundaryCount={2}
|
|
174
|
+ shape='rounded'
|
|
175
|
+ count={total_items}
|
|
176
|
+ page={page}
|
|
177
|
+ onChange={changePage}
|
|
178
|
+ />
|
|
179
|
+
|
|
180
|
+ <Chip label={"Total: " + (result ? result.data.length : 0)} />
|
|
181
|
+ </div>
|
|
182
|
+
|
187
|
183
|
</div>
|
|
184
|
+ </Paper>
|
|
185
|
+ </Box>
|
|
186
|
+ </div>
|
188
|
187
|
|
189
|
|
- <Express setExpress={setExpress} visible={expres} onClose={() => setExpress(false)} />
|
190
|
|
- <Manual visible={manual} onClose={() => setManual(false)} />
|
|
188
|
+ <Express setExpress={setExpress} visible={expres} onClose={() => setExpress(false)} />
|
|
189
|
+ <Manual visible={manual} onClose={() => setManual(false)} />
|
191
|
190
|
|
192
|
|
- <Mostrar puesto={puesto} visible={show} toggle={toggle} />
|
193
|
|
- <Editar puesto={puesto} visible={edit} toggle={toggle} />
|
194
|
|
- <Eliminar visible={del} onClose={() => setDelete(false)} />
|
|
191
|
+ <Mostrar puesto={puesto} visible={show} toggle={toggle} />
|
|
192
|
+ <Editar puesto={puesto} visible={edit} toggle={toggle} />
|
|
193
|
+ <Eliminar visible={del} onClose={() => setDelete(false)} />
|
195
|
194
|
|
196
|
|
- <Toaster position="bottom-right" />
|
|
195
|
+ <Toaster position="bottom-right" />
|
197
|
196
|
|
198
|
|
- </div>
|
199
|
|
- )
|
|
197
|
+ </div>
|
|
198
|
+ )
|
200
|
199
|
}
|