using System; using System.Collections.Generic; using UnityEngine; using WI; using static MQTT; namespace CHN { public class Canvas_Popup : CanvasBase { public Panel_CompleteAlramHistory panel_completealramhistory; public Panel_Menu panel_menu; public Panel_Library panel_library; public Panel_WorkConditionAnalysis panel_workconditionanalysis; public Panel_WorkTimeAnalysis panel_worktimeanalysis; public Panel_InjectionProduction panel_injectionproduction; public Panel_AssemblyProduction panel_assemblyproduction; [Label(typeof(UI_WorkAnalysis),nameof(UI_WorkAnalysis))] public UI_WorkAnalysis ui_workanalysis; //public Panel_MachineDashBoard panel_machinedashboard; private Dictionary machineDashboardTable = new(); public Action onClickSimple; public Action onClickDetail; public Action> simpleView; private List dashboards =new(); private RectTransform dashboardPoint; private float multiply = 1.1f; public override void AfterAwake() { dashboardPoint = transform.Find(nameof(dashboardPoint)); var asset = Resources.Load("Prefabs/UI/PRF_Panel_MachineDashBoard"); var machines = FindObjectsOfType(); foreach (var machine in machines) { var dashboard = Instantiate(asset, transform); dashboard.Close(); dashboard.simpleView += simpleView; machineDashboardTable.Add(machine, dashboard); dashboard.onClickSimple += onClickSimple; dashboard.onClickDetail += onClickDetail; dashboard.onClose += DashBoardClose; } } public void MachineDashBoardOpenFromLibrary(UI_LibraryButton libraryButton) { dashboards.Clear(); var machine = libraryButton.machine; machineDashboardTable[machine].OpenFromLibraryButton(libraryButton); if (!dashboards.Contains(machineDashboardTable[machine])) dashboards.Add(machineDashboardTable[machine]); SetDashBoardPosition(); } public void MachineDashBoardOpenFromOnClick(Machine clickMachine) { machineDashboardTable[clickMachine].OpenFromMachineClick(clickMachine); if (!dashboards.Contains(machineDashboardTable[clickMachine])) dashboards.Add(machineDashboardTable[clickMachine]); SetDashBoardPosition(); } public void MachineDashBoardClose(UI_LibraryButton button) { var machine = button.machine; machineDashboardTable[machine].Close(); } public void SimpleView(Machine machine, SimpleField data) { machineDashboardTable[machine].SimpleInfoView(data); } public void DetailView(Machine machine, SimpleField data) { machineDashboardTable[machine].DetailInfoView(data); } public void DashBoardClose(Panel_MachineDashBoard dashBoard) { dashboards.Remove(dashBoard); } public void SetDashBoardPosition() { if (dashboards.Count <= 0) return; var index = dashboards.Count - 1; var pos = dashboardPoint.position; for(int i = 1; i < dashboards.Count; i++) { pos = new Vector3(pos.x * multiply, pos.y / multiply, pos.z); } dashboards[index].transform.position = pos; dashboards[index].transform.SetAsLastSibling(); } public Panel_ControlSetting panel_controlsetting; public Panel_ProtocolSetting panel_protocolsetting; } }