/// <summary> /// Called when copy has been clicked. /// </summary> /// <param name="data">The data.</param> private void OnCopyClick(FailureRow data) { var sb = new StringBuilder( ); for (int i = 0; i < Columns.Count; i++) { sb.AppendFormat("{0}: {1}\r\n", Columns[i], data.Fields[i]); } Clipboard.SetText(sb.ToString( )); }
/// <summary> /// Set the test result data. /// </summary> /// <param name="data">The results</param> private void SetTestResult(DataTable data) { _rawData = data; if (data?.Rows == null || data.Rows.Count <= 0) { Data?.Clear( ); return; } Columns.Clear( ); Data = new List <FailureRow>( ); var hiddenColumns = _test.HiddenColumns; var entityColumns = _test.EntityColumns; var tenantColumn = _test.TenantColumn; HashSet <int> hiddenColumnSet = new HashSet <int>( ); if (!string.IsNullOrEmpty(hiddenColumns)) { var hiddenColumnStrings = hiddenColumns.Split(','); foreach (string hiddenColumnString in hiddenColumnStrings) { int hiddenColumn; if (int.TryParse(hiddenColumnString, out hiddenColumn)) { hiddenColumnSet.Add(hiddenColumn); } } } HashSet <string> tenants = new HashSet <string>( ); foreach (DataColumn column in data.Columns) { if (!hiddenColumnSet.Contains(column.Ordinal)) { Columns.Add(column.ColumnName); } } foreach (DataRow row in data.Rows) { if (tenantColumn != null) { tenants.Add(row.ItemArray [tenantColumn.Value].ToString( )); } var failureFields = row.ItemArray.Select(i => i.ToString( )).ToList( ); var allFields = row.ItemArray.Select(i => i.ToString( )).ToList( ); foreach (int hiddenColumn in hiddenColumnSet.OrderByDescending(i => i)) { if (failureFields.Count > hiddenColumn) { failureFields.RemoveAt(hiddenColumn); } } var failureRow = new FailureRow(this, failureFields, allFields, entityColumns, Resolution, PluginSettings); Data.Add(failureRow); } List <string> tenantList = new List <string> { "All Tenants" }; if (tenants.Count > 0) { tenantList.AddRange(tenants.OrderBy(s => s)); TenantsVisible = true; } else { TenantsVisible = false; } Tenants = tenantList; SelectedTenant = "All Tenants"; }