diff --git a/PROMS/VEPROMS.CSLA.Library/Extension/TransitionExt.cs b/PROMS/VEPROMS.CSLA.Library/Extension/TransitionExt.cs index 218b80d1..655edd8e 100644 --- a/PROMS/VEPROMS.CSLA.Library/Extension/TransitionExt.cs +++ b/PROMS/VEPROMS.CSLA.Library/Extension/TransitionExt.cs @@ -8,17 +8,20 @@ namespace VEPROMS.CSLA.Library { private StringBuilder retstr; private FormatData _MyFormatData = null; + private ItemInfo _MyFromItemInfo = null; public string ResolvePathTo(FormatInfo fi, ItemInfo itminfo, ItemInfo toitem, ItemInfo rangeitem) { retstr = new StringBuilder(); // get the format of the transition string based on this transition's index into the TransData part of // format.... _MyFormatData = fi.PlantFormat.FormatData; + _MyFromItemInfo = itminfo; string tranformat = _MyFormatData.TransData.TransTypeList[TranType].TransFormat; E_TransUI etm = (E_TransUI)_MyFormatData.TransData.TransTypeList[TranType].TransUI; int startIndex = 0; int index = -1; string nontoken = null; + bool addedtxt = false; while ((index = tranformat.IndexOf("{", startIndex))>-1) { if (index > startIndex) nontoken = tranformat.Substring(startIndex, index - startIndex); @@ -27,33 +30,52 @@ namespace VEPROMS.CSLA.Library switch (token) { case "{Proc Num}": // Coded for HLP - AddTransitionProcNum(nontoken, toitem); + addedtxt = AddTransitionProcNum(addedtxt, nontoken, toitem); + break; + case "{?.Proc Num}": + addedtxt = AddOptionalTransitionProcNum(addedtxt, token, nontoken, toitem); break; case "{Proc Title}": // Coded for HLP - AddTransitionProcTitle(nontoken, toitem); + addedtxt = AddTransitionProcTitle(addedtxt, nontoken, toitem); + break; + case "{?.Proc Title}": + addedtxt = AddOptionalTransitionProcTitle(addedtxt, token, nontoken, toitem); break; case "{First Step}": // TODO: For hlp: LowerCaseTranNumber - lower case substep numbers in transitions // If we're on a step put out the step number. ItemInfo secitm = TranGetSectionItem(toitem); if ((!((etm & E_TransUI.StepAllowNone) == E_TransUI.StepAllowNone)) || toitem.MyContent.Type > 20000) { - Append(nontoken, false); + if (addedtxt) Append(nontoken, false); Append(toitem.Ordinal.ToString(), true); + addedtxt = true; } break; case "{Last Step}": // TODO: TStepNoFlag, i.e. include step number in range items. - Append(nontoken, false); + if (addedtxt) Append(nontoken, false); Append(rangeitem.Ordinal.ToString(), true); + addedtxt = true; break; case "{.}": // TODO: TStepNoFlag, i.e. include step number in range items. - Append(nontoken, false); + if (addedtxt) Append(nontoken, false); Append("#", true); // TODO: Intermediate Range. + addedtxt = true; break; case "{Sect Hdr}": - AddTranGetSectionHdr(nontoken, toitem); + addedtxt = AddTranGetSectionHdr(addedtxt, nontoken, toitem); + break; + case "{?.Sect Hdr}": + addedtxt = AddOptionalTranGetSectionHdr(addedtxt, token, nontoken, toitem); break; case "{Sect Title}": - AddTranGetSectionTitle(nontoken, toitem); + // output from 16-bit code looks like section header + addedtxt = AddTranGetSectionHdr(addedtxt, nontoken, toitem); + //AddTranGetSectionTitle(nontoken, toitem); + break; + case "{?.Sect Title}": + // output from 16-bit code looks like section header + addedtxt = AddOptionalTranGetSectionHdr(addedtxt, token, nontoken, toitem); + //AddOptionalTranGetSectionTitle(token, nontoken, toitem); break; } startIndex = endtokn+1; @@ -76,7 +98,7 @@ namespace VEPROMS.CSLA.Library } retstr.Append(str); } - private void AddTransitionProcTitle(string nontoken, ItemInfo toitem) + private bool AddTransitionProcTitle(bool addedtxt, string nontoken, ItemInfo toitem) { string parenstr = toitem.MyProcedure.MyContent.Text; StringBuilder lretstr = new StringBuilder(); @@ -90,25 +112,45 @@ namespace VEPROMS.CSLA.Library lretstr.Append(_MyFormatData.TransData.DelimiterForTransitionTitle); } // LATER: if (DoSectionTransitions && GetSTepNO(TSeq1)) TransitionCat(AddCommaStep", Step")); - if (nontoken != null) Append(nontoken, false); + if (addedtxt) Append(nontoken, false); Append(lretstr.ToString(), true); + if (lretstr.Length != 0) return true; + return false; } - private string CapFirstLetterOnly(string retstr, int p) { string lretstr = retstr; // LATER: write code to capitalize first letter (active plants) return lretstr; } + private bool AddOptionalTransitionProcTitle(bool addedtxt, string token, string nontoken, ItemInfo toitem) + { + // token is passed in for future use, i.e. if text is placed between "?" and "." to + // request other processing. - private void AddTransitionProcNum(string nontoken, ItemInfo toitem) + // for now the only test is to check if the toitem is in the current procedure. + if (_MyFromItemInfo.MyProcedure.ItemID == toitem.MyProcedure.ItemID) return addedtxt?true:false; + return AddTransitionProcTitle(addedtxt, nontoken, toitem); + } + private bool AddTransitionProcNum(bool addedtxt, string nontoken, ItemInfo toitem) { string retstr = toitem.MyProcedure.MyContent.Number; // LATER: start with UnitSpecific procedure number. // LATER: Format Flag TruncateProcNmAfter1stSpace (dropped plants) // LATER: Format Flag HardSpTranProcNumb (active plants) - if (nontoken != null) Append(nontoken, false); + if (addedtxt) Append(nontoken, false); Append(retstr, true); + if (retstr != null && retstr != "") return true; + return false; + } + private bool AddOptionalTransitionProcNum(bool addedtxt, string token, string nontoken, ItemInfo toitem) + { + // token is passed in for future use, i.e. if text is placed between "?" and "." to + // request other processing. + + // for now the only test is to check if the toitem is in the current procedure. + if (_MyFromItemInfo.MyProcedure.ItemID == toitem.MyProcedure.ItemID) return addedtxt ? true : false; + return AddTransitionProcNum(addedtxt, nontoken, toitem); } // TODO: Section methods are not complete.... private ItemInfo TranGetSectionItem(ItemInfo itminfo) @@ -117,18 +159,36 @@ namespace VEPROMS.CSLA.Library while (tmpitm.MyContent.Type >= 20000) tmpitm = tmpitm.MyParent; return tmpitm; } - private void AddTranGetSectionHdr(string nontoken, ItemInfo itminfo) + private bool AddTranGetSectionHdr(bool addedtxt, string nontoken, ItemInfo itminfo) { // if this is a step section & the default section, just return - if (TranGetSectionItem(itminfo).IsDefaultSection) return; + //if (TranGetSectionItem(itminfo).IsDefaultSection) return; StringBuilder retstr = new StringBuilder(); retstr.Append(TranGetSectionNumber(itminfo)); string txt = TranGetSectionTitle(itminfo); if (retstr.Length>0 && txt.Length>0) retstr.Append(", "); retstr.Append(txt); - Append(nontoken, false); + if (addedtxt) Append(nontoken, false); Append(retstr.ToString(), true); + if (retstr.Length != 0) return true; + return false; } + private bool AddOptionalTranGetSectionHdr(bool addedtxt, string token, string nontoken, ItemInfo toitem) + { + // token is passed in for future use, i.e. if text is placed between "?" and "." to + // request other processing. + + // If in same procedure, the section header is put out if not in the same section. + // If in a different procedure, the section header is put out if the 'to' item is not the + // default (or start) section. + if (_MyFromItemInfo.MyProcedure.ItemID == toitem.MyProcedure.ItemID) + { + if (TranGetSectionItem(_MyFromItemInfo).ItemID == TranGetSectionItem(toitem).ItemID) return addedtxt ? true : false; + } + else if (TranGetSectionItem(toitem).IsDefaultSection) return addedtxt ? true : false; + return AddTranGetSectionHdr(addedtxt, nontoken, toitem); + } + private string TranGetSectionNumber(ItemInfo itminfo) { ItemInfo tmpitm = TranGetSectionItem(itminfo); @@ -144,15 +204,30 @@ namespace VEPROMS.CSLA.Library } return null; } - private void AddTranGetSectionTitle(string nontoken, ItemInfo itminfo) + private bool AddOptionalTranGetSectionTitle(bool addedtxt, string token, string nontoken, ItemInfo toitem) + { + // token is passed in for future use, i.e. if text is placed between "?" and "." to + // request other processing. + + // for now the only test is to check if the toitem is in the current section. + if (TranGetSectionItem(_MyFromItemInfo).ItemID == TranGetSectionItem(toitem).ItemID) return addedtxt ? true : false; + if (addedtxt) Append(nontoken, false); + string retstr = TranGetSectionTitle(toitem); + Append(retstr, true); + if (retstr != null && retstr != "") return true; + return false; + } + private bool AddTranGetSectionTitle(bool addedtxt, string nontoken, ItemInfo itminfo) { // LATER: Cap1stSectionTitle, CapFirstLetterOnly if (_MyFormatData.TransData.UseSecTitles) { - string txt = TranGetSectionTitle(itminfo); - if (txt.Length>0)Append(nontoken, false); - Append(txt, true); + string retstr = TranGetSectionTitle(itminfo); + if (addedtxt)Append(nontoken, false); + Append(retstr, true); + if (retstr != null && retstr != "") return true; } + return false; } public string PathTo {