public OpcDaTagFilterEditingViewModel(OpcTagFilterViewModel filter)
		{
			Title = "Редактирование фильтра OPC DA тега";
			SelectedOpcDaTagFilter = filter;

			_Filters = ClientManager.SystemConfiguration.AutomationConfiguration.OpcDaTagFilters
			.Where(f => f.UID != filter.OpcDaTagFilter.UID);

			if ((filter.OpcDaServer == null) || (filter.OpcDaTag == null))
			{
				Name = SelectedOpcDaTagFilter.OpcDaTagFilter.Name;
				Description = SelectedOpcDaTagFilter.OpcDaTagFilter.Description;
				Hysteresis = SelectedOpcDaTagFilter.OpcDaTagFilter.Hysteresis.ToString();
			}
			else
			{
				SelectedOpcDaServer = OpcDaServers
					.FirstOrDefault(srv => srv.Tags
						.Any(tag => tag.Uid == SelectedOpcDaTagFilter.OpcDaTagFilter.TagUID));

				if (SelectedOpcDaServer != null)
				{
					SelectedOpcDaTag = OpcDaServers.SelectMany(srv => srv.Tags)
						.FirstOrDefault(tag => tag.Uid == SelectedOpcDaTagFilter.OpcDaTagFilter.TagUID);
					Name = SelectedOpcDaTagFilter.OpcDaTagFilter.Name;
					Description = SelectedOpcDaTagFilter.OpcDaTagFilter.Description;
					Hysteresis = SelectedOpcDaTagFilter.OpcDaTagFilter.Hysteresis.ToString();
				}
			}
		}
		void InitializeFilters()
		{
			if (Filters == null)
				Filters = new ObservableCollection<OpcTagFilterViewModel>();
			else
				Filters.Clear();

			foreach (var filter in ClientManager.SystemConfiguration.AutomationConfiguration.OpcDaTagFilters
				.FindAll(x => !Procedure.OpcDaTagFiltersUids.Contains(x.UID)))
			{
				var filterViewModel = new OpcTagFilterViewModel(filter);
				Filters.Add(filterViewModel);
			}
			OnPropertyChanged(() => Filters);
			SelectedFilter = Filters.FirstOrDefault();
		}
예제 #3
0
		void Initialize()
		{
			Filters = new ObservableCollection<FilterViewModel>();
			foreach (var filter in ClientManager.SystemConfiguration.JournalFilters)
			{
				if (Procedure.FiltersUids.Contains(filter.UID))
				{
					var filterViewModel = new FilterViewModel(filter);
					Filters.Add(filterViewModel);
				}
			}

			OpcTagFilters = new ObservableCollection<OpcTagFilterViewModel>();
			foreach (var opcFilter in ClientManager.SystemConfiguration.AutomationConfiguration.OpcDaTagFilters)
			{
				if (Procedure.OpcDaTagFiltersUids.Contains(opcFilter.UID))
				{
					var opcFilterViewModel = new OpcTagFilterViewModel(opcFilter);
					OpcTagFilters.Add(opcFilterViewModel);
				}
			}
		}
		protected override bool Save()
		{
			double hysteresis;

			var type = OpcDaTagFilter.GetExplicitType(SelectedOpcDaTag.TypeNameOfValue);

			if (type != null)
			{
				switch (type.Value)
				{
					case ExplicitType.Integer:
						{
							hysteresis = Double.Parse(Hysteresis); break;
						}
					case ExplicitType.Float:
						{
							hysteresis = Double.Parse(Hysteresis); break;
						}
					case ExplicitType.Boolean:
						{
							hysteresis = 0; break;
						}
					default:
						{
							return false;
						}
				}

				OpcDaTagFilterResult =
					new OpcTagFilterViewModel(new OpcDaTagFilter(Guid.NewGuid(), Name,
						Description == null ? string.Empty : Description,
						SelectedOpcDaTag.Uid, hysteresis, type.Value));
				return true;
			}
			else
			{
				return false;
			}
			//return base.Save();
		}
		public void ListWasChanged(Guid filterUID)
		{
			var newFilter = ClientManager.SystemConfiguration.AutomationConfiguration.OpcDaTagFilters
				.FirstOrDefault(filter => filter.UID == filterUID);

			if (newFilter != null)
			{
				if (!Filters.Any(vm => vm.OpcDaTagFilter.UID == newFilter.UID))
				{
					var filter = new OpcTagFilterViewModel(newFilter);
					Filters.Add(filter);
					SelectedFilter = filter;
				}
			}
		}
예제 #6
0
		public void UpdateContent()
		{
			foreach (var filter in Filters
				.Where(x => !ClientManager.SystemConfiguration.JournalFilters.Any(y => y.UID == x.Filter.UID)).ToList())
				Filters.Remove(filter);

			OpcTagFilters.Clear();

			foreach (var opcFilter in ClientManager.SystemConfiguration.AutomationConfiguration.OpcDaTagFilters)
			{
				if (Procedure.OpcDaTagFiltersUids.Contains(opcFilter.UID))
				{
					var opcFilterViewModel = new OpcTagFilterViewModel(opcFilter);
					OpcTagFilters.Add(opcFilterViewModel);
				}
			}

			SelectedOpcDaTagFilter = OpcTagFilters.FirstOrDefault();
		}
예제 #7
0
		void OnCreateOpcTagFilter()
		{
			var opcDaTagFilterCreationViewModel = new OpcDaTagFilterCreationViewModel();
			if (DialogService.ShowModalWindow(opcDaTagFilterCreationViewModel))
			{
				var filterViewModel = opcDaTagFilterCreationViewModel.OpcDaTagFilterResult;
				ClientManager.SystemConfiguration.AutomationConfiguration.OpcDaTagFilters.Add(filterViewModel.OpcDaTagFilter);
				var newFilter = new OpcTagFilterViewModel(filterViewModel.OpcDaTagFilter);
				Filters.Add(newFilter);
				SelectedFilter = newFilter;
				ServiceFactory.SaveService.AutomationChanged = true;
				ServiceFactoryBase.Events.GetEvent<CreateOpcDaTagFilterEvent>().Publish(filterViewModel.OpcDaTagFilter.UID);
			}
		}