Compare commits

...

50 Commits

Author SHA1 Message Date
41e969f79e C2025-015 Added logic to make approved PDF names unique to allow procedures from different sets or different revs of the same procedure to be opened (viewed) at the same time. 2025-08-12 09:21:26 -04:00
7b3f78f745 Merge pull request 'B2025-038-Copy-a-step-between-two-screens' (#591) from B2025-038-Copy-a-step-between-two-screens into Development
ready for testing phase
2025-08-12 08:45:59 -04:00
14bc171246 B2025-038-Copy-a-step-between-two-screens 2025-08-12 08:09:38 -04:00
a584c0751e Merge pull request 'C2025-024' (#590) from C2025-024 into Development
good for testing phase
2025-08-08 10:18:59 -04:00
3d7528e069 Merge branch 'Development' into C2025-024 2025-08-08 09:56:33 -04:00
58cc75ef71 C2025-024
Fix merge conflict
2025-08-08 09:44:51 -04:00
b5a9462e95 C2025-024 Electronic Procedures - Phase 2 (PROMS XML output)
Fix Regular Expression RO Resolution for when multi ROs  and multi-unit
2025-08-06 14:41:15 -04:00
1bc421ac6d Merge pull request 'B2025-036-SplitScreen-Print-Error' (#587) from B2025-036-SplitScreen-Print-Error into Development
ready for testing
2025-08-06 11:37:03 -04:00
ad0d091b49 B2025-036-SplitScreen-Print-Error 2025-08-06 11:28:28 -04:00
22de686a44 B2025-036-SplitScreen-Print-Error 2025-08-06 11:25:44 -04:00
3e7eb09758 Merge pull request 'C2025-039 Per the customer’s request, adjusted the “{Proc Num} (Procedure Number Only)" transition type in the Beaver Valley formats so that a procedure that contains only Word sections can be referenced.' (#586) from C2025-039_allowStepTransToAllWordProc into Development
format only change - ready for testing
2025-08-04 10:31:38 -04:00
e2a276085b C2025-039 Per the customer’s request, adjusted the “{Proc Num} (Procedure Number Only)" transition type in the Beaver Valley formats so that a procedure that contains only Word sections can be referenced. 2025-08-04 10:30:20 -04:00
d561c579e0 Merge pull request 'C2025-047-cleanup' (#585) from C2025-047-cleanup into Development
good for testing
2025-08-01 14:58:51 -04:00
371d117746 C2025-047-cleanup 2025-08-01 14:44:48 -04:00
28c681a562 C2025-024 Electronic Procedures Phase 2 - XML Export
Enhanced Doc Links
2025-08-01 13:53:08 -04:00
2131efb522 Merge pull request 'C2025-047-AnnotationsTypeSelectChanges' (#583) from C2025-047-AnnotationsTypeSelectChanges into Development
good for testing phase
2025-08-01 10:13:46 -04:00
6e20774edf C2025-047-AnnotationsTypeSelectChanges 2025-08-01 07:34:33 -04:00
a7c7744ff3 C2025-047-AnnotationsTypeSelectChanges 2025-07-31 23:06:29 -04:00
019aefbc61 Merge pull request 'SQL optimization to use AnnotationTypeSelections Index' (#582) from SQL_Optimization_7_31_2025 into Development
good for testing phase
2025-07-31 11:03:14 -04:00
81a23305ba SQL optimization to used AnnotationTypeSelections Index 2025-07-31 10:48:39 -04:00
4001abff02 Merge pull request 'C2025-027-AnnotationsTypeSelect-3' (#581) from C2025-027-AnnotationsTypeSelect-3 into Development
good for testing phase
2025-07-31 08:49:37 -04:00
25bfbeb8d6 C2025-027-AnnotationsTypeSelect-3 2025-07-30 23:05:11 -04:00
44025c3978 C2025-024 Electronic Procedures Phase 2 - XML Export
Multi-Unit Resolution, and Fix RO Annotation resolution in Text
2025-07-30 13:47:25 -04:00
a3aa9747b8 Merge pull request 'C2025-027-AnnotationsTypeSelect-2' (#580) from C2025-027-AnnotationsTypeSelect-2 into Development
good for testing phase
2025-07-30 11:28:55 -04:00
009243b091 C2025-027-AnnotationsTypeSelect-2 2025-07-30 11:18:33 -04:00
e31e0b6680 C2025-027-AnnotationsTypeSelect-2 2025-07-30 10:58:58 -04:00
449bb2522b C2025-027-AnnotationsTypeSelect-2 2025-07-30 10:25:07 -04:00
453dce9520 Merge pull request 'C2025-027-AnnotationsTypeSelect' (#574) from C2025-027-AnnotationsTypeSelect into Development
good for the testing phase
2025-07-30 08:23:06 -04:00
655592186b C2025-027-AnnotationsTypeSelect 2025-07-29 22:54:44 -04:00
1ebf67233b C2025-027-AnnotationsTypeSelect 2025-07-29 15:34:13 -04:00
1588dabcbe Merge pull request 'C2025-044 Update PROMS Fixes to be SQL 2016 compatible' (#579) from C2025-044 into Development
good for testing phase
2025-07-29 15:18:37 -04:00
09d3995e6c C2025-044 Update PROMS Fixes to be SQL 2016 compatible 2025-07-29 15:12:51 -04:00
db20385a6d Merge pull request 'DEV_Proj_File_Dependency_Update' (#578) from DEV_Proj_File_Dependency_Update into Development
Good to use. - no testing required this update is for developers only.
2025-07-29 10:06:11 -04:00
d701935ddf DEV_Proj_File_Dependency_Update
Visual Studio 2022 changed the default build order --- this will alow rebuild all in VS2022
2025-07-29 09:21:51 -04:00
d3888e3c32 C2025-027-AnnotationsTypeSelect 2025-07-29 09:20:58 -04:00
94f0795247 Merge pull request 'B2025-039 Needed to include the Blue color to the RTF color table for formats that use a proportional font.' (#577) from B2025-039_PropFontColorRplWrds into Development
Looks Good.

Ready for QA Testing.
2025-07-28 16:14:29 -04:00
4def73d738 B2025-039 Needed to include the Blue color to the RTF color table for formats that use a proportional font. 2025-07-28 16:06:55 -04:00
8c32d18aec C2025-024 Electronic Procedures Phase 2 - XML Export
Multi-Unit RO Resolution
2025-07-24 08:08:18 -04:00
20c31153de C2025-024 Electronic Procedures Phase 2 - XML Export
Multi-Unit RO Resolution
2025-07-23 15:26:45 -04:00
ecb9a805e5 C2025-024 Electronic Procedures Phase 2 - XML Export
UI / menu filtering for EP only procedures
2025-07-21 13:47:23 -04:00
0577acad93 C2025-024 Electronic Procedures Phase 2 - XML Export
Removed unnecessary usings
2025-07-18 16:13:16 -04:00
d7f83fa4d4 C2025-024 Electronic Procedures Phase 2 - XML Export
Export Cleanup
2025-07-18 14:52:05 -04:00
4c4f4d52d2 C2025-024 Electronic Procedures Phase 2 - XML Export
Code refactor and added comment
2025-07-18 13:26:16 -04:00
0bf9025c0d C2025-024 Electronic Procedures Phase 2 - XML Export
Multi-unit
2025-07-17 13:59:11 -04:00
2784b57a05 C2025-023 - Electronic Procedures - Modifications to PROMS
Working on multiunit for DB Sequence
2025-07-16 14:23:55 -04:00
b9fc9748c7 C2025-024 Electronic Procedures Phase 2 - XML Export
set RO Location code for pre-existing RO usages
2025-07-16 10:09:01 -04:00
ec25f6426a C2025-024 Electronic Procedures Phase 2 - XML Export
Export code cleanup and initial set RO Location code
2025-07-15 13:43:19 -04:00
00283b4f28 C2025-024 Electronic Procedures Phase 2 - XML Export
Export code cleanup and initial set RO Location code
2025-07-15 13:31:12 -04:00
ec8e4c36a4 C2025-024 Electronic Procedures - Phase 2 (PROMS XML output)
RO image resolution for Annotations
2025-07-11 15:26:22 -04:00
92522b1229 C2025-024 Electronic Procedures - Phase 2 (PROMS XML output)
Initial check-in / adding ui options / base for export
2025-06-30 14:32:24 -04:00
33 changed files with 1522 additions and 2186 deletions

View File

@@ -180,6 +180,7 @@
<Content Include="fmtall\CPL_03all.xml" /> <Content Include="fmtall\CPL_03all.xml" />
<Content Include="fmtall\CPSAMGDataall.xml" /> <Content Include="fmtall\CPSAMGDataall.xml" />
<Content Include="fmtall\CPSAMGDEVall.xml" /> <Content Include="fmtall\CPSAMGDEVall.xml" />
<Content Include="fmtall\EPTSTBCK1all.xml" />
<Content Include="fmtall\EPTST1all.xml" /> <Content Include="fmtall\EPTST1all.xml" />
<Content Include="fmtall\CWEall.xml" /> <Content Include="fmtall\CWEall.xml" />
<Content Include="fmtall\CWEDEVall.xml" /> <Content Include="fmtall\CWEDEVall.xml" />

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -63,18 +63,21 @@ namespace VEPROMS
lstFrom.Items.Remove(item); lstFrom.Items.Remove(item);
} }
SetButtonsEditable(); SetButtonsEditable();
btnUpdate.Enabled = true;
} }
// Move all items to lstSelected. // Move all items to lstSelected.
private void btnSelectAll_Click(object sender, EventArgs e) private void btnSelectAll_Click(object sender, EventArgs e)
{ {
MoveAllItems(lstUnselected, lstSelected); MoveAllItems(lstUnselected, lstSelected);
btnUpdate.Enabled = true;
} }
// Move all items to lstUnselected. // Move all items to lstUnselected.
private void btnDeselectAll_Click(object sender, EventArgs e) private void btnDeselectAll_Click(object sender, EventArgs e)
{ {
MoveAllItems(lstSelected, lstUnselected); MoveAllItems(lstSelected, lstUnselected);
btnUpdate.Enabled = true;
} }
// Move all items from one ListBox to another. // Move all items from one ListBox to another.
@@ -83,6 +86,7 @@ namespace VEPROMS
lstTo.Items.AddRange(lstFrom.Items); lstTo.Items.AddRange(lstFrom.Items);
lstFrom.Items.Clear(); lstFrom.Items.Clear();
SetButtonsEditable(); SetButtonsEditable();
btnUpdate.Enabled = true;
} }
// Enable and disable buttons. // Enable and disable buttons.
@@ -93,8 +97,7 @@ namespace VEPROMS
// Save selected list to DB. // Save selected list to DB.
private void btnUpdate_Click(object sender, EventArgs e) private void btnUpdate_Click(object sender, EventArgs e)
{ {
DataTable dt2 = coverToTable(UserID); saveChanges();
VEPROMS.CSLA.Library.AnnotationstypeSelections.Update(dt2);
} }
public class AnnotataionItem public class AnnotataionItem
{ {
@@ -145,36 +148,56 @@ namespace VEPROMS
lstSelected.DisplayMember = "NameStr"; lstSelected.DisplayMember = "NameStr";
lstSelected.ValueMember = "TypeID"; lstSelected.ValueMember = "TypeID";
DataTable lstSelectedTbl = VEPROMS.CSLA.Library.AnnotationstypeSelections.Retrieve(UserID); DataTable lstSelectedTbl = VEPROMS.CSLA.Library.AnnotationstypeSelections.Retrieve(UserID);
if (lstSelectedTbl.Rows.Count > 0)
{
foreach (DataRow lstSelectedRow in lstSelectedTbl.Rows) foreach (DataRow lstSelectedRow in lstSelectedTbl.Rows)
{ {
lstSelected.Items.Add(new AnnotataionItem(lstSelectedRow["Name"].ToString(), (int)lstSelectedRow["TypeID"])); lstSelected.Items.Add(new AnnotataionItem(lstSelectedRow["Name"].ToString(), (int)lstSelectedRow["TypeID"]));
} }
} btnUpdate.Enabled = false;
} }
private void btnCancel_Click_1(object sender, EventArgs e) private void btnCancel_Click_1(object sender, EventArgs e)
{ {
if (btnUpdate.Enabled == true)
{
string message = "Changes have not yet been saved. Do you want to save the changes prior to closing?";
string title = "Save Annotation Selections";
MessageBoxButtons buttons = MessageBoxButtons.YesNo;
DialogResult result = MessageBox.Show(message, title, buttons);
if (result == DialogResult.Yes)
{
saveChanges();
this.Close(); this.Close();
} }
else
private DataTable coverToTable(string userid) {
this.Close();
}
}
else
{
this.Close();
}
}
private DataTable coverToTable()
{ {
int RowID = 0;
DataTable dt = new DataTable(); DataTable dt = new DataTable();
dt.Columns.Add("TypeID", typeof(Int32)); dt.Columns.Add("TypeID", typeof(Int32));
dt.Columns.Add("NameStr", typeof(string));
dt.Columns.Add("UserID", typeof(string));
dt.Columns.Add("RowID", typeof(string));
foreach (AnnotataionItem item in lstSelected.Items.OfType<AnnotataionItem>()) foreach (AnnotataionItem item in lstSelected.Items.OfType<AnnotataionItem>())
{ {
++RowID; dt.Rows.Add(item.TypeID);
dt.Rows.Add(item.TypeID, item.NameStr, userid, RowID);
} }
return dt; return dt;
} }
private void saveChanges()
{
DataTable dt2 = coverToTable();
VEPROMS.CSLA.Library.AnnotationstypeSelections.Update(dt2, UserID);
btnUpdate.Enabled = false;
}
} }
} }

View File

@@ -24024,7 +24024,7 @@ Begin -- Rofst Tables
CONSTRAINT [PK_EPFormats] PRIMARY KEY CLUSTERED CONSTRAINT [PK_EPFormats] PRIMARY KEY CLUSTERED
( (
[FormatID] ASC [FormatID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
IF (@@Error = 0) PRINT 'Table Creation: [EPFormats] Succeeded' IF (@@Error = 0) PRINT 'Table Creation: [EPFormats] Succeeded'
@@ -24074,15 +24074,7 @@ ELSE
GO GO
-- C2025-027 Annotation Type Filtering -- C2025-027 Annotation Type Filtering
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[AnnotationTypeSelections]') AND type in (N'U'))
DROP TABLE [dbo].[AnnotationTypeSelections]
GO
/****** Object: Table [dbo].[AnnotationTypeSelections] Script Date: 7/10/2025 2:38:23 PM ******/ /****** Object: Table [dbo].[AnnotationTypeSelections] Script Date: 7/10/2025 2:38:23 PM ******/
SET ANSI_NULLS ON SET ANSI_NULLS ON
GO GO
@@ -24095,28 +24087,36 @@ GO
-- Create date: 07/10/2025 -- Create date: 07/10/2025
-- Description: Store user Annotation selections for annotation filter. -- Description: Store user Annotation selections for annotation filter.
-- ============================================= -- =============================================
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[AnnotationTypeSelections]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[AnnotationTypeSelections]( CREATE TABLE [dbo].[AnnotationTypeSelections](
[ASTypeID] [int] IDENTITY(1,1) NOT NULL, [ASTypeID] [int] IDENTITY(1,1) NOT NULL,
[TypeID] [int] NULL, [TypeID] [int] NULL,
[UsrID] [varchar](50) NULL, [UserID] [varchar](50) NULL,
[Name] [nvarchar](100) NULL, [LastChanged] [datetime] NULL,
[Config] [nvarchar](max) NULL, CONSTRAINT [PK_AnnotationTypeSelections] PRIMARY KEY CLUSTERED
[DTS] [datetime] NULL, ([ASTypeID] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
[UserID] [nvarchar](100) NULL, ) ON [PRIMARY]
[LastChanged] [timestamp] NULL END
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
IF OBJECT_ID('DF_AnnotationTypeSelections_LastChanged', 'D') IS NULL
ALTER TABLE AnnotationTypeSelections ADD CONSTRAINT [DF_AnnotationTypeSelections_LastChanged] DEFAULT (getdate()) for [LastChanged];
GO GO
IF EXISTS (SELECT * FROM sys.indexes WHERE name='idx_AnnotationTypeSelections_UsrID' IF EXISTS (SELECT * FROM sys.indexes WHERE name='idx_AnnotationTypeSelections_UserIDTypeID'
AND object_id = OBJECT_ID('[dbo].[AnnotationTypeSelections]')) AND object_id = OBJECT_ID('[dbo].[AnnotationTypeSelections]'))
begin begin
DROP INDEX [idx_AnnotationTypeSelections_UsrID] ON [dbo].[AnnotationTypeSelections]; DROP INDEX [idx_AnnotationTypeSelections_UserIDTypeID] ON [dbo].[AnnotationTypeSelections];
end end
CREATE NONCLUSTERED INDEX idx_AnnotationTypeSelections_UsrID CREATE UNIQUE INDEX [idx_AnnotationTypeSelections_UserIDTypeID] ON [dbo].[AnnotationTypeSelections]
ON [dbo].[AnnotationTypeSelections] (UsrID) (
INCLUDE (TypeID, Name) [UserID] ASC,
[TypeID] ASC
)
INCLUDE (ASTypeID)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO GO
-- C2025-027 Annotation Type Filtering -- C2025-027 Annotation Type Filtering
@@ -24136,16 +24136,18 @@ CREATE PROCEDURE [dbo].[getAnnotationSelectListTypes]
WITH EXECUTE AS OWNER WITH EXECUTE AS OWNER
AS AS
SELECT SELECT
[TypeID], AT.[TypeID],
[Name], AT.[Name],
[Config], AT.[Config],
[DTS], AT.[DTS],
[UserID], AT.[UserID],
[LastChanged], AT.[LastChanged],
(SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[TypeID]= [TypeID]) [AnnotationCount], (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[TypeID]= AT.[TypeID]) [AnnotationCount],
[IsEPAnnotationType] AT.[IsEPAnnotationType]
FROM [AnnotationTypes] --A FROM [AnnotationTypes] AT
WHERE TypeID NOT IN (SELECT TypeID FROM AnnotationTypeSelections WHERE UsrID = @UserID) LEFT OUTER JOIN AnnotationTypeSelections ATS
ON ATS.TypeID = AT.TypeID AND ATS.UserID = @UserID
WHERE ATS.ASTypeID IS NULL
GO GO
-- C2025-027 Annotation Type Filtering -- C2025-027 Annotation Type Filtering
@@ -24171,18 +24173,19 @@ AS
BEGIN BEGIN
SELECT [ASTypeID] SELECT [ASTypeID]
,ATS.[TypeID] ,ATS.[TypeID]
,[UsrID] ,ATS.[UserID]
,AT.[Name] ,AT.[Name]
,AT.[Config] ,AT.[Config]
,ATS.[DTS] ,ATS.[LastChanged]
,AT.[UserID] ,AT.[UserID]
,AT.[IsEPAnnotationType] ,AT.[IsEPAnnotationType]
FROM [dbo].[AnnotationTypeSelections] ATS FROM [dbo].[AnnotationTypeSelections] ATS
INNER JOIN AnnotationTypes AT ON AT.TypeID = ATS.TypeID INNER JOIN AnnotationTypes AT ON AT.TypeID = ATS.TypeID
WHERE UsrID = @UsrID WHERE ATS.UserID = @UsrID
END END
GO GO
-- C2025-027 Annotation Type Filtering -- C2025-027 Annotation Type Filtering
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAnnotationstypeFiltered]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAnnotationstypeFiltered]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
DROP PROCEDURE [getAnnotationstypeFiltered]; DROP PROCEDURE [getAnnotationstypeFiltered];
@@ -24200,19 +24203,19 @@ CREATE PROC [dbo].[getAnnotationstypeFiltered]
) )
AS AS
BEGIN BEGIN
IF((SELECT count(TypeID) FROM AnnotationTypeSelections WHERE UsrID = @UsrID) > 0) IF((SELECT count(TypeID) FROM AnnotationTypeSelections WHERE UserID = @UsrID) > 0)
BEGIN BEGIN
SELECT [ASTypeID] SELECT [ASTypeID]
,ATS.[TypeID] ,ATS.[TypeID]
,[UsrID] ,ATS.[UserID]
,AT.[Name] ,AT.[Name]
,AT.[Config] ,AT.[Config]
,ATS.[DTS] ,ATS.[LastChanged]
,AT.[UserID] ,AT.[UserID]
,AT.[IsEPAnnotationType] ,AT.[IsEPAnnotationType]
FROM [dbo].[AnnotationTypeSelections] ATS FROM [dbo].[AnnotationTypeSelections] ATS
INNER JOIN AnnotationTypes AT ON AT.TypeID = ATS.TypeID INNER JOIN AnnotationTypes AT ON AT.TypeID = ATS.TypeID
WHERE UsrID = @UsrID WHERE ATS.UserID = @UsrID
END END
ELSE ELSE
BEGIN BEGIN
@@ -24241,14 +24244,8 @@ IF EXISTS( SELECT * FROM INFORMATION_SCHEMA.DOMAINS WHERE Domain_Name = 'TableVa
DROP TYPE [dbo].[TableValAnnotTypeSelections] DROP TYPE [dbo].[TableValAnnotTypeSelections]
CREATE TYPE [dbo].[TableValAnnotTypeSelections] AS TABLE( CREATE TYPE [dbo].[TableValAnnotTypeSelections] AS TABLE(
[TypeID] [int] NOT NULL, [TypeID] [int] NOT NULL
[NameStr] [varchar](200) NULL,
[UserID] [varchar](50) NULL,
[RowID] [int] NOT NULL,
PRIMARY KEY CLUSTERED
(
[RowID] ASC
)WITH (IGNORE_DUP_KEY = OFF)
) )
GO GO
@@ -24261,28 +24258,30 @@ GO
-- ============================================= -- =============================================
CREATE PROC [dbo].[UpdateAnnotationstypeSelections] CREATE PROC [dbo].[UpdateAnnotationstypeSelections]
( (
@TempTable AS dbo.TableValAnnotTypeSelections READONLY @TempTable AS dbo.TableValAnnotTypeSelections READONLY,
@UserID [varchar](50) NULL
) )
AS AS
BEGIN BEGIN
DECLARE @cnt integer = 0
DECLARE @cnt2 integer = 0
SET @cnt = (SELECT count(*) from @TempTable)
DECLARE @UserID VARCHAR(50) = (SELECT TOP 1 UserID FROM @TempTable)
DELETE FROM AnnotationTypeSelections WHERE usrID = @UserID;
declare @i int
select @i = min(RowID) from @TempTable
declare @max int
select @max = max(RowID) from @TempTable
WHILE @i <= @max DELETE FROM AnnotationTypeSelections where UserID = @UserID
BEGIN AND
INSERT INTO AnnotationTypeSelections (TypeID, Name, Usrid) TypeID not in
select TypeID, NameStr, UserID from @TempTable where RowID = @i (Select TypeID From @TempTable tmp)
set @i = @i + 1
END --this would insert all the ones that are in the uploaded table and not already in AnnotationTypeSelections
Insert INTO AnnotationTypeSelections (TypeID, UserID)
Select tmp.TypeID, @UserID
FROM
@TempTable tmp
LEFT OUTER JOIN
AnnotationTypeSelections ATS on ATS.TypeID = tmp.TypeID
AND ATS.UserID = @UserID
where
ATS.ASTypeID IS NULL
END END
GO GO
@@ -24328,8 +24327,8 @@ BEGIN TRY -- Try Block
DECLARE @RevDate varchar(255) DECLARE @RevDate varchar(255)
DECLARE @RevDescription varchar(255) DECLARE @RevDescription varchar(255)
set @RevDate = '07/10/2025 2:30 PM' set @RevDate = '07/31/2025 10:30 AM'
set @RevDescription = 'C2025-027 Annotation Type Filtering' set @RevDescription = 'SQL Optimization'
Select cast(@RevDate as datetime) RevDate, @RevDescription RevDescription Select cast(@RevDate as datetime) RevDate, @RevDescription RevDescription
PRINT 'SQL Code Revision ' + @RevDate + ' - ' + @RevDescription PRINT 'SQL Code Revision ' + @RevDate + ' - ' + @RevDescription

View File

@@ -175,6 +175,9 @@
<Compile Include="dlgCheckedOutProcedure.designer.cs"> <Compile Include="dlgCheckedOutProcedure.designer.cs">
<DependentUpon>dlgCheckedOutProcedure.cs</DependentUpon> <DependentUpon>dlgCheckedOutProcedure.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="dlgExportImportEP.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="dlgMSWordMessage.cs"> <Compile Include="dlgMSWordMessage.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>

View File

@@ -123,7 +123,7 @@ namespace VEPROMS
this.btnUpdate.Name = "btnUpdate"; this.btnUpdate.Name = "btnUpdate";
this.btnUpdate.Size = new System.Drawing.Size(100, 35); this.btnUpdate.Size = new System.Drawing.Size(100, 35);
this.btnUpdate.TabIndex = 8; this.btnUpdate.TabIndex = 8;
this.btnUpdate.Text = "Update"; this.btnUpdate.Text = "Save";
this.btnUpdate.UseVisualStyleBackColor = true; this.btnUpdate.UseVisualStyleBackColor = true;
this.btnUpdate.Click += new System.EventHandler(this.btnUpdate_Click); this.btnUpdate.Click += new System.EventHandler(this.btnUpdate_Click);
// //
@@ -203,7 +203,7 @@ namespace VEPROMS
this.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.Name = "dlgAnnotationsSelect"; this.Name = "dlgAnnotationsSelect";
this.Text = "Select Annotation Types"; this.Text = "Filter Annotation Types";
this.Load += new System.EventHandler(this.DlgAnnotationsSelect_Load); this.Load += new System.EventHandler(this.DlgAnnotationsSelect_Load);
this.tableLayoutPanel1.ResumeLayout(false); this.tableLayoutPanel1.ResumeLayout(false);
this.ResumeLayout(false); this.ResumeLayout(false);

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,347 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Xml;
using VEPROMS.CSLA.Library;
namespace VEPROMS
{
//C2025-024 Electronic Procedures - Phase 2 (PROMS XML output)
//class inherits from normal import/export form
//then adds additional functionality
#pragma warning disable S101 // Types should be named in PascalCase
public partial class dlgExportImportEP : dlgExportImport
#pragma warning restore S101 // Types should be named in PascalCase
{
private readonly AnnotationTypeInfo _AnnotationType;
private readonly string multiseparator = ",";
private static Regex _ROAccPageTokenPattern = new Regex("[<][^<>-]+-[^<>]+[>]");
public dlgExportImportEP(string mode, FolderInfo folderInfo, frmVEPROMS myFrmVEPROMS, int annotationTypeId, int unitIndex = 0) : base(mode, folderInfo, myFrmVEPROMS, (E_UCFImportOptions)0, unitIndex)
{
_AnnotationType = AnnotationTypeInfo.Get(annotationTypeId);
_ExportBothConvertedandNot = true;
DocReplace = new Dictionary<int, byte[]>();
FormClosed += OnClose;
Text = $"{mode} Electronic Procedure ({_AnnotationType.Name}) Dialog for {folderInfo.Name}";
}
public dlgExportImportEP(string mode, DocVersionInfo docVersionInfo, frmVEPROMS myFrmVEPROMS, int annotationTypeId, int unitIndex = 0) : base(mode, docVersionInfo, myFrmVEPROMS, (E_UCFImportOptions)0, unitIndex)
{
_AnnotationType = AnnotationTypeInfo.Get(annotationTypeId);
_ExportBothConvertedandNot = true;
DocReplace = new Dictionary<int, byte[]>();
FormClosed += OnClose;
Text = $"{mode} Electronic Procedure ({_AnnotationType.Name}) Dialog for {docVersionInfo.Name} of {docVersionInfo.MyFolder.Name}";
}
public dlgExportImportEP(string mode, ProcedureInfo procedureInfo, frmVEPROMS myFrmVEPROMS, int annotationTypeId, int unitIndex = 0) : base(mode, procedureInfo, myFrmVEPROMS, (E_UCFImportOptions)0, unitIndex)
{
_AnnotationType = AnnotationTypeInfo.Get(annotationTypeId);
_ExportBothConvertedandNot = true;
DocReplace = new Dictionary<int, byte[]>();
FormClosed += OnClose;
Text = $"{mode} Electronic Procedure ({_AnnotationType.Name}) Dialog for {procedureInfo.DisplayNumber}";
}
//Overridden function to handle export of EP data
protected override void ExportEPAnnotationInfo(XmlElement xe, ItemInfo ii)
{
if (_UnitIndex > 0)
{
ii.MyDocVersion.DocVersionConfig.SelectedSlave = _UnitIndex;
ii.MyProcedure.MyDocVersion.DocVersionConfig.SelectedSlave = _UnitIndex;
}
//switch to handle customizations for different formats
switch (ii.ActiveFormat.PlantFormat.EPFormatFiles.Find(x => x.AnnotationTypeID == _AnnotationType.TypeID)?.Name)
{
default:
ExportEPAnnotationInfo_Default(xe, ii);
break;
}
ii.MyDocVersion.DocVersionConfig.SelectedSlave = 0;
ii.MyProcedure.MyDocVersion.DocVersionConfig.SelectedSlave = 0;
}
//default export of EP Data
private void ExportEPAnnotationInfo_Default(XmlElement xe, ItemInfo ii)
{
//Add tab text to item
string steptab = Volian.Print.Library.PDFReport.BuildStepTab(ii);
xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "StepTab", steptab));
//Add db sequence to item
string dbsequence = dbSeq(ii);
xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dbsequence", dbsequence));
//get first transition in item and add it as an xml element
if (ii.MyContent.ContentTransitionCount > 0)
{
TransitionInfo ct = ii.MyContent.ContentTransitions[0];
xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "TransitionToItemID", ct.ToID.ToString()));
xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "TransitionTodbsequence", dbSeq(ct.ToID)));
}
//export EP annotation details under an EPInfo node
if (ii.ItemAnnotations != null)
{
XmlElement xepinfo = xe.OwnerDocument.CreateElement("EPInfo");
EPFields myEPFields = ii.GetValidEPFields(_AnnotationType.TypeID);
ROFSTLookup lookup = ii.MyDocVersion.DocVersionAssociations[0].MyROFst.GetROFSTLookup(ii.MyDocVersion);
bool epexportblank = ii.EPexportblank(_AnnotationType.TypeID); //should blank xml elements export?
//grab the current RO db so will know location of RO files and default graphics ext.
using (RODbInfo myRODB = (RODbInfoList.Get()).FirstOrDefault(x => x.RODbID == ii.MyDocVersion.DocVersionAssociations[0].MyROFst.RODbID))
{
//For each annotation in the item that is of the current EP Annotation type
foreach (var EPAnnotation in ii.ItemAnnotations.Where(x => x.TypeID == _AnnotationType.TypeID))
{
var EPAnnotationConfig = new AnnotationConfig(EPAnnotation.Config);
XmlElement xepdetails = xe.OwnerDocument.CreateElement("Details");
//include the annotation ID for reference
xepdetails.Attributes.SetNamedItem(AddAttribute(xepdetails.OwnerDocument, "AnnotationID", EPAnnotation.AnnotationID.ToString()));
//loop through each EP Field - name the xml elements the EP.name
foreach (EPField EP in myEPFields)
{
string val = EPAnnotationConfig.GetValue("EP", EP.name);
if (epexportblank || !string.IsNullOrEmpty(val))
{
if (_UnitIndex != 0)
{
val = DisplayText.ResolveUnitSpecific(ii.MyDocVersion, val);
}
XmlElement xindivid = xe.OwnerDocument.CreateElement(EP.name);
//need to resolve ROs ROSingle, ROMulti, in text
//get values
switch (EP.type.ToLower())
{
case "text":
//for text, check if any embedded ROs
//if none, set the xml element to the text
//otherwise resolve the ROs
MatchCollection matches = _ROAccPageTokenPattern.Matches(val);
if (matches.Count == 0)
{
xindivid.InnerText = val;
}
else
{
//resolve ROs
//text ROs will replace the AccID key in the text
//for binary objects like images,
//we will keep the AccID in the text and output the binary as a separate child
//XML element with the same xml name as the AccID
foreach (Match m in matches)
{
ROFSTLookup.rochild roc = lookup.GetROChildByAccPageID(m.Groups[0].Value);
// Exclude replacing Images since are binary - for those, add a sub item
if (Enumerable.Range(8, 15).Contains(roc.type))
{
xindivid.InnerText = val;
XmlElement xroid = AddGraphic(xindivid, m.Groups[0].Value, roc, myRODB, roc.type != 8);
xindivid.AppendChild(xroid);
}
else if (!string.IsNullOrEmpty(roc.value))
{
bool convertCaretToDeltaSymbol = (ii.ActiveSection != null) && ii.ActiveSection.ActiveFormat.PlantFormat.FormatData.SectData.ConvertCaretToDelta;
string rocvalue = roc.value.Replace("`", "\xB0");
rocvalue = rocvalue.Replace("\xF8", "\xB0");
rocvalue = rocvalue.Replace("\x7F", "\x394"); //delta
if (convertCaretToDeltaSymbol) rocvalue = rocvalue.Replace("^", "\x394"); // delta
val = val.Replace($"{m.Groups[0].Value}", rocvalue);
xindivid.InnerText = val;
}
}
}
break;
case "rosingle":
//Get the output columns from the EPFormatFile
//set the "Item" nodes value = to those resolved items
//separated by multiseparator
XmlElement xindivid_rosingle = xindivid.OwnerDocument.CreateElement("Item");
xindivid_rosingle.Attributes.SetNamedItem(AddAttribute(xindivid_rosingle.OwnerDocument, "ROID", val));
//add values specified in EP input list
List<string> ro_single_tmp = EP.getROValuesList(EPAnnotation, val);
xindivid_rosingle.InnerText = String.Join(multiseparator, ro_single_tmp.ToArray());
//if image, add location and binary of image
// - images are type 8
// but if multiple return values could combine
// for example an text (1) + image (8) would be 9
ROFSTLookup.rochild roc_single = lookup.GetRoChild(val);
if (Enumerable.Range(8, 15).Contains(roc_single.type))
{
XmlElement xroid = AddGraphic(xindivid, val, roc_single, myRODB, roc_single.type != 8);
xindivid_rosingle.AppendChild(xroid);
}
xindivid.AppendChild(xindivid_rosingle);
break;
case "romulti":
//Get the output columns from the EPFormatFile
//create an "Item" subnode for each selected RO
//set the nodes value = to those resolved items
//separated by multiseparator
foreach (string ival in val.Split(multiseparator.ToCharArray()))
{
XmlElement xindivid_romulti = xindivid.OwnerDocument.CreateElement("Item");
xindivid_romulti.Attributes.SetNamedItem(AddAttribute(xindivid_romulti.OwnerDocument, "ROID", ival));
//add values specified in EP input list
List<string> ro_multi_tmp = EP.getROValuesList(EPAnnotation, ival);
xindivid_romulti.InnerText = String.Join(multiseparator, ro_multi_tmp.ToArray());
//if image, add location and binary of image
// - images are type 8
// but if multiple return values could combine
// for example an text (1) + image (8) would be 9
ROFSTLookup.rochild roc_multi = lookup.GetRoChild(ival);
if (Enumerable.Range(8, 15).Contains(roc_multi.type))
{
XmlElement xroid = AddGraphic(xindivid, ival, roc_multi, myRODB, roc_multi.type != 8);
xindivid_romulti.AppendChild(xroid);
}
xindivid.AppendChild(xindivid_romulti);
}
break;
case "tableinput":
xindivid.InnerText = val;
break;
default:
xindivid.InnerText = val;
break;
}
xepdetails.AppendChild(xindivid);
}
}
xepinfo.AppendChild(xepdetails);
}
}
xe.AppendChild(xepinfo);
}
}
//return a db sequence string from an Item ID
private string dbSeq(int itemID)
{
using (ItemInfo ii = ItemInfo.Get(itemID))
{
return dbSeq(ii);
}
}
//return a db sequence string from an ItemInfo
private string dbSeq(ItemInfo ii) => $"{((FolderInfo)ii.MyDocVersion.ActiveParent).Name}:{ii.MyProcedure.DisplayNumber} {ii.MyProcedure.DisplayText}:{ii.DBSequence}";
//For Exporting an RO that is an image
//returns the Location and FileName of the RO Image
private string GetROImageFileLocation(ROFSTLookup.rochild roc, RODbInfo rodb, bool isMulti)
{
string rodbpath = rodb.FolderPath;
string rocval = roc.value;
if (rocval == null) rocval = Array.Find(roc.children, x => x.value.Contains('.')).value;
if (rocval == null) return "";
string imgname;
if (isMulti)
{
imgname = rocval.Substring(rocval.IndexOf(' ') + 1, rocval.IndexOf("\r\n") - rocval.IndexOf(' ') - 1);
}
else
{
imgname = rocval.Substring(0, rocval.IndexOf('\n'));
}
int thedot = imgname.LastIndexOf('.');
string fname = imgname;
if (thedot == -1 || (thedot != (imgname.Length - 4)))
{
RODbConfig roDbCfg = new RODbConfig(rodb.Config);
fname += string.Format(".{0}", roDbCfg.GetDefaultGraphicExtension());
}
string imgfile = Path.Combine(rodbpath, fname);
return imgfile;
}
//For Exporting an RO that is an image
//returns an xmlElement
// - that is a child to xindivid
// - that has a name of Name
// - that has a value of the binary representation of the image
// - that has an attribute designating the location of the image file
private XmlElement AddGraphic(XmlElement xindivid, string Name, ROFSTLookup.rochild roc, RODbInfo rodb, bool isMulti)
{
Name = Name.Replace("<", "").Replace(">", "");
XmlElement xroid = xindivid.OwnerDocument.CreateElement(Name);
string imgfile = GetROImageFileLocation(roc, rodb, isMulti);
if (string.IsNullOrEmpty(imgfile)) return xroid;
xroid.Attributes.SetNamedItem(AddAttribute(xroid.OwnerDocument, "Location", imgfile));
if (File.Exists(imgfile))
{
using (FileStream fsIn = new FileStream(imgfile, FileMode.Open, FileAccess.Read, FileShare.Read))
{
// Create an instance of StreamReader that can read characters from the FileStream.
using (BinaryReader r = new BinaryReader(fsIn))
xroid.InnerText = Encoding.Default.GetString(r.ReadBytes((int)fsIn.Length));
}
}
return xroid;
}
//overridden - used to set the RO location for RO Images that are not in annotations
protected override void SetROLocation(ref XmlElement xindivid, ROFSTLookup.rochild roc, RODbInfo rodb, bool isMulti)
{
string imgfile = GetROImageFileLocation(roc, rodb, isMulti);
if (!string.IsNullOrEmpty(imgfile)) xindivid.Attributes.SetNamedItem(AddAttribute(xindivid.OwnerDocument, "Location", imgfile));
}
//overridden - used to set specific enhanced doc info
protected override void SetEPEnhancedDocLinks(ref XmlElement xe, ItemInfo ii)
{
EnhancedDocuments eds = ii.GetMyEnhancedDocuments();
if (eds != null && eds.Count == 1)
{
xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "EnhancedDocType", eds[0].Type.ToString()));
xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "EnhancedDocToItemID", eds[0].ItemID.ToString()));
xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "EnhancedDocToDbSeq", dbSeq(eds[0].ItemID)));
}
}
//clear objects to release memory
private void OnClose(object sender, EventArgs e)
{
DocReplace.Clear();
DocReplace = null;
}
}
}

