@@ -33,7 +33,11 @@ interface BoundaryPoint {
3333 lng : string ;
3434}
3535
36- export default function CreateEditSite ( ) {
36+ interface CreateEditSiteProps {
37+ mode : 'create' | 'edit' ;
38+ }
39+
40+ export default function CreateEditSite ( { mode } : CreateEditSiteProps ) {
3741 const [ name , setName ] = useState ( '' ) ;
3842 const [ longitude , setLongitude ] = useState ( '' ) ;
3943 const [ latitude , setLatitude ] = useState ( '' ) ;
@@ -130,6 +134,41 @@ export default function CreateEditSite() {
130134 return true ;
131135 }
132136
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+
133172 return (
134173 < Container maxWidth = "md" sx = { { mt : 4 , mb : 4 } } >
135174 < Paper elevation = { 3 } sx = { { p : 3 } } >
0 commit comments