void updateFieldEditor(fieldProperties module) { //first we clear it clearFieldEditor(); clearGroupPanel(); stackFieldAttributes.Visibility = Visibility.Visible; stackGroupAttributes.Visibility = Visibility.Collapsed; setValue(fieldTextUniqueId, module.uniqueId); var allRadioButtons = (from panel in new List <StackPanel> { dataTypeParent1, dataTypeParent2 } let children = panel.Children.OfType <RadioButton>() from child in children select child).ToList(); setValue(module.dataType, allRadioButtons); if (module.fieldChoices != null) { setValue(textFieldChoices, string.Join(Environment.NewLine, module.fieldChoices)); } setValue(fieldTextChoicesName, module.choicesName); setValue(fieldTextQuestionName, module.questionName); setValue(fieldTextQuestion, module.question); if (module.numberConstraints != null) { setValue(fieldTextMinimum, module.numberConstraints.minimum); setValue(fieldTextMaximum, module.numberConstraints.maximum); } if (module.textConstraints != null) { setValue(fieldTextMaxLength, module.textConstraints.maxLength); } setValue(module.isRequired, fieldIsRequiredYes, fieldIsRequiredNo); setValue(module.isIndexed, fieldIsIndexedYes, fieldIsIndexedNo); if (module.dateConstraints != null) { setValue(fieldTextDateMin, module.dateConstraints.minimum); setValue(fieldTextDateMax, module.dateConstraints.maximum); } //setValue(textSubModuleName, module.name); //setValue(textSubModuleVersion, module.version); //setValue(textSubModuleDescription, module.description); }
//addField_click private void addField_click(object sender, RoutedEventArgs e) { //we get the current activity var activityId = getValue(textSubModuleId); if (string.IsNullOrWhiteSpace(activityId) && sender != null) { showDialog("Please select an activity first"); return; } var currentActivity = _currentModule.subModules .FirstOrDefault(t => t.id == activityId); if (currentActivity == null && sender != null) { showDialog("An unknown error occurred. Could not find named activity"); return; } if (sender == null && (currentActivity == null || string.IsNullOrWhiteSpace(activityId))) { return; } //we read the field values and clear the form //we check if we have a field id and find the target record var fieldId = getValue(fieldTextUniqueId); fieldProperties currentField = null; if (string.IsNullOrWhiteSpace(fieldId)) { //either is in group mode or is a new record if (gridActivityFields.SelectedItems != null && gridActivityFields.SelectedItems.Count > 1) { //is in group mode //we get all the fields var fields = gridActivityFields.SelectedItems; updateGroupProperties(fields.Cast <fieldProperties>().ToList()); updateFieldPropertiesList(currentActivity); return; } else { //means this is a new record currentField = new fieldProperties(); //todo: make changes to a copy and add to main list once user confirms //setValue(fieldTextUniqueId, currentField.uniqueId); } } else { //we attempt to locate it //todo: make changes to a copy and add to main list once user confirms var oldField = currentActivity.moduleFields.FirstOrDefault(t => t.uniqueId == fieldId); if (oldField == null) { showDialog("An unknown error occurred. Could not find named field"); return; } //we deepclone it currentField = cloneItem(oldField); } if (updateFieldProperties(currentField)) { //update activity fields currentActivity.moduleFields.RemoveAll(t => t.uniqueId == fieldId); if (string.IsNullOrWhiteSpace(currentField.uniqueId)) { currentField.uniqueId = Guid.NewGuid().ToString("N"); currentField.position = currentActivity.moduleFields.Count + 1; } //sortFields(currentActivity.moduleFields); //renumberFields(currentActivity); currentActivity.moduleFields.Add(currentField); updateFieldPropertiesList(currentActivity); } }
bool updateFieldProperties(fieldProperties module) { var toRetun = false; var validationRes = textRequiredValidationRules.ValidateControl(fieldTextQuestion); if (!validationRes.IsValid) { return(toRetun); } module.question = textRequiredValidationRules.getValue(fieldTextQuestion); var allRadioButtons = (from panel in new List <StackPanel> { dataTypeParent1, dataTypeParent2 } let children = panel.Children.OfType <RadioButton>() from child in children select child).ToList(); var datatype = getCheckedItem(allRadioButtons); if (string.IsNullOrWhiteSpace(datatype)) { setValue("Text", allRadioButtons); datatype = getCheckedItem(allRadioButtons); } module.dataType = datatype; validationRes = textRequiredValidationRules.ValidateControl(fieldTextQuestionName); if (!validationRes.IsValid) { return(toRetun); } module.questionName = textRequiredValidationRules.getValue(fieldTextQuestionName); module.isRequired = getCheckedItem(fieldIsRequiredYes, fieldIsRequiredNo); module.isIndexed = getCheckedItem(fieldIsIndexedYes, fieldIsIndexedNo); module.numberConstraints = null; module.dateConstraints = null; module.textConstraints = null; if (module.dataType == "Single Select" || module.dataType == "Multiple Select") { var res = multiLineValidationRules.ValidateControl(textFieldChoices); if (!res.IsValid) { return(toRetun); } var choices = multiLineValidationRules.getValueMultiline(textFieldChoices); module.fieldChoices = choices; module.choicesName = getValue(fieldTextChoicesName); } else if (module.dataType == "Number" || module.dataType == "Integer") { var res = intValidationRule.ValidateControl(fieldTextMinimum); if (!res.IsValid) { return(toRetun); } res = intValidationRule.ValidateControl(fieldTextMaximum); if (!res.IsValid) { return(toRetun); } res = minmaxValidationRule.ValidateControl(fieldTextMinimum, fieldTextMaximum); if (!res.IsValid) { return(toRetun); } var numberConstraints = minmaxValidationRule. getValues(fieldTextMinimum, fieldTextMaximum); if (numberConstraints.minimum == Constants.NULL_NUM) { numberConstraints = null; } module.numberConstraints = numberConstraints; } else if (module.dataType == "Date") { var res = dateValidationRules.ValidateControl(fieldTextDateMin); if (!res.IsValid) { return(toRetun); } res = dateValidationRules.ValidateControl(fieldTextDateMax); if (!res.IsValid) { return(toRetun); } res = dateMinMaxValidationRules.ValidateControl( fieldTextDateMin, fieldTextDateMax); if (!res.IsValid) { return(toRetun); } var numberConstraints = dateMinMaxValidationRules. getValues(fieldTextDateMin, fieldTextDateMax); if (numberConstraints.minimum == Constants.NULL_NUM) { numberConstraints = null; } module.dateConstraints = numberConstraints; } else if (module.dataType == "Text") { //DateMinMaxValidationRules var res = intValidationRule.ValidateControl(fieldTextMaxLength); if (!res.IsValid) { return(toRetun); } res = gtZeroValidationRules.ValidateControl(fieldTextMaxLength); if (!res.IsValid) { return(toRetun); } var maxLength = intValidationRule.getValue(fieldTextMaxLength); if (maxLength != Constants.NULL_NUM) { module.textConstraints = new textConstraints() { maxLength = maxLength }; } } //we clear the current view clearFieldEditor(); return(true); }