Skip to content

Commit e039f6b

Browse files
tausbnasgerf
authored andcommitted
Simplify view when not in comparison mode
1 parent 6d4427e commit e039f6b

File tree

3 files changed

+47
-23
lines changed

3 files changed

+47
-23
lines changed

extensions/ql-vscode/src/common/interface-types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -403,6 +403,7 @@ export interface SetPerformanceComparisonQueries {
403403
readonly t: "setPerformanceComparison";
404404
readonly from: PerformanceComparisonDataFromLog;
405405
readonly to: PerformanceComparisonDataFromLog;
406+
readonly comparison: boolean;
406407
}
407408

408409
export type FromComparePerformanceViewMessage = CommonFromViewMessages;

extensions/ql-vscode/src/compare-performance/compare-performance-view.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ export class ComparePerformanceView extends AbstractWebview<
6666
t: "setPerformanceComparison",
6767
from: fromPerf.getData(),
6868
to: toPerf.getData(),
69+
comparison: fromJsonLog !== "",
6970
});
7071
}
7172

extensions/ql-vscode/src/view/compare-performance/ComparePerformance.tsx

Lines changed: 45 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -216,14 +216,15 @@ const Dropdown = styled.select``;
216216
interface PipelineStepProps {
217217
before: number | undefined;
218218
after: number | undefined;
219+
comparison: boolean;
219220
step: React.ReactNode;
220221
}
221222