View File

@@ -30,7 +30,7 @@ namespace VEPROMS
{ {
this.components = new System.ComponentModel.Container(); this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmSysOptions)); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmSysOptions));
this.btnCancel = new DevComponents.DotNetBar.ButtonX(); //this.btnCancel = new DevComponents.DotNetBar.ButtonX();
this.btnOK = new DevComponents.DotNetBar.ButtonX(); this.btnOK = new DevComponents.DotNetBar.ButtonX();
this.gpSystemColor = new DevComponents.DotNetBar.Controls.GroupPanel(); this.gpSystemColor = new DevComponents.DotNetBar.Controls.GroupPanel();
this.cbRibonBlack = new DevComponents.DotNetBar.Controls.CheckBoxX(); this.cbRibonBlack = new DevComponents.DotNetBar.Controls.CheckBoxX();
@@ -103,23 +103,23 @@ namespace VEPROMS
this.gpTransRangeColor.SuspendLayout(); this.gpTransRangeColor.SuspendLayout();
this.gpPropPageStyle.SuspendLayout(); this.gpPropPageStyle.SuspendLayout();
this.SuspendLayout(); this.SuspendLayout();
// ////
// btnCancel //// btnCancel
// ////
this.btnCancel.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton; //this.btnCancel.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; //this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.btnCancel.Location = new System.Drawing.Point(616, 591); //this.btnCancel.Location = new System.Drawing.Point(616, 591);
this.btnCancel.Margin = new System.Windows.Forms.Padding(2); //this.btnCancel.Margin = new System.Windows.Forms.Padding(2);
this.btnCancel.Name = "btnCancel"; //this.btnCancel.Name = "btnCancel";
this.btnCancel.Size = new System.Drawing.Size(56, 19); //this.btnCancel.Size = new System.Drawing.Size(56, 19);
this.btnCancel.TabIndex = 0; //this.btnCancel.TabIndex = 0;
this.btnCancel.Text = "Cancel"; //this.btnCancel.Text = "Cancel";
this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click); //this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click);
// //
// btnOK // btnOK
// //
this.btnOK.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton; this.btnOK.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
this.btnOK.Location = new System.Drawing.Point(542, 591); this.btnOK.Location = new System.Drawing.Point(616, 591);
this.btnOK.Margin = new System.Windows.Forms.Padding(2); this.btnOK.Margin = new System.Windows.Forms.Padding(2);
this.btnOK.Name = "btnOK"; this.btnOK.Name = "btnOK";
this.btnOK.Size = new System.Drawing.Size(56, 19); this.btnOK.Size = new System.Drawing.Size(56, 19);
@@ -562,7 +562,7 @@ namespace VEPROMS
// //
this.gpAnnoTypeFilter.StyleMouseOver.CornerType = DevComponents.DotNetBar.eCornerType.Square; this.gpAnnoTypeFilter.StyleMouseOver.CornerType = DevComponents.DotNetBar.eCornerType.Square;
this.gpAnnoTypeFilter.TabIndex = 13; this.gpAnnoTypeFilter.TabIndex = 13;
this.gpAnnoTypeFilter.Text = "Select Annotation Types"; this.gpAnnoTypeFilter.Text = "Filter Annotation Types";
// //
// gpVisioPath // gpVisioPath
// //
@@ -1305,7 +1305,7 @@ namespace VEPROMS
this.cbShwAnnoFilter.Size = new System.Drawing.Size(91, 23); this.cbShwAnnoFilter.Size = new System.Drawing.Size(91, 23);
this.cbShwAnnoFilter.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; this.cbShwAnnoFilter.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.cbShwAnnoFilter.TabIndex = 0; this.cbShwAnnoFilter.TabIndex = 0;
this.cbShwAnnoFilter.Text = "Select"; this.cbShwAnnoFilter.Text = "Open";
this.cbShwAnnoFilter.Click += new System.EventHandler(this.cbShwAnnoFilter_Click); this.cbShwAnnoFilter.Click += new System.EventHandler(this.cbShwAnnoFilter_Click);
// //
// frmSysOptions // frmSysOptions
@@ -1313,14 +1313,14 @@ namespace VEPROMS
this.AcceptButton = this.btnOK; this.AcceptButton = this.btnOK;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.CancelButton = this.btnCancel; //this.CancelButton = this.btnCancel;
this.ClientSize = new System.Drawing.Size(699, 620); this.ClientSize = new System.Drawing.Size(699, 620);
this.ControlBox = false; this.ControlBox = false;
this.Controls.Add(this.btnReset); this.Controls.Add(this.btnReset);
this.Controls.Add(this.tcSysOpts); this.Controls.Add(this.tcSysOpts);
this.Controls.Add(this.panButtons); this.Controls.Add(this.panButtons);
this.Controls.Add(this.btnOK); this.Controls.Add(this.btnOK);
this.Controls.Add(this.btnCancel); //this.Controls.Add(this.btnCancel);
this.DoubleBuffered = true; this.DoubleBuffered = true;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Margin = new System.Windows.Forms.Padding(2); this.Margin = new System.Windows.Forms.Padding(2);
@@ -1352,7 +1352,7 @@ namespace VEPROMS
#endregion #endregion
private DevComponents.DotNetBar.ButtonX btnCancel; //private DevComponents.DotNetBar.ButtonX btnCancel;
private DevComponents.DotNetBar.ButtonX btnOK; private DevComponents.DotNetBar.ButtonX btnOK;
private DevComponents.DotNetBar.Controls.GroupPanel gpSystemColor; private DevComponents.DotNetBar.Controls.GroupPanel gpSystemColor;
private DevComponents.DotNetBar.Controls.CheckBoxX cbRibonBlack; private DevComponents.DotNetBar.Controls.CheckBoxX cbRibonBlack;

