ok calcolo e riduzione MA errori con CSS
This commit is contained in:
@@ -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
File diff suppressed because it is too large
Load Diff
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
@@ -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
@@ -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
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user