Compare commits

..

8 Commits

Author SHA1 Message Date
1ae422c74e B2025-017-Print-Section-Sub-Section-v2 2025-02-27 19:16:47 -05:00
6a51208a13 Merge pull request 'B2025-020 Fixed NULL reference error while running the Refresh Transitions administrator tool.' (#527) from B2025-020_UpdateTransitions into Development
Looks good.
Ready for QA.
2025-02-26 11:48:06 -05:00
0749f5e724 B2025-020 Fixed NULL reference error while running the Refresh Transitions administrator tool. 2025-02-26 11:07:17 -05:00
f65644f553 Merge pull request 'B2025-018 PROMS - Issues with folder order in tree view.' (#526) from B2025-018 into Development
good for testing phase
2025-02-21 16:05:19 -05:00
dc74da6e86 B2025-018 PROMS - Issues with folder order in tree view. 2025-02-21 15:52:16 -05:00
301c4c2c97 Merge pull request 'C2025-019 RO Editor - Update the Orphaned RO Record text file to save in the current RO folder instead of the users appdata folder.' (#525) from C2025-019 into Development
Good for testing phase.
2025-02-20 16:04:06 -05:00
8ec820a7f7 C2025-019 RO Editor - Update the Orphaned RO Record text file to save in the current RO folder instead of the users appdata folder.
Found while using the WEP ROMOD database and the ROEPU folder.
Note for Word doc:  Update D.2.10 in the PROMS Manual for this update
2025-02-20 15:54:29 -05:00
18734e0f85 Merge pull request 'B2025-015 RO Editor - PROMS will get stuck in a loop (hang) while placing RO.FST information in the plant database (loading RO's) when Unit Values contain brackets. Example is Point Beach data.' (#523) from B2025-015 into Development
good for testing phase
2025-02-20 10:08:52 -05:00
5 changed files with 124 additions and 30 deletions

View File

@@ -264,9 +264,11 @@ namespace ROEditor
File.Delete(FstNew); // remove ROFST.NEW
if (OrphanedRecords.Length > 0)
{
StreamWriter sw = new StreamWriter(VlnSettings.TemporaryFolder + @"\Orphaned RO Records.txt");
sw.Write(OrphanedRecords.ToString());
sw.Close();
using (StreamWriter sw = new StreamWriter(Path.Combine(FstDir, @"Orphaned RO Records.txt"), false))
{
sw.Write(OrphanedRecords.ToString());
sw.Close();
}
MessageBox.Show("The file Orphaned RO Records.txt has been created", "Warning - Orphan RO Record");
}

View File

@@ -19,6 +19,7 @@ using System.Drawing;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text.RegularExpressions;
using System.Linq;
namespace VEPROMS.CSLA.Library
{
@@ -143,6 +144,8 @@ namespace VEPROMS.CSLA.Library
}
#endregion
#region SortingChildren
private static bool IsInManualOrderNullFix = false;
[NonSerialized]
public Csla.SortedBindingList<FolderInfo> _SortedChildFolders;
public Csla.SortedBindingList<FolderInfo> SortedChildFolders
@@ -151,6 +154,29 @@ namespace VEPROMS.CSLA.Library
{
if (ChildFolders != null)
{
//B2025-018 Issues with folder order in tree view
// if any ChildFolders with a missing Manual Order
// set them to the end of the list
// use IsInManualOrderNullFix - so, if setting ChildFolders Currently,
// do not try to set them (thus creating an infinite loop)
if (!IsInManualOrderNullFix && ChildFolders.Any(x => x.ManualOrder == null))
{
IsInManualOrderNullFix = true;
foreach (FolderInfo fi in ChildFolders.Where(x => x.ManualOrder == null))
{
using (FolderInfo parfolderinfo = FolderInfo.Get(fi.ParentID))
{
using (Folder fldr = fi.Get())
{
fldr.ManualOrder = parfolderinfo.NewManualOrder(9999);
fldr.Save();
}
}
}
RefreshChildFolders();
IsInManualOrderNullFix = false;
}
if (_SortedChildFolders == null)
{
_SortedChildFolders = new SortedBindingList<FolderInfo>(ChildFolders);
@@ -166,6 +192,10 @@ namespace VEPROMS.CSLA.Library
return _SortedChildFolders;
}
}
//B2025-018 Issues with folder order in tree view
//Note: this should be called from the parent item
//As you want to put this into the sorted order of the parent item
public double? NewManualOrder(int index)
{
double? retval = 1;
@@ -174,13 +204,27 @@ namespace VEPROMS.CSLA.Library
else if (index == 0)
{
if (retval >= SortedChildFolders[index].ManualOrder) // If one is too big, then divide first value in half
retval = SortedChildFolders[index].ManualOrder / 2;
retval = SortedChildFolders[index].ManualOrder / 2.0;
}
else if (SortedChildFolders.Count > index)
{
retval += SortedChildFolders[index - 1].ManualOrder; // Just go to the next whole number
if (retval >= SortedChildFolders[index].ManualOrder)
retval = (SortedChildFolders[index - 1].ManualOrder + SortedChildFolders[index].ManualOrder) / 2;
//B2025-018 Issues with folder order in tree view
//filter to just items with the same parent
//want new order to be halfway between the previous item
//and the next ManualOrder
var tmp = SortedChildFolders.Where(x => x.ParentID == FolderID);
var lbound = SortedChildFolders[index - 1].ManualOrder;
var ubound = tmp.OrderBy(y => y.ManualOrder).FirstOrDefault(x => x.ManualOrder > lbound)?.ManualOrder;
if (ubound != null)
{
retval = ((ubound - lbound) / 2.0) + lbound;
}
else
{
//in this case, item before is highest for that parent
//so just make this 1 more
retval = lbound + 1;
}
}
else
{

View File

@@ -805,7 +805,21 @@ namespace VEPROMS.CSLA.Library
}
}
}
// B2025-020 Null Reference fix. Added check for valid index into the TransitionTypeList
if (!forceConvertToText)
{
if (traninfo.TranType >= itemInfo.ActiveFormat.PlantFormat.FormatData.TransData.TransTypeList.Count)
{
forceConvertToText = true;
TranFixCount++;
itemInfo.MyContent.FixTransitionText(traninfo, itemInfo, "Reason for Change: Transition type is not available");
using (Content content = Content.Get(itemInfo.MyContent.ContentID))
{
content.FixTransitionText(traninfo, true);
content.Save();
}
}
}
if (!forceConvertToText)
{
if (itemInfo.MyProcedure.ItemID != traninfo.MyItemToID.MyProcedure.ItemID) //different proc

View File

@@ -769,6 +769,15 @@ namespace VEPROMS.CSLA.Library
tmp.MyParent = myParent;
tmp.Name = name;
tmp.ShortName = shortName;
//B2025-018 Issues with folder order in tree view
//if no manual order is set, add it at the end
if (myParent != null)
{
using (FolderInfo parfolderinfo = FolderInfo.Get(myParent.FolderID))
tmp.ManualOrder = parfolderinfo.NewManualOrder(9999);
}
return tmp;
}
public static Folder New(Folder myParent, Connection myConnection, string name, string title, string shortName, Format myFormat, double? manualOrder, string config, DateTime dts, string usrID)
@@ -784,6 +793,15 @@ namespace VEPROMS.CSLA.Library
tmp.Config = config;
tmp.DTS = dts;
tmp.UsrID = usrID;
//B2025-018 Issues with folder order in tree view
//if no manual order is set, add it at the end
if (myParent != null && manualOrder == null)
{
using (FolderInfo parfolderinfo = FolderInfo.Get(myParent.FolderID))
tmp.ManualOrder = parfolderinfo.NewManualOrder(9999);
}
return tmp;
}
public static Folder MakeFolder(Folder myParent, Connection myConnection, string name, string title, string shortName, Format myFormat, double? manualOrder, string config, DateTime dts, string usrID)
@@ -813,6 +831,15 @@ namespace VEPROMS.CSLA.Library
tmp.MyFormat = myFormat;
tmp.ManualOrder = manualOrder;
tmp.Config = config;
//B2025-018 Issues with folder order in tree view
//if no manual order is set, add it at the end
if (myParent != null && manualOrder == null)
{
using (FolderInfo parfolderinfo = FolderInfo.Get(myParent.FolderID))
tmp.ManualOrder = parfolderinfo.NewManualOrder(9999);
}
return tmp;
}
public static Folder MakeFolder(Folder myParent, Connection myConnection, string name, string title, string shortName, Format myFormat, double? manualOrder, string config)

