using Newtonsoft.Json;
using System;
using System.Net.Http.Headers;
using System.Net.Http;
using UnityEngine;
using UnityEngine.UI;
using static System.Net.Mime.MediaTypeNames;
using System.Threading.Tasks;
using static PortQuery;
using System.Collections.Generic;
using Unity.VisualScripting;
using System.Reflection;
using static UnityEditor.Progress;
///
/// 端口-编辑
///
public class RedactPort : MonoBehaviour
{
public Root myroot;
public PortQuery.Root root;
public Button save_bt;
public Dropdown port;//端口
public InputField portCode;//编号
public InputField portName;//名称
public InputField portType;//端口类型
public InputField deviceId;//所属设备
public InputField portModel;//型号
public Dropdown status;//状态
public Dropdown conDevice;//对联设备
public Dropdown conPort;//对联端口
private async void OnEnable()
{
if (gameObject.activeSelf)
{
#region 正式
//await initAsync("");
//port.options[0].text = myroot.port;
//portCode.text = myroot.portCode;
//portType.text = myroot.portType;
//deviceId.text = myroot.deviceId;
//portModel.text = myroot.portModel;
//status.value = myroot.status;
//if (!string.IsNullOrEmpty(myroot.conDevice))
//{
// //自动识别对联设备
// for (int i = 0; i < conDevice.options.Count; i++)
// {
// if (conDevice.options[i].text == myroot.conDevice)
// {
// conDevice.value = i;
// OnDropdownValueChanged_conDevice(i);
// break;
// }
// }
// //自动识别端口
// for (int i = 0; i < conPort.options.Count; i++)
// {
// if (conPort.options[i].text == myroot.conPort)
// {
// conPort.value = i;
// break;
// }
// }
//}
#endregion
}
}
///
/// 获取所有端口
///
///
///
public async Task initAsync(string token)
{
var jsonResult = await CombineJSON.GetJson_POST("https://jsonplaceholder.typicode.com/posts", token);
root = JsonConvert.DeserializeObject(jsonResult);
List port_list = new List();//端口
List conDevice_list = new List();//对联设备
foreach (var item in root.data)
{
port_list.Add(item.port);
conDevice_list.Add(item.conDevice);
}
conDevice.options.Clear();
conDevice.AddOptions(conDevice_list);
}
private void Start()
{
save_bt.onClick.AddListener(async () => await saveJson(""));
conDevice.onValueChanged.AddListener(OnDropdownValueChanged_conDevice);
}
///
/// 当 Dropdown 值发生改变时(根据对联设备添加该设备下所有端口)
///
///
public void OnDropdownValueChanged_conDevice(int index)
{
List conPort_list = new List();//对联端口
//conDevice.options[index]//对联设备ID
foreach (var item in root.data)
{
if (item.deviceId == conDevice.options[index].text)
{
conPort_list.Add(item.port);
}
}
conPort.options.Clear();
conPort.AddOptions(conPort_list);
}
private void Update()
{
}
///
/// 端口-编辑保存
///
///
public async Task saveJson(string token)
{
if (string.IsNullOrEmpty(myroot.id)) return;
string json = JsonConvert.SerializeObject(myroot);
Debug.Log(json);
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Post,
RequestUri = new Uri("http://wu4ifs.natappfree.cc/machineRoom/port/updateById"),
Headers =
{
{ "X-Token", token },
},
Content = new StringContent(json)
{
Headers =
{
ContentType = new MediaTypeHeaderValue("application/json")
}
}
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Debug.Log(body);
}
}
#region JSON
[System.Serializable]
public class Root
{
///
/// id
///
public string id;
///
/// 端口
///
public string port;
///
/// 编号
///
public string portCode;
///
/// 名称
///
public string portName;
///
/// 类型
///
public string portType;
///
/// 所属设备
///
public string deviceId;
///
/// 型号
///
public string portModel;
///
/// 是否启用:1-正常;0-禁用
///
public int status;
///
/// 对联设备
///
public string conDevice;
///
/// 对联端口
///
public string conPort;
///
/// 备注
///
public string remark;
}
#endregion
}