Example #1
0
 public MeasuringLoader(DeviceContext deviceContext, MeasuringSubscriptionSet measuringSubscriptionSet, IMeasuringMonitor measuringMonitor, RelayCommand dependentCommand, FragmentOptionToggleCommandViewModel readCycleCommand)
 {
     _deviceContext            = deviceContext;
     _measuringSubscriptionSet = measuringSubscriptionSet;
     _measuringMonitor         = measuringMonitor;
     this._dependentCommand    = dependentCommand;
     _readCycleCommand         = readCycleCommand;
 }
Example #2
0
        public IMeasuringGroupViewModel CreateMeasuringGroupViewModel(IMeasuringGroup measuringGroup,
                                                                      MeasuringSubscriptionSet measuringSubscriptionSet, DeviceContext deviceContext)
        {
            MeasuringGroupViewModel measuringGroupViewModel =
                _container.Resolve <IMeasuringGroupViewModel>() as MeasuringGroupViewModel;

            measuringGroupViewModel.Header = measuringGroup.Name;
            measuringGroupViewModel.MeasuringElementViewModels.Clear();

            foreach (var groupOfElements in measuringGroup.PresentationSettings.GroupsOfElements)
            {
                measuringGroupViewModel.PresentationMeasuringElements.Add(
                    new PresentationMeasuringElementViewModel(groupOfElements.PositioningInfo,
                                                              new PresentationGroupViewModel(groupOfElements.Name)));
            }

            foreach (IMeasuringElement measuringElement in measuringGroup.MeasuringElements)
            {
                var elementViewModel =
                    _measuringElementViewModelFactory.CreateMeasuringElementViewModel(measuringElement,
                                                                                      measuringGroup.Name);
                var positioningInfo =
                    measuringGroup.PresentationSettings.Elements.FirstOrDefault(info =>
                                                                                info.RelatedMeasuringElementId == measuringElement.Id);
                if (positioningInfo != null)
                {
                    measuringGroupViewModel.PresentationMeasuringElements.Add(
                        new PresentationMeasuringElementViewModel(positioningInfo.PositioningInfo, elementViewModel));
                }

                _measuringMemorySubscriptionFactory.AddSubscription(measuringSubscriptionSet, elementViewModel,
                                                                    measuringElement, measuringGroup.Name, deviceContext);

                measuringGroupViewModel.MeasuringElementViewModels.Add(elementViewModel);

                if (measuringElement is IControlSignal controlSignal)
                {
                    var vm = elementViewModel as IControlSignalViewModel;
                    vm.WriteValueCommand = new WriteDiscretCommand(deviceContext, controlSignal, vm).CreateCommand();
                }

                if (measuringElement is IDateTimeMeasuringElement dateTimeMeasuringElement)
                {
                    var vm = elementViewModel as IDateTimeMeasuringElementViewModel;
                    vm.SetTimeCommand = new WriteDateTimeCommand(vm, dateTimeMeasuringElement, deviceContext, false)
                                        .CreateCommand();
                    vm.SetSystemDateTimeCommand =
                        new WriteDateTimeCommand(vm, dateTimeMeasuringElement, deviceContext, true).CreateCommand();
                }
            }

            return(measuringGroupViewModel);
        }
Example #3
0
 public void AddSubscription(MeasuringSubscriptionSet measuringSubscriptionSet,
                             IMeasuringElementViewModel measuringElementViewModel, IMeasuringElement measuringElement, string groupName,
                             DeviceContext deviceContext)
 {
     if (measuringElementViewModel is IDiscretMeasuringElementViewModel discretMeasuringElement)
     {
         measuringSubscriptionSet.DiscreteSubscriptions.Add(CreateDiscreteSubscription(discretMeasuringElement,
                                                                                       measuringElement, groupName, deviceContext));
     }
     else if (measuringElementViewModel is IAnalogMeasuringElementViewModel analogMeasuringElement)
     {
         measuringSubscriptionSet.AnalogSubscriptions.Add(CreateAnalogSubscription(analogMeasuringElement,
                                                                                   measuringElement, groupName, deviceContext));
     }
     else if (measuringElementViewModel is IDateTimeMeasuringElementViewModel dateTimeMeasuringElementViewModel)
     {
         measuringSubscriptionSet.DateTimeSubscriptions.Add(
             CreateDateTimeSubscription(dateTimeMeasuringElementViewModel, measuringElement, groupName, deviceContext));
     }
 }