@page "/script-editor" @attribute [Authorize] @implements IAsyncDisposable @using RobotNet.Script.Shares @using RobotNet.WebApp.Clients @using RobotNet.WebApp.Scripts.Components @using RobotNet.WebApp.Scripts.Models @inject IHttpClientFactory httpFactory @inject ProcessorHubClient processorHub Script Editor
@code { private EditorHierachy hierachyRef = default!; private Editor editorRef = null!; private ProcessorControl processorControlRef = null!; private int HierachyWidth = 300; private int ConsoleHeight = 300; private bool isDraggingHierachy = false; private bool isDraggingConsole = false; private ScriptWorkspace Workspace = default!; protected override async Task OnInitializedAsync() { await base.OnInitializedAsync(); Workspace = new(httpFactory); await Workspace.InitializeAsync(); } protected override async Task OnAfterRenderAsync(bool firstRender) { await base.OnAfterRenderAsync(firstRender); if(firstRender) { processorHub.StateChanged += OnProcessStateChanged; await processorHub.StartAsync(); OnProcessStateChanged(await processorHub.GetState()); } } private void OnProcessStateChanged(ProcessorState state) { Workspace.ProcessorState = state; editorRef.OnProcessStateChanged(state); } private void EnableResizeHierachy() { isDraggingHierachy = true; } private void EnableResizeConsole() { isDraggingConsole = true; } private void DisableResize() { isDraggingHierachy = false; isDraggingConsole = false; } private void MouseMoveOnEditorContainer(MouseEventArgs e) { if (isDraggingHierachy) { HierachyWidth += (int)e.MovementX; if (HierachyWidth < 150) { HierachyWidth = 150; } else if (HierachyWidth > 500) { HierachyWidth = 500; } } else if (isDraggingConsole) { // ConsoleHeight -= (int)e.MovementY; // StateHasChanged(); // Console.WriteLine($"ConsoleHeight={ConsoleHeight}"); } } public async ValueTask DisposeAsync() { processorHub.StateChanged -= OnProcessStateChanged; await processorHub.StopAsync(); Workspace.Dispose(); GC.SuppressFinalize(this); } }