ancora traduzioni SITE

This commit is contained in:
Samuele Locatelli
2021-05-04 20:17:09 +02:00
parent e52775e210
commit 9ebaa3c731
9 changed files with 701 additions and 637 deletions
+61 -60
View File
@@ -1,76 +1,77 @@
<%@ Page Language="C#" MasterPageFile="~/WebMasterPages/MAPO_refresh30.master" AutoEventWireup="true" Inherits="MP_SITE.DettaglioMacchina" Title="Dettaglio Macchina" CodeBehind="DettaglioMacchina.aspx.cs" Async="true" %>
<%@ Register Src="~/WebUserControls/mod_sequencerStati.ascx" TagName="mod_sequencerStati"
TagPrefix="uc5" %>
TagPrefix="uc5" %>
<%@ Register Src="~/WebUserControls/mod_grafico.ascx" TagName="mod_grafico" TagPrefix="uc4" %>
<%@ Register Src="~/WebUserControls/mod_immagineStato.ascx" TagName="mod_immagineStato" TagPrefix="uc3" %>
<%@ Register Src="~/WebUserControls/mod_periodoAnalisi.ascx" TagName="mod_periodoAnalisi" TagPrefix="uc2" %>
<%@ Register Src="~/WebUserControls/mod_listaStatiEventi.ascx" TagName="mod_listaStatiEventi" TagPrefix="uc1" %>
<%@ Register Src="WebUserControls/mod_sequencerTempiCiclo.ascx" TagName="mod_sequencerTempiCiclo" TagPrefix="uc6" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<div id="contenuto">
<div id="alto">
<div id="Div1" class="menuMainY">
<asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Always">
<ContentTemplate>
<div style="float: left;">
<asp:Button runat="server" ID="toStato" PostBackUrl="~/MappaStato.aspx" Text="Mappa Generale"></asp:Button>
&nbsp;
</div>
<div style="float: left;">
<uc2:mod_periodoAnalisi ID="Mod_periodoAnalisi1" runat="server" />
</div>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</div>
<div id="medio">
<asp:UpdatePanel ID="up_grafici" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<uc5:mod_sequencerStati ID="Mod_sequencerStati1" runat="server"></uc5:mod_sequencerStati>
<uc6:mod_sequencerTempiCiclo ID="mod_sequencerTempiCiclo1" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
</div>
<div id="basso" class="m-2">
<div class="row">
<div class="col-4 pr-1">
<div class="card">
<div class="card-header p-1">
<h4>Stato Macchina</h4>
</div>
<div class="card-body">
<div id="alto1">
<uc3:mod_immagineStato ID="Mod_immagineStato1" runat="server" />
</div>
<div id="medio1">
<asp:CheckBox ID="chkHideSpenta" runat="server" AutoPostBack="True" OnCheckedChanged="chkHideSpenta_CheckedChanged" Text="Nascondi spenta" />
</div>
<div id="basso1">
<asp:UpdatePanel ID="UpdatePanel3" runat="server" RenderMode="Block" UpdateMode="Always">
<ContentTemplate>
<uc4:mod_grafico ID="Mod_grafico2" runat="server" height="250" width="250"></uc4:mod_grafico>
</ContentTemplate>
<div id="contenuto">
<div id="alto">
<div id="Div1" class="menuMainY">
<asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Always">
<ContentTemplate>
<div class="d-flex flex-row ">
<div class="p-2">
<asp:Button runat="server" ID="toStato" PostBackUrl="~/MappaStato.aspx" Text="Mappa Generale"></asp:Button>
</div>
<div class="p-2 text-nowrap">
<uc2:mod_periodoAnalisi ID="Mod_periodoAnalisi1" runat="server" />
</div>
</div>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</div>
</div>
</div>
<div class="col-8 pl-1">
<div class="card">
<div class="card-header p-1">
<h4>Dati Produzione</h4>
</div>
<div class="card-body">
<asp:UpdatePanel ID="UpdatePanel1" runat="server" RenderMode="Block" UpdateMode="Always">
<div id="medio">
<asp:UpdatePanel ID="up_grafici" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<uc1:mod_listaStatiEventi ID="Mod_listaStatiEventi1" runat="server"></uc1:mod_listaStatiEventi>
<uc5:mod_sequencerStati ID="Mod_sequencerStati1" runat="server"></uc5:mod_sequencerStati>
<uc6:mod_sequencerTempiCiclo ID="mod_sequencerTempiCiclo1" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
</div>
</div>
</asp:UpdatePanel>
</div>
<div id="basso" class="m-2">
<div class="row">
<div class="col-4 pr-1">
<div class="card">
<div class="card-header p-1">
<h4>Stato Macchina</h4>
</div>
<div class="card-body">
<div id="alto1">
<uc3:mod_immagineStato ID="Mod_immagineStato1" runat="server" />
</div>
<div id="medio1">
<asp:CheckBox ID="chkHideSpenta" runat="server" AutoPostBack="True" OnCheckedChanged="chkHideSpenta_CheckedChanged" Text="Nascondi spenta" />
</div>
<div id="basso1">
<asp:UpdatePanel ID="UpdatePanel3" runat="server" RenderMode="Block" UpdateMode="Always">
<ContentTemplate>
<uc4:mod_grafico ID="Mod_grafico2" runat="server" height="250" width="250"></uc4:mod_grafico>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</div>
</div>
</div>
<div class="col-8 pl-1">
<div class="card">
<div class="card-header p-1">
<h4>Dati Produzione</h4>
</div>
<div class="card-body">
<asp:UpdatePanel ID="UpdatePanel1" runat="server" RenderMode="Block" UpdateMode="Always">
<ContentTemplate>
<uc1:mod_listaStatiEventi ID="Mod_listaStatiEventi1" runat="server"></uc1:mod_listaStatiEventi>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</asp:Content>
</asp:Content>
+59 -57
View File
@@ -1,122 +1,124 @@
//------------------------------------------------------------------------------
// <generato automaticamente>
// Codice generato da uno strumento.
// <auto-generated>
// This code was generated by a tool.
//
// Le modifiche a questo file possono causare un comportamento non corretto e verranno perse se
// il codice viene rigenerato.
// </generato automaticamente>
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace MP_SITE {
public partial class DettaglioMacchina {
namespace MP_SITE
{
public partial class DettaglioMacchina
{
/// <summary>
/// Controllo UpdatePanel2.
/// UpdatePanel2 control.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.UpdatePanel UpdatePanel2;
/// <summary>
/// Controllo toStato.
/// toStato control.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Button toStato;
/// <summary>
/// Controllo Mod_periodoAnalisi1.
/// Mod_periodoAnalisi1 control.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::MP_SITE.WebUserControls.mod_periodoAnalisi Mod_periodoAnalisi1;
/// <summary>
/// Controllo up_grafici.
/// up_grafici control.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.UpdatePanel up_grafici;
/// <summary>
/// Controllo Mod_sequencerStati1.
/// Mod_sequencerStati1 control.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::MP_SITE.WebUserControls.mod_sequencerStati Mod_sequencerStati1;
/// <summary>
/// Controllo mod_sequencerTempiCiclo1.
/// mod_sequencerTempiCiclo1 control.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::MP_SITE.WebUserControls.mod_sequencerTempiCiclo mod_sequencerTempiCiclo1;
/// <summary>
/// Controllo Mod_immagineStato1.
/// Mod_immagineStato1 control.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::MP_SITE.WebUserControls.mod_immagineStato Mod_immagineStato1;
/// <summary>
/// Controllo chkHideSpenta.
/// chkHideSpenta control.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.CheckBox chkHideSpenta;
/// <summary>
/// Controllo UpdatePanel3.
/// UpdatePanel3 control.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.UpdatePanel UpdatePanel3;
/// <summary>
/// Controllo Mod_grafico2.
/// Mod_grafico2 control.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::MP_SITE.WebUserControls.mod_grafico Mod_grafico2;
/// <summary>
/// Controllo UpdatePanel1.
/// UpdatePanel1 control.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.UpdatePanel UpdatePanel1;
/// <summary>
/// Controllo Mod_listaStatiEventi1.
/// Mod_listaStatiEventi1 control.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::MP_SITE.WebUserControls.mod_listaStatiEventi Mod_listaStatiEventi1;
}
+33 -26
View File
@@ -4,41 +4,48 @@
<%@ Register Src="~/WebUserControls/mod_periodoAnalisi.ascx" TagPrefix="uc1" TagName="mod_periodoAnalisi" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<div id="medio" style="margin: 0 20px;">
<div id="medio" class="p-2">
<div class="row">
<div class="col-xs-4">
<div class="uiMini" style="margin: 0 4px;">
<div class="row panel panel-default">
<div class="panel-heading">
<div class="col-3">
<div class="uiMini">
<div class="card ">
<div class="card-header">
<h3 class="panel-title"><%: traduci("FiltroPeriodoImpianti") %></h3>
</div>
<div class="col-xs-12 pad3">
<%--<div style="float: left; padding: 0px 4px;">--%>
<uc1:mod_periodoAnalisi runat="server" ID="mod_periodoAnalisi" />
<br />
<asp:ListBox ID="listMacchine" runat="server" DataSourceID="odsMacchine" DataTextField="label" DataValueField="value" SelectionMode="Multiple" Height="400px" Width="100%" AutoPostBack="true" OnSelectedIndexChanged="listMacchine_SelectedIndexChanged" OnDataBound="listMacchine_DataBound" Font-Size="1.5em"></asp:ListBox>
<asp:ObjectDataSource ID="odsMacchine" runat="server" OldValuesParameterFormatString="original_{0}" SelectMethod="getAttive" TypeName="MapoDb.DS_UtilityTableAdapters.v_selMacchineTableAdapter" FilterExpression="NOT value LIKE '%#%'"></asp:ObjectDataSource>
<div class="card-body p-0">
<div class="row p-1">
<div class="col-12">
<uc1:mod_periodoAnalisi runat="server" ID="mod_periodoAnalisi" />
<br />
<asp:ListBox ID="listMacchine" runat="server" DataSourceID="odsMacchine" DataTextField="label" DataValueField="value" SelectionMode="Multiple" Height="400px" Width="100%" AutoPostBack="true" OnSelectedIndexChanged="listMacchine_SelectedIndexChanged" OnDataBound="listMacchine_DataBound" Font-Size="1.5em"></asp:ListBox>
<asp:ObjectDataSource ID="odsMacchine" runat="server" OldValuesParameterFormatString="original_{0}" SelectMethod="getAttive" TypeName="MapoDb.DS_UtilityTableAdapters.v_selMacchineTableAdapter" FilterExpression="NOT value LIKE '%#%'"></asp:ObjectDataSource>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-xs-8 text-center">
<div class="row panel panel-success">
<div class="panel-heading">
<div class="col-9 text-center">
<div class="card ">
<div class="card-header">
<h3 class="panel-title"><%: traduci("Statistiche") %></h3>
</div>
<div class="col-xs-12 pad3">
<%-- <div style="float: right;">--%>
<div id="medio1">
<asp:CheckBox ID="chkHideSpenta" runat="server" AutoPostBack="True" OnCheckedChanged="chkHideSpenta_CheckedChanged"
Text="Nascondi spenta" />
</div>
<div id="basso1">
<asp:UpdatePanel ID="UpdatePanel3" runat="server">
<ContentTemplate>
<uc4:mod_grafico ID="Mod_grafico2" runat="server" width="400" height="400" minPercent="0.01"></uc4:mod_grafico>
</ContentTemplate>
</asp:UpdatePanel>
<div class="card-body p-0">
<div class="row p-1">
<div class="col-12">
<div id="medio1">
<asp:CheckBox ID="chkHideSpenta" runat="server" AutoPostBack="True" OnCheckedChanged="chkHideSpenta_CheckedChanged"
Text='<%# traduci("HideOff") %>' />
</div>
<div id="basso1">
<asp:UpdatePanel ID="UpdatePanel3" runat="server">
<ContentTemplate>
<uc4:mod_grafico ID="Mod_grafico2" runat="server" width="400" height="400" minPercent="0.01"></uc4:mod_grafico>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</div>
</div>
</div>
</div>
+30 -13
View File
@@ -7,10 +7,16 @@ namespace MP_SITE
{
public partial class StatisticheImpiego : BasePage
{
#region Protected Fields
protected intervalloDate _intervalloAnalisi;
protected resoconti _resoconti;
protected int durataMin;
#endregion Protected Fields
#region Protected Properties
/// <summary>
/// elenco idx COMMA separated da controllo selezione multiplo
/// </summary>
@@ -56,6 +62,28 @@ namespace MP_SITE
}
}
#endregion Protected Properties
#region Private Methods
private void Mod_periodoAnalisi1_eh_doUpdate(object sender, EventArgs e)
{
ridisegna();
}
/// <summary>
/// aggiorna dati x ridisegno
/// </summary>
private void ridisegna()
{
intervalloAnalisi = (intervalloDate)memLayer.ML.objSessionObj("_intervallo");
setTorta();
}
#endregion Private Methods
#region Protected Methods
protected void chkHideSpenta_CheckedChanged(object sender, EventArgs e)
{
// in base a quello ridisegno la torta...
@@ -93,6 +121,7 @@ namespace MP_SITE
mod_periodoAnalisi.eh_doUpdate += new EventHandler(Mod_periodoAnalisi1_eh_doUpdate);
if (!Page.IsPostBack)
{
chkHideSpenta.DataBind();
ridisegna();
}
}
@@ -110,18 +139,6 @@ namespace MP_SITE
}
}
private void Mod_periodoAnalisi1_eh_doUpdate(object sender, EventArgs e)
{
ridisegna();
}
/// <summary>
/// aggiorna dati x ridisegno
/// </summary>
private void ridisegna()
{
intervalloAnalisi = (intervalloDate)memLayer.ML.objSessionObj("_intervallo");
setTorta();
}
#endregion Protected Methods
}
}
+23 -23
View File
@@ -1,10 +1,10 @@
//------------------------------------------------------------------------------
// <generato automaticamente>
// Codice generato da uno strumento.
// <auto-generated>
// This code was generated by a tool.
//
// Le modifiche a questo file possono causare un comportamento non corretto e verranno perse se
// il codice viene rigenerato.
// </generato automaticamente>
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace MP_SITE
@@ -15,56 +15,56 @@ namespace MP_SITE
{
/// <summary>
/// Controllo mod_periodoAnalisi.
/// mod_periodoAnalisi control.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::MP_SITE.WebUserControls.mod_periodoAnalisi mod_periodoAnalisi;
/// <summary>
/// Controllo listMacchine.
/// listMacchine control.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.ListBox listMacchine;
/// <summary>
/// Controllo odsMacchine.
/// odsMacchine control.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.ObjectDataSource odsMacchine;
/// <summary>
/// Controllo chkHideSpenta.
/// chkHideSpenta control.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.CheckBox chkHideSpenta;
/// <summary>
/// Controllo UpdatePanel3.
/// UpdatePanel3 control.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.UpdatePanel UpdatePanel3;
/// <summary>
/// Controllo Mod_grafico2.
/// Mod_grafico2 control.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::MP_SITE.WebUserControls.mod_grafico Mod_grafico2;
}
+3 -1
View File
@@ -300,7 +300,9 @@
<Content Include="images\LogoMapoNoText.png" />
<Content Include="images\logoMoOnPro.png" />
<Content Include="images\logoSteamware.png" />
<Content Include="images\macchine\Steamware.png" />
<Content Include="images\macchine\Steamware.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="images\ProgressBar.gif" />
<Content Include="images\titoloCruscotto.png" />
<Content Include="images\view.gif" />
+10 -15
View File
@@ -1,8 +1,9 @@
<%@ Control Language="C#" AutoEventWireup="true" Inherits="MP_SITE.WebUserControls.mod_periodoAnalisi"
CodeBehind="mod_periodoAnalisi.ascx.cs" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>
<div class="filtraggio" style="width: 100%;">
<div class="floSx padSmall">
<div class="d-flex flex-row ">
<div class="px-2 text-nowrap">
<asp:TextBox ID="txtInizio" TabIndex="1" runat="server" Width="7em" MaxLength="10"
AutoPostBack="True" OnTextChanged="txtInizio_TextChanged" />
<asp:DropDownList ID="ddlOraInizio" TabIndex="2" runat="server" AutoPostBack="True"
@@ -33,10 +34,9 @@
<asp:ListItem>23</asp:ListItem>
</asp:DropDownList>
<asp:CalendarExtender ID="CalendarExtender1" runat="server" TargetControlID="txtInizio"
FirstDayOfWeek="Monday" Format="dd/MM/yyyy">
</asp:CalendarExtender>
FirstDayOfWeek="Monday" Format="dd/MM/yyyy"></asp:CalendarExtender>
</div>
<div class="floSx padSmall">
<div class="px-2 text-nowrap">
<asp:TextBox ID="txtFine" TabIndex="3" runat="server" Width="7em" MaxLength="10"
AutoPostBack="True" OnTextChanged="txtFine_TextChanged" />
<asp:DropDownList ID="ddlOraFine" TabIndex="2" runat="server" AutoPostBack="True"
@@ -67,10 +67,9 @@
<asp:ListItem>23</asp:ListItem>
</asp:DropDownList>
<asp:CalendarExtender ID="CalendarExtender2" runat="server" TargetControlID="txtFine"
FirstDayOfWeek="Monday" Format="dd/MM/yyyy">
</asp:CalendarExtender>
FirstDayOfWeek="Monday" Format="dd/MM/yyyy"></asp:CalendarExtender>
</div>
<div class="floSx padSmall">
<div class="px-2 text-nowrap">
<asp:DropDownList ID="ddlPeriodo" runat="server" AutoPostBack="True" OnSelectedIndexChanged="ddlPeriodo_SelectedIndexChanged" Font-Size="Smaller" CssClass="pad3">
<asp:ListItem>selezione</asp:ListItem>
<asp:ListItem>oggi</asp:ListItem>
@@ -80,15 +79,11 @@
<asp:ListItem>questo mese</asp:ListItem>
<asp:ListItem>ultimi 30gg</asp:ListItem>
</asp:DropDownList>
&nbsp;&nbsp;&nbsp;
&nbsp;
<asp:Button ID="btnUpdate" runat="server" Text="update" Visible="false" OnClick="btnUpdate_Click" />
</div>
<div class="floSx padSmall">
<asp:Label ID="lblDurataMin" runat="server" Visible="false" />
&nbsp;&nbsp;
&nbsp;
<asp:TextBox ID="txtDurataMin" TabIndex="3" runat="server" Width="30px" MaxLength="3"
AutoPostBack="True" OnTextChanged="txtInizio_TextChanged" Visible="false"></asp:TextBox>
</div>
<div class="clearDiv"></div>
</div>
</div>
+51 -49
View File
@@ -1,104 +1,106 @@
//------------------------------------------------------------------------------
// <generato automaticamente>
// Codice generato da uno strumento.
// <auto-generated>
// This code was generated by a tool.
//
// Le modifiche a questo file possono causare un comportamento non corretto e verranno perse se
// il codice viene rigenerato.
// </generato automaticamente>
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace MP_SITE.WebUserControls {
public partial class mod_periodoAnalisi {
namespace MP_SITE.WebUserControls
{
public partial class mod_periodoAnalisi
{
/// <summary>
/// Controllo txtInizio.
/// txtInizio control.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.TextBox txtInizio;
/// <summary>
/// Controllo ddlOraInizio.
/// ddlOraInizio control.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.DropDownList ddlOraInizio;
/// <summary>
/// Controllo CalendarExtender1.
/// CalendarExtender1 control.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::AjaxControlToolkit.CalendarExtender CalendarExtender1;
/// <summary>
/// Controllo txtFine.
/// txtFine control.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.TextBox txtFine;
/// <summary>
/// Controllo ddlOraFine.
/// ddlOraFine control.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.DropDownList ddlOraFine;
/// <summary>
/// Controllo CalendarExtender2.
/// CalendarExtender2 control.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::AjaxControlToolkit.CalendarExtender CalendarExtender2;
/// <summary>
/// Controllo ddlPeriodo.
/// ddlPeriodo control.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.DropDownList ddlPeriodo;
/// <summary>
/// Controllo btnUpdate.
/// btnUpdate control.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Button btnUpdate;
/// <summary>
/// Controllo lblDurataMin.
/// lblDurataMin control.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblDurataMin;
/// <summary>
/// Controllo txtDurataMin.
/// txtDurataMin control.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.TextBox txtDurataMin;
}
+431 -393
View File
@@ -2,426 +2,464 @@ using MapoDb;
using Newtonsoft.Json;
using SteamWare;
using System;
using System.IO;
namespace MP_SITE.WebUserControls
{
public partial class mod_statoMacchina : System.Web.UI.UserControl
{
/// <summary>
/// Oggetto datalayer specifico
/// </summary>
DataLayer DataLayerObj = new DataLayer();
#region area protected / private
/// <summary>
/// seriale associato alla macchina da controllare
/// </summary>
protected string _IdxMacchina
public partial class mod_statoMacchina : System.Web.UI.UserControl
{
get
{
return hfIdxMacchina.Value;
}
set
{
hfIdxMacchina.Value = value.Trim();
}
}
/// <summary>
/// posizione macchina nella tabella
/// </summary>
protected string _locazione;
protected bool _linkActive = true;
#region Private Fields
protected DS_ProdTempi.MappaStatoExplDataTable tabMSE;
protected DS_applicazione.AnagraficaStatiDataTable tabAnagStati;
/// <summary>
/// caricamento pagina
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load(object sender, EventArgs e)
{
//updateMe();
}
/// <summary>
/// aggiorna controllo
/// </summary>
public void updateMe()
{
//SE E SOLO SE ho una macchina e/o locazione...
if (!string.IsNullOrEmpty(IdxMacchina) && !IdxMacchina.Contains("#") && (locazione != "00"))
{
// effettua update visualizzazione
try
{
retrieveData();
updateLayout();
updateText();
updateImg();
updateHL();
// controllo se link attivo...
if (!_linkActive)
{
valMacchina.Enabled = false;
}
//logger.lg.scriviLog(string.Format("Retrieve: {0}", DateTime.Now.Subtract(tick).Milliseconds), tipoLog.INFO);
divSegnaposto.Visible = false;
}
catch (Exception exc)
{
logger.lg.scriviLog($"Eccezione in fase popolamento statoMacchina per IdxMacchina {IdxMacchina} - locazione {locazione}{Environment.NewLine}{exc}", tipoLog.EXCEPTION);
}
}
else
{
pnlMacchina.Visible = false;
}
}
/// <summary>
/// recupera i dati
/// </summary>
private void retrieveData()
{
// cerco se ho i dati in REDIS x non richiederli...
string hashKeyMSE = memLayer.ML.redHash("Tab:MSE:" + IdxMacchina);
string hashKeyAS = memLayer.ML.redHash("Tab:AnagStati");
string serVal = "";
if (memLayer.ML.redKeyPresent(hashKeyMSE))
//if (memLayer.ML.redHashPresent(hashKeyMSE))
{
serVal = memLayer.ML.getRSV(hashKeyMSE);
/// <summary>
/// Oggetto datalayer specifico
/// </summary>
private DataLayer DataLayerObj = new DataLayer();
tabMSE = JsonConvert.DeserializeObject<DS_ProdTempi.MappaStatoExplDataTable>(serVal);
//tabMSE = (DS_ProdTempi.MappaStatoExplDataTable)memLayer.ML.deserializeVal(serVal);
#endregion Private Fields
serVal = memLayer.ML.getRSV(hashKeyAS);
tabAnagStati = JsonConvert.DeserializeObject<DS_applicazione.AnagraficaStatiDataTable>(serVal);
//tabAnagStati = (DS_applicazione.AnagraficaStatiDataTable)memLayer.ML.deserializeVal(serVal);
}
else
{
// altrimenti prendo da DB...
try
{
// popolazione tabelle
tabMSE = DataLayerObj.taMSE.getByIdxMacchina(IdxMacchina);
tabAnagStati = DataLayerObj.taAnagStati.GetData();
}
catch
{ }
// salvo su DB! dati principali x 30 secondi...
serVal = memLayer.ML.serializeVal(tabMSE);
memLayer.ML.setRSV(hashKeyMSE, serVal, 30);
// anche il resto...
serVal = memLayer.ML.serializeVal(tabAnagStati);
memLayer.ML.setRSV(hashKeyAS, serVal);
}
}
/// <summary>
/// sistema il testo
/// </summary>
private void updateText()
{
if (!string.IsNullOrEmpty(_IdxMacchina) && _IdxMacchina != "nd")
{
// labels
lblCodArticolo.Text = "Art.";
lblStato.Text = "Stato";
lblProd.Text = "T.Ciclo"; // era OEE
lblDurata.Text = "Durata";
// 2018.02.05 cambio x fix nuovi impianti
// valMacchina.Text = tabMacchine.FindByIdxMacchina(IdxMacchina).Nome;
// valCodArticolo.Text = tabStatoMacchine.FindByIdxMacchina(IdxMacchina).CodArticolo;
#region Protected Fields
// leggo valori da MSE...
valMacchina.Text = tabMSE[0].Nome;
valCodArticolo.Text = tabMSE[0].CodArticolo;
// carico ultimo stato che sia durato almeno 6 sec (0.1 min)
int idxStato = 0;
int oreTot = 0;
float minuti = 0;
try
{
DS_ProdTempi.stp_repDonati_getLastStatoDurataMacchinaRow rigaStato = DataLayerObj.taDatiStatoMacch.GetData(IdxMacchina, 0.1)[0];
idxStato = rigaStato.idxStato;
oreTot = Convert.ToInt32(Math.Floor(rigaStato.Minuti / 60));
minuti = (float)rigaStato.Minuti - 60 * oreTot;
}
catch
{
// 2018.02.05 cambio x fix nuovi impianti
//idxStato = tabStatoMacchine.FindByIdxMacchina(IdxMacchina).IdxStato;
//DateTime inizioStato = tabStatoMacchine.FindByIdxMacchina(IdxMacchina).InizioStato;
//DateTime ora = DateTime.Now;
//TimeSpan durata = ora.Subtract(inizioStato);
//oreTot = durata.Days * 24 + durata.Hours;
//minuti = durata.Minutes;
idxStato = tabMSE[0].idxStato;
oreTot = (int)tabMSE[0].durata / 60;
minuti = (int)tabMSE[0].durata - 60 * oreTot;
}
// 2018.02.05 cambio x fix nuovi impianti
//valStato.Text = tabAnagStati.FindByIdxStato(idxStato).Descrizione;
valStato.Text = tabMSE[0].DescrizioneStato;
valDurata.Text = string.Format("{0}h {1}min", oreTot, minuti);
// solo se in stato NON di run...
if (idxStato != 13)
{
lblCausale.Text = "Causale fermo";
string cauFermo = "nd";
try
{
cauFermo = tabAnagStati.FindByIdxStato(tabMSE[0].idxStato).Descrizione;
//cauFermo = tabAnagStati.FindByIdxStato(Convert.ToInt32(tabStatoMacchine.FindByIdxMacchina(IdxMacchina).IdxStato)).Descrizione;
}
catch
{
// 2018.02.05 cambio x fix nuovi impianti
//cauFermo = string.Format("IN: {0}", tabStatoMacchine.FindByIdxMacchina(IdxMacchina).Value);
cauFermo = string.Format("IN: {0}", tabMSE[0].idxStato);
}
valCausale.Text = cauFermo;
}
else
{
lblCausale.Text = "";
valCausale.Text = "";
}
protected bool _linkActive = true;
// ATTENZIONE! dati generati casualmente, da cambiare in produzione!!!
bool demoRandom = false;
if (demoRandom)
{
// indico a caso % pz prodotti...
Random RandomClass = new Random(DateTime.Now.Millisecond);
if (idxStato == 13)
{
valProd.Text = string.Format("{0:P}", RandomClass.NextDouble() / 4 + 0.75);
}
else if (oreTot > 8)
{
valProd.Text = string.Format("{0:P}", 0);
}
else
{
valProd.Text = string.Format("{0:P}", RandomClass.NextDouble() / 2 + 0.25);
}
}
else // mostra lo stesso valore per tutti e due
{
// prova...se non ha dati relativa mostra n/a - not available
/// <summary>
/// posizione macchina nella tabella
/// </summary>
protected string _locazione;
DateTime Ora = DateTime.Now;
protected DS_applicazione.AnagraficaStatiDataTable tabAnagStati;
valProd.Text = "1H: ";
string emptyVal = "n/a <br />";
int numPezzi = 0;
// prova l'ultima ora
try
{
// conto num pezzi e divido 1h/pezzi
numPezzi = DataLayerObj.taTempiCicloRilevati.getByMacchinaPeriodo(IdxMacchina, Ora.AddHours(-1), Ora).Rows.Count;
if (numPezzi > 0)
protected DS_ProdTempi.MappaStatoExplDataTable tabMSE;
#endregion Protected Fields
#region Protected Properties
/// <summary>
/// seriale associato alla macchina da controllare
/// </summary>
protected string _IdxMacchina
{
get
{
valProd.Text += String.Format("{0:#.00}m <br />", Math.Round((double)60 / numPezzi, 3));
return hfIdxMacchina.Value;
}
set
{
hfIdxMacchina.Value = value.Trim();
}
}
#endregion Protected Properties
#region Public Properties
/// <summary>
/// Idx della macchina controllata
/// </summary>
public string IdxMacchina
{
get
{
return _IdxMacchina;
}
set
{
if (resoconti.mngr == null)
{
resoconti.mngr = new resoconti();
}
_IdxMacchina = value;
_locazione = resoconti.mngr.locazioneDaIdx(_IdxMacchina);
updateMe();
}
}
/// <summary>
/// definisce se sia attivo il link della pagina
/// </summary>
public bool linkActive
{
get
{
return _linkActive;
}
set
{
_linkActive = value;
}
}
/// <summary>
/// stringa locazione macchina in tabella
/// </summary>
public string locazione
{
get
{
return _locazione;
}
set
{
if (resoconti.mngr == null)
{
resoconti.mngr = new resoconti();
}
_locazione = value;
try
{
_IdxMacchina = resoconti.mngr.idxDaLocazione(_locazione);
updateMe();
}
catch
{
_IdxMacchina = "nd";
}
}
}
#endregion Public Properties
#region Private Methods
/// <summary>
/// recupera i dati
/// </summary>
private void retrieveData()
{
// cerco se ho i dati in REDIS x non richiederli...
string hashKeyMSE = memLayer.ML.redHash("Tab:MSE:" + IdxMacchina);
string hashKeyAS = memLayer.ML.redHash("Tab:AnagStati");
string serVal = "";
if (memLayer.ML.redKeyPresent(hashKeyMSE))
//if (memLayer.ML.redHashPresent(hashKeyMSE))
{
serVal = memLayer.ML.getRSV(hashKeyMSE);
tabMSE = JsonConvert.DeserializeObject<DS_ProdTempi.MappaStatoExplDataTable>(serVal);
//tabMSE = (DS_ProdTempi.MappaStatoExplDataTable)memLayer.ML.deserializeVal(serVal);
serVal = memLayer.ML.getRSV(hashKeyAS);
tabAnagStati = JsonConvert.DeserializeObject<DS_applicazione.AnagraficaStatiDataTable>(serVal);
//tabAnagStati = (DS_applicazione.AnagraficaStatiDataTable)memLayer.ML.deserializeVal(serVal);
}
else
{
valProd.Text += emptyVal;
// altrimenti prendo da DB...
try
{
// popolazione tabelle
tabMSE = DataLayerObj.taMSE.getByIdxMacchina(IdxMacchina);
tabAnagStati = DataLayerObj.taAnagStati.GetData();
}
catch
{ }
// salvo su DB! dati principali x 30 secondi...
serVal = memLayer.ML.serializeVal(tabMSE);
memLayer.ML.setRSV(hashKeyMSE, serVal, 30);
// anche il resto...
serVal = memLayer.ML.serializeVal(tabAnagStati);
memLayer.ML.setRSV(hashKeyAS, serVal);
}
}
}
catch
{
valProd.Text += emptyVal;
}
// prova le ultime 8 ore
valProd.Text += "8H: ";
numPezzi = 0;
try
{
// conto num pezzi e divido 1h/pezzi
numPezzi = DataLayerObj.taTempiCicloRilevati.getByMacchinaPeriodo(IdxMacchina, Ora.AddHours(-8), Ora).Rows.Count;
if (numPezzi > 0)
/// <summary>
/// sistema hyperLink
/// </summary>
private void updateHL()
{
bool answ = false;
int minuti = memLayer.ML.CRI("keepAliveMin");
// controllo se il keep alive è oltre il termine...
DateTime lastKA = DateTime.Now.AddMinutes(-minuti);
if (_IdxMacchina != "nd")
{
valProd.Text += String.Format("{0:#.00}m ", Math.Round((double)480 / numPezzi, 3));
string nomeVar = string.Format("KeepAlive:{0}", _IdxMacchina);
string redKey = memLayer.ML.redHash(nomeVar);
var _lastKA = memLayer.ML.getRSV(redKey);
if (_lastKA == null)
{
answ = true;
//cerco su DB...
try
{
var tabDati = DataLayerObj.taKeepAlive.getByIdxMacchina(_IdxMacchina);
if (tabDati.Rows.Count > 0)
{
lastKA = tabDati[0].DataOraServer;
answ = (lastKA.AddMinutes(minuti) < DateTime.Now);
}
}
catch (Exception exc)
{
logger.lg.scriviLog($"Eccezione in updateHL per IdxMacchina {IdxMacchina} - locazione {locazione}{Environment.NewLine}{exc}", tipoLog.EXCEPTION);
}
}
}
hlComWarning.Visible = answ;
}
/// <summary>
/// aggiorna il layout grafico
/// </summary>
private void updateLayout()
{
if (_IdxMacchina != "nd")
{
try
{
// in base allo stato recupero il colore...
string codColore = resoconti.mngr.semaforoDaIdxStato(resoconti.mngr.statoMacchina(_IdxMacchina));
pnlMacchina.CssClass = codColore;
}
catch
{ }
}
}
/// <summary>
/// sistema il testo
/// </summary>
private void updateText()
{
if (!string.IsNullOrEmpty(_IdxMacchina) && _IdxMacchina != "nd")
{
// labels
lblCodArticolo.Text = "Art.";
lblStato.Text = "Stato";
lblProd.Text = "T.Ciclo"; // era OEE
lblDurata.Text = "Durata";
// 2018.02.05 cambio x fix nuovi impianti
// valMacchina.Text = tabMacchine.FindByIdxMacchina(IdxMacchina).Nome;
// valCodArticolo.Text = tabStatoMacchine.FindByIdxMacchina(IdxMacchina).CodArticolo;
// leggo valori da MSE...
valMacchina.Text = tabMSE[0].Nome;
valCodArticolo.Text = tabMSE[0].CodArticolo;
// carico ultimo stato che sia durato almeno 6 sec (0.1 min)
int idxStato = 0;
int oreTot = 0;
float minuti = 0;
try
{
DS_ProdTempi.stp_repDonati_getLastStatoDurataMacchinaRow rigaStato = DataLayerObj.taDatiStatoMacch.GetData(IdxMacchina, 0.1)[0];
idxStato = rigaStato.idxStato;
oreTot = Convert.ToInt32(Math.Floor(rigaStato.Minuti / 60));
minuti = (float)rigaStato.Minuti - 60 * oreTot;
}
catch
{
// 2018.02.05 cambio x fix nuovi impianti
//idxStato = tabStatoMacchine.FindByIdxMacchina(IdxMacchina).IdxStato;
//DateTime inizioStato = tabStatoMacchine.FindByIdxMacchina(IdxMacchina).InizioStato;
//DateTime ora = DateTime.Now;
//TimeSpan durata = ora.Subtract(inizioStato);
//oreTot = durata.Days * 24 + durata.Hours;
//minuti = durata.Minutes;
idxStato = tabMSE[0].idxStato;
oreTot = (int)tabMSE[0].durata / 60;
minuti = (int)tabMSE[0].durata - 60 * oreTot;
}
// 2018.02.05 cambio x fix nuovi impianti
//valStato.Text = tabAnagStati.FindByIdxStato(idxStato).Descrizione;
valStato.Text = tabMSE[0].DescrizioneStato;
valDurata.Text = string.Format("{0}h {1}min", oreTot, minuti);
// solo se in stato NON di run...
if (idxStato != 13)
{
lblCausale.Text = "Causale fermo";
string cauFermo = "nd";
try
{
cauFermo = tabAnagStati.FindByIdxStato(tabMSE[0].idxStato).Descrizione;
//cauFermo = tabAnagStati.FindByIdxStato(Convert.ToInt32(tabStatoMacchine.FindByIdxMacchina(IdxMacchina).IdxStato)).Descrizione;
}
catch
{
// 2018.02.05 cambio x fix nuovi impianti
//cauFermo = string.Format("IN: {0}", tabStatoMacchine.FindByIdxMacchina(IdxMacchina).Value);
cauFermo = string.Format("IN: {0}", tabMSE[0].idxStato);
}
valCausale.Text = cauFermo;
}
else
{
lblCausale.Text = "";
valCausale.Text = "";
}
// ATTENZIONE! dati generati casualmente, da cambiare in produzione!!!
bool demoRandom = false;
if (demoRandom)
{
// indico a caso % pz prodotti...
Random RandomClass = new Random(DateTime.Now.Millisecond);
if (idxStato == 13)
{
valProd.Text = string.Format("{0:P}", RandomClass.NextDouble() / 4 + 0.75);
}
else if (oreTot > 8)
{
valProd.Text = string.Format("{0:P}", 0);
}
else
{
valProd.Text = string.Format("{0:P}", RandomClass.NextDouble() / 2 + 0.25);
}
}
else // mostra lo stesso valore per tutti e due
{
// prova...se non ha dati relativa mostra n/a - not available
DateTime Ora = DateTime.Now;
valProd.Text = "1H: ";
string emptyVal = "n/a <br />";
int numPezzi = 0;
// prova l'ultima ora
try
{
// conto num pezzi e divido 1h/pezzi
numPezzi = DataLayerObj.taTempiCicloRilevati.getByMacchinaPeriodo(IdxMacchina, Ora.AddHours(-1), Ora).Rows.Count;
if (numPezzi > 0)
{
valProd.Text += String.Format("{0:#.00}m <br />", Math.Round((double)60 / numPezzi, 3));
}
else
{
valProd.Text += emptyVal;
}
}
catch
{
valProd.Text += emptyVal;
}
// prova le ultime 8 ore
valProd.Text += "8H: ";
numPezzi = 0;
try
{
// conto num pezzi e divido 1h/pezzi
numPezzi = DataLayerObj.taTempiCicloRilevati.getByMacchinaPeriodo(IdxMacchina, Ora.AddHours(-8), Ora).Rows.Count;
if (numPezzi > 0)
{
valProd.Text += String.Format("{0:#.00}m ", Math.Round((double)480 / numPezzi, 3));
}
else
{
valProd.Text += emptyVal;
}
}
catch
{
valProd.Text += emptyVal;
}
}
}
}
#endregion Private Methods
#region Protected Methods
/// <summary>
/// rimanda alla pagina di dettaglio della macchina scelta
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void lnkMacchina_Click(object sender, EventArgs e)
{
if (linkActive)
{
memLayer.ML.setSessionVal("IdxMacchina", IdxMacchina);
Response.Redirect(string.Format("~/DettaglioMacchina?IdxMacchina={0}", IdxMacchina));
}
}
/// <summary>
/// caricamento pagina
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load(object sender, EventArgs e)
{
//updateMe();
}
/// <summary>
/// metto a posto l'immagine
/// </summary>
protected void updateImg()
{
string urlMacchina;
if (_IdxMacchina != "nd")
{
urlMacchina = $"~/images/macchine/{resoconti.mngr.urlMacchina(IdxMacchina)}";
if (urlMacchina == "thumb_")
{
urlMacchina = "~/images/empty.png";
}
else
{
imgThumb.ToolTip = resoconti.mngr.nomeMacchina(IdxMacchina);
}
string fullPath = Server.MapPath(urlMacchina);
if (!File.Exists(fullPath))
{
// metto default Steamware
urlMacchina = "~/images/macchine/Steamware.png";
}
imgThumb.ImageUrl = urlMacchina;
}
else
{
valProd.Text += emptyVal;
urlMacchina = "~/images/empty.png";
imgThumb.ImageUrl = urlMacchina;
}
}
catch
{
valProd.Text += emptyVal;
}
}
}
}
/// <summary>
/// rimanda alla pagina di dettaglio della macchina scelta
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void lnkMacchina_Click(object sender, EventArgs e)
{
if (linkActive)
{
memLayer.ML.setSessionVal("IdxMacchina", IdxMacchina);
Response.Redirect(string.Format("~/DettaglioMacchina?IdxMacchina={0}", IdxMacchina));
}
}
/// <summary>
/// aggiorna il layout grafico
/// </summary>
private void updateLayout()
{
if (_IdxMacchina != "nd")
{
try
#endregion Protected Methods
#region Public Methods
/// <summary>
/// aggiorna controllo
/// </summary>
public void updateMe()
{
// in base allo stato recupero il colore...
string codColore = resoconti.mngr.semaforoDaIdxStato(resoconti.mngr.statoMacchina(_IdxMacchina));
pnlMacchina.CssClass = codColore;
}
catch
{ }
}
}
/// <summary>
/// sistema hyperLink
/// </summary>
private void updateHL()
{
bool answ = false;
int minuti = memLayer.ML.CRI("keepAliveMin");
// controllo se il keep alive è oltre il termine...
DateTime lastKA = DateTime.Now.AddMinutes(-minuti);
if (_IdxMacchina != "nd")
{
string nomeVar = string.Format("KeepAlive:{0}", _IdxMacchina);
string redKey = memLayer.ML.redHash(nomeVar);
var _lastKA = memLayer.ML.getRSV(redKey);
if (_lastKA == null)
{
answ = true;
//cerco su DB...
try
{
var tabDati = DataLayerObj.taKeepAlive.getByIdxMacchina(_IdxMacchina);
if (tabDati.Rows.Count > 0)
//SE E SOLO SE ho una macchina e/o locazione...
if (!string.IsNullOrEmpty(IdxMacchina) && !IdxMacchina.Contains("#") && (locazione != "00"))
{
lastKA = tabDati[0].DataOraServer;
answ = (lastKA.AddMinutes(minuti) < DateTime.Now);
// effettua update visualizzazione
try
{
retrieveData();
updateLayout();
updateText();
updateImg();
updateHL();
// controllo se link attivo...
if (!_linkActive)
{
valMacchina.Enabled = false;
}
//logger.lg.scriviLog(string.Format("Retrieve: {0}", DateTime.Now.Subtract(tick).Milliseconds), tipoLog.INFO);
divSegnaposto.Visible = false;
}
catch (Exception exc)
{
logger.lg.scriviLog($"Eccezione in fase popolamento statoMacchina per IdxMacchina {IdxMacchina} - locazione {locazione}{Environment.NewLine}{exc}", tipoLog.EXCEPTION);
}
}
else
{
pnlMacchina.Visible = false;
}
}
catch (Exception exc)
{
logger.lg.scriviLog($"Eccezione in updateHL per IdxMacchina {IdxMacchina} - locazione {locazione}{Environment.NewLine}{exc}", tipoLog.EXCEPTION);
}
}
}
hlComWarning.Visible = answ;
}
/// <summary>
/// metto a posto l'immagine
/// </summary>
protected void updateImg()
{
string urlMacchina;
if (_IdxMacchina != "nd")
{
urlMacchina = $"~/images/macchine/{resoconti.mngr.urlMacchina(IdxMacchina)}";
if (urlMacchina == "thumb_")
{
urlMacchina = "~/images/empty.png";
}
else
{
imgThumb.ToolTip = resoconti.mngr.nomeMacchina(IdxMacchina);
}
imgThumb.ImageUrl = urlMacchina;
}
else
{
urlMacchina = "~/images/empty.png";
imgThumb.ImageUrl = urlMacchina;
}
}
#endregion
#region area public
/// <summary>
/// Idx della macchina controllata
/// </summary>
public string IdxMacchina
{
get
{
return _IdxMacchina;
}
set
{
if (resoconti.mngr == null)
{
resoconti.mngr = new resoconti();
}
_IdxMacchina = value;
_locazione = resoconti.mngr.locazioneDaIdx(_IdxMacchina);
updateMe();
}
#endregion Public Methods
}
/// <summary>
/// stringa locazione macchina in tabella
/// </summary>
public string locazione
{
get
{
return _locazione;
}
set
{
if (resoconti.mngr == null)
{
resoconti.mngr = new resoconti();
}
_locazione = value;
try
{
_IdxMacchina = resoconti.mngr.idxDaLocazione(_locazione);
updateMe();
}
catch
{
_IdxMacchina = "nd";
}
}
}
/// <summary>
/// definisce se sia attivo il link della pagina
/// </summary>
public bool linkActive
{
get
{
return _linkActive;
}
set
{
_linkActive = value;
}
}
#endregion
}
}