mirror of
https://git.mirrors.martin98.com/https://github.com/SigNoz/signoz
synced 2025-08-15 01:15:54 +08:00
fix: the scroll issue and name issue in save view (#3604)
This commit is contained in:
parent
31b898b2c6
commit
5c437dd8f9
@ -30,6 +30,7 @@ import { useNotifications } from 'hooks/useNotifications';
|
|||||||
import { mapCompositeQueryFromQuery } from 'lib/newQueryBuilder/queryBuilderMappers/mapCompositeQueryFromQuery';
|
import { mapCompositeQueryFromQuery } from 'lib/newQueryBuilder/queryBuilderMappers/mapCompositeQueryFromQuery';
|
||||||
import { useState } from 'react';
|
import { useState } from 'react';
|
||||||
import { useCopyToClipboard } from 'react-use';
|
import { useCopyToClipboard } from 'react-use';
|
||||||
|
import { popupContainer } from 'utils/selectPopupContainer';
|
||||||
|
|
||||||
import { ExploreHeaderToolTip, SaveButtonText } from './constants';
|
import { ExploreHeaderToolTip, SaveButtonText } from './constants';
|
||||||
import MenuItemGenerator from './MenuItemGenerator';
|
import MenuItemGenerator from './MenuItemGenerator';
|
||||||
@ -170,6 +171,7 @@ function ExplorerCard({
|
|||||||
{viewsData?.data.data && viewsData?.data.data.length && (
|
{viewsData?.data.data && viewsData?.data.data.length && (
|
||||||
<Space>
|
<Space>
|
||||||
<Select
|
<Select
|
||||||
|
getPopupContainer={popupContainer}
|
||||||
loading={isLoading || isRefetching}
|
loading={isLoading || isRefetching}
|
||||||
showSearch
|
showSearch
|
||||||
placeholder="Select a view"
|
placeholder="Select a view"
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { DeleteOutlined } from '@ant-design/icons';
|
import { DeleteOutlined } from '@ant-design/icons';
|
||||||
import { Col, Row, Typography } from 'antd';
|
import { Col, Row, Tooltip, Typography } from 'antd';
|
||||||
import { useQueryBuilder } from 'hooks/queryBuilder/useQueryBuilder';
|
import { useQueryBuilder } from 'hooks/queryBuilder/useQueryBuilder';
|
||||||
import { useDeleteView } from 'hooks/saveViews/useDeleteView';
|
import { useDeleteView } from 'hooks/saveViews/useDeleteView';
|
||||||
import { useHandleExplorerTabChange } from 'hooks/useHandleExplorerTabChange';
|
import { useHandleExplorerTabChange } from 'hooks/useHandleExplorerTabChange';
|
||||||
@ -8,7 +8,11 @@ import { MouseEvent, useCallback } from 'react';
|
|||||||
|
|
||||||
import { MenuItemContainer } from './styles';
|
import { MenuItemContainer } from './styles';
|
||||||
import { MenuItemLabelGeneratorProps } from './types';
|
import { MenuItemLabelGeneratorProps } from './types';
|
||||||
import { deleteViewHandler, getViewDetailsUsingViewKey } from './utils';
|
import {
|
||||||
|
deleteViewHandler,
|
||||||
|
getViewDetailsUsingViewKey,
|
||||||
|
trimViewName,
|
||||||
|
} from './utils';
|
||||||
|
|
||||||
function MenuItemGenerator({
|
function MenuItemGenerator({
|
||||||
viewName,
|
viewName,
|
||||||
@ -71,12 +75,16 @@ function MenuItemGenerator({
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const newViewName = trimViewName(viewName);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<MenuItemContainer onClick={onLabelClickHandler}>
|
<MenuItemContainer onClick={onLabelClickHandler}>
|
||||||
<Row justify="space-between">
|
<Row justify="space-between">
|
||||||
<Col span={22}>
|
<Col span={22}>
|
||||||
<Row>
|
<Row>
|
||||||
<Typography.Text strong>{viewName}</Typography.Text>
|
<Tooltip title={viewName}>
|
||||||
|
<Typography.Text strong>{newViewName}</Typography.Text>
|
||||||
|
</Tooltip>
|
||||||
</Row>
|
</Row>
|
||||||
<Row>
|
<Row>
|
||||||
<Typography.Text type="secondary">Created by {createdBy}</Typography.Text>
|
<Typography.Text type="secondary">Created by {createdBy}</Typography.Text>
|
||||||
|
@ -174,3 +174,10 @@ export const deleteViewHandler = ({
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const trimViewName = (viewName: string): string => {
|
||||||
|
if (viewName.length > 20) {
|
||||||
|
return `${viewName.substring(0, 20)}...`;
|
||||||
|
}
|
||||||
|
return viewName;
|
||||||
|
};
|
||||||
|
@ -22,6 +22,7 @@ import {
|
|||||||
} from 'types/api/queryBuilder/queryAutocompleteResponse';
|
} from 'types/api/queryBuilder/queryAutocompleteResponse';
|
||||||
import { DataSource } from 'types/common/queryBuilder';
|
import { DataSource } from 'types/common/queryBuilder';
|
||||||
import { ExtendedSelectOption } from 'types/common/select';
|
import { ExtendedSelectOption } from 'types/common/select';
|
||||||
|
import { popupContainer } from 'utils/selectPopupContainer';
|
||||||
import { transformToUpperCase } from 'utils/transformToUpperCase';
|
import { transformToUpperCase } from 'utils/transformToUpperCase';
|
||||||
|
|
||||||
import { selectStyle } from '../QueryBuilderSearch/config';
|
import { selectStyle } from '../QueryBuilderSearch/config';
|
||||||
@ -172,6 +173,7 @@ export const AggregatorFilter = memo(function AggregatorFilter({
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<AutoComplete
|
<AutoComplete
|
||||||
|
getPopupContainer={popupContainer}
|
||||||
placeholder={placeholder}
|
placeholder={placeholder}
|
||||||
style={selectStyle}
|
style={selectStyle}
|
||||||
showArrow={false}
|
showArrow={false}
|
||||||
|
@ -18,6 +18,7 @@ import { memo, useCallback, useEffect, useState } from 'react';
|
|||||||
import { useQueryClient } from 'react-query';
|
import { useQueryClient } from 'react-query';
|
||||||
import { BaseAutocompleteData } from 'types/api/queryBuilder/queryAutocompleteResponse';
|
import { BaseAutocompleteData } from 'types/api/queryBuilder/queryAutocompleteResponse';
|
||||||
import { SelectOption } from 'types/common/select';
|
import { SelectOption } from 'types/common/select';
|
||||||
|
import { popupContainer } from 'utils/selectPopupContainer';
|
||||||
|
|
||||||
import { selectStyle } from '../QueryBuilderSearch/config';
|
import { selectStyle } from '../QueryBuilderSearch/config';
|
||||||
import { GroupByFilterProps } from './GroupByFilter.interfaces';
|
import { GroupByFilterProps } from './GroupByFilter.interfaces';
|
||||||
@ -169,6 +170,7 @@ export const GroupByFilter = memo(function GroupByFilter({
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<Select
|
<Select
|
||||||
|
getPopupContainer={popupContainer}
|
||||||
mode="tags"
|
mode="tags"
|
||||||
style={selectStyle}
|
style={selectStyle}
|
||||||
onSearch={handleSearchKeys}
|
onSearch={handleSearchKeys}
|
||||||
|
@ -16,6 +16,7 @@ import { useCallback, useEffect, useMemo, useState } from 'react';
|
|||||||
import { Having, HavingForm } from 'types/api/queryBuilder/queryBuilderData';
|
import { Having, HavingForm } from 'types/api/queryBuilder/queryBuilderData';
|
||||||
import { DataSource } from 'types/common/queryBuilder';
|
import { DataSource } from 'types/common/queryBuilder';
|
||||||
import { SelectOption } from 'types/common/select';
|
import { SelectOption } from 'types/common/select';
|
||||||
|
import { popupContainer } from 'utils/selectPopupContainer';
|
||||||
|
|
||||||
// ** Types
|
// ** Types
|
||||||
import { HavingFilterProps } from './HavingFilter.interfaces';
|
import { HavingFilterProps } from './HavingFilter.interfaces';
|
||||||
@ -224,6 +225,7 @@ export function HavingFilter({
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<Select
|
<Select
|
||||||
|
getPopupContainer={popupContainer}
|
||||||
autoClearSearchValue={false}
|
autoClearSearchValue={false}
|
||||||
mode="multiple"
|
mode="multiple"
|
||||||
onSearch={handleSearch}
|
onSearch={handleSearch}
|
||||||
|
@ -2,6 +2,7 @@ import { Select, Spin } from 'antd';
|
|||||||
import { useGetAggregateKeys } from 'hooks/queryBuilder/useGetAggregateKeys';
|
import { useGetAggregateKeys } from 'hooks/queryBuilder/useGetAggregateKeys';
|
||||||
import { useMemo } from 'react';
|
import { useMemo } from 'react';
|
||||||
import { DataSource, MetricAggregateOperator } from 'types/common/queryBuilder';
|
import { DataSource, MetricAggregateOperator } from 'types/common/queryBuilder';
|
||||||
|
import { popupContainer } from 'utils/selectPopupContainer';
|
||||||
|
|
||||||
import { selectStyle } from '../QueryBuilderSearch/config';
|
import { selectStyle } from '../QueryBuilderSearch/config';
|
||||||
import { OrderByFilterProps } from './OrderByFilter.interfaces';
|
import { OrderByFilterProps } from './OrderByFilter.interfaces';
|
||||||
@ -66,6 +67,7 @@ export function OrderByFilter({
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<Select
|
<Select
|
||||||
|
getPopupContainer={popupContainer}
|
||||||
mode="tags"
|
mode="tags"
|
||||||
style={selectStyle}
|
style={selectStyle}
|
||||||
onSearch={handleSearchKeys}
|
onSearch={handleSearchKeys}
|
||||||
|
@ -23,6 +23,7 @@ import {
|
|||||||
TagFilter,
|
TagFilter,
|
||||||
} from 'types/api/queryBuilder/queryBuilderData';
|
} from 'types/api/queryBuilder/queryBuilderData';
|
||||||
import { DataSource } from 'types/common/queryBuilder';
|
import { DataSource } from 'types/common/queryBuilder';
|
||||||
|
import { popupContainer } from 'utils/selectPopupContainer';
|
||||||
import { v4 as uuid } from 'uuid';
|
import { v4 as uuid } from 'uuid';
|
||||||
|
|
||||||
import { selectStyle } from './config';
|
import { selectStyle } from './config';
|
||||||
@ -185,6 +186,7 @@ function QueryBuilderSearch({
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<Select
|
<Select
|
||||||
|
getPopupContainer={popupContainer}
|
||||||
virtual
|
virtual
|
||||||
showSearch
|
showSearch
|
||||||
tagRender={onTagRender}
|
tagRender={onTagRender}
|
||||||
|
1
frontend/src/utils/selectPopupContainer.ts
Normal file
1
frontend/src/utils/selectPopupContainer.ts
Normal file
@ -0,0 +1 @@
|
|||||||
|
export const popupContainer = (trigger: any): HTMLElement => trigger.parentNode;
|
Loading…
x
Reference in New Issue
Block a user