Skip to content

Commit

Permalink
Added xterm with broken functionality
Browse files Browse the repository at this point in the history
  • Loading branch information
proy30 committed Aug 5, 2024
1 parent d3427a4 commit 5fa1120
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 40 deletions.
49 changes: 18 additions & 31 deletions src/python/impactx/dashboard/Analyze/analyzeFunctions.py
Original file line number Diff line number Diff line change
Expand Up @@ -97,54 +97,41 @@ def filter_data(allData, selected_headers):
filtered_row[key] = value
filtered_data.append(filtered_row)
return filtered_data

# -----------------------------------------------------------------------------
# -----------------------------------------------------------------------------
# Function to print simulation output in terminal view
# -----------------------------------------------------------------------------

@staticmethod
async def outputTerminal (simulation_function_name):
def outputTerminal():
"""
Function to print out simulation results in
terminal view. (Not working as intended, 8/4/24)
"""

ctrl.terminal_println(f"Running {simulation_function_name}...")
ctrl.terminal_println(
f"npart: {state.npart}\nkin_energy_MeV: {state.kin_energy_MeV}"
)
ctrl.terminal_println(f"Running...")

# Define the command to run based on the simulation function name
if simulation_function_name == "run_simulation":
command = [
"python",
"-c",
"from Analyze.plot_PhaseSpaceProjections.phaseSpace import run_simulation; run_simulation()",
]
elif simulation_function_name == "run_optimize_triplet":
command = [
"python",
"-c",
"from Analyze.plot_PhaseSpaceProjections.phaseSpace import run_optimize_triplet; run_optimize_triplet()",
]
else:
ctrl.terminal_println(
f"Unknown simulation function: {simulation_function_name}"
)
return
command = [
"python",
"-m",
"impactx.dashboard.Analyze.plot_PhaseSpaceProjections.phaseSpace",
"run_simulation",
]

# Run the specified simulation function as a separate process
process = await asyncio.create_subprocess_exec(
*command,
process = subprocess.Popen(
command,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT, # Capture errors to the same stream as output
universal_newlines=True, # Return output as strings instead of bytes
)

# Read output from the process and print it to the xterm widget
while True:
output = await process.stdout.readline()
if output == b"" and await process.wait() is not None:
output = process.stdout.readline()
if output == "" and process.poll() is not None:
break
if output:
ctrl.terminal_println(output.decode().strip())
ctrl.terminal_println(output.strip())

ctrl.terminal_println(f"{simulation_function_name} complete.")
ctrl.terminal_println("complete.")
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,7 @@ def parameter_input_checker_for_lattice(latticeElement):
return parameter_input



def save_lattice_elements():
"""
Writes user input for lattice element parameters parameters in suitable format for simulation code.
Expand Down
9 changes: 6 additions & 3 deletions src/python/impactx/dashboard/Toolbar/toolbarMain.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@

from ..Input.trameFunctions import TrameFunctions
from .exportTemplate import retrieve_state_content

# from ..Analyze.plot_PhaseSpaceProjections.phaseSpace import outputTerminal
from ..Analyze.analyzeFunctions import AnalyzeFunctions
# -----------------------------------------------------------------------------
# Trame setup
# -----------------------------------------------------------------------------
Expand Down Expand Up @@ -103,8 +104,10 @@ def file_upload():
)

def run_simulation():
ctrl.terminal_println("Running simulation...")
ctrl.terminal_println("Simulation complete.")
# ctrl.terminal_println("Running simulation...")
# ctrl.terminal_println("Simulation complete.")
AnalyzeFunctions.outputTerminal()


@staticmethod
def kill_button():
Expand Down
12 changes: 6 additions & 6 deletions src/python/impactx/dashboard/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,23 +81,23 @@ def application():
Toolbars.input_toolbar()
with vuetify.Template(v_if="$route.path == '/Analyze'"):
Toolbars.analyze_toolbar()
# with vuetify.Template(v_if="$route.path == '/Run'"):
# Toolbars.run_toolbar()
with vuetify.Template(v_if="$route.path == '/Run'"):
Toolbars.run_toolbar()

with layout.drawer as drawer:
drawer.width = 200
with vuetify.VList():
vuetify.VSubheader("Simulation")
TrameFunctions.create_route("Input", "mdi-file-edit")
# TrameFunctions.create_route("Optimize", "mdi-trending-up")
# TrameFunctions.create_route("Run", "mdi-play")
TrameFunctions.create_route("Run", "mdi-play")
TrameFunctions.create_route("Analyze", "mdi-chart-box-multiple")

with layout.content:
router.RouterView()
# with xterm.XTerm(v_if="$route.path == '/Run'") as term:
# ctrl.clear = term.clear
# ctrl.terminal_println = term.writeln
with xterm.XTerm(v_if="$route.path == '/Run'") as term:
ctrl.clear = term.clear
ctrl.terminal_println = term.writeln
return layout


Expand Down

0 comments on commit 5fa1120

Please sign in to comment.