C2025-024 Electronic Procedures - Phase 2 (PROMS XML output)
RO image resolution for Annotations
This commit is contained in:
parent
92522b1229
commit
ec8e4c36a4
Binary file not shown.
@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
@ -12,11 +13,13 @@ namespace VEPROMS
|
|||||||
//C2025-024 Electronic Procedures - Phase 2 (PROMS XML output)
|
//C2025-024 Electronic Procedures - Phase 2 (PROMS XML output)
|
||||||
//class inherits from normal import/export form
|
//class inherits from normal import/export form
|
||||||
//then adds additional functionality
|
//then adds additional functionality
|
||||||
|
#pragma warning disable S101 // Types should be named in PascalCase
|
||||||
public partial class dlgExportImportEP : dlgExportImport
|
public partial class dlgExportImportEP : dlgExportImport
|
||||||
|
#pragma warning restore S101 // Types should be named in PascalCase
|
||||||
{
|
{
|
||||||
private readonly AnnotationTypeInfo _AnnotationType;
|
private readonly AnnotationTypeInfo _AnnotationType;
|
||||||
|
|
||||||
private string multiseparator = ",";
|
private readonly string multiseparator = ",";
|
||||||
|
|
||||||
private static Regex _ROAccPageTokenPattern = new Regex("[<][^<>-]+-[^<>]+[>]");
|
private static Regex _ROAccPageTokenPattern = new Regex("[<][^<>-]+-[^<>]+[>]");
|
||||||
|
|
||||||
@ -66,11 +69,16 @@ namespace VEPROMS
|
|||||||
string steptab = Volian.Print.Library.PDFReport.BuildStepTab(ii);
|
string steptab = Volian.Print.Library.PDFReport.BuildStepTab(ii);
|
||||||
xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "StepTab", steptab));
|
xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "StepTab", steptab));
|
||||||
|
|
||||||
|
//Add db sequence to item
|
||||||
|
string dbsequence = dbSeq(ii);
|
||||||
|
xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dbsequence", dbsequence));
|
||||||
|
|
||||||
//get first transition in item and add it as an xml element
|
//get first transition in item and add it as an xml element
|
||||||
if (ii.MyContent.ContentTransitionCount > 0)
|
if (ii.MyContent.ContentTransitionCount > 0)
|
||||||
{
|
{
|
||||||
TransitionInfo ct = ii.MyContent.ContentTransitions[0];
|
TransitionInfo ct = ii.MyContent.ContentTransitions[0];
|
||||||
xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "TransitionToItemID", ct.ToID.ToString()));
|
xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "TransitionToItemID", ct.ToID.ToString()));
|
||||||
|
xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "TransitionTodbsequence", dbSeq(ct.ToID)));
|
||||||
}
|
}
|
||||||
|
|
||||||
//export EP annotation details under an EPInfo node
|
//export EP annotation details under an EPInfo node
|
||||||
@ -79,110 +87,143 @@ namespace VEPROMS
|
|||||||
XmlElement xepinfo = xe.OwnerDocument.CreateElement("EPInfo");
|
XmlElement xepinfo = xe.OwnerDocument.CreateElement("EPInfo");
|
||||||
|
|
||||||
EPFields myEPFields = ii.GetValidEPFields(_AnnotationType.TypeID);
|
EPFields myEPFields = ii.GetValidEPFields(_AnnotationType.TypeID);
|
||||||
|
|
||||||
ROFSTLookup lookup = ii.MyDocVersion.DocVersionAssociations[0].MyROFst.GetROFSTLookup(ii.MyDocVersion);
|
ROFSTLookup lookup = ii.MyDocVersion.DocVersionAssociations[0].MyROFst.GetROFSTLookup(ii.MyDocVersion);
|
||||||
|
bool epexportblank = ii.EPexportblank(_AnnotationType.TypeID); //should blank xml elements export?
|
||||||
|
|
||||||
//For each annotation in the item that is of the current EP Annotation type
|
//grab the current RO db so will know location of RO files and default graphics ext.
|
||||||
foreach (var EPAnnotation in ii.ItemAnnotations.Where(x => x.TypeID == _AnnotationType.TypeID))
|
using (RODbInfo myRODB = (RODbInfoList.Get()).FirstOrDefault(x => x.RODbID == ii.MyDocVersion.DocVersionAssociations[0].MyROFst.RODbID))
|
||||||
{
|
{
|
||||||
var EPAnnotationConfig = new AnnotationConfig(EPAnnotation.Config);
|
//For each annotation in the item that is of the current EP Annotation type
|
||||||
|
foreach (var EPAnnotation in ii.ItemAnnotations.Where(x => x.TypeID == _AnnotationType.TypeID))
|
||||||
XmlElement xepdetails = xe.OwnerDocument.CreateElement("Details");
|
|
||||||
//include the annotation ID for reference
|
|
||||||
xepdetails.Attributes.SetNamedItem(AddAttribute(xepdetails.OwnerDocument, "AnnotationID", EPAnnotation.AnnotationID.ToString()));
|
|
||||||
|
|
||||||
//loop through each EP Field - name the xml elements the EP.name
|
|
||||||
foreach (EPField EP in myEPFields)
|
|
||||||
{
|
{
|
||||||
string val = EPAnnotationConfig.GetValue("EP", EP.name);
|
var EPAnnotationConfig = new AnnotationConfig(EPAnnotation.Config);
|
||||||
|
|
||||||
XmlElement xindivid = xe.OwnerDocument.CreateElement(EP.name);
|
XmlElement xepdetails = xe.OwnerDocument.CreateElement("Details");
|
||||||
|
//include the annotation ID for reference
|
||||||
|
xepdetails.Attributes.SetNamedItem(AddAttribute(xepdetails.OwnerDocument, "AnnotationID", EPAnnotation.AnnotationID.ToString()));
|
||||||
|
|
||||||
//need to resolve ROs ROSingle, ROMulti, in text
|
//loop through each EP Field - name the xml elements the EP.name
|
||||||
//get values
|
foreach (EPField EP in myEPFields)
|
||||||
//should we export blank?
|
|
||||||
//
|
|
||||||
switch (EP.type.ToLower())
|
|
||||||
{
|
{
|
||||||
case "text":
|
string val = EPAnnotationConfig.GetValue("EP", EP.name);
|
||||||
|
|
||||||
//for text, check if any embedded ROs
|
if (epexportblank || !string.IsNullOrEmpty(val))
|
||||||
//if none, set the xml element to the text
|
{
|
||||||
//otherwise resolve the Ros
|
XmlElement xindivid = xe.OwnerDocument.CreateElement(EP.name);
|
||||||
MatchCollection matches = _ROAccPageTokenPattern.Matches(val);
|
|
||||||
if (matches.Count == 0)
|
//need to resolve ROs ROSingle, ROMulti, in text
|
||||||
|
//get values
|
||||||
|
switch (EP.type.ToLower())
|
||||||
{
|
{
|
||||||
xindivid.InnerText = val;
|
case "text":
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//resolve ROs
|
|
||||||
//text ROs will replace the AccID key in the text
|
|
||||||
//for binary objects like images,
|
|
||||||
//we will keep the AccID in the text and output the binary as a separate child
|
|
||||||
//XML element with the same xml name as the AccID
|
|
||||||
foreach (Match m in matches)
|
|
||||||
{
|
|
||||||
ROFSTLookup.rochild roc = lookup.GetROChildByAccPageID(m.Groups[1].Value);
|
|
||||||
|
|
||||||
|
//for text, check if any embedded ROs
|
||||||
if (roc.type == 8) // Exclude replacing Images since are binary - for those, add a sub item
|
//if none, set the xml element to the text
|
||||||
|
//otherwise resolve the ROs
|
||||||
|
MatchCollection matches = _ROAccPageTokenPattern.Matches(val);
|
||||||
|
if (matches.Count == 0)
|
||||||
{
|
{
|
||||||
XmlElement xroid = xindivid.OwnerDocument.CreateElement(m.Groups[1].Value);
|
xindivid.InnerText = val;
|
||||||
xroid.InnerText = roc.value;
|
|
||||||
xindivid.AppendChild(xroid);
|
|
||||||
}
|
}
|
||||||
else if (!string.IsNullOrEmpty(roc.value))
|
else
|
||||||
{
|
{
|
||||||
bool convertCaretToDeltaSymbol = (ii.ActiveSection != null) && ii.ActiveSection.ActiveFormat.PlantFormat.FormatData.SectData.ConvertCaretToDelta;
|
//resolve ROs
|
||||||
|
//text ROs will replace the AccID key in the text
|
||||||
|
//for binary objects like images,
|
||||||
|
//we will keep the AccID in the text and output the binary as a separate child
|
||||||
|
//XML element with the same xml name as the AccID
|
||||||
|
foreach (Match m in matches)
|
||||||
|
{
|
||||||
|
ROFSTLookup.rochild roc = lookup.GetROChildByAccPageID(m.Groups[1].Value);
|
||||||
|
|
||||||
string rocvalue = roc.value.Replace("`", "\xB0");
|
// Exclude replacing Images since are binary - for those, add a sub item
|
||||||
rocvalue = rocvalue.Replace("\xF8", "\xB0");
|
if (Enumerable.Range(8, 15).Contains(roc.type))
|
||||||
rocvalue = rocvalue.Replace("\x7F", "\x394"); //delta
|
{
|
||||||
if (convertCaretToDeltaSymbol) rocvalue = rocvalue.Replace("^", "\x394"); // delta
|
xindivid.InnerText = val;
|
||||||
val = val.Replace($"<{m.Groups[1].Value}>", rocvalue);
|
|
||||||
|
XmlElement xroid = AddGraphic(xindivid, m.Groups[1].Value, roc, myRODB, roc.type != 8);
|
||||||
|
|
||||||
|
xindivid.AppendChild(xroid);
|
||||||
|
}
|
||||||
|
else if (!string.IsNullOrEmpty(roc.value))
|
||||||
|
{
|
||||||
|
bool convertCaretToDeltaSymbol = (ii.ActiveSection != null) && ii.ActiveSection.ActiveFormat.PlantFormat.FormatData.SectData.ConvertCaretToDelta;
|
||||||
|
|
||||||
|
string rocvalue = roc.value.Replace("`", "\xB0");
|
||||||
|
rocvalue = rocvalue.Replace("\xF8", "\xB0");
|
||||||
|
rocvalue = rocvalue.Replace("\x7F", "\x394"); //delta
|
||||||
|
if (convertCaretToDeltaSymbol) rocvalue = rocvalue.Replace("^", "\x394"); // delta
|
||||||
|
val = val.Replace($"<{m.Groups[1].Value}>", rocvalue);
|
||||||
|
xindivid.InnerText = val;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "rosingle":
|
||||||
|
//Get the output columns from the EPFormatFile
|
||||||
|
//set the "Item" nodes value = to those resolved items
|
||||||
|
//separated by multiseparator
|
||||||
|
XmlElement xindivid_rosingle = xindivid.OwnerDocument.CreateElement("Item");
|
||||||
|
xindivid_rosingle.Attributes.SetNamedItem(AddAttribute(xindivid_rosingle.OwnerDocument, "ROID", val));
|
||||||
|
|
||||||
|
//add values specified in EP input list
|
||||||
|
List<string> ro_single_tmp = EP.getROValuesList(EPAnnotation, val);
|
||||||
|
xindivid_rosingle.InnerText = String.Join(multiseparator, ro_single_tmp.ToArray());
|
||||||
|
|
||||||
|
//if image, add location and binary of image
|
||||||
|
// - images are type 8
|
||||||
|
// but if multiple return values could combine
|
||||||
|
// for example an text (1) + image (8) would be 9
|
||||||
|
ROFSTLookup.rochild roc_single = lookup.GetRoChild(val);
|
||||||
|
if (Enumerable.Range(8, 15).Contains(roc_single.type))
|
||||||
|
{
|
||||||
|
XmlElement xroid = AddGraphic(xindivid, val, roc_single, myRODB, roc_single.type != 8);
|
||||||
|
xindivid_rosingle.AppendChild(xroid);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
xindivid.AppendChild(xindivid_rosingle);
|
||||||
|
break;
|
||||||
|
case "romulti":
|
||||||
|
//Get the output columns from the EPFormatFile
|
||||||
|
//create an "Item" subnode for each selected RO
|
||||||
|
//set the nodes value = to those resolved items
|
||||||
|
//separated by multiseparator
|
||||||
|
foreach (string ival in val.Split(multiseparator.ToCharArray()))
|
||||||
|
{
|
||||||
|
XmlElement xindivid_romulti = xindivid.OwnerDocument.CreateElement("Item");
|
||||||
|
xindivid_romulti.Attributes.SetNamedItem(AddAttribute(xindivid_romulti.OwnerDocument, "ROID", ival));
|
||||||
|
|
||||||
xindivid.InnerText = val;
|
//add values specified in EP input list
|
||||||
|
List<string> ro_multi_tmp = EP.getROValuesList(EPAnnotation, ival);
|
||||||
|
xindivid_romulti.InnerText = String.Join(multiseparator, ro_multi_tmp.ToArray());
|
||||||
|
|
||||||
|
//if image, add location and binary of image
|
||||||
|
// - images are type 8
|
||||||
|
// but if multiple return values could combine
|
||||||
|
// for example an text (1) + image (8) would be 9
|
||||||
|
ROFSTLookup.rochild roc_multi = lookup.GetRoChild(ival);
|
||||||
|
if (Enumerable.Range(8, 15).Contains(roc_multi.type))
|
||||||
|
{
|
||||||
|
XmlElement xroid = AddGraphic(xindivid, ival, roc_multi, myRODB, roc_multi.type != 8);
|
||||||
|
xindivid_romulti.AppendChild(xroid);
|
||||||
|
}
|
||||||
|
|
||||||
|
xindivid.AppendChild(xindivid_romulti);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "tableinput":
|
||||||
|
xindivid.InnerText = val;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
xindivid.InnerText = val;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
xepdetails.AppendChild(xindivid);
|
||||||
case "rosingle":
|
}
|
||||||
//Get the output columns from the EPFormatFile
|
|
||||||
//set the "Item" nodes value = to those resolved items
|
|
||||||
//separated by multiseparator
|
|
||||||
XmlElement xindivid_rosingle = xindivid.OwnerDocument.CreateElement("Item");
|
|
||||||
xindivid_rosingle.Attributes.SetNamedItem(AddAttribute(xindivid_rosingle.OwnerDocument, "ROID", val));
|
|
||||||
List<string> ro_single_tmp = EP.getROValuesList(EPAnnotation, val);
|
|
||||||
xindivid_rosingle.InnerText = String.Join(multiseparator, ro_single_tmp.ToArray());
|
|
||||||
xindivid.AppendChild(xindivid_rosingle);
|
|
||||||
break;
|
|
||||||
case "romulti":
|
|
||||||
//Get the output columns from the EPFormatFile
|
|
||||||
//create an "Item" subnode for each selected RO
|
|
||||||
//set the nodes value = to those resolved items
|
|
||||||
//separated by multiseparator
|
|
||||||
foreach (string ival in val.Split(multiseparator.ToCharArray()))
|
|
||||||
{
|
|
||||||
XmlElement xindivid_romulti = xindivid.OwnerDocument.CreateElement("Item");
|
|
||||||
xindivid_romulti.Attributes.SetNamedItem(AddAttribute(xindivid_romulti.OwnerDocument, "ROID", ival));
|
|
||||||
List<string> ro_multi_tmp = EP.getROValuesList(EPAnnotation, ival);
|
|
||||||
xindivid_romulti.InnerText = String.Join(multiseparator, ro_multi_tmp.ToArray());
|
|
||||||
xindivid.AppendChild(xindivid_romulti);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "tableinput":
|
|
||||||
xindivid.InnerText = val;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
xindivid.InnerText = val;
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
xepdetails.AppendChild(xindivid);
|
xepinfo.AppendChild(xepdetails);
|
||||||
}
|
}
|
||||||
|
|
||||||
xepinfo.AppendChild(xepdetails);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
xe.AppendChild(xepinfo);
|
xe.AppendChild(xepinfo);
|
||||||
@ -190,6 +231,68 @@ namespace VEPROMS
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//return a db sequence string from an Item ID
|
||||||
|
private string dbSeq(int itemID)
|
||||||
|
{
|
||||||
|
using (ItemInfo ii = ItemInfo.Get(itemID))
|
||||||
|
{
|
||||||
|
return dbSeq(ii);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//return a db sequence string from an ItemInfo
|
||||||
|
private string dbSeq(ItemInfo ii)
|
||||||
|
{
|
||||||
|
return $"{((FolderInfo)ii.MyDocVersion.ActiveParent).Name}:{ii.DBSequence}";
|
||||||
|
}
|
||||||
|
|
||||||
|
//For Exporting an RO that is an image
|
||||||
|
//returns an xmlElement
|
||||||
|
// - that is a child to xindivid
|
||||||
|
// - that has a name of Name
|
||||||
|
// - that has a value of the binary representation of the image
|
||||||
|
// - that has an attribute designating the location of the image file
|
||||||
|
private XmlElement AddGraphic(XmlElement xindivid, string Name, ROFSTLookup.rochild roc, RODbInfo rodb, bool isMulti)
|
||||||
|
{
|
||||||
|
XmlElement xroid = xindivid.OwnerDocument.CreateElement(Name);
|
||||||
|
string rodbpath = rodb.FolderPath;
|
||||||
|
|
||||||
|
string rocval = roc.value;
|
||||||
|
if (rocval == null) rocval = Array.Find(roc.children, x => x.value.Contains('.')).value;
|
||||||
|
|
||||||
|
if (rocval == null) return xroid;
|
||||||
|
string imgname;
|
||||||
|
if (isMulti)
|
||||||
|
{
|
||||||
|
imgname = rocval.Substring(rocval.IndexOf(' ') + 1, rocval.IndexOf("\r\n") - rocval.IndexOf(' ') - 1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
imgname = rocval.Substring(0, rocval.IndexOf('\n'));
|
||||||
|
}
|
||||||
|
int thedot = imgname.LastIndexOf('.');
|
||||||
|
string fname = imgname;
|
||||||
|
if (thedot == -1 || (thedot != (imgname.Length - 4)))
|
||||||
|
{
|
||||||
|
RODbConfig roDbCfg = new RODbConfig(rodb.Config);
|
||||||
|
fname += string.Format(".{0}", roDbCfg.GetDefaultGraphicExtension());
|
||||||
|
}
|
||||||
|
|
||||||
|
string imgfile = Path.Combine(rodbpath, fname);
|
||||||
|
xroid.Attributes.SetNamedItem(AddAttribute(xroid.OwnerDocument, "Location", imgfile));
|
||||||
|
|
||||||
|
if (File.Exists(imgfile))
|
||||||
|
{
|
||||||
|
using (FileStream fsIn = new FileStream(imgfile, FileMode.Open, FileAccess.Read, FileShare.Read))
|
||||||
|
{
|
||||||
|
// Create an instance of StreamReader that can read characters from the FileStream.
|
||||||
|
using (BinaryReader r = new BinaryReader(fsIn))
|
||||||
|
xroid.InnerText = Encoding.Default.GetString(r.ReadBytes((int)fsIn.Length));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return xroid;
|
||||||
|
}
|
||||||
|
|
||||||
//clear objects to release memory
|
//clear objects to release memory
|
||||||
private void OnClose(object sender, EventArgs e)
|
private void OnClose(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
|
@ -346,21 +346,21 @@ namespace VEPROMS.CSLA.Library
|
|||||||
{
|
{
|
||||||
var ii = _CacheByPrimaryKey.FirstOrDefault();
|
var ii = _CacheByPrimaryKey.FirstOrDefault();
|
||||||
|
|
||||||
while (ii.Value.Count > 0)
|
while (ii.Value.Count > 0)
|
||||||
{
|
{
|
||||||
if (ii.Value[0]?.MyContent?.ContentParts != null)
|
if (ii.Value[0]?.MyContent?.ContentParts != null)
|
||||||
{ foreach (PartInfo pi in ii.Value[0]?.MyContent?.ContentParts) pi.Dispose(); }
|
{ foreach (PartInfo pi in ii.Value[0]?.MyContent?.ContentParts) pi.Dispose(); }
|
||||||
ii.Value[0].Dispose();
|
ii.Value[0].Dispose();
|
||||||
}
|
}
|
||||||
_CacheByPrimaryKey.Remove(ii.Key);
|
_CacheByPrimaryKey.Remove(ii.Key);
|
||||||
}
|
}
|
||||||
|
|
||||||
while (_CacheList.Count > 0)
|
while (_CacheList.Count > 0)
|
||||||
{
|
{
|
||||||
if (_CacheList[0]?.MyContent?.ContentParts != null)
|
if (_CacheList[0]?.MyContent?.ContentParts != null)
|
||||||
{foreach (PartInfo pi in _CacheList[0]?.MyContent?.ContentParts) pi.Dispose(); }
|
{foreach (PartInfo pi in _CacheList[0]?.MyContent?.ContentParts) pi.Dispose(); }
|
||||||
_CacheList[0].Dispose();
|
_CacheList[0].Dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool _PrintAllAtOnce = false;
|
private bool _PrintAllAtOnce = false;
|
||||||
@ -450,86 +450,86 @@ namespace VEPROMS.CSLA.Library
|
|||||||
StringBuilder sret = new StringBuilder();
|
StringBuilder sret = new StringBuilder();
|
||||||
ItemInfo pitem = this;
|
ItemInfo pitem = this;
|
||||||
while (!pitem.IsSection && !pitem.IsHigh)
|
while (!pitem.IsSection && !pitem.IsHigh)
|
||||||
{
|
{
|
||||||
using (StepInfo stpinfo = StepInfo.Get(pitem.ItemID))
|
using (StepInfo stpinfo = StepInfo.Get(pitem.ItemID))
|
||||||
{
|
{
|
||||||
string thisTab = stpinfo.MyTab.CleanText;
|
string thisTab = stpinfo.MyTab.CleanText;
|
||||||
|
|
||||||
string typeName = stpinfo.FormatStepData.StepEditData.TypeMenu.MenuItem;
|
string typeName = stpinfo.FormatStepData.StepEditData.TypeMenu.MenuItem;
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(thisTab))
|
if (!string.IsNullOrEmpty(thisTab))
|
||||||
{
|
{
|
||||||
thisTab = thisTab.Trim();
|
thisTab = thisTab.Trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
// if the tab is null or
|
// if the tab is null or
|
||||||
// if the the tab is not a letter or number OR
|
// if the the tab is not a letter or number OR
|
||||||
// the tab is an AND or OR type and is the letter "o"
|
// the tab is an AND or OR type and is the letter "o"
|
||||||
// then reset the tab an empty string so that the type name along with the count of that type
|
// then reset the tab an empty string so that the type name along with the count of that type
|
||||||
// (ex. "AND 2", "OR 3")
|
// (ex. "AND 2", "OR 3")
|
||||||
if (string.IsNullOrEmpty(thisTab) || (thisTab != string.Empty && (!(char.IsLetterOrDigit(thisTab[0])) || ((pitem.IsAnd || pitem.IsOr || pitem.IsCaution || pitem.IsNote) && thisTab.Contains("o")))))
|
if (string.IsNullOrEmpty(thisTab) || (thisTab != string.Empty && (!(char.IsLetterOrDigit(thisTab[0])) || ((pitem.IsAnd || pitem.IsOr || pitem.IsCaution || pitem.IsNote) && thisTab.Contains("o")))))
|
||||||
{
|
{
|
||||||
thisTab = string.Empty;
|
thisTab = string.Empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pitem.IsRNOPart)
|
if (pitem.IsRNOPart)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(thisTab))
|
if (string.IsNullOrEmpty(thisTab))
|
||||||
{
|
{
|
||||||
sret.Insert(0, "RNO.");
|
sret.Insert(0, "RNO.");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
thisTab = thisTab.Trim();
|
thisTab = thisTab.Trim();
|
||||||
|
|
||||||
if (!thisTab.EndsWith(".") && !thisTab.EndsWith(")"))
|
if (!thisTab.EndsWith(".") && !thisTab.EndsWith(")"))
|
||||||
{
|
{
|
||||||
thisTab += ".";
|
thisTab += ".";
|
||||||
}
|
}
|
||||||
|
|
||||||
sret.Insert(0, "RNO." + thisTab);
|
sret.Insert(0, "RNO." + thisTab);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (pitem.IsCaution || pitem.IsNote)
|
else if (pitem.IsCaution || pitem.IsNote)
|
||||||
{
|
{
|
||||||
// add the Caution or Note count to the tab (ex "Caution 1", "Note 2")
|
// add the Caution or Note count to the tab (ex "Caution 1", "Note 2")
|
||||||
if (string.IsNullOrEmpty(thisTab))
|
if (string.IsNullOrEmpty(thisTab))
|
||||||
{
|
{
|
||||||
sret.Append("{" + typeName + " " + pitem.Ordinal.ToString() + "}");
|
sret.Append("{" + typeName + " " + pitem.Ordinal.ToString() + "}");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
thisTab = thisTab.Trim(" ".ToCharArray());
|
thisTab = thisTab.Trim(" ".ToCharArray());
|
||||||
sret.Append(thisTab + " " + pitem.Ordinal.ToString() + sret);
|
sret.Append(thisTab + " " + pitem.Ordinal.ToString() + sret);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!string.IsNullOrEmpty(thisTab))
|
if (!string.IsNullOrEmpty(thisTab))
|
||||||
{
|
{
|
||||||
thisTab = thisTab.Trim(" ".ToCharArray());
|
thisTab = thisTab.Trim(" ".ToCharArray());
|
||||||
|
|
||||||
if (!thisTab.EndsWith(".") && !thisTab.EndsWith(")"))
|
if (!thisTab.EndsWith(".") && !thisTab.EndsWith(")"))
|
||||||
{
|
{
|
||||||
thisTab += ".";
|
thisTab += ".";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
thisTab = "{" + typeName + " " + pitem.Ordinal.ToString() + "}.";
|
thisTab = "{" + typeName + " " + pitem.Ordinal.ToString() + "}.";
|
||||||
}
|
}
|
||||||
|
|
||||||
sret.Insert(0, thisTab);
|
sret.Insert(0, thisTab);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pitem = pitem.ActiveParent as ItemInfo;
|
pitem = pitem.ActiveParent as ItemInfo;
|
||||||
|
|
||||||
if (pitem == null)
|
if (pitem == null)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return sret.ToString().Trim(" .)".ToCharArray());
|
return sret.ToString().Trim(" .)".ToCharArray());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetHeader(VE_Font myFont, string myText)
|
public void SetHeader(VE_Font myFont, string myText)
|
||||||
@ -574,11 +574,11 @@ namespace VEPROMS.CSLA.Library
|
|||||||
}
|
}
|
||||||
_MyPrevious = null; // Reset list so that the next line gets a new list
|
_MyPrevious = null; // Reset list so that the next line gets a new list
|
||||||
if (MyPrevious != null) MyPrevious.RefreshNextItems(); // Update List for new value
|
if (MyPrevious != null) MyPrevious.RefreshNextItems(); // Update List for new value
|
||||||
//if (_ContentID != tmp.ContentID)
|
//if (_ContentID != tmp.ContentID)
|
||||||
//{
|
//{
|
||||||
if (MyContent != null) MyContent.RefreshContentItems(); // Update List for old value
|
if (MyContent != null) MyContent.RefreshContentItems(); // Update List for old value
|
||||||
_ContentID = tmp.ContentID; // Update the value
|
_ContentID = tmp.ContentID; // Update the value
|
||||||
//}
|
//}
|
||||||
_MyContent = null; // Reset list so that the next line gets a new list
|
_MyContent = null; // Reset list so that the next line gets a new list
|
||||||
if (MyContent != null) MyContent.RefreshContentItems(); // Update List for new value
|
if (MyContent != null) MyContent.RefreshContentItems(); // Update List for new value
|
||||||
_DTS = tmp.DTS;
|
_DTS = tmp.DTS;
|
||||||
@ -674,12 +674,12 @@ namespace VEPROMS.CSLA.Library
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static void SetParentSectionAndDocVersion(ItemInfo itemInfo, IVEDrillDownReadOnly itemParent, SectionInfo sectionInfo, ProcedureInfo procInfo, DocVersionInfo docVersionInfo, bool isAutomatic = false)
|
internal static void SetParentSectionAndDocVersion(ItemInfo itemInfo, IVEDrillDownReadOnly itemParent, SectionInfo sectionInfo, ProcedureInfo procInfo, DocVersionInfo docVersionInfo, bool isAutomatic = false)
|
||||||
{
|
{
|
||||||
// B2022-107: Display Progress Bar Messages/Statuses when a new ROFST binary file is loaded into the database
|
// B2022-107: Display Progress Bar Messages/Statuses when a new ROFST binary file is loaded into the database
|
||||||
// Added Optional Parameter "bool isAutomatic = false" to disable the RofstLoadingStatus pop-up screen when printing baselines
|
// Added Optional Parameter "bool isAutomatic = false" to disable the RofstLoadingStatus pop-up screen when printing baselines
|
||||||
|
|
||||||
if (itemInfo == null) return;
|
if (itemInfo == null) return;
|
||||||
itemInfo.LoadAllAtOnce = true;
|
itemInfo.LoadAllAtOnce = true;
|
||||||
itemInfo.ActiveParent = itemParent;
|
itemInfo.ActiveParent = itemParent;
|
||||||
@ -721,7 +721,7 @@ namespace VEPROMS.CSLA.Library
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The following method is used only in print because the 'printed' data is loaded into
|
/// The following method is used only in print because the 'printed' data is loaded into
|
||||||
/// memory before printing. Find the next item from memory (do not go out to database).
|
/// memory before printing. Find the next item from memory (do not go out to database).
|
||||||
@ -784,7 +784,7 @@ namespace VEPROMS.CSLA.Library
|
|||||||
{
|
{
|
||||||
bool forceConvertToText = false;
|
bool forceConvertToText = false;
|
||||||
TranCheckCount++;
|
TranCheckCount++;
|
||||||
|
|
||||||
if (!forceConvertToText)
|
if (!forceConvertToText)
|
||||||
{
|
{
|
||||||
if (traninfo.MyItemToID.ActiveSection != null)
|
if (traninfo.MyItemToID.ActiveSection != null)
|
||||||
@ -802,7 +802,7 @@ namespace VEPROMS.CSLA.Library
|
|||||||
content.FixTransitionText(traninfo, true);
|
content.FixTransitionText(traninfo, true);
|
||||||
content.Save();
|
content.Save();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// B2025-020 Null Reference fix. Added check for valid index into the TransitionTypeList
|
// B2025-020 Null Reference fix. Added check for valid index into the TransitionTypeList
|
||||||
if (!forceConvertToText)
|
if (!forceConvertToText)
|
||||||
@ -812,7 +812,7 @@ namespace VEPROMS.CSLA.Library
|
|||||||
forceConvertToText = true;
|
forceConvertToText = true;
|
||||||
TranFixCount++;
|
TranFixCount++;
|
||||||
itemInfo.MyContent.FixTransitionText(traninfo, itemInfo, "Reason for Change: Transition type is not available");
|
itemInfo.MyContent.FixTransitionText(traninfo, itemInfo, "Reason for Change: Transition type is not available");
|
||||||
using (Content content = Content.Get(itemInfo.MyContent.ContentID))
|
using (Content content = Content.Get(itemInfo.MyContent.ContentID))
|
||||||
{
|
{
|
||||||
content.FixTransitionText(traninfo, true);
|
content.FixTransitionText(traninfo, true);
|
||||||
content.Save();
|
content.Save();
|
||||||
@ -835,14 +835,14 @@ namespace VEPROMS.CSLA.Library
|
|||||||
content.FixTransitionText(traninfo, true);
|
content.FixTransitionText(traninfo, true);
|
||||||
content.Save();
|
content.Save();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!forceConvertToText)
|
if (!forceConvertToText)
|
||||||
{
|
{
|
||||||
if (itemInfo.MyDocVersion != null && traninfo.MyItemToID.MyDocVersion != null && itemInfo.MyDocVersion.VersionID != traninfo.MyItemToID.MyDocVersion.VersionID) //different doc version
|
if (itemInfo.MyDocVersion != null && traninfo.MyItemToID.MyDocVersion != null && itemInfo.MyDocVersion.VersionID != traninfo.MyItemToID.MyDocVersion.VersionID) //different doc version
|
||||||
{
|
{
|
||||||
if (!itemInfo.ActiveFormat.PlantFormat.FormatData.TransData.TransTypeList[traninfo.TranType].TransMenu.Contains("Proc")) //internal format
|
if (!itemInfo.ActiveFormat.PlantFormat.FormatData.TransData.TransTypeList[traninfo.TranType].TransMenu.Contains("Proc")) //internal format
|
||||||
{
|
{
|
||||||
@ -903,7 +903,7 @@ namespace VEPROMS.CSLA.Library
|
|||||||
if (itemInfo.MyContent.Text.Contains("Link:Transition"))
|
if (itemInfo.MyContent.Text.Contains("Link:Transition"))
|
||||||
{
|
{
|
||||||
Content content = Content.Get(itemInfo.MyContent.ContentID);
|
Content content = Content.Get(itemInfo.MyContent.ContentID);
|
||||||
|
|
||||||
if (itemInfo.MyContent.ContentTransitions != null)
|
if (itemInfo.MyContent.ContentTransitions != null)
|
||||||
{
|
{
|
||||||
foreach (TransitionInfo ct in itemInfo.MyContent.ContentTransitions)
|
foreach (TransitionInfo ct in itemInfo.MyContent.ContentTransitions)
|
||||||
@ -913,7 +913,7 @@ namespace VEPROMS.CSLA.Library
|
|||||||
}
|
}
|
||||||
|
|
||||||
itemInfo.MyContent.RefreshContentTransitions();
|
itemInfo.MyContent.RefreshContentTransitions();
|
||||||
|
|
||||||
while (content.Text.Contains("Link:Transition"))
|
while (content.Text.Contains("Link:Transition"))
|
||||||
{
|
{
|
||||||
TranCheckCount++;
|
TranCheckCount++;
|
||||||
@ -931,7 +931,7 @@ namespace VEPROMS.CSLA.Library
|
|||||||
else // B2018-043 Eliminate infinite loop for invalid transition structure
|
else // B2018-043 Eliminate infinite loop for invalid transition structure
|
||||||
{
|
{
|
||||||
// Add annotation for Invalid Transition
|
// Add annotation for Invalid Transition
|
||||||
AddInvalidTransitionAnnotation(itemInfo,"Invalid Transition Format");
|
AddInvalidTransitionAnnotation(itemInfo, "Invalid Transition Format");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -984,16 +984,16 @@ namespace VEPROMS.CSLA.Library
|
|||||||
ContentInfo myContent = itemInfo.MyContent;
|
ContentInfo myContent = itemInfo.MyContent;
|
||||||
string txt = myContent.Text;
|
string txt = myContent.Text;
|
||||||
string regDelete = @"(\\v |)\<START\]\#Link\:Transition(|Range)\:[0-9]+ [0-9]+ [0-9]+(| [0-9]+)\[END\>(\\v0 |)";
|
string regDelete = @"(\\v |)\<START\]\#Link\:Transition(|Range)\:[0-9]+ [0-9]+ [0-9]+(| [0-9]+)\[END\>(\\v0 |)";
|
||||||
string txt2=txt;
|
string txt2 = txt;
|
||||||
|
|
||||||
do{
|
do {
|
||||||
txt = txt2;
|
txt = txt2;
|
||||||
txt2 = Regex.Replace(txt, regDelete, "");
|
txt2 = Regex.Replace(txt, regDelete, "");
|
||||||
} while(txt2 != txt);
|
} while (txt2 != txt);
|
||||||
|
|
||||||
if(txt2 != myContent.Text)
|
if (txt2 != myContent.Text)
|
||||||
{
|
{
|
||||||
using(Content tmp = myContent.Get())
|
using (Content tmp = myContent.Get())
|
||||||
{
|
{
|
||||||
tmp.Text = txt2;
|
tmp.Text = txt2;
|
||||||
tmp.Save();
|
tmp.Save();
|
||||||
@ -1001,7 +1001,7 @@ namespace VEPROMS.CSLA.Library
|
|||||||
AddInvalidTransitionAnnotation(itemInfo, "Removed Empty Transition Text");
|
AddInvalidTransitionAnnotation(itemInfo, "Removed Empty Transition Text");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static bool IsTransitionToNonEditable(TransitionInfo ti)
|
private static bool IsTransitionToNonEditable(TransitionInfo ti)
|
||||||
{
|
{
|
||||||
foreach (TransitionInfo til in TransitionsToNonEditable)
|
foreach (TransitionInfo til in TransitionsToNonEditable)
|
||||||
@ -1032,7 +1032,7 @@ namespace VEPROMS.CSLA.Library
|
|||||||
public static int ROCheckCount = 0;
|
public static int ROCheckCount = 0;
|
||||||
public static int ROFixCount = 0;
|
public static int ROFixCount = 0;
|
||||||
private static AnnotationType _VolianCommentType = null; // Using this to flag ro value issues with byron to braidwood
|
private static AnnotationType _VolianCommentType = null; // Using this to flag ro value issues with byron to braidwood
|
||||||
|
|
||||||
public static AnnotationType VolianCommentType
|
public static AnnotationType VolianCommentType
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
@ -1065,7 +1065,7 @@ namespace VEPROMS.CSLA.Library
|
|||||||
|
|
||||||
string roval = lookup.GetTranslatedRoValue(rousage.ROID, this.ActiveSection.ActiveFormat.PlantFormat.FormatData.SectData.ConvertCaretToDelta, this.ActiveSection.ActiveFormat.PlantFormat.FormatData.SectData.UseTildaPoundCharsForSuperSubScriptInROValues, false, this);
|
string roval = lookup.GetTranslatedRoValue(rousage.ROID, this.ActiveSection.ActiveFormat.PlantFormat.FormatData.SectData.ConvertCaretToDelta, this.ActiveSection.ActiveFormat.PlantFormat.FormatData.SectData.UseTildaPoundCharsForSuperSubScriptInROValues, false, this);
|
||||||
ROFSTLookup.rochild roch = lookup.GetRoChild(rousage.ROID);
|
ROFSTLookup.rochild roch = lookup.GetRoChild(rousage.ROID);
|
||||||
|
|
||||||
this.MyContent.FixContentText(rousage, roval, roch.type, rofstinfo, this);
|
this.MyContent.FixContentText(rousage, roval, roch.type, rofstinfo, this);
|
||||||
string newText = this.MyContent.Text;
|
string newText = this.MyContent.Text;
|
||||||
|
|
||||||
@ -1263,7 +1263,7 @@ namespace VEPROMS.CSLA.Library
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string GetCombinedTab(ItemInfo itemInfo, string parTab)
|
public static string GetCombinedTab(ItemInfo itemInfo, string parTab)
|
||||||
{
|
{
|
||||||
string pTab = parTab == null ? "" : parTab;
|
string pTab = parTab == null ? "" : parTab;
|
||||||
@ -1276,7 +1276,7 @@ namespace VEPROMS.CSLA.Library
|
|||||||
// for supplemental information, bulleted tabs need to be included in the tab. The 'isletterordigit' should not occur for supinfo items -
|
// for supplemental information, bulleted tabs need to be included in the tab. The 'isletterordigit' should not occur for supinfo items -
|
||||||
// and this includes the parent of the supinfo since that is the tab used for supinfo concatenated with its parent. (B2017-120)
|
// and this includes the parent of the supinfo since that is the tab used for supinfo concatenated with its parent. (B2017-120)
|
||||||
// // B2020-154: Added check for the tab to start with '(', tabs that started with this were not included in the combined tab
|
// // B2020-154: Added check for the tab to start with '(', tabs that started with this were not included in the combined tab
|
||||||
if (thisTab != null && thisTab != "" && (!char.IsLetterOrDigit(thisTab[0]) && thisTab[0] != '(') && !vcbHeaderCheck && !itemInfo.IsInSupInfo && (itemInfo.SupInfos == null || itemInfo.SupInfos.Count <= 0 )) return pTab;
|
if (thisTab != null && thisTab != "" && (!char.IsLetterOrDigit(thisTab[0]) && thisTab[0] != '(') && !vcbHeaderCheck && !itemInfo.IsInSupInfo && (itemInfo.SupInfos == null || itemInfo.SupInfos.Count <= 0)) return pTab;
|
||||||
if (itemInfo.FormatStepData.NumberWithLevel) pTab = itemInfo.MyHLS.MyTab.CleanText.Trim();
|
if (itemInfo.FormatStepData.NumberWithLevel) pTab = itemInfo.MyHLS.MyTab.CleanText.Trim();
|
||||||
// if the parent tab ends with a alphanumeric and this tab is alphanumeric, add a '.' to separate them
|
// if the parent tab ends with a alphanumeric and this tab is alphanumeric, add a '.' to separate them
|
||||||
// also, include use the separator for bullets if doing the supplemental information tab (B2017-120)
|
// also, include use the separator for bullets if doing the supplemental information tab (B2017-120)
|
||||||
@ -1285,7 +1285,7 @@ namespace VEPROMS.CSLA.Library
|
|||||||
if (ms && mn) pTab = pTab.TrimEnd() + ".";
|
if (ms && mn) pTab = pTab.TrimEnd() + ".";
|
||||||
// remove ending '.' (if this is a hls, don't remove the '.')
|
// remove ending '.' (if this is a hls, don't remove the '.')
|
||||||
if (!itemInfo.IsHigh && thisTab.EndsWith(".")) thisTab = thisTab.Substring(0, thisTab.Length - 1);
|
if (!itemInfo.IsHigh && thisTab.EndsWith(".")) thisTab = thisTab.Substring(0, thisTab.Length - 1);
|
||||||
if (itemInfo.HasParentTab) return thisTab.Trim(); // F2020-023: if tab includes parent tab already, don't concatenate it
|
if (itemInfo.HasParentTab) return thisTab.Trim(); // F2020-023: if tab includes parent tab already, don't concatenate it
|
||||||
return pTab + thisTab.Trim();
|
return pTab + thisTab.Trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1341,8 +1341,8 @@ namespace VEPROMS.CSLA.Library
|
|||||||
// B2023-037: loading print text, resolve the RO symbols
|
// B2023-037: loading print text, resolve the RO symbols
|
||||||
|
|
||||||
bool GTLT = !itemInfo.IsTable && sectionInfo.ActiveFormat.PlantFormat.FormatData.SectData.ConvertGTELTEPMinROValue;
|
bool GTLT = !itemInfo.IsTable && sectionInfo.ActiveFormat.PlantFormat.FormatData.SectData.ConvertGTELTEPMinROValue;
|
||||||
bool GLTArrows = !itemInfo.IsTable && sectionInfo.ActiveFormat.PlantFormat.FormatData.SectData.UseDashGreaterLessThenForArrowsInROValue;
|
bool GLTArrows = !itemInfo.IsTable && sectionInfo.ActiveFormat.PlantFormat.FormatData.SectData.UseDashGreaterLessThenForArrowsInROValue;
|
||||||
string roval = lookup.GetTranslatedRoValue(rousage.ROID, sectionInfo.ActiveFormat.PlantFormat.FormatData.SectData.ConvertCaretToDelta, sectionInfo.ActiveFormat.PlantFormat.FormatData.SectData.UseTildaPoundCharsForSuperSubScriptInROValues, GTLT || GLTArrows, itemInfo);
|
string roval = lookup.GetTranslatedRoValue(rousage.ROID, sectionInfo.ActiveFormat.PlantFormat.FormatData.SectData.ConvertCaretToDelta, sectionInfo.ActiveFormat.PlantFormat.FormatData.SectData.UseTildaPoundCharsForSuperSubScriptInROValues, GTLT || GLTArrows, itemInfo);
|
||||||
ROFSTLookup.rochild roch = lookup.GetRoChild(rousage.ROID);
|
ROFSTLookup.rochild roch = lookup.GetRoChild(rousage.ROID);
|
||||||
itemInfo.MyContent.FixContentText(rousage, roval, roch.type, rofstinfo, itemInfo);
|
itemInfo.MyContent.FixContentText(rousage, roval, roch.type, rofstinfo, itemInfo);
|
||||||
}
|
}
|
||||||
@ -1367,7 +1367,7 @@ namespace VEPROMS.CSLA.Library
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (itemInfo.MyContent.ContentTransitionCount > 0)
|
if (itemInfo.MyContent.ContentTransitionCount > 0)
|
||||||
{
|
{
|
||||||
foreach (TransitionInfo traninfo in itemInfo.MyContent.ContentTransitions)
|
foreach (TransitionInfo traninfo in itemInfo.MyContent.ContentTransitions)
|
||||||
@ -1440,14 +1440,14 @@ namespace VEPROMS.CSLA.Library
|
|||||||
private float _MSWordPageCount = 0;
|
private float _MSWordPageCount = 0;
|
||||||
public float MSWordPageCount
|
public float MSWordPageCount
|
||||||
{
|
{
|
||||||
get {
|
get {
|
||||||
if (_MSWordPageCount == 0) // C2018-011 Get the proper word page count from the saved pdf attachment
|
if (_MSWordPageCount == 0) // C2018-011 Get the proper word page count from the saved pdf attachment
|
||||||
if (MyContent.MyEntry != null && MyContent.MyEntry.MyDocument != null)
|
if (MyContent.MyEntry != null && MyContent.MyEntry.MyDocument != null)
|
||||||
{
|
{
|
||||||
PdfInfo pi = PdfInfo.Get(this, false);
|
PdfInfo pi = PdfInfo.Get(this, false);
|
||||||
if(pi != null) _MSWordPageCount = (float)pi.PageCount;// B2018-071 Don't crash on invalid MS Word section
|
if (pi != null) _MSWordPageCount = (float)pi.PageCount;// B2018-071 Don't crash on invalid MS Word section
|
||||||
}
|
}
|
||||||
return _MSWordPageCount;
|
return _MSWordPageCount;
|
||||||
}
|
}
|
||||||
set { _MSWordPageCount = value; }
|
set { _MSWordPageCount = value; }
|
||||||
}
|
}
|
||||||
@ -1649,7 +1649,7 @@ namespace VEPROMS.CSLA.Library
|
|||||||
// the addition of the parent.IsNote, the note was breaking between 2 ANDs (the 1st AND was a
|
// the addition of the parent.IsNote, the note was breaking between 2 ANDs (the 1st AND was a
|
||||||
// steplevel of 5, but the 2nd was a steplevel of 4). If something similar is seen with Cautions,
|
// steplevel of 5, but the 2nd was a steplevel of 4). If something similar is seen with Cautions,
|
||||||
// that check could be added.
|
// that check could be added.
|
||||||
if (!item.IsRNOPart && !item.IsHigh && (item.MyPrevious == null || (((item.ActiveFormat.PlantFormat.FormatData.PurchaseOptions & E_PurchaseOptions.EnhancedBackgrounds) != E_PurchaseOptions.EnhancedBackgrounds)
|
if (!item.IsRNOPart && !item.IsHigh && (item.MyPrevious == null || (((item.ActiveFormat.PlantFormat.FormatData.PurchaseOptions & E_PurchaseOptions.EnhancedBackgrounds) != E_PurchaseOptions.EnhancedBackgrounds)
|
||||||
&& item.MyParent != null && item.MyParent.IsNote)))
|
&& item.MyParent != null && item.MyParent.IsNote)))
|
||||||
level += firstInc;
|
level += firstInc;
|
||||||
else
|
else
|
||||||
@ -1716,7 +1716,7 @@ namespace VEPROMS.CSLA.Library
|
|||||||
}
|
}
|
||||||
return maxRNOLevel;
|
return maxRNOLevel;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
private bool ParentAndOr
|
private bool ParentAndOr
|
||||||
{
|
{
|
||||||
@ -1767,7 +1767,7 @@ namespace VEPROMS.CSLA.Library
|
|||||||
RemoveEnhancedFromConfig(false);
|
RemoveEnhancedFromConfig(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RemoveEnhancedFromConfig(bool doOneStepOnly)
|
public void RemoveEnhancedFromConfig(bool doOneStepOnly)
|
||||||
{
|
{
|
||||||
XmlDocument xd = new XmlDocument();
|
XmlDocument xd = new XmlDocument();
|
||||||
if (this.MyContent.Config == null || this.MyContent.Config == "") return; // B2017-164 & B2017-172 check for null or empty config
|
if (this.MyContent.Config == null || this.MyContent.Config == "") return; // B2017-164 & B2017-172 check for null or empty config
|
||||||
@ -1782,7 +1782,7 @@ namespace VEPROMS.CSLA.Library
|
|||||||
ctmp.Config = config;
|
ctmp.Config = config;
|
||||||
ctmp.Save();
|
ctmp.Save();
|
||||||
ContentInfo.Refresh(ctmp);
|
ContentInfo.Refresh(ctmp);
|
||||||
_MyConfig = null; // refresh the memory value
|
_MyConfig = null; // refresh the memory value
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (doOneStepOnly) return;
|
if (doOneStepOnly) return;
|
||||||
@ -2071,7 +2071,7 @@ namespace VEPROMS.CSLA.Library
|
|||||||
{
|
{
|
||||||
bool rval = false;
|
bool rval = false;
|
||||||
ItemInfo itm = this;
|
ItemInfo itm = this;
|
||||||
while (itm != null &&!itm.IsHigh && !rval)
|
while (itm != null && !itm.IsHigh && !rval)
|
||||||
{
|
{
|
||||||
rval = itm.IsCautionOrNotePart;
|
rval = itm.IsCautionOrNotePart;
|
||||||
if (!rval) itm = itm.MyParent;
|
if (!rval) itm = itm.MyParent;
|
||||||
@ -2111,6 +2111,16 @@ namespace VEPROMS.CSLA.Library
|
|||||||
return (sd.Type == type);
|
return (sd.Type == type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// C2025-024 - Electronic Procedures - Export
|
||||||
|
//return if should export blanks
|
||||||
|
public bool EPexportblank(int AnnTypeID)
|
||||||
|
{
|
||||||
|
if (ActiveFormat.PlantFormat.EPFormatFiles.Count == 0 || !ActiveFormat.PlantFormat.EPFormatFiles.Exists(x => x.AnnotationTypeID == AnnTypeID))
|
||||||
|
return true;
|
||||||
|
else
|
||||||
|
return ActiveFormat.PlantFormat.EPFormatFiles.Find(x => x.AnnotationTypeID == AnnTypeID).exportblank;
|
||||||
|
}
|
||||||
|
|
||||||
// C2025-023 - Electronic Procedures - Modifications to PROMS
|
// C2025-023 - Electronic Procedures - Modifications to PROMS
|
||||||
//return EPFields that match this step type or a parent step type
|
//return EPFields that match this step type or a parent step type
|
||||||
public EPFields GetValidEPFields(int AnnTypeID)
|
public EPFields GetValidEPFields(int AnnTypeID)
|
||||||
|
@ -61,6 +61,18 @@ namespace VEPROMS.CSLA.Library
|
|||||||
return LazyLoad(ref _AnnotationTypeID, "@AnnotationTypeID");
|
return LazyLoad(ref _AnnotationTypeID, "@AnnotationTypeID");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//if xml value is blank, should element export?
|
||||||
|
//defaults to true
|
||||||
|
private LazyLoad<bool> _exportblank;
|
||||||
|
[DisplayName("exportblank")]
|
||||||
|
[Description("if xml value is blank, should element export?")]
|
||||||
|
public bool exportblank
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return LazyLoad(ref _exportblank, "@exportblank");
|
||||||
|
}
|
||||||
|
}
|
||||||
// returns a list of fields that are defined in the EP format's structure
|
// returns a list of fields that are defined in the EP format's structure
|
||||||
private EPFields _FieldList;
|
private EPFields _FieldList;
|
||||||
public EPFields FieldList
|
public EPFields FieldList
|
||||||
|
Loading…
x
Reference in New Issue
Block a user