public void RenderMeasure( StringBuilder sbFieldNames, StringBuilder sbFieldTypes, ReportDefinitionVariable measure ) { foreach (ReportDefinitionScore category in measure.Scores) { if (category.Hidden) { continue; } string categoryLabel = category.Label.Trim(); if (categoryLabel == "") { categoryLabel = "Value"; } sbFieldNames.Append("\"" + categoryLabel + "\","); sbFieldTypes.Append("\"float\","); if (category.Variable.IsFake) { this.RenderPercentage = true; sbFieldNames.Append("\"Percentage\","); sbFieldTypes.Append("\"float\","); } } }
public void RenderDimension( StringBuilder sbFieldNames, StringBuilder sbFieldTypes, ReportDefinitionVariable dimension ) { sbFieldNames.Append("\"" + dimension.Label + "\","); sbFieldTypes.Append("\"string\","); foreach (ReportDefinitionVariable nestedDimension in dimension.NestedVariables) { RenderDimension( sbFieldNames, sbFieldTypes, nestedDimension ); } }
private List <Dictionary <string, object> > GetCategories(ReportDefinitionVariable variable) { List <Dictionary <string, object> > result = new List <Dictionary <string, object> >(); foreach (ReportDefinitionScore score in variable.Scores) { if (score.Hidden) { continue; } Dictionary <string, object> value = new Dictionary <string, object>(); value.Add("name", score.XmlNode.Attributes["Name"].Value); value.Add("kind", "EntitySet"); value.Add("url", this.RequestString + "&Query=Category_" + score.Identity); result.Add(value); } return(result); }
public byte[] CheckTaxonomizedData() { Data2 filter = new Data2(0); // Get all respondents of the study. List <object[]> respondents = this.Core.Respondents.GetValues( new string[] { "Id" }, new string[] { "IdStudy" }, new object[] { this.IdStudy } ); // Run through all respondents of the study. foreach (object[] respondent in respondents) { filter.Responses.Add((Guid)respondent[0], new double[] { 0 }); } string fileName = Path.GetTempFileName() + ".xlsx"; // Create a new excel writer that builds the result document. ExcelWriter writer = new ExcelWriter(); DataCore.Classes.StorageMethods.Database storageMethod = new DataCore.Classes.StorageMethods.Database( this.Core, null ); // Get all variable links of the study. List <object[]> variableLinks = this.Core.VariableLinks.ExecuteReader(string.Format( "SELECT IdVariable, IdTaxonomyVariable FROM VariableLinks WHERE IdVariable IN (SELECT Id FROM Variables WHERE IdStudy='{0}')", this.IdStudy ), typeof(Guid), typeof(Guid)); Dictionary <string, Dictionary <string, Dictionary <string, Dictionary <string, double[]> > > > categoryValues = new Dictionary <string, Dictionary <string, Dictionary <string, Dictionary <string, double[]> > > >(); Dictionary <string, Dictionary <string, double> > unlinkedCategories = new Dictionary <string, Dictionary <string, double> >(); writer.Write(0, "Variable"); writer.Write(1, "Taxonomy variable"); writer.Write(2, "Variable value"); writer.Write(3, "Taxonomy variable value"); writer.Write(4, "Status"); writer.ActiveSheet.Cells[writer.Position, 0, writer.Position, 4].Interior.Color = SpreadsheetGear.Color.FromArgb(54, 94, 146); writer.ActiveSheet.Cells[writer.Position, 0, writer.Position, 4].Font.Color = SpreadsheetGear.Color.FromArgb(255, 255, 255); writer.ActiveSheet.Cells[writer.Position, 0, writer.Position, 1].EntireColumn.ColumnWidth = 50; writer.ActiveSheet.Cells[writer.Position, 0, writer.Position, 1].EntireColumn.WrapText = true; writer.ActiveSheet.WindowInfo.FreezePanes = true; writer.ActiveSheet.Cells[0, 0, 0, 4].Select(); writer.NewLine(); int i = 0; // Run through all variable links of the study. foreach (object[] variableLink in variableLinks) { Variable variable = this.Core.Variables.GetSingle( "Id", variableLink[0] ); TaxonomyVariable taxonomyVariable = this.Core.TaxonomyVariables.GetSingle( "Id", variableLink[1] ); if (!categoryValues.ContainsKey(variable.Name)) { categoryValues.Add(variable.Name, new Dictionary <string, Dictionary <string, Dictionary <string, double[]> > >()); } if (!categoryValues[variable.Name].ContainsKey(taxonomyVariable.Name)) { categoryValues[variable.Name].Add(taxonomyVariable.Name, new Dictionary <string, Dictionary <string, double[]> >()); } XmlDocument test2 = new XmlDocument(); test2.LoadXml("<Report><Settings><Setting Name=\"AggregateNonQAData\">True</Setting></Settings></Report>"); ReportDefinition test = new ReportDefinition( this.Core, test2, new Crosstables.Classes.HierarchyClasses.HierarchyFilter(null) ); test.HierarchyFilter.Load(); // Create a fake report definition variable for the study variable. ReportDefinitionVariable reportDefinitionVariable = new ReportDefinitionVariable(test, variable, null); // Create a fake report definition variable for the taxonomy variable. ReportDefinitionVariable reportDefinitionTaxonomyVariable = new ReportDefinitionVariable(test, taxonomyVariable, null); Data variableData = storageMethod.GetRespondents(reportDefinitionVariable); Data taxonomyVariableData = storageMethod.GetRespondents( reportDefinitionTaxonomyVariable, filter ); writer.Write(0, variable.Name); writer.Write(1, taxonomyVariable.Name); writer.Write(2, variableData.Value.ToString()); writer.Write(3, taxonomyVariableData.Value.ToString()); if (variableData.Value != taxonomyVariableData.Value) { writer.Write(4, "FAILED"); writer.ActiveSheet.Cells[writer.Position, 4].Interior.Color = SpreadsheetGear.Drawing.Color.FromArgb(255, 0, 0); } else { writer.Write(4, "PASSED"); writer.ActiveSheet.Cells[writer.Position, 4].Interior.Color = SpreadsheetGear.Drawing.Color.FromArgb(0, 255, 0); } writer.NewLine(); // Get all category links of the variable. /*List<object[]> categoryLinks = this.Core.CategoryLinks.ExecuteReader(string.Format( * "SELECT IdCategory, IdTaxonomyCategory FROM CategoryLinks WHERE IdVariable='{0}'", * variableLink[0] * ));*/ // Get all categories of the variable. List <object[]> categories = this.Core.Categories.GetValues( new string[] { "Id", "Name" }, new string[] { "IdVariable" }, new object[] { variableLink[0] } ); // Run through all category links of the variable. foreach (object[] category in categories) { /*if ((string)category[1] == "SystemMissing") * continue;*/ // Get the category links for the category. List <object[]> categoryLinks = this.Core.CategoryLinks.ExecuteReader(string.Format( "SELECT IdCategory, IdTaxonomyCategory FROM CategoryLinks WHERE IdCategory='{0}'", category[0] )); // Create a fake report definition category for the study category. ReportDefinitionCategory reportDefinitionCategory = new ReportDefinitionCategory(reportDefinitionVariable, reportDefinitionVariable.XmlNode.SelectSingleNode(string.Format( "*[@Id=\"{0}\"]", category[0] ))); Data categoryData = storageMethod.GetRespondents( reportDefinitionCategory, reportDefinitionVariable ); if (categoryLinks.Count == 0) { if (!unlinkedCategories.ContainsKey(variable.Name)) { unlinkedCategories.Add(variable.Name, new Dictionary <string, double>()); } if (!unlinkedCategories[variable.Name].ContainsKey((string)category[1])) { unlinkedCategories[variable.Name].Add((string)category[1], categoryData.Value); } continue; } object[] categoryLink = categoryLinks.First(); XmlNode xmlNode = reportDefinitionTaxonomyVariable.XmlNode.SelectSingleNode(string.Format( "*[@Id=\"{0}\"]", categoryLink[1] )); if (xmlNode == null) { continue; } // Create a fake report definition category for the study category. ReportDefinitionTaxonomyCategory reportDefinitionTaxonomyCategory = new ReportDefinitionTaxonomyCategory(reportDefinitionTaxonomyVariable, xmlNode); if (!categoryValues[variable.Name][taxonomyVariable.Name].ContainsKey(reportDefinitionCategory.Name)) { categoryValues[variable.Name][taxonomyVariable.Name].Add(reportDefinitionCategory.Name, new Dictionary <string, double[]>()); } if (!categoryValues[variable.Name][taxonomyVariable.Name][reportDefinitionCategory.Name].ContainsKey(reportDefinitionTaxonomyCategory.Name)) { categoryValues[variable.Name][taxonomyVariable.Name][reportDefinitionCategory.Name].Add(reportDefinitionTaxonomyCategory.Name, new double[2]); } Data taxonomyCategoryData = storageMethod.GetRespondents(reportDefinitionTaxonomyCategory, reportDefinitionTaxonomyVariable, filter); categoryValues[variable.Name][taxonomyVariable.Name][reportDefinitionCategory.Name][reportDefinitionTaxonomyCategory.Name][0] = categoryData.Value; categoryValues[variable.Name][taxonomyVariable.Name][reportDefinitionCategory.Name][reportDefinitionTaxonomyCategory.Name][1] = taxonomyCategoryData.Value; } i++; } writer.NewSheet("Categories"); writer.Write(0, "Variable"); writer.Write(1, "Taxonomy variable"); writer.Write(2, "Category"); writer.Write(3, "Taxonomy category"); writer.Write(4, "Category value"); writer.Write(5, "Taxonomy category value"); writer.Write(6, "Status"); writer.ActiveSheet.Cells[writer.Position, 0, writer.Position, 6].Interior.Color = SpreadsheetGear.Color.FromArgb(54, 94, 146); writer.ActiveSheet.Cells[writer.Position, 0, writer.Position, 6].Font.Color = SpreadsheetGear.Color.FromArgb(255, 255, 255); writer.ActiveSheet.Cells[writer.Position, 0, writer.Position, 4].EntireColumn.ColumnWidth = 25; writer.ActiveSheet.Cells[writer.Position, 0, writer.Position, 4].EntireColumn.WrapText = true; writer.ActiveSheet.Cells[writer.Position, 6].EntireColumn.ColumnWidth = 12; writer.ActiveSheet.WindowInfo.FreezePanes = true; writer.ActiveSheet.Cells[0, 0, 0, 6].Select(); writer.NewLine(); // Run through all variables of the study. foreach (string variableName in categoryValues.Keys) { // Run through all taxonomy variables that are linked to the study variable. foreach (string taxonomyVariableName in categoryValues[variableName].Keys) { // Run through all categories of the variable. foreach (string categoryName in categoryValues[variableName][taxonomyVariableName].Keys) { // Run through all taxonomy categories that are linked to the study category. foreach (string taxonomyCategoryName in categoryValues[variableName][taxonomyVariableName][categoryName].Keys) { double categoryData = categoryValues[variableName][taxonomyVariableName][categoryName][taxonomyCategoryName][0]; double taxonomyCategoryData = categoryValues[variableName][taxonomyVariableName][categoryName][taxonomyCategoryName][1]; writer.Write(0, variableName); writer.Write(1, taxonomyVariableName); writer.Write(2, categoryName); writer.Write(3, taxonomyCategoryName); writer.Write(4, categoryData.ToString()); writer.Write(5, taxonomyCategoryData.ToString()); if (categoryData != taxonomyCategoryData) { writer.Write(6, "FAILED"); writer.ActiveSheet.Cells[writer.Position, 6].Interior.Color = SpreadsheetGear.Drawing.Color.FromArgb(255, 0, 0); } else { writer.Write(6, "PASSED"); writer.ActiveSheet.Cells[writer.Position, 6].Interior.Color = SpreadsheetGear.Drawing.Color.FromArgb(0, 255, 0); } writer.NewLine(); } } if (unlinkedCategories.ContainsKey(variableName)) { // Run through all unlinked categories of the variable. foreach (string categoryName in unlinkedCategories[variableName].Keys) { writer.Write(0, variableName); writer.Write(1, ""); writer.Write(2, categoryName); writer.Write(3, ""); writer.Write(4, unlinkedCategories[variableName][categoryName].ToString()); writer.Write(5, ""); writer.Write(6, "NON-LINKED"); writer.ActiveSheet.Cells[writer.Position, 6].Interior.Color = SpreadsheetGear.Drawing.Color.FromArgb(255, 192, 0); writer.NewLine(); } } } } return(writer.Save()); }