Files
EnglewoodLAB/Assets/Scripts/UI/TotalProgressPanel/MachineStatusItem.cs
SOOBEEN HAN f1894889ee <refactor> Octopus Twin 템플릿 적용
- 기능 외 UI 구조만 적용
- 프로젝트에 걸맞는 UI는 재작업 필요
2026-02-23 18:20:09 +09:00

120 lines
4.6 KiB
C#

using System;
using System.Globalization;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
using EnglewoodLAB.Extensions;
using EnglewoodLAB.Management;
using static MQTT;
namespace EnglewoodLAB.UI
{
public class MachineStatusItem : MonoBehaviour
{
public Image icon_status;
public TextMeshProUGUI worknm;
public TextMeshProUGUI status;
public TextMeshProUGUI itemcd;
public TextMeshProUGUI itemdesc;
public TextMeshProUGUI goalqty;
public TextMeshProUGUI workqty;
public TextMeshProUGUI goodqty;
public TextMeshProUGUI badqty;
public TextMeshProUGUI efficiency;
public TextMeshProUGUI goaltime;
public Image Image_Status;
public float fontSize;
public float blankSize;
public void Init()
{
transform.TryGetComponentInChildren(nameof(icon_status), out icon_status);
transform.TryGetComponentInChildren(nameof(worknm), out worknm);
transform.TryGetComponentInChildren(nameof(status), out status);
transform.TryGetComponentInChildren(nameof(itemcd), out itemcd);
transform.TryGetComponentInChildren(nameof(itemdesc), out itemdesc);
transform.TryGetComponentInChildren(nameof(goalqty), out goalqty);
transform.TryGetComponentInChildren(nameof(workqty), out workqty);
transform.TryGetComponentInChildren(nameof(goodqty), out goodqty);
transform.TryGetComponentInChildren(nameof(badqty), out badqty);
transform.TryGetComponentInChildren(nameof(efficiency), out efficiency);
transform.TryGetComponentInChildren(nameof(goaltime), out goaltime);
transform.TryGetComponentInChildren(nameof(Image_Status), out Image_Status);
}
public void SetStatusData(CompleteInfo completeInfo)
{
var currentTime = DateTime.Now.ToString("HHmm");
worknm.SetText(completeInfo.worknm);
status.SetText(completeInfo.statusnm);
SetStatusColor(completeInfo.statusnm);
itemcd.SetText(completeInfo.itemcd);
itemdesc.SetText(completeInfo.itemdesc);
goaltime.SetText(CalculateDate(currentTime, completeInfo.sttm));
goalqty.SetText(RoundToIntData(completeInfo.goalqty));
workqty.SetText(RoundToIntData(completeInfo.workqty));
goodqty.SetText(RoundToIntData(completeInfo.goodqty));
badqty.SetText(RoundToIntData(completeInfo.badqty));
efficiency.SetText(RoundToFloatData(completeInfo.efficiency));
SetStatusImageResize();
}
private string CalculateDate(string currentTimeData, string startTimeData)
{
string formattedCurrentTimeData = currentTimeData.Insert(2, ":");
string formattedStartTimeData = startTimeData.Insert(2, ":");
DateTime.TryParseExact(formattedCurrentTimeData, "HH:mm", null, DateTimeStyles.None, out var currentTime);
DateTime.TryParseExact(formattedStartTimeData, "HH:mm", null, DateTimeStyles.None, out var startTime);
var dateTime = currentTime.Subtract(startTime);
return dateTime.ToString(@"hh\:mm");
}
public string RoundToIntData(string data)
{
float.TryParse(data, out var floatData);
var intData = Mathf.RoundToInt(floatData);
return intData.ToString();
}
public string RoundToFloatData(string data)
{
float.TryParse(data, out var floatData);
var truncateData = Math.Truncate(floatData * 10) / 10;
return truncateData.ToString();
}
void SetStatusColor(string stat)
{
switch (stat)
{
case "°¡µ¿Áß":
status.color = new Color(0, 1f, 0f);
break;
case "ºñ°¡µ¿":
status.color = new Color(1f, 0, 0);
break;
case "°èȹÁ¤Áö":
status.color = new Color(1f, 1f, 1f);
break;
default:
status.color = new Color(1f, 1f, 0);
break;
}
Image_Status.color = status.color;
icon_status.color = status.color;
}
private void SetStatusImageResize()
{
var newWidth = status.text.Length * fontSize + blankSize;
var height = Image_Status.rectTransform.sizeDelta.y;
Image_Status.rectTransform.sizeDelta = new Vector2(newWidth, height);
}
}
}