@@ -671,15 +671,20 @@ export function Sidebar({
671671 setShowNewSimulationRequest ( false ) ;
672672 return ;
673673 }
674- setNewSimulationName ( "" ) ;
675- setNewSimulationDescription ( "" ) ;
676- setNewSimulationNameError ( "" ) ;
677- setModalFreqPresetId ( getDefaultFrequencyPresetIdForNewSimulation ( ) ) ;
678- setModalAutoPropEnv ( autoPropagationEnvironment ) ;
679- setShowNewSimulationModal ( true ) ;
674+ openMapEditor ( {
675+ kind : "simulation" ,
676+ resourceId : null ,
677+ isNew : true ,
678+ label : "New Simulation" ,
679+ anchorRect : { top : 96 , right : 320 , bottom : 96 , left : 320 , width : 0 , height : 0 } ,
680+ simulationSeed : {
681+ frequencyPresetId : getDefaultFrequencyPresetIdForNewSimulation ( ) ,
682+ autoPropagationEnvironment,
683+ } ,
684+ } ) ;
680685 setShowNewSimulationRequest ( false ) ;
681686 }
682- } , [ hideLibraryBrowsing , showNewSimulationRequest , setShowNewSimulationRequest , getDefaultFrequencyPresetIdForNewSimulation ] ) ;
687+ } , [ autoPropagationEnvironment , hideLibraryBrowsing , openMapEditor , showNewSimulationRequest , setShowNewSimulationRequest , getDefaultFrequencyPresetIdForNewSimulation ] ) ;
683688 useEffect ( ( ) => {
684689 if ( showSiteLibraryRequest ) {
685690 if ( hideLibraryBrowsing ) {
@@ -961,34 +966,22 @@ export function Sidebar({
961966
962967 useEffect ( ( ) => {
963968 if ( ! pendingSiteLibraryDraft ) return ;
964- setShowSiteLibraryManager ( true ) ;
965- setShowAddLibraryForm ( true ) ;
966- setNewLibraryNameError ( "" ) ;
967- setNewLibraryVisibility ( "private" ) ;
968- setNewLibraryCollaboratorUserIds ( [ ] ) ;
969- setNewLibraryCollaboratorRoles ( { } ) ;
970- setNewLibrarySourceMeta ( pendingSiteLibraryDraft . sourceMeta ) ;
971- setNewLibrarySeparateGain ( shouldUseSeparateSiteGain ( newLibraryTxGainDbi , newLibraryRxGainDbi ) ) ;
972- setPendingDraftAutoInsert ( true ) ;
973- setNewLibraryName ( pendingSiteLibraryDraft . suggestedName ?? "" ) ;
974- setNewLibraryDescription ( "" ) ;
975- setNewLibraryLat ( pendingSiteLibraryDraft . lat ) ;
976- setNewLibraryLon ( pendingSiteLibraryDraft . lon ) ;
977- const terrainElev = Number (
978- sampleSrtmElevation ( srtmTiles , pendingSiteLibraryDraft . lat , pendingSiteLibraryDraft . lon ) ,
979- ) ;
980- if ( Number . isFinite ( terrainElev ) ) {
981- setNewLibraryGroundM ( Math . round ( terrainElev ) ) ;
982- setLibrarySearchStatus (
983- `Draft opened at ${ pendingSiteLibraryDraft . lat . toFixed ( 5 ) } , ${ pendingSiteLibraryDraft . lon . toFixed ( 5 ) } (terrain ${ Math . round ( terrainElev ) } m).` ,
984- ) ;
985- } else {
986- setLibrarySearchStatus (
987- `Draft opened at ${ pendingSiteLibraryDraft . lat . toFixed ( 5 ) } , ${ pendingSiteLibraryDraft . lon . toFixed ( 5 ) } .` ,
988- ) ;
989- }
969+ openMapEditor ( {
970+ kind : "site" ,
971+ resourceId : null ,
972+ isNew : true ,
973+ label : "New Site" ,
974+ anchorRect : { top : 96 , right : 320 , bottom : 96 , left : 320 , width : 0 , height : 0 } ,
975+ siteSeed : {
976+ lat : pendingSiteLibraryDraft . lat ,
977+ lon : pendingSiteLibraryDraft . lon ,
978+ name : pendingSiteLibraryDraft . suggestedName ,
979+ sourceMeta : pendingSiteLibraryDraft . sourceMeta ,
980+ insertIntoSimulation : true ,
981+ } ,
982+ } ) ;
990983 clearPendingSiteLibraryDraft ( ) ;
991- } , [ pendingSiteLibraryDraft , srtmTiles , clearPendingSiteLibraryDraft ] ) ;
984+ } , [ pendingSiteLibraryDraft , clearPendingSiteLibraryDraft , openMapEditor ] ) ;
992985 useEffect ( ( ) => {
993986 if ( ! pendingSiteLibraryOpenEntryId ) return ;
994987 const entry = siteLibrary . find ( ( candidate ) => candidate . id === pendingSiteLibraryOpenEntryId ) ;
@@ -1204,27 +1197,22 @@ export function Sidebar({
12041197 isNew : true ,
12051198 label : "New Site" ,
12061199 anchorRect,
1200+ siteSeed : {
1201+ lat : site . position . lat ,
1202+ lon : site . position . lon ,
1203+ name : site . name ,
1204+ insertIntoSimulation : true ,
1205+ } ,
12071206 } ) ;
12081207 } ;
1209- const openNewSiteForm = ( ) => {
1210- setShowSiteLibraryManager ( true ) ;
1211- setShowAddLibraryForm ( true ) ;
1212- setNewLibraryName ( "" ) ;
1213- setNewLibraryDescription ( "" ) ;
1214- setNewLibraryVisibility ( "private" ) ;
1215- setNewLibraryCollaboratorUserIds ( [ ] ) ;
1216- setNewLibraryCollaboratorRoles ( { } ) ;
1217- setNewLibrarySourceMeta ( undefined ) ;
1218- setNewLibraryLat ( 0 ) ;
1219- setNewLibraryLon ( 0 ) ;
1220- setNewLibraryGroundM ( 0 ) ;
1221- setNewLibraryAntennaM ( 10 ) ;
1222- setNewLibraryTxPowerDbm ( 20 ) ;
1223- setNewLibraryTxGainDbi ( 0 ) ;
1224- setNewLibraryRxGainDbi ( 0 ) ;
1225- setNewLibrarySeparateGain ( false ) ;
1226- setNewLibraryCableLossDb ( 0 ) ;
1227- setLibrarySearchStatus ( "" ) ;
1208+ const openNewSiteForm = ( triggerEl ?: Element | null ) => {
1209+ openMapEditor ( {
1210+ kind : "site" ,
1211+ resourceId : null ,
1212+ isNew : true ,
1213+ label : "New Site" ,
1214+ anchorRect : triggerEl ?. getBoundingClientRect ( ) ?? { top : 96 , right : 320 , bottom : 96 , left : 320 , width : 0 , height : 0 } ,
1215+ } ) ;
12281216 } ;
12291217 const addLibraryEntryNow = ( ) => {
12301218 if ( ! currentUser ?. id ) {
@@ -1780,13 +1768,18 @@ export function Sidebar({
17801768 Library
17811769 </ ActionButton >
17821770 < ActionButton
1783- onClick = { ( ) => {
1784- setNewSimulationName ( "" ) ;
1785- setNewSimulationDescription ( "" ) ;
1786- setNewSimulationNameError ( "" ) ;
1787- setModalFreqPresetId ( getDefaultFrequencyPresetIdForNewSimulation ( ) ) ;
1788- setModalAutoPropEnv ( autoPropagationEnvironment ) ;
1789- setShowNewSimulationModal ( true ) ;
1771+ onClick = { ( event ) => {
1772+ openMapEditor ( {
1773+ kind : "simulation" ,
1774+ resourceId : null ,
1775+ isNew : true ,
1776+ label : "New Simulation" ,
1777+ anchorRect : event . currentTarget . getBoundingClientRect ( ) ,
1778+ simulationSeed : {
1779+ frequencyPresetId : getDefaultFrequencyPresetIdForNewSimulation ( ) ,
1780+ autoPropagationEnvironment,
1781+ } ,
1782+ } ) ;
17901783 } }
17911784 type = "button"
17921785 >
@@ -1859,7 +1852,7 @@ export function Sidebar({
18591852 { ! hideLibraryBrowsing ? (
18601853 < >
18611854 { ! readOnly ? (
1862- < ActionButton onClick = { openNewSiteForm } type = "button" >
1855+ < ActionButton onClick = { ( event ) => openNewSiteForm ( event . currentTarget ) } type = "button" >
18631856 New
18641857 </ ActionButton >
18651858 ) : null }
@@ -3056,7 +3049,20 @@ export function Sidebar({
30563049 resourceId : params . resourceId ,
30573050 isNew : false ,
30583051 label : params . label ,
3059- anchorRect : { top : 0 , right : 0 , bottom : 0 , left : 0 , width : 0 , height : 0 } ,
3052+ anchorRect : params . anchorRect ,
3053+ } )
3054+ }
3055+ onCreateSimulation = { ( triggerEl ) =>
3056+ openMapEditor ( {
3057+ kind : "simulation" ,
3058+ resourceId : null ,
3059+ isNew : true ,
3060+ label : "New Simulation" ,
3061+ anchorRect : triggerEl ?. getBoundingClientRect ( ) ?? { top : 96 , right : 320 , bottom : 96 , left : 320 , width : 0 , height : 0 } ,
3062+ simulationSeed : {
3063+ frequencyPresetId : getDefaultFrequencyPresetIdForNewSimulation ( ) ,
3064+ autoPropagationEnvironment,
3065+ } ,
30603066 } )
30613067 }
30623068 />
@@ -3290,20 +3296,6 @@ export function Sidebar({
32903296 </ ActionButton >
32913297 </ div >
32923298 < div className = "chip-group" >
3293- < ActionButton
3294- onClick = { ( e ) => {
3295- openMapEditor ( {
3296- kind : "site" ,
3297- resourceId : null ,
3298- isNew : true ,
3299- label : "New Site" ,
3300- anchorRect : e . currentTarget . getBoundingClientRect ( ) ,
3301- } ) ;
3302- } }
3303- type = "button"
3304- >
3305- Add Site
3306- </ ActionButton >
33073299 < ActionButton
33083300 onClick = { ( ) => setSelectedLibraryIds ( new Set ( filteredSiteLibrary . map ( ( entry ) => entry . id ) ) ) }
33093301 type = "button"
0 commit comments