summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/catapult/tracing/tracing/value/ui/histogram_set_view_state.html
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/catapult/tracing/tracing/value/ui/histogram_set_view_state.html')
-rw-r--r--chromium/third_party/catapult/tracing/tracing/value/ui/histogram_set_view_state.html144
1 files changed, 144 insertions, 0 deletions
diff --git a/chromium/third_party/catapult/tracing/tracing/value/ui/histogram_set_view_state.html b/chromium/third_party/catapult/tracing/tracing/value/ui/histogram_set_view_state.html
new file mode 100644
index 00000000000..ade4ef2a9c4
--- /dev/null
+++ b/chromium/third_party/catapult/tracing/tracing/value/ui/histogram_set_view_state.html
@@ -0,0 +1,144 @@
+<!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="/tracing/base/view_state.html">
+
+<script>
+'use strict';
+tr.exportTo('tr.v.ui', function() {
+ class HistogramSetViewState extends tr.b.ViewState {
+ constructor() {
+ super();
+ this.define('searchQuery', '');
+ this.define('referenceDisplayLabel', '');
+ this.define('displayStatisticName', '');
+ this.define('showAll', true);
+ this.define('groupings', []);
+ this.define('sortColumnIndex', 0);
+ this.define('sortDescending', false);
+ this.define('constrainNameColumn', true);
+ this.define('tableRowStates', new Map());
+ this.define('alpha', 0.01);
+ }
+ }
+
+ tr.b.ViewState.register(HistogramSetViewState);
+
+ class HistogramSetTableRowState extends tr.b.ViewState {
+ constructor() {
+ super();
+ this.define('isExpanded', false);
+ this.define('isOverviewed', false);
+ this.define('cells', new Map());
+ this.define('subRows', new Map());
+ this.define('diagnosticsTab', '');
+ }
+
+ asCompactDict() {
+ const result = {};
+ if (this.isExpanded) result.e = '1';
+ if (this.isOverviewed) result.o = '1';
+ if (this.diagnosticsTab) result.d = this.diagnosticsTab;
+ const cells = {};
+ for (const [name, cell] of this.cells) {
+ const cellDict = cell.asCompactDict();
+ if (cellDict === undefined) continue;
+ cells[name] = cellDict;
+ }
+ if (Object.keys(cells).length > 0) result.c = cells;
+
+ const subRows = {};
+ for (const [name, row] of this.subRows) {
+ const rowDict = row.asCompactDict();
+ if (rowDict === undefined) continue;
+ subRows[name] = rowDict;
+ }
+ if (Object.keys(subRows).length > 0) result.r = subRows;
+
+ if (Object.keys(result).length === 0) return undefined;
+
+ return result;
+ }
+
+ async updateFromCompactDict(dict) {
+ await this.update({
+ isExpanded: dict.e === '1',
+ isOverviewed: dict.o === '1',
+ diagnosticsTab: dict.d || '',
+ });
+
+ for (const [name, cellDict] of Object.entries(dict.c || {})) {
+ const cell = this.cells.get(name);
+ if (cell === undefined) continue;
+ await cell.updateFromCompactDict(cellDict);
+ }
+
+ for (const [name, subRowDict] of Object.entries(dict.r || {})) {
+ const subRow = this.subRows.get(name);
+ if (subRow === undefined) continue;
+ await subRow.updateFromCompactDict(subRowDict);
+ }
+ }
+
+ * walk() {
+ yield this;
+ for (const row of this.subRows.values()) yield* row.walk();
+ }
+
+ static* walkAll(rootRows) {
+ for (const rootRow of rootRows) yield* rootRow.walk();
+ }
+ }
+
+ tr.b.ViewState.register(HistogramSetTableRowState);
+
+ class HistogramSetTableCellState extends tr.b.ViewState {
+ constructor() {
+ super();
+ this.define('isOpen', false);
+ this.define('brushedBinRange', new tr.b.math.Range());
+ this.define('mergeSampleDiagnostics', true);
+ }
+
+ asCompactDict() {
+ const result = {};
+ if (this.isOpen) result.o = '1';
+ if (!this.mergeSampleDiagnostics) result.m = '0';
+ if (!this.brushedBinRange.isEmpty) {
+ result.b = this.brushedBinRange.min + '_' + this.brushedBinRange.max;
+ }
+ if (Object.keys(result).length === 0) return undefined;
+ return result;
+ }
+
+ async updateFromCompactDict(dict) {
+ let binRange = this.brushedBinRange;
+ if (dict.b) {
+ let [bMin, bMax] = dict.b.split('_');
+ bMin = parseInt(bMin);
+ bMax = parseInt(bMax);
+ if (bMin !== binRange.min || bMax !== binRange.max) {
+ binRange = tr.b.math.Range.fromExplicitRange(bMin, bMax);
+ }
+ }
+ await this.update({
+ isOpen: dict.o === '1',
+ brushedBinRange: binRange,
+ mergeSampleDiagnostics: dict.m !== '0',
+ });
+ }
+ }
+
+ tr.b.ViewState.register(HistogramSetTableCellState);
+
+ return {
+ HistogramSetTableCellState,
+ HistogramSetTableRowState,
+ HistogramSetViewState,
+ };
+});
+</script>