diff --git a/src/DocumentationBrowserViewExtension/DocumentationBrowserViewModel.cs b/src/DocumentationBrowserViewExtension/DocumentationBrowserViewModel.cs index 7bcac36b885..4c8a117c9f3 100644 --- a/src/DocumentationBrowserViewExtension/DocumentationBrowserViewModel.cs +++ b/src/DocumentationBrowserViewExtension/DocumentationBrowserViewModel.cs @@ -482,7 +482,7 @@ internal void CollapseExpandPackage(string section) object[] jsParameters = new object[] { breadBrumbsArray[i], sectionType, "true" }; //Create the array for the paramateres that will be sent to the WebBrowser.InvokeScript Method - object[] parametersInvokeScript = new object[] { "collapseExpandPackage", jsParameters }; + object[] parametersInvokeScript = new object[] { "expandPackageDiv", jsParameters }; ResourceUtilities.ExecuteJSFunction(DynamoView, parametersInvokeScript); diff --git a/src/DynamoCoreWpf/UI/GuidedTour/GuidesValidationMethods.cs b/src/DynamoCoreWpf/UI/GuidedTour/GuidesValidationMethods.cs index 64c4dbc95fd..398b65c4254 100644 --- a/src/DynamoCoreWpf/UI/GuidedTour/GuidesValidationMethods.cs +++ b/src/DynamoCoreWpf/UI/GuidedTour/GuidesValidationMethods.cs @@ -14,6 +14,7 @@ using Dynamo.PackageManager.ViewModels; using Dynamo.Utilities; using Dynamo.ViewModels; +using Dynamo.Wpf.ViewModels.GuidedTour; using Dynamo.Wpf.Views.GuidedTour; using Newtonsoft.Json.Linq; using static Dynamo.PackageManager.PackageManagerSearchViewModel; @@ -495,18 +496,30 @@ internal static void SubscribeNextButtonClickEvent(Step stepInfo, StepUIAutomati /// Event Arguments internal void ExecuteAutomaticPackage_Click(object sender, RoutedEventArgs e) { - CollapseExpandPackage(CurrentExecutingStep); + var nextButton = (sender as Button); + if (nextButton == null) return; + + var popupVM = (nextButton.DataContext as PopupWindowViewModel); + if(popupVM == null) return; + + if (popupVM.Step == null) return; + ExpandPackage(popupVM.Step); } /// - /// This method will call the collapseExpandPackage javascript method with reflection, so the package expander in LibraryView will be clicked + /// This method will call the expandPackageDiv javascript method with reflection, so the package expander in LibraryView will be clicked /// - internal static void CollapseExpandPackage(Step stepInfo) + internal static void ExpandPackage(Step stepInfo) { - CurrentExecutingStep = stepInfo; - var firstUIAutomation = stepInfo.UIAutomation.FirstOrDefault(); - if (firstUIAutomation == null || firstUIAutomation.JSParameters.Count == 0) return; - object[] parametersInvokeScript = new object[] { firstUIAutomation.JSFunctionName, new object[] { firstUIAutomation.JSParameters.FirstOrDefault() } }; + var expandUIAutomation = stepInfo.UIAutomation.Where(automation => automation.JSFunctionName == "expandPackageDiv").FirstOrDefault(); + if (expandUIAutomation == null || expandUIAutomation.JSParameters.Count == 0) return; + + //Expand the Sample Package Div when clicking the next button in Step8 + object[] parametersInvokeScript = new object[] { expandUIAutomation.JSFunctionName, new object[] { expandUIAutomation.JSParameters[0], expandUIAutomation.JSParameters[1] } }; + ResourceUtilities.ExecuteJSFunction(stepInfo.MainWindow, stepInfo.HostPopupInfo, parametersInvokeScript); + + //Expand the Package nodes when clicking the next button in Step8 + parametersInvokeScript = new object[] { expandUIAutomation.JSFunctionName, new object[] { "Examples", "LibraryItemGroupText" } }; ResourceUtilities.ExecuteJSFunction(stepInfo.MainWindow, stepInfo.HostPopupInfo, parametersInvokeScript); } @@ -976,5 +989,24 @@ private static void RunButton_Click(object sender, RoutedEventArgs e) { CurrentExecutingGuide.NextStep(CurrentExecutingStep.Sequence); } + + /// + /// In the the Package is expanded this method will call a js method that will collapse the
+ ///
+ internal static void CollapsePackageDiv(Step stepInfo, StepUIAutomation uiAutomationData, bool enableFunction, GuideFlow currentFlow) + { + CurrentExecutingStep = stepInfo; + if (uiAutomationData == null) return; + string jsFunctionName = uiAutomationData.JSFunctionName; + //Create the array for the paramateres that will be sent to the WebBrowser.InvokeScript Method + object[] parametersInvokeScript = new object[] { jsFunctionName, new object[] { uiAutomationData.JSParameters[0], uiAutomationData.JSParameters[1] } }; + + //Only will be executed when entering to the Step8 (when leaving Step8 the div should be expanded) + if(enableFunction == true) + { + //Execute the JS function with the provided parameters + ResourceUtilities.ExecuteJSFunction(CurrentExecutingStep.MainWindow, CurrentExecutingStep.HostPopupInfo, parametersInvokeScript); + } + } } } diff --git a/src/DynamoCoreWpf/UI/GuidedTour/dynamo_guides.json b/src/DynamoCoreWpf/UI/GuidedTour/dynamo_guides.json index 869720dc659..c3169509f68 100644 --- a/src/DynamoCoreWpf/UI/GuidedTour/dynamo_guides.json +++ b/src/DynamoCoreWpf/UI/GuidedTour/dynamo_guides.json @@ -738,10 +738,18 @@ { "Sequence": 1, "ControlType": "function", + "Name": "CollapsePackageDiv", + "JSFunctionName": "collapsePackageDiv", + "JSParameters": [ "SampleLibraryUI", "LibraryItemText" ], + "Action": "execute" + }, + { + "Sequence": 2, + "ControlType": "function", "WindowName": "PopupWindow", "Name": "SubscribeNextButtonClickEvent", "Action": "execute", - "JSFunctionName": "collapseExpandPackage", + "JSFunctionName": "expandPackageDiv", "JSParameters": [ "SampleLibraryUI", "LibraryItemText" ], "AutomaticHandlers": [ { @@ -752,7 +760,7 @@ ] }, { - "Sequence": 2, + "Sequence": 3, "ControlType": "JSFunction", "Name": "InvokeJSFunction", "JSFunctionName": "setOverlay", @@ -760,7 +768,7 @@ "Action": "execute" }, { - "Sequence": 3, + "Sequence": 4, "ControlType": "JSFunction", "Name": "InvokeJSFunction", "JSFunctionName": "subscribePackageClickedEvent", @@ -768,7 +776,7 @@ "Action": "execute" }, { - "Sequence": 4, + "Sequence": 5, "ControlType": "JSFunction", "Name": "InvokeJSFunction", "JSFunctionName": "getDocumentClientRect", @@ -776,7 +784,7 @@ "Action": "execute" }, { - "Sequence": 5, + "Sequence": 6, "ControlType": "function", "Name": "LibraryScrollToBottom", "JSFunctionName": "scrollToBottom", @@ -784,7 +792,7 @@ "Action": "execute" }, { - "Sequence": 6, + "Sequence": 7, "ControlType": "function", "Name": "CalculateLibraryItemLocation", "JSFunctionName": "getDocumentClientRect", @@ -821,36 +829,28 @@ }, "UIAutomation": [ { - "Sequence": 0, + "Sequence": 1, "ControlType": "JSFunction", "Name": "InvokeJSFunction", "JSFunctionName": "setOverlay", "JSParameters": [], "Action": "execute" }, - { - "Sequence": 1, - "ControlType": "JSFunction", - "Name": "InvokeJSFunction", - "Action": "execute", - "JSFunctionName": "collapseExpandPackage", - "JSParameters": [ "SampleLibraryUI", "LibraryItemText" ] - }, { "Sequence": 2, - "ControlType": "JSFunction", - "Name": "InvokeJSFunction", - "Action": "execute", - "JSFunctionName": "collapseExpandPackage", - "JSParameters": [ "Examples", "LibraryItemGroupText" ] - }, - { - "Sequence": 3, "ControlType": "function", "Name": "LibraryScrollToBottom", "JSFunctionName": "scrollToBottom", "JSParameters": [], "Action": "execute" + }, + { + "Sequence": 3, + "ControlType": "JSFunction", + "Name": "InvokeJSFunction", + "JSFunctionName": "expandPackageDiv", + "JSParameters": [ "Examples", "LibraryItemGroupText" ], + "Action": "execute" } ] }, @@ -998,7 +998,7 @@ "WindowName": "LibraryView", "Name": "InvokeJSFunction", "Action": "execute", - "JSFunctionName": "collapseExpandPackage", + "JSFunctionName": "expandPackageDiv", "JSParameters": [ "Geometry", "LibraryItemText" ] }, { @@ -1007,7 +1007,7 @@ "WindowName": "LibraryView", "Name": "InvokeJSFunction", "Action": "execute", - "JSFunctionName": "collapseExpandPackage", + "JSFunctionName": "expandPackageDiv", "JSParameters": [ "Abstract", "LibraryItemGroupText" ] }, { @@ -1016,7 +1016,7 @@ "WindowName": "LibraryView", "Name": "InvokeJSFunction", "Action": "execute", - "JSFunctionName": "collapseExpandPackage", + "JSFunctionName": "expandPackageDiv", "JSParameters": [ "CoordinateSystem", "LibraryItemGroupText" ] }, { diff --git a/src/LibraryViewExtensionWebView2/web/library/library.html b/src/LibraryViewExtensionWebView2/web/library/library.html index 9ef8ff96b91..df164952b10 100644 --- a/src/LibraryViewExtensionWebView2/web/library/library.html +++ b/src/LibraryViewExtensionWebView2/web/library/library.html @@ -249,7 +249,11 @@ } if (found_div != null) { if (enableHighlight == true) { - glowAnimation(found_div, true); + //Validates that the div is not already highlighted + var currentAttibute = found_div.getAttribute("id"); + if (currentAttibute == null || !currentAttibute.includes("glow_")) { + glowAnimation(found_div, true); + } } else { glowAnimation(found_div, false); @@ -307,7 +311,7 @@ } //This will execute a click over a specific
that contains the package content - function collapseExpandPackage(packageName, libraryClassName) { + function expandPackageDiv(packageName, libraryClassName) { var found_div = findPackageDiv(packageName, libraryClassName); if (found_div == null) { return; @@ -319,6 +323,18 @@ } } + function collapsePackageDiv(packageName, libraryClassName) { + var found_div = findPackageDiv(packageName, libraryClassName); + if (found_div == null) { + return; + } + var containerCatDiv = found_div.parentNode.parentNode; + var itemBodyContainer = containerCatDiv.getElementsByClassName(libraryClassName)[0]; + if (itemBodyContainer.parentElement.parentElement.className.includes('expanded')) { + itemBodyContainer.click(); + } + } + //This will call the NextStep() function located in the LibraryViewController function nextStepInGuide() { window.chrome.webview.postMessage(JSON.stringify({ "func": "NextStep", "data": "" }));