Files
ChunilENG/Assets/WorkSpace/Personal/JYM/UI_MachineKPI.cs

147 lines
4.4 KiB
C#
Raw Normal View History

2025-02-20 09:59:37 +09:00
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TMPro;
using UnityEngine.EventSystems;
using WI;
2025-02-25 10:23:33 +09:00
using System;
2025-02-20 09:59:37 +09:00
2025-02-25 10:23:33 +09:00
public class UI_MachineKPI : UIBase, IPointerClickHandler
2025-02-20 09:59:37 +09:00
{
2025-02-25 10:23:33 +09:00
public RectTransform DefaultKPI;
public RectTransform DetailsKPI;
private TextMeshProUGUI Default_eorate;
private TextMeshProUGUI Details_eorate;
private TextMeshProUGUI porate;
private TextMeshProUGUI goodqtyrate;
private TextMeshProUGUI lct;
private TextMeshProUGUI wct;
2025-02-20 09:59:37 +09:00
public bool isExpand;
2025-02-25 10:23:33 +09:00
private float eorate;
public float targetHeight;
2025-02-20 09:59:37 +09:00
public float duration;
2025-02-25 10:23:33 +09:00
private float initialHeight;
private Vector2 initialSizeDelta;
private Vector2 initialPosition;
public Action<UI_MachineKPI> onClickKPI;
2025-02-20 09:59:37 +09:00
public void SetData(KPIData kpiData)
{
eorate = DecimalPointCalculate(kpiData.eorate);
2025-02-25 10:23:33 +09:00
Default_eorate.SetText(eorate.ToString());
Details_eorate.SetText(eorate.ToString());
lct.SetText(DecimalPointCalculate(kpiData.lct).ToString());
wct.SetText(DecimalPointCalculate(kpiData.wct).ToString());
goodqtyrate.SetText(DecimalPointCalculate(kpiData.goodqtyrate).ToString());
porate.SetText(DecimalPointCalculate(kpiData.porate).ToString());
2025-02-20 09:59:37 +09:00
2025-02-25 10:23:33 +09:00
initialSizeDelta = DetailsKPI.sizeDelta;
initialPosition = DetailsKPI.anchoredPosition;
initialHeight = DetailsKPI.rect.height;
2025-02-20 09:59:37 +09:00
2025-02-25 10:23:33 +09:00
DetailsKPI.gameObject.SetActive(false);
2025-02-20 09:59:37 +09:00
}
private float DecimalPointCalculate(string value)
{
var originFloatValue = float.Parse(value);
var floatValue = Mathf.Round(originFloatValue * 100f) / 100f;
return floatValue;
}
2025-02-25 10:23:33 +09:00
IEnumerator ResizeCoroutine()
2025-02-20 09:59:37 +09:00
{
2025-02-25 10:23:33 +09:00
DefaultKPI.gameObject.SetActive(false);
DetailsKPI.gameObject.SetActive(true);
2025-02-20 09:59:37 +09:00
2025-02-25 10:23:33 +09:00
var elapsedTime = 0f;
while (elapsedTime < duration)
2025-02-20 09:59:37 +09:00
{
2025-02-25 10:23:33 +09:00
var progress = elapsedTime / duration;
2025-02-20 09:59:37 +09:00
2025-02-25 10:23:33 +09:00
var newHeight = Mathf.Lerp(initialHeight, targetHeight, progress);
DetailsKPI.sizeDelta = new Vector2(initialSizeDelta.x, newHeight);
var newPosY = Mathf.Lerp(initialPosition.y, initialPosition.y - (targetHeight - initialHeight) / 2f, progress);
DetailsKPI.anchoredPosition = new Vector2(initialPosition.x, newPosY);
elapsedTime += Time.deltaTime;
yield return null;
2025-02-20 09:59:37 +09:00
}
2025-02-25 10:23:33 +09:00
DetailsKPI.sizeDelta = new Vector2(initialSizeDelta.x, targetHeight);
DetailsKPI.anchoredPosition = new Vector2(initialPosition.x, initialPosition.y - (targetHeight - initialHeight) / 2f);
2025-02-20 09:59:37 +09:00
}
2025-02-25 10:23:33 +09:00
IEnumerator ShrinkCoroutine()
2025-02-20 09:59:37 +09:00
{
2025-02-25 10:23:33 +09:00
var elapsedTime = 0f;
var currentHeight = DetailsKPI.rect.height;
var currentPosY = DetailsKPI.anchoredPosition.y;
2025-02-20 09:59:37 +09:00
2025-02-25 10:23:33 +09:00
while (elapsedTime < duration)
{
var progress = elapsedTime / duration;
2025-02-20 09:59:37 +09:00
2025-02-25 10:23:33 +09:00
var newHeight = Mathf.Lerp(currentHeight, initialHeight, progress);
DetailsKPI.sizeDelta = new Vector2(initialSizeDelta.x, newHeight);
2025-02-20 09:59:37 +09:00
2025-02-25 10:23:33 +09:00
var newPosY = Mathf.Lerp(currentPosY, initialPosition.y, progress);
DetailsKPI.anchoredPosition = new Vector2(initialPosition.x, newPosY);
2025-02-20 09:59:37 +09:00
2025-02-25 10:23:33 +09:00
elapsedTime += Time.deltaTime;
yield return null;
}
2025-02-20 09:59:37 +09:00
2025-02-25 10:23:33 +09:00
DetailsKPI.sizeDelta = new Vector2(initialSizeDelta.x, initialHeight);
DetailsKPI.anchoredPosition = new Vector2(initialPosition.x, initialPosition.y);
2025-02-20 09:59:37 +09:00
2025-02-25 10:23:33 +09:00
DefaultKPI.gameObject.SetActive(true);
DetailsKPI.gameObject.SetActive(false);
}
public void OnPointerClick(PointerEventData eventData)
{
onClickKPI?.Invoke(this);
}
public void Expand()
{
2025-02-20 09:59:37 +09:00
if (!isExpand)
{
2025-02-25 10:23:33 +09:00
StopAllCoroutines();
StartCoroutine(ResizeCoroutine());
isExpand = true;
2025-02-20 09:59:37 +09:00
}
}
2025-02-25 10:23:33 +09:00
public void Shrink()
2025-02-20 09:59:37 +09:00
{
if (isExpand)
{
StopAllCoroutines();
2025-02-25 10:23:33 +09:00
StartCoroutine(ShrinkCoroutine());
2025-02-20 09:59:37 +09:00
isExpand = false;
}
}
2025-02-25 10:23:33 +09:00
public void Active()
2025-02-20 09:59:37 +09:00
{
2025-02-25 10:23:33 +09:00
gameObject.SetActive(true);
2025-02-20 09:59:37 +09:00
}
2025-02-25 10:23:33 +09:00
public void Deactive()
2025-02-25 10:45:32 +09:00
{
DetailsKPI.sizeDelta = initialSizeDelta;
DetailsKPI.anchoredPosition = new Vector2(initialPosition.x, initialPosition.y);
DefaultKPI.gameObject.SetActive(true);
DetailsKPI.gameObject.SetActive(false);
isExpand = false;
2025-02-25 10:23:33 +09:00
gameObject.SetActive(false);
2025-02-20 09:59:37 +09:00
}
2025-02-25 10:23:33 +09:00
}