Compare commits

..

8 Commits

Author SHA1 Message Date
ed4469bd5f B2026-002 When parens are inside a parent / child, printing a double parens.
When "(tunable)" was added to the RO return value that has Parent/Child turned on in the field, that return value will print "(turnable))" - with two closing parentheses.

 In Vogtle data, Customer turned on Parent/Child on the Setpoint field in the Alarms CSD grouping.
 Added "(tunable)" to the Setpoint's default value in CDS-ARP-001-172

 The value looks good in the editor but prints with two closing parens.
2026-01-15 07:20:46 -05:00
4273d72b9d Merge pull request 'F2026-001 Added the ability to prefix a Continuous Action sub-step tab with its parent tab.' (#682) from F2026-001_Add_Parent_Tab_To_CAS_Step into Development
Looks good. Ready for QA.
2026-01-14 16:07:02 -05:00
30f56d1f9b F2026-001 Added the ability to prefix a Continuous Action sub-step tab with its parent tab. 2026-01-14 16:01:40 -05:00
9bb13f6d88 Merge pull request 'C2025-043 Admin Tool - Data Check - Tool to identify and report RO's that are not used in any of the PROMS data.' (#680) from C2025-043 into Development
good for testing
2026-01-12 15:25:55 -05:00
52dbd8afec C2025-043 Admin Tool - Data Check - Tool to identify and report RO's that are not used in any of the PROMS data.
Performance Improvement
2026-01-12 15:21:18 -05:00
31a0f04710 Merge pull request 'C2025-043 Admin Tool - Data Check - Tool to identify and report RO's that are not used in any of the PROMS data.' (#679) from C2025-043 into Development
good for testing phase
2026-01-09 10:30:11 -05:00
ac88add40b C2025-043 Admin Tool - Data Check - Tool to identify and report RO's that are not used in any of the PROMS data. 2026-01-09 09:12:00 -05:00
862cf67375 Merge pull request 'B2025-065 When Printing a Word Section containing XY Plot ROs - when there is a title on the XY Plot, only the first line is indented.' (#677) from B2025-065 into Development
good for testing phase
2026-01-02 15:14:57 -05:00
13 changed files with 554 additions and 163 deletions

Binary file not shown.

Binary file not shown.

View File

@@ -24432,6 +24432,89 @@ ELSE PRINT 'Procedure Creation: [vesp_GetOtherActiveSessions] Error on Creation'
GO GO
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_GetROsNotUsed]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
DROP PROCEDURE [vesp_GetROsNotUsed];
GO
/****** Object: StoredProcedure [dbo].[vesp_GetROsNotUsed] ******/
-- =============================================
-- Author: Matthew Schill
-- Create date: 1/5/2026
-- Description: Returns ROs that are not Used in PROMS
-- =============================================
CREATE PROCEDURE [dbo].[vesp_GetROsNotUsed]
AS
BEGIN
Create table #notused (RofstChildID int NULL, roid [varchar](50) NULL, ID int NOT NULL, ParentID int NOT NULL, dbID int NOT NULL, title varchar(max) not null);
DECLARE @FSTs table (RofstID int primary key NOT NULL, RODbID int NOT NULL)
INSERT INTO @FSTs
Select max(RoFSTID), RODbID from ROFsts
GROUP BY RODbID
--insert the not used ROs
INSERT INTO #notused
SELECT RofstChild.RofstChildID, RofstChild.roid, RofstChild.ID, RofstChild.ParentID, RofstChild.dbiID,
RofstChild.title + Case When (Not RofstChild.[value] is null) Then ' (' + fstdb.dbiAP + '-' + RofstChild.appid + ')' Else '' End --Add in Accessory Page ID if it exists
FROM RofstChild
INNER JOIN RofstDatabase fstdb on fstdb.RofstID = RofstChild.RofstID and fstdb.dbiID = RofstChild.dbiID
INNER JOIN @FSTs fst on fst.RofstID = fstdb.RofstID AND RofstChild.RofstID = fst.RofstID
LEFT OUTER JOIN RofstChild subchild ON subChild.ParentID = RofstChild.ID --make sure it is not a parent of something else
LEFT OUTER JOIN DRoUsages ON [DRoUsages].[ROID] like RofstChild.[ROID] + '%' AND fst.RODbID = DROUsages.RODbID --not used in documents
LEFT OUTER JOIN RoUsages ON [RoUsages].[ROID] like RofstChild.[ROID] + '%' AND fst.RODbID = ROUsages.RODbID --not used in regular ROs
where
subchild.RofstChildID IS NULL --make sure it is not a parent of something else
AND DRoUsages.DROUsageID IS NULL --not used in documents
AND RoUsages.ROUsageID IS NULL --not used in regular ROs
--insert thier parents
--if they are not already in @notused
INSERT INTO #notused
SELECT DISTINCT RofstChild.RofstChildID, RofstChild.roid, RofstChild.ID, RofstChild.ParentID, RofstChild.dbiID, RofstChild.title
FROM RofstChild
INNER JOIN #notused notusedgetparents on notusedgetparents.ParentID = RofstChild.ID AND RofstChild.dbiID = notusedgetparents.dbID
INNER JOIN @FSTs fst on RofstChild.RofstID = fst.RofstID
LEFT OUTER JOIN #notused notused on notused.RofstChildID = RofstChild.RofstChildID
WHERE notused.RofstChildID IS NULL
--insert parent dbs
--if they are not already in @notused
INSERT INTO #notused
SELECT DISTINCT NULL, NULL, RofstDatabase.ID, RofstDatabase.ParentID, RofstDatabase.dbiID, RofstDatabase.dbiTitle
FROM RofstDatabase
INNER JOIN @FSTs fst on fst.RofstID = RofstDatabase.RofstID
select *
FROM #notused notused
order by RofstChildID, dbID
drop table #notused
RETURN
END
IF (@@Error = 0) PRINT 'Procedure Creation: [vesp_GetROsNotUsed] Succeeded'
ELSE PRINT 'Procedure Creation: [vesp_GetROsNotUsed] Error on Creation'
GO
IF EXISTS (SELECT * FROM dbo.sysIndexes WHERE name like 'IX_tblROUsagesRODbIDDeleteStatusROID')
DROP INDEX [IX_tblROUsagesRODbIDDeleteStatusROID] ON [dbo].[tblROUsages];
GO
CREATE NONCLUSTERED INDEX IX_tblROUsagesRODbIDDeleteStatusROID
ON [dbo].[tblROUsages] ([RODbID],[DeleteStatus],[ROID])
INCLUDE([ROUsageID],[ContentID],[Config],[DTS],[UserID],[LastChanged]) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
GO
PRINT 'Added IX_tblROUsagesRODbIDDeleteStatusROID Index. Speeds up RO queries'
GO
/* /*
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
| ADD New Code Before this Block | | ADD New Code Before this Block |
@@ -24465,8 +24548,8 @@ BEGIN TRY -- Try Block
DECLARE @RevDate varchar(255) DECLARE @RevDate varchar(255)
DECLARE @RevDescription varchar(255) DECLARE @RevDescription varchar(255)
set @RevDate = '09/16/2025 7:00 AM' set @RevDate = '1/12/2026 2:00 PM'
set @RevDescription = 'Added Purge Change History and Index Maintenance functions to Admin Tools' set @RevDescription = 'Added Method to get ROs that are not used in PROMS'
Select cast(@RevDate as datetime) RevDate, @RevDescription RevDescription Select cast(@RevDate as datetime) RevDate, @RevDescription RevDescription
PRINT 'SQL Code Revision ' + @RevDate + ' - ' + @RevDescription PRINT 'SQL Code Revision ' + @RevDate + ' - ' + @RevDescription

View File

@@ -52,6 +52,16 @@
this.expandableSplitter1 = new DevComponents.DotNetBar.ExpandableSplitter(); this.expandableSplitter1 = new DevComponents.DotNetBar.ExpandableSplitter();
this.panelEx1 = new DevComponents.DotNetBar.PanelEx(); this.panelEx1 = new DevComponents.DotNetBar.PanelEx();
this.sideNav1 = new DevComponents.DotNetBar.Controls.SideNav(); this.sideNav1 = new DevComponents.DotNetBar.Controls.SideNav();
this.sideNavPanel5 = new DevComponents.DotNetBar.Controls.SideNavPanel();
this.itemPanel1 = new DevComponents.DotNetBar.PanelEx();
this.btnPurgeChange = new DevComponents.DotNetBar.ButtonX();
this.dtePurge = new System.Windows.Forms.DateTimePicker();
this.warningBox3 = new DevComponents.DotNetBar.Controls.WarningBox();
this.warningBox6 = new DevComponents.DotNetBar.Controls.WarningBox();
this.itemPanel2 = new DevComponents.DotNetBar.PanelEx();
this.btnIndexMaint = new DevComponents.DotNetBar.ButtonX();
this.itemPanel3 = new DevComponents.DotNetBar.PanelEx();
this.btnROsNotUsed = new DevComponents.DotNetBar.ButtonX();
this.sideNavPanel2 = new DevComponents.DotNetBar.Controls.SideNavPanel(); this.sideNavPanel2 = new DevComponents.DotNetBar.Controls.SideNavPanel();
this.swRefreshTblsForSrch = new DevComponents.DotNetBar.Controls.SwitchButton(); this.swRefreshTblsForSrch = new DevComponents.DotNetBar.Controls.SwitchButton();
this.lblRefreshTblForSrch = new DevComponents.DotNetBar.LabelX(); this.lblRefreshTblForSrch = new DevComponents.DotNetBar.LabelX();
@@ -75,13 +85,6 @@
this.labelX14 = new DevComponents.DotNetBar.LabelX(); this.labelX14 = new DevComponents.DotNetBar.LabelX();
this.myTVdel = new System.Windows.Forms.TreeView(); this.myTVdel = new System.Windows.Forms.TreeView();
this.btnDeleteItems = new DevComponents.DotNetBar.ButtonX(); this.btnDeleteItems = new DevComponents.DotNetBar.ButtonX();
this.sideNavPanel5 = new DevComponents.DotNetBar.Controls.SideNavPanel();
this.btnIndexMaint = new DevComponents.DotNetBar.ButtonX();
this.itemPanel1 = new DevComponents.DotNetBar.PanelEx();
this.btnPurgeChange = new DevComponents.DotNetBar.ButtonX();
this.dtePurge = new System.Windows.Forms.DateTimePicker();
this.warningBox3 = new DevComponents.DotNetBar.Controls.WarningBox();
this.warningBox6 = new DevComponents.DotNetBar.Controls.WarningBox();
this.sideNavPanel3 = new DevComponents.DotNetBar.Controls.SideNavPanel(); this.sideNavPanel3 = new DevComponents.DotNetBar.Controls.SideNavPanel();
this.swCheckROLinks = new DevComponents.DotNetBar.Controls.SwitchButton(); this.swCheckROLinks = new DevComponents.DotNetBar.Controls.SwitchButton();
this.labelX12 = new DevComponents.DotNetBar.LabelX(); this.labelX12 = new DevComponents.DotNetBar.LabelX();
@@ -120,10 +123,12 @@
this.pnlLater.SuspendLayout(); this.pnlLater.SuspendLayout();
this.panelEx1.SuspendLayout(); this.panelEx1.SuspendLayout();
this.sideNav1.SuspendLayout(); this.sideNav1.SuspendLayout();
this.sideNavPanel2.SuspendLayout();
this.sideNavPanel4.SuspendLayout();
this.sideNavPanel5.SuspendLayout(); this.sideNavPanel5.SuspendLayout();
this.itemPanel1.SuspendLayout(); this.itemPanel1.SuspendLayout();
this.itemPanel2.SuspendLayout();
this.itemPanel3.SuspendLayout();
this.sideNavPanel2.SuspendLayout();
this.sideNavPanel4.SuspendLayout();
this.sideNavPanel3.SuspendLayout(); this.sideNavPanel3.SuspendLayout();
this.panelEx4.SuspendLayout(); this.panelEx4.SuspendLayout();
this.SuspendLayout(); this.SuspendLayout();
@@ -346,7 +351,7 @@
this.pnlLater.Controls.Add(this.dtpDate); this.pnlLater.Controls.Add(this.dtpDate);
this.pnlLater.Dock = System.Windows.Forms.DockStyle.Top; this.pnlLater.Dock = System.Windows.Forms.DockStyle.Top;
this.pnlLater.Enabled = false; this.pnlLater.Enabled = false;
this.pnlLater.Location = new System.Drawing.Point(6, 23); this.pnlLater.Location = new System.Drawing.Point(6, 25);
this.pnlLater.Name = "pnlLater"; this.pnlLater.Name = "pnlLater";
this.pnlLater.Padding = new System.Windows.Forms.Padding(6); this.pnlLater.Padding = new System.Windows.Forms.Padding(6);
this.pnlLater.Size = new System.Drawing.Size(279, 37); this.pnlLater.Size = new System.Drawing.Size(279, 37);
@@ -357,7 +362,7 @@
this.label5.AutoSize = true; this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(105, 15); this.label5.Location = new System.Drawing.Point(105, 15);
this.label5.Name = "label5"; this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(18, 13); this.label5.Size = new System.Drawing.Size(19, 15);
this.label5.TabIndex = 5; this.label5.TabIndex = 5;
this.label5.Text = "@"; this.label5.Text = "@";
// //
@@ -387,7 +392,7 @@
this.chkLater.Dock = System.Windows.Forms.DockStyle.Top; this.chkLater.Dock = System.Windows.Forms.DockStyle.Top;
this.chkLater.Location = new System.Drawing.Point(6, 6); this.chkLater.Location = new System.Drawing.Point(6, 6);
this.chkLater.Name = "chkLater"; this.chkLater.Name = "chkLater";
this.chkLater.Size = new System.Drawing.Size(279, 17); this.chkLater.Size = new System.Drawing.Size(279, 19);
this.chkLater.TabIndex = 4; this.chkLater.TabIndex = 4;
this.chkLater.Text = "Process Later"; this.chkLater.Text = "Process Later";
this.chkLater.UseVisualStyleBackColor = true; this.chkLater.UseVisualStyleBackColor = true;
@@ -460,8 +465,8 @@
// sideNav1 // sideNav1
// //
this.sideNav1.BackColor = System.Drawing.SystemColors.Control; this.sideNav1.BackColor = System.Drawing.SystemColors.Control;
this.sideNav1.Controls.Add(this.sideNavPanel2);
this.sideNav1.Controls.Add(this.sideNavPanel5); this.sideNav1.Controls.Add(this.sideNavPanel5);
this.sideNav1.Controls.Add(this.sideNavPanel2);
this.sideNav1.Controls.Add(this.sideNavPanel4); this.sideNav1.Controls.Add(this.sideNavPanel4);
this.sideNav1.Controls.Add(this.sideNavPanel3); this.sideNav1.Controls.Add(this.sideNavPanel3);
this.sideNav1.Dock = System.Windows.Forms.DockStyle.Fill; this.sideNav1.Dock = System.Windows.Forms.DockStyle.Fill;
@@ -482,6 +487,138 @@
this.sideNav1.TabIndex = 3; this.sideNav1.TabIndex = 3;
this.sideNav1.Text = "sideNav1"; this.sideNav1.Text = "sideNav1";
// //
// sideNavPanel5
//
this.sideNavPanel5.Controls.Add(this.itemPanel1);
this.sideNavPanel5.Controls.Add(this.itemPanel2);
this.sideNavPanel5.Controls.Add(this.itemPanel3);
this.sideNavPanel5.Dock = System.Windows.Forms.DockStyle.Fill;
this.sideNavPanel5.Location = new System.Drawing.Point(117, 35);
this.sideNavPanel5.MinimumSize = new System.Drawing.Size(0, 493);
this.sideNavPanel5.Name = "sideNavPanel5";
this.sideNavPanel5.Size = new System.Drawing.Size(263, 493);
this.sideNavPanel5.TabIndex = 26;
//
// itemPanel1
//
this.itemPanel1.Controls.Add(this.btnPurgeChange);
this.itemPanel1.Controls.Add(this.dtePurge);
this.itemPanel1.Controls.Add(this.warningBox3);
this.itemPanel1.Controls.Add(this.warningBox6);
this.itemPanel1.DisabledBackColor = System.Drawing.Color.Empty;
this.itemPanel1.Location = new System.Drawing.Point(0, -2);
this.itemPanel1.Name = "itemPanel1";
this.itemPanel1.Size = new System.Drawing.Size(267, 148);
this.itemPanel1.Style.Border = DevComponents.DotNetBar.eBorderType.DoubleLine;
this.itemPanel1.Style.BorderColor.Color = System.Drawing.Color.DarkGray;
this.itemPanel1.TabIndex = 0;
//
// btnPurgeChange
//
this.btnPurgeChange.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
this.btnPurgeChange.Checked = true;
this.btnPurgeChange.ColorTable = DevComponents.DotNetBar.eButtonColor.OrangeWithBackground;
this.btnPurgeChange.Location = new System.Drawing.Point(18, 32);
this.btnPurgeChange.Name = "btnPurgeChange";
this.btnPurgeChange.Size = new System.Drawing.Size(227, 23);
this.btnPurgeChange.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.btnPurgeChange.TabIndex = 1;
this.btnPurgeChange.Text = "Purge Change History";
this.btnPurgeChange.Tooltip = resources.GetString("btnPurgeChange.Tooltip");
this.btnPurgeChange.Click += new System.EventHandler(this.btnPurgeChange_Click);
//
// dtePurge
//
this.dtePurge.Format = System.Windows.Forms.DateTimePickerFormat.Short;
this.dtePurge.Location = new System.Drawing.Point(92, 7);
this.dtePurge.Name = "dtePurge";
this.dtePurge.Size = new System.Drawing.Size(87, 20);
this.dtePurge.TabIndex = 0;
//
// warningBox3
//
this.warningBox3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(196)))), ((int)(((byte)(219)))), ((int)(((byte)(249)))));
this.warningBox3.CloseButtonVisible = false;
this.warningBox3.Image = ((System.Drawing.Image)(resources.GetObject("warningBox3.Image")));
this.warningBox3.Location = new System.Drawing.Point(1, 61);
this.warningBox3.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.warningBox3.Name = "warningBox3";
this.warningBox3.OptionsButtonVisible = false;
this.warningBox3.Size = new System.Drawing.Size(264, 32);
this.warningBox3.TabIndex = 32;
this.warningBox3.Text = "<b>NOTE</b> These tools can take a long time to run";
//
// warningBox6
//
this.warningBox6.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(196)))), ((int)(((byte)(219)))), ((int)(((byte)(249)))));
this.warningBox6.CloseButtonVisible = false;
this.warningBox6.Image = ((System.Drawing.Image)(resources.GetObject("warningBox6.Image")));
this.warningBox6.Location = new System.Drawing.Point(1, 97);
this.warningBox6.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.warningBox6.Name = "warningBox6";
this.warningBox6.OptionsButtonVisible = false;
this.warningBox6.Size = new System.Drawing.Size(264, 43);
this.warningBox6.TabIndex = 31;
this.warningBox6.Text = " Be sure there is a current backup of the \r\n database prior to running these func" +
"tions";
//
// itemPanel2
//
this.itemPanel2.Controls.Add(this.btnIndexMaint);
this.itemPanel2.DisabledBackColor = System.Drawing.Color.Empty;
this.itemPanel2.Location = new System.Drawing.Point(0, 145);
this.itemPanel2.Name = "itemPanel2";
this.itemPanel2.Size = new System.Drawing.Size(267, 73);
this.itemPanel2.Style.BackgroundImagePosition = DevComponents.DotNetBar.eBackgroundImagePosition.Tile;
this.itemPanel2.Style.Border = DevComponents.DotNetBar.eBorderType.DoubleLine;
this.itemPanel2.Style.BorderColor.Color = System.Drawing.Color.DarkGray;
this.itemPanel2.Style.ForeColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelText;
this.itemPanel2.Style.GradientAngle = 90;
this.itemPanel2.TabIndex = 8;
//
// btnIndexMaint
//
this.btnIndexMaint.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
this.btnIndexMaint.Checked = true;
this.btnIndexMaint.ColorTable = DevComponents.DotNetBar.eButtonColor.OrangeWithBackground;
this.btnIndexMaint.Location = new System.Drawing.Point(19, 24);
this.btnIndexMaint.Name = "btnIndexMaint";
this.btnIndexMaint.Size = new System.Drawing.Size(227, 23);
this.btnIndexMaint.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.btnIndexMaint.TabIndex = 4;
this.btnIndexMaint.Text = "Perform Index Maintenance";
this.btnIndexMaint.Tooltip = resources.GetString("btnIndexMaint.Tooltip");
this.btnIndexMaint.Click += new System.EventHandler(this.btnIndexMaint_Click);
//
// itemPanel3
//
this.itemPanel3.Controls.Add(this.btnROsNotUsed);
this.itemPanel3.DisabledBackColor = System.Drawing.Color.Empty;
this.itemPanel3.Location = new System.Drawing.Point(0, 218);
this.itemPanel3.Name = "itemPanel3";
this.itemPanel3.Size = new System.Drawing.Size(267, 70);
this.itemPanel3.Style.BackgroundImagePosition = DevComponents.DotNetBar.eBackgroundImagePosition.Tile;
this.itemPanel3.Style.Border = DevComponents.DotNetBar.eBorderType.DoubleLine;
this.itemPanel3.Style.BorderColor.Color = System.Drawing.Color.DarkGray;
this.itemPanel3.Style.ForeColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelText;
this.itemPanel3.Style.GradientAngle = 90;
this.itemPanel3.TabIndex = 12;
//
// btnROsNotUsed
//
this.btnROsNotUsed.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
this.btnROsNotUsed.Checked = true;
this.btnROsNotUsed.ColorTable = DevComponents.DotNetBar.eButtonColor.OrangeWithBackground;
this.btnROsNotUsed.Location = new System.Drawing.Point(19, 22);
this.btnROsNotUsed.Name = "btnROsNotUsed";
this.btnROsNotUsed.Size = new System.Drawing.Size(227, 26);
this.btnROsNotUsed.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.superTooltip1.SetSuperTooltip(this.btnROsNotUsed, new DevComponents.DotNetBar.SuperTooltipInfo("ROs Not Used Snapshot", "", "This will Generate an image detailing ROs that exist but are not currently utiliz" +
"ed in any steps in PROMS.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray));
this.btnROsNotUsed.TabIndex = 2;
this.btnROsNotUsed.Text = "Generate Snapshot of ROs Not Used";
this.btnROsNotUsed.Click += new System.EventHandler(this.btnROsNotUsed_Click);
//
// sideNavPanel2 // sideNavPanel2
// //
this.sideNavPanel2.Controls.Add(this.swRefreshTblsForSrch); this.sideNavPanel2.Controls.Add(this.swRefreshTblsForSrch);
@@ -504,6 +641,7 @@
this.sideNavPanel2.Name = "sideNavPanel2"; this.sideNavPanel2.Name = "sideNavPanel2";
this.sideNavPanel2.Size = new System.Drawing.Size(268, 493); this.sideNavPanel2.Size = new System.Drawing.Size(268, 493);
this.sideNavPanel2.TabIndex = 6; this.sideNavPanel2.TabIndex = 6;
this.sideNavPanel2.Visible = false;
// //
// swRefreshTblsForSrch // swRefreshTblsForSrch
// //
@@ -543,7 +681,7 @@
this.warningBox4.CloseButtonVisible = false; this.warningBox4.CloseButtonVisible = false;
this.warningBox4.Image = ((System.Drawing.Image)(resources.GetObject("warningBox4.Image"))); this.warningBox4.Image = ((System.Drawing.Image)(resources.GetObject("warningBox4.Image")));
this.warningBox4.Location = new System.Drawing.Point(12, 264); this.warningBox4.Location = new System.Drawing.Point(12, 264);
this.warningBox4.Margin = new System.Windows.Forms.Padding(4); this.warningBox4.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.warningBox4.Name = "warningBox4"; this.warningBox4.Name = "warningBox4";
this.warningBox4.OptionsButtonVisible = false; this.warningBox4.OptionsButtonVisible = false;
this.warningBox4.Size = new System.Drawing.Size(264, 32); this.warningBox4.Size = new System.Drawing.Size(264, 32);
@@ -556,7 +694,7 @@
this.warningBox2.CloseButtonVisible = false; this.warningBox2.CloseButtonVisible = false;
this.warningBox2.Image = ((System.Drawing.Image)(resources.GetObject("warningBox2.Image"))); this.warningBox2.Image = ((System.Drawing.Image)(resources.GetObject("warningBox2.Image")));
this.warningBox2.Location = new System.Drawing.Point(12, 302); this.warningBox2.Location = new System.Drawing.Point(12, 302);
this.warningBox2.Margin = new System.Windows.Forms.Padding(4); this.warningBox2.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.warningBox2.Name = "warningBox2"; this.warningBox2.Name = "warningBox2";
this.warningBox2.OptionsButtonVisible = false; this.warningBox2.OptionsButtonVisible = false;
this.warningBox2.Size = new System.Drawing.Size(264, 43); this.warningBox2.Size = new System.Drawing.Size(264, 43);
@@ -834,95 +972,6 @@
this.btnDeleteItems.TabIndex = 35; this.btnDeleteItems.TabIndex = 35;
this.btnDeleteItems.Text = "Process Deletions"; this.btnDeleteItems.Text = "Process Deletions";
this.btnDeleteItems.Click += new System.EventHandler(this.btnDeleteItems_Click); this.btnDeleteItems.Click += new System.EventHandler(this.btnDeleteItems_Click);
//
// sideNavPanel5
//
this.sideNavPanel5.Controls.Add(this.btnIndexMaint);
this.sideNavPanel5.Controls.Add(this.itemPanel1);
this.sideNavPanel5.Dock = System.Windows.Forms.DockStyle.Fill;
this.sideNavPanel5.Location = new System.Drawing.Point(112, 31);
this.sideNavPanel5.MinimumSize = new System.Drawing.Size(0, 493);
this.sideNavPanel5.Name = "sideNavPanel5";
this.sideNavPanel5.Size = new System.Drawing.Size(268, 493);
this.sideNavPanel5.TabIndex = 26;
this.sideNavPanel5.Visible = false;
//
// btnIndexMaint
//
this.btnIndexMaint.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
this.btnIndexMaint.Checked = true;
this.btnIndexMaint.ColorTable = DevComponents.DotNetBar.eButtonColor.OrangeWithBackground;
this.btnIndexMaint.Location = new System.Drawing.Point(20, 152);
this.btnIndexMaint.Name = "btnIndexMaint";
this.btnIndexMaint.Size = new System.Drawing.Size(227, 23);
this.btnIndexMaint.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.btnIndexMaint.TabIndex = 4;
this.btnIndexMaint.Text = "Perform Index Maintenance";
this.btnIndexMaint.Tooltip = resources.GetString("btnIndexMaint.Tooltip");
this.btnIndexMaint.Click += new System.EventHandler(this.btnIndexMaint_Click);
//
// itemPanel1
//
this.itemPanel1.Controls.Add(this.btnPurgeChange);
this.itemPanel1.Controls.Add(this.dtePurge);
this.itemPanel1.Controls.Add(this.warningBox3);
this.itemPanel1.Controls.Add(this.warningBox6);
this.itemPanel1.DisabledBackColor = System.Drawing.Color.Empty;
this.itemPanel1.Location = new System.Drawing.Point(0, -2);
this.itemPanel1.Name = "itemPanel1";
this.itemPanel1.Size = new System.Drawing.Size(267, 148);
this.itemPanel1.Style.Border = DevComponents.DotNetBar.eBorderType.DoubleLine;
this.itemPanel1.Style.BorderColor.Color = System.Drawing.Color.DarkGray;
this.itemPanel1.TabIndex = 0;
//
// btnPurgeChange
//
this.btnPurgeChange.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
this.btnPurgeChange.Checked = true;
this.btnPurgeChange.ColorTable = DevComponents.DotNetBar.eButtonColor.OrangeWithBackground;
this.btnPurgeChange.Location = new System.Drawing.Point(18, 32);
this.btnPurgeChange.Name = "btnPurgeChange";
this.btnPurgeChange.Size = new System.Drawing.Size(227, 23);
this.btnPurgeChange.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.btnPurgeChange.TabIndex = 1;
this.btnPurgeChange.Text = "Purge Change History";
this.btnPurgeChange.Tooltip = resources.GetString("btnPurgeChange.Tooltip");
this.btnPurgeChange.Click += new System.EventHandler(this.btnPurgeChange_Click);
//
// dtePurge
//
this.dtePurge.Format = System.Windows.Forms.DateTimePickerFormat.Short;
this.dtePurge.Location = new System.Drawing.Point(92, 7);
this.dtePurge.Name = "dtePurge";
this.dtePurge.Size = new System.Drawing.Size(87, 20);
this.dtePurge.TabIndex = 0;
//
// warningBox3
//
this.warningBox3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(196)))), ((int)(((byte)(219)))), ((int)(((byte)(249)))));
this.warningBox3.CloseButtonVisible = false;
this.warningBox3.Image = ((System.Drawing.Image)(resources.GetObject("warningBox3.Image")));
this.warningBox3.Location = new System.Drawing.Point(1, 61);
this.warningBox3.Margin = new System.Windows.Forms.Padding(4);
this.warningBox3.Name = "warningBox3";
this.warningBox3.OptionsButtonVisible = false;
this.warningBox3.Size = new System.Drawing.Size(264, 32);
this.warningBox3.TabIndex = 32;
this.warningBox3.Text = "<b>NOTE</b> These tools can take a long time to run";
//
// warningBox6
//
this.warningBox6.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(196)))), ((int)(((byte)(219)))), ((int)(((byte)(249)))));
this.warningBox6.CloseButtonVisible = false;
this.warningBox6.Image = ((System.Drawing.Image)(resources.GetObject("warningBox6.Image")));
this.warningBox6.Location = new System.Drawing.Point(1, 97);
this.warningBox6.Margin = new System.Windows.Forms.Padding(4);
this.warningBox6.Name = "warningBox6";
this.warningBox6.OptionsButtonVisible = false;
this.warningBox6.Size = new System.Drawing.Size(264, 43);
this.warningBox6.TabIndex = 31;
this.warningBox6.Text = " Be sure there is a current backup of the \r\n database prior to running these func" +
"tions";
// //
// sideNavPanel3 // sideNavPanel3
// //
@@ -981,7 +1030,7 @@
this.warningBox5.CloseButtonVisible = false; this.warningBox5.CloseButtonVisible = false;
this.warningBox5.Image = ((System.Drawing.Image)(resources.GetObject("warningBox5.Image"))); this.warningBox5.Image = ((System.Drawing.Image)(resources.GetObject("warningBox5.Image")));
this.warningBox5.Location = new System.Drawing.Point(17, 145); this.warningBox5.Location = new System.Drawing.Point(17, 145);
this.warningBox5.Margin = new System.Windows.Forms.Padding(4); this.warningBox5.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.warningBox5.Name = "warningBox5"; this.warningBox5.Name = "warningBox5";
this.warningBox5.OptionsButtonVisible = false; this.warningBox5.OptionsButtonVisible = false;
this.warningBox5.Size = new System.Drawing.Size(262, 32); this.warningBox5.Size = new System.Drawing.Size(262, 32);
@@ -1065,7 +1114,7 @@
this.warningBox1.CloseButtonVisible = false; this.warningBox1.CloseButtonVisible = false;
this.warningBox1.Image = ((System.Drawing.Image)(resources.GetObject("warningBox1.Image"))); this.warningBox1.Image = ((System.Drawing.Image)(resources.GetObject("warningBox1.Image")));
this.warningBox1.Location = new System.Drawing.Point(17, 181); this.warningBox1.Location = new System.Drawing.Point(17, 181);
this.warningBox1.Margin = new System.Windows.Forms.Padding(4); this.warningBox1.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.warningBox1.Name = "warningBox1"; this.warningBox1.Name = "warningBox1";
this.warningBox1.OptionsButtonVisible = false; this.warningBox1.OptionsButtonVisible = false;
this.warningBox1.Size = new System.Drawing.Size(262, 43); this.warningBox1.Size = new System.Drawing.Size(262, 43);
@@ -1108,7 +1157,6 @@
// //
// sideNavItmRepair // sideNavItmRepair
// //
this.sideNavItmRepair.Checked = true;
this.sideNavItmRepair.Name = "sideNavItmRepair"; this.sideNavItmRepair.Name = "sideNavItmRepair";
this.sideNavItmRepair.Panel = this.sideNavPanel2; this.sideNavItmRepair.Panel = this.sideNavPanel2;
this.sideNavItmRepair.Symbol = ""; this.sideNavItmRepair.Symbol = "";
@@ -1125,6 +1173,7 @@
// //
// sideNavItmMaint // sideNavItmMaint
// //
this.sideNavItmMaint.Checked = true;
this.sideNavItmMaint.Name = "sideNavItmMaint"; this.sideNavItmMaint.Name = "sideNavItmMaint";
this.sideNavItmMaint.Panel = this.sideNavPanel5; this.sideNavItmMaint.Panel = this.sideNavPanel5;
this.sideNavItmMaint.Symbol = "58154"; this.sideNavItmMaint.Symbol = "58154";
@@ -1271,10 +1320,12 @@
this.panelEx1.ResumeLayout(false); this.panelEx1.ResumeLayout(false);
this.sideNav1.ResumeLayout(false); this.sideNav1.ResumeLayout(false);
this.sideNav1.PerformLayout(); this.sideNav1.PerformLayout();
this.sideNavPanel2.ResumeLayout(false);
this.sideNavPanel4.ResumeLayout(false);
this.sideNavPanel5.ResumeLayout(false); this.sideNavPanel5.ResumeLayout(false);
this.itemPanel1.ResumeLayout(false); this.itemPanel1.ResumeLayout(false);
this.itemPanel2.ResumeLayout(false);
this.itemPanel3.ResumeLayout(false);
this.sideNavPanel2.ResumeLayout(false);
this.sideNavPanel4.ResumeLayout(false);
this.sideNavPanel3.ResumeLayout(false); this.sideNavPanel3.ResumeLayout(false);
this.panelEx4.ResumeLayout(false); this.panelEx4.ResumeLayout(false);
this.ResumeLayout(false); this.ResumeLayout(false);
@@ -1363,6 +1414,9 @@
private DevComponents.DotNetBar.Controls.WarningBox warningBox3; private DevComponents.DotNetBar.Controls.WarningBox warningBox3;
private DevComponents.DotNetBar.Controls.WarningBox warningBox6; private DevComponents.DotNetBar.Controls.WarningBox warningBox6;
private DevComponents.DotNetBar.ButtonX btnIndexMaint; private DevComponents.DotNetBar.ButtonX btnIndexMaint;
private DevComponents.DotNetBar.PanelEx itemPanel2;
private DevComponents.DotNetBar.PanelEx itemPanel3;
private DevComponents.DotNetBar.ButtonX btnROsNotUsed;
} }
} }

View File

@@ -1778,7 +1778,44 @@ namespace VEPROMS
return true; return true;
} }
} //CSM - C2025-043 report RO's that are not used in any of the PROMS data.
private void btnROsNotUsed_Click(object sender, EventArgs e)
{
//Get the path to save the Image to
SaveFileDialog sfd = new SaveFileDialog();
sfd.DefaultExt = "bmp";
sfd.AddExtension = true;
sfd.Filter = "Image Files (*.bmp)|*.bmp";
sfd.FileName = string.Format("ROsNotUsed_{0}", DateTime.Now.ToString("yyyyMMdd_HHmm"));
sfd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\VEPROMS";
DialogResult dr = sfd.ShowDialog();
if (dr == DialogResult.OK)
{
//Initial messaging
string statmsg = "Generating Snapshot (this may take a few minutes to complete)...";
InitialProgressBarMessage = statmsg;
txtResults.AppendText(statmsg);
txtResults.AppendText(Environment.NewLine);
//Generate the data for ROs Not Used and save it to a TreeView
TreeView tv = TreeViewExtensions.GetROTree(GeneralReports.GetROsNotUsedInPROMS(), true);
//Output the TreeView as an Image
if (tv.Nodes.Count != 0)
tv.SaveTreeViewAsImage(sfd.FileName);
//Give Messaging demonstrating finished and open file if requested
statmsg = "Finished Generating Snapshot of ROs Not Used.";
FinalProgressBarMessage = statmsg;
txtResults.AppendText(statmsg);
txtResults.AppendText(Environment.NewLine);
if (tv.Nodes.Count != 0 && MessageBox.Show($"{statmsg}\r\n\r\nDo you wish to open the snapshot now?", "ROs Not Used", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) == DialogResult.Yes)
System.Diagnostics.Process.Start(sfd.FileName);
else if (tv.Nodes.Count == 0)
MessageBox.Show("All ROs are currently in use.", "ROs Not Used", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
}
} }

View File

@@ -117,6 +117,57 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<data name="btnIndexMaint.Tooltip" xml:space="preserve">
<value>This will perform Index Maintenance to realign indexes to optimize performance.
This function will cause no change to data or records in PROMS.
It should however be performed when other users are not in PROMS, as it could
cause slowdown or errors for other users while it is running.</value>
</data>
<metadata name="superTooltip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<data name="btnPurgeChange.Tooltip" xml:space="preserve">
<value>Purges all audit information and change history older than the above date.
It is recommended that you perform a database backup before performing this action.
Note after purging the information, this will automatically perform the Index
Maintenance function to realign indexes with the cut down audit data.
Only Full PROMS Administrator Users can perform this action.</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="warningBox3.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAp5JREFUOE+F
k11Ik1Ecxv9zouJ2E4TWnR8V5tAppJmYsLnNlaLTxAoiKIQiibpYSmEEmSSa0IVGISMUw7rpE+yiQiuk
/IhROssPyjanpL4udeq29z3nCdcH+Wb1g+fq/zzP+R8Oh+gvPK4kNWujp1IrPek8S5Hy+X9hbXSN9aVC
eq1FwEYN8vk/mWqiDPZwI+NOHbhLj8CdDaK7npLlvnWpO0AKqZV62YgO/GMquDMN0rAevkbqlHvXZdlG
h6Rn8eATu4GJncB0Fvh8HnwPYuGpJ4vcvwZbGYWJrcpPzGXG8ngGtsZFQJOggrS0B9J0MbwNIR9uHqRQ
ee4XPhuVSy814IIB/lk9QkIIanUomFgIzkux0qHB/CUqk+eCtB2jCLEl1M1mLcBSLthKHlQqJaKjw8FZ
Mbi/ENKXEizUKD/f2k9h8jz5mumk2K0F9xUAUgE4K0JUVDji4yLBvflgMyYwlxFL9zSYq6ITa8I3DlNY
wKZ0soVSgFkAXgwuFSEmJhJJiWqwCR3YSCbY2x0QB4zwnFc6W4p+22KxiY4EXiQF74kf6/L5vdi+TYV0
rRpsMB2sPxWsRwvpTTq87QmYOUNHg+HqQlL4ryscbK4UPGD5vu60CWw8G7evbkN7bSykXm0w/FMBew6E
CsXQFQMpaLKezP6OLeDL+8AFM5hLBzaciennKcFXUCgI7o7ENQWSfRcWmmPgPEW5tNJIj8QxM9hkDthY
FthAGlh/SvAPXC7fjOrjmyC+Sl5TsCpfdzYEK92llUbllDiaD3HEDPG9CaLDCGnI9IdEhwnioBHiOwMC
dj38fYbVglHy1FGJt57uL9ZS10IN9cxfJPvXCzTgqSKH5xwNzVXSkFBBDsFKA4KV7IKVegQrda2e7j5N
ud8AKwnMnBpmYFAAAAAASUVORK5CYII=
</value>
</data>
<data name="warningBox6.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAp5JREFUOE+F
k11Ik1Ecxv9zouJ2E4TWnR8V5tAppJmYsLnNlaLTxAoiKIQiibpYSmEEmSSa0IVGISMUw7rpE+yiQiuk
/IhROssPyjanpL4udeq29z3nCdcH+Wb1g+fq/zzP+R8Oh+gvPK4kNWujp1IrPek8S5Hy+X9hbXSN9aVC
eq1FwEYN8vk/mWqiDPZwI+NOHbhLj8CdDaK7npLlvnWpO0AKqZV62YgO/GMquDMN0rAevkbqlHvXZdlG
h6Rn8eATu4GJncB0Fvh8HnwPYuGpJ4vcvwZbGYWJrcpPzGXG8ngGtsZFQJOggrS0B9J0MbwNIR9uHqRQ
ee4XPhuVSy814IIB/lk9QkIIanUomFgIzkux0qHB/CUqk+eCtB2jCLEl1M1mLcBSLthKHlQqJaKjw8FZ
Mbi/ENKXEizUKD/f2k9h8jz5mumk2K0F9xUAUgE4K0JUVDji4yLBvflgMyYwlxFL9zSYq6ITa8I3DlNY
wKZ0soVSgFkAXgwuFSEmJhJJiWqwCR3YSCbY2x0QB4zwnFc6W4p+22KxiY4EXiQF74kf6/L5vdi+TYV0
rRpsMB2sPxWsRwvpTTq87QmYOUNHg+HqQlL4ryscbK4UPGD5vu60CWw8G7evbkN7bSykXm0w/FMBew6E
CsXQFQMpaLKezP6OLeDL+8AFM5hLBzaciennKcFXUCgI7o7ENQWSfRcWmmPgPEW5tNJIj8QxM9hkDthY
FthAGlh/SvAPXC7fjOrjmyC+Sl5TsCpfdzYEK92llUbllDiaD3HEDPG9CaLDCGnI9IdEhwnioBHiOwMC
dj38fYbVglHy1FGJt57uL9ZS10IN9cxfJPvXCzTgqSKH5xwNzVXSkFBBDsFKA4KV7IKVegQrda2e7j5N
ud8AKwnMnBpmYFAAAAAASUVORK5CYII=
</value>
</data>
<metadata name="superTooltip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="superTooltip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value> <value>17, 17</value>
</metadata> </metadata>
@@ -132,7 +183,6 @@ This function will remove all of the saved attachment PDFS stored in the databas
This function will remove all of the saved attachment PDFS stored in the database (not the PDFs of the entire procedure that you had previous printed). This will force PROMS to regenerate (and save) the word attachment PDFs the next time the procedure is printed. This function will remove all of the saved attachment PDFS stored in the database (not the PDFs of the entire procedure that you had previous printed). This will force PROMS to regenerate (and save) the word attachment PDFs the next time the procedure is printed.
</value> </value>
</data> </data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="warningBox4.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="warningBox4.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAp5JREFUOE+F iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAp5JREFUOE+F
@@ -216,12 +266,6 @@ Should an item become orphaned (disconnected) from the rest of the data, it will
Should an item become orphaned (disconnected) from the rest of the data, it will no longer be accessible. This tool removes any orphaned items from the database. Should an item become orphaned (disconnected) from the rest of the data, it will no longer be accessible. This tool removes any orphaned items from the database.
</value> </value>
</data>
<data name="btnIndexMaint.Tooltip" xml:space="preserve">
<value>This will perform Index Maintenance to realign indexes to optimize performance.
This function will cause no change to data or records in PROMS.
It should however be performed when other users are not in PROMS, as it could
cause slowdown or errors for other users while it is running.</value>
</data> </data>
<data name="swDeleteFolder.SuperTooltip" xml:space="preserve"> <data name="swDeleteFolder.SuperTooltip" xml:space="preserve">
<value>This allows the user to remove folders and sub folders as well as their contents. <value>This allows the user to remove folders and sub folders as well as their contents.
@@ -261,47 +305,6 @@ If more than one working draft is selected, it is recommended that this be perfo
Click on the on/off switches to turn on/off each tool. Click on the on/off switches to turn on/off each tool.
Note that only one of these tools can be run at a time.</value> Note that only one of these tools can be run at a time.</value>
</data>
<data name="btnPurgeChange.Tooltip" xml:space="preserve">
<value>Purges all audit information and change history older than the above date.
It is recommended that you perform a database backup before performing this action.
Note after purging the information, this will automatically perform the Index
Maintenance function to realign indexes with the cut down audit data.
Only Full PROMS Administrator Users can perform this action.</value>
</data>
<data name="warningBox3.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAp5JREFUOE+F
k11Ik1Ecxv9zouJ2E4TWnR8V5tAppJmYsLnNlaLTxAoiKIQiibpYSmEEmSSa0IVGISMUw7rpE+yiQiuk
/IhROssPyjanpL4udeq29z3nCdcH+Wb1g+fq/zzP+R8Oh+gvPK4kNWujp1IrPek8S5Hy+X9hbXSN9aVC
eq1FwEYN8vk/mWqiDPZwI+NOHbhLj8CdDaK7npLlvnWpO0AKqZV62YgO/GMquDMN0rAevkbqlHvXZdlG
h6Rn8eATu4GJncB0Fvh8HnwPYuGpJ4vcvwZbGYWJrcpPzGXG8ngGtsZFQJOggrS0B9J0MbwNIR9uHqRQ
ee4XPhuVSy814IIB/lk9QkIIanUomFgIzkux0qHB/CUqk+eCtB2jCLEl1M1mLcBSLthKHlQqJaKjw8FZ
Mbi/ENKXEizUKD/f2k9h8jz5mumk2K0F9xUAUgE4K0JUVDji4yLBvflgMyYwlxFL9zSYq6ITa8I3DlNY
wKZ0soVSgFkAXgwuFSEmJhJJiWqwCR3YSCbY2x0QB4zwnFc6W4p+22KxiY4EXiQF74kf6/L5vdi+TYV0
rRpsMB2sPxWsRwvpTTq87QmYOUNHg+HqQlL4ryscbK4UPGD5vu60CWw8G7evbkN7bSykXm0w/FMBew6E
CsXQFQMpaLKezP6OLeDL+8AFM5hLBzaciennKcFXUCgI7o7ENQWSfRcWmmPgPEW5tNJIj8QxM9hkDthY
FthAGlh/SvAPXC7fjOrjmyC+Sl5TsCpfdzYEK92llUbllDiaD3HEDPG9CaLDCGnI9IdEhwnioBHiOwMC
dj38fYbVglHy1FGJt57uL9ZS10IN9cxfJPvXCzTgqSKH5xwNzVXSkFBBDsFKA4KV7IKVegQrda2e7j5N
ud8AKwnMnBpmYFAAAAAASUVORK5CYII=
</value>
</data>
<data name="warningBox6.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAp5JREFUOE+F
k11Ik1Ecxv9zouJ2E4TWnR8V5tAppJmYsLnNlaLTxAoiKIQiibpYSmEEmSSa0IVGISMUw7rpE+yiQiuk
/IhROssPyjanpL4udeq29z3nCdcH+Wb1g+fq/zzP+R8Oh+gvPK4kNWujp1IrPek8S5Hy+X9hbXSN9aVC
eq1FwEYN8vk/mWqiDPZwI+NOHbhLj8CdDaK7npLlvnWpO0AKqZV62YgO/GMquDMN0rAevkbqlHvXZdlG
h6Rn8eATu4GJncB0Fvh8HnwPYuGpJ4vcvwZbGYWJrcpPzGXG8ngGtsZFQJOggrS0B9J0MbwNIR9uHqRQ
ee4XPhuVSy814IIB/lk9QkIIanUomFgIzkux0qHB/CUqk+eCtB2jCLEl1M1mLcBSLthKHlQqJaKjw8FZ
Mbi/ENKXEizUKD/f2k9h8jz5mumk2K0F9xUAUgE4K0JUVDji4yLBvflgMyYwlxFL9zSYq6ITa8I3DlNY
wKZ0soVSgFkAXgwuFSEmJhJJiWqwCR3YSCbY2x0QB4zwnFc6W4p+22KxiY4EXiQF74kf6/L5vdi+TYV0
rRpsMB2sPxWsRwvpTTq87QmYOUNHg+HqQlL4ryscbK4UPGD5vu60CWw8G7evbkN7bSykXm0w/FMBew6E
CsXQFQMpaLKezP6OLeDL+8AFM5hLBzaciennKcFXUCgI7o7ENQWSfRcWmmPgPEW5tNJIj8QxM9hkDthY
FthAGlh/SvAPXC7fjOrjmyC+Sl5TsCpfdzYEK92llUbllDiaD3HEDPG9CaLDCGnI9IdEhwnioBHiOwMC
dj38fYbVglHy1FGJt57uL9ZS10IN9cxfJPvXCzTgqSKH5xwNzVXSkFBBDsFKA4KV7IKVegQrda2e7j5N
ud8AKwnMnBpmYFAAAAAASUVORK5CYII=
</value>
</data> </data>
<data name="swCheckROLinks.SuperTooltip" xml:space="preserve"> <data name="swCheckROLinks.SuperTooltip" xml:space="preserve">
<value>This allows the user to check referenced objects links in procedure step data for multiple working drafts in a batch mode. <value>This allows the user to check referenced objects links in procedure step data for multiple working drafts in a batch mode.
@@ -389,6 +392,6 @@ If more than one procedure is selected, it is recommended that this be performed
</value> </value>
</data> </data>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>137</value> <value>25</value>
</metadata> </metadata>
</root> </root>

View File

@@ -2098,6 +2098,15 @@ namespace VEPROMS.CSLA.Library
{ {
string resstr = rtnstr.Substring(0, indx); string resstr = rtnstr.Substring(0, indx);
int endHsp = rtnstr.IndexOf(")", indx); int endHsp = rtnstr.IndexOf(")", indx);
//B2026 - 002 handle if parens inside a HSP
int startpos = indx + 5;
while (rtnstr.Substring(startpos, endHsp - startpos).Contains("("))
{
startpos = rtnstr.IndexOf("(", startpos + 1, endHsp - startpos) + 1;
endHsp = rtnstr.IndexOf(")", endHsp + 1);
}
string tmpstr = rtnstr.Substring(indx + 5, endHsp - indx - 5); string tmpstr = rtnstr.Substring(indx + 5, endHsp - indx - 5);
// B2017-012 Don't convert space to hard spaces for XY Plots. // B2017-012 Don't convert space to hard spaces for XY Plots.

View File

@@ -4351,6 +4351,16 @@ public LeftJustifyList(XmlNodeList xmlNodeList) : base(xmlNodeList) { }
return LazyLoad(ref _IncludeSectionLabel, "@IncludeSectionLabel"); return LazyLoad(ref _IncludeSectionLabel, "@IncludeSectionLabel");
} }
} }
//F2026-001 default (in base format) is False. Put in for Vogtle Units 3 & 4.
// this will add the parent sub-step tab if the parent is not identified as a continueous action step
private LazyLoad<bool> _AddParentTabToSubStepTab;
public bool AddParentTabToSubStepTab
{
get
{
return LazyLoad(ref _AddParentTabToSubStepTab, "@AddParentTabToSubStepTab");
}
}
// the font and font styles to use for the continuous action summary // the font and font styles to use for the continuous action summary
private VE_Font _Font; private VE_Font _Font;
public VE_Font Font public VE_Font Font

View File

@@ -0,0 +1,42 @@
using System;
using Csla.Data;
using System.Data;
using System.Data.SqlClient;
//CSM - C2025-043 - Minimal Class for General Reports
namespace VEPROMS.CSLA.Library
{
public static class GeneralReports
{
#region Get General Reports
//CSM - C2025-043 report RO's that are not used in any of the PROMS data.
public static DataTable GetROsNotUsedInPROMS()
{
try
{
using (SqlConnection cn = Database.VEPROMS_SqlConnection)
{
using (SqlCommand cm = cn.CreateCommand())
{
cm.CommandType = CommandType.StoredProcedure;
cm.CommandText = "vesp_GetROsNotUsed";
cm.CommandTimeout = 0;
using (SqlDataAdapter da = new SqlDataAdapter(cm))
{
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
}
}
}
}
catch (Exception ex)
{
throw new DbCslaException("Error in GetROsNotUsedInPROMS Report: retrieving data failed", ex);
}
}
#endregion
}
}

View File

@@ -390,6 +390,7 @@
<Compile Include="Generated\ZTransitionInfo.cs" /> <Compile Include="Generated\ZTransitionInfo.cs" />
<Compile Include="Minimal\AnnotationstypeSections.cs" /> <Compile Include="Minimal\AnnotationstypeSections.cs" />
<Compile Include="Minimal\Maintenance.cs" /> <Compile Include="Minimal\Maintenance.cs" />
<Compile Include="Minimal\GeneralReports.cs" />
<Compile Include="Minimal\UserReports.cs" /> <Compile Include="Minimal\UserReports.cs" />
<Compile Include="Minimal\UserSettings.cs" /> <Compile Include="Minimal\UserSettings.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />

View File

@@ -0,0 +1,115 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Drawing;
using System.Windows.Forms;
using System.Data;
namespace Volian.Controls.Library
{
//CSM - C2025-043 report RO's that are not used in any of the PROMS data.
// extend the TreeView class with a couple added functions
// to allow support for what is needed for ROs
public static class TreeViewExtensions
{
#region public functions
//Returns a ROTreeView based on the data in the datatable dt
// builds tree based on the following:
// ParentID = 0 is top level
// links (defined parent) based on same dbID and ID = ParentID
// nodes will have the text of the title
public static TreeView GetROTree(DataTable dt, bool isExpanded = false)
{
TreeView tv = new TreeView();
var tempnodes = GetTreeNodes(
dt.AsEnumerable(),
(r) => r.Field<int?>("ParentID") == 0, //top level of tree
(r, s) => s.Where(x => r["ID"].Equals(x["ParentID"]) && r["dbID"].Equals(x["dbID"])), //how to match parents and children
(r) => new TreeNode { Text = r.Field<string>("title") } //what to display in the tree
);
tv.Nodes.AddRange(tempnodes.ToArray());
//if set to expand, sets the height to the combined height of all nodes + 20
//so will show whole tree
if (isExpanded)
{
tv.ExpandAll();
tv.SetTreeViewHeighttoFull();
tv.Width = 1200;
}
//sorts the tree in alphabetical order to match the way the tree is sorted in the RO Editor
tv.Sorted = true;
return tv;
}
//Saves the Tree to an Image at the specified path
public static void SaveTreeViewAsImage(this TreeView tv, string filePath)
{
// Create a Bitmap with the size of the TreeView
Bitmap bitmap = new Bitmap(tv.Width, tv.Height);
// Draw the TreeView onto the Bitmap
tv.DrawToBitmap(bitmap, new Rectangle(0, 0, bitmap.Width, bitmap.Height));
// Save the Bitmap as an image file
bitmap.Save(filePath, System.Drawing.Imaging.ImageFormat.Png);
}
#endregion
#region height functions
//This is a function to calculate and set the TreeView Height based
//on the height of all sub nodes + 20
public static void SetTreeViewHeighttoFull(this TreeView tv)
{
int totalHeight = 0;
foreach (TreeNode node in tv.Nodes)
{
totalHeight += GetNodeHeight(node);
}
tv.Height = totalHeight + 20;
}
//This function recursively adds the height of sub nodes to the running total
private static int GetNodeHeight(TreeNode node)
{
int curheight = node.Bounds.Height;
foreach (TreeNode child in node.Nodes)
{
curheight += GetNodeHeight(child);
}
return curheight;
}
#endregion
#region generic private tree structure functions
//This is a Generic Function to help build the Tree Structure
private static IEnumerable<TreeNode> GetTreeNodes<T>(
IEnumerable<T> source,
Func<T, Boolean> isRoot,
Func<T, IEnumerable<T>, IEnumerable<T>> getChilds,
Func<T, TreeNode> getItem)
{
IEnumerable<T> roots = source.Where(x => isRoot(x));
foreach (T root in roots)
yield return ConvertEntityToTreeNode(root, source, getChilds, getItem); ;
}
//This is a Generic Function to help build the Tree Structure
private static TreeNode ConvertEntityToTreeNode<T>(
T entity,
IEnumerable<T> source,
Func<T, IEnumerable<T>, IEnumerable<T>> getChilds,
Func<T, TreeNode> getItem)
{
TreeNode node = getItem(entity);
var childs = getChilds(entity, source);
foreach (T child in childs)
node.Nodes.Add(ConvertEntityToTreeNode(child, source, getChilds, getItem));
return node;
}
#endregion
}
}

View File

@@ -118,6 +118,7 @@
<HintPath>..\..\..\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.Core.dll</HintPath> <HintPath>..\..\..\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.Core.dll</HintPath>
</Reference> </Reference>
<Reference Include="System.Data" /> <Reference Include="System.Data" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Design" /> <Reference Include="System.Design" />
<Reference Include="System.Drawing" /> <Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" /> <Reference Include="System.Windows.Forms" />
@@ -295,6 +296,7 @@
<DesignTimeSharedInput>True</DesignTimeSharedInput> <DesignTimeSharedInput>True</DesignTimeSharedInput>
<DependentUpon>Settings.settings</DependentUpon> <DependentUpon>Settings.settings</DependentUpon>
</Compile> </Compile>
<Compile Include="TreeViewExtensions.cs" />
<Compile Include="RTBItem.cs"> <Compile Include="RTBItem.cs">
<SubType>UserControl</SubType> <SubType>UserControl</SubType>
</Compile> </Compile>

View File

@@ -47,6 +47,7 @@ namespace Volian.Print.Library
AddHeader(doingTimeCriticalSummary); // F2022-024 pass flag when creating a Time Critical Action Summary report AddHeader(doingTimeCriticalSummary); // F2022-024 pass flag when creating a Time Critical Action Summary report
foreach (pkParagraph myContAct in myContActSteps) foreach (pkParagraph myContAct in myContActSteps)
{ {
bool addParentTab = myContAct.MyParagraph.MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.AccSectionData.ContinuousActionSummaryData.AddParentTabToSubStepTab; // F2026-001 prefix Continuous Action sub-step with parent tab
if (myContAct.MyChildren.Count > 0) if (myContAct.MyChildren.Count > 0)
if (myContAct.MyParagraph.MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.AccSectionData.ContinuousActionSummaryData.IncludeSectionNumAndTitle) // only print the section title if it has Continuous Action Steps if (myContAct.MyParagraph.MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.AccSectionData.ContinuousActionSummaryData.IncludeSectionNumAndTitle) // only print the section title if it has Continuous Action Steps
AddSectionHeader(myContAct.MyParagraph.MyItemInfo.DisplayNumber, myContAct.MyParagraph.MyItemInfo.FormattedDisplayText, myContAct.MyParagraph.MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.AccSectionData.ContinuousActionSummaryData.IncludeSectionLabel); AddSectionHeader(myContAct.MyParagraph.MyItemInfo.DisplayNumber, myContAct.MyParagraph.MyItemInfo.FormattedDisplayText, myContAct.MyParagraph.MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.AccSectionData.ContinuousActionSummaryData.IncludeSectionLabel);
@@ -79,8 +80,27 @@ namespace Volian.Print.Library
} }
else if (!pgh.MyParagraph.MyItemInfo.IsHigh) // if the high level step was not included, adjust the tab for a sub-step/RNO else if (!pgh.MyParagraph.MyItemInfo.IsHigh) // if the high level step was not included, adjust the tab for a sub-step/RNO
{ {
string tabPre = (_FirstLine) ? hlsii.MyTab.Text.Trim() + " " : ""; string tabPre = "";
if (!_FirstLine) StringBuilder sbTabPre = new StringBuilder();
ItemInfo prevItemInfo = pgh.MyParagraph.MyItemInfo.MyParent;
// F2026-001 The while loop below will build a sub-step prefix of the continuous action sub-step
// if the format flag (AddParentTabToSubStepTab) is set - the base format has this set to false
// it will not add the parent tab
// - if the parent is a continuous action step or sub-step as that information would be redundant
// - if the current is a RNO step type and the Parent is NOT a RNO step type
if (prevItemInfo.IncludeOnContActSum || !addParentTab) prevItemInfo = null;
while (prevItemInfo != null && !prevItemInfo.IsHigh && !prevItemInfo.IncludeOnContActSum)
{
sbTabPre.Insert(0, prevItemInfo.MyTab.CleanText.Trim());
if ((prevItemInfo.IsInRNO && !prevItemInfo.MyParent.IsInRNO) || prevItemInfo.MyParent.IncludeOnContActSum)
prevItemInfo = null;
else
prevItemInfo = prevItemInfo.MyParent;
}
if (_FirstLine) // the first of a CAS on the report include the High Level Step tab
sbTabPre.Insert(0, (hlsii != null) ? hlsii.MyTab.Text.Trim() + " " : "");
tabPre = sbTabPre.ToString();
if (!_FirstLine) // if not the first line we indent the size of high level step tab
preTabLen = GetTextWidth(hlsii.MyTab.Text.Trim() + " ") / 72f; preTabLen = GetTextWidth(hlsii.MyTab.Text.Trim() + " ") / 72f;
if (pgh.MyParagraph.MyItemInfo.IsInRNO) if (pgh.MyParagraph.MyItemInfo.IsInRNO)
{ {
@@ -103,10 +123,13 @@ namespace Volian.Print.Library
private void AddChildren(pkParagraph pgh, int level) private void AddChildren(pkParagraph pgh, int level)
{ {
StringBuilder sbPreTab = new StringBuilder();
bool addParentTab = pgh.MyParagraph.MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.AccSectionData.ContinuousActionSummaryData.AddParentTabToSubStepTab; // F2026-001 flag to add parent tab to CAS sub-step
if (pgh.MyChildren.Count > 0) if (pgh.MyChildren.Count > 0)
level++; level++;
foreach (pkParagraph cpgh in pgh.MyChildren) foreach (pkParagraph cpgh in pgh.MyChildren)
{ {
sbPreTab.Clear();
if (cpgh.MyCautionsAndNotes.Count > 0) if (cpgh.MyCautionsAndNotes.Count > 0)
AddNotesOrCautions(cpgh,level); AddNotesOrCautions(cpgh,level);
string stpTab = cpgh.MyParagraph.MyItemInfo.MyTab.CleanText.Trim() + (cpgh.MyParagraph.MyItemInfo.IsInRNO ? "[R] ": " "); string stpTab = cpgh.MyParagraph.MyItemInfo.MyTab.CleanText.Trim() + (cpgh.MyParagraph.MyItemInfo.IsInRNO ? "[R] ": " ");
@@ -114,6 +137,18 @@ namespace Volian.Print.Library
{ {
stpTab = string.Format("{0} ", cpgh.MyParagraph.MyParent.MyTab.Text.Trim()) + " " + stpTab; stpTab = string.Format("{0} ", cpgh.MyParagraph.MyParent.MyTab.Text.Trim()) + " " + stpTab;
} }
ItemInfo prevItmInfo = cpgh.MyParagraph.MyItemInfo.MyParent;
// F2026-001 the while loop below will add the sub-step's parent tab if applicable
if (prevItmInfo.IncludeOnContActSum || !addParentTab) prevItmInfo = null; // don't try to add parent tab
while (prevItmInfo != null && !prevItmInfo.IsHigh)
{
sbPreTab.Insert(0, prevItmInfo.MyTab.CleanText.Trim());
if ((prevItmInfo.IsInRNO && !prevItmInfo.MyParent.IsInRNO) || prevItmInfo.MyParent.IncludeOnContActSum)
prevItmInfo = null;
else
prevItmInfo = prevItmInfo.MyParent;
}
stpTab = sbPreTab.ToString() + stpTab;
AddContinuousAction(stpTab, GetContActStepText(cpgh.MyParagraph.MyItemInfo), "", (cpgh.MyParagraph.MyItemInfo.PageNumber + 1).ToString(),level,0); AddContinuousAction(stpTab, GetContActStepText(cpgh.MyParagraph.MyItemInfo), "", (cpgh.MyParagraph.MyItemInfo.PageNumber + 1).ToString(),level,0);
AddChildren(cpgh, level); AddChildren(cpgh, level);
} }