/// <summary> /// Constructor used for editing an existing format rule /// </summary> /// <param name="dashboardHelper">The dashboard helper to attach</param> public SimpleAssignDialog(DashboardHelper dashboardHelper, Rule_SimpleAssign assignRule) { InEditMode = true; this.dashboardHelper = dashboardHelper; this.AssignRule = assignRule; InitializeComponent(); SimpleAssignType assignType = assignRule.AssignmentType; switch (assignType) { case SimpleAssignType.YearsElapsed: cbxAssignmentType.SelectedIndex = 0; break; case SimpleAssignType.MonthsElapsed: cbxAssignmentType.SelectedIndex = 1; break; case SimpleAssignType.DaysElapsed: cbxAssignmentType.SelectedIndex = 2; break; case SimpleAssignType.HoursElapsed: cbxAssignmentType.SelectedIndex = 3; break; case SimpleAssignType.MinutesElapsed: cbxAssignmentType.SelectedIndex = 4; break; case SimpleAssignType.Round: cbxAssignmentType.SelectedIndex = 5; break; case SimpleAssignType.TextToNumber: cbxAssignmentType.SelectedIndex = 6; break; case SimpleAssignType.StringLength: cbxAssignmentType.SelectedIndex = 7; break; case SimpleAssignType.FindText: cbxAssignmentType.SelectedIndex = 8; break; case SimpleAssignType.Substring: cbxAssignmentType.SelectedIndex = 9; break; case SimpleAssignType.Uppercase: cbxAssignmentType.SelectedIndex = 10; break; case SimpleAssignType.Lowercase: cbxAssignmentType.SelectedIndex = 11; break; case SimpleAssignType.AddDays: cbxAssignmentType.SelectedIndex = 12; break; case SimpleAssignType.DetermineNonExistantListValues: cbxAssignmentType.SelectedIndex = 13; break; case SimpleAssignType.CountCheckedCheckboxesInGroup: cbxAssignmentType.SelectedIndex = 14; break; case SimpleAssignType.CountYesMarkedYesNoFieldsInGroup: cbxAssignmentType.SelectedIndex = 15; break; case SimpleAssignType.DetermineCheckboxesCheckedInGroup: cbxAssignmentType.SelectedIndex = 16; break; case SimpleAssignType.DetermineYesMarkedYesNoFieldsInGroup: cbxAssignmentType.SelectedIndex = 17; break; case SimpleAssignType.CountNumericFieldsBetweenValuesInGroup: cbxAssignmentType.SelectedIndex = 18; break; case SimpleAssignType.CountNumericFieldsOutsideValuesInGroup: cbxAssignmentType.SelectedIndex = 19; break; case SimpleAssignType.FindSumNumericFieldsInGroup: cbxAssignmentType.SelectedIndex = 20; break; case SimpleAssignType.FindMeanNumericFieldsInGroup: cbxAssignmentType.SelectedIndex = 21; break; case SimpleAssignType.FindMaxNumericFieldsInGroup: cbxAssignmentType.SelectedIndex = 22; break; case SimpleAssignType.FindMinNumericFieldsInGroup: cbxAssignmentType.SelectedIndex = 23; break; case SimpleAssignType.CountFieldsWithMissingInGroup: cbxAssignmentType.SelectedIndex = 24; break; case SimpleAssignType.CountFieldsWithoutMissingInGroup: cbxAssignmentType.SelectedIndex = 25; break; case SimpleAssignType.DetermineFieldsWithMissingInGroup: cbxAssignmentType.SelectedIndex = 26; break; case SimpleAssignType.NumberToText: cbxAssignmentType.SelectedIndex = 27; break; case SimpleAssignType.StripDate: cbxAssignmentType.SelectedIndex = 28; break; case SimpleAssignType.TextToDate: cbxAssignmentType.SelectedIndex = 29; break; } FillSelectionComboBoxes(); this.txtDestinationField.Text = AssignRule.DestinationColumnName; this.txtDestinationField.Enabled = false; }
private void btnOK_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(txtDestinationField.Text)) { MsgBox.ShowError(SimpleAssignmentStrings.ERROR_DESTINATION_FIELD_MISSING); this.DialogResult = DialogResult.None; return; } if (cbxAssignmentType.SelectedIndex < 0) { MsgBox.ShowError(SimpleAssignmentStrings.ERROR_TYPE_MISSING); this.DialogResult = DialogResult.None; return; } if ( (cbxParam1.Visible == true && string.IsNullOrEmpty(cbxParam1.Text)) || (cbxParam2.Visible == true && string.IsNullOrEmpty(cbxParam2.Text)) || (cbxParam3.Visible == true && string.IsNullOrEmpty(cbxParam3.Text)) ) { MsgBox.ShowError(SimpleAssignmentStrings.ERROR_PARAMS_BLANK); this.DialogResult = DialogResult.None; return; } bool overwritesPermanentField = false; if (this.AssignRule != null) { overwritesPermanentField = this.AssignRule.OverwritesPermanentField; } if (!editMode) { ColumnDataType columnDataType = ColumnDataType.Boolean | ColumnDataType.Numeric | ColumnDataType.Text; foreach (IDashboardRule rule in dashboardHelper.Rules) { if (rule is DataAssignmentRule) { DataAssignmentRule assignmentRule = rule as DataAssignmentRule; if (txtDestinationField.Text.ToLower().Equals(assignmentRule.DestinationColumnName.ToLower())) { MsgBox.ShowError(SimpleAssignmentStrings.ERROR_FIELD_ALREADY_EXISTS_WITH_RECODED_DATA); this.DialogResult = DialogResult.None; return; } } } foreach (string s in dashboardHelper.GetFieldsAsList(columnDataType)) { if (txtDestinationField.Text.ToLower().Equals(s.ToLower())) { System.Windows.Forms.DialogResult result = MsgBox.ShowQuestion(SimpleAssignmentStrings.OVERWRITE_FIELD_DATA); if (result != System.Windows.Forms.DialogResult.Yes && result != System.Windows.Forms.DialogResult.OK) { this.DialogResult = DialogResult.None; return; } else { overwritesPermanentField = true; } } } } string friendlyLabel = "Assign " + txtDestinationField.Text; string param1 = cbxParam1.Text.ToString(); string param2 = cbxParam2.Text.ToString(); string param3 = cbxParam3.Text.ToString(); List<string> parameters = new List<string>(); parameters.Add(param1); if (!string.IsNullOrEmpty(param2)) { parameters.Add(param2); } if (!string.IsNullOrEmpty(param3)) { parameters.Add(param3); } SimpleAssignType assignmentType = SimpleAssignType.YearsElapsed; //switch (cbxAssignmentType.SelectedItem.ToString()) switch (cbxAssignmentType.SelectedIndex) { case 0: //"Difference in years": friendlyLabel = friendlyLabel + " the difference in years between " + param1 + " and " + param2; assignmentType = SimpleAssignType.YearsElapsed; break; case 1: //"Difference in months": friendlyLabel = friendlyLabel + " the difference in months between " + param1 + " and " + param2; assignmentType = SimpleAssignType.MonthsElapsed; break; case 2: //"Difference in days": friendlyLabel = friendlyLabel + " the difference in days between " + param1 + " and " + param2; assignmentType = SimpleAssignType.DaysElapsed; break; case 3: //"Difference in hours": friendlyLabel = friendlyLabel + " the difference in hours between " + param1 + " and " + param2; assignmentType = SimpleAssignType.HoursElapsed; break; case 4: //"Difference in minutes": friendlyLabel = friendlyLabel + " the difference in minutes between " + param1 + " and " + param2; assignmentType = SimpleAssignType.MinutesElapsed; break; case 5: //"Round a number": friendlyLabel = friendlyLabel + " the rounded value of " + param1; if (!string.IsNullOrEmpty(param2)) { friendlyLabel = friendlyLabel + " to " + param2 + " decimal place(s)"; } assignmentType = SimpleAssignType.Round; break; case 6: //"Convert text data to numeric data": friendlyLabel = friendlyLabel + " the numeric representation of " + param1; assignmentType = SimpleAssignType.TextToNumber; break; case 7: //"Find the length of text data": friendlyLabel = friendlyLabel + " the length of the text contained in " + param1; assignmentType = SimpleAssignType.StringLength; break; case 8: //"Find the location of text data": friendlyLabel = friendlyLabel + " the starting location of the text " + param2 + " contained in " + param1; assignmentType = SimpleAssignType.FindText; break; case 9: //"Substring": friendlyLabel = friendlyLabel + " the portion of the text contained in " + param1 + " starting at position " + param2 + " and continuing for " + param3 + " characters"; assignmentType = SimpleAssignType.Substring; break; // New ones added after 7.0.9.48 case 10: //"Convert text characters to uppercase": friendlyLabel = friendlyLabel + " the upper case equivalent of " + param1; assignmentType = SimpleAssignType.Uppercase; break; case 11: //"Convert text characters to lower": friendlyLabel = friendlyLabel + " the lower case equivalent of " + param1; assignmentType = SimpleAssignType.Lowercase; break; // New ones added after 7.0.9.51 case 12: //"Add days to a date field": friendlyLabel = friendlyLabel + " the date value in " + param1 + " and add " + param2 + " days"; assignmentType = SimpleAssignType.AddDays; break; case 13: //"Determine if a drop-down list field contains a value not present in its code table": friendlyLabel = friendlyLabel + " a Yes if the value in " + param1 + " appears in its corresponding code table"; assignmentType = SimpleAssignType.DetermineNonExistantListValues; break; case 14: //"Count the number of checked checkboxes in a group": friendlyLabel = friendlyLabel + " the number of checked checkboxes in " + param1 + " (group field)"; assignmentType = SimpleAssignType.CountCheckedCheckboxesInGroup; break; case 15: //"Count the number of Yes-marked Yes/No fields in a group": friendlyLabel = friendlyLabel + " the number of Yes-marked Yes/No fields in " + param1 + " (group field)"; assignmentType = SimpleAssignType.CountYesMarkedYesNoFieldsInGroup; break; case 16: //"Determine if more than N checkboxes are checked in a group": friendlyLabel = friendlyLabel + " a Yes if more than " + param2 + " checkboxes are checked in " + param1 + " (group field)"; assignmentType = SimpleAssignType.DetermineCheckboxesCheckedInGroup; break; case 17: //"Determine if more than N Yes/No fields are marked Yes in a group": friendlyLabel = friendlyLabel + " a Yes if more than " + param2 + " Yes/No fields are marked Yes in " + param1 + " (group field)"; assignmentType = SimpleAssignType.DetermineYesMarkedYesNoFieldsInGroup; break; case 18: //"Count the number of numeric fields with values between X and Y in a group": friendlyLabel = friendlyLabel + " the number of numeric fields with values between (inclusive) " + param2 + " and " + param3 + " in " + param1 + " (group field)"; assignmentType = SimpleAssignType.CountNumericFieldsBetweenValuesInGroup; break; case 19: //"Count the number of numeric fields with values outside X and Y in a group": friendlyLabel = friendlyLabel + " the number of numeric fields with values outside " + param2 + " and " + param3 + " in " + param1 + " (group field)"; assignmentType = SimpleAssignType.CountNumericFieldsOutsideValuesInGroup; break; case 20: //"Find the sum of all numeric fields in a group": friendlyLabel = friendlyLabel + " the sum of all numeric fields in " + param1 + " (group field)."; if (param2 == dashboardHelper.Config.Settings.RepresentationOfYes) friendlyLabel = friendlyLabel + " Include Yes/No fields."; else friendlyLabel = friendlyLabel + " Do not include Yes/No fields."; if (param3 == dashboardHelper.Config.Settings.RepresentationOfYes) friendlyLabel = friendlyLabel + " Include Comment Legal fields."; else friendlyLabel = friendlyLabel + " Do not include Comment Legal fields."; assignmentType = SimpleAssignType.FindSumNumericFieldsInGroup; break; case 21: //"Find the mean of all numeric fields in a group": friendlyLabel = friendlyLabel + " the mean of all numeric fields in " + param1 + " (group field)."; if (param2 == dashboardHelper.Config.Settings.RepresentationOfYes) friendlyLabel = friendlyLabel + " Include Yes/No fields."; else friendlyLabel = friendlyLabel + " Do not include Yes/No fields."; if (param3 == dashboardHelper.Config.Settings.RepresentationOfYes) friendlyLabel = friendlyLabel + " Include Comment Legal fields."; else friendlyLabel = friendlyLabel + " Do not include Comment Legal fields."; assignmentType = SimpleAssignType.FindMeanNumericFieldsInGroup; break; case 22: //"Find the maximum value of all numeric fields in a group": friendlyLabel = friendlyLabel + " the maximum numeric value in " + param1 + " (group field)"; assignmentType = SimpleAssignType.FindMaxNumericFieldsInGroup; break; case 23: //"Find the minimum value of all numeric fields in a group": friendlyLabel = friendlyLabel + " the minimum numeric value in " + param1 + " (group field)"; assignmentType = SimpleAssignType.FindMinNumericFieldsInGroup; break; case 24: //"Count the number of fields with missing values in a group": friendlyLabel = friendlyLabel + " the number of fields with missing values in " + param1 + " (group field)"; assignmentType = SimpleAssignType.CountFieldsWithMissingInGroup; break; case 25: //"Count the number of fields without missing values in a group": friendlyLabel = friendlyLabel + " the number of fields without missing values in " + param1 + " (group field)"; assignmentType = SimpleAssignType.CountFieldsWithoutMissingInGroup; break; case 26: //"Determine if more than N fields have missing values in a group": friendlyLabel = friendlyLabel + " a Yes if more than " + param2 + " fields are missing in " + param1 + " (group field)"; assignmentType = SimpleAssignType.DetermineFieldsWithMissingInGroup; break; case 27: //"Convert numeric data to text data": friendlyLabel = friendlyLabel + " the text representation of " + param1; assignmentType = SimpleAssignType.NumberToText; break; case 28: //"Strip date": friendlyLabel = friendlyLabel + " the date component of " + param1; assignmentType = SimpleAssignType.StripDate; break; case 29: //"Convert text data to date data": friendlyLabel = friendlyLabel + " the date representation of " + param1; assignmentType = SimpleAssignType.TextToDate; break; } AssignRule = new Rule_SimpleAssign(this.dashboardHelper, friendlyLabel, txtDestinationField.Text, assignmentType, parameters); AssignRule.OverwritesPermanentField = overwritesPermanentField; this.DialogResult = DialogResult.OK; this.Close(); }