This commit is contained in:
wsh
2025-05-27 10:25:19 +09:00
parent f331abd7b8
commit e1dc63bcf4
19 changed files with 0 additions and 2414 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: b0a8a51f236c8764e8d3b9239b291e85
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -4,16 +4,5 @@ namespace Studio.UVC.UI
{
public class CreateUIPanel : MonoBehaviour
{
// Start is called once before the first execution of Update after the MonoBehaviour is created
void Start()
{
}
// Update is called once per frame
void Update()
{
}
}
}

View File

@@ -1,120 +0,0 @@
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using NUnit.Framework;
using Studio.UVC.UI;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Rendering;
using Studio.UI;
namespace Studio
{
public class SDIDashboardTest : MonoBehaviour
{
string testJson = @"
{
""stockerStackAggregation"": [
{
""CAPACITY"": ""89.57"",
""ENG_EQP_NAME"": ""상온Aging #03"",
""KOR_EQP_NAME"": ""상온Aging #03"",
""MAXIMUM_CAPACITY"": ""834"",
""MAXIMUM_TRAY_CAPACITY"": ""2502"",
""RACK_DISABLE_COUNT"": ""4"",
""RACK_EMPTY_COUNT"": ""87"",
""RACK_LOAD_COUNT"": ""747"",
""RESERVATED_RETURN_COUNT"": ""5"",
""STOCKER_NAME"": ""HFF09AGN0300"",
""TIMESTAMP"": ""2025-03-25T11:59:56.000Z"",
""TRAY_CAPACITY"": ""83.25"",
""TRAY_COUNT"": ""2083"",
""TRAY_REWORK_COUNT_AVG"": ""3"",
""TRAY_REWORK_COUNT_MAX"": ""153"",
""TRAY_REWORK_COUNT_MIN"": ""0""
},
{
""CAPACITY"": ""78.21"",
""ENG_EQP_NAME"": ""상온Aging #01"",
""KOR_EQP_NAME"": ""상온Aging #01"",
""MAXIMUM_CAPACITY"": ""920"",
""MAXIMUM_TRAY_CAPACITY"": ""2800"",
""RACK_DISABLE_COUNT"": ""2"",
""RACK_EMPTY_COUNT"": ""200"",
""RACK_LOAD_COUNT"": ""720"",
""RESERVATED_RETURN_COUNT"": ""8"",
""STOCKER_NAME"": ""HFF09AGN0100"",
""TIMESTAMP"": ""2025-03-25T12:00:56.000Z"",
""TRAY_CAPACITY"": ""70.88"",
""TRAY_COUNT"": ""1980"",
""TRAY_REWORK_COUNT_AVG"": ""5"",
""TRAY_REWORK_COUNT_MAX"": ""140"",
""TRAY_REWORK_COUNT_MIN"": ""1""
},
{
""CAPACITY"": ""82.73"",
""ENG_EQP_NAME"": ""상온Aging #02"",
""KOR_EQP_NAME"": ""상온Aging #02"",
""MAXIMUM_CAPACITY"": ""850"",
""MAXIMUM_TRAY_CAPACITY"": ""2600"",
""RACK_DISABLE_COUNT"": ""3"",
""RACK_EMPTY_COUNT"": ""146"",
""RACK_LOAD_COUNT"": ""704"",
""RESERVATED_RETURN_COUNT"": ""7"",
""STOCKER_NAME"": ""HFF09AGN0200"",
""TIMESTAMP"": ""2025-03-25T12:01:56.000Z"",
""TRAY_CAPACITY"": ""76.88"",
""TRAY_COUNT"": ""1999"",
""TRAY_REWORK_COUNT_AVG"": ""2"",
""TRAY_REWORK_COUNT_MAX"": ""120"",
""TRAY_REWORK_COUNT_MIN"": ""0""
},
{
""CAPACITY"": ""64.92"",
""ENG_EQP_NAME"": ""저온Aging #01"",
""KOR_EQP_NAME"": ""저온Aging #01"",
""MAXIMUM_CAPACITY"": ""780"",
""MAXIMUM_TRAY_CAPACITY"": ""2300"",
""RACK_DISABLE_COUNT"": ""5"",
""RACK_EMPTY_COUNT"": ""273"",
""RACK_LOAD_COUNT"": ""507"",
""RESERVATED_RETURN_COUNT"": ""3"",
""STOCKER_NAME"": ""HFF09AGN0400"",
""TIMESTAMP"": ""2025-03-25T12:02:56.000Z"",
""TRAY_CAPACITY"": ""62.83"",
""TRAY_COUNT"": ""1870"",
""TRAY_REWORK_COUNT_AVG"": ""4"",
""TRAY_REWORK_COUNT_MAX"": ""99"",
""TRAY_REWORK_COUNT_MIN"": ""0""
}
]
}";
private void TestDict()
{
var list = new Dictionary<string, Dictionary<string, string>>();
JObject root = JObject.Parse(testJson);
JArray array = (JArray)root["stockerStackAggregation"];
foreach (JObject obj in array)
{
var entry = new Dictionary<string, string>();
string id = obj["KOR_EQP_NAME"]?.ToString();
foreach (JProperty prop in obj.Properties())
{
entry[prop.Name] = prop.Value.ToString();
}
list[id] = entry;
}
FindAnyObjectByType<UINewLoadFactory>().SetItem(list);
}
private void Start()
{
TestDict();
}
}
}