View File

@@ -721,10 +721,11 @@ namespace VEPROMS
this.epAnnotations.Dock = System.Windows.Forms.DockStyle.Bottom; this.epAnnotations.Dock = System.Windows.Forms.DockStyle.Bottom;
this.epAnnotations.Enabled = false; this.epAnnotations.Enabled = false;
this.epAnnotations.Expanded = false; this.epAnnotations.Expanded = false;
this.epAnnotations.ExpandedBounds = new System.Drawing.Rectangle(4, 544, 1187, 202); this.epAnnotations.ExpandedBounds = new System.Drawing.Rectangle(5, 371, 1185, 202);
this.epAnnotations.ExpandOnTitleClick = true; this.epAnnotations.ExpandOnTitleClick = true;
this.epAnnotations.Location = new System.Drawing.Point(5, 324); this.epAnnotations.Location = new System.Drawing.Point(5, 547);
this.epAnnotations.Size = new System.Drawing.Size(1185, 249); this.epAnnotations.Name = "epAnnotations";
this.epAnnotations.Size = new System.Drawing.Size(1185, 26);
this.epAnnotations.Style.Alignment = System.Drawing.StringAlignment.Center; this.epAnnotations.Style.Alignment = System.Drawing.StringAlignment.Center;
this.epAnnotations.Style.BackColor1.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground; this.epAnnotations.Style.BackColor1.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground;
this.epAnnotations.Style.BackColor2.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground2; this.epAnnotations.Style.BackColor2.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground2;
@@ -760,11 +761,11 @@ namespace VEPROMS
this.ctrlAnnotationDetails.Dock = System.Windows.Forms.DockStyle.Fill; this.ctrlAnnotationDetails.Dock = System.Windows.Forms.DockStyle.Fill;
this.ctrlAnnotationDetails.Enabled = false; this.ctrlAnnotationDetails.Enabled = false;
this.ctrlAnnotationDetails.Location = new System.Drawing.Point(0, 26); this.ctrlAnnotationDetails.Location = new System.Drawing.Point(0, 26);
this.ctrlAnnotationDetails.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); this.ctrlAnnotationDetails.Margin = new System.Windows.Forms.Padding(2);
this.ctrlAnnotationDetails.MyUserInfo = null; this.ctrlAnnotationDetails.MyUserInfo = null;
this.ctrlAnnotationDetails.Name = "ctrlAnnotationDetails"; this.ctrlAnnotationDetails.Name = "ctrlAnnotationDetails";
this.ctrlAnnotationDetails.ProcItem = null; this.ctrlAnnotationDetails.ProcItem = null;
this.ctrlAnnotationDetails.Size = new System.Drawing.Size(1185, 223); this.ctrlAnnotationDetails.Size = new System.Drawing.Size(1185, 0);
this.ctrlAnnotationDetails.TabIndex = 15; this.ctrlAnnotationDetails.TabIndex = 15;
// //
// btnAnnoDetailsPushPin // btnAnnoDetailsPushPin
@@ -798,7 +799,7 @@ namespace VEPROMS
this.epProcedures.ExpandOnTitleClick = true; this.epProcedures.ExpandOnTitleClick = true;
this.epProcedures.Location = new System.Drawing.Point(5, 57); this.epProcedures.Location = new System.Drawing.Point(5, 57);
this.epProcedures.Name = "epProcedures"; this.epProcedures.Name = "epProcedures";
this.epProcedures.Size = new System.Drawing.Size(326, 267); this.epProcedures.Size = new System.Drawing.Size(326, 490);
this.epProcedures.Style.Alignment = System.Drawing.StringAlignment.Center; this.epProcedures.Style.Alignment = System.Drawing.StringAlignment.Center;
this.epProcedures.Style.BackColor1.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground; this.epProcedures.Style.BackColor1.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground;
this.epProcedures.Style.BackColor2.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground2; this.epProcedures.Style.BackColor2.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground2;

