215 lines
7.9 KiB
C#
215 lines
7.9 KiB
C#
using UnityEngine;
|
|
using TMPro;
|
|
using UnityEngine.UI;
|
|
using CHN;
|
|
using System;
|
|
using System.Globalization;
|
|
using WI;
|
|
using System.Linq;
|
|
|
|
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 TextMeshProUGUI AttributeName_10;
|
|
private Image Circle_10;
|
|
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, Machine machine)
|
|
{
|
|
var canvas_popup = FindSingle<Canvas_Popup>();
|
|
if (canvas_popup.isSimpleDashboardAcitve)
|
|
return;
|
|
|
|
gameObject.SetActive(true);
|
|
|
|
SetTextData(data, machine);
|
|
SetSliderData(data);
|
|
}
|
|
private void SetTextData(SimpleField data, Machine machine)
|
|
{
|
|
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));
|
|
|
|
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"));
|
|
|
|
SetMoldData(machine, data);
|
|
}
|
|
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 void SetMoldData(Machine machine, SimpleField data)
|
|
{
|
|
var moldDataTitle = "";
|
|
var moldDataValue = "";
|
|
|
|
if (machine.typeOptions.Count() > 1)
|
|
{
|
|
Circle_10.gameObject.SetActive(true);
|
|
|
|
if (machine.typeOptions[1].Contains("엔겔") || machine.typeOptions[1].Contains("스미토모"))
|
|
{
|
|
moldDataTitle = "금형 차수";
|
|
moldDataValue = data.machineInfo.moldseq;
|
|
}
|
|
else if (machine.typeOptions[1].Contains("우진"))
|
|
{
|
|
moldDataTitle = "금형 코드";
|
|
moldDataValue = data.machineInfo.moldcd;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
Circle_10.gameObject.SetActive(false);
|
|
}
|
|
AttributeName_10.SetText(moldDataTitle);
|
|
moldData.SetText(moldDataValue);
|
|
}
|
|
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 == string.Empty || 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 || value == null)
|
|
{
|
|
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 || value == null)
|
|
{
|
|
return "-";
|
|
}
|
|
|
|
DateTime.TryParseExact(value, "hhmm", CultureInfo.InvariantCulture, DateTimeStyles.None, out var parsedDate);
|
|
return parsedDate.ToString(dateForm);
|
|
}
|
|
}
|