1/* 2 * Copyright (C) 2022 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16export class PerfBottomUpStruct { 17 parentNode: PerfBottomUpStruct | undefined; 18 symbolName: string; 19 selfTime: number = 0; 20 selfTimeStr?: string; 21 selfTimePercent: string = ''; 22 totalTime: number = 0; 23 totalTimeStr?: string; 24 totalTimePercent: string = ''; 25 eventCount: number = 0; 26 eventPercent: string = ''; 27 children: Array<PerfBottomUpStruct>; 28 frameChildren?: Array<PerfBottomUpStruct>; 29 isSearch: boolean = false; 30 isSelected: boolean = false; 31 tsArray: Array<number> = []; 32 constructor(symbolName: string) { 33 this.symbolName = symbolName; 34 this.children = []; 35 } 36 37 addChildren(child: PerfBottomUpStruct): void { 38 child.parentNode = this; 39 this.children.push(child); 40 } 41 42 notifyParentUpdateSelfTime(): void { 43 this.parentNode?.calculateSelfTime(); 44 } 45 46 calculateSelfTime(): void { 47 const sum = this.children.reduce((total, obj) => total + obj.totalTime, 0); 48 this.selfTime = this.totalTime - sum; 49 } 50} 51