|  | @@ -81,6 +81,14 @@ namespace VirgoUI.Client.Models.Platform.EFEM
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        public Visibility GripVisibility
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            get
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                return Visibility.Collapsed;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          public Visibility Foup2Visibility
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  |              get
 | 
	
	
		
			
				|  | @@ -172,7 +180,8 @@ namespace VirgoUI.Client.Models.Platform.EFEM
 | 
	
		
			
				|  |  |              set
 | 
	
		
			
				|  |  |              {
 | 
	
		
			
				|  |  |                  _PickSelectedModule = value;
 | 
	
		
			
				|  |  | -                PickSlots = GetSlotsByModule(_PickSelectedModule);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                PickSlots = GetSlotsByModule(_nameFromMap[_PickSelectedModule]);
 | 
	
		
			
				|  |  |                  PickSelectedSlot = 1;
 | 
	
		
			
				|  |  |                  NotifyOfPropertyChange("PickSelectedModule");
 | 
	
		
			
				|  |  |              }
 | 
	
	
		
			
				|  | @@ -188,7 +197,7 @@ namespace VirgoUI.Client.Models.Platform.EFEM
 | 
	
		
			
				|  |  |              set
 | 
	
		
			
				|  |  |              {
 | 
	
		
			
				|  |  |                  _PlaceSelectedModule = value;
 | 
	
		
			
				|  |  | -                PlaceSlots = GetSlotsByModule(_PlaceSelectedModule);
 | 
	
		
			
				|  |  | +                PlaceSlots = GetSlotsByModule(_nameFromMap[_PlaceSelectedModule]);
 | 
	
		
			
				|  |  |                  PlaceSelectedSlot = 1;
 | 
	
		
			
				|  |  |                  NotifyOfPropertyChange("PlaceSelectedModule");
 | 
	
		
			
				|  |  |              }
 | 
	
	
		
			
				|  | @@ -550,6 +559,9 @@ namespace VirgoUI.Client.Models.Platform.EFEM
 | 
	
		
			
				|  |  |              get { return GetWaferSize(PMBWaferSize); }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        [Subscription("Buffer.WaferSize")]
 | 
	
		
			
				|  |  | +        public string BufferWaferSize { get; set; }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          [Subscription("EFEM.SmallWafer")]
 | 
	
		
			
				|  |  |          public int SmallWafer { get; set; }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -825,17 +837,29 @@ namespace VirgoUI.Client.Models.Platform.EFEM
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        private Dictionary<string, string> _nameFromMap = new Dictionary<string, string>() {
 | 
	
		
			
				|  |  | +            {"LP1","LP1" },
 | 
	
		
			
				|  |  | +            {"LP2", "LP2" },
 | 
	
		
			
				|  |  | +            {"Aligner","Aligner1" },
 | 
	
		
			
				|  |  | +            {"Aligner2","Aligner2" },
 | 
	
		
			
				|  |  | +            {"Cooling1","Cooling1" },
 | 
	
		
			
				|  |  | +            {"Cooling2","Cooling2" },
 | 
	
		
			
				|  |  | +            {"Cooling","Buffer" },
 | 
	
		
			
				|  |  | +            {"PMA","PMA" },
 | 
	
		
			
				|  |  | +            {"PMB","PMB" }
 | 
	
		
			
				|  |  | +        };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          public EFEMViewModel()
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  |              this.DisplayName = "EFEM";
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            _pickModules = new List<string>() { "LP1", "LP2", "Aligner1", "Aligner2", "Cooling1", "Cooling2", "Buffer" };
 | 
	
		
			
				|  |  | -            _mapModules = new List<string>() { "LP1", "LP2", "Buffer" };
 | 
	
		
			
				|  |  | +            _pickModules = new List<string>() { "LP1", "LP2", "Aligner", "Aligner2", "Cooling1", "Cooling2", "Cooling" };
 | 
	
		
			
				|  |  | +            _mapModules = new List<string>() { "LP1", "LP2" };//new List<string>() { "LP1", "LP2", "Cooling" };
 | 
	
		
			
				|  |  |              _extendModules = new List<string>() { "PMA", "PMB" };
 | 
	
		
			
				|  |  |              var installModules = (string)QueryDataClient.Instance.Service.GetConfig($"System.InstalledModules");
 | 
	
		
			
				|  |  |              if(!string.IsNullOrWhiteSpace(installModules))
 | 
	
		
			
				|  |  |              {
 | 
	
		
			
				|  |  | -                var delMods = _pickModules.Where(p=> !installModules.Contains(p)).ToList();
 | 
	
		
			
				|  |  | +                var delMods = _pickModules.Where(p=> !installModules.Contains(_nameFromMap[p])).ToList();
 | 
	
		
			
				|  |  |                  if(delMods != null && delMods.Count() > 0)
 | 
	
		
			
				|  |  |                  {
 | 
	
		
			
				|  |  |                      delMods.ForEach(p => {
 | 
	
	
		
			
				|  | @@ -855,6 +879,7 @@ namespace VirgoUI.Client.Models.Platform.EFEM
 | 
	
		
			
				|  |  |              _RobotSpeeds = new List<string>() { "Full", "High", "Medium", "Low", "Home", "Jog" };
 | 
	
		
			
				|  |  |              _HomeModules = new List<string>() { "EFEM", "AllAxes", "EE1", "EE2", "Theta", "X", "Z" };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +            
 | 
	
		
			
				|  |  |              PickSelectedModule = _pickModules[0];
 | 
	
		
			
				|  |  |              PlaceSelectedModule = _pickModules[0];
 | 
	
		
			
				|  |  |              ExtendSelectedModule = _extendModules[0];
 | 
	
	
		
			
				|  | @@ -1000,29 +1025,31 @@ namespace VirgoUI.Client.Models.Platform.EFEM
 | 
	
		
			
				|  |  |          public void RobotPick()
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  |              if (MenuPermission != 3) return;
 | 
	
		
			
				|  |  | -            string ws = PickSelectedModule == ModuleName.LP1.ToString() ? LP1WaferSize :
 | 
	
		
			
				|  |  | -                PickSelectedModule == ModuleName.LP2.ToString() ? LP2WaferSize :
 | 
	
		
			
				|  |  | -                PickSelectedModule == ModuleName.Aligner1.ToString() ? Aligner1WaferSize :
 | 
	
		
			
				|  |  | -                PickSelectedModule == ModuleName.Aligner2.ToString() ? Aligner2WaferSize :
 | 
	
		
			
				|  |  | -                PickSelectedModule == ModuleName.Cooling2.ToString() ? Cooling2WaferSize :
 | 
	
		
			
				|  |  | -                PickSelectedModule == ModuleName.Cooling1.ToString() ? Cooling1WaferSize : throw new ArgumentOutOfRangeException();
 | 
	
		
			
				|  |  | +            string ws = _nameFromMap[PickSelectedModule] == ModuleName.LP1.ToString() ? LP1WaferSize :
 | 
	
		
			
				|  |  | +                _nameFromMap[PickSelectedModule] == ModuleName.LP2.ToString() ? LP2WaferSize :
 | 
	
		
			
				|  |  | +                _nameFromMap[PickSelectedModule] == ModuleName.Aligner1.ToString() ? Aligner1WaferSize :
 | 
	
		
			
				|  |  | +                _nameFromMap[PickSelectedModule] == ModuleName.Aligner2.ToString() ? Aligner2WaferSize :
 | 
	
		
			
				|  |  | +                _nameFromMap[PickSelectedModule] == ModuleName.Cooling2.ToString() ? Cooling2WaferSize :
 | 
	
		
			
				|  |  | +                _nameFromMap[PickSelectedModule] == ModuleName.Cooling1.ToString() ? Cooling1WaferSize :
 | 
	
		
			
				|  |  | +                _nameFromMap[PickSelectedModule] == ModuleName.Buffer.ToString() ? BufferWaferSize : throw new ArgumentOutOfRangeException();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              InvokeClient.Instance.Service.DoOperation($"{ModuleName.EfemRobot}.{EfemOperation.Pick}",
 | 
	
		
			
				|  |  | -                PickSelectedModule, PickSelectedSlot - 1, ws, PickSelectedBlade);
 | 
	
		
			
				|  |  | +                _nameFromMap[PickSelectedModule], PickSelectedSlot - 1, ws, PickSelectedBlade);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          public void RobotPlace()
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  |              if (MenuPermission != 3) return;
 | 
	
		
			
				|  |  | -            string ws = PlaceSelectedModule == ModuleName.LP1.ToString() ? LP1WaferSize :
 | 
	
		
			
				|  |  | -                        PlaceSelectedModule == ModuleName.LP2.ToString() ? LP2WaferSize :
 | 
	
		
			
				|  |  | -                        PlaceSelectedModule == ModuleName.Aligner1.ToString() ? Aligner1WaferSize :
 | 
	
		
			
				|  |  | -                        PlaceSelectedModule == ModuleName.Aligner2.ToString() ? Aligner2WaferSize :
 | 
	
		
			
				|  |  | -                        PlaceSelectedModule == ModuleName.Cooling1.ToString() ? Cooling1WaferSize :
 | 
	
		
			
				|  |  | -                        PlaceSelectedModule == ModuleName.Cooling2.ToString() ? Cooling2WaferSize : throw new ArgumentOutOfRangeException();
 | 
	
		
			
				|  |  | +            string ws = _nameFromMap[PlaceSelectedModule] == ModuleName.LP1.ToString() ? LP1WaferSize :
 | 
	
		
			
				|  |  | +                        _nameFromMap[PlaceSelectedModule] == ModuleName.LP2.ToString() ? LP2WaferSize :
 | 
	
		
			
				|  |  | +                        _nameFromMap[PlaceSelectedModule] == ModuleName.Aligner1.ToString() ? Aligner1WaferSize :
 | 
	
		
			
				|  |  | +                        _nameFromMap[PlaceSelectedModule] == ModuleName.Aligner2.ToString() ? Aligner2WaferSize :
 | 
	
		
			
				|  |  | +                        _nameFromMap[PlaceSelectedModule] == ModuleName.Cooling1.ToString() ? Cooling1WaferSize :
 | 
	
		
			
				|  |  | +                        _nameFromMap[PlaceSelectedModule] == ModuleName.Cooling2.ToString() ? Cooling2WaferSize :
 | 
	
		
			
				|  |  | +                         _nameFromMap[PlaceSelectedModule] == ModuleName.Buffer.ToString() ? BufferWaferSize : throw new ArgumentOutOfRangeException();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              InvokeClient.Instance.Service.DoOperation($"{ModuleName.EfemRobot}.{EfemOperation.Place}",
 | 
	
		
			
				|  |  | -                PlaceSelectedModule, PlaceSelectedSlot - 1, ws, PlaceSelectedBlade);
 | 
	
		
			
				|  |  | +                _nameFromMap[PlaceSelectedModule], PlaceSelectedSlot - 1, ws, PlaceSelectedBlade);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          public void RobotExtend()
 | 
	
	
		
			
				|  | @@ -1040,7 +1067,7 @@ namespace VirgoUI.Client.Models.Platform.EFEM
 | 
	
		
			
				|  |  |          public void RobotMap()
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  |              if (MenuPermission != 3) return;
 | 
	
		
			
				|  |  | -            InvokeClient.Instance.Service.DoOperation($"{MapSelectedModule}.{EfemOperation.Map}");
 | 
	
		
			
				|  |  | +            InvokeClient.Instance.Service.DoOperation($"{_nameFromMap[MapSelectedModule]}.{EfemOperation.Map}");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          public void RobotGrip()
 |