using UnityEngine; using TMPro; using UnityEngine.UI; using CHN; using System; using System.Globalization; using WI; public class Panel_DetailDashBoard : PanelBase { #region TextMeshProUGUI private TextMeshProUGUI MachineName; private TextMeshProUGUI wordno; private TextMeshProUGUI sttm; private TextMeshProUGUI totm; private TextMeshProUGUI workseq; private TextMeshProUGUI daynight; private TextMeshProUGUI statusnm; private TextMeshProUGUI workcd; private TextMeshProUGUI itemcd; private TextMeshProUGUI itemdesc; private TextMeshProUGUI pjtcd; private TextMeshProUGUI matcd; private TextMeshProUGUI cavity; private TextMeshProUGUI cycletime; private TextMeshProUGUI moldData; private TextMeshProUGUI eorate; private TextMeshProUGUI workdt; private TextMeshProUGUI planqty; private TextMeshProUGUI goalqty; private TextMeshProUGUI workqty; private TextMeshProUGUI goodqty; private TextMeshProUGUI badqty; private TextMeshProUGUI badrate; private TextMeshProUGUI efficiency; private TextMeshProUGUI progressrate; private TextMeshProUGUI porate; private TextMeshProUGUI goodqtyrate; #endregion #region Slider private Slider Slider_eorate; private Slider Slider_planqty; private Slider Slider_goalqty; private Slider Slider_workqty; private Slider Slider_goodqty; private Slider Slider_badqty; private Slider Slider_badrate; private Slider Slider_efficiency; private Slider Slider_progressrate; private Slider Slider_porate; private Slider Slider_goodqtyrate; #endregion private Button Button_Close; public Action onCloseDashboard; public override void AfterAwake() { Button_Close.onClick.AddListener(OnClickCloseButton); gameObject.SetActive(false); } private void OnClickCloseButton() { onCloseDashboard?.Invoke(); gameObject.SetActive(false); } public void SetDetailDashBoardData(SimpleField data) { var canvas_popup = FindSingle(); if (canvas_popup.isSimpleDashboardAcitve) return; gameObject.SetActive(true); SetTextData(data); SetSliderData(data); } private void SetTextData(SimpleField data) { MachineName.SetText(SetTextData(data.machineInfo.worknm)); wordno.SetText(SetTextData(data.machineInfo.wordno)); sttm.SetText(CorrectionTime(data.machineInfo.sttm, "hh:mm")); totm.SetText(CorrectionTime(data.machineInfo.totm, "hh:mm")); daynight.SetText(SetTextData(data.machineInfo.daynight)); workseq.SetText(SetTextData(data.machineInfo.workseq)); statusnm.SetText(SetTextData(data.machineInfo.statusnm)); workcd.SetText(SetTextData(data.machineInfo.workcd)); itemcd.SetText(SetTextData(data.machineInfo.itemcd)); itemdesc.SetText(SetTextData(data.machineInfo.itemdesc)); pjtcd.SetText(SetTextData(data.machineInfo.pjtcd)); matcd.SetText(SetTextData(data.machineInfo.matcd)); cavity.SetText(SetTextData(data.machineInfo.cavity)); cycletime.SetText(SetTextData(data.machineInfo.cycletime)); moldData.SetText(SetTextData(data.machineInfo.MOLDCD)); planqty.SetText(SetTextData(data.machineInfo.planqty)); goalqty.SetText(SetTextData(data.machineInfo.goalqty)); workqty.SetText(SetTextData(data.machineInfo.workqty)); goodqty.SetText(SetTextData(data.machineInfo.goodqty)); badqty.SetText(SetTextData(data.machineInfo.badqty)); badrate.SetText(DecimalPointCalculate(data.machineInfo.badrate).ToString() + "%"); efficiency.SetText(DecimalPointCalculate(data.machineInfo.efficiency).ToString() + "%"); progressrate.SetText(DecimalPointCalculate(data.machineInfo.progressrate).ToString() + "%"); eorate.SetText(DecimalPointCalculate(data.kpiDataInfo.eorate).ToString() + "%"); porate.SetText(DecimalPointCalculate(data.kpiDataInfo.porate).ToString() + "%"); goodqtyrate.SetText(DecimalPointCalculate(data.kpiDataInfo.goodqtyrate).ToString() + "%"); workdt.SetText(CorrectionMonthDay(data.machineInfo.workdt, "yyyy-MM-dd")); } private void SetSliderData(SimpleField data) { SetSliderValue(Slider_eorate, 100f, DecimalPointCalculate(data.kpiDataInfo.eorate)); SetSliderValue(Slider_planqty, DecimalPointCalculate(data.machineInfo.planqty), DecimalPointCalculate(data.machineInfo.planqty)); SetSliderValue(Slider_goalqty, DecimalPointCalculate(data.machineInfo.planqty), DecimalPointCalculate(data.machineInfo.goalqty)); SetSliderValue(Slider_workqty, DecimalPointCalculate(data.machineInfo.planqty), DecimalPointCalculate(data.machineInfo.workqty)); SetSliderValue(Slider_goodqty, DecimalPointCalculate(data.machineInfo.planqty), DecimalPointCalculate(data.machineInfo.goodqty)); SetSliderValue(Slider_badqty, DecimalPointCalculate(data.machineInfo.planqty), DecimalPointCalculate(data.machineInfo.badqty)); SetSliderValue(Slider_badrate, 100f, DecimalPointCalculate(data.machineInfo.badrate)); SetSliderValue(Slider_efficiency, 100f, DecimalPointCalculate(data.machineInfo.efficiency)); SetSliderValue(Slider_progressrate, 100f, DecimalPointCalculate(data.machineInfo.progressrate)); SetSliderValue(Slider_porate, 100f, DecimalPointCalculate(data.kpiDataInfo.porate)); SetSliderValue(Slider_goodqtyrate, 100f, DecimalPointCalculate(data.kpiDataInfo.goodqtyrate)); } private string SetTextData(string value) { if (value == string.Empty || value == null) { return "-"; } return value; } private void SetSliderValue(Slider slider, float max, float value) { slider.minValue = 0f; slider.maxValue = max; slider.value = value; } private bool CheckDataExists(string value) { if (value == null) { return false; } return true; } private float DecimalPointCalculate(string value) { if (!CheckDataExists(value)) { return 0f; } var originFloatValue = float.Parse(value); var floatValue = Mathf.Round(originFloatValue * 10f) / 10f; return floatValue; } private string CorrectionMonthDay(string value, string dateForm) { if (value == string.Empty) { return "-"; } DateTime.TryParseExact(value, "yyyyMMdd", CultureInfo.InvariantCulture, DateTimeStyles.None, out var parsedDate); return parsedDate.ToString(dateForm); } private string CorrectionTime(string value, string dateForm) { if (value == string.Empty) { return "-"; } DateTime.TryParseExact(value, "hhmm", CultureInfo.InvariantCulture, DateTimeStyles.None, out var parsedDate); return parsedDate.ToString(dateForm); } }