30e7ad2c5a
- ancora code cleanup
295 lines
7.5 KiB
C#
295 lines
7.5 KiB
C#
using global::Microsoft.AspNetCore.Components;
|
|
using MP.Data.Services;
|
|
using System.Globalization;
|
|
using System.Text.RegularExpressions;
|
|
|
|
namespace MP_TAB3.Components
|
|
{
|
|
public partial class SelTempoMSMC
|
|
{
|
|
#region Public Enums
|
|
|
|
/// <summary>
|
|
/// modalit� di visualizzazione ed interazione controllo tempo
|
|
/// </summary>
|
|
public enum timeControlMode
|
|
{
|
|
/// <summary>
|
|
/// controllo textbox
|
|
/// </summary>
|
|
testo = 0,
|
|
|
|
/// <summary>
|
|
/// selettori dropdown list
|
|
/// </summary>
|
|
selettori = 1
|
|
}
|
|
|
|
/// <summary>
|
|
/// modalit� tempo principale (Minuti Secondi o Minuti Centesimali=
|
|
/// </summary>
|
|
public enum timeMode
|
|
{
|
|
/// <summary>
|
|
/// Minuti Secondi
|
|
/// </summary>
|
|
MS = 0,
|
|
|
|
/// <summary>
|
|
/// Minuti Centesimali
|
|
/// </summary>
|
|
MC = 1
|
|
}
|
|
|
|
#endregion Public Enums
|
|
|
|
#region Public Properties
|
|
|
|
[Parameter]
|
|
public EventCallback<decimal> E_TCRich { get; set; }
|
|
|
|
/// <summary>
|
|
/// modalit� rendering controllo
|
|
/// </summary>
|
|
[Parameter]
|
|
public timeControlMode modoControllo { get; set; } = timeControlMode.testo;
|
|
|
|
/// <summary>
|
|
/// Valore tempo (centesimale)
|
|
/// </summary>
|
|
[Parameter]
|
|
public decimal TempoMC
|
|
{
|
|
get => _tempoMC;
|
|
set
|
|
{
|
|
_tempoMC = value;
|
|
_tempoMS = minCent2Sec(value);
|
|
}
|
|
}
|
|
|
|
#endregion Public Properties
|
|
|
|
#region Protected Properties
|
|
|
|
/// <summary>
|
|
/// tempo min.cent
|
|
/// </summary>
|
|
protected decimal _tempoMC { get; set; } = 0;
|
|
|
|
[Inject]
|
|
protected MessageService MsgServ { get; set; } = null!;
|
|
|
|
protected int selMin
|
|
{
|
|
get => TempoMS.Minutes;
|
|
set
|
|
{
|
|
TempoMS = new TimeSpan(selOre, value, selSec);
|
|
E_TCRich.InvokeAsync(TempoMC);
|
|
}
|
|
}
|
|
|
|
protected int selOre
|
|
{
|
|
get => TempoMS.Hours;
|
|
set
|
|
{
|
|
TempoMS = new TimeSpan(value, selMin, selSec);
|
|
E_TCRich.InvokeAsync(TempoMC);
|
|
}
|
|
}
|
|
|
|
protected int selSec
|
|
{
|
|
get => TempoMS.Seconds;
|
|
set
|
|
{
|
|
TempoMS = new TimeSpan(selOre, selMin, value);
|
|
E_TCRich.InvokeAsync(TempoMC);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// tempo selezionato in formato Minuti Secondi
|
|
/// </summary>
|
|
protected DateTime selTempoMS
|
|
{
|
|
get => DateTime.Today.Add(TempoMS);
|
|
set
|
|
{
|
|
TempoMS = value.Subtract(value.Date);
|
|
E_TCRich.InvokeAsync(TempoMC);
|
|
}
|
|
}
|
|
|
|
protected bool ShowMS { get; set; } = true;
|
|
|
|
[Inject]
|
|
protected SharedMemService SMServ { get; set; } = null!;
|
|
|
|
protected string tcMode
|
|
{
|
|
get => MsgServ.UserPrefGet("TcMode");
|
|
}
|
|
|
|
/// <summary>
|
|
/// tempo selezionato in formato Minuti Secondi
|
|
/// </summary>
|
|
protected TimeSpan TempoMS
|
|
{
|
|
get
|
|
{
|
|
return _tempoMS;
|
|
}
|
|
set
|
|
{
|
|
_tempoMS = value;
|
|
_tempoMC = minSec2Cent(value);
|
|
}
|
|
}
|
|
|
|
protected string txtSelMS
|
|
{
|
|
get => ShowMS ? Traduci("ShowMS") : Traduci("ShowMC");
|
|
}
|
|
|
|
#endregion Protected Properties
|
|
|
|
#region Private Properties
|
|
|
|
private string _baseLang { get; set; } = "IT";
|
|
|
|
/// <summary>
|
|
/// tempo min:sec
|
|
/// </summary>
|
|
private TimeSpan _tempoMS { get; set; } = TimeSpan.FromSeconds(3599);
|
|
|
|
private string baseLang
|
|
{
|
|
get => _baseLang;
|
|
set { MsgServ.UserPrefGet("Lang"); }
|
|
}
|
|
|
|
/// <summary>
|
|
/// INdica il formato del tempo IN INGRESSO (selezionato)
|
|
/// </summary>
|
|
private string labelTempoIN
|
|
{
|
|
get
|
|
{
|
|
string answ = "";
|
|
if (tcMode == "mc")
|
|
{
|
|
answ = "min.cent";
|
|
}
|
|
else
|
|
{
|
|
answ = "h:m:s";
|
|
}
|
|
return answ;
|
|
}
|
|
}
|
|
|
|
private string lblTempo
|
|
{
|
|
get
|
|
{
|
|
string answ = tcMode == "mc" ? $"{TempoMS.TotalMinutes:N0}:{TempoMS:ss} (min:sec)" : $"{TempoMC:0.000} (min.cent)";
|
|
return answ;
|
|
}
|
|
}
|
|
|
|
private string txtTempo
|
|
{
|
|
get
|
|
{
|
|
string answ = tcMode == "mc" ? $"{TempoMC:0.000}" : $"{TempoMS.TotalMinutes:N0}:{TempoMS:ss}";
|
|
return answ;
|
|
}
|
|
set
|
|
{
|
|
if (tcMode == "mc")
|
|
{
|
|
decimal tMC = 1;
|
|
decimal.TryParse(value, out tMC);
|
|
TempoMC = tMC;
|
|
}
|
|
else
|
|
{
|
|
var tPart = value.Split(':');
|
|
double min = 0;
|
|
double sec = 0;
|
|
double.TryParse((tPart[0]), out min);
|
|
double.TryParse((tPart[1]), out sec);
|
|
TimeSpan tMS = TimeSpan.FromMinutes(min).Add(TimeSpan.FromSeconds(sec));
|
|
TempoMS = tMS;
|
|
}
|
|
}
|
|
}
|
|
|
|
#endregion Private Properties
|
|
|
|
#region Protected Methods
|
|
|
|
/// <summary>
|
|
/// conversione da tempo minuti centesimali a minuti/secondi
|
|
/// </summary>
|
|
/// <param name="valore"></param>
|
|
/// <returns></returns>
|
|
protected TimeSpan minCent2Sec(decimal valore)
|
|
{
|
|
TimeSpan answ = TimeSpan.FromSeconds(Math.Round((double)(valore * 60)));
|
|
return answ;
|
|
}
|
|
|
|
/// <summary>
|
|
/// conversione da tempo minuti/secondi a minuti centesimali
|
|
/// </summary>
|
|
/// <param name="valore"></param>
|
|
/// <returns></returns>
|
|
protected decimal minSec2Cent(TimeSpan valore)
|
|
{
|
|
decimal answ = 0;
|
|
decimal.TryParse($"{Math.Floor(valore.TotalMinutes) + (double)valore.Seconds / 60}", out answ);
|
|
return answ;
|
|
}
|
|
|
|
protected override void OnInitialized()
|
|
{
|
|
//baseLang = SMServ.GetConf("baseLang");
|
|
}
|
|
|
|
protected override void OnParametersSet()
|
|
{
|
|
showControls();
|
|
}
|
|
|
|
protected string Traduci(string lemma)
|
|
{
|
|
return SMServ.Traduci($"{baseLang}_{lemma}".ToUpper());
|
|
}
|
|
|
|
#endregion Protected Methods
|
|
|
|
#region Private Methods
|
|
|
|
/// <summary>
|
|
/// mostra i controlli secondo richiesta
|
|
/// </summary>
|
|
private void showControls()
|
|
{
|
|
//ddlMinuti.SelectedValue = TempoMS.Minutes.ToString();
|
|
//if (modoTempo == timeMode.MC)
|
|
//{
|
|
// ddlSecondi.SelectedValue = Convert.ToInt32((tempoMC - Math.Floor(tempoMC)) * 100).ToString();
|
|
//}
|
|
//else
|
|
//{
|
|
// ddlSecondi.SelectedValue = TempoMS.Seconds.ToString();
|
|
//}
|
|
}
|
|
|
|
#endregion Private Methods
|
|
}
|
|
} |