diff --git a/PROMS/Formats/fmtall/VEGP1all.xml b/PROMS/Formats/fmtall/VEGP1all.xml index 1c4fe3c6..36d0c590 100644 Binary files a/PROMS/Formats/fmtall/VEGP1all.xml and b/PROMS/Formats/fmtall/VEGP1all.xml differ diff --git a/PROMS/Formats/fmtall/VEGP2all.xml b/PROMS/Formats/fmtall/VEGP2all.xml index eeceac5d..0e8be152 100644 Binary files a/PROMS/Formats/fmtall/VEGP2all.xml and b/PROMS/Formats/fmtall/VEGP2all.xml differ diff --git a/PROMS/Formats/fmtall/VEGPAlrall.xml b/PROMS/Formats/fmtall/VEGPAlrall.xml index dcc2c0f3..86cf7652 100644 Binary files a/PROMS/Formats/fmtall/VEGPAlrall.xml and b/PROMS/Formats/fmtall/VEGPAlrall.xml differ diff --git a/PROMS/VEPROMS.CSLA.Library/Format/PlantFormat.cs b/PROMS/VEPROMS.CSLA.Library/Format/PlantFormat.cs index 879952fe..b35ee527 100644 --- a/PROMS/VEPROMS.CSLA.Library/Format/PlantFormat.cs +++ b/PROMS/VEPROMS.CSLA.Library/Format/PlantFormat.cs @@ -4303,6 +4303,15 @@ namespace VEPROMS.CSLA.Library return LazyLoad(ref _PaginateOnLowerStepLevel, "@PaginateOnLowerStepLevel"); } } + // B2023-088: alarm format pagination + private LazyLoad _AlarmPagination; + public bool AlarmPagination + { + get + { + return LazyLoad(ref _AlarmPagination, "@AlarmPagination"); + } + } private LazyLoad _CustomSpacing; public bool CustomSpacing { diff --git a/PROMS/Volian.Print.Library/Pagination.cs b/PROMS/Volian.Print.Library/Pagination.cs index 2633b070..78c01396 100644 --- a/PROMS/Volian.Print.Library/Pagination.cs +++ b/PROMS/Volian.Print.Library/Pagination.cs @@ -1565,7 +1565,7 @@ namespace Volian.Print.Library float yAddForBtmMsg = 0; // useful for debugging pagination issues, lastbreak gets the paragraph at the top of the previous page, shows all // of the locations within 'range' on the next page. - //if (lastBreak != null && lastBreak.MyItemInfo.InList(72481)) + //if (lastBreak != null && lastBreak.MyItemInfo.InList(72481)) //{ // int range = 120; // Console.WriteLine("lastBreak = {0}, {1}", yUpperLimit, lastBreak); @@ -1720,7 +1720,11 @@ namespace Volian.Print.Library { vlnParagraph rnoChild = myPara.HasSecondRNOThatWillFit(yStart, yLowerLimit, yUpperLimit, myList, stepLevel, yTop); // Only if it is more than the lower limit if (rnoChild != null) + { + // B2023-088: don't return the 'rnochild' if this is a caution or note in an alarm format + if (myPara.MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.StepSectionData.StepSectionLayoutData.AlarmPagination && minPara2 != null && minPara2.MyItemInfo.IsCautionOrNotePart) return minPara2; return rnoChild; + } } // B2019-103, B2019-114 Break at a step if the step will fit on a page by itself and it will // not fit in the current page diff --git a/PROMS/Volian.Print.Library/vlnParagraph.cs b/PROMS/Volian.Print.Library/vlnParagraph.cs index 466a61b2..f9d8f6f4 100644 --- a/PROMS/Volian.Print.Library/vlnParagraph.cs +++ b/PROMS/Volian.Print.Library/vlnParagraph.cs @@ -7088,13 +7088,25 @@ namespace Volian.Print.Library { // B2020-116: change from checking for type 20001 to looking for a non-high sequential since some // step types were sequential but not 20001 - if (!paraLoc.MyParagraph.MyItemInfo.IsHigh && paraLoc.MyParagraph.MyItemInfo.IsSequential) + bool keepBullettedTogether = paraLoc.MyParagraph.MyItemInfo.IsSubStep; + if (!paraLoc.MyParagraph.MyItemInfo.IsHigh) { - if (DontBreakHere(paraLoc)) - //if (paraLoc.MyParagraph.MyItemInfo.MyPrevious == null) // First substep - level = 0; - else - level = 1; + bool AlarmPagination = paraLoc.MyParagraph.MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.StepSectionData.StepSectionLayoutData.AlarmPagination; + if (paraLoc.MyParagraph.MyItemInfo.IsSequential) + { + if (DontBreakHere(paraLoc)) + //if (paraLoc.MyParagraph.MyItemInfo.MyPrevious == null) // First substep + level = 0; + else + level = AlarmPagination?3:1; // B2023-088 make it easier to break on a sequential for alarms + } + else if (AlarmPagination && paraLoc.MyParagraph.MyItemInfo.IsSubStep) + { + // make it harder to break on first caution or note & within a list if doing Alarm Pagination: + vlnParagraph myPara = paraLoc.MyParagraph; + if ((myPara.MyItemInfo.IsCaution || myPara.MyItemInfo.IsNote) && myPara.MyItemInfo.MyPrevious == null) level = 1; + else if (myPara.MyItemInfo.MyPrevious != null || myPara.MyItemInfo.NextItem != null) level = 2; + } } } // For B2015-014, some migrated data for background documents had the TitleWithTextBelow with associated paragraphs