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