blob: 7aa4dab07740d6c8c89f78a2c6d394cb0701fc21 [file] [log] [blame]
/*
Copyright (c) 2016 The Flutter Authors. All rights reserved.
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
*/
@import url(https://fonts.googleapis.com/css?family=Roboto:300);
body {
background: #eee;
font: 16px Roboto, sans-serif;
font-weight: 300;
color: #333;
margin: 0;
padding: 10px;
}
@keyframes flash-broken-build {
0% {
background-color: #eee;
}
50% {
background-color: #ff8566;
}
100% {
background-color: #eee;
}
}
#container {
display: flex;
flex-flow: row wrap;
}
span.last-updated {
font-size: 14px;
}
.card {
margin: 10px;
width: 400px;
background: #f7f7f7;
padding: 20px;
border-radius: 4px;
box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24);
text-align: center;
/* center the inside contents */
display: flex;
justify-content: center;
overflow: hidden;
}
.card .metric-data {
font-size: 90px;
margin-bottom: 15px;
}
.card .metric-type {
font-size: 23px;
}
.card .metric-name-wrapper {
color: rgba(0, 0, 0, 0.54);
}
.card .metric-unit {
color: rgba(0, 0, 0, 0.54);
font-size: 72px;
}
.card .build-status-card {
font-size: 60px;
display: flex;
align-items: center;
justify-content: space-between;
margin-top: 25px;
}
.card-inside {
width: 100%;
}
footer {
position: fixed;
bottom: 0;
left: 0;
right: 0;
padding: 2px 19px;
z-index: 2;
background-color: #917FFF;
display: flex;
}
footer span {
vertical-align: bottom;
}
footer i.material-icons {
vertical-align: bottom;
}
h3 {
text-align: center;
margin: 0;
margin-bottom: 1em;
font-size: 1.5em;
}
.metric-section {
margin-top: 10px;
margin-bottom: 10px;
}
span.metric-section + span.metric-section {
padding-left: 30px;
}
.metric {
font-weight: 300;
}
.warning {
font-weight: 400;
color: #FF2222;
}
.congrats {
color: #468263;
}
.row {
display: flex;
flex-direction: row;
}
.frames {
display: flex;
position: relative;
flex-direction: row;
align-items: flex-end;
width: 100%;
border: 1px solid #81C784; }
.frame-budget-indicator {
position: absolute;
left: 0;
right: 0;
bottom: 0;
border-top: 1px dashed #81C784;
text-align: right;
font-size: 70%;
padding-right: 5px;
padding-top: 2px;
background-color: #E8F5E9;
z-index: 1; }
.frame-60FPS-indicator {
position: absolute;
left: 0;
right: 0;
bottom: 0;
border-top: 1px dashed #81C784;
text-align: right;
font-size: 70%;
padding-right: 5px;
padding-top: 2px;
background-color: #F9FBE7;
z-index: 0;
}
.frames .frame {
width: 2px;
z-index: 2;
}
.good-frame {
background-color: #468263;
}
.bad-frame {
background-color: #FF2222;
}
.terrible-frame {
background-color: #910000;
}
table.stats-table {
width: 100%;
}
table.stats-table td {
text-align: center;
}
td.stats-label {
width: 33%;
text-align: end;
color: gray;
font-size: small;
}
td.stats-value {
font-weight: bold;
width: 33%;
text-align: start;
}
.buildbot-happy {
fill: #4CAF50;
}
.buildbot-sad {
fill: #F44336;
animation-name: buildstatus-crazy;
animation-duration: 4s;
animation-iteration-count: infinite;
}
@keyframes buildstatus-crazy {
0% {
transform: rotateZ(-30deg) scale(1);
}
50% {
transform: rotateZ(30deg) scale(1.5);
}
100% {
transform: rotateZ(-30deg) scale(1);
}
}
#build-out-of-date {
display: none;
position: fixed;
background-color: rgba(255, 0, 0, 0.7);
left: -40px;
top: 50%;
transform: rotateZ(-14deg);
width: 110%;
height: 21px;
text-align: center;
padding: 15px;
z-index: 3;
}
.status-table {
background-color: white;
border: none;
}
.table-header-cell {
position: relative;
font-weight: bold;
background-color: #eee;
border-right: 1px solid #CCC;
}
.task-name {
position: absolute;
transform: translateY(-47px) translateX(20px) rotate(-90deg);
transform-origin: 0% 100%;
padding: 6px;
font-size: 12px;
color: #727272;
background-color: transparent;
height: 12px;
}
.first-row {
text-align: center;
}
.first-column {
max-width: 180px;
overflow-x: hidden;
white-space: nowrap;
text-overflow: ellipsis;
padding-right: 10px;
}
.task-status-cell {
padding: 0 2px;
border-right: 1px solid #ececec;
}
.task-status-circle {
height: 18px;
width: 18px;
border-radius: 4px;
text-align: center;
color: white;
border: 1px solid #999;
}
.table-footer-first-cell {
border-right: 1px solid #CCC;
width: 183px;
}
.table-footer-cell {
width: 20px;
border-right: 1px solid #ececec;
padding-left: 4px;
height: 320px;
vertical-align: bottom;
}
.task-status-cell:nth-child(odd),
.table-footer-cell:nth-child(odd) {
background: #ececec;
}
.task-known-to-be-flaky {
opacity: 0.7;
}
.task-known-to-be-flaky:before {
content: "?";
}
.task-new {
background-color: #CCCCFF;
border-color: #aaa;
}
.task-in-progress {
background-color: #7171Ff;
border-color: #5151FF;
animation: inProgressAnimation 3s infinite linear;
cursor: pointer;
}
.task-succeeded {
background-color: #8fdf5f;
border-color: #4F8530;
cursor: pointer;
}
.task-succeeded-but-flaky {
background-color: #fffc6c;
border-color: #C5C56D;
cursor: pointer;
}
.task-failed {
background-color: #e98080;
border-color: #A77272;
cursor: pointer;
}
.task-underperformed {
background-color: orange;
cursor: pointer;
}
.task-skipped {
background-color: transparent;
border-color: transparent;
}
.task-unknown {
background-color: #6600cc;
cursor: pointer;
}
@keyframes inProgressAnimation {
0% {
transform: rotateZ(0deg);
}
100% {
transform: rotateZ(360deg);
}
}
.agent-bar {
display: flex;
margin-bottom: 10px;
}
.agent-bar > * {
display: block;
align-self: center;
padding: 7px;
}
.agent-chip {
border-radius: 2px;
margin-left: 10px;
color: white;
cursor: pointer;
}