C2025-027-AnnotationsTypeSelect #574
175
PROMS/VEPROMS User Interface/DlgAnnotationsSelect.cs
Normal file
@@ -0,0 +1,175 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using VEPROMS.CSLA.Library;
|
||||
|
||||
namespace VEPROMS
|
||||
{
|
||||
// C2025-027 Annotation Type Filtering
|
||||
public partial class dlgAnnotationsSelect : Form
|
||||
{
|
||||
public dlgAnnotationsSelect()
|
||||
mschill marked this conversation as resolved
Outdated
|
||||
{
|
||||
mschill marked this conversation as resolved
Outdated
mschill
commented
commented out code should be removed or reason given for why it is commented out / should be in the code long term. commented out code should be removed or reason given for why it is commented out / should be in the code long term.
plarsen
commented
Comment removed. Comment removed.
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
public dlgAnnotationsSelect(string userid)
|
||||
{
|
||||
InitializeComponent();
|
||||
UserID = userid;
|
||||
}
|
||||
|
||||
private int _MyItemID;
|
||||
mschill marked this conversation as resolved
mschill
commented
commented out code should be removed or reason given for why it is commented out / should be in the code long term. commented out code should be removed or reason given for why it is commented out / should be in the code long term.
plarsen
commented
Removed commented code Removed commented code
|
||||
public int MyItemID
|
||||
{
|
||||
get { return _MyItemID; }
|
||||
set { _MyItemID = value; }
|
||||
}
|
||||
|
||||
private string _UserID;
|
||||
public string UserID
|
||||
{
|
||||
get { return _UserID; }
|
||||
set { _UserID = value; }
|
||||
}
|
||||
|
||||
private void btnSelect_Click(object sender, EventArgs e)
|
||||
{
|
||||
MoveSelectedItems(lstUnselected, lstSelected);
|
||||
}
|
||||
|
||||
// Move selected items to lstUnselected.
|
||||
private void btnDeselect_Click(object sender, EventArgs e)
|
||||
{
|
||||
MoveSelectedItems(lstSelected, lstUnselected);
|
||||
}
|
||||
|
||||
// Move selected items from one ListBox to another.
|
||||
private void MoveSelectedItems(ListBox lstFrom, ListBox lstTo)
|
||||
{
|
||||
while (lstFrom.SelectedItems.Count > 0)
|
||||
{
|
||||
lstSelected.DisplayMember = "NameStr";
|
||||
lstSelected.ValueMember = "TypeID";
|
||||
|
||||
AnnotataionItem item = (AnnotataionItem)lstFrom.SelectedItems[0];
|
||||
lstTo.Items.Add(new AnnotataionItem(item.NameStr, item.TypeID));
|
||||
lstFrom.Items.Remove(item);
|
||||
}
|
||||
SetButtonsEditable();
|
||||
}
|
||||
|
||||
// Move all items to lstSelected.
|
||||
private void btnSelectAll_Click(object sender, EventArgs e)
|
||||
{
|
||||
MoveAllItems(lstUnselected, lstSelected);
|
||||
}
|
||||
|
||||
// Move all items to lstUnselected.
|
||||
private void btnDeselectAll_Click(object sender, EventArgs e)
|
||||
{
|
||||
MoveAllItems(lstSelected, lstUnselected);
|
||||
}
|
||||
|
||||
// Move all items from one ListBox to another.
|
||||
private void MoveAllItems(ListBox lstFrom, ListBox lstTo)
|
||||
{
|
||||
lstTo.Items.AddRange(lstFrom.Items);
|
||||
lstFrom.Items.Clear();
|
||||
SetButtonsEditable();
|
||||
}
|
||||
|
||||
// Enable and disable buttons.
|
||||
private void lst_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
SetButtonsEditable();
|
||||
}
|
||||
// Save selected list to DB.
|
||||
private void btnUpdate_Click(object sender, EventArgs e)
|
||||
{
|
||||
DataTable dt2 = coverToTable();
|
||||
VEPROMS.CSLA.Library.AnnotationstypeSelections.Update(dt2, UserID);
|
||||
this.Close();
|
||||
}
|
||||
public class AnnotataionItem
|
||||
mschill marked this conversation as resolved
Outdated
mschill
commented
I am not sure what this flag is? Can there be comments explaining why? Flag removed I am not sure what this flag is?
I noticed it will be 1 on 1st iteration then 0 after that.
Can there be comments explaining why?
Flag removed
mschill
commented
Must be missing something .... Not sure I understand why we are deleting items and reentering them ...... wouldn't we lose history on when they were originally put in if we do that? When a user changes or adds to his selections, we need to remove his selections in the DB and insert the updates. Must be missing something .... Not sure I understand why we are deleting items and reentering them ...... wouldn't we lose history on when they were originally put in if we do that?
When a user changes or adds to his selections, we need to remove his selections in the DB and insert the updates.
plarsen
commented
Delete and reinsert works very well. Updates in this scenario are nightmares. Delete and reinsert works very well. Updates in this scenario are nightmares.
mschill
commented
not sure if this would help --- but just a thought - passing in a whole table of the annotationtypeselections instead of doing 1 update/insert at a time and then doing a merge with the current table? In the end, as long as Devin and John are good with it, I am too --- just figured I would check in case we were losing any needed info by removing and re-adding... not sure if this would help --- but just a thought - passing in a whole table of the annotationtypeselections instead of doing 1 update/insert at a time and then doing a merge with the current table?
In the end, as long as Devin and John are good with it, I am too --- just figured I would check in case we were losing any needed info by removing and re-adding...
mschill
commented
Would remove dltFlg and commented out code since no longer used. Would remove dltFlg and commented out code since no longer used.
mschill
commented
As FYI - still valid As FYI - still valid
plarsen
commented
Flag removed Flag removed
|
||||
{
|
||||
private string _NameStr;
|
||||
private int _TypeID;
|
||||
|
||||
mschill marked this conversation as resolved
Outdated
mschill
commented
just to double check --- Is there a reason we are updating the DisplayMember / ValueMember every time we go through the loop? Wasn't this already set when the form loaded --- line 160ish? just to double check --- Is there a reason we are updating the DisplayMember / ValueMember every time we go through the loop?
Wasn't this already set when the form loaded --- line 160ish?
plarsen
commented
I moved the variables I moved the variables
|
||||
public AnnotataionItem(string NameStr, int TypeID)
|
||||
{
|
||||
this._NameStr = NameStr;
|
||||
this._TypeID = TypeID;
|
||||
}
|
||||
public string NameStr
|
||||
{
|
||||
get
|
||||
{
|
||||
return _NameStr;
|
||||
}
|
||||
}
|
||||
public int TypeID
|
||||
{
|
||||
get
|
||||
{
|
||||
return _TypeID;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Enable and disable buttons.
|
||||
private void SetButtonsEditable()
|
||||
{
|
||||
btnSelect.Enabled = (lstUnselected.SelectedItems.Count > 0);
|
||||
btnSelectAll.Enabled = (lstUnselected.Items.Count > 0);
|
||||
btnDeselect.Enabled = (lstSelected.SelectedItems.Count > 0);
|
||||
btnDeselectAll.Enabled = (lstSelected.Items.Count > 0);
|
||||
}
|
||||
|
||||
private void DlgAnnotationsSelect_Load(object sender, EventArgs e)
|
||||
{
|
||||
lstUnselected.DisplayMember = "NameStr";
|
||||
lstUnselected.ValueMember = "TypeID";
|
||||
SetButtonsEditable();
|
||||
DataTable AnnoType = AnnotationstypeSelections.GetAnnoTypes(UserID);
|
||||
foreach (DataRow dr in AnnoType.Rows)
|
||||
{
|
||||
lstUnselected.Items.Add(new AnnotataionItem(dr["Name"].ToString(), (int)dr["TypeID"]));
|
||||
}
|
||||
|
||||
lstSelected.DisplayMember = "NameStr";
|
||||
lstSelected.ValueMember = "TypeID";
|
||||
DataTable lstSelectedTbl = VEPROMS.CSLA.Library.AnnotationstypeSelections.Retrieve(UserID);
|
||||
mschill marked this conversation as resolved
mschill
commented
I closed this previous comment since it moved down and reposted here - "Shouldn't need this as foreach loop below should loop 0 times if no rows." This comment moved down thanks to changes since --- this is referring to the if statement now on line 148 - if (lstSelectedTbl.Rows.Count > 0) I closed this previous comment since it moved down and reposted here - "Shouldn't need this as foreach loop below should loop 0 times if no rows."
This comment moved down thanks to changes since --- this is referring to the if statement now on line 148 - if (lstSelectedTbl.Rows.Count > 0)
since next statement is
foreach (DataRow lstSelectedRow in lstSelectedTbl.Rows)
|
||||
|
||||
foreach (DataRow lstSelectedRow in lstSelectedTbl.Rows)
|
||||
{
|
||||
lstSelected.Items.Add(new AnnotataionItem(lstSelectedRow["Name"].ToString(), (int)lstSelectedRow["TypeID"]));
|
||||
}
|
||||
}
|
||||
|
||||
private void btnCancel_Click_1(object sender, EventArgs e)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
|
||||
private DataTable coverToTable()
|
||||
{
|
||||
DataTable dt = new DataTable();
|
||||
dt.Columns.Add("TypeID", typeof(Int32));
|
||||
|
||||
mschill marked this conversation as resolved
Outdated
mschill
commented
Shouldn't need this as foreach loop below should loop 0 times if no rows. Shouldn't need this as foreach loop below should loop 0 times if no rows.
plarsen
commented
That look is used. It retrieves from AnnotationstypeSelections table. That look is used. It retrieves from AnnotationstypeSelections table.
|
||||
|
||||
foreach (AnnotataionItem item in lstSelected.Items.OfType<AnnotataionItem>())
|
||||
mschill marked this conversation as resolved
Outdated
mschill
commented
I thought Name was being removed from AnntationsSelections and just going to be pulled from AnnotationsType? Also, not quite sure why RowID is needed / was added? I thought Name was being removed from AnntationsSelections and just going to be pulled from AnnotationsType?
Also, not quite sure why RowID is needed / was added?
Should only need the TypeID and UserID unless I am missing something?
|
||||
{
|
||||
dt.Rows.Add(item.TypeID);
|
||||
}
|
||||
return dt;
|
||||
mschill marked this conversation as resolved
mschill
commented
see comments in SQL --- shouldn't need RowID see comments in SQL --- shouldn't need RowID
|
||||
}
|
||||
}
|
||||
}
|
||||
|
120
PROMS/VEPROMS User Interface/DlgAnnotationsSelect.resx
Normal file
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
@@ -1,5 +1,3 @@
|
||||
|
||||
|
||||
Set NoCount On;
|
||||
|
||||
If (db_name() in('master','model','msdn','tempdb'))
|
||||
@@ -24035,6 +24033,7 @@ Begin -- Rofst Tables
|
||||
End
|
||||
Go
|
||||
|
||||
|
||||
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_UpdateEPFormat]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
|
||||
DROP PROCEDURE [vesp_UpdateEPFormat];
|
||||
GO
|
||||
@@ -24075,6 +24074,218 @@ ELSE
|
||||
|
||||
GO
|
||||
|
||||
-- C2025-027 Annotation Type Filtering
|
||||
/****** Object: Table [dbo].[AnnotationTypeSelections] Script Date: 7/10/2025 2:38:23 PM ******/
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
mschill marked this conversation as resolved
Outdated
mschill
commented
won't this wipe out all thier pre-existing data every time PROMSFixes is run? won't this wipe out all thier pre-existing data every time PROMSFixes is run?
|
||||
|
||||
-- =============================================
|
||||
-- Author: Paul Larsen
|
||||
-- Create date: 07/10/2025
|
||||
-- Description: Store user Annotation selections for annotation filter.
|
||||
-- =============================================
|
||||
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[AnnotationTypeSelections]') AND type in (N'U'))
|
||||
BEGIN
|
||||
|
||||
CREATE TABLE [dbo].[AnnotationTypeSelections](
|
||||
[ASTypeID] [int] IDENTITY(1,1) NOT NULL,
|
||||
[TypeID] [int] NULL,
|
||||
[UserID] [varchar](50) NULL,
|
||||
[LastChanged] [datetime] NULL,
|
||||
CONSTRAINT [PK_AnnotationTypeSelections] PRIMARY KEY CLUSTERED
|
||||
([ASTypeID] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
|
||||
) ON [PRIMARY]
|
||||
END
|
||||
|
||||
IF OBJECT_ID('DF_AnnotationTypeSelections_LastChanged', 'D') IS NULL
|
||||
mschill marked this conversation as resolved
Outdated
mschill
commented
I could be wrong but I thought some of these were being removed and joins done to the AnnotationType table to get things like Name, IsEpAnnotationType, etc...? I could be wrong but I thought some of these were being removed and joins done to the AnnotationType table to get things like Name, IsEpAnnotationType, etc...?
mschill
commented
This is still valid. I thought Name was being removed from AnntationsSelections and just going to be pulled from AnnotationsType? Also, not sure what Config is for here? This is still valid.
I thought Name was being removed from AnntationsSelections and just going to be pulled from AnnotationsType?
Also, not sure what Config is for here?
|
||||
ALTER TABLE AnnotationTypeSelections ADD CONSTRAINT [DF_AnnotationTypeSelections_LastChanged] DEFAULT (getdate()) for [LastChanged];
|
||||
GO
|
||||
|
||||
mschill marked this conversation as resolved
mschill
commented
Would suggest not having columns named both UserID and UserID in the same table as it is confusing which is the function of each, Would suggest not having columns named both UserID and UserID in the same table as it is confusing which is the function of each,
Would suggest renaming UserID as something like CreatedBy.
|
||||
IF EXISTS (SELECT * FROM sys.indexes WHERE name='idx_AnnotationTypeSelections_UserIDTypeID'
|
||||
AND object_id = OBJECT_ID('[dbo].[AnnotationTypeSelections]'))
|
||||
begin
|
||||
DROP INDEX [idx_AnnotationTypeSelections_UserIDTypeID] ON [dbo].[AnnotationTypeSelections];
|
||||
end
|
||||
|
||||
mschill marked this conversation as resolved
Outdated
mschill
commented
if commented out, should be removed or reason given why commented out? if commented out, should be removed or reason given why commented out?
plarsen
commented
Comment removed. Comment removed.
|
||||
CREATE UNIQUE INDEX [idx_AnnotationTypeSelections_UserIDTypeID] ON [dbo].[AnnotationTypeSelections]
|
||||
(
|
||||
[UserID] ASC,
|
||||
[TypeID] ASC
|
||||
)
|
||||
INCLUDE (ASTypeID)
|
||||
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]
|
||||
mschill marked this conversation as resolved
Outdated
mschill
commented
remove: , OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF This was what we caught was not compatible with SQL 2016 remove:
, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF
This was what we caught was not compatible with SQL 2016
|
||||
GO
|
||||
|
||||
-- C2025-027 Annotation Type Filtering
|
||||
mschill marked this conversation as resolved
Outdated
mschill
commented
Wouldn't you want the index on UsrID,TypeID? I also thought name was being removed from this table? see previous notes / wouldn;t this be UNIQUE by UsrID, TypeID Wouldn't you want the index on UsrID,TypeID?
I also thought name was being removed from this table?
see previous notes / wouldn;t this be UNIQUE by UsrID, TypeID
plarsen
commented
Added an index. Added an index.
mschill
commented
Comment still valid: index should be UNIQUE by for whether it should be (1) or (2), I suggest trying each individually and looking at the execution plan to see which is grabbed / better --- if you need assistance with this, please let me know and I can give assistance as I am quite familiar with looking at the execution plans in SQL, Comment still valid:
index should be UNIQUE by
(1) UsrID, TypeID
or
(2) TypeID, UsrID
and INCLUDE other columns pulled back like:
ASTypeID
for whether it should be (1) or (2), I suggest trying each individually and looking at the execution plan to see which is grabbed / better --- if you need assistance with this, please let me know and I can give assistance as I am quite familiar with looking at the execution plans in SQL,
mschill
commented
There is another comment around line 24235that is related to this. It just moved since there have been changes since that comment was made. That one should have likely the exact index needed. There is another comment around line 24235that is related to this. It just moved since there have been changes since that comment was made. That one should have likely the exact index needed.
|
||||
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAnnotationSelectListTypes]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
|
||||
DROP PROCEDURE [getAnnotationSelectListTypes];
|
||||
GO
|
||||
|
||||
-- =============================================
|
||||
mschill marked this conversation as resolved
mschill
commented
if commented out, should be removed or reason given why commented out? if commented out, should be removed or reason given why commented out?
|
||||
-- Author: Paul Larsen
|
||||
-- Create date: 7/10/2025
|
||||
-- Description: Retrieve Annotation Types not added to Annotation type filtering by user.
|
||||
-- =============================================
|
||||
CREATE PROCEDURE [dbo].[getAnnotationSelectListTypes]
|
||||
mschill marked this conversation as resolved
Outdated
mschill
commented
So .... unless I have this backwards: so basically, by default, we would show all annotation types / if a new annotation type was added it would show & only what is selected would be filtered out ....... if this is the case, wouldn't we want this info to come from AnnotationTypes Select ----again, may be thinking of this wrong ... but was thinking we were storing in the db what they picked to filter out. So .... unless I have this backwards:
This is for filtering out Annotation Types --- so wouldn't anything selected in AnnotationTypeSelections need / be filtered out.
so basically, by default, we would show all annotation types / if a new annotation type was added it would show & only what is selected would be filtered out .......
if this is the case, wouldn't we want this info to come from AnnotationTypes
& be basically:
Select
AnnotationTypes.[TypeID],
AnnotationTypes.[Name],
AnnotationTypes.[Config],
AnnotationTypes.[DTS],
AnnotationTypes.[UserID],
AnnotationTypes.[LastChanged],
(SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[TypeID]=[AnnotationTypes].[TypeID]) [AnnotationCount],
AnnotationTypes.[IsEPAnnotationType]
FROM [AnnotationTypes]
LEFT OUTER JOIN AnnotationTypeSelections ON AnnotationTypeSelections.TypeID = AnnotationTypes.TypeID
WHERE AnnotationTypeSelections.UsrID = @UsrID
AND
AnnotationTypeSelections.ASTypeID IS NULL
----again, may be thinking of this wrong ... but was thinking we were storing in the db what they picked to filter out.
plarsen
commented
SPs [getAnnotationstypeSelections] select selected types for right listbox getAnnotationSelectListTypes select from Annotationtypes table fitering out any selected types for left listbox getAnnotationstypeFiltered select selected filtered (if any) otherwise show all annotation types. Used in AnnotationDetails drop down. SPs
[getAnnotationstypeSelections] select selected types for right listbox
getAnnotationSelectListTypes select from Annotationtypes table fitering out any selected types for left listbox
getAnnotationstypeFiltered select selected filtered (if any) otherwise show all annotation types. Used in AnnotationDetails drop down.
mschill
commented
see next set of comments - these moved around due to changes since. see next set of comments - these moved around due to changes since.
|
||||
(
|
||||
mschill marked this conversation as resolved
mschill
commented
If commented out, would remove or give reason why commented out? If commented out, would remove or give reason why commented out?
plarsen
commented
Comment removed. Comment removed.
|
||||
@UserID varchar(50)
|
||||
)
|
||||
WITH EXECUTE AS OWNER
|
||||
AS
|
||||
SELECT
|
||||
[TypeID],
|
||||
[Name],
|
||||
[Config],
|
||||
[DTS],
|
||||
[UserID],
|
||||
[LastChanged],
|
||||
(SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[TypeID]= [TypeID]) [AnnotationCount],
|
||||
[IsEPAnnotationType]
|
||||
FROM [AnnotationTypes] --A
|
||||
LEFT OUTER JOIN AnnotationTypeSelections ON AnnotationTypeSelections.TypeID = AnnotationTypes.TypeID
|
||||
WHERE AnnotationTypeSelections.UserID = @UserID
|
||||
AND
|
||||
AnnotationTypeSelections.ASTypeID IS NULL
|
||||
GO
|
||||
|
||||
-- C2025-027 Annotation Type Filtering
|
||||
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAnnotationstypeSelections]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
|
||||
DROP PROCEDURE [getAnnotationstypeSelections];
|
||||
GO
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
-- =============================================
|
||||
mschill marked this conversation as resolved
Outdated
mschill
commented
see earlier note - will get better performance if than use a subquery. see earlier note - will get better performance if
LEFT OUTER JOIN AnnotationTypeSelections ON AnnotationTypeSelections.TypeID = AnnotationTypes.TypeID
than use a subquery.
plarsen
commented
Changed query. Changed query.
mschill
commented
still valid - this refers to the query in getAnnotationSelectListTypes still valid - this refers to the query in getAnnotationSelectListTypes
around line:
24148
|
||||
-- Author: Paul Larsen
|
||||
-- Create date: 07/10/2025
|
||||
-- Description: Retrieve Current Annotation Types
|
||||
-- =============================================
|
||||
|
||||
CREATE PROC [dbo].[getAnnotationstypeSelections]
|
||||
(
|
||||
@UsrID varchar(50)
|
||||
)
|
||||
AS
|
||||
BEGIN
|
||||
SELECT [ASTypeID]
|
||||
,ATS.[TypeID]
|
||||
,ATS.[UserID]
|
||||
,AT.[Name]
|
||||
,AT.[Config]
|
||||
,ATS.[LastChanged]
|
||||
,AT.[UserID]
|
||||
,AT.[IsEPAnnotationType]
|
||||
FROM [dbo].[AnnotationTypeSelections] ATS
|
||||
INNER JOIN AnnotationTypes AT ON AT.TypeID = ATS.TypeID
|
||||
WHERE ATS.UserID = @UsrID
|
||||
END
|
||||
|
||||
GO
|
||||
|
||||
-- C2025-027 Annotation Type Filtering
|
||||
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAnnotationstypeFiltered]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
|
||||
DROP PROCEDURE [getAnnotationstypeFiltered];
|
||||
GO
|
||||
|
||||
-- =============================================
|
||||
-- Author: Paul Larsen
|
||||
-- Create date: 07/10/2025
|
||||
-- Description: Retrieve Current Annotation Types
|
||||
-- =============================================
|
||||
|
||||
CREATE PROC [dbo].[getAnnotationstypeFiltered]
|
||||
(
|
||||
@UsrID varchar(50)
|
||||
)
|
||||
AS
|
||||
BEGIN
|
||||
IF((SELECT count(TypeID) FROM AnnotationTypeSelections WHERE UserID = @UsrID) > 0)
|
||||
BEGIN
|
||||
SELECT [ASTypeID]
|
||||
,ATS.[TypeID]
|
||||
,ATS.[UserID]
|
||||
,AT.[Name]
|
||||
,AT.[Config]
|
||||
,ATS.[LastChanged]
|
||||
,AT.[UserID]
|
||||
,AT.[IsEPAnnotationType]
|
||||
FROM [dbo].[AnnotationTypeSelections] ATS
|
||||
INNER JOIN AnnotationTypes AT ON AT.TypeID = ATS.TypeID
|
||||
WHERE ATS.UserID = @UsrID
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
SELECT
|
||||
mschill marked this conversation as resolved
Outdated
mschill
commented
Can name be different than the AnnotationTypes.Name? Basically, if have a separate field for it -- what happens if someone Can name be different than the AnnotationTypes.Name?
Basically, if have a separate field for it -- what happens if someone
selects:
Annotation: TypeID = 5, Name="TEST1"
to be filtered
then
changes the Name of the Annotation Type to be "TEST3"
..
I believe then it would be "TEST3" in PROMS
but the option in the filtering list would say "TEST1"
plarsen
commented
The all annotation type names in the form are pulled from AnnotationTypes table. The all annotation type names in the form are pulled from AnnotationTypes table.
|
||||
[TypeID],
|
||||
mschill marked this conversation as resolved
Outdated
mschill
commented
Can there be Config Data for this? Can there be Config Data for this?
|
||||
[Name],
|
||||
[Config],
|
||||
[DTS],
|
||||
[UserID],
|
||||
mschill marked this conversation as resolved
Outdated
mschill
commented
I am not sure why this has an IsEPAnnotationType? Wouldn't we just use the flag in AnnotationTypes? I am not sure why this has an IsEPAnnotationType?
Wouldn't we just use the flag in AnnotationTypes?
plarsen
commented
Removed it. Removed it.
plarsen
commented
Removed IsEPAnnotationType from AnnotationTypeSelections table. Removed IsEPAnnotationType from AnnotationTypeSelections table.
|
||||
[LastChanged],
|
||||
(SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[TypeID]=[AnnotationTypes].[TypeID]) [AnnotationCount],
|
||||
[IsEPAnnotationType]
|
||||
FROM [AnnotationTypes]
|
||||
END
|
||||
END
|
||||
|
||||
mschill marked this conversation as resolved
Outdated
mschill
commented
Should this table have any other indexes? Would think that there could be a lot of joins by TypeID and User... Also, what is the difference between: Added an index Should this table have any other indexes?
Would think that there could be a lot of joins by TypeID and User...
Also, what is the difference between:
UsrID
and
UserID?
Added an index
plarsen
commented
UsrID is the id of the PROMS user. Userid is the user id that created the annotation type. UsrID is the id of the PROMS user. Userid is the user id that created the annotation type.
plarsen
commented
Added indexes Added indexes
mschill
commented
I would add them as 1 combined index as I don't think you would ever be providing one without the other ----- also, what should the included columns be for the index? Should there be a unique index for UsrID, TypeID? Also, should we check if Index exists before we create (i.e. if it already exists will this cause PROMSFixes to error)? Done I would add them as 1 combined index as I don't think you would ever be providing one without the other ----- also, what should the included columns be for the index?
Should there be a unique index for UsrID, TypeID?
Also, should we check if Index exists before we create (i.e. if it already exists will this cause PROMSFixes to error)?
Done
mschill
commented
can we either --- use something else like CreatedBy or add a comment in the SQL. > UsrID is the id of the PROMS user. Userid is the user id that created the annotation type.
can we either --- use something else like CreatedBy or add a comment in the SQL.
mschill
commented
Would need to figure out what is needed in include columns first (review where selecting from AnnotationTypeSelections and determine/update to be the minimum columns needed) --- but index should be similar to: CREATE UNIQUE INDEX [idx_AnnotationTypeSelections_UsridTypeID] ON [dbo].[AnnotationTypeSelections] > I would add them as 1 combined index as I don't think you would ever be providing one without the other ----- also, what should the included columns be for the index?
>
> Should there be a unique index for UsrID, TypeID?
>
> Also, should we check if Index exists before we create (i.e. if it already exists will this cause PROMSFixes to error)?
Would need to figure out what is needed in include columns first (review where selecting from AnnotationTypeSelections and determine/update to be the minimum columns needed) --- but index should be similar to:
CREATE UNIQUE INDEX [idx_AnnotationTypeSelections_UsridTypeID] ON [dbo].[AnnotationTypeSelections]
(
[UsrID] ASC,
[TypeID] ASC
)
INCLUDE (ASTypeID, ...)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
mschill
commented
As FYI - still valid As FYI - still valid
|
||||
GO
|
||||
|
||||
-- C2025-027 Annotation Type Filtering
|
||||
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[UpdateAnnotationstypeSelections]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
|
||||
DROP PROCEDURE [UpdateAnnotationstypeSelections];
|
||||
|
||||
-- Need to drop UpdateAnnotationstypeSelections SP first so script can drop and recreate the TableValAnnotTypeSelections table type
|
||||
|
||||
IF EXISTS( SELECT * FROM INFORMATION_SCHEMA.DOMAINS WHERE Domain_Name = 'TableValAnnotTypeSelections' )
|
||||
DROP TYPE [dbo].[TableValAnnotTypeSelections]
|
||||
mschill marked this conversation as resolved
Outdated
mschill
commented
Shouldn't need NameStr or RowID unless I am missing something as these are not columns in AnnotationSelections Shouldn't need NameStr or RowID unless I am missing something as these are not columns in AnnotationSelections
|
||||
|
||||
CREATE TYPE [dbo].[TableValAnnotTypeSelections] AS TABLE(
|
||||
[TypeID] [int] NOT NULL
|
||||
|
||||
mschill marked this conversation as resolved
Outdated
mschill
commented
shouldn't need a primary key on a type? shouldn't need a primary key on a type?
|
||||
)
|
||||
GO
|
||||
|
||||
/****** Object: StoredProcedure [dbo].[UpdateAnnotationstypeSelections] Script Date: 7/21/2025 8:51:42 PM ******/
|
||||
|
||||
-- =============================================
|
||||
-- Author: Paul Larsen
|
||||
-- Create date: 07/21/2025
|
||||
-- Description: Manage user choice annotation types
|
||||
-- =============================================
|
||||
CREATE PROC [dbo].[UpdateAnnotationstypeSelections]
|
||||
(
|
||||
@TempTable AS dbo.TableValAnnotTypeSelections READONLY,
|
||||
mschill marked this conversation as resolved
Outdated
mschill
commented
If commented out, would remove or give reason why commented out? If commented out, would remove or give reason why commented out?
plarsen
commented
Removed it Removed it
|
||||
@UserID [varchar](50) NULL
|
||||
)
|
||||
AS
|
||||
BEGIN
|
||||
|
||||
|
||||
|
||||
DELETE FROM AnnotationTypeSelections where UserID = @UserID
|
||||
AND
|
||||
TypeID not in
|
||||
(Select TypeID From @TempTable tmp)
|
||||
mschill marked this conversation as resolved
Outdated
mschill
commented
only need to delete the ones not already in the table. If we delete and re-add then will lose history of when truely added --- see comment below (around line 24278) for more complete, only need to delete the ones not already in the table. If we delete and re-add then will lose history of when truely added --- see comment below (around line 24278) for more complete,
|
||||
|
||||
--this would insert all the ones that are in the uploaded table and not already in AnnotationTypeSelections
|
||||
Insert INTO AnnotationTypeSelections (TypeID, UserID)
|
||||
Select tmp.TypeID, @UserID
|
||||
FROM
|
||||
mschill marked this conversation as resolved
Outdated
mschill
commented
So, shouldn't NameStr not be part of the AnnotationTypeSelections and instead pull from AnnotationTypes? (As could have situation where the Names become out of sink if it is stored multiple places) So, shouldn't NameStr not be part of the AnnotationTypeSelections and instead pull from AnnotationTypes?
(As could have situation where the Names become out of sink if it is stored multiple places)
plarsen
commented
I left it in the table. I left it in the table.
mschill
commented
would not loop through this is will perform poorly and should not be necessary. It looks like my previous comment got removed with this change as it is now past the end of this file, so I will reply to this shortly with that same comment again. would not loop through this is will perform poorly and should not be necessary. It looks like my previous comment got removed with this change as it is now past the end of this file, so I will reply to this shortly with that same comment again.
mschill
commented
would think would want to do something like: --this would delete only the ones for this User that are not in the uploaded table --this would insert all the ones that are in the uploaded table and not already in AnnotationTypeSelections would think would want to do something like:
--this would delete only the ones for this User that are not in the uploaded table
DELETE FROM AnnotationTypeSelections where UsrID in
(Select UsrID From @TempTable tmp)
AND
TypeID not in
(Select TypeID From @TempTable tmp)
--this would insert all the ones that are in the uploaded table and not already in AnnotationTypeSelections
Insert INTO AnnotationTypeSelections (TypeID, UsrID)
Select TypeID, UserID
FROM
@TempTable tmp
LEFT OUTER JOIN
AnnotationTypeSelections ATS on ATS.TypeID = tmp.TypeID
AND ATS.UsrID = tmp.UsrID
where
ATS.ASTypeID IS NULL
mschill
commented
Also as a heads up - I sent an email with an attachment --- looks like there is a side consequence to having Userid be part of the table type and not separate --- that side consequence occurs if you have items selected and then want to de-select all of the items. Also as a heads up - I sent an email with an attachment --- looks like there is a side consequence to having Userid be part of the table type and not separate --- that side consequence occurs if you have items selected and then want to de-select all of the items.
|
||||
@TempTable tmp
|
||||
LEFT OUTER JOIN
|
||||
AnnotationTypeSelections ATS on ATS.TypeID = tmp.TypeID
|
||||
AND ATS.UserID = @UserID
|
||||
where
|
||||
ATS.ASTypeID IS NULL
|
||||
|
||||
END
|
||||
GO
|
||||
|
||||
IF (@@Error = 0) PRINT 'Running vesp_UpdateEPFormat Succeeded'
|
||||
ELSE PRINT 'Running vesp_UpdateEPFormat Failed to Execute'
|
||||
GO
|
||||
@@ -24117,8 +24328,8 @@ BEGIN TRY -- Try Block
|
||||
DECLARE @RevDate varchar(255)
|
||||
DECLARE @RevDescription varchar(255)
|
||||
|
||||
set @RevDate = '6/20/2025 3:07 PM'
|
||||
set @RevDescription = 'Annotation Support'
|
||||
set @RevDate = '07/10/2025 2:30 PM'
|
||||
set @RevDescription = 'C2025-027 Annotation Type Filtering'
|
||||
|
||||
Select cast(@RevDate as datetime) RevDate, @RevDescription RevDescription
|
||||
PRINT 'SQL Code Revision ' + @RevDate + ' - ' + @RevDescription
|
||||
|
@@ -152,6 +152,17 @@
|
||||
<DependentUpon>AboutVEPROMS.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="BookMarks.cs" />
|
||||
<Compile Include="dlgAnnotationsSelect.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="dlgAnnotationsSelect.Designer.cs">
|
||||
<DependentUpon>dlgAnnotationsSelect.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="dlgAnnotationsSelect.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>dlgAnnotationsSelect.resx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="dlgApproveProcedure.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
@@ -337,6 +348,10 @@
|
||||
<SubType>Designer</SubType>
|
||||
<DependentUpon>AboutVEPROMS.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="dlgAnnotationsSelect.resx">
|
||||
<DependentUpon>dlgAnnotationsSelect.cs</DependentUpon>
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="dlgMSWordMessage.resx">
|
||||
<DependentUpon>dlgMSWordMessage.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
|
229
PROMS/VEPROMS User Interface/dlgAnnotationsSelect.Designer.cs
generated
Normal file
@@ -0,0 +1,229 @@
|
||||
|
||||
namespace VEPROMS
|
||||
mschill marked this conversation as resolved
mschill
commented
Naming/casing should be consistent: Naming/casing should be consistent:
class is:
DlgAnnotationsSelect
but
designer is
dlgAnnotationsSelect?
plarsen
commented
Fixed Fixed
|
||||
{
|
||||
partial class dlgAnnotationsSelect
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.lstUnselected = new System.Windows.Forms.ListBox();
|
||||
this.lstSelected = new System.Windows.Forms.ListBox();
|
||||
this.btnSelect = new System.Windows.Forms.Button();
|
||||
this.btnSelectAll = new System.Windows.Forms.Button();
|
||||
this.btnDeselectAll = new System.Windows.Forms.Button();
|
||||
this.btnDeselect = new System.Windows.Forms.Button();
|
||||
this.btnUpdate = new System.Windows.Forms.Button();
|
||||
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.btnCancel = new System.Windows.Forms.Button();
|
||||
this.lblMessage = new System.Windows.Forms.Label();
|
||||
this.lblAvailableTypes = new System.Windows.Forms.Label();
|
||||
this.lblSelected = new System.Windows.Forms.Label();
|
||||
this.tableLayoutPanel1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// lstUnselected
|
||||
//
|
||||
this.lstUnselected.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.lstUnselected.FormattingEnabled = true;
|
||||
this.lstUnselected.IntegralHeight = false;
|
||||
this.lstUnselected.ItemHeight = 16;
|
||||
this.lstUnselected.Location = new System.Drawing.Point(3, 3);
|
||||
this.lstUnselected.Name = "lstUnselected";
|
||||
this.tableLayoutPanel1.SetRowSpan(this.lstUnselected, 4);
|
||||
this.lstUnselected.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended;
|
||||
this.lstUnselected.Size = new System.Drawing.Size(287, 347);
|
||||
this.lstUnselected.TabIndex = 0;
|
||||
this.lstUnselected.SelectedIndexChanged += new System.EventHandler(this.lst_SelectedIndexChanged);
|
||||
//
|
||||
// lstSelected
|
||||
//
|
||||
this.lstSelected.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.lstSelected.FormattingEnabled = true;
|
||||
this.lstSelected.IntegralHeight = false;
|
||||
this.lstSelected.ItemHeight = 16;
|
||||
this.lstSelected.Location = new System.Drawing.Point(334, 3);
|
||||
this.lstSelected.Name = "lstSelected";
|
||||
this.tableLayoutPanel1.SetRowSpan(this.lstSelected, 4);
|
||||
this.lstSelected.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended;
|
||||
this.lstSelected.Size = new System.Drawing.Size(288, 347);
|
||||
this.lstSelected.TabIndex = 1;
|
||||
this.lstSelected.SelectedIndexChanged += new System.EventHandler(this.lst_SelectedIndexChanged);
|
||||
//
|
||||
// btnSelect
|
||||
//
|
||||
this.btnSelect.Anchor = System.Windows.Forms.AnchorStyles.None;
|
||||
this.btnSelect.Location = new System.Drawing.Point(298, 32);
|
||||
this.btnSelect.Name = "btnSelect";
|
||||
this.btnSelect.Size = new System.Drawing.Size(28, 23);
|
||||
this.btnSelect.TabIndex = 2;
|
||||
this.btnSelect.Text = ">";
|
||||
this.btnSelect.UseVisualStyleBackColor = true;
|
||||
this.btnSelect.Click += new System.EventHandler(this.btnSelect_Click);
|
||||
//
|
||||
// btnSelectAll
|
||||
//
|
||||
this.btnSelectAll.Anchor = System.Windows.Forms.AnchorStyles.None;
|
||||
this.btnSelectAll.Location = new System.Drawing.Point(296, 120);
|
||||
this.btnSelectAll.Name = "btnSelectAll";
|
||||
this.btnSelectAll.Size = new System.Drawing.Size(32, 23);
|
||||
this.btnSelectAll.TabIndex = 3;
|
||||
this.btnSelectAll.Text = ">>";
|
||||
this.btnSelectAll.UseVisualStyleBackColor = true;
|
||||
this.btnSelectAll.Click += new System.EventHandler(this.btnSelectAll_Click);
|
||||
//
|
||||
// btnDeselectAll
|
||||
//
|
||||
this.btnDeselectAll.Anchor = System.Windows.Forms.AnchorStyles.None;
|
||||
this.btnDeselectAll.Location = new System.Drawing.Point(297, 207);
|
||||
this.btnDeselectAll.Name = "btnDeselectAll";
|
||||
this.btnDeselectAll.Size = new System.Drawing.Size(30, 26);
|
||||
this.btnDeselectAll.TabIndex = 5;
|
||||
this.btnDeselectAll.Text = "<<";
|
||||
this.btnDeselectAll.UseVisualStyleBackColor = true;
|
||||
this.btnDeselectAll.Click += new System.EventHandler(this.btnDeselectAll_Click);
|
||||
//
|
||||
// btnDeselect
|
||||
//
|
||||
this.btnDeselect.Anchor = System.Windows.Forms.AnchorStyles.None;
|
||||
this.btnDeselect.Location = new System.Drawing.Point(298, 297);
|
||||
this.btnDeselect.Name = "btnDeselect";
|
||||
this.btnDeselect.Size = new System.Drawing.Size(28, 23);
|
||||
this.btnDeselect.TabIndex = 4;
|
||||
this.btnDeselect.Text = "<";
|
||||
this.btnDeselect.UseVisualStyleBackColor = true;
|
||||
this.btnDeselect.Click += new System.EventHandler(this.btnDeselect_Click);
|
||||
//
|
||||
// btnUpdate
|
||||
//
|
||||
this.btnUpdate.Anchor = System.Windows.Forms.AnchorStyles.None;
|
||||
this.btnUpdate.Location = new System.Drawing.Point(536, 422);
|
||||
this.btnUpdate.Name = "btnUpdate";
|
||||
this.btnUpdate.Size = new System.Drawing.Size(100, 35);
|
||||
this.btnUpdate.TabIndex = 8;
|
||||
this.btnUpdate.Text = "Update";
|
||||
this.btnUpdate.UseVisualStyleBackColor = true;
|
||||
this.btnUpdate.Click += new System.EventHandler(this.btnUpdate_Click);
|
||||
//
|
||||
// tableLayoutPanel1
|
||||
//
|
||||
this.tableLayoutPanel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.tableLayoutPanel1.ColumnCount = 3;
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 38F));
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||
this.tableLayoutPanel1.Controls.Add(this.lstUnselected, 0, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.lstSelected, 2, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.btnDeselect, 1, 3);
|
||||
this.tableLayoutPanel1.Controls.Add(this.btnDeselectAll, 1, 2);
|
||||
this.tableLayoutPanel1.Controls.Add(this.btnSelect, 1, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.btnSelectAll, 1, 1);
|
||||
this.tableLayoutPanel1.Location = new System.Drawing.Point(12, 62);
|
||||
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
|
||||
this.tableLayoutPanel1.RowCount = 4;
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F));
|
||||
this.tableLayoutPanel1.Size = new System.Drawing.Size(625, 353);
|
||||
this.tableLayoutPanel1.TabIndex = 6;
|
||||
//
|
||||
// btnCancel
|
||||
//
|
||||
this.btnCancel.Location = new System.Drawing.Point(411, 422);
|
||||
this.btnCancel.Name = "btnCancel";
|
||||
this.btnCancel.Size = new System.Drawing.Size(100, 35);
|
||||
this.btnCancel.TabIndex = 9;
|
||||
this.btnCancel.Text = "Close";
|
||||
this.btnCancel.UseVisualStyleBackColor = true;
|
||||
this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click_1);
|
||||
//
|
||||
// lblMessage
|
||||
//
|
||||
this.lblMessage.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.lblMessage.Location = new System.Drawing.Point(43, 12);
|
||||
this.lblMessage.Name = "lblMessage";
|
||||
this.lblMessage.Size = new System.Drawing.Size(317, 16);
|
||||
this.lblMessage.TabIndex = 10;
|
||||
this.lblMessage.Text = "Updates will appear when PROMS is restarted.";
|
||||
//
|
||||
// lblAvailableTypes
|
||||
//
|
||||
this.lblAvailableTypes.AutoSize = true;
|
||||
this.lblAvailableTypes.Location = new System.Drawing.Point(12, 43);
|
||||
this.lblAvailableTypes.Name = "lblAvailableTypes";
|
||||
this.lblAvailableTypes.Size = new System.Drawing.Size(110, 16);
|
||||
this.lblAvailableTypes.TabIndex = 11;
|
||||
this.lblAvailableTypes.Text = "Types Available ";
|
||||
//
|
||||
// lblSelected
|
||||
//
|
||||
this.lblSelected.AutoSize = true;
|
||||
this.lblSelected.Location = new System.Drawing.Point(343, 43);
|
||||
this.lblSelected.Name = "lblSelected";
|
||||
this.lblSelected.Size = new System.Drawing.Size(104, 16);
|
||||
this.lblSelected.TabIndex = 12;
|
||||
this.lblSelected.Text = "Types Selected";
|
||||
//
|
||||
// dlgAnnotationsSelect
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(653, 466);
|
||||
this.Controls.Add(this.lblSelected);
|
||||
this.Controls.Add(this.lblAvailableTypes);
|
||||
this.Controls.Add(this.btnCancel);
|
||||
this.Controls.Add(this.tableLayoutPanel1);
|
||||
this.Controls.Add(this.btnUpdate);
|
||||
this.Controls.Add(this.lblMessage);
|
||||
this.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
|
||||
this.Name = "dlgAnnotationsSelect";
|
||||
this.Text = "Select Annotation Types";
|
||||
this.Load += new System.EventHandler(this.DlgAnnotationsSelect_Load);
|
||||
this.tableLayoutPanel1.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
private System.Windows.Forms.ListBox lstUnselected;
|
||||
private System.Windows.Forms.ListBox lstSelected;
|
||||
private System.Windows.Forms.Button btnSelect;
|
||||
private System.Windows.Forms.Button btnSelectAll;
|
||||
private System.Windows.Forms.Button btnDeselectAll;
|
||||
private System.Windows.Forms.Button btnDeselect;
|
||||
private System.Windows.Forms.Button btnUpdate;
|
||||
|
||||
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
|
||||
private System.Windows.Forms.Button btnCancel;
|
||||
private System.Windows.Forms.Label lblMessage;
|
||||
private System.Windows.Forms.Label lblAvailableTypes;
|
||||
private System.Windows.Forms.Label lblSelected;
|
||||
}
|
||||
}
|
2571
PROMS/VEPROMS User Interface/frmSysOptions.Designer.cs
generated
@@ -365,5 +365,11 @@ namespace VEPROMS
|
||||
Properties.Settings.Default.cbShwRplWrdsColor = cbShwRplWrdsColor.Checked; // update setting value
|
||||
Properties.Settings.Default.Save(); // save settings
|
||||
}
|
||||
}
|
||||
|
||||
mschill marked this conversation as resolved
mschill
commented
unless reason for keeping the commented out code (should be explained in the comments) --- commented out code shouldn't be checked in? (this would be throughout this file) unless reason for keeping the commented out code (should be explained in the comments) --- commented out code shouldn't be checked in?
(this would be throughout this file)
mschill
commented
Now, this is a method with everything inside commented out --- if no code is to execute, should the method be removed? Now, this is a method with everything inside commented out --- if no code is to execute, should the method be removed?
|
||||
private void cbShwAnnoFilter_Click(object sender, EventArgs e)
|
||||
{
|
||||
frmVEPROMS.tv_SelectAnnotations();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@@ -723,9 +723,8 @@ namespace VEPROMS
|
||||
this.epAnnotations.Expanded = false;
|
||||
this.epAnnotations.ExpandedBounds = new System.Drawing.Rectangle(4, 544, 1187, 202);
|
||||
this.epAnnotations.ExpandOnTitleClick = true;
|
||||
this.epAnnotations.Location = new System.Drawing.Point(5, 547);
|
||||
this.epAnnotations.Name = "epAnnotations";
|
||||
this.epAnnotations.Size = new System.Drawing.Size(1185, 26);
|
||||
this.epAnnotations.Location = new System.Drawing.Point(5, 324);
|
||||
this.epAnnotations.Size = new System.Drawing.Size(1185, 249);
|
||||
this.epAnnotations.Style.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.epAnnotations.Style.BackColor1.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground;
|
||||
this.epAnnotations.Style.BackColor2.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground2;
|
||||
@@ -765,7 +764,7 @@ namespace VEPROMS
|
||||
this.ctrlAnnotationDetails.MyUserInfo = null;
|
||||
this.ctrlAnnotationDetails.Name = "ctrlAnnotationDetails";
|
||||
this.ctrlAnnotationDetails.ProcItem = null;
|
||||
this.ctrlAnnotationDetails.Size = new System.Drawing.Size(1185, 0);
|
||||
this.ctrlAnnotationDetails.Size = new System.Drawing.Size(1185, 223);
|
||||
this.ctrlAnnotationDetails.TabIndex = 15;
|
||||
//
|
||||
// btnAnnoDetailsPushPin
|
||||
@@ -799,7 +798,7 @@ namespace VEPROMS
|
||||
this.epProcedures.ExpandOnTitleClick = true;
|
||||
this.epProcedures.Location = new System.Drawing.Point(5, 57);
|
||||
this.epProcedures.Name = "epProcedures";
|
||||
this.epProcedures.Size = new System.Drawing.Size(326, 490);
|
||||
this.epProcedures.Size = new System.Drawing.Size(326, 267);
|
||||
this.epProcedures.Style.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.epProcedures.Style.BackColor1.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground;
|
||||
this.epProcedures.Style.BackColor2.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground2;
|
||||
|
@@ -543,7 +543,6 @@ namespace VEPROMS
|
||||
tv.RefreshCheckedOutProcedures += new vlnTreeViewEvent(tv_RefreshCheckedOutProcedures);
|
||||
tv.ProcedureCheckedOutTo += new vlnTreeViewEvent(tv_ProcedureCheckedOutTo);
|
||||
tv.ViewPDF += new vlnTreeViewPdfEvent(tv_ViewPDF);
|
||||
|
||||
displayApplicability.ApplicabilityViewModeChanged += new DisplayApplicability.DisplayApplicabilityEvent(displayApplicability_ApplicabilityViewModeChanged);
|
||||
mschill marked this conversation as resolved
Outdated
mschill
commented
unless reason for keeping the commented out code (should be explained in the comments) --- commented out code shouldn't be checked in? unless reason for keeping the commented out code (should be explained in the comments) --- commented out code shouldn't be checked in?
|
||||
|
||||
tv.ExportImportProcedureSets += new vlnTreeViewEvent(tv_ExportImportProcedureSets);
|
||||
@@ -1296,7 +1295,11 @@ namespace VEPROMS
|
||||
|
||||
pi.MyDocVersion.DocVersionConfig.SelectedSlave = 0;
|
||||
}
|
||||
|
||||
public static void tv_SelectAnnotations()
|
||||
{
|
||||
mschill marked this conversation as resolved
mschill
commented
unless reason for keeping the commented out code (should be explained in the comments) --- commented out code shouldn't be checked in? (this would be throughout this file) unless reason for keeping the commented out code (should be explained in the comments) --- commented out code shouldn't be checked in?
(this would be throughout this file)
|
||||
dlgAnnotationsSelect sannoDlg = new dlgAnnotationsSelect(VlnSettings.UserID);
|
||||
sannoDlg.ShowDialog(); // RHM 20120925 - Center dialog over PROMS window
|
||||
}
|
||||
void tv_CreateTimeCriticalActionSummary(object sender, vlnTreeEventArgs args)
|
||||
{
|
||||
DialogResult dr = System.Windows.Forms.DialogResult.Yes;
|
||||
|
175
PROMS/VEPROMS.CSLA.Library/Minimal/AnnotationstypeSections.cs
Normal file
@@ -0,0 +1,175 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Data;
|
||||
using System.Data.SqlClient;
|
||||
using System.Text.RegularExpressions;
|
||||
using Csla;
|
||||
using Csla.Data;
|
||||
using System.Configuration;
|
||||
using System.IO;
|
||||
using System.ComponentModel;
|
||||
|
||||
|
||||
//namespace VEPROMS.CSLA.Library;
|
||||
|
||||
// C2025-027 this new file is used to support (data retrival) for selecting Annotation types to display on the Annotation screen. This is related to Annotation type filtering through V->Options.
|
||||
mschill marked this conversation as resolved
Outdated
mschill
commented
Just to double check ---- Since there are many annotation screens, should we be more specific / say this is related to Annotation type filtering through V->Options? Just to double check ---- Since there are many annotation screens, should we be more specific / say this is related to Annotation type filtering through V->Options?
|
||||
|
||||
namespace VEPROMS.CSLA.Library
|
||||
{
|
||||
public class AnnotationstypeSelections
|
||||
{
|
||||
public static DataTable Get(string UserID)
|
||||
{
|
||||
using (SqlConnection cn = Database.VEPROMS_SqlConnection)
|
||||
{
|
||||
using (SqlCommand cm = cn.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
cm.CommandType = CommandType.StoredProcedure;
|
||||
cm.CommandText = "getAnnotationstypeFiltered";
|
||||
cm.CommandTimeout = Database.DefaultTimeout;
|
||||
cm.Parameters.AddWithValue("@UsrID", UserID);
|
||||
SqlDataAdapter da = new SqlDataAdapter(cm);
|
||||
SqlDataReader reader = cm.ExecuteReader();
|
||||
DataTable dt = new DataTable();
|
||||
dt.Load(reader);
|
||||
// if the user has not created a annotation sub-set list saved to AnnotationTypeSelections table.
|
||||
if (dt.Rows.Count < 1)
|
||||
{
|
||||
DataRow row;
|
||||
mschill marked this conversation as resolved
mschill
commented
commented out code should be removed or reason given for why it is commented out / should be in the code long term. commented out code should be removed or reason given for why it is commented out / should be in the code long term.
plarsen
commented
Comment removed. Comment removed.
mschill
commented
still appears to be: //dt.Rows.Add(DataPortal.Fetch()); still appears to be:
//dt.Rows.Add(DataPortal.Fetch<AnnotationTypeInfoList>());
//DataPortal.Fetch<AnnotationTypeInfoList>();
|
||||
int rowflg = 0;
|
||||
foreach (AnnotationTypeInfo annosel in DataPortal.Fetch<AnnotationTypeInfoList>())
|
||||
{
|
||||
// C2025-027 need to use a datatable instead of AnnotationTypeInfoList so the global search Annotations will not be effected by the Annotation select list selections
|
||||
if (rowflg == 0)
|
||||
{
|
||||
row = dt.NewRow();
|
||||
dt.Rows.Add(row);
|
||||
rowflg = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
row = dt.NewRow();
|
||||
row["TypeID"] = annosel.TypeID;
|
||||
row["Name"] = annosel.Name;
|
||||
row["Config"] = annosel.Config;
|
||||
row["DTS"] = annosel.DTS;
|
||||
row["UserID"] = annosel.UserID;
|
||||
row["IsEPAnnotationType"] = annosel.IsEPAnnotationType;
|
||||
dt.Rows.Add(row);
|
||||
}
|
||||
|
||||
|
||||
};
|
||||
}
|
||||
return dt;
|
||||
mschill marked this conversation as resolved
mschill
commented
unless reason for keeping the commented out code --- commented out code shouldn't be checked in? (this would be throughout this file) unless reason for keeping the commented out code --- commented out code shouldn't be checked in?
(this would be throughout this file)
plarsen
commented
I removed the commented code. I removed the commented code.
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
//B2025-004
|
||||
//if it fails loading previously open tabs, simply treat it as if no tabs were open
|
||||
//instead of crashing
|
||||
return new DataTable();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
public static DataTable Retrieve(string UserID)
|
||||
{
|
||||
using (SqlConnection cn = Database.VEPROMS_SqlConnection)
|
||||
{
|
||||
using (SqlCommand cm = cn.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
cm.CommandType = CommandType.StoredProcedure;
|
||||
cm.CommandText = "getAnnotationstypeSelections";
|
||||
cm.CommandTimeout = Database.DefaultTimeout;
|
||||
cm.Parameters.AddWithValue("@UsrID", UserID);
|
||||
SqlDataAdapter da = new SqlDataAdapter(cm);
|
||||
SqlDataReader reader = cm.ExecuteReader();
|
||||
DataTable dt = new DataTable();
|
||||
dt.Load(reader);
|
||||
|
||||
return dt;
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
//B2025-004
|
||||
//if it fails loading previously open tabs, simply treat it as if no tabs were open
|
||||
//instead of crashing
|
||||
return new DataTable();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
public static DataTable GetAnnoTypes(string UserID)
|
||||
{
|
||||
using (SqlConnection cn = Database.VEPROMS_SqlConnection)
|
||||
{
|
||||
using (SqlCommand cm = cn.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
cm.CommandType = CommandType.StoredProcedure;
|
||||
cm.CommandText = "getAnnotationSelectListTypes";
|
||||
cm.CommandTimeout = Database.DefaultTimeout;
|
||||
SqlDataAdapter da = new SqlDataAdapter(cm);
|
||||
cm.Parameters.AddWithValue("@UserID", UserID);
|
||||
SqlDataReader reader = cm.ExecuteReader();
|
||||
DataTable dt = new DataTable();
|
||||
dt.Load(reader);
|
||||
|
||||
return dt;
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
//B2025-004
|
||||
//if it fails loading previously open tabs, simply treat it as if no tabs were open
|
||||
//instead of crashing
|
||||
return new DataTable();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void Update(DataTable dt, string UserID)
|
||||
{
|
||||
mschill marked this conversation as resolved
Outdated
mschill
commented
if commented out, should this be removed? if commented out, should this be removed?
|
||||
using (SqlConnection cn = Database.VEPROMS_SqlConnection)
|
||||
{
|
||||
using (SqlCommand cm = cn.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
mschill marked this conversation as resolved
Outdated
mschill
commented
if have a try catch, should there be something in the catch? if have a try catch, should there be something in the catch?
|
||||
cm.CommandType = CommandType.StoredProcedure;
|
||||
cm.CommandText = "UpdateAnnotationstypeSelections";
|
||||
cm.CommandTimeout = Database.DefaultTimeout;
|
||||
|
||||
//Pass table Valued parameter to Store Procedure
|
||||
SqlParameter sqlParam = cm.Parameters.AddWithValue("@TempTable", dt);
|
||||
sqlParam.SqlDbType = SqlDbType.Structured;
|
||||
cm.Parameters.AddWithValue("@UserID", UserID);
|
||||
cm.ExecuteNonQuery();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new DbCslaException("Error in UpdateAnnotationstypeSelections: update failed", ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@@ -387,6 +387,7 @@
|
||||
<Compile Include="Generated\ZContentInfo.cs" />
|
||||
<Compile Include="Generated\ZTransition.cs" />
|
||||
<Compile Include="Generated\ZTransitionInfo.cs" />
|
||||
<Compile Include="Minimal\AnnotationstypeSections.cs" />
|
||||
<Compile Include="Minimal\UserSettings.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="VEObjects\VEDrillDown.cs" />
|
||||
|
@@ -119,8 +119,8 @@ namespace Volian.Controls.Library
|
||||
if (CurrentItem.MyDocVersion != null)
|
||||
if (CurrentItem.MyDocVersion.DocVersionAssociationCount > 0)
|
||||
_ROPath = CurrentItem.MyDocVersion.DocVersionAssociations[0].MyROFst.MyRODb.FolderPath;
|
||||
ProcItem = CurrentItem.MyProcedure;
|
||||
}
|
||||
|
||||
}
|
||||
mschill marked this conversation as resolved
mschill
commented
just to double check - was this intended to be commented out? just to double check - was this intended to be commented out?
mschill
commented
was this (ProcItem = CurrentItem.MyProcedure;) intended to be removed? was this (ProcItem = CurrentItem.MyProcedure;) intended to be removed?
plarsen
commented
Yes it did not work where I moved the code to retrieve selected anno types for the annotation details. Also it was not needed any more. Yes it did not work where I moved the code to retrieve selected anno types for the annotation details. Also it was not needed any more.
mschill
commented
sounds good. Just wanted to double check since this existed before your changes that removing it wasn't going to impact something else. sounds good. Just wanted to double check since this existed before your changes that removing it wasn't going to impact something else.
|
||||
public AnnotationInfo FirstExeAnnotation(ItemInfo ii)
|
||||
{
|
||||
mschill marked this conversation as resolved
Outdated
mschill
commented
this is set to a different DataSource in: should this be there/replace that? DisplayMember / ValueMember / etc... is set there - are they the same? which should be the driving DataSource / (what would happen if a discrepancy between the two - for example if all annotation types were filtered out)? this is set to a different DataSource in:
public void SetupAnnotations(DisplaySearch annosrch)
should this be there/replace that?
DisplayMember / ValueMember / etc... is set there - are they the same?
which should be the driving DataSource / (what would happen if a discrepancy between the two - for example if all annotation types were filtered out)?
|
||||
if (ii == null) return null;
|
||||
mschill marked this conversation as resolved
Outdated
mschill
commented
commented out code should be removed or reason given for why it is commented out / should be in the code long term. (lines 122-127) commented out code should be removed or reason given for why it is commented out / should be in the code long term. (lines 122-127)
plarsen
commented
Fixed Fixed
|
||||
@@ -364,7 +364,11 @@ namespace Volian.Controls.Library
|
||||
|
||||
cbGridAnnoType.DisplayMember = "Name";
|
||||
cbGridAnnoType.ValueMember = "TypeId";
|
||||
cbGridAnnoType.DataSource = AnnotationTypeInfoList.Get().Clone();
|
||||
|
||||
//C2025 - 027 Annotation Type Filtering
|
||||
cbGridAnnoType.WatermarkText = "Select Annotation Type";
|
||||
cbGridAnnoType.DataSource = VEPROMS.CSLA.Library.AnnotationstypeSelections.Get(MyUserInfo.UserID);
|
||||
|
||||
// If there are no annotatons, then selected index is -1 (not defined), otherwise select the first.
|
||||
mschill marked this conversation as resolved
mschill
commented
this should be removed if data set is set to something else (see 2 lines after this) this should be removed if data set is set to something else (see 2 lines after this)
plarsen
commented
Data set is the same Data set is the same
mschill
commented
this line is: 2-4 lines below have: cbGridAnnoType.DataSource = VEPROMS.CSLA.Library.AnnotationstypeSelections.Get(MyUserInfo.UserID); Why are we setting it to something only to re-set it to something else 2-4 lines later? this line is:
cbGridAnnoType.DataSource = AnnotationTypeInfoList.Get().Clone();
2-4 lines below have:
cbGridAnnoType.DataSource = VEPROMS.CSLA.Library.AnnotationstypeSelections.Get(MyUserInfo.UserID);
Why are we setting it to something only to re-set it to something else 2-4 lines later?
|
||||
// This was done so that it could be saved if there was text entered but user moves to another steprtb without selecting save button
|
||||
// so that annotation gets saved.
|
||||
|
@@ -573,11 +573,12 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
if (ProcedureCheckedOutTo != null) ProcedureCheckedOutTo(sender, args);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// C2025-027
|
||||
public event vlnTreeViewEvent SelectAnnotations;
|
||||
private void OnSelectAnnotations(object sender, vlnTreeEventArgs args)
|
||||
{
|
||||
if (SelectAnnotations != null) SelectAnnotations(sender, args);
|
||||
}
|
||||
public event vlnTreeViewEvent ExportImportProcedureSets;
|
||||
private void OnExportImportProcedureSets(object sender, vlnTreeEventArgs args)
|
||||
{
|
||||
@@ -871,6 +872,8 @@ namespace Volian.Controls.Library
|
||||
MenuItem miqp = new MenuItem("Quick Print");
|
||||
//MenuItem mips = new MenuItem("Print Section");
|
||||
MenuItem mia = new MenuItem("Approve");
|
||||
MenuItem misa = new MenuItem("Select Annotations"); //C2025-027
|
||||
|
||||
int k = 0;
|
||||
foreach (string s in pri.MyDocVersion.UnitNames)
|
||||
{
|
||||
@@ -895,12 +898,16 @@ namespace Volian.Controls.Library
|
||||
MenuItem mtc = mitcas.MenuItems.Add(s, new EventHandler(miMultiUnit_Click));
|
||||
mtc.Enabled = procAppl;
|
||||
mtc.Tag = k;
|
||||
MenuItem msa = misa.MenuItems.Add(s, new EventHandler(miMultiUnit_Click));
|
||||
msa.Enabled = procAppl;
|
||||
msa.Tag = k;
|
||||
}
|
||||
cm.MenuItems.Add(micas);
|
||||
cm.MenuItems.Add(mitcas);
|
||||
cm.MenuItems.Add(mip);
|
||||
cm.MenuItems.Add(miqp);
|
||||
//cm.MenuItems.Add(mips);
|
||||
cm.MenuItems.Add(misa);
|
||||
AddShowChangeBarsAfterMenuItem(cm.MenuItems, pri);
|
||||
cm.MenuItems.Add(mia);
|
||||
AddApprovedRevisionsMultiUnit(cm.MenuItems, pri);
|
||||
@@ -916,6 +923,7 @@ namespace Volian.Controls.Library
|
||||
AddShowChangeBarsAfterMenuItem(cm.MenuItems, pri);
|
||||
cm.MenuItems.Add("Approve", new EventHandler(mi_Click));
|
||||
//_MyLog.WarnFormat("Context Menu 1 before - {0}", GC.GetTotalMemory(true));
|
||||
cm.MenuItems.Add("Select Annotations", new EventHandler(mi_Click)); //C2025-027
|
||||
AddApprovedRevisions(cm.MenuItems, pri);
|
||||
//_MyLog.WarnFormat("Context Menu 1 after - {0}", GC.GetTotalMemory(true));
|
||||
}
|
||||
@@ -928,6 +936,7 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
MenuItem mip = new MenuItem("Print");
|
||||
MenuItem miqp = new MenuItem("Quick Print");
|
||||
MenuItem misa = new MenuItem("Select Annotations"); //C2025-027
|
||||
int k = 0;
|
||||
foreach (string s in pri.MyDocVersion.UnitNames)
|
||||
{
|
||||
@@ -936,15 +945,19 @@ namespace Volian.Controls.Library
|
||||
mp.Tag = k;
|
||||
MenuItem mqp = miqp.MenuItems.Add(s, new EventHandler(miMultiUnit_Click));
|
||||
mqp.Tag = k;
|
||||
MenuItem msa = misa.MenuItems.Add(s, new EventHandler(miMultiUnit_Click));
|
||||
msa.Tag = k;
|
||||
}
|
||||
cm.MenuItems.Add(mip);
|
||||
cm.MenuItems.Add(miqp);
|
||||
cm.MenuItems.Add(misa);
|
||||
AddApprovedRevisionsMultiUnit(cm.MenuItems, pri);
|
||||
}
|
||||
else
|
||||
{
|
||||
cm.MenuItems.Add("Print", new EventHandler(mi_Click));
|
||||
cm.MenuItems.Add("Quick Print", new EventHandler(mi_Click));
|
||||
cm.MenuItems.Add("Select Annotations", new EventHandler(mi_Click)); //C2025-027
|
||||
AddApprovedRevisions(cm.MenuItems, pri);
|
||||
}
|
||||
}
|
||||
@@ -1936,6 +1949,9 @@ namespace Volian.Controls.Library
|
||||
case "Create Time Critical Action Summary":
|
||||
OnCreateTimeCriticalActionSummary(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0, mi.Text, (int)mi.Tag));
|
||||
break;
|
||||
case "Select Annotations": // C2025-027
|
||||
OnSelectAnnotations(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0));
|
||||
break;
|
||||
default:
|
||||
if (mip.Text.StartsWith("Showing Change Bars Starting"))
|
||||
OnSelectDateToStartChangeBars(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0));
|
||||
@@ -2241,6 +2257,9 @@ namespace Volian.Controls.Library
|
||||
FlexibleMessageBox.Show("You have copied a document that is NOT linked to an Enhanced Document.\n\n" +
|
||||
"You cannot paste a Non-Enhanced Procedure into an Enhanced Procedure Set.", "Cannot Paste Here");
|
||||
break;
|
||||
case "Select Annotations": // C2025-027
|
||||
OnSelectAnnotations(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0));
|
||||
break;
|
||||
//case "Check Out Procedure Set":
|
||||
// CheckOutDocVersion(SelectedNode as VETreeNode);
|
||||
// break;
|
||||
|
just to check - is there a reason these 2 items (the id and NameStr) are global variables / should stay in memory while the form is open?
It looks like they are only used in 1 function - update?
I moved them