Compare commits

..

9 Commits

Author SHA1 Message Date
f38aa4595f Merge pull request 'C2026-062 When Search clicked - Load the Incoming transitions for the Active Procedure' (#699) from C2026-062 into Development
good for testing
2026-02-02 15:54:50 -05:00
aa0b906a9f C2026-062 When Search clicked - Load the Incoming transitions for the Active Procedure 2026-02-02 15:27:23 -05:00
f43d1e5f47 Merge pull request 'B2026-009 For Vogtle Units 3&4, fixed bug where a double asterisk was place next to a continuous action RNO on the edit screen and printed with the CAS box shifted to the left.' (#697) from B2026-009_VogtleCAS into Development
Looks Good. Ready for QA!
2026-01-28 13:37:26 -05:00
63a74e1aef B2026-009 For Vogtle Units 3&4, fixed bug where a double asterisk was place next to a continuous action RNO on the edit screen and printed with the CAS box shifted to the left. 2026-01-28 12:08:19 -05:00
69e45e9ae8 Merge pull request 'F2026-003 Adjustments to the Vogtle Units 3&4 background step format that were needed for Jeff’s procedure importer tool' (#696) from F2026-003_VogtleBckGndChanges into Development
format only change.
2026-01-27 13:17:22 -05:00
53cf35014c F2026-003 Adjustments to the Vogtle Units 3&4 background step format that were needed for Jeff’s procedure importer tool 2026-01-27 13:17:42 -05:00
d6e4239573 Merge pull request 'C2026-006 Change Title bar on Add/Edit User' (#695) from C2026-006 into Development
good for testing phase
2026-01-27 08:15:11 -05:00
c76808e11e C2026-006 Change Title bar on Add/Edit User 2026-01-27 07:34:04 -05:00
b2428a4211 Merge pull request 'B2026-007 PROMS Security - don't error when add a user to a group but no group selected/C2026-004 – Add a messagebox when create group' (#694) from B2026-007_C2026-004 into Development
good for testing
2026-01-26 14:41:40 -05:00
9 changed files with 364 additions and 22 deletions

View File

@@ -333,6 +333,7 @@ namespace VEPROMS
User u = User.MakeUser("[Enter New UserID]", "", "", "", "", "", "", "", "", "", "", DateTime.Now, ""); User u = User.MakeUser("[Enter New UserID]", "", "", "", "", "", "", "", "", "", "", DateTime.Now, "");
frmManageUser frm = new frmManageUser("add"); frmManageUser frm = new frmManageUser("add");
frm.MyUser = u; frm.MyUser = u;
frm.Text = "Enter New UserID"; //C2026-002 Change Title bar on Add/Edit User
if (frm.ShowDialog(this) == DialogResult.OK) if (frm.ShowDialog(this) == DialogResult.OK)
{ {
u = frm.MyUser; u = frm.MyUser;

View File

@@ -20,7 +20,27 @@ namespace VEPROMS
_MyUser = value; _MyUser = value;
SimpleUser su = new SimpleUser(_MyUser); SimpleUser su = new SimpleUser(_MyUser);
pgUser.SelectedObject = su; 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; private string _Mode;

View File

@@ -4749,13 +4749,20 @@ namespace VEPROMS.CSLA.Library
if (ActiveFormat.MyStepSectionLayoutData.AddContActTagToHighLevelRNOWhenIncludedOnCAS && if (ActiveFormat.MyStepSectionLayoutData.AddContActTagToHighLevelRNOWhenIncludedOnCAS &&
IsInRNO && !MyParent.IsInRNO && FormatStepData.TabData.CASPrintMacro != null) IsInRNO && !MyParent.IsInRNO && FormatStepData.TabData.CASPrintMacro != null)
{ {
StepConfig sc = MyConfig as StepConfig; // B2026-009 needed to make sure parent wasn't a continuous action step type
if (sc != null && sc.Step_CAS == "True") // 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) StepConfig sc = MyConfig as StepConfig;
_MyTab.Text = FormatStepData.TabData.CASPrintMacro + _MyTab.Text; if (sc != null && sc.Step_CAS == "True")
if (FormatStepData.TabData.CASEditTag != null) {
_MyTab.CleanText = FormatStepData.TabData.CASEditTag + _MyTab.CleanText; 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; _MyTab.RNOTabWidthAdjust = ((ItemInfo)ActiveParent).FormatStepData.TabData.RNOAdjustTabSize ?? 0;

View File

@@ -0,0 +1,89 @@
namespace Volian.Controls.Library
{
partial class CustomMessageBox
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.btn1 = new System.Windows.Forms.Button();
this.btn2 = new System.Windows.Forms.Button();
this.lblMessage = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// btn1
//
this.btn1.AutoSize = true;
this.btn1.Location = new System.Drawing.Point(12, 99);
this.btn1.Name = "btn1";
this.btn1.Size = new System.Drawing.Size(75, 23);
this.btn1.TabIndex = 0;
this.btn1.UseVisualStyleBackColor = true;
this.btn1.Click += new System.EventHandler(this.Btn1_Click);
//
// btn2
//
this.btn2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btn2.AutoSize = true;
this.btn2.Location = new System.Drawing.Point(322, 99);
this.btn2.Name = "btn2";
this.btn2.Size = new System.Drawing.Size(75, 23);
this.btn2.TabIndex = 1;
this.btn2.UseVisualStyleBackColor = true;
this.btn2.Click += new System.EventHandler(this.Btn2_Click);
//
// lblMessage
//
this.lblMessage.AutoSize = true;
this.lblMessage.Location = new System.Drawing.Point(33, 41);
this.lblMessage.Name = "lblMessage";
this.lblMessage.Size = new System.Drawing.Size(0, 13);
this.lblMessage.TabIndex = 2;
this.lblMessage.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// CustomMessageBox
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.AutoSize = true;
this.ClientSize = new System.Drawing.Size(419, 130);
this.Controls.Add(this.lblMessage);
this.Controls.Add(this.btn2);
this.Controls.Add(this.btn1);
this.Name = "CustomMessageBox";
this.ShowIcon = false;
this.Text = "CustomMessageBox";
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Button btn1;
private System.Windows.Forms.Button btn2;
private System.Windows.Forms.Label lblMessage;
}
}

View File

@@ -0,0 +1,58 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Volian.Controls.Library
{
public partial class CustomMessageBox : Form
{
//Custome Message Box Class to allow renaming of buttons
// originally devleoped for use with
// C2025-062 When Search clicked - Load the Incoming transitions for the Active Procedure
// in order to allow the user to decide if they wanted to search on the selected step or the selected procedure
public CustomMessageBox(string message, string title, string button1Text = "OK", string button2Text = "")
{
InitializeComponent();
this.Text = title;
lblMessage.Text = message;
btn1.Text = button1Text;
if (!string.IsNullOrEmpty(button2Text))
{
btn2.Text = button2Text;
btn2.Visible = true;
}
else
{
btn2.Visible = false;
}
}
private void Btn1_Click(object sender, EventArgs e)
{
DialogResult = DialogResult.Yes;
Close();
}
private void Btn2_Click(object sender, EventArgs e)
{
DialogResult = DialogResult.No;
Close();
}
//static method for calling custommessagebox directly
public static DialogResult Show(string message, string title, string button1Text = "OK", string button2Text = "")
{
using (var messageBox = new CustomMessageBox(message, title, button1Text, button2Text))
{
return messageBox.ShowDialog();
}
}
}
}

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -414,6 +414,15 @@ namespace Volian.Controls.Library
lbSrchResults.Visible = true; lbSrchResults.Visible = true;
lbSrchResultsIncTrans.Visible = false; lbSrchResultsIncTrans.Visible = false;
cbxRnoOnly.Visible = true; cbxRnoOnly.Visible = true;
// C2025-062 When Search clicked - Load the Incoming transitions for the Active Procedure
//don't allow changing the Style for Incoming Transitions
//but allow them to change it if there are search results and it is another tab
if (_SearchResults != null && _SearchResults.Count > 0)
{
cmbResultsStyle.Enabled = true;
}
if (e.NewTab == tabIncTrans) // C2020-033: Incoming transitions if (e.NewTab == tabIncTrans) // C2020-033: Incoming transitions
{ {
xpSetToSearch.Enabled = false; xpSetToSearch.Enabled = false;
@@ -422,7 +431,7 @@ namespace Volian.Controls.Library
lbSrchResultsIncTrans.Visible = true; lbSrchResultsIncTrans.Visible = true;
lbSrchResultsIncTrans.CheckBoxesVisible = true; lbSrchResultsIncTrans.CheckBoxesVisible = true;
lbSrchResultsIncTrans.AutoScroll = true; lbSrchResultsIncTrans.AutoScroll = true;
btnSearch.Enabled = false; // C2021 - 002: disable search button - no functionality for Incoming Transitions cmbResultsStyle.Enabled = false;
cbxRnoOnly.Visible = false; cbxRnoOnly.Visible = false;
} }
else if (e.NewTab == tabROSearch) else if (e.NewTab == tabROSearch)
@@ -648,7 +657,6 @@ namespace Volian.Controls.Library
} }
btnTranCvtAllToTxt.Enabled = IncTransCvtAllToTextPerm(); btnTranCvtAllToTxt.Enabled = IncTransCvtAllToTextPerm();
btnTranCvtSelToTxt.Enabled = false; btnTranCvtSelToTxt.Enabled = false;
btnSearch.Enabled = false; // C2021 - 002: disable search button - no functionality for Incoming Transitions
} }
public bool IncTranCvtPerm() public bool IncTranCvtPerm()
@@ -1765,7 +1773,8 @@ namespace Volian.Controls.Library
btnClearSearchResults.Enabled = true; btnClearSearchResults.Enabled = true;
btnCopySearchResults.Enabled = true; btnCopySearchResults.Enabled = true;
btnSaveSearchResults.Enabled = true; btnSaveSearchResults.Enabled = true;
cmbResultsStyle.Enabled = true; if (tabSearchTypes.SelectedTab != tabIncTrans)
cmbResultsStyle.Enabled = true;
} }
else else
{ {
@@ -2188,21 +2197,39 @@ namespace Volian.Controls.Library
// C2019-001: Search in RNO steps only // C2019-001: Search in RNO steps only
if (cbxRnoOnlyTrans.Checked) GetInRNOResults(); if (cbxRnoOnlyTrans.Checked) GetInRNOResults();
} }
else if (tabSearchTypes.SelectedTab == tabSearchTypes.Tabs[4]) else if (tabSearchTypes.SelectedTab == tabIncTrans)
{ {
// C2020-033: Incoming Transitions: Make an iteminfolist from the list returned from // C2025-062 When Search clicked - Load the Incoming transitions for the Active Procedure
// GetExternalTransitionsToChildren (also gets transitions to the item itself)
// B2021-010: Use IncomingTranGetMergedTranList to get a complete list of incoming transitions (transitions to procedure if (_TabControl?.MyEditItem?.MyItemInfo?.MyProcedure != null)
// were only included if there were NO transitions to items within procedure)
ReportTitle = string.Format("Search For Incoming Transitions to {0}: ", SearchIncTransII.Path);
SearchResults = IncomingTranGetMergedTranList();
cmbResultsStyleIndex = 1; //display step locations in results
if (SearchResults == null || SearchResults.Count == 0)
{ {
FlexibleMessageBox.Show("No Matches Found.", "Search");
if (_TabControl?.MyEditItem?.MyItemInfo?.MyProcedure.ItemID == _TabControl?.MyEditItem?.MyItemInfo?.ItemID)
{
_ = _TabControl.OnSearchIncTrans(this, new vlnTreeItemInfoEventArgs(_TabControl?.MyEditItem?.MyItemInfo?.MyProcedure));
}
else
{
//if on a step, check if the user wants to load incoming transitions for that step or the entire procedure
switch (CustomMessageBox.Show("Would you like to load incoming transitions for this procedure or this step?", "Load Incoming Transitions", "This Procedure", "This Step"))
{
case DialogResult.Yes:
_ = _TabControl.OnSearchIncTrans(this, new vlnTreeItemInfoEventArgs(_TabControl?.MyEditItem?.MyItemInfo?.MyProcedure));
break;
case DialogResult.No:
_ = _TabControl.OnSearchIncTrans(this, new vlnTreeItemInfoEventArgs(_TabControl?.MyEditItem?.MyItemInfo));
break;
default: //Cancel was pressed
break;
}
}
}
else
{
FlexibleMessageBox.Show("Please open a procedure before selecting this option to load incoming transitions for that procedure.", "Search");
} }
} }
if (SearchResults != null) if (SearchResults != null && tabSearchTypes.SelectedTab != tabIncTrans)
{ {
AddMessageForEmptyAnnotations(); AddMessageForEmptyAnnotations();
if (cmbResultsStyleIndex == 3 && cmbResultsStyle.Items.Count == 3) cmbResultsStyleIndex--; if (cmbResultsStyleIndex == 3 && cmbResultsStyle.Items.Count == 3) cmbResultsStyleIndex--;
@@ -2303,7 +2330,18 @@ namespace Volian.Controls.Library
cmbResultsStyle.Items.Add(comboItem2); cmbResultsStyle.Items.Add(comboItem2);
if (hasAnnot) cmbResultsStyle.Items.Add(comboItem3); if (hasAnnot) cmbResultsStyle.Items.Add(comboItem3);
cmbResultsStyle.Items.Add(comboItem4); cmbResultsStyle.Items.Add(comboItem4);
}
// C2025-062 When Search clicked - Load the Incoming transitions for the Active Procedure
if (tabSearchTypes.SelectedTab == tabIncTrans)
{
cmbResultsStyle.SelectedIndex = -1;
cmbResultsStyle.Enabled = false;
}
else
{
cmbResultsStyle.Enabled = true;
}
}
private void cbxTextSearchText_Leave(object sender, EventArgs e) private void cbxTextSearchText_Leave(object sender, EventArgs e)
{ {

View File

@@ -154,6 +154,12 @@
<Compile Include="ConvertTable.cs"> <Compile Include="ConvertTable.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="CustomMessageBox.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="CustomMessageBox.Designer.cs">
<DependentUpon>CustomMessageBox.cs</DependentUpon>
</Compile>
<Compile Include="DisplayApplicability.cs"> <Compile Include="DisplayApplicability.cs">
<SubType>UserControl</SubType> <SubType>UserControl</SubType>
</Compile> </Compile>
@@ -454,6 +460,9 @@
<DependentUpon>AnnotationSearch.cs</DependentUpon> <DependentUpon>AnnotationSearch.cs</DependentUpon>
<SubType>Designer</SubType> <SubType>Designer</SubType>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="CustomMessageBox.resx">
<DependentUpon>CustomMessageBox.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="DisplayBookMarks.resx"> <EmbeddedResource Include="DisplayBookMarks.resx">
<DependentUpon>DisplayBookMarks.cs</DependentUpon> <DependentUpon>DisplayBookMarks.cs</DependentUpon>
<SubType>Designer</SubType> <SubType>Designer</SubType>