@@ -14,15 +14,15 @@ import { Add as AddIcon } from '@mui/icons-material';
14
14
import { apiClient } from '@/utils/fetch' ;
15
15
import { components } from '@/types/api' ;
16
16
17
- const parseSitesFromJSON = ( jsonString : string ) : components [ 'schemas' ] [ ' Site' ] [ ] => {
17
+ const parseSitesFromJSON = ( jsonString : string ) : Site [ ] => {
18
18
try {
19
19
const parsed = JSON . parse ( jsonString ) ;
20
20
21
21
if ( ! Array . isArray ( parsed . sites ) ) {
22
22
throw new Error ( "Invalid format: 'sites' should be an array" ) ;
23
23
}
24
24
25
- const sites : components [ 'schemas' ] [ ' Site' ] [ ] = parsed . sites . map ( ( site : any ) : components [ 'schemas' ] [ ' Site' ] => {
25
+ const sites : Site [ ] = parsed . sites . map ( ( site : any ) : Site => {
26
26
return {
27
27
name : site . name ,
28
28
latitude : site . latitude ,
@@ -43,10 +43,10 @@ const parseSitesFromJSON = (jsonString: string): components['schemas']['Site'][]
43
43
} ;
44
44
45
45
export default function ListSites ( ) {
46
- const [ sites , setSites ] = useState < components [ 'schemas' ] [ ' Site' ] [ ] > ( [ ] ) ;
46
+ const [ sites , setSites ] = useState < Site [ ] > ( [ ] ) ;
47
47
const handleEdit = ( siteName : string ) => {
48
48
console . log ( `Edit site with ID: ${ siteName } ` ) ;
49
- window . open ( '/admin/create -edit-site' , '_self' ) ;
49
+ window . open ( '/admin/new -edit-site' , '_self' ) ;
50
50
} ;
51
51
52
52
const handleDelete = ( siteName : string ) => {
@@ -59,7 +59,7 @@ export default function ListSites() {
59
59
60
60
const handleAdd = ( ) => {
61
61
console . log ( 'Add new site' ) ;
62
- window . open ( '/admin/create-edit- site' , '_self' )
62
+ window . open ( '/admin/create-site' , '_self' )
63
63
} ;
64
64
65
65
const reloadSites = ( ) => {
@@ -81,9 +81,30 @@ export default function ListSites() {
81
81
reloadSites ( ) ;
82
82
} ) ;
83
83
84
- const deleteSite = ( site : components [ 'schemas' ] [ 'Site' ] ) => {
84
+ const siteToSchema = ( site : Site ) : components [ 'schemas' ] [ 'Site' ] => {
85
+ return {
86
+ name : site . name ,
87
+ latitude : site . latitude ,
88
+ longitude : site . longitude ,
89
+ status : siteStatusToSchema ( site . status ) ,
90
+ address : site . address ,
91
+ cell_id : site . cell_id ,
92
+ color : site . color ,
93
+ boundary : site . boundary
94
+ } ;
95
+ }
96
+
97
+ const siteStatusToSchema = ( siteStatus : SiteStatus ) : components [ 'parameters' ] [ 'SiteStatus' ] => {
98
+ if ( siteStatus === 'unknown' ) {
99
+ throw new Error ( `Invalid site status: ${ siteStatus } ` ) ;
100
+ } else {
101
+ return siteStatus as components [ 'parameters' ] [ 'SiteStatus' ] ;
102
+ }
103
+ }
104
+
105
+ const deleteSite = ( site : Site ) => {
85
106
apiClient . DELETE ( '/api/secure-site' , {
86
- body : site
107
+ body : siteToSchema ( site )
87
108
} ) . then ( res => {
88
109
const { data, error } = res ;
89
110
if ( error ) {
@@ -97,9 +118,9 @@ export default function ListSites() {
97
118
} ) ;
98
119
} ;
99
120
100
- const editSite = ( site : components [ 'schemas' ] [ ' Site' ] ) => {
121
+ const editSite = ( site : Site ) => {
101
122
apiClient . PUT ( '/api/secure-site' , {
102
- body : site
123
+ body : siteToSchema ( site )
103
124
} ) . then ( res => {
104
125
const { data, error } = res ;
105
126
if ( error ) {
@@ -113,9 +134,9 @@ export default function ListSites() {
113
134
} ) ;
114
135
} ;
115
136
116
- const createSite = ( site : components [ 'schemas' ] [ ' Site' ] ) => {
137
+ const createSite = ( site : Site ) => {
117
138
apiClient . POST ( '/api/secure-site' , {
118
- body : site
139
+ body : siteToSchema ( site )
119
140
} ) . then ( res => {
120
141
const { data, error } = res ;
121
142
if ( error ) {
@@ -127,7 +148,7 @@ export default function ListSites() {
127
148
} ) . catch ( err => {
128
149
console . error ( `Error creating site: ${ err } ` ) ;
129
150
} ) ;
130
- }
151
+ } ;
131
152
return (
132
153
< Container maxWidth = 'md' sx = { { mt : 4 , mb : 4 } } >
133
154
< Paper elevation = { 3 } sx = { { p : 3 } } >
0 commit comments