Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add new LibraryViewExtension project based on System.Windows.Controls.WebBrowser #10241

Merged
merged 23 commits into from
Jan 9, 2020

Conversation

mjkkirschner
Copy link
Member

@mjkkirschner mjkkirschner commented Dec 24, 2019

Purpose

similar to: #10233
but using WebBrower - which is not deprecated, and actually loads in complex native apps hosting their own .net runtimes. (Revit,Acad)

Uses <meta http-equiv="X-UA-Compatible" content="IE=edge" /> header to request latest IE 11 renderer.

LibraryJS has been compiled with core-js for polyfills though I think we only neeed string.prototype.startsWith

I'm using reflection to access Dynamo internal methods so that testing in hosts is easier for now in a few places. We can remove this later.

This approach still uses loading all images and content and embedding it into the html - I can't think of a nice way to implement an automatic request interceptor in js and I don't think IE11 supports service workers - I think we would have to rewrite libraryjs to make explicit requests for resources to the c# side - or something I have not thought of yet regarding the different uri schemas this component might support, none I've tried has obviously worked so I stuck with embedding.

A few optimizations and cacheing of data makes adding packages later fast - but the initial load is still underwhelming - about 6 seconds with a few packages installed. Profiling seems to indicate the time is spent accessing disk and using ResourceManager.getObject to scan for images by name within customization assemblies - this is the same as it was in vanilla libraryJS - except that now it's done all upfront instead of lazily as the library is used - which makes using the library a bit more fluid at the expense of the startup cost...

Theres likely some more optimization we could do here like cacheing the resource managers themselves - but it might be worth thinking of solutions for lazy loading - Ideally we could catch the requests from the browser and respond with images - as we could in the old implementation.

It's also possible we could load the image data on another thread to keep the UI fluid until the library is done loading.

  • icons now work even for hosts which have added their own customizations
  • the browser also is hidden when the startPage is displayed now.

Update:

  • I have implemented a simple lazy loading - this loads an order of magnitude faster in my tests in both sandbox and hosts applications.
    It works pretty simply, whenever the user interacts with the library (dom body click event), we get all the images from the DOM and attempt to update their src properties - if they already contain valid content, we do nothing - if they contain default images or no content then we send their url to the c# side which handles passes it to the IconResourceProvider this returns a base64 encoded version of the image, and the src is set to this updating the UI.

So the end result our first load of the library is very fast - we're still embedding a few common things like fonts, and librarie.js.min - since we immediately need to load them anyway.

Later when a user interacts the icons are loaded as they open categories.

instructions for testing:

This is a 7zip file renamed to txt - unzip it with 7zip, then move it to the Dynamo/viewExtensions folder and replace the existing Library_ViewExtensionDefinition.xml file.
libraryMsWebBrowser4.txt

if you instead want to build this PR - the binaries and definition you want will be under Dynamo/src/LibraryViewExtensionMSWebBrowser/bin/.... They are NOT being copied to the Dynamo/bin directory as we intend to have a separate solution / nuget package for this extension.

Declarations

Check these if you believe they are true

  • The codebase is in a better state after this PR
  • Is documented according to the standards
  • The level of testing this PR includes is appropriate
  • User facing strings, if any, are extracted into *.resx files
  • All tests pass using the self-service CI.
  • Snapshot of UI changes, if any.
  • Changes to the API follow Semantic Versioning and are documented in the API Changes document.

Reviewers

@QilongTang @reddyashish

FYIs

add make core internals visible
add duplicate files as required
added package references
namespace adds dynamo
use new namespace to reference resources that are embedded.
visibility fixed with startPage
loads acad icons from resource streams that are registered using existing resource dict
remove superflous resourcestream handler
add cache to main iconProvider entrypoint as first step in resolving icon data
use string builder to construct base64 data strings
@mjkkirschner
Copy link
Member Author

mjkkirschner commented Dec 24, 2019

actually we can do this:
https://blog.dotnetframework.org/2018/10/22/capture-ajax-requests-with-webbrowser-control-in-c/

override fetch or xmlHttpRequest to make all requests to an interceptor which will make requests to c# - c# side will fetch the resources and respond - this should let us get lazy loaded images.

It's still not clear what to do with the resource once we've intercepted the request, in addition to intercepting the request we would also need to fill the responseText with data and call the callback of the xmlHttpRequest I guess.

this doesn't work as IE does not generate XMLHttpRequests to make image load requests - it must use some other internal mechanism, but I have implemented a simpler strategy. Updating this PR soon.

…nt whenever any item is clicked

we also cache the original url before falling back to the default icon so we can load the real icon later.
rename project, rename folder
rename extension class
catch (Exception e)
{
//look in resources for registered path and just use the stream directly
var resourceDict = this.customization.Resources.ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

some hosts register streams directly so theres no need to look on disk, we can just return the stream.

extension = "json";
try
{
if (resourceStream == null || resourceStream.CanRead == false || resourceStream.Position == resourceStream.Length)
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added some extra fail safe logic here as I encountered some instances where the stream was already disposed or unreadable - I think this sometimes happens in Dynamo today actually as well. If we fail to read from the stream, then we create a new one.

/// Used to get access the iconResourceProvider and return a base64encoded string version of an icon.
/// </summary>
/// <param name="iconurl"></param>
public void getBase64StringFromPath (string iconurl)
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

called by javascript side to retrieve an image resource.

Analytics.LogPiiInfo(eventName, data);
}
}
internal void refreshLibraryView(WebBrowser browser)
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

called by javascript side, does a full refresh of the loadedTypes and LayoutSpec - this actually quite fast and is not called frequently. ( < 50ms in my tests with several large packages installed)

{
var ms = new MemoryStream();
var sw = new StreamWriter(ms);
if (replaceIconURLWithData && iconProvider != null)
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

option of replacing images in the layoutspec - these would be for categories - currently this path is not used.

</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<Content Include="Library_ViewExtensionDefinition.xml">
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

include the new manifest file.

return;
}
//request the icon from the extension.
window.external.getBase64StringFromPath(src);
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

