public PresentationSettingsViewModel CreatePresentationSettingsViewModel(IMeasuringGroup measuringGroup,
                                                                                 IMeasuringGroupEditorViewModel measuringGroupEditorViewModel)
        {
            var res = new PresentationSettingsViewModel(measuringGroupEditorViewModel,
                                                        CreatePositioningInfoViewModels(measuringGroup.PresentationSettings));

            if (measuringGroup?.PresentationSettings != null)
            {
                foreach (var groupsOfElement in measuringGroup?.PresentationSettings?.GroupsOfElements)
                {
                    var presentationGroupViewModel = new PresentationGroupViewModel()
                    {
                        Header = groupsOfElement.Name
                    };
                    res.PresentationElementViewModels.Add(new PresentationElementViewModel(
                                                              presentationGroupViewModel)
                    {
                        PositioningInfoViewModel = InitializePositioningInfo(groupsOfElement.PositioningInfo,
                                                                             new PresentationPositionChangedSubscription(presentationGroupViewModel, res))
                    });
                }
            }

            return(res);
        }
Ejemplo n.º 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);
        }
        public IMeasuringGroupEditorViewModel CreateMeasuringGroupEditorViewModel(IMeasuringGroup measuringGroup = null)
        {
            if (measuringGroup == null)
            {
                measuringGroup      = _container.Resolve <IMeasuringGroup>();
                measuringGroup.Name = "New";
            }

            IMeasuringGroupEditorViewModel measuringGroupEditorViewModel =
                _container.Resolve <IMeasuringGroupEditorViewModel>();

            foreach (IMeasuringElement measuringElement in measuringGroup.MeasuringElements)
            {
                measuringGroupEditorViewModel.MeasuringElementEditorViewModels.Add(
                    _measuringElementEditorViewModelFactory.CreateMeasuringElementEditorViewModel(measuringElement));
            }
            measuringGroupEditorViewModel.PresentationSettingsViewModel = new PresentationSettingsViewModelFactory()
                                                                          .CreatePresentationSettingsViewModel(measuringGroup, measuringGroupEditorViewModel);
            measuringGroupEditorViewModel.PresentationSettingsViewModel.UpdateMeasuringElements();
            measuringGroupEditorViewModel.Header = measuringGroup.Name;
            return(measuringGroupEditorViewModel);
        }