C2019-013 put sorted by information on the Search Results report

C2020-019 display the section number and Title for step sections on the Search Results report
This commit is contained in:
John Jenko 2020-06-25 15:14:15 +00:00
parent 0078020e60
commit a89fad3eaf

View File

@ -59,6 +59,12 @@ namespace Volian.Print.Library
get { return _SearchString; }
set { _SearchString = VEPROMS.CSLA.Library.ItemInfo.ConvertToDisplayText(value); }
}
private string _SortedBy; // C2019-013 pass in sorting information
public string SortedBy
{
get { return _SortedBy; }
set { _SortedBy = value; }
}
private DocumentInfoList _LibDocList;
public DocumentInfoList LibDocList
{
@ -77,7 +83,7 @@ namespace Volian.Print.Library
private string _PaperSize = "Letter"; // C2020-002 paper size is now set in the format files
// Search Results Report
public PDFReport(string reportTitle, string typesSelected, ICollection<ItemInfo> resultList, string fileName, string paperSize)
public PDFReport(string reportTitle, string typesSelected, ICollection<ItemInfo> resultList, string fileName, string paperSize, string sortedBy)
{
_ResultList = resultList;
_FileName = fileName;
@ -86,6 +92,7 @@ namespace Volian.Print.Library
_ReportType = (int)ReportType.SearchResults;
_ByLine = "PROMS Search Results";
_PaperSize = paperSize;
_SortedBy = sortedBy; // C2019--13 pass in sorted by information
}
@ -267,9 +274,12 @@ namespace Volian.Print.Library
private string GetCurSectionNumTitle(ItemInfo itm)
{
string rtnstr = "";
rtnstr = itm.ActiveSection.DisplayNumber;
if (rtnstr.Length > 0) rtnstr += " ";
rtnstr += itm.ActiveSection.DisplayText;
if (itm.ActiveSection != null)
{
rtnstr = itm.ActiveSection.DisplayNumber;
if (rtnstr.Length > 0) rtnstr += " ";
rtnstr += itm.ActiveSection.DisplayText;
}
return rtnstr; // srting containing section and subsection number/titles
}
//private string GetStepNumberFromSearchPath(string path)
@ -505,19 +515,20 @@ namespace Volian.Print.Library
iTextSharp.text.Font f3 = pdf.GetFont(Volian.Base.Library.vlnFont.ReportsFont, 12, 0, Color.BLACK);
PdfPCell cell = new PdfPCell(new Phrase(ReportTitle, f1));
cell.HorizontalAlignment = Element.ALIGN_CENTER;
cell.BackgroundColor = new Color(0xD0, 0xF0, 0xF0);
cell.BackgroundColor = new Color(0xD0, 0xF0, 0xF0); // light cyan
datatable.AddCell(cell);
cell = new PdfPCell(new Phrase(TypesSelected, f3));
// C2019-013 add sorted by information if sorting is used
cell = new PdfPCell(new Phrase(TypesSelected + ((SortedBy.Length >0)?string.Format("\n{0}",SortedBy):""), f3));
cell.HorizontalAlignment = Element.ALIGN_LEFT;
cell.BackgroundColor = new Color(0xD0, 0xF0, 0xF0);
cell.BackgroundColor = new Color(0xD0, 0xF0, 0xF0); // light cyan
datatable.AddCell(cell);
BuildSearchResultsProcSetList();
datatable.HeaderRows = 4 + (ProcSetList.Count == 1 ? 1 : 0);
int splitAt = FindSpitLevel(); // find the split level of the common path - for all procedure sets that use these library documents
Color subHeaderColor = new Color(0xD0, 0xF0, 0xD0);
datatable.DefaultCell.Padding = 4;
Color subHeaderColor = new Color(0xD0, 0xF0, 0xF0); // new Color(0xD0, 0xF0, 0xD0);
datatable.DefaultCell.Padding = 0; // this removes a white space after the header was set to 4;
datatable.DefaultCell.HorizontalAlignment = Element.ALIGN_CENTER;
AddCell(colHeader, "Step", f2, subHeaderColor);
AddCell(colHeader, "Text", f2, subHeaderColor);
@ -527,12 +538,14 @@ namespace Volian.Print.Library
//AddCell(datatable, "Text", f2, subHeaderColor);
datatable.DefaultCell.HorizontalAlignment = Element.ALIGN_LEFT;
string lastPath = "";
Color AnnoColor = new Color(0xFF, 0xFF, 0xC0);
Color AnnoColor = new Color(0xFF, 0xFF, 0xC0); // yellow
Color TextColor = Color.WHITE;
Color SectColor = new Color(0xE0, 0xFF, 0xE0);//new Color(0xC0, 0xFF, 0xC0);//Color.LIGHT_GRAY;
Color WordSectColor = new Color(0xE8, 0xE8, 0xE8);// light grey
Color StepSectColor = new Color(0xE7, 0xFF, 0xE7); // lighter green
PdfPTable subTable = new PdfPTable(headerwidths);
string lastProcNum = "";
string lastDVPath = "";
string lastSectNumAndTitle = "";
List<int> processedItems = new List<int>();
foreach (ItemInfo item in _ResultList)
{
@ -543,29 +556,39 @@ namespace Volian.Print.Library
{
datatable.AddCell(subTable);
subTable = new PdfPTable(headerwidths);
AddMainPathGroup(datatable, item.SearchDVPath, splitAt, f2, Color.LIGHT_GRAY, 0);
AddMainPathGroup(datatable, item.SearchDVPath, splitAt, f2, new Color(0xB0, 0xF0, 0xF0), 0);// little brighter cyan
datatable.AddCell(colHeader);
lastProcNum = "";
lastSectNumAndTitle = ""; // C2020-019 reset we are processing a different procedure set
}
lastDVPath = item.SearchDVPath;
string curProcNum = GetCurProcNum(item.SearchPath);
//if (lastProcNum != "" && curProcNum != lastProcNum)
//{
if (subTable.Rows.Count > 0) // prevent first page from being blank
{
datatable.AddCell(subTable);
subTable = new PdfPTable(headerwidths);
//}
}
if (curProcNum != lastProcNum)
lastSectNumAndTitle = ""; // C2020-019 reset we are processing a different procedure
lastProcNum = curProcNum;
// B2020-006: When doing a section, don't remove the last item or the procedure title won't print (if section is only item found w/ search string)
string stepPath = AddGroup(subTable, item.SearchPath ?? item.ShortPath, lastPath, f2, item.IsSection ? false : true, new Color(0xC0, 0xFF, 0xC0), true);
string stepPath = AddGroup(subTable, item.SearchPath ?? item.ShortPath, lastPath, f2, item.IsSection ? false : true, new Color(0xC0, 0xFF, 0xC0), true); // light green for procedure number and title
// C2020-019 add section number and title if is different from last item and it is not a Word Section (item will be a section if search item was found in a Word section)
string curSectNumTitle = GetCurSectionNumTitle(item);
if (curSectNumTitle != "" && curSectNumTitle != lastSectNumAndTitle && !item.IsSection)
{
AddColSpanCell(subTable, curSectNumTitle, f2, StepSectColor, 2, 0);
lastSectNumAndTitle = curSectNumTitle;
}
lastPath = item.SearchPath ?? item.ShortPath;
stepPath = BuildStepTab(item);
AddCell(subTable, stepPath, f2, (item.IsSection ? SectColor : TextColor));
AddCell(subTable, stepPath, f2, (item.IsSection ? WordSectColor : TextColor));
// This was for the old 16-bit style of table - jsj 7/7/2011
//if (item.DisplayText.Contains("|")) // Need a better way to determine if it is a table.
// AddCell(datatable, item.DisplayText, f3, TextColor);
//else
//AddCell(datatable, item.DisplayText, f2, (item.IsSection ? SectColor : TextColor));
AddCell(subTable, item.DisplayText, f2, (item.IsSection ? SectColor : TextColor));
AddCell(subTable, item.DisplayText, f2, (item.IsSection ? WordSectColor : TextColor));
if (ShowAnnotations && item.ItemAnnotationCount > 0)
{
foreach (AnnotationInfo ai in item.ItemAnnotations)
@ -579,6 +602,7 @@ namespace Volian.Print.Library
datatable.AddCell(subTable);
document.Add(datatable);
}
private void AddCell(PdfPTable datatable, string str, iTextSharp.text.Font fnt, Color bgColor)
{
iTextSharp.text.Font fntBold = new Font(fnt.BaseFont, fnt.Size, Font.BOLD, Color.RED);