From 82d31b85a8d64e258aad49979800d3177a14d6a9 Mon Sep 17 00:00:00 2001 From: Eric Williams Date: Wed, 20 Dec 2023 17:53:45 -0500 Subject: [PATCH] users can now load and start a room with simple flags --- .vscode/launch.json | 8 +++++--- pkg/tui/actions_model.go | 40 ++++++++++++++++++++++++++++++---------- pkg/tui/programs.go | 9 +++++++++ pkg/tui/root.go | 5 +++-- pkg/vc/programs.go | 11 +++++++++++ 5 files changed, 58 insertions(+), 15 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index 8e3e7bc..a6ab0d2 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -32,11 +32,11 @@ "-f", "C:\\Users\\ewilliams\\OneDrive - cenero.com\\Documents\\Projects\\Wharton\\Gacialis\\Programs\\Wharton_Glacialis_QsysCR_v3.0.0.lpz", "-n", "Wharton Template" ], - + }, { - "name": "Create Room", + "name": "Create And Run Room", "type": "go", "request": "launch", "mode": "auto", @@ -45,7 +45,9 @@ "args": [ "-h", "10.0.0.111", "-t","eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6Ijk0NDliMDM0LTcyNWEtNDM0Ny04YTMzLTc5Zjg2MDNlYjUyYiIsImx2IjoiRGVmYXVsdCBMZXZlbCIsInZlciI6IjEuMCIsImV4cGkiOiIwIn0.oMs434gmWR-x4sTGKonmndOA5F62FdzrwYZQYSGNd2A", - "-r", "MYROOM" + "-f", "C:\\Users\\ewilliams\\OneDrive - cenero.com\\Documents\\Projects\\Wharton\\Gacialis\\Programs\\Wharton_Glacialis_QsysCR_v3.0.0.lpz", + "-r", "MYROOM", + "-n", "Glacialis" ], } diff --git a/pkg/tui/actions_model.go b/pkg/tui/actions_model.go index 6bd0e17..0805a5e 100644 --- a/pkg/tui/actions_model.go +++ b/pkg/tui/actions_model.go @@ -71,21 +71,30 @@ func (m ActionsModel) Init() tea.Cmd { Name: ProgramName, } cmd = CreateProgramAction(ops) + return tea.Batch(cmd, actionsTickCmd()) } - if m.action == createRoom { - ops := &vc.RoomOptions{ - Name: RoomID, - ProgramInstanceId: RoomID, - ProgramLibraryId: 186, + if m.action == loadAndCreate { + + //t := time.Now() + //zone, offset := t.Zone() + + ///fmt.Print(offset) + + pops := &vc.ProgramOptions{ + AppFile: ProgramFile, + Name: ProgramName, + } + rops := &vc.RoomOptions{ + Name: RoomID, + ProgramInstanceId: RoomID, + AddressSetsLocation: true, + //TimeZone: zone, } - cmd = CreateRoomAction(ops) + cmd = CreateAndRunRoomAction(pops, rops) + return tea.Batch(cmd, actionsTickCmd()) } - // if m.action == loadAndCreate { - // state = rooms - // } - return tea.Batch(cmd, actionsTickCmd()) } @@ -175,9 +184,20 @@ func CreateProgramAction(options *vc.ProgramOptions) tea.Cmd { } } +func CreateAndRunRoomAction(progOps *vc.ProgramOptions, roomOps *vc.RoomOptions) tea.Cmd { + + return func() tea.Msg { + return CreateAndRunProgram(progOps, roomOps) + } +} + func CreateRoomAction(options *vc.RoomOptions) tea.Cmd { return func() tea.Msg { return CreateRoom(*options) } } + +func CreateErrorAction() tea.Msg { + return fmt.Errorf("FAILED TO PROCESS THE APPLICATION FLAGS, VALID COMBINATIONS REQUIRE -F && -N || -F && -N && -R ") +} diff --git a/pkg/tui/programs.go b/pkg/tui/programs.go index 41185ea..1971215 100644 --- a/pkg/tui/programs.go +++ b/pkg/tui/programs.go @@ -318,6 +318,15 @@ func CreateNewProgram(options vc.ProgramOptions) tea.Msg { return result } +func CreateAndRunProgram(progOps *vc.ProgramOptions, roomOps *vc.RoomOptions) tea.Msg { + + result, err := server.CreateAndRunProgram(progOps, roomOps) + if err != nil { + return err + } + return result +} + func EditProgram(options vc.ProgramOptions) tea.Msg { result, err := server.EditProgram(options) diff --git a/pkg/tui/root.go b/pkg/tui/root.go index e0f294b..f81d3f1 100644 --- a/pkg/tui/root.go +++ b/pkg/tui/root.go @@ -233,9 +233,10 @@ func initServer() vc.VirtualControl { func initActions() (tea.Model, error) { - if len(RoomID) > 0 && len(ProgramFile) == 0 { - return InitialActionModel(fmt.Sprintf("Creating new room %s", RoomID), createRoom), nil + if len(RoomID) > 0 && len(ProgramFile) > 0 && len(ProgramName) > 0 { + return InitialActionModel(fmt.Sprintf("Uploading and creating new room %s", RoomID), loadAndCreate), nil } + if len(ProgramFile) > 0 && len(ProgramName) > 0 { return InitialActionModel(fmt.Sprintf("Loading new program %s", ProgramFile), loadProgram), nil } diff --git a/pkg/vc/programs.go b/pkg/vc/programs.go index 2648f3d..1e70e81 100644 --- a/pkg/vc/programs.go +++ b/pkg/vc/programs.go @@ -24,6 +24,8 @@ type VcProgramApi interface { CreateProgram(options ProgramOptions) (result ProgramUploadResult, err VirtualControlError) EditProgram(options ProgramOptions) (result ProgramUploadResult, err VirtualControlError) DeleteProgram(id int) (result ProgramDeleteResult, err VirtualControlError) + + CreateAndRunProgram(progOps *ProgramOptions, roomOps *RoomOptions) (result RoomCreatedResult, err VirtualControlError) } func (v *VC) GetPrograms() (Programs, VirtualControlError) { @@ -50,6 +52,15 @@ func (v *VC) CreateProgram(options ProgramOptions) (result ProgramUploadResult, return postProgram(v, options) } +func (v *VC) CreateAndRunProgram(progOps *ProgramOptions, roomOps *RoomOptions) (result RoomCreatedResult, err VirtualControlError) { + pResult, err := v.CreateProgram(*progOps) + if err != nil { + return RoomCreatedResult{}, err + } + roomOps.ProgramLibraryId = int(pResult.ProgramID) + return v.CreateRoom(*roomOps) +} + func (v *VC) EditProgram(options ProgramOptions) (result ProgramUploadResult, err VirtualControlError) { return editProgram(v, options) }