Get data into memory for approval generation so that page number transitions resolve

Fixed B2014-025:If not master/slave, load all data into memory for page number transitions. Present dialog if there are errors in page number transitions so that user can resolve.
Added a property to determine if page number transition has incorrect page number caused by length of step’s text/wrapping & pagination
Set property to determine if page number transition has incorrect page number caused by length of step’s text/wrapping & pagination
Add tracking of inconsistent page number transitions; if pdf already open, don’t run 2nd pass for page number transitions (resulting pdf had unresolved page numbers);
This commit is contained in:
Kathy Ruffing 2014-03-04 17:36:02 +00:00
parent 63acad915d
commit 622717ba1a
7 changed files with 61 additions and 8 deletions

View File

@ -537,6 +537,7 @@ namespace VEPROMS
MyProcedure = myProc; MyProcedure = myProc;
if (myProc.Sections != null) if (myProc.Sections != null)
{ {
// This is master/slave & a slave has been selected for printing (SelectedSlave > 0)
if (SelectedSlave > 0) if (SelectedSlave > 0)
{ {
MyProcedure.MyDocVersion.DocVersionConfig.SelectedSlave = SelectedSlave; MyProcedure.MyDocVersion.DocVersionConfig.SelectedSlave = SelectedSlave;
@ -555,6 +556,7 @@ namespace VEPROMS
frmStatus.ShowDialog(); frmStatus.ShowDialog();
if (frmStatus.CancelPrinting) break; if (frmStatus.CancelPrinting) break;
} }
// This is a master/slave for printing of all slaves (SelectedSave == 0)
else if (SelectedSlave == 0) else if (SelectedSlave == 0)
{ {
for (int k = 1; k <= MyProcedure.MyDocVersion.MultiUnitCount; k++) for (int k = 1; k <= MyProcedure.MyDocVersion.MultiUnitCount; k++)
@ -575,6 +577,7 @@ namespace VEPROMS
if (frmStatus.CancelPrinting) break; if (frmStatus.CancelPrinting) break;
} }
} }
// Not master/slave
else else
{ {
SetupForProcedure(); SetupForProcedure();
@ -583,7 +586,10 @@ namespace VEPROMS
pbPDFsStatus.Value = i; pbPDFsStatus.Value = i;
// this.Text = string.Format("Create PDF for {0} ({1} of {2})", myProc.DisplayNumber, ++i, n); // this.Text = string.Format("Create PDF for {0} ({1} of {2})", myProc.DisplayNumber, ++i, n);
// RHM 20120925 Overlay the bottom of the dialog so that cancel button is covered. // RHM 20120925 Overlay the bottom of the dialog so that cancel button is covered.
MyProcedure = ProcedureInfo.GetItemAndChildren(MyProcedure.ItemID); if (MyProcedure.ActiveFormat.PlantFormat.FormatData.TransData.UseTransitionModifier)
MyProcedure = ProcedureInfo.GetItemAndChildrenByUnit(MyProcedure.ItemID, 0, MyProcedure.MyDocVersion.DocVersionConfig.SelectedSlave);
else
MyProcedure = ProcedureInfo.GetItemAndChildren(MyProcedure.ItemID);
frmPDFStatusForm frmStatus = new frmPDFStatusForm(MyProcedure, RevNumAndDate, pw.ToString(), cbxDebug.Checked, cbxOrPgBrk.Checked, cbxOpenAfterCreate2.Checked, cbxOverwritePDF2.Checked, PDFPath, cbd, txbPDFName.Text, new Point(Left, Bottom - 50), cbxBlankPgsForDuplex.Checked); frmPDFStatusForm frmStatus = new frmPDFStatusForm(MyProcedure, RevNumAndDate, pw.ToString(), cbxDebug.Checked, cbxOrPgBrk.Checked, cbxOpenAfterCreate2.Checked, cbxOverwritePDF2.Checked, PDFPath, cbd, txbPDFName.Text, new Point(Left, Bottom - 50), cbxBlankPgsForDuplex.Checked);
frmStatus.CloseWhenDone = true; frmStatus.CloseWhenDone = true;
Application.DoEvents(); Application.DoEvents();
@ -713,7 +719,9 @@ namespace VEPROMS
{ {
DateTime dtStart = DateTime.Now; DateTime dtStart = DateTime.Now;
_MultiunitPdfLocation = cbxMultiunitPdfLocation.SelectedItem.ToString(); _MultiunitPdfLocation = cbxMultiunitPdfLocation.SelectedItem.ToString();
PromsPrinter.ClearTransPageNumProblems();
CreatePDFs(); CreatePDFs();
PromsPrinter.ReportTransPageNumProblems();
if (VlnSettings.DebugMode) if (VlnSettings.DebugMode)
{ {
MessageBox.Show(string.Format("{0} Minutes to Print All Procedures" MessageBox.Show(string.Format("{0} Minutes to Print All Procedures"
@ -722,7 +730,7 @@ namespace VEPROMS
} }
else // Production or Demo mode else // Production or Demo mode
{ {
MessageBox.Show("Completed Successfully","Print All Procedures", MessageBoxButtons.OK, MessageBoxIcon.Information); MessageBox.Show("Completed Successfully", "Print All Procedures", MessageBoxButtons.OK, MessageBoxIcon.Information);
} }
this.Close(); this.Close();
} }

View File

@ -1027,7 +1027,10 @@ namespace VEPROMS
} }
else else
{ {
pi = ProcedureInfo.GetItemAndChildren(pi.ItemID); if (pi.ActiveFormat.PlantFormat.FormatData.TransData.UseTransitionModifier)
pi = ProcedureInfo.GetItemAndChildrenByUnit(pi.ItemID, 0, pi.MyDocVersion.DocVersionConfig.SelectedSlave);
else
pi = ProcedureInfo.GetItemAndChildren(pi.ItemID);
pi.ChangeBarDate = myDTS; pi.ChangeBarDate = myDTS;
cail = ContentAuditInfoList.GetSummary(pi.ItemID, pi.ItemID, false, pi.ChangeBarDate); cail = ContentAuditInfoList.GetSummary(pi.ItemID, pi.ItemID, false, pi.ChangeBarDate);
aail = AnnotationAuditInfoList.GetChronology(pi.ItemID, pi.ItemID, pi.ChangeBarDate); aail = AnnotationAuditInfoList.GetChronology(pi.ItemID, pi.ItemID, pi.ChangeBarDate);

View File

@ -113,6 +113,7 @@ namespace VEPROMS
Application.DoEvents(); Application.DoEvents();
MyPromsPrinter.StatusChanged += new PromsPrinterStatusEvent(pp_StatusChanged); MyPromsPrinter.StatusChanged += new PromsPrinterStatusEvent(pp_StatusChanged);
DateTime tStart = DateTime.Now; DateTime tStart = DateTime.Now;
if (!CancelStop) PromsPrinter.ClearTransPageNumProblems();
do do
{ {
_PdfFile = MyPromsPrinter.Print(PDFPath); _PdfFile = MyPromsPrinter.Print(PDFPath);
@ -123,6 +124,7 @@ namespace VEPROMS
this.Close(); this.Close();
return; return;
} }
if (!CancelStop) PromsPrinter.ReportTransPageNumProblems();
DateTime tEnd = DateTime.Now; DateTime tEnd = DateTime.Now;
MyStatus = _PdfFile + " created."; MyStatus = _PdfFile + " created.";
MyStatus = string.Format("{0} created in {1:0.} milliseconds", _PdfFile, (TimeSpan.FromTicks(tEnd.Ticks - tStart.Ticks).TotalMilliseconds)); MyStatus = string.Format("{0} created in {1:0.} milliseconds", _PdfFile, (TimeSpan.FromTicks(tEnd.Ticks - tStart.Ticks).TotalMilliseconds));

View File

@ -570,18 +570,29 @@ namespace VEPROMS.CSLA.Library
} }
set { _PrintLevel = value; } set { _PrintLevel = value; }
} }
// The following property tracks the page number that this item is on if the resolved // The following properties track the page number that this item is on if the resolved
// transition text has a Page Number associated with it. Formats that have this either // transition text has a Page Number associated with it. Formats that have this either
// have the UseTransitionModfier flag or have '{Page Num}' in respective transition formats. // have the UseTransitionModfier flag or have '{Page Num}' in respective transition formats.
// If the format requires page numbers in transitions text, two passes are run through the // If the format requires page numbers in transitions text, two passes are run through the
// data for printing. The first determines page numbers, the seconds resolves the transition // data for printing. The first determines page numbers, the seconds resolves the transition
// text. // text. The PageNumberUsed value is used to determine if the page number in 1st & 2nd passes
// are different. This can be caused by the page number text causing different heights of
// the step that causes change in pagination. If this occurs, the user is presented with a
// dialog box that shows the step that causes the problem & a manual change will be necessary.
// This is a rare occurence so it was decided that the amount of coding effort to fix this
// would be so much in comparison to having the user fix manually (RHM/KBR Feb 2014).
private int _PageNumber = 0; private int _PageNumber = 0;
public int PageNumber public int PageNumber
{ {
get { return _PageNumber; } get { return _PageNumber; }
set { _PageNumber = value; } set { _PageNumber = value; }
} }
private int _PageNumberUsed = 0;
public int PageNumberUsed
{
get { return _PageNumberUsed; }
set { _PageNumberUsed = value; }
}
private float _MSWordPageCount = 0; private float _MSWordPageCount = 0;
public float MSWordPageCount public float MSWordPageCount
{ {

View File

@ -808,6 +808,7 @@ namespace VEPROMS.CSLA.Library
if (tb._ToItem.PageNumber != 0 && tb._FromItem.PageNumber != 0) if (tb._ToItem.PageNumber != 0 && tb._FromItem.PageNumber != 0)
{ {
int pgoffset = tb._ToItem.PageNumber - tb._FromItem.PageNumber; int pgoffset = tb._ToItem.PageNumber - tb._FromItem.PageNumber;
tb._ToItem.PageNumberUsed = tb._ToItem.PageNumber;
switch (pgoffset) switch (pgoffset)
{ {
case 1: case 1:
@ -831,7 +832,7 @@ namespace VEPROMS.CSLA.Library
tb.Append(" (Page ~)"); tb.Append(" (Page ~)");
} }
return true; return true;
} }
private static bool AddStepNumber(TransitionBuilder tb) private static bool AddStepNumber(TransitionBuilder tb)
{ {
// If we're on a step put out the step number. // If we're on a step put out the step number.

View File

@ -155,6 +155,26 @@ namespace Volian.Print.Library
get { return _InsertBlankPages; } get { return _InsertBlankPages; }
set { _InsertBlankPages = value; } set { _InsertBlankPages = value; }
} }
private static List<string> _TransPageNumProblems = null;
public static List<string> TransPageNumProblems
{
get { return PromsPrinter._TransPageNumProblems; }
set { PromsPrinter._TransPageNumProblems = value; }
}
public static void ClearTransPageNumProblems()
{
_TransPageNumProblems = null;
}
public static void ReportTransPageNumProblems()
{
if (TransPageNumProblems != null && TransPageNumProblems.Count > 0)
{
string pnProbl = null;
foreach (string pstr in TransPageNumProblems)
pnProbl = pnProbl + "\n" + pstr;
MessageBox.Show("Review the page numbers specified on transitions that transition to the following:\n" + pnProbl, "Inconsistent transition page numbers.");
}
}
public PromsPrinter(ItemInfo myItem, string rev, string watermark, bool debugOutput, bool origPgBrk, string backgroundFolder, bool openPDF, bool overWrite, ChangeBarDefinition cbd, String pdfFile, bool insertBlankPages) public PromsPrinter(ItemInfo myItem, string rev, string watermark, bool debugOutput, bool origPgBrk, string backgroundFolder, bool openPDF, bool overWrite, ChangeBarDefinition cbd, String pdfFile, bool insertBlankPages)
{ {
_MyItem = myItem; _MyItem = myItem;
@ -180,7 +200,8 @@ namespace Volian.Print.Library
// if the plant uses transition modifiers and/or page num in transition format, // if the plant uses transition modifiers and/or page num in transition format,
// need to do two passes. First pass, sets the pagenumbers for each item, // need to do two passes. First pass, sets the pagenumbers for each item,
// 2nd pass fills in the page numbers in transitions. // 2nd pass fills in the page numbers in transitions.
Print(_MyItem as ProcedureInfo, pdfFolder); string retstr = Print(_MyItem as ProcedureInfo, pdfFolder);
if (retstr == null) return null;
ProcedureInfo.RefreshPageNumTransitions(_MyItem as ProcedureInfo); ProcedureInfo.RefreshPageNumTransitions(_MyItem as ProcedureInfo);
return Print(_MyItem as ProcedureInfo, pdfFolder); return Print(_MyItem as ProcedureInfo, pdfFolder);
} }
@ -312,12 +333,14 @@ namespace Volian.Print.Library
private static List<SectionInfo> _MyFoldoutSection = null; private static List<SectionInfo> _MyFoldoutSection = null;
private string Print(ProcedureInfo myProcedure, string pdfFolder) private string Print(ProcedureInfo myProcedure, string pdfFolder)
{ {
if (_TransPageNumProblems == null) _TransPageNumProblems = new List<string>();
if (_MyFoldoutReader != null) _MyFoldoutReader.Clear(); if (_MyFoldoutReader != null) _MyFoldoutReader.Clear();
else _MyFoldoutReader = new List<PdfReader>(); else _MyFoldoutReader = new List<PdfReader>();
if (_MyFoldoutSection != null) _MyFoldoutSection.Clear(); if (_MyFoldoutSection != null) _MyFoldoutSection.Clear();
else _MyFoldoutSection = new List<SectionInfo>(); else _MyFoldoutSection = new List<SectionInfo>();
if (myProcedure.Sections != null) if (myProcedure.Sections != null)
{ {
int cnt = 0; int cnt = 0;

View File

@ -313,6 +313,11 @@ namespace Volian.Print.Library
public float ParagraphToPdf(PdfContentByte cb, float yPageStart, float yTopMargin, float yBottomMargin) public float ParagraphToPdf(PdfContentByte cb, float yPageStart, float yTopMargin, float yBottomMargin)
{ {
if (MyItemInfo.PageNumber == 0) MyItemInfo.PageNumber = MyPageHelper.CurrentPageNumber; if (MyItemInfo.PageNumber == 0) MyItemInfo.PageNumber = MyPageHelper.CurrentPageNumber;
else if (MyItemInfo.PageNumberUsed != 0 && MyItemInfo.PageNumberUsed != MyPageHelper.CurrentPageNumber)
{
if (PromsPrinter.TransPageNumProblems == null) PromsPrinter.TransPageNumProblems = new List<string>();
PromsPrinter.TransPageNumProblems.Add(MyItemInfo.ShortPath);
}
if (Processed) return yPageStart; if (Processed) return yPageStart;
//float localYPageStart = yPageStart; //float localYPageStart = yPageStart;
Processed = true; Processed = true;