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

Bug 1829549: fix resizing issues with cloud shell terminal drawer #5224

Merged
merged 1 commit into from May 8, 2020

Conversation

christianvogt
Copy link
Contributor

Fixes:
https://issues.redhat.com/browse/ODC-3702

Analysis / Root cause:
There are two issues with the current drawer:

  1. dragging over a mouse over an iframe swallows mouse events
  2. when dragging the window larger than the maximum height, the height was incorrectly calculated

Solution Description:

  1. use event pageY to compute height of drawer relative to mouse because react-draggable data isn't compatible with our use case when dragging the drawer beyond its bounds
  2. Implemented a fix for react-draggable which will apply pointer-events: none to all iframes on the page.

Unit test coverage report:

image
image

Test setup:

Install https://github.com/che-incubator/che-workspace-operator to enable the cloud shell terminal.

Browser conformance:

  • Chrome
  • Firefox
  • Safari
  • Edge

@openshift-ci-robot openshift-ci-robot added component/shared Related to console-shared approved Indicates a PR has been approved by an approver from all required OWNERS files. labels Apr 28, 2020
@christianvogt christianvogt changed the title fix resizing issues with cloud shell terminal drawer Bug 1829549: fix resizing issues with cloud shell terminal drawer Apr 29, 2020
@openshift-ci-robot openshift-ci-robot added bugzilla/severity-medium Referenced Bugzilla bug's severity is medium for the branch this PR is targeting. bugzilla/invalid-bug Indicates that a referenced Bugzilla bug is invalid for the branch this PR is targeting. labels Apr 29, 2020
@openshift-ci-robot
Copy link
Contributor

@christianvogt: This pull request references Bugzilla bug 1829549, which is invalid:

  • expected the bug to target the "4.5.0" release, but it targets "---" instead

Comment /bugzilla refresh to re-evaluate validity if changes to the Bugzilla bug are made, or edit the title of this pull request to link to a different bug.

In response to this:

Bug 1829549: fix resizing issues with cloud shell terminal drawer

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@christianvogt
Copy link
Contributor Author

/bugzilla refresh

@openshift-ci-robot
Copy link
Contributor

@christianvogt: This pull request references Bugzilla bug 1829549, which is invalid:

  • expected the bug to target the "4.5.0" release, but it targets "---" instead

Comment /bugzilla refresh to re-evaluate validity if changes to the Bugzilla bug are made, or edit the title of this pull request to link to a different bug.

In response to this:

/bugzilla refresh

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@christianvogt
Copy link
Contributor Author

/bugzilla refresh

@openshift-ci-robot openshift-ci-robot added bugzilla/valid-bug Indicates that a referenced Bugzilla bug is valid for the branch this PR is targeting. and removed bugzilla/invalid-bug Indicates that a referenced Bugzilla bug is invalid for the branch this PR is targeting. labels Apr 29, 2020
@openshift-ci-robot
Copy link
Contributor

@christianvogt: This pull request references Bugzilla bug 1829549, which is valid. The bug has been moved to the POST state. The bug has been updated to refer to the pull request using the external bug tracker.

3 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target release (4.5.0) matches configured target release for branch (4.5.0)
  • bug is in the state NEW, which is one of the valid states (NEW, ASSIGNED, ON_DEV, POST, POST)

In response to this:

/bugzilla refresh

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

(e: DraggableEvent, data: DraggableData): false | void => {
document.body.classList.add('ocs-draggable-core-iframe-fix');
if (onStart) {
return onStart(e, data);
Copy link
Contributor

Choose a reason for hiding this comment

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

Why do we need to return here? we can just call the onStart function without returning it

Copy link
Contributor Author

Choose a reason for hiding this comment

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

The API from react-draggable is to return false | void this ensures that we allow the onStart provided to have a return value.

const draggable = resizable && (
<DraggableCore onDrag={handleDrag} onStart={handleResizeStart} onStop={handleResizeStop}>
<DraggableCoreIFrameFix
enableUserSelectHack
Copy link
Contributor

Choose a reason for hiding this comment

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

enableUserSelectHack is true by default

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Ah ok :) I'll remove this

lastObservedHeightRef.current = currentHeight;
// always start with actual drawer height
const drawerHeight = drawerRef.current?.offsetHeight || currentHeight;
startRef.current = drawerHeight + getPageY(e);
Copy link
Contributor

Choose a reason for hiding this comment

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

Why not use DraggableData instead of getPageY?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

DraggableData doesn't work for us once we hit max height. if you look at the height that's computed in master when you start to drag up beyond the masthead, you'll see that the height quickly increases by hundreds and then thousands. Which is incorrect. By using pageY we are always computing a height value relative to the starting height rather than relative to the last event.

@christianvogt
Copy link
Contributor Author

/retest

@christianvogt
Copy link
Contributor Author

Addressed comments.

Copy link
Contributor

@sahil143 sahil143 left a comment

Choose a reason for hiding this comment

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

/lgtm

verified changes locally

@openshift-ci-robot openshift-ci-robot added the lgtm Indicates that a PR is ready to be merged. label May 8, 2020
@openshift-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: christianvogt, sahil143

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@openshift-merge-robot openshift-merge-robot merged commit 52069df into openshift:master May 8, 2020
@openshift-ci-robot
Copy link
Contributor

@christianvogt: All pull requests linked via external trackers have merged: openshift/console#5224. Bugzilla bug 1829549 has been moved to the MODIFIED state.

In response to this:

Bug 1829549: fix resizing issues with cloud shell terminal drawer

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@spadgett spadgett added this to the v4.5 milestone May 11, 2020
@christianvogt christianvogt deleted the iframe-fix branch August 20, 2020 16:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
approved Indicates a PR has been approved by an approver from all required OWNERS files. bugzilla/severity-medium Referenced Bugzilla bug's severity is medium for the branch this PR is targeting. bugzilla/valid-bug Indicates that a referenced Bugzilla bug is valid for the branch this PR is targeting. component/core Related to console core functionality component/shared Related to console-shared lgtm Indicates that a PR is ready to be merged.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants