Files
mapo-core/MP-TAB3/Pages/User.razor
T
2023-12-18 11:36:24 +01:00

306 lines
9.1 KiB
Plaintext

@page "/user"
@inject IJSRuntime JSRuntime
@inject IHttpContextAccessor httpContextAccessor
<h3>User</h3>
<div class="d-flex">
@if (Width > 1021)
{
<div class="col-3"></div>
}
<div class="card @mainSize">
@*<div class="card-header text-center">
<div style="font-size: 4rem;">
<i class="fa-solid fa-user"></i>
</div>
<div style="font-size: 1.5rem;">
<span>USER DATA</span>
</div>
</div>*@
<div class="card-body">
<div class="text-center fw-bold fs-3">
Preferenze
</div>
<div class="my-1">
<ul class="list-group">
<li class="list-group-item d-flex justify-content-between">
<div class="text-center mb-1">Modalità di inserimento del tempo ciclo</div>
<div class="d-flex justify-content-center">
<div class="btn-group" role="group" aria-label="Basic outlined example">
<button class="btn btn-sm @btnMsStyle" @onclick='()=>setTcMode("ms")'>min:sec</button>
<button class="btn btn-sm @btnMcStyle" @onclick='()=>setTcMode("mc")'>min.cent</button>
</div>
</div>
</li>
<li class="list-group-item d-flex justify-content-between">
<div class="text-center mb-1">Lingua</div>
<select class="form-select w-25" @bind="langIns">
<option value="IT">IT</option>
<option value="EN">EN</option>
</select>
</li>
<li class="list-group-item d-flex justify-content-between">
<div class="text-center mb-1">Modalità di visualizzazione delle macchine in 'Mappa Stato'</div>
<div class="d-flex justify-content-center">
<div class="btn-group" role="group" aria-label="Basic outlined example">
<button class="btn btn-sm @btnShrinkStyle" @onclick='()=>setDefCardMode("shrink")'>Shrink</button>
<button class="btn btn-sm @btnFullStyle" @onclick='()=>setDefCardMode("full")'>Full</button>
</div>
</div>
</li>
</ul>
</div>
<div class="text-center fw-bold fs-3">
User Data
</div>
<div>
<ul class="list-group">
<li class="list-group-item d-flex justify-content-between">
<div class="text-start">Prossima disconnessione:</div>
<div class="text-end"><b> @($"{DateTime.Now.AddMinutes(dtScadLogin)}")</b></div>
</li>
<li class="list-group-item d-flex justify-content-between">
<div class="text-start">User</div>
<div class="text-end"><b> @($"{UserName}[{MatrOpr}]")</b></div>
</li>
<li class="list-group-item d-flex justify-content-between">
<div class="text-start">Server Time</div>
<div class="text-end"><b>@($"{DateTime.Now.ToString("dddd dd.MM.yyyy HH:mm.ss")}")</b></div>
</li>
<li class="list-group-item d-flex justify-content-between">
<div class="text-start">Client IP</div>
<div class="text-end"><b>@currIpv4</b></div>
</li>
<li class="list-group-item d-flex justify-content-between">
<div class="text-start">Browser Size</div>
<div class="text-end"><b>@($"{Width}x{Height}")</b></div>
</li>
</ul>
</div>
</div>
<div class="card-footer">
<button class="w-100 btn btn-success">
<i class="fa-solid fa-gear"></i> &nbsp; ABOUT PAGE
</button>
<hr />
<a class="w-100 btn btn-danger" href="logout">
<i class="fa-solid fa-right-from-bracket"></i> &nbsp; LOGOUT
</a>
</div>
</div>
@if (Width > 1021)
{
<div class="col-3"></div>
}
</div>
@code {
[Inject]
private MessageService MsgServ { get; set; } = null!;
protected async Task setTcMode(string tcMode)
{
await Task.Delay(1);
tcModIns = tcMode;
}
protected async Task setLang(string lang)
{
await Task.Delay(1);
langIns = lang;
}
protected async Task setDefCardMode(string defCardMode)
{
await Task.Delay(1);
defCardModeIns = defCardMode;
}
private int MatrOpr
{
get => MsgServ.MatrOpr;
}
private string UserName
{
get => MsgServ.CognomeNome;
}
protected string btnMsStyle
{
get
{
string answ = "";
if (tcModIns == "ms")
{
answ = "btn-primary";
}
else
{
answ = "btn-outline-secondary";
}
return answ;
}
}
protected string btnMcStyle
{
get
{
string answ = "";
if (tcModIns == "mc")
{
answ = "btn-primary";
}
else
{
answ = "btn-outline-secondary";
}
return answ;
}
}
protected string btnShrinkStyle
{
get
{
string answ = "";
if (defCardModeIns == "shrink")
{
answ = "btn-primary";
}
else
{
answ = "btn-outline-secondary";
}
return answ;
}
}
protected string btnFullStyle
{
get
{
string answ = "";
if (defCardModeIns == "full")
{
answ = "btn-primary";
}
else
{
answ = "btn-outline-secondary";
}
return answ;
}
}
protected string _tcModIns { get; set; } = "";
protected string tcModIns
{
get => _tcModIns;
set
{
if (_tcModIns != value)
{
_tcModIns = value;
MsgServ.UserPrefSet("TcMode", value);
}
}
}
protected string _langIns { get; set; } = "EN";
protected string langIns
{
get => _langIns;
set
{
if (_langIns != value)
{
_langIns = value;
MsgServ.UserPrefSet("Lang", value);
}
}
}
protected string _defCardMode { get; set; } = "";
protected string defCardModeIns
{
get => _defCardMode;
set
{
if (_defCardMode != value)
{
_defCardMode = value;
MsgServ.UserPrefSet("DefCardMode", value);
}
}
}
public int Height { get; set; } = 0;
public int Width { get; set; } = 0;
public string currIpv4 { get; set; } = "";
public class WindowDimension
{
public int Width { get; set; }
public int Height { get; set; }
}
protected async override Task OnAfterRenderAsync(bool firstRender)
{
//await Task.Delay(500);
if (firstRender)
{
await getWDim();
StateHasChanged();
Log.Debug($"Dimensioni schermo: {Width}x{Height}");
}
}
[Inject]
protected SharedMemService MStor { get; set; } = null!;
protected int dtScadLogin { get; set; } = 0;
protected async override Task OnInitializedAsync()
{
tcModIns = MsgServ.UserPrefSetup("TcMode", "ms");
langIns = MsgServ.UserPrefSetup("Lang", "IT");
defCardModeIns = MsgServ.UserPrefSetup("DefCardMode", "full");
dtScadLogin = MStor.GetConfInt("TAB_dtTimerScadLogin");
await Task.Delay(1);
if (string.IsNullOrEmpty(currIpv4))
{
// ricalcolo e salvo...
if (httpContextAccessor.HttpContext != null)
{
var remoteIp = $"{httpContextAccessor.HttpContext.Connection?.RemoteIpAddress}";
// provo a recuperare ipV4...
currIpv4 = EgwCoreLib.Razor.Data.IpUtils.getLocalIpv4(remoteIp);
}
}
}
protected async Task getWDim()
{
var dimension = await JSRuntime.InvokeAsync<WindowDimension>("getWindowDimensions");
Height = dimension.Height;
Width = dimension.Width;
}
protected string mainSize
{
get
{
string answ = "col-12";
if (Width > 1021)
{
answ = "col-6";
}
return answ;
}
}
private static NLog.Logger Log = LogManager.GetCurrentClassLogger();
}