View File

@@ -708,6 +708,22 @@ namespace VEPROMS
{ {
int ownerid = MySessionInfo.CheckOutItem(fi.FolderID, CheckOutType.Session); int ownerid = MySessionInfo.CheckOutItem(fi.FolderID, CheckOutType.Session);
//C2025-024 Electronic Procedures - Phase 2 (PROMS XML output)
//form for exporting Electronic Procedures from FolderInfo
if (args.AnnotationTypeId > 0)
{
dlgExportImportEP dlg = new dlgExportImportEP(args.Index == 0 ? "Export" : "Import", fi, this, args.AnnotationTypeId, args.UnitIndex);
dlg.ShowDialog(this);
MySessionInfo.CheckInItem(ownerid);
if (args.Index == 1 && dlg.MyNewFolder != null)
{
tv.AddNewNode(dlg.MyNewFolder);
}
}
else
{
dlgExportImport dlg = new dlgExportImport(args.Index == 0 ? "Export" : "Import", fi, this, (E_UCFImportOptions)Properties.Settings.Default.UCFImportOpt);//Added frmVEPROMS Parameter dlgExportImport dlg = new dlgExportImport(args.Index == 0 ? "Export" : "Import", fi, this, (E_UCFImportOptions)Properties.Settings.Default.UCFImportOpt);//Added frmVEPROMS Parameter
dlg.ShowDialog(this); dlg.ShowDialog(this);
@@ -719,6 +735,7 @@ namespace VEPROMS
} }
} }
} }
}
if (dvi != null) if (dvi != null)
{ {
@@ -741,6 +758,26 @@ namespace VEPROMS
int ownerid = MySessionInfo.CheckOutItem(dvi.VersionID, CheckOutType.DocVersion); int ownerid = MySessionInfo.CheckOutItem(dvi.VersionID, CheckOutType.DocVersion);
//C2025-024 Electronic Procedures - Phase 2 (PROMS XML output)
//form for exporting Electronic Procedures from DocVersionInfo
if (args.AnnotationTypeId > 0)
{
dlgExportImportEP dlg = new dlgExportImportEP(args.Index == 0 ? "Export" : "Import", dvi, this, args.AnnotationTypeId, args.UnitIndex);
dlg.MyNewProcedure = null;
dlg.ExternalTransitionItem = null;
dlg.ShowDialog(this);
MySessionInfo.CheckInItem(ownerid);
if (dlg.MyNewProcedure != null)
tv.AddNewNode(dlg.MyNewProcedure);
if (dlg.ExternalTransitionItem != null)
tc.OpenItem(dlg.ExternalTransitionItem);
}
else
{
dlgExportImport dlg = new dlgExportImport("Import", dvi, this, (E_UCFImportOptions)Properties.Settings.Default.UCFImportOpt);//Added frmVEPROMS Parameter dlgExportImport dlg = new dlgExportImport("Import", dvi, this, (E_UCFImportOptions)Properties.Settings.Default.UCFImportOpt);//Added frmVEPROMS Parameter
dlg.MyNewProcedure = null; dlg.MyNewProcedure = null;
dlg.ExternalTransitionItem = null; dlg.ExternalTransitionItem = null;
@@ -754,6 +791,8 @@ namespace VEPROMS
if (dlg.ExternalTransitionItem != null) if (dlg.ExternalTransitionItem != null)
tc.OpenItem(dlg.ExternalTransitionItem); tc.OpenItem(dlg.ExternalTransitionItem);
} }
}
} }
if (pi != null) if (pi != null)
@@ -768,6 +807,19 @@ namespace VEPROMS
else else
{ {
int ownerid = MySessionInfo.CheckOutItem(pi.ItemID, CheckOutType.Procedure); int ownerid = MySessionInfo.CheckOutItem(pi.ItemID, CheckOutType.Procedure);
//C2025-024 Electronic Procedures - Phase 2 (PROMS XML output)
//form for exporting Electronic Procedures from ProcedureInfo
if (args.AnnotationTypeId > 0)
{
dlgExportImportEP dlg = new dlgExportImportEP("Export", pi, this, args.AnnotationTypeId, args.UnitIndex);
dlg.ShowDialog(this);
MySessionInfo.CheckInItem(ownerid);
}
else
{
dlgExportImport dlg = new dlgExportImport("Export", pi, this, (E_UCFImportOptions)0);//Added frmVEPROMS Parameter dlgExportImport dlg = new dlgExportImport("Export", pi, this, (E_UCFImportOptions)0);//Added frmVEPROMS Parameter
dlg.ShowDialog(this); dlg.ShowDialog(this);
@@ -775,6 +827,7 @@ namespace VEPROMS
} }
} }
} }
}
private void MakeDatabaseChanges() private void MakeDatabaseChanges()
{ {
@@ -1486,9 +1539,11 @@ namespace VEPROMS
// and if they are not the same, use the CurrentItem from the main frmVEPROMS. // and if they are not the same, use the CurrentItem from the main frmVEPROMS.
ProcedureInfo piThis = null; ProcedureInfo piThis = null;
if (_CurrentItem != null) piThis = _CurrentItem.MyProcedure; if (_CurrentItem != null) piThis = _CurrentItem.MyProcedure;
ProcedureInfo pi = args.Proc as ProcedureInfo; ProcedureInfo pi = args.Proc as ProcedureInfo;
if (args.OringFlg == 1) // B2025-036 split screen print issue. if oringFlg == 1 the ctrl-p keys was pressed.
{
if (piThis != null && pi.ItemID != piThis.ItemID) pi = piThis; if (piThis != null && pi.ItemID != piThis.ItemID) pi = piThis;
}
// Check if Procedure Info is null // Check if Procedure Info is null
if (pi == null) return; if (pi == null) return;
@@ -1530,8 +1585,11 @@ namespace VEPROMS
if (_CurrentItem != null) piThis = _CurrentItem.MyProcedure; if (_CurrentItem != null) piThis = _CurrentItem.MyProcedure;
ProcedureInfo pi = args.Proc as ProcedureInfo; ProcedureInfo pi = args.Proc as ProcedureInfo;
if (piThis != null && pi.ItemID != piThis.ItemID) pi = piThis;
if (args.OringFlg == 1) // B2025-036 split screen print issue. if oringFlg == 1 the ctrl-p keys was pressed.
{
if (piThis != null && pi.ItemID != piThis.ItemID) pi = piThis;
}
// Check if Procedure Info is null // Check if Procedure Info is null
if (pi == null) return; if (pi == null) return;

View File

@@ -931,7 +931,7 @@ namespace VEPROMS.CSLA.Library
else // B2018-043 Eliminate infinite loop for invalid transition structure else // B2018-043 Eliminate infinite loop for invalid transition structure
{ {
// Add annotation for Invalid Transition // Add annotation for Invalid Transition
AddInvalidTransitionAnnotation(itemInfo,"Invalid Transition Format"); AddInvalidTransitionAnnotation(itemInfo, "Invalid Transition Format");
break; break;
} }
} }
@@ -984,16 +984,16 @@ namespace VEPROMS.CSLA.Library
ContentInfo myContent = itemInfo.MyContent; ContentInfo myContent = itemInfo.MyContent;
string txt = myContent.Text; string txt = myContent.Text;
string regDelete = @"(\\v |)\<START\]\#Link\:Transition(|Range)\:[0-9]+ [0-9]+ [0-9]+(| [0-9]+)\[END\>(\\v0 |)"; string regDelete = @"(\\v |)\<START\]\#Link\:Transition(|Range)\:[0-9]+ [0-9]+ [0-9]+(| [0-9]+)\[END\>(\\v0 |)";
string txt2=txt; string txt2 = txt;
do{ do {
txt = txt2; txt = txt2;
txt2 = Regex.Replace(txt, regDelete, ""); txt2 = Regex.Replace(txt, regDelete, "");
} while(txt2 != txt); } while (txt2 != txt);
if(txt2 != myContent.Text) if (txt2 != myContent.Text)
{ {
using(Content tmp = myContent.Get()) using (Content tmp = myContent.Get())
{ {
tmp.Text = txt2; tmp.Text = txt2;
tmp.Save(); tmp.Save();
@@ -1276,7 +1276,7 @@ namespace VEPROMS.CSLA.Library
// for supplemental information, bulleted tabs need to be included in the tab. The 'isletterordigit' should not occur for supinfo items - // for supplemental information, bulleted tabs need to be included in the tab. The 'isletterordigit' should not occur for supinfo items -
// and this includes the parent of the supinfo since that is the tab used for supinfo concatenated with its parent. (B2017-120) // and this includes the parent of the supinfo since that is the tab used for supinfo concatenated with its parent. (B2017-120)
// // B2020-154: Added check for the tab to start with '(', tabs that started with this were not included in the combined tab // // B2020-154: Added check for the tab to start with '(', tabs that started with this were not included in the combined tab
if (thisTab != null && thisTab != "" && (!char.IsLetterOrDigit(thisTab[0]) && thisTab[0] != '(') && !vcbHeaderCheck && !itemInfo.IsInSupInfo && (itemInfo.SupInfos == null || itemInfo.SupInfos.Count <= 0 )) return pTab; if (thisTab != null && thisTab != "" && (!char.IsLetterOrDigit(thisTab[0]) && thisTab[0] != '(') && !vcbHeaderCheck && !itemInfo.IsInSupInfo && (itemInfo.SupInfos == null || itemInfo.SupInfos.Count <= 0)) return pTab;
if (itemInfo.FormatStepData.NumberWithLevel) pTab = itemInfo.MyHLS.MyTab.CleanText.Trim(); if (itemInfo.FormatStepData.NumberWithLevel) pTab = itemInfo.MyHLS.MyTab.CleanText.Trim();
// if the parent tab ends with a alphanumeric and this tab is alphanumeric, add a '.' to separate them // if the parent tab ends with a alphanumeric and this tab is alphanumeric, add a '.' to separate them
// also, include use the separator for bullets if doing the supplemental information tab (B2017-120) // also, include use the separator for bullets if doing the supplemental information tab (B2017-120)
@@ -1445,7 +1445,7 @@ namespace VEPROMS.CSLA.Library
if (MyContent.MyEntry != null && MyContent.MyEntry.MyDocument != null) if (MyContent.MyEntry != null && MyContent.MyEntry.MyDocument != null)
{ {
PdfInfo pi = PdfInfo.Get(this, false); PdfInfo pi = PdfInfo.Get(this, false);
if(pi != null) _MSWordPageCount = (float)pi.PageCount;// B2018-071 Don't crash on invalid MS Word section if (pi != null) _MSWordPageCount = (float)pi.PageCount;// B2018-071 Don't crash on invalid MS Word section
} }
return _MSWordPageCount; return _MSWordPageCount;
} }
@@ -2071,7 +2071,7 @@ namespace VEPROMS.CSLA.Library
{ {
bool rval = false; bool rval = false;
ItemInfo itm = this; ItemInfo itm = this;
while (itm != null &&!itm.IsHigh && !rval) while (itm != null && !itm.IsHigh && !rval)
{ {
rval = itm.IsCautionOrNotePart; rval = itm.IsCautionOrNotePart;
if (!rval) itm = itm.MyParent; if (!rval) itm = itm.MyParent;
@@ -2111,6 +2111,16 @@ namespace VEPROMS.CSLA.Library
return (sd.Type == type); return (sd.Type == type);
} }
// C2025-024 - Electronic Procedures - Export
//return if should export blanks
public bool EPexportblank(int AnnTypeID)
{
if (ActiveFormat.PlantFormat.EPFormatFiles.Count == 0 || !ActiveFormat.PlantFormat.EPFormatFiles.Exists(x => x.AnnotationTypeID == AnnTypeID))
return true;
else
return ActiveFormat.PlantFormat.EPFormatFiles.Find(x => x.AnnotationTypeID == AnnTypeID).exportblank;
}
// C2025-023 - Electronic Procedures - Modifications to PROMS // C2025-023 - Electronic Procedures - Modifications to PROMS
//return EPFields that match this step type or a parent step type //return EPFields that match this step type or a parent step type
public EPFields GetValidEPFields(int AnnTypeID) public EPFields GetValidEPFields(int AnnTypeID)

View File

@@ -61,6 +61,25 @@ namespace VEPROMS.CSLA.Library
return LazyLoad(ref _AnnotationTypeID, "@AnnotationTypeID"); return LazyLoad(ref _AnnotationTypeID, "@AnnotationTypeID");
} }
} }
// Return Name of Annotation that EP Format File is Attached to
public string AnnotationName()
{
return AnnotationTypeInfo.Get((int) AnnotationTypeID).Name;
}
//if xml value is blank, should element export?
//defaults to true
private LazyLoad<bool> _exportblank;
[DisplayName("exportblank")]
[Description("if xml value is blank, should element export?")]
public bool exportblank
{
get
{
return LazyLoad(ref _exportblank, "@exportblank");
}
}
// returns a list of fields that are defined in the EP format's structure // returns a list of fields that are defined in the EP format's structure
private EPFields _FieldList; private EPFields _FieldList;
public EPFields FieldList public EPFields FieldList
@@ -68,7 +87,7 @@ namespace VEPROMS.CSLA.Library
get get
{ {
XmlDocument xd = GetEPFormatData(Name); XmlDocument xd = GetEPFormatData(Name);
return _FieldList == null ? _FieldList = new EPFields(xd.SelectNodes("/EPFormat/EPField")) : _FieldList; return _FieldList ?? (_FieldList = new EPFields(xd.SelectNodes("/EPFormat/EPField")));
} }
} }
#endregion #endregion
@@ -296,7 +315,7 @@ namespace VEPROMS.CSLA.Library
} }
catch catch
{ {
throw new ArgumentException($"Error in returncols for EP file: {((EPFormatFile)MyParentFormat).Name}.xml, field: {name}"); throw new ArgumentException($"Error in returncols for EP file, field: {name}");
} }
} }
@@ -325,7 +344,7 @@ namespace VEPROMS.CSLA.Library
} }
catch catch
{ {
throw new ArgumentException($"Error in validforsteptypes for EP file: {((EPFormatFile) MyParentFormat).Name}.xml, field: {name}"); throw new ArgumentException($"Error in validforsteptypes for EP file, field: {name}");
} }
} }
public bool IsValidForStepType(string StepType) public bool IsValidForStepType(string StepType)
@@ -344,6 +363,9 @@ namespace VEPROMS.CSLA.Library
try try
{ {
DocVersionInfo MyDocVersion = currAnn.MyItem.MyDocVersion; DocVersionInfo MyDocVersion = currAnn.MyItem.MyDocVersion;
if (MyDocVersion.DocVersionAssociations != null && MyDocVersion.DocVersionAssociations.Any())
{
ROFSTLookup lookup = MyDocVersion.DocVersionAssociations[0].MyROFst.GetROFSTLookup(MyDocVersion); ROFSTLookup lookup = MyDocVersion.DocVersionAssociations[0].MyROFst.GetROFSTLookup(MyDocVersion);
string roid = FormatRoidKey(rosource, false); string roid = FormatRoidKey(rosource, false);
@@ -355,12 +377,20 @@ namespace VEPROMS.CSLA.Library
return mylist; return mylist;
} }
catch (Exception Ex) else
{ {
throw new ArgumentException($"Error in rosource for EP file: {((EPFormatFile)MyParentFormat).Name}.xml, field: {name}"); return new List<ROListItem>
} {
new ROListItem("", "")
};
} }
}
catch
{
throw new ArgumentException($"Error in rosource for EP file, field: {name}");
}
}
//return a list of values for the specified ROID //return a list of values for the specified ROID
//given the EP items return columns //given the EP items return columns
@@ -394,6 +424,7 @@ namespace VEPROMS.CSLA.Library
} }
} }
#endregion #endregion
//C2025-023 - Electronic Procedures - Modifications to PROMS //C2025-023 - Electronic Procedures - Modifications to PROMS
// class to handle return of RO Lists // class to handle return of RO Lists