View File

@@ -983,19 +983,22 @@ namespace Volian.Controls.Library
SectionInfo si2 = (tn as VETreeNode).VEObject as SectionInfo;
if (si2.MyDocVersion.MultiUnitCount > 1)
{
MenuItem mps = new MenuItem("Print Section");
int k = 0;
foreach (string s in si2.MyDocVersion.UnitNames)
if (!si2.IsSubsection)
{
k++;
MenuItem mp = mps.MenuItems.Add(s, new EventHandler(miMultiUnit_Click));
mp.Tag = k;
MenuItem mps = new MenuItem("Print Section");
int k = 0;
foreach (string s in si2.MyDocVersion.UnitNames)
{
k++;
MenuItem mp = mps.MenuItems.Add(s, new EventHandler(miMultiUnit_Click));
mp.Tag = k;
}
cm.MenuItems.Add(mps);
}
cm.MenuItems.Add(mps);
}
else
{
cm.MenuItems.Add("Print Section", new EventHandler(mi_Click));
if(!si2.IsSubsection) cm.MenuItems.Add("Print Section", new EventHandler(mi_Click));
}
}
}
@@ -2812,23 +2815,27 @@ namespace Volian.Controls.Library
int f2 = -1;
string uniquename = _LastFolderInfo.MyParent.UniqueChildName("New Folder");
int myindex = SelectedNode.Index + ((newtype == MenuSelections.FolderAfter) ? 1 : 0);
FolderInfo parfolderinfo = FolderInfo.Get(parentfolder.FolderID);
double? myorder = parfolderinfo.NewManualOrder(myindex);
using (Folder folder = Folder.MakeFolder(parentfolder.MyParent, parentfolder.MyConnection, uniquename, string.Empty, "Short Name", null, myorder, string.Empty, DateTime.Now, VlnSettings.UserID))
{
ShowBrokenRules(folder.BrokenRulesCollection);
SetLastValues(FolderInfo.Get(folder.FolderID));
if (OnNodeOpenProperty(this, new vlnTreePropertyEventArgs(uniquename, folder.FolderConfig)) == DialogResult.OK)
//B2025-018 Issues with folder order in tree view
//since before/after folder is at same level as current folder
//so need to use the parents order to determine where to place it
using (FolderInfo parfolderinfo = FolderInfo.Get(parentfolder.MyParent.FolderID))
{ double? myorder = parfolderinfo.NewManualOrder(myindex);
using (Folder folder = Folder.MakeFolder(parentfolder.MyParent, parentfolder.MyConnection, uniquename, string.Empty, "Short Name", null, myorder, string.Empty, DateTime.Now, VlnSettings.UserID))
{
folder.Save();
tn = new VETreeNode((IVEDrillDownReadOnly)_LastFolderInfo);
if (newtype == MenuSelections.FolderBefore) SelectedNode.Parent.Nodes.Insert(SelectedNode.Index, tn);
if (newtype == MenuSelections.FolderAfter) SelectedNode.Parent.Nodes.Insert(SelectedNode.Index + 1, tn);
ShowBrokenRules(folder.BrokenRulesCollection);
SetLastValues(FolderInfo.Get(folder.FolderID));
if (OnNodeOpenProperty(this, new vlnTreePropertyEventArgs(uniquename, folder.FolderConfig)) == DialogResult.OK)
{
folder.Save();
tn = new VETreeNode((IVEDrillDownReadOnly)_LastFolderInfo);
if (newtype == MenuSelections.FolderBefore) SelectedNode.Parent.Nodes.Insert(SelectedNode.Index, tn);
if (newtype == MenuSelections.FolderAfter) SelectedNode.Parent.Nodes.Insert(SelectedNode.Index + 1, tn);
}
else
f2 = folder.FolderID;
}
else
f2 = folder.FolderID;
if (f2 != -1) Folder.Delete(f2);
}
if (f2 != -1) Folder.Delete(f2);
}
}
}