사용자 정보 표시 관리 팝업 완료

This commit is contained in:
logonkhi
2025-08-01 13:30:58 +09:00
parent 23da311db0
commit 22794651f2
16 changed files with 226 additions and 59 deletions

View File

@@ -1,4 +1,5 @@
using TMPro;
#nullable enable
using TMPro;
using UnityEngine;
using UnityEngine.UI;
using UVC.Data.Core;
@@ -36,12 +37,24 @@ namespace UVC.Factory.Alarm
public void Show(DataObject data)
{
string combinedString = string.Empty;
combinedString += $"ALARM_TYPE<indent=40%>{data.GetString("ALARM_TYPE") ?? "null"}</indent>\n";
combinedString += $"CODE<indent=40%>{data.GetString("CODE") ?? "null"}</indent>\n";
combinedString += $"MACHINENAME<indent=40%>{data.GetString("MACHINENAME") ?? "null"}</indent>\n";
combinedString += $"MESSAGE<indent=40%>{data.GetString("MESSAGE") ?? "null"}</indent>\n";
combinedString += $"TIMESTAMP<indent=40%>{data.GetString("TIMESTAMP") ?? "null"}</indent>\n";
DataMask? userMask = DataMask.GetUserMask("UserALARM");
if (userMask != null)
{
foreach (var item in userMask)
{
// DataObject에서 해당 키의 값을 가져와서 표시합니다.
combinedString += $"{item.Key}<indent=40%>{data.GetString(item.Key) ?? "null"}</indent>\n";
}
}
else
{
combinedString += $"ALARM_TYPE<indent=40%>{data.GetString("ALARM_TYPE") ?? "null"}</indent>\n";
combinedString += $"CODE<indent=40%>{data.GetString("CODE") ?? "null"}</indent>\n";
combinedString += $"MACHINENAME<indent=40%>{data.GetString("MACHINENAME") ?? "null"}</indent>\n";
combinedString += $"MESSAGE<indent=40%>{data.GetString("MESSAGE") ?? "null"}</indent>\n";
combinedString += $"TIMESTAMP<indent=40%>{data.GetString("TIMESTAMP") ?? "null"}</indent>\n";
}
combinedString = combinedString.TrimEnd('\n'); // 마지막 줄바꿈 제거
detailTxt.text = combinedString;

View File

@@ -72,8 +72,8 @@ namespace UVC.Factory.Component
public override void OnPointerClick(PointerEventData eventData)
{
// 사용자가 AGV를 클릭했을 때 정보창에 표시될 데이터 항목과 순서를 정의합니다.
DataOrderedMask = DataMask.Get("ConfigAGV");
// 사용자가 AGV를 클릭했을 때 정보창에 표시될 데이터 항목과 순서를 정의합니다. User+TOPIC 이름
if(dataOrderedMask == null) dataOrderedMask = DataMask.GetUserMask("AGV");
base.OnPointerClick(eventData);
}

View File

@@ -24,6 +24,7 @@ namespace UVC.Factory.Modal.Config
var dic = DataMask.DataMasks;
foreach (var item in dic)
{
if(item.Key.StartsWith("User")) continue; // "User"로 시작하지 않는 키만 처리합니다.
Debug.Log($"Key: {item.Key}, Value: {item.Value}");
// 1. TabConfig 설정
tabController.AddTabConfig(item.Key, item.Key, "Prefabs/UI/Tab/ConfigDataOrderTabContent", null, item.Key, true);
@@ -49,7 +50,7 @@ namespace UVC.Factory.Modal.Config
/// </summary>
public override async UniTask OnClose(ModalContent content)
{
await DataMask.SaveUserMasksToAppData(); // 데이터 마스크를 앱 데이터에 저장합니다.
await base.OnClose(content);
}

View File

@@ -1,8 +1,8 @@
#nullable enable
using System.Collections.Generic;
using UnityEditor.Rendering.LookDev;
using UnityEngine;
using UVC.Data.Core;
using UVC.Extention;
using UVC.UI.List.Draggable;
using UVC.UI.Tab;
@@ -15,7 +15,6 @@ namespace UVC.Factory.Modal.Config
private DraggableList? draggableList;
private string key = string.Empty;
private string configKey = string.Empty;
private DataMask? totalData = null;
private DataMask? viewData = null;
@@ -36,18 +35,15 @@ namespace UVC.Factory.Modal.Config
if (data is string key)
{
this.key = key;
configKey = $"Config{key}";
DataMask? mask = DataMask.Get(key);
if (mask != null) totalData = mask;
viewData = DataMask.Get(configKey);
totalData = DataMask.Get(key);
if (totalData != null)
{
viewData = DataMask.GetUserMask(key);
//저장 되 있는 데이터가 없으면 전체 아이템을 체크된 상태로 추가
if (viewData == null)
{
viewData = totalData.DeepClone();
DataMask.AddMask(configKey, viewData);
viewData = totalData.CreateUserMask();
DataMask.AddUserMask(key, viewData);
}
List<ConfigDataOrderListItemData> dataList = new List<ConfigDataOrderListItemData>();
@@ -55,7 +51,7 @@ namespace UVC.Factory.Modal.Config
foreach (var item in totalData)
{
bool isChecked = viewData!.ContainsKey(item.Key);
dataList.Add(new ConfigDataOrderListItemData(item.Key, item.Key, isChecked));
dataList.Add(new ConfigDataOrderListItemData(item.Key, (isChecked ? viewData[item.Key].ToString() : item.Key), isChecked));
}
//드래그 가능한 리스트에 데이터 설정
draggableList?.SetData<ConfigDataOrderListItemData>(dataList);
@@ -76,9 +72,10 @@ namespace UVC.Factory.Modal.Config
private void UpdateData()
{
Debug.Log($"UpdateData: draggableList != null:{draggableList != null}, viewData != null:{viewData != null}, configKey:{configKey}");
if (draggableList != null && viewData != null && configKey.Length > 0)
Debug.Log($"UpdateData: draggableList != null:{draggableList != null}, viewData != null:{viewData != null}, configKey:{key}");
if (draggableList != null && viewData != null && key.Length > 0)
{
viewData.Clear();
foreach (var item in draggableList.DataList)
{
if (item is ConfigDataOrderListItemData listItemData)
@@ -87,14 +84,10 @@ namespace UVC.Factory.Modal.Config
{
viewData[listItemData.Id] = listItemData.DisplayName;
}
else
{
viewData.Remove(listItemData.Id);
}
}
}
Debug.Log($"UpdateData: {configKey} - {viewData.ToJsonString()} items");
DataMask.AddMask(configKey, viewData);
Debug.Log($"UpdateData: {key} - {viewData.ToJsonString()} items");
DataMask.AddUserMask(key, viewData);
}
}

View File

@@ -194,7 +194,7 @@ namespace UVC.Factory.Playback
/// await PlaybackService.Instance.StartAsync(itemData);
/// </code>
/// </example>
public async Task StartAsync(UIPlaybackListItemData data)
public async UniTask StartAsync(UIPlaybackListItemData data)
{
timeScale = 1.0f; //기본 시간 스케일 설정
UIPlayback.Instance.Show();