View File

@@ -41,8 +41,6 @@ namespace VEPROMS.CSLA.Library
// if the user has not created a annotation sub-set list saved to AnnotationTypeSelections table. // if the user has not created a annotation sub-set list saved to AnnotationTypeSelections table.
if (dt.Rows.Count < 1) if (dt.Rows.Count < 1)
{ {
//dt.Rows.Add(DataPortal.Fetch<AnnotationTypeInfoList>());
//DataPortal.Fetch<AnnotationTypeInfoList>();
DataRow row; DataRow row;
int rowflg = 0; int rowflg = 0;
foreach (AnnotationTypeInfo annosel in DataPortal.Fetch<AnnotationTypeInfoList>()) foreach (AnnotationTypeInfo annosel in DataPortal.Fetch<AnnotationTypeInfoList>())
@@ -145,33 +143,8 @@ namespace VEPROMS.CSLA.Library
} }
} }
} }
//public static void Update(string UserID, int TypeID, int dltFlg, string Name = "")
//{
// using (SqlConnection cn = Database.VEPROMS_SqlConnection)
// {
// using (SqlCommand cm = cn.CreateCommand())
// {
// try
// {
// cm.CommandType = CommandType.StoredProcedure;
// cm.CommandText = "UpdateAnnotationstypeSelections";
// cm.CommandTimeout = Database.DefaultTimeout;
// cm.Parameters.AddWithValue("@UserID", UserID);
// cm.Parameters.AddWithValue("@TypeID", TypeID);
// cm.Parameters.AddWithValue("@dltFlg", dltFlg);
// cm.Parameters.AddWithValue("@Name", Name);
// cm.ExecuteNonQuery(); public static void Update(DataTable dt, string UserID)
// }
// catch (Exception ex)
// {
// }
// }
// }
//}
public static void Update(DataTable dt)
{ {
using (SqlConnection cn = Database.VEPROMS_SqlConnection) using (SqlConnection cn = Database.VEPROMS_SqlConnection)
{ {
@@ -186,11 +159,12 @@ namespace VEPROMS.CSLA.Library
//Pass table Valued parameter to Store Procedure //Pass table Valued parameter to Store Procedure
SqlParameter sqlParam = cm.Parameters.AddWithValue("@TempTable", dt); SqlParameter sqlParam = cm.Parameters.AddWithValue("@TempTable", dt);
sqlParam.SqlDbType = SqlDbType.Structured; sqlParam.SqlDbType = SqlDbType.Structured;
cm.Parameters.AddWithValue("@UserID", UserID);
cm.ExecuteNonQuery(); cm.ExecuteNonQuery();
} }
catch (Exception ex) catch (Exception ex)
{ {
throw new DbCslaException("Error in UpdateAnnotationstypeSelections: update failed", ex);
} }
} }
} }

