1
1
import React , { useEffect , useState } from "react" ;
2
- import { Layout , Table , Typography , Tag } from 'antd' ;
2
+ import { Layout , Typography } from 'antd' ;
3
3
4
- import TopMenu from '../dashboard/TopMenu.jsx' ;
5
- import LeftMenu from '../dashboard/LeftMenu.jsx' ;
4
+ import VehiclesHeader from '../../../components/vehicleHistory/VehiclesHeader.jsx' ;
5
+ import VehiclesLayout from '../../../components/vehicleHistory/VehiclesLayout' ;
6
+ import VehiclesTable from '../../../components/vehicleHistory/VehiclesTable' ;
6
7
7
8
import '../../css/DashboardMenu.css' ;
8
9
import '../../css/VehiclesHistory.css' ;
9
10
10
- const { Header } = Layout ;
11
-
12
11
const VehiclesHistory = ( ) => {
13
- const [ vehiclesHistory , setVehiclesHistory ] = useState ( [ ] ) ;
14
-
15
- useEffect ( ( ) => {
16
- fetchVehiclesHistory ( ) ;
17
- } , [ ] ) ;
12
+ const [ vehiclesHistory , setVehiclesHistory ] = useState ( [ ] ) ;
18
13
19
- const fetchVehiclesHistory = async ( ) => {
20
- try {
21
- const response = await fetch ( `${ import . meta. env . VITE_APP_API_URL } /parking-space` ) ;
22
- if ( response . ok ) {
23
- const data = await response . json ( ) ;
14
+ useEffect ( ( ) => {
15
+ fetchVehiclesHistory ( ) ;
16
+ } , [ ] ) ;
24
17
25
- const mappedData = data . parkingSpaces . map ( space => ( {
26
- id : space . id ,
27
- firstname_owner : space . customer . firstname_owner ,
28
- lastname_owner : space . customer . lastname_owner ,
29
- phone_number : space . customer . phone_number ,
30
- license_plate : space . vehicle . license_plate ,
31
- brand : space . vehicle . brand ,
32
- type : space . vehicle . type ,
33
- color : space . vehicle . color ,
34
- } ) ) ;
18
+ const fetchVehiclesHistory = async ( ) => {
19
+ try {
20
+ const response = await fetch ( `${ import . meta. env . VITE_APP_API_URL } /parking-space` ) ;
21
+ if ( response . ok ) {
22
+ const data = await response . json ( ) ;
35
23
36
- // Assign random colors to phone numbers
37
- mappedData . forEach ( item => {
38
- item . phone_number_color = getRandomColor ( ) ;
39
- } ) ;
24
+ const mappedData = data . parkingSpaces . map ( space => ( {
25
+ id : space . id ,
26
+ firstname_owner : space . customer . firstname_owner ,
27
+ lastname_owner : space . customer . lastname_owner ,
28
+ phone_number : space . customer . phone_number ,
29
+ license_plate : space . vehicle . license_plate ,
30
+ brand : space . vehicle . brand ,
31
+ type : space . vehicle . type ,
32
+ color : space . vehicle . color ,
33
+ } ) ) ;
40
34
41
- setVehiclesHistory ( mappedData ) ;
42
- } else {
43
- console . error ( 'Error getting parking spaces' ) ;
44
- }
45
- } catch ( error ) {
46
- console . error ( error ) ;
47
- }
48
- } ;
35
+ // Assign random colors to phone numbers
36
+ mappedData . forEach ( item => {
37
+ item . phone_number_color = getRandomColor ( ) ;
38
+ } ) ;
49
39
50
- const getRandomColor = ( ) => {
51
- const colors = [ 'blue' , 'red' , 'yellow' , 'green' , 'purple' , 'orange' , 'gray' , 'cyan' , 'black' , 'brown' ] ;
52
- return colors [ Math . floor ( Math . random ( ) * colors . length ) ] ;
53
- } ;
40
+ setVehiclesHistory ( mappedData ) ;
41
+ } else {
42
+ console . error ( 'Error getting parking spaces' ) ;
43
+ }
44
+ } catch ( error ) {
45
+ console . error ( error ) ;
46
+ }
47
+ } ;
54
48
55
- const typeColorMap = {
56
- SUV : 'blue' ,
57
- Pickup : 'red' ,
58
- Hatchback : 'yellow' ,
59
- Crossover : 'green' ,
60
- Convertible : 'purple' ,
61
- Sedan : 'orange' ,
62
- Coupe : 'gray' ,
63
- Minivan : 'cyan' ,
64
- Otro : 'magenta'
65
- } ;
49
+ const getRandomColor = ( ) => {
50
+ const colors = [ 'blue' , 'red' , 'yellow' , 'green' , 'purple' , 'orange' , 'gray' , 'cyan' , 'black' , 'brown' ] ;
51
+ return colors [ Math . floor ( Math . random ( ) * colors . length ) ] ;
52
+ } ;
66
53
67
- const colorColorMap = {
68
- Rojo : 'volcano' ,
69
- Azul : 'geekblue' ,
70
- Negro : 'black' ,
71
- Blanco : 'lightgray' ,
72
- Verde : 'green' ,
73
- Amarillo : 'gold' ,
74
- Otro : 'cyan'
75
- } ;
54
+ const typeColorMap = {
55
+ SUV : 'blue' ,
56
+ Pickup : 'red' ,
57
+ Hatchback : 'yellow' ,
58
+ Crossover : 'green' ,
59
+ Convertible : 'purple' ,
60
+ Sedan : 'orange' ,
61
+ Coupe : 'gray' ,
62
+ Minivan : 'cyan' ,
63
+ Otro : 'magenta'
64
+ } ;
76
65
77
- const columns = [
78
- {
79
- title : 'ID' ,
80
- dataIndex : 'id' ,
81
- key : 'id' ,
82
- } ,
83
- {
84
- title : 'Placa del vehículo' ,
85
- dataIndex : 'license_plate' ,
86
- key : 'license_plate' ,
87
- } ,
88
- {
89
- title : 'Tipo de Vehículo' ,
90
- dataIndex : 'type' ,
91
- key : 'type' ,
92
- render : ( type ) => (
93
- < Tag color = { typeColorMap [ type ] } > { type } </ Tag >
94
- ) ,
95
- } ,
96
- {
97
- title : 'Marca del vehículo' ,
98
- dataIndex : 'brand' ,
99
- key : 'brand' ,
100
- } ,
101
- {
102
- title : 'Color del vehículo' ,
103
- dataIndex : 'color' ,
104
- key : 'color' ,
105
- render : ( color ) => (
106
- < Tag color = { colorColorMap [ color ] } > { color } </ Tag >
107
- ) ,
108
- } ,
109
- {
110
- title : 'Nombre del cliente' ,
111
- dataIndex : 'firstname_owner' ,
112
- key : 'firstname_owner' ,
113
- } ,
114
- {
115
- title : 'Apellido del cliente' ,
116
- dataIndex : 'lastname_owner' ,
117
- key : 'lastname_owner' ,
118
- } ,
119
- {
120
- title : 'Número de teléfono del cliente' ,
121
- dataIndex : 'phone_number' ,
122
- key : 'phone_number' ,
123
- render : ( phone_number , record ) => (
124
- < Tag color = { record . phone_number_color } > { phone_number } </ Tag >
125
- ) ,
126
- } ,
127
- ] ;
66
+ const colorColorMap = {
67
+ Rojo : 'volcano' ,
68
+ Azul : 'geekblue' ,
69
+ Negro : 'black' ,
70
+ Blanco : 'lightgray' ,
71
+ Verde : 'green' ,
72
+ Amarillo : 'gold' ,
73
+ Otro : 'cyan'
74
+ } ;
128
75
129
- return (
130
- < Layout >
131
- < Header className = 'home-header-dashboard' >
132
- < TopMenu />
133
- </ Header >
134
- < Layout >
135
- < Layout . Sider >
136
- < LeftMenu />
137
- </ Layout . Sider >
138
- < Layout . Content className = 'layout-content-vehicle-history' >
139
- < Typography . Title className = 'table-title-vehicle-history' level = { 2 } >
140
- Historial de Vehículos
141
- </ Typography . Title >
142
- < Table
143
- dataSource = { vehiclesHistory }
144
- columns = { columns }
145
- rowKey = "id"
146
- pagination = { {
147
- pageSize : 11 ,
148
- showSizeChanger : false ,
149
- pageSizeOptions : [ '5' , '10' , '20' ] ,
150
- showTotal : ( total , range ) => `${ range [ 0 ] } -${ range [ 1 ] } de ${ total } filas` ,
151
- } }
152
- />
153
- </ Layout . Content >
154
- </ Layout >
155
- </ Layout >
156
- )
76
+ return (
77
+ < Layout >
78
+ < VehiclesHeader />
79
+ < VehiclesLayout >
80
+ < Typography . Title className = 'table-title-vehicle-history' level = { 2 } >
81
+ Historial de Vehículos
82
+ </ Typography . Title >
83
+ < VehiclesTable
84
+ vehiclesHistory = { vehiclesHistory }
85
+ typeColorMap = { typeColorMap }
86
+ colorColorMap = { colorColorMap }
87
+ getRandomColor = { getRandomColor }
88
+ />
89
+ </ VehiclesLayout >
90
+ </ Layout >
91
+ ) ;
157
92
}
158
93
159
- export default VehiclesHistory ;
94
+ export default VehiclesHistory ;
0 commit comments