Topic Test Result가 정상적으로 표시되지 않음 #187
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user