private string FormatChecklistRow(ChecklistData item, int i, ChecklistReportRankDepth? depth) { string result = ""; switch (item.Type.ToLower()) { case "is": result = "incertae sedis "; break; case "si": result = "Species inquirenda "; break; default: switch (item.RankCategory.ToLower()) { case "g": case "s": if (item.Verified) { result = string.Format(@"\i {0} \i0 ", UnItalicize(item.DisplayName, "subsp.|var.|sub.var.|form |sub.form ")); } else { result = item.DisplayName; } break; default: result = item.DisplayName; break; } // Add the rank if necessary... if (depth.HasValue) { switch (item.RankCategory.ToLower()) { case "h": case "f": result = item.Rank + " " + result; break; case "g": if (depth == ChecklistReportRankDepth.Subgenus) { result = item.Rank + " " + result; } break; default: break; } } break; } // Unitalicise the author/year component if applicable. if (!string.IsNullOrWhiteSpace(item.Author)) { int index = result.IndexOf(item.Author); if (index >= 0) { result = result.Substring(0, index - 1) + "\\i0 " + result.Substring(index - 1); } } return result; }
public DataMatrix ChecklistReport(int taxonID, string criteriaDisplayText, ChecklistReportExtent extent, bool availableNames, bool literatureNames, ChecklistReportRankDepth? depth, bool userDefinedOrder, bool verifiedOnly, List<TaxonRankName> selectedRanks) { var b = new RTFReportBuilder(); var data = GetChecklistData(taxonID, 0, extent == ChecklistReportExtent.FullHierarchy, userDefinedOrder, verifiedOnly, selectedRanks); // Process the list, generating the RTF... // Create the Header inforrmation b.AppendFullHeader(); // Create the title information b.Append(@"\pard\fs36\b Taxon Checklist Report\b0\pard\par\fs22 ").Append(criteriaDisplayText).Append(@"\pard\par\fs16 Generated: "); b.AppendCurrentDate().Par().Par(); int i = 0; foreach (ChecklistData item in data) { ++i; if (!availableNames && item.AvailableName || !literatureNames && item.LiteratureName) { // ignore this one } else { b.Append(@"\par\pard\fs20\li{0} {1}", item.IndentLevel * 300, FormatChecklistRow(item, i, depth)); } } b.Append("}"); return b.GetAsMatrix(); }