Fix Gest MinSec e min.cent x TAB

This commit is contained in:
Samuele E. Locatelli
2018-10-13 16:43:40 +02:00
parent 773327e0d3
commit 75456308d1
4 changed files with 364 additions and 318 deletions
+1 -1
View File
@@ -41,7 +41,7 @@
<div class="col-sm-6">
<asp:LinkButton runat="server" ID="lbtStartAttr" OnClick="lbtStartAttr_Click" CssClass="btn btn-block btn-primary"><i class="fa fa-check"></i> INIZIO Attrezzaggio</asp:LinkButton>
<div runat="server" id="divTempo" visible="false" class="pt-2">
<uc1:mod_tempoMSMC runat="server" ID="mod_tempoMSMC" modoControllo="selettori" modoTempo="MS" />
<uc1:mod_tempoMSMC runat="server" ID="mod_tempoMSMC" modoControllo="selettori" />
</div>
</div>
</div>
+9
View File
@@ -110,6 +110,15 @@ namespace MoonProTablet.WebUserControls
if (!Page.IsPostBack)
{
checkAll();
// fix modo tempo...
if (memLayer.ML.cdvb("TAB_TC_MinSec"))
{
mod_tempoMSMC.modoTempo = timeMode.MS;
}
else
{
mod_tempoMSMC.modoTempo = timeMode.MC;
}
}
cmp_newODL.eh_newVal += Cmp_newODL_eh_newVal;
}
+2 -1
View File
@@ -1,4 +1,5 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="mod_tempoMSMC.ascx.cs" Inherits="MoonProTablet.WebUserControls.mod_tempoMSMC" %>
<div class="row">
<div class="col-8">
<div runat="server" id="divTesto">
@@ -7,7 +8,7 @@
<div runat="server" id="divSelettori">
<div class="row">
<div class="col text-center align-items-center">
Min:Sec
<%: labelTempoIN %>
</div>
<div class="col">
<asp:DropDownList ID="ddlMinuti" runat="server" AutoPostBack="True" OnSelectedIndexChanged="ddlMinuti_SelectedIndexChanged" DataSourceID="odsMinuti" DataTextField="value" DataValueField="value" CssClass="form-control form-control-sm" />
+352 -316
View File
@@ -4,308 +4,344 @@ using System.Web.UI;
namespace MoonProTablet.WebUserControls
{
public partial class mod_tempoMSMC : System.Web.UI.UserControl
public partial class mod_tempoMSMC : System.Web.UI.UserControl
{
/// <summary>
/// stringa UID univoca
/// </summary>
public string uid
{
/// <summary>
/// stringa UID univoca
/// </summary>
public string uid
{
get
{
return this.UniqueID.Replace("$", "_").Replace("-", "_");
}
}
/// <summary>
/// modalità rendering controllo
/// </summary>
public timeControlMode modoControllo { get; set; }
/// <summary>
/// modalità controllo tempo
/// </summary>
public timeMode modoTempo { get; set; }
/// <summary>
/// tempo min.cent
/// </summary>
protected decimal _tempoMC
{
get
{
decimal answ = 0;
try
{
answ = Convert.ToDecimal(memLayer.ML.objSessionObj(string.Format("tempoMC-{0}", uid)));
}
catch
{ }
return answ;
}
set
{
memLayer.ML.setSessionVal(string.Format("tempoMC-{0}", uid), value);
}
}
/// <summary>
/// tempo min:sec
/// </summary>
protected TimeSpan _tempoMS
{
get
{
TimeSpan answ = new TimeSpan(0, 0, 0);
try
{
answ = (TimeSpan)memLayer.ML.objSessionObj(string.Format("tempoMS-{0}", uid));
}
catch
{ }
return answ;
}
set
{
memLayer.ML.setSessionVal(string.Format("tempoMS-{0}", uid), value);
}
}
/// <summary>
/// caricamento pagina
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load(object sender, EventArgs e)
{
// a secondo del modo di controllo mostro textbox o selettori...
bool showTesto = true;
if (modoControllo == timeControlMode.testo)
{
showTesto = true;
}
else
{
showTesto = false;
}
// sistemo visualizzazione dei 2 div
divTesto.Visible = showTesto;
divSelettori.Visible = !showTesto;
if (!Page.IsPostBack)
{
// fix numero item secondi
odsSecondi.SelectParameters.Clear();
odsSecondi.SelectParameters.Add("minVal", "0");
odsSecondi.SelectParameters.Add("maxVal", numItemSec.ToString());
// fix visualizzazione
showControls();
}
}
/// <summary>
/// mostra i controlli secondo richiesta
/// </summary>
private void showControls()
{
if (modoControllo == timeControlMode.testo)
{
if (modoTempo == timeMode.MC)
{
txtTempo.Text = string.Format("{0:0.000}", tempoMC);
}
else
{
txtTempo.Text = string.Format("{0:#0}:{1:00}", tempoMS.Minutes, tempoMS.Seconds);
}
}
else
{
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();
}
}
// fix label...
if (modoTempo == timeMode.MC)
{
lblTempo.Text = string.Format("--> {0:#0}' {1:00}s (min,sec)", tempoMS.Minutes, tempoMS.Seconds);
}
else
{
lblTempo.Text = string.Format("--> {0:0.000} (min,cent)", tempoMC);
}
}
/// <summary>
/// num item x controllo secondi/centesimi
/// </summary>
public int numItemSec
{
get
{
int answ = 60;
if (modoTempo == timeMode.MS)
{
answ = 59;
}
else
{
answ = 99;
}
return answ;
}
}
/// <summary>
/// tempo selezionato in formato Minuti Secondi
/// </summary>
public TimeSpan tempoMS
{
get
{
return _tempoMS;
}
set
{
_tempoMS = value;
_tempoMC = minSec2Cent(value);
showControls();
}
}
/// <summary>
/// verifica se TC sia stato caricato dai controlli, se zero va caricato (almento tentato caricamento...)
/// </summary>
public void checkTC()
{
if (tempoMC == 0)
{
if (modoControllo == timeControlMode.testo)
{
updFromTextBox();
}
else
{
updFromDropDown();
}
}
}
/// <summary>
/// tempo selezionato in formato Minuti Centesimi
/// </summary>
public decimal tempoMC
{
get
{
return _tempoMC;
}
set
{
_tempoMC = value;
_tempoMS = minCent2Sec(value);
showControls();
}
}
/// <summary>
/// conversione da tempo minuti/secondi a minuti centesimali
/// </summary>
/// <param name="valore"></param>
/// <returns></returns>
protected decimal minSec2Cent(TimeSpan valore)
{
Decimal answ = 0;
try
{
answ = Math.Round((valore.Minutes + (decimal)valore.Seconds / 60), 3);
}
catch
{ }
return answ;
}
/// <summary>
/// conversione da tempo minuti centesimali a minuti/secondi
/// </summary>
/// <param name="valore"></param>
/// <returns></returns>
protected TimeSpan minCent2Sec(decimal valore)
{
TimeSpan answ = new TimeSpan(0, 0, 1);
try
{
answ = new TimeSpan(0, Convert.ToInt32(valore), Convert.ToInt32((valore - Convert.ToInt32(valore)) * 60));
}
catch
{ }
return answ;
}
/// <summary>
/// cambiato valore tempo...
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void txtTempo_TextChanged(object sender, EventArgs e)
{
updFromTextBox();
}
/// <summary>
/// update da casella testo
/// </summary>
private void updFromTextBox()
{
if (modoControllo == timeControlMode.testo)
{
if (modoTempo == timeMode.MC)
{
tempoMC = Convert.ToDecimal(txtTempo.Text.Replace(".", ","));
}
else
{
string tempoDP = txtTempo.Text.Replace(".", ":").Replace(",", ":");
int min = 0;
int sec = 0;
try
{
min = Convert.ToInt32(tempoDP.Substring(0, tempoDP.IndexOf(":")));
sec = Convert.ToInt32(tempoDP.Substring(tempoDP.IndexOf(":") + 1, tempoDP.Length - tempoDP.IndexOf(":") - 1));
}
catch
{ }
tempoMS = new TimeSpan(0, min, sec);
}
}
}
/// <summary>
/// update da controlli dropdown
/// </summary>
private void updFromDropDown()
{
if (modoControllo == timeControlMode.selettori)
{
if (modoTempo == timeMode.MS)
{
tempoMS = new TimeSpan(0, Convert.ToInt32(ddlMinuti.SelectedValue), Convert.ToInt32(ddlSecondi.SelectedValue));
}
else
{
tempoMC = Convert.ToDecimal(Convert.ToDecimal(ddlMinuti.SelectedValue) + Convert.ToDecimal(ddlSecondi.SelectedValue) / 100);
}
}
}
/// <summary>
/// selezione minuti
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ddlMinuti_SelectedIndexChanged(object sender, EventArgs e)
{
updFromDropDown();
}
/// <summary>
/// selezione secondi/centesimi
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ddlSecondi_SelectedIndexChanged(object sender, EventArgs e)
{
updFromDropDown();
}
get
{
return this.UniqueID.Replace("$", "_").Replace("-", "_");
}
}
/// <summary>
/// modalità rendering controllo
/// </summary>
public timeControlMode modoControllo { get; set; }
/// <summary>
/// modalità controllo tempo
/// </summary>
public timeMode modoTempo
{
get
{
timeMode answ = timeMode.MC;
try
{
answ = (timeMode)memLayer.ML.objSessionObj("modoTempo");
}
catch
{ }
return answ;
}
set
{
memLayer.ML.setSessionVal("modoTempo", value);
}
}
/// <summary>
/// tempo min.cent
/// </summary>
protected decimal _tempoMC
{
get
{
decimal answ = 0;
try
{
answ = Convert.ToDecimal(memLayer.ML.objSessionObj(string.Format("tempoMC-{0}", uid)));
}
catch
{ }
return answ;
}
set
{
memLayer.ML.setSessionVal(string.Format("tempoMC-{0}", uid), value);
}
}
/// <summary>
/// tempo min:sec
/// </summary>
protected TimeSpan _tempoMS
{
get
{
TimeSpan answ = new TimeSpan(0, 0, 0);
try
{
answ = (TimeSpan)memLayer.ML.objSessionObj(string.Format("tempoMS-{0}", uid));
}
catch
{ }
return answ;
}
set
{
memLayer.ML.setSessionVal(string.Format("tempoMS-{0}", uid), value);
}
}
/// <summary>
/// INdica il formato del tempo IN INGRESSO (selezionato)
/// </summary>
public string labelTempoIN
{
get
{
string answ = "";
if (modoTempo == timeMode.MC)
{
answ = "min.cent";
}
else
{
answ = "min:sec";
}
return answ;
}
}
/// <summary>
/// caricamento pagina
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load(object sender, EventArgs e)
{
// a secondo del modo di controllo mostro textbox o selettori...
bool showTesto = true;
if (modoControllo == timeControlMode.testo)
{
showTesto = true;
}
else
{
showTesto = false;
}
// sistemo visualizzazione dei 2 div
divTesto.Visible = showTesto;
divSelettori.Visible = !showTesto;
if (!Page.IsPostBack)
{
// fix numero item secondi
odsSecondi.SelectParameters.Clear();
odsSecondi.SelectParameters.Add("minVal", "0");
odsSecondi.SelectParameters.Add("maxVal", numItemSec.ToString());
// fix visualizzazione
showControls();
}
}
/// <summary>
/// mostra i controlli secondo richiesta
/// </summary>
private void showControls()
{
if (modoControllo == timeControlMode.testo)
{
if (modoTempo == timeMode.MC)
{
txtTempo.Text = string.Format("{0:0.000}", tempoMC);
}
else
{
txtTempo.Text = string.Format("{0:#0}:{1:00}", tempoMS.Minutes, tempoMS.Seconds);
}
}
else
{
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();
}
}
// fix label...
if (modoTempo == timeMode.MC)
{
lblTempo.Text = string.Format("--> {0:#0}:{1:00} (min:sec)", tempoMS.Minutes, tempoMS.Seconds);
}
else
{
lblTempo.Text = string.Format("--> {0:0.000} (min.cent)", tempoMC);
}
}
/// <summary>
/// num item x controllo secondi/centesimi
/// </summary>
public int numItemSec
{
get
{
int answ = 60;
if (modoTempo == timeMode.MS)
{
answ = 59;
}
else
{
answ = 99;
}
return answ;
}
}
/// <summary>
/// tempo selezionato in formato Minuti Secondi
/// </summary>
public TimeSpan tempoMS
{
get
{
return _tempoMS;
}
set
{
_tempoMS = value;
_tempoMC = minSec2Cent(value);
showControls();
}
}
/// <summary>
/// verifica se TC sia stato caricato dai controlli, se zero va caricato (almento tentato caricamento...)
/// </summary>
public void checkTC()
{
if (tempoMC == 0)
{
if (modoControllo == timeControlMode.testo)
{
updFromTextBox();
}
else
{
updFromDropDown();
}
}
}
/// <summary>
/// tempo selezionato in formato Minuti Centesimi
/// </summary>
public decimal tempoMC
{
get
{
return _tempoMC;
}
set
{
_tempoMC = value;
_tempoMS = minCent2Sec(value);
showControls();
}
}
/// <summary>
/// conversione da tempo minuti/secondi a minuti centesimali
/// </summary>
/// <param name="valore"></param>
/// <returns></returns>
protected decimal minSec2Cent(TimeSpan valore)
{
Decimal answ = 0;
try
{
answ = Math.Round((valore.Minutes + (decimal)valore.Seconds / 60), 3);
}
catch
{ }
return answ;
}
/// <summary>
/// conversione da tempo minuti centesimali a minuti/secondi
/// </summary>
/// <param name="valore"></param>
/// <returns></returns>
protected TimeSpan minCent2Sec(decimal valore)
{
TimeSpan answ = new TimeSpan(0, 0, 1);
try
{
answ = new TimeSpan(0, Convert.ToInt32(valore), Convert.ToInt32((valore - Convert.ToInt32(valore)) * 60));
}
catch
{ }
return answ;
}
/// <summary>
/// cambiato valore tempo...
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void txtTempo_TextChanged(object sender, EventArgs e)
{
updFromTextBox();
}
/// <summary>
/// update da casella testo
/// </summary>
private void updFromTextBox()
{
if (modoControllo == timeControlMode.testo)
{
if (modoTempo == timeMode.MC)
{
tempoMC = Convert.ToDecimal(txtTempo.Text.Replace(".", ","));
}
else
{
string tempoDP = txtTempo.Text.Replace(".", ":").Replace(",", ":");
int min = 0;
int sec = 0;
try
{
min = Convert.ToInt32(tempoDP.Substring(0, tempoDP.IndexOf(":")));
sec = Convert.ToInt32(tempoDP.Substring(tempoDP.IndexOf(":") + 1, tempoDP.Length - tempoDP.IndexOf(":") - 1));
}
catch
{ }
tempoMS = new TimeSpan(0, min, sec);
}
}
}
/// <summary>
/// update da controlli dropdown
/// </summary>
private void updFromDropDown()
{
if (modoControllo == timeControlMode.selettori)
{
if (modoTempo == timeMode.MS)
{
tempoMS = new TimeSpan(0, Convert.ToInt32(ddlMinuti.SelectedValue), Convert.ToInt32(ddlSecondi.SelectedValue));
}
else
{
tempoMC = Convert.ToDecimal(Convert.ToDecimal(ddlMinuti.SelectedValue) + Convert.ToDecimal(ddlSecondi.SelectedValue) / 100);
}
}
}
/// <summary>
/// selezione minuti
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ddlMinuti_SelectedIndexChanged(object sender, EventArgs e)
{
updFromDropDown();
}
/// <summary>
/// selezione secondi/centesimi
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ddlSecondi_SelectedIndexChanged(object sender, EventArgs e)
{
updFromDropDown();
}
}
}
/// <summary>
@@ -313,14 +349,14 @@ namespace MoonProTablet.WebUserControls
/// </summary>
public enum timeMode
{
/// <summary>
/// Minuti Secondi
/// </summary>
MS = 0,
/// <summary>
/// Minuti Centesimali
/// </summary>
MC = 1
/// <summary>
/// Minuti Secondi
/// </summary>
MS = 0,
/// <summary>
/// Minuti Centesimali
/// </summary>
MC = 1
}
/// <summary>
@@ -328,12 +364,12 @@ public enum timeMode
/// </summary>
public enum timeControlMode
{
/// <summary>
/// controllo textbox
/// </summary>
testo = 0,
/// <summary>
/// selettori dropdown list
/// </summary>
selettori = 1
/// <summary>
/// controllo textbox
/// </summary>
testo = 0,
/// <summary>
/// selettori dropdown list
/// </summary>
selettori = 1
}