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 16 import { SampleType } from '../database/logic-worker/ProcedureLogicWorkerJsCpuProfiler.js'; 17 const ROW_TYPE = 'cpu-profiler'; 18 export class JsCpuProfilerUIStruct { 19 name: string; 20 depth: number; 21 selfTime: number; 22 totalTime: number; 23 url: string; 24 line: number; 25 column: number; 26 scriptName: string; 27 id: number; 28 parentId: number; 29 30 constructor( 31 id: number, 32 name: string, 33 depth: number, 34 selfTime: number, 35 totalTime: number, 36 url: string, 37 line: number, 38 column: number 39 ) { 40 this.id = id; 41 this.parentId = -1; 42 this.name = name; 43 this.depth = depth; 44 this.selfTime = selfTime; 45 this.totalTime = totalTime; 46 this.url = url; 47 this.line = line; 48 this.column = column; 49 this.scriptName = ''; 50 if (url) { 51 let dirs = url.split('/'); 52 this.scriptName = dirs.pop() || ''; 53 } 54 } 55 } 56 57 export class JsCpuProfilerChartFrame extends JsCpuProfilerUIStruct { 58 startTime: number; 59 endTime: number; 60 children: Array<JsCpuProfilerChartFrame>; 61 samplesIds: Array<number>; 62 isSelect: boolean = false; 63 parent?: JsCpuProfilerChartFrame; 64 65 constructor( 66 id: number, 67 name: string, 68 startTime: number, 69 endTime: number, 70 totalTime: number, 71 depth: number, 72 url: string, 73 line: number, 74 column: number 75 ) { 76 super(id, name, depth, 0, totalTime, url, line, column); 77 this.id = id; 78 this.startTime = startTime; 79 this.endTime = endTime; 80 this.children = new Array<JsCpuProfilerChartFrame>(); 81 this.samplesIds = new Array<number>(); 82 } 83 } 84 85 export class JsCpuProfilerTabStruct extends JsCpuProfilerUIStruct { 86 rowName = ROW_TYPE; 87 parent?: JsCpuProfilerTabStruct | null | undefined; 88 children: Array<JsCpuProfilerTabStruct>; 89 chartFrameChildren?: Array<JsCpuProfilerChartFrame>; 90 isSelected: boolean = false; //select data line 91 totalTimePercent: string = ''; 92 selfTimePercent: string = ''; 93 symbolName: string = ''; // function name + scriptName 94 selfTimeStr: string = ''; //selfTime unit conversion 95 totalTimeStr: string = ''; //totalTime unit conversion 96 isSearch: boolean = false; //filter data bold 97 98 constructor( 99 name: string, 100 selfTime: number, 101 totalTime: number, 102 depth: number, 103 url: string, 104 line: number, 105 column: number, 106 id: number 107 ) { 108 super(id, name, depth, selfTime, totalTime, url, line, column); 109 this.chartFrameChildren = new Array<JsCpuProfilerChartFrame>(); 110 this.children = new Array<JsCpuProfilerTabStruct>(); 111 } 112 } 113 114 export class JsCpuProfilerStatisticsStruct { 115 type: SampleType | string; 116 time: number = 0; 117 timeStr: string = ''; 118 percentage: string = ''; 119 constructor(type: SampleType | string, time: number, timeStr: string, percentage: string) { 120 this.type = type; 121 this.time = time; 122 this.timeStr = timeStr; 123 this.percentage = percentage; 124 } 125 } 126