mirror of
https://git.mirrors.martin98.com/https://github.com/SigNoz/signoz
synced 2025-08-13 19:25:54 +08:00
chore: add event on span row click (#7406)
This commit is contained in:
parent
1dfebed93a
commit
88aa29e94c
@ -1,7 +1,9 @@
|
|||||||
import './HostMetricTraces.styles.scss';
|
import './HostMetricTraces.styles.scss';
|
||||||
|
|
||||||
|
import logEvent from 'api/common/logEvent';
|
||||||
import { ResizeTable } from 'components/ResizeTable';
|
import { ResizeTable } from 'components/ResizeTable';
|
||||||
import { DEFAULT_ENTITY_VERSION } from 'constants/app';
|
import { DEFAULT_ENTITY_VERSION } from 'constants/app';
|
||||||
|
import { InfraMonitoringEvents } from 'constants/events';
|
||||||
import { QueryParams } from 'constants/query';
|
import { QueryParams } from 'constants/query';
|
||||||
import EmptyLogsSearch from 'container/EmptyLogsSearch/EmptyLogsSearch';
|
import EmptyLogsSearch from 'container/EmptyLogsSearch/EmptyLogsSearch';
|
||||||
import NoLogs from 'container/NoLogs/NoLogs';
|
import NoLogs from 'container/NoLogs/NoLogs';
|
||||||
@ -19,7 +21,7 @@ import { useQueryBuilder } from 'hooks/queryBuilder/useQueryBuilder';
|
|||||||
import { Pagination } from 'hooks/queryPagination';
|
import { Pagination } from 'hooks/queryPagination';
|
||||||
import useUrlQueryData from 'hooks/useUrlQueryData';
|
import useUrlQueryData from 'hooks/useUrlQueryData';
|
||||||
import { GetMetricQueryRange } from 'lib/dashboard/getQueryResults';
|
import { GetMetricQueryRange } from 'lib/dashboard/getQueryResults';
|
||||||
import { useEffect, useMemo, useState } from 'react';
|
import { useCallback, useEffect, useMemo, useState } from 'react';
|
||||||
import { useQuery } from 'react-query';
|
import { useQuery } from 'react-query';
|
||||||
import { IBuilderQuery } from 'types/api/queryBuilder/queryBuilderData';
|
import { IBuilderQuery } from 'types/api/queryBuilder/queryBuilderData';
|
||||||
import { DataSource } from 'types/common/queryBuilder';
|
import { DataSource } from 'types/common/queryBuilder';
|
||||||
@ -137,6 +139,13 @@ function HostMetricTraces({
|
|||||||
const totalCount =
|
const totalCount =
|
||||||
data?.payload?.data?.newResult?.data?.result?.[0]?.list?.length || 0;
|
data?.payload?.data?.newResult?.data?.result?.[0]?.list?.length || 0;
|
||||||
|
|
||||||
|
const handleRowClick = useCallback(() => {
|
||||||
|
logEvent(InfraMonitoringEvents.ItemClicked, {
|
||||||
|
entity: InfraMonitoringEvents.HostEntity,
|
||||||
|
view: InfraMonitoringEvents.TracesView,
|
||||||
|
});
|
||||||
|
}, []);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="host-metric-traces">
|
<div className="host-metric-traces">
|
||||||
<div className="host-metric-traces-header">
|
<div className="host-metric-traces-header">
|
||||||
@ -189,6 +198,9 @@ function HostMetricTraces({
|
|||||||
loading={isFetching}
|
loading={isFetching}
|
||||||
dataSource={traces}
|
dataSource={traces}
|
||||||
columns={traceListColumns}
|
columns={traceListColumns}
|
||||||
|
onRow={(): Record<string, unknown> => ({
|
||||||
|
onClick: (): void => handleRowClick(),
|
||||||
|
})}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
@ -149,6 +149,10 @@ function HostMetricsDetails({
|
|||||||
|
|
||||||
const handleTabChange = (e: RadioChangeEvent): void => {
|
const handleTabChange = (e: RadioChangeEvent): void => {
|
||||||
setSelectedView(e.target.value);
|
setSelectedView(e.target.value);
|
||||||
|
logEvent(InfraMonitoringEvents.TabChanged, {
|
||||||
|
entity: InfraMonitoringEvents.HostEntity,
|
||||||
|
view: e.target.value,
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleTimeChange = useCallback(
|
const handleTimeChange = useCallback(
|
||||||
|
@ -561,6 +561,7 @@ function ClusterDetails({
|
|||||||
tracesFilters={logsAndTracesFilters}
|
tracesFilters={logsAndTracesFilters}
|
||||||
selectedInterval={selectedInterval}
|
selectedInterval={selectedInterval}
|
||||||
queryKey="clusterTraces"
|
queryKey="clusterTraces"
|
||||||
|
category={InfraMonitoringEvents.Cluster}
|
||||||
queryKeyFilters={[QUERY_KEYS.K8S_CLUSTER_NAME]}
|
queryKeyFilters={[QUERY_KEYS.K8S_CLUSTER_NAME]}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
|
@ -590,6 +590,7 @@ function DaemonSetDetails({
|
|||||||
tracesFilters={logAndTracesFilters}
|
tracesFilters={logAndTracesFilters}
|
||||||
selectedInterval={selectedInterval}
|
selectedInterval={selectedInterval}
|
||||||
queryKey="daemonsetTraces"
|
queryKey="daemonsetTraces"
|
||||||
|
category={InfraMonitoringEvents.DaemonSet}
|
||||||
queryKeyFilters={[
|
queryKeyFilters={[
|
||||||
QUERY_KEYS.K8S_DAEMON_SET_NAME,
|
QUERY_KEYS.K8S_DAEMON_SET_NAME,
|
||||||
QUERY_KEYS.K8S_NAMESPACE_NAME,
|
QUERY_KEYS.K8S_NAMESPACE_NAME,
|
||||||
|
@ -598,6 +598,7 @@ function DeploymentDetails({
|
|||||||
tracesFilters={logAndTracesFilters}
|
tracesFilters={logAndTracesFilters}
|
||||||
selectedInterval={selectedInterval}
|
selectedInterval={selectedInterval}
|
||||||
queryKey="deploymentTraces"
|
queryKey="deploymentTraces"
|
||||||
|
category={InfraMonitoringEvents.Deployment}
|
||||||
queryKeyFilters={[
|
queryKeyFilters={[
|
||||||
QUERY_KEYS.K8S_DEPLOYMENT_NAME,
|
QUERY_KEYS.K8S_DEPLOYMENT_NAME,
|
||||||
QUERY_KEYS.K8S_NAMESPACE_NAME,
|
QUERY_KEYS.K8S_NAMESPACE_NAME,
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
import './entityTraces.styles.scss';
|
import './entityTraces.styles.scss';
|
||||||
|
|
||||||
|
import logEvent from 'api/common/logEvent';
|
||||||
import { getListColumns } from 'components/HostMetricsDetail/HostMetricTraces/utils';
|
import { getListColumns } from 'components/HostMetricsDetail/HostMetricTraces/utils';
|
||||||
import { ResizeTable } from 'components/ResizeTable';
|
import { ResizeTable } from 'components/ResizeTable';
|
||||||
import { DEFAULT_ENTITY_VERSION } from 'constants/app';
|
import { DEFAULT_ENTITY_VERSION } from 'constants/app';
|
||||||
|
import { InfraMonitoringEvents } from 'constants/events';
|
||||||
import { QueryParams } from 'constants/query';
|
import { QueryParams } from 'constants/query';
|
||||||
import EmptyLogsSearch from 'container/EmptyLogsSearch/EmptyLogsSearch';
|
import EmptyLogsSearch from 'container/EmptyLogsSearch/EmptyLogsSearch';
|
||||||
import NoLogs from 'container/NoLogs/NoLogs';
|
import NoLogs from 'container/NoLogs/NoLogs';
|
||||||
@ -20,7 +22,7 @@ import { useQueryBuilder } from 'hooks/queryBuilder/useQueryBuilder';
|
|||||||
import { Pagination } from 'hooks/queryPagination';
|
import { Pagination } from 'hooks/queryPagination';
|
||||||
import useUrlQueryData from 'hooks/useUrlQueryData';
|
import useUrlQueryData from 'hooks/useUrlQueryData';
|
||||||
import { GetMetricQueryRange } from 'lib/dashboard/getQueryResults';
|
import { GetMetricQueryRange } from 'lib/dashboard/getQueryResults';
|
||||||
import { useEffect, useMemo, useState } from 'react';
|
import { useCallback, useEffect, useMemo, useState } from 'react';
|
||||||
import { useQuery } from 'react-query';
|
import { useQuery } from 'react-query';
|
||||||
import { IBuilderQuery } from 'types/api/queryBuilder/queryBuilderData';
|
import { IBuilderQuery } from 'types/api/queryBuilder/queryBuilderData';
|
||||||
import { DataSource } from 'types/common/queryBuilder';
|
import { DataSource } from 'types/common/queryBuilder';
|
||||||
@ -45,6 +47,7 @@ interface Props {
|
|||||||
tracesFilters: IBuilderQuery['filters'];
|
tracesFilters: IBuilderQuery['filters'];
|
||||||
selectedInterval: Time;
|
selectedInterval: Time;
|
||||||
queryKey: string;
|
queryKey: string;
|
||||||
|
category: string;
|
||||||
queryKeyFilters: string[];
|
queryKeyFilters: string[];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -56,6 +59,7 @@ function EntityTraces({
|
|||||||
tracesFilters,
|
tracesFilters,
|
||||||
selectedInterval,
|
selectedInterval,
|
||||||
queryKey,
|
queryKey,
|
||||||
|
category,
|
||||||
queryKeyFilters,
|
queryKeyFilters,
|
||||||
}: Props): JSX.Element {
|
}: Props): JSX.Element {
|
||||||
const [traces, setTraces] = useState<any[]>([]);
|
const [traces, setTraces] = useState<any[]>([]);
|
||||||
@ -145,6 +149,14 @@ function EntityTraces({
|
|||||||
const totalCount =
|
const totalCount =
|
||||||
data?.payload?.data?.newResult?.data?.result?.[0]?.list?.length || 0;
|
data?.payload?.data?.newResult?.data?.result?.[0]?.list?.length || 0;
|
||||||
|
|
||||||
|
const handleRowClick = useCallback(() => {
|
||||||
|
logEvent(InfraMonitoringEvents.ItemClicked, {
|
||||||
|
entity: InfraMonitoringEvents.K8sEntity,
|
||||||
|
category,
|
||||||
|
view: InfraMonitoringEvents.TracesView,
|
||||||
|
});
|
||||||
|
}, [category]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="entity-metric-traces">
|
<div className="entity-metric-traces">
|
||||||
<div className="entity-metric-traces-header">
|
<div className="entity-metric-traces-header">
|
||||||
@ -197,6 +209,9 @@ function EntityTraces({
|
|||||||
loading={isFetching}
|
loading={isFetching}
|
||||||
dataSource={traces}
|
dataSource={traces}
|
||||||
columns={traceListColumns}
|
columns={traceListColumns}
|
||||||
|
onRow={(): Record<string, unknown> => ({
|
||||||
|
onClick: (): void => handleRowClick(),
|
||||||
|
})}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
@ -575,6 +575,7 @@ function JobDetails({
|
|||||||
tracesFilters={logAndTracesFilters}
|
tracesFilters={logAndTracesFilters}
|
||||||
selectedInterval={selectedInterval}
|
selectedInterval={selectedInterval}
|
||||||
queryKey="jobTraces"
|
queryKey="jobTraces"
|
||||||
|
category={InfraMonitoringEvents.Job}
|
||||||
queryKeyFilters={[
|
queryKeyFilters={[
|
||||||
QUERY_KEYS.K8S_JOB_NAME,
|
QUERY_KEYS.K8S_JOB_NAME,
|
||||||
QUERY_KEYS.K8S_NAMESPACE_NAME,
|
QUERY_KEYS.K8S_NAMESPACE_NAME,
|
||||||
|
@ -563,6 +563,7 @@ function NamespaceDetails({
|
|||||||
tracesFilters={logAndTracesFilters}
|
tracesFilters={logAndTracesFilters}
|
||||||
selectedInterval={selectedInterval}
|
selectedInterval={selectedInterval}
|
||||||
queryKey="namespaceTraces"
|
queryKey="namespaceTraces"
|
||||||
|
category={InfraMonitoringEvents.Namespace}
|
||||||
queryKeyFilters={[QUERY_KEYS.K8S_NAMESPACE_NAME]}
|
queryKeyFilters={[QUERY_KEYS.K8S_NAMESPACE_NAME]}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
|
@ -564,6 +564,7 @@ function NodeDetails({
|
|||||||
selectedInterval={selectedInterval}
|
selectedInterval={selectedInterval}
|
||||||
queryKeyFilters={[QUERY_KEYS.K8S_NODE_NAME, QUERY_KEYS.K8S_CLUSTER_NAME]}
|
queryKeyFilters={[QUERY_KEYS.K8S_NODE_NAME, QUERY_KEYS.K8S_CLUSTER_NAME]}
|
||||||
queryKey="nodeTraces"
|
queryKey="nodeTraces"
|
||||||
|
category={InfraMonitoringEvents.Node}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
{selectedView === VIEW_TYPES.EVENTS && (
|
{selectedView === VIEW_TYPES.EVENTS && (
|
||||||
|
@ -605,6 +605,7 @@ function PodDetails({
|
|||||||
tracesFilters={logsAndTracesFilters}
|
tracesFilters={logsAndTracesFilters}
|
||||||
selectedInterval={selectedInterval}
|
selectedInterval={selectedInterval}
|
||||||
queryKey="podTraces"
|
queryKey="podTraces"
|
||||||
|
category={InfraMonitoringEvents.Pod}
|
||||||
queryKeyFilters={[
|
queryKeyFilters={[
|
||||||
QUERY_KEYS.K8S_POD_NAME,
|
QUERY_KEYS.K8S_POD_NAME,
|
||||||
QUERY_KEYS.K8S_CLUSTER_NAME,
|
QUERY_KEYS.K8S_CLUSTER_NAME,
|
||||||
|
@ -582,6 +582,7 @@ function StatefulSetDetails({
|
|||||||
tracesFilters={logAndTracesFilters}
|
tracesFilters={logAndTracesFilters}
|
||||||
selectedInterval={selectedInterval}
|
selectedInterval={selectedInterval}
|
||||||
queryKey="statefulsetTraces"
|
queryKey="statefulsetTraces"
|
||||||
|
category={InfraMonitoringEvents.StatefulSet}
|
||||||
queryKeyFilters={[
|
queryKeyFilters={[
|
||||||
QUERY_KEYS.K8S_STATEFUL_SET_NAME,
|
QUERY_KEYS.K8S_STATEFUL_SET_NAME,
|
||||||
QUERY_KEYS.K8S_NAMESPACE_NAME,
|
QUERY_KEYS.K8S_NAMESPACE_NAME,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user