Files
ChunilENG/Assets/Scripts/UI/Panel_CompleteAlramHistory.cs

119 lines
4.0 KiB
C#
Raw Normal View History

2025-02-20 09:59:37 +09:00
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using WI;
using UnityEngine.UI;
using static MQTT;
using System;
2025-03-27 18:14:04 +09:00
using System.Linq;
2025-02-20 09:59:37 +09:00
namespace CHN
{
public class Panel_CompleteAlramHistory : PanelBase, ISingle
2025-02-20 09:59:37 +09:00
{
public UI_CompleteTimeAlarmInfo prefab_completeTimeAlarmInfo;
public ScrollRect ScrollView_CompleteAlramHistory;
2025-03-18 16:23:09 +09:00
public Button Button_Close;
public Image Image_Loading;
2025-02-20 09:59:37 +09:00
public Dictionary<string, UI_CompleteTimeAlarmInfo> completeInfoList = new();
public List<UI_CompleteTimeAlarmInfo> notCheckAlramList = new();
public Action<string> onClickAlram;
public Action<int> onCheckAlarm;
2025-02-20 09:59:37 +09:00
public Action<CompleteInfo, bool> onCheckAlarmData;
public Action onOpen;
public Action<string> onDashobardOpen;
public Action<string> onDashobardClose;
2025-02-20 09:59:37 +09:00
public override void AfterAwake()
{
2025-02-24 18:48:14 +09:00
prefab_completeTimeAlarmInfo = Resources.Load<UI_CompleteTimeAlarmInfo>("Prefabs/UI/PRF_UI_CompleteTimeAlramInfo");
2025-03-18 16:23:09 +09:00
Button_Close.onClick.AddListener(Close);
2025-02-20 09:59:37 +09:00
notCheckAlramList.Clear();
completeInfoList.Clear();
SetActive(false);
}
public void Open()
{
onDashobardOpen?.Invoke("<22>Ϸ<EFBFBD> <20>ð<EFBFBD> <20>˶<EFBFBD>");
2025-04-03 11:53:25 +09:00
onOpen?.Invoke();
2025-02-20 09:59:37 +09:00
}
public void Close()
{
if (!gameObject.activeSelf)
return;
onDashobardClose?.Invoke("<22>Ϸ<EFBFBD> <20>ð<EFBFBD> <20>˶<EFBFBD>");
2025-02-20 09:59:37 +09:00
}
public void ActiveLoadingImage(bool isActive)
{
var active = isActive ? false : true;
Image_Loading.gameObject.SetActive(active);
}
2025-02-20 09:59:37 +09:00
public void SetAlarmInfoItems(List<CompleteTimeAlarmData> infos)
{
ActiveLoadingImage(true);
var sortedInfos = SetSortInfoData(infos);
2025-03-27 18:14:04 +09:00
for (int i = 0; i < sortedInfos.Count; i++)
{
if (completeInfoList.ContainsKey(sortedInfos[i].completeInfo.worknm))
2025-02-20 09:59:37 +09:00
{
2025-03-27 18:14:04 +09:00
completeInfoList[sortedInfos[i].completeInfo.worknm].SetInfo(sortedInfos[i].completeInfo);
2025-02-20 09:59:37 +09:00
}
else
{
var infoItem = Instantiate(prefab_completeTimeAlarmInfo, ScrollView_CompleteAlramHistory.content);
2025-03-27 18:14:04 +09:00
infoItem.SetInfo(sortedInfos[i].completeInfo);
2025-02-20 09:59:37 +09:00
infoItem.onCheck += CheckAlram;
2025-03-27 18:14:04 +09:00
infoItem.isCheck = sortedInfos[i].isCheck;
2025-02-20 09:59:37 +09:00
2025-03-27 18:14:04 +09:00
completeInfoList.Add(sortedInfos[i].completeInfo.worknm, infoItem);
2025-02-20 09:59:37 +09:00
if (!infoItem.isCheck)
{
notCheckAlramList.Add(infoItem);
}
2025-02-20 09:59:37 +09:00
}
}
BlinkAlarmItems();
}
private List<CompleteTimeAlarmData> SetSortInfoData(List<CompleteTimeAlarmData> infos)
{
var sortedInfos = infos.Select(data =>
{
DateTime parsedDate;
bool isValid = DateTime.TryParse(data.completeInfo.ptotm, out parsedDate);
return new
{
AlarmData = data,
IsValid = isValid,
Date = parsedDate
};
})
.Where(item => item.IsValid)
.OrderByDescending(item => item.Date)
.Select(item => item.AlarmData)
.ToList();
return sortedInfos;
}
private void BlinkAlarmItems()
{
onCheckAlarm?.Invoke(notCheckAlramList.Count);
2025-02-20 09:59:37 +09:00
}
private void CheckAlram(UI_CompleteTimeAlarmInfo completeTimeAlarmInfo)
{
onClickAlram?.Invoke(completeTimeAlarmInfo.completeInfo.workcd);
2025-02-20 09:59:37 +09:00
onCheckAlarmData?.Invoke(completeTimeAlarmInfo.completeInfo, completeTimeAlarmInfo.isCheck);
notCheckAlramList.Remove(completeTimeAlarmInfo);
onCheckAlarm?.Invoke(notCheckAlramList.Count);
2025-02-20 09:59:37 +09:00
}
}
}