View File

@@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: d26fb80f9d6ceb140b999f727f46b103

View File

@@ -1,7 +1,6 @@
using System.Linq;
using TMPro;
using UnityEngine;
using UnityEngine.Localization;
using UnityEngine.UI;
namespace Studio.UVC.UI

View File

@@ -1,50 +0,0 @@
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.UI;
using XRLib.UI;
namespace Studio.UVC.UI
{
public class UIDetailButton : UIBase, ITabButton
{
public int Index { get; set; }
private Button button;
[SerializeField]
private bool selected = false;
public UnityEvent<int, bool> onClick = new UnityEvent<int, bool>();
public void Init()
{
button = GetComponent<UnityEngine.UI.Button>();
if (button != null)
{
button.onClick.AddListener(() =>
{
if (selected)
{
selected = false;
}
else
{
selected = true;
}
onClick.Invoke(Index, selected);
});
}
if (selected) Select();
else Deselect();
}
public void Deselect()
{
selected = false;
}
public void Select()
{
selected = true;
}
}
}

View File

@@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: 4fbbf8626703b7e479b10ed7a18b8380

View File

@@ -1,92 +0,0 @@
using Studio.UVC.Controller.UI;
using System.Collections.Generic;
using System.Linq;
using TMPro;
using UnityEditor.Localization.Plugins.XLIFF.V12;
using UnityEngine;
using UnityEngine.UI;
using XRLib.UI;
namespace Studio.UVC.UI
{
public class UINewLoadFactory : PanelBase
{
private TextMeshProUGUI Text_LoadFactory;
private TabController tabController = new();
protected ScrollRect scrollRect;
private DashBoardHeadLine headLine;
protected Dictionary<string, UINewStockerValue> itemTable = new();
private UINewStockerValue item;
private RectTransform rect;
public override void AfterAwake()
{
//titleKey = "realtime_load_factor";
Init();
}
private void Init()
{
rect = GetComponent<RectTransform>();
headLine = GetComponentInChildren<DashBoardHeadLine>();
Text_LoadFactory = headLine.GetComponentInChildren<TextMeshProUGUI>();
scrollRect = GetComponentInChildren<ScrollRect>();
ExpandYsize();
}
private void ExpandYsize()
{
var expandSize = 28f + 12f + 24f + 4f;
expandSize += itemTable.Count * 169f + 4f + ((itemTable.Count - 1) * 16f);
rect.sizeDelta = new Vector2(rect.sizeDelta.x, expandSize);
}
private UINewStockerValue CreateItem(string name)
{
if (item == null)
item = Resources.Load<UINewStockerValue>(UINewStockerValue.PrefabPath);
var newItem = Instantiate<UINewStockerValue>(item, scrollRect.content);
//newItem.name = name;
newItem.titleName = name;
newItem.transform.localScale = Vector3.one;
newItem.InIt(tabController);
newItem.Button_Details.onClick.AddListener((int index, bool selected) =>
{
if (selected)
{
tabController.Select(index);
}
else
tabController.Deselect();
});
tabController.Add(newItem.Button_Details, newItem);
return newItem;
}
public void SetItem(Dictionary<string, Dictionary<string, string>> entitiy)
{
foreach (var item in entitiy.Values)
{
string name = item["KOR_EQP_NAME"].Split(' ')[0];
if (!itemTable.ContainsKey(name))
{
itemTable.Add(name, CreateItem(name));
ExpandYsize();
}
itemTable[name].SetItem(item);
}
}
private void Deselect()
{
tabController.Deselect();
gameObject.SetActive(false);
}
}
}

View File

@@ -1,11 +0,0 @@
fileFormatVersion: 2
guid: 91f1945b0d450c7449b410c927d0abf9
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,7 +1,6 @@
using System.Linq;
using TMPro;
using UnityEngine;
using UnityEngine.Localization;
using UnityEngine.UI;
using XRLib.UI;

View File

