blob: ef1593c2ae15abe5314f32b293b21539290142c1 [file] [log] [blame]
// Copyright (C) 2019 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.
.handle {
background-color: hsl(215, 1%, 95%);
border: 1px solid rgba(0, 0, 0, 0.1);
border-bottom: none;
cursor: row-resize;
// Disable user selection since this handle is draggable to resize the
// bottom panels.
user-select: none;
display: flex;
.tabs {
display: flex;
overflow: hidden;
flex: 1;
.tab {
font-family: "Roboto Condensed", sans-serif;
color: #3c4b5d;
padding: 4px;
margin-top: 3px;
align-items: center;
cursor: pointer;
font-size: 13px;
border-radius: 3px 3px 0 0;
background-color: #0000000f;
border-right: solid 1px hsla(0, 0%, 75%, 1);
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
z-index: 5;
box-shadow: #0000003b 0px 0px 3px 1px;
display: flex;
align-items: baseline;
gap: 2px;
&:hover {
background-color: hsla(0, 0%, 85%, 1);
}
&[active] {
background-color: white;
cursor: default;
}
&:nth-child(1) {
margin-left: 3px;
}
.pf-tab-title {
margin: 0px 4px;
overflow: hidden;
.pf-nocontent {
font-weight: lighter;
}
}
}
}
.buttons {
font-size: 24px;
grid-area: buttons;
display: flex;
align-items: baseline;
margin: 1px;
}
.handle-title {
font-family: "Roboto Condensed", sans-serif;
font-weight: 300;
color: #3c4b5d;
margin-left: 5px;
padding: 5px;
font-size: 13px;
}
}
.details-panel {
@include bottom-panel-font;
// This is required to position locally-scoped (i.e. non-full-screen) modal
// dialogs within the panel, as they use position: absolute.
position: relative;
.material-icons {
@include transition(0.3s);
font-size: 16px;
margin-left: 5px;
&:hover {
cursor: pointer;
}
&.grey {
border-radius: 3px;
border: 1px solid transparent;
background-color: #e8e8e8;
&:hover {
border: #475566 solid 1px;
}
}
}
.details-panel-heading {
padding: 10px 0 5px 0;
position: sticky;
top: 0;
// Relative/absolute/etc.. (non static) elements stack on top of this sticky
// header, so setting the z-index here to 1 forces this header to render
// over the top of other elements in the underlying panels.
z-index: 1;
display: flex;
background: white;
&.aggregation {
padding-top: 5px;
display: grid;
grid-template-areas:
"description range"
"heading heading";
grid-template-columns: 1fr auto;
.states {
font-size: 11px;
margin: 0 10px 2px 10px;
display: flex;
overflow: hidden;
.state {
height: 20px;
line-height: 20px;
padding-left: 3px;
padding-right: 3px;
border-left: white 1px solid;
&:hover {
min-width: fit-content;
}
}
}
.time-range {
text-align: right;
font-size: 11px;
font-weight: 400;
margin-right: 5px;
}
table {
grid-area: heading;
}
th {
cursor: pointer;
.material-icons {
margin-left: 2px;
font-size: 18px;
}
}
}
h2 {
font-size: 16px;
font-weight: 400;
padding: 0 10px;
&.split {
width: 50%;
}
}
}
table {
@include transition(0.1s);
@include table-font-size;
width: 100%;
// Aggregation panel uses multiple table elements that need to be aligned,
// which is done by using fixed table layout.
table-layout: fixed;
word-wrap: break-word;
padding: 0 10px;
tr:hover {
td,
th {
background-color: $table-hover-color;
&.no-highlight {
background-color: white;
}
}
}
th {
text-align: left;
width: 30%;
font-weight: normal;
vertical-align: top;
}
td.value {
white-space: pre-wrap;
}
td.padding {
min-width: 10px;
}
.array-index {
text-align: right;
}
}
.auto-layout {
table-layout: auto;
}
}
.slice-details-latency-panel {
// This panel is set to relative to make this panel a positioned element
// This is to allow the absolute text panels below to be positioned relative
// to this panel and not our parent.
position: relative;
user-select: text;
.text-detail {
font-size: smaller;
}
.slice-details-wakeup-text {
position: absolute;
left: 40px;
top: 20px;
}
.slice-details-latency-text {
position: absolute;
left: 106px;
top: 90px;
}
.slice-details-image {
user-select: none;
width: 180px;
height: 150px;
}
}
.details-table-multicolumn {
display: flex;
user-select: "text";
}
.flow-link:hover {
cursor: pointer;
text-decoration: underline;
}
.flow-info i.material-icons {
color: rgb(60, 86, 136);
}
.warning {
position: relative;
font-size: 13px;
color: hsl(45, 100%, 48%);
}
.warning i.material-icons {
font-size: 13px;
}
.warning .tooltip {
visibility: hidden;
background-color: white;
color: #3f4040;
box-shadow: 1px 3px 15px rgba(23, 32, 44, 0.3);
padding: 4px;
border-radius: 4px;
text-align: center;
white-space: nowrap;
position: absolute;
z-index: 1;
top: -5px;
left: 105%;
}
.warning:hover .tooltip {
visibility: visible;
}
.flow-button {
color: rgb(60, 86, 136);
}
.half-width-panel {
max-width: 50%;
flex-grow: 1;
height: fit-content;
}
.notes-editor-panel {
padding: 10px;
display: flex;
flex-direction: column;
height: 100%;
font-family: "Roboto Condensed", sans-serif;
font-weight: 300;
color: #3c4b5d;
.notes-editor-panel-heading-bar {
display: flex;
padding-bottom: 8px;
font-size: 14px;
.notes-editor-panel-heading {
padding-top: 3px;
}
input {
vertical-align: middle;
}
}
input[type="text"] {
flex-grow: 1;
border-radius: 4px;
border: 1px solid #dcdcdc;
padding: 3px;
margin: 0 10px;
&:focus {
outline: none;
box-shadow: 1px 1px 1px rgba(23, 32, 44, 0.3);
}
}
}
.sum {
font-weight: bolder;
font-size: 12px;
.sum-data {
border-bottom: 1px solid $table-border-color;
}
}
.log-panel {
display: contents;
header {
position: sticky;
top: 0;
left: 0;
z-index: 1;
background-color: white;
color: #3c4b5d;
padding: 5px;
display: grid;
grid-template-columns: auto auto;
justify-content: space-between;
}
.log-rows-label {
display: flex;
align-items: center;
}
.log-filters {
display: flex;
margin-right: 5px;
align-items: center;
.log-label {
padding-right: 0.35rem;
}
.tag-container {
height: auto;
min-height: 34px;
padding: 2px;
margin: 2px;
cursor: text;
border-radius: 3px;
display: flex;
align-items: center;
.chips .chip {
display: inline-block;
width: auto;
float: left;
background-color: #0878b2;
color: #fff;
border-radius: 3px;
margin: 2px;
overflow: hidden;
.chip-button {
padding: 4px;
cursor: pointer;
background-color: #054570;
display: inline-block;
}
.chip-text {
padding: 4px;
display: inline-block;
pointer-events: none;
}
}
.chip-input {
margin-left: 5px;
}
}
.filter-widget {
user-select: none;
cursor: pointer;
position: relative;
display: inline-block;
}
.filter-widget .tooltip {
visibility: hidden;
width: 120px;
background-color: black;
color: #fff;
text-align: center;
border-radius: 6px;
padding: 5px 0;
/* Position the tooltip */
position: absolute;
z-index: 1;
top: 130%;
right: 50%;
}
.filter-widget:hover .tooltip {
visibility: visible;
}
}
header.stale {
color: grey;
}
}
.pf-ftrace-explorer {
height: 100%;
font-size: 11px;
font-family: var(--monospace-font);
.pf-ftrace-namebox {
display: flex;
align-items: center;
.pf-ftrace-colorbox {
display: inline-block;
height: 10px;
width: 10px;
margin-right: 4px;
}
}
}
.pf-android-logs-table {
height: 100%;
font-size: 11px;
font-family: var(--monospace-font);
.D {
color: hsl(122, 20%, 40%);
}
.V {
color: hsl(122, 20%, 30%);
}
.I {
color: hsl(0, 0%, 20%);
}
.W {
color: hsl(45, 60%, 45%);
}
.E {
color: hsl(4, 90%, 58%);
}
.F {
color: hsl(291, 64%, 42%);
}
.pf-highlighted {
background: #d2efe0;
}
}
.pf-details-table {
margin: 10px;
}
.screenshot-panel {
height: 100%;
img {
max-height: 100%;
}
}
.pf-noselection {
height: 100%;
}
.flamegraph-profile {
height: 100%;
// This is required to position locally-scoped (i.e. non-full-screen) modal
// dialogs within the panel, as they use position: absolute.
position: relative;
.time {
justify-self: end;
margin-right: 10px;
}
.selected {
justify-self: end;
margin-right: 10px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
width: 200px;
}
}