patternfly / react-log-viewer

MIT License
22 stars 14 forks source link

Restriction on Copying and Scrolling #69

Open dagrawalla opened 5 months ago

dagrawalla commented 5 months ago

Description

The log viewer component currently prevents users from scrolling down while copying text. Consequently, only the text visible on the screen can be copied, making it impossible to copy the entire log or reach certain lines that are not initially visible.

The copying and scrolling work with key controls but not with the mouse.

Steps to Reproduce

  1. Open the log viewer component.
  2. Attempt to scroll down while copying the log text.
  3. Observe that copying is restricted to only the visible text on the screen.

Expected Behavior

It should be possible to copy and scroll down the text within the log viewer up to a certain limit, including lines that are not initially visible.

Actual Behavior

Copying is restricted to the text visible on the screen, preventing the entire log text from being copied, including lines that are not visible.

Environment

Screenshots

image

nicolethoen commented 4 months ago

This is an interesting problem, because since the log viewer is vitrtualized, it is only rendering the visible text in the DOM - there is no other text to copy. It might be that a button should be added to the log viewer's toolbar which adds the whole content in the stream to the clipboard?

dagrawalla commented 4 months ago

I have a string of data separated by new lines and an overscan count of approximately 60. Initially, all lines are present in the DOM, and with the overscan count, I expect to copy at least X lines. Copying and Scrolling works fine with keyboard controls, but it doesn't work with mouse.

nicolethoen commented 4 months ago

hm... yeah using the overScanCount should enable you to copy more lines with mouse click. I'm not sure what's happening here. Will likely take more investigation, and I'm not sure we have bandwidth to dig into this particularly soon. If you discover anything else which may help in the investigation, let us know. We'd absolutely welcome a contribution.

dagrawalla commented 2 months ago

Hi @nicolethoen, Has the issue been resolved in version 5.3.0? Do we need any extra props to be added?

dagrawalla commented 2 months ago

Hi @nicolethoen, do we have any new updates?

nicolethoen commented 2 months ago

I don't currently have an update. We haven't had a lot of resources to investigate the log viewer issues super recently. But it still has a P1 tag, so as soon as we do, this is toward the top of the list.

nicolethoen commented 1 week ago

@dagrawalla Our team began discussing this issue again during backlog clean up.

Would either of these solutions work for you?

  1. The copy button does not have to place the contents of the UI into the clipboard. it could be wired up so that clicking the 'copy to clipboard' button copies the entire log file as long as it's available to the frontend. (Not just the visible text on the screen). I think you could wire this up without us needing to make any changes to the component itself.
  2. alternatively, we could enable a non-virtualized version of the log viewer (this new feature would take more time since it's not currently part of the log viewer component). if it's not virtualized, then even if the text is non-visible in the log viewer, it'd still exist in the DOM and allow for it to be copied.

Would either of those solutions work for you?