From 5fa9aa3ea5dc1af2d9babc45f688eefe0fbed64b Mon Sep 17 00:00:00 2001 From: Mark Carrington Date: Sun, 16 Jan 2022 15:11:08 +0000 Subject: [PATCH] Reduced calls to Validate while loading --- .../DockControls/TreeBuilderControl.cs | 3 +-- FetchXmlBuilder/FetchXmlBuilder.cs | 18 +++++++++++------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/FetchXmlBuilder/DockControls/TreeBuilderControl.cs b/FetchXmlBuilder/DockControls/TreeBuilderControl.cs index cc34a0a6..5edd373d 100644 --- a/FetchXmlBuilder/DockControls/TreeBuilderControl.cs +++ b/FetchXmlBuilder/DockControls/TreeBuilderControl.cs @@ -347,7 +347,6 @@ internal void UpdateCurrentNode() internal void UpdateChildNode(TreeNode node) { TreeNodeHelper.SetNodeText(node, fxb); - node.Nodes.OfType().ToList().ForEach(n => TreeNodeHelper.SetNodeText(n, fxb)); node.Nodes.OfType().ToList().ForEach(n => UpdateChildNode(n)); } @@ -431,7 +430,7 @@ private void DisplayDefinition(XmlDocument fetchDoc) { var entitys = TreeNodeHelper.GetEntitysForFetch(fetchDoc); entitys = entitys?.Where(e => !string.IsNullOrEmpty(e) && fxb.entities.ContainsKey(e) && fxb.entities[e].Attributes == null)?.ToList(); - entitys?.ForEach(e => fxb.LoadEntityDetails(e, null, false)); + entitys?.ForEach(e => fxb.LoadEntityDetails(e, null, false, false)); } XmlNode definitionXmlNode = fetchDoc.DocumentElement; var selected = tvFetch.SelectedNode; diff --git a/FetchXmlBuilder/FetchXmlBuilder.cs b/FetchXmlBuilder/FetchXmlBuilder.cs index 881458e4..e4410e47 100644 --- a/FetchXmlBuilder/FetchXmlBuilder.cs +++ b/FetchXmlBuilder/FetchXmlBuilder.cs @@ -664,7 +664,7 @@ internal string GetOData(int version) } } - internal void LoadEntityDetails(string entityName, Action detailsLoaded, bool async = true) + internal void LoadEntityDetails(string entityName, Action detailsLoaded, bool async = true, bool update = true) { if (detailsLoaded != null && !async) { @@ -682,7 +682,7 @@ internal void LoadEntityDetails(string entityName, Action detailsLoaded, bool as { PostWorkCallBack = (completedargs) => { - LoadEntityDetailsCompleted(entityName, completedargs.Error == null ? completedargs.Result as EntityMetadata : null, completedargs.Error); + LoadEntityDetailsCompleted(entityName, completedargs.Error == null ? completedargs.Result as EntityMetadata : null, completedargs.Error, update); if (completedargs.Error == null && detailsLoaded != null) { detailsLoaded(); @@ -695,11 +695,11 @@ internal void LoadEntityDetails(string entityName, Action detailsLoaded, bool as try { var resp = MetadataExtensions.LoadEntityDetails(Service, entityName); - LoadEntityDetailsCompleted(entityName, resp, null); + LoadEntityDetailsCompleted(entityName, resp, null, update); } catch (Exception e) { - LoadEntityDetailsCompleted(entityName, null, e); + LoadEntityDetailsCompleted(entityName, null, e, update); } } } @@ -1220,7 +1220,7 @@ private void LoadEntities() }); } - private void LoadEntityDetailsCompleted(string entityName, EntityMetadata Result, Exception Error) + private void LoadEntityDetailsCompleted(string entityName, EntityMetadata Result, Exception Error, bool update) { if (Error != null) { @@ -1246,8 +1246,12 @@ private void LoadEntityDetailsCompleted(string entityName, EntityMetadata Result MessageBox.Show("Metadata not found for entity " + entityName, "Load attribute metadata", MessageBoxButtons.OK, MessageBoxIcon.Warning); } working = false; - dockControlBuilder.UpdateAllNode(); - UpdateLiveXML(); + + if (update) + { + dockControlBuilder.UpdateAllNode(); + UpdateLiveXML(); + } } working = false; }