blob: d8df4d8fdef2dce05cfe005ed91c670824ac3ee3 [file] [edit]
// Copyright (C) 2026 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
.pf-distribution-summary {
display: flex;
flex-direction: column;
gap: 8px;
&--placeholder {
opacity: 0.4;
pointer-events: none;
}
&__placeholder-chart {
height: 220px;
border: 1px dashed var(--pf-color-border);
border-radius: 4px;
}
&__loading {
display: flex;
align-items: center;
justify-content: center;
padding: 16px;
}
&__histogram-toolbar {
display: flex;
flex-direction: row;
justify-content: flex-end;
min-height: 24px;
}
// Two side-by-side bordered Trees: count/total/min/mean/max on the left,
// percentiles on the right.
&__stats {
display: grid;
grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
gap: 8px;
font-variant-numeric: tabular-nums;
}
}
.pf-distribution-panel {
display: flex;
flex-direction: row;
width: 100%;
height: 100%;
min-height: 0;
gap: 8px;
padding: 8px;
box-sizing: border-box;
// Instances pane (left): flex chain so the DataGrid (with fillHeight) can
// virtual scroll within its own bounds rather than expanding the panel.
&__instances {
display: flex;
flex-direction: column;
flex: 1 1 0;
min-width: 0;
min-height: 0;
> .pf-section {
display: flex;
flex-direction: column;
flex: 1 1 0;
min-height: 0;
> article {
flex: 1 1 0;
min-height: 0;
display: flex;
flex-direction: column;
padding: 0;
}
}
}
// Histogram pane (right): scrollable for when stats overflow.
&__histogram {
display: flex;
flex-direction: column;
flex: 1 1 0;
min-width: 0;
overflow-y: auto;
}
}
// Cap the header title width so long slice names don't push the description
// and buttons off-screen; overflow is clipped with an ellipsis (the full text
// stays available as a native tooltip, see view()).
.pf-distribution-shell .pf-header-title {
max-width: 400px;
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
}
// When the distribution panel is the body of a fill-height DetailsShell, the
// shell's pf-content tries to scroll itself; suppress that so the DataGrid in
// the right pane handles its own virtual scroll instead.
.pf-details-shell.pf-fill-height .pf-content:has(> .pf-distribution-panel) {
overflow-y: hidden;
}
// Wraps the greyed-out placeholder so the "Load distribution" button can sit
// on top of the chart area instead of below the whole summary.
.pf-distribution-summary-gate {
position: relative;
}
.pf-distribution-summary-gate__overlay {
position: absolute;
top: 0;
left: 0;
right: 0;
height: 220px;
display: flex;
align-items: center;
justify-content: center;
}
// "View matching slices" button under the inline DistributionSummary in the
// slice details panel.
.pf-thread-slice-distribution-link {
display: flex;
justify-content: flex-end;
margin-top: 8px;
}
// Scope picker shown above the inline histogram in the slice details panel.
.pf-thread-slice-distribution-scope {
display: flex;
align-items: center;
gap: 6px;
font-size: var(--pf-font-size-s);
color: var(--pf-color-foreground-muted);
margin-bottom: 4px;
}
// Help icon shown next to a Section title via titleWithHelp().
.pf-section-title-with-help {
display: inline-flex;
align-items: center;
gap: 4px;
&__icon {
color: var(--pf-color-foreground-muted);
cursor: help;
font-size: var(--pf-font-size-m);
}
}