diff --git a/PROMS/VEPROMS User Interface/PROMSFixes.Sql b/PROMS/VEPROMS User Interface/PROMSFixes.Sql
index 93ef133c..4d6b672e 100644
--- a/PROMS/VEPROMS User Interface/PROMSFixes.Sql
+++ b/PROMS/VEPROMS User Interface/PROMSFixes.Sql
@@ -24578,6 +24578,161 @@ IF (@@Error = 0) PRINT 'Procedure Creation: [GetCurrentApprovedRevisions] Succee
ELSE PRINT 'Procedure Creation: [GetCurrentApprovedRevisions] Error on Creation'
GO
+
+/*
+==========================================================================================================
+-- Begin: C2026-010 Add Audit Ability for ChangeBars
+-- Author: Matthew Schill
+-- Create date: 02/17/2026
+==========================================================================================================
+*/
+ /*
+ ----------------------------------------------------------------------------------
+ Tables:
+ ----------------------------------------------------------------------------------
+ [ChangeBarAudits]
+
+ ----------------------------------------------------------------------------------
+ Indexes:
+ ----------------------------------------------------------------------------------
+ [IX_ChangeBarAudits_ItemID] on [dbo].[ChangeBarAudits]
+
+
+
+ */
+
+
+ IF Not Exists(SELECT * FROM sys.objects Where name = 'ChangeBarAudits' AND type in (N'U'))
+ Begin
+
+ SET ANSI_NULLS ON
+ SET QUOTED_IDENTIFIER ON
+
+ /****** Create Table to hold Audit Information ******/
+ CREATE TABLE [dbo].[ChangeBarAudits](
+ [AuditID] [bigint] IDENTITY(1,1) NOT NULL,
+ [ItemID] [bigint] NOT NULL,
+ [Text] [nvarchar](max) NULL,
+ [DTS] [datetime] NOT NULL,
+ [UserID] [nvarchar](100) NOT NULL,
+ [UnitIndex] [int] NULL,
+ CONSTRAINT [PK_ChangeBarAudits] PRIMARY KEY CLUSTERED
+ (
+ [AuditID] ASC
+ )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
+ ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
+
+ IF (@@Error = 0) PRINT 'Table Creation: [ChangeBarAudits] Succeeded'
+ ELSE PRINT 'Table Creation: [ChangeBarAudits] Error on Creation'
+
+ /****** Table was not previously created - so intially populate with info from Approvals ******/
+ INSERT into ChangeBarAudits([ItemID],[Text],[DTS],[UserID],[UnitIndex])
+ select --rr.RevisionID,
+ rr.ItemID,
+ Text = CASE WHEN r1.value('@Index','int') <> 0 AND UnitName IS NOT NULL THEN
+ '(Unit ' + UnitName + ') '
+ ELSE
+ ''
+ END +
+ 'Approved by (' + rr.UserID + ') on (' +
+ CAST(rr.DTS AS VARCHAR) + ')',
+ rr.DTS,
+ rr.UserID,
+ UnitIndex = r1.value('@Index','int')
+ -- , UnitName
+ from revisions rr
+ inner join versions vv on rr.revisionid = vv.revisionid
+ inner join stages ss on vv.stageid = ss.stageid
+ outer apply rr.config.nodes('Config/Applicability') t1(r1)
+ outer apply
+ ( Select r2.value('@Name','varchar') UnitName
+ FROM
+ (select DocVerSions.ItemID, cast(config as xml) xconfig from DocVersions
+ inner join
+ vefn_AllSiblingItems(rr.ItemID) Sib ON DocVerSions.ItemID = Sib.ItemID) SDV
+ cross apply
+ xconfig.nodes('Config/Slaves/Slave') t2(r2)
+ WHERE r2.value('@index','varchar') = r1.value('@Index','int')
+ ) UN
+ where ss.isapproved = 1
+ order by rr.ItemID, rr.RevisionID desc
+
+ IF (@@Error = 0) PRINT '[ChangeBarAudits] Initial Population Succeeded'
+ ELSE PRINT '[ChangeBarAudits] Initial Population Error'
+
+ /****** Create Index to get ChangeBar Audit Information for Item (ItemID = ProcedureID) ******/
+ CREATE NONCLUSTERED INDEX [IX_ChangeBarAudits_ItemID] ON [dbo].[ChangeBarAudits]
+ (
+ [ItemID] ASC
+ )
+ INCLUDE ([AuditID], [Text], [DTS], [UnitIndex])
+ WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
+
+ IF (@@Error = 0) PRINT 'Index Creation: [IX_ChangeBarAudits_ItemID] Succeeded'
+ ELSE PRINT 'Index Creation: [IX_ChangeBarAudits_ItemID] Error on Creation'
+
+ End
+
+ -- =============================================
+ -- Description: Gets ChangeBar Audit History by item
+ -- =============================================
+ IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[GetChangeBarAuditHistoryByItem]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
+ DROP PROCEDURE [GetChangeBarAuditHistoryByItem];
+
+ GO
+
+ CREATE PROCEDURE [dbo].[GetChangeBarAuditHistoryByItem]
+ (
+ @ItemID AS bigint
+ )
+ AS
+ BEGIN
+ Select * FROM ChangeBarAudits where ItemID = @ItemID
+ order by DTS desc
+
+ RETURN
+ END
+
+ IF (@@Error = 0) PRINT 'Procedure Creation: [GetChangeBarAuditHistoryByItem] Succeeded'
+ ELSE PRINT 'Procedure Creation: [GetChangeBarAuditHistoryByItem] Error on Creation'
+ GO
+
+ -- =============================================
+ -- Description: Adds ChangeBar Audit History
+ -- =============================================
+ IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[AddChangeBarAuditHistory]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
+ DROP PROCEDURE [AddChangeBarAuditHistory];
+
+ GO
+
+ CREATE PROCEDURE [dbo].[AddChangeBarAuditHistory]
+ (
+ @ItemID AS bigint,
+ @Description As nvarchar(max),
+ @DTS AS Datetime,
+ @UserID As nvarchar(100),
+ @UnitIndex AS bigint = NULL
+ )
+ AS
+ BEGIN
+
+ INSERT into ChangeBarAudits([ItemID],[Text],[DTS],[UserID],[UnitIndex])
+ VALUES (@ItemID, @Description, @DTS, @UserID, @UnitIndex)
+
+ RETURN
+ END
+
+ IF (@@Error = 0) PRINT 'Procedure Creation: [AddChangeBarAuditHistory] Succeeded'
+ ELSE PRINT 'Procedure Creation: [AddChangeBarAuditHistory] Error on Creation'
+ GO
+
+/*
+==========================================================================================================
+-- End: C2026-010 Add Audit Ability for ChangeBars
+==========================================================================================================
+*/
+
+
/*
---------------------------------------------------------------------------
| ADD New Code Before this Block |
@@ -24611,8 +24766,8 @@ BEGIN TRY -- Try Block
DECLARE @RevDate varchar(255)
DECLARE @RevDescription varchar(255)
- set @RevDate = '02/09/2026 7:00 AM'
- set @RevDescription = 'Added procedure for getting current revisions'
+ set @RevDate = '02/18/2026 7:00 AM'
+ set @RevDescription = 'Added Audit Ability for ChangeBars'
Select cast(@RevDate as datetime) RevDate, @RevDescription RevDescription
PRINT 'SQL Code Revision ' + @RevDate + ' - ' + @RevDescription
diff --git a/PROMS/VEPROMS User Interface/dlgApproveProcedure.cs b/PROMS/VEPROMS User Interface/dlgApproveProcedure.cs
index 0dd507e5..c554aef5 100644
--- a/PROMS/VEPROMS User Interface/dlgApproveProcedure.cs
+++ b/PROMS/VEPROMS User Interface/dlgApproveProcedure.cs
@@ -1135,6 +1135,7 @@ namespace VEPROMS
ViewPDF = ViewPDF && MyProcedures.Count == 1;
StringBuilder sb = new StringBuilder();
StageInfo nsi = StageInfo.GetJustStage(RevStage);
+ DateTime now = DateTime.Now; //using variable so dates are consistent
foreach (ApprovalProcedure ap in MyProcedures) //spin thru looking for updating current revision
{
// ric: current revision info record, not new one being created.
@@ -1207,7 +1208,7 @@ namespace VEPROMS
cfg.History_StartDate = myDTS; // if there is a slave, date found from above code
cfg.Applicability_Index = ap.ProcInfo.MyDocVersion.DocVersionConfig.SelectedSlave;
//cfg.Save();
- revision = Revision.MakeRevision(pi.ItemID, RevType, ap.RevNumber, ap.RevDate, RevNote, cfg.ToString(), DateTime.Now, Volian.Base.Library.VlnSettings.UserID);
+ revision = Revision.MakeRevision(pi.ItemID, RevType, ap.RevNumber, ap.RevDate, RevNote, cfg.ToString(), now, Volian.Base.Library.VlnSettings.UserID);
// revision.MyConfig.History_StartDate = pi.DTS;
// revision.MyConfig.Save();
// revision = revision.Save();
@@ -1234,7 +1235,7 @@ namespace VEPROMS
RevisionConfig cfg = new RevisionConfig();
cfg.History_StartDate = pi.DTS; // todo: this should probably be myDTS, found during fix of B2019-051.
//cfg.Save();
- revision = Revision.MakeRevision(pi.ItemID, RevType, ap.RevNumber, ap.RevDate, RevNote, cfg.ToString(), DateTime.Now, Volian.Base.Library.VlnSettings.UserID);
+ revision = Revision.MakeRevision(pi.ItemID, RevType, ap.RevNumber, ap.RevDate, RevNote, cfg.ToString(), now, Volian.Base.Library.VlnSettings.UserID);
// revision.MyConfig.History_StartDate = pi.DTS;
// revision.MyConfig.Save();
// revision = revision.Save();
@@ -1253,7 +1254,7 @@ namespace VEPROMS
byte[] summaryBuf = null;
//B2017-149 Allow the user to choose if they want the Summary of Changes report created during the approval process
if (doSumChg) summaryBuf = CreateSummary(ref pi, summaryPDF, myDTS);
- DateTime currentDTS = DateTime.Now;
+ DateTime currentDTS = now;
Check check = Check.MakeCheck(revision, Stage.GetJustStage(RevStage), RevisionInfo.BuildRevisionChecks(pi), currentDTS, VlnSettings.UserID);
//make pdf with promsprinter and get byte stream
// Moved to end so that Item and Content are saved at the same time
@@ -1319,10 +1320,13 @@ namespace VEPROMS
version.ApprovedXML = xd.OuterXml;
version.Save();
dlg.Dispose();
- UpdateProcedureConfig(pi, ap.RevNumber, ap.RevDate, DateTime.Now, selectedSlave);
+ UpdateProcedureConfig(pi, ap.RevNumber, ap.RevDate, now, selectedSlave);
- // Clear the change bar override for this procedure:
- pi.ClearChangeBarOverrides();
+ //CSM - C2026-010 - Add Audit Record for Change Bar Audit History
+ ChangeBarAuditHistory.AddAudit(pi.ItemID, $"{(selectedSlave > 0 ? $"(Unit {pi.MyDocVersion.UnitNames[selectedSlave - 1]}) " : "")}Approved by ({VlnSettings.UserID}) on ({now})", now, VlnSettings.UserID, selectedSlave);
+
+ // Clear the change bar override for this procedure:
+ pi.ClearChangeBarOverrides();
//B2019-140 Change bars do not get refreshed when approval is run.
ProcedureInfo newproc = ItemInfo.ResetProcedure(pi.ItemID);
diff --git a/PROMS/VEPROMS User Interface/dlgSetChangeBarStartDate.cs b/PROMS/VEPROMS User Interface/dlgSetChangeBarStartDate.cs
index c574c293..a9ba9321 100644
--- a/PROMS/VEPROMS User Interface/dlgSetChangeBarStartDate.cs
+++ b/PROMS/VEPROMS User Interface/dlgSetChangeBarStartDate.cs
@@ -1,8 +1,10 @@
using System;
+using System.Collections.Generic;
using System.Data;
using System.Text;
using System.Windows.Forms;
using VEPROMS.CSLA.Library;
+using Volian.Base.Library;
using Volian.Controls.Library;
namespace VEPROMS
@@ -29,7 +31,7 @@ namespace VEPROMS
{
cbdt = DateTime.Now.ToString("MM/dd/yyyy") + " " + DateTime.Now.ToString("HH:mm:ss");
dateTimeInput1.Value = DateTime.Parse(cbdt);
- return;
+ return;
}
else
{
@@ -64,10 +66,14 @@ namespace VEPROMS
private void btnOK_Click(object sender, EventArgs e)
{
MyProcConfig.Print_ChangeBarDate = dateTimeInput1.Value.ToString("MM/dd/yyyy HH:mm:ss");// ("MM/dd/yyyy HH:mm:ss");
- }
+
+ //CSM - C2026-010 - Add Audit Record for Change Bar Audit History
+ ChangeBarAuditHistory.AddAudit(MyProcInfo.ItemID, $"Set ChangeBars set to ({ dateTimeInput1.Value.ToString("MM/dd/yyyy HH:mm:ss")}) by ({ VlnSettings.UserID}) on ({DateTime.Now})", DateTime.Now, VlnSettings.UserID, 0);
+
+ }
- private void btnNow_Click(object sender, EventArgs e)
+ private void btnNow_Click(object sender, EventArgs e)
{
dateTimeInput1.Value = DateTime.Now;
}
@@ -84,11 +90,16 @@ namespace VEPROMS
{
MyProcConfig.Print_ChangeBarDate = "";
DialogResult = DialogResult.OK;
+
+ //CSM - C2026-010 - Add Audit Record for Change Bar Audit History
+ ChangeBarAuditHistory.AddAudit(MyProcInfo.ItemID, $"Reset ChangeBars performed by ({VlnSettings.UserID}) on ({DateTime.Now}). ChangeBars reset to show all changes.", DateTime.Now, VlnSettings.UserID, 0);
+
Close();
}
}
else if (RevisionData.HasUnits(dt))
{
+
//any with units
string maxDTS = RevisionData.MaxDTS(dt).ToString("MM/dd/yyyy HH:mm:ss");
@@ -107,15 +118,22 @@ namespace VEPROMS
//Change the overall ChangeBarDate
MyProcConfig.Print_ChangeBarDate = maxDTS;
- //Change the ChangeBarDate for each unit
- foreach (DataRow r in dt.Rows)
+ //Change the ChangeBarDate for each unit
+ foreach (DataRow r in dt.Rows)
{
MyProcConfig.SelectedSlave = Convert.ToInt32(r["UnitID"]);
MyProcConfig.Print_ChangeBarDate = Convert.ToDateTime(r["DTS"]).ToString("MM / dd / yyyy HH: mm: ss");
+
+ //CSM - C2026-010 - Add Audit Record for Change Bar Audit History
+ ChangeBarAuditHistory.AddAudit(MyProcInfo.ItemID, $"Reset ChangeBars performed by ({VlnSettings.UserID}) on ({DateTime.Now}). ChangeBars reset to show since last approval ({Convert.ToDateTime(r["DTS"]):MM/dd/yyyy HH:mm:ss}) for (Unit {r["UnitName"]})", DateTime.Now, VlnSettings.UserID, MyProcConfig.SelectedSlave);
+
}
MyProcConfig.SelectedSlave = 0;
-
DialogResult = DialogResult.OK;
+
+ //CSM - C2026-010 - Add Audit Record for Change Bar Audit History
+ ChangeBarAuditHistory.AddAudit(MyProcInfo.ItemID, $"Reset ChangeBars performed by ({VlnSettings.UserID}) on ({DateTime.Now}). ChangeBars reset to show since last approval ({maxDTS})", DateTime.Now, VlnSettings.UserID, 0);
+
Close();
}
}
@@ -127,6 +145,9 @@ namespace VEPROMS
{
MyProcConfig.Print_ChangeBarDate = maxDTS;
DialogResult = DialogResult.OK;
+
+ //CSM - C2026-010 - Add Audit Record for Change Bar Audit History
+ ChangeBarAuditHistory.AddAudit(MyProcInfo.ItemID, $"Reset ChangeBars performed by ({VlnSettings.UserID}) on ({DateTime.Now}). ChangeBars reset to show since last approval ({maxDTS})", DateTime.Now, VlnSettings.UserID, 0);
Close();
}
}
diff --git a/PROMS/VEPROMS User Interface/frmVEPROMS.Designer.cs b/PROMS/VEPROMS User Interface/frmVEPROMS.Designer.cs
index e94335f3..d2f33d9d 100644
--- a/PROMS/VEPROMS User Interface/frmVEPROMS.Designer.cs
+++ b/PROMS/VEPROMS User Interface/frmVEPROMS.Designer.cs
@@ -877,7 +877,7 @@ namespace VEPROMS
this.infoPanel.ExpandOnTitleClick = true;
this.infoPanel.Location = new System.Drawing.Point(614, 57);
this.infoPanel.Name = "infoPanel";
- this.infoPanel.Size = new System.Drawing.Size(230, 490);
+ this.infoPanel.Size = new System.Drawing.Size(300, 490);
this.infoPanel.Style.Alignment = System.Drawing.StringAlignment.Center;
this.infoPanel.Style.BackColor1.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground;
this.infoPanel.Style.BackColor2.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground2;
diff --git a/PROMS/VEPROMS.CSLA.Library/Minimal/ChangeBarAuditHistory.cs b/PROMS/VEPROMS.CSLA.Library/Minimal/ChangeBarAuditHistory.cs
new file mode 100644
index 00000000..cf1be7b0
--- /dev/null
+++ b/PROMS/VEPROMS.CSLA.Library/Minimal/ChangeBarAuditHistory.cs
@@ -0,0 +1,72 @@
+using System;
+using Csla.Data;
+using System.Data;
+using System.Data.SqlClient;
+
+//CSM - C2026-010 - Minimal Class for Managing Change Bar Audit History
+namespace VEPROMS.CSLA.Library
+{
+ public static class ChangeBarAuditHistory
+ {
+
+ #region Add Audit Record for ChangeBar History
+ public static void AddAudit(int itemID, string description, DateTime dts, string userID, int unitIndex)
+ {
+ try
+ {
+ using (SqlConnection cn = Database.VEPROMS_SqlConnection)
+ {
+ using (SqlCommand cm = cn.CreateCommand())
+ {
+ cm.CommandType = CommandType.StoredProcedure;
+ cm.CommandText = "AddChangeBarAuditHistory";
+ cm.Parameters.AddWithValue("@ItemID", itemID);
+ cm.Parameters.AddWithValue("@Description", description);
+ cm.Parameters.AddWithValue("@DTS", dts);
+ cm.Parameters.AddWithValue("@UserID", userID);
+ if (unitIndex != 0) cm.Parameters.AddWithValue("@UnitIndex", unitIndex);
+
+ cm.CommandTimeout = 0;
+ cm.ExecuteNonQuery();
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ throw new DbCslaException("Error in ChangeBarAuditHistory.AddAudit: ", ex);
+ }
+ }
+
+ #endregion
+
+ #region Get Change Bar Audit History
+ public static DataTable GetChangeBarAuditHistory(int itemID)
+ {
+ try
+ {
+ using (SqlConnection cn = Database.VEPROMS_SqlConnection)
+ {
+ using (SqlCommand cm = cn.CreateCommand())
+ {
+ cm.CommandType = CommandType.StoredProcedure;
+ cm.CommandText = "GetChangeBarAuditHistoryByItem";
+ cm.Parameters.AddWithValue("@ItemID", itemID);
+ cm.CommandTimeout = Database.DefaultTimeout;
+ using (SqlDataAdapter da = new SqlDataAdapter(cm))
+ {
+ DataTable dt = new DataTable();
+ da.Fill(dt);
+ return dt;
+ }
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ throw new DbCslaException("Error in ChangeBarAuditHistory.GetChangeBarAuditHistoryByItem: retrieving data failed", ex);
+ }
+ }
+ #endregion
+
+ }
+}
diff --git a/PROMS/VEPROMS.CSLA.Library/VEPROMS.CSLA.Library.csproj b/PROMS/VEPROMS.CSLA.Library/VEPROMS.CSLA.Library.csproj
index 2234b8df..1b9a09b2 100644
--- a/PROMS/VEPROMS.CSLA.Library/VEPROMS.CSLA.Library.csproj
+++ b/PROMS/VEPROMS.CSLA.Library/VEPROMS.CSLA.Library.csproj
@@ -389,6 +389,7 @@
+
diff --git a/PROMS/Volian.Controls.Library/DisplayHistory.cs b/PROMS/Volian.Controls.Library/DisplayHistory.cs
index a190e4f7..e00facf0 100644
--- a/PROMS/Volian.Controls.Library/DisplayHistory.cs
+++ b/PROMS/Volian.Controls.Library/DisplayHistory.cs
@@ -56,7 +56,20 @@ namespace Volian.Controls.Library
set
{
if (DesignMode) return; // B2019-043 need to check if we are just saving changes to the user interface
- if (value is ProcedureInfo && _MyProcedureInfo is ProcedureInfo && value.ItemID == _MyProcedureInfo.ItemID)
+
+ //CSM - C2026-010 - Set/Show Change Bar Audit History
+ if (value != null)
+ {
+ lbChangeBarHistory.DataSource = ChangeBarAuditHistory.GetChangeBarAuditHistory(value.ItemID);
+ lbChangeBarHistory.ValueMember = "AuditID";
+ lbChangeBarHistory.DisplayMember = "Text";
+ }
+ else
+ {
+ lbChangeBarHistory.DataSource = null;
+ }
+
+ if (value is ProcedureInfo && _MyProcedureInfo is ProcedureInfo && value.ItemID == _MyProcedureInfo.ItemID)
return;
_MyProcedureInfo = value;
if (value == null) return;
@@ -184,6 +197,15 @@ namespace Volian.Controls.Library
InitializeComponent();
myRTB.FormatFont = null;
RefreshRequired = true;
+
+ if (MyProcedureInfo != null)
+ {
+ lbChangeBarHistory.DataSource = ChangeBarAuditHistory.GetChangeBarAuditHistory(MyProcedureInfo.ItemID);
+ }
+ else
+ {
+ lbChangeBarHistory.DataSource = null;
+ }
}
private void lbChanges_VisibleChanged(object sender, System.EventArgs e)
@@ -1075,7 +1097,25 @@ namespace Volian.Controls.Library
{
tvAudits.Height = ((tcpDetail.Height - btnRestore.Height) / 4) * 3;
}
- public void RefreshChangeList()
+
+ //CSM - C2026-010 - Set/Show Change Bar Audit History
+ //Display a Tooltip for what was in the list
+ private void LbChangeBarHistory_MouseMove(object sender, MouseEventArgs e)
+ {
+ // Just use the item's value for the tooltip.
+ int index = lbChangeBarHistory.IndexFromPoint(e.Location);
+
+ if (index != ListBox.NoMatches)
+ {
+ DataRow rw = (lbChangeBarHistory.Items[index] as DataRowView)?.Row;
+
+ // Display the item's value as a tooltip.
+ if (tipCBHistory.GetToolTip(lbChangeBarHistory) != rw["Text"].ToString())
+ tipCBHistory.SetToolTip(lbChangeBarHistory, rw["Text"].ToString());
+ }
+ }
+
+ public void RefreshChangeList()
{
myTimer.Enabled = false;
myTimer.Enabled = true;
diff --git a/PROMS/Volian.Controls.Library/DisplayHistory.designer.cs b/PROMS/Volian.Controls.Library/DisplayHistory.designer.cs
index a7c9d046..5740460f 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 28034095..f248cb6d 100644
--- a/PROMS/Volian.Controls.Library/DisplayHistory.resx
+++ b/PROMS/Volian.Controls.Library/DisplayHistory.resx
@@ -188,4 +188,7 @@
17, 17
+
+ 119, 17
+
\ No newline at end of file