-
Notifications
You must be signed in to change notification settings - Fork 13
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
DEVPROD-10205: Create onboarding tutorial #590
base: main
Are you sure you want to change the base?
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.
Really nice approach! Thank u mms 🫶
const currentStepRef = useRef<HTMLElement | null>(null); | ||
|
||
// Exposes a function via the ref to restart the walkthrough. | ||
useImperativeHandle(ref, () => ({ |
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.
TIL
{ | ||
title: "New Layout", | ||
description: | ||
"We've changed the Project Health page to a new layout for increased information density. Columns are commits, rows are build variants, and tasks are box icons.", |
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.
Switch order for consistency. Also maybe "squares" instead of "box icons"?
"We've changed the Project Health page to a new layout for increased information density. Columns are commits, rows are build variants, and tasks are box icons.", | |
"We've changed the Project Health page to a new layout for increased information density. Columns are commits, rows are build variants, and squares are tasks.", |
@@ -91,7 +94,7 @@ export const TaskStatusIconLegend: React.FC = () => { | |||
useOnClickOutside([buttonRef, popoverRef], () => setOpen(false)); | |||
|
|||
return ( | |||
<div> | |||
<div {...legendProps}> |
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.
Would it be possible to open the legend when the guide cue is here? May crowd the page too much but just an idea. It feels awk that the button is not clickable.
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 turns out it wasn't that hard to do this i just had to strategically put some walkthrough steps in a different order
but the task legend one looked awkward (because the legend just gets eclipsed by the guide cue) so i left it out 👀 i added it to other elements!
{ | ||
title: "Pin Build Variants", | ||
description: | ||
"Pin your favorite build variants at the top to help with debugging and monitoring workflows.", |
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.
"Favorite" feels like a strong word... I ❤️ Shared Library Enterprise RHEL 8
"Pin your favorite build variants at the top to help with debugging and monitoring workflows.", | |
"Pin variants to the top of the page to help with debugging and monitoring common workflows.", |
currentStep={currentStepIdx + 1} | ||
data-cy="walkthrough-guide-cue" | ||
numberOfSteps={walkthroughSteps.length} | ||
onDismiss={() => { |
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 dismissed the walkthrough without finishing it, but when I reloaded the page it started again which feels aggressive.
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 wasn't able to replicate,,, let me know if you're still seeing 🥺
{ | ||
title: "Summary View", | ||
description: | ||
"Introducing an alternative to the charts — view a summary of the task statuses for any given run.", |
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.
"Introducing an alternative to the charts — view a summary of the task statuses for any given run.", | |
"An alternative to project health charts — view a summary of task statuses for any given run.", |
description: | ||
"Introducing an alternative to the charts — view a summary of the task statuses for any given run.", | ||
targetId: "summary-view", | ||
}, |
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.
Might we add a cue for the "Search by git hash" feature? I think users called it out as harder to find in UAT, and ...
menus can get buried easily.
let firstActiveTaskId = ""; | ||
for (let i = 0; i < buildVariants[0]?.builds?.length; i++) { | ||
const { builds } = buildVariants[0]; | ||
if (builds[i].tasks.length > 0) { | ||
firstActiveTaskId = builds[i].tasks[0].id; | ||
break; | ||
} | ||
} | ||
|
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.
Would it perhaps make more sense to calculate this in the BuildRow component if isFirstBuild
is true
?
{ | ||
title: "New Layout", | ||
description: | ||
"We've changed the Project Health page to a new layout for increased information density. Columns are commits, rows are build variants, and tasks are box icons.", |
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.
Also, I think it makes sense to not imply we're changing the project health page. This is a new page, no need to mention it.
"We've changed the Project Health page to a new layout for increased information density. Columns are commits, rows are build variants, and tasks are box icons.", | |
"We've introduced a new layout for increased information density. Columns are commits, rows are build variants, and tasks are box icons.", |
{ | ||
title: "Search by Git Hash", | ||
description: | ||
"Explore other filtering options in the menu, such as searching by git hash.", |
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 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.
oops idk how i missed that 🫣
if (nextStep.shouldClick) { | ||
nextTargetElement.click(); | ||
} |
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 works so well 👏
<Button | ||
data-cy="restart-walkthrough-button" | ||
onClick={() => guideCueRef.current?.restart()} | ||
size={ButtonSize.XSmall} | ||
> | ||
Restart walkthrough | ||
</Button> |
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.
Hrmmmm I would love to show this button and launch the walkthrough only once the beta period starts. Is that doable now or is it dependent on some of the other tix?
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 think it might be simpler if i merge it on friday or monday...? 🤔 im on deploy so i can wait for whatever dependencies and deploy next week if that makes sense
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.
Make sense to me! We can throw a do-not-merge
label on here
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.
😍
<Button | ||
data-cy="restart-walkthrough-button" | ||
onClick={() => guideCueRef.current?.restart()} | ||
size={ButtonSize.XSmall} | ||
> | ||
Restart walkthrough | ||
</Button> |
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.
Make sense to me! We can throw a do-not-merge
label on here
DEVPROD-10205
Description
This PR adds the onboarding tutorial. Heavily referenced from preexisting Cloud work 🙏
Backdrop was my idea though... let me know if you don't like it
Assumptions
The user views a project that has activated tasks in the first build variant. It's hard to place a guide cue on the task box if that's not the case.
Note that older projects literally have no tasks on their waterfall due to the task collection TTL. 😅
Screenshots
I wasn't sure how the restart walkthrough functionality should look on the UI, I just put a button there for now. I can talk to Will about it.
Screen.Recording.2025-01-26.at.8.17.21.PM.mov
Testing