Compare commits

..

25 Commits

Author SHA1 Message Date
b47f9b2606 revert 2b5becfa34
revert F2024-074 (Farley) Include the Cover Page in the total page count of the procedures
2024-10-09 15:49:28 -04:00
2b5becfa34 F2024-074 (Farley) Include the Cover Page in the total page count of the procedures 2024-10-09 15:20:09 -04:00
ce02c3e4bd revert 2ab1856b13
revert F2024-074 (farley)  Include the Cover Page in the total page count of the procedures
2024-10-09 15:09:54 -04:00
2ab1856b13 F2024-074 (farley) Include the Cover Page in the total page count of the procedures 2024-10-09 14:50:55 -04:00
027a9dc729 revert b071db8f60
revert F2024-074 (Farley) Include the Cover Page in the total page count of the procedures
2024-10-09 14:41:45 -04:00
b071db8f60 F2024-074 (Farley) Include the Cover Page in the total page count of the procedures 2024-10-09 14:32:47 -04:00
98d6557cd2 F2024-074 (Farley) Include the Cover Page in the total page count of the procedures 2024-10-09 14:05:20 -04:00
ebd7b1249f Merge pull request 'C2024-023 Autocomplete on Group Definition Accessory Page Access Values.' (#422) from C2024-023 into Development
Ok for testing phase
2024-10-08 15:17:31 -04:00
1b6eeaf4ad C2024-023 Autocomplete on Group Definition Accessory Page Access Values. 2024-10-08 15:02:47 -04:00
1d3dac0e51 Merge pull request 'C2020-049-Add-the-ability-for-PROMS-to-remember-the-procedure-tabs-that-were-open-when-you-closed-PROMS-5' (#421) from C2020-049-Add-the-ability-for-PROMS-to-remember-the-procedure-tabs-that-were-open-when-you-closed-PROMS-4 into Development
good for testing phase
2024-10-08 09:29:13 -04:00
48da58b681 C2020-049-Add-the-ability-for-PROMS-to-remember-the-procedure-tabs-that-were-open-when-you-closed-PROMS-5 2024-10-08 08:54:32 -04:00
68639eadf0 Merge pull request 'C2020-049-Add-the-ability-for-PROMS-to-remember-the-procedure-tabs-that-were-open-when-you-closed-PROMS-4' (#420) from C2020-049-Add-the-ability-for-PROMS-to-remember-the-procedure-tabs-that-were-open-when-you-closed-PROMS-4 into Development
Looked Good. Ready for QA Testing.
2024-10-07 11:51:36 -04:00
dc77984c10 C2020-049-Add-the-ability-for-PROMS-to-remember-the-procedure-tabs-that-were-open-when-you-closed-PROMS-4 2024-10-07 11:40:26 -04:00
5b4e1cd694 C2020-049-Add-the-ability-for-PROMS-to-remember-the-procedure-tabs-that-were-open-when-you-closed-PROMS-4 2024-10-04 14:55:04 -04:00
3fbd974fa9 C2020-049-Add-the-ability-for-PROMS-to-remember-the-procedure-tabs-that-were-open-when-you-closed-PROMS-4 2024-10-04 14:38:59 -04:00
b457496297 Merge pull request 'B2024-076 Correct Linking / Numbering when utilizing Paste Replace with Enhanced Steps over unlinked steps' (#419) from B2024-076 into Development
ready for testing phase
2024-10-04 13:20:09 -04:00
dd83491169 B2024-076 Correct Linking / Numbering when utilizing Paste Replace with Enhanced Steps over unlinked steps 2024-10-04 12:46:23 -04:00
a73a8fb993 Merge pull request 'C2020-049-Add-the-ability-for-PROMS-to-remember-the-procedure-tabs-that-were-open-when-you-closed-PROMS-2' (#418) from C2020-049-Add-the-ability-for-PROMS-to-remember-the-procedure-tabs-that-were-open-when-you-closed-PROMS-2 into Development
Code looked good. Ready for QA Testing.
2024-10-04 09:42:55 -04:00
fb7a99653d C2020-049-Add-the-ability-for-PROMS-to-remember-the-procedure-tabs-that-were-open-when-you-closed-PROMS-2 2024-10-03 15:11:15 -04:00
297d75a2b3 Merge pull request 'B2024-075 Correct Linking and Numbering when utilizing Paste Before and Paste After with Enhanced Steps as well as some related UI refresh issues.' (#415) from B2024-075 into Development
Good for testing phase
2024-10-02 11:48:58 -04:00
47c5bb159a B2024-075 Correct Linking and Numbering when utilizing Paste Before and Paste After with Enhanced Steps as well as some related UI refresh issues. 2024-10-02 11:31:04 -04:00
610b2d178c Merge pull request 'C2017-031 Extend Copy / Paste Replace Functionality for Enhanced Background Steps' (#414) from C2017-031 into Development
Code changes look good. OK for testing phase.
2024-09-30 15:14:10 -04:00
bb45e551a3 C2017-031 Extend Copy / Paste Replace Functionality for Enhanced Background Steps 2024-09-30 15:02:35 -04:00
77cf6177dc Merge pull request 'F2023-136 Adjust formats to not count the cover page when calculating the page numbers for the Automatic Table of Contents.' (#412) from F2023-136_Farley into Development
Format only  changes - ready for testing
2024-09-27 10:41:26 -04:00
a830856df2 F2023-136 Adjust formats to not count the cover page when calculating the page numbers for the Automatic Table of Contents. 2024-09-27 10:34:16 -04:00
16 changed files with 370 additions and 61 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -23,8 +23,8 @@ using System.Runtime.CompilerServices;
// Build YYMM (two digit year, two digit month) // Build YYMM (two digit year, two digit month)
// Revision DHH (day - no leading zero, two digit hour - military time // Revision DHH (day - no leading zero, two digit hour - military time
// //
[assembly: AssemblyVersion("2.3.2404.1611")] [assembly: AssemblyVersion("2.3.2410.815")]
[assembly: AssemblyFileVersion("2.3.2404.1611")] [assembly: AssemblyFileVersion("2.3.2410.815")]
// //
// In order to sign your assembly you must specify a key to use. Refer to the // In order to sign your assembly you must specify a key to use. Refer to the
@@ -92,5 +92,6 @@ using System.Runtime.CompilerServices;

View File

@@ -100,6 +100,7 @@ using System.Text;
using RODBInterface; using RODBInterface;
using ROFields; using ROFields;
using VlnStatus; using VlnStatus;
using System.Linq;
namespace ROEditor namespace ROEditor
{ {
@@ -245,6 +246,37 @@ namespace ROEditor
return CvtFldToUserFld(origGroup); return CvtFldToUserFld(origGroup);
} }
} }
//CSM C2024-023
//Part of 2024 PROMS Upgrades
//When the Overall Form is activated
//if there are any items that are Fields that are in use
//add them as auto-complete options to the
//Accessory Page Access - Value Textbox
//Typing < will bring up the auto-complete options
protected void tbValue_AddAutoComplete(object sender, EventArgs e)
{
string dummy = ""; // need for RODB_GetFIeldsInUse call, won't be used.
ArrayList AvailList, InUseList;
//first see if it is a valid 'InUse' Field.
AvailList = myrodb.RODB_GetFields(elem, (uint)RecordType.Schema);
InUseList = myrodb.RODB_GetFieldsInUse(elem, AvailList, "FieldsInUse", ref dummy, false);
//if any ROField items are in use,
//use LINQ to get a string array of the FieldNames
if (InUseList.Count > 0)
{
string[] InUseListFieldNames = InUseList.OfType<ROField>().Select(x => $"<{x.GetFieldname}>").ToArray();
AutoCompleteStringCollection allowedTypes = new AutoCompleteStringCollection();
allowedTypes.AddRange(InUseListFieldNames);
tbValue.AutoCompleteCustomSource = allowedTypes;
tbValue.AutoCompleteMode = AutoCompleteMode.Suggest;
tbValue.AutoCompleteSource = AutoCompleteSource.CustomSource;
}
}
private void FillInData() private void FillInData()
{ {
this.tbGroup.Text = DetermineGroupName(); this.tbGroup.Text = DetermineGroupName();
@@ -432,6 +464,7 @@ namespace ROEditor
this.Font = new System.Drawing.Font("Tahoma", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0))); this.Font = new System.Drawing.Font("Tahoma", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
this.Name = "GroupDefFrm"; this.Name = "GroupDefFrm";
this.Text = "Group Definition"; this.Text = "Group Definition";
this.Activated += new EventHandler(tbValue_AddAutoComplete);
this.groupBox1.ResumeLayout(false); this.groupBox1.ResumeLayout(false);
this.ResumeLayout(false); this.ResumeLayout(false);

View File

@@ -23798,7 +23798,7 @@ BEGIN TRY -- Try Block
--then remove the link from the copy --then remove the link from the copy
--if original item was not linked, update new items to not be linked --if original item was not linked, update new items to not be linked
DECLARE @xconfig XML = (Select cast(config as xml) xconfig from Contents where ContentID = @ContentID); DECLARE @xconfig XML = (Select cast(config as xml) xconfig from Contents where ContentID = @ContentID);
IF @xconfig.exist('//Enhanced[1]') = 0 IF ISNULL(@xconfig.exist('//Enhanced[1]'),0) = 0
BEGIN BEGIN
UPDATE Contents SET Config = dbo.vefn_RemoveEnhanced(Contents.Config) UPDATE Contents SET Config = dbo.vefn_RemoveEnhanced(Contents.Config)
Where ContentID in (Select ContentID FROM vefn_ChildItems(@NewItemID)) Where ContentID in (Select ContentID FROM vefn_ChildItems(@NewItemID))
@@ -24001,6 +24001,38 @@ UPDATE [dbo].[DisplayTabTmp]
SET Active = 0 SET Active = 0
WHERE UserID = @UserID WHERE UserID = @UserID
GO GO
-- Table: DisplayTabTmp
-- If DisplayTabTmp table already exists then don't drop and recreate it
IF Not Exists(SELECT * FROM sys.objects Where name = 'DisplayTabTmp' AND type in (N'U'))
Begin
SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
-- =============================================
-- Author: Paul Larsen
-- Create date: 9/30/2024
-- Description: Table to hold tab state in PROMS editor.
-- =============================================
/****** Object: Table [dbo].[DisplayTabTmp] Script Date: 10/3/2024 11:22:00 AM ******/
CREATE TABLE [dbo].[DisplayTabTmp](
[ID] [int] IDENTITY(1,1) NOT NULL,
[ItemID] [int] NOT NULL,
[DisplayTabID] [nvarchar](100) NOT NULL,
[DisplayTabName] [nchar](100) NOT NULL,
[UpdateDate] [datetime] NOT NULL,
[UserID] [nchar](100) NOT NULL,
[Active] [bit] NOT NULL,
[taborder] [int] NOT NULL
) ON [PRIMARY]
ALTER TABLE [dbo].[DisplayTabTmp] ADD CONSTRAINT [DF_DisplayTabTmp_UpdateDate] DEFAULT (getdate()) FOR [UpdateDate]
ALTER TABLE [dbo].[DisplayTabTmp] ADD CONSTRAINT [DF_DisplayTabTmp_Active] DEFAULT ((1)) FOR [Active]
ALTER TABLE [dbo].[DisplayTabTmp] ADD DEFAULT ((0)) FOR [taborder]
End
GO
/* /*
========================================================================================================== ==========================================================================================================
End: C2017-031: SQL to allow copy/replace enhanced step End: C2017-031: SQL to allow copy/replace enhanced step
@@ -24040,8 +24072,8 @@ BEGIN TRY -- Try Block
DECLARE @RevDate varchar(255) DECLARE @RevDate varchar(255)
DECLARE @RevDescription varchar(255) DECLARE @RevDescription varchar(255)
set @RevDate = '09/26/2024 11:24' set @RevDate = '10/03/2024 11:24'
set @RevDescription = 'SQL to allow copy/replace enhanced step.' set @RevDescription = 'Add the ability for PROMS to remember the procedure tabs that were open when you closed PROMS'
Select cast(@RevDate as datetime) RevDate, @RevDescription RevDescription Select cast(@RevDate as datetime) RevDate, @RevDescription RevDescription
PRINT 'SQL Code Revision ' + @RevDate + ' - ' + @RevDescription PRINT 'SQL Code Revision ' + @RevDate + ' - ' + @RevDescription

View File

@@ -1676,23 +1676,25 @@ namespace VEPROMS
{ {
// B2018-091 Allow PROMS to close if only MSWord sections have been opened. // B2018-091 Allow PROMS to close if only MSWord sections have been opened.
// B2019-071 we will now close one or all of the tabs (even step editor ones) // B2019-071 we will now close one or all of the tabs (even step editor ones)
if (_WeAreExitingPROMS)
string DisplayTabID = "";
int pos;
int TabItemID;
string DisplayTabName = "";
int cnt = 0;
// Deactivate previous procedure tab state by user
VEPROMS.CSLA.Library.Item.DeactivateStateDisplayTabTmp(MySessionInfo.UserID);
// Save current procedure tab state
foreach (KeyValuePair<string, DisplayTabItem> pgTab in tc._MyDisplayTabItems)
{ {
cnt++; string DisplayTabID = "";
DisplayTabID = pgTab.Key; int pos;
TabItemID = Int32.Parse(DisplayTabID.Substring(DisplayTabID.IndexOf("Item - ") + 7)); int TabItemID;
DisplayTabName = pgTab.Value.ToString(); string DisplayTabName = "";
//tc.SelectedDisplayTabItem.MyStepTabPanel.ToString() int cnt = 0;
VEPROMS.CSLA.Library.Item.AddDisplayTabsState(TabItemID, DisplayTabID, DisplayTabName, MySessionInfo.UserID, cnt); // Deactivate previous procedure tab state by user
VEPROMS.CSLA.Library.Item.DeactivateStateDisplayTabTmp(MySessionInfo.UserID);
// Save current procedure tab state
foreach (KeyValuePair<string, DisplayTabItem> pgTab in tc._MyDisplayTabItems)
{
cnt++;
DisplayTabID = pgTab.Key;
TabItemID = Int32.Parse(DisplayTabID.Substring(DisplayTabID.IndexOf("Item - ") + 7));
DisplayTabName = pgTab.Value.ToString();
//tc.SelectedDisplayTabItem.MyStepTabPanel.ToString()
VEPROMS.CSLA.Library.Item.AddDisplayTabsState(TabItemID, DisplayTabID, DisplayTabName, MySessionInfo.UserID, cnt);
}
} }
int n = tc._MyDisplayTabItems.Count; int n = tc._MyDisplayTabItems.Count;

View File

@@ -1876,6 +1876,10 @@ namespace VEPROMS.CSLA.Library
if (IsCaution) enhType = 20006; if (IsCaution) enhType = 20006;
return enhType; return enhType;
} }
// B2024-075: Paste Before/After with Enhanced Documents is creating situation
//where Background item is linked to Source but Source is not linked to Background
//When Fixing the linking, need to not create a duplicate link if one already exists
public void DoCreateLinksEnhancedSingleItem(ItemInfo enhii, int enhtype) public void DoCreateLinksEnhancedSingleItem(ItemInfo enhii, int enhtype)
{ {
// Link the 2 items, srcII & enhii: // Link the 2 items, srcII & enhii:
@@ -1893,12 +1897,15 @@ namespace VEPROMS.CSLA.Library
using (Item ei = Item.Get(enhii.ItemID)) using (Item ei = Item.Get(enhii.ItemID))
{ {
StepConfig sc = enhii.MyConfig as StepConfig; StepConfig sc = enhii.MyConfig as StepConfig;
sc.AddEnhancedDocument(0, this.ItemID); if (!sc.MyEnhancedDocuments.Exists(x => x.Type == 0))
sc.SaveEnhancedDocuments(); {
ei.MyContent.Text = DisplayText; sc.AddEnhancedDocument(0, this.ItemID);
ei.MyContent.Config = sc.ToString(); sc.SaveEnhancedDocuments();
ei.Save(); ei.MyContent.Text = DisplayText;
enhii.RefreshConfig(); ei.MyContent.Config = sc.ToString();
ei.Save();
enhii.RefreshConfig();
}
} }
} }
else if (IsSection) else if (IsSection)
@@ -1916,12 +1923,15 @@ namespace VEPROMS.CSLA.Library
using (Item ei = Item.Get(enhii.ItemID)) using (Item ei = Item.Get(enhii.ItemID))
{ {
SectionConfig sc = enhii.MyConfig as SectionConfig; SectionConfig sc = enhii.MyConfig as SectionConfig;
sc.AddEnhancedDocument(0, this.ItemID); if (!sc.MyEnhancedDocuments.Exists(x => x.Type == 0))
sc.SaveEnhancedDocuments(); {
ei.MyContent.Text = DisplayText; sc.AddEnhancedDocument(0, this.ItemID);
ei.MyContent.Config = sc.ToString(); sc.SaveEnhancedDocuments();
ei.Save(); ei.MyContent.Text = DisplayText;
enhii.RefreshConfig(); ei.MyContent.Config = sc.ToString();
ei.Save();
enhii.RefreshConfig();
}
} }
} }
else if (IsProcedure) else if (IsProcedure)
@@ -1942,16 +1952,66 @@ namespace VEPROMS.CSLA.Library
using (Item ii = this.Get()) using (Item ii = this.Get())
{ {
ProcedureConfig sc = this.MyConfig as ProcedureConfig; ProcedureConfig sc = this.MyConfig as ProcedureConfig;
sc.AddEnhancedDocument(enhtype, enhii.ItemID); if (!sc.MyEnhancedDocuments.Exists(x => x.Type == 0))
sc.SaveEnhancedDocuments(); {
ii.MyContent.Config = sc.ToString(); sc.AddEnhancedDocument(enhtype, enhii.ItemID);
ii.Save(); sc.SaveEnhancedDocuments();
RefreshConfig(); ii.MyContent.Config = sc.ToString();
ii.Save();
RefreshConfig();
}
} }
} }
} }
#endregion #endregion
#region DataPortal #region DataPortal
// C2017-031: Support for paste/replace an enhanced step
private void DataPortal_Fetch(PastingPartEnhancedCriteria criteria)
{
if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] ItemInfo.DataPortal_Fetch", GetHashCode());
try
{
using (SqlConnection cn = Database.VEPROMS_SqlConnection)
{
Csla.ApplicationContext.LocalContext["cn"] = cn;
using (SqlCommand cm = cn.CreateCommand())
{
cm.CommandType = CommandType.StoredProcedure;
cm.Parameters.AddWithValue("@StartItemID", criteria.StartItemID); // copy children
cm.Parameters.AddWithValue("@ItemID", criteria.ItemID); //copy to
cm.Parameters.AddWithValue("@Type", criteria.Type);
cm.Parameters.AddWithValue("@DTS", criteria.DTS);
cm.Parameters.AddWithValue("@UserID", criteria.UserID);
SqlParameter param_ContentID = new SqlParameter("@NewItemID", SqlDbType.Int);
param_ContentID.Direction = ParameterDirection.Output;
cm.Parameters.Add(param_ContentID);
cm.CommandText = "PasteItemEnhancedReplace";
cm.CommandTimeout = Database.DefaultTimeout;
using (SafeDataReader dr = new SafeDataReader(cm.ExecuteReader()))
{
if (!dr.Read())
{
_ErrorMessage = "No Record Found";
return;
}
ReadData(dr);
}
}
// removing of item only needed for local data portal
if (Csla.ApplicationContext.ExecutionLocation == Csla.ApplicationContext.ExecutionLocations.Client)
Csla.ApplicationContext.LocalContext.Remove("cn");
}
}
catch (Exception ex)
{
if (!ex.Message.Contains("This step has been deleted") && !ex.Message.Contains("This current step has been deleted in another session"))
{
if (_MyLog.IsErrorEnabled) _MyLog.Error("ItemInfo.DataPortal_Fetch", ex);
}
_ErrorMessage = ex.Message;
throw new DbCslaException("ItemInfo.DataPortal_Fetch", ex);
}
}
private void DataPortal_Fetch(PastingPartCriteria criteria) private void DataPortal_Fetch(PastingPartCriteria criteria)
{ {
if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] ItemInfo.DataPortal_Fetch", GetHashCode()); if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] ItemInfo.DataPortal_Fetch", GetHashCode());
@@ -2073,9 +2133,72 @@ namespace VEPROMS.CSLA.Library
throw new DbCslaException("ItemInfo.DataPortal_Fetch", ex); throw new DbCslaException("ItemInfo.DataPortal_Fetch", ex);
} }
} }
#endregion
#region PastingPartEnhancedCriteria
// C2017-031: Support for paste/replace an enhanced step
[Serializable()]
public class PastingPartEnhancedCriteria
{
#region Properties
private int _StartItemID;
public int StartItemID
{
get { return _StartItemID; }
set { _StartItemID = value; }
}
private int _ItemID; // paste relative to this itemid
public int ItemID
{
get { return _ItemID; }
set { _ItemID = value; }
}
private EAddpingPart _AddType;
public EAddpingPart AddType
{
get { return _AddType; }
set { _AddType = value; }
}
private int? _FromType = null;
public int? FromType
{
get { return _FromType; }
set { _FromType = value; }
}
private int? _Type = null;
public int? Type
{
get { return _Type; }
set { _Type = value; }
}
private DateTime _DTS;
public DateTime DTS
{
get { return _DTS; }
set { _DTS = value; }
}
private string _UserID;
public string UserID
{
get { return _UserID; }
set { _UserID = value; }
}
#endregion
#region Constructor
public PastingPartEnhancedCriteria(int startItemid, int itemID, EAddpingPart addType, int? type, int? fromType, DateTime dts, string userID)
{
_StartItemID = startItemid;
_ItemID = itemID;
_AddType = addType;
_Type = type;
_FromType = fromType;
_DTS = dts;
_UserID = userID;
}
#endregion #endregion
#region PastingPartCriteria }
[Serializable()] #endregion
#region PastingPartCriteria
[Serializable()]
public class PastingPartCriteria public class PastingPartCriteria
{ {
#region Properties #region Properties
@@ -2364,6 +2487,14 @@ namespace VEPROMS.CSLA.Library
_MyPrevious = null; // Reset list so that the next line gets a new list _MyPrevious = null; // Reset list so that the next line gets a new list
if (MyPrevious != null) MyPrevious.RefreshNextItems(); // Update List for new value if (MyPrevious != null) MyPrevious.RefreshNextItems(); // Update List for new value
} }
// C2017-031: Support for paste/replace an enhanced step
internal static ItemInfo CopyPasteReplaceEnhancedItemInfoFetch(int copyStartID, ItemInfo itemInfo)
{
ItemInfo tmp = null;
tmp = DataPortal.Fetch<StepInfo>(new ItemInfo.PastingPartEnhancedCriteria(copyStartID, itemInfo.ItemID, ItemInfo.EAddpingPart.Replace, itemInfo.MyContent.Type, itemInfo.MyContent.Type, DateTime.Now, Volian.Base.Library.VlnSettings.UserID));
AddToCache(tmp);
return tmp;
}
internal static ItemInfo CopyPasteReplaceItemInfoFetch(int copyStartID, ItemInfo itemInfo) // int itemID, int? type, int? fromType) internal static ItemInfo CopyPasteReplaceItemInfoFetch(int copyStartID, ItemInfo itemInfo) // int itemID, int? type, int? fromType)
{ {
ItemInfo tmp = null; ItemInfo tmp = null;
@@ -2525,8 +2656,16 @@ namespace VEPROMS.CSLA.Library
ItemInfo newItemInfo = null; ItemInfo newItemInfo = null;
try try
{ {
newItemInfo = ItemInfo.CopyPasteReplaceItemInfoFetch(copyStartID, itemInfo); //itemInfo.ItemID, itemInfo.MyContent.Type, itemInfo.MyContent.Type); // C2017-031: Support for paste/replace an enhanced step, if this is replacing enhanced, do a specific query
if (newItemInfo == null) return null; if (itemInfo.IsEnhancedStep)
{
newItemInfo = ItemInfo.CopyPasteReplaceEnhancedItemInfoFetch(copyStartID, itemInfo);
if (newItemInfo == null) return null;
}
else
{
newItemInfo = ItemInfo.CopyPasteReplaceItemInfoFetch(copyStartID, itemInfo); if (newItemInfo == null) return null;
}
} }
catch (Exception ex1) catch (Exception ex1)
{ {

View File

@@ -16,12 +16,6 @@ namespace Volian.Controls.Library
public delegate ItemInfo DisplayTabControlEditorSearchIncTransEvent(object sender, vlnTreeItemInfoEventArgs args); public delegate ItemInfo DisplayTabControlEditorSearchIncTransEvent(object sender, vlnTreeItemInfoEventArgs args);
public delegate void DisplayTabControlEvent(object sender, EventArgs args); public delegate void DisplayTabControlEvent(object sender, EventArgs args);
public delegate void DisplayTabControlStatusEvent(object sender, DisplayTabControlStatusEventArgs args); public delegate void DisplayTabControlStatusEvent(object sender, DisplayTabControlStatusEventArgs args);
public class DisplayTabData
{
public int ItemID { get; set; }
public string DisplayTabID { get; set; }
public string DisplayTabName { get; set; }
}
public partial class DisplayTabControlStatusEventArgs : EventArgs public partial class DisplayTabControlStatusEventArgs : EventArgs
{ {
private VolianStatusType _Type; private VolianStatusType _Type;
@@ -1151,9 +1145,6 @@ namespace Volian.Controls.Library
} }
else // If not already open, create a new Page else // If not already open, create a new Page
{ {
List<DisplayTabData> DisplayTabs = new List<DisplayTabData>();
pg = new DisplayTabItem(this.components, this, proc, key); // Open a new Procedure Tab pg = new DisplayTabItem(this.components, this, proc, key); // Open a new Procedure Tab
_MyDisplayTabItems.Add(key, pg); _MyDisplayTabItems.Add(key, pg);
if (setFocus) if (setFocus)

View File

@@ -9,6 +9,7 @@ using System.Text.RegularExpressions;
using VEPROMS.CSLA.Library; using VEPROMS.CSLA.Library;
using Volian.Base.Library; using Volian.Base.Library;
using JR.Utils.GUI.Forms; using JR.Utils.GUI.Forms;
using System.Linq;
namespace Volian.Controls.Library namespace Volian.Controls.Library
{ {
@@ -893,6 +894,18 @@ namespace Volian.Controls.Library
b4topadjust -= newFocus.Top; b4topadjust -= newFocus.Top;
TopMostYBefore -= b4topadjust; TopMostYBefore -= b4topadjust;
//B2024-075: If Deleting an item in a Source Document that is unlinked
//and the overall procedure has connected Background Documents
//and a window is open containing the background documents
//then need to force a refresh on that window as
//step numbering will shift
EnhancedDocuments ProcEnh = MyItemInfo.MyProcedure.GetMyEnhancedDocuments();
if (ProcEnh.Count > 0)
{
DisplayTabItem wndowToRefresh = MyStepPanel.MyStepTabPanel.MyDisplayTabControl.MyBar.Items.Cast<DisplayTabItem>().FirstOrDefault(x => x.MyKey == $"Item - {ProcEnh[0].ItemID}");
wndowToRefresh?.MyStepTabPanel.MyStepPanel.Reset(wndowToRefresh.MyItemInfo);
}
//_MyTimer.ActiveProcess = "Dispose"; //_MyTimer.ActiveProcess = "Dispose";
Dispose(); Dispose();
//_MyTimer.ActiveProcess = "SetAllTabs"; //_MyTimer.ActiveProcess = "SetAllTabs";
@@ -1634,10 +1647,54 @@ namespace Volian.Controls.Library
MyStepPanel.MyStepTabPanel.MyDisplayTabControl.OnItemPaste(this, new vlnTreeItemInfoPasteEventArgs(newItemInfo, copyStartID, ItemInfo.EAddpingPart.Before, newItemInfo.MyContent.Type)); MyStepPanel.MyStepTabPanel.MyDisplayTabControl.OnItemPaste(this, new vlnTreeItemInfoPasteEventArgs(newItemInfo, copyStartID, ItemInfo.EAddpingPart.Before, newItemInfo.MyContent.Type));
// MyItemInfo is the 'paste from' item, if it has enhanced need to copy and paste the steps in enhanced. // MyItemInfo is the 'paste from' item, if it has enhanced need to copy and paste the steps in enhanced.
ItemInfo newEnh = newItemInfo.EnhancedPasteItem(copyStartID, MyItemInfo, ItemInfo.EAddpingPart.Before, GetChangeId(MyItemInfo)); //if doing a paste before/after and item being copied is unlinked, item pasted should also be unlinked.
ItemInfo tmpCopyStartSourceItem = ItemInfo.Get(copyStartID);
ItemInfo newEnh = null;
if (tmpCopyStartSourceItem.GetMyEnhancedDocuments().Count > 0)
{
newEnh = newItemInfo.EnhancedPasteItem(copyStartID, MyItemInfo, ItemInfo.EAddpingPart.Before, GetChangeId(MyItemInfo));
}
//B2024-075: When doing Paste Before / After with Enhanced Documents only link from Background document to source was created
//since source is done first
//this is so that after the steps are created in the enhanced, go back and update the link in the source to point to the correct item
if (newEditItem != null && newEnh != null)
{
FixEnhanceLinkOnSource(newEditItem.MyItemInfo, newEnh, MyItemInfo.GetMyEnhancedDocuments());
}
else if (newEnh == null && newEditItem != null && newEditItem.MyItemInfo.IsEnhancedStep)
{
UnlinkEnhanced(newEditItem);
}
else if (newEnh == null && newEditItem != null)
{
//if did a paste before/after in a source document that contains enhanced steps
//but step being pasted was non-enhanced (unlinked)
//then look to see if the background page is open
//and if it is, do a refresh so that step numbers update appropriately
//without having to close and re-open the background steps
foreach (EnhancedDocument edSource in MyItemInfo.GetMyEnhancedDocuments())
{
ItemInfo exEnh = ItemInfo.Get(edSource.ItemID);
DisplayTabItem wndowToRefresh = newEditItem.MyStepPanel.MyStepTabPanel.MyDisplayTabControl.MyBar.Items.Cast<DisplayTabItem>().FirstOrDefault(x => x.MyKey == $"Item - {exEnh.MyProcedure.ItemID}");
wndowToRefresh?.MyStepTabPanel.MyStepPanel.Reset(wndowToRefresh.MyItemInfo);
}
}
// if enhanced items were created, then see if they need displayed: // if enhanced items were created, then see if they need displayed:
if (newEnh != null) AddAllEnhancedItemsToDisplay(newItemInfo); if (newEnh != null) AddAllEnhancedItemsToDisplay(newItemInfo);
} }
//B2024-075: When doing Paste Before / After with Enhanced Documents only link from Background document to source was created
//since source is done first
//this is so that after the steps are created in the enhanced, go back and update the link in the source to point to the correct item
//if enhanced document wasn't created then paste happened inside a enhanced Step/background step - so remove any links that shouldn't be there
//and don't have a corresponding spot in the Source
private void FixEnhanceLinkOnSource(ItemInfo SourceItem, ItemInfo newEnhItem, EnhancedDocuments enhancedDocuments)
{
if (enhancedDocuments.Count > 0)
CreateLinksEnhancedSingleItem(SourceItem, newEnhItem, enhancedDocuments[0].Type);
}
private void AddAllEnhancedItemsToDisplay(ItemInfo newItemInfo) private void AddAllEnhancedItemsToDisplay(ItemInfo newItemInfo)
{ {
EnhancedDocuments eds = newItemInfo.GetMyEnhancedDocuments(); EnhancedDocuments eds = newItemInfo.GetMyEnhancedDocuments();
@@ -1684,12 +1741,15 @@ namespace Volian.Controls.Library
} }
} }
} }
public void UnlinkEnhanced(ItemInfo enhII) public void UnlinkEnhanced(EditItem enhII)
{ {
// B2022-049: Copy/paste of enhanced procedure and bad links between source and enhanced // B2022-049: Copy/paste of enhanced procedure and bad links between source and enhanced
// Pass in to unlink as before this change // Pass in to unlink as before this change
enhII.DoUnlinkEnhanced(enhII, 0, false); // B2024 - 075: Change made to pass in an EditTem instead of a ItemInfo
//so can refresh the UI
enhII.MyItemInfo.DoUnlinkEnhanced(enhII.MyItemInfo, 0, false);
SetFocus(); SetFocus();
enhII.MyStepPanel.Reset(enhII.MyItemInfo); //need to reset parts so refreshes display to show as unlinked
} }
public ItemInfo AddMissingEnhancedStep(ItemInfo ii, int EnhType) public ItemInfo AddMissingEnhancedStep(ItemInfo ii, int EnhType)
{ {
@@ -1753,7 +1813,42 @@ namespace Volian.Controls.Library
MyStepPanel.MyStepTabPanel.MyDisplayTabControl.OnItemPaste(this, new vlnTreeItemInfoPasteEventArgs(newItemInfo, copyStartID, ItemInfo.EAddpingPart.After, newItemInfo.MyContent.Type)); MyStepPanel.MyStepTabPanel.MyDisplayTabControl.OnItemPaste(this, new vlnTreeItemInfoPasteEventArgs(newItemInfo, copyStartID, ItemInfo.EAddpingPart.After, newItemInfo.MyContent.Type));
// MyItemInfo is the 'paste from' item, if it has enhanced need to copy and paste the steps in enhanced. // MyItemInfo is the 'paste from' item, if it has enhanced need to copy and paste the steps in enhanced.
ItemInfo newEnh = newItemInfo.EnhancedPasteItem(copyStartID, MyItemInfo, ItemInfo.EAddpingPart.After, GetChangeId(MyItemInfo)); //if doing a paste before/after and item being copied is unlinked, item pasted should also be unlinked.
ItemInfo tmpCopyStartSourceItem = ItemInfo.Get(copyStartID);
ItemInfo newEnh = null;
if (tmpCopyStartSourceItem.GetMyEnhancedDocuments().Count > 0)
{
newEnh = newItemInfo.EnhancedPasteItem(copyStartID, MyItemInfo, ItemInfo.EAddpingPart.After, GetChangeId(MyItemInfo));
}
//B2024-075: When doing Paste Before / After with Enhanced Documents only link from Background document to source was created
//since source is done first
//this is so that after the steps are created in the enhanced, go back and update the link in the source to point to the correct item
//if enhanced document wasn't created then paste happened inside a enhanced Step/background step - so remove any links that shouldn't be there
//and don't have a cooresponding spot in the Source
if (newEditItem != null && newEnh != null)
{
FixEnhanceLinkOnSource(newEditItem.MyItemInfo, newEnh, MyItemInfo.GetMyEnhancedDocuments());
}
else if (newEnh == null && newEditItem != null && newEditItem.MyItemInfo.IsEnhancedStep)
{
UnlinkEnhanced(newEditItem);
}
else if (newEnh == null && newEditItem != null)
{
//if did a paste before/after in a source document that contains enhanced steps
//but step being pasted was non-enhanced (unlinked)
//then look to see if the background page is open
//and if it is, do a refresh so that step numbers update appropriately
//without having to close and re-open the background steps
foreach (EnhancedDocument edSource in MyItemInfo.GetMyEnhancedDocuments())
{
ItemInfo exEnh = ItemInfo.Get(edSource.ItemID);
DisplayTabItem wndowToRefresh = newEditItem.MyStepPanel.MyStepTabPanel.MyDisplayTabControl.MyBar.Items.Cast<DisplayTabItem>().FirstOrDefault(x => x.MyKey == $"Item - {exEnh.MyProcedure.ItemID}");
wndowToRefresh?.MyStepTabPanel.MyStepPanel.Reset(wndowToRefresh.MyItemInfo);
}
}
if (newEnh != null) AddAllEnhancedItemsToDisplay(newItemInfo); if (newEnh != null) AddAllEnhancedItemsToDisplay(newItemInfo);
} }
public void PasteChild(int copyStartID) public void PasteChild(int copyStartID)
@@ -1944,7 +2039,8 @@ namespace Volian.Controls.Library
sia.IdentifyChildren(highlight); sia.IdentifyChildren(highlight);
} }
} }
if (MyBeforeEditItems != null) // C2017-031: Support for paste/replace an enhanced step: don't identify/copy before items, i.e. notes/cautions
if (MyBeforeEditItems != null && !MyItemInfo.IsEnhancedStep)
{ {
foreach (EditItem sib in MyBeforeEditItems) foreach (EditItem sib in MyBeforeEditItems)
{ {

Binary file not shown.

View File

@@ -1231,7 +1231,7 @@ namespace Volian.Controls.Library
} }
public ItemSelectedChangedEventArgs(EditItem myEditItem) public ItemSelectedChangedEventArgs(EditItem myEditItem)
{ {
_MyItemInfo = myEditItem.MyItemInfo; _MyItemInfo = myEditItem?.MyItemInfo;
_MyEditItem = myEditItem; _MyEditItem = myEditItem;
} }
} }

View File

@@ -485,6 +485,8 @@ namespace Volian.Controls.Library
public void RefreshDisplay(bool activeMode) public void RefreshDisplay(bool activeMode)
{ {
if (IsExperimenting) return; if (IsExperimenting) return;
if (IsDisposed) return;
ActiveMode = activeMode; ActiveMode = activeMode;
OnAdjustTableWidth(this, new StepRTBTableWidthEventArgs(true)); OnAdjustTableWidth(this, new StepRTBTableWidthEventArgs(true));
//Volian.Base.Library.HWndCounter.GetWindowHandlesForCurrentProcess(this.Handle, "RefreshDisplay 2"); //Volian.Base.Library.HWndCounter.GetWindowHandlesForCurrentProcess(this.Handle, "RefreshDisplay 2");

View File

@@ -337,8 +337,10 @@ namespace Volian.Controls.Library
else if (btn.Name.Contains("Unlink")) else if (btn.Name.Contains("Unlink"))
{ {
// C2019=003: add a confirmation dialog before unlinking a step: // C2019=003: add a confirmation dialog before unlinking a step:
// B2024 - 075: Change made to pass in an EditTem instead of a ItemInfo
//so can refresh the UI
if (FlexibleMessageBox.Show(this, "Do you want to unlink this step?", "Confirm Enhanced Step Unlink", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) if (FlexibleMessageBox.Show(this, "Do you want to unlink this step?", "Confirm Enhanced Step Unlink", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
MyEditItem.UnlinkEnhanced(MyEditItem.MyItemInfo); MyEditItem.UnlinkEnhanced(MyEditItem);
} }
} }
else else
@@ -1750,7 +1752,7 @@ namespace Volian.Controls.Library
// note in follow if statements, 'setting' == false when in enhanced document: // note in follow if statements, 'setting' == false when in enhanced document:
if (setting && MyItemInfo.IsStep && (eds == null || eds.Count == 0)) // this step is in enhanced, but not linked // B2018-112 and is allowed to edit if (setting && MyItemInfo.IsStep && (eds == null || eds.Count == 0)) // this step is in enhanced, but not linked // B2018-112 and is allowed to edit
allowDel = true; // allow delete if not linked allowDel = true; // allow delete if not linked
btnCpyStp.Enabled = setting; btnCpyStp.Enabled = MyUserInfo.IsAllowedToEdit(Mydvi); // C2017-031: Support for paste/replace an enhanced step
//B20170-158 Allow a Unlinked Step to be pasted before or after a linked step. //B20170-158 Allow a Unlinked Step to be pasted before or after a linked step.
StepTabPanel tmp = Parent as StepTabPanel; StepTabPanel tmp = Parent as StepTabPanel;
//B2020-058: crash on null reference //B2020-058: crash on null reference
@@ -1801,7 +1803,8 @@ namespace Volian.Controls.Library
btnPasteAfter.Enabled = btnCMPasteAfter.Enabled = enable; btnPasteAfter.Enabled = btnCMPasteAfter.Enabled = enable;
//B20170-158 Don't allow a step to replace a linked step //B20170-158 Don't allow a step to replace a linked step
//B2017-180: The fix for B2017-158 also needed the 'HasEnhancedLinkedStep' to check if the copied step is a source step //B2017-180: The fix for B2017-158 also needed the 'HasEnhancedLinkedStep' to check if the copied step is a source step
btnPasteReplace.Enabled = btnCMPasteReplace.Enabled = enable && !MyItemInfo.IsEnhancedStep && !MyItemInfo.HasEnhancedLinkedStep; // C2017-031: Support for paste/replace an enhanced step, enable button
btnPasteReplace.Enabled = btnCMPasteReplace.Enabled = enable && ((!MyItemInfo.IsEnhancedStep && !MyItemInfo.HasEnhancedLinkedStep) || (MyItemInfo.IsEnhancedStep));
} }
private void SetPasteButtonEnabled() private void SetPasteButtonEnabled()
{ {
@@ -4110,9 +4113,19 @@ namespace Volian.Controls.Library
// F2021-009 display a message if pasting step will results in more sub-step levels than are defined in the format // F2021-009 display a message if pasting step will results in more sub-step levels than are defined in the format
ItemInfo.PasteStepIsWithinDefinedSubStepLevels(tmp.MyDisplayTabControl.MyCopyStep.ItemID, MyItemInfo, true); ItemInfo.PasteStepIsWithinDefinedSubStepLevels(tmp.MyDisplayTabControl.MyCopyStep.ItemID, MyItemInfo, true);
EditItem oldEditItem = MyEditItem; EditItem oldEditItem = MyEditItem;
// C2017-031: Support for paste/replace an enhanced step, if pasting an enhanced, remove its EditItem from the 'cache'. A new EditItem gets created during paste.
if (MyEditItem != null && MyEditItem.MyItemInfo.IsEnhancedStep) MyEditItem.MyStepPanel._LookupEditItems.Remove(MyEditItem.MyItemInfo.ItemID);
MyEditItem = MyEditItem.PasteReplace(tmp.MyDisplayTabControl.MyCopyStep.ItemID); MyEditItem = MyEditItem.PasteReplace(tmp.MyDisplayTabControl.MyCopyStep.ItemID);
if (MyEditItem == null) oldEditItem.IdentifyMe(false); // B2017-179 if null then we didn't do the replace but did position to the first transition that needs resolved if (MyEditItem == null) oldEditItem.IdentifyMe(false); // B2017-179 if null then we didn't do the replace but did position to the first transition that needs resolved
if (MyEditItem != null && MyEditItem.MyItemInfo.ItemID != oldEditItem.MyItemInfo.ItemID) oldEditItem.Dispose(); // C2017-031: Support for paste/replace an enhanced step, add Dispose of old EditItem if enhanced
if (MyEditItem != null && ((MyEditItem.MyItemInfo.ItemID != oldEditItem.MyItemInfo.ItemID) || MyEditItem.MyItemInfo.IsEnhancedStep))
oldEditItem.Dispose();
// C2017-031: Support for paste/replace an enhanced step, refresh ItemInfo's in user interface caches.
if (MyEditItem.MyItemInfo.IsEnhancedStep)
{
MyEditItem.MyItemInfo = ItemInfo.Get(MyEditItem.MyItemInfo.ItemID);
tmp.MyStepPanel.SelectedItemInfo = ItemInfo.Get(MyEditItem.MyItemInfo.ItemID);
}
} }
private void btnPdfCreate_Click(object sender, EventArgs e) private void btnPdfCreate_Click(object sender, EventArgs e)