using Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1.Pkcs; using Studio; using Studio.Setting.Connect; using Studio.UI; using TMPro; using UnityEngine; using XRLib.UI; using Newtonsoft.Json; using Best.HTTP.JSON; using UnityEngine.UI; using System.Collections.Generic; using System; namespace XED.UI { public class Panel_Repository : PanelBase { UI_BaseDataButton apiDataButtonPrefab; UI_MQTTDataButton mqttDataButtonPrefab; RectTransform APIDataList; RectTransform MQTTDataList; RectTransform Panel_APIInfo; RectTransform Panel_APIDataInfo; RectTransform Panel_MQTTInfo; RectTransform Panel_MQTTDataInfo; TextMeshProUGUI TotalRequestPacketSize; TextMeshProUGUI AverageRequestPacketSize; TextMeshProUGUI TotalResponsePacketSize; TextMeshProUGUI AverageResponsePacketSize; TextMeshProUGUI MaximumResponseTime; TextMeshProUGUI AverageResponseTime; TextMeshProUGUI MaximumRequestPacketAPI; TextMeshProUGUI MaximumResponsePacketAPI; TextMeshProUGUI MaximumResponseTimeAPI; LayoutGroup[] layoutGroups; Dictionary apiButtons = new(); Dictionary mqttButtons = new(); public override void AfterAwake() { UI_ProtocolLabel[] protocolLabels = GetComponentsInChildren(); foreach (UI_ProtocolLabel label in protocolLabels) { label.panel_Repository = this; } StudioService.Instance.onAPIDataLoaded += UpdateAPIDataButton; StudioService.Instance.onMQTTDataLoaded += UpdateMQTTDataButton; apiDataButtonPrefab = Resources.Load("Prefabs/UI/Button/UI_BaseDataButton"); mqttDataButtonPrefab = Resources.Load("Prefabs/UI/Button/UI_MQTTDataButton"); layoutGroups = GetComponentsInChildren(); } void UpdateAPIDataButton(string name, StudioEntityWithState value) { if (!apiButtons.ContainsKey(name)) { // ¹öư »õ·Î »ý¼º var button = Instantiate(apiDataButtonPrefab, APIDataList.transform); apiButtons.Add(name, button); button.panel_Repository = this; button.SetButtonData(name, value); RebuildLayout(); } else { // ¹öư µ¥ÀÌÅÍ ¾÷µ¥ÀÌÆ® apiButtons[name].SetButtonData(name, value); } } void UpdateMQTTDataButton(string name, Dictionary> value, TimeSpan elapsedTime) { if (!mqttButtons.ContainsKey(name)) { var button = Instantiate(mqttDataButtonPrefab, MQTTDataList.transform); mqttButtons.Add(name, button); button.panel_Repository = this; button.SetButtonData(name, value, elapsedTime); RebuildLayout(); } else { mqttButtons[name].SetButtonData(name, value, elapsedTime); } } public void RebuildLayout() { foreach (var layout in layoutGroups) { LayoutRebuilder.ForceRebuildLayoutImmediate(layout.GetComponent()); } } public void ShowInformation_API() { APITotalBoardEntity info = StudioService.Instance.GetAPIStatusBoarder(); TotalRequestPacketSize.text = info.TotalRequestPacketSize.ToString(); AverageRequestPacketSize.text = info.AverageRequestPacketSize.ToString(); TotalResponsePacketSize.text = info.TotalResponsePacketSize.ToString(); AverageResponsePacketSize.text = info.AverageResponsePacketSize.ToString(); MaximumResponseTime.text = info.MaximumResponseTime.ToString(); AverageResponseTime.text = info.AverageResponseTime.ToString(); MaximumRequestPacketAPI.text = info.MaximumRequestPacketAPI; MaximumResponsePacketAPI.text = info.MaximumResponsePacketAPI; MaximumResponseTimeAPI.text = info.MaximumResponseTimeAPI; Panel_APIInfo.gameObject.SetActive(true); Panel_APIDataInfo.gameObject.SetActive(false); Panel_MQTTInfo.gameObject.SetActive(false); Panel_MQTTDataInfo.gameObject.SetActive(false); } public void ShowInformation_APIData(StudioEntityWithState baseDataValue) { Panel_APIDataInfo.GetComponent().ShowData(baseDataValue); Panel_APIInfo.gameObject.SetActive(false); Panel_APIDataInfo.gameObject.SetActive(true); Panel_MQTTInfo.gameObject.SetActive(false); Panel_MQTTDataInfo.gameObject.SetActive(false); } public void ShowInformation_MQTT() { Panel_APIInfo.gameObject.SetActive(false); Panel_APIDataInfo.gameObject.SetActive(false); Panel_MQTTInfo.gameObject.SetActive(true); Panel_MQTTDataInfo.gameObject.SetActive(false); } public void ShowInformation_MQTTData(Dictionary> data, TimeSpan elapsedTime) { Panel_MQTTDataInfo.GetComponent().ShowData(data, elapsedTime); Panel_APIInfo.gameObject.SetActive(false); Panel_APIDataInfo.gameObject.SetActive(false); Panel_MQTTInfo.gameObject.SetActive(false); Panel_MQTTDataInfo.gameObject.SetActive(true); } } }