mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Improve logs scrolling experience
Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
This commit is contained in:
parent
e3a3fb42eb
commit
01e485d0e4
@ -21,7 +21,7 @@ type TabId = string;
|
||||
type PodLogLine = string;
|
||||
|
||||
// Number for log lines to load
|
||||
export const logRange = isDevelopment ? 100 : 1000;
|
||||
export const logRange = 1000;
|
||||
|
||||
@autobind()
|
||||
export class PodLogsStore extends DockTabStore<IPodLogsData> {
|
||||
|
||||
@ -140,18 +140,27 @@ export class PodLogs extends React.Component<Props> {
|
||||
}
|
||||
|
||||
onScroll = debounce((props: ListOnScrollProps) => {
|
||||
if (!this.logsElement.current) return;
|
||||
const toBottomOffset = 100 * lineHeight; // 100 lines * 18px (height of each line)
|
||||
const { scrollHeight, clientHeight, scrollTop } = this.logsElement.current;
|
||||
// Trigger loading only if scrolled by user
|
||||
if (scrollTop === 0 && !props.scrollUpdateWasRequested) {
|
||||
this.loadMore();
|
||||
}
|
||||
if (scrollHeight - scrollTop > toBottomOffset) {
|
||||
this.showJumpToBottom = true;
|
||||
const { scrollHeight, clientHeight } = this.logsElement.current;
|
||||
const { scrollDirection, scrollOffset, scrollUpdateWasRequested } = props;
|
||||
if (scrollDirection == "forward") {
|
||||
if (scrollHeight - scrollOffset < toBottomOffset) {
|
||||
this.showJumpToBottom = false;
|
||||
}
|
||||
if (clientHeight + scrollOffset === scrollHeight) {
|
||||
this.lastLineIsShown = true;
|
||||
}
|
||||
} else {
|
||||
this.showJumpToBottom = false;
|
||||
this.lastLineIsShown = false;
|
||||
// Trigger loading only if scrolled by user
|
||||
if (scrollOffset === 0 && !scrollUpdateWasRequested) {
|
||||
this.loadMore();
|
||||
}
|
||||
if (scrollHeight - scrollOffset > toBottomOffset) {
|
||||
this.showJumpToBottom = true;
|
||||
}
|
||||
}
|
||||
this.lastLineIsShown = clientHeight + scrollTop === scrollHeight;
|
||||
}, 300); // Debouncing to let virtual list do its internal works
|
||||
|
||||
/**
|
||||
|
||||
@ -34,6 +34,7 @@ export class SearchStore {
|
||||
* @returns {Array} Array of line indexes [0, 0, 14, 17, 17, 17, 20...]
|
||||
*/
|
||||
findOccurencies(text: string[], query: string) {
|
||||
if (!text) return;
|
||||
const occurences: number[] = [];
|
||||
text.forEach((line, index) => {
|
||||
const regex = new RegExp(this.escapeRegex(query), "gi");
|
||||
|
||||
Loading…
Reference in New Issue
Block a user