B2020-107: Add missing options to Search’s Save & Load

This commit is contained in:
Kathy Ruffing 2020-08-14 15:28:09 +00:00
parent 79d16a33a7
commit 9142e7b168
3 changed files with 160 additions and 44 deletions

View File

@ -1406,6 +1406,7 @@ namespace VEPROMS.CSLA.Library
{ {
get get
{ {
if (MyHLS == null) return 0;
return MyHLS.GetMaxRNOLevelsFromChildren; return MyHLS.GetMaxRNOLevelsFromChildren;
} }
} }
@ -2622,7 +2623,7 @@ namespace VEPROMS.CSLA.Library
{ {
get get
{ {
string dtext = ConvertToDisplayText(Regex.Replace(_SearchPath ?? "", "\x11.*?\x07", "\x07")); string dtext = ConvertToDisplayText(Regex.Replace(SearchPath ?? "", "\x11.*?\x07", "\x07"));
if (IsFigure && dtext.EndsWith("Table.")) dtext = dtext.Substring(0, dtext.Length - "Table.".Length) + "Figure."; if (IsFigure && dtext.EndsWith("Table.")) dtext = dtext.Substring(0, dtext.Length - "Table.".Length) + "Figure.";
else if (IsRtfRaw && dtext.EndsWith("Table.") && FormatStepData.Type.Contains("Equation")) dtext = dtext.Substring(0, dtext.Length - "Table.".Length) + "Equation."; else if (IsRtfRaw && dtext.EndsWith("Table.") && FormatStepData.Type.Contains("Equation")) dtext = dtext.Substring(0, dtext.Length - "Table.".Length) + "Equation.";
return dtext; return dtext;

View File

@ -961,6 +961,10 @@ namespace Volian.Controls.Library
// //
// //
// //
this.galSymbols.TitleMouseOverStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
//
//
//
this.galSymbols.TitleStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; this.galSymbols.TitleStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
// //
// buttonItem1 // buttonItem1

View File

@ -408,7 +408,7 @@ namespace Volian.Controls.Library
{ {
_TimeActivity.Open(); _TimeActivity.Open();
TmrRefresh.Enabled = false; TmrRefresh.Enabled = false;
AdvTreeStepTypesFillIn(); if (!_fromLoad)AdvTreeStepTypesFillIn(); // Don't reload if coming from Load - this overwrites the load settings
_TimeActivity.Close(); _TimeActivity.Close();
} }
public void StartAdvTreeStepTypesFillIn()// B2016-258 Hang after selecting a procedure if the Step Type panel is open on the search panel public void StartAdvTreeStepTypesFillIn()// B2016-258 Hang after selecting a procedure if the Step Type panel is open on the search panel
@ -543,6 +543,7 @@ namespace Volian.Controls.Library
topnode = new DevComponents.AdvTree.Node(); topnode = new DevComponents.AdvTree.Node();
topnode.Text = "Available Procedure Sets"; topnode.Text = "Available Procedure Sets";
topnode.Tag = fi; topnode.Tag = fi;
topnode.DataKey = fi.FolderID;
advTreeProcSets.Nodes.Add(topnode); advTreeProcSets.Nodes.Add(topnode);
//advTreeProcSets.AfterNodeInsert += new TreeNodeCollectionEventHandler(advTreeProcSets_AfterNodeInsert); //advTreeProcSets.AfterNodeInsert += new TreeNodeCollectionEventHandler(advTreeProcSets_AfterNodeInsert);
@ -553,6 +554,7 @@ namespace Volian.Controls.Library
DevComponents.AdvTree.Node newnode = new DevComponents.AdvTree.Node(); DevComponents.AdvTree.Node newnode = new DevComponents.AdvTree.Node();
newnode.Text = fic.ToString(); newnode.Text = fic.ToString();
newnode.Tag = fic; newnode.Tag = fic;
newnode.DataKey = fi.FolderID;
AddCheckBox(true, newnode);//C2016-045 Allow Folders to be selected. AddCheckBox(true, newnode);//C2016-045 Allow Folders to be selected.
cntnd++; cntnd++;
if (fic.ChildFolderCount > 0 || fic.FolderDocVersionCount > 0) // allow for '+' for tree expansion if (fic.ChildFolderCount > 0 || fic.FolderDocVersionCount > 0) // allow for '+' for tree expansion
@ -572,6 +574,7 @@ namespace Volian.Controls.Library
DevComponents.AdvTree.Node newnode = new DevComponents.AdvTree.Node(); DevComponents.AdvTree.Node newnode = new DevComponents.AdvTree.Node();
newnode.Text = fi.ToString(); newnode.Text = fi.ToString();
newnode.Tag = fi; newnode.Tag = fi;
newnode.DataKey = fi.FolderID;
AddCheckBox(true, newnode);//C2016-045 Allow Folders to be selected. AddCheckBox(true, newnode);//C2016-045 Allow Folders to be selected.
topnode.Nodes.Add(newnode); topnode.Nodes.Add(newnode);
lstCheckedDocVersions.Add(Mydocversion); lstCheckedDocVersions.Add(Mydocversion);
@ -586,6 +589,7 @@ namespace Volian.Controls.Library
topnode.Text = fi.ToString(); topnode.Text = fi.ToString();
advTreeProcSets.Nodes.Add(topnode); advTreeProcSets.Nodes.Add(topnode);
topnode.Tag = fi; topnode.Tag = fi;
topnode.DataKey = fi.FolderID;
} }
advTreeProcSets.BeforeExpand += new DevComponents.AdvTree.AdvTreeNodeCancelEventHandler(advTreeProcSets_BeforeExpand); advTreeProcSets.BeforeExpand += new DevComponents.AdvTree.AdvTreeNodeCancelEventHandler(advTreeProcSets_BeforeExpand);
@ -633,6 +637,7 @@ namespace Volian.Controls.Library
DevComponents.AdvTree.Node newnode = new DevComponents.AdvTree.Node(); DevComponents.AdvTree.Node newnode = new DevComponents.AdvTree.Node();
newnode.Text = fic.ToString(); newnode.Text = fic.ToString();
newnode.Tag = fic; newnode.Tag = fic;
newnode.DataKey = fic.FolderID;
par.Nodes.Add(newnode); par.Nodes.Add(newnode);
AddCheckBox(true, newnode);//C2016-045 Allow Folders to be selected. AddCheckBox(true, newnode);//C2016-045 Allow Folders to be selected.
newnode.Enabled = true; newnode.Enabled = true;
@ -1354,6 +1359,7 @@ namespace Volian.Controls.Library
private void btnSearch_Click(object sender, EventArgs e) private void btnSearch_Click(object sender, EventArgs e)
{ {
_fromLoad = false;
DateTime start = DateTime.Now; DateTime start = DateTime.Now;
Cursor savcursor = Cursor; Cursor savcursor = Cursor;
// keeps track of index into combo box for results style. This combo box may have 3 or 4 // keeps track of index into combo box for results style. This combo box may have 3 or 4
@ -1858,6 +1864,7 @@ namespace Volian.Controls.Library
{ {
xpStepTypes.TitleStyle.BackColor1.Color = saveXpStepTypeTitleColor; xpStepTypes.TitleStyle.BackColor1.Color = saveXpStepTypeTitleColor;
DevComponents.AdvTree.Node n = advTreeStepTypes.SelectedNode; DevComponents.AdvTree.Node n = advTreeStepTypes.SelectedNode;
if (n == null) return;
StepData sd = (StepData)n.Tag; StepData sd = (StepData)n.Tag;
if (n.Checked) if (n.Checked)
{ {
@ -2150,15 +2157,24 @@ namespace Volian.Controls.Library
_SearchResults = null; _SearchResults = null;
DisplayResults(); DisplayResults();
} }
// A timer updated the step type tree but if it was loaded from xml the timer update overwrite what
// was loaded in from the xml file. Added a flag that gets set on load and set to false on new Search
private bool _fromLoad = false;
private void btnLoadSearchResults_Click(object sender, System.EventArgs e) private void btnLoadSearchResults_Click(object sender, System.EventArgs e)
{ {
_fromLoad = true;
if (ofdSearchResults.ShowDialog(this) == DialogResult.OK) if (ofdSearchResults.ShowDialog(this) == DialogResult.OK)
{ {
lbSrchResults.DataSource = null; lbSrchResults.DataSource = null;
lbSrchResults.Items.Clear(); lbSrchResults.Items.Clear();
toolTip1.SetToolTip(lbSrchResults, null); toolTip1.SetToolTip(lbSrchResults, null);
Cursor = Cursors.WaitCursor; Cursor = Cursors.WaitCursor;
string unitPrefix = "";
if (Mydocversion != null)
unitPrefix = Mydocversion.DocVersionConfig.Unit_ProcedureNumber;
if (unitPrefix.EndsWith("#"))
unitPrefix = unitPrefix.Replace("#", "");
SearchResults = ItemInfoList.GetByContentID(0); SearchResults = ItemInfoList.GetByContentID(0);
int k = ofdSearchResults.FilterIndex; int k = ofdSearchResults.FilterIndex;
switch (k) switch (k)
@ -2167,24 +2183,84 @@ namespace Volian.Controls.Library
{ {
System.Xml.XmlDocument xd = new System.Xml.XmlDocument(); System.Xml.XmlDocument xd = new System.Xml.XmlDocument();
xd.Load(ofdSearchResults.FileName); xd.Load(ofdSearchResults.FileName);
// B2020-107: Add missing attributes/nodes for loading of search results, include procsets & steptypes:
System.Xml.XmlNodeList nlp = xd.SelectNodes("search/procsets/set");
if (nlp != null)
{
DocVersionInfo tmpdvi = Mydocversion;
DocVersionInfo fromLoadFiledvi = null;
foreach (System.Xml.XmlNode nd in nlp)
{
int folderID = int.Parse(nd.Attributes.GetNamedItem("fid").InnerText);
FolderInfo fi = FolderInfo.Get(folderID);
_MyDocVersion = fi.FolderDocVersions[0];
if (fromLoadFiledvi == null) fromLoadFiledvi = _MyDocVersion;
advTreeProcSetsPreSelect();
}
foreach (System.Xml.XmlNode nd in nlp)
{
int folderID = int.Parse(nd.Attributes.GetNamedItem("fid").InnerText);
FolderInfo fi = FolderInfo.Get(folderID);
Node tnode = advTreeProcSets.FindNodeByDataKey(folderID);
if (tnode != null) tnode.Checked = true;
}
Mydocversion = tmpdvi == null ? fromLoadFiledvi : tmpdvi;
}
AdvTreeStepTypesFillIn();
System.Xml.XmlNodeList nl1 = xd.SelectNodes("search/StepType/type");
if (nl1 != null)
{
foreach (System.Xml.XmlNode nd in nl1)
{
string stptype = nd.Attributes.GetNamedItem("str").InnerText;
Node tnode = advTreeStepTypes.FindNodeByText(stptype);
if (tnode != null)
{
tnode.Checked = true;
xpStepTypes.TitleStyle.BackColor1.Color = saveXpStepTypeTitleColor;
lstCheckedStepTypesStr.Add(stptype);
StepData sd = (StepData)tnode.Tag;
lstCheckedStepTypes.Add((int)sd.Index);
}
}
string typstr = null;
foreach (string s in lstCheckedStepTypesStr) typstr = typstr == null ? s : typstr + ", " + s;
TypesSelected = "Filtered By: " + ((typstr != null) ? typstr : "All Step Types");
ReportTitle = "Step Element Report"; //"Proms - Search by Type: " + typstr;
TypesSelected = "Filtered By: " + typstr;
advTreeStepTypes.RefreshItems();
buildStepTypePannelTitle();
}
cmbResultsStyle.Text = xd.SelectSingleNode("search/results/@style").InnerText;
int sti = int.Parse(xd.SelectSingleNode("search/criteria/@index").InnerText); int sti = int.Parse(xd.SelectSingleNode("search/criteria/@index").InnerText);
switch (sti) switch (sti)
{ {
case 0: //text case 0: //text or steptypes
{ {
cbxTextSearchText.Text = xd.SelectSingleNode("search/criteria/@text").InnerText; System.Xml.XmlNode xn = xd.SelectSingleNode("search/criteria/@text");
tabSearchTypes.SelectedTab = tabStepTypeSearch;
if (xn != null) // text search
{
cbxTextSearchText.Text = xn.InnerText;
cbxCaseSensitive.Checked = bool.Parse(xd.SelectSingleNode("search/criteria/@case").InnerText); cbxCaseSensitive.Checked = bool.Parse(xd.SelectSingleNode("search/criteria/@case").InnerText);
cbxIncROTextSrch.Checked = bool.Parse(xd.SelectSingleNode("search/criteria/@ro").InnerText); cbxIncROTextSrch.Checked = bool.Parse(xd.SelectSingleNode("search/criteria/@ro").InnerText);
tabSearchTypes.SelectedTab = tabStepTypeSearch; cbxByWord.Checked = bool.Parse(xd.SelectSingleNode("search/criteria/@byword").InnerText);
//cmbResultsStyle.SelectedIndex = int.Parse(xd.SelectSingleNode("search/results/@style").InnerText); }
cmbResultsStyle.Text = xd.SelectSingleNode("search/results/@style").InnerText; else // B2020-107: Add in step type search
{
cbxSrchTypeUsage.Checked = true;
}
System.Xml.XmlNodeList nl = xd.SelectNodes("search/results/item"); System.Xml.XmlNodeList nl = xd.SelectNodes("search/results/item");
foreach (System.Xml.XmlNode nd in nl) foreach (System.Xml.XmlNode nd in nl)
{ {
int itemID = int.Parse(nd.Attributes.GetNamedItem("id").InnerText); int itemID = int.Parse(nd.Attributes.GetNamedItem("id").InnerText);
ItemInfo ii = ItemInfo.Get(itemID); ItemInfo ii = ItemInfo.Get(itemID);
if (ii.SearchAnnotationText == null && ii.ItemAnnotations!=null) ii.SearchAnnotationText = AnnotationInfo.Get(ii.ItemAnnotations[0].AnnotationID).SearchText;
SearchResults.AddItemInfo(ii); SearchResults.AddItemInfo(ii);
} }
lbSrchResults.DataSource = SearchResults;
DisplayResults();
break; break;
} }
case 1: //annotation case 1: //annotation
@ -2199,8 +2275,12 @@ namespace Volian.Controls.Library
{ {
int itemID = int.Parse(nd.Attributes.GetNamedItem("id").InnerText); int itemID = int.Parse(nd.Attributes.GetNamedItem("id").InnerText);
ItemInfo ii = ItemInfo.Get(itemID); ItemInfo ii = ItemInfo.Get(itemID);
// B2020-107: The following was needed to set the Step Path result type for annotations
if (ii.SearchAnnotationText == null && ii.ItemAnnotations != null) ii.SearchAnnotationText = AnnotationInfo.Get(ii.ItemAnnotations[0].AnnotationID).SearchText;
SearchResults.AddItemInfo(ii); SearchResults.AddItemInfo(ii);
} }
lbSrchResults.DataSource = SearchResults;
DisplayResults();
break; break;
} }
case 2: //referenced object case 2: //referenced object
@ -2223,7 +2303,6 @@ namespace Volian.Controls.Library
break; break;
} }
} }
DisplayResults();
Cursor = Cursors.Default; Cursor = Cursors.Default;
} }
} }
@ -2231,6 +2310,11 @@ namespace Volian.Controls.Library
private void btnSaveSearchResults_Click(object sender, System.EventArgs e) private void btnSaveSearchResults_Click(object sender, System.EventArgs e)
{ {
ICollection<ItemInfo> myList = lbSrchResults.DataSource as ICollection<ItemInfo>; ICollection<ItemInfo> myList = lbSrchResults.DataSource as ICollection<ItemInfo>;
if (tabSearchTypes.SelectedTabIndex == 2 || tabSearchTypes.SelectedTabIndex == 3) // ROs & Transitions are not coded yet
{
FlexibleMessageBox.Show(this, "Saving Referenced Objects and Transitions searches is under construction.", "Under Construction", MessageBoxButtons.OK);
return;
}
if (sfdSearchResults.ShowDialog(this) == DialogResult.OK) if (sfdSearchResults.ShowDialog(this) == DialogResult.OK)
{ {
int k = sfdSearchResults.FilterIndex; int k = sfdSearchResults.FilterIndex;
@ -2241,16 +2325,48 @@ namespace Volian.Controls.Library
System.Xml.XmlDocument xd = new System.Xml.XmlDocument(); System.Xml.XmlDocument xd = new System.Xml.XmlDocument();
System.Xml.XmlElement xe = xd.CreateElement("search"); System.Xml.XmlElement xe = xd.CreateElement("search");
xd.AppendChild(xe); xd.AppendChild(xe);
xe = xd.CreateElement("criteria");
xd.DocumentElement.AppendChild(xe);
System.Xml.XmlAttribute xa = xd.CreateAttribute("index");
int sti = tabSearchTypes.SelectedTabIndex; int sti = tabSearchTypes.SelectedTabIndex;
xa.InnerText = sti.ToString();
xe.Attributes.SetNamedItem(xa);
// B2020-107: save procedures sets & step types
// do procsets selected
System.Xml.XmlElement xp = null;
if (lstCheckedDocVersions != null && lstCheckedDocVersions.Count > 0)
{
xp = xd.CreateElement("procsets");
foreach (DocVersionInfo dvi in lstCheckedDocVersions)
{
System.Xml.XmlElement xee = xd.CreateElement("set");
xa = xd.CreateAttribute("fid");
xa.InnerText = dvi.MyFolder.FolderID.ToString();
xee.Attributes.SetNamedItem(xa);
xp.AppendChild(xee);
}
}
System.Xml.XmlElement xst = null;
if (lstCheckedStepTypesStr != null && lstCheckedStepTypesStr.Count > 0)
{
xst = xd.CreateElement("StepType");
foreach (string str in lstCheckedStepTypesStr) // Limited by step types
{
System.Xml.XmlElement xee = xd.CreateElement("type");
xa = xd.CreateAttribute("str");
xa.InnerText = str;
xee.Attributes.SetNamedItem(xa);
xst.AppendChild(xee);
}
}
switch (sti) switch (sti)
{ {
case 0: //text case 0: //text
{ {
xe = xd.CreateElement("criteria");
System.Xml.XmlAttribute xa = xd.CreateAttribute("index"); if (!cbxSrchTypeUsage.Checked) // text search
xa.InnerText = sti.ToString(); {
xe.Attributes.SetNamedItem(xa);
xa = xd.CreateAttribute("text"); xa = xd.CreateAttribute("text");
xa.InnerText = cbxTextSearchText.Text; xa.InnerText = cbxTextSearchText.Text;
xe.Attributes.SetNamedItem(xa); xe.Attributes.SetNamedItem(xa);
@ -2260,10 +2376,17 @@ namespace Volian.Controls.Library
xa = xd.CreateAttribute("ro"); xa = xd.CreateAttribute("ro");
xa.InnerText = cbxIncROTextSrch.Checked.ToString(); xa.InnerText = cbxIncROTextSrch.Checked.ToString();
xe.Attributes.SetNamedItem(xa); xe.Attributes.SetNamedItem(xa);
xa = xd.CreateAttribute("byword");
xa.InnerText = cbxByWord.Checked.ToString();
xe.Attributes.SetNamedItem(xa);
xd.DocumentElement.AppendChild(xe); xd.DocumentElement.AppendChild(xe);
}
if (xp != null) xd.DocumentElement.AppendChild(xp); // want criteria as first xml node
if (xst != null) xd.DocumentElement.AppendChild(xst); // do procsets & steptypes after
// do results
xe = xd.CreateElement("results"); xe = xd.CreateElement("results");
xa = xd.CreateAttribute("style"); xa = xd.CreateAttribute("style");
//xa.InnerText = cmbResultsStyle.SelectedIndex.ToString();
xa.InnerText = cmbResultsStyle.Text; xa.InnerText = cmbResultsStyle.Text;
xe.Attributes.SetNamedItem(xa); xe.Attributes.SetNamedItem(xa);
foreach (ItemInfo ii in myList) foreach (ItemInfo ii in myList)
@ -2280,10 +2403,6 @@ namespace Volian.Controls.Library
} }
case 1: //annotation case 1: //annotation
{ {
xe = xd.CreateElement("criteria");
System.Xml.XmlAttribute xa = xd.CreateAttribute("index");
xa.InnerText = sti.ToString();
xe.Attributes.SetNamedItem(xa);
xa = xd.CreateAttribute("type"); xa = xd.CreateAttribute("type");
xa.InnerText = cbxAnnoTypes.Text; xa.InnerText = cbxAnnoTypes.Text;
xe.Attributes.SetNamedItem(xa); xe.Attributes.SetNamedItem(xa);
@ -2294,9 +2413,10 @@ namespace Volian.Controls.Library
xa.InnerText = cbxCaseSensitiveAnnoText.Checked.ToString(); xa.InnerText = cbxCaseSensitiveAnnoText.Checked.ToString();
xe.Attributes.SetNamedItem(xa); xe.Attributes.SetNamedItem(xa);
xd.DocumentElement.AppendChild(xe); xd.DocumentElement.AppendChild(xe);
if (xp != null) xd.DocumentElement.AppendChild(xp); // want criteria as first xml node
if (xst != null) xd.DocumentElement.AppendChild(xst); // do procsets & steptypes after
xe = xd.CreateElement("results"); xe = xd.CreateElement("results");
xa = xd.CreateAttribute("style"); xa = xd.CreateAttribute("style");
//xa.InnerText = cmbResultsStyle.SelectedIndex.ToString();
xa.InnerText = cmbResultsStyle.Text; xa.InnerText = cmbResultsStyle.Text;
xe.Attributes.SetNamedItem(xa); xe.Attributes.SetNamedItem(xa);
foreach (ItemInfo ii in myList) foreach (ItemInfo ii in myList)
@ -2311,23 +2431,14 @@ namespace Volian.Controls.Library
xd.Save(sfdSearchResults.FileName); xd.Save(sfdSearchResults.FileName);
break; break;
} }
case 2: //referenced object
{
break;
}
} }
break; break;
} }
case 2: //csv case 2: //csv
{
break;
}
case 3: //tsv case 3: //tsv
{
break;
}
case 4: //bsf case 4: //bsf
{ {
FlexibleMessageBox.Show(this, "Saving Search Results to this file type is under construction.", "Under Construction", MessageBoxButtons.OK);
break; break;
} }
} }