diff --git a/PROMS/Formats/fmtall/VEGPBckStpsall.xml b/PROMS/Formats/fmtall/VEGPBckStpsall.xml
index 49b0a794..6e965f6b 100644
Binary files a/PROMS/Formats/fmtall/VEGPBckStpsall.xml and b/PROMS/Formats/fmtall/VEGPBckStpsall.xml differ
diff --git a/PROMS/VEPROMS User Interface/dlgManageSecurity.cs b/PROMS/VEPROMS User Interface/dlgManageSecurity.cs
index 5da9d00c..f3ab5011 100644
--- a/PROMS/VEPROMS User Interface/dlgManageSecurity.cs
+++ b/PROMS/VEPROMS User Interface/dlgManageSecurity.cs
@@ -145,6 +145,9 @@ namespace VEPROMS
}
LoadRefreshGroupUsers();
+
+ // C2026-004 - messagebox when create group
+ MessageBox.Show($"{txt} group successfully created.", "Create group", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
private void tvFolders_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
@@ -187,18 +190,22 @@ namespace VEPROMS
//Add a Member to a Group
private void addMember_Click(object sender, EventArgs e)
{
- int groupIndex = cbGroupSelection.SelectedIndex;
- string selectedUserID = lstNonMembers.SelectedValue.ToString();
- int selectedUID = UserInfo.GetByUserID(selectedUserID).UID;
- GroupInfo gi = myGroupInfoList[groupIndex];
- User selectedUser = User.Get(selectedUID);
+ // B2026-007 PROMS Security - don't error when add a user to a group but no group selected
+ if (lstNonMembers.SelectedValue != null)
+ {
+ int groupIndex = cbGroupSelection.SelectedIndex;
+ string selectedUserID = lstNonMembers.SelectedValue.ToString();
+ int selectedUID = UserInfo.GetByUserID(selectedUserID).UID;
+ GroupInfo gi = myGroupInfoList[groupIndex];
+ User selectedUser = User.Get(selectedUID);
- Membership.MakeMembership(selectedUser, Group.Get(gi.GID), null, "");
- updateMembershipLists();
- lstNonMembers.SelectedIndex = -1;
+ Membership.MakeMembership(selectedUser, Group.Get(gi.GID), null, "");
+ updateMembershipLists();
+ lstNonMembers.SelectedIndex = -1;
- int index = lstMembers.FindString(selectedUserID);
- lstMembers.SetSelected(index, true);
+ int index = lstMembers.FindString(selectedUserID);
+ lstMembers.SetSelected(index, true);
+ }
}
//Remove a Member From a Group
@@ -326,6 +333,7 @@ namespace VEPROMS
User u = User.MakeUser("[Enter New UserID]", "", "", "", "", "", "", "", "", "", "", DateTime.Now, "");
frmManageUser frm = new frmManageUser("add");
frm.MyUser = u;
+ frm.Text = "Enter New UserID"; //C2026-002 Change Title bar on Add/Edit User
if (frm.ShowDialog(this) == DialogResult.OK)
{
u = frm.MyUser;
diff --git a/PROMS/VEPROMS User Interface/frmManageUser.cs b/PROMS/VEPROMS User Interface/frmManageUser.cs
index 400d8464..f9ac650e 100644
--- a/PROMS/VEPROMS User Interface/frmManageUser.cs
+++ b/PROMS/VEPROMS User Interface/frmManageUser.cs
@@ -20,7 +20,27 @@ namespace VEPROMS
_MyUser = value;
SimpleUser su = new SimpleUser(_MyUser);
pgUser.SelectedObject = su;
- this.Text = string.Format("{0} ({1} {2}) Information",su.UserID,su.FirstName,su.LastName);
+
+ //C2026-002 Change Title bar on Add/Edit User
+ string tmp;
+ if (!string.IsNullOrEmpty(su.FirstName) && !string.IsNullOrEmpty(su.LastName))
+ {
+ tmp = $"{su.UserID} ({su.FirstName} {su.LastName}) Information";
+ }
+ else if (!string.IsNullOrEmpty(su.LastName))
+ {
+ tmp = $"{su.UserID} ({su.LastName}) Information";
+ }
+ else if (!string.IsNullOrEmpty(su.FirstName))
+ {
+ tmp = $"{su.UserID} ({su.FirstName}) Information";
+ }
+ else
+ {
+ tmp = $"{su.UserID} Information";
+ }
+
+ this.Text = tmp;
}
}
private string _Mode;
diff --git a/PROMS/VEPROMS.CSLA.Library/Extension/ItemExt.cs b/PROMS/VEPROMS.CSLA.Library/Extension/ItemExt.cs
index a0340ed4..1f200bb3 100644
--- a/PROMS/VEPROMS.CSLA.Library/Extension/ItemExt.cs
+++ b/PROMS/VEPROMS.CSLA.Library/Extension/ItemExt.cs
@@ -4749,13 +4749,20 @@ namespace VEPROMS.CSLA.Library
if (ActiveFormat.MyStepSectionLayoutData.AddContActTagToHighLevelRNOWhenIncludedOnCAS &&
IsInRNO && !MyParent.IsInRNO && FormatStepData.TabData.CASPrintMacro != null)
{
- StepConfig sc = MyConfig as StepConfig;
- if (sc != null && sc.Step_CAS == "True")
+ // B2026-009 needed to make sure parent wasn't a continuous action step type
+ // the ExcludeFromContActSum is set to False for continuous action
+ // step types and True for all others
+ StepConfig psc = MyParent.MyConfig as StepConfig;
+ if (MyParent.FormatStepData.ExcludeFromContActSum && psc != null && psc.Step_CAS != "True")
{
- if (FormatStepData.TabData.CASPrintMacro != null)
- _MyTab.Text = FormatStepData.TabData.CASPrintMacro + _MyTab.Text;
- if (FormatStepData.TabData.CASEditTag != null)
- _MyTab.CleanText = FormatStepData.TabData.CASEditTag + _MyTab.CleanText;
+ StepConfig sc = MyConfig as StepConfig;
+ if (sc != null && sc.Step_CAS == "True")
+ {
+ if (FormatStepData.TabData.CASPrintMacro != null)
+ _MyTab.Text = FormatStepData.TabData.CASPrintMacro + _MyTab.Text;
+ if (FormatStepData.TabData.CASEditTag != null)
+ _MyTab.CleanText = FormatStepData.TabData.CASEditTag + _MyTab.CleanText;
+ }
}
}
_MyTab.RNOTabWidthAdjust = ((ItemInfo)ActiveParent).FormatStepData.TabData.RNOAdjustTabSize ?? 0;
diff --git a/PROMS/Volian.Controls.Library/DisplayHistory.cs b/PROMS/Volian.Controls.Library/DisplayHistory.cs
index 1978e024..a190e4f7 100644
--- a/PROMS/Volian.Controls.Library/DisplayHistory.cs
+++ b/PROMS/Volian.Controls.Library/DisplayHistory.cs
@@ -11,7 +11,7 @@ using System.Text.RegularExpressions;
using JR.Utils.GUI.Forms;
using Volian.Base.Library;
using System.Linq;
-
+
namespace Volian.Controls.Library
{
public partial class DisplayHistory : UserControl
diff --git a/PROMS/Volian.Controls.Library/DisplayHistory.designer.cs b/PROMS/Volian.Controls.Library/DisplayHistory.designer.cs
index 0475e1c8..a7c9d046 100644
Binary files a/PROMS/Volian.Controls.Library/DisplayHistory.designer.cs and b/PROMS/Volian.Controls.Library/DisplayHistory.designer.cs differ
diff --git a/PROMS/Volian.Controls.Library/DisplayHistory.resx b/PROMS/Volian.Controls.Library/DisplayHistory.resx
index ba42be92..28034095 100644
--- a/PROMS/Volian.Controls.Library/DisplayHistory.resx
+++ b/PROMS/Volian.Controls.Library/DisplayHistory.resx
@@ -112,13 +112,13 @@
2.0
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
- <?xml version="1.0" encoding="utf-8"?>
+ <?xml version="1.0" encoding="utf-16"?>
<VlnBorders Rows="4" Columns="3">
<VerticalLines Rows="4" Columns="4">
<Lines>
@@ -161,7 +161,31 @@
</HorizontalLines>
</VlnBorders>
-
- Normal{Font:Microsoft Sans Serif, 8.25pt;BackColor:White;TextAlign:LeftTop;Border:Flat,1,Black,Both;} Alternate{BackColor:White;} Fixed{BackColor:Control;ForeColor:ControlText;Border:Flat,1,ControlDark,Both;BackgroundImageLayout:Hide;} Highlight{BackColor:LightCyan;ForeColor:Black;} Focus{BackColor:LightCyan;} Editor{} Search{BackColor:Highlight;ForeColor:HighlightText;} Frozen{BackColor:Beige;} NewRow{ForeColor:GrayText;} EmptyArea{BackColor:Transparent;Border:None,1,Black,Both;} SelectedColumnHeader{} SelectedRowHeader{} GrandTotal{BackColor:Black;ForeColor:White;} Subtotal0{BackColor:ControlDarkDark;ForeColor:White;} Subtotal1{BackColor:ControlDarkDark;ForeColor:White;} Subtotal2{BackColor:ControlDarkDark;ForeColor:White;} Subtotal3{BackColor:ControlDarkDark;ForeColor:White;} Subtotal4{BackColor:ControlDarkDark;ForeColor:White;} Subtotal5{BackColor:ControlDarkDark;ForeColor:White;} FilterEditor{} FirstCustomStyle{}
+
+ <?xml version="1.0" encoding="utf-16"?>
+<VlnGridCellShading Rows="4" Columns="3">
+ <TableShadingInfo Rows="4" Columns="3">
+ <CellShadingColor>
+ <string>[A=255, R=255, G=255, B=255]</string>
+ <string>[A=255, R=255, G=255, B=255]</string>
+ <string>[A=255, R=255, G=255, B=255]</string>
+ <string>[A=255, R=255, G=255, B=255]</string>
+ <string>[A=255, R=255, G=255, B=255]</string>
+ <string>[A=255, R=255, G=255, B=255]</string>
+ <string>[A=255, R=255, G=255, B=255]</string>
+ <string>[A=255, R=255, G=255, B=255]</string>
+ <string>[A=255, R=255, G=255, B=255]</string>
+ <string>[A=255, R=255, G=255, B=255]</string>
+ <string>[A=255, R=255, G=255, B=255]</string>
+ <string>[A=255, R=255, G=255, B=255]</string>
+ </CellShadingColor>
+ </TableShadingInfo>
+</VlnGridCellShading>
+
+ Normal{Font:Microsoft Sans Serif, 8.25pt;BackColor:White;TextAlign:LeftTop;Border:Flat,1,Black,Both;} Alternate{BackColor:White;} Fixed{BackColor:Control;ForeColor:ControlText;Border:Flat,1,ControlDark,Both;BackgroundImageLayout:Hide;} Highlight{BackColor:LightCyan;ForeColor:Black;} Focus{BackColor:LightCyan;} Editor{} Search{BackColor:Highlight;ForeColor:HighlightText;} Frozen{BackColor:Beige;} FrozenAlternate{} NewRow{ForeColor:GrayText;} EmptyArea{BackColor:Transparent;Border:None,1,Black,Both;} SelectedColumnHeader{} SelectedRowHeader{} GrandTotal{BackColor:Black;ForeColor:White;} Subtotal0{BackColor:ControlDarkDark;ForeColor:White;} Subtotal1{BackColor:ControlDarkDark;ForeColor:White;} Subtotal2{BackColor:ControlDarkDark;ForeColor:White;} Subtotal3{BackColor:ControlDarkDark;ForeColor:White;} Subtotal4{BackColor:ControlDarkDark;ForeColor:White;} Subtotal5{BackColor:ControlDarkDark;ForeColor:White;} FilterEditor{} FirstCustomStyle{}
+
+
+ 17, 17
+
\ No newline at end of file
diff --git a/PROMS/Volian.Controls.Library/GridItem.cs b/PROMS/Volian.Controls.Library/GridItem.cs
index 1a2292cc..4b794d91 100644
--- a/PROMS/Volian.Controls.Library/GridItem.cs
+++ b/PROMS/Volian.Controls.Library/GridItem.cs
@@ -537,6 +537,10 @@ namespace Volian.Controls.Library
// if it is a modify and there will be no usages if it is new (the usage gets created on the save)
if (!MyFlexGrid.IsRoTable)
{
+ // B2026-003 we where using a string.format on this inside the while loop - allocating memory each time
+ // so I move it outside the while loop and did a simple assigment of text
+ string lookForLinks = @"";
+
while (r < h)
{
CellRange cr = MyFlexGrid.GetMergedRange(r, c);
@@ -546,8 +550,7 @@ namespace Volian.Controls.Library
{
// see if there are any links and save these so that any deleted ROs or transitions in the
// steprtb can have associated usages/transitions records removed from the database.
- string lookFor = string.Format(@"");
- MatchCollection matches = Regex.Matches((string)MyFlexGrid[r, c], lookFor);
+ MatchCollection matches = Regex.Matches((string)MyFlexGrid[r, c], lookForLinks);
for (int i = matches.Count - 1; i >= 0; i--)
{
Match m = matches[i];
@@ -569,15 +572,15 @@ namespace Volian.Controls.Library
{
int tid = int.Parse(myMatch.Groups[2].Value);
RtfTransList.Add(tid);
- int myIndex = m.Groups[4].Index;
- int myLength = m.Groups[4].Length;
- if (m.Groups[3].Value != " ")
- {
- myIndex = m.Groups[3].Index;
- myLength += m.Groups[3].Length;
- }
- string gg = ((string)MyFlexGrid[r, c]).Substring(myIndex, myLength);
- if (gg.ToUpper().Contains("(PAGE ~)")) RtfTransPageNumList.Add(tid); // B2020-089, check for upper case Page ~ in case step was upper cased
+ int myIndex = m.Groups[4].Index;
+ int myLength = m.Groups[4].Length;
+ if (m.Groups[3].Value != " ")
+ {
+ myIndex = m.Groups[3].Index;
+ myLength += m.Groups[3].Length;
+ }
+ string gg = ((string)MyFlexGrid[r, c]).Substring(myIndex, myLength);
+ if (gg.ToUpper().Contains("(PAGE ~)")) RtfTransPageNumList.Add(tid); // B2020-089, check for upper case Page ~ in case step was upper cased
}
}
}
diff --git a/PROMS/Volian.Controls.Library/VlnFlexGrid.cs b/PROMS/Volian.Controls.Library/VlnFlexGrid.cs
index 046af0aa..ee6162dc 100644
--- a/PROMS/Volian.Controls.Library/VlnFlexGrid.cs
+++ b/PROMS/Volian.Controls.Library/VlnFlexGrid.cs
@@ -272,21 +272,24 @@ namespace Volian.Controls.Library
for (int i = 0; i < rows * cols; i++)
datum.Add("|");
XmlNodeList nl = xd.SelectNodes("C1FlexGrid/Cells/Cell/Data");
- string data = string.Empty;
+ // B2026-003 use StringBuilder a "using" statement around the RichTextBox for better mememory management
+ StringBuilder data = new StringBuilder();
foreach (XmlNode xn in nl)
{
- RichTextBox rtb = new RichTextBox();
- rtb.Rtf = xn.InnerText;
- XmlAttribute xa = xn.ParentNode.Attributes.GetNamedItem("index") as XmlAttribute;
- string[] rc = xa.InnerText.Split(',');
- int r = int.Parse(rc[0]);
- int c = int.Parse(rc[1]);
- int index = r * cols + c;
- datum[index] = "|" + (rtb.Text == "" ? "" : rtb.Text);
+ using (RichTextBox rtb = new RichTextBox())
+ {
+ rtb.Rtf = xn.InnerText;
+ XmlAttribute xa = xn.ParentNode.Attributes.GetNamedItem("index") as XmlAttribute;
+ string[] rc = xa.InnerText.Split(',');
+ int r = int.Parse(rc[0]);
+ int c = int.Parse(rc[1]);
+ int index = r * cols + c;
+ datum[index] = "|" + (rtb.Text == "" ? "" : rtb.Text);
+ }
}
foreach (string s in datum)
- data += s;
- return data;
+ data.Append(s);
+ return data.ToString();
}
private string GetCellFormatString(XmlDocument xd)
{
diff --git a/PROMS/Volian.Controls.Library/Volian.Controls.Library.csproj b/PROMS/Volian.Controls.Library/Volian.Controls.Library.csproj
index c4f41e44..f63be9f6 100644
--- a/PROMS/Volian.Controls.Library/Volian.Controls.Library.csproj
+++ b/PROMS/Volian.Controls.Library/Volian.Controls.Library.csproj
@@ -460,6 +460,7 @@
DisplayHistory.cs
+ Designer
DisplayLibDocs.cs