using System; using System.Collections.Generic; using System.Collections.ObjectModel; using Aitex.Core.RT.Log; using MECF.Framework.Common.DataCenter; using OpenSEMI.ClientBase.ServiceProvider; namespace VirgoUI.Client.Models.History.ProcessHistory { public class ProcessHistoryProvider : IProvider { private static ProcessHistoryProvider _Instance = null; public static ProcessHistoryProvider Instance { get { if (_Instance == null) _Instance = new ProcessHistoryProvider(); return _Instance; } } public void Create() { } public ObservableCollection SearchRecipe() { ObservableCollection result = new ObservableCollection(); for (int i = 0; i < 5; i++) { RecipeItem r = new RecipeItem() { Chamber = "c " + i.ToString(), Recipe = "recipe " + i.ToString(), Selected = false, Status = "s " + i.ToString(), EndTime = "", StartTime = "" }; result.Add(r); } return result; } public ObservableCollection GetParameters1() { #region Test code ObservableCollection result = new ObservableCollection(); ParameterNode node1 = new ParameterNode() { Name = "Para Node 1", Selected = false, ChildNodes = new ObservableCollection() }; ParameterNode node2 = new ParameterNode() { Name = "Para Node 2", Selected = false, ChildNodes = new ObservableCollection() }; ParameterNode node3 = new ParameterNode() { Name = "Para Node 3", Selected = false, ChildNodes = new ObservableCollection() }; for (int i = 0; i < 5; i++) { ParameterNode node = new ParameterNode() { Name = node1.Name+"_"+i.ToString(), Selected = false, ChildNodes = new ObservableCollection() }; node1.ChildNodes.Add(node); } for (int i = 0; i < 3; i++) { ParameterNode node = new ParameterNode() { Name = node2.Name + "_" + i.ToString(), Selected = false, ChildNodes = new ObservableCollection() }; node2.ChildNodes.Add(node); } for (int i = 0; i <4 ; i++) { ParameterNode node = new ParameterNode() { Name = node3.Name + "_" + i.ToString(), Selected = false, ChildNodes = new ObservableCollection() }; node3.ChildNodes.Add(node); } result.Add(node1); result.Add(node2); result.Add(node3); return result; #endregion } public ObservableCollection GetParameters( ) { try { List dataList = (List)QueryDataClient.Instance.Service.GetConfig("System.NumericDataList"); dataList.Sort(); ObservableCollection rootNode = new ObservableCollection(); Dictionary indexer = new Dictionary(); foreach (string dataName in dataList) { string[] nodeName = dataName.Split('.'); ParameterNode parentNode = null; string pathName = ""; for (int i = 0; i < nodeName.Length; i++) { pathName = (i == 0) ? nodeName[i] : (pathName + "." + nodeName[i]); if (!indexer.ContainsKey(pathName)) { indexer[pathName] = new ParameterNode() { Name = pathName, ChildNodes = new ObservableCollection() }; if (parentNode == null) rootNode.Add(indexer[pathName]); else { parentNode.ChildNodes.Add(indexer[pathName]); } } parentNode = indexer[pathName]; } } return rootNode; } catch (Exception ex) { LOG.Write(ex); } #region Test code ObservableCollection result = new ObservableCollection(); ParameterNode node1 = new ParameterNode() { Name = "Para Node 1", Selected = false, ChildNodes = new ObservableCollection() }; ParameterNode node2 = new ParameterNode() { Name = "Para Node 2", Selected = false, ChildNodes = new ObservableCollection() }; ParameterNode node3 = new ParameterNode() { Name = "Para Node 3", Selected = false, ChildNodes = new ObservableCollection() }; for (int i = 0; i < 5; i++) { ParameterNode node = new ParameterNode() { Name = node1.Name + "_" + i.ToString(), Selected = false, ChildNodes = new ObservableCollection() }; node1.ChildNodes.Add(node); } for (int i = 0; i < 3; i++) { ParameterNode node = new ParameterNode() { Name = node2.Name + "_" + i.ToString(), Selected = false, ChildNodes = new ObservableCollection() }; node2.ChildNodes.Add(node); } for (int i = 0; i < 4; i++) { ParameterNode node = new ParameterNode() { Name = node3.Name + "_" + i.ToString(), Selected = false, ChildNodes = new ObservableCollection() }; node3.ChildNodes.Add(node); } result.Add(node1); result.Add(node2); result.Add(node3); return result; #endregion } } }