diff --git a/C2P/Scripts/jSteamware.js b/C2P/Scripts/jSteamware.js new file mode 100644 index 0000000..cc9f6f0 --- /dev/null +++ b/C2P/Scripts/jSteamware.js @@ -0,0 +1,34 @@ +/* +* Utility JS Steamware +* +* Steamware 2014+ +* +*/ + + +// Gestione oggetti datepicker (globale) +function fixDatePicker() +{ + $.datepicker.setDefaults($.datepicker.regional["it"]); + $(".datepicker").datepicker({ + //showOtherMonths: true, + //selectOtherMonths: true, + showButtonPanel: true, + changeMonth: true, + changeYear: true, + dateFormat: "dd/mm/yy" + }); +} + + +// richiamo quando il DOM della pagina è ok... +$(function () { + fixDatePicker(); +}); + +// oggetto da legare all'update parziale ajax x sistemare script vari +var prm = Sys.WebForms.PageRequestManager.getInstance(); +prm.add_endRequest(function () { + // re-bind post eventi here + fixDatePicker(); +}); \ No newline at end of file diff --git a/C2P/WebUserControls/mod_selPeriodo.ascx b/C2P/WebUserControls/mod_selPeriodo.ascx new file mode 100644 index 0000000..afa2a2a --- /dev/null +++ b/C2P/WebUserControls/mod_selPeriodo.ascx @@ -0,0 +1,109 @@ +<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="mod_selPeriodo.ascx.cs" Inherits="C2P.WebUserControls.mod_selPeriodo" %> + +<%----%> +
+ +    + + + 00 + 01 + 02 + 03 + 04 + 05 + 06 + 07 + 08 + 09 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 + 20 + 21 + 22 + 23 + + +  →  + + + 00 + 01 + 02 + 03 + 04 + 05 + 06 + 07 + 08 + 09 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 + 20 + 21 + 22 + 23 + +    + + selezione + oggi + ieri + questa settimana + ultimi 7gg + questo mese + ultimi 30gg + 1 anno + +     + +     + +    + +
diff --git a/C2P/WebUserControls/mod_selPeriodo.ascx.cs b/C2P/WebUserControls/mod_selPeriodo.ascx.cs new file mode 100644 index 0000000..f160d35 --- /dev/null +++ b/C2P/WebUserControls/mod_selPeriodo.ascx.cs @@ -0,0 +1,313 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; +using SteamWare; + + +namespace C2P.WebUserControls +{ + public partial class mod_selPeriodo : System.Web.UI.UserControl + { + #region area protected + + protected intervalloDate _intervallo; + + /// + /// avvio componente + /// + /// + protected override void OnInit(EventArgs e) + { + base.OnInit(e); + setIntervallo(); + setDurataMin(); + } + /// + /// definisce se sia da mostrare il selettore delle ore nel controllo + /// + 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; + } + } + + /// + /// gestione del selettore rapido dell'intervallo temporale... + /// + /// + /// + protected void ddlSelPeriodo_SelectedIndexChanged(object sender, EventArgs e) + { + // verifico cosa sia cambiato ed imposto date... + datario _datario = new datario(); + switch (ddlSelPeriodo.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 "1 anno": + _intervallo = _datario.ultimiGiorni(DateTime.Now, 366); + break; + default: + break; + } + if ((intervalloAnalisi.inizio != _intervallo.inizio) || (intervalloAnalisi.fine != _intervallo.fine)) + { + verificaCoerenzaDate(); + aggiornaDateMostrate(false); + // mostro btn update + btnUpdate.Visible = true; + } + } + /// + /// 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 = _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; + } + } + /// + /// imposta intervallo da sessione o di default + /// + private void setIntervallo() + { + intervalloDate _intervallo; + try + { + _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(); + } + /// + /// imposta durata minima + /// + private void setDurataMin() + { + int _durataMin; + try + { + _durataMin = (int)Session["_durataMin"]; + } + catch + { + _durataMin = 0; + Session["_durataMin"] = _durataMin; + } + txtDurataMin.Text = _durataMin.ToString(); + } + /// + /// caricamento pagina + /// + /// + /// + protected void Page_Load(object sender, EventArgs e) + { + lblPeriodo.Text = "Periodo di riferimento: "; + 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"; + } + + + private void aggiornaPeriodo() + { + _intervallo = new intervalloDate(); + // calcolo tempi arrotondati + int oraInizio = Convert.ToInt32(ddlOraInizio.SelectedValue); + int oraFine = Convert.ToInt32(ddlOraFine.SelectedValue); + _intervallo.inizio = Convert.ToDateTime(txtInizio.Text).AddHours(oraInizio); + _intervallo.fine = Convert.ToDateTime(txtFine.Text).AddHours(oraFine); + verificaCoerenzaDate(); + int _durataMin; + _durataMin = Convert.ToInt32(txtDurataMin.Text); + Session["_durataMin"] = _durataMin; + 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(); + // mostro btn update + btnUpdate.Visible = true; + } + /// + /// evento cambio testo data fine + /// + /// + /// + protected void txtFine_TextChanged(object sender, EventArgs e) + { + // imposto il selettore a discesa... + setPeriodoFree(); + // mostro btn update + btnUpdate.Visible = true; + } + /// + /// in questo caso faccio udpate periodo mostrato + /// + /// + /// + protected void btnUpdate_Click(object sender, EventArgs e) + { + aggiornaPeriodo(); + // nascondo btn update + btnUpdate.Visible = false; + } + /// + /// 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; + _intervallo = interv; + aggiornaDateMostrate(false); + } + } + /// + /// effettua update + /// + /// + public void doUpdate(bool doReportUpdate) + { + aggiornaDateMostrate(doReportUpdate); + } + /// + /// imposta periodo libero di selezione + /// + public void setPeriodoFree() + { + ddlSelPeriodo.SelectedIndex = 0; + } + + #region gestione eventi + + public event EventHandler eh_doUpdate; + + #endregion + + + #endregion + } +} \ No newline at end of file diff --git a/C2P/WebUserControls/mod_selPeriodo.ascx.designer.cs b/C2P/WebUserControls/mod_selPeriodo.ascx.designer.cs new file mode 100644 index 0000000..efe24cb --- /dev/null +++ b/C2P/WebUserControls/mod_selPeriodo.ascx.designer.cs @@ -0,0 +1,96 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace C2P.WebUserControls { + + + public partial class mod_selPeriodo { + + /// + /// lblPeriodo control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblPeriodo; + + /// + /// txtInizio control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtInizio; + + /// + /// ddlOraInizio control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.DropDownList ddlOraInizio; + + /// + /// txtFine control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtFine; + + /// + /// ddlOraFine control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.DropDownList ddlOraFine; + + /// + /// ddlSelPeriodo control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.DropDownList ddlSelPeriodo; + + /// + /// btnUpdate control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Button btnUpdate; + + /// + /// lblDurataMin control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblDurataMin; + + /// + /// txtDurataMin control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtDurataMin; + } +}