@@ -33,7 +33,11 @@ interface BoundaryPoint {
33
33
lng : string ;
34
34
}
35
35
36
- export default function CreateEditSite ( ) {
36
+ interface CreateEditSiteProps {
37
+ mode : 'create' | 'edit' ;
38
+ }
39
+
40
+ export default function CreateEditSite ( { mode } : CreateEditSiteProps ) {
37
41
const [ name , setName ] = useState ( '' ) ;
38
42
const [ longitude , setLongitude ] = useState ( '' ) ;
39
43
const [ latitude , setLatitude ] = useState ( '' ) ;
@@ -130,6 +134,41 @@ export default function CreateEditSite() {
130
134
return true ;
131
135
}
132
136
137
+ useEffect ( ( ) => {
138
+ if ( mode === 'edit' ) {
139
+ const urlParams = new URLSearchParams ( window . location . search ) ;
140
+ const siteParam = urlParams . get ( 'site' ) ;
141
+ if ( siteParam ) {
142
+ try {
143
+ const siteData = JSON . parse ( decodeURIComponent ( siteParam ) ) ;
144
+ setName ( siteData . name ) ;
145
+ setLatitude ( siteData . latitude . toString ( ) ) ;
146
+ setLongitude ( siteData . longitude . toString ( ) ) ;
147
+ setStatus ( siteData . status ) ;
148
+ setAddress ( siteData . address ) ;
149
+ setCells ( siteData . cell_id . map ( ( cellId : string ) => ( {
150
+ id : Date . now ( ) . toString ( ) + cellId ,
151
+ cellId : cellId
152
+ } ) ) ) ;
153
+ if ( siteData . color ) {
154
+ setColorEnabled ( true ) ;
155
+ setColorValue ( siteData . color ) ;
156
+ }
157
+ if ( siteData . boundary ) {
158
+ setBoundaryEnabled ( true ) ;
159
+ setBoundaryPoints ( siteData . boundary . map ( ( point : [ number , number ] ) => ( {
160
+ id : Date . now ( ) . toString ( ) + point . join ( ',' ) ,
161
+ lat : point [ 0 ] . toString ( ) ,
162
+ lng : point [ 1 ] . toString ( )
163
+ } ) ) ) ;
164
+ }
165
+ } catch ( error ) {
166
+ console . error ( 'Failed to parse site data from URL:' , error ) ;
167
+ }
168
+ }
169
+ }
170
+ } , [ mode ] ) ;
171
+
133
172
return (
134
173
< Container maxWidth = "md" sx = { { mt : 4 , mb : 4 } } >
135
174
< Paper elevation = { 3 } sx = { { p : 3 } } >
0 commit comments