Пример #1
0
        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);
        }
Пример #2
0
        //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);
            }
        }
Пример #3
0
        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);
        }