View File

@@ -38,6 +38,9 @@ EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Baseline", "..\Baseline\Baseline.csproj", "{8B29E0DE-B6C9-4041-8817-319FDE3123C4}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Baseline", "..\Baseline\Baseline.csproj", "{8B29E0DE-B6C9-4041-8817-319FDE3123C4}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RoAccessToSql", "..\RoAccessToSql\RoAccessToSql.csproj", "{1EC96BDA-01E7-4153-A95D-6A4A36FA278E}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RoAccessToSql", "..\RoAccessToSql\RoAccessToSql.csproj", "{1EC96BDA-01E7-4153-A95D-6A4A36FA278E}"
ProjectSection(ProjectDependencies) = postProject
{AEEE9FD1-6892-45E2-A67E-418C06D46FF9} = {AEEE9FD1-6892-45E2-A67E-418C06D46FF9}
EndProjectSection
EndProject EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution

View File

@@ -1284,7 +1284,7 @@ namespace Volian.Controls.Library
} }
selectedRtfSB.Append(@"{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fnil\fcharset2 " + myFont.FontFamily.Name + @";}"); //}\f0\fs" + this.Font.SizeInPoints * 2 + @" " + myDisplayTextElement.Text + @"}}"; selectedRtfSB.Append(@"{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fnil\fcharset2 " + myFont.FontFamily.Name + @";}"); //}\f0\fs" + this.Font.SizeInPoints * 2 + @" " + myDisplayTextElement.Text + @"}}";
if (!isFixed) if (!isFixed)
selectedRtfSB.Append(@"{\f1\fnil\fcharset0 " + Volian.Base.Library.vlnFont.ProportionalSymbolFont + @";}}{\colortbl ;\red255\green0\blue0;}"); // C2017-036 get best available proportional font for symbols selectedRtfSB.Append(@"{\f1\fnil\fcharset0 " + Volian.Base.Library.vlnFont.ProportionalSymbolFont + @";}}{\colortbl ;\red255\green0\blue0;\red0\green0\blue255;}"); // C2017-036 get best available proportional font for symbols - B2025-039 add Blue for Colored Replace Words
else else
selectedRtfSB.Append(@"{\f1\fnil\fcharset0 FreeMono;}}{\colortbl ;\red255\green0\blue0;\red0\green0\blue255;}"); // FreeMono is now used for the edit screen only. VESymbFix and Consolas are used for printing selectedRtfSB.Append(@"{\f1\fnil\fcharset0 FreeMono;}}{\colortbl ;\red255\green0\blue0;\red0\green0\blue255;}"); // FreeMono is now used for the edit screen only. VESymbFix and Consolas are used for printing
selectedRtfSB.Append("\r\n"); selectedRtfSB.Append("\r\n");

View File