@@ -1,108 +0,0 @@
using Studio.UVC.Controller.UI;
using System;
using System.Collections.Generic;
using System.Linq;
using TMPro;
using UnityEngine;
using UnityEngine.Localization;
using UnityEngine.UI;
namespace Studio.UVC.UI
{
public class UINewStockerValue : MonoBehaviour, ITabContent
{
public static string PrefabPath = "Prefabs/NewDashBoard/UINewStockerValue";
private TextMeshProUGUI Text_Title;
private TextMeshProUGUI Text_Total;
private TextMeshProUGUI Text_TrayCount;
private TextMeshProUGUI Text_TrayTotalCount;
private UICircleProgressBar circle_Progressbar;
private UIDetailButton button_viewDetails;
public Action onCloseSidePanel;
public UIDetailButton Button_Details { get => button_viewDetails; }
public string titleName;
private UISideLoadFactory sideItem;
private RectTransform rect;
private Image image;
public int Index { get; set; }
private TabController controller;
public void InIt(TabController tabController)
{
controller = tabController;
rect = GetComponent<RectTransform>();
image = GetComponent<Image>();
var textMeshPros = GetComponentsInChildren<TextMeshProUGUI>();
Text_Title = textMeshPros.First(x => x.name.Equals(nameof(Text_Title)));
Text_Total = textMeshPros.First(x => x.name.Equals(nameof(Text_Total)));
Text_TrayCount = textMeshPros.First(x => x.name.Equals(nameof(Text_TrayCount)));
Text_TrayTotalCount = textMeshPros.First(x => x.name.Equals(nameof(Text_TrayTotalCount)));
circle_Progressbar = GetComponentInChildren<UICircleProgressBar>();
circle_Progressbar.Init();
button_viewDetails = GetComponentInChildren<UIDetailButton>();
button_viewDetails.Init();
sideItem = Create();
sideItem.Init();
sideItem.onClickClose += DeSelect;
sideItem.SetPosition(new Vector3(rect.position.x - (rect.sizeDelta.x * 0.5f), rect.position.y));
image.enabled = false;
}
internal void SetItem(Dictionary<string, string> entity)
{
sideItem.SetItem(titleName, entity);
Average();
}
private void DeSelect()
{
//À̹ÌÁö
image.enabled = false;
//button_viewDetails.Deselect();
controller.Deselect();
}
private void Average()
{
circle_Progressbar.SetValue(sideItem.Average);
Text_Title.text = titleName;
Text_Total.text = "total";
Text_TrayCount.text = $"{string.Format("{0:#,###}", sideItem.TrayCount)}";
Text_TrayTotalCount.text = $"/{string.Format("{0:#,###}", sideItem.Total)}ea";
Text_TrayCount.rectTransform.anchoredPosition = new Vector3(-(Text_TrayCount.preferredWidth), Text_TrayCount.rectTransform.anchoredPosition.y);
Text_Total.rectTransform.anchoredPosition = new Vector3(-(Text_TrayCount.preferredWidth) - Text_Total.rectTransform.sizeDelta.x - 4f, Text_Total.rectTransform.anchoredPosition.y);
}
private UISideLoadFactory Create()
{
var asset = Resources.Load<GameObject>(UISideLoadFactory.PrefabsPath);
var canvas = FindAnyObjectByType<CreateUIPanel>();
var item = Instantiate<GameObject>(asset, canvas.transform);
item.transform.localScale = Vector3.one;
var panel = item.AddComponent<UISidePanel>();
return panel;
}
public void Show()
{
if (sideItem == null)
return;
image.enabled = true;
sideItem.SetPosition(new Vector3(rect.position.x - (rect.sizeDelta.x * 0.5f), rect.position.y));
sideItem.Show();
}
public void Hide()
{
if (sideItem == null)
return;
image.enabled = false;
sideItem.Hide();
}
}
}

View File

@@ -1,11 +0,0 @@
fileFormatVersion: 2
guid: ad249143eaba4224aa632f3ce1fc9d6c
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,124 +0,0 @@
using System;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
namespace Studio.UVC.UI
{
public abstract class UISideLoadFactory : MonoBehaviour
{
public static string PrefabsPath = "Prefabs/NewDashBoard/UISideLoadFactory";
private RectTransform canvasRect;
private Button button_close;
protected string titleName;
protected TextMeshProUGUI Text_Title;
protected ScrollRect scrollRect;
private UINewLoadFactroyItem item;
protected RectTransform rect;
protected Dictionary<string, UINewLoadFactroyItem> itemTable = new();
protected float average;
public float Average { get => average; }
protected int total;
public int Total { get => total; }
protected int trayCount;
public int TrayCount { get => trayCount; }
public virtual void Init()
{
rect = GetComponent<RectTransform>();
button_close = GetComponentInChildren<Button>();
Text_Title = GetComponentInChildren<TextMeshProUGUI>();
scrollRect = GetComponentInChildren<ScrollRect>();
canvasRect = FindAnyObjectByType<CreateUIPanel>().GetComponent<RectTransform>();
button_close.onClick.AddListener(OnClickClose);
}
public Action onClickClose;
private void OnClickClose()
{
Hide();
onClickClose?.Invoke();
}
public virtual void Show()
{
gameObject.SetActive(true);
}
public virtual void Hide()
{
gameObject.SetActive(false);
}
public abstract void SetItem(string titleName, Dictionary<string, string> item);
public abstract void ExpandYsize();
public virtual void SetPosition(Vector3 size)
{
var xPos = + size.x - rect.sizeDelta.x-32f;
var yPos = size.y;
rect.position = new Vector2(xPos, yPos);
Vector3 minPosition = canvasRect.rect.min - rect.rect.min;
Vector3 maxPosition = canvasRect.rect.max - rect.rect.max;
yPos = Mathf.Clamp(canvasRect.localPosition.y, minPosition.y, maxPosition.y - 56f);
rect.position = new Vector2(xPos, rect.position.y);
}
protected void AverageLoadFactory()
{
var total = 0f;
foreach (var baritem in itemTable)
{
if (baritem.Key.Equals("average"))
continue;
var item = baritem.Value;
total += item.Percent;
}
average = total / (float)itemTable.Count;
}
protected void TotalLoadedQuantity()
{
var traycount = 0;
var total = 0;
foreach (var quantityBar in itemTable)
{
if (quantityBar.Key.Equals("total"))
continue;
var item = quantityBar.Value;
traycount += item.TrayCount;
total += item.Total;
}
this.total = total;
this.trayCount = traycount;
}
protected UINewLoadFactroyItem BaseSetLoadFactory(string key, RectTransform parent = null)
{
if (!itemTable.ContainsKey(key))
{
var item = CreateItem(parent);
itemTable.Add(key, item);
return item;
}
return null;
}
public UINewLoadFactroyItem CreateItem(RectTransform parent)
{
if (item == null)
item = Resources.Load<UINewLoadFactroyItem>(UINewLoadFactroyItem.PrefabsPath);
parent = parent == null ? scrollRect.content : parent;
var newItem = Instantiate<UINewLoadFactroyItem>(item, parent);
newItem.transform.localScale = Vector3.one;
return newItem;
}
}
}

View File

@@ -1,11 +0,0 @@
fileFormatVersion: 2
guid: 123a62780b21b4c4b9bb3e25558ef1a5
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,37 +0,0 @@
using System.Collections.Generic;
using System.Xml.Linq;
using UnityEngine;
using Studio;
namespace Studio.UVC.UI
{
public class UISidePanel : UISideLoadFactory
{
public override void Init()
{
base.Init();
}
public override void ExpandYsize()
{
var expandSize = 28f + 12f + 24f + 4f;
expandSize += itemTable.Count * 48f + 4f + ((itemTable.Count - 1) * 16f);
rect.sizeDelta = new Vector2(rect.sizeDelta.x, expandSize);
}
public override void SetItem(string titleName, Dictionary<string, string> entitiy)
{
string name = entitiy["KOR_EQP_NAME"].Split(' ')[1];
if (!itemTable.ContainsKey(name))
{
BaseSetLoadFactory(name);
ExpandYsize();
}
Text_Title.text = titleName;
itemTable[name].SetItem(name, entitiy["CAPACITY"], entitiy["MAXIMUM_CAPACITY"], entitiy["RACK_LOAD_COUNT"]);
AverageLoadFactory();
TotalLoadedQuantity();
}
}
}

View File

@@ -1,11 +0,0 @@
fileFormatVersion: 2
guid: 76518525062edbe4684f045de11d04eb
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,35 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using TMPro;
using UnityEngine.UI;
using XRLib.UI;
namespace Studio.UI
{
public class UI_AuthenticationItem : UIBase
{
public TMP_InputField InputField;
public TMP_Dropdown Dropdown;
public Button Button_Remove;
public enum EType
{
String,
Int,
Boolean,
}
private void Awake()
{
InputField = transform.Find(nameof(InputField)).GetComponent<TMP_InputField>();
Dropdown = transform.Find (nameof(Dropdown)).GetComponent<TMP_Dropdown>();
Button_Remove = transform.Find(nameof(Button_Remove)).GetComponent<Button>();
Button_Remove.onClick.AddListener(() => Destroy(gameObject));
List<string> options = Enum.GetNames(typeof(EType)).ToList();
Dropdown.ClearOptions();
Dropdown.AddOptions(options);
}
}
}

View File

@@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: 972a710d67574c74f8adf612eeb0cbe8