179 lines
6.2 KiB
C#
179 lines
6.2 KiB
C#
|
|
using System.Collections;
|
||
|
|
using System.Collections.Generic;
|
||
|
|
using UnityEngine;
|
||
|
|
using UnityEngine.UI;
|
||
|
|
using TMPro;
|
||
|
|
using UnityEngine.EventSystems;
|
||
|
|
using WI;
|
||
|
|
|
||
|
|
public class UI_MachineKPI : UIBase, IPointerEnterHandler, IPointerExitHandler
|
||
|
|
{
|
||
|
|
public Image Image_eorate;
|
||
|
|
public Image Image_RectMask;
|
||
|
|
public Image Image_Name;
|
||
|
|
public TextMeshProUGUI Text_eorate;
|
||
|
|
public TextMeshProUGUI Text_lct;
|
||
|
|
public TextMeshProUGUI Text_wct;
|
||
|
|
public TextMeshProUGUI Text_goodqtyrate;
|
||
|
|
public TextMeshProUGUI Text_porate;
|
||
|
|
|
||
|
|
private float originScaleValue;
|
||
|
|
private float eorate;
|
||
|
|
private float timer;
|
||
|
|
private bool isRotating;
|
||
|
|
|
||
|
|
public bool isExpand;
|
||
|
|
public float duration;
|
||
|
|
public float pauseTimer;
|
||
|
|
|
||
|
|
public float dataExpandScale;
|
||
|
|
public float dataReductionScale;
|
||
|
|
public float nameExpandScale;
|
||
|
|
public float nameReductionScale;
|
||
|
|
public float nameExpandPos;
|
||
|
|
public float nameReductionPos;
|
||
|
|
public void SetData(KPIData kpiData)
|
||
|
|
{
|
||
|
|
eorate = DecimalPointCalculate(kpiData.eorate);
|
||
|
|
|
||
|
|
Text_eorate.SetText(eorate.ToString());
|
||
|
|
Text_lct.SetText(DecimalPointCalculate(kpiData.lct).ToString());
|
||
|
|
Text_wct.SetText(DecimalPointCalculate(kpiData.wct).ToString());
|
||
|
|
Text_goodqtyrate.SetText(DecimalPointCalculate(kpiData.goodqtyrate).ToString());
|
||
|
|
Text_porate.SetText(DecimalPointCalculate(kpiData.porate).ToString());
|
||
|
|
|
||
|
|
Image_eorate.color = eorate >= 50f ? Color.green : Color.red;
|
||
|
|
|
||
|
|
timer = pauseTimer;
|
||
|
|
originScaleValue = rectTransform.localScale.x;
|
||
|
|
}
|
||
|
|
private float DecimalPointCalculate(string value)
|
||
|
|
{
|
||
|
|
var originFloatValue = float.Parse(value);
|
||
|
|
var floatValue = Mathf.Round(originFloatValue * 100f) / 100f;
|
||
|
|
|
||
|
|
return floatValue;
|
||
|
|
}
|
||
|
|
public void Active()
|
||
|
|
{
|
||
|
|
gameObject.SetActive(true);
|
||
|
|
|
||
|
|
if (!isRotating)
|
||
|
|
{
|
||
|
|
float rotationAmount = -eorate * Time.deltaTime;
|
||
|
|
Image_eorate.transform.Rotate(new Vector3(0, 0, rotationAmount));
|
||
|
|
|
||
|
|
if (Mathf.Abs(Image_eorate.transform.rotation.eulerAngles.z) <= 180)
|
||
|
|
{
|
||
|
|
Image_eorate.transform.localRotation = Quaternion.Euler(Vector3.zero);
|
||
|
|
isRotating = true;
|
||
|
|
timer = pauseTimer;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
timer -= Time.deltaTime;
|
||
|
|
|
||
|
|
if (timer <= 0)
|
||
|
|
{
|
||
|
|
isRotating = false;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
public void Deactive()
|
||
|
|
{
|
||
|
|
var originalScale = Image_RectMask.rectTransform.sizeDelta;
|
||
|
|
var originalNameScale = Image_Name.rectTransform.sizeDelta;
|
||
|
|
var originalNamePos = Image_Name.rectTransform.localPosition;
|
||
|
|
|
||
|
|
var targetScale = new Vector2(0f, originalScale.y);
|
||
|
|
var targetNameScale = new Vector2(originalNameScale.x, 0f);
|
||
|
|
|
||
|
|
var targetNamePos = new Vector3(originalNamePos.x, 0f, originalNamePos.z);
|
||
|
|
|
||
|
|
Image_RectMask.rectTransform.sizeDelta = targetScale;
|
||
|
|
Image_Name.rectTransform.sizeDelta = targetNameScale;
|
||
|
|
Image_Name.rectTransform.localPosition = targetNamePos;
|
||
|
|
|
||
|
|
gameObject.SetActive(false);
|
||
|
|
}
|
||
|
|
|
||
|
|
public void OnPointerEnter(PointerEventData eventData)
|
||
|
|
{
|
||
|
|
var expandAbleScale = originScaleValue / 8f;
|
||
|
|
|
||
|
|
if (!isExpand)
|
||
|
|
{
|
||
|
|
if (rectTransform.localScale.x > expandAbleScale)
|
||
|
|
{
|
||
|
|
isRotating = false;
|
||
|
|
timer = 0.0f;
|
||
|
|
|
||
|
|
StopAllCoroutines();
|
||
|
|
StartCoroutine(ExpandAnimation());
|
||
|
|
isExpand = true;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
public void OnPointerExit(PointerEventData eventData)
|
||
|
|
{
|
||
|
|
if (isExpand)
|
||
|
|
{
|
||
|
|
StopAllCoroutines();
|
||
|
|
StartCoroutine(ReductionAnimation());
|
||
|
|
isExpand = false;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
private IEnumerator ExpandAnimation()
|
||
|
|
{
|
||
|
|
var originalScale = Image_RectMask.rectTransform.sizeDelta;
|
||
|
|
var originalNameScale = Image_Name.rectTransform.sizeDelta;
|
||
|
|
var originalNamePos = Image_Name.rectTransform.localPosition;
|
||
|
|
|
||
|
|
var targetScale = new Vector2(dataExpandScale, originalScale.y);
|
||
|
|
var targetNameScale = new Vector2(originalNameScale.x, nameExpandScale);
|
||
|
|
var targetNamePos = new Vector3(originalNamePos.x, nameExpandPos, originalNamePos.z);
|
||
|
|
|
||
|
|
float elapsedTime = 0f;
|
||
|
|
|
||
|
|
while (elapsedTime < duration)
|
||
|
|
{
|
||
|
|
var progress = elapsedTime / duration;
|
||
|
|
Image_RectMask.rectTransform.sizeDelta = Vector2.Lerp(originalScale, targetScale, progress);
|
||
|
|
Image_Name.rectTransform.sizeDelta = Vector2.Lerp(originalNameScale, targetNameScale, progress);
|
||
|
|
Image_Name.rectTransform.localPosition = Vector3.Lerp(originalNamePos, targetNamePos, progress);
|
||
|
|
elapsedTime += Time.deltaTime;
|
||
|
|
yield return null;
|
||
|
|
}
|
||
|
|
Image_RectMask.rectTransform.sizeDelta = targetScale;
|
||
|
|
Image_Name.rectTransform.sizeDelta = targetNameScale;
|
||
|
|
Image_Name.rectTransform.localPosition = targetNamePos;
|
||
|
|
}
|
||
|
|
private IEnumerator ReductionAnimation()
|
||
|
|
{
|
||
|
|
var originalScale = Image_RectMask.rectTransform.sizeDelta;
|
||
|
|
var originalNameScale = Image_Name.rectTransform.sizeDelta;
|
||
|
|
var originalNamePos = Image_Name.rectTransform.localPosition;
|
||
|
|
|
||
|
|
var targetScale = new Vector2(dataReductionScale, originalScale.y);
|
||
|
|
var targetNameScale = new Vector2(originalNameScale.x, nameReductionScale);
|
||
|
|
var targetNamePos = new Vector3(originalNamePos.x, nameReductionPos, originalNamePos.z);
|
||
|
|
|
||
|
|
float elapsedTime = 0f;
|
||
|
|
|
||
|
|
while (elapsedTime < duration)
|
||
|
|
{
|
||
|
|
var progress = elapsedTime / duration;
|
||
|
|
Image_RectMask.rectTransform.sizeDelta = Vector2.Lerp(originalScale, targetScale, progress);
|
||
|
|
Image_Name.rectTransform.sizeDelta = Vector2.Lerp(originalNameScale, targetNameScale, progress);
|
||
|
|
Image_Name.rectTransform.localPosition = Vector3.Lerp(originalNamePos, targetNamePos, progress);
|
||
|
|
elapsedTime += Time.deltaTime;
|
||
|
|
yield return null;
|
||
|
|
}
|
||
|
|
Image_RectMask.rectTransform.sizeDelta = targetScale;
|
||
|
|
Image_Name.rectTransform.sizeDelta = targetNameScale;
|
||
|
|
Image_Name.rectTransform.localPosition = targetNamePos;
|
||
|
|
}
|
||
|
|
}
|