|
@@ -30,6 +30,7 @@ import {CountCell} from 'sentry/views/starfish/components/tableCells/countCell';
|
|
|
import DurationCell from 'sentry/views/starfish/components/tableCells/durationCell';
|
|
|
import ThroughputCell from 'sentry/views/starfish/components/tableCells/throughputCell';
|
|
|
import {TimeSpentCell} from 'sentry/views/starfish/components/tableCells/timeSpentCell';
|
|
|
+import {useFullSpanDescription} from 'sentry/views/starfish/queries/useFullSpanDescription';
|
|
|
import {
|
|
|
SpanSummaryQueryFilters,
|
|
|
useSpanMetrics,
|
|
@@ -64,6 +65,8 @@ function SpanSummaryPage({params, location}: Props) {
|
|
|
const {groupId} = params;
|
|
|
const {transaction, transactionMethod, endpoint, endpointMethod} = location.query;
|
|
|
|
|
|
+ const {data: fullSpanDescription} = useFullSpanDescription(groupId);
|
|
|
+
|
|
|
const queryFilter: SpanSummaryQueryFilters = endpoint
|
|
|
? {transactionName: endpoint, 'transaction.method': endpointMethod}
|
|
|
: {};
|
|
@@ -235,69 +238,77 @@ function SpanSummaryPage({params, location}: Props) {
|
|
|
<DescriptionTitle>
|
|
|
{spanDescriptionCardTitle}
|
|
|
</DescriptionTitle>
|
|
|
- <SpanDescription span={span} />
|
|
|
+ <SpanDescription
|
|
|
+ span={{
|
|
|
+ ...span,
|
|
|
+ [SpanMetricsFields.SPAN_DESCRIPTION]:
|
|
|
+ fullSpanDescription ?? '',
|
|
|
+ }}
|
|
|
+ />
|
|
|
</DescriptionContainer>
|
|
|
</DescriptionPanelBody>
|
|
|
</Panel>
|
|
|
</Block>
|
|
|
+ </BlockContainer>
|
|
|
+ )}
|
|
|
|
|
|
- <Block>
|
|
|
- <ChartPanel
|
|
|
- title={getThroughputChartTitle(span?.[SpanMetricsFields.SPAN_OP])}
|
|
|
- >
|
|
|
- <Chart
|
|
|
- height={140}
|
|
|
- data={[spanMetricsThroughputSeries]}
|
|
|
- loading={areSpanMetricsSeriesLoading}
|
|
|
- utc={false}
|
|
|
- chartColors={[THROUGHPUT_COLOR]}
|
|
|
- isLineChart
|
|
|
- definedAxisTicks={4}
|
|
|
- aggregateOutputFormat="rate"
|
|
|
- rateUnit={RateUnits.PER_MINUTE}
|
|
|
- tooltipFormatterOptions={{
|
|
|
- valueFormatter: value =>
|
|
|
- formatRate(value, RateUnits.PER_MINUTE),
|
|
|
- }}
|
|
|
- />
|
|
|
- </ChartPanel>
|
|
|
- </Block>
|
|
|
+ <BlockContainer>
|
|
|
+ <Block>
|
|
|
+ <ChartPanel
|
|
|
+ title={getThroughputChartTitle(span?.[SpanMetricsFields.SPAN_OP])}
|
|
|
+ >
|
|
|
+ <Chart
|
|
|
+ height={140}
|
|
|
+ data={[spanMetricsThroughputSeries]}
|
|
|
+ loading={areSpanMetricsSeriesLoading}
|
|
|
+ utc={false}
|
|
|
+ chartColors={[THROUGHPUT_COLOR]}
|
|
|
+ isLineChart
|
|
|
+ definedAxisTicks={4}
|
|
|
+ aggregateOutputFormat="rate"
|
|
|
+ rateUnit={RateUnits.PER_MINUTE}
|
|
|
+ tooltipFormatterOptions={{
|
|
|
+ valueFormatter: value =>
|
|
|
+ formatRate(value, RateUnits.PER_MINUTE),
|
|
|
+ }}
|
|
|
+ />
|
|
|
+ </ChartPanel>
|
|
|
+ </Block>
|
|
|
+
|
|
|
+ <Block>
|
|
|
+ <ChartPanel title={DataTitles.avg}>
|
|
|
+ <Chart
|
|
|
+ height={140}
|
|
|
+ data={[
|
|
|
+ spanMetricsSeriesData?.[
|
|
|
+ `avg(${SpanMetricsFields.SPAN_SELF_TIME})`
|
|
|
+ ],
|
|
|
+ ]}
|
|
|
+ loading={areSpanMetricsSeriesLoading}
|
|
|
+ utc={false}
|
|
|
+ chartColors={[AVG_COLOR]}
|
|
|
+ isLineChart
|
|
|
+ definedAxisTicks={4}
|
|
|
+ />
|
|
|
+ </ChartPanel>
|
|
|
+ </Block>
|
|
|
|
|
|
+ {span?.[SpanMetricsFields.SPAN_OP]?.startsWith('http') && (
|
|
|
<Block>
|
|
|
- <ChartPanel title={DataTitles.avg}>
|
|
|
+ <ChartPanel title={DataTitles.errorCount}>
|
|
|
<Chart
|
|
|
height={140}
|
|
|
- data={[
|
|
|
- spanMetricsSeriesData?.[
|
|
|
- `avg(${SpanMetricsFields.SPAN_SELF_TIME})`
|
|
|
- ],
|
|
|
- ]}
|
|
|
+ data={[spanMetricsSeriesData?.[`http_error_count()`]]}
|
|
|
loading={areSpanMetricsSeriesLoading}
|
|
|
utc={false}
|
|
|
- chartColors={[AVG_COLOR]}
|
|
|
+ chartColors={[ERRORS_COLOR]}
|
|
|
isLineChart
|
|
|
definedAxisTicks={4}
|
|
|
/>
|
|
|
</ChartPanel>
|
|
|
</Block>
|
|
|
-
|
|
|
- {span?.[SpanMetricsFields.SPAN_OP]?.startsWith('http') && (
|
|
|
- <Block>
|
|
|
- <ChartPanel title={DataTitles.errorCount}>
|
|
|
- <Chart
|
|
|
- height={140}
|
|
|
- data={[spanMetricsSeriesData?.[`http_error_count()`]]}
|
|
|
- loading={areSpanMetricsSeriesLoading}
|
|
|
- utc={false}
|
|
|
- chartColors={[ERRORS_COLOR]}
|
|
|
- isLineChart
|
|
|
- definedAxisTicks={4}
|
|
|
- />
|
|
|
- </ChartPanel>
|
|
|
- </Block>
|
|
|
- )}
|
|
|
- </BlockContainer>
|
|
|
- )}
|
|
|
+ )}
|
|
|
+ </BlockContainer>
|
|
|
|
|
|
{span && (
|
|
|
<SpanTransactionsTable
|
|
@@ -339,14 +350,16 @@ type BlockProps = {
|
|
|
export function Block({title, description, children}: BlockProps) {
|
|
|
return (
|
|
|
<BlockWrapper>
|
|
|
- <BlockTitle>
|
|
|
- {title}
|
|
|
- {description && (
|
|
|
- <BlockTooltipContainer>
|
|
|
- <QuestionTooltip size="sm" position="right" title={description} />
|
|
|
- </BlockTooltipContainer>
|
|
|
- )}
|
|
|
- </BlockTitle>
|
|
|
+ {title && (
|
|
|
+ <BlockTitle>
|
|
|
+ {title}
|
|
|
+ {description && (
|
|
|
+ <BlockTooltipContainer>
|
|
|
+ <QuestionTooltip size="sm" position="right" title={description} />
|
|
|
+ </BlockTooltipContainer>
|
|
|
+ )}
|
|
|
+ </BlockTitle>
|
|
|
+ )}
|
|
|
<BlockContent>{children}</BlockContent>
|
|
|
</BlockWrapper>
|
|
|
);
|
|
@@ -388,7 +401,6 @@ const DescriptionContainer = styled('div')`
|
|
|
|
|
|
const DescriptionPanelBody = styled(PanelBody)`
|
|
|
padding: ${space(2)};
|
|
|
- height: 208px;
|
|
|
`;
|
|
|
|
|
|
const BlockWrapper = styled('div')`
|