Compare commits

..

1 Commits

19 changed files with 64 additions and 153 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -2142,20 +2142,7 @@ namespace RODBInterface
wraccid = accid;
string dt = string.Format("{0:yyyyMMddHHmmss}", System.DateTime.Now);
string xmlstr = GenerateXmlString(ro, false);
StringBuilder xmlstrTmp = new StringBuilder(); // B2026-025 prep the info field data so it will be saved correctly.
char[] chrAry = xmlstr.ToCharArray();
foreach (int chr in chrAry)
{
if (chr > 166)
{
xmlstrTmp.Append($"\\u{(int)chr}?");
}
else
{
xmlstrTmp.Append((char)chr);
}
}
string strUpdate = "UPDATE " + ro.GetAttribute("Table") + " SET Info = '" + xmlstrTmp.ToString() + "'";
string strUpdate = "UPDATE " + ro.GetAttribute("Table") + " SET Info = '" + xmlstr + "'";
if (movedRO)
{
VlnXmlElement parent = (VlnXmlElement)ro.ParentNode;
@@ -2199,20 +2186,6 @@ namespace RODBInterface
}
string xmlstr = GenerateXmlString(ro, false);
StringBuilder xmlstrTmp = new StringBuilder(); // B2026-025 prep the info field data so it will be saved correctly.
char[] chrAry = xmlstr.ToCharArray();
foreach (int chr in chrAry)
{
if (chr > 166)
{
xmlstrTmp.Append($"\\u{(int)chr}?");
}
else
{
xmlstrTmp.Append((char)chr);
}
}
string wraccid = null;
if (ro.HasAttribute("AccPageID"))
{
@@ -2236,13 +2209,13 @@ namespace RODBInterface
// strInsert = "INSERT INTO " + parent.GetAttribute("Table") + "( RecID, RecType, ParentID, AccPageID, ModDateTime, Info ) ";
strInsert = "INSERT INTO " + parent.GetAttribute("Table") + "( RecID, RecType, ParentID, ModDateTime, AccPageID, Info ) ";
strInsert = strInsert + " VALUES ('" + ro.GetAttribute("RecID") + "'," + (uint)RecordType.Group + ",'" + ro.GetAttribute("ParentID");
strInsert = strInsert + "','" + wraccid + "','" + dt + "','" + xmlstrTmp.ToString() + "');";
strInsert = strInsert + "','" + wraccid + "','" + dt + "','" + xmlstr + "');";
}
else
{
strInsert = "INSERT INTO " + parent.GetAttribute("Table") + "( RecID, RecType, ParentID, ModDateTime, Info ) ";
strInsert = strInsert + " VALUES ('" + ro.GetAttribute("RecID") + "'," + (uint)RecordType.Group + ",'" + ro.GetAttribute("ParentID");
strInsert = strInsert + "','" + dt + "','" + xmlstrTmp.ToString() + "');";
strInsert = strInsert + "','" + dt + "','" + xmlstr + "');";
}
}
@@ -2250,7 +2223,7 @@ namespace RODBInterface
{
strInsert = "INSERT INTO " + parent.GetAttribute("Table") + "( RecID, RecType, ParentID, AccPageId, ModDateTime, Info ) ";
strInsert = strInsert + " VALUES ('" + ro.GetAttribute("RecID") + "'," + (uint)RecordType.RRO + ",'" + ro.GetAttribute("ParentID");
strInsert = strInsert + "','" + wraccid + "','" + dt + "','" + xmlstrTmp.ToString() + "');";
strInsert = strInsert + "','" + wraccid + "','" + dt + "','" + xmlstr + "');";
}
try
@@ -2658,20 +2631,7 @@ namespace RODBInterface
}
}
StatMsgWindow.StatusMessage = echild.GetAttribute("MenuTitle");
StringBuilder tinfo2Tmp = new StringBuilder(); // B2026-025 prep the info field data so it will be saved correctly.
char[] chrAry = tinfo2.ToCharArray();
foreach (int chr in chrAry)
{
if (chr > 166)
{
tinfo2Tmp.Append($"\\u{(int)chr}?");
}
else
{
tinfo2Tmp.Append((char)chr);
}
}
str = "UPDATE " + echild.GetAttribute("Table") + " SET Info = '" + tinfo2Tmp.ToString() + "'";
str = "UPDATE " + echild.GetAttribute("Table") + " SET Info = '" + tinfo2 + "'";
str = str + ", ModDateTime = '" + dt + "' WHERE RecID = '" + echild.GetAttribute("RecID") + "';";
DBE.Command(str);
DBE.Reader();
@@ -96,7 +96,6 @@ using System.IO;
using System.Windows.Forms;
using ROFields;
using VlnStatus;
using System.Text.RegularExpressions;
//using VlnProfiler; //don't forget to add VlnProfiler to the reference list
namespace RODBInterface
@@ -518,8 +517,7 @@ namespace RODBInterface
strtmp.Append(" ");
cnt++;
}
text = Regex.Replace(text, @"\\u([0-9]{1,4})\?", m => int.TryParse(m?.Groups[1]?.Value, out int result) ? Convert.ToChar(result).ToString() : ""); //B2026-025 Unicode removed from RO menu titles in treeview.
if ((cnt + text.Length) > frmt2) // longer than the field length?
if ((cnt + text.Length) > frmt2) // longer than the field length?
strtmp.Append(text.Substring(0,frmt2-cnt));
else
strtmp.Append(text);
@@ -98,3 +98,4 @@ namespace ctlXMLEditLib
}
}
+2 -6
View File
@@ -24329,10 +24329,8 @@ BEGIN
OR FromID in (Select ContentID from tblContents where deletestatus != 0 and ActionDTS < @dte)
)
PRINT 'Deleting Items and Parts'
alter table tblParts nocheck constraint FK_Parts_Items
delete from tblItems where deletestatus != 0 and DTS < @dte
delete from tblParts where deletestatus != 0 and ItemID Not IN (Select ItemID from Items) and DTS < @dte
alter table tblParts check constraint FK_Parts_Items
PRINT 'Purging Parts with deleted Contents'
DELETE from Child
FROM tblParts AS Child
@@ -24357,9 +24355,7 @@ BEGIN
ON Itms.ItemID = tblItems.ItemID AND Itms.deletestatus = tblItems.deletestatus
alter table tblItems check constraint FK_Items_Items
PRINT 'Purging Contents'
alter table tblEntries nocheck constraint FK_Entries_Contents
delete from tblContents where deletestatus != 0 and ActionDTS < @dte
alter table tblEntries check constraint FK_Entries_Contents
PRINT 'Phase 3'
delete from AnnotationAudits where DTS < @dte
delete from ContentAudits where DTS < @dte
@@ -24770,8 +24766,8 @@ BEGIN TRY -- Try Block
DECLARE @RevDate varchar(255)
DECLARE @RevDescription varchar(255)
set @RevDate = '03/12/2026 11:00 AM'
set @RevDescription = 'Update to Purge Change History Tool'
set @RevDate = '02/18/2026 7:00 AM'
set @RevDescription = 'Added Audit Ability for ChangeBars'
Select cast(@RevDate as datetime) RevDate, @RevDescription RevDescription
PRINT 'SQL Code Revision ' + @RevDate + ' - ' + @RevDescription
@@ -1337,37 +1337,24 @@ namespace VEPROMS
pi.ClearChangeBarOverrides();
//B2019-140 Change bars do not get refreshed when approval is run.
ProcedureInfo newproc;
ProcedureInfo newproc = ItemInfo.ResetProcedure(pi.ItemID);
//// Refresh the StepPanel for the current Procedure
//// so change bars update
//// on any open StepPanel
//B2026-019 Attempt to prevent an Access Error by utilizing a different Refresh if a Procedure is Open
DisplayTabItem dti = MyFrmVEPROMS.GetTabContainingProcedure(pi.ItemID);
//// Refresh the StepPanel for the current Procedure
//// so change bars update
//// on any open StepPanel
DisplayTabItem dti = MyFrmVEPROMS.GetTabContainingProcedure(pi.ItemID);
if (dti != null)
{
if (!dti.MyStepTabPanel.MyStepPanel.ContainsFocus)
dti.MyStepTabPanel.MyStepPanel.Focus();
foreach (EditItem eitm in dti.MyStepTabPanel.MyStepPanel.Controls.OfType<EditItem>())
{
eitm.ChangeBar = eitm.MyItemInfo.HasChangeBar;
}
eitm.ChangeBar = eitm.MyItemInfo.HasChangeBar;
}
dti.MyStepTabPanel.MyStepTabRibbon.RefreshProcedure();
Application.DoEvents();
newproc = ProcedureInfo.Get(pi.ItemID);
}
else
{
newproc = ItemInfo.ResetProcedure(pi.ItemID);
}
//since in a separate form, need to update the tree view
//so "Showing Change Bars" Content Menu Item is correct
MyFrmVEPROMS.RefreshProcedureNode(newproc);
//since in a separate form, need to update the tree view
//so "Showing Change Bars" Content Menu Item is correct
MyFrmVEPROMS.RefreshProcedureNode(newproc);
}
else
UpdateProcedureConfig(pi, ap.RevNumber, ap.RevDate, myDTS, selectedSlave);
+10 -15
View File
@@ -626,26 +626,21 @@ namespace VEPROMS
itm.UserID = Volian.Base.Library.VlnSettings.UserID;
itm.Save();
//B2019-140 Change bars do not get refreshed when approval is run.
// Reset a Procedure and sub items in the cache
ProcedureInfo newproc = ItemInfo.ResetProcedure(pi.ItemID);
//// Refresh the StepPanel for the current Procedure
//// so change bars update
//// on any open StepPanel
//B2026-019 Attempt to prevent an Access Error by utilizing a different Refresh if a Procedure is Open
DisplayTabItem dti = GetTabContainingProcedure(pi.ItemID);
if (dti != null)
{
//B2019-140 Change bars do not get refreshed when approval is run.
// Reset a Procedure and sub items in the cache
ProcedureInfo newproc = ItemInfo.ResetProcedure(pi.ItemID);
//// Refresh the StepPanel for the current Procedure
//// so change bars update
//// on any open StepPanel
DisplayTabItem dti = GetTabContainingProcedure(pi.ItemID);
if (dti != null)
{
if (!dti.MyStepTabPanel.MyStepPanel.ContainsFocus)
dti.MyStepTabPanel.MyStepPanel.Focus();
dti.MyStepTabPanel.MyStepPanel.Focus();
foreach (EditItem eitm in dti.MyStepTabPanel.MyStepPanel.Controls.OfType<EditItem>())
{
eitm.ChangeBar = eitm.MyItemInfo.HasChangeBar;
}
}
}
}
@@ -1113,34 +1113,13 @@ namespace VEPROMS
if (_Apples == null)
{
_Apples = new List<MiniConfig>();
}
//B2026-017 Use Pre-typed in information when adding New Applicability
if (_Apples.Count == 0)
{
cfg.ID = textBox1.Text;
if (!string.IsNullOrEmpty(textBox2.Text))
{
cfg.Name = textBox2.Text;
}
cfg.Number = textBox3.Text;
cfg.Text = textBox4.Text;
cfg.OtherID = textBox8.Text;
cfg.OtherName = textBox9.Text;
cfg.OtherNumber = textBox10.Text;
cfg.OtherText = textBox11.Text;
cfg.ProcedureNumber = textBox5.Text;
cfg.SetID = textBox6.Text;
cfg.SetName = textBox7.Text;
}
_Apples.Add(cfg);
}
_Apples.Add(cfg);
bsApples.DataSource = null;
bsApples.DataSource = _Apples;
lbApplicabilities.SelectedItem = cfg;
lbApplicabilities_SelectedIndexChanged(sender, e);
}
lbApplicabilities.SelectedItem = cfg;
}
private bool ApplicIsUsed(MiniConfig cfg) // B2017-230 - don't allow user to remove an applicability that is being used (specified)
{
@@ -2291,7 +2291,7 @@ OnPropertyChanged("Default_BkColor");
public void RemoveSlave(int index)
{
XmlNode dd = _Xp.XmlContents.SelectSingleNode("//Slave[@index='" + index.ToString() + "']");
dd?.ParentNode?.RemoveChild(dd);
dd.ParentNode.RemoveChild(dd);
}
public int MaxSlaveIndex
{
+14 -23
View File
@@ -3839,17 +3839,9 @@ namespace VEPROMS.CSLA.Library
_SupInfos = null;
}
//B2019-140 Change bars do not get refreshed when approval is run.
// Reset a Procedure and sub items in the cache
// **********************
// Be carefull calling this when the Procedure is Open
// When the Procedure is Open - use StepTabRibbon.RefreshProcedure(); instead
// When a Procedure is open and you try to refresh it,
// events can fire behind the scenes - causing data to try to be accessed while you are trying to refresh it
// When This occurs, it will cause a
// "ThreadException ... Collection was modified; enumeration operation may not execute.”
// **********************
public static ProcedureInfo ResetProcedure(int procID)
//B2019-140 Change bars do not get refreshed when approval is run.
// Reset a Procedure and sub items in the cache
public static ProcedureInfo ResetProcedure(int procID)
{
// The following lines reload the procedure info cache
ProcedureInfo newproc = ProcedureInfo.Get(procID, true);
@@ -3867,27 +3859,26 @@ namespace VEPROMS.CSLA.Library
ItemInfo newprocitem = Get(procID, true);
newprocitem.RefreshConfig();
//Reload all the child/sub items
//Reload all the child/sub items
#pragma warning disable S2971 // LINQ expressions should be simplified - need initial ToList to force enumeration
//otherwise will get a "Collection was modified; enumeration operation may not execute" error
List<int> itemIDs = _CacheByPrimaryKey.SelectMany(kvp => kvp.Value).ToList().Where(t => t?.ActiveParent != null && (t.ActiveParent is ItemInfo) && t.MyProcedure.ItemID == procID).Select(x => (x.ActiveParent as ItemInfo).ItemID).Distinct().ToList();
//otherwise will get a "Collection was modified; enumeration operation may not execute" error
List<int> itemIDs = _CacheByPrimaryKey.Values.ToList().SelectMany(y => y).Where(t => t?.ActiveParent != null && (t.ActiveParent is ItemInfo) && t.MyProcedure.ItemID == procID).Select(x => (x.ActiveParent as ItemInfo).ItemID).Distinct().ToList();
#pragma warning restore S2971 // LINQ expressions should be simplified
for (int index = 0; index < itemIDs.Count; index++)
{
ResetParts(itemIDs[index]);
}
{
ResetParts(itemIDs[index]);
}
//reset the procedure config for all items attached to current procedure
//reset the procedure config for all items attached to current procedure
#pragma warning disable S2971 // LINQ expressions should be simplified - need initial ToList to force enumeration
//otherwise will get a "Collection was modified; enumeration operation may not execute" error
List<ItemInfo> pconfigrefresh_items = _CacheByPrimaryKey.SelectMany(kvp => kvp.Value).ToList().Where(t => t?.MyProcedure?.ItemID == procID).Distinct().ToList();
//otherwise will get a "Collection was modified; enumeration operation may not execute" error
List<ItemInfo> pconfigrefresh_items = _CacheByPrimaryKey.Values.ToList().SelectMany(y => y).Where(t => t?.MyProcedure?.ItemID == procID).Distinct().ToList();
#pragma warning restore S2971 // LINQ expressions should be simplified
for (int index = 0; index < pconfigrefresh_items.Count; index++)
for (int index = 0; index < pconfigrefresh_items.Count; index++)
{
pconfigrefresh_items[index].MyProcedure = newproc;
pconfigrefresh_items[index].MyProcedure = newproc;
}
//return the changed procedure info
return newproc;
}
+1 -4
View File
@@ -372,14 +372,12 @@ namespace Volian.Controls.Library
{
// B2022-088: [JPR] Find Doc Ro button not working in Word Sections
// B2022-098: [JPR] ROs not being resolved in Word Sections
if (e.Node.Tag is ROFSTLookup.rochild)
{
if (e.Node.Tag is ROFSTLookup.rochild){
ROFSTLookup.rochild chld = (ROFSTLookup.rochild)e.Node.Tag;
selectedChld = chld;
if (chld.value != null)
{
chld.value = Regex.Replace(chld.value, @"\\u([0-9]{1,4})\?", m => int.TryParse(m?.Groups[1]?.Value, out int result) ? Convert.ToChar(result).ToString() : "");
RoUsageInfo SavROLink = null;
if (_savCurROLink != null) SavROLink = _savCurROLink;
@@ -1174,4 +1172,3 @@ namespace Volian.Controls.Library
#endregion
}
}
+2 -5
View File
@@ -4162,11 +4162,8 @@ namespace Volian.Controls.Library
}
void MyConfig_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
//B2026-024 Change bars should not show when updating Applicability.
if (e.PropertyName == "MasterSlave_Applicability") ChangeBarForConfigItemChange = false;
SaveConfig();
if (e.PropertyName == "MasterSlave_Applicability") ChangeBarForConfigItemChange = true;
}
SaveConfig();
}
public void SaveConfig()
{
if (!MyItemInfo.MyConfig.IsDirty) return;
+1 -1
View File
@@ -1404,7 +1404,7 @@ namespace Volian.Controls.Library
var pattern = @"\\u([0-9]{1,4})\?"; // RO Editor add symbols C2022 - 003
foreach (Match match in Regex.Matches(linkValue, pattern, RegexOptions.IgnoreCase))
{
linkValue = linkValue.Replace(match.Value, "\\f1 " + match.Value + "\\f0");
linkValue = linkValue.Replace(match.Value, "\\f1 " + match.Value + " \\f0");
}
linkValue = linkValue.Replace(@"{", @"\{");
+12 -2
View File
@@ -1668,8 +1668,18 @@ namespace Volian.Controls.Library
}
Clipboard.Clear();
Clipboard.SetDataObject(myDO); // this saves the cleaned up information to the Windows clipboard
}
//Try to update the data object to persist beyond PROMS life
//if can't, log it and use old method of scoping clipboard to PROMS life
try
{
Clipboard.SetDataObject(myDO, true); // this saves the cleaned up information to the Windows clipboard
}
catch (Exception ex)
{
_MyLog.Warn($"Error Setting Clipboard Object to Persist beyond PROMS. Clipboard will be scoped to PROMS. Error:{ex.Message}");
Clipboard.SetDataObject(myDO); // this saves the cleaned up information to the Windows clipboard
}
}
iData = Clipboard.GetDataObject();
bool noEquationData = true;
// part of bug B2017-117 we were running out of window handles when printing, found this similar use of