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

68 lines
2.2 KiB
C#
Raw Normal View History

2025-03-12 09:55:47 +09:00
using ChartAndGraph;
2025-03-11 10:23:44 +09:00
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
2025-03-12 09:55:47 +09:00
using UnityEngine.UI;
2025-03-11 10:23:44 +09:00
using WI;
2025-03-12 09:55:47 +09:00
using static ChartAndGraph.BarChart;
using TMPro;
using UnityEngine.EventSystems;
2025-03-12 09:55:47 +09:00
2025-03-11 10:23:44 +09:00
public class UI_BarChart : UIBase
{
private BarChart barChart;
private UI_StackBar stackBar;
2025-03-12 09:55:47 +09:00
public List<BarChartData> barChartDatas = new List<BarChartData>();
public UI_BarChartData barChartData;
private bool isClickChart;
2025-03-12 09:55:47 +09:00
public override void AfterAwake()
2025-03-11 10:23:44 +09:00
{
2025-03-12 09:55:47 +09:00
barChart = GetComponentInChildren<BarChart>();
stackBar = GetComponentInChildren<UI_StackBar>(true);
2025-03-12 09:55:47 +09:00
barChartData = GetComponentInChildren<UI_BarChartData>(true);
2025-03-11 10:23:44 +09:00
}
void Update()
{
if (Input.GetMouseButtonDown(0))
{
if (RectTransformUtility.RectangleContainsScreenPoint(barChartData.rectTransform, Input.mousePosition))
return;
if (RectTransformUtility.RectangleContainsScreenPoint(stackBar.rectTransform, Input.mousePosition))
return;
stackBar.SetActive(false);
barChartData.SetActive(false);
}
}
2025-03-12 09:55:47 +09:00
public void SetChartData(List<BarChartData> barChartData)
{
this.barChartDatas.Clear();
barChart.DataSource.ClearGroups();
barChart.DataSource.AutomaticMaxValue = true;
2025-03-11 10:23:44 +09:00
2025-03-12 09:55:47 +09:00
for (int i = 0; i < barChartData.Count; i++)
{
barChart.DataSource.AddGroup(i.ToString());
barChart.DataSource.SetValue("TargetCycleTime", i.ToString(), barChartData[i].targetCycleTime);
barChart.DataSource.SetValue("CycleTime", i.ToString(), barChartData[i].cycleTime);
}
this.barChartDatas.AddRange(barChartData);
}
2025-03-12 09:55:47 +09:00
public void OnClickItem(BarEventArgs arg)
2025-03-11 10:23:44 +09:00
{
2025-03-12 09:55:47 +09:00
int.TryParse(arg.Group, out var index);
barChartData.SetData(barChartDatas[index]);
barChart.GetBarTrackPosition("CycleTime", index.ToString(), out var topPosition);
var bottomPosition = new Vector3(topPosition.x, rectTransform.rect.yMax - (rectTransform.transform.localPosition.y / 2), 0);
var height = Mathf.Abs(topPosition.y - bottomPosition.y);
stackBar.SetStackBar(barChartDatas[index], topPosition, height);
2025-03-11 10:23:44 +09:00
}
}