222223
/**
223224
* Row with details of a pipeline step, or one of the high-level stats appearing above the pipelines (evaluation/iteration counts).
224225
*/
225226
function PipelineStep(props: PipelineStepProps) {
226-
let { before, after, step } = props;
227+
let { before, after, comparison, step } = props;
227228
if (before != null && before < 0) {
228229
before = undefined;
229230
}
@@ -234,9 +235,11 @@ function PipelineStep(props: PipelineStepProps) {
234235
return (
235236
<PipelineStepTR>
236237
<ChevronCell />
237-
<NumberCell>{before != null ? formatDecimal(before) : ""}</NumberCell>
238+
{comparison && (
239+
<NumberCell>{before != null ? formatDecimal(before) : ""}</NumberCell>
240+
)}
238241
<NumberCell>{after != null ? formatDecimal(after) : ""}</NumberCell>
239-
{delta != null ? renderDelta(delta) : <td></td>}
242+
{comparison && (delta != null ? renderDelta(delta) : <td></td>)}
240243
<NameCell>{step}</NameCell>
241244
</PipelineStepTR>
242245
);
@@ -249,10 +252,11 @@ const HeaderTR = styled.tr`
249252
interface HighLevelStatsProps {
250253
before: PredicateInfo;
251254
after: PredicateInfo;
255+
comparison: boolean;
252256
}
253257

254258
function HighLevelStats(props: HighLevelStatsProps) {
255-
const { before, after } = props;
259+
const { before, after, comparison } = props;
256260
const hasBefore = before.absentReason !== AbsentReason.NotSeen;
257261
const hasAfter = after.absentReason !== AbsentReason.NotSeen;
258262
const showEvaluationCount =
@@ -261,21 +265,25 @@ function HighLevelStats(props: HighLevelStatsProps) {
261265
<>
262266
<HeaderTR>
263267
<ChevronCell></ChevronCell>
264-
<NumberHeader>{hasBefore ? "Before" : ""}</NumberHeader>
268+
{comparison && <NumberHeader>{hasBefore ? "Before" : ""}</NumberHeader>}
265269
<NumberHeader>{hasAfter ? "After" : ""}</NumberHeader>
266-
<NumberHeader>{hasBefore && hasAfter ? "Delta" : ""}</NumberHeader>
270+
{comparison && (
271+
<NumberHeader>{hasBefore && hasAfter ? "Delta" : ""}</NumberHeader>
272+
)}
267273
<NameHeader>Stats</NameHeader>
268274
</HeaderTR>
269275
{showEvaluationCount && (
270276
<PipelineStep
271277
before={before.evaluationCount || undefined}
272278
after={after.evaluationCount || undefined}
279+
comparison={comparison}
273280
step="Number of evaluations"
274281
/>
275282
)}
276283
<PipelineStep
277284
before={before.iterationCount / before.evaluationCount || undefined}
278285
after={after.iterationCount / after.evaluationCount || undefined}
286+
comparison={comparison}
279287
step={
280288
showEvaluationCount
281289
? "Number of iterations per evaluation"
@@ -377,6 +385,8 @@ function ComparePerformanceWithData(props: {
377385
[data],
378386
);
379387

388+
const comparison = data?.comparison;
389+
380390
const [expandedPredicates, setExpandedPredicates] = useState<Set<string>>(
381391
() => new Set<string>(),
382392
);
@@ -478,9 +488,9 @@ function ComparePerformanceWithData(props: {
478488
<thead>
479489
<HeaderTR>
480490
<ChevronCell />
481-
<NumberHeader>Before</NumberHeader>
482-
<NumberHeader>After</NumberHeader>
483-
<NumberHeader>Delta</NumberHeader>
491+
{comparison && <NumberHeader>Before</NumberHeader>}
492+
<NumberHeader>{comparison ? "After" : "Value"}</NumberHeader>
493+
{comparison && <NumberHeader>Delta</NumberHeader>}
484494
<NameHeader>Predicate</NameHeader>
485495
</HeaderTR>
486496
</thead>
@@ -503,33 +513,42 @@ function ComparePerformanceWithData(props: {
503513
<ChevronCell>
504514
<Chevron expanded={expandedPredicates.has(row.name)} />
505515
</ChevronCell>
506-
{renderAbsoluteValue(row.before, metric)}
516+
{comparison && renderAbsoluteValue(row.before, metric)}
507517
{renderAbsoluteValue(row.after, metric)}
508-
{renderDelta(row.diff, metric.unit)}
518+
{comparison && renderDelta(row.diff, metric.unit)}
509519
<NameCell>{rowNames[rowIndex]}</NameCell>
510520
</PredicateTR>
511521
{expandedPredicates.has(row.name) && (
512522
<>
513-
<HighLevelStats before={row.before} after={row.after} />
523+
<HighLevelStats
524+
before={row.before}
525+
after={row.after}
526+
comparison={comparison}
527+
/>
514528
{collatePipelines(
515529
row.before.pipelines,
516530
row.after.pipelines,
517531
).map(({ name, first, second }, pipelineIndex) => (
518532
<Fragment key={pipelineIndex}>
519533
<HeaderTR>
520534
<td></td>
521-
<NumberHeader>{first != null && "Before"}</NumberHeader>
535+
{comparison && (
536+
<NumberHeader>{first != null && "Before"}</NumberHeader>
537+
)}
522538
<NumberHeader>{second != null && "After"}</NumberHeader>
523-
<NumberHeader>
524-
{first != null && second != null && "Delta"}
525-
</NumberHeader>
539+
{comparison && (
540+
<NumberHeader>
541+
{first != null && second != null && "Delta"}
542+
</NumberHeader>
543+
)}
526544
<NameHeader>
527545
Tuple counts for &apos;{name}&apos; pipeline
528-
{first == null
529-
? " (after)"
530-
: second == null
531-
? " (before)"
532-
: ""}
546+
{comparison &&
547+
(first == null
548+
? " (after)"
549+
: second == null
550+
? " (before)"
551+
: "")}
533552
</NameHeader>
534553
</HeaderTR>
535554
{abbreviateRASteps(first?.steps ?? second!.steps).map(
@@ -538,6 +557,7 @@ function ComparePerformanceWithData(props: {
538557
key={index}
539558
before={first?.counts[index]}
540559
after={second?.counts[index]}
560+
comparison={comparison}
541561
step={step}
542562
/>
543563
),
@@ -556,9 +576,11 @@ function ComparePerformanceWithData(props: {
556576
</tr>
557577
<tr key="total">
558578
<ChevronCell />
559-
<NumberCell>{formatDecimal(totalBefore)}</NumberCell>
579+
{comparison && (
580+
<NumberCell>{formatDecimal(totalBefore)}</NumberCell>
581+
)}
560582
<NumberCell>{formatDecimal(totalAfter)}</NumberCell>
561-
{renderDelta(totalDiff)}
583+
{comparison && renderDelta(totalDiff)}
562584
<NameCell>TOTAL</NameCell>
563585
</tr>
564586
</tfoot>

0 commit comments

Comments
 (0)