Compare commits
134 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 4c155e0e63 | |||
| 8388cd59a8 | |||
| 5a09069b08 | |||
| 9e10948e59 | |||
| f8663e038f | |||
| 124cfb14ab | |||
| 4852b7c2c0 | |||
| dd4b08ec2b | |||
| 6aef00ffc6 | |||
| 76eb6fca13 | |||
| 892b84690e | |||
| b0bfb4d3f6 | |||
| af1a05ff40 | |||
| de89200eae | |||
| 7009ca78f2 | |||
| 03c58b7ae3 | |||
| c9166f6f92 | |||
| 343d6a8c9a | |||
| 8c5c7a5d93 | |||
| 864ec2709c | |||
| 4b1ca8d7bf | |||
| 3b73d54ea2 | |||
| 2ca433c83f | |||
| 0b40569727 | |||
| afb0247d87 | |||
| bce8461a7e | |||
| 9d5cc43d71 | |||
| bc1370ab29 | |||
| eaf2b14cfc | |||
| 1cf7d81aa5 | |||
| f11a9536f0 | |||
| c7bdcf0104 | |||
| df026499d5 | |||
| a3aa4157b8 | |||
| 8f3268e1bc | |||
| 5721d440e9 | |||
| 505c396283 | |||
| 643e6bc94f | |||
| 76502e6d97 | |||
| 851a0b3810 | |||
| fd8dbb4c8b | |||
| 4ffd994c5e | |||
| a34828113a | |||
| 461329468c | |||
| 35de5df04d | |||
| 4f0548fd60 | |||
| 5c1d96cc51 | |||
| 57049c0c52 | |||
| 31326e1c91 | |||
| 3c60994a0a | |||
| 773cc42346 | |||
| f46a1f39dc | |||
| b7175bf77f | |||
| ec22232aa8 | |||
| f303cd2236 | |||
| f40cef4416 | |||
| fbca97d38d | |||
| 28bd2cba5c | |||
| 4b35f73bbf | |||
| f4706eb126 | |||
| 21bcb90558 | |||
| ae48ac0cae | |||
| cb4979d5bc | |||
| 7d3ae74e1f | |||
| 9d680aa500 | |||
| 0d50b1c2fe | |||
| 75e034863f | |||
| 3b42de1571 | |||
| 668472286e | |||
| e00d34c99d | |||
| 9fb496dfb3 | |||
| f4eaa4a3ef | |||
| 5d50ed6bdf | |||
| d7ace4eaf9 | |||
| 16a4d335ea | |||
| ba69bb0772 | |||
| 455940caa2 | |||
| 439344757e | |||
| ad912691c9 | |||
| 237144aff6 | |||
| 810332d558 | |||
| f8431d0ba1 | |||
| 57c3bfa16a | |||
| 61f1077608 | |||
| 8877e968b9 | |||
| 4575c90bee | |||
| 21279a87ae | |||
| 3d5ad4a17e | |||
| 9bb7b044a8 | |||
| dc8f2f7561 | |||
| 829dbf84da | |||
| 7b156c17f8 | |||
| cbf7cbc164 | |||
| b04faa816e | |||
| 517ebe2902 | |||
| 03d0d314e3 | |||
| 3e804c5cce | |||
| ee2b8b538e | |||
| fdfd34fe92 | |||
| 2d6fb6523b | |||
| 3084bf3982 | |||
| 5ba51e8392 | |||
| fb5eb43e34 | |||
| b154056276 | |||
| c67b8f9ca1 | |||
| 95e4181360 | |||
| 32dffbe56b | |||
| 6b3c8d373b | |||
| db29107f47 | |||
| 355537f2ab | |||
| 0729ef0c21 | |||
| 6fe82bfd0f | |||
| 39bf072363 | |||
| da7c384fd8 | |||
| 95130fd9a0 | |||
| 978e2344a3 | |||
| c9bf45602c | |||
| aa160b2036 | |||
| f82b32d351 | |||
| e519dc9a57 | |||
| f020c37db9 | |||
| 5a4ec3b6b1 | |||
| 2602d6c9d2 | |||
| ff403583d7 | |||
| c5577cc2bd | |||
| 78be6e5dc1 | |||
| b954a41375 | |||
| 0100a11cfe | |||
| 04cf2e8534 | |||
| be00724818 | |||
| 274d93c61a | |||
| 7dc4c30436 | |||
| 028ef4bc31 | |||
| 42124d65c7 |
@@ -179,7 +179,6 @@
|
||||
<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.
@@ -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 ISNULL(max(auditid),0) from contentaudits where contentid = ga.contentid and deletestatus = ga.deletestatus)
|
||||
update ga set ga.contentauditid = (select max(auditid) 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,12 +5547,6 @@ 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];
|
||||
@@ -5561,46 +5555,35 @@ GO
|
||||
Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
|
||||
Copyright 2012 - Volian Enterprises, Inc. All rights reserved.
|
||||
*****************************************************************************/
|
||||
CREATE OR ALTER FUNCTION [dbo].[ve_GetParentItem] (@ItemID int) RETURNS int
|
||||
CREATE FUNCTION [dbo].[ve_GetParentItem] (@ItemID int) RETURNS int
|
||||
WITH EXECUTE AS OWNER
|
||||
AS
|
||||
BEGIN
|
||||
DECLARE @ParentID int;
|
||||
WITH Itemz([ItemID]) as
|
||||
WITH Itemz([ItemID],[IsFound]) as
|
||||
(
|
||||
select ii.itemid from items ii WITH (NOLOCK) where ii.itemid = @ItemID
|
||||
select ii.itemid,0 from items ii where ii.itemid = @ItemID
|
||||
union all
|
||||
select ii.previousid from items ii WITH (NOLOCK)
|
||||
select ii.previousid,0 from items ii
|
||||
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 = 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)
|
||||
|
||||
select top 1 @ParentID = itemid from itemz
|
||||
where isfound = 1 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];
|
||||
@@ -25007,34 +24990,6 @@ 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 |
|
||||
@@ -25068,8 +25023,8 @@ BEGIN TRY -- Try Block
|
||||
DECLARE @RevDate varchar(255)
|
||||
DECLARE @RevDescription varchar(255)
|
||||
|
||||
set @RevDate = '07/16/2026 8:30 AM'
|
||||
set @RevDescription = 'Reworked ve_GetParentItem for Performance improvement'
|
||||
set @RevDate = '05/26/2026 7:00 AM'
|
||||
set @RevDescription = 'Get Most Recent Revision when Duplicates'
|
||||
|
||||
Select cast(@RevDate as datetime) RevDate, @RevDescription RevDescription
|
||||
PRINT 'SQL Code Revision ' + @RevDate + ' - ' + @RevDescription
|
||||
|
||||
@@ -8,6 +8,7 @@ using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading;
|
||||
using static System.Net.Mime.MediaTypeNames;
|
||||
|
||||
|
||||
namespace VEPROMS.CSLA.Library
|
||||
@@ -60,7 +61,6 @@ 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,7 +78,6 @@ 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;
|
||||
@@ -92,7 +91,6 @@ 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;
|
||||
@@ -104,7 +102,6 @@ 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;
|
||||
@@ -136,7 +133,7 @@ namespace VEPROMS.CSLA.Library
|
||||
private List<string> _baseAccPageKeys;
|
||||
|
||||
// RofstLookup/Conversion Variables
|
||||
private readonly int _rofstID;
|
||||
private int _rofstID;
|
||||
private DocVersionInfo _myDocVersionInfo;
|
||||
private int _selectedSlave;
|
||||
private string _otherChild = string.Empty;
|
||||
@@ -152,7 +149,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 readonly bool _showLoadingStatus = true;
|
||||
private bool _showLoadingStatus = true;
|
||||
|
||||
private int _curRoCnt = 0;
|
||||
private int _dbRoCnt = 0;
|
||||
@@ -417,6 +414,7 @@ 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,
|
||||
@@ -509,6 +507,8 @@ 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,10 +681,11 @@ namespace VEPROMS.CSLA.Library
|
||||
|
||||
if (minutes > 0) duration = string.Format("{0} min(s) ", minutes.ToString("n0"));
|
||||
if (secs < 0) secs = 0.00;
|
||||
duration += string.Format("{0,10:#####0.00} sec(s)", secs).Trim();
|
||||
duration = 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
|
||||
@@ -1474,20 +1475,19 @@ namespace VEPROMS.CSLA.Library
|
||||
|
||||
private ROFSTLookup.roHdr ConvertFst2Objects(byte[] ab)
|
||||
{
|
||||
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]
|
||||
};
|
||||
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];
|
||||
|
||||
int hdrOffset = BitConverter.ToInt32(ab, 16);
|
||||
int dbs = BitConverter.ToInt16(ab, hdrOffset + 4);
|
||||
@@ -1525,11 +1525,10 @@ namespace VEPROMS.CSLA.Library
|
||||
|
||||
private ROFSTLookup.rogrp LoadGroup(byte[] ab, int offset, int tableID)
|
||||
{
|
||||
ROFSTLookup.rogrp myGrp = new ROFSTLookup.rogrp
|
||||
{
|
||||
ID = BitConverter.ToInt32(ab, offset),
|
||||
ParentID = BitConverter.ToInt32(ab, offset + 4)
|
||||
};
|
||||
ROFSTLookup.rogrp myGrp = new ROFSTLookup.rogrp();
|
||||
|
||||
myGrp.ID = BitConverter.ToInt32(ab, offset);
|
||||
myGrp.ParentID = BitConverter.ToInt32(ab, offset + 4);
|
||||
|
||||
int numChildren = BitConverter.ToInt16(ab, offset + 8);
|
||||
|
||||
@@ -1661,7 +1660,7 @@ namespace VEPROMS.CSLA.Library
|
||||
}
|
||||
|
||||
// Update Progress Bar Accordingly
|
||||
if (_totalRoCnt > 0) _pctComplete += ((Convert.ToDouble(_dbRoCnt) / Convert.ToDouble(_totalRoCnt)) * 80.0);
|
||||
if (_totalRoCnt > 0) _pctComplete = _pctComplete + ((Convert.ToDouble(_dbRoCnt) / Convert.ToDouble(_totalRoCnt)) * 80.0);
|
||||
|
||||
OnProgressChanged(displayText, Convert.ToInt32(_pctComplete), 100);
|
||||
}
|
||||
@@ -1721,13 +1720,15 @@ 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
|
||||
_frmRofstLoadStatus?.UpdateProgress(title, displayText, curVal, maxVal);
|
||||
if (_frmRofstLoadStatus != null)
|
||||
_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
|
||||
_frmRofstLoadStatus?.UpdateProgress(_frmRofstLoadStatus.Title, displayText, curVal, maxVal);
|
||||
if (_frmRofstLoadStatus != null)
|
||||
_frmRofstLoadStatus.UpdateProgress(_frmRofstLoadStatus.Title, displayText, curVal, maxVal);
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -1738,20 +1739,19 @@ namespace VEPROMS.CSLA.Library
|
||||
|
||||
private ROFSTLookup.roHdr ConvertToRoHdrObject(SafeDataReader dr, bool loadChildren)
|
||||
{
|
||||
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")
|
||||
};
|
||||
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");
|
||||
|
||||
if (loadChildren)
|
||||
{
|
||||
@@ -1763,16 +1763,15 @@ namespace VEPROMS.CSLA.Library
|
||||
|
||||
private ROFSTLookup.rodbi ConvertToRodbiObject(SafeDataReader dr, bool loadChildren, bool loadAllChildren)
|
||||
{
|
||||
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")
|
||||
};
|
||||
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");
|
||||
|
||||
if (loadChildren || loadAllChildren)
|
||||
{
|
||||
@@ -1784,14 +1783,13 @@ namespace VEPROMS.CSLA.Library
|
||||
|
||||
private ROFSTLookup.rochild ConvertToRochildObject(SafeDataReader dr, bool loadChildren, bool loadAllChildren)
|
||||
{
|
||||
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")
|
||||
};
|
||||
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");
|
||||
|
||||
if (!string.IsNullOrEmpty((string)dr.GetValue("appid")))
|
||||
{
|
||||
@@ -1813,12 +1811,11 @@ namespace VEPROMS.CSLA.Library
|
||||
|
||||
private ROFSTLookup.RoExtension ConvertToRoExtensionObject(SafeDataReader dr)
|
||||
{
|
||||
ROFSTLookup.RoExtension re = new ROFSTLookup.RoExtension
|
||||
{
|
||||
Offset = (int)dr.GetValue("Offset"),
|
||||
RoidExt = (string)dr.GetValue("RoidExt"),
|
||||
AccPageExt = (string)dr.GetValue("AccPageExt")
|
||||
};
|
||||
ROFSTLookup.RoExtension re = new ROFSTLookup.RoExtension();
|
||||
|
||||
re.Offset = (int)dr.GetValue("Offset");
|
||||
re.RoidExt = (string)dr.GetValue("RoidExt");
|
||||
re.AccPageExt = (string)dr.GetValue("AccPageExt");
|
||||
|
||||
return re;
|
||||
}
|
||||
@@ -1878,6 +1875,7 @@ 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;
|
||||
@@ -2131,68 +2129,41 @@ 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) || str.ToUpper().IndexOf("@HSP(") < 0)
|
||||
if (string.IsNullOrEmpty(str))
|
||||
return str;
|
||||
|
||||
string rtnstr = str;
|
||||
int indx;
|
||||
|
||||
string processingstr = str; //holds current string being processed
|
||||
int indx; //current position of @HSP( in string
|
||||
int endpos = 0; //end of last parens
|
||||
while ((indx = rtnstr.ToUpper().IndexOf("@HSP(")) > -1)
|
||||
{
|
||||
string resstr = rtnstr.Substring(0, indx);
|
||||
int endHsp = rtnstr.IndexOf(")", indx);
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
Stack<char> endparens = new Stack<char>();
|
||||
|
||||
while ((indx = processingstr.ToUpper().IndexOf("@HSP(")) > -1)
|
||||
//B2026 - 002 handle if parens inside a HSP
|
||||
int startpos = indx + 5;
|
||||
while (rtnstr.Substring(startpos, endHsp - startpos).Contains("("))
|
||||
{
|
||||
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;
|
||||
}
|
||||
startpos = rtnstr.IndexOf("(", startpos + 1, endHsp - startpos) + 1;
|
||||
endHsp = rtnstr.IndexOf(")", endHsp + 1);
|
||||
}
|
||||
|
||||
//Add the text inside the @HSP(...)
|
||||
string tmpstr = processingstr.Substring(indx + 5, endpos - indx - 5);
|
||||
string tmpstr = rtnstr.Substring(indx + 5, endHsp - 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);
|
||||
|
||||
//Set the processing string to after the ending parens found in case multiple @HSP
|
||||
processingstr = endpos + 1 >= processingstr.Length ? "" : processingstr.Substring(endpos + 1);
|
||||
resstr = resstr + tmpstr;
|
||||
rtnstr = resstr + rtnstr.Substring(endHsp + 1);
|
||||
}
|
||||
|
||||
//add text after last end parens
|
||||
sb.Append(processingstr);
|
||||
|
||||
return sb.ToString();
|
||||
return rtnstr;
|
||||
}
|
||||
|
||||
private int StringLength(byte[] ab, int offset)
|
||||
@@ -2304,7 +2275,7 @@ namespace VEPROMS.CSLA.Library
|
||||
{
|
||||
rc.roid = FormatRoidKey(roid).Substring(0, 12);
|
||||
|
||||
DocVersionConfig dvc = _myDocVersionInfo?.DocVersionConfig;
|
||||
DocVersionConfig dvc = (_myDocVersionInfo != null) ? _myDocVersionInfo.DocVersionConfig : null;
|
||||
if (dvc != null) dvc.SelectedSlave = this.SelectedSlave;
|
||||
|
||||
switch (rc.roid)
|
||||
@@ -2312,49 +2283,49 @@ namespace VEPROMS.CSLA.Library
|
||||
case "FFFF00000001":
|
||||
rc.title = "Number";
|
||||
rc.appid = "U-NUMBER";
|
||||
rc.value = dvc?.Unit_Number;
|
||||
rc.value = (dvc != null) ? dvc.Unit_Number : null;
|
||||
break;
|
||||
|
||||
case "FFFF00000002":
|
||||
rc.title = "Other Number";
|
||||
rc.appid = "U-OTHERNUMBER";
|
||||
rc.value = dvc?.Other_Unit_Number;
|
||||
rc.value = (dvc != null) ? dvc.Other_Unit_Number : null;
|
||||
break;
|
||||
|
||||
case "FFFF00000003":
|
||||
rc.title = "Text";
|
||||
rc.appid = "U-TEXT";
|
||||
rc.value = dvc?.Unit_Text;
|
||||
rc.value = (dvc != null) ? dvc.Unit_Text : null;
|
||||
break;
|
||||
|
||||
case "FFFF00000004":
|
||||
rc.title = "Other Text";
|
||||
rc.appid = "U-OTHERTEXT";
|
||||
rc.value = dvc?.Other_Unit_Text;
|
||||
rc.value = (dvc != null) ? dvc.Other_Unit_Text : null;
|
||||
break;
|
||||
|
||||
case "FFFF00000005":
|
||||
rc.title = "ID";
|
||||
rc.appid = "U-ID";
|
||||
rc.value = dvc?.Unit_ID;
|
||||
rc.value = (dvc != null) ? dvc.Unit_ID : null;
|
||||
break;
|
||||
|
||||
case "FFFF00000006":
|
||||
rc.title = "Other ID";
|
||||
rc.appid = "U-OTHERID";
|
||||
rc.value = dvc?.Other_Unit_ID;
|
||||
rc.value = (dvc != null) ? dvc.Other_Unit_ID : null;
|
||||
break;
|
||||
|
||||
case "FFFF00000007":
|
||||
rc.title = "Name";
|
||||
rc.appid = "U-NAME";
|
||||
rc.value = dvc?.Unit_Name;
|
||||
rc.value = (dvc != null) ? dvc.Unit_Name : null;
|
||||
break;
|
||||
|
||||
case "FFFF00000008":
|
||||
rc.title = "Other Name";
|
||||
rc.appid = "U-OTHERNAME";
|
||||
rc.value = dvc?.Other_Unit_Name;
|
||||
rc.value = (dvc != null) ? dvc.Other_Unit_Name : null;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -2,12 +2,13 @@ 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;
|
||||
@@ -91,10 +92,6 @@ 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; }
|
||||
@@ -138,7 +135,6 @@ namespace Volian.Controls.Library
|
||||
if (_docVersionInfo?.VersionID != value?.VersionID)
|
||||
{
|
||||
changedDocVersion = true;
|
||||
askedAboutchangedDocVersion = false;
|
||||
}
|
||||
|
||||
_docVersionInfo = value;
|
||||
@@ -652,10 +648,9 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
//do nothing - is still checked out
|
||||
}
|
||||
else if (changedDocVersion && !askedAboutchangedDocVersion)
|
||||
{
|
||||
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)
|
||||
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)
|
||||
{
|
||||
|
||||
InitialProgressBarMessage = "Updating ROs";
|
||||
|
||||
ROFstInfo roFstInfo = ROFstInfo.Get(fstid);
|
||||
@@ -669,14 +664,6 @@ namespace Volian.Controls.Library
|
||||
MyROFST = roFstInfo;
|
||||
|
||||
updatedROs = true;
|
||||
|
||||
askedAboutchangedDocVersion = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
askedAboutchangedDocVersion = true;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -15,8 +15,6 @@ using System.Linq;
|
||||
|
||||
namespace Volian.Controls.Library
|
||||
{
|
||||
#pragma warning disable IDE1006 // Naming Styles
|
||||
#pragma warning disable IDE0044 // Add readonly modifier
|
||||
public partial class DisplaySearch : UserControl
|
||||
{
|
||||
#region Public Events/Handlers
|
||||
@@ -26,12 +24,14 @@ namespace Volian.Controls.Library
|
||||
|
||||
private void OnPrintRequest(DisplaySearchEventArgs args)
|
||||
{
|
||||
PrintRequest?.Invoke(this, args);
|
||||
if (PrintRequest != null)
|
||||
PrintRequest(this, args);
|
||||
}
|
||||
|
||||
private void OnSearchComplete(DisplaySearchEventArgs args)
|
||||
{
|
||||
SearchComplete?.Invoke(this, args);
|
||||
if (SearchComplete != null)
|
||||
SearchComplete(this, args);
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -218,10 +218,8 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
if (_TmrRefresh == null)
|
||||
{
|
||||
_TmrRefresh = new Timer
|
||||
{
|
||||
Interval = 1000
|
||||
};
|
||||
_TmrRefresh = new Timer();
|
||||
_TmrRefresh.Interval = 1000;
|
||||
_TmrRefresh.Tick += _TmrRefresh_Tick;
|
||||
}
|
||||
return _TmrRefresh;
|
||||
@@ -326,6 +324,7 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
if (tabSearchTypes.SelectedTab == tabSearchTypes.Tabs[2])
|
||||
{ // RO Search
|
||||
ROFSTLookup.rochild[] chld = null;
|
||||
ROFSTLookup.rochild ch;
|
||||
if (cmboTreeROs.SelectedNode != null)
|
||||
{
|
||||
@@ -337,16 +336,18 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
else
|
||||
{
|
||||
if (cmboTreeROs.SelectedNode.Tag is ROFSTLookup.rodbi db)
|
||||
if (cmboTreeROs.SelectedNode.Tag is ROFSTLookup.rodbi)
|
||||
{
|
||||
return $"{_MyRODbID.ToString()}:{string.Format("{0}", db.dbiID.ToString("X4"))}";
|
||||
ROFSTLookup.rodbi db = (ROFSTLookup.rodbi)cmboTreeROs.SelectedNode.Tag;
|
||||
return _MyRODbID.ToString() + ":" + string.Format("{0}", db.dbiID.ToString("X4"));
|
||||
}
|
||||
else if (cmboTreeROs.SelectedNode.Tag is ROFSTLookup.rochild roch)
|
||||
else if (cmboTreeROs.SelectedNode.Tag is ROFSTLookup.rochild)
|
||||
{
|
||||
ROFSTLookup.rochild[] chld = roch.children;
|
||||
ch = (ROFSTLookup.rochild)cmboTreeROs.SelectedNode.Tag;
|
||||
chld = ch.children;
|
||||
// build a list of ROs to search
|
||||
// B2022-118: remove the ending comma otherwise query will fail
|
||||
string strRtnStr = $"{_MyRODbID.ToString()}:{GetROsToSearch(chld)}";
|
||||
string strRtnStr = _MyRODbID.ToString() + ":" + GetROsToSearch(chld);
|
||||
if (strRtnStr.EndsWith(","))
|
||||
strRtnStr = strRtnStr.Substring(0, strRtnStr.Length - 1);
|
||||
return strRtnStr;
|
||||
@@ -390,6 +391,7 @@ namespace Volian.Controls.Library
|
||||
cmbResultsStyle.Enabled = false;
|
||||
tabSearchTypes.SelectedTabChanged += new TabStrip.SelectedTabChangedEventHandler(tabSearchTypes_SelectedTabChanged);
|
||||
// Don't do this here. If you do then the /DB parameter has not yet been set, which will cause the database menu to be displayed
|
||||
//SetupContextMenu(); // so that the symbol list is available without selecting a procedure set or procedure
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -445,6 +447,20 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
btnSearch.Enabled = (cbxTranCategory.Items.Count > 0); // B2017-038 disable search button if no format selected
|
||||
//enable-disable doc version nodes based on version type if selected
|
||||
if (cbxTranVersion.SelectedIndex > -1)
|
||||
{
|
||||
if (dicExpandedFolderNodes.Count > 0)
|
||||
{
|
||||
foreach (DevComponents.AdvTree.Node n in dicExpandedFolderNodes.Keys)
|
||||
{
|
||||
DocVersionInfo dvi = (DocVersionInfo)n.Tag;
|
||||
if (cbxTranVersion.Tag.ToString().Contains(dvi.VersionID.ToString()))
|
||||
n.Enabled = true;
|
||||
else
|
||||
n.Enabled = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
//setup transition format versions
|
||||
this.Cursor = Cursors.WaitCursor;
|
||||
if (myFormatVersionList == null)
|
||||
@@ -452,22 +468,15 @@ namespace Volian.Controls.Library
|
||||
this.Refresh();
|
||||
myFormatVersionList = FormatVersionList.GetFormatVersions();
|
||||
cbxTranVersion.DisplayMember = "Title";
|
||||
|
||||
List<FormatVersion> fvlst = myFormatVersionList.GroupBy(x => x.FormatID).Select(group => new
|
||||
FormatVersion(title: group.Max(x => x.Title),
|
||||
formatID: group.Key,
|
||||
versionID: group.Max(x => x.VersionID)
|
||||
)).OrderBy(y => y.Title).ToList();
|
||||
|
||||
//B2026-055 – Transition Search Improvements
|
||||
//Added an All option to allow resetting of the enabling/disabling tree options
|
||||
cbxTranVersion.Items.Add(new FormatVersion("All", -1, -1));
|
||||
|
||||
foreach (FormatVersion fv in fvlst)
|
||||
int lastLastFormatID = 0;
|
||||
foreach (FormatVersion fv in myFormatVersionList)
|
||||
{
|
||||
if (fv.FormatID != lastLastFormatID)
|
||||
{
|
||||
cbxTranVersion.Items.Add(fv);
|
||||
lastLastFormatID = fv.FormatID;
|
||||
}
|
||||
}
|
||||
|
||||
cbxTranVersion.SelectedIndexChanged -= new EventHandler(cbxTranVersion_SelectedIndexChanged);
|
||||
cbxTranVersion.SelectedIndexChanged += new EventHandler(cbxTranVersion_SelectedIndexChanged);
|
||||
cbxTranFormat.SelectedIndexChanged -= new EventHandler(cbxTranFormat_SelectedIndexChanged);
|
||||
@@ -492,6 +501,32 @@ namespace Volian.Controls.Library
|
||||
|
||||
public void cbxTranFormat_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
#region 1st cut
|
||||
//if (cbxTranFormat.SelectedItem.ToString() == "All")
|
||||
//{
|
||||
// cbxTranCategory.Items.Clear();
|
||||
// cbxTranCategory.Items.Add("All");
|
||||
// cbxTranCategory.Items.Add("Internal");
|
||||
// cbxTranCategory.Items.Add("External");
|
||||
// cbxTranCategory.Items.Add("Outside");
|
||||
// cbxTranCategory.SelectedIndex = 0;
|
||||
//}
|
||||
//else if (cbxTranFormat.SelectedItem.ToString().Contains("{Proc"))
|
||||
//{
|
||||
// cbxTranCategory.Items.Clear();
|
||||
// cbxTranCategory.Items.Add("All");
|
||||
// cbxTranCategory.Items.Add("External");
|
||||
// cbxTranCategory.Items.Add("Outside");
|
||||
// cbxTranCategory.SelectedIndex = 0;
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// cbxTranCategory.Items.Clear();
|
||||
// cbxTranCategory.Items.Add("Internal");
|
||||
// cbxTranCategory.SelectedIndex = 0;
|
||||
//}
|
||||
#endregion
|
||||
|
||||
#region 2nd cut
|
||||
if (cbxTranFormat.SelectedItem.ToString().Contains("{Proc"))
|
||||
{
|
||||
@@ -521,21 +556,41 @@ namespace Volian.Controls.Library
|
||||
string versionList = string.Empty;
|
||||
string sep = string.Empty;
|
||||
FormatVersion sfv = cbxTranVersion.SelectedItem as FormatVersion;
|
||||
|
||||
versionList = string.Join(",", myFormatVersionList.Where(x => x.FormatID == sfv?.FormatID).Select(y => y.VersionID));
|
||||
|
||||
foreach (FormatVersion fv in myFormatVersionList)
|
||||
{
|
||||
if (fv.FormatID == sfv.FormatID)
|
||||
{
|
||||
versionList += sep + fv.VersionID;
|
||||
sep = ",";
|
||||
}
|
||||
}
|
||||
cbxTranVersion.Tag = versionList;
|
||||
cbxTranFormatFillIn(versionList);
|
||||
|
||||
List<DevComponents.AdvTree.Node> uncheckNodes = new List<DevComponents.AdvTree.Node>();
|
||||
foreach (DevComponents.AdvTree.Node n in dicSelectedFolderNodes.Keys)
|
||||
if (dicExpandedFolderNodes.Count > 0)
|
||||
{
|
||||
FolderInfo fi = n.Tag as FolderInfo; // this was crashing in old version of code
|
||||
foreach (DevComponents.AdvTree.Node n in dicExpandedFolderNodes.Keys)
|
||||
{
|
||||
FolderInfo fi = (FolderInfo)n.Tag;
|
||||
// if this folder has a docversion, use its id:
|
||||
string svid = null;
|
||||
if (fi?.FolderDocVersionCount > 0)
|
||||
if (fi.FolderDocVersionCount > 0)
|
||||
svid = fi.FolderDocVersions[0].VersionID.ToString();
|
||||
if (svid != null && !string.IsNullOrEmpty(versionList) && !versionList.Split(',').Contains(svid))
|
||||
if (cbxTranVersion.Tag.ToString().Contains(svid))
|
||||
n.Enabled = true;
|
||||
else
|
||||
n.Enabled = false;
|
||||
}
|
||||
}
|
||||
|
||||
List<DevComponents.AdvTree.Node> uncheckNodes = new List<Node>();
|
||||
foreach (DevComponents.AdvTree.Node n in dicSelectedFolderNodes.Keys)
|
||||
{
|
||||
FolderInfo fi = (FolderInfo)n.Tag; // this was crashing in old version of code
|
||||
// if this folder has a docversion, use its id:
|
||||
string svid = null;
|
||||
if (fi.FolderDocVersionCount > 0)
|
||||
svid = fi.FolderDocVersions[0].VersionID.ToString();
|
||||
if (svid != null && !versionList.Contains(svid))
|
||||
uncheckNodes.Add(n);
|
||||
else
|
||||
n.Enabled = true;
|
||||
@@ -561,17 +616,13 @@ namespace Volian.Controls.Library
|
||||
dicSelectedFolderNodes.Clear();
|
||||
}
|
||||
}
|
||||
|
||||
//B2026-055 – Transition Search Improvements
|
||||
//Update Enabling/Disabling of Tree Elements
|
||||
TraverseTree(advTreeProcSets.Nodes[0], cbxTranVersion.Tag?.ToString().Split(','));
|
||||
|
||||
this.Cursor = Cursors.Default;
|
||||
}
|
||||
|
||||
// C2020-033: Update the search panel for Incoming transitions. This gets called from the tree view & the ribbon
|
||||
public void UpdateSearchIncTransResults()
|
||||
{
|
||||
//IncTransSelectedCount = 0;
|
||||
tabSearchTypes.SelectedTab = tabSearchTypes.Tabs[4];
|
||||
|
||||
lbSrchResultsIncTrans.DataSource = null;
|
||||
@@ -648,6 +699,13 @@ namespace Volian.Controls.Library
|
||||
DevComponents.AdvTree.Node newnode;
|
||||
advTreeStepTypes.Nodes.Clear();
|
||||
// Add a dummy node for searching Word Sections (MS Word sections)
|
||||
//newnode = new DevComponents.AdvTree.Node();
|
||||
//newnode.Text = "Word Sections";
|
||||
//newnode.Selectable = true;
|
||||
//newnode.CheckBoxAlignment = DevComponents.AdvTree.eCellPartAlignment.NearCenter;
|
||||
//newnode.CheckBoxStyle = eCheckBoxStyle.CheckBox;
|
||||
//newnode.CheckBoxThreeState = false;
|
||||
//newnode.CheckBoxVisible = true;
|
||||
newnode = NewAdvTreeNode("WORD Sections", true, true); // C2020-010: Change Accessory Sections to Word Sections
|
||||
wordSectionTreeNode = newnode;
|
||||
// C2021-028: RNO Only search, disable Word section tree node
|
||||
@@ -665,6 +723,16 @@ namespace Volian.Controls.Library
|
||||
StepData sd = sdl[sdr.Index]; // get the step type record
|
||||
string parentName = sd.ParentType; // this gets the parent of the this step/substep type
|
||||
|
||||
//Console.WriteLine("{0} {1} - {2}", parentName,sd.Type,sdr.Name);
|
||||
//newnode = new DevComponents.AdvTree.Node();
|
||||
//newnode.Text = sdr.Name;
|
||||
//newnode.Name = sd.Type; // this needed for the FindNodeByName() function
|
||||
//newnode.Tag = sd;
|
||||
//newnode.Selectable = true;
|
||||
//newnode.CheckBoxAlignment = DevComponents.AdvTree.eCellPartAlignment.NearCenter;
|
||||
//newnode.CheckBoxStyle = eCheckBoxStyle.CheckBox;
|
||||
//newnode.CheckBoxThreeState = false;
|
||||
//newnode.CheckBoxVisible = true;
|
||||
if (parentName.Equals("Base"))
|
||||
{
|
||||
newnode = NewAdvTreeNode(sdr.Name, true, true);
|
||||
@@ -758,7 +826,8 @@ namespace Volian.Controls.Library
|
||||
//C2023-010: Select all child nodes when a subtype is selected
|
||||
private void pnode_selected(object sender, EventArgs e)
|
||||
{
|
||||
if (sender is DevComponents.AdvTree.Node pnode && pnode.HasChildNodes)
|
||||
DevComponents.AdvTree.Node pnode = sender as DevComponents.AdvTree.Node;
|
||||
if (pnode != null && pnode.HasChildNodes)
|
||||
{
|
||||
CheckTreeNodeChildren(pnode.Nodes);
|
||||
}
|
||||
@@ -773,21 +842,18 @@ namespace Volian.Controls.Library
|
||||
int fiCount = fi.ChildFolderCount;
|
||||
advTreeProcSets.Nodes.Clear();
|
||||
lstCheckedDocVersions.Clear();
|
||||
topnode = new DevComponents.AdvTree.Node
|
||||
{
|
||||
Text = "Available Procedure Sets",
|
||||
Tag = fi,
|
||||
DataKey = fi.FolderID
|
||||
};
|
||||
topnode = new DevComponents.AdvTree.Node();
|
||||
topnode.Text = "Available Procedure Sets";
|
||||
topnode.Tag = fi;
|
||||
topnode.DataKey = fi.FolderID;
|
||||
advTreeProcSets.Nodes.Add(topnode);
|
||||
//advTreeProcSets.AfterNodeInsert += new TreeNodeCollectionEventHandler(advTreeProcSets_AfterNodeInsert);
|
||||
|
||||
//B2023-076: Adding option to select all procedure sets
|
||||
DevComponents.AdvTree.Node selectAllNode = new Node
|
||||
{
|
||||
Text = SelectAllProcedureSetsText,
|
||||
Tag = SelectAllProcedureSetsText,
|
||||
CheckBoxVisible = true
|
||||
};
|
||||
DevComponents.AdvTree.Node selectAllNode = new Node();
|
||||
selectAllNode.Text = SelectAllProcedureSetsText;
|
||||
selectAllNode.Tag = SelectAllProcedureSetsText;
|
||||
selectAllNode.CheckBoxVisible = true;
|
||||
selectAllNode.NodeClick += new EventHandler(AllProcedureSets_clicked);
|
||||
topnode.Nodes.Add(selectAllNode);
|
||||
|
||||
@@ -795,22 +861,18 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
foreach (FolderInfo fic in fi.SortedChildFolders)
|
||||
{
|
||||
DevComponents.AdvTree.Node newnode = new DevComponents.AdvTree.Node
|
||||
{
|
||||
Text = fic.ToString(),
|
||||
Tag = fic,
|
||||
DataKey = fi.FolderID
|
||||
};
|
||||
DevComponents.AdvTree.Node newnode = new DevComponents.AdvTree.Node();
|
||||
newnode.Text = fic.ToString();
|
||||
newnode.Tag = fic;
|
||||
newnode.DataKey = fi.FolderID;
|
||||
AddCheckBox(true, newnode);//C2016-045 Allow Folders to be selected.
|
||||
cntnd++;
|
||||
if (fic.ChildFolderCount > 0 || fic.FolderDocVersionCount > 0) // allow for '+' for tree expansion
|
||||
{
|
||||
if (fic.ChildFolderCount > 0) // B2017-176: Do not display the Working Draft node (don't create dummy for expander)
|
||||
{
|
||||
DevComponents.AdvTree.Node tnt = new DevComponents.AdvTree.Node
|
||||
{
|
||||
Text = DummyNodeText
|
||||
};
|
||||
DevComponents.AdvTree.Node tnt = new DevComponents.AdvTree.Node();
|
||||
tnt.Text = DummyNodeText;
|
||||
newnode.Nodes.Add(tnt);
|
||||
}
|
||||
topnode.Nodes.Add(newnode);
|
||||
@@ -819,12 +881,10 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
else
|
||||
{
|
||||
DevComponents.AdvTree.Node newnode = new DevComponents.AdvTree.Node
|
||||
{
|
||||
Text = fi.ToString(),
|
||||
Tag = fi,
|
||||
DataKey = fi.FolderID
|
||||
};
|
||||
DevComponents.AdvTree.Node newnode = new DevComponents.AdvTree.Node();
|
||||
newnode.Text = fi.ToString();
|
||||
newnode.Tag = fi;
|
||||
newnode.DataKey = fi.FolderID;
|
||||
AddCheckBox(true, newnode);//C2016-045 Allow Folders to be selected.
|
||||
topnode.Nodes.Add(newnode);
|
||||
lstCheckedDocVersions.Add(Mydocversion);
|
||||
@@ -835,10 +895,8 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
cntnd++;
|
||||
fi = Mydocversion.MyFolder;
|
||||
topnode = new DevComponents.AdvTree.Node
|
||||
{
|
||||
Text = fi.ToString()
|
||||
};
|
||||
topnode = new DevComponents.AdvTree.Node();
|
||||
topnode.Text = fi.ToString();
|
||||
advTreeProcSets.Nodes.Add(topnode);
|
||||
topnode.Tag = fi;
|
||||
topnode.DataKey = fi.FolderID;
|
||||
@@ -873,35 +931,30 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
foreach (FolderInfo fic in fi.SortedChildFolders)
|
||||
{
|
||||
DevComponents.AdvTree.Node newnode = new DevComponents.AdvTree.Node
|
||||
{
|
||||
Text = fic.ToString(),
|
||||
Tag = fic,
|
||||
DataKey = fic.FolderID
|
||||
};
|
||||
DevComponents.AdvTree.Node newnode = new DevComponents.AdvTree.Node();
|
||||
newnode.Text = fic.ToString();
|
||||
newnode.Tag = fic;
|
||||
newnode.DataKey = fic.FolderID;
|
||||
par.Nodes.Add(newnode);
|
||||
AddCheckBox(true, newnode);//C2016-045 Allow Folders to be selected.
|
||||
newnode.Enabled = true;
|
||||
|
||||
if (fic.ChildFolderCount > 0) // B2017-176: Only expand if folder has folders (not working draft nodes)
|
||||
{
|
||||
DevComponents.AdvTree.Node tnt = new DevComponents.AdvTree.Node
|
||||
{
|
||||
Text = DummyNodeText
|
||||
};
|
||||
DevComponents.AdvTree.Node tnt = new DevComponents.AdvTree.Node();
|
||||
tnt.Text = DummyNodeText;
|
||||
newnode.Nodes.Add(tnt);
|
||||
// B2017-176: Only expand if folder has folders (not working draft nodes): the following was moved from the code
|
||||
// that would check if this should be enabled if seraching for transition types. The transition controls
|
||||
// had a list of associated docversions, so needed to get the docversion in the folder:
|
||||
if (tabSearchTypes.SelectedTab == tabTranSearch && !dicSelectedFolderNodes.ContainsKey(newnode))
|
||||
dicSelectedFolderNodes.Add(newnode, false);
|
||||
}
|
||||
|
||||
if (tabSearchTypes.SelectedTab == tabTranSearch)
|
||||
{
|
||||
//B2026-055 – Transition Search Improvements
|
||||
//Update Enabling/Disabling of Tree Elements
|
||||
TraverseTree(advTreeProcSets.Nodes[0], cbxTranVersion.Tag?.ToString().Split(','));
|
||||
if (!dicSelectedFolderNodes.ContainsKey(newnode)) dicSelectedFolderNodes.Add(newnode, false);
|
||||
// get the docversion for this folder, if it has one and determine whether it is enabled for transitions:
|
||||
string svid = null;
|
||||
if (fic.FolderDocVersionCount > 0)
|
||||
svid = fic.FolderDocVersions[0].VersionID.ToString();
|
||||
newnode.Enabled = svid != null && cbxTranVersion.Tag != null ? cbxTranVersion.Tag.ToString().Contains(svid) : false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -911,10 +964,10 @@ namespace Volian.Controls.Library
|
||||
public void AdvTree_AfterExpandorCollapse(object sender, AdvTreeNodeEventArgs e)
|
||||
{
|
||||
Node bottomNode = BottomTreeNode(cmboTreeROs.AdvTree.Nodes);
|
||||
_ = cmboTreeROs.AdvTree.Nodes[cmboTreeROs.AdvTree.Nodes.Count - 1]; //LastNode
|
||||
Node lastNode = cmboTreeROs.AdvTree.Nodes[cmboTreeROs.AdvTree.Nodes.Count - 1];
|
||||
|
||||
int top = cmboTreeROs.AdvTree.Nodes[0].Bounds.Top;
|
||||
int bottom;
|
||||
int bottom = bottomNode.Bounds.Bottom + 5;
|
||||
int hScrollBarHeight = cmboTreeROs.AdvTree.HScrollBar != null ? cmboTreeROs.AdvTree.HScrollBar.Height : 0;
|
||||
bottom = bottomNode.Bounds.Bottom + 5;
|
||||
cmboTreeROs.AdvTree.Size = new Size(cmboTreeROs.AdvTree.Size.Width, Math.Min(525, bottom - top + hScrollBarHeight));
|
||||
@@ -923,7 +976,10 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
int yLookFor = (bottom - cmboTreeROs.AdvTree.Size.Height) + 2 * hScrollBarHeight;
|
||||
Node topNode = FindTreeNodeAt(cmboTreeROs.AdvTree.Nodes, yLookFor);
|
||||
topNode?.EnsureVisible();
|
||||
if (topNode != null)
|
||||
{
|
||||
topNode.EnsureVisible();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -934,10 +990,8 @@ namespace Volian.Controls.Library
|
||||
public void SetupAnnotationSearch(AnnotationDetails annotationDetails, DisplayTabControl tc)
|
||||
{
|
||||
_AnnotationDetails = annotationDetails;
|
||||
List<AnnotationTypeSearch> annoTypes = new List<AnnotationTypeSearch>
|
||||
{
|
||||
new AnnotationTypeSearch("All Annotations", string.Empty)
|
||||
};
|
||||
List<AnnotationTypeSearch> annoTypes = new List<AnnotationTypeSearch>();
|
||||
annoTypes.Add(new AnnotationTypeSearch("All Annotations", string.Empty));
|
||||
AnnotationTypeInfoList annoList = AnnotationTypeInfoList.Get();
|
||||
foreach (AnnotationTypeInfo ati in annoList)
|
||||
annoTypes.Add(new AnnotationTypeSearch(ati.Name, ati.TypeID.ToString()));
|
||||
@@ -1004,15 +1058,14 @@ namespace Volian.Controls.Library
|
||||
|
||||
foreach (Symbol sym in sl)
|
||||
{
|
||||
DevComponents.DotNetBar.ButtonItem btnCM = new DevComponents.DotNetBar.ButtonItem
|
||||
{
|
||||
Text = string.Format("{0}", (char)sym.Unicode),
|
||||
DevComponents.DotNetBar.ButtonItem btnCM = new DevComponents.DotNetBar.ButtonItem();
|
||||
|
||||
btnCM.Text = string.Format("{0}", (char)sym.Unicode);
|
||||
// to name button use unicode rather than desc, desc may have spaces or odd chars
|
||||
Name = $"btnCM{sym.Unicode.ToString()}",
|
||||
Tooltip = sym.Desc,
|
||||
Tag = string.Format(@"{0}", sym.Unicode),
|
||||
FontBold = true
|
||||
};
|
||||
btnCM.Name = "btnCM" + sym.Unicode.ToString();
|
||||
btnCM.Tooltip = sym.Desc;
|
||||
btnCM.Tag = string.Format(@"{0}", sym.Unicode);
|
||||
btnCM.FontBold = true;
|
||||
btnCM.Click += new System.EventHandler(btnSym_Click);
|
||||
galSymbols.SubItems.Add(btnCM);
|
||||
}
|
||||
@@ -1061,11 +1114,9 @@ namespace Volian.Controls.Library
|
||||
private DevComponents.AdvTree.Node NewAdvTreeNode(string nodetext, bool selectable, bool chxbxvisable)
|
||||
{
|
||||
DevComponents.AdvTree.Node newnode;
|
||||
newnode = new DevComponents.AdvTree.Node
|
||||
{
|
||||
Text = nodetext,
|
||||
Selectable = selectable
|
||||
};
|
||||
newnode = new DevComponents.AdvTree.Node();
|
||||
newnode.Text = nodetext;
|
||||
newnode.Selectable = selectable;
|
||||
AddCheckBox(chxbxvisable, newnode);//C2016-045 Allow Folders to be selected.
|
||||
return newnode;
|
||||
}
|
||||
@@ -1112,7 +1163,7 @@ namespace Volian.Controls.Library
|
||||
// folder properties dialog
|
||||
bool allowNonAdmin = IncTranCvtPerm();
|
||||
List<int> itmsEditable = new List<int>(); // return this list
|
||||
int listCount;
|
||||
int listCount = 0;
|
||||
if (all) // Check all in list
|
||||
{
|
||||
listCount = _SearchResults.Count;
|
||||
@@ -1136,13 +1187,14 @@ namespace Volian.Controls.Library
|
||||
// not all can be converted to text. If count of itmsEditable & lbis are different some cannot be edited.
|
||||
if (itmsEditable.Count == 0)
|
||||
{
|
||||
FlexibleMessageBox.Show($"You do not have permission to edit any of the procedures, sections, and/or steps{(all ? "." : " that are selected.")}",
|
||||
FlexibleMessageBox.Show("You do not have permission to edit any of the procedures, sections, and/or steps" + (all ? "." : " that are selected."),
|
||||
"Convert Transition to Text", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
return null;
|
||||
}
|
||||
else if (itmsEditable.Count != listCount)
|
||||
{
|
||||
DialogResult ans = FlexibleMessageBox.Show($"You only have permission to edit some of the procedures, sections, and/or steps that are selected.procedures, sections, and/or steps{(all ? "." : " that are selected.")}\r\n\r\n Should the conversion of the transitions to text continue?",
|
||||
DialogResult ans = FlexibleMessageBox.Show("You only have permission to edit some of the procedures, sections, and/or steps that are selected.procedures, sections, and/or steps" + (all ? "." : " that are selected.") +
|
||||
"\r\n\r\n Should the conversion of the transitions to text continue?",
|
||||
"Convert Transition to Text", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
|
||||
if (ans == DialogResult.No) return null;
|
||||
}
|
||||
@@ -1163,7 +1215,7 @@ namespace Volian.Controls.Library
|
||||
private void btnTranCvtSelToTxt_Click(object sender, EventArgs e)
|
||||
{
|
||||
// First see if all selected can be converted, i.e. user has permission to edit
|
||||
_ = lbSrchResultsIncTrans.CheckedItems;
|
||||
List<ListBoxItem> lbis = lbSrchResultsIncTrans.CheckedItems;
|
||||
List<int> itmsEditable = TranCvtCheckPermission(false);
|
||||
if (itmsEditable == null || itmsEditable.Count == 0) return;
|
||||
TranCvtToTxt(itmsEditable);
|
||||
@@ -1396,10 +1448,8 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
ROFSTLookup.rodbi db = dbs[i];
|
||||
|
||||
DevComponents.AdvTree.Node tn = new DevComponents.AdvTree.Node(db.dbiTitle)
|
||||
{
|
||||
Tag = db
|
||||
};
|
||||
DevComponents.AdvTree.Node tn = new DevComponents.AdvTree.Node(db.dbiTitle);
|
||||
tn.Tag = db;
|
||||
cmboTreeROs.Nodes.Add(tn);
|
||||
|
||||
AddDummyGroup(db, tn);
|
||||
@@ -1452,14 +1502,17 @@ namespace Volian.Controls.Library
|
||||
if (tn.HasChildNodes && tn.Nodes[0].Text != DummyNodeText) return; // already loaded.
|
||||
if (tn.HasChildNodes && tn.Nodes[0].Text == DummyNodeText) tn.Nodes[0].Remove();
|
||||
|
||||
ROFSTLookup.rochild[] chld;
|
||||
if (tn.Tag is ROFSTLookup.rodbi db)
|
||||
ROFSTLookup.rochild[] chld = null;
|
||||
|
||||
if (tn.Tag is ROFSTLookup.rodbi)
|
||||
{
|
||||
ROFSTLookup.rodbi db = (ROFSTLookup.rodbi)tn.Tag;
|
||||
MyROFSTLookup.LoadChildren(ref db);
|
||||
chld = db.children;
|
||||
}
|
||||
else if (tn.Tag is ROFSTLookup.rochild ch)
|
||||
else if (tn.Tag is ROFSTLookup.rochild)
|
||||
{
|
||||
ROFSTLookup.rochild ch = (ROFSTLookup.rochild)tn.Tag;
|
||||
MyROFSTLookup.LoadChildren(ref ch);
|
||||
chld = ch.children;
|
||||
}
|
||||
@@ -1478,6 +1531,8 @@ namespace Volian.Controls.Library
|
||||
for (int i = 0; i < chld.Length; i++)
|
||||
{
|
||||
ProgressBar_SetValue(i);
|
||||
DevComponents.AdvTree.Node tmp = null;
|
||||
|
||||
ROFSTLookup.rochild roc = chld[i];
|
||||
|
||||
// if this is a group, i.e. type 0, add a dummy node
|
||||
@@ -1501,13 +1556,10 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
|
||||
|
||||
Node tmp;
|
||||
if (roc.value == null)
|
||||
{
|
||||
tmp = new DevComponents.AdvTree.Node(roc.title)
|
||||
{
|
||||
Tag = roc
|
||||
};
|
||||
tmp = new DevComponents.AdvTree.Node(roc.title);
|
||||
tmp.Tag = roc;
|
||||
|
||||
int index = FindIndex(tn.Nodes, tmp.Text);
|
||||
tn.Nodes.Insert(index, tmp);
|
||||
@@ -1517,10 +1569,8 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
else
|
||||
{
|
||||
tmp = new DevComponents.AdvTree.Node(roc.title)
|
||||
{
|
||||
Tag = roc
|
||||
};
|
||||
tmp = new DevComponents.AdvTree.Node(roc.title);
|
||||
tmp.Tag = roc;
|
||||
|
||||
if (roc.roid.Length == 16)
|
||||
{
|
||||
@@ -1560,8 +1610,9 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
cbxFndUnLnkROVals.Enabled = false;
|
||||
}
|
||||
else if (cmboTreeROs.SelectedNode.Tag is ROFSTLookup.rochild ro)
|
||||
else if (cmboTreeROs.SelectedNode.Tag is ROFSTLookup.rochild)
|
||||
{
|
||||
ROFSTLookup.rochild ro = (ROFSTLookup.rochild)cmboTreeROs.SelectedNode.Tag;
|
||||
// B2022-026 RO Memory Reduction code - check children length
|
||||
cbxFndUnLnkROVals.Enabled = (ro.children == null || ro.children.Length <= 0);
|
||||
}
|
||||
@@ -1583,7 +1634,12 @@ namespace Volian.Controls.Library
|
||||
bool keeplooking = true;
|
||||
//build a stack (bread crumb trail) of where is procedure set came from within the tree.
|
||||
Stack<string> crumbs = new Stack<string>();
|
||||
//crumbs.Push(Mydocversion.Name); // ex: "working draft"
|
||||
//crumbs.Push(Mydocversion.MyFolder.Name); // ex: "Emergency Procedures"
|
||||
//crumbs.Push(Mydocversion.MyFolder.MyParent.Name); // ex: "STPNOC-South Texas"
|
||||
//crumbs.Push(advTreeProcSets.Nodes[0].Text); //top node of my tree
|
||||
|
||||
//crumbs.Push(Mydocversion.Name); // ex: "working draft"
|
||||
crumbs.Push(Mydocversion.MyFolder.Name); // ex: "Emergency Procedures"
|
||||
FolderInfo fi = Mydocversion.MyFolder.MyParent;
|
||||
while (fi != null)
|
||||
@@ -1768,11 +1824,13 @@ namespace Volian.Controls.Library
|
||||
// item to be clicked and to turn on/off the btnTranCvtSelToTxt button for converting selected to test.
|
||||
private void lbSrchResultsIncTrans_ItemClicked(object sender, EventArgs e)
|
||||
{
|
||||
if (sender is ListBoxItem lbi)
|
||||
ListBoxItem lbi = sender as ListBoxItem;
|
||||
if (lbi != null)
|
||||
{
|
||||
ItemBindingData ibd = lbi.Tag as ItemBindingData;
|
||||
ItemInfo ii = ibd.DataItem as ItemInfo;
|
||||
bool allowNonAdmin = IncTranCvtPerm();
|
||||
if (lbi.CheckState == CheckState.Checked && ibd.DataItem is ItemInfo ii)
|
||||
if (lbi.CheckState == CheckState.Checked && ii != null)
|
||||
{
|
||||
if (!allowNonAdmin && !UserInfo.CanEdit(MyUserInfo, ii.MyDocVersion))
|
||||
{
|
||||
@@ -1983,8 +2041,11 @@ namespace Volian.Controls.Library
|
||||
bool includeSpecialChars = (TextSearchString != @"\?"); // true;
|
||||
// Build list of selected types that were searched
|
||||
string typstr = null;
|
||||
foreach (string s in lstCheckedStepTypesStr) typstr = typstr == null ? s : $"{typstr}, {s}";
|
||||
TypesSelected = $"Filtered By: {typstr ?? "All Step Types"}";
|
||||
foreach (string s in lstCheckedStepTypesStr) typstr = typstr == null ? s : typstr + ", " + s;
|
||||
TypesSelected = "Filtered By: " + ((typstr != null) ? typstr : "All Step Types");
|
||||
//TypesSelected = "Step Types Searched: " + ((typstr != null) ? typstr : "all step types");
|
||||
//TypesSelected = "Searched Step Types: " + ((typstr != null) ? typstr : "all step types");
|
||||
//TypesSelected = (typstr != null) ? "Searched Step Types: " + typstr : "Searched All Step Types";
|
||||
string unitPrefix = string.Empty;
|
||||
if (Mydocversion != null)
|
||||
unitPrefix = Mydocversion.DocVersionConfig.Unit_ProcedureNumber;
|
||||
@@ -2004,8 +2065,11 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
else
|
||||
{
|
||||
//string typstr = null;
|
||||
//foreach (string s in lstCheckedStepTypesStr) typstr = typstr==null?s:typstr + ", " + s;
|
||||
//ReportTitle = "Search for Selected Types"; //"Proms - Search by Type: " + typstr;
|
||||
ReportTitle = "Step Element Report"; //"Proms - Search by Type: " + typstr;
|
||||
TypesSelected = $"Filtered By: {typstr}";
|
||||
TypesSelected = "Filtered By: " + typstr;
|
||||
SearchString = null;
|
||||
// B2022-031 - added a cbxProcSectSrch to filter out procedure and section titles from global search results.
|
||||
SearchResults = ItemInfoList.GetListFromTextSearch(DVISearchList, TypeSearchList, string.Empty, cbxBooleanTxtSrch.Checked ? 2 : cbxCaseSensitive.Checked ? 1 : 0, cbxProcSectSrch.Checked ? 1 : 0, ItemSearchIncludeLinks.Value, includeRTFformat, includeSpecialChars, unitPrefix, string.Empty, string.Empty);
|
||||
@@ -2014,6 +2078,14 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
else
|
||||
{
|
||||
//if (textSearchString.Equals(string.Empty))
|
||||
//{
|
||||
// MessageBox.Show("Please enter some search text, then click the Search button", "No Search Text");
|
||||
// cbxTextSearchText.Focus();
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
//ReportTitle = string.Format("Proms - {0} Search for '{1}'", cbxBooleanTxtSrch.Checked ? "Boolean" : "Text", TextSearchString);
|
||||
ReportTitle = string.Format("Search for '{0}'", TextSearchString);
|
||||
|
||||
// C2020-009: Search - Allow search 'By Word'.
|
||||
@@ -2044,6 +2116,8 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
}
|
||||
SearchString = TextSearchString;
|
||||
//TypesSelected = (typstr != null) ? "Searched Step Types: " + typstr : "Searched All Step Types";
|
||||
//TypesSelected = "Searched Step Types: " + ((typstr != null) ? typstr : "All Step Types");
|
||||
// B2022-031 - added a cbxProcSectSrch to filter out procedure and section titles from global search results.
|
||||
SearchResults = ItemInfoList.GetListFromTextSearch(DVISearchList, TypeSearchList, TextSearchString /*.Replace(@"\",@"\u9586?")*/, cbxBooleanTxtSrch.Checked ? 2 : cbxCaseSensitive.Checked ? 1 : 0, cbxProcSectSrch.Checked ? 1 : 0, cbxIncROTextSrch.Checked ? ItemSearchIncludeLinks.Value : ItemSearchIncludeLinks.Nothing, includeRTFformat, includeSpecialChars, unitPrefix, byWordPrefix, byWordSuffix);
|
||||
|
||||
@@ -2057,6 +2131,7 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
LastSearchWasAnnotations = true; // B2019-119 only refresh annotation search results if an annotation search was done
|
||||
SearchString = null;
|
||||
//ReportTitle = string.Format("Proms - Annotation Search for '{0}'", cbxTextSearchAnnotation.Text);
|
||||
if (cbxTextSearchAnnotation.Text == null || cbxTextSearchAnnotation.Text == string.Empty)
|
||||
{
|
||||
ReportTitle = string.Format("Find {0}{1}", cbxAnnoTypes.Text, (cbxAnnoTypes.SelectedIndex > 0) ? " Annotations" : string.Empty);
|
||||
@@ -2065,8 +2140,14 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
ReportTitle = string.Format("Search {0}{1} For '{2}'", cbxAnnoTypes.Text, (cbxAnnoTypes.SelectedIndex > 0) ? " Annotations" : string.Empty, cbxTextSearchAnnotation.Text);
|
||||
}
|
||||
//ReportTitle = string.Format("Search Annotations for '{0}'", cbxTextSearchAnnotation.Text);
|
||||
//string srchStr = ConvertSpecialChars(cbxTextSearchAnnotation.Text);//cbxTextSearchAnnotation.Text;
|
||||
//TypesSelected = "Searched Step Types: " + ((typstr != null) ? typstr : "All Step Types");
|
||||
|
||||
//SearchResults = ItemInfoList.GetListFromAnnotationSearch(dviSearchList, typeSearchList, textSearchString, srchStr, cbxCaseSensitiveAnnoText.Checked);
|
||||
|
||||
SearchResults = ItemInfoList.GetListFromAnnotationSearch(DVISearchList, TypeSearchList, AnnotationSearchType, cbxTextSearchAnnotation.Text, cbxCaseSensitiveAnnoText.Checked, unitPrefix);
|
||||
//UpdateAnnotationSearchResults();
|
||||
cmbResultsStyleIndex = 2; // display annotation text in results
|
||||
// C2019-001: Search in RNO steps only
|
||||
if (cbxRnoOnlyAnnot.Checked) GetInRNOResults();
|
||||
@@ -2074,7 +2155,9 @@ namespace Volian.Controls.Library
|
||||
else if (tabSearchTypes.SelectedTab == tabSearchTypes.Tabs[2]) // RO Search
|
||||
{
|
||||
SearchString = null;
|
||||
//ReportTitle = "Proms - Referenced Object Search";
|
||||
ReportTitle = string.Format("Search For Referenced Object:\n{0}", cmboTreeROs.Text);
|
||||
//TypesSelected = "Searched Step Types: " + ((typstr != null) ? typstr : "All Step Types");
|
||||
|
||||
if (cbxFndUnLnkROVals.Enabled && cbxFndUnLnkROVals.Checked)
|
||||
{
|
||||
@@ -2094,37 +2177,22 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
ReportTitle = string.Format("Search For Transitions: Transition Type: {0}, Transition Category: {1}", cbxTranFormat.SelectedItem, cbxTranCategory.SelectedItem);
|
||||
string docVersionList = string.Empty;
|
||||
bool bypassSearch = false;
|
||||
if (lstCheckedDocVersions.Count == 0)
|
||||
docVersionList = cbxTranVersion.Tag.ToString();
|
||||
else
|
||||
{
|
||||
//B2026-055 – Transition Search Improvements
|
||||
//Changed matching to take Filtered Formats into account if both tree
|
||||
//Items selected and Format dropdown filtered
|
||||
if (string.IsNullOrEmpty(cbxTranVersion.Tag?.ToString()))
|
||||
string sep = string.Empty;
|
||||
foreach (DocVersionInfo dvi in lstCheckedDocVersions)
|
||||
{
|
||||
docVersionList = string.Join(",", lstCheckedDocVersions.Select(y => y.VersionID.ToString()));
|
||||
}
|
||||
else
|
||||
{
|
||||
var fromatversionslst = cbxTranVersion.Tag.ToString().Split(',').Select(int.Parse);
|
||||
var selectedversionlst = lstCheckedDocVersions.Select(y => y.VersionID);
|
||||
docVersionList = string.Join(",", fromatversionslst.Intersect(selectedversionlst));
|
||||
|
||||
if (string.IsNullOrEmpty(docVersionList))
|
||||
{
|
||||
bypassSearch = true;
|
||||
FlexibleMessageBox.Show("No Matches Found.", "Search");
|
||||
}
|
||||
docVersionList += sep + dvi.VersionID.ToString();
|
||||
sep = ",";
|
||||
}
|
||||
}
|
||||
// B2018-134 to search specifically for Outside Transitions, set docVeronList to empty string so that all procedure sets are considered
|
||||
if (cbxTranCategory.SelectedItem?.ToString() == "Outside")
|
||||
if (cbxTranCategory.SelectedItem.ToString() == "Outside")
|
||||
docVersionList = string.Empty;
|
||||
// added TypeSearchList for bug fix B2015-055
|
||||
if (cbxTranFormat.SelectedIndex == -1) cbxTranFormatFillIn(docVersionList);
|
||||
if (!bypassSearch) SearchResults = ItemInfoList.GetListFromTransitionSearch(docVersionList, cbxTranFormat.SelectedIndex - 1, cbxTranCategory.SelectedItem?.ToString() == "All" ? string.Empty : (cbxTranCategory.SelectedItem?.ToString() ?? string.Empty), TypeSearchList);
|
||||
SearchResults = ItemInfoList.GetListFromTransitionSearch(docVersionList, cbxTranFormat.SelectedIndex - 1, cbxTranCategory.SelectedItem.ToString() == "All" ? string.Empty : cbxTranCategory.SelectedItem.ToString(), TypeSearchList);
|
||||
cmbResultsStyleIndex = 3; // display step text in results
|
||||
// C2019-001: Search in RNO steps only
|
||||
if (cbxRnoOnlyTrans.Checked) GetInRNOResults();
|
||||
@@ -2181,13 +2249,16 @@ namespace Volian.Controls.Library
|
||||
string tmpmsg = (cbxBooleanTxtSrch.Checked && ex.Message.Contains("Syntax error") && ex.Message.Contains("full-text search")) ?
|
||||
"Place \"\" around words that you are searching for, so that parser can better understand what you are trying to find" :
|
||||
ex.Message;
|
||||
FlexibleMessageBox.Show(tmpmsg, $"Search Error: {ex.GetType().Name}");
|
||||
FlexibleMessageBox.Show(tmpmsg, "Search Error: " + ex.GetType().Name);
|
||||
}
|
||||
finally
|
||||
{
|
||||
Cursor = savcursor;
|
||||
}
|
||||
//Console.WriteLine("{0} Milliseconds", TimeSpan.FromTicks(DateTime.Now.Ticks - start.Ticks).TotalMilliseconds);
|
||||
OnSearchComplete(new DisplaySearchEventArgs(TimeSpan.FromTicks(DateTime.Now.Ticks - start.Ticks)));
|
||||
//if (VlnSettings.DebugMode)
|
||||
// MessageBox.Show(string.Format("{0} Milliseconds", TimeSpan.FromTicks(DateTime.Now.Ticks - start.Ticks).TotalMilliseconds));
|
||||
}
|
||||
|
||||
private void ClearResults() // B2021-103 if no results when RNO only, clear results list. (moved from btnSearch_Click)
|
||||
@@ -2248,7 +2319,7 @@ namespace Volian.Controls.Library
|
||||
if (ii.SearchAnnotationText == null) ii.SearchAnnotationText = AnnotationInfo.Get(ii.ItemAnnotations[0].AnnotationID).SearchText;
|
||||
}
|
||||
|
||||
if (ii.SearchAnnotationText == null) ii.SearchAnnotationText = $"None - [{ii.DisplayText}]";
|
||||
if (ii.SearchAnnotationText == null) ii.SearchAnnotationText = "None - [" + ii.DisplayText + "]";
|
||||
else
|
||||
{
|
||||
hasAnnot = true;
|
||||
@@ -2398,7 +2469,7 @@ namespace Volian.Controls.Library
|
||||
//C2025-005 Find Step Elements
|
||||
//Need to refresh the Doc List and Available Step Types
|
||||
//if All Procedure Sets was selected
|
||||
if (n.Tag is string txt && txt == SelectAllProcedureSetsText)
|
||||
if (n.Tag == SelectAllProcedureSetsText)
|
||||
{
|
||||
if (n.Checked)
|
||||
{
|
||||
@@ -2449,6 +2520,7 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
if (tn.Checked)
|
||||
{
|
||||
//tn.Style = DevComponents.AdvTree.NodeStyles.Apple; // sets green background on selected folder(s)
|
||||
//B2023-112: Don't crash if on top 'All' node (did not have associated folder)
|
||||
FolderInfo fi = tn.Tag as FolderInfo;
|
||||
// if this folder has a docversion, use its id:
|
||||
@@ -2495,10 +2567,8 @@ namespace Volian.Controls.Library
|
||||
lstCheckedStepTypesStr.Clear();
|
||||
foreach (string str in strs)
|
||||
{
|
||||
Node newnode = new DevComponents.AdvTree.Node
|
||||
{
|
||||
Text = str
|
||||
};
|
||||
Node newnode = new DevComponents.AdvTree.Node();
|
||||
newnode.Text = str;
|
||||
advTreeStepTypes.Nodes.Add(newnode);
|
||||
}
|
||||
buildStepTypePannelTitle();
|
||||
@@ -2587,23 +2657,16 @@ namespace Volian.Controls.Library
|
||||
private void cbxTranFormatFillIn(string vid)
|
||||
{
|
||||
vid = vid.IndexOf(",") < 0 ? vid : vid.Substring(0, cbxTranVersion.Tag.ToString().IndexOf(","));
|
||||
//B2026-055 – Transition Search Improvements
|
||||
//Change the order of items happening
|
||||
//previous order was causing an error when clicked downdownlist to
|
||||
//show all items and then didn't select an item in the list
|
||||
cbxTranFormat.Items.Clear();
|
||||
cbxTranFormat.Items.Add("All");
|
||||
|
||||
if (!string.IsNullOrEmpty(vid))
|
||||
{
|
||||
DocVersionInfo dvi = DocVersionInfo.Get(int.Parse(vid));
|
||||
TransTypeList ttl = dvi.ActiveFormat.PlantFormat.FormatData.TransData.TransTypeList;
|
||||
|
||||
cbxTranFormat.Items.Clear();
|
||||
cbxTranFormat.Items.Add("All");
|
||||
|
||||
for (int i = 0; i < ttl.MaxIndex; i++)
|
||||
{
|
||||
cbxTranFormat.Items.Add(new TransItem(ttl[i].TransMenu.Replace("?.", string.Empty), ttl[i].TransFormat.Replace("?.", string.Empty)));
|
||||
}
|
||||
}
|
||||
|
||||
cbxTranFormat.SelectedIndex = 0;
|
||||
@@ -2654,9 +2717,9 @@ namespace Volian.Controls.Library
|
||||
|
||||
if (advTreeStepTypes.Nodes.Count == 1 && n.Checked)
|
||||
{
|
||||
if (n.Tag is DocVersionInfo info) // Only set MyDocVersion if it is a DocVersion
|
||||
if (n.Tag is DocVersionInfo) // Only set MyDocVersion if it is a DocVersion
|
||||
{
|
||||
Mydocversion = info;
|
||||
Mydocversion = (DocVersionInfo)n.Tag;
|
||||
StartAdvTreeStepTypesFillIn();// B2016-258 Hang after selecting a procedure if the Step Type panel is open on the search panel
|
||||
}
|
||||
}
|
||||
@@ -2681,6 +2744,8 @@ namespace Volian.Controls.Library
|
||||
|
||||
if (n.Checked)
|
||||
{
|
||||
//n.Style = DevComponents.AdvTree.NodeStyles.Apple; // B2023-112: coloring of proc set tree nodes was not working correctly
|
||||
|
||||
if (sd == null)
|
||||
{
|
||||
//C2023-010: Since the tag is null for Word Sections and HLS types, we need to determine which one has been selected. Word sections we need
|
||||
@@ -2809,7 +2874,7 @@ namespace Volian.Controls.Library
|
||||
|
||||
xpStepTypes.TitleStyle.BackColor1.Color = saveXpStepTypeTitleColor;
|
||||
}
|
||||
else
|
||||
else //lstCheckedStepTypes.Count > 0
|
||||
{
|
||||
// show how many selected whether panel is expanded or not
|
||||
xpStepTypes.TitleText = string.Format("{0} Step Element{1} Selected", lstCheckedStepTypes.Count, (lstCheckedStepTypes.Count > 1) ? "s" : string.Empty); // B2018-132 changed second {0} to {1}
|
||||
@@ -2881,6 +2946,7 @@ namespace Volian.Controls.Library
|
||||
private bool OnlyWordSectTypeSel()
|
||||
{
|
||||
// B2021-100: Enable/disable the RNO Only checkbox & WORD Sections tree node in Step Elements to Search.
|
||||
// lstCheckedStepTypes[x] = 0 for Word sections:
|
||||
if (lstCheckedStepTypes != null && lstCheckedStepTypes.Count == 1 && lstCheckedStepTypes[0] == 0)
|
||||
return true;
|
||||
|
||||
@@ -3079,6 +3145,11 @@ namespace Volian.Controls.Library
|
||||
lbSrchResults.DataSource = null;
|
||||
lbSrchResults.Items.Clear();
|
||||
toolTip1.SetToolTip(lbSrchResults, null);
|
||||
string unitPrefix = string.Empty;
|
||||
if (Mydocversion != null)
|
||||
unitPrefix = Mydocversion.DocVersionConfig.Unit_ProcedureNumber;
|
||||
if (unitPrefix.EndsWith("#"))
|
||||
unitPrefix = unitPrefix.Replace("#", string.Empty);
|
||||
Cursor = Cursors.WaitCursor;
|
||||
|
||||
try // B2021-045: don't crash if xml file cannot be loaded.
|
||||
@@ -3108,7 +3179,7 @@ namespace Volian.Controls.Library
|
||||
Node tnode = advTreeProcSets.FindNodeByDataKey(folderID);
|
||||
if (tnode != null) tnode.Checked = true;
|
||||
}
|
||||
Mydocversion = tmpdvi ?? fromLoadFiledvi;
|
||||
Mydocversion = tmpdvi == null ? fromLoadFiledvi : tmpdvi;
|
||||
}
|
||||
|
||||
AdvTreeStepTypesFillIn();
|
||||
@@ -3131,10 +3202,10 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
|
||||
string typstr = null;
|
||||
foreach (string s in lstCheckedStepTypesStr) typstr = typstr == null ? s : $"{typstr}, {s}";
|
||||
TypesSelected = $"Filtered By: {typstr ?? "All Step Types"}";
|
||||
foreach (string s in lstCheckedStepTypesStr) typstr = typstr == null ? s : typstr + ", " + s;
|
||||
TypesSelected = "Filtered By: " + ((typstr != null) ? typstr : "All Step Types");
|
||||
ReportTitle = "Step Element Report"; //"Proms - Search by Type: " + typstr;
|
||||
TypesSelected = $"Filtered By: {typstr}";
|
||||
TypesSelected = "Filtered By: " + typstr;
|
||||
advTreeStepTypes.RefreshItems();
|
||||
buildStepTypePannelTitle();
|
||||
}
|
||||
@@ -3227,7 +3298,7 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
catch (Exception ex)
|
||||
{
|
||||
FlexibleMessageBox.Show("An error occurred while reading the xml file.\r\n\r\nThis can happen when the file selected for the Load is not saved\r\n" +
|
||||
"from a PROMS Search or if some of the steps no longer exist.", "Search Load Failed", MessageBoxButtons.OK);
|
||||
@@ -3407,46 +3478,6 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
}
|
||||
|
||||
//B2026-055 – Transition Search Improvements
|
||||
//Update Enabling/Disabling of Tree Elements
|
||||
public bool TraverseTree(DevComponents.AdvTree.Node node, string[] versions)
|
||||
{
|
||||
bool result = true;
|
||||
int numhiddenchildnodes = 0;
|
||||
|
||||
// Recursively call this method for each child node
|
||||
foreach (DevComponents.AdvTree.Node childNode in node.Nodes)
|
||||
{
|
||||
if (!TraverseTree(childNode, versions))
|
||||
{
|
||||
numhiddenchildnodes++;
|
||||
}
|
||||
}
|
||||
|
||||
// Process the current node (e.g., enable it if it is contained)
|
||||
|
||||
//Select all always shows
|
||||
//also Enable Dummy Nodes by default
|
||||
if (versions == null || (versions.Length == 1 && string.IsNullOrEmpty(versions[0])) || node.Tag == null || (node.Tag is string txt && txt == SelectAllProcedureSetsText))
|
||||
{
|
||||
node.Enabled = true;
|
||||
return true;
|
||||
}
|
||||
//if all child nodes are hidden, hide the parent
|
||||
else if (numhiddenchildnodes == node.Nodes.Count)
|
||||
{
|
||||
result = false;
|
||||
}
|
||||
|
||||
FolderInfo fi = (FolderInfo)node.Tag;
|
||||
if (fi.FolderDocVersionCount > 0)
|
||||
{
|
||||
result = versions.Contains(fi.FolderDocVersions[0].VersionID.ToString());
|
||||
}
|
||||
|
||||
node.Enabled = result;
|
||||
return result;
|
||||
}
|
||||
private void btnCopySearchResults_Click(object sender, EventArgs e)
|
||||
{
|
||||
ICollection<ItemInfo> myList = lbSrchResults.DataSource as ICollection<ItemInfo>;
|
||||
@@ -3512,6 +3543,7 @@ namespace Volian.Controls.Library
|
||||
private bool IncTransCvtAllToTextPerm()
|
||||
{
|
||||
if (_SearchResults == null) return false;
|
||||
int cnt = 0;
|
||||
bool allowNonAdmin = IncTranCvtPerm();
|
||||
foreach (ItemInfo ii in _SearchResults)
|
||||
{
|
||||
@@ -3627,8 +3659,6 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
}
|
||||
}
|
||||
#pragma warning restore IDE1006 // Naming Styles
|
||||
#pragma warning restore IDE0044 // Add readonly modifier
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
Reference in New Issue
Block a user