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;
            }
        }
Esempio n. 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;
        }