404 lines
11 KiB
C#
404 lines
11 KiB
C#
using System;
|
|
using System.Data;
|
|
using System.Configuration;
|
|
using System.Collections;
|
|
using System.Web;
|
|
using System.Web.Security;
|
|
using System.Web.UI;
|
|
using System.Web.UI.WebControls;
|
|
using System.Web.UI.WebControls.WebParts;
|
|
using System.Web.UI.HtmlControls;
|
|
using SteamWare;
|
|
|
|
public partial class mod_periodoAnalisi : System.Web.UI.UserControl
|
|
{
|
|
#region Protected Fields
|
|
|
|
protected intervalloDate _intervallo;
|
|
|
|
#endregion Protected Fields
|
|
|
|
#region Public Events
|
|
|
|
public event EventHandler eh_doUpdate;
|
|
|
|
#endregion Public Events
|
|
|
|
#region Protected Properties
|
|
|
|
/// <summary>
|
|
/// definisce se sia da mostrare il selettore delle ore nel controllo
|
|
/// </summary>
|
|
protected bool mostraSelOra
|
|
{
|
|
get
|
|
{
|
|
bool answ = false;
|
|
if (memLayer.ML.isInSessionObject("mostraSelOra"))
|
|
{
|
|
answ = memLayer.ML.BoolSessionObj("mostraSelOra");
|
|
}
|
|
else
|
|
{
|
|
// leggo da sessione e salvo...
|
|
try
|
|
{
|
|
answ = memLayer.ML.confReadBool("mostraSelOra");
|
|
}
|
|
catch
|
|
{ }
|
|
memLayer.ML.setSessionVal("mostraSelOra", answ);
|
|
}
|
|
return answ;
|
|
}
|
|
}
|
|
|
|
#endregion Protected Properties
|
|
|
|
#region Public Properties
|
|
|
|
public intervalloDate intervalloAnalisi
|
|
{
|
|
get
|
|
{
|
|
intervalloDate answ = new intervalloDate();
|
|
if (memLayer.ML.isInSessionObject("_intervallo"))
|
|
{
|
|
answ = (intervalloDate)Session["_intervallo"];
|
|
}
|
|
return answ;
|
|
}
|
|
set
|
|
{
|
|
intervalloDate interv = value;
|
|
Session["_intervallo"] = interv;
|
|
Session["_inizio"] = interv.inizio;
|
|
Session["_fine"] = interv.fine;
|
|
aggiornaDateMostrate(false);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// imposta realtime update (non mostra button am fa subito update)
|
|
/// </summary>
|
|
public bool realtimeUpdate
|
|
{
|
|
get
|
|
{
|
|
return memLayer.ML.BoolSessionObj("rltUpdatePeriodo");
|
|
}
|
|
set
|
|
{
|
|
memLayer.ML.setSessionVal("rltUpdatePeriodo", value);
|
|
}
|
|
}
|
|
|
|
public string uid
|
|
{
|
|
get
|
|
{
|
|
return this.UniqueID.Replace("$", "_").Replace("-", "_");
|
|
}
|
|
}
|
|
|
|
#endregion Public Properties
|
|
|
|
#region Private Methods
|
|
|
|
/// <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();
|
|
}
|
|
}
|
|
|
|
private void aggiornaPeriodo()
|
|
{
|
|
_intervallo = new intervalloDate();
|
|
// calcolo tempi arrotondati
|
|
int oraInizio = 0;
|
|
int oraFine = 0;
|
|
if (mostraSelOra)
|
|
{
|
|
oraInizio = Convert.ToInt32(ddlOraInizio.SelectedValue);
|
|
oraFine = Convert.ToInt32(ddlOraFine.SelectedValue);
|
|
}
|
|
_intervallo.inizio = Convert.ToDateTime(txtInizio.Text).AddHours(oraInizio);
|
|
_intervallo.fine = Convert.ToDateTime(txtFine.Text).AddHours(oraFine).AddDays(1);
|
|
verificaCoerenzaDate();
|
|
int _durataMin;
|
|
_durataMin = Convert.ToInt32(txtDurataMin.Text);
|
|
Session["_durataMin"] = _durataMin;
|
|
reportUpdate();
|
|
}
|
|
|
|
/// <summary>
|
|
/// controlla se aggiornare subito o mostrare update (a seconda del valore di realtime update...)
|
|
/// </summary>
|
|
private void checkIfUpdate()
|
|
{
|
|
// se richiesto realtime
|
|
if (realtimeUpdate)
|
|
{
|
|
aggiornaPeriodo();
|
|
// nascondo btn update
|
|
btnUpdate.Visible = false;
|
|
}
|
|
else
|
|
{
|
|
// altrimenti mostro btn update
|
|
btnUpdate.Visible = true;
|
|
}
|
|
}
|
|
|
|
/// <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.ToShortDateString();
|
|
ddlOraInizio.SelectedValue = _intervallo.inizio.Hour.ToString("00");
|
|
txtFine.Text = _intervallo.fine.ToShortDateString();
|
|
ddlOraFine.SelectedValue = _intervallo.fine.Hour.ToString("00");
|
|
if (mostraSelOra)
|
|
{
|
|
ddlOraInizio.Visible = true;
|
|
ddlOraFine.Visible = true;
|
|
}
|
|
else
|
|
{
|
|
ddlOraInizio.Visible = false;
|
|
ddlOraFine.Visible = false;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// imposta durata minima
|
|
/// </summary>
|
|
private void setDurataMin()
|
|
{
|
|
int _durataMin = 0;
|
|
try
|
|
{
|
|
if (memLayer.ML.isInSessionObject("_intervallo"))
|
|
{
|
|
_durataMin = memLayer.ML.IntSessionObj("_durataMin");
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
_durataMin = 0;
|
|
Session["_durataMin"] = _durataMin;
|
|
}
|
|
txtDurataMin.Text = _durataMin.ToString();
|
|
}
|
|
|
|
/// <summary>
|
|
/// imposta intervallo da sessione o di default
|
|
/// </summary>
|
|
private void setIntervallo()
|
|
{
|
|
intervalloDate _intervallo;
|
|
try
|
|
{
|
|
if (memLayer.ML.isInSessionObject("_intervallo"))
|
|
{
|
|
_intervallo = (intervalloDate)Session["_intervallo"];
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
_intervallo = new intervalloDate();
|
|
_intervallo.inizio = DateTime.Now.AddDays(memLayer.ML.confReadInt("defDayFrom"));
|
|
_intervallo.fine = DateTime.Now.AddDays(1);
|
|
Session["_intervallo"] = _intervallo;
|
|
Session["_inizio"] = _intervallo.inizio;
|
|
Session["_fine"] = _intervallo.fine;
|
|
}
|
|
scriviDate();
|
|
}
|
|
|
|
/// <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.fine = _intervallo.inizio.AddDays(1);
|
|
}
|
|
//intervalloAnalisi = _intervallo;
|
|
aggiornaDateMostrate(false);
|
|
}
|
|
|
|
#endregion Private Methods
|
|
|
|
#region Protected Methods
|
|
|
|
/// <summary>
|
|
/// in questo caso faccio udpate periodo mostrato
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
protected void btnUpdate_Click(object sender, EventArgs e)
|
|
{
|
|
aggiornaPeriodo();
|
|
// nascondo btn update
|
|
btnUpdate.Visible = false;
|
|
}
|
|
|
|
/// <summary>
|
|
/// gestione del selettore rapido dell'intervallo temporale...
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
// verifico cosa sia cambiato ed imposto date...
|
|
datario _datario = new datario();
|
|
switch (DropDownList1.SelectedValue)
|
|
{
|
|
case "oggi":
|
|
_intervallo = _datario.giornata(DateTime.Now);
|
|
break;
|
|
|
|
case "ieri":
|
|
_intervallo = _datario.giornata(DateTime.Now.AddDays(-1));
|
|
break;
|
|
|
|
case "ultimi 7gg":
|
|
_intervallo = _datario.ultimiGiorni(DateTime.Now, 7);
|
|
break;
|
|
|
|
case "questa settimana":
|
|
_intervallo = _datario.questaSett(DateTime.Now);
|
|
break;
|
|
|
|
case "ultimi 30gg":
|
|
_intervallo = _datario.ultimiGiorni(DateTime.Now, 30);
|
|
break;
|
|
|
|
case "questo mese":
|
|
_intervallo = _datario.questoMese(DateTime.Now);
|
|
break;
|
|
|
|
case "mese precedente":
|
|
_intervallo = _datario.mesePrecedente(DateTime.Now);
|
|
break;
|
|
|
|
case "questo anno":
|
|
_intervallo = _datario.estremiAnno(DateTime.Now);
|
|
break;
|
|
|
|
case "1 anno":
|
|
_intervallo = _datario.ultimiGiorni(DateTime.Now, 366);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
if ((intervalloAnalisi.inizio != _intervallo.inizio) || (intervalloAnalisi.fine != _intervallo.fine))
|
|
{
|
|
verificaCoerenzaDate();
|
|
aggiornaDateMostrate(realtimeUpdate);
|
|
// mostro btn update
|
|
btnUpdate.Visible = !realtimeUpdate;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// avvio componente
|
|
/// </summary>
|
|
/// <param name="e"></param>
|
|
protected override void OnInit(EventArgs e)
|
|
{
|
|
base.OnInit(e);
|
|
setIntervallo();
|
|
setDurataMin();
|
|
}
|
|
|
|
protected void Page_Load(object sender, EventArgs e)
|
|
{
|
|
lblPeriodo.Text = "Periodo";
|
|
txtInizio.ToolTip = "inizio periodo di riferimento per i dati mostrati";
|
|
txtFine.ToolTip = "fine periodo di riferimento per i dati mostrati";
|
|
lblDurataMin.Text = "Visualizza eventi con durata superiore a";
|
|
}
|
|
|
|
/// <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());
|
|
}
|
|
}
|
|
|
|
/// <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();
|
|
checkIfUpdate();
|
|
}
|
|
|
|
/// <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();
|
|
checkIfUpdate();
|
|
}
|
|
|
|
#endregion Protected Methods
|
|
|
|
#region Public Methods
|
|
|
|
/// <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()
|
|
{
|
|
DropDownList1.SelectedIndex = 0;
|
|
}
|
|
|
|
#endregion Public Methods
|
|
} |