Compare commits
88
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1a890b11cb | ||
|
|
795f21f04b | ||
|
|
c95e86c2a6 | ||
|
|
18d2aa3b51 | ||
|
|
7ba3ea8b13 | ||
|
|
30b34c3a50 | ||
|
|
6a42800d2c | ||
|
|
70f132540f | ||
|
|
cd9eaaaba1 | ||
|
|
70aa1f4024 | ||
|
|
1d634d96fe | ||
|
|
4eb5254d96 | ||
|
|
6c2eee0cbc | ||
|
|
3c5265cecf | ||
|
|
478d35890d | ||
|
|
1b9b63412c | ||
|
|
3bb8fff3a1 | ||
|
|
694bc0ead4 | ||
|
|
cfc324d31e | ||
|
|
43b63e2843 | ||
|
|
f2ec510a70 | ||
|
|
453edbb28e | ||
|
|
bc9407f52f | ||
|
|
954cc5918f | ||
|
|
4ef16e7856 | ||
|
|
1eb3c3e725 | ||
|
|
a89c2d3d22 | ||
|
|
914837a5a2 | ||
|
|
9643a71ba5 | ||
|
|
aa7e0528f8 | ||
|
|
57bd8d569e | ||
|
|
b49d8871a2 | ||
|
|
b90d419bc5 | ||
|
|
1f48d498e1 | ||
|
|
da6139c932 | ||
|
|
be744b40a3 | ||
|
|
780ce657ca | ||
|
|
464be0f803 | ||
|
|
58a6cb9a24 | ||
|
|
9bf7b2ffde | ||
|
|
cde1f28215 | ||
|
|
db198cb7d0 | ||
|
|
99fe567e78 | ||
|
|
2261c8f0f5 | ||
|
|
f93b16fc52 | ||
|
|
7c3a43749c | ||
|
|
ecec7b9f1a | ||
|
|
1aca7335f7 | ||
|
|
ba5aee6640 | ||
|
|
abaf55e9b1 | ||
|
|
3a2dd0b0aa | ||
|
|
0fed1acfd8 | ||
|
|
d7c2300021 | ||
|
|
fca333299d | ||
|
|
a13b03a136 | ||
|
|
48054f5bf1 | ||
|
|
51f2897a33 | ||
|
|
7a3a07b0da | ||
|
|
7c3cfca86c | ||
|
|
352af15984 | ||
|
|
2c42933d58 | ||
|
|
2e68362836 | ||
|
|
c6736db7ea | ||
|
|
c005f03af8 | ||
|
|
459aabcc86 | ||
|
|
ad33097d5e | ||
|
|
8d7735735e | ||
|
|
25bbc46925 | ||
|
|
5a26b0ee35 | ||
|
|
09a397bed2 | ||
|
|
a33039bcae | ||
|
|
0ebd125266 | ||
|
|
fd16a6b6c3 | ||
|
|
cf19f764c7 | ||
|
|
88850d6c25 | ||
|
|
b173c61575 | ||
|
|
3b866f0952 | ||
|
|
94db524a11 | ||
|
|
f27616ce1f | ||
|
|
7f75af7119 | ||
|
|
05ab48cdc5 | ||
|
|
38e42723af | ||
|
|
f4ec60c9e0 | ||
|
|
fd51c209a3 | ||
|
|
01394b1978 | ||
|
|
9b7db08fcf | ||
|
|
6d7cdef223 | ||
|
|
d9c35fe02a |
@@ -402,3 +402,4 @@ FodyWeavers.xsd
|
||||
/fmtall
|
||||
/genmacall
|
||||
*AssemblyInfo.cs
|
||||
/PROMS/Baseline/Baseline.sln
|
||||
|
||||
@@ -503,7 +503,7 @@ namespace Baseline
|
||||
string[] fileList = Directory.GetFiles(fi.DirectoryName, patern);
|
||||
// sort the list of file list
|
||||
Array.Sort((string[])fileList);
|
||||
return fileList.First(); // the PDF file that we what should be top of the list then.
|
||||
return fileList.FirstOrDefault(); // the PDF file that we what should be top of the list then.
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -179,6 +179,7 @@
|
||||
<Content Include="fmtall\CPL_00all.xml" />
|
||||
<Content Include="fmtall\CPL_01all.xml" />
|
||||
<Content Include="fmtall\CPL_02all.xml" />
|
||||
<Content Include="fmtall\CPL_04all.xml" />
|
||||
<Content Include="fmtall\CPL_03all.xml" />
|
||||
<Content Include="fmtall\CPSAMGDataall.xml" />
|
||||
<Content Include="fmtall\CPSAMGDEVall.xml" />
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1817,7 +1817,7 @@ ALTER trigger [dbo].[tr_Contents_Delete] on [dbo].[Contents] instead of delete a
|
||||
select ii.ContentID,ii.Number,ii.Text,ii.Type,ii.FormatID,ii.Config,ii.DTS,ii.UserID,ii.DeleteStatus,ii.ActionDTS
|
||||
from tblContents ii inner join deleted dd on dd.ContentID = ii.ContentID
|
||||
where ii.DeleteStatus > 0
|
||||
update ga set ga.contentauditid = (select max(auditid) from contentaudits where contentid = ga.contentid and deletestatus = ga.deletestatus)
|
||||
update ga set ga.contentauditid = (select ISNULL(max(auditid),0) from contentaudits where contentid = ga.contentid and deletestatus = ga.deletestatus)
|
||||
from gridaudits ga join deleted dd on ga.contentid = dd.contentid where ga.contentauditid = 0
|
||||
end
|
||||
go
|
||||
|
||||
@@ -5547,6 +5547,12 @@ ELSE PRINT 'Function: ve_GetItemDerivedApplicability Error on Creation'
|
||||
GO
|
||||
|
||||
-------
|
||||
|
||||
-- =============================================
|
||||
-- Author: Matthew Schill
|
||||
-- Modify date: 07/14/2026
|
||||
-- Description: Reworked ve_GetParentItem for Performance improvement
|
||||
-- =============================================
|
||||
/****** Object: UserDefinedFunction [dbo].[vefn_GetParentItem] Script Date: 03/28/2012 17:58:48 ******/
|
||||
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[ve_GetParentItem]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1)
|
||||
DROP FUNCTION [ve_GetParentItem];
|
||||
@@ -5555,35 +5561,46 @@ GO
|
||||
Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
|
||||
Copyright 2012 - Volian Enterprises, Inc. All rights reserved.
|
||||
*****************************************************************************/
|
||||
CREATE FUNCTION [dbo].[ve_GetParentItem] (@ItemID int) RETURNS int
|
||||
CREATE OR ALTER FUNCTION [dbo].[ve_GetParentItem] (@ItemID int) RETURNS int
|
||||
WITH EXECUTE AS OWNER
|
||||
AS
|
||||
BEGIN
|
||||
DECLARE @ParentID int;
|
||||
WITH Itemz([ItemID],[IsFound]) as
|
||||
WITH Itemz([ItemID]) as
|
||||
(
|
||||
select ii.itemid,0 from items ii where ii.itemid = @ItemID
|
||||
select ii.itemid from items ii WITH (NOLOCK) where ii.itemid = @ItemID
|
||||
union all
|
||||
select ii.previousid,0 from items ii
|
||||
select ii.previousid from items ii WITH (NOLOCK)
|
||||
join itemz zz on ii.itemid = zz.itemid
|
||||
where ii.previousid is not null
|
||||
and zz.isfound = 0
|
||||
union all
|
||||
select ii.itemid,1
|
||||
from parts pp
|
||||
join itemz zz on pp.itemid = zz.itemid
|
||||
join items ii on ii.contentid = pp.contentid
|
||||
)
|
||||
select top 1 @ParentID = itemid from itemz
|
||||
where isfound = 1 OPTION (MAXRECURSION 10000)
|
||||
select top 1 @ParentID = ii.itemid
|
||||
from itemz
|
||||
inner join parts pp WITH (NOLOCK) on pp.itemid = itemz.itemid
|
||||
inner join items ii WITH (NOLOCK) on ii.contentid = pp.contentid
|
||||
OPTION (MAXRECURSION 10000)
|
||||
|
||||
RETURN @ParentID
|
||||
END
|
||||
|
||||
GO
|
||||
|
||||
IF (@@Error = 0) PRINT 'ScalerFunction [vefn_GetParentItem] Succeeded'
|
||||
ELSE PRINT 'ScalerFunction [vefn_GetParentItem] Error on Creation'
|
||||
go
|
||||
|
||||
IF EXISTS (SELECT * FROM dbo.sysIndexes WHERE name like 'IX_PartsItemID')
|
||||
DROP INDEX [IX_PartsItemID] ON [dbo].[tblParts];
|
||||
GO
|
||||
|
||||
CREATE NONCLUSTERED INDEX IX_PartsItemID
|
||||
ON [dbo].[tblParts] ([ItemID] ASC)
|
||||
INCLUDE([ContentID],[DeleteStatus],[FromType]) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
|
||||
GO
|
||||
|
||||
PRINT 'Added IX_PartsItemID Index. Speeds up Getting Parent Items'
|
||||
GO
|
||||
|
||||
/****** Object: UserDefinedFunction [dbo].[vefn_CanTransitionBeCreated] Script Date: 10/14/2012 02:03:30 ******/
|
||||
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_CanTransitionBeCreated]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1)
|
||||
DROP FUNCTION [vefn_CanTransitionBeCreated];
|
||||
@@ -24990,6 +25007,34 @@ IF (@@Error = 0) PRINT 'Procedure Creation: getRevisionByItemIDandRevisionNumber
|
||||
ELSE PRINT 'Procedure Creation: getRevisionByItemIDandRevisionNumber Error on Creation'
|
||||
GO
|
||||
|
||||
/*
|
||||
==========================================================================================================
|
||||
Author: Matthew Schill
|
||||
Create Date: 06/29/2026
|
||||
Description: Added an ISNULL check when setting GridAudits.contentauditid.
|
||||
Was Causing Deletion of some Grids to fail.
|
||||
==========================================================================================================
|
||||
*/
|
||||
/****** Object: Trigger [tr_Contents_Delete] ******/
|
||||
ALTER trigger [dbo].[tr_Contents_Delete] on [dbo].[Contents] instead of delete as
|
||||
begin
|
||||
update ii set DeleteStatus = (select max(DeleteID) from DeleteLog where SPID = @@spid), ActionDTS = getdate(),
|
||||
UserID = (select top 1 UserID from DeleteLog where SPID = @@spid order by deleteid desc)
|
||||
from tblContents ii inner join deleted dd on dd.ContentID = ii.ContentID
|
||||
insert into ContentAudits(ContentID,Number,Text,Type,FormatID,Config,DTS,UserID,DeleteStatus,ActionDTS)
|
||||
select ii.ContentID,ii.Number,ii.Text,ii.Type,ii.FormatID,ii.Config,ii.DTS,ii.UserID,ii.DeleteStatus,ii.ActionDTS
|
||||
from tblContents ii inner join deleted dd on dd.ContentID = ii.ContentID
|
||||
where ii.DeleteStatus > 0
|
||||
update ga set ga.contentauditid = (select ISNULL(max(auditid),0) from contentaudits where contentid = ga.contentid and deletestatus = ga.deletestatus)
|
||||
from gridaudits ga join deleted dd on ga.contentid = dd.contentid where ga.contentauditid = 0
|
||||
end
|
||||
go
|
||||
|
||||
-- Display the status of Trigger alter
|
||||
IF (@@Error = 0) PRINT 'Trigger Alteration: tr_Contents_Delete Succeeded'
|
||||
ELSE PRINT 'Trigger Alteration: tr_Contents_Delete Error on Creation'
|
||||
GO
|
||||
|
||||
/*
|
||||
---------------------------------------------------------------------------
|
||||
| ADD New Code Before this Block |
|
||||
@@ -25023,8 +25068,8 @@ BEGIN TRY -- Try Block
|
||||
DECLARE @RevDate varchar(255)
|
||||
DECLARE @RevDescription varchar(255)
|
||||
|
||||
set @RevDate = '05/26/2026 7:00 AM'
|
||||
set @RevDescription = 'Get Most Recent Revision when Duplicates'
|
||||
set @RevDate = '07/16/2026 8:30 AM'
|
||||
set @RevDescription = 'Reworked ve_GetParentItem for Performance improvement'
|
||||
|
||||
Select cast(@RevDate as datetime) RevDate, @RevDescription RevDescription
|
||||
PRINT 'SQL Code Revision ' + @RevDate + ' - ' + @RevDescription
|
||||
|
||||
@@ -67,6 +67,7 @@ namespace VEPROMS
|
||||
MyFrmVEPROMS = myFrmVEPROMS;// Save frmVEPROMS for Import to shutoff SessionPing
|
||||
_MyApproval = new ApprovalInfo(myFrmVEPROMS);// Save frmVEPROMS for Import to shutoff SessionPing
|
||||
ApplicabilityIndex = myDocVersion.DocVersionConfig.SelectedSlave;
|
||||
_MyApproval.SavedSlave = ApplicabilityIndex;
|
||||
this.ConsistencyPrintRequest -= new DisplayConsistencyReportEvent(dlgApproveProcedure_ConsistencyPrintRequest);
|
||||
this.ConsistencyPrintRequest += new DisplayConsistencyReportEvent(dlgApproveProcedure_ConsistencyPrintRequest);
|
||||
_MyDocVersion = myDocVersion;
|
||||
@@ -292,6 +293,7 @@ namespace VEPROMS
|
||||
expAddProcConChk.Expanded = true;
|
||||
_initializing = true;
|
||||
ApplicabilityIndex = myDocVersion.DocVersionConfig.SelectedSlave;
|
||||
_MyApproval.SavedSlave = ApplicabilityIndex;
|
||||
InitializePanelApprove();
|
||||
InitializePanelSelect();
|
||||
_initializing = false;
|
||||
@@ -306,6 +308,7 @@ namespace VEPROMS
|
||||
_MyDocVersion = myProcedure.MyDocVersion;
|
||||
_MyDocVersion.ResetProcedures(); // B2021-035: Pasted, modified number and deleted procedures not refreshed so missing from list
|
||||
ApplicabilityIndex = _MyDocVersion.DocVersionConfig.SelectedSlave; // B2022-033 set the child being approved or workflow so other procedure list can populate
|
||||
_MyApproval.SavedSlave = ApplicabilityIndex;
|
||||
InitializeComponent();
|
||||
FlexGridAddEvents();
|
||||
SetupComboBoxes();
|
||||
@@ -914,6 +917,11 @@ namespace VEPROMS
|
||||
get { return _MyProcedures; }
|
||||
//set { _MyProcedures = value; }
|
||||
}
|
||||
|
||||
//B2026-058 - If approving multiple procedures at the same time with a multiunit set and one of the procedures is open, PROMS sometimes loses that it is set for an individual unit.
|
||||
// this will save the SectedSlave in case a refresh causes it to get lost
|
||||
public int SavedSlave { get; set; } = 0;
|
||||
|
||||
public ApprovalInfo(frmVEPROMS myFrmVEPROMS)
|
||||
{
|
||||
MyFrmVEPROMS = myFrmVEPROMS;// Save frmVEPROMS for Import to shutoff SessionPing
|
||||
@@ -1173,9 +1181,14 @@ namespace VEPROMS
|
||||
string pdfPath = string.Format(@"{0}\{1}", VlnSettings.TemporaryFolder, pdfTmp);
|
||||
if (!TryToDelete(summaryPDF, "Change Summary")) break;
|
||||
if (!TryToDelete(pdfPath,revisionStage)) break;
|
||||
if (SavedSlave > 0 && ap.ProcInfo.MyDocVersion.DocVersionConfig.SelectedSlave < 1)
|
||||
{
|
||||
//B2026-058 - If approving multiple procedures at the same time with a multiunit set and one of the procedures is open, PROMS sometimes loses that it is set for an individual unit.
|
||||
ap.ProcInfo.MyDocVersion.DocVersionConfig.SelectedSlave = SavedSlave;
|
||||
}
|
||||
procsApproved.Add(ap.ProcInfo.DisplayNumber + " " + ap.ProcInfo.DisplayText);
|
||||
RevisionInfo ric = pi.MyDocVersion.DocVersionConfig.SelectedSlave > 0 ? RevisionInfo.GetCurrentByItemIDandUnitID(pi.ItemID, pi.MyDocVersion.DocVersionConfig.SelectedSlave) : RevisionInfo.GetCurrentByItemID(pi.ItemID);
|
||||
// RevisionInfo rip = RevisionInfo.GetPreviousByItemID(pi.ItemID);
|
||||
// RevisionInfo rip = RevisionInfo.GetPreviousByItemID(pi.ItemID);
|
||||
DateTime myDTS = pi.DTS; // pi.DTS is date of last approval
|
||||
string cbDTS = (pi.MyConfig as ProcedureConfig).Print_ChangeBarDate;
|
||||
// pi.DTS was the field that was used to store the approval date before master/slave code was added. Use ChangeBarDate if it is set - this is set either manually if no approval date (from treeview menu) or
|
||||
|
||||
@@ -2148,7 +2148,7 @@ namespace VEPROMS
|
||||
//C2019-036 View Only mode work with Checked Out Procedures
|
||||
// View Only Mode is no longer checked out, so no longer has an OwnerID
|
||||
// This will keep those tabs from auto-closing based on the timer
|
||||
if (!myList.Contains(dti.OwnerID) && dti.MyStepTabPanel.MyStepPanel.VwMode != E_ViewMode.View)
|
||||
if (!myList.Contains(dti.OwnerID) && dti?.MyStepTabPanel?.MyStepPanel?.VwMode != E_ViewMode.View)
|
||||
{
|
||||
MyCloseTabList.PushDTI(dti);
|
||||
}
|
||||
@@ -3578,6 +3578,7 @@ namespace VEPROMS
|
||||
{
|
||||
if (parameter.StartsWith("/P="))
|
||||
{
|
||||
BaseLnSettings.blBaseLine = true;
|
||||
MSWordToPDF.Automatic = true;
|
||||
PromsPrinter.BaselineTesting = true;// Set Baseline Testing property for PROMsPrinter
|
||||
string[] dvstrs = parameter.Substring(3).Split(",".ToCharArray());
|
||||
@@ -3623,7 +3624,7 @@ namespace VEPROMS
|
||||
}
|
||||
ranAuto = true;
|
||||
}
|
||||
|
||||
BaseLnSettings.blBaseLine = false;
|
||||
if (ranAuto)
|
||||
{
|
||||
this.Close();
|
||||
|
||||
@@ -8,7 +8,6 @@ using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading;
|
||||
using static System.Net.Mime.MediaTypeNames;
|
||||
|
||||
|
||||
namespace VEPROMS.CSLA.Library
|
||||
@@ -61,6 +60,7 @@ namespace VEPROMS.CSLA.Library
|
||||
#region Structs / Internal Classes
|
||||
|
||||
[Serializable]
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE1006:Naming Styles", Justification = "Keep Older Pre-existing naming conventions")]
|
||||
public struct roHdr
|
||||
{
|
||||
public int hSize;
|
||||
@@ -78,6 +78,7 @@ namespace VEPROMS.CSLA.Library
|
||||
};
|
||||
|
||||
[Serializable]
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE1006:Naming Styles", Justification = "Keep Older Pre-existing naming conventions")]
|
||||
public struct rodbi
|
||||
{
|
||||
public int dbiID;
|
||||
@@ -91,6 +92,7 @@ namespace VEPROMS.CSLA.Library
|
||||
};
|
||||
|
||||
[Serializable]
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE1006:Naming Styles", Justification = "Keep Older Pre-existing naming conventions")]
|
||||
public struct rogrp
|
||||
{
|
||||
public string value;
|
||||
@@ -102,6 +104,7 @@ namespace VEPROMS.CSLA.Library
|
||||
};
|
||||
|
||||
[Serializable]
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE1006:Naming Styles", Justification = "Keep Older Pre-existing naming conventions")]
|
||||
public struct rochild
|
||||
{
|
||||
public int ID;
|
||||
@@ -133,7 +136,7 @@ namespace VEPROMS.CSLA.Library
|
||||
private List<string> _baseAccPageKeys;
|
||||
|
||||
// RofstLookup/Conversion Variables
|
||||
private int _rofstID;
|
||||
private readonly int _rofstID;
|
||||
private DocVersionInfo _myDocVersionInfo;
|
||||
private int _selectedSlave;
|
||||
private string _otherChild = string.Empty;
|
||||
@@ -149,7 +152,7 @@ namespace VEPROMS.CSLA.Library
|
||||
// B2022-107: Display Progress Bar Messages/Statuses when a new ROFST binary file is loaded into the database
|
||||
private frmRofstLoadStatus _frmRofstLoadStatus = null;
|
||||
private Dictionary<int, int> _dicRoCounts = null;
|
||||
private bool _showLoadingStatus = true;
|
||||
private readonly bool _showLoadingStatus = true;
|
||||
|
||||
private int _curRoCnt = 0;
|
||||
private int _dbRoCnt = 0;
|
||||
@@ -414,7 +417,6 @@ namespace VEPROMS.CSLA.Library
|
||||
|
||||
ROFSTLookup.rochild rc = RofstDataGetChildByAccPageID(_rofstID, accPageBase);
|
||||
|
||||
//if (rc.ID >=0 && rc.roid.Length < 16 && Regex.IsMatch(accPageKey, @".*\.[A-Z]") && rc.children != null && rc.children.Count() > 0)
|
||||
if (rc.ID >= 0 && rc.roid.Length < 16 && !string.IsNullOrEmpty(accPageExt) && rc.children != null && rc.children.Count() > 0)
|
||||
{
|
||||
// Check if AccPageID/Key has a return value specific extension. Try to find the RoChild record with the specific return value type,
|
||||
@@ -507,8 +509,6 @@ namespace VEPROMS.CSLA.Library
|
||||
// B2023-037: Handle <=, >=, +-, -> and <- symbols. Convert to unicode for output, i.e. print and edit/view (when editing
|
||||
// step, will show as 2 characters, not unicode, unless ro inserted when code replaced link text with unicode.
|
||||
|
||||
//(_MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.UseDashGreaterLessThenForArrowsInROValue ||
|
||||
// _MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.ConvertGTELTEPMinROValue))
|
||||
bool arrows1 = myiteminfo.ActiveFormat.PlantFormat.FormatData.SectData.UseDashGreaterLessThenForArrowsInROValue;
|
||||
bool arrows2 = myiteminfo.ActiveFormat.PlantFormat.FormatData.SectData.ConvertGTELTEPMinROValue;
|
||||
|
||||
@@ -681,11 +681,10 @@ namespace VEPROMS.CSLA.Library
|
||||
|
||||
if (minutes > 0) duration = string.Format("{0} min(s) ", minutes.ToString("n0"));
|
||||
if (secs < 0) secs = 0.00;
|
||||
duration = duration + string.Format("{0,10:#####0.00} sec(s)", secs).Trim();
|
||||
duration += string.Format("{0,10:#####0.00} sec(s)", secs).Trim();
|
||||
|
||||
return duration;
|
||||
|
||||
//return string.Format("{0,10:#####0.00}", TimeSpan.FromTicks(DateTime.Now.Ticks - dtStart.Ticks).TotalSeconds);
|
||||
}
|
||||
|
||||
//C2026-008 Re-Architect RO.FST to include RO Modification date/time
|
||||
@@ -1475,19 +1474,20 @@ namespace VEPROMS.CSLA.Library
|
||||
|
||||
private ROFSTLookup.roHdr ConvertFst2Objects(byte[] ab)
|
||||
{
|
||||
ROFSTLookup.roHdr roh = new ROFSTLookup.roHdr();
|
||||
|
||||
roh.hSize = BitConverter.ToInt32(ab, 0);
|
||||
roh.hYear = BitConverter.ToInt16(ab, 4);
|
||||
roh.hMonth = ab[6];
|
||||
roh.hDay = ab[7];
|
||||
roh.hcYear = BitConverter.ToInt16(ab, 8);
|
||||
roh.hcMonth = ab[10];
|
||||
roh.hcDay = ab[11];
|
||||
roh.hcHour = ab[12];
|
||||
roh.hcMin = ab[13];
|
||||
roh.hcSec = ab[14];
|
||||
roh.hcHund = ab[15];
|
||||
ROFSTLookup.roHdr roh = new ROFSTLookup.roHdr
|
||||
{
|
||||
hSize = BitConverter.ToInt32(ab, 0),
|
||||
hYear = BitConverter.ToInt16(ab, 4),
|
||||
hMonth = ab[6],
|
||||
hDay = ab[7],
|
||||
hcYear = BitConverter.ToInt16(ab, 8),
|
||||
hcMonth = ab[10],
|
||||
hcDay = ab[11],
|
||||
hcHour = ab[12],
|
||||
hcMin = ab[13],
|
||||
hcSec = ab[14],
|
||||
hcHund = ab[15]
|
||||
};
|
||||
|
||||
int hdrOffset = BitConverter.ToInt32(ab, 16);
|
||||
int dbs = BitConverter.ToInt16(ab, hdrOffset + 4);
|
||||
@@ -1525,10 +1525,11 @@ namespace VEPROMS.CSLA.Library
|
||||
|
||||
private ROFSTLookup.rogrp LoadGroup(byte[] ab, int offset, int tableID)
|
||||
{
|
||||
ROFSTLookup.rogrp myGrp = new ROFSTLookup.rogrp();
|
||||
|
||||
myGrp.ID = BitConverter.ToInt32(ab, offset);
|
||||
myGrp.ParentID = BitConverter.ToInt32(ab, offset + 4);
|
||||
ROFSTLookup.rogrp myGrp = new ROFSTLookup.rogrp
|
||||
{
|
||||
ID = BitConverter.ToInt32(ab, offset),
|
||||
ParentID = BitConverter.ToInt32(ab, offset + 4)
|
||||
};
|
||||
|
||||
int numChildren = BitConverter.ToInt16(ab, offset + 8);
|
||||
|
||||
@@ -1660,7 +1661,7 @@ namespace VEPROMS.CSLA.Library
|
||||
}
|
||||
|
||||
// Update Progress Bar Accordingly
|
||||
if (_totalRoCnt > 0) _pctComplete = _pctComplete + ((Convert.ToDouble(_dbRoCnt) / Convert.ToDouble(_totalRoCnt)) * 80.0);
|
||||
if (_totalRoCnt > 0) _pctComplete += ((Convert.ToDouble(_dbRoCnt) / Convert.ToDouble(_totalRoCnt)) * 80.0);
|
||||
|
||||
OnProgressChanged(displayText, Convert.ToInt32(_pctComplete), 100);
|
||||
}
|
||||
@@ -1720,15 +1721,13 @@ namespace VEPROMS.CSLA.Library
|
||||
protected virtual void OnProgressChanged(string title, string displayText, int curVal = 0, int maxVal = 100)
|
||||
{
|
||||
// If frmRofstLoadStatus is not null then call Update Progress Method
|
||||
if (_frmRofstLoadStatus != null)
|
||||
_frmRofstLoadStatus.UpdateProgress(title, displayText, curVal, maxVal);
|
||||
_frmRofstLoadStatus?.UpdateProgress(title, displayText, curVal, maxVal);
|
||||
}
|
||||
|
||||
protected virtual void OnProgressChanged(string displayText, int curVal = 0, int maxVal = 100)
|
||||
{
|
||||
// If frmRofstLoadStatus is not null then call Update Progress Method
|
||||
if (_frmRofstLoadStatus != null)
|
||||
_frmRofstLoadStatus.UpdateProgress(_frmRofstLoadStatus.Title, displayText, curVal, maxVal);
|
||||
_frmRofstLoadStatus?.UpdateProgress(_frmRofstLoadStatus.Title, displayText, curVal, maxVal);
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -1739,19 +1738,20 @@ namespace VEPROMS.CSLA.Library
|
||||
|
||||
private ROFSTLookup.roHdr ConvertToRoHdrObject(SafeDataReader dr, bool loadChildren)
|
||||
{
|
||||
ROFSTLookup.roHdr rh = new ROFSTLookup.roHdr();
|
||||
|
||||
rh.hSize = (int)dr.GetValue("hSize");
|
||||
rh.hYear = (int)dr.GetValue("hYear");
|
||||
rh.hMonth = (byte)dr.GetValue("hMonth");
|
||||
rh.hDay = (byte)dr.GetValue("hDay");
|
||||
rh.hcYear = (int)dr.GetValue("hcYear");
|
||||
rh.hcMonth = (byte)dr.GetValue("hcMonth");
|
||||
rh.hcDay = (byte)dr.GetValue("hcDay");
|
||||
rh.hcHour = (byte)dr.GetValue("hcHour");
|
||||
rh.hcMin = (byte)dr.GetValue("hcMin");
|
||||
rh.hcSec = (byte)dr.GetValue("hcSec");
|
||||
rh.hcHund = (byte)dr.GetValue("hcHund");
|
||||
ROFSTLookup.roHdr rh = new ROFSTLookup.roHdr
|
||||
{
|
||||
hSize = (int)dr.GetValue("hSize"),
|
||||
hYear = (int)dr.GetValue("hYear"),
|
||||
hMonth = (byte)dr.GetValue("hMonth"),
|
||||
hDay = (byte)dr.GetValue("hDay"),
|
||||
hcYear = (int)dr.GetValue("hcYear"),
|
||||
hcMonth = (byte)dr.GetValue("hcMonth"),
|
||||
hcDay = (byte)dr.GetValue("hcDay"),
|
||||
hcHour = (byte)dr.GetValue("hcHour"),
|
||||
hcMin = (byte)dr.GetValue("hcMin"),
|
||||
hcSec = (byte)dr.GetValue("hcSec"),
|
||||
hcHund = (byte)dr.GetValue("hcHund")
|
||||
};
|
||||
|
||||
if (loadChildren)
|
||||
{
|
||||
@@ -1763,15 +1763,16 @@ namespace VEPROMS.CSLA.Library
|
||||
|
||||
private ROFSTLookup.rodbi ConvertToRodbiObject(SafeDataReader dr, bool loadChildren, bool loadAllChildren)
|
||||
{
|
||||
ROFSTLookup.rodbi rd = new ROFSTLookup.rodbi();
|
||||
|
||||
rd.dbiID = (int)dr.GetValue("dbiID");
|
||||
rd.dbiType = (int)dr.GetValue("dbiType");
|
||||
rd.dbiAW = (int)dr.GetValue("dbiAW");
|
||||
rd.dbiAP = (string)dr.GetValue("dbiAP");
|
||||
rd.dbiTitle = (string)dr.GetValue("dbiTitle");
|
||||
rd.ID = (int)dr.GetValue("ID");
|
||||
rd.ParentID = (int)dr.GetValue("ParentID");
|
||||
ROFSTLookup.rodbi rd = new ROFSTLookup.rodbi
|
||||
{
|
||||
dbiID = (int)dr.GetValue("dbiID"),
|
||||
dbiType = (int)dr.GetValue("dbiType"),
|
||||
dbiAW = (int)dr.GetValue("dbiAW"),
|
||||
dbiAP = (string)dr.GetValue("dbiAP"),
|
||||
dbiTitle = (string)dr.GetValue("dbiTitle"),
|
||||
ID = (int)dr.GetValue("ID"),
|
||||
ParentID = (int)dr.GetValue("ParentID")
|
||||
};
|
||||
|
||||
if (loadChildren || loadAllChildren)
|
||||
{
|
||||
@@ -1783,13 +1784,14 @@ namespace VEPROMS.CSLA.Library
|
||||
|
||||
private ROFSTLookup.rochild ConvertToRochildObject(SafeDataReader dr, bool loadChildren, bool loadAllChildren)
|
||||
{
|
||||
ROFSTLookup.rochild rc = new ROFSTLookup.rochild();
|
||||
|
||||
rc.ID = (int)dr.GetValue("ID");
|
||||
rc.ParentID = (int)dr.GetValue("ParentID");
|
||||
rc.type = (int)dr.GetValue("type");
|
||||
rc.title = (string)dr.GetValue("title");
|
||||
rc.roid = (string)dr.GetValue("roid");
|
||||
ROFSTLookup.rochild rc = new ROFSTLookup.rochild
|
||||
{
|
||||
ID = (int)dr.GetValue("ID"),
|
||||
ParentID = (int)dr.GetValue("ParentID"),
|
||||
type = (int)dr.GetValue("type"),
|
||||
title = (string)dr.GetValue("title"),
|
||||
roid = (string)dr.GetValue("roid")
|
||||
};
|
||||
|
||||
if (!string.IsNullOrEmpty((string)dr.GetValue("appid")))
|
||||
{
|
||||
@@ -1811,11 +1813,12 @@ namespace VEPROMS.CSLA.Library
|
||||
|
||||
private ROFSTLookup.RoExtension ConvertToRoExtensionObject(SafeDataReader dr)
|
||||
{
|
||||
ROFSTLookup.RoExtension re = new ROFSTLookup.RoExtension();
|
||||
|
||||
re.Offset = (int)dr.GetValue("Offset");
|
||||
re.RoidExt = (string)dr.GetValue("RoidExt");
|
||||
re.AccPageExt = (string)dr.GetValue("AccPageExt");
|
||||
ROFSTLookup.RoExtension re = new ROFSTLookup.RoExtension
|
||||
{
|
||||
Offset = (int)dr.GetValue("Offset"),
|
||||
RoidExt = (string)dr.GetValue("RoidExt"),
|
||||
AccPageExt = (string)dr.GetValue("AccPageExt")
|
||||
};
|
||||
|
||||
return re;
|
||||
}
|
||||
@@ -1875,7 +1878,6 @@ namespace VEPROMS.CSLA.Library
|
||||
// Instead of returning the RoChildBase object with a single RoReturnVal object attached, just return the single Ro ReturnValue object.
|
||||
var roRetVal = child.children.First();
|
||||
|
||||
//child.title = roRetVal.title;
|
||||
child.appid = roRetVal.appid;
|
||||
child.roid = roRetVal.roid;
|
||||
child.value = roRetVal.value;
|
||||
@@ -2129,41 +2131,68 @@ namespace VEPROMS.CSLA.Library
|
||||
return ProcessRO(match, multiRtnVal);
|
||||
}
|
||||
|
||||
private string ProcessMacros(string str)
|
||||
{
|
||||
// Takes the RO text value and sees if a macro has been used.
|
||||
// If so it will perform the macro operation on the substring in the text value
|
||||
// Note** Right now the only macro is @HSP(), where every space between the "(" and ")" will be replaced with a hard space
|
||||
private static string ProcessMacros(string str)
|
||||
{
|
||||
|
||||
if (string.IsNullOrEmpty(str))
|
||||
if (string.IsNullOrEmpty(str) || str.ToUpper().IndexOf("@HSP(") < 0)
|
||||
return str;
|
||||
|
||||
string rtnstr = str;
|
||||
int indx;
|
||||
|
||||
while ((indx = rtnstr.ToUpper().IndexOf("@HSP(")) > -1)
|
||||
{
|
||||
string resstr = rtnstr.Substring(0, indx);
|
||||
int endHsp = rtnstr.IndexOf(")", indx);
|
||||
string processingstr = str; //holds current string being processed
|
||||
int indx; //current position of @HSP( in string
|
||||
int endpos = 0; //end of last parens
|
||||
|
||||
//B2026 - 002 handle if parens inside a HSP
|
||||
int startpos = indx + 5;
|
||||
while (rtnstr.Substring(startpos, endHsp - startpos).Contains("("))
|
||||
StringBuilder sb = new StringBuilder();
|
||||
Stack<char> endparens = new Stack<char>();
|
||||
|
||||
while ((indx = processingstr.ToUpper().IndexOf("@HSP(")) > -1)
|
||||
{
|
||||
startpos = rtnstr.IndexOf("(", startpos + 1, endHsp - startpos) + 1;
|
||||
endHsp = rtnstr.IndexOf(")", endHsp + 1);
|
||||
sb.Append(processingstr.Substring(0, indx)); // initial string before @HSP(
|
||||
|
||||
for (int i = indx + 5; i < processingstr.Length; i++)
|
||||
{
|
||||
char ch = processingstr[i];
|
||||
|
||||
if (ch == '(')
|
||||
{
|
||||
//if opening paren inside HSP add it to the stack to look for a closing parens
|
||||
endparens.Push(ch);
|
||||
}
|
||||
else if (ch == ')' && endparens.Count > 0)
|
||||
{
|
||||
//if cloing parens and it matches an opening parens inside of HSP, remove a level
|
||||
_ = endparens.Pop();
|
||||
}
|
||||
else if (ch == ')' && endparens.Count == 0)
|
||||
{
|
||||
//if closing parens and at same level as HSP, break out since found correct closing parens
|
||||
endpos = i;
|
||||
break;
|
||||
}
|
||||
else if (i == processingstr.Length - 1)
|
||||
{
|
||||
//if hit the end of the string and no matching closing parens found, take to the end of the string
|
||||
endpos = processingstr.Length;
|
||||
}
|
||||
}
|
||||
|
||||
string tmpstr = rtnstr.Substring(indx + 5, endHsp - indx - 5);
|
||||
|
||||
//Add the text inside the @HSP(...)
|
||||
string tmpstr = processingstr.Substring(indx + 5, endpos - indx - 5);
|
||||
// B2017-012 Don't convert space to hard spaces for XY Plots.
|
||||
if (!tmpstr.Contains("<<G")) tmpstr = tmpstr.Replace(" ", @"\u160?");
|
||||
sb.Append(tmpstr);
|
||||
|
||||
resstr = resstr + tmpstr;
|
||||
rtnstr = resstr + rtnstr.Substring(endHsp + 1);
|
||||
//Set the processing string to after the ending parens found in case multiple @HSP
|
||||
processingstr = endpos + 1 >= processingstr.Length ? "" : processingstr.Substring(endpos + 1);
|
||||
}
|
||||
|
||||
return rtnstr;
|
||||
//add text after last end parens
|
||||
sb.Append(processingstr);
|
||||
|
||||
return sb.ToString();
|
||||
}
|
||||
|
||||
private int StringLength(byte[] ab, int offset)
|
||||
@@ -2275,7 +2304,7 @@ namespace VEPROMS.CSLA.Library
|
||||
{
|
||||
rc.roid = FormatRoidKey(roid).Substring(0, 12);
|
||||
|
||||
DocVersionConfig dvc = (_myDocVersionInfo != null) ? _myDocVersionInfo.DocVersionConfig : null;
|
||||
DocVersionConfig dvc = _myDocVersionInfo?.DocVersionConfig;
|
||||
if (dvc != null) dvc.SelectedSlave = this.SelectedSlave;
|
||||
|
||||
switch (rc.roid)
|
||||
@@ -2283,49 +2312,49 @@ namespace VEPROMS.CSLA.Library
|
||||
case "FFFF00000001":
|
||||
rc.title = "Number";
|
||||
rc.appid = "U-NUMBER";
|
||||
rc.value = (dvc != null) ? dvc.Unit_Number : null;
|
||||
rc.value = dvc?.Unit_Number;
|
||||
break;
|
||||
|
||||
case "FFFF00000002":
|
||||
rc.title = "Other Number";
|
||||
rc.appid = "U-OTHERNUMBER";
|
||||
rc.value = (dvc != null) ? dvc.Other_Unit_Number : null;
|
||||
rc.value = dvc?.Other_Unit_Number;
|
||||
break;
|
||||
|
||||
case "FFFF00000003":
|
||||
rc.title = "Text";
|
||||
rc.appid = "U-TEXT";
|
||||
rc.value = (dvc != null) ? dvc.Unit_Text : null;
|
||||
rc.value = dvc?.Unit_Text;
|
||||
break;
|
||||
|
||||
case "FFFF00000004":
|
||||
rc.title = "Other Text";
|
||||
rc.appid = "U-OTHERTEXT";
|
||||
rc.value = (dvc != null) ? dvc.Other_Unit_Text : null;
|
||||
rc.value = dvc?.Other_Unit_Text;
|
||||
break;
|
||||
|
||||
case "FFFF00000005":
|
||||
rc.title = "ID";
|
||||
rc.appid = "U-ID";
|
||||
rc.value = (dvc != null) ? dvc.Unit_ID : null;
|
||||
rc.value = dvc?.Unit_ID;
|
||||
break;
|
||||
|
||||
case "FFFF00000006":
|
||||
rc.title = "Other ID";
|
||||
rc.appid = "U-OTHERID";
|
||||
rc.value = (dvc != null) ? dvc.Other_Unit_ID : null;
|
||||
rc.value = dvc?.Other_Unit_ID;
|
||||
break;
|
||||
|
||||
case "FFFF00000007":
|
||||
rc.title = "Name";
|
||||
rc.appid = "U-NAME";
|
||||
rc.value = (dvc != null) ? dvc.Unit_Name : null;
|
||||
rc.value = dvc?.Unit_Name;
|
||||
break;
|
||||
|
||||
case "FFFF00000008":
|
||||
rc.title = "Other Name";
|
||||
rc.appid = "U-OTHERNAME";
|
||||
rc.value = (dvc != null) ? dvc.Other_Unit_Name : null;
|
||||
rc.value = dvc?.Other_Unit_Name;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -2163,9 +2163,13 @@ namespace VEPROMS.CSLA.Library
|
||||
// move past that text and try the Word Find function again.
|
||||
// B2022-088: [JPR] Find Doc Ro button not working in Word Sections
|
||||
// B2022-098: [JPR] ROs not being resolved in Word Sections
|
||||
// B2026-070: When there is a less-then sign (<) followed by a numeric value in a Word attachment (inside of a table), PROMS thinks the user put in an RO token will generate an RO not found error in the following table row who's text contains <U-Name>.
|
||||
if (executeResult && !string.IsNullOrEmpty(sel.Text) && !sel.Text.StartsWith("<") && !sel.Text.EndsWith(">"))
|
||||
{
|
||||
sel.MoveStart(LBWdUnits.wdCharacter, sel.Text.Length - 1);
|
||||
int location = sel.Start + sel.Text.Length - 1; //do not do this inline - this needs captured before WholeStory
|
||||
|
||||
sel.WholeStory();
|
||||
sel.MoveStart(LBWdUnits.wdCharacter, location);
|
||||
tryagain = true;
|
||||
}
|
||||
} while (tryagain);
|
||||
|
||||
@@ -4113,7 +4113,10 @@ namespace VEPROMS.CSLA.Library
|
||||
// date). Print_ViewableAfterChangeBarDate was created to get only that user specified date, if it exists. If it does exist, we compare
|
||||
// that with the Content datetime, otherwise we proceed as before.
|
||||
DateTime? viewableStartingDateTime = (MyProcedure.MyConfig as ProcedureConfig).Print_ViewableStartingChangeBarDate;
|
||||
if (viewableStartingDateTime != null && viewableStartingDateTime > MyProcedure.ChangeBarDate && (MyProcedure.MyConfig as ProcedureConfig).SelectedSlave == 0)
|
||||
// B2026-060 & B2026-061 removed the check of SelectedSlave (aka the selected child) from the IF statement,
|
||||
// This was causing some step to print with change bars when there should not have been - because of the use of
|
||||
// the Show Change Bars After date. The logic we need is built into the get of ChangeBarDate and Print_ViewableStartingChangeBarDate.
|
||||
if (viewableStartingDateTime != null && viewableStartingDateTime > MyProcedure.ChangeBarDate)
|
||||
return (MyContent.DTS > viewableStartingDateTime);
|
||||
return (MyContent.DTS > MyProcedure.ChangeBarDate);
|
||||
}
|
||||
|
||||
@@ -262,8 +262,10 @@ namespace VEPROMS.CSLA.Library
|
||||
if (dvi.DocVersionAssociations[0].MyROFst.ROFstID != newfstid)
|
||||
{
|
||||
dv.DocVersionAssociations[0].MyROFst = localROFst.GetJustROFst();
|
||||
SetAssociationLastCompleted(dv, DateTime.Now.ToString());
|
||||
}
|
||||
// B2026-066 moved this out of if statement above
|
||||
// - was not resetting the datetime and thus not disabling the Update RO Values button and menu item
|
||||
SetAssociationLastCompleted(dv, DateTime.Now.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -326,6 +328,8 @@ namespace VEPROMS.CSLA.Library
|
||||
// all of the calls aways set the flags to not update the RO values
|
||||
public static ROFst UpdateRoFst(RODbInfo rdi, DocVersion docver, ROFstInfo origROFst, ROFstInfoProgressBarRefresh myProgressBarRefresh)
|
||||
{
|
||||
ROWorkingDraftAsk.ClearWorkingDrafts();
|
||||
|
||||
if (myProgressBarRefresh != null) myProgressBarRefresh(0, 100, "Starting Update");
|
||||
|
||||
int origFSTid = origROFst.ROFstID;
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace VEPROMS.CSLA.Library
|
||||
{
|
||||
public static class ROWorkingDraftAsk
|
||||
{
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE0044:Add readonly modifier", Justification = "Keeping Collections Not ReadOnly")]
|
||||
private static List<int> WorkingDrafts = new List<int>();
|
||||
|
||||
public static void AddWorkingDrafts(int wd) => WorkingDrafts.Add(wd);
|
||||
|
||||
public static void ClearWorkingDrafts() => WorkingDrafts.Clear();
|
||||
|
||||
public static bool ContainsWorkingDraft(int wd) => WorkingDrafts.Contains(wd);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -396,6 +396,7 @@
|
||||
<Compile Include="Minimal\UserReports.cs" />
|
||||
<Compile Include="Minimal\UserSettings.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Session\ROWorkingDraftAsk.cs" />
|
||||
<Compile Include="VEObjects\VEDrillDown.cs" />
|
||||
<Compile Include="VEObjects\VETreeNode.cs" />
|
||||
</ItemGroup>
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
|
||||
namespace Volian.Base.Library
|
||||
{
|
||||
public static class BaseLnSettings
|
||||
{
|
||||
public static bool blBaseLine { get; set; } = false;
|
||||
}
|
||||
}
|
||||
@@ -90,6 +90,7 @@
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="BaseLnSettings.cs" />
|
||||
<Compile Include="BigNum.cs" />
|
||||
<Compile Include="ByteArrayCompare.cs" />
|
||||
<Compile Include="DebugPrint.cs" />
|
||||
|
||||
@@ -613,8 +613,16 @@ namespace Volian.Controls.Library
|
||||
_In_DSOTabPanel_Enter = false;
|
||||
_MyDisplayTabControl.SelectedDisplayTabItem = MyDisplayTabItem;
|
||||
// B2018-070 Position the text cursor - Activate MS Word Panel
|
||||
try
|
||||
{
|
||||
_MyEdWord.GotoItem(EDWordLib.WdGoToItem.wdGoToObject, EDWordLib.WdGoToDirection.wdGoToNext, 0, null);
|
||||
}
|
||||
catch
|
||||
{
|
||||
//B2026-067 - Do nothing if cannot Position cursor
|
||||
}
|
||||
|
||||
}
|
||||
#endregion
|
||||
#region Public Methods
|
||||
private bool _IsBeingDeleted = false;
|
||||
|
||||
@@ -2,13 +2,12 @@ using DevComponents.DotNetBar;
|
||||
using JR.Utils.GUI.Forms;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using VEPROMS.CSLA.Library;
|
||||
using Volian.Base.Library;
|
||||
@@ -92,6 +91,10 @@ namespace Volian.Controls.Library
|
||||
//This flag will be set when the docversion gets updated to let it know that the full tree needs a refresh
|
||||
private bool changedDocVersion = false;
|
||||
|
||||
//B2026-057 PROMS Crash when Closing Tabs
|
||||
// this flag will prevent multiple asking in a row if should updste ROs
|
||||
private static bool askedAboutchangedDocVersion = false;
|
||||
|
||||
public ROFstInfo MyROFST
|
||||
{
|
||||
get { return _myROFST; }
|
||||
@@ -135,6 +138,7 @@ namespace Volian.Controls.Library
|
||||
if (_docVersionInfo?.VersionID != value?.VersionID)
|
||||
{
|
||||
changedDocVersion = true;
|
||||
askedAboutchangedDocVersion = false;
|
||||
}
|
||||
|
||||
_docVersionInfo = value;
|
||||
@@ -639,18 +643,18 @@ namespace Volian.Controls.Library
|
||||
if (_docVersionInfo != null && fstid != -1 && fstid != MyROFSTLookup.RofstID)
|
||||
{
|
||||
string message = string.Empty;
|
||||
if (_progressBar?.Text != "Cannot check-out Working Draft" && !MySessionInfo.CanCheckOutItem(_docVersionInfo.VersionID, CheckOutType.DocVersion, ref message))
|
||||
if (_progressBar?.Text != "RO Check Paused - Other Users In Set" && !MySessionInfo.CanCheckOutItem(_docVersionInfo.VersionID, CheckOutType.DocVersion, ref message))
|
||||
{
|
||||
FlexibleMessageBox.Show(this, message, "Working Draft Has Items Already Checked Out", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
FinalProgressBarMessage = "Cannot check-out Working Draft";
|
||||
FinalProgressBarMessage = "RO Check Paused - Other Users In Set";
|
||||
}
|
||||
else if (!MySessionInfo.CanCheckOutItem(_docVersionInfo.VersionID, CheckOutType.DocVersion, ref message))
|
||||
{
|
||||
//do nothing - is still checked out
|
||||
}
|
||||
else if (changedDocVersion && MessageBox.Show($"There exists a newer ROFST for this RO database that was loaded for other sets.\r\n\r\nDo you want to update this set's ROs to be consistent/use the latest loaded ROFST?", "Load ROs", MessageBoxButtons.YesNo) == DialogResult.Yes)
|
||||
else if (changedDocVersion && !askedAboutchangedDocVersion && !ROWorkingDraftAsk.ContainsWorkingDraft(_docVersionInfo.VersionID))
|
||||
{
|
||||
if (MessageBox.Show($"There exists a newer ROFST for this RO database that was loaded for other sets.\r\n\r\nDo you want to update this set's ROs to be consistent/use the latest loaded ROFST?", "Load ROs", MessageBoxButtons.YesNo) == DialogResult.Yes)
|
||||
{
|
||||
|
||||
InitialProgressBarMessage = "Updating ROs";
|
||||
|
||||
ROFstInfo roFstInfo = ROFstInfo.Get(fstid);
|
||||
@@ -664,6 +668,17 @@ namespace Volian.Controls.Library
|
||||
MyROFST = roFstInfo;
|
||||
|
||||
updatedROs = true;
|
||||
|
||||
askedAboutchangedDocVersion = false;
|
||||
ROWorkingDraftAsk.ClearWorkingDrafts();
|
||||
}
|
||||
else
|
||||
{
|
||||
askedAboutchangedDocVersion = true;
|
||||
if (!ROWorkingDraftAsk.ContainsWorkingDraft(_docVersionInfo.VersionID))
|
||||
ROWorkingDraftAsk.AddWorkingDrafts(_docVersionInfo.VersionID);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -703,7 +718,7 @@ namespace Volian.Controls.Library
|
||||
if (tmpROID != null) ExpandNode(ROFSTLookup.FormatRoidKey(tmpROID, true));
|
||||
|
||||
//doc version would have updated (if needed) so reset flag
|
||||
if (_progressBar?.Text != "Cannot check-out Working Draft")
|
||||
if (_progressBar?.Text != "RO Check Paused - Other Users In Set")
|
||||
{
|
||||
changedDocVersion = false;
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -3684,15 +3684,14 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
ROFSTLookup myLookup = MySection.MyDocVersion.DocVersionAssociations[0].MyROFst.GetROFSTLookup(MySection.MyDocVersion, null);
|
||||
|
||||
string accpgid = accpageid;
|
||||
|
||||
//B2022 - 083: Support Conditional RO Values
|
||||
ROFSTLookup.rochild roc = myLookup.GetROChildByAccPageID(string.Format("<{0}.{1}>", accpgid, multiid), MySection.MyDocVersion.DocVersionConfig.RODefaults_setpointprefix, MySection.MyDocVersion.DocVersionConfig.RODefaults_graphicsprefix);
|
||||
//B2022-083: Support Conditional RO Values
|
||||
//C2026-047 first try the RO Lookup with the ascii dash character in the accpageid. If not found, try again with the unicode dash
|
||||
ROFSTLookup.rochild roc = myLookup.GetROChildByAccPageID(string.Format("<{0}.{1}>", accpageid.Replace(@"\u8209?", "-"), multiid), MySection.MyDocVersion.DocVersionConfig.RODefaults_setpointprefix, MySection.MyDocVersion.DocVersionConfig.RODefaults_graphicsprefix);
|
||||
|
||||
if (roc.value == null)
|
||||
{
|
||||
accpgid = accpgid.Replace(@"\u8209?", "-");
|
||||
roc = myLookup.GetROChildByAccPageID(string.Format("<{0}.{1}>", accpgid, multiid), MySection.MyDocVersion.DocVersionConfig.RODefaults_setpointprefix, MySection.MyDocVersion.DocVersionConfig.RODefaults_graphicsprefix);
|
||||
// try again but this time with the unicode dash
|
||||
roc = myLookup.GetROChildByAccPageID(string.Format("<{0}.{1}>", accpageid, multiid), MySection.MyDocVersion.DocVersionConfig.RODefaults_setpointprefix, MySection.MyDocVersion.DocVersionConfig.RODefaults_graphicsprefix);
|
||||
}
|
||||
|
||||
if (!deflt.StartsWith("[") && !string.IsNullOrEmpty(roc.value) && roc.value.Trim().Length > 0) // don't return val if it's an empty or blank string - jsj 01-28-2019
|
||||
|
||||
@@ -1660,13 +1660,13 @@ i = 0;
|
||||
{
|
||||
ROFSTLookup myLookup = MySection.MyDocVersion.DocVersionAssociations[0].MyROFst.GetROFSTLookup(MySection.MyDocVersion, overrideChild);
|
||||
|
||||
string accpgid = accpageid;
|
||||
ROFSTLookup.rochild roc = myLookup.GetROChildByAccPageID("<" + accpgid + "." + multiid + ">", MySection.MyDocVersion.DocVersionConfig.RODefaults_setpointprefix, MySection.MyDocVersion.DocVersionConfig.RODefaults_graphicsprefix);
|
||||
//C2026-047 first try the RO Lookup with the ascii dash character in the accpageid. If not found, try again with the unicode dash
|
||||
ROFSTLookup.rochild roc = myLookup.GetROChildByAccPageID("<" + accpageid.Replace(@"\u8209?", "-") + "." + multiid + ">", MySection.MyDocVersion.DocVersionConfig.RODefaults_setpointprefix, MySection.MyDocVersion.DocVersionConfig.RODefaults_graphicsprefix);
|
||||
|
||||
if (roc.value == null)
|
||||
{
|
||||
accpgid = accpgid.Replace(@"\u8209?", "-");
|
||||
roc = myLookup.GetROChildByAccPageID("<" + accpgid + "." + multiid + ">", MySection.MyDocVersion.DocVersionConfig.RODefaults_setpointprefix, MySection.MyDocVersion.DocVersionConfig.RODefaults_graphicsprefix);
|
||||
// try again but this time with the unicode dash
|
||||
roc = myLookup.GetROChildByAccPageID("<" + accpageid + "." + multiid + ">", MySection.MyDocVersion.DocVersionConfig.RODefaults_setpointprefix, MySection.MyDocVersion.DocVersionConfig.RODefaults_graphicsprefix);
|
||||
}
|
||||
|
||||
if (!deflt.StartsWith("[") && !string.IsNullOrEmpty(roc.value) && roc.value.Trim().Length > 0) // don't return val if it's an empty or blank string - jsj 01-28-2019
|
||||
|
||||
@@ -6,6 +6,7 @@ using System.Windows.Forms;
|
||||
using System.Text;
|
||||
using System.Drawing;
|
||||
using System.Text.RegularExpressions;
|
||||
using Volian.Base.Library;
|
||||
using VG;
|
||||
|
||||
namespace XYPlots
|
||||
@@ -281,22 +282,28 @@ namespace XYPlots
|
||||
private bool LoadBuff(string FileName)
|
||||
{
|
||||
if (!File.Exists(FileName))
|
||||
{
|
||||
if (!BaseLnSettings.blBaseLine) // B2026-056 suppress messages when running baseline.
|
||||
{
|
||||
// File does not exist, show error message
|
||||
MessageBox.Show(String.Format("X/Y Plot File {0} Does Not Exist", FileName), "Error Opening X/Y Plot File");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
// Open the X/Y Plot file
|
||||
try
|
||||
{
|
||||
XYPlotFile = File.OpenRead(FileName);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
if (!BaseLnSettings.blBaseLine) // B2026-056 suppress messages when running baseline.
|
||||
{
|
||||
// cannot open the x/y plot file
|
||||
MessageBox.Show(e.Message, String.Format("Error Opening {0} for Reading", FileName));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
int blen = (int)XYPlotFile.Length;
|
||||
int bread = 0;
|
||||
// initialize a byte array to read into
|
||||
@@ -308,19 +315,25 @@ namespace XYPlots
|
||||
bread = XYPlotFile.Read(bbuf, 0, blen);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
if (!BaseLnSettings.blBaseLine) // B2026-056 suppress messages when running baseline.
|
||||
{
|
||||
MessageBox.Show(e.Message, String.Format("Error Reading {0}", FileName));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
try
|
||||
{
|
||||
XYPlotFile.Close();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
if (!BaseLnSettings.blBaseLine) // B2026-056 suppress messages when running baseline.
|
||||
{
|
||||
MessageBox.Show(e.Message, String.Format("Error Closing {0}", FileName));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (int i = 0; i < bbuf.Length; i++)
|
||||
{
|
||||
@@ -446,7 +459,7 @@ namespace XYPlots
|
||||
char retval;
|
||||
StringBuilder Lbuff = new StringBuilder();
|
||||
retval = NextChar();
|
||||
if (retval != '"' && retval != '\x1C') // open double quote
|
||||
if (retval != '"' && retval != '\x1C' && !BaseLnSettings.blBaseLine) // open double quote
|
||||
MessageBox.Show("Double Quote not found", "Syntax problem in XY Plot");
|
||||
retval = NextChar();
|
||||
while (retval != 0 && retval != '\n')
|
||||
@@ -1439,9 +1452,12 @@ namespace XYPlots
|
||||
}
|
||||
}
|
||||
private void PrintStackError(string relation, int limit)
|
||||
{
|
||||
if (!BaseLnSettings.blBaseLine) // B2026-056 suppress messages when running baseline.
|
||||
{
|
||||
MessageBox.Show(String.Format("Position Stack Pointer {0} {1}", relation, limit.ToString()), "Print Stack Error");
|
||||
}
|
||||
}
|
||||
private void SavePosition()
|
||||
{
|
||||
if (stack >= MAX_XY_STACK) PrintStackError(">=", MAX_XY_STACK);
|
||||
@@ -1657,10 +1673,13 @@ namespace XYPlots
|
||||
maximum[flag] = newmaximum;
|
||||
}
|
||||
private void err_exit(string msg, string msg2)
|
||||
{
|
||||
if (!BaseLnSettings.blBaseLine) // B2026-056 suppress messages when running baseline.
|
||||
{
|
||||
MessageBox.Show(msg + "\n" + msg2 + "\n\n This p=Process Will Terminate", "\n## ERROR ## - ");
|
||||
Environment.Exit(255);
|
||||
}
|
||||
}
|
||||
private void FindBoxesinArea(int ptval, int flag)
|
||||
{
|
||||
XyBox cptr;
|
||||
@@ -1991,12 +2010,16 @@ namespace XYPlots
|
||||
AxisLabel[1] = getint();
|
||||
break;
|
||||
default:
|
||||
if (BaseLnSettings.blBaseLine == false) // B2026-056 suppress messages when running baseline.
|
||||
{
|
||||
if (PrevCommand.Equals(null))
|
||||
MessageBox.Show("Check the first line of the X/Y Plot definition.", "Unrecognized Graph Command");
|
||||
else
|
||||
MessageBox.Show(string.Format("Problem with the X/Y Plot Command after {0}", PrevCommand.ToString()), "Unrecognized Graph Command");
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
PrevCommand = Command;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -176,6 +176,10 @@
|
||||
<Project>{52D74078-3822-410E-889B-464BD21AAB9E}</Project>
|
||||
<Name>VG</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Volian.Base.Library\Volian.Base.Library.csproj">
|
||||
<Project>{aeee9fd1-6892-45e2-a67e-418c06d46ff9}</Project>
|
||||
<Name>Volian.Base.Library</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Properties\" />
|
||||
|
||||
Reference in New Issue
Block a user