@@ -618,6 +618,15 @@ namespace Volian.Controls.Library
} }
private int _MyLastFormatID = -1; private int _MyLastFormatID = -1;
private StepRTB _MyStepRTB; private StepRTB _MyStepRTB;
private static int _OringFlg;
public static int OringFlg
{
get { return _OringFlg; }
set
{
_OringFlg = value;
}
}
public StepRTB MyStepRTB public StepRTB MyStepRTB
{ {
get { return _MyStepRTB; } get { return _MyStepRTB; }
@@ -4096,6 +4105,7 @@ namespace Volian.Controls.Library
public void DoCopyStep() public void DoCopyStep()
{ {
MyEditItem.SaveCurrentAndContents(); // B2025-038 copy step and text to another procedure in another screen.
// highlight selected step(s) and prompt to see if selection is what user wants: // highlight selected step(s) and prompt to see if selection is what user wants:
if (MyFlexGrid != null) MyEditItem.IdentifyMe(true); if (MyFlexGrid != null) MyEditItem.IdentifyMe(true);
MyEditItem.IdentifyChildren(true); MyEditItem.IdentifyChildren(true);
@@ -4143,16 +4153,22 @@ namespace Volian.Controls.Library
private void btnPdfCreate_Click(object sender, EventArgs e) private void btnPdfCreate_Click(object sender, EventArgs e)
{ {
// B2025-036 split screen print issue. if oringFlg == 1 the ctrl-p keys was pressed.
_OringFlg = 0;
DevComponents.DotNetBar.eEventSource oring = ((DevComponents.DotNetBar.Events.EventSourceArgs)e).Source;
if (oring == eEventSource.Keyboard)
_OringFlg = 1;
if (MyItemInfo == null) return; // if creating a pdf before rtb exists, return; if (MyItemInfo == null) return; // if creating a pdf before rtb exists, return;
if (MyEditItem != null) MyEditItem.SaveCurrentAndContents(); if (MyEditItem != null) MyEditItem.SaveCurrentAndContents();
OnPrintRequest(new StepTabRibbonEventArgs(MyItemInfo.MyProcedure), 0); OnPrintRequest(new StepTabRibbonEventArgs(MyItemInfo.MyProcedure, _OringFlg), 0);
} }
private void btnPdfQuickCreate_Click(object sender, EventArgs e) private void btnPdfQuickCreate_Click(object sender, EventArgs e)
{ {
if (MyItemInfo == null) return; // if creating a pdf before rtb exists, return; if (MyItemInfo == null) return; // if creating a pdf before rtb exists, return;
if (MyEditItem != null) MyEditItem.SaveCurrentAndContents(); if (MyEditItem != null) MyEditItem.SaveCurrentAndContents();
OnPrintRequest(new StepTabRibbonEventArgs(MyItemInfo.MyProcedure), 1); OnPrintRequest(new StepTabRibbonEventArgs(MyItemInfo.MyProcedure, _OringFlg), 1);
} }
private void btnCASCreate_Click(object sender, EventArgs e) private void btnCASCreate_Click(object sender, EventArgs e)
@@ -4814,9 +4830,10 @@ namespace Volian.Controls.Library
public class StepTabRibbonEventArgs : EventArgs public class StepTabRibbonEventArgs : EventArgs
{ {
public StepTabRibbonEventArgs() { ; } public StepTabRibbonEventArgs() { ; }
public StepTabRibbonEventArgs(ItemInfo proc) public StepTabRibbonEventArgs(ItemInfo proc, int oringFlg = 0)
{ {
_Proc = proc; _Proc = proc;
OringFlg = oringFlg;
} }
private ItemInfo _Proc; private ItemInfo _Proc;
@@ -4825,6 +4842,13 @@ namespace Volian.Controls.Library
get { return _Proc; } get { return _Proc; }
set { _Proc = value; } set { _Proc = value; }
} }
// B2025-036 split screen print issue. if oringFlg == 1 the ctrl-p keys was pressed.
private int _OringFlg;
public int OringFlg
{
get { return _OringFlg; }
set { _OringFlg = value; }
}
} }
public delegate void StepTabRibbonEvent(object sender, StepTabRibbonEventArgs args); public delegate void StepTabRibbonEvent(object sender, StepTabRibbonEventArgs args);

View File

@@ -120,7 +120,7 @@ namespace Volian.Controls.Library
foreach (string t in tmps) cmb.Items.Add(t.Trim()); foreach (string t in tmps) cmb.Items.Add(t.Trim());
string val = MyConfig.GetValue("EP", EP.name); string val = MyConfig.GetValue("EP", EP.name);
if (val != null && val != "") cmb.SelectedItem = val; if (val != null && val != "") cmb.SelectedItem = val;
cmb.DropDownWidth = TextRenderer.MeasureText(tmps.OrderByDescending(x => x.Length).First(), cmb.Font).Width + SystemInformation.VerticalScrollBarWidth; cmb.DropDownWidth = TextRenderer.MeasureText(tmps.OrderByDescending(x => x.Length).FirstOrDefault(), cmb.Font).Width + SystemInformation.VerticalScrollBarWidth;
cmb.Width = cmb.DropDownWidth; cmb.Width = cmb.DropDownWidth;
_DicComboBox.Add(EP.name, cmb); _DicComboBox.Add(EP.name, cmb);
panelEP.Controls.Add(cmb, 1, panelEP.RowCount - 1); panelEP.Controls.Add(cmb, 1, panelEP.RowCount - 1);
@@ -135,7 +135,7 @@ namespace Volian.Controls.Library
cmb.ValueMember = "Value"; cmb.ValueMember = "Value";
cmb.DataSource = tmps; cmb.DataSource = tmps;
cmb.DropDownStyle = ComboBoxStyle.DropDownList; cmb.DropDownStyle = ComboBoxStyle.DropDownList;
cmb.DropDownWidth = TextRenderer.MeasureText(tmps.OrderByDescending(x => x.Text.Length).First().Text, cmb.Font).Width + SystemInformation.VerticalScrollBarWidth; cmb.DropDownWidth = TextRenderer.MeasureText(tmps.OrderByDescending(x => x.Text.Length).FirstOrDefault()?.Text, cmb.Font).Width + SystemInformation.VerticalScrollBarWidth;
cmb.Width = cmb.DropDownWidth; cmb.Width = cmb.DropDownWidth;
_DicSingleRO.Add(EP.name, cmb); _DicSingleRO.Add(EP.name, cmb);
@@ -148,7 +148,7 @@ namespace Volian.Controls.Library
List<ROListItem> tmps = EP.getROList(currAnn, false); List<ROListItem> tmps = EP.getROList(currAnn, false);
lb.DisplayMember = "Text"; lb.DisplayMember = "Text";
lb.ValueMember = "Value"; lb.ValueMember = "Value";
lb.Width = TextRenderer.MeasureText(tmps.OrderByDescending(x => x.Text.Length).First().Text, lb.Font).Width + SystemInformation.VerticalScrollBarWidth; lb.Width = TextRenderer.MeasureText(tmps.OrderByDescending(x => x.Text.Length).FirstOrDefault()?.Text, lb.Font).Width + SystemInformation.VerticalScrollBarWidth;
lb.DataSource = tmps; lb.DataSource = tmps;
_DicMultiRO.Add(EP.name, lb); _DicMultiRO.Add(EP.name, lb);

View File

@@ -152,6 +152,15 @@ namespace Volian.Controls.Library
get { return _Index; } get { return _Index; }
set { _Index = value; } set { _Index = value; }
} }
//C2025-024 Electronic Procedures - Phase 2 (PROMS XML output)
//AnnotationType that would be doing an export for
private int _AnnotationTypeId = -1;
public int AnnotationTypeId
{
get { return _AnnotationTypeId; }
set { _AnnotationTypeId = value; }
}
//jcb multiunit //jcb multiunit
private string _Unit; private string _Unit;
public string Unit public string Unit
@@ -179,6 +188,13 @@ namespace Volian.Controls.Library
_Destination = destination; _Destination = destination;
_Index = index; _Index = index;
} }
public vlnTreeEventArgs(TreeNode node, TreeNode destination, int index, int annTypeId)
{
_Node = node;
_Destination = destination;
_Index = index;
_AnnotationTypeId = annTypeId;
}
//jcb multiunit //jcb multiunit
public vlnTreeEventArgs(TreeNode node, TreeNode destination, int index, string unit, int unitIndex) public vlnTreeEventArgs(TreeNode node, TreeNode destination, int index, string unit, int unitIndex)
{ {
@@ -188,6 +204,15 @@ namespace Volian.Controls.Library
_Unit = unit; _Unit = unit;
_UnitIndex = unitIndex; _UnitIndex = unitIndex;
} }
public vlnTreeEventArgs(TreeNode node, TreeNode destination, int index, string unit, int unitIndex, int annTypeId)
{
_Node = node;
_Destination = destination;
_Index = index;
_Unit = unit;
_UnitIndex = unitIndex;
_AnnotationTypeId = annTypeId;
}
//end jcb multiunit //end jcb multiunit
#endregion #endregion
public override string ToString() public override string ToString()
@@ -573,12 +598,6 @@ namespace Volian.Controls.Library
{ {
if (ProcedureCheckedOutTo != null) ProcedureCheckedOutTo(sender, args); if (ProcedureCheckedOutTo != null) ProcedureCheckedOutTo(sender, args);
} }
// C2025-027
public event vlnTreeViewEvent SelectAnnotations;
private void OnSelectAnnotations(object sender, vlnTreeEventArgs args)
{
if (SelectAnnotations != null) SelectAnnotations(sender, args);
}
public event vlnTreeViewEvent ExportImportProcedureSets; public event vlnTreeViewEvent ExportImportProcedureSets;
private void OnExportImportProcedureSets(object sender, vlnTreeEventArgs args) private void OnExportImportProcedureSets(object sender, vlnTreeEventArgs args)
{ {
@@ -712,7 +731,10 @@ namespace Volian.Controls.Library
if (ui.IsAdministrator() || ui.IsSetAdministrator(fi))// && fi.MyParent == null) //VEPROMS level if (ui.IsAdministrator() || ui.IsSetAdministrator(fi))// && fi.MyParent == null) //VEPROMS level
{ {
if (fi.HasWorkingDraft) if (fi.HasWorkingDraft)
{
cm.MenuItems.Add("Export Procedure Set", new EventHandler(mi_Click)); cm.MenuItems.Add("Export Procedure Set", new EventHandler(mi_Click));
//AddEPExport(cm.MenuItems, 0, null);
}
else else
cm.MenuItems.Add("Import Procedure Set", new EventHandler(mi_Click)); cm.MenuItems.Add("Import Procedure Set", new EventHandler(mi_Click));
if (DoSpecificInfo) if (DoSpecificInfo)
@@ -848,6 +870,9 @@ namespace Volian.Controls.Library
if (ui.IsAdministrator() || ui.IsSetAdministrator(pri.MyDocVersion)) if (ui.IsAdministrator() || ui.IsSetAdministrator(pri.MyDocVersion))
{ {
cm.MenuItems.Add("Export Procedure", mi_Click); cm.MenuItems.Add("Export Procedure", mi_Click);
//C2025-024 Proms XML Output - if have any EP Format files, add dropdown menu for exporting EP formats
if (pri.ActiveFormat.PlantFormat.EPFormatFiles.Count > 0)
AddEPExport(cm.MenuItems, pri.MyDocVersion.MultiUnitCount, pri.MyDocVersion.UnitNames, pri.ActiveFormat.PlantFormat.EPFormatFiles);
} }
if (ui.IsAdministrator() || ui.IsSetAdministrator(pri.MyDocVersion) || ui.IsWriter(pri.MyDocVersion)) if (ui.IsAdministrator() || ui.IsSetAdministrator(pri.MyDocVersion) || ui.IsWriter(pri.MyDocVersion))
{ {
@@ -872,7 +897,6 @@ namespace Volian.Controls.Library
MenuItem miqp = new MenuItem("Quick Print"); MenuItem miqp = new MenuItem("Quick Print");
//MenuItem mips = new MenuItem("Print Section"); //MenuItem mips = new MenuItem("Print Section");
MenuItem mia = new MenuItem("Approve"); MenuItem mia = new MenuItem("Approve");
MenuItem misa = new MenuItem("Select Annotations"); //C2025-027
int k = 0; int k = 0;
foreach (string s in pri.MyDocVersion.UnitNames) foreach (string s in pri.MyDocVersion.UnitNames)
@@ -898,16 +922,12 @@ namespace Volian.Controls.Library
MenuItem mtc = mitcas.MenuItems.Add(s, new EventHandler(miMultiUnit_Click)); MenuItem mtc = mitcas.MenuItems.Add(s, new EventHandler(miMultiUnit_Click));
mtc.Enabled = procAppl; mtc.Enabled = procAppl;
mtc.Tag = k; mtc.Tag = k;
MenuItem msa = misa.MenuItems.Add(s, new EventHandler(miMultiUnit_Click));
msa.Enabled = procAppl;
msa.Tag = k;
} }
cm.MenuItems.Add(micas); cm.MenuItems.Add(micas);
cm.MenuItems.Add(mitcas); cm.MenuItems.Add(mitcas);
cm.MenuItems.Add(mip); cm.MenuItems.Add(mip);
cm.MenuItems.Add(miqp); cm.MenuItems.Add(miqp);
//cm.MenuItems.Add(mips); //cm.MenuItems.Add(mips);
cm.MenuItems.Add(misa);
AddShowChangeBarsAfterMenuItem(cm.MenuItems, pri); AddShowChangeBarsAfterMenuItem(cm.MenuItems, pri);
cm.MenuItems.Add(mia); cm.MenuItems.Add(mia);
AddApprovedRevisionsMultiUnit(cm.MenuItems, pri); AddApprovedRevisionsMultiUnit(cm.MenuItems, pri);
@@ -923,7 +943,6 @@ namespace Volian.Controls.Library
AddShowChangeBarsAfterMenuItem(cm.MenuItems, pri); AddShowChangeBarsAfterMenuItem(cm.MenuItems, pri);
cm.MenuItems.Add("Approve", new EventHandler(mi_Click)); cm.MenuItems.Add("Approve", new EventHandler(mi_Click));
//_MyLog.WarnFormat("Context Menu 1 before - {0}", GC.GetTotalMemory(true)); //_MyLog.WarnFormat("Context Menu 1 before - {0}", GC.GetTotalMemory(true));
cm.MenuItems.Add("Select Annotations", new EventHandler(mi_Click)); //C2025-027
AddApprovedRevisions(cm.MenuItems, pri); AddApprovedRevisions(cm.MenuItems, pri);
//_MyLog.WarnFormat("Context Menu 1 after - {0}", GC.GetTotalMemory(true)); //_MyLog.WarnFormat("Context Menu 1 after - {0}", GC.GetTotalMemory(true));
} }
@@ -936,7 +955,6 @@ namespace Volian.Controls.Library
{ {
MenuItem mip = new MenuItem("Print"); MenuItem mip = new MenuItem("Print");
MenuItem miqp = new MenuItem("Quick Print"); MenuItem miqp = new MenuItem("Quick Print");
MenuItem misa = new MenuItem("Select Annotations"); //C2025-027
int k = 0; int k = 0;
foreach (string s in pri.MyDocVersion.UnitNames) foreach (string s in pri.MyDocVersion.UnitNames)
{ {
@@ -945,19 +963,15 @@ namespace Volian.Controls.Library
mp.Tag = k; mp.Tag = k;
MenuItem mqp = miqp.MenuItems.Add(s, new EventHandler(miMultiUnit_Click)); MenuItem mqp = miqp.MenuItems.Add(s, new EventHandler(miMultiUnit_Click));
mqp.Tag = k; mqp.Tag = k;
MenuItem msa = misa.MenuItems.Add(s, new EventHandler(miMultiUnit_Click));
msa.Tag = k;
} }
cm.MenuItems.Add(mip); cm.MenuItems.Add(mip);
cm.MenuItems.Add(miqp); cm.MenuItems.Add(miqp);
cm.MenuItems.Add(misa);
AddApprovedRevisionsMultiUnit(cm.MenuItems, pri); AddApprovedRevisionsMultiUnit(cm.MenuItems, pri);
} }
else else
{ {
cm.MenuItems.Add("Print", new EventHandler(mi_Click)); cm.MenuItems.Add("Print", new EventHandler(mi_Click));
cm.MenuItems.Add("Quick Print", new EventHandler(mi_Click)); cm.MenuItems.Add("Quick Print", new EventHandler(mi_Click));
cm.MenuItems.Add("Select Annotations", new EventHandler(mi_Click)); //C2025-027
AddApprovedRevisions(cm.MenuItems, pri); AddApprovedRevisions(cm.MenuItems, pri);
} }
} }
@@ -1372,6 +1386,43 @@ namespace Volian.Controls.Library
} }
} }
//C2025-024 Electronic Procedures - Phase 2 (PROMS XML output)
// Add context menu for exporting Electronic Procedures
// if has an Electronic procedure
// then loop through and add an Export for each EP Viewer
private void AddEPExport(Menu.MenuItemCollection menuItems, int MultiUnitCount, string[] UnitNames, EPFormatFiles EPFiles)
{
//add outer menu
MenuItem mi = menuItems.Add("Electronic Procedure Viewer Export");
foreach (EPFormatFile epAnnType in EPFiles)
{
//Add item for each individual EP Viewer
MenuItem mv = mi.MenuItems.Add(epAnnType.AnnotationName());
//tag will be of format:
//{EP Annotation Type ID},{Unit}
//if not multi-unit, unit will be zero.
if (MultiUnitCount > 1)
{
//if multi-unit, add menu item for each unit
int k = 0;
foreach (string s in UnitNames)
{
k++;
MenuItem multiunit_mv = mv.MenuItems.Add(s);
multiunit_mv.Tag = $"{epAnnType.AnnotationTypeID},{k}";
multiunit_mv.Click += new EventHandler(miEP_Click);
}
}
else
{
mv.Tag = $"{epAnnType.AnnotationTypeID},0";
mv.Click += new EventHandler(miEP_Click);
}
}
}
private void AddApprovedRevisionsMultiUnit(Menu.MenuItemCollection menuItemCollection, ProcedureInfo pri) private void AddApprovedRevisionsMultiUnit(Menu.MenuItemCollection menuItemCollection, ProcedureInfo pri)
{ {
_currentPri = pri; _currentPri = pri;
@@ -1555,6 +1606,27 @@ namespace Volian.Controls.Library
FlexibleMessageBox.Show("Approved procedure saved to import file " + fileName, "Creating Export of Approved Procedure", MessageBoxButtons.OK, MessageBoxIcon.Information); FlexibleMessageBox.Show("Approved procedure saved to import file " + fileName, "Creating Export of Approved Procedure", MessageBoxButtons.OK, MessageBoxIcon.Information);
} }
//C2025-015 Get a partial folder path. This will be used in building the PDF file name when viewing Approved procedures
string ProcFolderPathforApprovedPDF(string fullPath)
{
string rtnStr = "";
try
{
// the fullPath string that is passed in ends with the Working Draft node. We want to trim that off
string[] strParts = fullPath.Substring(0, fullPath.LastIndexOf("\\")).Split('\\'); //fullPath.Replace("\\Working Draft","").Split('\\');
int lastPart = Math.Max(strParts.Length - 1, 0);
rtnStr = strParts[lastPart];
if (rtnStr.ToUpper().StartsWith("UNIT"))
{
rtnStr = strParts[lastPart - 1] + "_" + rtnStr;
}
}
catch
{
rtnStr = fullPath.Replace("\\", "_"); // just return the full path with _ intead of backslashes
}
return rtnStr;
}
void ApprovedRevision_Click(object sender, EventArgs e) void ApprovedRevision_Click(object sender, EventArgs e)
{ {
@@ -1568,7 +1640,10 @@ namespace Volian.Controls.Library
if ((ri.RevisionID < int.Parse(mip.Parent.Tag.ToString())) && ri.LatestVersion.MyStage.IsApproved != 0) if ((ri.RevisionID < int.Parse(mip.Parent.Tag.ToString())) && ri.LatestVersion.MyStage.IsApproved != 0)
superceded = true; superceded = true;
} }
vlnTreeViewPdfArgs args = new vlnTreeViewPdfArgs(Volian.Base.Library.TmpFile.CreateFileName(ProcedureInfo.Get(ri.ItemID).PDFNumber), ri.LatestVersion.PDF, superceded ? "Superceded" : ""); ProcedureInfo prcInfo = ProcedureInfo.Get(ri.ItemID);
// C2025-015 build a file name that includes a partial folder path and approved revision number
string approvedPDFName = string.Format("{0}_{1} Revision {2}", ProcFolderPathforApprovedPDF(prcInfo.SearchDVPath_clean), prcInfo.PDFNumber,ri.RevisionNumber);
vlnTreeViewPdfArgs args = new vlnTreeViewPdfArgs(Volian.Base.Library.TmpFile.CreateFileName(approvedPDFName), ri.LatestVersion.PDF, superceded ? "Superceded" : "");
OnViewPDF(sender, args); OnViewPDF(sender, args);
// System.Diagnostics.Process pp = System.Diagnostics.Process.Start(GetDocPdf(ri, superceded)); // System.Diagnostics.Process pp = System.Diagnostics.Process.Start(GetDocPdf(ri, superceded));
} }
@@ -1577,6 +1652,7 @@ namespace Volian.Controls.Library
bool superceded = false; bool superceded = false;
MenuItem mi = sender as MenuItem; MenuItem mi = sender as MenuItem;
if (mi == null) return; if (mi == null) return;
string childName = "";
//RevisionInfo ri = mi.Tag as RevisionInfo; //RevisionInfo ri = mi.Tag as RevisionInfo;
RevisionInfo ri = RevisionInfo.Get(int.Parse(mi.Tag.ToString())); RevisionInfo ri = RevisionInfo.Get(int.Parse(mi.Tag.ToString()));
{ {
@@ -1584,12 +1660,22 @@ namespace Volian.Controls.Library
//B2021-086 Added the check for the last revision stage is an Approved stage //B2021-086 Added the check for the last revision stage is an Approved stage
if ((ri.RevisionID < int.Parse(mip.Parent.Tag.ToString())) && ri.LatestVersion.MyStage.IsApproved != 0) if ((ri.RevisionID < int.Parse(mip.Parent.Tag.ToString())) && ri.LatestVersion.MyStage.IsApproved != 0)
superceded = true; superceded = true;
// C2025_015 get the child's name to append to file name
mip = mip.Parent as MenuItem;
if (mip != null)
{
childName = "_" + mip.Text;
}
} }
ItemInfo ii = ItemInfo.Get(ri.ItemID); ItemInfo ii = ItemInfo.Get(ri.ItemID);
ii.MyDocVersion.DocVersionConfig.SelectedSlave = ri.MyConfig.Applicability_Index; ii.MyDocVersion.DocVersionConfig.SelectedSlave = ri.MyConfig.Applicability_Index;
vlnTreeViewPdfArgs args = new vlnTreeViewPdfArgs(Volian.Base.Library.TmpFile.CreateFileName(ProcedureInfo.Get(ri.ItemID).PDFNumber), ri.LatestVersion.PDF, superceded ? "Superceded" : ""); ProcedureInfo prcInfo = ProcedureInfo.Get(ri.ItemID);
if (prcInfo.MyContent.Number.ToUpper().Contains("<U") || ii.MyDocVersion.DocVersionConfig.Unit_ProcedureNumber.Contains("#"))
childName = ""; // unit identification already part of procedure number-no need to add the child name to the PDF file name
// C2025-015 build a file name that includes a partial folder path, the child name and approved revision number
string approvedPDFName = string.Format("{0}{1}_{2} Revision {3}", ProcFolderPathforApprovedPDF(prcInfo.SearchDVPath_clean),childName, prcInfo.PDFNumber, ri.RevisionNumber);
vlnTreeViewPdfArgs args = new vlnTreeViewPdfArgs(Volian.Base.Library.TmpFile.CreateFileName(approvedPDFName), ri.LatestVersion.PDF, superceded ? "Superceded" : "");
OnViewPDF(sender, args); OnViewPDF(sender, args);
// System.Diagnostics.Process pp = System.Diagnostics.Process.Start(GetDocPdf(ri, superceded));
} }
void SummaryOfChanges_Click(object sender, EventArgs e) void SummaryOfChanges_Click(object sender, EventArgs e)
{ {
@@ -1949,9 +2035,6 @@ namespace Volian.Controls.Library
case "Create Time Critical Action Summary": case "Create Time Critical Action Summary":
OnCreateTimeCriticalActionSummary(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0, mi.Text, (int)mi.Tag)); OnCreateTimeCriticalActionSummary(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0, mi.Text, (int)mi.Tag));
break; break;
case "Select Annotations": // C2025-027
OnSelectAnnotations(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0));
break;
default: default:
if (mip.Text.StartsWith("Showing Change Bars Starting")) if (mip.Text.StartsWith("Showing Change Bars Starting"))
OnSelectDateToStartChangeBars(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0)); OnSelectDateToStartChangeBars(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0));
@@ -2257,9 +2340,6 @@ namespace Volian.Controls.Library
FlexibleMessageBox.Show("You have copied a document that is NOT linked to an Enhanced Document.\n\n" + FlexibleMessageBox.Show("You have copied a document that is NOT linked to an Enhanced Document.\n\n" +
"You cannot paste a Non-Enhanced Procedure into an Enhanced Procedure Set.", "Cannot Paste Here"); "You cannot paste a Non-Enhanced Procedure into an Enhanced Procedure Set.", "Cannot Paste Here");
break; break;
case "Select Annotations": // C2025-027
OnSelectAnnotations(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0));
break;
//case "Check Out Procedure Set": //case "Check Out Procedure Set":
// CheckOutDocVersion(SelectedNode as VETreeNode); // CheckOutDocVersion(SelectedNode as VETreeNode);
// break; // break;
@@ -2274,6 +2354,23 @@ namespace Volian.Controls.Library
break; break;
} }
} }
//C2025-024 Electronic Procedures - Phase 2 (PROMS XML output)
// Handles clicking of items in the context menu
// for exporting Electronic Procedures
// tag will be of format:
// {EP Annotation Type ID},{Unit}
// if not multi-unit, unit will be zero.
void miEP_Click(object sender, EventArgs e)
{
MenuItem mi = sender as MenuItem;
int annTypeid = int.Parse(((string)mi.Tag).Split(',')[0]);
int unit = int.Parse(((string)mi.Tag).Split(',')[1]);
if (unit == 0)
OnExportImportProcedureSets(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0, annTypeid));
else
OnExportImportProcedureSets(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0, "", unit, annTypeid));
}
private bool _doingCollapseNode = false; // B2016-058 when collapse is done, it always calls the drag node event which doesn't appear to be needed private bool _doingCollapseNode = false; // B2016-058 when collapse is done, it always calls the drag node event which doesn't appear to be needed
private void CollapseProcedures() private void CollapseProcedures()
{ {

View File

@@ -1688,7 +1688,7 @@ namespace Volian.Print.Library
System.Windows.Forms.MessageBox.Show(msg.ToString(), "Error during PDF creation for search:", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Exclamation); System.Windows.Forms.MessageBox.Show(msg.ToString(), "Error during PDF creation for search:", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Exclamation);
} }
private static string BuildStepTab(ItemInfo item) public static string BuildStepTab(ItemInfo item)
{ {
if (item == null) if (item == null)
return string.Empty; return string.Empty;