OK FILTRO PERIODO!!!

This commit is contained in:
Samuele Locatelli
2017-02-14 15:28:15 +01:00
parent a8ba1debd8
commit 6d56607ddb
4 changed files with 394 additions and 156 deletions
+5 -1
View File
@@ -167,8 +167,12 @@
<add key="AuthCookieName" value="XPS_Auth" />
<add key="enablePlain" value="true" />
<add key="DevicesAuthConnectionString" value="Data Source=WIN2016-SQL;Initial Catalog=Equa_XPS;Persist Security Info=True;User id=sa;Password=keyhammer16" />
<!--area periodo Dati-->
<!--gestione periodi e formati data-ora-->
<add key="prevMonth" value="2"/>
<add key="culture" value="it-IT" />
<add key="ddMMyy" value="dd/MM/yy" />
<add key="ddMMyyyy" value="dd/MM/yyyy" />
<add key="ddMMyyyyHHmm" value="dd/MM/yyyy HH:mm" />
<!--area DB-->
<add key="XPSConnectionString" value="Data Source=WIN2016-SQL;Initial Catalog=Equa_XPS;Persist Security Info=True;User id=sa;Password=keyhammer16" />
<add key="PermessiConnectionString" value="Data Source=WIN2016-SQL;Initial Catalog=Equa_XPS;Persist Security Info=True;User id=sa;Password=keyhammer16" />
+4 -3
View File
@@ -13,12 +13,13 @@
<asp:ListItem Value="6M">Ultimi 6 mesi</asp:ListItem>
<asp:ListItem Value="12M">Ultimi 12 mesi</asp:ListItem>
</asp:DropDownList>
<asp:HiddenField runat="server" ID="hfTPer" />
</div>
<div class="col-xs-4">
<asp:TextBox ID="txtInizio" TabIndex="1" runat="server" Width="10em" MaxLength="10" AutoPostBack="True" OnTextChanged="txtInizio_TextChanged" TextMode="Date" ToolTip="Inizio" />
<%--<asp:CalendarExtender ID="CalendarExtender1" runat="server" TargetControlID="txtInizio"
<asp:TextBox ID="txtInizio" TabIndex="1" runat="server" Width="8em" MaxLength="10" AutoPostBack="True" OnTextChanged="txtInizio_TextChanged" ToolTip="Inizio" />
<asp:CalendarExtender ID="CalendarExtender1" runat="server" TargetControlID="txtInizio"
FirstDayOfWeek="Monday" Format="dd/MM/yyyy">
</asp:CalendarExtender>--%>
</asp:CalendarExtender>
</div>
<div class="col-xs-4">
<asp:TextBox ID="txtFine" TabIndex="3" runat="server" Width="8em" MaxLength="10" AutoPostBack="True" OnTextChanged="txtFine_TextChanged" ToolTip="Fine" />
+367 -152
View File
@@ -31,6 +31,7 @@ namespace XPS.WebUserControls
/// <param name="e"></param>
protected void ddlPeriodo_SelectedIndexChanged(object sender, EventArgs e)
{
intervalloDate _intervallo = new intervalloDate();
// verifico cosa sia cambiato ed imposto date...
datario _datario = new datario();
switch (ddlPeriodo.SelectedValue)
@@ -56,37 +57,15 @@ namespace XPS.WebUserControls
default:
break;
}
if ((intervalloAnalisi.inizio != _intervallo.inizio) || (intervalloAnalisi.fine != _intervallo.fine))
{
verificaCoerenzaDate();
aggiornaDateMostrate(false);
aggiornaPeriodo();
}
intervalloAnalisi = _intervallo;
aggiornaDateMostrate();
}
/// <summary>
/// effettua update delle date mostrate da intervallo analisi (ed eventualmente riporta update...)
/// </summary>
/// <param name="doReportUpdate"></param>
private void aggiornaDateMostrate(bool doReportUpdate)
private void aggiornaDateMostrate()
{
scriviDate();
if (doReportUpdate)
{
reportUpdate();
}
}
/// <summary>
/// scrive nuove date in controllo
/// </summary>
private void scriviDate()
{
// se intervallo non è valorizzato leggo da sessione...
if (!_intervallo.isValid)
{
_intervallo = intervalloAnalisi;
}
txtInizio.Text = _intervallo.inizio.ToString("dd/MM/yyyy");
txtFine.Text = _intervallo.fine.ToShortDateString();
txtInizio.Text = intervalloAnalisi.inizio.ToString(memLayer.ML.CRS("ddMMyyyy")); // .ToShortDateString();
txtFine.Text = intervalloAnalisi.fine.AddDays(-1).ToString(memLayer.ML.CRS("ddMMyyyy")); // .ToShortDateString(); // mostro 1 gg in meno xché termina alle 00:00...
reportUpdate();
}
private void setIntervallo()
@@ -99,76 +78,89 @@ namespace XPS.WebUserControls
catch
{
_intervallo = new intervalloDate();
_intervallo.fine = DateTime.Now;
_intervallo.inizio = DateTime.Now.AddMonths(-2);
// in base al tipo intervallo (futuro/all) decido cosa mostrare...
if (periodo == datario.periodo.future)
{
_intervallo.inizio = DateTime.Now.Subtract(DateTime.Now.TimeOfDay);
_intervallo.fine = _intervallo.inizio.AddDays(7);
}
else
{
_intervallo.fine = DateTime.Now.Subtract(DateTime.Now.TimeOfDay).AddDays(1);
_intervallo.inizio = _intervallo.fine.AddMonths(-1);
}
Session["_intervallo"] = _intervallo;
Session["_inizio"] = _intervallo.inizio;
Session["_fine"] = _intervallo.fine;
}
scriviDate();
txtInizio.Text = _intervallo.inizio.ToString(memLayer.ML.CRS("ddMMyyyy")); //.ToShortDateString();
txtFine.Text = _intervallo.fine.ToString(memLayer.ML.CRS("ddMMyyyy")); //.ToShortDateString();
}
/// <summary>
/// wrapper traduzione
/// </summary>
/// <param name="lemma"></param>
/// <returns></returns>
public string traduci(object lemma)
{
return user_std.UtSn.Traduci(lemma.ToString());
}
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
txtInizio.ToolTip = traduci("inizioPeriodo");
txtFine.ToolTip = traduci("finePeriodo");
CalendarExtender1.Format = memLayer.ML.CRS("ddMMyyyy");
CalendarExtender2.Format = memLayer.ML.CRS("ddMMyyyy");
}
}
protected void txtInizio_TextChanged(object sender, EventArgs e)
{
// imposto il selettore a discesa...
ddlPeriodo.SelectedIndex = 0;
// se campo vuoto imposto oggi...
if (txtInizio.Text == "")
{
txtInizio.Text = DateTime.Now.ToString(memLayer.ML.CRS("ddMMyyyy")); //.ToShortDateString();
}
else
{
txtInizio.Text = datario.convDate(txtInizio.Text, memLayer.ML.CRS("ddMMyyyy"), memLayer.ML.CRS("culture")).ToString(memLayer.ML.CRS("ddMMyyyy")); //Convert.ToDateTime(txtInizio.Text).ToShortDateString();
}
// aggiorno dati in session...
aggiornaPeriodo();
}
private void aggiornaPeriodo()
{
_intervallo = new intervalloDate();
_intervallo.inizio = Convert.ToDateTime(txtInizio.Text);
_intervallo.fine = Convert.ToDateTime(txtFine.Text);
verificaCoerenzaDate();
_intervallo.inizio = datario.convDate(txtInizio.Text, memLayer.ML.CRS("ddMMyyyy"), memLayer.ML.CRS("culture")); // Convert.ToDateTime(txtInizio.Text);
_intervallo.fine = datario.convDate(txtFine.Text, memLayer.ML.CRS("ddMMyyyy"), memLayer.ML.CRS("culture")).Date.AddDays(1); //((DateTime)Convert.ToDateTime(txtFine.Text)).Date.AddDays(1);
//_intervallo.fine = ((DateTime)Convert.ToDateTime(txtFine.Text)).Date.AddDays(1).AddMinutes(-1);
intervalloAnalisi = _intervallo;
reportUpdate();
}
/// <summary>
/// verifica che le date dell'intervallo siano coerenti (inizio < fine)
/// </summary>
private void verificaCoerenzaDate()
{
// controllo date siano coerenti (fine > inizio)...
if (_intervallo.inizio >= _intervallo.fine)
{
// controllo non siano date successive ad oggi...
if (_intervallo.fine > DateTime.Now)
{
_intervallo.fine = DateTime.Now;
}
_intervallo.inizio = _intervallo.fine.AddDays(-1);
}
//intervalloAnalisi = _intervallo;
aggiornaDateMostrate(false);
}
/// <summary>
/// evento cambio testo data inizio
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void txtInizio_TextChanged(object sender, EventArgs e)
{
// imposto il selettore a discesa...
setPeriodoFree();
aggiornaPeriodo();
}
/// <summary>
/// evento cambio testo data fine
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void txtFine_TextChanged(object sender, EventArgs e)
{
// imposto il selettore a discesa...
setPeriodoFree();
ddlPeriodo.SelectedIndex = 0;
// se campo vuoto imposto oggi...
if (txtFine.Text == "")
{
txtFine.Text = DateTime.Now.AddDays(1).ToString(memLayer.ML.CRS("ddMMyyyy")); //.ToShortDateString();
}
else
{
txtFine.Text = datario.convDate(txtFine.Text, memLayer.ML.CRS("ddMMyyyy"), memLayer.ML.CRS("culture")).ToString(memLayer.ML.CRS("ddMMyyyy")); //Convert.ToDateTime(txtFine.Text).ToShortDateString();
}
// aggiorno dati in session...
aggiornaPeriodo();
}
/// <summary>
/// riporta aggiornamento a controller
/// </summary>
protected void reportUpdate()
{
intervalloAnalisi = _intervallo;
// alzo l'evento d update/inserimento e ricarico cache...
if (eh_doUpdate != null)
{
@@ -194,94 +186,317 @@ namespace XPS.WebUserControls
Session["_fine"] = interv.fine;
}
}
/// <summary>
/// effettua update
/// </summary>
/// <param name="doReportUpdate"></param>
public void doUpdate(bool doReportUpdate)
public void doUpdate()
{
aggiornaDateMostrate(doReportUpdate);
aggiornaDateMostrate();
}
/// <summary>
/// imposta periodo libero di selezione
/// </summary>
public void setPeriodoFree()
{
ddlPeriodo.SelectedIndex = 0;
}
protected datario.periodo _periodo { get; set; }
/// <summary>
/// Tipologia periodo mostrato...
/// </summary>
public datario.periodo periodo
{
get
{
return _periodo;
}
set
{
_periodo = value;
switch (_periodo)
{
case datario.periodo.past:
hfTPer.Value = "-1";
break;
case datario.periodo.future:
hfTPer.Value = "1";
break;
case datario.periodo.all:
case datario.periodo.nd:
default:
hfTPer.Value = "0";
break;
}
ddlPeriodo.DataBind();
}
}
#region gestione eventi
public event EventHandler eh_doUpdate;
#endregion
/// <summary>
/// effettua uno zoom 2 X sulle date attuali
/// </summary>
public void dateZoom()
{
// calcolo zoom 2X
double intervMinutiOrig = intervalloAnalisi.fine.Subtract(intervalloAnalisi.inizio).TotalMinutes;
// leggo data in cui lo zoom era centrato...
DateTime centroZoom = Convert.ToDateTime(memLayer.ML.objSessionObj("zoomCenter"));
// calcolo posizione relativa zoom...
double posizioneZoom = centroZoom.Subtract(intervalloAnalisi.inizio).TotalMinutes / intervMinutiOrig;
// init!
_intervallo = intervalloAnalisi;
// verifico che azione fare
if (posizioneZoom < 0.25) // se è nel 1/4 lascio zoom inalterato e "vado a sx" di 1/2 intervallo
{
if (intervMinutiOrig > 120)
{
_intervallo.inizio = _intervallo.inizio.AddMinutes(-intervMinutiOrig / 2.0);
_intervallo.fine = _intervallo.fine.AddMinutes(-intervMinutiOrig / 2.0);
}
else
{
_intervallo.inizio = _intervallo.inizio.AddMinutes(-60);
_intervallo.fine = _intervallo.fine.AddMinutes(-60);
}
}
else if (posizioneZoom > 0.75) // se è nel 3/4 lascio zoom inalterato e "vado a dx"
{
// mi imposto al max tra spostamento di 1/2 e l'ultimo dato disponibile...
if (intervMinutiOrig > 120)
{
_intervallo.fine = _intervallo.fine.AddMinutes(intervMinutiOrig / 2.0);
if (_intervallo.fine > DateTime.Now)
{
_intervallo.fine = DateTime.Now;
}
_intervallo.inizio = _intervallo.fine.AddMinutes(-intervMinutiOrig);
}
else
{
_intervallo.inizio = _intervallo.inizio.AddMinutes(60);
_intervallo.fine = _intervallo.fine.AddMinutes(60);
}
}
else // zoom!!!
{
if (intervMinutiOrig > 120)
{
_intervallo.inizio = _intervallo.inizio.AddMinutes(intervMinutiOrig / 4.0);
_intervallo.fine = _intervallo.fine.AddMinutes(-intervMinutiOrig / 4.0);
}
else // 1 ora di zoom!
{
_intervallo.inizio = _intervallo.inizio.Date.AddHours(_intervallo.inizio.TimeOfDay.Hours);
_intervallo.fine = _intervallo.inizio.AddHours(1);
}
}
// arrotondo all'ora...
_intervallo.inizio = _intervallo.inizio.Date.AddHours(_intervallo.inizio.TimeOfDay.Hours);
_intervallo.fine = _intervallo.fine.Date.AddHours(_intervallo.fine.TimeOfDay.Hours);
// aggiorno in sessione
intervalloAnalisi = _intervallo;
Response.Redirect("~/DettaglioMacchina.aspx");
}
#endregion
///// <summary>
///// gestione del selettore rapido dell'intervallo temporale...
///// </summary>
///// <param name="sender"></param>
///// <param name="e"></param>
//protected void ddlPeriodo_SelectedIndexChanged(object sender, EventArgs e)
//{
// // verifico cosa sia cambiato ed imposto date...
// datario _datario = new datario();
// switch (ddlPeriodo.SelectedValue)
// {
// case "15gg":
// _intervallo = _datario.ultimiGiorni(DateTime.Now, 15);
// break;
// case "30gg":
// _intervallo = _datario.ultimiGiorni(DateTime.Now, 30);
// break;
// case "2M":
// _intervallo = _datario.ultimiMesi(DateTime.Now, 2);
// break;
// case "3M":
// _intervallo = _datario.ultimiMesi(DateTime.Now, 3);
// break;
// case "6M":
// _intervallo = _datario.ultimiMesi(DateTime.Now, 6);
// break;
// case "12M":
// _intervallo = _datario.ultimiMesi(DateTime.Now, 12);
// break;
// default:
// break;
// }
// if ((intervalloAnalisi.inizio != _intervallo.inizio) || (intervalloAnalisi.fine != _intervallo.fine))
// {
// verificaCoerenzaDate();
// aggiornaDateMostrate(false);
// aggiornaPeriodo();
// }
//}
///// <summary>
///// effettua update delle date mostrate da intervallo analisi (ed eventualmente riporta update...)
///// </summary>
///// <param name="doReportUpdate"></param>
//private void aggiornaDateMostrate(bool doReportUpdate)
//{
// scriviDate();
// if (doReportUpdate)
// {
// reportUpdate();
// }
//}
///// <summary>
///// scrive nuove date in controllo
///// </summary>
//private void scriviDate()
//{
// // se intervallo non è valorizzato leggo da sessione...
// if (!_intervallo.isValid)
// {
// _intervallo = intervalloAnalisi;
// }
// txtInizio.Text = datario.convDate(txtInizio.Text, memLayer.ML.CRS("ddMMyyyy"), memLayer.ML.CRS("culture")).ToString(memLayer.ML.CRS("ddMMyyyy")); //_intervallo.inizio.ToShortDateString();// ToString("dd/MM/yyyy");
// txtFine.Text = _intervallo.fine.ToShortDateString();
//}
//private void setIntervallo()
//{
// intervalloDate _intervallo;
// try
// {
// _intervallo = (intervalloDate)Session["_intervallo"];
// }
// catch
// {
// _intervallo = new intervalloDate();
// _intervallo.fine = DateTime.Now;
// _intervallo.inizio = DateTime.Now.AddMonths(-2);
// Session["_intervallo"] = _intervallo;
// Session["_inizio"] = _intervallo.inizio;
// Session["_fine"] = _intervallo.fine;
// }
// scriviDate();
//}
//protected void Page_Load(object sender, EventArgs e)
//{
//}
//private void aggiornaPeriodo()
//{
// _intervallo = new intervalloDate();
// _intervallo.inizio = datario.convDate(txtInizio.Text, memLayer.ML.CRS("ddMMyyyy"), memLayer.ML.CRS("culture")); //Convert.ToDateTime(txtInizio.Text);
// _intervallo.fine = Convert.ToDateTime(txtFine.Text);
// verificaCoerenzaDate();
// reportUpdate();
//}
///// <summary>
///// verifica che le date dell'intervallo siano coerenti (inizio < fine)
///// </summary>
//private void verificaCoerenzaDate()
//{
// // controllo date siano coerenti (fine > inizio)...
// if (_intervallo.inizio >= _intervallo.fine)
// {
// // controllo non siano date successive ad oggi...
// if (_intervallo.fine > DateTime.Now)
// {
// _intervallo.fine = DateTime.Now;
// }
// _intervallo.inizio = _intervallo.fine.AddDays(-1);
// }
// //intervalloAnalisi = _intervallo;
// aggiornaDateMostrate(false);
//}
///// <summary>
///// evento cambio testo data inizio
///// </summary>
///// <param name="sender"></param>
///// <param name="e"></param>
//protected void txtInizio_TextChanged(object sender, EventArgs e)
//{
// // imposto il selettore a discesa...
// setPeriodoFree();
// aggiornaPeriodo();
//}
///// <summary>
///// evento cambio testo data fine
///// </summary>
///// <param name="sender"></param>
///// <param name="e"></param>
//protected void txtFine_TextChanged(object sender, EventArgs e)
//{
// // imposto il selettore a discesa...
// setPeriodoFree();
// aggiornaPeriodo();
//}
///// <summary>
///// riporta aggiornamento a controller
///// </summary>
//protected void reportUpdate()
//{
// intervalloAnalisi = _intervallo;
// // alzo l'evento d update/inserimento e ricarico cache...
// if (eh_doUpdate != null)
// {
// eh_doUpdate(this, new EventArgs());
// }
//}
//#endregion
//#region area public
//public intervalloDate intervalloAnalisi
//{
// get
// {
// return (intervalloDate)Session["_intervallo"];
// }
// set
// {
// intervalloDate interv = value;
// Session["_intervallo"] = interv;
// Session["_inizio"] = interv.inizio;
// Session["_fine"] = interv.fine;
// }
//}
///// <summary>
///// effettua update
///// </summary>
///// <param name="doReportUpdate"></param>
//public void doUpdate(bool doReportUpdate)
//{
// aggiornaDateMostrate(doReportUpdate);
//}
///// <summary>
///// imposta periodo libero di selezione
///// </summary>
//public void setPeriodoFree()
//{
// ddlPeriodo.SelectedIndex = 0;
//}
//#region gestione eventi
//public event EventHandler eh_doUpdate;
//#endregion
///// <summary>
///// effettua uno zoom 2 X sulle date attuali
///// </summary>
//public void dateZoom()
//{
// // calcolo zoom 2X
// double intervMinutiOrig = intervalloAnalisi.fine.Subtract(intervalloAnalisi.inizio).TotalMinutes;
// // leggo data in cui lo zoom era centrato...
// DateTime centroZoom = Convert.ToDateTime(memLayer.ML.objSessionObj("zoomCenter"));
// // calcolo posizione relativa zoom...
// double posizioneZoom = centroZoom.Subtract(intervalloAnalisi.inizio).TotalMinutes / intervMinutiOrig;
// // init!
// _intervallo = intervalloAnalisi;
// // verifico che azione fare
// if (posizioneZoom < 0.25) // se è nel 1/4 lascio zoom inalterato e "vado a sx" di 1/2 intervallo
// {
// if (intervMinutiOrig > 120)
// {
// _intervallo.inizio = _intervallo.inizio.AddMinutes(-intervMinutiOrig / 2.0);
// _intervallo.fine = _intervallo.fine.AddMinutes(-intervMinutiOrig / 2.0);
// }
// else
// {
// _intervallo.inizio = _intervallo.inizio.AddMinutes(-60);
// _intervallo.fine = _intervallo.fine.AddMinutes(-60);
// }
// }
// else if (posizioneZoom > 0.75) // se è nel 3/4 lascio zoom inalterato e "vado a dx"
// {
// // mi imposto al max tra spostamento di 1/2 e l'ultimo dato disponibile...
// if (intervMinutiOrig > 120)
// {
// _intervallo.fine = _intervallo.fine.AddMinutes(intervMinutiOrig / 2.0);
// if (_intervallo.fine > DateTime.Now)
// {
// _intervallo.fine = DateTime.Now;
// }
// _intervallo.inizio = _intervallo.fine.AddMinutes(-intervMinutiOrig);
// }
// else
// {
// _intervallo.inizio = _intervallo.inizio.AddMinutes(60);
// _intervallo.fine = _intervallo.fine.AddMinutes(60);
// }
// }
// else // zoom!!!
// {
// if (intervMinutiOrig > 120)
// {
// _intervallo.inizio = _intervallo.inizio.AddMinutes(intervMinutiOrig / 4.0);
// _intervallo.fine = _intervallo.fine.AddMinutes(-intervMinutiOrig / 4.0);
// }
// else // 1 ora di zoom!
// {
// _intervallo.inizio = _intervallo.inizio.Date.AddHours(_intervallo.inizio.TimeOfDay.Hours);
// _intervallo.fine = _intervallo.inizio.AddHours(1);
// }
// }
// // arrotondo all'ora...
// _intervallo.inizio = _intervallo.inizio.Date.AddHours(_intervallo.inizio.TimeOfDay.Hours);
// _intervallo.fine = _intervallo.fine.Date.AddHours(_intervallo.fine.TimeOfDay.Hours);
// // aggiorno in sessione
// intervalloAnalisi = _intervallo;
// Response.Redirect("~/DettaglioMacchina.aspx");
//}
//#endregion
}
}
+18
View File
@@ -21,6 +21,15 @@ namespace XPS.WebUserControls {
/// </remarks>
protected global::System.Web.UI.WebControls.DropDownList ddlPeriodo;
/// <summary>
/// hfTPer control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.HiddenField hfTPer;
/// <summary>
/// txtInizio control.
/// </summary>
@@ -30,6 +39,15 @@ namespace XPS.WebUserControls {
/// </remarks>
protected global::System.Web.UI.WebControls.TextBox txtInizio;
/// <summary>
/// CalendarExtender1 control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::AjaxControlToolkit.CalendarExtender CalendarExtender1;
/// <summary>
/// txtFine control.
/// </summary>