Files
Studio/Assets/Scripts/Studio/UI/Panel/Panel_APIDataInfo.cs
geondo55 60ce186a2e 백업
2025-07-29 14:55:04 +09:00

83 lines
3.0 KiB
C#

using Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1.Pkcs;
using Newtonsoft.Json;
using Studio.Setting.Connect;
using System;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
using XRLib.UI;
namespace Studio.UI
{
public class Panel_APIDataInfo : PanelBase
{
TextMeshProUGUI TextTitle;
TextMeshProUGUI DataType;
TextMeshProUGUI RawData;
RectTransform rawDataRect;
float rawDataFoldHeight;
float rawDataOriginHeight;
RectTransform RawDataFoldButton;
bool isRawDataFoldOn;
TextMeshProUGUI PacketSize;
TextMeshProUGUI LastRequestTime;
TextMeshProUGUI LastResponseTime;
TextMeshProUGUI ElapsedTime;
public override void AfterAwake()
{
rawDataRect = RawData.GetComponent<RectTransform>();
rawDataFoldHeight = rawDataRect.sizeDelta.y;
//RawDataFoldButton.GetComponent<Button>().onClick.AddListener(OnClickRawDataFoldButton);
}
public void ShowData<T>(string name, StudioEntityWithState<T> data)
{
RawData.text = JsonConvert.SerializeObject(data.Entity, Formatting.Indented);
//rawDataOriginHeight = RawData.preferredHeight;
//rawDataOriginHeight = Mathf.Max(rawDataFoldHeight, rawDataOriginHeight);
//rawDataRect = RawData.GetComponent<RectTransform>();
//Vector2 sizeDelta = rawDataRect.sizeDelta;
//sizeDelta.y = rawDataOriginHeight;
//rawDataRect.sizeDelta = sizeDelta;
TextTitle.text = name?.Contains("/api/") == true
? name.Split(new[] { "/api/" }, StringSplitOptions.None)[1]
: name;
DataType.text = "Json";
var byteSize = System.Text.Encoding.Default.GetBytes(data.Entity.ToString()).Length;
PacketSize.text = byteSize.ToString();
LastRequestTime.text = data.lastRequestTime.ToString();
LastResponseTime.text = data.lastResponseTime.ToString();
var elapsed = data.elapsedTime;
int minutes = elapsed.Minutes;
int seconds = elapsed.Seconds;
int milliseconds = elapsed.Milliseconds;
ElapsedTime.text = $"{minutes:D2}:{seconds:D2}.{milliseconds:D3}";
}
void OnClickRawDataFoldButton()
{
if (isRawDataFoldOn)
{
Vector2 sizeDelta = rawDataRect.sizeDelta;
sizeDelta.y = rawDataOriginHeight;
rawDataRect.sizeDelta = sizeDelta;
RawDataFoldButton.localRotation = Quaternion.Euler(0, 0, 0);
isRawDataFoldOn = false;
}
else
{
Vector2 sizeDelta = rawDataRect.sizeDelta;
sizeDelta.y = rawDataFoldHeight;
rawDataRect.sizeDelta = sizeDelta;
RawDataFoldButton.localRotation = Quaternion.Euler(0f, 0f, 180f);
isRawDataFoldOn = true;
}
}
}
}