using ChartAndGraph; using System; using System.Collections; using System.Collections.Generic; using System.Linq; using UnityEngine; using UnityEngine.EventSystems; using WI; using TMPro; using static ChartAndGraph.GraphChartBase; public class UI_GraphChart : UIBase, IPointerClickHandler { public GraphChart Graph; //public UI_DateTime prf_dateTime; //public RectTransform Content_DateTime; private UI_GraphChartData chartDetailData; private TextMeshProUGUI GraphName; public string graphName; public bool isMainChart; public Action onClickChart; private List graphChartData = new List(); private List graphDateTimeData = new List(); private TextMeshProUGUI MinValue; private TextMeshProUGUI MaxValue; private TextMeshProUGUI AveValue; private float min; private float max; private float ave; public override void AfterAwake() { Graph = GetComponentInChildren(); //prf_dateTime = Resources.Load("Prefabs/UI/PRF_UI_DateTime"); chartDetailData = FindSingle(); } public void OnPointerClick(PointerEventData eventData) { if (!isMainChart) { onClickChart?.Invoke(graphName); } } public void OnClickItem(GraphEventArgs args) { chartDetailData.SetData(graphName, graphChartData[args.Index], graphDateTimeData[args.Index], args.Position); } //public void SetChartLabels(List labels) //{ // for (int i = 0; i < labels.Count; i++) // { // var date = Instantiate(prf_dateTime, Content_DateTime); // date.SetDateTime(labels[i]); // } //} public void SetChartData(string graphName, GraphChartData graphData) { this.graphName = graphName; min = graphData.chartData.Min(); max = graphData.chartData.Max(); ave = graphData.chartData.Average(); AveValue.SetText(DecimalPointCalculate(ave)); if (isMainChart) { MinValue.SetText(DecimalPointCalculate(min)); MaxValue.SetText(DecimalPointCalculate(max)); } else { GraphName.SetText(this.graphName); } Graph.DataSource.VerticalViewSize = max * 2f; Graph.DataSource.ClearCategory("WorkConditionsData"); Graph.DataSource.StartBatch(); for (int i = 0; i < graphData.chartData.Count; i++) { Graph.DataSource.AddPointToCategory("WorkConditionsData", i, graphData.chartData[i]); graphChartData.Add(graphData.chartData[i]); graphDateTimeData.Add(graphData.timeData[i]); } Graph.DataSource.EndBatch(); } private string DecimalPointCalculate(float value) { var floatValue = Mathf.Round(value * 10f) / 10f; return floatValue.ToString(); } }