From 0b14d49c782fe9cdd7adc161f95f5a036f2426bf Mon Sep 17 00:00:00 2001 From: Kathy Date: Thu, 15 May 2008 11:03:52 +0000 Subject: [PATCH] --- .../VEPROMS.CSLA.Library/Extension/ItemExt.cs | 18 +++ .../Extension/TransitionExt.cs | 142 +++++++++++++----- 2 files changed, 120 insertions(+), 40 deletions(-) diff --git a/PROMS/VEPROMS.CSLA.Library/Extension/ItemExt.cs b/PROMS/VEPROMS.CSLA.Library/Extension/ItemExt.cs index 555ae6fa..0455016f 100644 --- a/PROMS/VEPROMS.CSLA.Library/Extension/ItemExt.cs +++ b/PROMS/VEPROMS.CSLA.Library/Extension/ItemExt.cs @@ -269,6 +269,24 @@ namespace VEPROMS.CSLA.Library return false; } } + public bool IsDefaultSection + { + get + { + // check to see if ActiveParent is a section, if so it is a high level step + if (MyContent.Type / 10000 != 1) return false; + // get procedure section and then + ItemInfo parent = (ItemInfo)ActiveParent; + if (!parent.IsProcedure) return false; + ProcedureConfig pc = (ProcedureConfig)parent.MyConfig; + int sectstartid = -1; + string ss = pc == null ? null : pc.SectionStart; + if (ss != null) sectstartid = System.Convert.ToInt32(ss); + else return false; + if (ItemID == sectstartid) return true; + return false; + } + } public bool IsProcedure { get diff --git a/PROMS/VEPROMS.CSLA.Library/Extension/TransitionExt.cs b/PROMS/VEPROMS.CSLA.Library/Extension/TransitionExt.cs index 87bd938c..218b80d1 100644 --- a/PROMS/VEPROMS.CSLA.Library/Extension/TransitionExt.cs +++ b/PROMS/VEPROMS.CSLA.Library/Extension/TransitionExt.cs @@ -6,70 +6,110 @@ namespace VEPROMS.CSLA.Library { public partial class TransitionInfo { + private StringBuilder retstr; + private FormatData _MyFormatData = null; public string ResolvePathTo(FormatInfo fi, ItemInfo itminfo, ItemInfo toitem, ItemInfo rangeitem) { - StringBuilder retstr = new StringBuilder(); + retstr = new StringBuilder(); // get the format of the transition string based on this transition's index into the TransData part of // format.... - string tranformat = fi.PlantFormat.FormatData.TransData.TransTypeList[TranType].TransFormat; - E_TransUI etm = (E_TransUI)fi.PlantFormat.FormatData.TransData.TransTypeList[TranType].TransUI; + _MyFormatData = fi.PlantFormat.FormatData; + 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; while ((index = tranformat.IndexOf("{", startIndex))>-1) { - // Append any non-token text that preceeds the token. - string remstptext = null; - if (index > startIndex) - { - retstr.Append(tranformat.Substring(startIndex, index-startIndex)); - remstptext = tranformat.Substring(startIndex, index-startIndex); - } + if (index > startIndex) nontoken = tranformat.Substring(startIndex, index - startIndex); int endtokn = tranformat.IndexOf("}", index); string token = tranformat.Substring(index, endtokn - index + 1); switch (token) { - case "{Proc Num}": - retstr.Append(toitem.MyProcedure.MyContent.Number); + case "{Proc Num}": // Coded for HLP + AddTransitionProcNum(nontoken, toitem); break; - case "{Proc Title}": - if (fi.PlantFormat.FormatData.XtraOptions("CapsTransitions")) - retstr.Append(toitem.MyProcedure.MyContent.Text.ToUpper()); - else - retstr.Append(toitem.MyProcedure.MyContent.Text); + case "{Proc Title}": // Coded for HLP + AddTransitionProcTitle(nontoken, toitem); break; - case "{First Step}": // TODO: LowerCaseTranNumber - lower case substep numbers in transitions + 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) - retstr.Append(toitem.Ordinal.ToString()); - else // if the word 'step' or ',' preceeds this template & there is no step, remove it. + if ((!((etm & E_TransUI.StepAllowNone) == E_TransUI.StepAllowNone)) || toitem.MyContent.Type > 20000) { - if (remstptext != null) - { - int len = remstptext.Length; - retstr.Remove(retstr.Length-len,len); - } + Append(nontoken, false); + Append(toitem.Ordinal.ToString(), true); } break; case "{Last Step}": // TODO: TStepNoFlag, i.e. include step number in range items. - retstr.Append(rangeitem.Ordinal.ToString()); + Append(nontoken, false); + Append(rangeitem.Ordinal.ToString(), true); break; case "{.}": // TODO: TStepNoFlag, i.e. include step number in range items. - retstr.Append("#"); // TODO: Intermediate Range. + Append(nontoken, false); + Append("#", true); // TODO: Intermediate Range. break; case "{Sect Hdr}": - retstr.Append(TranGetSectionHdr(toitem)); + AddTranGetSectionHdr(nontoken, toitem); break; case "{Sect Title}": - retstr.Append(TranGetSectionTitle(toitem)); + AddTranGetSectionTitle(nontoken, toitem); break; } startIndex = endtokn+1; if (startIndex >= tranformat.Length) break; } - if (startIndex < tranformat.Length) retstr.Append(tranformat.Substring(startIndex, tranformat.Length - startIndex - 1)); + if (startIndex < tranformat.Length) Append(tranformat.Substring(startIndex, tranformat.Length - startIndex - 1), false); return (retstr.ToString()); } + private void Append(string str, bool doflags) + { + if (str == null || str == "") return; + if (doflags && _MyFormatData.TransData.XchngTranSpForHard) + { + int indx = str.IndexOf(' '); + if (indx > -1) + { + str.Remove(indx, 1); + str.Insert(indx, @"\u160?"); + } + } + retstr.Append(str); + } + private void AddTransitionProcTitle(string nontoken, ItemInfo toitem) + { + string parenstr = toitem.MyProcedure.MyContent.Text; + StringBuilder lretstr = new StringBuilder(); + // LATER: For an else - Do I need to strip underlining here? See promsnt\lib\edit\gettran.c + if (parenstr != "" || _MyFormatData.ProcData.PrintNoTitle) + { + lretstr.Append(_MyFormatData.TransData.DelimiterForTransitionTitle); + lretstr.Append(_MyFormatData.TransData.CapsTransitions ? parenstr.ToUpper() : + _MyFormatData.TransData.Cap1stCharTrans ? CapFirstLetterOnly(parenstr, 0) : + parenstr); + lretstr.Append(_MyFormatData.TransData.DelimiterForTransitionTitle); + } + // LATER: if (DoSectionTransitions && GetSTepNO(TSeq1)) TransitionCat(AddCommaStep", Step")); + if (nontoken != null) Append(nontoken, false); + Append(lretstr.ToString(), true); + } + + private string CapFirstLetterOnly(string retstr, int p) + { + string lretstr = retstr; + // LATER: write code to capitalize first letter (active plants) + return lretstr; + } + + private void AddTransitionProcNum(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); + Append(retstr, true); + } // TODO: Section methods are not complete.... private ItemInfo TranGetSectionItem(ItemInfo itminfo) { @@ -77,20 +117,42 @@ namespace VEPROMS.CSLA.Library while (tmpitm.MyContent.Type >= 20000) tmpitm = tmpitm.MyParent; return tmpitm; } - private string TranGetSectionHdr(ItemInfo itminfo) + private void AddTranGetSectionHdr(string nontoken, ItemInfo itminfo) + { + // if this is a step section & the default section, just 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); + Append(retstr.ToString(), true); + } + private string TranGetSectionNumber(ItemInfo itminfo) { ItemInfo tmpitm = TranGetSectionItem(itminfo); - StringBuilder retstr = new StringBuilder(); - retstr.Append(tmpitm.MyContent.Number); - if (tmpitm.MyContent.Number != null && tmpitm.MyContent.Number != "" && tmpitm.MyContent.Text != null && tmpitm.MyContent.Text != "") retstr.Append(" "); - retstr.Append(tmpitm.MyContent.Text); - return (retstr.ToString()); + return (tmpitm.MyContent.Number); } - private string TranGetSectionTitle(ItemInfo itminfo) { - ItemInfo tmpitm = TranGetSectionItem(itminfo); - return (tmpitm.MyContent.Text); + // LATER: Cap1stSectionTitle, CapFirstLetterOnly + if (_MyFormatData.TransData.UseSecTitles) + { + ItemInfo tmpitm = TranGetSectionItem(itminfo); + return (tmpitm.MyContent.Text); + } + return null; + } + private void AddTranGetSectionTitle(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); + } } public string PathTo {