diff --git a/frontend/src/components/Graph/Plugin/Legend.ts b/frontend/src/components/Graph/Plugin/Legend.ts index 2f03db40ac..b8ec2facf9 100644 --- a/frontend/src/components/Graph/Plugin/Legend.ts +++ b/frontend/src/components/Graph/Plugin/Legend.ts @@ -1,5 +1,6 @@ import { Chart, ChartType, Plugin } from 'chart.js'; import { colors } from 'lib/getRandomColor'; +import { get } from 'lodash-es'; const getOrCreateLegendList = ( chart: Chart, @@ -40,9 +41,20 @@ export const legend = (id: string, isLonger: boolean): Plugin => { } // Reuse the built-in legendItems generator - const items = chart?.options?.plugins?.legend?.labels?.generateLabels(chart); + const items = get(chart, [ + 'options', + 'plugins', + 'legend', + 'labels', + 'generateLabels', + ]) + ? get(chart, ['options', 'plugins', 'legend', 'labels', 'generateLabels'])( + chart, + ) + : null; - items?.forEach((item, index) => { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + items?.forEach((item: Record, index: number) => { const li = document.createElement('li'); li.style.alignItems = 'center'; li.style.cursor = 'pointer'; @@ -66,8 +78,8 @@ export const legend = (id: string, isLonger: boolean): Plugin => { // Color box const boxSpan = document.createElement('span'); - boxSpan.style.background = item.strokeStyle || colors[0]; - boxSpan.style.borderColor = item?.strokeStyle; + boxSpan.style.background = `${item.strokeStyle}` || `${colors[0]}`; + boxSpan.style.borderColor = `${item?.strokeStyle}`; boxSpan.style.borderWidth = `${item.lineWidth}px`; boxSpan.style.display = 'inline-block'; boxSpan.style.minHeight = '20px'; diff --git a/frontend/src/components/Styled/index.ts b/frontend/src/components/Styled/index.ts index 317a0f660e..ffa3fbccc0 100644 --- a/frontend/src/components/Styled/index.ts +++ b/frontend/src/components/Styled/index.ts @@ -6,8 +6,8 @@ import styled, { FlattenSimpleInterpolation } from 'styled-components'; import { IStyledClass } from './types'; -const styledClass = (props: IStyledClass): FlattenSimpleInterpolation => - props.styledclass; +const styledClass = (props: IStyledClass): FlattenSimpleInterpolation | null => + props.styledclass || null; type TStyledCol = AntD.ColProps & IStyledClass; const StyledCol = styled(AntD.Col)` diff --git a/frontend/src/components/Styled/styles.ts b/frontend/src/components/Styled/styles.ts index 8425beae07..9ff0b54146 100644 --- a/frontend/src/components/Styled/styles.ts +++ b/frontend/src/components/Styled/styles.ts @@ -1,6 +1,7 @@ import { css, FlattenSimpleInterpolation } from 'styled-components'; -const cssProprty = (key: string, value): FlattenSimpleInterpolation => +// eslint-disable-next-line @typescript-eslint/no-explicit-any +const cssProperty = (key: any, value: any): FlattenSimpleInterpolation => key && value && css` @@ -15,8 +16,8 @@ export const Flex = ({ flexDirection, flex, }: IFlexProps): FlattenSimpleInterpolation => css` - ${cssProprty('flex-direction', flexDirection)} - ${cssProprty('flex', flex)} + ${cssProperty('flex-direction', flexDirection)} + ${cssProperty('flex', flex)} `; interface IDisplayProps { @@ -25,7 +26,7 @@ interface IDisplayProps { export const Display = ({ display, }: IDisplayProps): FlattenSimpleInterpolation => css` - ${cssProprty('display', display)} + ${cssProperty('display', display)} `; interface ISpacingProps { @@ -36,6 +37,6 @@ export const Spacing = ({ margin, padding, }: ISpacingProps): FlattenSimpleInterpolation => css` - ${cssProprty('margin', margin)} - ${cssProprty('padding', padding)} + ${cssProperty('margin', margin)} + ${cssProperty('padding', padding)} `; diff --git a/frontend/src/components/Styled/types.ts b/frontend/src/components/Styled/types.ts index 4a02884334..fb829fb394 100644 --- a/frontend/src/components/Styled/types.ts +++ b/frontend/src/components/Styled/types.ts @@ -1,5 +1,5 @@ import { FlattenSimpleInterpolation } from 'styled-components'; export interface IStyledClass { - styledclass: FlattenSimpleInterpolation[]; + styledclass?: FlattenSimpleInterpolation[]; } diff --git a/frontend/src/container/AllAlertChannels/Delete.tsx b/frontend/src/container/AllAlertChannels/Delete.tsx index 6f767d8bd1..4501c916c8 100644 --- a/frontend/src/container/AllAlertChannels/Delete.tsx +++ b/frontend/src/container/AllAlertChannels/Delete.tsx @@ -30,7 +30,7 @@ function Delete({ notifications, setChannels, id }: DeleteProps): JSX.Element { } catch (error) { notifications.error({ message: 'Error', - description: error.toString() || 'Something went wrong', + description: error instanceof Error ? error.toString() : 'Something went wrong', }); setLoading(false); } diff --git a/frontend/src/container/GridGraphLayout/Graph/FullView/EmptyGraph.tsx b/frontend/src/container/GridGraphLayout/Graph/FullView/EmptyGraph.tsx index de4d563acb..c284d83b7c 100644 --- a/frontend/src/container/GridGraphLayout/Graph/FullView/EmptyGraph.tsx +++ b/frontend/src/container/GridGraphLayout/Graph/FullView/EmptyGraph.tsx @@ -60,6 +60,7 @@ function EmptyGraph({ return ( void; + onSelect: React.Dispatch>; fieldLabel: string; }): JSX.Element { const onSelectHandler = (selectedValue: string): void => { - onSelect(findCategoryByName(selectedValue)?.id); + onSelect(findCategoryByName(selectedValue)?.id || ''); }; const options = flattenedCategories.map((options) => ({ value: options.name, diff --git a/frontend/src/container/Timeline/index.tsx b/frontend/src/container/Timeline/index.tsx index a8a12927bb..1ecea1f59f 100644 --- a/frontend/src/container/Timeline/index.tsx +++ b/frontend/src/container/Timeline/index.tsx @@ -1,4 +1,5 @@ import { StyledDiv } from 'components/Styled'; +import { ITraceMetaData } from 'container/GantChart'; import { IIntervalUnit, INTERVAL_UNITS } from 'container/TraceDetail/utils'; import useThemeMode from 'hooks/useThemeMode'; import React, { useEffect, useRef, useState } from 'react'; @@ -74,10 +75,9 @@ function Timeline({ {intervals && intervals.map((interval, index) => ( @@ -104,7 +104,7 @@ interface TimelineProps { totalSpans: number; levels: number; }; - globalTraceMetadata: Record; + globalTraceMetadata: ITraceMetaData; setIntervalUnit: React.Dispatch>; } diff --git a/frontend/src/container/Timeline/utils.ts b/frontend/src/container/Timeline/utils.ts index 60bec06331..1f4367c88e 100644 --- a/frontend/src/container/Timeline/utils.ts +++ b/frontend/src/container/Timeline/utils.ts @@ -1,3 +1,4 @@ +import { ITraceMetaData } from 'container/GantChart'; import { IIntervalUnit, resolveTimeFromInterval, @@ -7,14 +8,12 @@ import { toFixed } from 'utils/toFixed'; import { Interval } from './types'; -type TMetaDataType = Record; - export const getIntervalSpread = ({ localTraceMetaData, globalTraceMetadata, }: { - localTraceMetaData: TMetaDataType; - globalTraceMetadata: TMetaDataType; + localTraceMetaData: ITraceMetaData; + globalTraceMetadata: ITraceMetaData; }): { baseInterval: number; baseSpread: number; diff --git a/frontend/src/container/TraceDetail/index.tsx b/frontend/src/container/TraceDetail/index.tsx index 3207feee73..489eaa4f26 100644 --- a/frontend/src/container/TraceDetail/index.tsx +++ b/frontend/src/container/TraceDetail/index.tsx @@ -9,7 +9,7 @@ import { StyledTypography, } from 'components/Styled'; import * as StyledStyles from 'components/Styled/styles'; -import GanttChart from 'container/GantChart'; +import GanttChart, { ITraceMetaData } from 'container/GantChart'; import { getNodeById } from 'container/GantChart/utils'; import Timeline from 'container/Timeline'; import TraceFlameGraph from 'container/TraceFlameGraph'; @@ -55,7 +55,7 @@ function TraceDetail({ response }: TraceDetailProps): JSX.Element { /* eslint-enable */ }, [treeData, spanServiceColors]); - const [globalTraceMetadata] = useState>({ + const [globalTraceMetadata] = useState({ ...traceMetaData, }); @@ -129,7 +129,6 @@ function TraceDetail({ response }: TraceDetailProps): JSX.Element { diff --git a/frontend/src/container/TraceFlameGraph/index.tsx b/frontend/src/container/TraceFlameGraph/index.tsx index 6490a4c435..08a998fe77 100644 --- a/frontend/src/container/TraceFlameGraph/index.tsx +++ b/frontend/src/container/TraceFlameGraph/index.tsx @@ -173,6 +173,8 @@ function TraceFlameGraph(props: { onSpanSelect={onSpanSelect} hoveredSpanId={hoveredSpanId} selectedSpanId={selectedSpanId} + level={0} + parentLeftOffset={0} /> ); diff --git a/frontend/src/store/actions/dashboard/deleteDashboard.ts b/frontend/src/store/actions/dashboard/deleteDashboard.ts index 100970eeec..29115f395b 100644 --- a/frontend/src/store/actions/dashboard/deleteDashboard.ts +++ b/frontend/src/store/actions/dashboard/deleteDashboard.ts @@ -31,7 +31,8 @@ export const DeleteDashboard = ({ dispatch({ type: 'DELETE_DASHBOARD_ERROR', payload: { - errorMessage: error.toString() || 'Something went wrong', + errorMessage: + error instanceof Error ? error.toString() : 'Something went wrong', }, }); } diff --git a/frontend/src/store/actions/dashboard/getDashboard.ts b/frontend/src/store/actions/dashboard/getDashboard.ts index b219e3978d..917365049e 100644 --- a/frontend/src/store/actions/dashboard/getDashboard.ts +++ b/frontend/src/store/actions/dashboard/getDashboard.ts @@ -64,7 +64,8 @@ export const GetDashboard = ({ dispatch({ type: 'GET_DASHBOARD_ERROR', payload: { - errorMessage: error.toString() || 'Something went wrong', + errorMessage: + error instanceof Error ? error.toString() : 'Something went wrong', }, }); } diff --git a/frontend/src/store/actions/dashboard/updateDashboardTitle.ts b/frontend/src/store/actions/dashboard/updateDashboardTitle.ts index e60e01d345..dc1b24fb96 100644 --- a/frontend/src/store/actions/dashboard/updateDashboardTitle.ts +++ b/frontend/src/store/actions/dashboard/updateDashboardTitle.ts @@ -42,7 +42,8 @@ export const UpdateDashboardTitleDescriptionTags = ({ dispatch({ type: 'UPDATE_TITLE_DESCRIPTION_TAGS_ERROR', payload: { - errorMessage: error.toString() || 'Something went wrong', + errorMessage: + error instanceof Error ? error.toString() : 'Something went wrong', }, }); } diff --git a/frontend/src/typings/chartjs-adapter-date-fns.ts b/frontend/src/typings/chartjs-adapter-date-fns.d.ts similarity index 100% rename from frontend/src/typings/chartjs-adapter-date-fns.ts rename to frontend/src/typings/chartjs-adapter-date-fns.d.ts diff --git a/frontend/src/typings/d3-tip.ts b/frontend/src/typings/d3-tip.d.ts similarity index 100% rename from frontend/src/typings/d3-tip.ts rename to frontend/src/typings/d3-tip.d.ts diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json index 3ff85194f8..3c56b8f9d8 100644 --- a/frontend/tsconfig.json +++ b/frontend/tsconfig.json @@ -19,7 +19,8 @@ "noEmit": true, "baseUrl": "./src", "downlevelIteration": true, - "plugins": [{ "name": "typescript-plugin-css-modules" }] + "plugins": [{ "name": "typescript-plugin-css-modules" }], + "suppressImplicitAnyIndexErrors": true }, "exclude": ["node_modules"], "include": ["./src"]