public void Execute(object parameter) { ruleManagerViewModel.RuleValidationOutputs.Clear(); ruleManagerViewModel.ButtonsEnabled = false; List <Element> targetedElements = RuleExecutionUtils.GetTargetedElements ( ruleManagerViewModel.DocumentGuid, ruleManagerViewModel.SelectedRegexRule.RuleGuid ); if (targetedElements.Count < 1) { return; } ruleManagerViewModel.ColumnMarginWidth = new GridLength(10); ruleManagerViewModel.ColumnReportWidth = new GridLength(1, GridUnitType.Star); ruleManagerViewModel.WindowMinHeight = 300; ruleManagerViewModel.WindowHeight = 500; ruleManagerViewModel.WindowMaxHeight = 700; ruleManagerViewModel.WindowMinWidth = 600; ruleManagerViewModel.WindowWidth = 800; ruleManagerViewModel.WindowMaxWidth = 1500; ruleManagerViewModel.TrackingParameterName = ruleManagerViewModel.SelectedRegexRule.TrackingParameterObject.ParameterObjectName; ruleManagerViewModel.ProgressBarTotalNumberElementsProcessed = 0; ruleManagerViewModel.ProgressBarTotalNumberOfElements = targetedElements.Count; ruleManagerViewModel.ProgressBarPercentage = 0; foreach (Element element in targetedElements) { RuleValidationInfo ruleValidationInfo = new RuleValidationInfo { Element = element, DocumentGuid = ruleManagerViewModel.DocumentGuid, RegexRule = ruleManagerViewModel.SelectedRegexRule }; ruleManagerViewModel.RuleValidationOutputs.Add(new RuleValidationOutput(ruleValidationInfo)); ruleManagerViewModel.UpdateProgressBar(); } ruleManagerViewModel.NumberElementsValid = ruleManagerViewModel.RuleValidationOutputs.Count(x => x.RuleValidationResult == RuleValidationResult.Valid); string percentageValid = (ruleManagerViewModel.NumberElementsValid * 100.0 / ruleManagerViewModel.ProgressBarTotalNumberElementsProcessed).ToString("0.0"); // Saving the last-validated score to the RegexRule itself ruleManagerViewModel.SelectedRegexRule.ValidationScore = $"{percentageValid}%"; ExtensibleStorageUtils.UpdateRegexRuleInExtensibleStorage ( ruleManagerViewModel.DocumentGuid, ruleManagerViewModel.SelectedRegexRule.RuleGuid, ruleManagerViewModel.SelectedRegexRule ); ruleManagerViewModel.ProgressBarText = $"{ruleManagerViewModel.NumberElementsValid}/{ruleManagerViewModel.ProgressBarTotalNumberElementsProcessed} ({percentageValid}%) Valid"; ruleManagerViewModel.ButtonsEnabled = true; }
private void DataGrid_OnCellEditEnding(object sender, DataGridCellEditEndingEventArgs e) { if (!(e.EditingElement is TextBox textBox)) { return; } if (textBox.DataContext is RuleValidationOutput ruleValidationOutput) { // 1. Try to change actual parameter value Document document = RegularApp.DocumentCacheService.GetDocument(RuleManagerViewModel.DocumentGuid); Element element = document.GetElement(ruleValidationOutput.ElementId); RegexRule regexRule = RuleManagerViewModel.SelectedRegexRule; Parameter parameter = ParameterUtils.GetParameterById ( document, element, regexRule.TrackingParameterObject.ParameterObjectId ); if (parameter == null || parameter.IsReadOnly) { return; } using (Transaction transaction = new Transaction(document, $"DataSpec User Modifying Element {element.Id}")) { transaction.Start(); parameter.Set(textBox.Text); transaction.Commit(); RuleValidationResult ruleValidationResult = RuleExecutionUtils.ExecuteRegexRule ( RuleManagerViewModel.DocumentGuid, regexRule.RuleGuid, element ); ruleValidationOutput.RuleValidationResult = ruleValidationResult; ruleValidationOutput.ValidationText = ruleValidationResult.GetEnumDescription(); if (ruleValidationOutput.RuleValidationResult != RuleValidationResult.Valid) { return; } ruleValidationOutput.CompliantExample = ""; } } }