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

[Canvas] Document editing interactions #31889

Closed
monfera opened this issue Feb 25, 2019 · 3 comments · Fixed by #42473
Closed

[Canvas] Document editing interactions #31889

monfera opened this issue Feb 25, 2019 · 3 comments · Fixed by #42473
Assignees
Labels
Feature:Canvas Team:Docs Team:Presentation Presentation Team for Dashboard, Input Controls, and Canvas

Comments

@monfera
Copy link
Contributor

monfera commented Feb 25, 2019

We've been adding features but testing and documentation is lagging a bit. This is an incomplete, unstructured WIP collection of what interactions to test and expect, whether automated or manual. These features are taken for granted by users of presentation editing software and graphic designers. In the initial round it contains a couple of less obvious design choices.

The hover box must be visible even if the element is partly occluded:
hoverbox

The resize/rotate annotations must also be visible and operable, even when the element is not on top:
resizebox

Simultaneously holding the Meta key suspends the snapping:
snap-off

Snapping works not just for moving around but also for resizing, eg. for a tiled view:
resize-snap

Snapping is trickier to implement for the case of a rotated element for moving, but esp. for resize:
resize-snap-rotated

Rotation, when the mouse is close to the center, is by 15 degrees, but at a longer distance, the snapping allows finer adjustments (like in Ai); or holding the Command key will deactivate snapping:
rotate2

A "selection box", now looking identical to the hover box, is also needed when selecting multiple elements, otherwise it's not clear what elements are included inside the selection bounding box:
adhocborder

The mouse pointer arrow direction needs to change according to possible rotation of the element, eg. the initial diagonal arrow turns to a horizontal arrow on rotation:
pointer-direction

Element selection works by calculating the intersection of a ray perpendicular to the screen from the mouse x, y position and the elements it hits, yielding the closest hit (3D is not exposed yet but this shows a general case):
ray

One of the many reasons for calculating the intersection, rather than relying on the DOM is to be able to select elements underneath other elements:
depth select

Besides eg. bringing a depth selected element forward, it's also possible to move while fully occluded (currently this requires depth select and hold):
depth move

Box select coming up:
boxselect

Grouping must be responsive, in this case, preserve the x/y space ratios within the group:
dizzydashboardsmallfast

Centered resize, combined with snapping, helps elements remain in their desired position while resizing:
centered resize

Centered resize should also work for groups:
centeredgroup

Copy-paste via shortcuts:
copypaste

Snapping can be made permanent (it's currently not enabled, though groups are like persistent x/y snaps):
sticky-lines

@monfera monfera added Team:Docs Team:Presentation Presentation Team for Dashboard, Input Controls, and Canvas labels Feb 25, 2019
@monfera monfera self-assigned this Feb 25, 2019
@elasticmachine
Copy link
Contributor

Pinging @elastic/kibana-docs

@elasticmachine
Copy link
Contributor

Pinging @elastic/kibana-canvas

@bhavyarm
Copy link
Contributor

Thanks @monfera This is very helpful!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Feature:Canvas Team:Docs Team:Presentation Presentation Team for Dashboard, Input Controls, and Canvas
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants