121 lines
4.3 KiB
C#
121 lines
4.3 KiB
C#
using UnityEngine;
|
|
using XRLib.UI;
|
|
using TMPro;
|
|
using UnityEngine.UI;
|
|
using System.Collections.Generic;
|
|
using System;
|
|
using Studio.Util;
|
|
using Studio.Conifg;
|
|
using Studio.Auth;
|
|
|
|
namespace Studio.UI
|
|
{
|
|
public class UI_APIConnection : UIBase
|
|
{
|
|
private TMP_InputField InputField_Domain;
|
|
private TMP_InputField InputField_Port;
|
|
private Button Button_AddURLItem;
|
|
private Button Button_TestAPI;
|
|
private Button Button_Remove;
|
|
private RectTransform URLItemContent;
|
|
private RectTransform AddURL;
|
|
|
|
private UI_InputURLItem prf_InputURLItem;
|
|
private List<UI_InputURLItem> inputURLItems = new List<UI_InputURLItem>();
|
|
|
|
public Action onTestAPI;
|
|
public Action<UI_APIConnection> onRemoveAPIConnectionItem;
|
|
|
|
public Panel_DataRepository panel_DataRepository;
|
|
|
|
public override void AfterAwake()
|
|
{
|
|
prf_InputURLItem = Resources.Load<UI_InputURLItem>("Prefabs/UI/PRF_InputURLItem");
|
|
|
|
Button_AddURLItem.onClick.AddListener(OnClickAddURLItemButton);
|
|
Button_TestAPI.onClick.AddListener(OnClickTestAPIButton);
|
|
Button_Remove.onClick.AddListener(OnClickRemoveItemButton);
|
|
|
|
inputURLItems.Clear();
|
|
}
|
|
private void OnClickAddURLItemButton()
|
|
{
|
|
var item = Instantiate(prf_InputURLItem, URLItemContent);
|
|
item.onRemoveItem += RemoveURLItem;
|
|
|
|
AddURLItem(item);
|
|
AddURL.transform.SetAsLastSibling();
|
|
}
|
|
private async void OnClickTestAPIButton()
|
|
{
|
|
onTestAPI?.Invoke();
|
|
|
|
// API 연결
|
|
// ConfigConnected.APIDomain = InputField_Domain.text;
|
|
// ConfigConnected.APIPort = int.Parse(InputField_Port.text);
|
|
//StudioService.instance.ConnectMQTT();
|
|
string loginURL = $"http://{InputField_Domain.text}:{InputField_Port.text}/api/auth/token";
|
|
await AuthService.Instance.Login(loginURL, "sdi", "@SdiDT1!");
|
|
|
|
foreach (UI_InputURLItem item in inputURLItems)
|
|
{
|
|
string url = $"http://{InputField_Domain.text}:{InputField_Port.text}/api/{item.InputField_URL.text}";
|
|
await StudioService.instance.LoadBaseData(url);
|
|
//panel_DataRepository = FindAnyObjectByType<Panel_DataRepository>(FindObjectsInactive.Include);
|
|
//panel_DataRepository.apiConnected = true;
|
|
}
|
|
}
|
|
private void OnClickRemoveItemButton()
|
|
{
|
|
onRemoveAPIConnectionItem?.Invoke(this);
|
|
}
|
|
private void AddURLItem(UI_InputURLItem item)
|
|
{
|
|
var verticalLayoutGroup = URLItemContent.GetComponent<VerticalLayoutGroup>();
|
|
var sizeDelta = rectTransform.sizeDelta;
|
|
sizeDelta.y += item.rectTransform.rect.height + verticalLayoutGroup.spacing;
|
|
rectTransform.sizeDelta = sizeDelta;
|
|
|
|
inputURLItems.Add(item);
|
|
}
|
|
private void RemoveURLItem(UI_InputURLItem item)
|
|
{
|
|
var verticalLayoutGroup = URLItemContent.GetComponent<VerticalLayoutGroup>();
|
|
var sizeDelta = rectTransform.sizeDelta;
|
|
sizeDelta.y -= item.rectTransform.rect.height + verticalLayoutGroup.spacing;
|
|
rectTransform.sizeDelta = sizeDelta;
|
|
|
|
inputURLItems.Remove(item);
|
|
Destroy(item.gameObject);
|
|
}
|
|
public APIConnection GetAPIConnection()
|
|
{
|
|
var apiConnection = new APIConnection();
|
|
apiConnection.domain = InputField_Domain.text;
|
|
apiConnection.port = InputField_Port.text;
|
|
|
|
foreach(var item in inputURLItems)
|
|
{
|
|
var url = item.GetURL();
|
|
apiConnection.urls.Add(url);
|
|
}
|
|
return apiConnection;
|
|
}
|
|
public void SetAPIConnection(APIConnection apiConnection)
|
|
{
|
|
InputField_Domain.text = apiConnection.domain;
|
|
InputField_Port.text = apiConnection.port;
|
|
|
|
foreach(var url in apiConnection.urls)
|
|
{
|
|
var item = Instantiate(prf_InputURLItem, URLItemContent);
|
|
item.onRemoveItem += RemoveURLItem;
|
|
item.SetURL(url);
|
|
|
|
AddURLItem(item);
|
|
Button_AddURLItem.transform.SetAsLastSibling();
|
|
}
|
|
}
|
|
}
|
|
}
|