-
Notifications
You must be signed in to change notification settings - Fork 113
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
[KED-2212] Improve graph layout code quality, performance and docs #347
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice one! Approved with caveats - it might be worth adding a little more documentation if you don't mind!
@@ -1,4 +1,4 @@ | |||
import { distance1d, greaterOrEqual, equalTo, subtract } from './common'; | |||
import { Constraint, Operator, Strength } from 'kiwi.js'; | |||
|
|||
/** | |||
* Constraint base definitions. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do you mind expanding on this comment a little to explain what this means?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There will be some follow up work coming soon which might change this up a bit, but then I think it will be stable enough to get documenting, if that's reasonable?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ok, but it might be worth adding a JIRA ticket for these subsequent documentation improvements if they're out of scope for this PR
# Conflicts: # src/utils/graph/constraints.js # src/utils/graph/graph.test.js # src/utils/graph/layout.js # src/utils/graph/solver.js
# Release 3.9.0 ## Major features and improvements - Add code panel (#346) - Improve view panning behaviour when a node is selected (#356, #363, #370, #373, #374) - Improve layout performance for large graphs (#343) - Save tag state to localStorage (#353) ## Bug fixes and other changes - Improve graph layout code quality, performance and docs (#347) - Update docs to remind on compatibility of Kedro-Viz 3.8.0 with Kedro 0.17 (#367) - Update dependencies (#360, #364, #369) - Fix failing CircleCI build on Windows (#365, #366) - Refactor node-list-row CSS, fixing hover and focus states (#355, #358, #362) - Update iconography (#357, #359) - Fix missing indicator Chrome zoom bug (#349) - Fix sidebar border/box-shadow CSS rules (#351) - Fix server.py to work with versions >0.17 and update contributing docs (#348) - Fix errors when scrolling with empty pipeline (#342) - Ignore coverage on some branches and fix e2e tests (#345) - Fix icon-button tooltips on mobile (#344) - Update SVG-Crowbar to fix errors (#339) - Update contributing docs for new dev server (#341)
Description
Pure refactor to improve graph layout code quality, performance and docs.
Development notes
Inverts control of
solver.js
to make constraints easier to understand and increase their flexibility.Splits the graph
layout.js
further into more functions with improved comments for clarity.There will be some performance improvement from reduced function calls, memory usage and garbage collection (most noticeable in graphs with a high number of edges).
There is still some way to go in fully documenting the graph engine but this will be a gradual process.
QA notes
There should be no change in results, this is a pure refactoring.
Test all features that trigger graph layout, on various graphs, compare with the previous release.
Checklist
RELEASE.md
fileLegal notice
I acknowledge and agree that, by checking this box and clicking "Submit Pull Request":
I submit this contribution under the Apache 2.0 license and represent that I am entitled to do so on behalf of myself, my employer, or relevant third parties, as applicable.
I certify that (a) this contribution is my original creation and / or (b) to the extent it is not my original creation, I am authorised to submit this contribution on behalf of the original creator(s) or their licensees.
I certify that the use of this contribution as authorised by the Apache 2.0 license does not violate the intellectual property rights of anyone else.