fix: logs are not fully loaded
This commit is contained in:
@@ -64,9 +64,9 @@ const LogsList: React.FC<LogsListProps> = forwardRef((props, ref) => {
|
||||
|
||||
const handleOnWheel = useCallback(
|
||||
(e: any) => {
|
||||
const scrollTop = scrollEventElement?.scrollTop;
|
||||
const scrollHeight = scrollEventElement?.scrollHeight;
|
||||
const clientHeight = scrollEventElement?.clientHeight;
|
||||
const scrollTop = scrollEventElement?.current.scrollTop;
|
||||
const scrollHeight = scrollEventElement?.current.scrollHeight;
|
||||
const clientHeight = scrollEventElement?.current.clientHeight;
|
||||
|
||||
stopScroll.current = scrollTop + clientHeight <= scrollHeight;
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import useSetChunkFetch from '@/hooks/use-chunk-fetch';
|
||||
import { useMemoizedFn } from 'ahooks';
|
||||
import { Spin } from 'antd';
|
||||
import classNames from 'classnames';
|
||||
import _ from 'lodash';
|
||||
@@ -177,7 +178,7 @@ const LogsViewer: React.FC<LogsViewerProps> = forwardRef((props, ref) => {
|
||||
});
|
||||
};
|
||||
|
||||
const handleOnScroll = useCallback(
|
||||
const handleOnScroll = useMemoizedFn(
|
||||
async (data: { isTop: boolean; isBottom: boolean }) => {
|
||||
const { isTop, isBottom } = data;
|
||||
setIsAtTop(isTop);
|
||||
@@ -225,17 +226,7 @@ const LogsViewer: React.FC<LogsViewerProps> = forwardRef((props, ref) => {
|
||||
} else if (isBottom && page < totalPage) {
|
||||
// getNextPage();
|
||||
}
|
||||
},
|
||||
[
|
||||
loading,
|
||||
logs.length,
|
||||
pageSize,
|
||||
enableScorllLoad,
|
||||
page,
|
||||
totalPage,
|
||||
setScrollPos,
|
||||
createChunkConnection
|
||||
]
|
||||
}
|
||||
);
|
||||
|
||||
const debouncedScroll = useCallback(
|
||||
|
||||
@@ -2,52 +2,68 @@ import IconFont from '@/components/icon-font';
|
||||
import type { SelectProps } from 'antd';
|
||||
import { Select } from 'antd';
|
||||
import React, { forwardRef, useImperativeHandle } from 'react';
|
||||
import styled from 'styled-components';
|
||||
import NotFoundContent from '../components/not-found-content';
|
||||
|
||||
const BaseSelect: React.FC<SelectProps & { ref?: any }> = forwardRef(
|
||||
(props, ref) => {
|
||||
const { notFoundContent, loading, ...restProps } = props;
|
||||
const [isFocus, setIsFocus] = React.useState(false);
|
||||
const inputRef = React.useRef<any>(null);
|
||||
const Footer = styled.div`
|
||||
color: var(--ant-color-text-tertiary);
|
||||
margin-top: 8px;
|
||||
margin-bottom: 0;
|
||||
padding: 8px 12px;
|
||||
border-top: 1px solid var(--ant-color-split);
|
||||
`;
|
||||
|
||||
useImperativeHandle(ref, () => ({
|
||||
...(inputRef.current || ({} as any))
|
||||
}));
|
||||
const BaseSelect: React.FC<
|
||||
SelectProps & { ref?: any; footer?: React.ReactNode }
|
||||
> = forwardRef((props, ref) => {
|
||||
const { notFoundContent, loading, ...restProps } = props;
|
||||
const [isFocus, setIsFocus] = React.useState(false);
|
||||
const inputRef = React.useRef<any>(null);
|
||||
|
||||
const handleFocus = (e: React.FocusEvent<HTMLDivElement>) => {
|
||||
setIsFocus(true);
|
||||
props.onFocus?.(e);
|
||||
};
|
||||
const handleBlur = (e: React.FocusEvent<HTMLDivElement>) => {
|
||||
setIsFocus(false);
|
||||
props.onBlur?.(e);
|
||||
};
|
||||
const renderSuffixIcon = () => {
|
||||
if (props.suffixIcon) {
|
||||
return props.suffixIcon;
|
||||
useImperativeHandle(ref, () => ({
|
||||
...(inputRef.current || ({} as any))
|
||||
}));
|
||||
|
||||
const handleFocus = (e: React.FocusEvent<HTMLDivElement>) => {
|
||||
setIsFocus(true);
|
||||
props.onFocus?.(e);
|
||||
};
|
||||
const handleBlur = (e: React.FocusEvent<HTMLDivElement>) => {
|
||||
setIsFocus(false);
|
||||
props.onBlur?.(e);
|
||||
};
|
||||
const renderSuffixIcon = () => {
|
||||
if (props.suffixIcon) {
|
||||
return props.suffixIcon;
|
||||
}
|
||||
if (!props.showSearch) {
|
||||
return <IconFont type="icon-down"></IconFont>;
|
||||
}
|
||||
return !isFocus ? <IconFont type="icon-down"></IconFont> : undefined;
|
||||
};
|
||||
|
||||
return (
|
||||
<Select
|
||||
{...restProps}
|
||||
notFoundContent={
|
||||
<NotFoundContent loading={loading} notFoundContent={notFoundContent} />
|
||||
}
|
||||
if (!props.showSearch) {
|
||||
return <IconFont type="icon-down"></IconFont>;
|
||||
ref={inputRef}
|
||||
onFocus={handleFocus}
|
||||
onBlur={handleBlur}
|
||||
suffixIcon={renderSuffixIcon()}
|
||||
popupRender={
|
||||
props.footer
|
||||
? (originNode) => (
|
||||
<>
|
||||
{originNode}
|
||||
{props.footer && <Footer>{props.footer}</Footer>}
|
||||
</>
|
||||
)
|
||||
: undefined
|
||||
}
|
||||
return !isFocus ? <IconFont type="icon-down"></IconFont> : undefined;
|
||||
};
|
||||
|
||||
return (
|
||||
<Select
|
||||
{...restProps}
|
||||
notFoundContent={
|
||||
<NotFoundContent
|
||||
loading={loading}
|
||||
notFoundContent={notFoundContent}
|
||||
/>
|
||||
}
|
||||
ref={inputRef}
|
||||
onFocus={handleFocus}
|
||||
onBlur={handleBlur}
|
||||
suffixIcon={renderSuffixIcon()}
|
||||
/>
|
||||
);
|
||||
}
|
||||
);
|
||||
/>
|
||||
);
|
||||
});
|
||||
|
||||
export default BaseSelect;
|
||||
|
||||
@@ -10,7 +10,9 @@ import { SealFormItemProps } from './types';
|
||||
import Wrapper from './wrapper';
|
||||
import SelectWrapper from './wrapper/select';
|
||||
|
||||
const SealSelect: React.FC<SelectProps & SealFormItemProps> = (props) => {
|
||||
const SealSelect: React.FC<
|
||||
SelectProps & SealFormItemProps & { footer?: React.ReactNode }
|
||||
> = (props) => {
|
||||
const {
|
||||
label,
|
||||
placeholder,
|
||||
|
||||
Reference in New Issue
Block a user