Topic Test Result가 정상적으로 표시되지 않음 #187

Merged
UVCXR merged 2 commits from pgd/20250627_3 into main 2025-06-30 15:55:47 +09:00
2 changed files with 40 additions and 5 deletions

View File

@@ -17,6 +17,9 @@ namespace Studio.UI
public ScrollRect scrollView_TopicResults;
public UI_MQTTTestResultItem prf_MQTTTestResultItem;
public Button button_Close;
private DateTime requestTime;
public struct MQTTTestResult
{
public string topic;
@@ -48,6 +51,7 @@ namespace Studio.UI
public void Open(string domain, string port)
{
Debug.Log($"Open MQTT Test Result Panel. Domain: {domain}, Port: {port}");
requestTime = DateTime.Now;
Item_Domain.SetValue(domain);
Item_Port.SetValue(port);
gameObject.SetActive(true);
@@ -65,7 +69,7 @@ namespace Studio.UI
}
var item = Instantiate(prf_MQTTTestResultItem, scrollView_TopicResults.content);
item.SetResult(result.topic, result.message, result.payload);
item.SetResult(result.topic, result.message, result.payload, requestTime, DateTime.Now);
item.transform.SetParent(scrollView_TopicResults.content);
items.Add(item);
}

View File

@@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using TMPro;
using TriLibCore.Extensions;
using UnityEngine;
@@ -13,6 +14,9 @@ namespace Studio.UI
public Transform Item_Topic;
public UVCKeyValueItem Item_TopicPayload;
public UVCKeyValueItem Item_TopicPacketSize;
public UVCKeyValueItem Item_LastRequestTime;
public UVCKeyValueItem Item_LastResponseTime;
public UVCKeyValueItem Item_LastSpandTime;
public Button expand;
public Button refresh;
@@ -21,7 +25,9 @@ namespace Studio.UI
Item_Topic = transform.DeepFind<Transform>(nameof(Item_Topic));
Item_TopicPayload = transform.DeepFind<UVCKeyValueItem>(nameof(Item_TopicPayload));
Item_TopicPacketSize = transform.DeepFind<UVCKeyValueItem>(nameof(Item_TopicPacketSize));
Item_LastRequestTime = transform.DeepFind<UVCKeyValueItem>(nameof(Item_LastRequestTime));
Item_LastResponseTime = transform.DeepFind<UVCKeyValueItem>(nameof(Item_LastResponseTime));
Item_LastSpandTime = transform.DeepFind<UVCKeyValueItem>(nameof(Item_LastSpandTime));
refresh = Item_Topic.GetComponentInChildren<Button>();
expand = Item_TopicPayload.GetComponentInChildren<Button>();
expand.onClick.AddListener(OnClickExpandPayloadView);
@@ -32,17 +38,42 @@ namespace Studio.UI
throw new NotImplementedException();
}
internal void SetResult(string topic, string message, string payload)
internal void SetResult(string topic, string message, string payload, DateTime requestTime, DateTime responseTime)
{
Debug.Log($"Set MQTT Test Result Item. Topic: {topic}, Message: {message}, Payload Length: {payload.Length}");
if(Item_Topic == null || Item_TopicPayload == null || Item_TopicPacketSize == null)
if (Item_Topic == null || Item_TopicPayload == null || Item_TopicPacketSize == null ||
Item_LastRequestTime == null || Item_LastResponseTime == null || Item_LastSpandTime == null)
{
Debug.LogError("UI_MQTTTestResultItem: One or more UI elements are not assigned.");
gameObject.SetActive(false);
return;
}
Item_Topic.DeepFind<TextMeshProUGUI>("Text_Topic").SetText(topic);
Item_TopicPayload.SetValue(payload);
Item_TopicPacketSize.SetValue(payload.Length.ToString());
TimeSpan spandTime = responseTime - requestTime;
string convertRequestTime = $"{requestTime.Day}일 {requestTime.Hour}시 {requestTime.Minute}분 {requestTime.Second}.{requestTime.Millisecond}초";
string convertResponseTime = $"{responseTime.Day}일 {responseTime.Hour}시 {responseTime.Minute}분 {responseTime.Second}.{responseTime.Millisecond}초";
string convertSpandTime = FormatTimeSpanIgnoreZero(spandTime);
Item_LastRequestTime.SetValue(convertRequestTime);
Item_LastResponseTime.SetValue(convertResponseTime);
Item_LastSpandTime.SetValue(convertSpandTime);
}
private string FormatTimeSpanIgnoreZero(TimeSpan spandTime)
{
List<string> parts = new();
if (spandTime.Days != 0)
parts.Add($"{spandTime.Days}일");
if (spandTime.Hours != 0)
parts.Add($"{spandTime.Hours}시");
if (spandTime.Minutes != 0)
parts.Add($"{spandTime.Minutes}분");
if (spandTime.Seconds != 0 || spandTime.Milliseconds != 0)
parts.Add($"{spandTime.Seconds}.{spandTime.Milliseconds:D3}초");
return string.Join(" ", parts);
}
}
}