| Index: Tools/GardeningServer/ui/ct-trooper-card.html
|
| diff --git a/Tools/GardeningServer/ui/ct-trooper-card.html b/Tools/GardeningServer/ui/ct-trooper-card.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..cda901842a4ef26fe9abe61f39b532e5895ef548
|
| --- /dev/null
|
| +++ b/Tools/GardeningServer/ui/ct-trooper-card.html
|
| @@ -0,0 +1,109 @@
|
| +<!--
|
| +Copyright 2014 The Chromium Authors. All rights reserved.
|
| +Use of this source code is governed by a BSD-style license that can be
|
| +found in the LICENSE file.
|
| +-->
|
| +
|
| +<link rel="import" href="ct-chart.html">
|
| +
|
| +<polymer-element name="ct-trooper-card" attributes="group">
|
| + <template>
|
| + <style>
|
| + #failure {
|
| + flex: 1;
|
| + margin-left: 10px;
|
| + }
|
| +
|
| + #details {
|
| + font-weight: bold;
|
| + }
|
| +
|
| + ::shadow #chart {
|
| + height: 100px;
|
| + width: 400px;
|
| + }
|
| + </style>
|
| + <div id="failure">
|
| + <div id="details">
|
| + {{ group.tree }}: {{ group.details }}
|
| + </div>
|
| + <ct-chart table="{{ table }}" options="{{ options }}" width=400 height=100></ct-chart>
|
| + </div>
|
| + </template>
|
| + <script>
|
| + Polymer({
|
| + group: null,
|
| + table: null,
|
| + options: null,
|
| + fromPercent: function(v) {
|
| + return Number(v.substring(0, v.length - 1));
|
| + },
|
| + groupChanged: function() {
|
| + if (!this.group) {
|
| + return;
|
| + }
|
| + switch (this.group.type) {
|
| + case 'cq_latency':
|
| + this.table = {
|
| + labels: ["50th Percentile", "90th Percentile"],
|
| + datasets: [
|
| + {
|
| + title: 'Limit',
|
| + fillColor: 'grey',
|
| + data: [60, 180]
|
| + },
|
| + {
|
| + title: 'Actual',
|
| + fillColor: [this.group.data.p50 > 60 ? 'red' : 'green',
|
| + this.group.data.p90 > 180 ? 'red' : 'green'],
|
| + data: [this.group.data.p50, this.group.data.p90]
|
| + }
|
| + ]};
|
| + break;
|
| + case 'tree_status':
|
| + this.table = {
|
| + labels: ["Tree Status"],
|
| + datasets: [
|
| + {
|
| + title: 'Minimum',
|
| + fillColor: 'grey',
|
| + data: [80]
|
| + },
|
| + {
|
| + title: 'Actual',
|
| + fillColor: 'red',
|
| + data: [this.group.data.percent_open]
|
| + }
|
| + ]};
|
| + break;
|
| + case 'cycle_time':
|
| + this.table = {
|
| + labels: ["Percent of Builds"],
|
| + datasets: [
|
| + {
|
| + title: 'Median',
|
| + fillColor: 'orange',
|
| + data: [this.fromPercent(this.group.data.percent_over_median_slo)]
|
| + },
|
| + {
|
| + title: 'Max',
|
| + fillColor: 'red',
|
| + data: [this.fromPercent(this.group.data.percent_over_max_slo)]
|
| + }
|
| + ]};
|
| + break;
|
| + default:
|
| + console.error('unknown trooper error type');
|
| + return;
|
| + }
|
| +
|
| + this.options = {
|
| + scaleBeginAtZero: true,
|
| + legend: false,
|
| + annotateLabel: '<%=v1%>: <%=Math.round(v3)%>',
|
| + annotateDisplay: true
|
| + }
|
| + },
|
| + });
|
| + </script>
|
| +</polymer-element>
|
|
|