@@ -14,15 +14,15 @@ import { Add as AddIcon } from '@mui/icons-material';
1414import { apiClient } from '@/utils/fetch' ;
1515import { components } from '@/types/api' ;
1616
17- const parseSitesFromJSON = ( jsonString : string ) : components [ 'schemas' ] [ ' Site' ] [ ] => {
17+ const parseSitesFromJSON = ( jsonString : string ) : Site [ ] => {
1818 try {
1919 const parsed = JSON . parse ( jsonString ) ;
2020
2121 if ( ! Array . isArray ( parsed . sites ) ) {
2222 throw new Error ( "Invalid format: 'sites' should be an array" ) ;
2323 }
2424
25- const sites : components [ 'schemas' ] [ ' Site' ] [ ] = parsed . sites . map ( ( site : any ) : components [ 'schemas' ] [ ' Site' ] => {
25+ const sites : Site [ ] = parsed . sites . map ( ( site : any ) : Site => {
2626 return {
2727 name : site . name ,
2828 latitude : site . latitude ,
@@ -43,10 +43,10 @@ const parseSitesFromJSON = (jsonString: string): components['schemas']['Site'][]
4343} ;
4444
4545export default function ListSites ( ) {
46- const [ sites , setSites ] = useState < components [ 'schemas' ] [ ' Site' ] [ ] > ( [ ] ) ;
46+ const [ sites , setSites ] = useState < Site [ ] > ( [ ] ) ;
4747 const handleEdit = ( siteName : string ) => {
4848 console . log ( `Edit site with ID: ${ siteName } ` ) ;
49- window . open ( '/admin/create -edit-site' , '_self' ) ;
49+ window . open ( '/admin/new -edit-site' , '_self' ) ;
5050 } ;
5151
5252 const handleDelete = ( siteName : string ) => {
@@ -59,7 +59,7 @@ export default function ListSites() {
5959
6060 const handleAdd = ( ) => {
6161 console . log ( 'Add new site' ) ;
62- window . open ( '/admin/create-edit- site' , '_self' )
62+ window . open ( '/admin/create-site' , '_self' )
6363 } ;
6464
6565 const reloadSites = ( ) => {
@@ -81,9 +81,30 @@ export default function ListSites() {
8181 reloadSites ( ) ;
8282 } ) ;
8383
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 ) => {
85106 apiClient . DELETE ( '/api/secure-site' , {
86- body : site
107+ body : siteToSchema ( site )
87108 } ) . then ( res => {
88109 const { data, error } = res ;
89110 if ( error ) {
@@ -97,9 +118,9 @@ export default function ListSites() {
97118 } ) ;
98119 } ;
99120
100- const editSite = ( site : components [ 'schemas' ] [ ' Site' ] ) => {
121+ const editSite = ( site : Site ) => {
101122 apiClient . PUT ( '/api/secure-site' , {
102- body : site
123+ body : siteToSchema ( site )
103124 } ) . then ( res => {
104125 const { data, error } = res ;
105126 if ( error ) {
@@ -113,9 +134,9 @@ export default function ListSites() {
113134 } ) ;
114135 } ;
115136
116- const createSite = ( site : components [ 'schemas' ] [ ' Site' ] ) => {
137+ const createSite = ( site : Site ) => {
117138 apiClient . POST ( '/api/secure-site' , {
118- body : site
139+ body : siteToSchema ( site )
119140 } ) . then ( res => {
120141 const { data, error } = res ;
121142 if ( error ) {
@@ -127,7 +148,7 @@ export default function ListSites() {
127148 } ) . catch ( err => {
128149 console . error ( `Error creating site: ${ err } ` ) ;
129150 } ) ;
130- }
151+ } ;
131152 return (
132153 < Container maxWidth = 'md' sx = { { mt : 4 , mb : 4 } } >
133154 < Paper elevation = { 3 } sx = { { p : 3 } } >
0 commit comments