-
Notifications
You must be signed in to change notification settings - Fork 114
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
Flowchart Orientation #2251
base: main
Are you sure you want to change the base?
Flowchart Orientation #2251
Conversation
Signed-off-by: rashidakanchwala <[email protected]>
Signed-off-by: rashidakanchwala <[email protected]>
Signed-off-by: rashidakanchwala <[email protected]>
Signed-off-by: rashidakanchwala <[email protected]>
Signed-off-by: rashidakanchwala <[email protected]>
Signed-off-by: rashidakanchwala <[email protected]>
Signed-off-by: rashidakanchwala <[email protected]>
Signed-off-by: rashidakanchwala <[email protected]>
Signed-off-by: rashidakanchwala <[email protected]>
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.
I gave this a quick run using the demo project and looks like it works! 😄
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.
Awesome work @rashidakanchwala, tested it manually and looks great!
ariaLabel="Change flowchart orientation" | ||
className={'pipeline-menu-button--orientation'} | ||
dataTest={'sidebar-flowchart-orientation-btn'} | ||
icon={orientation === 'vertical' ? TopBottomIcon : LeftRightIcon} |
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.
should this be opposite ? Like when vertical we show LeftRightIcon to change, similar to expand/collapse pipelines ?
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.
this is a very good point. i am not sure; once @stephkaiser is back; let's ask her.
Signed-off-by: rashidakanchwala <[email protected]>
; Signed-off-by: rashidakanchwala <[email protected]>
@@ -9,26 +9,22 @@ | |||
import { Constraint, Operator, Strength } from 'kiwi.js'; | |||
|
|||
/** | |||
* Layout constraint in Y for separating rows | |||
* Layout constraint in for separating rows |
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.
* Layout constraint in for separating rows | |
* Layout constraint for separating rows |
Strength.required | ||
), | ||
}; | ||
|
||
/** | ||
* Layout constraint in Y for separating layers | ||
* Layout constraint in for separating layers |
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.
* Layout constraint in for separating layers | |
* Layout constraint for separating layers |
@@ -39,16 +35,15 @@ export const layerConstraint = { | |||
}; | |||
|
|||
/** | |||
* Layout constraint in X for minimising distance from source to target for straight edges | |||
* Layout constraint in for minimising distance from source to target for straight edges |
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.
* Layout constraint in for minimising distance from source to target for straight edges | |
* Layout constraint for minimising distance from source to target for straight edges |
@@ -61,37 +56,39 @@ export const parallelConstraint = { | |||
}; | |||
|
|||
/** | |||
* Crossing constraint in X for minimising edge crossings | |||
* Crossing constraint in for minimising edge crossings |
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.
* Crossing constraint in for minimising edge crossings | |
* Crossing constraint for minimising edge crossings |
}, | ||
}; | ||
|
||
/** | ||
* Layout constraint in X for minimum node separation | ||
* Layout constraint in for minimum node separation |
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.
* Layout constraint in for minimum node separation | |
* Layout constraint for minimum node separation |
node.x = 0; | ||
node.y = 0; | ||
node[coordPrimary] = 0; | ||
node[coordSecondary] = 0; | ||
} | ||
|
||
// Constants used by constraints | ||
const constants = { |
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.
[Nit] Though not introduced in this PR, constants variable name does not feel proper. Something like constraintDefaults ?
}; | ||
|
||
/** | ||
* Creates row constraints for the given edges. | ||
* @param {Array} edges The input edges | ||
* @returns {Array} The constraints | ||
*/ | ||
const createRowConstraints = (edges) => | ||
const createRowConstraints = (edges, constants) => |
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.
Can you please add some comments on what does Creates row constraints for the given edges.
means ?
@@ -106,14 +107,24 @@ export const routing = ({ | |||
|
|||
const offsetX = Math.min(spaceX, nodeGap * 0.5); | |||
|
|||
let sourceX, sourceY, targetX, targetY; | |||
|
|||
//TODO: Need to do this for horizontal orientation as well. |
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.
👍
@@ -57,20 +57,22 @@ export const solveStrict = (constraints, constants) => { | |||
}; | |||
|
|||
for (const constraint of constraints) { | |||
addVariable(constraint.a, constraint.base.property); | |||
addVariable(constraint.b, constraint.base.property); | |||
const property = constraint.property || constraint.base.property; |
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.
I do see constraint has property everywhere. Is there a place where we have property on base and not constraint ?
Also, in simple terms what is a constraint , base, property ?
Hi @rashidakanchwala , I did another pass at the PR and left few comments. The code looks good and seems quite complex. It would be great if you can add some comments/context (mostly related to graph constraints rows, layers, edges, cross constraints). I could understand most parts but the code at Thank you |
src/components/flowchart/draw.js
Outdated
const { chartSize, layers, orientation } = this.props; | ||
|
||
const layerNamePosition = | ||
orientation === 'vertical' ? chartSize.sidebarWidth || 0 : 100 || 0; |
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.
Nit:
orientation === 'vertical' ? chartSize.sidebarWidth || 0 : 100 || 0; | |
orientation === 'vertical' ? chartSize.sidebarWidth || 0 : 100; |
@rashidakanchwala When I was testing it locally I observed,
Is it expected for this PR ? |
|
@rashidakanchwala Pipeline slicing is working as expected. |
Signed-off-by: rashidakanchwala <[email protected]>
Awesome work @rashidakanchwala! some design QA notes below:
![]()
![]()
![]()
![]() Thank you!! |
@stephkaiser , pls see my responses below. |
7 . understood, lets revisit this in the future then thank you @rashidakanchwala !! |
Signed-off-by: rashidakanchwala <[email protected]>
I've fixed points 1, 3, and 5. I also attempted to address the transition issue (point 4) , but I'd like to understand from you how the transitions should behave since they affect both horizontal and vertical orientations. This seems to be an existing issue, so we can also tackle it in a separate PR if needed. I tried removing transitions, but it didn’t fully resolve the problem. Let me know your thoughts! |
It looks to me like there is a delay when the layer labels change, would shortening the animation of the layer labels solve this? we can jump on a quick call tomorrow if thats useful |
Signed-off-by: rashidakanchwala <[email protected]>
Description
Resolves #2159
Development notes
For first PR review, pls QA it and look through the code. I will add dev notes when i am back from PTO
QA notes
Checklist
RELEASE.md
file