From 6d56607ddbb77c7cdbd51b36f9ee793b6a4e825c Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Tue, 14 Feb 2017 15:28:15 +0100 Subject: [PATCH] OK FILTRO PERIODO!!! --- XPS/Web.config | 6 +- XPS/WebUserControls/mod_periodoAnalisi.ascx | 7 +- .../mod_periodoAnalisi.ascx.cs | 519 +++++++++++++----- .../mod_periodoAnalisi.ascx.designer.cs | 18 + 4 files changed, 394 insertions(+), 156 deletions(-) diff --git a/XPS/Web.config b/XPS/Web.config index a1d33b8..02c9cb4 100644 --- a/XPS/Web.config +++ b/XPS/Web.config @@ -167,8 +167,12 @@ - + + + + + diff --git a/XPS/WebUserControls/mod_periodoAnalisi.ascx b/XPS/WebUserControls/mod_periodoAnalisi.ascx index 5691bf7..ab7180c 100644 --- a/XPS/WebUserControls/mod_periodoAnalisi.ascx +++ b/XPS/WebUserControls/mod_periodoAnalisi.ascx @@ -13,12 +13,13 @@ Ultimi 6 mesi Ultimi 12 mesi +
- - <%-- + - --%> +
diff --git a/XPS/WebUserControls/mod_periodoAnalisi.ascx.cs b/XPS/WebUserControls/mod_periodoAnalisi.ascx.cs index 64e2de3..c59ed8b 100644 --- a/XPS/WebUserControls/mod_periodoAnalisi.ascx.cs +++ b/XPS/WebUserControls/mod_periodoAnalisi.ascx.cs @@ -31,6 +31,7 @@ namespace XPS.WebUserControls /// 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(); } - /// - /// effettua update delle date mostrate da intervallo analisi (ed eventualmente riporta update...) - /// - /// - private void aggiornaDateMostrate(bool doReportUpdate) + + private void aggiornaDateMostrate() { - scriviDate(); - if (doReportUpdate) - { - reportUpdate(); - } - } - /// - /// scrive nuove date in controllo - /// - 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(); + } + /// + /// wrapper traduzione + /// + /// + /// + 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(); } - /// - /// verifica che le date dell'intervallo siano coerenti (inizio < fine) - /// - 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); - } - /// - /// evento cambio testo data inizio - /// - /// - /// - protected void txtInizio_TextChanged(object sender, EventArgs e) - { - // imposto il selettore a discesa... - setPeriodoFree(); - aggiornaPeriodo(); - } - /// - /// evento cambio testo data fine - /// - /// - /// 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(); } - - /// - /// riporta aggiornamento a controller - /// + 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; } } - /// - /// effettua update - /// - /// - public void doUpdate(bool doReportUpdate) + + public void doUpdate() { - aggiornaDateMostrate(doReportUpdate); + aggiornaDateMostrate(); } - /// - /// imposta periodo libero di selezione - /// + public void setPeriodoFree() { ddlPeriodo.SelectedIndex = 0; } + + protected datario.periodo _periodo { get; set; } + + /// + /// Tipologia periodo mostrato... + /// + 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 - /// - /// effettua uno zoom 2 X sulle date attuali - /// - 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 + + ///// + ///// gestione del selettore rapido dell'intervallo temporale... + ///// + ///// + ///// + //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(); + // } + //} + ///// + ///// effettua update delle date mostrate da intervallo analisi (ed eventualmente riporta update...) + ///// + ///// + //private void aggiornaDateMostrate(bool doReportUpdate) + //{ + // scriviDate(); + // if (doReportUpdate) + // { + // reportUpdate(); + // } + //} + ///// + ///// scrive nuove date in controllo + ///// + //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(); + + //} + ///// + ///// verifica che le date dell'intervallo siano coerenti (inizio < fine) + ///// + //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); + //} + ///// + ///// evento cambio testo data inizio + ///// + ///// + ///// + //protected void txtInizio_TextChanged(object sender, EventArgs e) + //{ + // // imposto il selettore a discesa... + // setPeriodoFree(); + // aggiornaPeriodo(); + //} + ///// + ///// evento cambio testo data fine + ///// + ///// + ///// + //protected void txtFine_TextChanged(object sender, EventArgs e) + //{ + // // imposto il selettore a discesa... + // setPeriodoFree(); + // aggiornaPeriodo(); + //} + + ///// + ///// riporta aggiornamento a controller + ///// + //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; + // } + //} + ///// + ///// effettua update + ///// + ///// + //public void doUpdate(bool doReportUpdate) + //{ + // aggiornaDateMostrate(doReportUpdate); + //} + ///// + ///// imposta periodo libero di selezione + ///// + //public void setPeriodoFree() + //{ + // ddlPeriodo.SelectedIndex = 0; + //} + + //#region gestione eventi + + //public event EventHandler eh_doUpdate; + + //#endregion + + ///// + ///// effettua uno zoom 2 X sulle date attuali + ///// + //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 } } \ No newline at end of file diff --git a/XPS/WebUserControls/mod_periodoAnalisi.ascx.designer.cs b/XPS/WebUserControls/mod_periodoAnalisi.ascx.designer.cs index 3745f94..ecccc86 100644 --- a/XPS/WebUserControls/mod_periodoAnalisi.ascx.designer.cs +++ b/XPS/WebUserControls/mod_periodoAnalisi.ascx.designer.cs @@ -21,6 +21,15 @@ namespace XPS.WebUserControls { /// protected global::System.Web.UI.WebControls.DropDownList ddlPeriodo; + /// + /// hfTPer control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.HiddenField hfTPer; + /// /// txtInizio control. /// @@ -30,6 +39,15 @@ namespace XPS.WebUserControls { /// protected global::System.Web.UI.WebControls.TextBox txtInizio; + /// + /// CalendarExtender1 control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::AjaxControlToolkit.CalendarExtender CalendarExtender1; + /// /// txtFine control. ///