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

Unified Diff: dashboard/dashboard/elements/chart-container.html

Issue 2716683004: [Dashboard] Start using /list_tests's test_path_dict mode in test-picker (Closed)
Patch Set: fix v8 case Created 3 years, 9 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
« no previous file with comments | « no previous file | dashboard/dashboard/elements/chart-legend.html » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: dashboard/dashboard/elements/chart-container.html
diff --git a/dashboard/dashboard/elements/chart-container.html b/dashboard/dashboard/elements/chart-container.html
index ccc9aef279ac4bb31b513529ecc2c6f56f765755..dd60fbbda89d8a29269a1cd4d0bc40ab360b5d5d 100644
--- a/dashboard/dashboard/elements/chart-container.html
+++ b/dashboard/dashboard/elements/chart-container.html
@@ -21,6 +21,7 @@ triaging functionality in the chart.
<link rel="import" href="/dashboard/elements/chart-title.html">
<link rel="import" href="/dashboard/elements/chart-tooltip.html">
<link rel="import" href="/dashboard/static/events.html">
+<link rel="import" href="/dashboard/static/series_group.html">
<link rel="import" href="/dashboard/static/simple_xhr.html">
<link rel="import" href="/dashboard/static/testselection.html">
<link rel="import" href="/dashboard/static/uri.html">
@@ -347,7 +348,7 @@ triaging functionality in the chart.
type: Array,
value: () => [],
},
- // TODO(chrisphan): Make seriesGroupList a class.
+
// A list of series group dictionary. A series group contains test
// path and list of test information. This is displayed in
// chart-legend, where each test is a checkable series.
@@ -622,7 +623,7 @@ triaging functionality in the chart.
*
* @param {Array.<Array>} testPathAndSelected A list of
* pair of test path and a list of selected series.
- * @return {boolean} collapse Whether unchecked and unimportant
+ * @param {boolean} collapse Whether unchecked and unimportant
* series should start off hidden.
*/
addSeriesGroup: function(testPathAndSelected, collapse) {
@@ -693,22 +694,86 @@ triaging functionality in the chart.
},
/**
+ * Adds series group to graph explicitly.
+ *
+ * Since adding the test_path_dict mode for /list_tests, the preferred
+ * flow for resolving a test path into lists of selected and unselected
+ * tests is to use this endpoint to resolve them directly. This function
+ * should be functionally equivalent to addSeriesGroup except for this
+ * resolution step, and the goal is to replace it
+ * (https://github.com/catapult-project/catapult/issues/3385).
+ *
+ * @param {d.SeriesGroup} seriesGroup The series group to be added.
+ * @param {boolean} collapse Whether unchecked and unimportant
+ * series should start off hidden.
+ */
+ addSeriesGroup2: function(seriesGroup, collapse) {
+ const mainPath = seriesGroup.mainPath;
+ const selectedPaths = seriesGroup.selectedPaths;
+ const unselectedPaths = seriesGroup.unselectedPaths;
+
+ // Checks if test path already exists.
+ const testPathSet = new Set(
+ this.seriesGroupList.map(group => group.path));
+
+ if (testPathSet.has(mainPath)) {
+ return;
+ }
+
+ const tests = [];
+ for (const selectedPath of selectedPaths) {
+ tests.push({
+ name: selectedPath.split('/').slice(-1)[0],
+ selected: true
+ });
+ }
+
+ const legacySeriesGroup = {
+ path: mainPath,
+ tests: tests,
+ collapse: collapse,
+ numPendingRequests: 0
+ };
+
+ this.push('seriesGroupList', legacySeriesGroup);
+
+ if (selectedPaths.length > 0) {
+ this.sendGraphJsonRequest(selectedPaths, true, mainPath);
+ }
+
+ if (unselectedPaths.length > 0) {
+ this.sendGraphJsonRequest(unselectedPaths, false, mainPath);
+ }
+
+ this.updateSlider();
+ this.$.title.update();
+ },
+
+
+ /**
* Sends a request for graph JSON.
*
* @param {Object} testPathDictOrList Dictionary of test path to list of
* selected series, or flat list of test paths.
- * @return {boolean} isSelected Whether this request is for selected
+ * @param {boolean} isSelected Whether this request is for selected
* or unselected series.
+ * @param {String} mainPath If a list of tests is supplied, the main
+ * path to which they belong, for updating the counter.
*/
- sendGraphJsonRequest: function(testPathDictOrList, isSelected) {
+ sendGraphJsonRequest: function(
+ testPathDictOrList, isSelected, mainPath) {
+ // TODO(eakuefner): Get rid of mainPath once loading counter is
+ // cleaned up
var params = JSON.parse(JSON.stringify(this.graphParams));
if (testPathDictOrList instanceof Array) {
var testPaths = testPathDictOrList;
params.test_path_list = testPathDictOrList;
+ var pathsForUpdate = [mainPath];
} else {
var testPaths = Object.keys(testPathDictOrList);
params.test_path_dict = testPathDictOrList;
+ var pathsForUpdate = testPaths;
}
// TODO(eakuefner): Figure out how to remove this parameter since in
@@ -717,7 +782,7 @@ triaging functionality in the chart.
params['is_selected'] = true;
}
- this.updateSeriesGroupLoadingCounter(testPaths, true);
+ this.updateSeriesGroupLoadingCounter(pathsForUpdate, true);
var req = simple_xhr.send(
'/graph_json',
@@ -732,7 +797,7 @@ triaging functionality in the chart.
}
this.updateSeriesGroupLoadingCounter(
- testPaths, false);
+ pathsForUpdate, false);
this.$['loading-div'].style.display = 'none';
}.bind(this),
function(error) {
@@ -741,7 +806,7 @@ triaging functionality in the chart.
this.checkForInternalUser();
}
this.updateSeriesGroupLoadingCounter(
- testPaths, false);
+ pathsForUpdate, false);
this.$['loading-div'].style.display = 'none';
}.bind(this)
);
@@ -2433,7 +2498,9 @@ triaging functionality in the chart.
}
var data = JSON.parse(dataTransfer.getData('data'));
if (data) {
- this.addSeriesGroup(data, true);
+ const seriesGroup = new d.SeriesGroup(
+ data.mainPath, data.selectedPaths, data.unselectedPaths);
+ this.addSeriesGroup2(seriesGroup, true);
}
this.fireChartStateChangedEvent(this.seriesGroupList);
},
« no previous file with comments | « no previous file | dashboard/dashboard/elements/chart-legend.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698