Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 6f5c41abb8 | |||
| 6379321785 | |||
| e4c6e4393e | |||
| 3e6bb81e39 | |||
| 81643e2aef | |||
| 8a186f9f0c | |||
| 14aa39976a | |||
| c077e0ddc2 | |||
| d198a7b63a |
Binary file not shown.
@@ -1337,24 +1337,37 @@ namespace VEPROMS
|
||||
pi.ClearChangeBarOverrides();
|
||||
|
||||
//B2019-140 Change bars do not get refreshed when approval is run.
|
||||
ProcedureInfo newproc = ItemInfo.ResetProcedure(pi.ItemID);
|
||||
ProcedureInfo newproc;
|
||||
|
||||
//// Refresh the StepPanel for the current Procedure
|
||||
//// so change bars update
|
||||
//// on any open StepPanel
|
||||
DisplayTabItem dti = MyFrmVEPROMS.GetTabContainingProcedure(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);
|
||||
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;
|
||||
}
|
||||
|
||||
//since in a separate form, need to update the tree view
|
||||
//so "Showing Change Bars" Content Menu Item is correct
|
||||
MyFrmVEPROMS.RefreshProcedureNode(newproc);
|
||||
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);
|
||||
}
|
||||
else
|
||||
UpdateProcedureConfig(pi, ap.RevNumber, ap.RevDate, myDTS, selectedSlave);
|
||||
|
||||
@@ -626,22 +626,31 @@ 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);
|
||||
//B2019-140 Change bars do not get refreshed when approval is run.
|
||||
// Reset a Procedure and sub items in the cache
|
||||
|
||||
//// 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();
|
||||
//// 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)
|
||||
{
|
||||
if (!dti.MyStepTabPanel.MyStepPanel.ContainsFocus)
|
||||
dti.MyStepTabPanel.MyStepPanel.Focus();
|
||||
|
||||
foreach (EditItem eitm in dti.MyStepTabPanel.MyStepPanel.Controls.OfType<EditItem>())
|
||||
{
|
||||
eitm.ChangeBar = eitm.MyItemInfo.HasChangeBar;
|
||||
}
|
||||
|
||||
dti.MyStepTabPanel.MyStepTabRibbon.RefreshProcedure();
|
||||
}
|
||||
else
|
||||
{
|
||||
_ = ItemInfo.ResetProcedure(pi.ItemID);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3839,9 +3839,17 @@ 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
|
||||
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
|
||||
// **********************
|
||||
// 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)
|
||||
{
|
||||
// The following lines reload the procedure info cache
|
||||
ProcedureInfo newproc = ProcedureInfo.Get(procID, true);
|
||||
|
||||
@@ -5,6 +5,7 @@ using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using VEPROMS.CSLA.Library;
|
||||
@@ -225,8 +226,8 @@ namespace Volian.Controls.Library
|
||||
// return internal and external for the procedure level)
|
||||
if ((!MyItemInfo.IsProcedure && invalidTrans.Count == 0) || IsProcWithNoExternalTrans(MyItemInfo, invalidTrans))
|
||||
{
|
||||
// C2021 - 027: Procedure level PC/PC
|
||||
if (MyItemInfo.IsProcedure && MyItemInfo.ActiveFormat.PlantFormat.FormatData.ProcData.ProcAppl)
|
||||
// C2021 - 027: Procedure level PC/PC
|
||||
if (MyItemInfo.IsProcedure && MyItemInfo.ActiveFormat.PlantFormat.FormatData.ProcData.ProcAppl)
|
||||
{
|
||||
ProcedureConfig sc = MyItemInfo.MyConfig as ProcedureConfig;
|
||||
sc.MasterSlave_Applicability = Volian.Base.Library.BigNum.MakeBigNum(MyApplicability);
|
||||
@@ -284,26 +285,56 @@ namespace Volian.Controls.Library
|
||||
Volian.Base.Library.BigNum MasterSlave_ApplicabilityTmp;
|
||||
StepConfig sc = MyItemInfo.MyConfig as StepConfig;
|
||||
MasterSlave_ApplicabilityTmp = sc.MasterSlave_Applicability;
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
ItemInfo startitm = MyItemInfo.FirstSibling;
|
||||
|
||||
ItemInfo startitm = MyItemInfo.FirstSibling;
|
||||
while (startitm != null)
|
||||
{
|
||||
StepConfig sc2 = startitm.MyConfig as StepConfig;
|
||||
using (Content cnt = Content.Get(startitm.MyContent.ContentID))
|
||||
{
|
||||
sc2.MasterSlave_Applicability = (MasterSlave_ApplicabilityTmp);
|
||||
cnt.Config = sc2.ToString();
|
||||
cnt.Save();
|
||||
|
||||
// C2026-023: Check for Transitions when setting Applicability to all for a level
|
||||
List<InvalidTransition> invalidTrans = WillTransitionsBeValidCommand.Execute(startitm.ItemID, MasterSlave_ApplicabilityTmp.ToString());
|
||||
if (IsProcWithNoExternalTrans(startitm, invalidTrans))
|
||||
{
|
||||
StepConfig sc2 = startitm.MyConfig as StepConfig;
|
||||
using (Content cnt = Content.Get(startitm.MyContent.ContentID))
|
||||
{
|
||||
sc2.MasterSlave_Applicability = (MasterSlave_ApplicabilityTmp);
|
||||
cnt.Config = sc2.ToString();
|
||||
cnt.Save();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (sb.Length == 0)
|
||||
{
|
||||
sb.AppendLine("The applicability for some Step(s) cannot be changed due to transition links.");
|
||||
sb.AppendLine("Applicability settings for these steps will return to original settings when OK is selected.");
|
||||
sb.AppendLine("Changing the applicability for would invalidate a transition in the following steps:");
|
||||
sb.AppendLine();
|
||||
}
|
||||
|
||||
foreach (InvalidTransition inv in invalidTrans.Where(x => !x.TgtStep.StartsWith(x.SrcStep)))
|
||||
{
|
||||
sb.AppendLine(string.Format("{0} : From {1} to {2}.", startitm.MyTab.CleanTextNoSymbols.Trim(), inv.TgtStep, inv.SrcStep));
|
||||
}
|
||||
|
||||
invalidTrans.Clear();
|
||||
}
|
||||
|
||||
startitm = startitm.GetNext();
|
||||
}
|
||||
|
||||
_MyDisplayTabItem.MyStepTabPanel.MyStepTabRibbon.RefreshProcedure();
|
||||
|
||||
}
|
||||
if (sb.Length > 0)
|
||||
FlexibleMessageBox.Show(sb.ToString(), "Transitions Affected By Applicability Change");
|
||||
|
||||
// B2021-149: for procedure, only consider external transitions as invalid
|
||||
private bool IsProcWithNoExternalTrans(ItemInfo ii, List<InvalidTransition> invalidTrans)
|
||||
|
||||
}
|
||||
|
||||
// B2021-149: for procedure, only consider external transitions as invalid
|
||||
private bool IsProcWithNoExternalTrans(ItemInfo ii, List<InvalidTransition> invalidTrans)
|
||||
{
|
||||
if (invalidTrans.Count == 0) return true;
|
||||
foreach (InvalidTransition iT in invalidTrans)
|
||||
|
||||
@@ -1668,7 +1668,17 @@ 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;
|
||||
|
||||
Reference in New Issue
Block a user