@using System.Linq.Expressions
@using TIAMWebApp.Shared.Application.Interfaces
@using TIAMWebApp.Shared.Application.Utility
@using TIAM.Entities.TransferDestinations
@inject LogToBrowserConsole logToBrowserConsole
@* TextExpression=@TExpression *@
@* TextChanged="@OnTextChanged"> *@
Please type an address or swipe to select from preset destinations!
@code {
[Parameter]
public string OwlId { get; set; }
[Parameter]
public string TextValue { get; set; } = "";
int? InputDelay { get; set; } = 3500;
BindValueMode BindValueMode { get; set; } = BindValueMode.OnDelayedInput;
public int SliderElementId = 0;
private string content = "";
string Content
{
get { return content; }
set {
content = value;
OnTextChanged(value);
}
}
[Parameter]
public Expression> TExpression { get; set; }
[Parameter]
public EventCallback OnSliderChanged { get; set; }
[Inject]
public IJSRuntime JSRuntime { get; set; }
[Inject]
public ITransferDataService TransferDataService { get; set; }
public List Destinations = new List();
public DxTextBox textField;
TransferDestination Result;
protected override void OnParametersSet()
{
logToBrowserConsole.LogToBC($"SliderItemSelector is initialized with OwlId: {OwlId}");
base.OnParametersSet();
}
protected override void OnAfterRender(bool firstRender)
{
if(firstRender)
{
var dotNetObjRef = DotNetObjectReference.Create(this);
JSRuntime.InvokeVoidAsync("setOwlId", OwlId);
JSRuntime.InvokeVoidAsync("InitOwl", OwlId);
JSRuntime.InvokeVoidAsync("CStoJSCall", dotNetObjRef);
}
}
[JSInvokable]
public void ShowCoordinates(string coordinates, string itemId)
{
logToBrowserConsole.LogToBC($"Slider is changing: {coordinates}, {itemId}");
//content = coordinates + "item = " + itemId;
SliderElementId = Convert.ToInt32(itemId);
if (SliderElementId > 0)
{
ParsePresetAddress(GetAddressFromSelectedSliderItem(SliderElementId));
}
else
{
OnTextChanged(Content);
}
/*StateHasChanged();*/
}
public void ParsePresetAddress(string address)
{
OnSliderChanged.InvokeAsync(address);
}
public void OnTextChanged(string text)
{
logToBrowserConsole.LogToBC($"Slider text changed: {text}");
OnSliderChanged.InvokeAsync(text);
}
public string GetAddressFromSelectedSliderItem(int SliderListIndex)
{
if(Destinations.Count >0 && Destinations.Count >= SliderListIndex)
{
return Destinations[SliderElementId-1].AddressString;
}
else return "Something wrong";
}
protected override async Task OnInitializedAsync()
{
Destinations = await TransferDataService.GetDestinationsAsync();
Content = TextValue;
}
}