Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(241)

Unified Diff: dashboard/dashboard/elements/benchmark-quality-report-details.html

Issue 2704663003: First version of benchmark health report. (Closed)
Patch Set: Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: dashboard/dashboard/elements/benchmark-quality-report-details.html
diff --git a/dashboard/dashboard/elements/benchmark-quality-report-details.html b/dashboard/dashboard/elements/benchmark-quality-report-details.html
new file mode 100644
index 0000000000000000000000000000000000000000..4e21076557d1320d01412200ca05e87a671387f2
--- /dev/null
+++ b/dashboard/dashboard/elements/benchmark-quality-report-details.html
@@ -0,0 +1,162 @@
+<!DOCTYPE html>
+<!--
+Copyright 2017 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="/components/polymer/polymer.html">
+
+<link rel="import" href="/dashboard/elements/alerts-table.html">
+<link rel="import" href="/dashboard/static/simple_xhr.html">
+
+<dom-module id="benchmark-quality-report-details">
+ <style>
+ .error {
+ color: #dd4b39;
+ font-weight: bold;
+ }
+
+ #loading-spinner {
+ width: 100%;
+ display: flex;
+ justify-content: center;
+ }
+ </style>
+ <template>
+ <template is="dom-if" if="{{loading}}">
+ <div id="loading-spinner"><img src="//www.google.com/images/loading.gif"></div>
+ </template>
+ <template is="dom-if" if="{{error}}">
+ <div class="error">{{error}}</div>
+ </template>
+ <template is="dom-if" if="{{computeSuccessfulLoad(loading, error)}}">
+ <h1>Report for {{benchmark}} on {{master}}</h1>
+ <h2>{{benchmark}} is on {{bots.length}} bots:</h2>
+ <ul>
+ <template is="dom-repeat" items="{{bots}}">
+ <li>{{item}}
+ </template>
+ </ul>
+
+ <h2>{{alerts.length}} alerts for {{benchmark}} in the last {{numDays}} days</h2>
+ <h3>{{computeNumValid(alerts)}} valid and {{computeNumInvalid(alerts)}} invalid and {{computeNumUntriaged(alerts)}} untriaged</h3>
+ <alerts-table id="alerts-table"
+ alert-list="{{alerts}}"
+ extra-columns="{{extraColumns}}"></alerts-table>
sullivan 2017/02/17 16:30:13 This element does the XHR and fills in details for
+ </template>
+
+ </template>
+ <script>
+ 'use strict';
+ Polymer({
+ is: 'benchmark-quality-report-details',
+ properties: {
+ alerts: {
+ notify: true,
+ type: Array
+ },
+ benchmark: {
+ notify: true,
+ type: String
+ },
+ bots: {
+ notify: true,
+ type: Array
+ },
+ extraColumns: {
sullivan 2017/02/17 16:30:13 This makes alerts show as performance regression a
+ type: Array,
+ notify: true,
+ value: () => ([
+ {
+ 'key': 'percent_changed',
+ 'label': 'Delta %'
+ },
+ {
+ 'key': 'absolute_delta',
+ 'label': 'Abs Delta'
+ },
+ {
+ 'key': 'units',
+ 'label': 'Units'
+ }
+ ])
+ },
+ error: {
+ notify: true,
+ type: Boolean,
+ value: false
+ },
+ loading: {
+ notify: true,
+ type: Boolean,
+ value: true
+ },
+ master: {
+ notify: true,
+ type: String
+ },
+ monitored: {
+ notify: true,
+ type: Boolean
+ },
+ numDays: {
+ notify: true,
+ type: Number
+ }
+ },
+
+ countAlerts: function(bugCheck, alerts) {
+ return alerts.map(a => a.bug_id).reduce(function(acc, val) {
+ if (bugCheck(val)) {
+ acc = acc + 1;
+ }
+ return acc;
+ }, 0);
+ },
+
+ computeSuccessfulLoad: (loading, error) => !(loading || error),
+
+ computeNumInvalid: function(alerts) {
+ return this.countAlerts(this.isInvalidAlert, alerts);
+ },
+
+ computeNumValid: function(alerts) {
+ return this.countAlerts(this.isValidAlert, alerts);
+ },
+
+ computeNumUntriaged: function(alerts) {
+ return this.countAlerts(this.isUntriagedAlert, alerts);
+ },
+
+ // Using != and == here and below since bugId could be null or undefined
+ isValidAlert: bugId => (bugId != null && bugId >= 0),
+
+ isInvalidAlert: bugId => (bugId != null && bugId < 0),
+
+ isUntriagedAlert: bugId => (bugId == null),
+
+ /**
+ * The url params determine what data to request from
+ * /group_report. sid is a hash of a group of keys.
+ */
+ ready: function() {
+ var params = {
+ 'master': this.master,
+ 'benchmark': this.benchmark,
+ 'num_days': this.numDays
+ };
+ simple_xhr.send('/benchmark_quality_report', params,
+ function(response) {
+ this.alerts = response['alerts'];
+ this.bots = response['bots'];
+ this.monitored = response['monitored'];
+ this.loading = false;
+ }.bind(this),
+ function(msg) {
+ this.error = msg;
+ this.loading = false;
+ }.bind(this));
+ }
+ });
+ </script>
+</dom-module>

Powered by Google App Engine
This is Rietveld 408576698