Compare commits
69 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ac88add40b | |||
| 862cf67375 | |||
| dae850616d | |||
| 149e114359 | |||
| 7d63e7e417 | |||
| d12e5d19c9 | |||
| 7a6b3b7a86 | |||
| 97fc02b601 | |||
| 9485403712 | |||
| caeead0bc0 | |||
| f93204e37e | |||
| e6af91c6ab | |||
| c89428eed8 | |||
| b4f2b89139 | |||
| aab7cdcf77 | |||
| 47cdedefd4 | |||
| 710145a32d | |||
| 2783d2cc77 | |||
| a7a5df1991 | |||
| 62a296f909 | |||
| 0a301e1a84 | |||
| 37e727202c | |||
| 49bdd03c1c | |||
| 23f4b672b2 | |||
| 599d45086f | |||
| 93aed0e06a | |||
| 7eb94d7575 | |||
| fa8b0bd6a1 | |||
| c26e271676 | |||
| 7d87477d68 | |||
| 9002fb3828 | |||
| 10257a832a | |||
| 261f5a526c | |||
| b5e0c121e8 | |||
| 6d99c456e4 | |||
| 8c6f0c2736 | |||
| bd89af5e8c | |||
| b0e4128d3c | |||
| 875a8f101a | |||
| c5a8ef57ac | |||
| c8adeed187 | |||
| 49f5f506d4 | |||
| 1c87585570 | |||
| 30eb52da77 | |||
| 6f089482e6 | |||
| 8e221cc263 | |||
| 441917b670 | |||
| 6251de3b38 | |||
| d731125a14 | |||
| d6fe64bc40 | |||
| f8b93807ae | |||
| 2287a111c1 | |||
| a08d92ea41 | |||
| c41d7981ba | |||
| 37f5336806 | |||
| ebdc98dfa7 | |||
| f3c8c860f5 | |||
| f7b27142c4 | |||
| 4fc37c54c5 | |||
| 849e1e57dd | |||
| c768ca5eba | |||
| c9516d90e9 | |||
| 327aae687a | |||
| 3cbe4617eb | |||
| de69fe6b6f | |||
| e53101dacb | |||
| e87b233713 | |||
| ca38ecb1cf | |||
| 5dfa70dc10 |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1099,7 +1099,9 @@ namespace VEPROMS
|
||||
(int)changeBarData.FixedChangeColumn :
|
||||
System.Convert.ToInt32(changeBarData.DefaultCBLoc.Split(" ,".ToCharArray())[System.Convert.ToInt32(cbd.MyChangeBarLoc)]);
|
||||
//cbd.MyChangeBarColumn = (int)changeBarData.FixedChangeColumn;
|
||||
if (cbd.MyChangeBarText == PrintChangeBarText.UserDef)
|
||||
if (cbd.MyChangeBarText == PrintChangeBarText.UserDef && !string.IsNullOrEmpty(ppTxbxChangeBarUserMsgOne.Text))
|
||||
cbd.MyChangeBarMessage = ppTxbxChangeBarUserMsgOne.Text + @"\n" + ppTxbxChangeBarUserMsgTwo.Text;
|
||||
else if (cbd.MyChangeBarText == PrintChangeBarText.UserDef)
|
||||
cbd.MyChangeBarMessage = _DocVersionConfig.Print_UserCBMess1 + @"\n" + _DocVersionConfig.Print_UserCBMess2;
|
||||
|
||||
}
|
||||
|
||||
@@ -24432,6 +24432,71 @@ ELSE PRINT 'Procedure Creation: [vesp_GetOtherActiveSessions] Error on Creation'
|
||||
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
|
||||
|
||||
DECLARE @notused table (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
|
||||
where
|
||||
NOT EXISTS(Select 1 FROM RofstChild subchild where subChild.ParentID = RofstChild.ID) --make sure it is not a parent of something else
|
||||
AND NOT EXISTS(Select 1 FROM DRoUsages where [DRoUsages].[ROID] like RofstChild.[ROID] + '%' AND fst.RODbID = DROUsages.RODbID) --not used in documents
|
||||
AND NOT EXISTS(Select 1 FROM RoUsages where [RoUsages].[ROID] like RofstChild.[ROID] + '%' AND fst.RODbID = ROUsages.RODbID) --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
|
||||
|
||||
RETURN
|
||||
END
|
||||
|
||||
IF (@@Error = 0) PRINT 'Procedure Creation: [vesp_GetROsNotUsed] Succeeded'
|
||||
ELSE PRINT 'Procedure Creation: [vesp_GetROsNotUsed] Error on Creation'
|
||||
GO
|
||||
|
||||
|
||||
/*
|
||||
---------------------------------------------------------------------------
|
||||
| ADD New Code Before this Block |
|
||||
@@ -24465,8 +24530,8 @@ BEGIN TRY -- Try Block
|
||||
DECLARE @RevDate varchar(255)
|
||||
DECLARE @RevDescription varchar(255)
|
||||
|
||||
set @RevDate = '09/16/2025 7:00 AM'
|
||||
set @RevDescription = 'Added Purge Change History and Index Maintenance functions to Admin Tools'
|
||||
set @RevDate = '1/5/2026 7:00 AM'
|
||||
set @RevDescription = 'Added Method to get ROs that are not used in PROMS'
|
||||
|
||||
Select cast(@RevDate as datetime) RevDate, @RevDescription RevDescription
|
||||
PRINT 'SQL Code Revision ' + @RevDate + ' - ' + @RevDescription
|
||||
|
||||
@@ -13,6 +13,8 @@ using System.Text.RegularExpressions;
|
||||
using System.Globalization;
|
||||
using DevComponents.DotNetBar;
|
||||
using JR.Utils.GUI.Forms;
|
||||
using Volian.Controls.Library;
|
||||
using System.Linq;
|
||||
|
||||
namespace VEPROMS
|
||||
{
|
||||
@@ -1321,6 +1323,26 @@ namespace VEPROMS
|
||||
|
||||
// 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);
|
||||
|
||||
//// Refresh the StepPanel for the current Procedure
|
||||
//// so change bars update
|
||||
//// on any open StepPanel
|
||||
DisplayTabItem dti = MyFrmVEPROMS.GetTabContainingProcedure(pi.ItemID);
|
||||
if (dti != null)
|
||||
{
|
||||
if (!dti.MyStepTabPanel.MyStepPanel.ContainsFocus)
|
||||
dti.MyStepTabPanel.MyStepPanel.Focus();
|
||||
|
||||
foreach (EditItem eitm in dti.MyStepTabPanel.MyStepPanel.Controls.OfType<EditItem>())
|
||||
eitm.ChangeBar = eitm.MyItemInfo.HasChangeBar;
|
||||
}
|
||||
|
||||
//since in a separate form, need to update the tree view
|
||||
//so "Showing Change Bars" Content Menu Item is correct
|
||||
MyFrmVEPROMS.RefreshProcedureNode(newproc);
|
||||
}
|
||||
else
|
||||
UpdateProcedureConfig(pi, ap.RevNumber, ap.RevDate, myDTS, selectedSlave);
|
||||
|
||||
272
PROMS/VEPROMS User Interface/frmBatchRefresh.Designer.cs
generated
272
PROMS/VEPROMS User Interface/frmBatchRefresh.Designer.cs
generated
@@ -52,6 +52,16 @@
|
||||
this.expandableSplitter1 = new DevComponents.DotNetBar.ExpandableSplitter();
|
||||
this.panelEx1 = new DevComponents.DotNetBar.PanelEx();
|
||||
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.swRefreshTblsForSrch = new DevComponents.DotNetBar.Controls.SwitchButton();
|
||||
this.lblRefreshTblForSrch = new DevComponents.DotNetBar.LabelX();
|
||||
@@ -75,13 +85,6 @@
|
||||
this.labelX14 = new DevComponents.DotNetBar.LabelX();
|
||||
this.myTVdel = new System.Windows.Forms.TreeView();
|
||||
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.swCheckROLinks = new DevComponents.DotNetBar.Controls.SwitchButton();
|
||||
this.labelX12 = new DevComponents.DotNetBar.LabelX();
|
||||
@@ -120,10 +123,12 @@
|
||||
this.pnlLater.SuspendLayout();
|
||||
this.panelEx1.SuspendLayout();
|
||||
this.sideNav1.SuspendLayout();
|
||||
this.sideNavPanel2.SuspendLayout();
|
||||
this.sideNavPanel4.SuspendLayout();
|
||||
this.sideNavPanel5.SuspendLayout();
|
||||
this.itemPanel1.SuspendLayout();
|
||||
this.itemPanel2.SuspendLayout();
|
||||
this.itemPanel3.SuspendLayout();
|
||||
this.sideNavPanel2.SuspendLayout();
|
||||
this.sideNavPanel4.SuspendLayout();
|
||||
this.sideNavPanel3.SuspendLayout();
|
||||
this.panelEx4.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
@@ -346,7 +351,7 @@
|
||||
this.pnlLater.Controls.Add(this.dtpDate);
|
||||
this.pnlLater.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
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.Padding = new System.Windows.Forms.Padding(6);
|
||||
this.pnlLater.Size = new System.Drawing.Size(279, 37);
|
||||
@@ -357,7 +362,7 @@
|
||||
this.label5.AutoSize = true;
|
||||
this.label5.Location = new System.Drawing.Point(105, 15);
|
||||
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.Text = "@";
|
||||
//
|
||||
@@ -387,7 +392,7 @@
|
||||
this.chkLater.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.chkLater.Location = new System.Drawing.Point(6, 6);
|
||||
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.Text = "Process Later";
|
||||
this.chkLater.UseVisualStyleBackColor = true;
|
||||
@@ -460,8 +465,8 @@
|
||||
// sideNav1
|
||||
//
|
||||
this.sideNav1.BackColor = System.Drawing.SystemColors.Control;
|
||||
this.sideNav1.Controls.Add(this.sideNavPanel2);
|
||||
this.sideNav1.Controls.Add(this.sideNavPanel5);
|
||||
this.sideNav1.Controls.Add(this.sideNavPanel2);
|
||||
this.sideNav1.Controls.Add(this.sideNavPanel4);
|
||||
this.sideNav1.Controls.Add(this.sideNavPanel3);
|
||||
this.sideNav1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
@@ -482,6 +487,138 @@
|
||||
this.sideNav1.TabIndex = 3;
|
||||
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
|
||||
//
|
||||
this.sideNavPanel2.Controls.Add(this.swRefreshTblsForSrch);
|
||||
@@ -504,6 +641,7 @@
|
||||
this.sideNavPanel2.Name = "sideNavPanel2";
|
||||
this.sideNavPanel2.Size = new System.Drawing.Size(268, 493);
|
||||
this.sideNavPanel2.TabIndex = 6;
|
||||
this.sideNavPanel2.Visible = false;
|
||||
//
|
||||
// swRefreshTblsForSrch
|
||||
//
|
||||
@@ -543,7 +681,7 @@
|
||||
this.warningBox4.CloseButtonVisible = false;
|
||||
this.warningBox4.Image = ((System.Drawing.Image)(resources.GetObject("warningBox4.Image")));
|
||||
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.OptionsButtonVisible = false;
|
||||
this.warningBox4.Size = new System.Drawing.Size(264, 32);
|
||||
@@ -556,7 +694,7 @@
|
||||
this.warningBox2.CloseButtonVisible = false;
|
||||
this.warningBox2.Image = ((System.Drawing.Image)(resources.GetObject("warningBox2.Image")));
|
||||
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.OptionsButtonVisible = false;
|
||||
this.warningBox2.Size = new System.Drawing.Size(264, 43);
|
||||
@@ -834,95 +972,6 @@
|
||||
this.btnDeleteItems.TabIndex = 35;
|
||||
this.btnDeleteItems.Text = "Process Deletions";
|
||||
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
|
||||
//
|
||||
@@ -981,7 +1030,7 @@
|
||||
this.warningBox5.CloseButtonVisible = false;
|
||||
this.warningBox5.Image = ((System.Drawing.Image)(resources.GetObject("warningBox5.Image")));
|
||||
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.OptionsButtonVisible = false;
|
||||
this.warningBox5.Size = new System.Drawing.Size(262, 32);
|
||||
@@ -1065,7 +1114,7 @@
|
||||
this.warningBox1.CloseButtonVisible = false;
|
||||
this.warningBox1.Image = ((System.Drawing.Image)(resources.GetObject("warningBox1.Image")));
|
||||
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.OptionsButtonVisible = false;
|
||||
this.warningBox1.Size = new System.Drawing.Size(262, 43);
|
||||
@@ -1108,7 +1157,6 @@
|
||||
//
|
||||
// sideNavItmRepair
|
||||
//
|
||||
this.sideNavItmRepair.Checked = true;
|
||||
this.sideNavItmRepair.Name = "sideNavItmRepair";
|
||||
this.sideNavItmRepair.Panel = this.sideNavPanel2;
|
||||
this.sideNavItmRepair.Symbol = "";
|
||||
@@ -1125,6 +1173,7 @@
|
||||
//
|
||||
// sideNavItmMaint
|
||||
//
|
||||
this.sideNavItmMaint.Checked = true;
|
||||
this.sideNavItmMaint.Name = "sideNavItmMaint";
|
||||
this.sideNavItmMaint.Panel = this.sideNavPanel5;
|
||||
this.sideNavItmMaint.Symbol = "58154";
|
||||
@@ -1271,10 +1320,12 @@
|
||||
this.panelEx1.ResumeLayout(false);
|
||||
this.sideNav1.ResumeLayout(false);
|
||||
this.sideNav1.PerformLayout();
|
||||
this.sideNavPanel2.ResumeLayout(false);
|
||||
this.sideNavPanel4.ResumeLayout(false);
|
||||
this.sideNavPanel5.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.panelEx4.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
@@ -1363,6 +1414,9 @@
|
||||
private DevComponents.DotNetBar.Controls.WarningBox warningBox3;
|
||||
private DevComponents.DotNetBar.Controls.WarningBox warningBox6;
|
||||
private DevComponents.DotNetBar.ButtonX btnIndexMaint;
|
||||
private DevComponents.DotNetBar.PanelEx itemPanel2;
|
||||
private DevComponents.DotNetBar.PanelEx itemPanel3;
|
||||
private DevComponents.DotNetBar.ButtonX btnROsNotUsed;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1778,7 +1778,44 @@ namespace VEPROMS
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -117,6 +117,57 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</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">
|
||||
<value>17, 17</value>
|
||||
</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.
|
||||
</value>
|
||||
</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">
|
||||
<value>
|
||||
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.
|
||||
</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 name="swDeleteFolder.SuperTooltip" xml:space="preserve">
|
||||
<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.
|
||||
|
||||
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 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.
|
||||
@@ -389,6 +392,6 @@ If more than one procedure is selected, it is recommended that this be performed
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>137</value>
|
||||
<value>25</value>
|
||||
</metadata>
|
||||
</root>
|
||||
@@ -98,6 +98,8 @@ namespace VEPROMS
|
||||
_SelectedStepTabPanel.MyStepTabRibbon.ContActionSummaryRequest += MyStepTabRibbon_ContActionSummaryRequest;
|
||||
_SelectedStepTabPanel.MyStepTabRibbon.AddProcToDVInTree -= new StepTabRibbonEvent(MyStepTabRibbon_AddProcToDocVersionInTree);
|
||||
_SelectedStepTabPanel.MyStepTabRibbon.AddProcToDVInTree += new StepTabRibbonEvent(MyStepTabRibbon_AddProcToDocVersionInTree);
|
||||
_SelectedStepTabPanel.MyStepTabRibbon.EnableDisableStepProperties -= EnableDisableStepProperties;
|
||||
_SelectedStepTabPanel.MyStepTabRibbon.EnableDisableStepProperties += new StepTabRibbonEvent(EnableDisableStepProperties);
|
||||
// F2022-024 Time Critical Action Summary
|
||||
_SelectedStepTabPanel.MyStepTabRibbon.TimeCriticalActionSummaryRequest -= MyStepTabRibbon_TimeCriticalActionSummaryRequest;
|
||||
_SelectedStepTabPanel.MyStepTabRibbon.TimeCriticalActionSummaryRequest += MyStepTabRibbon_TimeCriticalActionSummaryRequest;
|
||||
@@ -119,7 +121,7 @@ namespace VEPROMS
|
||||
|
||||
//added by jcb 20130718 to support create pdf button when multi-unit and user selects a unit
|
||||
pi.MyDocVersion.DocVersionConfig.SelectedSlave = pi.ProcedureConfig.SelectedSlave;
|
||||
|
||||
|
||||
DlgPrintProcedure prnDlg = new DlgPrintProcedure(pi);
|
||||
|
||||
//added by jcb 20130718 to support create pdf button when multi-unit and user selects a unit
|
||||
@@ -372,12 +374,12 @@ namespace VEPROMS
|
||||
cmbFont.SelectedIndex = -1;
|
||||
string[] parameters = System.Environment.CommandLine.Split(" ".ToCharArray());
|
||||
string db = Volian.Base.Library.VlnSettings.GetDB();
|
||||
|
||||
|
||||
if (db != null)
|
||||
Database.SelectedDatabase = db;
|
||||
|
||||
//B2018-129 Most Recently Used list was being cleared. Needed to remove a (string) type case in the IF statement
|
||||
if (!string.IsNullOrEmpty((string)Properties.Settings.Default["DefaultDB"]))
|
||||
if (!string.IsNullOrEmpty((string)Properties.Settings.Default["DefaultDB"]))
|
||||
Database.LastDatabase = Properties.Settings.Default.DefaultDB;
|
||||
|
||||
// Setup the Context menu for DisplaySearch including the symbols
|
||||
@@ -416,7 +418,7 @@ namespace VEPROMS
|
||||
// B2019-107 Error Log message for inconsistent PromsFixes
|
||||
_MyLog.InfoFormat("\r\nSession Beginning\r\n<===={0}[SQL:{1:yyMM.ddHH}]====== User: {2}/{3} Started {4} ===============>{5}"
|
||||
, Application.ProductVersion, Database.RevDate, Environment.UserDomainName, Environment.UserName, DateTime.Now.ToString("dddd MMMM d, yyyy h:mm:ss tt"), FormatInfo.Failed ?? "");
|
||||
|
||||
|
||||
// C2022-030 Notify the user if the stored procedure in the database are not update to date
|
||||
// with those in the PROMSFixes.sql delivered with the PROMS executable
|
||||
string pfVersion = ExeInfo.GetAssocicatedPROMSFixesVersion();
|
||||
@@ -546,7 +548,7 @@ namespace VEPROMS
|
||||
tv.ProcedureCheckedOutTo += new vlnTreeViewEvent(tv_ProcedureCheckedOutTo);
|
||||
tv.ViewPDF += new vlnTreeViewPdfEvent(tv_ViewPDF);
|
||||
displayApplicability.ApplicabilityViewModeChanged += new DisplayApplicability.DisplayApplicabilityEvent(displayApplicability_ApplicabilityViewModeChanged);
|
||||
|
||||
|
||||
tv.ExportImportProcedureSets += new vlnTreeViewEvent(tv_ExportImportProcedureSets);
|
||||
tv.PrintTransitionReport += new vlnTreeViewEvent(tv_PrintTransitionReport);
|
||||
tv.ProcessingComplete += tv_ProcessingComplete;
|
||||
@@ -554,10 +556,23 @@ namespace VEPROMS
|
||||
tv.CreateContinuousActionSummary += new vlnTreeViewEvent(tv_CreateContinuousActionSummary);
|
||||
tv.SelectDateToStartChangeBars += tv_SelectDateToStartChangeBars;
|
||||
tv.CreateTimeCriticalActionSummary += new vlnTreeViewEvent(tv_CreateTimeCriticalActionSummary);
|
||||
tv.RefreshFormats += new vlnTreeViewStatusEvent(RefreshFormats);
|
||||
|
||||
displayBookMarks.ResetBookMarksInPROMSWindows += displayBookMarks_ResetBookMarksInPROMSWindows;
|
||||
}
|
||||
|
||||
//C2021-035 Add Refresh Tree Option at highest level
|
||||
void RefreshFormats(object sender, vlnTreeStatusEventArgs args)
|
||||
{
|
||||
Format.ClearFormatCache();
|
||||
FormatInfo.ClearFormatInfoCache();
|
||||
FormatInfo.Reset();
|
||||
FormatInfoList.Reset();
|
||||
Format.Reset();
|
||||
FormatList.Reset();
|
||||
displaySearch1.SetupContextMenu();
|
||||
}
|
||||
|
||||
// Part of Separate Windows upgrade C2015-022
|
||||
// Extend Changes to BookMark information to all of the child windows
|
||||
void displayBookMarks_ResetBookMarksInPROMSWindows(object sender, EventArgs args)
|
||||
@@ -574,7 +589,26 @@ namespace VEPROMS
|
||||
}
|
||||
}
|
||||
|
||||
void tv_SelectDateToStartChangeBars(object sender, vlnTreeEventArgs args)
|
||||
//B2019-140 Change bars do not get refreshed when approval is run.
|
||||
// Get the displaytab containing the procedure
|
||||
// if none exists, return null
|
||||
public DisplayTabItem GetTabContainingProcedure(int procid) => tc?.MyBar?.Items?.OfType<DisplayTabItem>().FirstOrDefault(x => x.MyItemInfo?.ItemID == procid);
|
||||
// Refresh Node in Tree
|
||||
// Used for when Change Bar Updates as part of approval.
|
||||
public void RefreshProcedureNode(ProcedureInfo itm)
|
||||
{
|
||||
VETreeNode tn = tv.FindNode(itm, tv.Nodes);
|
||||
var tmp = (ProcedureInfo)tn?.VEObject;
|
||||
if (tmp != null)
|
||||
{
|
||||
tmp.ChangeBarDate = itm.ChangeBarDate;
|
||||
tmp.MyConfig = itm.MyConfig;
|
||||
}
|
||||
|
||||
tn?.RefreshNode();
|
||||
}
|
||||
|
||||
void tv_SelectDateToStartChangeBars(object sender, vlnTreeEventArgs args)
|
||||
{
|
||||
ProcedureInfo pi = (args.Node as VETreeNode).VEObject as ProcedureInfo;
|
||||
if (pi == null) return;
|
||||
@@ -591,6 +625,23 @@ namespace VEPROMS
|
||||
itm.MyContent.Config = pc.ToString();
|
||||
itm.UserID = Volian.Base.Library.VlnSettings.UserID;
|
||||
itm.Save();
|
||||
|
||||
//B2019-140 Change bars do not get refreshed when approval is run.
|
||||
// Reset a Procedure and sub items in the cache
|
||||
ProcedureInfo newproc = ItemInfo.ResetProcedure(pi.ItemID);
|
||||
|
||||
//// Refresh the StepPanel for the current Procedure
|
||||
//// so change bars update
|
||||
//// on any open StepPanel
|
||||
DisplayTabItem dti = GetTabContainingProcedure(pi.ItemID);
|
||||
if (dti != null)
|
||||
{
|
||||
if (!dti.MyStepTabPanel.MyStepPanel.ContainsFocus)
|
||||
dti.MyStepTabPanel.MyStepPanel.Focus();
|
||||
|
||||
foreach (EditItem eitm in dti.MyStepTabPanel.MyStepPanel.Controls.OfType<EditItem>())
|
||||
eitm.ChangeBar = eitm.MyItemInfo.HasChangeBar;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1183,6 +1234,7 @@ namespace VEPROMS
|
||||
|
||||
if (!MySessionInfo.CanCheckOutItem(pi.ItemID, CheckOutType.Procedure, ref message))
|
||||
{
|
||||
message = message.Replace("\r\nWould You like to open the procedure in View Only Mode?", "");
|
||||
MessageBox.Show(this, message, "Procedure Already Checked Out", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
return;
|
||||
}
|
||||
@@ -2072,7 +2124,10 @@ namespace VEPROMS
|
||||
{
|
||||
foreach (DisplayTabItem dti in tc.MyBar.Items)
|
||||
{
|
||||
if (!myList.Contains(dti.OwnerID))
|
||||
//C2019-036 View Only mode work with Checked Out Procedures
|
||||
// View Only Mode is no longer checked out, so no longer has an OwnerID
|
||||
// This will keep those tabs from auto-closing based on the timer
|
||||
if (!myList.Contains(dti.OwnerID) && dti.MyStepTabPanel.MyStepPanel.VwMode != E_ViewMode.View)
|
||||
{
|
||||
MyCloseTabList.PushDTI(dti);
|
||||
}
|
||||
@@ -2478,7 +2533,7 @@ namespace VEPROMS
|
||||
//and set checkboxes based on what they are set to
|
||||
UserSettings usersettings = new UserSettings(VlnSettings.UserID);
|
||||
|
||||
if (DisPlayTabState.Rows.Count > 0 && (usersettings.UserSetting_OpenTabs_AutoOpen || !usersettings.UserSetting_OpenTabs_Remember))
|
||||
if (!Settings.Default.SeparateWindows && DisPlayTabState.Rows.Count > 0 && (usersettings.UserSetting_OpenTabs_AutoOpen || !usersettings.UserSetting_OpenTabs_Remember))
|
||||
{
|
||||
//will open tabs by default / ask by default
|
||||
DialogResult result = DialogResult.Yes;
|
||||
@@ -3913,6 +3968,7 @@ namespace VEPROMS
|
||||
string message = string.Empty;
|
||||
if (!MySessionInfo.CanCheckOutItem(args.ProcedureConfig.MyProcedure.ItemID, CheckOutType.Procedure, ref message))
|
||||
{
|
||||
message = message.Replace("\r\nWould You like to open the procedure in View Only Mode?", "");
|
||||
MessageBox.Show(this, message, "Procedure Already Checked Out", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
this.Cursor = Cursors.Default;
|
||||
return DialogResult.None;
|
||||
@@ -3936,6 +3992,7 @@ namespace VEPROMS
|
||||
string message = string.Empty;
|
||||
if (!MySessionInfo.CanCheckOutItem(args.SectionConfig.MySection.MySectionInfo.MyProcedure.ItemID, CheckOutType.Procedure, ref message))
|
||||
{
|
||||
message = message.Replace("\r\nWould You like to open the procedure in View Only Mode?", "");
|
||||
MessageBox.Show(this, message, "Procedure Already Checked Out", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
this.Cursor = Cursors.Default;
|
||||
return DialogResult.None;
|
||||
@@ -4736,6 +4793,11 @@ namespace VEPROMS
|
||||
// B2022-026 RO Memory reduction coding (Jakes Merge)
|
||||
displayRO.SetFindDocROButton(false);
|
||||
displayRO.LoadTree();
|
||||
|
||||
//C2019-036 View Only mode work with Checked Out Procedures
|
||||
//In View Only Mode - Step Properties should be disabled
|
||||
EnableDisableStepProperties(sender, new StepTabRibbonEventArgs(args.MyEditItem.MyItemInfo, 0, args.MyEditItem.MyStepPanel.VwMode));
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -4767,6 +4829,22 @@ namespace VEPROMS
|
||||
|
||||
}
|
||||
|
||||
//C2019-036 View Only mode work with Checked Out Procedures
|
||||
//In View Only Mode - Step Properties should be disabled
|
||||
public void EnableDisableStepProperties(object sender, StepTabRibbonEventArgs args)
|
||||
{
|
||||
if (args.ViewMode == E_ViewMode.View && (infoTabs.Enabled || infoTabs.SelectedTab != infotabTags))
|
||||
{
|
||||
infoTabs.Enabled = true;
|
||||
infoTabs.SelectedTab = infotabTags;
|
||||
infoTabs.Enabled = false;
|
||||
}
|
||||
else if (args.ViewMode != E_ViewMode.View && !infoTabs.Enabled)
|
||||
{
|
||||
infoTabs.Enabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
void _LastStepRTB_EditModeChanged(object sender, EventArgs args)
|
||||
{
|
||||
if (_LastStepRTB.EditMode) // going into edit mode in a cell of the grid.
|
||||
@@ -5302,6 +5380,8 @@ namespace VEPROMS
|
||||
private void btnUpdateFormat_Click(object sender, EventArgs e)
|
||||
{
|
||||
UpdateFormats(null);
|
||||
//C2025-060 When format is updated in PROMS, auto-update the format cache so it doesn't require exiting PROMS and going back in.
|
||||
RefreshFormats(sender, null);
|
||||
}
|
||||
|
||||
private void UpdateFormats(string mypath)
|
||||
|
||||
@@ -765,6 +765,19 @@ namespace VEPROMS.CSLA.Library
|
||||
foreach (DocVersionInfo dvi in _CacheByPrimaryKey[key])
|
||||
dvi.ResetProcedures();
|
||||
}
|
||||
|
||||
//C2021-035 Add Refresh Tree Option at highest level
|
||||
public static void ResetAllProcedures()
|
||||
{
|
||||
foreach (string key in _CacheByPrimaryKey.Keys)
|
||||
{
|
||||
foreach (DocVersionInfo dvi in _CacheByPrimaryKey[key])
|
||||
dvi.ResetProcedures();
|
||||
}
|
||||
|
||||
foreach (DocVersionInfo dvi in _CacheList)
|
||||
dvi.ResetProcedures();
|
||||
}
|
||||
#region IVEReadOnlyItem
|
||||
public System.Collections.IList GetChildren()
|
||||
{
|
||||
|
||||
@@ -1363,9 +1363,14 @@ namespace VEPROMS.CSLA.Library
|
||||
// An X/Y Plot RO type might have text preceding the Plot Commands
|
||||
int pstart = roValue.IndexOf("<<G"); // find the starting Plot Command
|
||||
|
||||
//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.
|
||||
//get x-offset
|
||||
float fx1 = (float)MyApp.ActiveDocument.Range(sel.Start, sel.Start).get_Information(LBWdInformation.wdHorizontalPositionRelativeToPage);
|
||||
fx1 -= (float)MyApp.ActiveDocument.Range(0, 0).get_Information(LBWdInformation.wdHorizontalPositionRelativeToPage);
|
||||
|
||||
// B2017-217 Added logic so that underscores are not converted to underline
|
||||
// C2018-003 fixed use of getting the active section
|
||||
AddPrecedingText(sel, roValue.Substring(0, pstart), 0.0F, (sect.ActiveSection != null) ? sect.ActiveSection.ActiveFormat.PlantFormat.FormatData.SectData.ConvertUnderscoreToUnderline : false);// replace the RO token with what's in front of the X/Y Plot
|
||||
AddPrecedingText(sel, roValue.Substring(0, pstart), fx1, (sect.ActiveSection != null) ? sect.ActiveSection.ActiveFormat.PlantFormat.FormatData.SectData.ConvertUnderscoreToUnderline : false);// replace the RO token with what's in front of the X/Y Plot
|
||||
roValue = roValue.Substring(pstart); // set rovalue to the start of the plot commands
|
||||
|
||||
pngFile = VlnSettings.TemporaryFolder + @"\XYPlot1.png"; //@"C:\Temp\XYPlot1.png";
|
||||
@@ -1386,6 +1391,10 @@ namespace VEPROMS.CSLA.Library
|
||||
|
||||
float yAdjust = sel.Font.Size;
|
||||
float yyy = yAdjust + y + plotRect.Y;
|
||||
|
||||
//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.
|
||||
xxx += fx1; //shift by x-offset
|
||||
|
||||
LBShape shape = myDoc.Shapes.AddPicture(pngFile, xxx, yyy, sel.Range);
|
||||
|
||||
try
|
||||
|
||||
@@ -275,6 +275,14 @@ namespace VEPROMS.CSLA.Library
|
||||
}
|
||||
}
|
||||
|
||||
//C2021-035 Add Refresh Tree Option at highest level
|
||||
public static void Reset()
|
||||
{
|
||||
_LookupFormats?.Clear();
|
||||
_LookupFormats = null;
|
||||
_ = LookupFormats;
|
||||
}
|
||||
|
||||
private static Format AddFormatToDB(Format parent, string format, bool issub, DateTime Dts, string Userid, string fmtPath, string genmacPath)
|
||||
{
|
||||
string fmtdata = null;
|
||||
@@ -509,7 +517,12 @@ public partial class FormatInfo : IFormatOrFormatInfo
|
||||
return _PROMSBaseFormat;
|
||||
}
|
||||
}
|
||||
public static FormatInfo Get(string name)
|
||||
public static void Reset()
|
||||
{
|
||||
_PROMSBaseFormat = null;
|
||||
}
|
||||
|
||||
public static FormatInfo Get(string name)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
@@ -3819,6 +3819,51 @@ namespace VEPROMS.CSLA.Library
|
||||
_Tables = null;
|
||||
_SupInfos = null;
|
||||
}
|
||||
|
||||
//B2019-140 Change bars do not get refreshed when approval is run.
|
||||
// Reset a Procedure and sub items in the cache
|
||||
public static ProcedureInfo ResetProcedure(int procID)
|
||||
{
|
||||
// The following lines reload the procedure info cache
|
||||
ProcedureInfo newproc = ProcedureInfo.Get(procID, true);
|
||||
newproc.RefreshConfig();
|
||||
|
||||
//the following is needed to force the ProcedureConfig to reload
|
||||
#pragma warning disable S1656 // Variables should not be self-assigned
|
||||
newproc.MyConfig = newproc.MyConfig;
|
||||
#pragma warning restore S1656 // Variables should not be self-assigned
|
||||
|
||||
//reload the Content Cache for the procedure
|
||||
ContentInfo.Refresh(Content.Get(newproc.MyContent.ContentID, true));
|
||||
|
||||
// The following line actually reloads the item info cache
|
||||
ItemInfo newprocitem = Get(procID, true);
|
||||
newprocitem.RefreshConfig();
|
||||
|
||||
//Reload all the child/sub items
|
||||
#pragma warning disable S2971 // LINQ expressions should be simplified - need initial ToList to force enumeration
|
||||
//otherwise will get a "Collection was modified; enumeration operation may not execute" error
|
||||
List<int> itemIDs = _CacheByPrimaryKey.Values.ToList().SelectMany(y => y).Where(t => t?.ActiveParent != null && (t.ActiveParent is ItemInfo) && t.MyProcedure.ItemID == procID).Select(x => (x.ActiveParent as ItemInfo).ItemID).Distinct().ToList();
|
||||
#pragma warning restore S2971 // LINQ expressions should be simplified
|
||||
for (int index = 0; index < itemIDs.Count; index++)
|
||||
{
|
||||
ResetParts(itemIDs[index]);
|
||||
}
|
||||
|
||||
//reset the procedure config for all items attached to current procedure
|
||||
#pragma warning disable S2971 // LINQ expressions should be simplified - need initial ToList to force enumeration
|
||||
//otherwise will get a "Collection was modified; enumeration operation may not execute" error
|
||||
List<ItemInfo> pconfigrefresh_items = _CacheByPrimaryKey.Values.ToList().SelectMany(y => y).Where(t => t?.MyProcedure?.ItemID == procID).Distinct().ToList();
|
||||
#pragma warning restore S2971 // LINQ expressions should be simplified
|
||||
for (int index = 0; index < pconfigrefresh_items.Count; index++)
|
||||
{
|
||||
pconfigrefresh_items[index].MyProcedure = newproc;
|
||||
}
|
||||
|
||||
//return the changed procedure info
|
||||
return newproc;
|
||||
}
|
||||
|
||||
private ItemInfoList _Procedures;
|
||||
public ItemInfoList Procedures
|
||||
{ get { return Lookup(E_FromType.Procedure, ref _Procedures); } }
|
||||
@@ -7984,12 +8029,20 @@ namespace VEPROMS.CSLA.Library
|
||||
public ProcedureInfo(SafeDataReader dr) : base(dr) { }
|
||||
#endif
|
||||
private ProcedureInfo() : base() { ;}
|
||||
public new static ProcedureInfo Get(int itemID)
|
||||
public new static ProcedureInfo Get(int itemID, bool forcerefresh = false)
|
||||
{
|
||||
//if (!CanGetObject())
|
||||
// throw new System.Security.SecurityException("User not authorized to view a Item");
|
||||
try
|
||||
{
|
||||
//C2019-036 View Only mode work with Checked Out Procedures
|
||||
// fixes caching issue
|
||||
// so this forces a refresh of the cache
|
||||
if (forcerefresh)
|
||||
{
|
||||
_CacheByPrimaryKey.Remove(itemID.ToString());
|
||||
}
|
||||
|
||||
ProcedureInfo tmp = GetCachedByPrimaryKey(itemID);
|
||||
if (tmp == null)
|
||||
{
|
||||
|
||||
@@ -186,7 +186,7 @@ namespace VEPROMS.CSLA.Library
|
||||
if (string.IsNullOrEmpty(name))
|
||||
{ name = tmpproc.DisplayText; }
|
||||
|
||||
message = string.Format("The procedure {0} is already checked out to {1}", name, si.UserID);
|
||||
message = string.Format("The procedure {0} is already checked out to {1}.\r\nWould You like to open the procedure in View Only Mode?", name, si.UserID);
|
||||
rv = rv && false;
|
||||
}
|
||||
else if (si.ProcessID != this.ProcessID && objectType == CheckOutType.Document)
|
||||
|
||||
@@ -97,6 +97,12 @@ namespace VEPROMS.CSLA.Library
|
||||
if (formatInfo != null && formatInfo.ToString() == formatName) return formatInfo.Get();
|
||||
return null;
|
||||
}
|
||||
//C2021-035 Add Refresh Tree Option at highest level
|
||||
public static void Reset()
|
||||
{
|
||||
_MyFormatInfoList?.Clear();
|
||||
_MyFormatInfoList = null;
|
||||
}
|
||||
}
|
||||
public class DocStyleListConverter : System.ComponentModel.StringConverter
|
||||
{
|
||||
|
||||
@@ -1145,8 +1145,12 @@ namespace VEPROMS.CSLA.Library
|
||||
{
|
||||
//string thisTab = StepInfo.Get(pitem.ItemID).MyTab.CleanText;
|
||||
string thisTab = pitem.MyTab.CleanText;// StepInfo.Get(pitem.ItemID).MyTab.CleanText;
|
||||
//B2025-058 remove continuous action indicator
|
||||
string medittag = pitem.FormatStepData.TabData.MacroEditTag;
|
||||
if (medittag != null && thisTab.StartsWith(medittag))
|
||||
thisTab = thisTab.Substring(medittag.Length);
|
||||
// remove delimiters of '.' and ')' in tab.
|
||||
if (!hasDelim)
|
||||
if (!hasDelim)
|
||||
{
|
||||
// get list of delimiters to remove from the format:
|
||||
foreach (string rmvDelim in DelimList) thisTab = thisTab.Replace(rmvDelim, "");
|
||||
|
||||
@@ -4341,6 +4341,16 @@ public LeftJustifyList(XmlNodeList xmlNodeList) : base(xmlNodeList) { }
|
||||
return LazyLoad(ref _IncludeSectionNumAndTitle, "@IncludeSectionNumAndTitle");
|
||||
}
|
||||
}
|
||||
|
||||
//F2025-038 default (in base format) is True. The lable "SECTION" will precede the section number an title
|
||||
private LazyLoad<bool> _IncludeSectionLabel;
|
||||
public bool IncludeSectionLabel
|
||||
{
|
||||
get
|
||||
{
|
||||
return LazyLoad(ref _IncludeSectionLabel, "@IncludeSectionLabel");
|
||||
}
|
||||
}
|
||||
// the font and font styles to use for the continuous action summary
|
||||
private VE_Font _Font;
|
||||
public VE_Font Font
|
||||
|
||||
@@ -990,12 +990,21 @@ namespace VEPROMS.CSLA.Library
|
||||
}
|
||||
return tmp;
|
||||
}
|
||||
public static Content Get(int contentID)
|
||||
public static Content Get(int contentID, bool forcerefresh = false)
|
||||
{
|
||||
if (!CanGetObject())
|
||||
throw new System.Security.SecurityException("User not authorized to view a Content");
|
||||
try
|
||||
{
|
||||
//C2019-036 View Only mode work with Checked Out Procedures
|
||||
// fixes caching issue
|
||||
// this forces a refresh of the cache for a case when need to do a hard refresh
|
||||
if (forcerefresh)
|
||||
{
|
||||
ConvertListToDictionary();
|
||||
_CacheByPrimaryKey.Remove(contentID.ToString());
|
||||
}
|
||||
|
||||
Content tmp = GetCachedByPrimaryKey(contentID);
|
||||
if (tmp == null)
|
||||
{
|
||||
|
||||
@@ -502,6 +502,15 @@ namespace VEPROMS.CSLA.Library
|
||||
_FolderInfoExtension.Refresh(this);
|
||||
OnChange();// raise an event
|
||||
}
|
||||
|
||||
//C2021-035 Add Refresh Tree Option at highest level
|
||||
public static void ClearFolderInfoCache()
|
||||
{
|
||||
_CacheByPrimaryKey.Clear();
|
||||
while (_CacheList.Count > 0)
|
||||
{ _CacheList[0].Dispose(); }
|
||||
}
|
||||
|
||||
public static FolderInfo Get(int folderID)
|
||||
{
|
||||
//if (!CanGetObject())
|
||||
|
||||
@@ -143,6 +143,14 @@ namespace VEPROMS.CSLA.Library
|
||||
if (_CacheByParentID_Name.ContainsKey(key)) return _CacheByParentID_Name[key][0];
|
||||
return null;
|
||||
}
|
||||
|
||||
//C2021-035 Add Refresh Tree Option at highest level
|
||||
public static void ClearFormatCache()
|
||||
{
|
||||
_CacheByPrimaryKey.Clear();
|
||||
while (_CacheList.Count > 0)
|
||||
{ _CacheList[0].Dispose(); }
|
||||
}
|
||||
#endregion
|
||||
#region Business Methods
|
||||
private string _ErrorMessage = string.Empty;
|
||||
|
||||
@@ -71,6 +71,13 @@ namespace VEPROMS.CSLA.Library
|
||||
if (_CacheByPrimaryKey.ContainsKey(key)) return _CacheByPrimaryKey[key][0];
|
||||
return null;
|
||||
}
|
||||
//C2021-035 Add Refresh Tree Option at highest level
|
||||
public static void ClearFormatInfoCache()
|
||||
{
|
||||
_CacheByPrimaryKey.Clear();
|
||||
while (_CacheList.Count > 0)
|
||||
{ _CacheList[0].Dispose(); }
|
||||
}
|
||||
#endregion
|
||||
#region Business Methods
|
||||
private string _ErrorMessage = string.Empty;
|
||||
|
||||
42
PROMS/VEPROMS.CSLA.Library/Minimal/GeneralReports.cs
Normal file
42
PROMS/VEPROMS.CSLA.Library/Minimal/GeneralReports.cs
Normal 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 = 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 GetROsNotUsedInPROMS Report: retrieving data failed", ex);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
||||
@@ -390,6 +390,7 @@
|
||||
<Compile Include="Generated\ZTransitionInfo.cs" />
|
||||
<Compile Include="Minimal\AnnotationstypeSections.cs" />
|
||||
<Compile Include="Minimal\Maintenance.cs" />
|
||||
<Compile Include="Minimal\GeneralReports.cs" />
|
||||
<Compile Include="Minimal\UserReports.cs" />
|
||||
<Compile Include="Minimal\UserSettings.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
|
||||
@@ -188,7 +188,6 @@ namespace Volian.Controls.Library
|
||||
this.tabSearchTypes.Controls.Add(this.tabControlPanel5);
|
||||
this.tabSearchTypes.Controls.Add(this.tabControlPanel2);
|
||||
this.tabSearchTypes.Controls.Add(this.tabControlPanel3);
|
||||
this.tabSearchTypes.Controls.Add(this.tabControlPanel1);
|
||||
this.tabSearchTypes.Controls.Add(this.contextMenuBar1);
|
||||
this.tabSearchTypes.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.tabSearchTypes.Location = new System.Drawing.Point(0, 0);
|
||||
@@ -983,7 +982,6 @@ namespace Volian.Controls.Library
|
||||
this.tabControlPanel1.Controls.Add(this.lblSrchIncTran);
|
||||
this.tabControlPanel1.Controls.Add(this.groupBox1);
|
||||
this.tabControlPanel1.DisabledBackColor = System.Drawing.Color.Empty;
|
||||
this.tabControlPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.tabControlPanel1.Location = new System.Drawing.Point(0, 34);
|
||||
this.tabControlPanel1.Name = "tabControlPanel1";
|
||||
this.tabControlPanel1.Padding = new System.Windows.Forms.Padding(1);
|
||||
@@ -997,6 +995,8 @@ namespace Volian.Controls.Library
|
||||
this.tabControlPanel1.Style.GradientAngle = 90;
|
||||
this.tabControlPanel1.TabIndex = 17;
|
||||
this.tabControlPanel1.TabItem = this.tabIncTrans;
|
||||
this.tabControlPanel1.Anchor = ((System.Windows.Forms.AnchorStyles)(( System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.tabControlPanel1.RightToLeft = System.Windows.Forms.RightToLeft.No;
|
||||
//
|
||||
// btnTranCvtSelToTxt
|
||||
//
|
||||
@@ -1732,6 +1732,12 @@ namespace Volian.Controls.Library
|
||||
this.Controls.Add(this.xpStepTypes);
|
||||
this.Controls.Add(this.xpSetToSearch);
|
||||
this.Controls.Add(this.tabSearchTypes);
|
||||
this.Controls.Add(this.tabControlPanel1);
|
||||
//B2025-056 Click on Incoming Transitions
|
||||
// This needs to be part of overall control
|
||||
// since if it is part of tabSearchTypes,
|
||||
// then when that is disabled, buttons on
|
||||
// this will be also
|
||||
this.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.Name = "DisplaySearch";
|
||||
this.RightToLeft = System.Windows.Forms.RightToLeft.Yes;
|
||||
|
||||
@@ -1857,14 +1857,15 @@ namespace Volian.Controls.Library
|
||||
lbSrchResultsIncTrans.Enabled = false;
|
||||
lbSrchResultsIncTrans.UseWaitCursor = true;
|
||||
}
|
||||
ListBox mylb = sender as ListBox;
|
||||
//B2025-056 Click on Incoming Transitions
|
||||
// Clicking on Incoming Transitions
|
||||
// will now open that item
|
||||
ListBox mylb_lbSrchResults = sender as ListBox;
|
||||
ListBoxAdv mylb_lbSrchResultsIncTrans = sender as ListBoxAdv;
|
||||
|
||||
// If the list is being refreshed, then set the selection index to -1 (no selection)
|
||||
// B2022-044: don't set selection to top of list (commented out/changed if)
|
||||
//if (mylb != null && _SearchResults.RefreshingList && mylb.SelectedIndex != -1)
|
||||
// //mylb.SelectedIndex = -1;
|
||||
//else
|
||||
if (mylb != null && !_SearchResults.RefreshingList)
|
||||
if ((mylb_lbSrchResults != null || mylb_lbSrchResultsIncTrans != null) && !_SearchResults.RefreshingList)
|
||||
{
|
||||
_ItemInfo = (tabSearchTypes.SelectedTab == tabSearchTypes.Tabs[4]) ? lbSrchResultsIncTrans.SelectedValue as ItemInfo : lbSrchResults.SelectedValue as ItemInfo;
|
||||
if ((tabSearchTypes.SelectedTab == tabSearchTypes.Tabs[1]) && (_ItemInfo != null))
|
||||
|
||||
@@ -603,6 +603,8 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
ItemInfo myItemInfo = myItemInfo2;
|
||||
|
||||
bool viewonlymode = false;
|
||||
|
||||
//B2025-046 Remember Tabs failing when swapping versions of PROMS
|
||||
if (myItemInfo?.MyDocVersion == null) // bug fix: B2016-108 disconnected data will not have a MyDocVersion
|
||||
{
|
||||
@@ -620,8 +622,20 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
if (!MySessionInfo.CanCheckOutItem(myItemInfo.MyProcedure.ItemID, CheckOutType.Procedure, ref message))
|
||||
{
|
||||
FlexibleMessageBox.Show(this, message, "Procedure Already Checked Out", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
return null;
|
||||
DisplayTabItem dti = MyBar?.Items?.OfType<DisplayTabItem>().FirstOrDefault(x => x.MyItemInfo?.ItemID == myItemInfo.MyProcedure.ItemID);
|
||||
|
||||
//C2019-036 View Only mode work with Checked Out Procedures
|
||||
//shouldn't prompt - should just auto put in view only if already in open tab
|
||||
//in view only
|
||||
if (
|
||||
(dti != null && dti.MyStepTabPanel.MyStepPanel.VwMode == E_ViewMode.View)
|
||||
||
|
||||
(SeparateWindows && VersionID == myItemInfo.MyDocVersion.VersionID)
|
||||
|| //to handle special case where item will be opened in a separate window
|
||||
MessageBox.Show(this, message, "Procedure Already Checked Out", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
|
||||
viewonlymode = true;
|
||||
else
|
||||
return null;
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -682,7 +696,7 @@ namespace Volian.Controls.Library
|
||||
// C2023-016 if a Word section and doing Find/Replace don't open Word section, position to section title in step editor instead
|
||||
if (myItemInfo.MyContent.MyEntry == null || doingFindReplace) // If it is not a Word document open in step editor
|
||||
{
|
||||
return OpenStepTabPage(myItemInfo, setFocus);
|
||||
return OpenStepTabPage(myItemInfo, setFocus, viewonlymode);
|
||||
}
|
||||
else // Otherwise open it in the Word editor
|
||||
{
|
||||
@@ -1178,7 +1192,7 @@ namespace Volian.Controls.Library
|
||||
//}
|
||||
//public Dictionary<DocVersionInfo, frmEnhanced> dicEnhancedDocuments = new Dictionary<DocVersionInfo, frmEnhanced>();
|
||||
|
||||
private DisplayTabItem OpenStepTabPage(ItemInfo myItemInfo, bool setFocus)
|
||||
private DisplayTabItem OpenStepTabPage(ItemInfo myItemInfo, bool setFocus, bool viewonlymode = false)
|
||||
{
|
||||
ItemInfo proc = myItemInfo.MyProcedure; // Find procedure Item
|
||||
string key = "Item - " + proc.ItemID.ToString();
|
||||
@@ -1197,7 +1211,7 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
else // If not already open, create a new Page
|
||||
{
|
||||
pg = new DisplayTabItem(this.components, this, proc, key); // Open a new Procedure Tab
|
||||
pg = new DisplayTabItem(this.components, this, proc, key, viewonlymode); // Open a new Procedure Tab
|
||||
_MyDisplayTabItems.Add(key, pg);
|
||||
if (setFocus)
|
||||
{
|
||||
|
||||
@@ -98,13 +98,18 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
#endregion
|
||||
#region Constructors
|
||||
public DisplayTabItem(IContainer container, DisplayTabControl myDisplayTabControl, ItemInfo myItemInfo, string myKey)
|
||||
public DisplayTabItem(IContainer container, DisplayTabControl myDisplayTabControl, ItemInfo myItemInfo, string myKey, bool viewonlymode = false)
|
||||
{
|
||||
_MyItemInfo = myItemInfo;
|
||||
if (MyItemInfo.MyContent.MyEntry == null)
|
||||
OwnerID = myDisplayTabControl.MySessionInfo.CheckOutItem(myItemInfo.MyProcedure.ItemID, CheckOutType.Procedure);
|
||||
else
|
||||
OwnerID = myDisplayTabControl.MySessionInfo.CheckOutItem(myItemInfo.MyContent.MyEntry.DocID, CheckOutType.Document);
|
||||
//C2019-036 View Only mode work with Checked Out Procedures
|
||||
//don't want to check out if opening in View Only Mode Due to someone else having it checked out
|
||||
if (!viewonlymode)
|
||||
{
|
||||
if (MyItemInfo.MyContent.MyEntry == null)
|
||||
OwnerID = myDisplayTabControl.MySessionInfo.CheckOutItem(myItemInfo.MyProcedure.ItemID, CheckOutType.Procedure);
|
||||
else
|
||||
OwnerID = myDisplayTabControl.MySessionInfo.CheckOutItem(myItemInfo.MyContent.MyEntry.DocID, CheckOutType.Document);
|
||||
}
|
||||
//Console.WriteLine("DisplayTabItem");
|
||||
_MyKey = myKey;
|
||||
_MyDisplayTabControl = myDisplayTabControl;
|
||||
@@ -112,7 +117,7 @@ namespace Volian.Controls.Library
|
||||
InitializeComponent();
|
||||
this.Click += new EventHandler(DisplayTabItem_Click);
|
||||
if (myItemInfo.MyContent.MyEntry == null)
|
||||
SetupStepTabPanel();
|
||||
SetupStepTabPanel(viewonlymode);
|
||||
else
|
||||
SetupDSOTabPanel();
|
||||
SetupSecurity(myItemInfo);
|
||||
@@ -128,7 +133,37 @@ namespace Volian.Controls.Library
|
||||
private bool MesssageShown = false;
|
||||
public void SetupSecurity(ItemInfo myItem)
|
||||
{
|
||||
UserInfo ui = UserInfo.GetByUserID(OwnerInfo.Get(OwnerID).SessionUserID);
|
||||
//C2019-036 View Only mode work with Checked Out Procedures
|
||||
//is in View Only Mode, so do not set up the Security
|
||||
if (OwnerID == 0)
|
||||
{
|
||||
|
||||
UserInfo uiViewOnly = UserInfo.GetByUserID(Base.Library.VlnSettings.UserID);
|
||||
if (uiViewOnly.IsAdministrator())
|
||||
{
|
||||
MyUserRole = $"{Base.Library.VlnSettings.UserID} - Administrator";
|
||||
}
|
||||
else if (uiViewOnly.IsSetAdministrator(myItem.MyDocVersion))
|
||||
{
|
||||
MyUserRole = $"{Base.Library.VlnSettings.UserID} - Set Administrator";
|
||||
}
|
||||
else if (uiViewOnly.IsWriter(myItem.MyDocVersion))
|
||||
{
|
||||
MyUserRole = $"{Base.Library.VlnSettings.UserID} - Writer";
|
||||
}
|
||||
else if (uiViewOnly.IsROEditor(myItem.MyDocVersion))
|
||||
{
|
||||
MyUserRole = $"{Base.Library.VlnSettings.UserID} - RO Editor";
|
||||
}
|
||||
else
|
||||
{
|
||||
MyUserRole = $"{Base.Library.VlnSettings.UserID} - Reviewer";
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
UserInfo ui = UserInfo.GetByUserID(OwnerInfo.Get(OwnerID).SessionUserID);
|
||||
|
||||
if (ui == null)
|
||||
{
|
||||
@@ -246,7 +281,7 @@ namespace Volian.Controls.Library
|
||||
/// <summary>
|
||||
/// Creates and sets-up a StepTabPanel
|
||||
/// </summary>
|
||||
private void SetupStepTabPanel()
|
||||
private void SetupStepTabPanel(bool viewonlymode = false)
|
||||
{
|
||||
((System.ComponentModel.ISupportInitialize)(_MyDisplayTabControl.MyBar)).BeginInit();
|
||||
_MyDisplayTabControl.MyBar.SuspendLayout();
|
||||
@@ -276,7 +311,7 @@ namespace Volian.Controls.Library
|
||||
_MyDisplayTabControl.MyBar.ResumeLayout(false);
|
||||
DocVersionInfo dvi = _MyItemInfo.MyProcedure.ActiveParent as DocVersionInfo; //MyRTBItem.MyItemInfo.MyProcedure.ActiveParent as DocVersionInfo;
|
||||
if (dvi == null) return;
|
||||
if (dvi.VersionType > 127)
|
||||
if (dvi.VersionType > 127 || viewonlymode)
|
||||
MyStepTabPanel.MyStepPanel.VwMode = E_ViewMode.View;
|
||||
// C2021 - 027: Procedure level PC/PC - add _MyIteminfo to argument list
|
||||
if (dvi.MultiUnitCount > 1)
|
||||
|
||||
@@ -9,6 +9,7 @@ using System.Drawing;
|
||||
using System.Text.RegularExpressions;
|
||||
using Volian.Base.Library;
|
||||
using JR.Utils.GUI.Forms;
|
||||
using System.Linq;
|
||||
|
||||
namespace Volian.Controls.Library
|
||||
{
|
||||
@@ -386,6 +387,26 @@ namespace Volian.Controls.Library
|
||||
// The following line expands the items needed to display SelectedItemInfo
|
||||
ExpandAsNeeded(myItemInfo);
|
||||
}
|
||||
|
||||
//C2019-036 View Only mode work with Checked Out Procedures
|
||||
public void ResetAll()
|
||||
{
|
||||
List<int> itemIDs = Controls.OfType<RTBItem>().Where(t => t?.MyItemInfo?.ActiveParent != null && t.MyItemInfo.ActiveParent.GetType() == typeof(ItemInfo)).Select(x => (x.MyItemInfo.ActiveParent as ItemInfo).ItemID).Distinct().ToList();
|
||||
|
||||
foreach (int itemID in itemIDs)
|
||||
{
|
||||
ItemInfo.ResetParts(itemID);
|
||||
}
|
||||
|
||||
// The following line actually reloads the procedure item
|
||||
MyProcedureItemInfo = ItemInfo.Get(MyProcedureItemInfo.ItemID, true);
|
||||
MyProcedureItemInfo.RefreshConfig();
|
||||
ContentInfo.Refresh(Content.Get(MyProcedureItemInfo.MyContent.ContentID, true));
|
||||
|
||||
// The following line expands the items needed to display SelectedItemInfo
|
||||
ExpandAsNeeded(SelectedItemInfo);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Currently selected StepRTB
|
||||
/// </summary>
|
||||
|
||||
@@ -16,6 +16,8 @@ using DevComponents.DotNetBar;
|
||||
using Microsoft.Win32;
|
||||
using System.Diagnostics;
|
||||
using JR.Utils.GUI.Forms;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Volian.Controls.Library
|
||||
{
|
||||
@@ -906,6 +908,11 @@ namespace Volian.Controls.Library
|
||||
// //SetButtonAndMenuEnabling(false);
|
||||
//}
|
||||
private Bitmap createTextBitmap(char ch)
|
||||
{
|
||||
return createTextBitmap(ch, new Font("FreeMono", 18, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel));
|
||||
}
|
||||
|
||||
private Bitmap createTextBitmap(char ch, Font objFont)
|
||||
{
|
||||
string txt = string.Format("{0}", ch);
|
||||
Bitmap objBmpImage = new Bitmap(1, 1);
|
||||
@@ -916,8 +923,6 @@ namespace Volian.Controls.Library
|
||||
// Create the Font object for the image text drawing.
|
||||
// later on, we could add logic to use either FreeMono or Arial Unicode MS based on the format being used
|
||||
// but for now, we are going to use FreeMono to create the symbol list
|
||||
Font objFont = new Font("FreeMono", 18, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel);
|
||||
//Font objFont = new Font("Arial Unicode MS", 18, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel);
|
||||
|
||||
// Create a graphics object to measure the text's width and height.
|
||||
Graphics objGraphics = Graphics.FromImage(objBmpImage);
|
||||
@@ -937,7 +942,6 @@ namespace Volian.Controls.Library
|
||||
objGraphics.SmoothingMode = SmoothingMode.AntiAlias;
|
||||
objGraphics.TextContrast = 0;
|
||||
objGraphics.TextRenderingHint = TextRenderingHint.AntiAlias;
|
||||
//objGraphics.DrawString(txt, objFont, new SolidBrush(Color.FromArgb(102, 102, 102)), 0, 0);
|
||||
objGraphics.DrawString(txt, objFont, new SolidBrush(Color.Black),0,0);
|
||||
objGraphics.Flush();
|
||||
return (objBmpImage);
|
||||
@@ -1663,6 +1667,7 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
}
|
||||
Clipboard.Clear();
|
||||
|
||||
Clipboard.SetDataObject(myDO); // this saves the cleaned up information to the Windows clipboard
|
||||
}
|
||||
iData = Clipboard.GetDataObject();
|
||||
@@ -2067,6 +2072,9 @@ namespace Volian.Controls.Library
|
||||
rtabHome.Select();
|
||||
rtabTableGridTools.Visible = false;
|
||||
SetButtonMenuEnabledDisabledOnStepType(false);
|
||||
//C2019-036 View Only mode work with Checked Out Procedures
|
||||
//Is in View Only Mode so show button as selected
|
||||
btnEditMode.Checked = btnCMEditMode1.Checked = true;
|
||||
this.Refresh();
|
||||
return;
|
||||
}
|
||||
@@ -3338,10 +3346,43 @@ namespace Volian.Controls.Library
|
||||
public void SetupAdminMode()
|
||||
{
|
||||
}
|
||||
|
||||
//C2019-036 View Only mode work with Checked Out Procedures
|
||||
public event StepTabRibbonEvent EnableDisableStepProperties;
|
||||
private void OnEnableDisableStepProperties(StepTabRibbonEventArgs args)
|
||||
{
|
||||
if (EnableDisableStepProperties != null)
|
||||
EnableDisableStepProperties(this, args);
|
||||
}
|
||||
private void btnToggleEditView_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (MyEditItem == null) return;
|
||||
|
||||
//C2019-036 View Only mode work with Checked Out Procedures
|
||||
string message = string.Empty;
|
||||
if (MyEditItem.MyStepPanel.VwMode == E_ViewMode.View && !MySessionInfo.CanCheckOutItem(MyEditItem.MyItemInfo.MyProcedure.ItemID, CheckOutType.Procedure, ref message))
|
||||
{
|
||||
//someone else has the procedure checked out so cannot swap out of view only mode
|
||||
message = message.Replace("\r\nWould You like to open the procedure in View Only Mode?", "\r\n\r\nYou will be unable to turn off View Only Mode for this procedure until it is checked in by the user specified above.");
|
||||
MessageBox.Show(this, message, "Procedure Already Checked Out", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
return;
|
||||
}
|
||||
else if (MyEditItem.MyStepPanel.VwMode == E_ViewMode.View)
|
||||
{
|
||||
//swapping into edit mode, so check out procedure and Setup Security
|
||||
(this.Parent as StepTabPanel).MyDisplayTabItem.OwnerID = MySessionInfo.CheckOutItem(MyEditItem.MyItemInfo.MyProcedure.ItemID, 0);
|
||||
(this.Parent as StepTabPanel).MyDisplayTabItem.SetupSecurity(MyItemInfo);
|
||||
}
|
||||
else
|
||||
{
|
||||
//swapping into View Only mode, so check in procedure
|
||||
OwnerInfo oi = OwnerInfo.GetByItemID(MyEditItem.MyItemInfo.MyProcedure.ItemID, CheckOutType.Procedure);
|
||||
MySessionInfo.CheckInItem(oi.OwnerID);
|
||||
}
|
||||
|
||||
MyEditItem.MyStepPanel.VwMode = MyEditItem.MyStepPanel.VwMode == E_ViewMode.Edit ? E_ViewMode.View : E_ViewMode.Edit;
|
||||
//enable / disable the Step Properties Panel based on the ViewMode
|
||||
OnEnableDisableStepProperties(new StepTabRibbonEventArgs(MyEditItem.MyItemInfo, 0, MyEditItem.MyStepPanel.VwMode));
|
||||
MyEditItem.ToggleEditView(MyEditItem.MyStepPanel.VwMode);
|
||||
SetButtonAndMenuEnabling(true);
|
||||
SetStepButtonAndMenuEnabling(true);
|
||||
@@ -3355,7 +3396,62 @@ namespace Volian.Controls.Library
|
||||
// btnEnhancedDocSync.Checked = !btnEnhancedDocSync.Checked;
|
||||
//}
|
||||
|
||||
//C2019-036 View Only mode work with Checked Out Procedures
|
||||
// using a blocking collection to make it thread safe in case someone
|
||||
// spams hitting the refresh button
|
||||
private BlockingCollection<bool> blockingRefreshProcedure = new BlockingCollection<bool>();
|
||||
|
||||
//C2019-036 View Only mode work with Checked Out Procedures
|
||||
private void btnRefreshProcedure_Click(object sender, EventArgs e)
|
||||
{
|
||||
//Consumer
|
||||
Task.Run(() =>
|
||||
{
|
||||
//Blocks until a newRefresh Procedure Run is available
|
||||
while (!blockingRefreshProcedure.IsCompleted)
|
||||
{
|
||||
_ = blockingRefreshProcedure.Take();
|
||||
RefreshProcedure();
|
||||
}
|
||||
});
|
||||
|
||||
//Producer
|
||||
Task.Run(() => { blockingRefreshProcedure.Add(true); });
|
||||
}
|
||||
|
||||
public void RefreshProcedure()
|
||||
{
|
||||
StepTabPanel stab_Panel = Parent as StepTabPanel;
|
||||
|
||||
if (MyEditItem != null)
|
||||
{
|
||||
if (!MyEditItem.MyStepPanel.ContainsFocus)
|
||||
this.Invoke((Action)(() => { MyEditItem.MyStepPanel.Focus(); }));
|
||||
|
||||
E_ViewMode mode = MyEditItem.MyStepPanel.VwMode;
|
||||
Application.DoEvents();
|
||||
this.Invoke((Action)(() => {MyEditItem.MyStepPanel.ResetAll();}));
|
||||
Application.DoEvents();
|
||||
this.Invoke((Action)(() => {MyEditItem.MyStepPanel.Refresh();}));
|
||||
Application.DoEvents();
|
||||
MyEditItem.MyStepPanel.VwMode = mode;
|
||||
Application.DoEvents();
|
||||
}
|
||||
else if (stab_Panel != null)
|
||||
{
|
||||
if (!stab_Panel.MyStepPanel.ContainsFocus)
|
||||
this.Invoke((Action)(() => {stab_Panel.MyStepPanel.Focus();}));
|
||||
|
||||
E_ViewMode mode = stab_Panel.MyStepPanel.VwMode;
|
||||
Application.DoEvents();
|
||||
this.Invoke((Action)(() => {stab_Panel.MyStepPanel.ResetAll();}));
|
||||
Application.DoEvents();
|
||||
this.Invoke((Action)(() => {stab_Panel.MyStepPanel.Refresh();}));
|
||||
Application.DoEvents();
|
||||
stab_Panel.MyStepPanel.VwMode = mode;
|
||||
Application.DoEvents();
|
||||
}
|
||||
}
|
||||
private void btnROEdit_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (VlnSettings.ReleaseMode.Equals("DEMO"))
|
||||
@@ -4190,15 +4286,19 @@ namespace Volian.Controls.Library
|
||||
if (oring == eEventSource.Keyboard)
|
||||
_OringFlg = 1;
|
||||
|
||||
int selectedSlave = MyItemInfo.MyProcedure.ProcedureConfig.SelectedSlave;
|
||||
if (MyItemInfo == null) return; // if creating a pdf before rtb exists, return;
|
||||
if (MyEditItem != null) MyEditItem.SaveCurrentAndContents();
|
||||
MyItemInfo.MyProcedure.ProcedureConfig.SelectedSlave = selectedSlave;
|
||||
OnPrintRequest(new StepTabRibbonEventArgs(MyItemInfo.MyProcedure, _OringFlg), 0);
|
||||
}
|
||||
|
||||
private void btnPdfQuickCreate_Click(object sender, EventArgs e)
|
||||
{
|
||||
int selectedSlave = MyItemInfo.MyProcedure.ProcedureConfig.SelectedSlave;
|
||||
if (MyItemInfo == null) return; // if creating a pdf before rtb exists, return;
|
||||
if (MyEditItem != null) MyEditItem.SaveCurrentAndContents();
|
||||
MyItemInfo.MyProcedure.ProcedureConfig.SelectedSlave = selectedSlave;
|
||||
OnPrintRequest(new StepTabRibbonEventArgs(MyItemInfo.MyProcedure, _OringFlg), 1);
|
||||
}
|
||||
|
||||
@@ -4861,10 +4961,11 @@ namespace Volian.Controls.Library
|
||||
public class StepTabRibbonEventArgs : EventArgs
|
||||
{
|
||||
public StepTabRibbonEventArgs() { ; }
|
||||
public StepTabRibbonEventArgs(ItemInfo proc, int oringFlg = 0)
|
||||
public StepTabRibbonEventArgs(ItemInfo proc, int oringFlg = 0, E_ViewMode viewMode = E_ViewMode.Edit)
|
||||
{
|
||||
_Proc = proc;
|
||||
OringFlg = oringFlg;
|
||||
ViewMode = viewMode;
|
||||
}
|
||||
private ItemInfo _Proc;
|
||||
|
||||
@@ -4880,6 +4981,9 @@ namespace Volian.Controls.Library
|
||||
get { return _OringFlg; }
|
||||
set { _OringFlg = value; }
|
||||
}
|
||||
|
||||
//C2019-036 View Only mode work with Checked Out Procedures
|
||||
public E_ViewMode ViewMode { get; set; }
|
||||
}
|
||||
public delegate void StepTabRibbonEvent(object sender, StepTabRibbonEventArgs args);
|
||||
|
||||
|
||||
BIN
PROMS/Volian.Controls.Library/StepTabRibbon.designer.cs
generated
BIN
PROMS/Volian.Controls.Library/StepTabRibbon.designer.cs
generated
Binary file not shown.
115
PROMS/Volian.Controls.Library/TreeViewExtensions.cs
Normal file
115
PROMS/Volian.Controls.Library/TreeViewExtensions.cs
Normal 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
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -118,6 +118,7 @@
|
||||
<HintPath>..\..\..\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.Core.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="System.Design" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
@@ -295,6 +296,7 @@
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="TreeViewExtensions.cs" />
|
||||
<Compile Include="RTBItem.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
|
||||
@@ -1269,6 +1269,11 @@ namespace Volian.Controls.Library
|
||||
if (ok)
|
||||
if (pia == null && tn.VEObject as StepInfo == null) cm.MenuItems.Add("Properties...", new EventHandler(mi_Click));
|
||||
#endregion
|
||||
#region Refresh_Tree
|
||||
//C2021-035 Add Refresh Tree Option at highest level
|
||||
if (tn == (VETreeNode)Nodes[0])
|
||||
cm.MenuItems.Add("Refresh Tree", new EventHandler(mi_Click));
|
||||
#endregion
|
||||
//_MyLog.WarnFormat("Context Menu 7 - {0}", GC.GetTotalMemory(true));
|
||||
|
||||
if (fi != null && fi.HasWorkingDraft)
|
||||
@@ -2352,6 +2357,10 @@ namespace Volian.Controls.Library
|
||||
case "Print All Approved Procedures": //C2025-017 print all approved procedures
|
||||
OnPrintAllApprovedProcedures(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0));
|
||||
break;
|
||||
//C2021-035 Add Refresh Tree Option at highest level
|
||||
case "Refresh Tree":
|
||||
RefreshTree();
|
||||
break;
|
||||
default:
|
||||
if (mi.Text.StartsWith("Showing Change Bars Starting"))
|
||||
OnSelectDateToStartChangeBars(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0));
|
||||
@@ -3926,6 +3935,13 @@ namespace Volian.Controls.Library
|
||||
if (Processing != null)
|
||||
Processing(this, new vlnTreeStatusEventArgs(status, message));
|
||||
}
|
||||
//C2021-035 Add Refresh Tree Option at highest level
|
||||
public event vlnTreeViewStatusEvent RefreshFormats;
|
||||
private void OnRefreshFormats(bool status, string message)
|
||||
{
|
||||
if (RefreshFormats != null)
|
||||
RefreshFormats(this, new vlnTreeStatusEventArgs(status, message));
|
||||
}
|
||||
#endregion
|
||||
#region SetLastValuesAndSaveIfChangedStuff
|
||||
private void SetLastValues(VETreeNode node)
|
||||
@@ -4648,6 +4664,36 @@ namespace Volian.Controls.Library
|
||||
if (myFolder.FolderID == ((FolderInfo)obj2).FolderID) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
//C2021-035 Add Refresh Tree Option at highest level
|
||||
public void RefreshTree()
|
||||
{
|
||||
//reload the base node
|
||||
VETreeNode tbase = (VETreeNode) Nodes[0];
|
||||
tbase.ChildrenLoaded = false;
|
||||
|
||||
//Refresh the formats
|
||||
OnRefreshFormats(true, "Refreshing Formats");
|
||||
|
||||
//reset the procedure lists so db is re-queried in case they changed
|
||||
//also clear other caches in case added steps / sections / etc...
|
||||
PartInfo.ClearPartInfoCache();
|
||||
ItemInfo.ClearItemInfoCache();
|
||||
DocVersionInfo.ResetAllProcedures();
|
||||
FolderInfo.ClearFolderInfoCache();
|
||||
|
||||
//Refresh the base VEPROMS object
|
||||
var fldr = tbase.VEObject as FolderInfo;
|
||||
if (fldr != null)
|
||||
{
|
||||
Invoke((Action)(() => { tbase.VEObject = FolderInfo.Get(fldr.FolderID); }));
|
||||
}
|
||||
|
||||
//refresh the tree
|
||||
Invoke((Action)(() => { tbase.RefreshNode(); }));
|
||||
this.Invoke((Action)(() => { this.Update(); }));
|
||||
}
|
||||
|
||||
}
|
||||
#region DragHelper
|
||||
public class DragHelper
|
||||
|
||||
@@ -49,7 +49,7 @@ namespace Volian.Print.Library
|
||||
{
|
||||
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
|
||||
AddSectionHeader(myContAct.MyParagraph.MyItemInfo.DisplayNumber, myContAct.MyParagraph.MyItemInfo.FormattedDisplayText);
|
||||
AddSectionHeader(myContAct.MyParagraph.MyItemInfo.DisplayNumber, myContAct.MyParagraph.MyItemInfo.FormattedDisplayText, myContAct.MyParagraph.MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.AccSectionData.ContinuousActionSummaryData.IncludeSectionLabel);
|
||||
foreach (pkParagraph pgh in myContAct.MyChildren) // within each section...
|
||||
{
|
||||
ItemInfo hlsii = GetHLSii(pgh.MyParagraph.MyItemInfo);
|
||||
@@ -175,7 +175,7 @@ namespace Volian.Print.Library
|
||||
WriteCell("DONE", true, true);
|
||||
WriteCell("PAGE", true, false);
|
||||
}
|
||||
private void AddSectionHeader(string number, string title)
|
||||
private void AddSectionHeader(string number, string title, bool IncludeSectionLabel)
|
||||
{
|
||||
if (!_FirstSection)
|
||||
{
|
||||
@@ -187,7 +187,10 @@ namespace Volian.Print.Library
|
||||
_FirstSection = false;
|
||||
Advance(2);
|
||||
SetIndent(0, 0);
|
||||
WriteCell("SECTION " + number, true, false);
|
||||
if (IncludeSectionLabel)
|
||||
WriteCell("SECTION " + number, true, false);
|
||||
else
|
||||
WriteCell(number, true, false); // F2025-038 don't include the word SECTION before number and title
|
||||
WriteCell(" " + title, false, true);
|
||||
Advance();
|
||||
}
|
||||
|
||||
@@ -1855,7 +1855,10 @@ namespace Volian.Print.Library
|
||||
if (doSectionContinue) DoTopContinueMsg(cb, ref yPageStart, yTopMargin, docstyle, null);
|
||||
// If "ContinueSectionHeader" (format flag) is true then print the section title with "(Continued)" appended to it
|
||||
// B2020-164 added check for SpecialCaseCalvert to bypass IsSeparateSubsection STP O-67B-2 step 6.5
|
||||
if ((!MyItemInfo.IsSection || MyItemInfo.IsSubsection) &&
|
||||
// B2025-060 no section continue message if previous was not in same section or sub-section
|
||||
// fixes Vogtle units 3&4 3-AOP-116 Attachments 2 & 3
|
||||
if ((!MyItemInfo.IsSection || MyItemInfo.IsSubsection) &&
|
||||
(MyItemInfo.MyPrevious != null && MyItemInfo.ActiveSection == MyItemInfo.MyPrevious.ActiveSection) &&
|
||||
MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.StepSectionData.ContinueSectionHeader &&
|
||||
(!MyItemInfo.IsSection || (MyItemInfo.IsSeparateSubsection || MyItemInfo.ActiveFormat.PlantFormat.FormatData.PrintData.SpecialCaseCalvert)))
|
||||
{
|
||||
@@ -6453,8 +6456,11 @@ namespace Volian.Print.Library
|
||||
{
|
||||
if (itemInfo.MyDocStyle.AlignHLSTabWithSect || itemInfo.FormatStepData.AlignHLSTabWithSectOvride)
|
||||
{
|
||||
float orgXOffset = MyTab.XOffset;
|
||||
myTab.XOffset = (float)itemInfo.MyDocStyle.Layout.LeftMargin + (float)formatInfo.PlantFormat.FormatData.SectData.SectionHeader.Pos;
|
||||
XOffset = myTab.XOffset + myTab.Width;
|
||||
// F2025-040 Adjust the Cont Act box position around HLS number
|
||||
if (myTab.MyMacro != null) myTab.MyMacro.XOffset += (MyTab.XOffset - orgXOffset);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user