1*6dbdd20aSAndroid Build Coastguard Worker// Copyright (C) 2019 The Android Open Source Project 2*6dbdd20aSAndroid Build Coastguard Worker// 3*6dbdd20aSAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License"); 4*6dbdd20aSAndroid Build Coastguard Worker// you may not use this file except in compliance with the License. 5*6dbdd20aSAndroid Build Coastguard Worker// You may obtain a copy of the License at 6*6dbdd20aSAndroid Build Coastguard Worker// 7*6dbdd20aSAndroid Build Coastguard Worker// http://www.apache.org/licenses/LICENSE-2.0 8*6dbdd20aSAndroid Build Coastguard Worker// 9*6dbdd20aSAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software 10*6dbdd20aSAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS, 11*6dbdd20aSAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*6dbdd20aSAndroid Build Coastguard Worker// See the License for the specific language governing permissions and 13*6dbdd20aSAndroid Build Coastguard Worker// limitations under the License. 14*6dbdd20aSAndroid Build Coastguard Worker 15*6dbdd20aSAndroid Build Coastguard Workerexport type Column = ( 16*6dbdd20aSAndroid Build Coastguard Worker | StringColumn 17*6dbdd20aSAndroid Build Coastguard Worker | TimestampColumn 18*6dbdd20aSAndroid Build Coastguard Worker | NumberColumn 19*6dbdd20aSAndroid Build Coastguard Worker | StateColumn 20*6dbdd20aSAndroid Build Coastguard Worker) & { 21*6dbdd20aSAndroid Build Coastguard Worker readonly title: string; 22*6dbdd20aSAndroid Build Coastguard Worker readonly columnId: string; 23*6dbdd20aSAndroid Build Coastguard Worker}; 24*6dbdd20aSAndroid Build Coastguard Worker 25*6dbdd20aSAndroid Build Coastguard Workerexport interface StringColumn { 26*6dbdd20aSAndroid Build Coastguard Worker readonly kind: 'STRING'; 27*6dbdd20aSAndroid Build Coastguard Worker readonly data: Uint16Array; 28*6dbdd20aSAndroid Build Coastguard Worker} 29*6dbdd20aSAndroid Build Coastguard Worker 30*6dbdd20aSAndroid Build Coastguard Workerexport interface TimestampColumn { 31*6dbdd20aSAndroid Build Coastguard Worker readonly kind: 'TIMESTAMP_NS'; 32*6dbdd20aSAndroid Build Coastguard Worker readonly data: Float64Array; 33*6dbdd20aSAndroid Build Coastguard Worker} 34*6dbdd20aSAndroid Build Coastguard Worker 35*6dbdd20aSAndroid Build Coastguard Workerexport interface NumberColumn { 36*6dbdd20aSAndroid Build Coastguard Worker readonly kind: 'NUMBER'; 37*6dbdd20aSAndroid Build Coastguard Worker readonly data: Uint16Array; 38*6dbdd20aSAndroid Build Coastguard Worker} 39*6dbdd20aSAndroid Build Coastguard Worker 40*6dbdd20aSAndroid Build Coastguard Workerexport interface StateColumn { 41*6dbdd20aSAndroid Build Coastguard Worker readonly kind: 'STATE'; 42*6dbdd20aSAndroid Build Coastguard Worker readonly data: Uint16Array; 43*6dbdd20aSAndroid Build Coastguard Worker} 44*6dbdd20aSAndroid Build Coastguard Worker 45*6dbdd20aSAndroid Build Coastguard Workertype TypedArrayConstructor = 46*6dbdd20aSAndroid Build Coastguard Worker | Uint16ArrayConstructor 47*6dbdd20aSAndroid Build Coastguard Worker | Float64ArrayConstructor 48*6dbdd20aSAndroid Build Coastguard Worker | Uint32ArrayConstructor; 49*6dbdd20aSAndroid Build Coastguard Workerexport interface ColumnDef { 50*6dbdd20aSAndroid Build Coastguard Worker readonly title: string; 51*6dbdd20aSAndroid Build Coastguard Worker readonly kind: string; 52*6dbdd20aSAndroid Build Coastguard Worker readonly sum?: boolean; 53*6dbdd20aSAndroid Build Coastguard Worker readonly columnConstructor: TypedArrayConstructor; 54*6dbdd20aSAndroid Build Coastguard Worker readonly columnId: string; 55*6dbdd20aSAndroid Build Coastguard Worker} 56*6dbdd20aSAndroid Build Coastguard Worker 57*6dbdd20aSAndroid Build Coastguard Workerexport interface AggregateData { 58*6dbdd20aSAndroid Build Coastguard Worker readonly tabName: string; 59*6dbdd20aSAndroid Build Coastguard Worker readonly columns: Column[]; 60*6dbdd20aSAndroid Build Coastguard Worker readonly columnSums: string[]; 61*6dbdd20aSAndroid Build Coastguard Worker // For string interning. 62*6dbdd20aSAndroid Build Coastguard Worker readonly strings: string[]; 63*6dbdd20aSAndroid Build Coastguard Worker // Some aggregations will have extra info to display; 64*6dbdd20aSAndroid Build Coastguard Worker readonly extra?: ThreadStateExtra; 65*6dbdd20aSAndroid Build Coastguard Worker} 66*6dbdd20aSAndroid Build Coastguard Worker 67*6dbdd20aSAndroid Build Coastguard Workerexport function isEmptyData(data: AggregateData) { 68*6dbdd20aSAndroid Build Coastguard Worker return data.columns.length === 0 || data.columns[0].data.length === 0; 69*6dbdd20aSAndroid Build Coastguard Worker} 70*6dbdd20aSAndroid Build Coastguard Worker 71*6dbdd20aSAndroid Build Coastguard Workerexport interface ThreadStateExtra { 72*6dbdd20aSAndroid Build Coastguard Worker readonly kind: 'THREAD_STATE'; 73*6dbdd20aSAndroid Build Coastguard Worker readonly states: string[]; 74*6dbdd20aSAndroid Build Coastguard Worker readonly values: Float64Array; 75*6dbdd20aSAndroid Build Coastguard Worker readonly totalMs: number; 76*6dbdd20aSAndroid Build Coastguard Worker} 77*6dbdd20aSAndroid Build Coastguard Worker 78*6dbdd20aSAndroid Build Coastguard Workerexport interface Sorting { 79*6dbdd20aSAndroid Build Coastguard Worker readonly column: string; 80*6dbdd20aSAndroid Build Coastguard Worker readonly direction: 'DESC' | 'ASC'; 81*6dbdd20aSAndroid Build Coastguard Worker} 82