ok calcolo e riduzione MA errori con CSS

This commit is contained in:
Samuele E. Locatelli
2018-06-04 18:01:49 +02:00
parent e41b203fdc
commit 63e0a7137a
11 changed files with 2155 additions and 2023 deletions
+5
View File
@@ -204,6 +204,7 @@ body {
width: 100%;
height: 100%;
background-color: #009036;
background-image: url(../images/verde.png);
color: Yellow;
}
.sGi {
@@ -211,18 +212,21 @@ body {
width: 100%;
height: 100%;
background-color: #ffec00;
background-image: url(../images/giallo.png);
}
.sRo {
text-align: left;
width: 100%;
height: 100%;
background-color: #e2001a;
background-image: url(../images/rosso.png);
}
.sBl {
text-align: left;
width: 100%;
height: 100%;
background-color: #3690FF;
background-image: url(../images/blu.png);
color: Yellow;
}
.sGr {
@@ -230,6 +234,7 @@ body {
width: 100%;
height: 100%;
background-color: #bcbcbc;
background-image: url(../images/grigio.png);
}
.statoMacchine {
font-size: 10pt;
+2003 -2008
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
+2 -2
View File
@@ -72,7 +72,7 @@ namespace MoonPro.WS
[WebMethod]
[ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
public void seqStati(string idxMacch, string dataFrom, string dataTo)
public void seqStati(string idxMacch, string dataFrom, string dataTo, int numSplit)
{
JavaScriptSerializer js = new JavaScriptSerializer();
Context.Response.Clear();
@@ -87,7 +87,7 @@ namespace MoonPro.WS
intervallo.fine = Convert.ToDateTime(dataTo);
intervallo.inizio = Convert.ToDateTime(dataFrom);
tlSerie = _resoconti.sequenzaDatiVisJS(idxMacch, intervallo);
tlSerie = _resoconti.sequenzaDatiVisJS(idxMacch, intervallo, numSplit);
int i = 0;
items = new visjsDsItem[tlSerie.Count];
foreach (var recSeq in tlSerie)
@@ -1,6 +1,7 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="mod_sequencerStatiJS.ascx.cs" Inherits="MoonPro.WebUserControls.mod_sequencerStatiJS" %>
<div id="tlArea"></div>
<asp:HiddenField runat="server" ID="hfNumSplit" />
<asp:HiddenField runat="server" ID="hfIdxMacc" />
<asp:HiddenField runat="server" ID="hfDataFrom" />
<asp:HiddenField runat="server" ID="hfDataTo" />
@@ -13,6 +14,7 @@
// (ri)caricamento dati
function reloadData() {
// recupero valori hidden...
var numSplit = document.getElementById('<%=hfNumSplit.UniqueID.Replace("ctl00$","").Replace("$","_") %>').value;
var idxMacc = document.getElementById('<%=hfIdxMacc.UniqueID.Replace("ctl00$","").Replace("$","_") %>').value;
var dataFrom = document.getElementById('<%=hfDataFrom.UniqueID.Replace("ctl00$","").Replace("$","_") %>').value;
var dataTo = document.getElementById('<%=hfDataTo.UniqueID.Replace("ctl00$","").Replace("$","_") %>').value;
@@ -20,7 +22,7 @@
// load e draw timeline
$.ajax({
type: "GET",
url: "/WS/MPData.asmx/seqStati?idxMacch=" + idxMacc + "&dataFrom='" + dataFrom + "'&dataTo='" + dataTo+"'",
url: "/WS/MPData.asmx/seqStati?idxMacch=" + idxMacc + "&dataFrom='" + dataFrom + "'&dataTo='" + dataTo+"'&numSPlit=" + numSplit,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: plotSeqStati,
@@ -30,6 +30,20 @@ namespace MoonPro.WebUserControls
}
}
/// <summary>
/// Num split massimo di segmenti da plottare
/// </summary>
public string numSplit
{
get
{
return hfNumSplit.Value;
}
set
{
hfNumSplit.Value = value;
}
}
/// <summary>
/// Inizio periodo, formato yyyyMMdd
/// </summary>
public string DataFrom
@@ -12,6 +12,15 @@ namespace MoonPro.WebUserControls {
public partial class mod_sequencerStatiJS {
/// <summary>
/// Controllo hfNumSplit.
/// </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.HiddenField hfNumSplit;
/// <summary>
/// Controllo hfIdxMacc.
/// </summary>
Binary file not shown.

After

Width:  |  Height:  |  Size: 352 B

+1 -1
View File
@@ -111,5 +111,5 @@
var scatter = new vis.Graph2d(container, dataset, options);
}
</script>
<uc1:mod_sequencerStatiJS runat="server" ID="mod_sequencerStatiJS" DataFrom="2018-05-15" DataTo="2018-05-15 10:00" idxMacchina="3001" />
<uc1:mod_sequencerStatiJS runat="server" ID="mod_sequencerStatiJS" DataFrom="2018-05-23" DataTo="2018-05-30" idxMacchina="3001" NumSplit="5000" />
</asp:Content>
+116 -9
View File
@@ -541,8 +541,9 @@ public class resoconti
/// </summary>
/// <param name="idxMacchina">IdxMacchina</param>
/// <param name="_intervallo"></param>
/// <param name="numSplit">num massimo segmenti da restituire</param>
/// <returns></returns>
public List<visjsDsItem> sequenzaDatiVisJS(string idxMacchina, intervalloDate _intervallo)
public List<visjsDsItem> sequenzaDatiVisJS(string idxMacchina, intervalloDate _intervallo, int numSplit)
{
DateTime start = DateTime.Now;
// leggo i dati e costituisco una collezione...
@@ -551,10 +552,15 @@ public class resoconti
if (idxMacchina != null && idxMacchina != "")
{
// seleziono i dati...
MapoDb.DS_applicazione.DiarioDiBordoDataTable tabSeq = taDiarioDiBordo.GetSequenza(idxMacchina, _intervallo.inizio, _intervallo.fine);
// faccio la riduzione dei dati, MAX 1000...
DS_applicazione.DiarioDiBordoDataTable tabSeq = taDiarioDiBordo.GetSequenza(idxMacchina, _intervallo.inizio, _intervallo.fine);
// se ho troppi dati faccio la riduzione dei dati, MAX numSplit...
if (tabSeq.Rows.Count > numSplit)
{
double sogliaMin = _intervallo.fine.Subtract(_intervallo.inizio).TotalMinutes / numSplit;
tabSeq = riduciSeq(tabSeq, sogliaMin);
}
// ora converto in oggetto definitivo x vis.js
sequenza = tabSeq.AsEnumerable().Select(riga => new visjsDsItem
{
//id = i,
@@ -563,7 +569,7 @@ public class resoconti
end = riga.FineStato.ToString("yyyy-MM-dd HH:mm:ss"),
group = "1", // per mostrare multi macchine
type = "background", // importante x non vedere bordi...
className = semaforoDaIdxStato(riga.IdxStato).Substring(0,2).ToLower()
className = semaforoDaIdxStato(riga.IdxStato)
}).ToList();
foreach (var item in sequenza)
@@ -572,7 +578,6 @@ public class resoconti
item.id = i;
i++;
}
#if false
// faccio trim x primo evento...
if (_sequenza[0].start < _intervallo.inizio)
@@ -584,12 +589,114 @@ public class resoconti
int numValori = _sequenza.serieDati.Count - 1;
_sequenza.serieDati[numValori].valore = _intervallo.fine.Subtract(_sequenza.serieDati[numValori].timeData).TotalMinutes;
#endif
}
if (sequenza.Count > numSplit) sequenza.RemoveRange(0, sequenza.Count - numSplit);
return sequenza;
//return _sequenza;
}
/// <summary>
/// Effettua riduzione per accorpamento valori
/// </summary>
/// <param name="original"></param>
/// <returns></returns>
protected DS_applicazione.DiarioDiBordoDataTable riduciSeq(DS_applicazione.DiarioDiBordoDataTable original, double sogliaMin)
{
DS_applicazione.DiarioDiBordoDataTable copia = new DS_applicazione.DiarioDiBordoDataTable();
//DS_applicazione.DiarioDiBordoRow currRow;
// valori x setup
double minVerde = 0.5;
double minRosso = 0.5;
double minSpento = 0.5;
double valRigaCum = 0.0;
double valR = 0.0;
double valG = 0.0;
double valV = 0.0;
double valB = 0.0;
double valS = 0.0;
DateTime _t_0 = new DateTime(9999, 1, 1);
string _mostCodArticolo = "";
int _maxVal = 0;
string colore;
foreach (var riga in original)
{
// salvo prima data...
if (riga.InizioStato < _t_0)
{
_t_0 = riga.InizioStato;
}
if (riga.DurataMinuti > _maxVal)
{
_maxVal = Convert.ToInt32(riga.DurataMinuti);
_mostCodArticolo = riga.CodArticolo;
}
valRigaCum = valRigaCum + riga.DurataMinuti;
// accumulo valori...
switch (semaforoDaIdxStato(riga.IdxStato))
{
case "sVe":
valV = valV + riga.DurataMinuti;
break;
case "sGi":
valG = valG + riga.DurataMinuti;
break;
case "sRo":
valR = valR + riga.DurataMinuti;
break;
case "sBl":
valB = valB + riga.DurataMinuti;
break;
case "sGr":
valS = valS + riga.DurataMinuti;
break;
}
// se è maggiore plotto...
if (valRigaCum >= sogliaMin)
{
// determino il colore...
if (valV / valRigaCum >= minVerde)
{
colore = "sVe";
valV = 0.0;
}
else if (valR / valRigaCum >= minRosso)
{
colore = "sRo";
valR = 0.0;
}
else if (valS / valRigaCum >= minSpento)
{
colore = "sGr";
valS = 0.0;
}
else if (valB / valRigaCum >= minSpento)
{
colore = "sBl";
valB = 0.0;
}
else
{
colore = "sGi";
valG = 0.0;
}
// modifico riga corrente...
riga.DurataMinuti = valRigaCum;
riga.CodArticolo = _mostCodArticolo;
//riga.InizioStato = _t_0;
copia.ImportRow(riga);
// modifico inizio stato...
((DS_applicazione.DiarioDiBordoRow)copia.Rows[copia.Rows.Count -1]).InizioStato = _t_0;
// reset dei contatori...
valRigaCum = 0.0;
_t_0 = new DateTime(9999, 1, 1);
_mostCodArticolo = "";
_maxVal = 0;
}
}
// restituisco valori "ridotti"
return copia;
}
/// <summary>
/// oggetto sequenza tempi ciclo x visualizzatore
/// </summary>