@@ -3,10 +3,14 @@ import { Device } from "../../types/devices";
33import { DeviceType } from "../../types/devices/device" ;
44import { ViewGraph } from "../../types/graphs/viewgraph" ;
55import { RemoveDeviceMove } from "../../types/undo-redo" ;
6- import { urManager } from "../../types/viewportManager" ;
7- import { createRightBarButton , createRoutingTable } from "../right_bar" ;
6+ import { refreshElement , urManager } from "../../types/viewportManager" ;
7+ import {
8+ createDropdown ,
9+ createRightBarButton ,
10+ createTable ,
11+ createRoutingTable ,
12+ } from "../right_bar" ;
813import { ProgramInfo } from "./program_info" ;
9- import { ProgramRunnerInfo } from "./program_runner_info" ;
1014import { StyledInfo } from "./styled_info" ;
1115
1216export { ProgramInfo } from "./program_info" ;
@@ -56,8 +60,28 @@ export class DeviceInfo extends StyledInfo {
5660
5761 // First argument is to avoid a circular dependency
5862 addProgramRunner ( runner : ProgramRunner , programs : ProgramInfo [ ] ) {
59- const programRunnerInfo = new ProgramRunnerInfo ( runner , programs ) ;
60- this . inputFields . push ( ...programRunnerInfo . toHTML ( ) ) ;
63+ const programOptions = programs . map ( ( { name } , i ) => {
64+ return { value : i . toString ( ) , text : name } ;
65+ } ) ;
66+ const inputsContainer = document . createElement ( "div" ) ;
67+ let selectedProgram = programs [ 0 ] ;
68+ inputsContainer . replaceChildren ( ...selectedProgram . toHTML ( ) ) ;
69+ this . inputFields . push (
70+ // Dropdown for selecting program
71+ createDropdown ( "Program" , programOptions , "program-selector" , ( v ) => {
72+ selectedProgram = programs [ parseInt ( v ) ] ;
73+ inputsContainer . replaceChildren ( ...selectedProgram . toHTML ( ) ) ;
74+ } ) ,
75+ inputsContainer ,
76+ // Button to send a packet
77+ createRightBarButton ( "Start program" , ( ) => {
78+ const { name } = selectedProgram ;
79+ console . log ( "Started program: " , name ) ;
80+ const inputs = selectedProgram . getInputValues ( ) ;
81+ runner . addRunningProgram ( name , inputs ) ;
82+ refreshElement ( ) ;
83+ } ) ,
84+ ) ;
6185 }
6286
6387 addRunningProgramsList (
0 commit comments