public ProtocolParameterViewModel(
            IDataApiClient dataApiClient,

            IReadonlyObjectDatabase <DataCollectionProtocolParameter> protocolParameterDatabase,
            DataCollectionProtocolParameter parameter = null)
        {
            valueViewModelFactory = new ParameterValueViewModelFactory(dataApiClient);

            NameAutoCompleteViewModel = new AutoCompleteTextBoxViewModel <DataCollectionProtocolParameter>(
                x => x.Name,
                protocolParameterDatabase,
                new ProtocolParameterAutoCompleteMatcher(),
                allowNewValue: true,
                objectBuilder: name => new DataCollectionProtocolParameter(name, null, false, DataCollectionProtocolParameterType.Text));
            NameAutoCompleteViewModel.PropertyChanged += NameAutoCompleteViewModel_PropertyChanged;
            var dataTypes = Task.Run(async() => await dataApiClient.ListCollectionNamesAsync(true)).Result;

            DataTypeAutoCompleteViewModel = new AutoCompleteTextBoxViewModel <string>(
                x => x,
                new FixedSetDatabase <string>(dataTypes.ToDictionary(x => x, x => x)),
                new StringAutoCompleteMatcher());
            DataTypeAutoCompleteViewModel.PropertyChanged += DataTypeAutoCompleteViewModel_PropertyChanged;
            ValueViewModel = valueViewModelFactory.Create(SelectedParameterType, DataTypeAutoCompleteViewModel.SelectedObject);
            if (parameter != null)
            {
                NameAutoCompleteViewModel.SelectedObject = Task.Run(() => protocolParameterDatabase.GetFromIdAsync(parameter.Id).Result).Result;
                IsMandatory           = parameter.IsMandatory;
                SelectedParameterType = parameter.Type;
                DataTypeAutoCompleteViewModel.SelectedObject = parameter.DataType;
                DefaultValue = parameter.DefaultValue;
            }
        }
示例#2
0
        public ProtocolParameterResponseViewModel(
            DataCollectionProtocolParameter parameter,
            ParameterValueViewModelFactory valueViewModelFactory,
            string response = null)
        {
            Name = parameter.Name;
            var value = response ?? parameter.DefaultValue;

            IsMandatory    = parameter.IsMandatory;
            ValueViewModel = valueViewModelFactory.Create(parameter.Type, parameter.DataType, value);
            ((IParameterValueViewModel)ValueViewModel).PropertyChanged += ProtocolParameterResponseViewModel_PropertyChanged;
        }
示例#3
0
        public ProjectParameterResponsesViewModel(
            IDataApiClient dataApiClient,

            IObjectDatabase <DataProject> dataProjectDatabase,
            DataProject dataProject)
        {
            this.dataProjectDatabase = dataProjectDatabase;
            DataProject = dataProject;
            var valueViewModelFactory = new ParameterValueViewModelFactory(dataApiClient);

            ParameterResponses = dataProject.Protocol.Parameters
                                 .Select(parameter =>
            {
                var response = dataProject.ParameterResponse.ContainsKey(parameter.Name)
                        ? dataProject.ParameterResponse[parameter.Name]
                        : null;
                return(new ProtocolParameterResponseViewModel(parameter, valueViewModelFactory, response));
            })
                                 .ToList();
            ParameterResponses.ForEach(vm => vm.PropertyChanged += ParameterResponse_PropertyChanged);
            ShowParameters = !IsProtocolParametersCompleted;

            SaveCommand = new AsyncRelayCommand(Save, () => IsProtocolParametersCompleted);
        }