using global::Microsoft.AspNetCore.Components; namespace MP_TAB3.Components { public partial class ProdAdvDispl { #region Public Properties /// /// Conteggio dati produzione da mostrare /// [Parameter] public ProdCounter CountData { get; set; } = null!; #endregion Public Properties #region Public Classes /// /// Classe gesitone conteggi produzione /// public class ProdCounter { #region Public Properties /// /// NUmero pezzi CONFERMATI /// public int numPzConf { get; set; } = 0; /// /// Numero pezzi ORDINATI /// public int numPzOrd { get; set; } = 0; /// /// Numero pezzi PRODOTTI /// public int numPzProd { get; set; } = 0; #endregion Public Properties } #endregion Public Classes #region Protected Fields protected int nBlue = 0; protected int nGray = 0; protected int nGreen = 0; protected int nYellow = 0; #endregion Protected Fields #region Protected Properties /// /// Numero pezzi per display BLU /// protected int NumBlue { get; set; } = 0; /// /// Numero pezzi per display GRIGIO /// protected int NumGray { get; set; } = 40; /// /// Numero pezzi per display VERDE /// protected int NumGreen { get; set; } = 20; /// /// Numero pezzi CONFERMATI /// protected int NumPzConf { get; set; } = 0; /// /// Numero pezzi ORDINATI /// protected int NumPzOrd { get; set; } = 0; /// /// Numero pezzi PRODOTTI /// protected int NumPzProd { get; set; } = 0; /// /// Numero pezzi per display GIALLO /// protected int NumYellow { get; set; } = 30; #endregion Protected Properties #region Protected Methods protected override void OnParametersSet() { decimal denom = (decimal)CountData.numPzOrd / 100; //CountData.numPzProd > CountData.numPzOrd ? (decimal)CountData.numPzProd / 100 : (decimal)CountData.numPzOrd / 100; denom = denom == 0 ? 1 : denom; // calcolo se sono nel caso prod < ordinati o se sono andato OVER if (CountData.numPzProd <= CountData.numPzOrd) { nGreen = (int)Math.Floor((decimal)CountData.numPzConf / denom); nYellow = (int)Math.Floor((decimal)(CountData.numPzProd - CountData.numPzConf) / denom); nGray = 100 - (nGreen + nYellow); nBlue = 0; } else { // green: confermati verdi nGreen = (int)Math.Floor((decimal)CountData.numPzConf / denom); // gialli: extra prodotti fino a 100... if (CountData.numPzProd < CountData.numPzOrd) { nYellow = (int)Math.Floor((decimal)(CountData.numPzProd - CountData.numPzConf) / denom); } else { nYellow = 100 - nGreen; } // blu: quanti sono "extra" e da confermare nBlue = (int)Math.Floor((decimal)(CountData.numPzProd - CountData.numPzOrd) / denom); nGray = 0; } // disegno! NumGreen = nGreen; NumYellow = nYellow; NumGray = nGray; NumBlue = nBlue; // base.OnParametersSet(); } #endregion Protected Methods } }