From 6e6abbd75907a213eb31722c89e4981c9112c18d Mon Sep 17 00:00:00 2001 From: Kevin Laskey Date: Mon, 22 Jul 2024 09:28:48 -0400 Subject: [PATCH 1/8] C2024-005 - Kevin working on folder retrieval --- .../frmBatchRefresh.Designer.cs | 21 ++-- .../VEPROMS User Interface/frmBatchRefresh.cs | 116 +++++++++++++----- .../frmBatchRefresh.resx | 2 +- 3 files changed, 94 insertions(+), 45 deletions(-) diff --git a/PROMS/VEPROMS User Interface/frmBatchRefresh.Designer.cs b/PROMS/VEPROMS User Interface/frmBatchRefresh.Designer.cs index 547c5582..b9087ebe 100644 --- a/PROMS/VEPROMS User Interface/frmBatchRefresh.Designer.cs +++ b/PROMS/VEPROMS User Interface/frmBatchRefresh.Designer.cs @@ -350,7 +350,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, 27); this.pnlLater.Name = "pnlLater"; this.pnlLater.Padding = new System.Windows.Forms.Padding(6); this.pnlLater.Size = new System.Drawing.Size(279, 37); @@ -391,7 +391,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, 21); this.chkLater.TabIndex = 4; this.chkLater.Text = "Process Later"; this.chkLater.UseVisualStyleBackColor = true; @@ -496,9 +496,9 @@ this.sideNavPanel4.Controls.Add(this.myTVdel); this.sideNavPanel4.Controls.Add(this.btnDeleteItems); this.sideNavPanel4.Dock = System.Windows.Forms.DockStyle.Fill; - this.sideNavPanel4.Location = new System.Drawing.Point(89, 31); + this.sideNavPanel4.Location = new System.Drawing.Point(102, 39); this.sideNavPanel4.Name = "sideNavPanel4"; - this.sideNavPanel4.Size = new System.Drawing.Size(291, 494); + this.sideNavPanel4.Size = new System.Drawing.Size(278, 486); this.sideNavPanel4.TabIndex = 27; // // swDeleteFolder @@ -514,7 +514,6 @@ this.superTooltip1.SetSuperTooltip(this.swDeleteFolder, new DevComponents.DotNetBar.SuperTooltipInfo("Check RO Links", "", resources.GetString("swDeleteFolder.SuperTooltip"), null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(250, 150))); this.swDeleteFolder.SwitchClickTogglesValue = true; this.swDeleteFolder.TabIndex = 39; - this.swDeleteFolder.Visible = false; this.swDeleteFolder.ValueChanged += new System.EventHandler(this.swDeleteFolder_ValueChanged); // // labelX13 @@ -573,7 +572,7 @@ this.myTVdel.CheckBoxes = true; this.myTVdel.Location = new System.Drawing.Point(14, 145); this.myTVdel.Name = "myTVdel"; - this.myTVdel.Size = new System.Drawing.Size(267, 331); + this.myTVdel.Size = new System.Drawing.Size(254, 323); this.myTVdel.TabIndex = 34; // // btnDeleteItems @@ -617,7 +616,7 @@ this.warningBox3.CloseButtonVisible = false; this.warningBox3.Image = ((System.Drawing.Image)(resources.GetObject("warningBox3.Image"))); this.warningBox3.Location = new System.Drawing.Point(17, 207); - this.warningBox3.Margin = new System.Windows.Forms.Padding(4); + 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); @@ -821,7 +820,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); @@ -834,7 +833,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); @@ -1065,7 +1064,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); @@ -1149,7 +1148,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); diff --git a/PROMS/VEPROMS User Interface/frmBatchRefresh.cs b/PROMS/VEPROMS User Interface/frmBatchRefresh.cs index bca40b1b..2a0bb434 100644 --- a/PROMS/VEPROMS User Interface/frmBatchRefresh.cs +++ b/PROMS/VEPROMS User Interface/frmBatchRefresh.cs @@ -158,7 +158,7 @@ namespace VEPROMS { if (noProcs) { - LoadBottomLevelFolders(fi, myTVdel); + LoadFolders(fi, myTVdel, null); } else { @@ -223,32 +223,98 @@ namespace VEPROMS return loadedWorkingDraft; } /// - /// Load only bottom layer of folders into treenode. - /// - /// - /// - private void LoadBottomLevelFolders(FolderInfo fi, TreeView treeView) + /// Load only folders into treeview + /// + private void LoadFolders(FolderInfo fi, TreeView treeView, TreeNode parentNode) { + + foreach (FolderInfo fic in fi.SortedChildFolders) { + TreeNode tnc = treeView.Nodes.Add(fic.Name); + tnc.Tag = fic; + if (fic.ChildFolderCount > 0) { // Recursively call for child folders - LoadBottomLevelFolders(fic, treeView); + LoadFolders(fic, treeView, tnc); } else { if (fic.Name != "PROMS") { - - - // If the folder is a bottom-level folder (no child folders), add it directly to the TreeView - TreeNode tnc = treeView.Nodes.Add(fic.Name); - tnc.Tag = fic; + + //Working + //foreach (DocVersionInfo dvi in fic.FolderDocVersions) + //{ + // myDocVersions.Add(tnc, dvi); + //} + + // If parentNode is null, add to the root of the tree + if (parentNode == null) + { + // If the folder is a bottom-level folder (no child folders), add it directly to the TreeView + treeView.Nodes.Add(tnc); + foreach (DocVersionInfo dvi in fic.FolderDocVersions) + { + myDocVersions.Add(tnc, dvi); + } + } + else + { + // Otherwise, add to the parent node + parentNode.Nodes.Add(fic.Name); + foreach (DocVersionInfo dvi in fic.FolderDocVersions) + { + myDocVersions.Add(tnc, dvi); + } + } } } } + + + //foreach (FolderInfo fic in fi.SortedChildFolders) + //{ + // // Skip "PROMS" folder + // if (fic.Name == "PROMS") + // { + // continue; + // } + + // //// Create a new tree node for the current folder + // TreeNode tnc = new TreeNode(fic.Name) { Tag = fic }; + + // // If parentNode is null, add to the root of the tree + // if (parentNode == null) + // { + // // If the folder is a bottom-level folder (no child folders), add it directly to the TreeView + // treeView.Nodes.Add(tnc); + // foreach (DocVersionInfo dvi in fic.FolderDocVersions) + // { + // myDocVersions.Add(tnc, dvi); + // } + // } + // else + // { + // // Otherwise, add to the parent node + // //parentNode.Nodes.Add(tnc); + + // // If the folder is a bottom-level folder (no child folders), add it directly to the TreeView + // parentNode.Nodes.Add(fic.Name); + // foreach (DocVersionInfo dvi in fic.FolderDocVersions) + // { + // myDocVersions.Add(tnc, dvi); + // } + // } + + // // Recursively call for child folders + // if (fic.ChildFolderCount > 0) + // { + // LoadFolders(fic, treeView, tnc); + // } + //} } private bool LoadDocVersions(FolderInfo fic, TreeNode tnc, bool noProcs) { @@ -1693,28 +1759,12 @@ namespace VEPROMS // pil.Add(myProcedures[tn]); ////Load Selected Folders - Dictionary folderData = new Dictionary(); + List dvil = new List(); + foreach (TreeNode tn in myDocVersions.Keys) + if (tn.Checked) + dvil.Add(myDocVersions[tn]); - //List Flist = new List(); - //foreach (TreeNode tn in myDocVersions.Keys) - // if (tn.Checked) - // Flist.Add(); - - //List dvil = new List(); - //foreach (TreeNode tn in myDocVersions.Keys) - // if (tn.Checked) - // dvil.Add(myDocVersions[tn]); - - //foreach (TreeNode tn in myTVdel.Nodes) - //{ - // if (tn.Checked) - // { - // var itemInfo = myProcedures[tn]; - // folderData.Add(itemInfo.ItemID, itemInfo.DisplayText); - // } - //} - - //ProcessDelete(dvil); + ProcessDelete(dvil); } else { diff --git a/PROMS/VEPROMS User Interface/frmBatchRefresh.resx b/PROMS/VEPROMS User Interface/frmBatchRefresh.resx index ee2c6dfc..a2674e82 100644 --- a/PROMS/VEPROMS User Interface/frmBatchRefresh.resx +++ b/PROMS/VEPROMS User Interface/frmBatchRefresh.resx @@ -405,4 +405,4 @@ If more than one procedure is selected, it is recommended that this be performed 46 - + \ No newline at end of file -- 2.47.2 From 4644699df073ffa647bb5c6f1d96585d0c889544 Mon Sep 17 00:00:00 2001 From: Kevin Laskey Date: Mon, 29 Jul 2024 15:57:54 -0400 Subject: [PATCH 2/8] C20240-005 - Deleting Folder additions --- PROMS/VEPROMS User Interface/PROMSFixes.Sql | 88 +++- .../frmBatchRefresh.Designer.cs | 1 - .../VEPROMS User Interface/frmBatchRefresh.cs | 202 +++------ PROMS/VEPROMS User Interface/frmVEPROMS.cs | 26 +- .../VEPROMS.CSLA.Library/Generated/Folder.cs | 27 ++ .../VEObjects/VETreeNode.cs | 4 +- PROMS/Volian.Controls.Library/vlnTreeView.cs | 391 ++++++++++-------- 7 files changed, 416 insertions(+), 323 deletions(-) diff --git a/PROMS/VEPROMS User Interface/PROMSFixes.Sql b/PROMS/VEPROMS User Interface/PROMSFixes.Sql index c557604d..608f3cc1 100644 --- a/PROMS/VEPROMS User Interface/PROMSFixes.Sql +++ b/PROMS/VEPROMS User Interface/PROMSFixes.Sql @@ -23519,6 +23519,90 @@ GO ========================================================================================================== */ + + +/* +========================================================================================================== + Start: C2024-005: SQL to delete folders using admin tool +========================================================================================================== +*/ + +IF EXISTS (SELECT * FROM sys.objects WHERE type = 'P' AND name = 'deleteFolderAdmin') +DROP PROCEDURE [dbo].[deleteFolderAdmin] +GO + +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[deleteFolderAdmin] + +( + @FolderID int +) +WITH EXECUTE AS OWNER +AS +BEGIN TRY -- Try Block + BEGIN TRANSACTION + DELETE From Assignments WHERE [FolderID]=@FolderID + DELETE From Associations where VersionID in (select versionid from DocVersions where folderid = @FolderID) + DELETE From DocVersions where VersionID in (select versionid from DocVersions where folderid= @FolderID) + DELETE From DocVersions where [FolderID]=@FolderID + + -- Delete from items where ItemID matches + DELETE FROM tblitems + WHERE ItemID IN ( + SELECT DISTINCT ItemID + FROM docversions + WHERE folderID = @folderID + ); + + + -- Delete from items where ItemID matches + DELETE FROM tblitems + WHERE ItemID IN ( + SELECT DISTINCT ItemID + FROM docversions + WHERE folderID = @folderID + ); + + -- Delete from tblContents where ContentID matches + DELETE FROM tblContents + WHERE ContentID IN ( + SELECT DISTINCT c.ContentID + FROM tblContents c + JOIN items i ON c.ContentID = i.ItemID + WHERE i.ItemID IN ( + SELECT DISTINCT ItemID + FROM docversions + WHERE folderID = @folderID + ) + ); + + DELETE From Folders WHERE [ParentID] = @FolderID + DELETE From Folders WHERE [FolderID] = @FolderID + + + IF( @@TRANCOUNT > 0 ) COMMIT +END TRY +BEGIN CATCH -- Catch Block + IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level + ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback + EXEC vlnErrorHandler +END CATCH + +GO +/* +========================================================================================================== + End: C2024-005: SQL to delete folders using admin tool +========================================================================================================== +*/ + /* --------------------------------------------------------------------------- | ADD New Code Before this Block | @@ -23552,8 +23636,8 @@ BEGIN TRY -- Try Block DECLARE @RevDate varchar(255) DECLARE @RevDescription varchar(255) - set @RevDate = '07/18/2024 11:24' - set @RevDescription = 'C2024-005 Add an Admin tool that can delete a group of annotations.' + set @RevDate = '07/29/2024 11:24' + set @RevDescription = 'C2024-005 Add SQL for Admin tool delete folders.' Select cast(@RevDate as datetime) RevDate, @RevDescription RevDescription PRINT 'SQL Code Revision ' + @RevDate + ' - ' + @RevDescription diff --git a/PROMS/VEPROMS User Interface/frmBatchRefresh.Designer.cs b/PROMS/VEPROMS User Interface/frmBatchRefresh.Designer.cs index b9087ebe..3258cebb 100644 --- a/PROMS/VEPROMS User Interface/frmBatchRefresh.Designer.cs +++ b/PROMS/VEPROMS User Interface/frmBatchRefresh.Designer.cs @@ -530,7 +530,6 @@ this.superTooltip1.SetSuperTooltip(this.labelX13, new DevComponents.DotNetBar.SuperTooltipInfo("Check RO Links", "", resources.GetString("labelX13.SuperTooltip"), null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(350, 175))); this.labelX13.TabIndex = 38; this.labelX13.Text = "Delete Folders"; - this.labelX13.Visible = false; // // swDeleteAnnotations // diff --git a/PROMS/VEPROMS User Interface/frmBatchRefresh.cs b/PROMS/VEPROMS User Interface/frmBatchRefresh.cs index 2a0bb434..922ce14e 100644 --- a/PROMS/VEPROMS User Interface/frmBatchRefresh.cs +++ b/PROMS/VEPROMS User Interface/frmBatchRefresh.cs @@ -24,10 +24,14 @@ namespace VEPROMS private bool IsAdministratorUser = false; //C2020-035 used to control what Set Amins can do // C2017-030 - new Admin Tools user interface // pass in session info to constructor - public frmBatchRefresh(SessionInfo sessionInfo) + + private frmVEPROMS _veProms; + + public frmBatchRefresh(SessionInfo sessionInfo, frmVEPROMS veProms) { InitializeComponent(); _MySessionInfo = sessionInfo; + _veProms = veProms; if (sideNavItmDelete.Checked) { @@ -156,44 +160,16 @@ namespace VEPROMS if (fi.ChildFolderCount > 0) { - if (noProcs) - { - LoadFolders(fi, myTVdel, null); - } - else - { - TreeNode tn = new TreeNode(fi.Name); - tn.Tag = fi; - tn.StateImageIndex = -1; // Hide the checkbox for the root node - LoadChildFolders(fi, tn, noProcs); - myTVdel.Nodes.Add(tn); - } + TreeNode tn = new TreeNode(fi.Name); + tn.Tag = fi; + tn.StateImageIndex = -1; // Hide the checkbox for the root node + LoadChildFolders(fi, tn, noProcs); + myTVdel.Nodes.Add(tn); } if (myTVdel.SelectedNode != null) myTVdel.SelectedNode.Expand(); this.Cursor = Cursors.Default; - - //btnFixLinks.Enabled = false; - //this.Cursor = Cursors.WaitCursor; - ////myTreeNodePath = new List(); - //myTVdel.Nodes.Clear(); - //myDocVersions.Clear(); - //FolderInfo fi = FolderInfo.GetTop(); - //TreeNode tn = myTVdel.Nodes.Add(fi.Name ); - //tn.Tag = fi; - //if (fi.ChildFolderCount > 0) - //{ - // if (noProcs) - // { - // LoadBottomLevelFolders(fi, myTVdel); - // } - // else - // LoadChildFolders(fi, tn, noProcs); - //} - //if (myTVdel.SelectedNode != null) - // myTVdel.SelectedNode.Expand(); - //this.Cursor = Cursors.Default; } // B2021-060 Higher level folders where being removed from the tree even if there was a child folder that containe a working draft set @@ -222,100 +198,6 @@ namespace VEPROMS tn.Remove(); return loadedWorkingDraft; } - /// - /// Load only folders into treeview - /// - private void LoadFolders(FolderInfo fi, TreeView treeView, TreeNode parentNode) - { - - - foreach (FolderInfo fic in fi.SortedChildFolders) - { - TreeNode tnc = treeView.Nodes.Add(fic.Name); - tnc.Tag = fic; - - if (fic.ChildFolderCount > 0) - { - // Recursively call for child folders - LoadFolders(fic, treeView, tnc); - } - else - { - if (fic.Name != "PROMS") - { - // If the folder is a bottom-level folder (no child folders), add it directly to the TreeView - - //Working - //foreach (DocVersionInfo dvi in fic.FolderDocVersions) - //{ - // myDocVersions.Add(tnc, dvi); - //} - - // If parentNode is null, add to the root of the tree - if (parentNode == null) - { - // If the folder is a bottom-level folder (no child folders), add it directly to the TreeView - treeView.Nodes.Add(tnc); - foreach (DocVersionInfo dvi in fic.FolderDocVersions) - { - myDocVersions.Add(tnc, dvi); - } - } - else - { - // Otherwise, add to the parent node - parentNode.Nodes.Add(fic.Name); - foreach (DocVersionInfo dvi in fic.FolderDocVersions) - { - myDocVersions.Add(tnc, dvi); - } - } - } - } - } - - - //foreach (FolderInfo fic in fi.SortedChildFolders) - //{ - // // Skip "PROMS" folder - // if (fic.Name == "PROMS") - // { - // continue; - // } - - // //// Create a new tree node for the current folder - // TreeNode tnc = new TreeNode(fic.Name) { Tag = fic }; - - // // If parentNode is null, add to the root of the tree - // if (parentNode == null) - // { - // // If the folder is a bottom-level folder (no child folders), add it directly to the TreeView - // treeView.Nodes.Add(tnc); - // foreach (DocVersionInfo dvi in fic.FolderDocVersions) - // { - // myDocVersions.Add(tnc, dvi); - // } - // } - // else - // { - // // Otherwise, add to the parent node - // //parentNode.Nodes.Add(tnc); - - // // If the folder is a bottom-level folder (no child folders), add it directly to the TreeView - // parentNode.Nodes.Add(fic.Name); - // foreach (DocVersionInfo dvi in fic.FolderDocVersions) - // { - // myDocVersions.Add(tnc, dvi); - // } - // } - - // // Recursively call for child folders - // if (fic.ChildFolderCount > 0) - // { - // LoadFolders(fic, treeView, tnc); - // } - //} - } private bool LoadDocVersions(FolderInfo fic, TreeNode tnc, bool noProcs) { bool rtnval = false; @@ -1750,21 +1632,27 @@ namespace VEPROMS if (swDeleteFolder.Value) { - //TODO process deletions of folders - txtProcess.AppendText("Deleting Folders..."); - //List pil = new List(); - //foreach (TreeNode tn in myProcedures.Keys) - // if (tn.Checked) - // pil.Add(myProcedures[tn]); + if (FlexibleMessageBox.Show(this, "You sure you want to remove the selected folders and their contents?", "Confirm Folder Deletion", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) + { - ////Load Selected Folders - List dvil = new List(); - foreach (TreeNode tn in myDocVersions.Keys) - if (tn.Checked) - dvil.Add(myDocVersions[tn]); - ProcessDelete(dvil); + //TODO process deletions of folders + txtProcess.AppendText("Deleting Folders..."); + + //List pil = new List(); + //foreach (TreeNode tn in myProcedures.Keys) + // if (tn.Checked) + // pil.Add(myProcedures[tn]); + + ////Load Selected Folders + List dvil = new List(); + foreach (TreeNode tn in myDocVersions.Keys) + if (tn.Checked) + dvil.Add(myDocVersions[tn]); + + ProcessDelete(dvil); + } } else { @@ -1800,11 +1688,13 @@ namespace VEPROMS foreach (var kvp in foldersToDelete) { - int itemID = (int)kvp.ItemID; - string folderName = kvp.Name; + //Gather folder information + + FolderInfo fi = (FolderInfo)kvp.ActiveParent; + int itemID = (int)fi.FolderID; + string folderName = fi.Name; // Perform the deletion operation - // Assume DeleteFolderByID is a method that deletes the folder by its ItemID bool deletionSuccessful = DeleteFolderByID(itemID); // Update txtProcess with the progress @@ -1818,13 +1708,29 @@ namespace VEPROMS } txtProcess.AppendText(Environment.NewLine); } + + //Run Repair + PurgeDisconnectedItems(); // Orphan Items + + //rebuild + ResetDelTV(true); } - // Example deletion method - private bool DeleteFolderByID(int itemID) + private bool DeleteFolderByID(int folderID) { - // Implement your folder deletion logic here - // Return true if deletion was successful, false otherwise - return true; // Placeholder + try + { + //Delete + Folder.DeleteFolderAdmin(folderID); + + //update treeview UI via veProms + _veProms.tv_FolderDelete(folderID); + + return true; + } + catch + { + return false; + } } public List RetrieveChkAnnotations() diff --git a/PROMS/VEPROMS User Interface/frmVEPROMS.cs b/PROMS/VEPROMS User Interface/frmVEPROMS.cs index 3290cd6c..931f02c8 100644 --- a/PROMS/VEPROMS User Interface/frmVEPROMS.cs +++ b/PROMS/VEPROMS User Interface/frmVEPROMS.cs @@ -216,6 +216,8 @@ namespace VEPROMS set { _MyDocVersion = value; } } + + // C2015-022 setup the child PROMS window public frmVEPROMS(frmVEPROMS myParent, DocVersionInfo myDocVersion) { @@ -254,6 +256,22 @@ namespace VEPROMS tc.RefreshItem(myItemInfo); } + public void tv_FolderDelete(int folderId) + { + // Create an instance of the event args if needed + var args = new vlnTreeFolderDeleteEventArgs(folderId); + + // Trigger the deletion using the event arguments + tv.RemoveFolder(args.FolderId); + + } + private bool Tv_DeleteFolder(object sender, vlnTreeFolderDeleteEventArgs args) + { + tv.RemoveFolder(args.FolderId); + return true; + } + + private E_UCFImportOptions _UCFImportOptionsFromSettings; public frmVEPROMS() @@ -475,6 +493,7 @@ namespace VEPROMS tv.OpenItem += new vlnTreeViewItemInfoEvent(tv_OpenItem); tv.TabDisplay += new StepPanelTabDisplayEvent(tc_PanelTabDisplay); tv.DeleteItemInfo += new vlnTreeViewItemInfoDeleteEvent(tv_DeleteItemInfo); + tv.DeleteFolder += new vlnTreeViewItemInfoDeleteFolderEvent(Tv_DeleteFolder); tv.InsertItemInfo += new vlnTreeViewItemInfoInsertEvent(tv_InsertItemInfo); tv.NodeInsert += new vlnTreeViewEvent(tv_NodeInsert); tv.PasteItemInfo += new vlnTreeViewItemInfoPasteEvent(tv_PasteItemInfo); @@ -1603,6 +1622,11 @@ namespace VEPROMS return rtval; } + private bool tv_DeleteFolder(object sender, vlnTreeItemInfoEventArgs args) + { + return true; + } + private bool tv_PasteItemInfo(object sender, vlnTreeItemInfoPasteEventArgs args) { return tc.PasteRTBItem(args.MyItemInfo, args.CopyStartID, args.PasteType, (int)args.Type); @@ -2741,7 +2765,7 @@ namespace VEPROMS void btnAdministrativeTools_Click(object sender, EventArgs e) { - frmBatchRefresh frm = new frmBatchRefresh(MySessionInfo); + frmBatchRefresh frm = new frmBatchRefresh(MySessionInfo, this); frm.ProgressBar = bottomProgBar; frm.ShowDialog(this); } diff --git a/PROMS/VEPROMS.CSLA.Library/Generated/Folder.cs b/PROMS/VEPROMS.CSLA.Library/Generated/Folder.cs index e6f8fdbd..a8dfd177 100644 --- a/PROMS/VEPROMS.CSLA.Library/Generated/Folder.cs +++ b/PROMS/VEPROMS.CSLA.Library/Generated/Folder.cs @@ -1433,6 +1433,31 @@ namespace VEPROMS.CSLA.Library throw new DbCslaException("Folder.Remove", ex); } } + [Transactional(TransactionalTypes.TransactionScope)] + public static void DeleteFolderAdmin(int folderID) + { + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] Folder.Remove", 0); + try + { + using (SqlConnection cn = Database.VEPROMS_SqlConnection) + { + using (SqlCommand cm = cn.CreateCommand()) + { + cm.CommandType = CommandType.StoredProcedure; + cm.CommandTimeout = Database.SQLTimeout; + cm.CommandText = "deleteFolderAdmin"; + cm.Parameters.AddWithValue("@FolderID", folderID); + cm.ExecuteNonQuery(); + } + } + } + catch (Exception ex) + { + if (_MyLog.IsErrorEnabled) _MyLog.Error("Folder.Remove", ex); + throw new DbCslaException("Folder.Remove", ex); + } + } + #endregion #region Exists public static bool Exists(int folderID) @@ -1536,6 +1561,8 @@ namespace VEPROMS.CSLA.Library // Needs to be overriden to add new validation rules } } + + #endregion } // Class #region Converter diff --git a/PROMS/VEPROMS.CSLA.Library/VEObjects/VETreeNode.cs b/PROMS/VEPROMS.CSLA.Library/VEObjects/VETreeNode.cs index d29e4595..a5dc70c9 100644 --- a/PROMS/VEPROMS.CSLA.Library/VEObjects/VETreeNode.cs +++ b/PROMS/VEPROMS.CSLA.Library/VEObjects/VETreeNode.cs @@ -167,7 +167,9 @@ namespace VEPROMS.CSLA.Library tn.ResetNode("Dummy GetFolder"); return tn; } -// public abstract void LoadChildren(); + + + // public abstract void LoadChildren(); //private long _Start; //private Dictionary _Timings=new Dictionary(); //private void tReset() diff --git a/PROMS/Volian.Controls.Library/vlnTreeView.cs b/PROMS/Volian.Controls.Library/vlnTreeView.cs index 5757a7b0..781479c9 100644 --- a/PROMS/Volian.Controls.Library/vlnTreeView.cs +++ b/PROMS/Volian.Controls.Library/vlnTreeView.cs @@ -22,10 +22,11 @@ namespace Volian.Controls.Library public delegate void vlnTreeViewEvent(object sender, vlnTreeEventArgs args); public delegate void vlnTreeViewTimeEvent(object sender, vlnTreeTimeEventArgs args); public delegate void vlnTreeViewStatusEvent(object sender, vlnTreeStatusEventArgs args); - public delegate ItemInfo vlnTreeViewClipboardStatusEvent(object sender, vlnTreeEventArgs args); - public delegate void vlnTreeViewItemInfoEvent(object sender, vlnTreeItemInfoEventArgs args); + public delegate ItemInfo vlnTreeViewClipboardStatusEvent(object sender, vlnTreeEventArgs args); + public delegate void vlnTreeViewItemInfoEvent(object sender, vlnTreeItemInfoEventArgs args); public delegate bool vlnTreeViewBoolEvent(object sender, vlnTreeEventArgs args); public delegate bool vlnTreeViewItemInfoDeleteEvent(object sender, vlnTreeItemInfoEventArgs args); + public delegate bool vlnTreeViewItemInfoDeleteFolderEvent(object sender, vlnTreeFolderDeleteEventArgs args); public delegate bool vlnTreeViewItemInfoInsertEvent(object sender, vlnTreeItemInfoInsertEventArgs args); public delegate bool vlnTreeViewItemInfoPasteEvent(object sender, vlnTreeItemInfoPasteEventArgs args); public delegate TreeNode vlnTreeViewTreeNodeEvent(object sender, vlnTreeEventArgs args); @@ -220,6 +221,15 @@ namespace Volian.Controls.Library } #endregion } + public class vlnTreeFolderDeleteEventArgs : EventArgs + { + public int FolderId { get; } + + public vlnTreeFolderDeleteEventArgs(int folderId) + { + FolderId = folderId; + } + } public enum E_InsertType {Before, After, Child}; public partial class vlnTreeItemInfoInsertEventArgs { @@ -427,6 +437,12 @@ namespace Volian.Controls.Library if (DeleteItemInfo != null) return DeleteItemInfo(sender, args); return false; } + public event vlnTreeViewItemInfoDeleteFolderEvent DeleteFolder; + private bool OnDeleteFolder(object sender, vlnTreeFolderDeleteEventArgs args) + { + if (DeleteItemInfo != null) return DeleteFolder(sender, args); + return false; + } public event vlnTreeViewItemInfoInsertEvent InsertItemInfo; private bool OnInsertItemInfo(object sender, vlnTreeItemInfoInsertEventArgs args) { @@ -551,11 +567,11 @@ namespace Volian.Controls.Library { if (ProcedureCheckedOutTo != null) ProcedureCheckedOutTo(sender, args); } - public event vlnTreeViewEvent ExportImportProcedureSets; - private void OnExportImportProcedureSets(object sender, vlnTreeEventArgs args) - { - if (ExportImportProcedureSets != null) ExportImportProcedureSets(sender, args); - } + public event vlnTreeViewEvent ExportImportProcedureSets; + private void OnExportImportProcedureSets(object sender, vlnTreeEventArgs args) + { + if (ExportImportProcedureSets != null) ExportImportProcedureSets(sender, args); + } public event vlnTreeViewEvent PrintTransitionReport; private void OnPrintTransitionReport(object sender, vlnTreeEventArgs args) { @@ -607,7 +623,7 @@ namespace Volian.Controls.Library // This event was added to update the Step Properties/RO & Tools/Search RO & Reports // when an update of ro.fst is done & the ro trees on those panels needs refreshed. // (bug fix B2015-226) - public event StepPanelTabDisplayEvent TabDisplay; + public event StepPanelTabDisplayEvent TabDisplay; private void OnTabDisplay(object sender, StepPanelTabDisplayEventArgs args) { if (TabDisplay != null) TabDisplay(sender, args); @@ -693,39 +709,39 @@ namespace Volian.Controls.Library //_MyLog.WarnFormat("Context Menu 1b - {0}", GC.GetTotalMemory(true)); if (ui.IsAdministrator() || ui.IsSetAdministrator(fi)) { - if (fi.MyParent != null) // don't allow insert before/after if at top node + if (fi.MyParent != null) // don't allow insert before/after if at top node { if (!ui.IsAdministrator() && DoSpecificInfo) cm.MenuItems.Add("Procedure Set Specific Information", new EventHandler(mi_Click)); // B2020-111 only allow Set Administrator to add new folders inside folders they admininstrate - if (ui.IsAdministrator()||ui.IsSetAdministrator(fi.MyParent)) + if (ui.IsAdministrator() || ui.IsSetAdministrator(fi.MyParent)) { cm.MenuItems.Add("Insert Folder Before", new EventHandler(mi_Click)); cm.MenuItems.Add("Insert Folder After", new EventHandler(mi_Click)); } } // B2020-111 only allow Set Administrator to add new folders inside folders they admininstrate - if ((ui.IsAdministrator() || ui.IsSetAdministrator(fi.MyParent)) && fi.FolderDocVersionCount == 0) + if ((ui.IsAdministrator() || ui.IsSetAdministrator(fi.MyParent)) && fi.FolderDocVersionCount == 0) cm.MenuItems.Add("New Folder", new EventHandler(mi_Click)); - if (fi.ChildFolderCount == 0 && !fi.HasWorkingDraft) + if (fi.ChildFolderCount == 0 && !fi.HasWorkingDraft) cm.MenuItems.Add("Create Working Draft", new EventHandler(mi_Click)); } - if (fi.HasWorkingDraft) + if (fi.HasWorkingDraft) cm.MenuItems.Add("Print Transition Report", new EventHandler(mi_Click)); } - else if (tn.VEObject as DocVersionInfo != null) // DocVersions can only contain procs + else if (tn.VEObject as DocVersionInfo != null) // DocVersions can only contain procs { isWrkDftNode = true; //_MyLog.WarnFormat("Context Menu 1c - {0}", GC.GetTotalMemory(true)); DocVersionInfo dvi = tn.VEObject as DocVersionInfo; if (ui.IsAdministrator() || ui.IsSetAdministrator(dvi)) - { - cm.MenuItems.Add("Import Procedure", mi_Click); - } - if (ui.IsAdministrator() || ui.IsSetAdministrator(dvi) || ui.IsWriter(dvi)) + { + cm.MenuItems.Add("Import Procedure", mi_Click); + } + if (ui.IsAdministrator() || ui.IsSetAdministrator(dvi) || ui.IsWriter(dvi)) { OwnerInfoList.Reset(); oil = OwnerInfoList.GetByVersionID(dvi.VersionID); - if (dvi.ActiveFormat.PlantFormat.FormatData.SpecificInfo) + if (dvi.ActiveFormat.PlantFormat.FormatData.SpecificInfo) cm.MenuItems.Add("Procedure Set Specific Information", new EventHandler(mi_Click)); cm.MenuItems.Add("Refresh Checked Out Procedures", new EventHandler(mi_Click)); cm.MenuItems.Add("New Procedure", new EventHandler(mi_Click)); @@ -812,15 +828,15 @@ namespace Volian.Controls.Library urv.Enabled = !dvi.ROfstLastCompleted || dvi.NewerRoFst; } } - else if (tn.VEObject as ProcedureInfo != null) // Procs can only contain sections + else if (tn.VEObject as ProcedureInfo != null) // Procs can only contain sections { isProcNode = true; ProcedureInfo pri = tn.VEObject as ProcedureInfo; oi = OwnerInfo.GetByItemID(pri.ItemID, CheckOutType.Procedure); if (ui.IsAdministrator() || ui.IsSetAdministrator(pri.MyDocVersion)) - { - cm.MenuItems.Add("Export Procedure", mi_Click); - } + { + cm.MenuItems.Add("Export Procedure", mi_Click); + } if (ui.IsAdministrator() || ui.IsSetAdministrator(pri.MyDocVersion) || ui.IsWriter(pri.MyDocVersion)) { if (oi != null && oi.SessionID != MySessionInfo.SessionID) @@ -871,7 +887,7 @@ namespace Volian.Controls.Library } cm.MenuItems.Add(micas); cm.MenuItems.Add(mitcas); - cm.MenuItems.Add(mip); + cm.MenuItems.Add(mip); cm.MenuItems.Add(miqp); //cm.MenuItems.Add(mips); AddShowChangeBarsAfterMenuItem(cm.MenuItems, pri); @@ -1052,36 +1068,36 @@ namespace Volian.Controls.Library ok = true; else if (tn.VEObject is ItemInfo && (ui.IsAdministrator() || ui.IsSetAdministrator((tn.VEObject as ItemInfo).MyProcedure.MyDocVersion) || ui.IsWriter((tn.VEObject as ItemInfo).MyProcedure.MyDocVersion))) ok = true; - if(ok) + if (ok) Menu_Paste(tn, cm); #endregion //_MyLog.WarnFormat("Context Menu 5 - {0}", GC.GetTotalMemory(true)); #region Menu_Delete if (ok) + { + // Add delete to the menu unless at the very 'top' node, on a grouping (partinfo) + // node (RNOs, Steps, Cautions, Notes) or Folder/DocVersion that contains any items. + PartInfo pi = tn.VEObject as PartInfo; + if (pi == null && tn.Parent != null) // it's not a part and it's not the top.... { - // Add delete to the menu unless at the very 'top' node, on a grouping (partinfo) - // node (RNOs, Steps, Cautions, Notes) or Folder/DocVersion that contains any items. - PartInfo pi = tn.VEObject as PartInfo; - if (pi == null && tn.Parent != null) // it's not a part and it's not the top.... + fi = tn.VEObject as FolderInfo; + if (fi == null || tn.Nodes.Count == 0) // it's not a folder or it has no children { - fi = tn.VEObject as FolderInfo; - if (fi == null || tn.Nodes.Count == 0) // it's not a folder or it has no children + DocVersionInfo di = tn.VEObject as DocVersionInfo; + if (di == null || tn.Nodes.Count == 0) // it's not a docversion or it has no children { - DocVersionInfo di = tn.VEObject as DocVersionInfo; - if (di == null || tn.Nodes.Count == 0) // it's not a docversion or it has no children - { - // if it's an enhanced step that was linked from a source, don't allow delete - bool canDoDel = true; - ItemInfo iienh = tn.VEObject as ItemInfo; - if (iienh != null && iienh.IsProcedure && iienh.IsEnhancedProcedure) canDoDel = false; - if (iienh != null && iienh.IsSection && iienh.IsEnhancedSection && !iienh.IsEnhancedSectionTitleOnly) canDoDel = false; - if (iienh != null && iienh.IsEnhancedStep) canDoDel = false; - if (canDoDel) cm.MenuItems.Add("Delete", new EventHandler(mi_Click)); - } + // if it's an enhanced step that was linked from a source, don't allow delete + bool canDoDel = true; + ItemInfo iienh = tn.VEObject as ItemInfo; + if (iienh != null && iienh.IsProcedure && iienh.IsEnhancedProcedure) canDoDel = false; + if (iienh != null && iienh.IsSection && iienh.IsEnhancedSection && !iienh.IsEnhancedSectionTitleOnly) canDoDel = false; + if (iienh != null && iienh.IsEnhancedStep) canDoDel = false; + if (canDoDel) cm.MenuItems.Add("Delete", new EventHandler(mi_Click)); } } } + } #endregion //_MyLog.WarnFormat("Context Menu 6 - {0}", GC.GetTotalMemory(true)); #region Menu_ExternalTransitions @@ -1117,13 +1133,13 @@ namespace Volian.Controls.Library } doclink = string.Format("Unlink Source and {0} Procedure", doclink); MenuItem mix = cm.MenuItems.Add(doclink, new EventHandler(miEnhanced_Click)); - mix.Tag = -1; // NOTE this is what flags what gets processed on menu click, i.e. -1 + mix.Tag = -1; // NOTE this is what flags what gets processed on menu click, i.e. -1 } // if this is a source procedure that has enhanced, for example Background and/or deviation, ask which should be unlinked including all else if (eds != null && eds.Count > 1) { MenuItem miu = new MenuItem("Unlink Enhanced Procedure(s) from Source"); - miu.Tag = -2; // this menu item doesn't get used. + miu.Tag = -2; // this menu item doesn't get used. int k = 0; foreach (EnhancedDocument ed in eds) { @@ -1134,7 +1150,7 @@ namespace Volian.Controls.Library } // add all submenu item MenuItem mp1 = miu.MenuItems.Add("All", new EventHandler(miEnhanced_Click)); - mp1.Tag = 0; // Tag of 0 flags All + mp1.Tag = 0; // Tag of 0 flags All cm.MenuItems.Add(miu); } } @@ -1144,9 +1160,9 @@ namespace Volian.Controls.Library // Add Properties to the menu unless at the very 'top' node or on a grouping (partinfo) // node (RNOs, Steps, Cautions, Notes) or at the step level. // B2020-105 Allow Set Administrators to rename folder's (sets of procedures) to which they have been given access. - if ( tn.VEObject is FolderInfo) ok = (ui.IsAdministrator() || ui.IsSetAdministrator(tn.VEObject as FolderInfo)); - else ok = (tn.VEObject is DocVersionInfo) ? (ui.IsAdministrator() || ui.IsSetAdministrator(tn.VEObject as DocVersionInfo)) - : (ui.IsAdministrator() || (tn.VEObject is ItemInfo) && (ui.IsSetAdministrator((tn.VEObject as ItemInfo).MyProcedure.MyDocVersion) + if (tn.VEObject is FolderInfo) ok = (ui.IsAdministrator() || ui.IsSetAdministrator(tn.VEObject as FolderInfo)); + else ok = (tn.VEObject is DocVersionInfo) ? (ui.IsAdministrator() || ui.IsSetAdministrator(tn.VEObject as DocVersionInfo)) + : (ui.IsAdministrator() || (tn.VEObject is ItemInfo) && (ui.IsSetAdministrator((tn.VEObject as ItemInfo).MyProcedure.MyDocVersion) || ui.IsWriter((tn.VEObject as ItemInfo).MyProcedure.MyDocVersion))); PartInfo pia = tn.VEObject as PartInfo; ItemInfo ii = tn.VEObject as ItemInfo; @@ -1227,7 +1243,7 @@ namespace Volian.Controls.Library itm.Text == "Procedure Set Specific Information" || itm.Text == "Approve All Procedures for" || itm.Text == "Approve Some Procedures" || itm.Text == "Approve Some Procedures for") itm.Enabled = false; - + } } } @@ -1256,9 +1272,9 @@ namespace Volian.Controls.Library // F2022-024 added Time Critical Action Summary option foreach (MenuItem itm in cm.MenuItems) { - if(itm.Text == "Procedure Specific Information" || itm.Text == "New Section" || itm.Text == "Approve" || itm.Text == "Open" || + if (itm.Text == "Procedure Specific Information" || itm.Text == "New Section" || itm.Text == "Approve" || itm.Text == "Open" || itm.Text == "Copy" || itm.Text == "Delete" || itm.Text == "Properties..." || itm.Text == "Replace Existing Procedure" || - itm.Text.StartsWith("Showing Change Bars Starting") || itm.Text == "Create Continuous Action Summary" || + itm.Text.StartsWith("Showing Change Bars Starting") || itm.Text == "Create Continuous Action Summary" || itm.Text == "Create Time Critical Action Summary" || itm.Text == "Export Procedure") itm.Enabled = false; } @@ -1267,7 +1283,7 @@ namespace Volian.Controls.Library { foreach (MenuItem itm in cm.MenuItems) { - if(!itm.Text.StartsWith("Document Checked Out")) + if (!itm.Text.StartsWith("Document Checked Out")) itm.Enabled = false; } } @@ -1284,7 +1300,7 @@ namespace Volian.Controls.Library { _currentPri = pri; RevisionInfoList ril = RevisionInfoList.GetByItemID(pri.ItemID); - if (ril.Count == 0) return; // no versions to list + if (ril.Count == 0) return; // no versions to list MenuItem mi = menuItemCollection.Add("Versions"); int k = 0; int lastApprovedRevisionID = 0; @@ -1331,11 +1347,11 @@ namespace Volian.Controls.Library ril = null; } } - public void AddNewNode(IVEDrillDownReadOnly o) - { - VETreeNode tn = new VETreeNode(o); - SelectedNode.Nodes.Add(tn); - } + public void AddNewNode(IVEDrillDownReadOnly o) + { + VETreeNode tn = new VETreeNode(o); + SelectedNode.Nodes.Add(tn); + } private void AddApprovedRevisions(Menu.MenuItemCollection menuItemCollection, ProcedureInfo pri) { try @@ -1344,7 +1360,7 @@ namespace Volian.Controls.Library _currentPri = pri; using (RevisionInfoList ril = RevisionInfoList.GetByItemID(pri.ItemID)) { - //_MyLog.WarnFormat("Context Menu 1 After GET - {0}", GC.GetTotalMemory(true)); + //_MyLog.WarnFormat("Context Menu 1 After GET - {0}", GC.GetTotalMemory(true)); if (ril.Count == 0) return; // no versions to list MenuItem mi = menuItemCollection.Add("Versions"); int lastApprovedRevisionID = 0; @@ -1425,7 +1441,7 @@ namespace Volian.Controls.Library RevisionConfig rc = ri.MyConfig as RevisionConfig; // bug fix: B2016-183 - add the child's name (ex Unit 1) to the export file name for Parent/Child procedures. int applIdx = rc.Applicability_Index; - string str = (applIdx > 0)?_currentPri.MyDocVersion.UnitNames[applIdx-1] +"_":""; // if parent/child get the defined child name to inlcude the export filename + string str = (applIdx > 0) ? _currentPri.MyDocVersion.UnitNames[applIdx - 1] + "_" : ""; // if parent/child get the defined child name to inlcude the export filename System.Xml.XmlDocument xd = new System.Xml.XmlDocument(); xd.LoadXml(ri.LatestVersion.ApprovedXML); string PEIPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\VEPROMS\PEI_" + Database.VEPROMS_SqlConnection.Database; @@ -1473,12 +1489,12 @@ namespace Volian.Controls.Library { MenuItem mip = mi.Parent as MenuItem; //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; } vlnTreeViewPdfArgs args = new vlnTreeViewPdfArgs(Volian.Base.Library.TmpFile.CreateFileName(ProcedureInfo.Get(ri.ItemID).PDFNumber), ri.LatestVersion.PDF, superceded ? "Superceded" : ""); 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)); } void MultiUnitApprovedRevision_Click(object sender, EventArgs e) { @@ -1591,7 +1607,7 @@ namespace Volian.Controls.Library // 'from' is object copied // 'to' is object where paste was selected from #region Menu_Paste_ToDocVersion - if (tn.VEObject as DocVersionInfo != null) // paste item must be a proc + if (tn.VEObject as DocVersionInfo != null) // paste item must be a proc { if (iiClipboard.IsProcedure) { @@ -1601,7 +1617,7 @@ namespace Volian.Controls.Library // 3) 'to' docversion is 'source' and 'from' procedure is within this docversion // 4) 'to' docVersion is 'enhanced' and 'from' procedure is not bool canPaste = false; - + DocVersionInfo dvi = tn.VEObject as DocVersionInfo; DocVersionConfig dvc = dvi.DocVersionConfig; bool docVersionIsEnhanced = dvc.MyEnhancedDocuments != null && dvc.MyEnhancedDocuments.Count > 0 && dvc.MyEnhancedDocuments[0].Type == 0; @@ -1622,7 +1638,7 @@ namespace Volian.Controls.Library if (iiClipboard.IsRtfRaw) canPaste = false; // never paste an equation. if (canPaste) cm.MenuItems.Add("Paste Procedure", new EventHandler(mi_Click)); } - #endregion + #endregion } else { @@ -1633,7 +1649,7 @@ namespace Volian.Controls.Library { SectionInfo si = (tn.VEObject as SectionInfo != null) ? tn.VEObject as SectionInfo : null; #region Menu_Paste_ToFromProcedure - if (iiPasteHere.IsProcedure && iiClipboard.IsProcedure) // procedure can be pasted before/replace/after + if (iiPasteHere.IsProcedure && iiClipboard.IsProcedure) // procedure can be pasted before/replace/after { // Enhanced considerations, in order to paste a procedure around another procedure: NOTE that an 'enhanced' procedure cannot be in paste buffer! // 1) 'to' & 'from' both 'non', i.e. Neither can have enhanced config data (be source or enhanced) @@ -1657,16 +1673,16 @@ namespace Volian.Controls.Library bool prFromIsEnhanced = iiClipboard.IsEnhancedProcedure; bool prFromIsSource = pcFromCfg.MyEnhancedDocuments != null && pcFromCfg.MyEnhancedDocuments.Count > 0 && pcFromCfg.MyEnhancedDocuments[0].Type != 0; bool prCanPaste = false; - if (!prToIsEnhanced && !prToIsSource && !prFromIsEnhanced && !prFromIsSource) prCanPaste = true; // 1) - // else if ((!prToIsEnhanced && !prToIsSource) && prFromIsSource) prCanPaste = false; // 2) commented out because already set to false - else if (prToIsSource && !prFromIsEnhanced && !prFromIsSource) // 3) + if (!prToIsEnhanced && !prToIsSource && !prFromIsEnhanced && !prFromIsSource) prCanPaste = true; // 1) + // else if ((!prToIsEnhanced && !prToIsSource) && prFromIsSource) prCanPaste = false; // 2) commented out because already set to false + else if (prToIsSource && !prFromIsEnhanced && !prFromIsSource) // 3) { prCanPaste = true; okToReplace = false; } - else if (prToIsSource && iiPasteHere.MyDocVersion.VersionID == iiClipboard.MyDocVersion.VersionID) prCanPaste = true; // 4) - //else if (prToIsSource && iiPasteHere.MyDocVersion.VersionID != iiClipboard.MyDocVersion.VersionID) prCanPaste = false; // 5) commented out because already set to false - //else if (prToIsEnhanced && prFromIsSource) prCanPaste = false; // 6)commented out because already set to false + else if (prToIsSource && iiPasteHere.MyDocVersion.VersionID == iiClipboard.MyDocVersion.VersionID) prCanPaste = true; // 4) + //else if (prToIsSource && iiPasteHere.MyDocVersion.VersionID != iiClipboard.MyDocVersion.VersionID) prCanPaste = false; // 5) commented out because already set to false + //else if (prToIsEnhanced && prFromIsSource) prCanPaste = false; // 6)commented out because already set to false if (iiClipboard.IsRtfRaw) prCanPaste = okToReplace = prCanPaste = false; // never paste an equation. if (prCanPaste) cm.MenuItems.Add("Paste Procedure Before", new EventHandler(mi_Click)); if (okToReplace && prCanPaste) cm.MenuItems.Add("Replace Existing Procedure", new EventHandler(mi_Click)); @@ -1698,9 +1714,9 @@ namespace Volian.Controls.Library bool scFromIsEnhanced = iiClipboard.IsEnhancedSection; bool scFromIsSource = scFromCfg.MyEnhancedDocuments != null && scFromCfg.MyEnhancedDocuments.Count > 0 && scFromCfg.MyEnhancedDocuments[0].Type != 0; bool scCanPaste = false; - if (!prToIsEnhanced && !prToIsSource && !scFromIsEnhanced && !scFromIsSource) scCanPaste = true; // 1) + if (!prToIsEnhanced && !prToIsSource && !scFromIsEnhanced && !scFromIsSource) scCanPaste = true; // 1) else if (prToIsSource && !scFromIsEnhanced && !scFromIsSource) scCanPaste = true; - else if (prToIsSource && iiPasteHere.MyDocVersion.VersionID == iiClipboard.MyDocVersion.VersionID) scCanPaste = true; // 3) + else if (prToIsSource && iiPasteHere.MyDocVersion.VersionID == iiClipboard.MyDocVersion.VersionID) scCanPaste = true; // 3) if (iiClipboard.IsRtfRaw) scCanPaste = false; // never paste an equation. if (scCanPaste) cm.MenuItems.Add("Paste Section", new EventHandler(mi_Click)); } @@ -1724,13 +1740,13 @@ namespace Volian.Controls.Library bool secFromIsEnhanced = iiClipboard.IsEnhancedSection; bool secFromIsSource = secFromCfg.MyEnhancedDocuments != null && secFromCfg.MyEnhancedDocuments.Count > 0 && secFromCfg.MyEnhancedDocuments[0].Type != 0; bool secCanPaste = false; - if (!secToIsEnhanced && !secToIsSource && !secFromIsEnhanced && !secFromIsSource) secCanPaste = true; // 1) - else if (secToIsSource && !secFromIsEnhanced && !secFromIsSource) // 2) + if (!secToIsEnhanced && !secToIsSource && !secFromIsEnhanced && !secFromIsSource) secCanPaste = true; // 1) + else if (secToIsSource && !secFromIsEnhanced && !secFromIsSource) // 2) { secCanPaste = true; okToReplace = false; } - else if (secToIsSource && iiPasteHere.MyDocVersion.VersionID == iiClipboard.MyDocVersion.VersionID) secCanPaste = true; // 3) + else if (secToIsSource && iiPasteHere.MyDocVersion.VersionID == iiClipboard.MyDocVersion.VersionID) secCanPaste = true; // 3) if (iiClipboard.IsRtfRaw) secCanPaste = okToReplace = false; // never paste an equation. if (secCanPaste) cm.MenuItems.Add("Paste Section Before", new EventHandler(mi_Click)); if (okToReplace && secCanPaste) cm.MenuItems.Add("Replace Existing Section", new EventHandler(mi_Click)); @@ -1760,9 +1776,9 @@ namespace Volian.Controls.Library bool stpFromIsEnhanced = iiClipboard.IsEnhancedStep; bool stpFromIsSource = stpFromCfg.MyEnhancedDocuments != null && stpFromCfg.MyEnhancedDocuments.Count > 0 && stpFromCfg.MyEnhancedDocuments[0].Type != 0; bool stpCanPaste = false; - if (!secToIsEnhanced && !secToIsSource && !stpFromIsEnhanced && !stpFromIsSource) stpCanPaste = true; // 1) + if (!secToIsEnhanced && !secToIsSource && !stpFromIsEnhanced && !stpFromIsSource) stpCanPaste = true; // 1) else if (secToIsSource && !stpFromIsEnhanced && !stpFromIsSource) stpCanPaste = true; // 2) - else if (secToIsSource && iiPasteHere.MyDocVersion.VersionID == iiClipboard.MyDocVersion.VersionID) stpCanPaste = true; // 3) + else if (secToIsSource && iiPasteHere.MyDocVersion.VersionID == iiClipboard.MyDocVersion.VersionID) stpCanPaste = true; // 3) if (iiClipboard.IsRtfRaw) stpCanPaste = false; // never paste an equation. if (stpCanPaste) cm.MenuItems.Add("Paste Step", new EventHandler(mi_Click)); } @@ -1786,8 +1802,8 @@ namespace Volian.Controls.Library bool stpFromIsEnhanced = iiClipboard.IsEnhancedStep; bool stpFromIsSource = stpFromCfg.MyEnhancedDocuments != null && stpFromCfg.MyEnhancedDocuments.Count > 0 && stpFromCfg.MyEnhancedDocuments[0].Type != 0; bool stpCanPaste = false; - if (!stpToIsEnhanced && !stpToIsSource && !stpFromIsEnhanced && !stpFromIsSource) stpCanPaste = true; // 1) - else if (stpToIsSource && !stpFromIsEnhanced && !stpFromIsSource) // 2) + if (!stpToIsEnhanced && !stpToIsSource && !stpFromIsEnhanced && !stpFromIsSource) stpCanPaste = true; // 1) + else if (stpToIsSource && !stpFromIsEnhanced && !stpFromIsSource) // 2) { stpCanPaste = true; okToReplace = false; @@ -1795,7 +1811,7 @@ namespace Volian.Controls.Library else if (stpToIsSource && iiPasteHere.MyDocVersion.VersionID == iiClipboard.MyDocVersion.VersionID) // 3 { stpCanPaste = true; - if (stpFromIsSource) okToReplace = false; // B2017-183: don't allow a replace to source steps + if (stpFromIsSource) okToReplace = false; // B2017-183: don't allow a replace to source steps } if (iiClipboard.IsRtfRaw) stpCanPaste = false; // never paste an equation. if (stpCanPaste && AddToInsertMenu(iiPasteHere, 0)) cm.MenuItems.Add("Paste Step Before", new EventHandler(mi_Click)); @@ -1825,7 +1841,7 @@ namespace Volian.Controls.Library OnPrintSection(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0, mi.Text, (int)mi.Tag)); break; case "Print All Procedures for": - OnPrintAllProcedures(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0,mi.Text,(int)mi.Tag)); + OnPrintAllProcedures(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0, mi.Text, (int)mi.Tag)); break; case "Approve": OnApproveProcedure(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0, mi.Text, (int)mi.Tag)); @@ -1837,10 +1853,10 @@ namespace Volian.Controls.Library OnApproveSomeProcedures(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0, mi.Text, (int)mi.Tag)); break; case "Create Continuous Action Summary": - OnCreateContinuousActionSummary(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null,0,mi.Text,(int)mi.Tag)); + OnCreateContinuousActionSummary(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0, mi.Text, (int)mi.Tag)); break; 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; default: if (mip.Text.StartsWith("Showing Change Bars Starting")) @@ -1878,7 +1894,7 @@ namespace Volian.Controls.Library { if (selprc.IsEnhancedProcedure) { - selprc.DoUnlinkEnhanced(selprc, 0, !hasValidConnectingProc); // if no valid linked: enhtype = 0 since this an enhanced doc is getting unlinked + selprc.DoUnlinkEnhanced(selprc, 0, !hasValidConnectingProc); // if no valid linked: enhtype = 0 since this an enhanced doc is getting unlinked } else // from source { @@ -1886,7 +1902,7 @@ namespace Volian.Controls.Library if (hasValidConnectingProc) { ItemInfo lprc = ItemInfo.Get(seleds[0].ItemID); - lprc.DoUnlinkEnhanced(lprc, 0, !hasValidConnectingProc); + lprc.DoUnlinkEnhanced(lprc, 0, !hasValidConnectingProc); } else selprc.DoUnlinkEnhanced(selprc, seleds[0].Type, !hasValidConnectingProc); @@ -1906,7 +1922,7 @@ namespace Volian.Controls.Library { ItemInfo lprc = ItemInfo.Get(ed.ItemID); bool hasValidConnectingProc = CheckForValidEnhLink(lprc); - // if there is a valid connection, unlink both. Otherwise, just unlink this selected procedure. + // if there is a valid connection, unlink both. Otherwise, just unlink this selected procedure. if (hasValidConnectingProc) lprc.DoUnlinkEnhanced(lprc, ed.Type, !hasValidConnectingProc); else @@ -1930,27 +1946,27 @@ namespace Volian.Controls.Library OnNodeSI(this, new vlnTreeEventArgs(tn, null, 0)); return; } - if (mi.Text.StartsWith("Collapse")) - { + if (mi.Text.StartsWith("Collapse")) + { CollapseProcedures(); - return; - } + return; + } if (mi.Text == "Print Transition Report") { OnPrintTransitionReport(this, new vlnTreeEventArgs(SelectedNode as VETreeNode)); return; } - if (mi.Text == "Export Procedure Set" || mi.Text == "Export Procedure") - { - OnExportImportProcedureSets(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0)); - return; - } - if (mi.Text == "Import Procedure Set" || mi.Text == "Import Procedure") - { - OnExportImportProcedureSets(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 1)); - return; - } - if (mi.Text.StartsWith("Procedure Checked Out to") || mi.Text.StartsWith("Document Checked Out to")) + if (mi.Text == "Export Procedure Set" || mi.Text == "Export Procedure") + { + OnExportImportProcedureSets(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0)); + return; + } + if (mi.Text == "Import Procedure Set" || mi.Text == "Import Procedure") + { + OnExportImportProcedureSets(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 1)); + return; + } + if (mi.Text.StartsWith("Procedure Checked Out to") || mi.Text.StartsWith("Document Checked Out to")) { OnProcedureCheckedOutTo(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0)); return; @@ -1972,7 +1988,7 @@ namespace Volian.Controls.Library break; case "New Folder": SelectedNode.Expand(); - tv_NodeNew(MenuSelections.Folder); + tv_NodeNew(MenuSelections.Folder); break; case "Create Working Draft": SelectedNode.Expand(); @@ -2016,7 +2032,7 @@ namespace Volian.Controls.Library tv_NodeCopy(); break; // lots of paste options: - case "Paste Procedure": + case "Paste Procedure": case "Paste Procedure Before": case "Paste Procedure After": case "Paste Section": @@ -2041,7 +2057,7 @@ namespace Volian.Controls.Library break; } - + case "Delete": if (tv_NodeDelete()) { @@ -2107,14 +2123,14 @@ namespace Volian.Controls.Library UpdateROValues(SelectedNode as VETreeNode); break; case "Create Continuous Action Summary": - OnCreateContinuousActionSummary(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null,0)); + OnCreateContinuousActionSummary(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0)); break; - // F2022-024 Time Critical Action Summary + // F2022-024 Time Critical Action Summary case "Create Time Critical Action Summary": - OnCreateTimeCriticalActionSummary(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null,0)); + OnCreateTimeCriticalActionSummary(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0)); break; - // B2017-243 added the following two Cannot Paste items when dealing with enhanced documents - // when then user selects these menu items a message box will appear giving more information as to why it cannot be pasted + // B2017-243 added the following two Cannot Paste items when dealing with enhanced documents + // when then user selects these menu items a message box will appear giving more information as to why it cannot be pasted case "CANNOT PASTE HERE. Click for more information...": FlexibleMessageBox.Show("You have copied a document that is linked to an Enhanced Document.\n\n" + "It can only be pasted before or after another document, within the set, that is linked to an Enhanced Document.", "Cannot Paste Here"); @@ -2156,7 +2172,7 @@ namespace Volian.Controls.Library foreach (VETreeNode tnc in tn.Nodes) CollapseProcedures(tnc); if (tn.VEObject as DocVersionInfo == null && tn.VEObject as FolderInfo == null) - tn.Collapse(); + tn.Collapse(); _doingCollapseNode = true; // B2016-058 this will prevent a Drag Node error when collapsing an RNOs, Cautions, or Notes tree node } private void tv_RemoveChgIds() @@ -2211,12 +2227,12 @@ namespace Volian.Controls.Library FinalProgressBarMessage = "Cannot check-out Working Draft"; return; } - Cursor = Cursors.WaitCursor; // C2023-002: move wait cursor after check out error + Cursor = Cursors.WaitCursor; // C2023-002: move wait cursor after check out error int ownerid = MySessionInfo.CheckOutItem(MyDVI.VersionID, CheckOutType.DocVersion); using (DocVersion dv = DocVersion.Get(MyDVI.VersionID)) { swROUpdate = new System.IO.StreamWriter(ROFstInfo.ROUpdateResultsPath(MyDVI)); // RO changes placed in file in the Documents\VEPROMS folder - // B2022-026 RO Memory Reduction code - first load the new ro.fst so that we can assign the ROTableUpdate event to the correct roFstInfo + // B2022-026 RO Memory Reduction code - first load the new ro.fst so that we can assign the ROTableUpdate event to the correct roFstInfo if (dv.ROfstLoadingFigures || dv.NewerRoFst) // B2017-125 see if loading figures was completed { // only load the RO.fst @@ -2244,7 +2260,7 @@ namespace Volian.Controls.Library swROUpdate.Write(string.Format("Fixed Referenced Object for {1}({4}){0}Old Text: {2}{0}New Text: {3}{0}{0}", Environment.NewLine, (sender as ItemInfo).ShortPath, args.OldValue, args.NewValue, (sender as ItemInfo).ItemID)); } - private ProgressBarItem _ProgressBar=null; + private ProgressBarItem _ProgressBar = null; public ProgressBarItem ProgressBar { get { return _ProgressBar; } @@ -2357,7 +2373,7 @@ namespace Volian.Controls.Library return; } // C2017-003: ro data in sql server, check for sql connection string - if (MyDVI.DocVersionAssociations[0].MyROFst.MyRODb.DBConnectionString != "cstring") + if (MyDVI.DocVersionAssociations[0].MyROFst.MyRODb.DBConnectionString != "cstring") roloc = roloc + " \"" + MyDVI.DocVersionAssociations[0].MyROFst.MyRODb.DBConnectionString + "\""; // C2021-026 pass in Parent/Child information (list of the children) // B2022-019 look at all DocVersions to find ParentChild information @@ -2422,7 +2438,7 @@ namespace Volian.Controls.Library // assume that item to paste is a procedure, otherwise the menuing would not have // included the paste options - tn = (VETreeNode) tn.Nodes[tn.Nodes.Count - 1]; + tn = (VETreeNode)tn.Nodes[tn.Nodes.Count - 1]; p = "After"; } else // this is an empty docversion: @@ -2451,7 +2467,7 @@ namespace Volian.Controls.Library PasteAsChild(tn, iiClipboard.ItemID); //if (p.IndexOf("Replace") <= -1) - this.Cursor = Cursors.Default; + this.Cursor = Cursors.Default; } public void PasteAsDocVersionChild(VETreeNode tn, int copyStartID) @@ -2468,7 +2484,7 @@ namespace Volian.Controls.Library } ItemInfo newProc = dvi.PasteChild(copyStartID); VETreeNode tn1 = new VETreeNode(newProc); - SelectedNode.Nodes.Add(tn1); // add tree node to end of list. + SelectedNode.Nodes.Add(tn1); // add tree node to end of list. SelectedNode = tn1; } @@ -2505,7 +2521,7 @@ namespace Volian.Controls.Library } if (pasteSectIntoEmptySect) { - tn.ChildrenLoaded = false; // force a reload of treenode + tn.ChildrenLoaded = false; // force a reload of treenode tn.LoadChildren(true); } SelectedNode = tn; @@ -2520,7 +2536,7 @@ namespace Volian.Controls.Library // the item to be pasted in the step editor and the tree. ItemInfo newItemInfo = null; // F2021-009 display a message if pasting step will results in more sub-step levels than are defined in the format - if (!ii.IsProcedure) + if (!ii.IsProcedure) ItemInfo.PasteStepIsWithinDefinedSubStepLevels(copyStartID, ii, false); if (ii.IsProcedure || !OnPasteItemInfo(this, new vlnTreeItemInfoPasteEventArgs(ii, copyStartID, pasteOpt, ii.MyContent.Type))) { @@ -2543,8 +2559,8 @@ namespace Volian.Controls.Library } private void PasteReplace(VETreeNode tn, int copyStartID, TreeNode treeNodeReplace) { - VETreeNode prevtn = (VETreeNode) tn.PrevNode; - VETreeNode partn = (VETreeNode) tn.Parent; + VETreeNode prevtn = (VETreeNode)tn.PrevNode; + VETreeNode partn = (VETreeNode)tn.Parent; ItemInfo ii = tn.VEObject as ItemInfo; // F2021-009 display a message if pasting step will results in more sub-step levels than are defined in the format ItemInfo.PasteStepIsWithinDefinedSubStepLevels(copyStartID, ii, true); @@ -2563,7 +2579,7 @@ namespace Volian.Controls.Library // B2018-047: was crashing on the following line (before change it was casting the result to a VETreeNote when the partn.FirstNode was just a TreeNode) SelectedNode = prevtn != null ? prevtn.NextNode : partn.FirstNode; - + } public void PasteRepalceEmpty(VETreeNode tn, int copyStartID) { @@ -2582,7 +2598,7 @@ namespace Volian.Controls.Library SelectedNode.Nodes.Add(tn1); // add tree node to end of list. SelectedNode = tn1; } - private void tv_NodeCopy() + private void tv_NodeCopy() { if (SelectedNode == null) return; VETreeNode tn = SelectedNode as VETreeNode; @@ -2594,7 +2610,7 @@ namespace Volian.Controls.Library private void SetupNodeProperties() { VETreeNode tn = SelectedNode as VETreeNode; - if (tn==null)return; + if (tn == null) return; if ((tn.VEObject as FolderInfo) != null) OpenProperties(tn.VEObject as FolderInfo); @@ -2606,7 +2622,7 @@ namespace Volian.Controls.Library if (dvi != null && dvi.DocVersionAssociations != null && dvi.DocVersionAssociations.Count > 0) rofstid = dvi.DocVersionAssociations[0].MyROFst.ROFstID; OpenProperties(tn.VEObject as DocVersionInfo); if (dvi != null && dvi.DocVersionAssociations != null && dvi.DocVersionAssociations.Count > 0 && rofstid != dvi.DocVersionAssociations[0].MyROFst.ROFstID) - OnTabDisplay(this,new StepPanelTabDisplayEventArgs("DisplayROUpdateROFST")); + OnTabDisplay(this, new StepPanelTabDisplayEventArgs("DisplayROUpdateROFST")); } else if ((tn.VEObject as ProcedureInfo) != null) OpenProperties(tn.VEObject as ProcedureInfo); @@ -2620,7 +2636,7 @@ namespace Volian.Controls.Library { using (Folder folder = folderInfo.Get()) { - OnNodeOpenProperty(this, new vlnTreePropertyEventArgs(string.Format("{0} Properties", folder.FolderConfig.Name), folder.FolderConfig)); + OnNodeOpenProperty(this, new vlnTreePropertyEventArgs(string.Format("{0} Properties", folder.FolderConfig.Name), folder.FolderConfig)); } } private void OpenProperties(DocVersionInfo dvInfo) @@ -2634,7 +2650,7 @@ namespace Volian.Controls.Library { using (Procedure proc = procInfo.Get()) { - OnNodeOpenProperty(this, new vlnTreePropertyEventArgs(string.Format("{0} {1} Properties", proc.ProcedureConfig.Number, proc.ProcedureConfig.Title), proc.ProcedureConfig)); + OnNodeOpenProperty(this, new vlnTreePropertyEventArgs(string.Format("{0} {1} Properties", proc.ProcedureConfig.Number, proc.ProcedureConfig.Title), proc.ProcedureConfig)); } } private void OpenProperties(SectionInfo sectInfo) @@ -2647,7 +2663,7 @@ namespace Volian.Controls.Library title = string.Format("{0} {1} Properties", sectInfo.SectionConfig.Number, sectInfo.SectionConfig.Title); else title = string.Format("{0} Properties", sectInfo.SectionConfig.Title); - OnNodeOpenProperty(this, new vlnTreePropertyEventArgs(title, sect.SectionConfig)); + OnNodeOpenProperty(this, new vlnTreePropertyEventArgs(title, sect.SectionConfig)); } } private void OpenProperties(StepInfo stpinfo) @@ -2701,7 +2717,7 @@ namespace Volian.Controls.Library { if (newtype == MenuSelections.DocVersion) { - int dvid = -1; // flag to allow user to cancel from dialog & then we remove it. + int dvid = -1; // flag to allow user to cancel from dialog & then we remove it. using (DocVersion docversion = DocVersion.MakeDocVersion(parentfolder, "Working Draft", "Title", null, null, null)) { ShowBrokenRules(docversion.BrokenRulesCollection); @@ -2710,7 +2726,7 @@ namespace Volian.Controls.Library { docversion.Save(); tn = new VETreeNode(_LastDocVersionInfo); - SelectedNode.Nodes.Add(tn); // add tree node to end of list. + SelectedNode.Nodes.Add(tn); // add tree node to end of list. parentfolder.Reset_ChildFolders(); parentfolder.Reset_FolderDocVersions(); } @@ -2721,7 +2737,7 @@ namespace Volian.Controls.Library } else if (newtype == MenuSelections.Folder) { - int f1 = -1; // flag to allow user to cancel from dialog & then we remove it. + int f1 = -1; // flag to allow user to cancel from dialog & then we remove it. string uniquename = _LastFolderInfo.UniqueChildName("New Folder"); using (Folder folder = Folder.MakeFolder(parentfolder, parentfolder.MyConnection, uniquename, string.Empty, "Short Name", null, string.Empty, DateTime.Now, VlnSettings.UserID)) { @@ -2733,20 +2749,20 @@ namespace Volian.Controls.Library { folder.Save(); tn = new VETreeNode((IVEDrillDownReadOnly)_LastFolderInfo); - SelectedNode.Nodes.Add(tn); // add new tree node to end of childlist. + SelectedNode.Nodes.Add(tn); // add new tree node to end of childlist. } else f1 = folder.FolderID; } if (f1 != -1) Folder.Delete(f1); } - else if (newtype == MenuSelections.FolderAfter||newtype == MenuSelections.FolderBefore) + else if (newtype == MenuSelections.FolderAfter || newtype == MenuSelections.FolderBefore) { int f2 = -1; string uniquename = _LastFolderInfo.MyParent.UniqueChildName("New Folder"); int myindex = SelectedNode.Index + ((newtype == MenuSelections.FolderAfter) ? 1 : 0); FolderInfo parfolderinfo = FolderInfo.Get(parentfolder.FolderID); - double? myorder = parfolderinfo.NewManualOrder(myindex); + double? myorder = parfolderinfo.NewManualOrder(myindex); using (Folder folder = Folder.MakeFolder(parentfolder.MyParent, parentfolder.MyConnection, uniquename, string.Empty, "Short Name", null, myorder, string.Empty, DateTime.Now, VlnSettings.UserID)) { ShowBrokenRules(folder.BrokenRulesCollection); @@ -2770,7 +2786,7 @@ namespace Volian.Controls.Library else if (newtype == MenuSelections.Procedure) { int p1 = -1; - using (Procedure procedure = Procedure.MakeProcedure(_LastDocVersionInfo, _LastDocVersionInfo.Procedures.Count!=0?_LastDocVersionInfo.Procedures[_LastDocVersionInfo.Procedures.Count-1]:null, null, "New Procedure", 0)) + using (Procedure procedure = Procedure.MakeProcedure(_LastDocVersionInfo, _LastDocVersionInfo.Procedures.Count != 0 ? _LastDocVersionInfo.Procedures[_LastDocVersionInfo.Procedures.Count - 1] : null, null, "New Procedure", 0)) { ShowBrokenRules(procedure.BrokenRulesCollection); SetLastValues(ProcedureInfo.Get(procedure.ItemID)); @@ -2779,8 +2795,8 @@ namespace Volian.Controls.Library { procedure.Save(); tn = new VETreeNode(_LastProcedureInfo); - SelectedNode.Nodes.Add(tn); // add tree node to end of list. - // The following line will allow for a refresh of the procedure list on the Working Draft's treenodes docversion (B2016-034) + SelectedNode.Nodes.Add(tn); // add tree node to end of list. + // The following line will allow for a refresh of the procedure list on the Working Draft's treenodes docversion (B2016-034) if (((SelectedNode as VETreeNode).VEObject as DocVersionInfo) != null) ((SelectedNode as VETreeNode).VEObject as DocVersionInfo).ResetProcedures(); if (procedure.MyProcedureInfo.CreateEnhanced) { @@ -2822,21 +2838,21 @@ namespace Volian.Controls.Library else p2 = procedure.ItemID; } - if (p2 != -1) + if (p2 != -1) DeleteItemInfoAndChildren(_LastProcedureInfo); // Delete Item and reset Previous and Next } #endregion #region InsertSection - else if (newtype == MenuSelections.Section) // Insert subsection at end of parents section list + else if (newtype == MenuSelections.Section) // Insert subsection at end of parents section list { string message = string.Empty; if (_LastProcedureInfo != null) if (!MySessionInfo.CanCheckOutItem(_LastProcedureInfo.ItemID, CheckOutType.Procedure, ref message)) - { - FlexibleMessageBox.Show(this, message, "Item Already Checked Out", MessageBoxButtons.OK, MessageBoxIcon.Warning); - OnUnPauseRefresh(this, null); - return; - } + { + FlexibleMessageBox.Show(this, message, "Item Already Checked Out", MessageBoxButtons.OK, MessageBoxIcon.Warning); + OnUnPauseRefresh(this, null); + return; + } int s1 = -1; if (!(_LastProcedureInfo == null) || !(_LastSectionInfo == null)) { @@ -2866,7 +2882,7 @@ namespace Volian.Controls.Library "If you would like to view or copy these hidden steps you will need to go\n" + "into the properties of this section and check the Editable Data checkbox.\n" + "You will then be able to view and copy those steps. When finished, open\n" + - "the properties page again and uncheck the Editable Data checkbox.\n\n"+ + "the properties page again and uncheck the Editable Data checkbox.\n\n" + "Do you want to continue creating the subsection?"; if (FlexibleMessageBox.Show(this, msgstr, "Subsection Insert", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) { @@ -2878,7 +2894,7 @@ namespace Volian.Controls.Library if (!hasMetaSubs) doPseudo = true; } } - using(Section section = CreateNewSection()) + using (Section section = CreateNewSection()) { ShowBrokenRules(section.BrokenRulesCollection); SectionInfo savLastSectionInfo = _LastSectionInfo; @@ -2888,10 +2904,10 @@ namespace Volian.Controls.Library if (!doPseudo) { tn = new VETreeNode(_LastSectionInfo); - SelectedNode.Nodes.Add(tn); // add tree node to end of list. - // if the new section was flagged as either having an enhanced link for Title or Contents, create the - // Enhanced section: - Section sectiontmp = Section.Get(section.ItemID); // need to do this because of 'caching' problem. + SelectedNode.Nodes.Add(tn); // add tree node to end of list. + // if the new section was flagged as either having an enhanced link for Title or Contents, create the + // Enhanced section: + Section sectiontmp = Section.Get(section.ItemID); // need to do this because of 'caching' problem. if (sectiontmp.SectionConfig.LinkEnhanced == "T" || sectiontmp.SectionConfig.LinkEnhanced == "Y") CreateEnhancedForSection(newtype, sectiontmp, savLastSectionInfo, sectiontmp.DisplayNumber, sectiontmp.MyContent.Text); sectiontmp.Dispose(); @@ -2902,7 +2918,7 @@ namespace Volian.Controls.Library // may have to add a 'steps' node if a step(s) already exist... ItemInfo ii = (SelectedNode as VETreeNode).VEObject as ItemInfo; int cpindx = 0; - if (SelectedNode.Nodes.Count>0) + if (SelectedNode.Nodes.Count > 0) { VETreeNode vtn = SelectedNode.Nodes[0] as VETreeNode; // B2017-014: removed code that was adding a 2nd section part node. and also select node to @@ -2912,13 +2928,13 @@ namespace Volian.Controls.Library // B2017-014: removed code that was adding a 2nd section part node. } } - else // Properties was canceled out of: + else // Properties was canceled out of: s1 = section.ItemID; } if (s1 != -1) { DeleteItemInfoAndChildren(_LastSectionInfo);// Delete Item and reset Previous and Next - // B2020-087 refresh the tree node after canceling the creation of the subsection + // B2020-087 refresh the tree node after canceling the creation of the subsection _LastTreeNode.ChildrenLoaded = false; _LastTreeNode.RefreshNode(); _LastTreeNode.Collapse(); @@ -2946,14 +2962,14 @@ namespace Volian.Controls.Library if (OnNodeOpenProperty(this, new vlnTreePropertyEventArgs("New Section", section.SectionConfig)) == DialogResult.OK) { int indx = tvindex + ((newtype == MenuSelections.SectionBefore) ? 0 : 1); - int itemido = (indx >= par.Nodes.Count)?-1:(((par.Nodes[indx] as VETreeNode).VEObject) as ItemInfo).ItemID; - if (indx >= par.Nodes.Count || (par.Nodes[indx] as VETreeNode).VEObject.ToString() != _LastSectionInfo.ToString() || itemido !=section.ItemID) + int itemido = (indx >= par.Nodes.Count) ? -1 : (((par.Nodes[indx] as VETreeNode).VEObject) as ItemInfo).ItemID; + if (indx >= par.Nodes.Count || (par.Nodes[indx] as VETreeNode).VEObject.ToString() != _LastSectionInfo.ToString() || itemido != section.ItemID) { tn = new VETreeNode(_LastSectionInfo); par.Nodes.Insert(indx, tn); // if the new section was flagged as either having an enhanced link for Title or Contents, create the // Enhanced section: - Section sectiontmp = Section.Get(section.ItemID); // need to do this because of 'caching' problem. + Section sectiontmp = Section.Get(section.ItemID); // need to do this because of 'caching' problem. if (sectiontmp.SectionConfig.LinkEnhanced == "T" || sectiontmp.SectionConfig.LinkEnhanced == "Y") CreateEnhancedForSection(newtype, sectiontmp, savLastSectionInfo, sectiontmp.DisplayNumber, sectiontmp.MyContent.Text); sectiontmp.Dispose(); @@ -2965,7 +2981,7 @@ namespace Volian.Controls.Library if (s2 != -1) { DeleteItemInfoAndChildren(_LastSectionInfo);// Delete Item and reset Previous and Next - // B2020-087 refresh the tree node after canceling the creation of the subsection + // B2020-087 refresh the tree node after canceling the creation of the subsection _LastTreeNode.ChildrenLoaded = false; _LastTreeNode.RefreshNode(); _LastTreeNode.Collapse(); @@ -2973,7 +2989,7 @@ namespace Volian.Controls.Library } #endregion #region InsertStep - else if (newtype == MenuSelections.Step) // insert step from section - no substeps from tree. + else if (newtype == MenuSelections.Step) // insert step from section - no substeps from tree. { string message = string.Empty; if (!MySessionInfo.CanCheckOutItem(_LastSectionInfo.MyProcedure.ItemID, CheckOutType.Procedure, ref message)) @@ -3050,7 +3066,7 @@ namespace Volian.Controls.Library using (Procedure newenhProcedure = Procedure.MakeProcedure(enhDVInfo, enhDVInfo.Procedures.Count != 0 ? enhDVInfo.Procedures[enhDVInfo.Procedures.Count - 1] : null, null, "New Procedure", 0)) { SaveEnhancedForProcedure(sourceProc, newenhProcedure, ded.Type); - RefreshRelatedNode(ProcedureInfo.Get(newenhProcedure.ItemID)); // this updates the treeview to include the new enhanced procedure + RefreshRelatedNode(ProcedureInfo.Get(newenhProcedure.ItemID)); // this updates the treeview to include the new enhanced procedure } } } @@ -3148,7 +3164,7 @@ namespace Volian.Controls.Library { SectionConfig newenhcfg = new SectionConfig(newenhSection); newenhcfg.AddEnhancedDocument(0, sourceSect.ItemID); - newenhcfg.SaveEnhancedDocuments(); // does this save data? + newenhcfg.SaveEnhancedDocuments(); // does this save data? using (Content c1 = Content.Get(newenhSection.ContentID)) { c1.Config = newenhcfg.ToString(); @@ -3162,7 +3178,7 @@ namespace Volian.Controls.Library cs.Save(); } } - + private Section CreateNewSection() { // B2020-087 the config for SubSection_Edit was sometimes set even when there wasn't any subsections, @@ -3202,7 +3218,7 @@ namespace Volian.Controls.Library // The parent step was not open in the step editor, just create new step(s) and add treenode. int newId = -1; // B2020-076: if this step has a template, insert template steps. - int topType = ii.GetSmartTemplateTopLevelIndxOfThisType(20002); + int topType = ii.GetSmartTemplateTopLevelIndxOfThisType(20002); if (topType != -1) { ItemInfo tmp = null; @@ -3229,12 +3245,12 @@ namespace Volian.Controls.Library // see if enhanced related steps need created: SectionConfig scfgE = _LastItemInfo.ActiveSection.MyConfig as SectionConfig; // C2018-003 fixed use of getting the active section - if (scfgE != null && scfgE.Section_LnkEnh=="Y") + if (scfgE != null && scfgE.Section_LnkEnh == "Y") { // set up which item to insert from based on whether editor was open (see comment from 11/17 above). EnhancedDocuments enhdocs = null; ItemInfo.EAddpingPart addpart = ItemInfo.EAddpingPart.Child; - if (_LastItemInfo.MyPrevious != null) // the code above will do the MakeStep regardless of whether editor is up if this is the only step. + if (_LastItemInfo.MyPrevious != null) // the code above will do the MakeStep regardless of whether editor is up if this is the only step. { addpart = ItemInfo.EAddpingPart.After; ItemInfo lstSrc = _LastItemInfo.MyPrevious; @@ -3406,7 +3422,7 @@ namespace Volian.Controls.Library result = FlexibleMessageBox.Show("Are you sure you want to delete this " + typeDescription + "?", "Verify Delete", MessageBoxButtons.YesNo, MessageBoxIcon.Question); } - if (_LastProcedureInfo != null || result == DialogResult.Yes) + if (_LastProcedureInfo != null || result == DialogResult.Yes) { if (_LastFolderInfo != null) { @@ -3422,7 +3438,7 @@ namespace Volian.Controls.Library { foreach (DVEnhancedDocument dve in dvc.MyEnhancedDocuments) { - if (dve.Type != 0) + if (dve.Type != 0) DocVersion.Delete(dve.VersionID); else { @@ -3468,7 +3484,7 @@ namespace Volian.Controls.Library if (ed.Type != 0) enhIds.Add(ed.ItemID); // always return false because an event gets fired to delete tree nodes. if (!DeleteItemInfoAndChildren(_LastProcedureInfo)) return false; - + _LastProcedureInfo = null; foreach (int enhId in enhIds) { @@ -3512,7 +3528,7 @@ namespace Volian.Controls.Library // just clear enhanced links back _LastSectionInfo.ClearEnhancedSectionLink(); } - OnSectionShouldClose(this, new vlnTreeSectionInfoEventArgs(_LastSectionInfo,true)); + OnSectionShouldClose(this, new vlnTreeSectionInfoEventArgs(_LastSectionInfo, true)); // always return false because an event gets fired to delete tree nodes. if (!DeleteItemInfoAndChildren(_LastSectionInfo)) { @@ -3567,6 +3583,41 @@ namespace Volian.Controls.Library } return false; } + + public void RemoveFolder(int folderId) + { + TreeNode nodeToRemove = FindNodeById(folderId, this.Nodes); + if (nodeToRemove != null) + { + // Perform the removal logic + nodeToRemove.Remove(); // This removes the node from its parent + } + } + private TreeNode FindNodeById(int folderId, TreeNodeCollection nodes) + { + foreach (TreeNode node in nodes) + { + VETreeNode vetNode = node as VETreeNode; + if (vetNode != null) + { + FolderInfo folderInfo = vetNode.VEObject as FolderInfo; + if (folderInfo != null && folderInfo.FolderID == folderId) + { + return node; + } + else + { + TreeNode foundNode = FindNodeById(folderId, node.Nodes); + if (foundNode != null) + { + return foundNode; + } + } + } + } + return null; + } + private bool DeleteItemInfoAndChildren(ItemInfo ii) { DateTime dtStart = DateTime.Now; -- 2.47.2 From da1b061eb113f19936b666afda009ae629a62a8f Mon Sep 17 00:00:00 2001 From: Kevin Laskey Date: Tue, 30 Jul 2024 08:54:13 -0400 Subject: [PATCH 3/8] C2024-005 - Added orphan record clearing progress bar, confirmation message --- .../VEPROMS User Interface/frmBatchRefresh.cs | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/PROMS/VEPROMS User Interface/frmBatchRefresh.cs b/PROMS/VEPROMS User Interface/frmBatchRefresh.cs index 922ce14e..ae6c5974 100644 --- a/PROMS/VEPROMS User Interface/frmBatchRefresh.cs +++ b/PROMS/VEPROMS User Interface/frmBatchRefresh.cs @@ -37,7 +37,10 @@ namespace VEPROMS { AdminToolType = (E_AdminToolType)4; if (swDeleteFolder.Value) + { ResetDelTV(true); + setupProgessSteps1(); + } else ResetDelTV(false); } @@ -1404,8 +1407,10 @@ namespace VEPROMS break; case E_AdminToolType.Delete: - splitContainer3.Panel2Collapsed = true; - progressSteps1.Visible = false; + splitContainer3.Panel2Collapsed = false; + progressSteps1.Items.Add(siOrphDatRecs); + progressSteps1.Visible = true; + progressSteps1.Refresh(); break; } } @@ -1609,7 +1614,10 @@ namespace VEPROMS { swDeleteFolder.Value = !swDeleteAnnotations.Value; if (swDeleteFolder.Value) + { ResetDelTV(true); + setupProgessSteps1(); + } else ResetDelTV(false); } @@ -1710,10 +1718,16 @@ namespace VEPROMS } //Run Repair + int prgStpIdx = -1; + StepProgress(++prgStpIdx, 50); PurgeDisconnectedItems(); // Orphan Items + StepProgress(prgStpIdx, 100); //rebuild ResetDelTV(true); + + MessageBox.Show("Folder Deletion Completed", "Delete Folders"); + ClearStepProgress(); } private bool DeleteFolderByID(int folderID) { -- 2.47.2 From a8bbda12816a5bce1dac8fbf93944c66ed087ecf Mon Sep 17 00:00:00 2001 From: Kevin Laskey Date: Thu, 1 Aug 2024 09:23:30 -0400 Subject: [PATCH 4/8] C2024-005 - Completed some updates for nested folder selection (parent unselect) --- .../frmBatchRefresh.Designer.cs | 29 +-- .../VEPROMS User Interface/frmBatchRefresh.cs | 198 ++++++++++++++---- .../frmBatchRefresh.resx | 76 +++---- 3 files changed, 216 insertions(+), 87 deletions(-) diff --git a/PROMS/VEPROMS User Interface/frmBatchRefresh.Designer.cs b/PROMS/VEPROMS User Interface/frmBatchRefresh.Designer.cs index 3258cebb..327d0298 100644 --- a/PROMS/VEPROMS User Interface/frmBatchRefresh.Designer.cs +++ b/PROMS/VEPROMS User Interface/frmBatchRefresh.Designer.cs @@ -350,7 +350,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, 27); + this.pnlLater.Location = new System.Drawing.Point(6, 23); this.pnlLater.Name = "pnlLater"; this.pnlLater.Padding = new System.Windows.Forms.Padding(6); this.pnlLater.Size = new System.Drawing.Size(279, 37); @@ -391,7 +391,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, 21); + this.chkLater.Size = new System.Drawing.Size(279, 17); this.chkLater.TabIndex = 4; this.chkLater.Text = "Process Later"; this.chkLater.UseVisualStyleBackColor = true; @@ -464,8 +464,8 @@ // sideNav1 // this.sideNav1.BackColor = System.Drawing.SystemColors.Control; - this.sideNav1.Controls.Add(this.sideNavPanel4); this.sideNav1.Controls.Add(this.sideNavPanel1); + this.sideNav1.Controls.Add(this.sideNavPanel4); this.sideNav1.Controls.Add(this.sideNavPanel2); this.sideNav1.Controls.Add(this.sideNavPanel3); this.sideNav1.Dock = System.Windows.Forms.DockStyle.Fill; @@ -496,10 +496,11 @@ this.sideNavPanel4.Controls.Add(this.myTVdel); this.sideNavPanel4.Controls.Add(this.btnDeleteItems); this.sideNavPanel4.Dock = System.Windows.Forms.DockStyle.Fill; - this.sideNavPanel4.Location = new System.Drawing.Point(102, 39); + this.sideNavPanel4.Location = new System.Drawing.Point(89, 31); this.sideNavPanel4.Name = "sideNavPanel4"; - this.sideNavPanel4.Size = new System.Drawing.Size(278, 486); + this.sideNavPanel4.Size = new System.Drawing.Size(291, 494); this.sideNavPanel4.TabIndex = 27; + this.sideNavPanel4.Visible = false; // // swDeleteFolder // @@ -571,8 +572,9 @@ this.myTVdel.CheckBoxes = true; this.myTVdel.Location = new System.Drawing.Point(14, 145); this.myTVdel.Name = "myTVdel"; - this.myTVdel.Size = new System.Drawing.Size(254, 323); + this.myTVdel.Size = new System.Drawing.Size(267, 331); this.myTVdel.TabIndex = 34; + this.myTVdel.AfterCheck += new System.Windows.Forms.TreeViewEventHandler(this.myTV_AfterCheck_DelAnn); // // btnDeleteItems // @@ -607,7 +609,6 @@ this.sideNavPanel1.Name = "sideNavPanel1"; this.sideNavPanel1.Size = new System.Drawing.Size(291, 494); this.sideNavPanel1.TabIndex = 2; - this.sideNavPanel1.Visible = false; // // warningBox3 // @@ -615,7 +616,7 @@ this.warningBox3.CloseButtonVisible = false; this.warningBox3.Image = ((System.Drawing.Image)(resources.GetObject("warningBox3.Image"))); this.warningBox3.Location = new System.Drawing.Point(17, 207); - this.warningBox3.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + 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); @@ -819,7 +820,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, 4, 4, 4); + this.warningBox4.Margin = new System.Windows.Forms.Padding(4); this.warningBox4.Name = "warningBox4"; this.warningBox4.OptionsButtonVisible = false; this.warningBox4.Size = new System.Drawing.Size(264, 32); @@ -832,7 +833,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, 4, 4, 4); + this.warningBox2.Margin = new System.Windows.Forms.Padding(4); this.warningBox2.Name = "warningBox2"; this.warningBox2.OptionsButtonVisible = false; this.warningBox2.Size = new System.Drawing.Size(264, 43); @@ -1063,7 +1064,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, 4, 4, 4); + this.warningBox5.Margin = new System.Windows.Forms.Padding(4); this.warningBox5.Name = "warningBox5"; this.warningBox5.OptionsButtonVisible = false; this.warningBox5.Size = new System.Drawing.Size(262, 32); @@ -1147,7 +1148,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, 4, 4, 4); + this.warningBox1.Margin = new System.Windows.Forms.Padding(4); this.warningBox1.Name = "warningBox1"; this.warningBox1.OptionsButtonVisible = false; this.warningBox1.Size = new System.Drawing.Size(262, 43); @@ -1190,6 +1191,7 @@ // // sideNavItmCheck // + this.sideNavItmCheck.Checked = true; this.sideNavItmCheck.Name = "sideNavItmCheck"; this.sideNavItmCheck.Panel = this.sideNavPanel1; this.sideNavItmCheck.Symbol = ""; @@ -1228,7 +1230,6 @@ // // sideNavItmDelete // - this.sideNavItmDelete.Checked = true; this.sideNavItmDelete.Name = "sideNavItmDelete"; this.sideNavItmDelete.Panel = this.sideNavPanel4; this.sideNavItmDelete.Symbol = ""; @@ -1280,7 +1281,7 @@ this.stepItem3, this.stepItem4}); this.progressSteps1.LicenseKey = "F962CEC7-CD8F-4911-A9E9-CAB39962FC1F"; - this.progressSteps1.Location = new System.Drawing.Point(123, 18); + this.progressSteps1.Location = new System.Drawing.Point(123, 13); this.progressSteps1.Name = "progressSteps1"; this.progressSteps1.Size = new System.Drawing.Size(1032, 26); this.progressSteps1.TabIndex = 18; diff --git a/PROMS/VEPROMS User Interface/frmBatchRefresh.cs b/PROMS/VEPROMS User Interface/frmBatchRefresh.cs index ae6c5974..e36081df 100644 --- a/PROMS/VEPROMS User Interface/frmBatchRefresh.cs +++ b/PROMS/VEPROMS User Interface/frmBatchRefresh.cs @@ -98,6 +98,7 @@ namespace VEPROMS private Dictionary myProcedures = new Dictionary(); private Dictionary myDocVersions = new Dictionary(); + private Dictionary myFolders = new Dictionary(); private void frmBatchRefresh_Load(object sender, EventArgs e) { IsClosing = false;//B2017-221 Allow the batch dialog to close when waiting to process. @@ -140,6 +141,8 @@ namespace VEPROMS //myTreeNodePath = new List(); myTV.Nodes.Clear(); myDocVersions.Clear(); + myFolders.Clear(); + FolderInfo fi = FolderInfo.GetTop(); TreeNode tn = myTV.Nodes.Add(fi.Name); tn.Tag = fi; @@ -172,6 +175,11 @@ namespace VEPROMS if (myTVdel.SelectedNode != null) myTVdel.SelectedNode.Expand(); + + //Expand if folders + if (noProcs) + myTVdel.ExpandAll(); + this.Cursor = Cursors.Default; } @@ -179,26 +187,52 @@ namespace VEPROMS private bool LoadChildFolders(FolderInfo fi, TreeNode tn, bool noProcs) { bool loadedWorkingDraft = false; - bool loadedChildWorkingDraft = false; // B2021-060 flag when child folder working draft is loaded + bool loadedChildWorkingDraft = false; + foreach (FolderInfo fic in fi.SortedChildFolders) { TreeNode tnc = tn.Nodes.Add(fic.Name); tnc.Tag = fic; + if (fic.ChildFolderCount > 0) + { if (LoadChildFolders(fic, tnc, noProcs)) + { loadedChildWorkingDraft = true; - // B2020-114 and C2020-035 only show folders the Set Admin can access + } + } + if (fic.FolderDocVersionCount > 0) { if (!LoadDocVersions(fic, tnc, noProcs)) + { tnc.Remove(); + } else + { loadedWorkingDraft = true; + } + } + else + { + // Add the folder to the dictionary + if (!myFolders.ContainsKey(tnc)) + { + myFolders.Add(tnc, fic); + } } } - if (loadedChildWorkingDraft) loadedWorkingDraft = true; // B2021-060 if child folder working draft loaded set loadedWorkingDraft + + if (loadedChildWorkingDraft) + { + loadedWorkingDraft = true; + } + if (tn.Parent != null && !loadedWorkingDraft) + { tn.Remove(); + } + return loadedWorkingDraft; } private bool LoadDocVersions(FolderInfo fic, TreeNode tnc, bool noProcs) @@ -1178,12 +1212,10 @@ namespace VEPROMS DiselectParentNodes(e.Node.Parent); DiselectChildNodes(e.Node.Nodes); } - } btnFixLinks.Enabled = AtLeastOneNodeChecked(); // C2017-030 support for Refresh Transitions/Update RO Values } - private void DiselectParentNodes(TreeNode parent) { while (parent != null) @@ -1193,7 +1225,6 @@ namespace VEPROMS parent = parent.Parent; } } - private void DiselectChildNodes(TreeNodeCollection childes) { foreach (TreeNode oneChild in childes) @@ -1203,8 +1234,6 @@ namespace VEPROMS DiselectChildNodes(oneChild.Nodes); } } - - private void CheckChildNodes(TreeNode treeNode, bool ischecked) { foreach (TreeNode tn in treeNode.Nodes) @@ -1218,6 +1247,80 @@ namespace VEPROMS } } + //After check model to select and deselect nodes on the delete and annotation tree. + private void myTV_AfterCheck_DelAnn(object sender, TreeViewEventArgs e) + { + if (e.Action != TreeViewAction.Unknown) + { + if (e.Node.Nodes.Count > 0) + { + CheckChildNodes_DelAnn(e.Node, e.Node.Checked); + } + } + + if (e.Node.Checked) + { + // Ensure child nodes follow the parent node's state + CheckChildNodes_DelAnn(e.Node, e.Node.Checked); + } + else + { + // Automatically deselect parent nodes if current node is unchecked + if (swDeleteFolder.Value) + DiselectParentNodes_DelAnn(e.Node); + } + + btnFixLinks.Enabled = AtLeastOneNodeChecked_DelAnn(); // Ensure button is enabled based on custom logic + } + private void DiselectParentNodes_DelAnn(TreeNode node) + { + TreeNode parent = node.Parent; + while (parent != null) + { + parent.Checked = false; + parent = parent.Parent; + } + } + private void DiselectChildNodes_DelAnn(TreeNodeCollection children) + { + foreach (TreeNode child in children) + { + child.Checked = false; + DiselectChildNodes_DelAnn(child.Nodes); + } + } + private void CheckChildNodes_DelAnn(TreeNode treeNode, bool isChecked) + { + foreach (TreeNode tn in treeNode.Nodes) + { + tn.Checked = isChecked; + + if (tn.Nodes.Count > 0) + CheckChildNodes_DelAnn(tn, isChecked); + } + } + private bool AtLeastOneNodeChecked_DelAnn() + { + foreach (TreeNode node in myTV.Nodes) + { + if (node.Checked || AnyChildNodeChecked_DelAnn(node)) + return true; + } + return false; + } + private bool AnyChildNodeChecked_DelAnn(TreeNode node) + { + foreach (TreeNode childNode in node.Nodes) + { + if (childNode.Checked || AnyChildNodeChecked_DelAnn(childNode)) + return true; + } + return false; + } + + + + private ProgressBarItem _ProgressBar = null; public ProgressBarItem ProgressBar @@ -1329,8 +1432,7 @@ namespace VEPROMS // new Admin Tools user interface for deletes private void sideNavItmDelete_Click(object sender, EventArgs e) { - AdminToolType = E_AdminToolType.Delete; - lblAdmToolProgressType.Text = ""; + AdminToolType = E_AdminToolType.Delete; setupProgessSteps1(); if (swDeleteFolder.Value) @@ -1407,10 +1509,20 @@ namespace VEPROMS break; case E_AdminToolType.Delete: - splitContainer3.Panel2Collapsed = false; - progressSteps1.Items.Add(siOrphDatRecs); - progressSteps1.Visible = true; - progressSteps1.Refresh(); + if (swDeleteFolder.Value) + { + splitContainer3.Panel2Collapsed = false; + progressSteps1.Items.Add(siOrphDatRecs); + lblAdmToolProgressType.Text = "Repairing: "; + progressSteps1.Visible = true; + progressSteps1.Refresh(); + } + else + { + lblAdmToolProgressType.Text = ""; + splitContainer3.Panel2Collapsed = true; + progressSteps1.Visible = false; + } break; } } @@ -1612,18 +1724,17 @@ namespace VEPROMS //C2024-005 Delete Annotations, Delete Folders private void swDeleteAnnotations_ValueChanged(object sender, EventArgs e) { + setupProgessSteps1(); swDeleteFolder.Value = !swDeleteAnnotations.Value; if (swDeleteFolder.Value) - { - ResetDelTV(true); - setupProgessSteps1(); - } + ResetDelTV(true); else ResetDelTV(false); } private void swDeleteFolder_ValueChanged(object sender, EventArgs e) { + setupProgessSteps1(); swDeleteAnnotations.Value = !swDeleteFolder.Value; if (swDeleteFolder.Value) ResetDelTV(true); @@ -1637,29 +1748,25 @@ namespace VEPROMS txtResults.Clear(); txtProcess.Clear(); - if (swDeleteFolder.Value) { - if (FlexibleMessageBox.Show(this, "You sure you want to remove the selected folders and their contents?", "Confirm Folder Deletion", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { - - - //TODO process deletions of folders txtProcess.AppendText("Deleting Folders..."); - //List pil = new List(); - //foreach (TreeNode tn in myProcedures.Keys) - // if (tn.Checked) - // pil.Add(myProcedures[tn]); - - ////Load Selected Folders + //Load Selected Folders with docversions List dvil = new List(); foreach (TreeNode tn in myDocVersions.Keys) if (tn.Checked) dvil.Add(myDocVersions[tn]); - ProcessDelete(dvil); + //Load Selected Folders with docversions + List ef = new List(); + foreach (TreeNode tn in myFolders.Keys) + if (tn.Checked) + ef.Add(myFolders[tn]); + + ProcessDelete(dvil, ef); } } else @@ -1682,12 +1789,10 @@ namespace VEPROMS frmAnnotationsCleanup frmAnnoDel = new frmAnnotationsCleanup(this, pil, dvil); frmAnnoDel.ShowDialog(); - - } } - private void ProcessDelete(List foldersToDelete) + private void ProcessDelete(List foldersToDelete, List emptyFoldersToDelete) { DateTime pStart = DateTime.Now; txtProcess.AppendText(Environment.NewLine); @@ -1696,8 +1801,7 @@ namespace VEPROMS foreach (var kvp in foldersToDelete) { - //Gather folder information - + //Gather folder information FolderInfo fi = (FolderInfo)kvp.ActiveParent; int itemID = (int)fi.FolderID; string folderName = fi.Name; @@ -1717,6 +1821,30 @@ namespace VEPROMS txtProcess.AppendText(Environment.NewLine); } + + //Delete non working info folders. + foreach (var kvp in emptyFoldersToDelete) + { + //Gather folder information + FolderInfo fi = (FolderInfo)kvp; + int itemID = (int)fi.FolderID; + string folderName = fi.Name; + + // Perform the deletion operation + bool deletionSuccessful = DeleteFolderByID(itemID); + + // Update txtProcess with the progress + if (deletionSuccessful) + { + txtProcess.AppendText($"Successfully deleted folder: {folderName} (ID: {itemID})"); + } + else + { + txtProcess.AppendText($"Failed to delete folder: {folderName} (ID: {itemID})"); + } + txtProcess.AppendText(Environment.NewLine); + } + //Run Repair int prgStpIdx = -1; StepProgress(++prgStpIdx, 50); diff --git a/PROMS/VEPROMS User Interface/frmBatchRefresh.resx b/PROMS/VEPROMS User Interface/frmBatchRefresh.resx index a2674e82..acb133ce 100644 --- a/PROMS/VEPROMS User Interface/frmBatchRefresh.resx +++ b/PROMS/VEPROMS User Interface/frmBatchRefresh.resx @@ -117,44 +117,6 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 17, 17 - - - This allows the user to check referenced objects links in procedure step data for multiple working drafts in a batch mode. - -Bad referenced bject links will be identified with an Bad RO Link annotation. Use the PROMS Search tool to list all of the steps that have this annotation. - -Be sure a current backup of the database exists prior performing this function. - -It is recommended that this be done during off hours. - - - - - This allows the user to check referenced objects links in procedure step data for multiple working drafts in a batch mode. - -Bad referenced bject links will be identified with an Bad RO Link annotation. Use the PROMS Search tool to list all of the steps that have this annotation. - -Be sure a current backup of the database exists prior performing this function. - -It is recommended that this be done during off hours. - - - - This function will refresh transitions in all procedures selected below, whether they were selected individually or as a group via a procedure set. - -Be sure a current backup of the database exists prior to running this function. - -If more than one procedure is selected, it is recommended that this be performed during off hours. - - - This function will refresh transitions in all procedures selected below, whether they were selected individually or as a group via a procedure set. - -Be sure a current backup of the database exists prior to running this function. - -If more than one procedure is selected, it is recommended that this be performed during off hours. - @@ -173,6 +135,9 @@ If more than one procedure is selected, it is recommended that this be performed zJwL4b/EAAAAAElFTkSuQmCC + + 17, 17 + Referenced Objects databases are associated with a procedure set (such as Working Draft). @@ -220,6 +185,41 @@ Should an item become orphaned (disconnected) from the rest of the data, it will This tool may take an extended period of time to execute. + + + This allows the user to check referenced objects links in procedure step data for multiple working drafts in a batch mode. + +Bad referenced bject links will be identified with an Bad RO Link annotation. Use the PROMS Search tool to list all of the steps that have this annotation. + +Be sure a current backup of the database exists prior performing this function. + +It is recommended that this be done during off hours. + + + + + This allows the user to check referenced objects links in procedure step data for multiple working drafts in a batch mode. + +Bad referenced bject links will be identified with an Bad RO Link annotation. Use the PROMS Search tool to list all of the steps that have this annotation. + +Be sure a current backup of the database exists prior performing this function. + +It is recommended that this be done during off hours. + + + + This function will refresh transitions in all procedures selected below, whether they were selected individually or as a group via a procedure set. + +Be sure a current backup of the database exists prior to running this function. + +If more than one procedure is selected, it is recommended that this be performed during off hours. + + + This function will refresh transitions in all procedures selected below, whether they were selected individually or as a group via a procedure set. + +Be sure a current backup of the database exists prior to running this function. + +If more than one procedure is selected, it is recommended that this be performed during off hours. When Word attachments are modified and saved, PROMS will create a PDF of the attachment contents and save it in the database. When this is done, all the of the RO references are resolved as well as pagination of the attachment. This speeds up the overall printing of the procedure in that PROMS simply inserts the attachment contents. -- 2.47.2 From 977ea6f5fc7b98e68bb44852aa0511dcc122af96 Mon Sep 17 00:00:00 2001 From: Kevin Laskey Date: Thu, 1 Aug 2024 11:01:28 -0400 Subject: [PATCH 5/8] C2021-059 - Update proms sql fixes with correct numbers --- PROMS/VEPROMS User Interface/PROMSFixes.Sql | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/PROMS/VEPROMS User Interface/PROMSFixes.Sql b/PROMS/VEPROMS User Interface/PROMSFixes.Sql index 608f3cc1..b8e92a44 100644 --- a/PROMS/VEPROMS User Interface/PROMSFixes.Sql +++ b/PROMS/VEPROMS User Interface/PROMSFixes.Sql @@ -23523,7 +23523,7 @@ GO /* ========================================================================================================== - Start: C2024-005: SQL to delete folders using admin tool + Start: C2021-059: SQL to delete folders using admin tool ========================================================================================================== */ @@ -23599,7 +23599,7 @@ END CATCH GO /* ========================================================================================================== - End: C2024-005: SQL to delete folders using admin tool + End: C2021-059: SQL to delete folders using admin tool ========================================================================================================== */ @@ -23637,7 +23637,7 @@ BEGIN TRY -- Try Block DECLARE @RevDescription varchar(255) set @RevDate = '07/29/2024 11:24' - set @RevDescription = 'C2024-005 Add SQL for Admin tool delete folders.' + set @RevDescription = 'C2021-059 Add SQL for Admin tool delete folders.' Select cast(@RevDate as datetime) RevDate, @RevDescription RevDescription PRINT 'SQL Code Revision ' + @RevDate + ' - ' + @RevDescription -- 2.47.2 From 5f86d8c62981f16c47ce3355806849669827a513 Mon Sep 17 00:00:00 2001 From: Kevin Laskey Date: Thu, 1 Aug 2024 14:41:34 -0400 Subject: [PATCH 6/8] C2021-059 - Update designer to avoid conflict --- .../frmBatchRefresh.Designer.cs | 69 ++++++++++--------- 1 file changed, 35 insertions(+), 34 deletions(-) diff --git a/PROMS/VEPROMS User Interface/frmBatchRefresh.Designer.cs b/PROMS/VEPROMS User Interface/frmBatchRefresh.Designer.cs index 327d0298..4769c76d 100644 --- a/PROMS/VEPROMS User Interface/frmBatchRefresh.Designer.cs +++ b/PROMS/VEPROMS User Interface/frmBatchRefresh.Designer.cs @@ -134,9 +134,9 @@ // // myTV // - this.myTV.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); + this.myTV.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); this.myTV.CheckBoxes = true; this.myTV.Location = new System.Drawing.Point(0, 230); this.myTV.Name = "myTV"; @@ -367,8 +367,8 @@ // // dtpTime // - this.dtpTime.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); + this.dtpTime.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); this.dtpTime.CustomFormat = "HH:mm"; this.dtpTime.Format = System.Windows.Forms.DateTimePickerFormat.Custom; this.dtpTime.Location = new System.Drawing.Point(129, 9); @@ -464,22 +464,22 @@ // sideNav1 // this.sideNav1.BackColor = System.Drawing.SystemColors.Control; - this.sideNav1.Controls.Add(this.sideNavPanel1); this.sideNav1.Controls.Add(this.sideNavPanel4); + this.sideNav1.Controls.Add(this.sideNavPanel1); this.sideNav1.Controls.Add(this.sideNavPanel2); this.sideNav1.Controls.Add(this.sideNavPanel3); this.sideNav1.Dock = System.Windows.Forms.DockStyle.Fill; this.sideNav1.EnableClose = false; this.sideNav1.EnableMaximize = false; this.sideNav1.Items.AddRange(new DevComponents.DotNetBar.BaseItem[] { - this.sideNavItem1, - this.separator1, - this.sideNavItmCheck, - this.sideNavItmRepair, - this.sideNavItmLinks, - this.sideNavItmUsers, - this.sideNavItmDelete, - this.sideNavItmExit}); + this.sideNavItem1, + this.separator1, + this.sideNavItmCheck, + this.sideNavItmRepair, + this.sideNavItmLinks, + this.sideNavItmUsers, + this.sideNavItmDelete, + this.sideNavItmExit}); this.sideNav1.Location = new System.Drawing.Point(0, 0); this.sideNav1.Name = "sideNav1"; this.sideNav1.Padding = new System.Windows.Forms.Padding(1); @@ -500,7 +500,6 @@ this.sideNavPanel4.Name = "sideNavPanel4"; this.sideNavPanel4.Size = new System.Drawing.Size(291, 494); this.sideNavPanel4.TabIndex = 27; - this.sideNavPanel4.Visible = false; // // swDeleteFolder // @@ -515,6 +514,7 @@ this.superTooltip1.SetSuperTooltip(this.swDeleteFolder, new DevComponents.DotNetBar.SuperTooltipInfo("Check RO Links", "", resources.GetString("swDeleteFolder.SuperTooltip"), null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(250, 150))); this.swDeleteFolder.SwitchClickTogglesValue = true; this.swDeleteFolder.TabIndex = 39; + this.swDeleteFolder.Visible = false; this.swDeleteFolder.ValueChanged += new System.EventHandler(this.swDeleteFolder_ValueChanged); // // labelX13 @@ -531,6 +531,7 @@ this.superTooltip1.SetSuperTooltip(this.labelX13, new DevComponents.DotNetBar.SuperTooltipInfo("Check RO Links", "", resources.GetString("labelX13.SuperTooltip"), null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(350, 175))); this.labelX13.TabIndex = 38; this.labelX13.Text = "Delete Folders"; + this.labelX13.Visible = false; // // swDeleteAnnotations // @@ -566,15 +567,14 @@ // // myTVdel // - this.myTVdel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); + this.myTVdel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); this.myTVdel.CheckBoxes = true; this.myTVdel.Location = new System.Drawing.Point(14, 145); this.myTVdel.Name = "myTVdel"; this.myTVdel.Size = new System.Drawing.Size(267, 331); this.myTVdel.TabIndex = 34; - this.myTVdel.AfterCheck += new System.Windows.Forms.TreeViewEventHandler(this.myTV_AfterCheck_DelAnn); // // btnDeleteItems // @@ -586,8 +586,8 @@ this.btnDeleteItems.Size = new System.Drawing.Size(280, 23); this.btnDeleteItems.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; this.superTooltip1.SetSuperTooltip(this.btnDeleteItems, new DevComponents.DotNetBar.SuperTooltipInfo("Process Links", "", "This will run the selected RO Links or Transitions Links tool.\r\n\r\nClick on the on" + - "/off switches to turn on/off each tool.\r\n\r\nNote that only one of these tools can" + - " be run at a time.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(200, 130))); + "/off switches to turn on/off each tool.\r\n\r\nNote that only one of these tools can" + + " be run at a time.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(200, 130))); this.btnDeleteItems.TabIndex = 35; this.btnDeleteItems.Text = "Process Deletions"; this.btnDeleteItems.Click += new System.EventHandler(this.btnDeleteItems_Click); @@ -609,6 +609,7 @@ this.sideNavPanel1.Name = "sideNavPanel1"; this.sideNavPanel1.Size = new System.Drawing.Size(291, 494); this.sideNavPanel1.TabIndex = 2; + this.sideNavPanel1.Visible = false; // // warningBox3 // @@ -753,7 +754,7 @@ this.btnRunCheck.Size = new System.Drawing.Size(286, 23); this.btnRunCheck.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; this.superTooltip1.SetSuperTooltip(this.btnRunCheck, new DevComponents.DotNetBar.SuperTooltipInfo("Run Check", "", "This will run the database check tools selected.\r\n\r\nClick on the on/off switches " + - "to turn on/off each tool.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(200, 100))); + "to turn on/off each tool.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(200, 100))); this.btnRunCheck.TabIndex = 7; this.btnRunCheck.Text = "Run Check"; this.btnRunCheck.Click += new System.EventHandler(this.btnRunCheck_Click); @@ -839,7 +840,7 @@ this.warningBox2.Size = new System.Drawing.Size(264, 43); this.warningBox2.TabIndex = 28; this.warningBox2.Text = " Be sure there is a current backup of the \r\n database prior to running these func" + - "tions"; + "tions"; // // swRmObsoleteROData // @@ -1003,7 +1004,7 @@ this.btnRunRepair.Size = new System.Drawing.Size(280, 23); this.btnRunRepair.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; this.superTooltip1.SetSuperTooltip(this.btnRunRepair, new DevComponents.DotNetBar.SuperTooltipInfo("Run Repair", "", "This will run the database repair tools selected.\r\n\r\nClick on the on/off switches" + - " to turn on/off each tool.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(200, 103))); + " to turn on/off each tool.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(200, 103))); this.btnRunRepair.TabIndex = 3; this.btnRunRepair.Text = "Run Repair"; this.btnRunRepair.Click += new System.EventHandler(this.btnRunRepair_Click); @@ -1154,7 +1155,7 @@ this.warningBox1.Size = new System.Drawing.Size(262, 43); this.warningBox1.TabIndex = 7; this.warningBox1.Text = " Be sure there is a current backup of the \r\n database prior to running these func" + - "tions"; + "tions"; // // btnFixLinks // @@ -1166,8 +1167,8 @@ this.btnFixLinks.Size = new System.Drawing.Size(280, 23); this.btnFixLinks.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; this.superTooltip1.SetSuperTooltip(this.btnFixLinks, new DevComponents.DotNetBar.SuperTooltipInfo("Process Links", "", "This will run the selected RO Links or Transitions Links tool.\r\n\r\nClick on the on" + - "/off switches to turn on/off each tool.\r\n\r\nNote that only one of these tools can" + - " be run at a time.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(200, 130))); + "/off switches to turn on/off each tool.\r\n\r\nNote that only one of these tools can" + + " be run at a time.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(200, 130))); this.btnFixLinks.TabIndex = 6; this.btnFixLinks.Text = "Process Links"; this.btnFixLinks.Click += new System.EventHandler(this.btnFixLinks_Click); @@ -1191,7 +1192,6 @@ // // sideNavItmCheck // - this.sideNavItmCheck.Checked = true; this.sideNavItmCheck.Name = "sideNavItmCheck"; this.sideNavItmCheck.Panel = this.sideNavPanel1; this.sideNavItmCheck.Symbol = ""; @@ -1218,7 +1218,7 @@ // this.sideNavItmUsers.Name = "sideNavItmUsers"; this.sideNavItmUsers.SubItems.AddRange(new DevComponents.DotNetBar.BaseItem[] { - this.buttonItem1}); + this.buttonItem1}); this.sideNavItmUsers.Symbol = ""; this.sideNavItmUsers.Text = "Users"; this.sideNavItmUsers.Click += new System.EventHandler(this.sideNavItmUsers_Click); @@ -1230,6 +1230,7 @@ // // sideNavItmDelete // + this.sideNavItmDelete.Checked = true; this.sideNavItmDelete.Name = "sideNavItmDelete"; this.sideNavItmDelete.Panel = this.sideNavPanel4; this.sideNavItmDelete.Symbol = ""; @@ -1276,12 +1277,12 @@ this.progressSteps1.ContainerControlProcessDialogKey = true; this.progressSteps1.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.progressSteps1.Items.AddRange(new DevComponents.DotNetBar.BaseItem[] { - this.stepItem1, - this.stepItem2, - this.stepItem3, - this.stepItem4}); + this.stepItem1, + this.stepItem2, + this.stepItem3, + this.stepItem4}); this.progressSteps1.LicenseKey = "F962CEC7-CD8F-4911-A9E9-CAB39962FC1F"; - this.progressSteps1.Location = new System.Drawing.Point(123, 13); + this.progressSteps1.Location = new System.Drawing.Point(123, 18); this.progressSteps1.Name = "progressSteps1"; this.progressSteps1.Size = new System.Drawing.Size(1032, 26); this.progressSteps1.TabIndex = 18; -- 2.47.2 From 2714973c16a95da65c44abe4929c60166e142b99 Mon Sep 17 00:00:00 2001 From: Kevin Laskey Date: Thu, 1 Aug 2024 14:49:14 -0400 Subject: [PATCH 7/8] 2021-059 - Matchicng Paul's Changes --- .../frmBatchRefresh.Designer.cs | 413 ++++++++++-------- 1 file changed, 224 insertions(+), 189 deletions(-) diff --git a/PROMS/VEPROMS User Interface/frmBatchRefresh.Designer.cs b/PROMS/VEPROMS User Interface/frmBatchRefresh.Designer.cs index 4769c76d..04feaaf7 100644 --- a/PROMS/VEPROMS User Interface/frmBatchRefresh.Designer.cs +++ b/PROMS/VEPROMS User Interface/frmBatchRefresh.Designer.cs @@ -59,6 +59,17 @@ this.labelX14 = new DevComponents.DotNetBar.LabelX(); this.myTVdel = new System.Windows.Forms.TreeView(); this.btnDeleteItems = new DevComponents.DotNetBar.ButtonX(); + this.sideNavPanel3 = new DevComponents.DotNetBar.Controls.SideNavPanel(); + this.swCheckROLinks = new DevComponents.DotNetBar.Controls.SwitchButton(); + this.labelX12 = new DevComponents.DotNetBar.LabelX(); + this.warningBox5 = new DevComponents.DotNetBar.Controls.WarningBox(); + this.line3 = new DevComponents.DotNetBar.Controls.Line(); + this.swUpdateROVals = new DevComponents.DotNetBar.Controls.SwitchButton(); + this.swRefreshTrans = new DevComponents.DotNetBar.Controls.SwitchButton(); + this.labelX11 = new DevComponents.DotNetBar.LabelX(); + this.labelX6 = new DevComponents.DotNetBar.LabelX(); + this.warningBox1 = new DevComponents.DotNetBar.Controls.WarningBox(); + this.btnFixLinks = new DevComponents.DotNetBar.ButtonX(); this.sideNavPanel1 = new DevComponents.DotNetBar.Controls.SideNavPanel(); this.warningBox3 = new DevComponents.DotNetBar.Controls.WarningBox(); this.labelX7 = new DevComponents.DotNetBar.LabelX(); @@ -86,17 +97,8 @@ this.labelX8 = new DevComponents.DotNetBar.LabelX(); this.line2 = new DevComponents.DotNetBar.Controls.Line(); this.btnRunRepair = new DevComponents.DotNetBar.ButtonX(); - this.sideNavPanel3 = new DevComponents.DotNetBar.Controls.SideNavPanel(); - this.swCheckROLinks = new DevComponents.DotNetBar.Controls.SwitchButton(); - this.labelX12 = new DevComponents.DotNetBar.LabelX(); - this.warningBox5 = new DevComponents.DotNetBar.Controls.WarningBox(); - this.line3 = new DevComponents.DotNetBar.Controls.Line(); - this.swUpdateROVals = new DevComponents.DotNetBar.Controls.SwitchButton(); - this.swRefreshTrans = new DevComponents.DotNetBar.Controls.SwitchButton(); - this.labelX11 = new DevComponents.DotNetBar.LabelX(); - this.labelX6 = new DevComponents.DotNetBar.LabelX(); - this.warningBox1 = new DevComponents.DotNetBar.Controls.WarningBox(); - this.btnFixLinks = new DevComponents.DotNetBar.ButtonX(); + this.sideNavPanel5 = new DevComponents.DotNetBar.Controls.SideNavPanel(); + this.btn_ShowUsers = new DevComponents.DotNetBar.ButtonX(); this.sideNavItem1 = new DevComponents.DotNetBar.Controls.SideNavItem(); this.separator1 = new DevComponents.DotNetBar.Separator(); this.sideNavItmCheck = new DevComponents.DotNetBar.Controls.SideNavItem(); @@ -126,9 +128,10 @@ this.panelEx1.SuspendLayout(); this.sideNav1.SuspendLayout(); this.sideNavPanel4.SuspendLayout(); + this.sideNavPanel3.SuspendLayout(); this.sideNavPanel1.SuspendLayout(); this.sideNavPanel2.SuspendLayout(); - this.sideNavPanel3.SuspendLayout(); + this.sideNavPanel5.SuspendLayout(); this.panelEx4.SuspendLayout(); this.SuspendLayout(); // @@ -138,9 +141,10 @@ | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.myTV.CheckBoxes = true; - this.myTV.Location = new System.Drawing.Point(0, 230); + this.myTV.Dock = System.Windows.Forms.DockStyle.Bottom; + this.myTV.Location = new System.Drawing.Point(0, 184); this.myTV.Name = "myTV"; - this.myTV.Size = new System.Drawing.Size(183, 226); + this.myTV.Size = new System.Drawing.Size(291, 310); this.myTV.TabIndex = 4; this.myTV.AfterCheck += new System.Windows.Forms.TreeViewEventHandler(this.myTV_AfterCheck); // @@ -465,9 +469,10 @@ // this.sideNav1.BackColor = System.Drawing.SystemColors.Control; this.sideNav1.Controls.Add(this.sideNavPanel4); + this.sideNav1.Controls.Add(this.sideNavPanel3); this.sideNav1.Controls.Add(this.sideNavPanel1); this.sideNav1.Controls.Add(this.sideNavPanel2); - this.sideNav1.Controls.Add(this.sideNavPanel3); + this.sideNav1.Controls.Add(this.sideNavPanel5); this.sideNav1.Dock = System.Windows.Forms.DockStyle.Fill; this.sideNav1.EnableClose = false; this.sideNav1.EnableMaximize = false; @@ -500,6 +505,31 @@ this.sideNavPanel4.Name = "sideNavPanel4"; this.sideNavPanel4.Size = new System.Drawing.Size(291, 494); this.sideNavPanel4.TabIndex = 27; + // + // sideNavPanel5 + // + this.sideNavPanel5.Controls.Add(this.btn_ShowUsers); + this.sideNavPanel5.Dock = System.Windows.Forms.DockStyle.Fill; + this.sideNavPanel5.Location = new System.Drawing.Point(81, 31); + this.sideNavPanel5.Name = "sideNavPanel5"; + this.sideNavPanel5.Size = new System.Drawing.Size(299, 494); + this.sideNavPanel5.TabIndex = 14; + this.sideNavPanel5.Visible = false; + // + // btn_ShowUsers + // + this.btn_ShowUsers.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton; + this.btn_ShowUsers.Checked = true; + this.btn_ShowUsers.ColorTable = DevComponents.DotNetBar.eButtonColor.OrangeWithBackground; + this.btn_ShowUsers.Location = new System.Drawing.Point(57, 37); + this.btn_ShowUsers.Name = "btn_ShowUsers"; + this.btn_ShowUsers.Size = new System.Drawing.Size(171, 23); + this.btn_ShowUsers.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; + this.superTooltip1.SetSuperTooltip(this.btn_ShowUsers, new DevComponents.DotNetBar.SuperTooltipInfo("Show Users", "", "This will return all of the users currently with open sessions in the database an" + + "d the details of any items they have checked out.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(200, 80))); + this.btn_ShowUsers.TabIndex = 0; + this.btn_ShowUsers.Text = "Show Users"; + this.btn_ShowUsers.Click += new System.EventHandler(this.btn_ShowUsers_Click); // // swDeleteFolder // @@ -561,7 +591,7 @@ this.labelX14.Location = new System.Drawing.Point(85, 14); this.labelX14.Name = "labelX14"; this.labelX14.Size = new System.Drawing.Size(186, 22); - this.superTooltip1.SetSuperTooltip(this.labelX14, new DevComponents.DotNetBar.SuperTooltipInfo("Refresh Transitions", "", resources.GetString("labelX14.SuperTooltip"), null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(256, 175))); + this.superTooltip1.SetSuperTooltip(this.labelX14, new DevComponents.DotNetBar.SuperTooltipInfo("Process Deletions", "", resources.GetString("labelX14.SuperTooltip"), null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(200, 175))); this.labelX14.TabIndex = 36; this.labelX14.Text = "Delete Annotations"; // @@ -571,27 +601,194 @@ | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.myTVdel.CheckBoxes = true; - this.myTVdel.Location = new System.Drawing.Point(14, 145); + this.myTVdel.Dock = System.Windows.Forms.DockStyle.Bottom; + this.myTVdel.Location = new System.Drawing.Point(0, 127); this.myTVdel.Name = "myTVdel"; - this.myTVdel.Size = new System.Drawing.Size(267, 331); + this.myTVdel.Size = new System.Drawing.Size(291, 367); this.myTVdel.TabIndex = 34; // // btnDeleteItems // this.btnDeleteItems.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton; + this.btnDeleteItems.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); this.btnDeleteItems.Checked = true; this.btnDeleteItems.ColorTable = DevComponents.DotNetBar.eButtonColor.OrangeWithBackground; - this.btnDeleteItems.Location = new System.Drawing.Point(3, 98); + this.btnDeleteItems.Location = new System.Drawing.Point(39, 98); this.btnDeleteItems.Name = "btnDeleteItems"; - this.btnDeleteItems.Size = new System.Drawing.Size(280, 23); + this.btnDeleteItems.Size = new System.Drawing.Size(212, 23); this.btnDeleteItems.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; - this.superTooltip1.SetSuperTooltip(this.btnDeleteItems, new DevComponents.DotNetBar.SuperTooltipInfo("Process Links", "", "This will run the selected RO Links or Transitions Links tool.\r\n\r\nClick on the on" + + this.superTooltip1.SetSuperTooltip(this.btnDeleteItems, new DevComponents.DotNetBar.SuperTooltipInfo("Process Deletions", "", "This will allow for the deletion of groups of annotations and allow for deleting entire folders within PROMS. Use the tree nodes to select which items to delete.\r\n\r\nClick on the on" + "/off switches to turn on/off each tool.\r\n\r\nNote that only one of these tools can" + - " be run at a time.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(200, 130))); + " be run at a time.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(200, 175))); this.btnDeleteItems.TabIndex = 35; this.btnDeleteItems.Text = "Process Deletions"; this.btnDeleteItems.Click += new System.EventHandler(this.btnDeleteItems_Click); // + // sideNavPanel3 + // + this.sideNavPanel3.Controls.Add(this.swCheckROLinks); + this.sideNavPanel3.Controls.Add(this.labelX12); + this.sideNavPanel3.Controls.Add(this.warningBox5); + this.sideNavPanel3.Controls.Add(this.line3); + this.sideNavPanel3.Controls.Add(this.swUpdateROVals); + this.sideNavPanel3.Controls.Add(this.swRefreshTrans); + this.sideNavPanel3.Controls.Add(this.labelX11); + this.sideNavPanel3.Controls.Add(this.labelX6); + this.sideNavPanel3.Controls.Add(this.warningBox1); + this.sideNavPanel3.Controls.Add(this.myTV); + this.sideNavPanel3.Controls.Add(this.btnFixLinks); + this.sideNavPanel3.Dock = System.Windows.Forms.DockStyle.Fill; + this.sideNavPanel3.Location = new System.Drawing.Point(89, 31); + this.sideNavPanel3.Name = "sideNavPanel3"; + this.sideNavPanel3.Size = new System.Drawing.Size(291, 494); + this.sideNavPanel3.TabIndex = 10; + this.sideNavPanel3.Visible = false; + // + // swCheckROLinks + // + // + // + // + this.swCheckROLinks.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; + this.swCheckROLinks.Location = new System.Drawing.Point(10, 66); + this.swCheckROLinks.Name = "swCheckROLinks"; + this.swCheckROLinks.Size = new System.Drawing.Size(91, 22); + this.swCheckROLinks.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; + this.superTooltip1.SetSuperTooltip(this.swCheckROLinks, new DevComponents.DotNetBar.SuperTooltipInfo("Check RO Links", "", resources.GetString("swCheckROLinks.SuperTooltip"), null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(250, 150))); + this.swCheckROLinks.SwitchClickTogglesValue = true; + this.swCheckROLinks.TabIndex = 33; + this.swCheckROLinks.ValueChanged += new System.EventHandler(this.swCheckROLinks_ValueChanged); + // + // labelX12 + // + this.labelX12.BackColor = System.Drawing.Color.Transparent; + // + // + // + this.labelX12.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; + this.labelX12.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.labelX12.Location = new System.Drawing.Point(107, 66); + this.labelX12.Name = "labelX12"; + this.labelX12.Size = new System.Drawing.Size(186, 22); + this.superTooltip1.SetSuperTooltip(this.labelX12, new DevComponents.DotNetBar.SuperTooltipInfo("Check RO Links", "", resources.GetString("labelX12.SuperTooltip"), null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(350, 175))); + this.labelX12.TabIndex = 32; + this.labelX12.Text = "Check RO Links"; + // + // warningBox5 + // + this.warningBox5.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(196)))), ((int)(((byte)(219)))), ((int)(((byte)(249))))); + 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.Name = "warningBox5"; + this.warningBox5.OptionsButtonVisible = false; + this.warningBox5.Size = new System.Drawing.Size(262, 32); + this.warningBox5.TabIndex = 31; + this.warningBox5.Text = "NOTE These tools can take a long time to run"; + // + // line3 + // + this.line3.BackColor = System.Drawing.Color.Transparent; + this.line3.Location = new System.Drawing.Point(6, 127); + this.line3.Name = "line3"; + this.line3.Size = new System.Drawing.Size(285, 12); + this.line3.TabIndex = 30; + this.line3.Text = "line3"; + // + // swUpdateROVals + // + // + // + // + this.swUpdateROVals.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; + this.swUpdateROVals.Location = new System.Drawing.Point(10, 10); + this.swUpdateROVals.Name = "swUpdateROVals"; + this.swUpdateROVals.Size = new System.Drawing.Size(91, 22); + this.swUpdateROVals.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; + this.superTooltip1.SetSuperTooltip(this.swUpdateROVals, new DevComponents.DotNetBar.SuperTooltipInfo("Update RO Values", "", resources.GetString("swUpdateROVals.SuperTooltip"), null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(250, 150))); + this.swUpdateROVals.SwitchClickTogglesValue = true; + this.swUpdateROVals.TabIndex = 29; + this.swUpdateROVals.Value = true; + this.swUpdateROVals.ValueObject = "Y"; + this.swUpdateROVals.ValueChanged += new System.EventHandler(this.swUpdateROVals_ValueChanged); + // + // swRefreshTrans + // + // + // + // + this.swRefreshTrans.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; + this.swRefreshTrans.Location = new System.Drawing.Point(10, 38); + this.swRefreshTrans.Name = "swRefreshTrans"; + this.swRefreshTrans.Size = new System.Drawing.Size(91, 22); + this.swRefreshTrans.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; + this.superTooltip1.SetSuperTooltip(this.swRefreshTrans, new DevComponents.DotNetBar.SuperTooltipInfo("Refresh Transitions", "", resources.GetString("swRefreshTrans.SuperTooltip"), null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(265, 175))); + this.swRefreshTrans.SwitchClickTogglesValue = true; + this.swRefreshTrans.TabIndex = 29; + this.swRefreshTrans.ValueChanged += new System.EventHandler(this.swRefreshTrans_ValueChanged); + // + // labelX11 + // + this.labelX11.BackColor = System.Drawing.Color.Transparent; + // + // + // + this.labelX11.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; + this.labelX11.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.labelX11.Location = new System.Drawing.Point(107, 10); + this.labelX11.Name = "labelX11"; + this.labelX11.Size = new System.Drawing.Size(186, 22); + this.superTooltip1.SetSuperTooltip(this.labelX11, new DevComponents.DotNetBar.SuperTooltipInfo("Update RO Values", "", resources.GetString("labelX11.SuperTooltip"), null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(250, 150))); + this.labelX11.TabIndex = 28; + this.labelX11.Text = "Update RO Values"; + // + // labelX6 + // + this.labelX6.BackColor = System.Drawing.Color.Transparent; + // + // + // + this.labelX6.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; + this.labelX6.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.labelX6.Location = new System.Drawing.Point(107, 38); + this.labelX6.Name = "labelX6"; + this.labelX6.Size = new System.Drawing.Size(186, 22); + this.superTooltip1.SetSuperTooltip(this.labelX6, new DevComponents.DotNetBar.SuperTooltipInfo("Refresh Transitions", "", resources.GetString("labelX6.SuperTooltip"), null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(256, 175))); + this.labelX6.TabIndex = 28; + this.labelX6.Text = "Refresh Transitions"; + // + // warningBox1 + // + this.warningBox1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(196)))), ((int)(((byte)(219)))), ((int)(((byte)(249))))); + 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.Name = "warningBox1"; + this.warningBox1.OptionsButtonVisible = false; + this.warningBox1.Size = new System.Drawing.Size(262, 43); + this.warningBox1.TabIndex = 7; + this.warningBox1.Text = " Be sure there is a current backup of the \r\n database prior to running these func" + + "tions"; + // + // btnFixLinks + // + this.btnFixLinks.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton; + this.btnFixLinks.Checked = true; + this.btnFixLinks.ColorTable = DevComponents.DotNetBar.eButtonColor.OrangeWithBackground; + this.btnFixLinks.Location = new System.Drawing.Point(10, 98); + this.btnFixLinks.Name = "btnFixLinks"; + this.btnFixLinks.Size = new System.Drawing.Size(280, 23); + this.btnFixLinks.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; + this.superTooltip1.SetSuperTooltip(this.btnFixLinks, new DevComponents.DotNetBar.SuperTooltipInfo("Process Links", "", "This will run the selected RO Links or Transitions Links tool.\r\n\r\nClick on the on" + + "/off switches to turn on/off each tool.\r\n\r\nNote that only one of these tools can" + + " be run at a time.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(200, 130))); + this.btnFixLinks.TabIndex = 6; + this.btnFixLinks.Text = "Process Links"; + this.btnFixLinks.Click += new System.EventHandler(this.btnFixLinks_Click); + // // sideNavPanel1 // this.sideNavPanel1.Controls.Add(this.warningBox3); @@ -1009,170 +1206,6 @@ this.btnRunRepair.Text = "Run Repair"; this.btnRunRepair.Click += new System.EventHandler(this.btnRunRepair_Click); // - // sideNavPanel3 - // - this.sideNavPanel3.Controls.Add(this.swCheckROLinks); - this.sideNavPanel3.Controls.Add(this.labelX12); - this.sideNavPanel3.Controls.Add(this.warningBox5); - this.sideNavPanel3.Controls.Add(this.line3); - this.sideNavPanel3.Controls.Add(this.swUpdateROVals); - this.sideNavPanel3.Controls.Add(this.swRefreshTrans); - this.sideNavPanel3.Controls.Add(this.labelX11); - this.sideNavPanel3.Controls.Add(this.labelX6); - this.sideNavPanel3.Controls.Add(this.warningBox1); - this.sideNavPanel3.Controls.Add(this.myTV); - this.sideNavPanel3.Controls.Add(this.btnFixLinks); - this.sideNavPanel3.Dock = System.Windows.Forms.DockStyle.Fill; - this.sideNavPanel3.Location = new System.Drawing.Point(89, 31); - this.sideNavPanel3.Name = "sideNavPanel3"; - this.sideNavPanel3.Size = new System.Drawing.Size(291, 494); - this.sideNavPanel3.TabIndex = 10; - this.sideNavPanel3.Visible = false; - // - // swCheckROLinks - // - // - // - // - this.swCheckROLinks.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; - this.swCheckROLinks.Location = new System.Drawing.Point(10, 66); - this.swCheckROLinks.Name = "swCheckROLinks"; - this.swCheckROLinks.Size = new System.Drawing.Size(91, 22); - this.swCheckROLinks.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; - this.superTooltip1.SetSuperTooltip(this.swCheckROLinks, new DevComponents.DotNetBar.SuperTooltipInfo("Check RO Links", "", resources.GetString("swCheckROLinks.SuperTooltip"), null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(250, 150))); - this.swCheckROLinks.SwitchClickTogglesValue = true; - this.swCheckROLinks.TabIndex = 33; - this.swCheckROLinks.ValueChanged += new System.EventHandler(this.swCheckROLinks_ValueChanged); - // - // labelX12 - // - this.labelX12.BackColor = System.Drawing.Color.Transparent; - // - // - // - this.labelX12.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; - this.labelX12.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.labelX12.Location = new System.Drawing.Point(107, 66); - this.labelX12.Name = "labelX12"; - this.labelX12.Size = new System.Drawing.Size(186, 22); - this.superTooltip1.SetSuperTooltip(this.labelX12, new DevComponents.DotNetBar.SuperTooltipInfo("Check RO Links", "", resources.GetString("labelX12.SuperTooltip"), null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(350, 175))); - this.labelX12.TabIndex = 32; - this.labelX12.Text = "Check RO Links"; - // - // warningBox5 - // - this.warningBox5.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(196)))), ((int)(((byte)(219)))), ((int)(((byte)(249))))); - 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.Name = "warningBox5"; - this.warningBox5.OptionsButtonVisible = false; - this.warningBox5.Size = new System.Drawing.Size(262, 32); - this.warningBox5.TabIndex = 31; - this.warningBox5.Text = "NOTE These tools can take a long time to run"; - // - // line3 - // - this.line3.BackColor = System.Drawing.Color.Transparent; - this.line3.Location = new System.Drawing.Point(6, 127); - this.line3.Name = "line3"; - this.line3.Size = new System.Drawing.Size(285, 12); - this.line3.TabIndex = 30; - this.line3.Text = "line3"; - // - // swUpdateROVals - // - // - // - // - this.swUpdateROVals.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; - this.swUpdateROVals.Location = new System.Drawing.Point(10, 10); - this.swUpdateROVals.Name = "swUpdateROVals"; - this.swUpdateROVals.Size = new System.Drawing.Size(91, 22); - this.swUpdateROVals.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; - this.superTooltip1.SetSuperTooltip(this.swUpdateROVals, new DevComponents.DotNetBar.SuperTooltipInfo("Update RO Values", "", resources.GetString("swUpdateROVals.SuperTooltip"), null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(250, 150))); - this.swUpdateROVals.SwitchClickTogglesValue = true; - this.swUpdateROVals.TabIndex = 29; - this.swUpdateROVals.Value = true; - this.swUpdateROVals.ValueObject = "Y"; - this.swUpdateROVals.ValueChanged += new System.EventHandler(this.swUpdateROVals_ValueChanged); - // - // swRefreshTrans - // - // - // - // - this.swRefreshTrans.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; - this.swRefreshTrans.Location = new System.Drawing.Point(10, 38); - this.swRefreshTrans.Name = "swRefreshTrans"; - this.swRefreshTrans.Size = new System.Drawing.Size(91, 22); - this.swRefreshTrans.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; - this.superTooltip1.SetSuperTooltip(this.swRefreshTrans, new DevComponents.DotNetBar.SuperTooltipInfo("Refresh Transitions", "", resources.GetString("swRefreshTrans.SuperTooltip"), null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(265, 175))); - this.swRefreshTrans.SwitchClickTogglesValue = true; - this.swRefreshTrans.TabIndex = 29; - this.swRefreshTrans.ValueChanged += new System.EventHandler(this.swRefreshTrans_ValueChanged); - // - // labelX11 - // - this.labelX11.BackColor = System.Drawing.Color.Transparent; - // - // - // - this.labelX11.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; - this.labelX11.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.labelX11.Location = new System.Drawing.Point(107, 10); - this.labelX11.Name = "labelX11"; - this.labelX11.Size = new System.Drawing.Size(186, 22); - this.superTooltip1.SetSuperTooltip(this.labelX11, new DevComponents.DotNetBar.SuperTooltipInfo("Update RO Values", "", resources.GetString("labelX11.SuperTooltip"), null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(250, 150))); - this.labelX11.TabIndex = 28; - this.labelX11.Text = "Update RO Values"; - // - // labelX6 - // - this.labelX6.BackColor = System.Drawing.Color.Transparent; - // - // - // - this.labelX6.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; - this.labelX6.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.labelX6.Location = new System.Drawing.Point(107, 38); - this.labelX6.Name = "labelX6"; - this.labelX6.Size = new System.Drawing.Size(186, 22); - this.superTooltip1.SetSuperTooltip(this.labelX6, new DevComponents.DotNetBar.SuperTooltipInfo("Refresh Transitions", "", resources.GetString("labelX6.SuperTooltip"), null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(256, 175))); - this.labelX6.TabIndex = 28; - this.labelX6.Text = "Refresh Transitions"; - // - // warningBox1 - // - this.warningBox1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(196)))), ((int)(((byte)(219)))), ((int)(((byte)(249))))); - 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.Name = "warningBox1"; - this.warningBox1.OptionsButtonVisible = false; - this.warningBox1.Size = new System.Drawing.Size(262, 43); - this.warningBox1.TabIndex = 7; - this.warningBox1.Text = " Be sure there is a current backup of the \r\n database prior to running these func" + - "tions"; - // - // btnFixLinks - // - this.btnFixLinks.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton; - this.btnFixLinks.Checked = true; - this.btnFixLinks.ColorTable = DevComponents.DotNetBar.eButtonColor.OrangeWithBackground; - this.btnFixLinks.Location = new System.Drawing.Point(10, 98); - this.btnFixLinks.Name = "btnFixLinks"; - this.btnFixLinks.Size = new System.Drawing.Size(280, 23); - this.btnFixLinks.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; - this.superTooltip1.SetSuperTooltip(this.btnFixLinks, new DevComponents.DotNetBar.SuperTooltipInfo("Process Links", "", "This will run the selected RO Links or Transitions Links tool.\r\n\r\nClick on the on" + - "/off switches to turn on/off each tool.\r\n\r\nNote that only one of these tools can" + - " be run at a time.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(200, 130))); - this.btnFixLinks.TabIndex = 6; - this.btnFixLinks.Text = "Process Links"; - this.btnFixLinks.Click += new System.EventHandler(this.btnFixLinks_Click); - // // sideNavItem1 // this.sideNavItem1.IsSystemMenu = true; @@ -1217,8 +1250,7 @@ // sideNavItmUsers // this.sideNavItmUsers.Name = "sideNavItmUsers"; - this.sideNavItmUsers.SubItems.AddRange(new DevComponents.DotNetBar.BaseItem[] { - this.buttonItem1}); + this.sideNavItmUsers.Panel = this.sideNavPanel5; this.sideNavItmUsers.Symbol = ""; this.sideNavItmUsers.Text = "Users"; this.sideNavItmUsers.Click += new System.EventHandler(this.sideNavItmUsers_Click); @@ -1364,9 +1396,10 @@ this.sideNav1.ResumeLayout(false); this.sideNav1.PerformLayout(); this.sideNavPanel4.ResumeLayout(false); + this.sideNavPanel3.ResumeLayout(false); this.sideNavPanel1.ResumeLayout(false); this.sideNavPanel2.ResumeLayout(false); - this.sideNavPanel3.ResumeLayout(false); + this.sideNavPanel5.ResumeLayout(false); this.panelEx4.ResumeLayout(false); this.ResumeLayout(false); @@ -1416,6 +1449,8 @@ private DevComponents.DotNetBar.LabelX labelX8; private DevComponents.DotNetBar.Controls.Line line2; private DevComponents.DotNetBar.ButtonX btnRunRepair; + private DevComponents.DotNetBar.Controls.SideNavPanel sideNavPanel5; + private DevComponents.DotNetBar.ButtonX btn_ShowUsers; private DevComponents.DotNetBar.Controls.SideNavPanel sideNavPanel3; private DevComponents.DotNetBar.ButtonX btnFixLinks; private DevComponents.DotNetBar.Controls.SideNavItem sideNavItem1; -- 2.47.2 From c05e493579353074db3875b895577835efde01ef Mon Sep 17 00:00:00 2001 From: Kevin Laskey Date: Thu, 1 Aug 2024 14:52:38 -0400 Subject: [PATCH 8/8] C2021-059 Attempting to resolve conflicts try 1 --- .../frmBatchRefresh.Designer.cs | 4 +- .../frmBatchRefresh.resx | 332 +++++++++--------- 2 files changed, 167 insertions(+), 169 deletions(-) diff --git a/PROMS/VEPROMS User Interface/frmBatchRefresh.Designer.cs b/PROMS/VEPROMS User Interface/frmBatchRefresh.Designer.cs index 04feaaf7..6688740e 100644 --- a/PROMS/VEPROMS User Interface/frmBatchRefresh.Designer.cs +++ b/PROMS/VEPROMS User Interface/frmBatchRefresh.Designer.cs @@ -1495,6 +1495,4 @@ private DevComponents.DotNetBar.ButtonX btnDeleteItems; private DevComponents.DotNetBar.Controls.SideNavItem sideNavItmDelete; } -} - - +} \ No newline at end of file diff --git a/PROMS/VEPROMS User Interface/frmBatchRefresh.resx b/PROMS/VEPROMS User Interface/frmBatchRefresh.resx index acb133ce..15e4e445 100644 --- a/PROMS/VEPROMS User Interface/frmBatchRefresh.resx +++ b/PROMS/VEPROMS User Interface/frmBatchRefresh.resx @@ -117,27 +117,147 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAplJREFUOE+N - k11IU2Ecxv9zouK8CULrzo8SU3QKaSYmOJ2uFL8SK4igEIok6qKUwggySTShC41CRiiGdWNfYBcVWiGl - FqN0lh+UTaekzuWcuu2c9316nSdKLPEHz817/s/zPv9zOPQ/nlVQEGulF3ILPe+8SIHK8eYR5lusLwHy - Oy08RqpXjjfHVCMlsydbGbekg4/r4HmwRbLWUZzyeGNqD5NK1O5lw8L8NQHckgh5SAdXA3UqIxuzZKSj - 8ssI8Il9wMQeYDoVfD4HrsdhsNdRgTL2b4yl5Ce1qL+xcQOWxpKxMzwAMVEayIv7IU8XwVnv8+XuEfJV - xtfjMlKZ/CYG3JYJ96wOPj6EoCBfMCkfnJdguSMG89eoVBlfS+tJCpCafa1stgBYzAZbzoFGo0ZIiD84 - KwJ350P+UQxHtfr7vUPkp9j+4GqiM1K3FtyVB8h5wlSI4GB/RIQHgjtzwWaywMb1WHwYg7lKOq3YVrlz - jPw8RrWFOUoAJhpwcaNciNDQQMRGB4FNpIMNp4B93A2pXw/7ZbWlufCvFguNdNzzOta7J5S6fP4AdkVq - kKQVAQNJYO8TwHq0kD8kwdkWhZkLdMJrrsonlfu2yszmSsA9Bat1p0XdsTTcvxmJtpowyL1ar/m3PKYM - 2MpVgzcySUWTdWRwd+wAXzoo3r5B7CnqDqVg+lW89yuoVARrR/SaANm0F46mUFjOUjYtN9BTaVQYJzPA - RlPB+hNF3XjvP3C9bDuqTm2D9DZuTcCKXN1psJ2ndhGgnpJGciENGyB9zoJk1kMezFonySw0oIf0KVOs - oIO7L3MlYITstVTsrKNHCzXU5aimnvmrZPp5hfrtlWS2X6LBuQoatJWTWQz3C5mEeoS6hNqt5yj7FysJ - zJwL4b/EAAAAAElFTkSuQmCC - - 17, 17 + + This allows the user to check referenced objects links in procedure step data for multiple working drafts in a batch mode. + +Bad referenced bject links will be identified with an Bad RO Link annotation. Use the PROMS Search tool to list all of the steps that have this annotation. + +Be sure a current backup of the database exists prior performing this function. + +It is recommended that this be done during off hours. + + + + + This allows the user to check referenced objects links in procedure step data for multiple working drafts in a batch mode. + +Bad referenced bject links will be identified with an Bad RO Link annotation. Use the PROMS Search tool to list all of the steps that have this annotation. + +Be sure a current backup of the database exists prior performing this function. + +It is recommended that this be done during off hours. + + + + This function will refresh transitions in all procedures selected below, whether they were selected individually or as a group via a procedure set. + +Be sure a current backup of the database exists prior to running this function. + +If more than one procedure is selected, it is recommended that this be performed during off hours. + + + This will allow for the deletion of groups of annotations and allow for deleting entire folders within PROMS. Use the tree nodes to select which items to delete. + +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. + + + This allows the user to check referenced objects links in procedure step data for multiple working drafts in a batch mode. + +Bad referenced bject links will be identified with an Bad RO Link annotation. Use the PROMS Search tool to list all of the steps that have this annotation. + +Be sure a current backup of the database exists prior performing this function. + +It is recommended that this be done during off hours. + + + + + This allows the user to check referenced objects links in procedure step data for multiple working drafts in a batch mode. + +Bad referenced bject links will be identified with an Bad RO Link annotation. Use the PROMS Search tool to list all of the steps that have this annotation. + +Be sure a current backup of the database exists prior performing this function. + +It is recommended that this be done during off hours. + + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAplJREFUOE+N + k11IU2Ecxv9zouK8CULrzo8SU3QKaSYmOJ2uFL8SK4igEIok6qKUwggySTShC41CRiiGdWNfYBcVWiGl + FqN0lh+UTaekzuWcuu2c9316nSdKLPEHz817/s/zPv9zOPQ/nlVQEGulF3ILPe+8SIHK8eYR5lusLwHy + Oy08RqpXjjfHVCMlsydbGbekg4/r4HmwRbLWUZzyeGNqD5NK1O5lw8L8NQHckgh5SAdXA3UqIxuzZKSj + 8ssI8Il9wMQeYDoVfD4HrsdhsNdRgTL2b4yl5Ce1qL+xcQOWxpKxMzwAMVEayIv7IU8XwVnv8+XuEfJV + xtfjMlKZ/CYG3JYJ96wOPj6EoCBfMCkfnJdguSMG89eoVBlfS+tJCpCafa1stgBYzAZbzoFGo0ZIiD84 + KwJ350P+UQxHtfr7vUPkp9j+4GqiM1K3FtyVB8h5wlSI4GB/RIQHgjtzwWaywMb1WHwYg7lKOq3YVrlz + jPw8RrWFOUoAJhpwcaNciNDQQMRGB4FNpIMNp4B93A2pXw/7ZbWlufCvFguNdNzzOta7J5S6fP4AdkVq + kKQVAQNJYO8TwHq0kD8kwdkWhZkLdMJrrsonlfu2yszmSsA9Bat1p0XdsTTcvxmJtpowyL1ar/m3PKYM + 2MpVgzcySUWTdWRwd+wAXzoo3r5B7CnqDqVg+lW89yuoVARrR/SaANm0F46mUFjOUjYtN9BTaVQYJzPA + RlPB+hNF3XjvP3C9bDuqTm2D9DZuTcCKXN1psJ2ndhGgnpJGciENGyB9zoJk1kMezFonySw0oIf0KVOs + oIO7L3MlYITstVTsrKNHCzXU5aimnvmrZPp5hfrtlWS2X6LBuQoatJWTWQz3C5mEeoS6hNqt5yj7FysJ + zJwL4b/EAAAAAElFTkSuQmCC + + + + This allows the user to update referenced objects values for multiple working drafts in a batch mode. + +Be sure a current backup of the database exists prior performing this function. + +It is recommended that this be done during off hours. + + + + This function will refresh transitions in all procedures selected below, whether they were selected individually or as a group via a procedure set. + +Be sure a current backup of the database exists prior to running this function. + +If more than one procedure is selected, it is recommended that this be performed during off hours. + + + This allows the user to update referenced objects values for multiple working drafts in a batch mode. + +Be sure a current backup of the database exists prior performing this function. + +It is recommended that this be done during off hours. + + + + This function will refresh transitions in all procedures selected below, whether they were selected individually or as a group via a procedure set. + +Be sure a current backup of the database exists prior to running this function. + +If more than one procedure is selected, it is recommended that this be performed during off hours. + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAplJREFUOE+N + k11IU2Ecxv9zouK8CULrzo8SU3QKaSYmOJ2uFL8SK4igEIok6qKUwggySTShC41CRiiGdWNfYBcVWiGl + FqN0lh+UTaekzuWcuu2c9316nSdKLPEHz817/s/zPv9zOPQ/nlVQEGulF3ILPe+8SIHK8eYR5lusLwHy + Oy08RqpXjjfHVCMlsydbGbekg4/r4HmwRbLWUZzyeGNqD5NK1O5lw8L8NQHckgh5SAdXA3UqIxuzZKSj + 8ssI8Il9wMQeYDoVfD4HrsdhsNdRgTL2b4yl5Ce1qL+xcQOWxpKxMzwAMVEayIv7IU8XwVnv8+XuEfJV + xtfjMlKZ/CYG3JYJ96wOPj6EoCBfMCkfnJdguSMG89eoVBlfS+tJCpCafa1stgBYzAZbzoFGo0ZIiD84 + KwJ350P+UQxHtfr7vUPkp9j+4GqiM1K3FtyVB8h5wlSI4GB/RIQHgjtzwWaywMb1WHwYg7lKOq3YVrlz + jPw8RrWFOUoAJhpwcaNciNDQQMRGB4FNpIMNp4B93A2pXw/7ZbWlufCvFguNdNzzOta7J5S6fP4AdkVq + kKQVAQNJYO8TwHq0kD8kwdkWhZkLdMJrrsonlfu2yszmSsA9Bat1p0XdsTTcvxmJtpowyL1ar/m3PKYM + 2MpVgzcySUWTdWRwd+wAXzoo3r5B7CnqDqVg+lW89yuoVARrR/SaANm0F46mUFjOUjYtN9BTaVQYJzPA + RlPB+hNF3XjvP3C9bDuqTm2D9DZuTcCKXN1psJ2ndhGgnpJGciENGyB9zoJk1kMezFonySw0oIf0KVOs + oIO7L3MlYITstVTsrKNHCzXU5aimnvmrZPp5hfrtlWS2X6LBuQoatJWTWQz3C5mEeoS6hNqt5yj7FysJ + zJwL4b/EAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAplJREFUOE+N + k11IU2Ecxv9zouK8CULrzo8SU3QKaSYmOJ2uFL8SK4igEIok6qKUwggySTShC41CRiiGdWNfYBcVWiGl + FqN0lh+UTaekzuWcuu2c9316nSdKLPEHz817/s/zPv9zOPQ/nlVQEGulF3ILPe+8SIHK8eYR5lusLwHy + Oy08RqpXjjfHVCMlsydbGbekg4/r4HmwRbLWUZzyeGNqD5NK1O5lw8L8NQHckgh5SAdXA3UqIxuzZKSj + 8ssI8Il9wMQeYDoVfD4HrsdhsNdRgTL2b4yl5Ce1qL+xcQOWxpKxMzwAMVEayIv7IU8XwVnv8+XuEfJV + xtfjMlKZ/CYG3JYJ96wOPj6EoCBfMCkfnJdguSMG89eoVBlfS+tJCpCafa1stgBYzAZbzoFGo0ZIiD84 + KwJ350P+UQxHtfr7vUPkp9j+4GqiM1K3FtyVB8h5wlSI4GB/RIQHgjtzwWaywMb1WHwYg7lKOq3YVrlz + jPw8RrWFOUoAJhpwcaNciNDQQMRGB4FNpIMNp4B93A2pXw/7ZbWlufCvFguNdNzzOta7J5S6fP4AdkVq + kKQVAQNJYO8TwHq0kD8kwdkWhZkLdMJrrsonlfu2yszmSsA9Bat1p0XdsTTcvxmJtpowyL1ar/m3PKYM + 2MpVgzcySUWTdWRwd+wAXzoo3r5B7CnqDqVg+lW89yuoVARrR/SaANm0F46mUFjOUjYtN9BTaVQYJzPA + RlPB+hNF3XjvP3C9bDuqTm2D9DZuTcCKXN1psJ2ndhGgnpJGciENGyB9zoJk1kMezFonySw0oIf0KVOs + oIO7L3MlYITstVTsrKNHCzXU5aimnvmrZPp5hfrtlWS2X6LBuQoatJWTWQz3C5mEeoS6hNqt5yj7FysJ + zJwL4b/EAAAAAElFTkSuQmCC + + Referenced Objects databases are associated with a procedure set (such as Working Draft). @@ -185,41 +305,6 @@ Should an item become orphaned (disconnected) from the rest of the data, it will This tool may take an extended period of time to execute. - - - This allows the user to check referenced objects links in procedure step data for multiple working drafts in a batch mode. - -Bad referenced bject links will be identified with an Bad RO Link annotation. Use the PROMS Search tool to list all of the steps that have this annotation. - -Be sure a current backup of the database exists prior performing this function. - -It is recommended that this be done during off hours. - - - - - This allows the user to check referenced objects links in procedure step data for multiple working drafts in a batch mode. - -Bad referenced bject links will be identified with an Bad RO Link annotation. Use the PROMS Search tool to list all of the steps that have this annotation. - -Be sure a current backup of the database exists prior performing this function. - -It is recommended that this be done during off hours. - - - - This function will refresh transitions in all procedures selected below, whether they were selected individually or as a group via a procedure set. - -Be sure a current backup of the database exists prior to running this function. - -If more than one procedure is selected, it is recommended that this be performed during off hours. - - - This function will refresh transitions in all procedures selected below, whether they were selected individually or as a group via a procedure set. - -Be sure a current backup of the database exists prior to running this function. - -If more than one procedure is selected, it is recommended that this be performed during off hours. When Word attachments are modified and saved, PROMS will create a PDF of the attachment contents and save it in the database. When this is done, all the of the RO references are resolved as well as pagination of the attachment. This speeds up the overall printing of the procedure in that PROMS simply inserts the attachment contents. @@ -235,37 +320,37 @@ This function will remove all of the saved attachment PDFS stored in the databas - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAplJREFUOE+N - k11IU2Ecxv9zouK8CULrzo8SU3QKaSYmOJ2uFL8SK4igEIok6qKUwggySTShC41CRiiGdWNfYBcVWiGl - FqN0lh+UTaekzuWcuu2c9316nSdKLPEHz817/s/zPv9zOPQ/nlVQEGulF3ILPe+8SIHK8eYR5lusLwHy - Oy08RqpXjjfHVCMlsydbGbekg4/r4HmwRbLWUZzyeGNqD5NK1O5lw8L8NQHckgh5SAdXA3UqIxuzZKSj - 8ssI8Il9wMQeYDoVfD4HrsdhsNdRgTL2b4yl5Ce1qL+xcQOWxpKxMzwAMVEayIv7IU8XwVnv8+XuEfJV - xtfjMlKZ/CYG3JYJ96wOPj6EoCBfMCkfnJdguSMG89eoVBlfS+tJCpCafa1stgBYzAZbzoFGo0ZIiD84 - KwJ350P+UQxHtfr7vUPkp9j+4GqiM1K3FtyVB8h5wlSI4GB/RIQHgjtzwWaywMb1WHwYg7lKOq3YVrlz - jPw8RrWFOUoAJhpwcaNciNDQQMRGB4FNpIMNp4B93A2pXw/7ZbWlufCvFguNdNzzOta7J5S6fP4AdkVq - kKQVAQNJYO8TwHq0kD8kwdkWhZkLdMJrrsonlfu2yszmSsA9Bat1p0XdsTTcvxmJtpowyL1ar/m3PKYM - 2MpVgzcySUWTdWRwd+wAXzoo3r5B7CnqDqVg+lW89yuoVARrR/SaANm0F46mUFjOUjYtN9BTaVQYJzPA - RlPB+hNF3XjvP3C9bDuqTm2D9DZuTcCKXN1psJ2ndhGgnpJGciENGyB9zoJk1kMezFonySw0oIf0KVOs - oIO7L3MlYITstVTsrKNHCzXU5aimnvmrZPp5hfrtlWS2X6LBuQoatJWTWQz3C5mEeoS6hNqt5yj7FysJ - zJwL4b/EAAAAAElFTkSuQmCC - + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAplJREFUOE+N + k11IU2Ecxv9zouK8CULrzo8SU3QKaSYmOJ2uFL8SK4igEIok6qKUwggySTShC41CRiiGdWNfYBcVWiGl + FqN0lh+UTaekzuWcuu2c9316nSdKLPEHz817/s/zPv9zOPQ/nlVQEGulF3ILPe+8SIHK8eYR5lusLwHy + Oy08RqpXjjfHVCMlsydbGbekg4/r4HmwRbLWUZzyeGNqD5NK1O5lw8L8NQHckgh5SAdXA3UqIxuzZKSj + 8ssI8Il9wMQeYDoVfD4HrsdhsNdRgTL2b4yl5Ce1qL+xcQOWxpKxMzwAMVEayIv7IU8XwVnv8+XuEfJV + xtfjMlKZ/CYG3JYJ96wOPj6EoCBfMCkfnJdguSMG89eoVBlfS+tJCpCafa1stgBYzAZbzoFGo0ZIiD84 + KwJ350P+UQxHtfr7vUPkp9j+4GqiM1K3FtyVB8h5wlSI4GB/RIQHgjtzwWaywMb1WHwYg7lKOq3YVrlz + jPw8RrWFOUoAJhpwcaNciNDQQMRGB4FNpIMNp4B93A2pXw/7ZbWlufCvFguNdNzzOta7J5S6fP4AdkVq + kKQVAQNJYO8TwHq0kD8kwdkWhZkLdMJrrsonlfu2yszmSsA9Bat1p0XdsTTcvxmJtpowyL1ar/m3PKYM + 2MpVgzcySUWTdWRwd+wAXzoo3r5B7CnqDqVg+lW89yuoVARrR/SaANm0F46mUFjOUjYtN9BTaVQYJzPA + RlPB+hNF3XjvP3C9bDuqTm2D9DZuTcCKXN1psJ2ndhGgnpJGciENGyB9zoJk1kMezFonySw0oIf0KVOs + oIO7L3MlYITstVTsrKNHCzXU5aimnvmrZPp5hfrtlWS2X6LBuQoatJWTWQz3C5mEeoS6hNqt5yj7FysJ + zJwL4b/EAAAAAElFTkSuQmCC + - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAplJREFUOE+N - k11IU2Ecxv9zouK8CULrzo8SU3QKaSYmOJ2uFL8SK4igEIok6qKUwggySTShC41CRiiGdWNfYBcVWiGl - FqN0lh+UTaekzuWcuu2c9316nSdKLPEHz817/s/zPv9zOPQ/nlVQEGulF3ILPe+8SIHK8eYR5lusLwHy - Oy08RqpXjjfHVCMlsydbGbekg4/r4HmwRbLWUZzyeGNqD5NK1O5lw8L8NQHckgh5SAdXA3UqIxuzZKSj - 8ssI8Il9wMQeYDoVfD4HrsdhsNdRgTL2b4yl5Ce1qL+xcQOWxpKxMzwAMVEayIv7IU8XwVnv8+XuEfJV - xtfjMlKZ/CYG3JYJ96wOPj6EoCBfMCkfnJdguSMG89eoVBlfS+tJCpCafa1stgBYzAZbzoFGo0ZIiD84 - KwJ350P+UQxHtfr7vUPkp9j+4GqiM1K3FtyVB8h5wlSI4GB/RIQHgjtzwWaywMb1WHwYg7lKOq3YVrlz - jPw8RrWFOUoAJhpwcaNciNDQQMRGB4FNpIMNp4B93A2pXw/7ZbWlufCvFguNdNzzOta7J5S6fP4AdkVq - kKQVAQNJYO8TwHq0kD8kwdkWhZkLdMJrrsonlfu2yszmSsA9Bat1p0XdsTTcvxmJtpowyL1ar/m3PKYM - 2MpVgzcySUWTdWRwd+wAXzoo3r5B7CnqDqVg+lW89yuoVARrR/SaANm0F46mUFjOUjYtN9BTaVQYJzPA - RlPB+hNF3XjvP3C9bDuqTm2D9DZuTcCKXN1psJ2ndhGgnpJGciENGyB9zoJk1kMezFonySw0oIf0KVOs - oIO7L3MlYITstVTsrKNHCzXU5aimnvmrZPp5hfrtlWS2X6LBuQoatJWTWQz3C5mEeoS6hNqt5yj7FysJ - zJwL4b/EAAAAAElFTkSuQmCC - + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAplJREFUOE+N + k11IU2Ecxv9zouK8CULrzo8SU3QKaSYmOJ2uFL8SK4igEIok6qKUwggySTShC41CRiiGdWNfYBcVWiGl + FqN0lh+UTaekzuWcuu2c9316nSdKLPEHz817/s/zPv9zOPQ/nlVQEGulF3ILPe+8SIHK8eYR5lusLwHy + Oy08RqpXjjfHVCMlsydbGbekg4/r4HmwRbLWUZzyeGNqD5NK1O5lw8L8NQHckgh5SAdXA3UqIxuzZKSj + 8ssI8Il9wMQeYDoVfD4HrsdhsNdRgTL2b4yl5Ce1qL+xcQOWxpKxMzwAMVEayIv7IU8XwVnv8+XuEfJV + xtfjMlKZ/CYG3JYJ96wOPj6EoCBfMCkfnJdguSMG89eoVBlfS+tJCpCafa1stgBYzAZbzoFGo0ZIiD84 + KwJ350P+UQxHtfr7vUPkp9j+4GqiM1K3FtyVB8h5wlSI4GB/RIQHgjtzwWaywMb1WHwYg7lKOq3YVrlz + jPw8RrWFOUoAJhpwcaNciNDQQMRGB4FNpIMNp4B93A2pXw/7ZbWlufCvFguNdNzzOta7J5S6fP4AdkVq + kKQVAQNJYO8TwHq0kD8kwdkWhZkLdMJrrsonlfu2yszmSsA9Bat1p0XdsTTcvxmJtpowyL1ar/m3PKYM + 2MpVgzcySUWTdWRwd+wAXzoo3r5B7CnqDqVg+lW89yuoVARrR/SaANm0F46mUFjOUjYtN9BTaVQYJzPA + RlPB+hNF3XjvP3C9bDuqTm2D9DZuTcCKXN1psJ2ndhGgnpJGciENGyB9zoJk1kMezFonySw0oIf0KVOs + oIO7L3MlYITstVTsrKNHCzXU5aimnvmrZPp5hfrtlWS2X6LBuQoatJWTWQz3C5mEeoS6hNqt5yj7FysJ + zJwL4b/EAAAAAElFTkSuQmCC + Referenced Objects databases are associated with a procedure set (such as Working Draft). @@ -315,91 +400,6 @@ Should an item become orphaned (disconnected) from the rest of the data, it will Everything in PROMS is inter-related. A working draft knows what is its first procedure and a procedure knows what is its first step. Likewise, a procedure knows what procedure is before it and after it. 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. - - - - This allows the user to check referenced objects links in procedure step data for multiple working drafts in a batch mode. - -Bad referenced bject links will be identified with an Bad RO Link annotation. Use the PROMS Search tool to list all of the steps that have this annotation. - -Be sure a current backup of the database exists prior performing this function. - -It is recommended that this be done during off hours. - - - - - This allows the user to check referenced objects links in procedure step data for multiple working drafts in a batch mode. - -Bad referenced bject links will be identified with an Bad RO Link annotation. Use the PROMS Search tool to list all of the steps that have this annotation. - -Be sure a current backup of the database exists prior performing this function. - -It is recommended that this be done during off hours. - - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAplJREFUOE+N - k11IU2Ecxv9zouK8CULrzo8SU3QKaSYmOJ2uFL8SK4igEIok6qKUwggySTShC41CRiiGdWNfYBcVWiGl - FqN0lh+UTaekzuWcuu2c9316nSdKLPEHz817/s/zPv9zOPQ/nlVQEGulF3ILPe+8SIHK8eYR5lusLwHy - Oy08RqpXjjfHVCMlsydbGbekg4/r4HmwRbLWUZzyeGNqD5NK1O5lw8L8NQHckgh5SAdXA3UqIxuzZKSj - 8ssI8Il9wMQeYDoVfD4HrsdhsNdRgTL2b4yl5Ce1qL+xcQOWxpKxMzwAMVEayIv7IU8XwVnv8+XuEfJV - xtfjMlKZ/CYG3JYJ96wOPj6EoCBfMCkfnJdguSMG89eoVBlfS+tJCpCafa1stgBYzAZbzoFGo0ZIiD84 - KwJ350P+UQxHtfr7vUPkp9j+4GqiM1K3FtyVB8h5wlSI4GB/RIQHgjtzwWaywMb1WHwYg7lKOq3YVrlz - jPw8RrWFOUoAJhpwcaNciNDQQMRGB4FNpIMNp4B93A2pXw/7ZbWlufCvFguNdNzzOta7J5S6fP4AdkVq - kKQVAQNJYO8TwHq0kD8kwdkWhZkLdMJrrsonlfu2yszmSsA9Bat1p0XdsTTcvxmJtpowyL1ar/m3PKYM - 2MpVgzcySUWTdWRwd+wAXzoo3r5B7CnqDqVg+lW89yuoVARrR/SaANm0F46mUFjOUjYtN9BTaVQYJzPA - RlPB+hNF3XjvP3C9bDuqTm2D9DZuTcCKXN1psJ2ndhGgnpJGciENGyB9zoJk1kMezFonySw0oIf0KVOs - oIO7L3MlYITstVTsrKNHCzXU5aimnvmrZPp5hfrtlWS2X6LBuQoatJWTWQz3C5mEeoS6hNqt5yj7FysJ - zJwL4b/EAAAAAElFTkSuQmCC - - - - This allows the user to update referenced objects values for multiple working drafts in a batch mode. - -Be sure a current backup of the database exists prior performing this function. - -It is recommended that this be done during off hours. - - - - This function will refresh transitions in all procedures selected below, whether they were selected individually or as a group via a procedure set. - -Be sure a current backup of the database exists prior to running this function. - -If more than one procedure is selected, it is recommended that this be performed during off hours. - - - This allows the user to update referenced objects values for multiple working drafts in a batch mode. - -Be sure a current backup of the database exists prior performing this function. - -It is recommended that this be done during off hours. - - - - This function will refresh transitions in all procedures selected below, whether they were selected individually or as a group via a procedure set. - -Be sure a current backup of the database exists prior to running this function. - -If more than one procedure is selected, it is recommended that this be performed during off hours. - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAplJREFUOE+N - k11IU2Ecxv9zouK8CULrzo8SU3QKaSYmOJ2uFL8SK4igEIok6qKUwggySTShC41CRiiGdWNfYBcVWiGl - FqN0lh+UTaekzuWcuu2c9316nSdKLPEHz817/s/zPv9zOPQ/nlVQEGulF3ILPe+8SIHK8eYR5lusLwHy - Oy08RqpXjjfHVCMlsydbGbekg4/r4HmwRbLWUZzyeGNqD5NK1O5lw8L8NQHckgh5SAdXA3UqIxuzZKSj - 8ssI8Il9wMQeYDoVfD4HrsdhsNdRgTL2b4yl5Ce1qL+xcQOWxpKxMzwAMVEayIv7IU8XwVnv8+XuEfJV - xtfjMlKZ/CYG3JYJ96wOPj6EoCBfMCkfnJdguSMG89eoVBlfS+tJCpCafa1stgBYzAZbzoFGo0ZIiD84 - KwJ350P+UQxHtfr7vUPkp9j+4GqiM1K3FtyVB8h5wlSI4GB/RIQHgjtzwWaywMb1WHwYg7lKOq3YVrlz - jPw8RrWFOUoAJhpwcaNciNDQQMRGB4FNpIMNp4B93A2pXw/7ZbWlufCvFguNdNzzOta7J5S6fP4AdkVq - kKQVAQNJYO8TwHq0kD8kwdkWhZkLdMJrrsonlfu2yszmSsA9Bat1p0XdsTTcvxmJtpowyL1ar/m3PKYM - 2MpVgzcySUWTdWRwd+wAXzoo3r5B7CnqDqVg+lW89yuoVARrR/SaANm0F46mUFjOUjYtN9BTaVQYJzPA - RlPB+hNF3XjvP3C9bDuqTm2D9DZuTcCKXN1psJ2ndhGgnpJGciENGyB9zoJk1kMezFonySw0oIf0KVOs - oIO7L3MlYITstVTsrKNHCzXU5aimnvmrZPp5hfrtlWS2X6LBuQoatJWTWQz3C5mEeoS6hNqt5yj7FysJ - zJwL4b/EAAAAAElFTkSuQmCC -- 2.47.2