F2021-009 PROMS Express - Added methods to determine the levels of sub-steps when doing a Paste CopyStep and to display a message when the pasted step will have an excessive number of sub-steps. Added a method the return the number of sub-step levels defined in the format file (used when inserting new sub-steps)

This commit is contained in:
John Jenko 2021-03-24 19:51:22 +00:00
parent afb6269082
commit 47c64e0ad4

View File

@ -539,6 +539,55 @@ namespace VEPROMS.CSLA.Library
return this;
}
}
// F2021-009 Get the number of children levels the passed in parent has
private static int GetMaxSubStepLevel(ItemInfo parent)
{
int maxStepLevel = parent.StepLevel-1; // subtract one to account for HLS - we want the sub-step level
foreach (ItemInfo kid in parent.Steps)
{
if (kid.Steps != null)
maxStepLevel = Math.Max(maxStepLevel, GetMaxSubStepLevel(kid));
else
maxStepLevel = Math.Max(maxStepLevel,kid.StepLevel-1); // subtract one to account for HLS because we are counting only sub-step levels
}
return maxStepLevel;
}
// F2021-009 Find the number of sub-step levels that the Copied Step has.
// This is used to determin if the Paste will result in exesssive sub-step levels
private static int GetCopyStepMaxLevels(int copyStartID)
{
ItemInfo cpyItem = ItemInfo.Get(copyStartID);
return GetMaxSubStepLevel(cpyItem);
}
// F2021-009 Find the number of defined sequential tabs. We use this to determin the number of defined sub-step levels
public int GetDefinedSubStepCount()
{
return GetDefinedSubStepCount(this);
}
// F2021-009 Find the number of defined sequential tabs. We use this to determin the number of defined sub-step levels
public static int GetDefinedSubStepCount(ItemInfo curStep)
{
int cnt = 0;
cnt = curStep.ActiveFormat.PlantFormat.FormatData.SectData.StepSectionData.SeqTabFmtList.Count;
return cnt-1; // -1 to account for the high level step level
}
// F2021-009 for PROMS Express, display a message if the Paste of a CopyStep will results in sub-step levels
// greater than what is defined in the format
public static bool PasteStepIsWithinDefinedSubStepLevels(int copyStartID, ItemInfo pasteTarget, bool doingReplace)
{
int largestSubStepLevel = GetCopyStepMaxLevels(copyStartID);
int numDefinedSubstepLevels = GetDefinedSubStepCount(pasteTarget);
largestSubStepLevel += (pasteTarget.StepLevel-((doingReplace)?1:0));// subtract one because HLS is level one, results in actual sub-step level
if (largestSubStepLevel > numDefinedSubstepLevels && pasteTarget.ActiveFormat.PlantFormat.FormatData.Express)
{
string mbMsg = "This will result with more sub-step levels than are defined in" +
"\nthe format and could result in a step that is difficult to follow." +
"\n\nConsider rewriting the step using less sub-steps levels.";
MessageBox.Show(mbMsg, "Paste Step Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return false;
}
return true;
}
// B2016-009 - added a message box explaining to the user that the copyed step will take on the destination type. 16-bit PROMS had also done this way.
// - this one is used for Paste Replace with copyed step
public static void CheckSourceDestinationType(int copyStartID, ItemInfo itemInfo)