window.external is the ObjectForScripting we exposed before - so this lets us call c# functions.

Copy link
Contributor

@QilongTang QilongTang left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM with a few comments

src/Dynamo.All.sln Show resolved Hide resolved
private string defaultIconDataString;
private string defaultIconName;
private DllResourceProvider embeddedDllResourceProvider;
//TODO remove these at some point in future after Dynamo 2.6 release.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And the reason?

Copy link
Member Author

@mjkkirschner mjkkirschner Jan 6, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

reflection is slow, weird, and fragile.

var base64Data = match.Groups["data"].Value;
var contentType = match.Groups["type"].Value;
//image/png -> png
extension = contentType.Split('/').Skip(1).FirstOrDefault();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is true for all inputs? should we use Regex as well if it is a hard match?

set version number to auto increment for now - keep at 1.0.x until we have a longer term plan for this project
comments
add readme
@mjkkirschner
Copy link
Member Author

@aparajit-pratap @QilongTang comments addressed PTAL. If you want to go through this together let me know.

@mjkkirschner mjkkirschner merged commit 35c9497 into DynamoDS:master Jan 9, 2020
@mjkkirschner mjkkirschner deleted the workingWebBrowser branch January 9, 2020 18:32
mjkkirschner added a commit that referenced this pull request Jan 29, 2020
* [DYN-2349] Close workspace references extension tab by user action and API (#10230)

* DYN-2349

* Adding events and fixing the crash that was happening due to selection/deselection of the menu item.

* Change to internal

* Moving the Close tab event from ViewLoadedParams to WorkspaceDependencyView call

* Adding extension tab name as an input parameter to the Close Extension event

* Adding null check for WorkspaceReferencesMenuItem

* Making the extension name string a constant

* Removing the extra line

* Dyn 2303 (#10277)

* Add Category ExcelTest.

* Update ExcelTests.cs

* Add new LibraryViewExtension project based on System.Windows.Controls.WebBrowser (#10241)

* add new project
add make core internals visible
add duplicate files as required

* build of libjswebview seems to work
added package references

* add resource files as links so dont duplicate them in repo

* move to .net 4.7.2 to avoid package ref issues
namespace adds dynamo
use new namespace to reference resources that are embedded.

* move back to 4.7 to see if we can get a build on self serve

* log msbuild version in appyveyor

* try using buildxml which restores a bit differently

* image should not be under env - bah

* revet back to nuget restore and build dynamo all

* working branch in acad

* icons from host registered streams supported now

* this functions but startup time is slow.
visibility fixed with startPage
loads acad icons from resource streams that are registered using existing resource dict

* add some stopwatch logging to resource loading
remove superflous resourcestream handler
add cache to main iconProvider entrypoint as first step in resolving icon data
use string builder to construct base64 data strings

* missed changes

* semi working lazy load - small change made to librariejs to raise event whenever any item is clicked
we also cache the original url before falling back to the default icon so we can load the real icon later.

* some cleanup

* update namespace to reflect what components are actually used
update some todos
update comments

* drop back to packges config
rename project, rename folder
rename extension class

* assembly and type names changed

* remove value tuple use
set version number to auto increment for now - keep at 1.0.x until we have a longer term plan for this project

* get rid of value tuple

* recase some methods
comments
add readme

* address review comments

* Add new tests (#10279)

* Revert "Reset engine controller for every new workspace (#10113)" (#10282)

This reverts commit b01e2de.

* DYN-2375 - Event to handle the close operation of the workspace references extension  (#10280)

* First commit

* new changes

* Renaming the event

* Adding test

* Upgrade Revit Sample file to Revit 2021 (#10288)

* pass the additional to sign list to the installerspec generator (#10285)

add new files
add comments
remove files that no longer exist
update installerSpec.exe
update installerspec source

* points and curves render
bounds are updated when added - and faster than for each RP.
remove new handlers and events, revert to binding.

* revert change

* remove commented out code

* add comments

* remove some old comments
remove old code for testing

Co-authored-by: reddyashish <[email protected]>
Co-authored-by: manuelsaldivar525 <[email protected]>
Co-authored-by: Aaron (Qilong) <[email protected]>
Co-authored-by: aparajit-pratap <[email protected]>
Co-authored-by: ZiyunShang <[email protected]>
jesusHCG added a commit that referenced this pull request Feb 7, 2020
* Dyn 2303 (#10277)

* Add Category ExcelTest.

* Update ExcelTests.cs

* Add new LibraryViewExtension project based on System.Windows.Controls.WebBrowser (#10241)

* add new project
add make core internals visible
add duplicate files as required

* build of libjswebview seems to work
added package references

* add resource files as links so dont duplicate them in repo

* move to .net 4.7.2 to avoid package ref issues
namespace adds dynamo
use new namespace to reference resources that are embedded.

* move back to 4.7 to see if we can get a build on self serve

* log msbuild version in appyveyor

* try using buildxml which restores a bit differently

* image should not be under env - bah

* revet back to nuget restore and build dynamo all

* working branch in acad

* icons from host registered streams supported now

* this functions but startup time is slow.
visibility fixed with startPage
loads acad icons from resource streams that are registered using existing resource dict

* add some stopwatch logging to resource loading
remove superflous resourcestream handler
add cache to main iconProvider entrypoint as first step in resolving icon data
use string builder to construct base64 data strings

* missed changes

* semi working lazy load - small change made to librariejs to raise event whenever any item is clicked
we also cache the original url before falling back to the default icon so we can load the real icon later.

* some cleanup

* update namespace to reflect what components are actually used
update some todos
update comments

* drop back to packges config
rename project, rename folder
rename extension class

* assembly and type names changed

* remove value tuple use
set version number to auto increment for now - keep at 1.0.x until we have a longer term plan for this project

* get rid of value tuple

* recase some methods
comments
add readme

* address review comments

* Add new tests (#10279)

* Revert "Reset engine controller for every new workspace (#10113)" (#10282)

This reverts commit b01e2de.

* DYN-2375 - Event to handle the close operation of the workspace references extension  (#10280)

* First commit

* new changes

* Renaming the event

* Adding test

* Upgrade Revit Sample file to Revit 2021 (#10288)

* pass the additional to sign list to the installerspec generator (#10285)

add new files
add comments
remove files that no longer exist
update installerSpec.exe
update installerspec source

* LibG Binaries Update (#10295)

* "LibG/ASM224,7418555f"

* "LibG/ASM224.4,918b3d73"

* "LibG/ASM225,2b68d3dd"

* "LibG/ASM226,2b308956"

* Change mechanism to retreive the certificate from assembly (#10301)

* DYN-2225 - Marshaling Performance optimization - Heap Cleanup (#10026)

* fast path for zero size heap allocation

* Cache mechanism for marshalling lookups

* Do not allocate heap stack values for class properties for CLR objects

* Test removing getter heap interaction for CLR object

* Remove unused Heap Object set

* make variables non-static

* remove GetterFunctionPointer class

Co-authored-by: aparajit-pratap <[email protected]>

* DYN-2289: Fix crash with NodeToCode (#10305)

* search for property by getter if not found

* add test

* Geometry Color Tests More (#10291)

* Add geometry color check for Display_ByGeometryColor_HasColoredMesh

Add geometry color check for Display_ByGeometryColor_HasColoredMesh

* Test updates

* Add Geometry Transparency Test

* Update test name

* update newly added test (#10313)

* DYN-2286: fix for crash upon unresolved node undo (#10315)

* fix for crash upon unresolved node undo

* override Equals in PortModel

* add recorded test

* DYN-2328 Add test for geometry labeling (#10311)

* DYN-2328 Add test for geometry lablling

* DYN-2328 Add test for geometry labeling

* Removing extra assignments

* updating the test and the test dyn file.

* Removing the extra variable that is not being used

* First Github Action (#10131)

This Github Action will greet Github users who submit a PR or issue first time to our repo

* Removal of PR trigger for now (#10323)

* Analytics Agreement Workflow Update (#10314)

* Initial Commit to Update Analytics Agreement Workflow

* update

* Add unit test for deserializing analytics setting

* Update instrumentation default agreement setting in unit test

* Add more comments

* Add missing resource string (#10329)

* LibG Binaries Update (#10331)

* "LibG/ASM224,7418555f"

* "LibG/ASM224.4,918b3d73"

* "LibG/ASM225,2b68d3dd"

* "LibG/ASM226,5c8f1fdd"

* Fix the library view display issues introduced by MS WebBrowser (#10316)

* Disable the context menu on the library viewer.

* Zoom the libarary view to adapt the current DPI scale.

* Disable the horizontal scroll bar on the bottom of the library view.

* Disable the library view is zoomed by keyboard or mouse wheel.

* Zoom the library bar to adapt the current DPI scale.

* Hide the extra search text bar close button.

* [DYN-2382] LibraryViewExtensionMSWebBrowser does not scale correctly when using display scaling (#10335)

* Disable the context menu on the library viewer.

* Zoom the libarary view to adapt the current DPI scale.

* Disable the horizontal scroll bar on the bottom of the library view.

* Disable the library view is zoomed by keyboard or mouse wheel.

* Zoom the library bar to adapt the current DPI scale.

* Hide the extra search text bar close button.

* Unsubscribing the event handler in dispose method

* Skip GA Client Tear Down Process if NOT Necessary (#10340)

* Skip Analytics Client Tear down if it is not needed

* Add unit test covering analytics tear down

* Touch test naming

* [Analytics] Update Tracking Conditions (#10345)

* Update Tracking Conditions

* Add same check to ReportingUsage

* Add properties comments

* PR comment (#10347)

* Code improvements: (#10348)

1. Unsubscribe DpiChanged event handler in the browser Dispose method.
2. Move the overflow-x style setting from script to html to avoid to set it when the script method is called every time.
3. Add necessary comments.

Co-authored-by: manuelsaldivar525 <[email protected]>
Co-authored-by: Michael Kirschner <[email protected]>
Co-authored-by: Aaron (Qilong) <[email protected]>
Co-authored-by: aparajit-pratap <[email protected]>
Co-authored-by: reddyashish <[email protected]>
Co-authored-by: ZiyunShang <[email protected]>
Co-authored-by: DynamoEngOps <[email protected]>
Co-authored-by: Craig Long <[email protected]>
Co-authored-by: StarLee <[email protected]>
QilongTang added a commit that referenced this pull request May 12, 2020
* Move to Helix 2.5.1 and SharpDX 4.2.0

* Re-implement zoom in/out buttons

* Upgrade Helix to 2.9.0

* Re-implement headlight outside of shader

* Remove Helix shader pipeline customizations, use default shaders (WIP)

* restore updating colors for selected and frozen node states

* code cleanup

* Use Viewport3DX.Items, enable geometry -> node selection

* Helix upgrade basics (#10326)

* [DYN-2349] Close workspace references extension tab by user action and API (#10230)

* DYN-2349

* Adding events and fixing the crash that was happening due to selection/deselection of the menu item.

* Change to internal

* Moving the Close tab event from ViewLoadedParams to WorkspaceDependencyView call

* Adding extension tab name as an input parameter to the Close Extension event

* Adding null check for WorkspaceReferencesMenuItem

* Making the extension name string a constant

* Removing the extra line

* Dyn 2303 (#10277)

* Add Category ExcelTest.

* Update ExcelTests.cs

* Add new LibraryViewExtension project based on System.Windows.Controls.WebBrowser (#10241)

* add new project
add make core internals visible
add duplicate files as required

* build of libjswebview seems to work
added package references

* add resource files as links so dont duplicate them in repo

* move to .net 4.7.2 to avoid package ref issues
namespace adds dynamo
use new namespace to reference resources that are embedded.

* move back to 4.7 to see if we can get a build on self serve

* log msbuild version in appyveyor

* try using buildxml which restores a bit differently

* image should not be under env - bah

* revet back to nuget restore and build dynamo all

* working branch in acad

* icons from host registered streams supported now

* this functions but startup time is slow.
visibility fixed with startPage
loads acad icons from resource streams that are registered using existing resource dict

* add some stopwatch logging to resource loading
remove superflous resourcestream handler
add cache to main iconProvider entrypoint as first step in resolving icon data
use string builder to construct base64 data strings

* missed changes

* semi working lazy load - small change made to librariejs to raise event whenever any item is clicked
we also cache the original url before falling back to the default icon so we can load the real icon later.

* some cleanup

* update namespace to reflect what components are actually used
update some todos
update comments

* drop back to packges config
rename project, rename folder
rename extension class

* assembly and type names changed

* remove value tuple use
set version number to auto increment for now - keep at 1.0.x until we have a longer term plan for this project

* get rid of value tuple

* recase some methods
comments
add readme

* address review comments

* Add new tests (#10279)

* Revert "Reset engine controller for every new workspace (#10113)" (#10282)

This reverts commit b01e2de.

* DYN-2375 - Event to handle the close operation of the workspace references extension  (#10280)

* First commit

* new changes

* Renaming the event

* Adding test

* Upgrade Revit Sample file to Revit 2021 (#10288)

* pass the additional to sign list to the installerspec generator (#10285)

add new files
add comments
remove files that no longer exist
update installerSpec.exe
update installerspec source

* points and curves render
bounds are updated when added - and faster than for each RP.
remove new handlers and events, revert to binding.

* revert change

* remove commented out code

* add comments

* remove some old comments
remove old code for testing

Co-authored-by: reddyashish <[email protected]>
Co-authored-by: manuelsaldivar525 <[email protected]>
Co-authored-by: Aaron (Qilong) <[email protected]>
Co-authored-by: aparajit-pratap <[email protected]>
Co-authored-by: ZiyunShang <[email protected]>

* Helix upgrade PR to merge the changes from the master branch (#10388)

* LibG Binaries Update (#10295)

* "LibG/ASM224,7418555f"

* "LibG/ASM224.4,918b3d73"

* "LibG/ASM225,2b68d3dd"

* "LibG/ASM226,2b308956"

* Change mechanism to retreive the certificate from assembly (#10301)

* DYN-2225 - Marshaling Performance optimization - Heap Cleanup (#10026)

* fast path for zero size heap allocation

* Cache mechanism for marshalling lookups

* Do not allocate heap stack values for class properties for CLR objects

* Test removing getter heap interaction for CLR object

* Remove unused Heap Object set

* make variables non-static

* remove GetterFunctionPointer class

Co-authored-by: aparajit-pratap <[email protected]>

* DYN-2289: Fix crash with NodeToCode (#10305)

* search for property by getter if not found

* add test

* Geometry Color Tests More (#10291)

* Add geometry color check for Display_ByGeometryColor_HasColoredMesh

Add geometry color check for Display_ByGeometryColor_HasColoredMesh

* Test updates

* Add Geometry Transparency Test

* Update test name

* update newly added test (#10313)

* DYN-2286: fix for crash upon unresolved node undo (#10315)

* fix for crash upon unresolved node undo

* override Equals in PortModel

* add recorded test

* DYN-2328 Add test for geometry labeling (#10311)

* DYN-2328 Add test for geometry lablling

* DYN-2328 Add test for geometry labeling

* Removing extra assignments

* updating the test and the test dyn file.

* Removing the extra variable that is not being used

* First Github Action (#10131)

This Github Action will greet Github users who submit a PR or issue first time to our repo

* Removal of PR trigger for now (#10323)

* Analytics Agreement Workflow Update (#10314)

* Initial Commit to Update Analytics Agreement Workflow

* update

* Add unit test for deserializing analytics setting

* Update instrumentation default agreement setting in unit test

* Add more comments

* Add missing resource string (#10329)

* LibG Binaries Update (#10331)

* "LibG/ASM224,7418555f"

* "LibG/ASM224.4,918b3d73"

* "LibG/ASM225,2b68d3dd"

* "LibG/ASM226,5c8f1fdd"

* Fix the library view display issues introduced by MS WebBrowser (#10316)

* Disable the context menu on the library viewer.

* Zoom the libarary view to adapt the current DPI scale.

* Disable the horizontal scroll bar on the bottom of the library view.

* Disable the library view is zoomed by keyboard or mouse wheel.

* Zoom the library bar to adapt the current DPI scale.

* Hide the extra search text bar close button.

* [DYN-2382] LibraryViewExtensionMSWebBrowser does not scale correctly when using display scaling (#10335)

* Disable the context menu on the library viewer.

* Zoom the libarary view to adapt the current DPI scale.

* Disable the horizontal scroll bar on the bottom of the library view.

* Disable the library view is zoomed by keyboard or mouse wheel.

* Zoom the library bar to adapt the current DPI scale.

* Hide the extra search text bar close button.

* Unsubscribing the event handler in dispose method

* Skip GA Client Tear Down Process if NOT Necessary (#10340)

* Skip Analytics Client Tear down if it is not needed

* Add unit test covering analytics tear down

* Touch test naming

* [Analytics] Update Tracking Conditions (#10345)

* Update Tracking Conditions

* Add same check to ReportingUsage

* Add properties comments

* PR comment (#10347)

* Code improvements: (#10348)

1. Unsubscribe DpiChanged event handler in the browser Dispose method.
2. Move the overflow-x style setting from script to html to avoid to set it when the script method is called every time.
3. Add necessary comments.

* Update HelixWatch3DViewModelTests.cs

* Updating Watch3D_Disconnect_Reconnect_CorrectRenderings test

Co-authored-by: DynamoEngOps <[email protected]>
Co-authored-by: Craig Long <[email protected]>
Co-authored-by: aparajit-pratap <[email protected]>
Co-authored-by: Aaron (Qilong) <[email protected]>
Co-authored-by: StarLee <[email protected]>

* [DYN-2341] Labels on helix-update branch cause slow down (#10399)

* Fix the null pointer exception

This will render the labels on the workspace without any lags.

* Adding test to compare the performace.

* Verify test run time.

* some changes to the test.

* Update comments

* DYN-2406: better handle pts/lines when selecting, freezing, and isolating. (#10375)

* working color change on selection for points.

* lots of cleanup work to do but this works
isolate correctly sets all geo to low alpha, and the selected geo sets back to whatever other state it was in without isolate.

* start adding morecolor tests

* fix test

* add more tests
add cleanup to color cache

* fix watch3d background color converter
fix watch3d background color test
fix watch3d image export function

* need to move branches - saving work

* give up on image comparison tests, will file that as followup, resize function in helix does not work.

* break out some util methods
need to rerun tests

* review comments
all tests pass

* review comment

* improve performance of selection handler while isolation mode is on - no need
to update scene items - modifying colors updates the materials and colors already.

* fix color tests
modify pt line isolation alpha

* fix alpha value for mesh colors in isolation mode. (#10405)

* working color change on selection for points.

* lots of cleanup work to do but this works
isolate correctly sets all geo to low alpha, and the selected geo sets back to whatever other state it was in without isolate.

* start adding morecolor tests

* fix test

* add more tests
add cleanup to color cache

* fix watch3d background color converter
fix watch3d background color test
fix watch3d image export function

* need to move branches - saving work

* give up on image comparison tests, will file that as followup, resize function in helix does not work.

* break out some util methods
need to rerun tests

* review comments
all tests pass

* review comment

* improve performance of selection handler while isolation mode is on - no need
to update scene items - modifying colors updates the materials and colors already.

* fix color tests
modify pt line isolation alpha

* missed last alpha change

* Helix upgrade mastermerge (#10465)

* LibG Binaries Update (#10295)

* "LibG/ASM224,7418555f"

* "LibG/ASM224.4,918b3d73"

* "LibG/ASM225,2b68d3dd"

* "LibG/ASM226,2b308956"

* Change mechanism to retreive the certificate from assembly (#10301)

* DYN-2225 - Marshaling Performance optimization - Heap Cleanup (#10026)

* fast path for zero size heap allocation

* Cache mechanism for marshalling lookups

* Do not allocate heap stack values for class properties for CLR objects

* Test removing getter heap interaction for CLR object

* Remove unused Heap Object set

* make variables non-static

* remove GetterFunctionPointer class

Co-authored-by: aparajit-pratap <[email protected]>

* DYN-2289: Fix crash with NodeToCode (#10305)

* search for property by getter if not found

* add test

* Geometry Color Tests More (#10291)

* Add geometry color check for Display_ByGeometryColor_HasColoredMesh

Add geometry color check for Display_ByGeometryColor_HasColoredMesh

* Test updates

* Add Geometry Transparency Test

* Update test name

* update newly added test (#10313)

* DYN-2286: fix for crash upon unresolved node undo (#10315)

* fix for crash upon unresolved node undo

* override Equals in PortModel

* add recorded test

* DYN-2328 Add test for geometry labeling (#10311)

* DYN-2328 Add test for geometry lablling

* DYN-2328 Add test for geometry labeling

* Removing extra assignments

* updating the test and the test dyn file.

* Removing the extra variable that is not being used

* First Github Action (#10131)

This Github Action will greet Github users who submit a PR or issue first time to our repo

* Removal of PR trigger for now (#10323)

* Analytics Agreement Workflow Update (#10314)

* Initial Commit to Update Analytics Agreement Workflow

* update

* Add unit test for deserializing analytics setting

* Update instrumentation default agreement setting in unit test

* Add more comments

* Add missing resource string (#10329)

* LibG Binaries Update (#10331)

* "LibG/ASM224,7418555f"

* "LibG/ASM224.4,918b3d73"

* "LibG/ASM225,2b68d3dd"

* "LibG/ASM226,5c8f1fdd"

* Fix the library view display issues introduced by MS WebBrowser (#10316)

* Disable the context menu on the library viewer.

* Zoom the libarary view to adapt the current DPI scale.

* Disable the horizontal scroll bar on the bottom of the library view.

* Disable the library view is zoomed by keyboard or mouse wheel.

* Zoom the library bar to adapt the current DPI scale.

* Hide the extra search text bar close button.

* [DYN-2382] LibraryViewExtensionMSWebBrowser does not scale correctly when using display scaling (#10335)

* Disable the context menu on the library viewer.

* Zoom the libarary view to adapt the current DPI scale.

* Disable the horizontal scroll bar on the bottom of the library view.

* Disable the library view is zoomed by keyboard or mouse wheel.

* Zoom the library bar to adapt the current DPI scale.

* Hide the extra search text bar close button.

* Unsubscribing the event handler in dispose method

* Skip GA Client Tear Down Process if NOT Necessary (#10340)

* Skip Analytics Client Tear down if it is not needed

* Add unit test covering analytics tear down

* Touch test naming

* [Analytics] Update Tracking Conditions (#10345)

* Update Tracking Conditions

* Add same check to ReportingUsage

* Add properties comments

* PR comment (#10347)

* Code improvements: (#10348)

1. Unsubscribe DpiChanged event handler in the browser Dispose method.
2. Move the overflow-x style setting from script to html to avoid to set it when the script method is called every time.
3. Add necessary comments.

* add show line numbers when watermarkLabel is collapsed (#10362)

* Visual Identifier on Optional Inputs (#10361)

* change port text to italic if using default input

* Update Ports.xaml

* Update README.md (#10387)

* Update README.md

* Update README.md

* Update README.md

* Update DynamoVisualProgramming.Core.nuspec

* Update DynamoVisualProgramming.Core.nuspec

* GA client not launching when terms not agreed (#10407)

* GA client not launching when terms not agreed

* Comments

* Patch 283 (#10421)

* Add WinVerityTrust wrapper

* Utilzie new WinTrustWrapper method for cert verification

* Add negative test

* Add Package with faked certificate

* Create sub namespace for WinVerityInteropp

* Update the WinTrustInterop

* Upate method call name

* Add specific exceptions to the CertificateVerfication class

* formating

* Cover Test for Configuration Folder (#10444)

* Cover Test for Configuration Folder

* Update DynamoCoreTests.csproj

* Added a couple of asserts for the properties. (#10437)

* Add Test for Properties and removed getter and setter from WorkspaceDependencyViewExtension.DependencyView property.

* Update WorkspaceDependencyViewExtension.cs

* Fix for crash while drawing Point manipulator (gizmo) when LibG fails to load (#10148)

* fix for crash in DM when LibG fails to load

* return from recursive loop once we find the first non-null point

* cache enabled flag for manipulator

* more fixes

* add documentation

* add documentation

Co-authored-by: DynamoEngOps <[email protected]>
Co-authored-by: Craig Long <[email protected]>
Co-authored-by: aparajit-pratap <[email protected]>
Co-authored-by: Aaron (Qilong) <[email protected]>
Co-authored-by: reddyashish <[email protected]>
Co-authored-by: StarLee <[email protected]>
Co-authored-by: Sylvester Knudsen <[email protected]>

* Mesh display using shaders (#10462)

* LibG Binaries Update (#10295)

* "LibG/ASM224,7418555f"

* "LibG/ASM224.4,918b3d73"

* "LibG/ASM225,2b68d3dd"

* "LibG/ASM226,2b308956"

* Change mechanism to retreive the certificate from assembly (#10301)

* DYN-2225 - Marshaling Performance optimization - Heap Cleanup (#10026)

* fast path for zero size heap allocation

* Cache mechanism for marshalling lookups

* Do not allocate heap stack values for class properties for CLR objects

* Test removing getter heap interaction for CLR object

* Remove unused Heap Object set

* make variables non-static

* remove GetterFunctionPointer class

Co-authored-by: aparajit-pratap <[email protected]>

* DYN-2289: Fix crash with NodeToCode (#10305)

* search for property by getter if not found

* add test

* Geometry Color Tests More (#10291)

* Add geometry color check for Display_ByGeometryColor_HasColoredMesh

Add geometry color check for Display_ByGeometryColor_HasColoredMesh

* Test updates

* Add Geometry Transparency Test

* Update test name

* update newly added test (#10313)

* DYN-2286: fix for crash upon unresolved node undo (#10315)

* fix for crash upon unresolved node undo

* override Equals in PortModel

* add recorded test

* DYN-2328 Add test for geometry labeling (#10311)

* DYN-2328 Add test for geometry lablling

* DYN-2328 Add test for geometry labeling

* Removing extra assignments

* updating the test and the test dyn file.

* Removing the extra variable that is not being used

* First Github Action (#10131)

This Github Action will greet Github users who submit a PR or issue first time to our repo

* Removal of PR trigger for now (#10323)

* Analytics Agreement Workflow Update (#10314)

* Initial Commit to Update Analytics Agreement Workflow

* update

* Add unit test for deserializing analytics setting

* Update instrumentation default agreement setting in unit test

* Add more comments

* Add missing resource string (#10329)

* LibG Binaries Update (#10331)

* "LibG/ASM224,7418555f"

* "LibG/ASM224.4,918b3d73"

* "LibG/ASM225,2b68d3dd"

* "LibG/ASM226,5c8f1fdd"

* Fix the library view display issues introduced by MS WebBrowser (#10316)

* Disable the context menu on the library viewer.

* Zoom the libarary view to adapt the current DPI scale.

* Disable the horizontal scroll bar on the bottom of the library view.

* Disable the library view is zoomed by keyboard or mouse wheel.

* Zoom the library bar to adapt the current DPI scale.

* Hide the extra search text bar close button.

* [DYN-2382] LibraryViewExtensionMSWebBrowser does not scale correctly when using display scaling (#10335)

* Disable the context menu on the library viewer.

* Zoom the libarary view to adapt the current DPI scale.

* Disable the horizontal scroll bar on the bottom of the library view.

* Disable the library view is zoomed by keyboard or mouse wheel.

* Zoom the library bar to adapt the current DPI scale.

* Hide the extra search text bar close button.

* Unsubscribing the event handler in dispose method

* working color change on selection for points.

* Skip GA Client Tear Down Process if NOT Necessary (#10340)

* Skip Analytics Client Tear down if it is not needed

* Add unit test covering analytics tear down

* Touch test naming

* [Analytics] Update Tracking Conditions (#10345)

* Update Tracking Conditions

* Add same check to ReportingUsage

* Add properties comments

* PR comment (#10347)

* Code improvements: (#10348)

1. Unsubscribe DpiChanged event handler in the browser Dispose method.
2. Move the overflow-x style setting from script to html to avoid to set it when the script method is called every time.
3. Add necessary comments.

* lots of cleanup work to do but this works
isolate correctly sets all geo to low alpha, and the selected geo sets back to whatever other state it was in without isolate.

* start adding morecolor tests

* fix test

* add more tests
add cleanup to color cache

* fix watch3d background color converter
fix watch3d background color test
fix watch3d image export function

* need to move branches - saving work

* give up on image comparison tests, will file that as followup, resize function in helix does not work.

* break out some util methods
need to rerun tests

* review comments
all tests pass

* review comment

* add show line numbers when watermarkLabel is collapsed (#10362)

* Visual Identifier on Optional Inputs (#10361)

* change port text to italic if using default input

* Update Ports.xaml

* Update README.md (#10387)

* Update README.md

* Update README.md

* Update README.md

* Update DynamoVisualProgramming.Core.nuspec

* Update DynamoVisualProgramming.Core.nuspec

* GA client not launching when terms not agreed (#10407)

* GA client not launching when terms not agreed

* Comments

* Patch 283 (#10421)

* Add WinVerityTrust wrapper

* Utilzie new WinTrustWrapper method for cert verification

* Add negative test

* Add Package with faked certificate

* Create sub namespace for WinVerityInteropp

* Update the WinTrustInterop

* Upate method call name

* Add specific exceptions to the CertificateVerfication class

* formating

* fix summary

* Cover Test for Configuration Folder (#10444)

* Cover Test for Configuration Folder

* Update DynamoCoreTests.csproj

* Added a couple of asserts for the properties. (#10437)

* Add Test for Properties and removed getter and setter from WorkspaceDependencyViewExtension.DependencyView property.

* Update WorkspaceDependencyViewExtension.cs

* this is working to link 2 simple shaders - they are just for testing though. (vertex shaders with lighting)
embed testing shaders
add technique that uses our 2 shaders
add core and node classes for dynamo mesh which will set data on shader based on attached properties.

* Fix for crash while drawing Point manipulator (gizmo) when LibG fails to load (#10148)

* fix for crash in DM when LibG fails to load

* return from recursive loop once we find the first non-null point

* cache enabled flag for manipulator

* more fixes

* add documentation

* add documentation

* update shader names
add handle mesh method to attached properties replacing all the material setting
add code for setting bit flags and setting data on struct that actually makes it to shader
add helix shader structs and functions that we need to compile our shaders
add readme

* fix broken tests dude to bad merge conflict fix

* remove commented out vertex shader code

* fix bug in shader
fix comment and some todos

* remove
tested transofmrable interface

* update comments

* review comments

* review comments2

Co-authored-by: DynamoEngOps <[email protected]>
Co-authored-by: Craig Long <[email protected]>
Co-authored-by: aparajit-pratap <[email protected]>
Co-authored-by: Aaron (Qilong) <[email protected]>
Co-authored-by: reddyashish <[email protected]>
Co-authored-by: StarLee <[email protected]>
Co-authored-by: Sylvester Knudsen <[email protected]>

* Headlight bound to Camera LookDirection (#10466)

* LibG Binaries Update (#10295)

* "LibG/ASM224,7418555f"

* "LibG/ASM224.4,918b3d73"

* "LibG/ASM225,2b68d3dd"

* "LibG/ASM226,2b308956"

* Change mechanism to retreive the certificate from assembly (#10301)

* DYN-2225 - Marshaling Performance optimization - Heap Cleanup (#10026)

* fast path for zero size heap allocation

* Cache mechanism for marshalling lookups

* Do not allocate heap stack values for class properties for CLR objects

* Test removing getter heap interaction for CLR object

* Remove unused Heap Object set

* make variables non-static

* remove GetterFunctionPointer class

Co-authored-by: aparajit-pratap <[email protected]>

* DYN-2289: Fix crash with NodeToCode (#10305)

* search for property by getter if not found

* add test

* Geometry Color Tests More (#10291)

* Add geometry color check for Display_ByGeometryColor_HasColoredMesh

Add geometry color check for Display_ByGeometryColor_HasColoredMesh

* Test updates

* Add Geometry Transparency Test

* Update test name

* update newly added test (#10313)

* DYN-2286: fix for crash upon unresolved node undo (#10315)

* fix for crash upon unresolved node undo

* override Equals in PortModel

* add recorded test

* DYN-2328 Add test for geometry labeling (#10311)

* DYN-2328 Add test for geometry lablling

* DYN-2328 Add test for geometry labeling

* Removing extra assignments

* updating the test and the test dyn file.

* Removing the extra variable that is not being used

* First Github Action (#10131)

This Github Action will greet Github users who submit a PR or issue first time to our repo

* Removal of PR trigger for now (#10323)

* Analytics Agreement Workflow Update (#10314)

* Initial Commit to Update Analytics Agreement Workflow

* update

* Add unit test for deserializing analytics setting

* Update instrumentation default agreement setting in unit test

* Add more comments

* Add missing resource string (#10329)

* LibG Binaries Update (#10331)

* "LibG/ASM224,7418555f"

* "LibG/ASM224.4,918b3d73"

* "LibG/ASM225,2b68d3dd"

* "LibG/ASM226,5c8f1fdd"

* Fix the library view display issues introduced by MS WebBrowser (#10316)

* Disable the context menu on the library viewer.

* Zoom the libarary view to adapt the current DPI scale.

* Disable the horizontal scroll bar on the bottom of the library view.

* Disable the library view is zoomed by keyboard or mouse wheel.

* Zoom the library bar to adapt the current DPI scale.

* Hide the extra search text bar close button.

* [DYN-2382] LibraryViewExtensionMSWebBrowser does not scale correctly when using display scaling (#10335)

* Disable the context menu on the library viewer.

* Zoom the libarary view to adapt the current DPI scale.

* Disable the horizontal scroll bar on the bottom of the library view.

* Disable the library view is zoomed by keyboard or mouse wheel.

* Zoom the library bar to adapt the current DPI scale.

* Hide the extra search text bar close button.

* Unsubscribing the event handler in dispose method

* working color change on selection for points.

* Skip GA Client Tear Down Process if NOT Necessary (#10340)

* Skip Analytics Client Tear down if it is not needed

* Add unit test covering analytics tear down

* Touch test naming

* [Analytics] Update Tracking Conditions (#10345)

* Update Tracking Conditions

* Add same check to ReportingUsage

* Add properties comments

* PR comment (#10347)

* Code improvements: (#10348)

1. Unsubscribe DpiChanged event handler in the browser Dispose method.
2. Move the overflow-x style setting from script to html to avoid to set it when the script method is called every time.
3. Add necessary comments.

* lots of cleanup work to do but this works
isolate correctly sets all geo to low alpha, and the selected geo sets back to whatever other state it was in without isolate.

* start adding morecolor tests

* fix test

* add more tests
add cleanup to color cache

* fix watch3d background color converter
fix watch3d background color test
fix watch3d image export function

* need to move branches - saving work

* give up on image comparison tests, will file that as followup, resize function in helix does not work.

* break out some util methods
need to rerun tests

* review comments
all tests pass

* review comment

* add show line numbers when watermarkLabel is collapsed (#10362)

* Visual Identifier on Optional Inputs (#10361)

* change port text to italic if using default input

* Update Ports.xaml

* Update README.md (#10387)

* Update README.md

* Update README.md

* Update README.md

* Update DynamoVisualProgramming.Core.nuspec

* Update DynamoVisualProgramming.Core.nuspec

* GA client not launching when terms not agreed (#10407)

* GA client not launching when terms not agreed

* Comments

* Patch 283 (#10421)

* Add WinVerityTrust wrapper

* Utilzie new WinTrustWrapper method for cert verification

* Add negative test

* Add Package with faked certificate

* Create sub namespace for WinVerityInteropp

* Update the WinTrustInterop

* Upate method call name

* Add specific exceptions to the CertificateVerfication class

* formating

* fix summary

* Cover Test for Configuration Folder (#10444)

* Cover Test for Configuration Folder

* Update DynamoCoreTests.csproj

* Added a couple of asserts for the properties. (#10437)

* Add Test for Properties and removed getter and setter from WorkspaceDependencyViewExtension.DependencyView property.

* Update WorkspaceDependencyViewExtension.cs

* this is working to link 2 simple shaders - they are just for testing though. (vertex shaders with lighting)
embed testing shaders
add technique that uses our 2 shaders
add core and node classes for dynamo mesh which will set data on shader based on attached properties.

* Fix for crash while drawing Point manipulator (gizmo) when LibG fails to load (#10148)

* fix for crash in DM when LibG fails to load

* return from recursive loop once we find the first non-null point

* cache enabled flag for manipulator

* more fixes

* add documentation

* add documentation

* update shader names
add handle mesh method to attached properties replacing all the material setting
add code for setting bit flags and setting data on struct that actually makes it to shader
add helix shader structs and functions that we need to compile our shaders
add readme

* fix broken tests dude to bad merge conflict fix

* remove commented out vertex shader code

* fix bug in shader
fix comment and some todos

* remove
tested transofmrable interface

* update comments

* fix binding
add test

* flip normal if back facing tri
update shader

* make sure compiled shader up to date.

Co-authored-by: DynamoEngOps <[email protected]>
Co-authored-by: Craig Long <[email protected]>
Co-authored-by: aparajit-pratap <[email protected]>
Co-authored-by: Aaron (Qilong) <[email protected]>
Co-authored-by: reddyashish <[email protected]>
Co-authored-by: StarLee <[email protected]>
Co-authored-by: Sylvester Knudsen <[email protected]>

* special render packages should render with materials colors only (#10481)

* special render packages should render with materials
add test
update shader

* fix comment

* update comments

* Update ProtoGeometry.config (#10483)

* Avoid rendering Gizmo multiple times on rotate (#10479)

A change of behavior in helix when upgrading from v2015 is that the
CameraChanged event gets fired several times, once for each individual
property of Camera that changed.

In order to avoid rendering the Gizmo several times, which leads to
choppy camera rotation, we limit the rendering of the Gizmo to only be
done when the position of the camera changed.

Use C# 6 to support build machines

* add 3d graphics image comparison tests (#10487)

* special render packages should render with materials
add test
update shader

* fix comment

* update comments

* lower intensity of directional light
add new image comp tests
add new color dyn files that are easy to modify on the fly
add first set of reference images

* add new tests
add ref images
all pass local

* comment

* refactor tests
correct comment

* unused usings

* target shader model 4 to avoid crash when user does not have GPU. (#10497)

* special render packages should render with materials
add test
update shader

* fix comment

* update comments

* lower intensity of directional light
add new image comp tests
add new color dyn files that are easy to modify on the fly
add first set of reference images

* add new tests
add ref images
all pass local

* comment

* drop to shader model 4 to avoid crash on WARP devices

* fix shader interpolation and make image comparison tests more tolerant. (#10506)

* add debug save image mode
add percent diff assertion
add log of percent and each diff

* enable save
fix build errors
fix path errors

* update shaders to fix them on WARP/real hardware
remove dynamo ps input
add color distance and percent dist check to make tests more tolerant of changes

* rename function, rename params

* Handle memory outage on render (cherry pick) (#10569)

This brings the fix from master to the helix-upgrade branch. The only
difference is that the test now mocks the AggregateRenderPackage
function directly, because the function mocked in master no longer
exists. The visibility was changed to internal virtual in order to be
able to mock it, also using InternalsVisibleTo.

* Add Image Comparison Test for Surface. (#10579)

* Added Surface image comparison test and corrected indentation

* Update to include .sat file

* Format code lines

* Remove Dup entry

* Comments

* Comments

* Comments

* Revert test file name change

Co-authored-by: Michael Dewberry <[email protected]>
Co-authored-by: aparajit-pratap <[email protected]>
Co-authored-by: michael kirschner <[email protected]>
Co-authored-by: reddyashish <[email protected]>
Co-authored-by: manuelsaldivar525 <[email protected]>
Co-authored-by: ZiyunShang <[email protected]>
Co-authored-by: DynamoEngOps <[email protected]>
Co-authored-by: Craig Long <[email protected]>
Co-authored-by: StarLee <[email protected]>
Co-authored-by: Sylvester Knudsen <[email protected]>
Co-authored-by: Martin Misol Monzo <[email protected]>
Co-authored-by: Ashish Aggarwal <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants