136 lines
5.0 KiB
C#
136 lines
5.0 KiB
C#
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
using XRLib.UI;
|
|
using TMPro;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace XED
|
|
{
|
|
public class UI_AlarmDataItem : UIBase
|
|
{
|
|
private Toggle Toggle_Select;
|
|
private TextMeshProUGUI DataName;
|
|
private Button Button_AddComparison;
|
|
private RectTransform ComparisonContent;
|
|
|
|
private EventData eventData;
|
|
|
|
private UI_ComparisonSettingItem comparisonSettingItem;
|
|
private UI_EventParameterItem eventParameterItem;
|
|
private List<UI_ComparisonSettingItem> comparisonSettingItems = new List<UI_ComparisonSettingItem>();
|
|
|
|
public Action onUpdateLayout;
|
|
private AlarmField loadData;
|
|
private bool isUse;
|
|
|
|
public void SetItem(FieldData data, UI_ComparisonSettingItem comparisonSettingItem, UI_EventParameterItem eventParameterItem, EventData eventData)
|
|
{
|
|
this.comparisonSettingItem = comparisonSettingItem;
|
|
this.eventParameterItem = eventParameterItem;
|
|
this.eventData = eventData;
|
|
|
|
DataName.SetText(data.name);
|
|
Toggle_Select.onValueChanged.AddListener(OnSelectToggleValueChanged);
|
|
Toggle_Select.isOn = true;
|
|
|
|
Button_AddComparison.onClick.AddListener(OnClickAddComparsionButton);
|
|
comparisonSettingItems.Clear();
|
|
}
|
|
public void SetItem(AlarmField data, UI_ComparisonSettingItem comparisonSettingItem, UI_EventParameterItem eventParameterItem, EventData eventData)
|
|
{
|
|
loadData = data;
|
|
this.comparisonSettingItem = comparisonSettingItem;
|
|
this.eventParameterItem = eventParameterItem;
|
|
this.eventData = eventData;
|
|
|
|
DataName.SetText(data.fieldName);
|
|
Toggle_Select.onValueChanged.AddListener(OnSelectToggleValueChanged);
|
|
Toggle_Select.isOn = true;
|
|
|
|
Button_AddComparison.onClick.AddListener(OnClickAddComparsionButton);
|
|
comparisonSettingItems.Clear();
|
|
|
|
if (loadData.comparisons.Count > 0)
|
|
{
|
|
foreach(var comparison in loadData.comparisons)
|
|
{
|
|
var item = Instantiate(comparisonSettingItem, ComparisonContent);
|
|
item.onUpdateLayoutAddParameter += UpdateLayoutAddParameterItem;
|
|
item.onUpdateLayoutRemoveParameter += UpdateLayoutRemoveParameterItme;
|
|
item.SetItem(comparison, eventParameterItem, eventData);
|
|
comparisonSettingItems.Add(item);
|
|
|
|
if (comparisonSettingItems.Count > 1)
|
|
{
|
|
UpdateLayoutAddComparisonSettingItem();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
private void OnSelectToggleValueChanged(bool isOn)
|
|
{
|
|
isUse = isOn;
|
|
Button_AddComparison.gameObject.SetActive(isOn);
|
|
}
|
|
private void OnClickAddComparsionButton()
|
|
{
|
|
var item = Instantiate(comparisonSettingItem, ComparisonContent);
|
|
item.onUpdateLayoutAddParameter += UpdateLayoutAddParameterItem;
|
|
item.onUpdateLayoutRemoveParameter += UpdateLayoutRemoveParameterItme;
|
|
item.SetItem(eventParameterItem, eventData);
|
|
comparisonSettingItems.Add(item);
|
|
|
|
if (comparisonSettingItems.Count > 1)
|
|
{
|
|
UpdateLayoutAddComparisonSettingItem();
|
|
}
|
|
}
|
|
private void UpdateLayoutAddParameterItem()
|
|
{
|
|
var height = rectTransform.sizeDelta;
|
|
height.y += eventParameterItem.rectTransform.rect.height;
|
|
|
|
rectTransform.sizeDelta = height;
|
|
LayoutRebuilder.ForceRebuildLayoutImmediate(ComparisonContent);
|
|
onUpdateLayout?.Invoke();
|
|
}
|
|
private void UpdateLayoutRemoveParameterItme()
|
|
{
|
|
var height = rectTransform.sizeDelta;
|
|
height.y -= eventParameterItem.rectTransform.rect.height;
|
|
|
|
rectTransform.sizeDelta = height;
|
|
LayoutRebuilder.ForceRebuildLayoutImmediate(ComparisonContent);
|
|
onUpdateLayout?.Invoke();
|
|
|
|
}
|
|
private void UpdateLayoutAddComparisonSettingItem()
|
|
{
|
|
var itemSizeDelta = rectTransform.sizeDelta;
|
|
itemSizeDelta.y += comparisonSettingItem.rectTransform.rect.height;
|
|
|
|
rectTransform.sizeDelta = itemSizeDelta;
|
|
LayoutRebuilder.ForceRebuildLayoutImmediate(ComparisonContent);
|
|
onUpdateLayout?.Invoke();
|
|
}
|
|
|
|
public AlarmField GetData()
|
|
{
|
|
if (!isUse)
|
|
return null;
|
|
|
|
var alarmField = new AlarmField();
|
|
alarmField.fieldName = DataName.text;
|
|
alarmField.comparisons = new List<ComparisonCondition>();
|
|
|
|
foreach (var item in comparisonSettingItems)
|
|
{
|
|
var field = item.GetComparisonData();
|
|
alarmField.comparisons.Add(field);
|
|
}
|
|
return alarmField;
|
|
}
|
|
}
|
|
}
|