iniziato porting mappa stato seq NUOVO

This commit is contained in:
Samuele E. Locatelli
2018-06-07 19:00:06 +02:00
parent 1436dbb68a
commit 5a6be10b9c
8 changed files with 193 additions and 135 deletions
+5 -2
View File
@@ -1,6 +1,7 @@
<%@ Page Title="Mappa Sequencer" Language="C#" MasterPageFile="~/WebMasterPages/MAPO_refresh30.master" AutoEventWireup="true" CodeBehind="MappaStatoSeq.aspx.cs" Inherits="MoonPro.MappaStatoSeq" Async="true" %>
<%@ Register Src="~/WebUserControls/mod_sequencerStati.ascx" TagPrefix="uc1" TagName="mod_sequencerStati" %>
<%@ Register Src="~/WebUserControls/mod_sequencerStatiJS.ascx" TagPrefix="uc1" TagName="mod_sequencerStatiJS" %>
<%@ Register Src="~/WebUserControls/mod_mainMap.ascx" TagPrefix="uc1" TagName="mod_mainMap" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
@@ -18,7 +19,9 @@
</div>
<uc1:mod_mainMap runat="server" ID="mod_mainMap" />
</div>
<asp:Repeater ID="repSeq" runat="server" OnItemDataBound="repSeq_ItemDataBound" DataSourceID="odsMappa">
<uc1:mod_sequencerStatiJS runat="server" ID="mod_sequencerStatiJS2" periodo='<%# intervalloAnalisi %>' idxMacchina="0" numSplit="1000" />
<%--<asp:Repeater ID="repSeq" runat="server" OnItemDataBound="repSeq_ItemDataBound" DataSourceID="odsMappa">
<ItemTemplate>
<div style="float: left; clear: both; font-size: 0.8em; width: 70px; height: 36px; margin: 2px 0px; padding: 2px 4px; text-align: center;" class='<%# cssStatoMacchina(Eval("idxMacchina").ToString()) %>'>
<asp:LinkButton ID="lnkMacchina" runat="server" OnClick="lnkMacchina_Click" CommandArgument='<%# Eval("idxMacchina") %>'>
@@ -28,7 +31,7 @@
</div>
</ItemTemplate>
</asp:Repeater>
<asp:ObjectDataSource ID="odsMappa" runat="server" OldValuesParameterFormatString="original_{0}" SelectMethod="GetData" TypeName="MapoDb.DS_applicazioneTableAdapters.StatoMacchineTableAdapter" FilterExpression="NOT idxMacchina LIKE '%#%'"></asp:ObjectDataSource>
<asp:ObjectDataSource ID="odsMappa" runat="server" OldValuesParameterFormatString="original_{0}" SelectMethod="GetData" TypeName="MapoDb.DS_applicazioneTableAdapters.StatoMacchineTableAdapter" FilterExpression="NOT idxMacchina LIKE '%#%'"></asp:ObjectDataSource>--%>
<div style="text-align: center; margin: auto; padding: 5px; clear: both;">
<asp:Button ID="btnReload" runat="server" Text="FORZA CARICAMENTO DATI" OnClick="btnReload_Click" Font-Size="1.3em" Width="20em" />
</div>
+113 -109
View File
@@ -7,119 +7,123 @@ using System.Web.UI.WebControls;
namespace MoonPro
{
public partial class MappaStatoSeq : System.Web.UI.Page
public partial class MappaStatoSeq : System.Web.UI.Page
{
public resoconti _resoconti;
public int numGg
{
public resoconti _resoconti;
public int numGg
get
{
int answ = 1;
try
{
get
{
int answ = 1;
try
{
answ = Convert.ToInt32(ddlNumgg.SelectedValue);
}
catch
{
answ = 1;
}
return answ;
}
answ = Convert.ToInt32(ddlNumgg.SelectedValue);
}
public intervalloDate intervalloAnalisi
catch
{
get
{
intervalloDate answ = new intervalloDate();
answ.fine = DateTime.Now;
answ.inizio = answ.fine.AddDays(-numGg);
return answ;
}
}
protected DS_applicazione.MacchineDataTable tabMacchine;
protected void Page_Load(object sender, EventArgs e)
{
_resoconti = new resoconti();
tabMacchine = MapoDb.DataLayer.obj.taMacchine.GetData();
if (!Page.IsPostBack)
{
ddlNumgg.DataBind();
ddlNumgg.SelectedValue = memLayer.ML.confReadString("seq_gg");
}
if (memLayer.ML.BoolSessionObj("graphDataRefresh"))
{
repSeq.DataBind();
}
}
protected void repSeq_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
mod_sequencerStati sequencer = (mod_sequencerStati)e.Item.FindControl("seqStato");
sequencer.larghezza = memLayer.ML.IntSessionObj("WindowWidth") - 100;
sequencer.graphHeight = memLayer.ML.confReadInt("seq_height");
sequencer.numSplit = memLayer.ML.confReadInt("seq_numSpl");
try
{
sequencer.datiSequencer = _resoconti.sequenzaDati(sequencer.identificativo, intervalloAnalisi);
sequencer.doUpdate();
sequencer.Visible = true;
}
catch
{
sequencer.Visible = false;
}
}
protected void lnkCambiaModo_Click(object sender, EventArgs e)
{
// passa alla pagina richiesta...
LinkButton lb = (LinkButton)sender;
Response.Redirect(lb.CommandArgument);
}
protected void ddlNumgg_SelectedIndexChanged(object sender, EventArgs e)
{
repSeq.DataBind();
}
/// <summary>
/// recupera nome macchina da idx
/// </summary>
/// <param name="idxMacchina"></param>
/// <returns></returns>
public string nomeMacchina(string idxMacchina)
{
string answ = "...";
answ = tabMacchine.FindByIdxMacchina(idxMacchina).Nome;
return answ;
}
/// <summary>
/// recupera stato macchina da idx
/// </summary>
/// <param name="idxMacchina"></param>
/// <returns></returns>
public string cssStatoMacchina(string idxMacchina)
{
string answ = "...";
string codColore = resoconti.mngr.semaforoDaIdxStato(resoconti.mngr.statoMacchina(idxMacchina));
answ = codColore;
return answ;
}
/// <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)
{
LinkButton lb = (LinkButton)sender;
Session["IdxMacchina"] = lb.CommandArgument;
Response.Redirect("~/DettaglioMacchina.aspx");
}
protected void btnReload_Click(object sender, EventArgs e)
{
repSeq.DataBind();
answ = 1;
}
return answ;
}
}
public intervalloDate intervalloAnalisi
{
get
{
intervalloDate answ = new intervalloDate();
answ.fine = DateTime.Now;
answ.inizio = answ.fine.AddDays(-numGg);
return answ;
}
}
protected DS_applicazione.MacchineDataTable tabMacchine;
protected void Page_Load(object sender, EventArgs e)
{
//_resoconti = new resoconti();
//tabMacchine = MapoDb.DataLayer.obj.taMacchine.GetData();
if (!Page.IsPostBack)
{
ddlNumgg.DataBind();
ddlNumgg.SelectedValue = memLayer.ML.confReadString("seq_gg");
}
//if (memLayer.ML.BoolSessionObj("graphDataRefresh"))
//{
// repSeq.DataBind();
//}
}
protected void repSeq_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
mod_sequencerStati sequencer = (mod_sequencerStati)e.Item.FindControl("seqStato");
sequencer.larghezza = memLayer.ML.IntSessionObj("WindowWidth") - 100;
sequencer.graphHeight = memLayer.ML.confReadInt("seq_height");
sequencer.numSplit = memLayer.ML.confReadInt("seq_numSpl");
try
{
sequencer.datiSequencer = _resoconti.sequenzaDati(sequencer.identificativo, intervalloAnalisi);
sequencer.doUpdate();
sequencer.Visible = true;
}
catch
{
sequencer.Visible = false;
}
}
protected void lnkCambiaModo_Click(object sender, EventArgs e)
{
// passa alla pagina richiesta...
LinkButton lb = (LinkButton)sender;
Response.Redirect(lb.CommandArgument);
}
protected void ddlNumgg_SelectedIndexChanged(object sender, EventArgs e)
{
#if false
repSeq.DataBind();
#endif
}
/// <summary>
/// recupera nome macchina da idx
/// </summary>
/// <param name="idxMacchina"></param>
/// <returns></returns>
public string nomeMacchina(string idxMacchina)
{
string answ = "...";
answ = tabMacchine.FindByIdxMacchina(idxMacchina).Nome;
return answ;
}
/// <summary>
/// recupera stato macchina da idx
/// </summary>
/// <param name="idxMacchina"></param>
/// <returns></returns>
public string cssStatoMacchina(string idxMacchina)
{
string answ = "...";
string codColore = resoconti.mngr.semaforoDaIdxStato(resoconti.mngr.statoMacchina(idxMacchina));
answ = codColore;
return answ;
}
/// <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)
{
LinkButton lb = (LinkButton)sender;
Session["IdxMacchina"] = lb.CommandArgument;
Response.Redirect("~/DettaglioMacchina.aspx");
}
protected void btnReload_Click(object sender, EventArgs e)
{
#if false
repSeq.DataBind();
#endif
}
}
}
+2 -11
View File
@@ -49,22 +49,13 @@ namespace MoonPro {
protected global::MoonPro.WebUserControls.mod_mainMap mod_mainMap;
/// <summary>
/// Controllo repSeq.
/// Controllo mod_sequencerStatiJS2.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// </remarks>
protected global::System.Web.UI.WebControls.Repeater repSeq;
/// <summary>
/// Controllo odsMappa.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// </remarks>
protected global::System.Web.UI.WebControls.ObjectDataSource odsMappa;
protected global::MoonPro.WebUserControls.mod_sequencerStatiJS mod_sequencerStatiJS2;
/// <summary>
/// Controllo btnReload.
+14 -3
View File
@@ -119,17 +119,28 @@ namespace MoonPro.WS
// recupero ITEMS
List<visjsDsItem> tlSerie;
{
resoconti _resoconti = new resoconti();
resoconti _resoconti = new resoconti();
intervalloDate intervallo = new intervalloDate();
intervallo.fine = Convert.ToDateTime(dataTo);
intervallo.inizio = Convert.ToDateTime(dataFrom);
intervallo.inizio = Convert.ToDateTime(dataFrom);
tlSerie = _resoconti.sequenzaDatiVisJS(idxMacch, intervallo, numSplit);
}
// opzioni!
visjsDsOptions opzioni = new visjsDsOptions
{
stack = false,
horizontalScroll = true,
moveable = true,
zoomable = true,
start = dataFrom,
end = dataTo
};
// unisco oggetti
timelineVisJs fullData = new timelineVisJs
{
Groups = tlGroups,
Items = tlSerie
Items = tlSerie,
Options = opzioni
};
answ = js.Serialize(fullData);
// salvo in sessione l'oggetto... secondo durata impostata in web.config..
@@ -52,7 +52,7 @@
, end: '2018-05-30'
};
// Crea la Timeline
var timeline = new vis.Timeline(container, tlData.Items, tlData.Groups, options);
var timeline = new vis.Timeline(container, tlData.Items, tlData.Groups, tlData.Options);
}
</script>
@@ -30,6 +30,26 @@ namespace MoonPro.WebUserControls
}
}
/// <summary>
/// Idx macchina da plottare
/// </summary>
public intervalloDate periodo
{
get
{
intervalloDate answ = new intervalloDate
{
inizio = Convert.ToDateTime(DataFrom),
fine = Convert.ToDateTime(DataTo)
};
return answ;
}
set
{
DataFrom = value.inizio.ToString("yyyy-MM-dd");
DataTo = value.fine.ToString("yyyy-MM-dd");
}
}
/// <summary>
/// Num split massimo di segmenti da plottare
/// </summary>
public string numSplit
+3 -7
View File
@@ -9,7 +9,7 @@
<uc1:mod_realtimeClock ID="mod_realtimeClock1" runat="server" />
<%--<div id="timelineArea"></div>--%>
<div id="tcArea"></div>
<%--<div id="tcArea"></div>
<script type="text/javascript">
// vedere: http://visjs.org/docs/timeline/
@@ -112,10 +112,6 @@
// crea lo scatter dei TC
var scatter = new vis.Graph2d(container, dataset, options);
}
</script>
<uc1:mod_sequencerStatiJS runat="server" ID="mod_sequencerStatiJS2" DataFrom="2018-05-01" DataTo="2018-05-30" idxMacchina="0" numSplit="2000" />
<%--<uc1:mod_sequencerStatiJS runat="server" ID="mod_sequencerStatiJS0" DataFrom="2018-05-01" DataTo="2018-05-30" idxMacchina="3001" numSplit="2000" />
<uc1:mod_sequencerStatiJS runat="server" ID="mod_sequencerStatiJS1" DataFrom="2018-05-01" DataTo="2018-05-30" idxMacchina="3002" numSplit="2000" />
<uc1:mod_sequencerStatiJS runat="server" ID="mod_sequencerStatiJS2" DataFrom="2018-05-01" DataTo="2018-05-30" idxMacchina="3003" numSplit="2000" />
<uc1:mod_sequencerStatiJS runat="server" ID="mod_sequencerStatiJS3" DataFrom="2018-05-01" DataTo="2018-05-30" idxMacchina="3004" NumSplit="2000" />--%>
</script>--%>
<uc1:mod_sequencerStatiJS runat="server" ID="mod_sequencerStatiJS2" DataFrom="2018-05-01" DataTo="2018-06-06" idxMacchina="0" numSplit="1000" />
</asp:Content>
+35 -2
View File
@@ -909,7 +909,36 @@ public class visjsDsGroups
/// </summary>
public string className;
}
/// <summary>
/// Groups Dataset di vis.js
/// </summary>
public class visjsDsOptions
{
/// <summary>
/// Indica se debba salvare come stacked i valori (false = in linea x gruppo)
/// </summary>
public bool stack;
/// <summary>
/// Abilita scroll orizzontale
/// </summary>
public bool horizontalScroll;
/// <summary>
/// Abilita spostamento
/// </summary>
public bool moveable;
/// <summary>
/// Abilita zoom
/// </summary>
public bool zoomable;
/// <summary>
/// Data Start
/// </summary>
public string start;
/// <summary>
/// Data End
/// </summary>
public string end;
}
/// <summary>
/// Oggetto timeline vis.js con gruppi + items
/// </summary>
@@ -920,7 +949,11 @@ public class timelineVisJs
/// </summary>
public List<visjsDsGroups> Groups;
/// <summary>
/// Items
/// Valori
/// </summary>
public List<visjsDsItem> Items;
/// <summary>
/// Opzioni
/// </summary>
public visjsDsOptions Options;
}