@inject IJSRuntime JSRuntime
@code {
private ElementReference Ref;
private ElementReference PointRef;
public double X1 { get; private set; }
public double Y1 { get; private set; }
public double X2 { get; private set; }
public double Y2 { get; private set; }
public double X3 { get; private set; }
public double Y3 { get; private set; }
public double X4 { get; private set; }
public double Y4 { get; private set; }
public double X5 { get; private set; }
public double Y5 { get; private set; }
public int Step { get; private set; }
public async Task CreateAsync(double x, double y)
{
if (Step == 0)
{
await Visible();
Step = 1;
X1 = x;
Y1 = y;
}
else if (Step == 1) Step = 2;
else if (Step == 2) Step = 3;
else if (Step == 3)
{
X4 = x;
Y4 = y;
Step = 4;
await CalculatorZone();
}
}
public async Task Update(double x, double y)
{
if (Step == 1)
{
X2 = x;
Y2 = y;
}
else if (Step == 2)
{
X3 = x;
Y3 = y;
}
else if (Step == 3)
{
X4 = x;
Y4 = y;
}
await CalculatorZone();
StateHasChanged();
}
private async Task CalculatorZone()
{
var points = $"{X1},{Y1} {X2},{Y2}";
if (Step == 2) points += $" {X3},{Y3}";
if (Step == 3) points += $" {X3},{Y3} {X4},{Y4}";
await JSRuntime.InvokeVoidAsync("ElementSetAttribute", Ref, "points", points);
}
public async Task Visible()
{
await JSRuntime.InvokeVoidAsync("ElementSetAttribute", Ref, "visibility", "visible");
await JSRuntime.InvokeVoidAsync("ElementSetAttribute", PointRef, "visibility", "visible");
}
public async Task Hidden()
{
Step = 0;
X1 = X2 = X3 = X4 = Y1 = Y2 = Y3 = Y4 = 0;
await JSRuntime.InvokeVoidAsync("ElementSetAttribute", Ref, "visibility", "hidden");
await JSRuntime.InvokeVoidAsync("ElementSetAttribute", PointRef, "visibility", "hidden");
}
}