• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
16import { TabPaneCurrentSelection } from '../sheet/TabPaneCurrentSelection';
17import { TabPaneFreq } from '../sheet/freq/TabPaneFreq';
18import { TabPaneCpuByThread } from '../sheet/cpu/TabPaneCpuByThread';
19import { SelectionParam } from '../../../bean/BoxSelection';
20import { TabPaneCpuByProcess } from '../sheet/cpu/TabPaneCpuByProcess';
21import { TabPaneCpuUsage } from '../sheet/cpu/TabPaneCpuUsage';
22import { TabPaneSPT } from '../sheet/cpu/TabPaneSPT';
23import { TabPanePTS } from '../sheet/cpu/TabPanePTS';
24import { TabPaneSlices } from '../sheet/process/TabPaneSlices';
25import { TabPaneCounter } from '../sheet/process/TabPaneCounter';
26import { TabPaneFps } from '../sheet/fps/TabPaneFps';
27import { TabPaneFlag } from '../timer-shaft/TabPaneFlag';
28import { TabPaneBoxChild } from '../sheet/cpu/TabPaneBoxChild';
29import { TabPaneNMStatstics } from '../sheet/native-memory/TabPaneNMStatstics';
30import { TabPaneNMemory } from '../sheet/native-memory/TabPaneNMemory';
31import { TabPaneNMSampleList } from '../sheet/native-memory/TabPaneNMSampleList';
32import { TabpanePerfProfile } from '../sheet/hiperf/TabPerfProfile';
33import { TabPanePerfSample } from '../sheet/hiperf/TabPerfSampleList';
34import { TabPaneLiveProcesses } from '../sheet/ability/TabPaneLiveProcesses';
35import { TabPaneHistoryProcesses } from '../sheet/ability/TabPaneHistoryProcesses';
36import { TabPaneCpuAbility } from '../sheet/ability/TabPaneCpuAbility';
37import { TabPaneMemoryAbility } from '../sheet/ability/TabPaneMemoryAbility';
38import { TabPaneDiskAbility } from '../sheet/ability/TabPaneDiskAbility';
39import { TabPaneNetworkAbility } from '../sheet/ability/TabPaneNetworkAbility';
40import { TabPaneFileStatistics } from '../sheet/file-system/TabPaneFilesystemStatistics';
41import { TabpaneFilesystemCalltree } from '../sheet/file-system/TabPaneFileSystemCalltree';
42import { TabPaneFileSystemEvents } from '../sheet/file-system/TabPaneFileSystemEvents';
43import { TabPaneFileSystemDescHistory } from '../sheet/file-system/TabPaneFileSystemDescHistory';
44import { TabPaneFileSystemDescTimeSlice } from '../sheet/file-system/TabPaneFileSystemDescTimeSlice';
45import { TabPaneSdkSlice } from '../sheet/sdk/TabPaneSdkSlice';
46import { TabPaneSdkCounter } from '../sheet/sdk/TabPaneSdkCounter';
47import { TabPaneCounterSample } from '../sheet/cpu/TabPaneCounterSample';
48import { TabPaneThreadStates } from '../sheet/process/TabPaneThreadStates';
49import { TabPaneThreadUsage } from '../sheet/process/TabPaneThreadUsage';
50import { TabPaneFrequencySample } from '../sheet/cpu/TabPaneFrequencySample';
51import { TabPaneEnergyAnomaly } from '../sheet/energy/TabPaneEnergyAnomaly';
52import { TabPaneSystemDetails } from '../sheet/energy/TabPaneSystemDetails';
53import { TabPanePowerDetails } from '../sheet/energy/TabPanePowerDetails';
54import { TabPanePowerBattery } from '../sheet/energy/TabPanePowerBattery';
55import { TabPaneCpuStateClick } from '../sheet/cpu/TabPaneCpuStateClick';
56import { TabPaneVirtualMemoryStatistics } from '../sheet/file-system/TabPaneVirtualMemoryStatistics';
57import { TabPaneIOTierStatistics } from '../sheet/file-system/TabPaneIOTierStatistics';
58import { TabPaneIOCallTree, TabPaneVMCallTree } from '../sheet/file-system/TabPaneIOCallTree';
59import { TabPaneIoCompletionTimes } from '../sheet/file-system/TabPaneIoCompletionTimes';
60import { TabPaneVirtualMemoryEvents } from '../sheet/file-system/TabPaneVMEvents';
61import { TabPaneSmapsStatistics } from '../sheet/smaps/TabPaneSmapsStatistics';
62import { TabPaneSmapsSample } from '../sheet/smaps/TabPaneSmapsSample';
63import { TabPaneFreqLimit } from '../sheet/freq/TabPaneFreqLimit';
64import { TabPaneCpuFreqLimits } from '../sheet/freq/TabPaneCpuFreqLimits';
65import { TabpaneNMCalltree } from '../sheet/native-memory/TabPaneNMCallTree';
66import { TabPaneClockCounter } from '../sheet/clock/TabPaneClockCounter';
67import { TabPaneHang } from '../sheet/Hang/TabPaneHang';
68import { TabPaneHangSummary } from '../sheet/Hang/TabPaneHangSummary';
69import { TabPaneIrqCounter } from '../sheet/irq/TabPaneIrqCounter';
70import { TabPaneFrames } from '../sheet/jank/TabPaneFrames';
71import { TabPanePerfAnalysis } from '../sheet/hiperf/TabPanePerfAnalysis';
72import { TabPaneNMStatisticAnalysis } from '../sheet/native-memory/TabPaneNMStatisticAnalysis';
73import { TabPaneFilesystemStatisticsAnalysis } from '../sheet/file-system/TabPaneFilesystemStatisticsAnalysis';
74import { TabPaneIOTierStatisticsAnalysis } from '../sheet/file-system/TabPaneIOTierStatisticsAnalysis';
75import { TabPaneVirtualMemoryStatisticsAnalysis } from '../sheet/file-system/TabPaneVirtualMemoryStatisticsAnalysis';
76import { TabPaneCurrent } from '../sheet/TabPaneCurrent';
77import { TabPaneStartup } from '../sheet/process/TabPaneStartup';
78import { TabPaneStaticInit } from '../sheet/process/TabPaneStaticInit';
79import { TabPaneTaskFrames } from '../sheet/task/TabPaneTaskFrames';
80import { TabPaneFrameDynamic } from '../sheet/frame/TabPaneFrameDynamic';
81import { TabFrameSpacing } from '../sheet/frame/TabFrameSpacing';
82import { TabPaneSummary } from '../sheet/ark-ts/TabPaneSummary';
83import { TabPaneComparison } from '../sheet/ark-ts/TabPaneComparison';
84import { TabPaneJsCpuTopDown } from '../sheet/ark-ts/TabPaneJsCpuCallTree';
85import { TabPaneJsCpuBottomUp } from '../sheet/ark-ts/TabPaneJsCpuBottomUp';
86import { TabPaneJsCpuStatistics } from '../sheet/ark-ts/TabPaneJsCpuStatistics';
87import { TabPaneGpuClickSelect } from '../sheet/gpu/TabPaneGpuClickSelect';
88import { TabPaneGpuTotalBoxSelect } from '../sheet/gpu/TabPaneGpuTotalBoxSelect';
89import { TabPaneGpuWindowBoxSelect } from '../sheet/gpu/TabPaneGpuWindowBoxSelect';
90import { TabPaneGpuGL } from '../sheet/gpu/TabPaneGpuGL';
91import { TabPanePurgTotal } from '../sheet/ability/TabPanePurgTotal';
92import { TabPanePurgTotalSelection } from '../sheet/ability/TabPanePurgTotalSelection';
93import { TabPanePurgPin } from '../sheet/ability/TabPanePurgPin';
94import { TabPanePurgPinSelection } from '../sheet/ability/TabPanePurgPinSelection';
95import { TabPaneVmTrackerShmSelection } from '../sheet/vmtracker/TabPaneVmTrackerShmSelection';
96import { TabPaneVmTrackerShm } from '../sheet/vmtracker/TabPaneVmTrackerShm';
97import { TabPaneDmaAbility } from '../sheet/ability/TabPaneDmaAbility';
98import { TabPaneDmaSelectAbility } from '../sheet/ability/TabPaneDmaSelectAbility';
99import { TabPaneGpuMemoryAbility } from '../sheet/ability/TabPaneGpuMemoryAbility';
100import { TabPaneDmaVmTracker } from '../sheet/vmtracker/TabPaneDmaVmTracker';
101import { TabPaneGpuMemoryVmTracker } from '../sheet/vmtracker/TabPaneGpuMemoryVmTracker';
102import { TabPaneGpuMemorySelectAbility } from '../sheet/ability/TabPaneGpuMemorySelectAbility';
103import { TabPaneGpuMemorySelectVmTracker } from '../sheet/vmtracker/TabPaneGpuMemorySelectVmTracker';
104import { TabPaneDmaSelectVmTracker } from '../sheet/vmtracker/TabPaneDmaSelectVmTracker';
105import { TabpanePerfBottomUp } from '../sheet/hiperf/TabPerfBottomUp';
106import { TabPanePurgTotalComparisonAbility } from '../sheet/ability/TabPanePurgTotalComparisonAbility';
107import { TabPanePurgPinComparisonAbility } from '../sheet/ability/TabPanePurgPinComparisonAbility';
108import { TabPanePurgTotalComparisonVM } from '../sheet/vmtracker/TabPanePurgTotalComparisonVM';
109import { TabPanePurgPinComparisonVM } from '../sheet/vmtracker/TabPanePurgPinComparisonVM';
110import { TabPaneDmaAbilityComparison } from '../sheet/ability/TabPaneDmaAbilityComparison';
111import { TabPaneGpuMemoryComparison } from '../sheet/ability/TabPaneGpuMemoryComparison';
112import { TabPaneDmaVmTrackerComparison } from '../sheet/vmtracker/TabPaneDmaVmTrackerComparison';
113import { TabPaneGpuMemoryVmTrackerComparison } from '../sheet/vmtracker/TabPaneGpuMemoryVmTrackerComparison';
114import { TabPaneVmTrackerShmComparison } from '../sheet/vmtracker/TabPaneVmTrackerShmComparison';
115import { TabPaneSmapsComparison } from '../sheet/smaps/TabPaneSmapsComparison';
116import { TabPaneSmapsRecord } from '../sheet/smaps/TabPaneSmapsRecord';
117import { TabPaneGpuClickSelectComparison } from '../sheet/gpu/TabPaneGpuClickSelectComparison';
118import { TabPaneHiLogs } from '../sheet/hilog/TabPaneHiLogs';
119import { TabPaneHiLogSummary } from '../sheet/hilog/TabPaneHiLogSummary';
120import { TabPaneSchedPriority } from '../sheet/cpu/TabPaneSchedPriority';
121import { TabPaneGpuResourceVmTracker } from '../sheet/vmtracker/TabPaneGpuResourceVmTracker';
122import { TabPaneGpuGraph } from '../sheet/gpu/TabPaneGraph';
123import { TabPaneFreqUsage } from '../sheet/frequsage/TabPaneFreqUsage';
124import { TabPaneHisysEvents } from '../sheet/hisysevent/TabPaneHisysEvents';
125import { TabPaneHiSysEventSummary } from '../sheet/hisysevent/TabPaneHiSysEventSummary';
126import { TabPaneBinders } from '../sheet/binder/TabPaneBinders';
127import { TabPaneGpufreq } from '../sheet/gpufreq/TabPaneGpufreqUsage';
128import { TabPaneSampleInstruction } from '../sheet/bpftrace/TabPaneSampleInstruction';
129import { TabPaneSampleInstructionDistributions } from '../sheet/bpftrace/TabPaneSampleInstructionDistributions';
130import { TabPaneSampleInstructionTotalTime } from '../sheet/bpftrace/TabPaneSampleInstructionSelectionTotalTime';
131import { TabPaneSampleInstructionSelection } from '../sheet/bpftrace/TabPaneSampleInstructionSelection';
132import { TabPaneDataCut } from '../sheet/TabPaneDataCut';
133import { TabPaneGpuCounterSelection } from '../sheet/gpu-counter/TabPaneGpuCounterSelection';
134import { TabPaneGpuCounter } from '../sheet/gpu-counter/TabPaneGpuCounter';
135import { TabPaneTimeParallel } from '../sheet/parallel/TabPaneTimeParallel';
136import { TabPaneMtParallel } from '../sheet/parallel/TabPaneMtParallel';
137import { TabPanePerfAsync } from '../sheet/hiperf/TabPerfAsyncList';
138import { TabPaneUserPlugin } from '../sheet/userPlugin/TabPaneUserPlugin';
139import { TabPaneDmaFence } from '../sheet/dma-fence/TabPaneDmaFenceSelect';
140import { TabPaneSliceChild } from '../sheet/process/TabPaneSliceChild';
141
142export let tabConfig: {
143  [key: string]: {
144    title: string
145    type: unknown
146    require?: (param: SelectionParam) => boolean
147  }
148} = {
149  'current-selection': {
150    title: 'Current Selection',
151    type: TabPaneCurrentSelection,
152  }, //cpu data click
153  'cpu-state-click': {
154    title: 'Cpu State',
155    type: TabPaneCpuStateClick,
156  },
157  'box-freq': {
158    title: 'Frequency',
159    type: TabPaneFreq,
160  }, //freq data click
161  'box-freq-limit': {
162    title: 'Frequency Limits',
163    type: TabPaneFreqLimit,
164  },
165  'box-cpu-freq-limit': {
166    title: 'Cpu Frequency Limits',
167    type: TabPaneCpuFreqLimits,
168    require: (param: SelectionParam) => param.cpuFreqLimit.length > 0,
169  },
170  'box-cpu-thread': {
171    title: 'CPU by thread',
172    type: TabPaneCpuByThread,
173    require: (param: SelectionParam) => param.cpus.length > 0,
174  }, //range select
175  'box-cpu-process': {
176    title: 'CPU by process',
177    type: TabPaneCpuByProcess,
178    require: (param: SelectionParam) => param.cpus.length > 0,
179  },
180  'box-cpu-usage': {
181    title: 'CPU Usage',
182    type: TabPaneCpuUsage,
183    require: (param: SelectionParam) => param.cpus.length > 0,
184  },
185  'box-spt': {
186    title: 'Thread Switches',
187    type: TabPaneSPT,
188    require: (param: SelectionParam) => param.cpus.length > 0,
189  },
190  'box-pts': {
191    title: 'Thread States',
192    type: TabPanePTS,
193    require: (param: SelectionParam) => param.cpus.length > 0,
194  },
195  'box-thread-states': {
196    title: 'Thread by State',
197    type: TabPaneThreadStates,
198    require: (param: SelectionParam) => param.threadIds.length > 0,
199  },
200  'box-process-startup': {
201    title: 'App Startups',
202    type: TabPaneStartup,
203    require: (param: SelectionParam) => param.processIds.length > 0 && param.startup,
204  },
205  'box-process-static-init': {
206    title: 'Static Initialization',
207    type: TabPaneStaticInit,
208    require: (param: SelectionParam) => param.processIds.length > 0 && param.staticInit,
209  },
210  'box-thread-usage': {
211    title: 'Thread Usage',
212    type: TabPaneThreadUsage,
213    require: (param: SelectionParam) => param.threadIds.length > 0,
214  },
215  'box-slices': {
216    title: 'Slices',
217    type: TabPaneSlices,
218    require: (param: SelectionParam) => param.funTids.length > 0 || param.funAsync.length > 0 || param.funCatAsync.length > 0,
219  },
220  'box-perf-analysis': {
221    title: 'Analysis',
222    type: TabPanePerfAnalysis,
223    require: (param: SelectionParam) => param.perfSampleIds.length > 0,
224  },
225  'box-perf-bottom-up': {
226    title: 'Bottom Up',
227    type: TabpanePerfBottomUp,
228    require: (param: SelectionParam) => param.perfSampleIds.length > 0,
229  },
230  'box-perf-profile': {
231    title: 'Perf Profile',
232    type: TabpanePerfProfile,
233    require: (param: SelectionParam) => param.perfSampleIds.length > 0 || param.threadIds.length > 0,
234  },
235  'box-perf-sample': {
236    title: 'Sample List',
237    type: TabPanePerfSample,
238    require: (param: SelectionParam) => param.perfSampleIds.length > 0,
239  },
240  'box-perf-async': {
241    title: 'Async Call Profile',
242    type: TabPanePerfAsync,
243    require: (param: SelectionParam) => param.perfSampleIds.length > 0,
244  },
245  'box-counters': {
246    title: 'Counters',
247    type: TabPaneCounter,
248    require: (param: SelectionParam) => param.processTrackIds.length > 0 || param.virtualTrackIds.length > 0,
249  },
250  'box-clock-counters': {
251    title: 'Clock Counters',
252    type: TabPaneClockCounter,
253    require: (param: SelectionParam) => param.clockMapData.size > 0,
254  },
255  'box-hang': {
256    title: 'Hangs',
257    type: TabPaneHang,
258    require: (param: SelectionParam) => param.hangMapData.size > 0,
259  },
260  'box-hang-summary': {
261    title: 'Hang Summary',
262    type: TabPaneHangSummary,
263    require: (param: SelectionParam) => param.hangMapData.size > 0,
264  },
265  'box-irq-counters': {
266    title: 'Irq Counters',
267    type: TabPaneIrqCounter,
268    require: (param: SelectionParam) => param.irqCallIds.length > 0 || param.softIrqCallIds.length > 0,
269  },
270  'box-fps': {
271    title: 'FPS',
272    type: TabPaneFps,
273    require: (param: SelectionParam) => param.hasFps,
274  },
275  'box-cpu-child': {
276    title: '',
277    type: TabPaneBoxChild,
278  },
279  'box-native-statstics': {
280    title: 'Statistics',
281    type: TabPaneNMStatstics,
282    require: (param: SelectionParam) => param.nativeMemory.length > 0,
283  },
284  'box-native-statistic-analysis': {
285    title: 'Analysis',
286    type: TabPaneNMStatisticAnalysis,
287    require: (param: SelectionParam) => param.nativeMemory.length > 0 || param.nativeMemoryStatistic.length > 0,
288  },
289  'box-native-calltree': {
290    title: 'Call Info',
291    type: TabpaneNMCalltree,
292    require: (param: SelectionParam) => param.nativeMemory.length > 0 || param.nativeMemoryStatistic.length > 0,
293  },
294  'box-native-memory': {
295    title: 'Native Memory',
296    type: TabPaneNMemory,
297    require: (param: SelectionParam) => param.nativeMemory.length > 0,
298  },
299  'box-native-sample': {
300    title: 'Snapshot List',
301    type: TabPaneNMSampleList,
302    require: (param: SelectionParam) => param.nativeMemory.length > 0,
303  },
304
305  'box-live-processes-child': {
306    title: 'Live Processes',
307    type: TabPaneLiveProcesses,
308    require: (param: SelectionParam) =>
309      param.cpuAbilityIds.length > 0 ||
310      (param.memoryAbilityIds.length > 0 && param.diskAbilityIds.length > 0) ||
311      param.networkAbilityIds.length > 0,
312  },
313  'box-history-processes-child': {
314    title: 'Processes History',
315    type: TabPaneHistoryProcesses,
316    require: (param: SelectionParam) =>
317      param.cpuAbilityIds.length > 0 ||
318      param.memoryAbilityIds.length > 0 ||
319      param.diskAbilityIds.length > 0 ||
320      param.networkAbilityIds.length > 0,
321  },
322  'box-system-cpu-child': {
323    title: 'System CPU Summary',
324    type: TabPaneCpuAbility,
325    require: (param: SelectionParam) => param.cpuAbilityIds.length > 0,
326  },
327  'box-system-memory-child': {
328    title: 'System Memory Summary',
329    type: TabPaneMemoryAbility,
330    require: (param: SelectionParam) => param.memoryAbilityIds.length > 0,
331  },
332  'box-system-diskIo-child': {
333    title: 'System Disk Summary',
334    type: TabPaneDiskAbility,
335    require: (param: SelectionParam) => param.diskAbilityIds.length > 0,
336  },
337  'box-system-network-child': {
338    title: 'System Network Summary',
339    type: TabPaneNetworkAbility,
340    require: (param: SelectionParam) => param.networkAbilityIds.length > 0,
341  },
342  'box-sdk-slice-child': {
343    title: 'Sdk Slice',
344    type: TabPaneSdkSlice,
345    require: (param: SelectionParam) => param.sdkSliceIds.length > 0,
346  },
347  'box-system-counter-child': {
348    title: 'SDK Counter',
349    type: TabPaneSdkCounter,
350    require: (param: SelectionParam) => param.sdkCounterIds.length > 0,
351  },
352  'box-counter-sample': {
353    title: 'Cpu State',
354    type: TabPaneCounterSample,
355    require: (param: SelectionParam) => param.cpuStateFilterIds.length > 0,
356  },
357
358  'box-frequency-sample': {
359    title: 'Cpu Frequency',
360    type: TabPaneFrequencySample,
361    require: (param: SelectionParam) => param.cpuFreqFilterIds.length > 0,
362  },
363  'box-anomaly-details': {
364    title: 'Anomaly details',
365    type: TabPaneEnergyAnomaly,
366    require: (param: SelectionParam) => param.anomalyEnergy.length > 0,
367  },
368  'box-system-details': {
369    title: 'System Details',
370    type: TabPaneSystemDetails,
371    require: (param: SelectionParam) => param.systemEnergy.length > 0,
372  },
373  'box-power-battery': {
374    title: 'Power Battery',
375    type: TabPanePowerBattery,
376    require: (param: SelectionParam) => param.powerEnergy.length > 0,
377  },
378  'box-power-details': {
379    title: 'Power Details',
380    type: TabPanePowerDetails,
381    require: (param: SelectionParam) => param.powerEnergy.length > 0,
382  },
383  'box-file-system-statistics': {
384    title: 'Filesystem statistics',
385    type: TabPaneFileStatistics,
386    require: (param: SelectionParam) => param.fileSystemType.length > 0,
387  },
388  'box-file-system-statistics-analysis': {
389    title: 'Analysis',
390    type: TabPaneFilesystemStatisticsAnalysis,
391    require: (param: SelectionParam) => param.fileSystemType.length > 0,
392  },
393  'box-file-system-calltree': {
394    title: 'Filesystem Calltree',
395    type: TabpaneFilesystemCalltree,
396    require: (param: SelectionParam) => param.fileSystemType.length > 0 || param.fsCount > 0,
397  },
398  'box-file-system-event': {
399    title: 'Filesystem Events',
400    type: TabPaneFileSystemEvents,
401    require: (param: SelectionParam) => param.fileSystemType.length > 0,
402  },
403  'box-file-system-desc-history': {
404    title: 'File Descriptor History',
405    type: TabPaneFileSystemDescHistory,
406    require: (param: SelectionParam) => param.fileSystemType.length > 0,
407  },
408  'box-file-system-desc-time-slice': {
409    title: 'File Descriptor Time Slice',
410    type: TabPaneFileSystemDescTimeSlice,
411    require: (param: SelectionParam) => param.fileSystemType.length > 0,
412  },
413  'box-virtual-memory-statistics': {
414    title: 'Page Fault Statistics',
415    type: TabPaneVirtualMemoryStatistics,
416    require: (param: SelectionParam) => param.fileSysVirtualMemory,
417  },
418  'box-virtual-memory-statistics-analysis': {
419    title: 'Analysis',
420    type: TabPaneVirtualMemoryStatisticsAnalysis,
421    require: (param: SelectionParam) => param.fileSysVirtualMemory,
422  },
423  'box-vm-calltree': {
424    title: 'Page Fault CallTree',
425    type: TabPaneVMCallTree,
426    require: (param: SelectionParam) => param.fileSysVirtualMemory || param.vmCount > 0,
427  },
428  'box-vm-events': {
429    title: 'Page Fault Events',
430    type: TabPaneVirtualMemoryEvents,
431    require: (param: SelectionParam) => param.fileSysVirtualMemory,
432  },
433  'box-io-tier-statistics': {
434    title: 'Disk I/O Tier Statistics',
435    type: TabPaneIOTierStatistics,
436    require: (param: SelectionParam) => param.diskIOLatency,
437  },
438  'box-io-tier-statistics-analysis': {
439    title: 'Analysis',
440    type: TabPaneIOTierStatisticsAnalysis,
441    require: (param: SelectionParam) => param.diskIOLatency,
442  },
443  'box-io-calltree': {
444    title: 'Disk I/O Latency Calltree',
445    type: TabPaneIOCallTree,
446    require: (param: SelectionParam) => param.diskIOLatency || param.diskIOipids.length > 0,
447  },
448  'box-io-events': {
449    title: 'Trace Completion Times',
450    type: TabPaneIoCompletionTimes,
451    require: (param: SelectionParam) => param.diskIOLatency,
452  },
453  'box-smaps-statistics': {
454    title: 'Smaps Statistic',
455    type: TabPaneSmapsStatistics,
456    require: (param: SelectionParam) => param.smapsType.length > 0,
457  },
458  'box-smaps-sample': {
459    title: 'Smaps sample',
460    type: TabPaneSmapsSample,
461    require: (param: SelectionParam) => param.smapsType.length > 0,
462  },
463  'box-smaps-comparison': {
464    title: 'Smaps Comparison',
465    type: TabPaneSmapsComparison,
466  },
467  'box-smaps-record': {
468    title: 'Native Heap',
469    type: TabPaneSmapsRecord,
470  },
471  'box-vmtracker-shm': {
472    title: 'SHM',
473    type: TabPaneVmTrackerShm,
474    require: (param: SelectionParam) => param.vmtrackershm.length > 0,
475  },
476  'box-vmtracker-shm-selection': {
477    title: 'SHM Selection',
478    type: TabPaneVmTrackerShmSelection,
479  },
480  'box-frames': {
481    title: 'Frames',
482    type: TabPaneFrames,
483    require: (param: SelectionParam) => param.jankFramesData.length > 0,
484  },
485  'box-heap-summary': {
486    title: 'Summary',
487    type: TabPaneSummary,
488    require: (param: SelectionParam) => param.jsMemory.length > 0,
489  },
490  'box-heap-comparison': {
491    title: 'Comparison',
492    type: TabPaneComparison,
493  }, // snapshot data click
494  'box-task-frames': {
495    title: 'Frames',
496    type: TabPaneTaskFrames,
497    require: (param: SelectionParam) => param.taskFramesData.length > 0,
498  },
499  'box-frame-dynamic': {
500    title: 'Frame Dynamic',
501    type: TabPaneFrameDynamic,
502    require: (param: SelectionParam) => param.frameDynamic.length > 0,
503  },
504  'box-frames-spacing': {
505    title: 'Frame spacing',
506    type: TabFrameSpacing,
507    require: (param: SelectionParam) => param.frameSpacing.length > 0,
508  },
509  'box-js-Profiler-statistics': {
510    title: 'Js Profiler Statistics',
511    type: TabPaneJsCpuStatistics,
512    require: (param: SelectionParam) => param.jsCpuProfilerData.length > 0,
513  },
514  'box-js-Profiler-bottom-up': {
515    title: 'Js Profiler BottomUp',
516    type: TabPaneJsCpuBottomUp,
517    require: (param: SelectionParam) => param.jsCpuProfilerData.length > 0,
518  },
519  'box-js-Profiler-top-down': {
520    title: 'Js Profiler CallTree',
521    type: TabPaneJsCpuTopDown,
522    require: (param: SelectionParam) => param.jsCpuProfilerData.length > 0,
523  },
524  'gpu-click-select': {
525    title: 'Gpu Dump Selection',
526    type: TabPaneGpuClickSelect,
527  },
528  'gpu-gl-box-select': {
529    title: 'GL',
530    type: TabPaneGpuGL,
531    require: (param: SelectionParam) => param.gpu.gl,
532  },
533  'gpu-graph-box-select': {
534    title: 'Graph',
535    type: TabPaneGpuGraph,
536    require: (param: SelectionParam) => param.gpu.graph,
537  },
538  'gpu-total-box-select': {
539    title: 'Gpu Total',
540    type: TabPaneGpuTotalBoxSelect,
541    require: (param: SelectionParam) => param.gpu.gpuTotal,
542  },
543  'gpu-window-box-select': {
544    title: 'Gpu Window',
545    type: TabPaneGpuWindowBoxSelect,
546    require: (param: SelectionParam) => param.gpu.gpuWindow,
547  },
548  'box-purgeable-total': {
549    title: 'Purg Total',
550    type: TabPanePurgTotal,
551    require: (param: SelectionParam) => param.purgeableTotalAbility.length > 0 || param.purgeableTotalVM.length > 0,
552  },
553  'box-purgeable-total-selection': {
554    title: 'Purg Total Selection',
555    type: TabPanePurgTotalSelection,
556  },
557  'box-purgeable-pin': {
558    title: 'Purg Pin',
559    type: TabPanePurgPin,
560    require: (param: SelectionParam) => param.purgeablePinAbility.length > 0 || param.purgeablePinVM.length > 0,
561  },
562  'box-purgeable-pin-selection': {
563    title: 'Purg Pin Selection',
564    type: TabPanePurgPinSelection,
565  },
566  'box-purgeable-total-comparison-ability': {
567    title: 'Purg Total Comparison',
568    type: TabPanePurgTotalComparisonAbility,
569  },
570  'box-purgeable-pin-comparison-ability': {
571    title: 'Purg Pin Comparison',
572    type: TabPanePurgPinComparisonAbility,
573  },
574  'box-purgeable-total-comparison-vm': {
575    title: 'Purg Total Comparison',
576    type: TabPanePurgTotalComparisonVM,
577  },
578  'box-purgeable-pin-comparison-vm': {
579    title: 'Purg Pin Comparison',
580    type: TabPanePurgPinComparisonVM,
581  },
582  'box-dma-ability': {
583    title: 'DMA',
584    type: TabPaneDmaAbility,
585    require: (param: SelectionParam) => param.dmaAbilityData.length > 0,
586  },
587  'box-dma-selection-ability': {
588    title: 'DMA Selection',
589    type: TabPaneDmaSelectAbility,
590  }, //DMA Ability click
591  'box-gpu-memory-ability': {
592    title: 'Gpu Memory',
593    type: TabPaneGpuMemoryAbility,
594    require: (param: SelectionParam) => param.gpuMemoryAbilityData.length > 0,
595  },
596  'box-smaps-dma': {
597    title: 'DMA',
598    type: TabPaneDmaVmTracker,
599    require: (param: SelectionParam) => param.dmaVmTrackerData.length > 0,
600  },
601  'box-smaps-gpu-memory': {
602    title: 'Gpu Memory',
603    type: TabPaneGpuMemoryVmTracker,
604    require: (param: SelectionParam) => param.gpuMemoryTrackerData.length > 0,
605  },
606  'box-smaps-gpu-resource': {
607    title: 'Gpu Resource',
608    type: TabPaneGpuResourceVmTracker,
609  },
610  'box-dma-selection-vmTracker': {
611    title: 'DMA Selection',
612    type: TabPaneDmaSelectVmTracker,
613  }, //DMA VmTracker click
614  'box-gpu-memory-selection-ability': {
615    title: 'Gpu Memory Selection',
616    type: TabPaneGpuMemorySelectAbility,
617  }, // Gpu Memory ability click
618  'box-gpu-memory-selection-vmTracker': {
619    title: 'Gpu Memory Selection',
620    type: TabPaneGpuMemorySelectVmTracker,
621  }, //Gpu Memory DMA VmTracker click
622  'box-dma-ability-comparison': {
623    title: 'DMA Comparison',
624    type: TabPaneDmaAbilityComparison,
625  }, // dma Comparison ability click
626  'box-gpu-memory-comparison': {
627    title: 'Gpu Memory Comparison',
628    type: TabPaneGpuMemoryComparison,
629  }, // Gpu Memory Comparison click
630  'box-vmTracker-comparison': {
631    title: 'DMA Comparison',
632    type: TabPaneDmaVmTrackerComparison,
633  }, // DMA Comparison click
634  'box-gpu-memory-vmTracker-comparison': {
635    title: 'Gpu Memory Comparison',
636    type: TabPaneGpuMemoryVmTrackerComparison,
637  }, // DMA Comparison click
638  'box-vmtracker-shm-comparison': {
639    title: 'SHM Comparison',
640    type: TabPaneVmTrackerShmComparison,
641  },
642  'gpu-click-select-comparison': {
643    title: 'Gpu Dump Comparison',
644    type: TabPaneGpuClickSelectComparison,
645  },
646  'box-hilogs': {
647    title: 'Hilogs',
648    type: TabPaneHiLogs,
649    require: (param: SelectionParam) => param.hiLogs.length > 0,
650  },
651  'box-hilogs-summary': {
652    title: 'Summary',
653    type: TabPaneHiLogSummary,
654    require: (param: SelectionParam) => param.hiLogs.length > 0,
655  },
656  'box-sched-priority': {
657    title: 'Sched Priority',
658    type: TabPaneSchedPriority,
659    require: (param: SelectionParam) => param.cpus.length > 0,
660  },
661  'box-flag': {
662    title: 'Flags Selection',
663    type: TabPaneFlag,
664  },
665  'tabpane-current': {
666    title: 'M Selection',
667    type: TabPaneCurrent,
668    require: (param: SelectionParam) => param.isCurrentPane,
669  }, //current selection
670  'tabpane-frequsage': {
671    title: 'Freq Usage',
672    type: TabPaneFreqUsage,
673    require: (param: SelectionParam) => param.threadIds.length > 0,
674  },
675  'tab-hisysevents': {
676    title: 'HiSysevents',
677    type: TabPaneHisysEvents,
678    require: (param: SelectionParam) => param.hiSysEvents.length > 0,
679  },
680  'tab-hisysevents-summary': {
681    title: 'Statistics',
682    type: TabPaneHiSysEventSummary,
683    require: (param: SelectionParam) => param.hiSysEvents.length > 0,
684  },
685  'tabpane-binders': {
686    title: 'Thread Binders',
687    type: TabPaneBinders,
688    require: (param: SelectionParam) => param.threadIds.length > 0,
689  },
690  'tabpane-gpufreq': {
691    title: 'Gpufreq Usage',
692    type: TabPaneGpufreq,
693    require: (param: SelectionParam) => param.clockMapData.size === 1 && param.clockMapData.has('gpufreq Frequency') === true,
694  },
695  'tabpane-datacut': {
696    title: 'Data Cut',
697    type: TabPaneDataCut,
698    require: (param: SelectionParam) => param.threadIds.length > 0 ||
699      (param.clockMapData.size > 0 && param.clockMapData.has('gpufreq Frequency') === true),
700  },
701  'box-sample-instruction-selection': {
702    title: 'Data Selection',
703    type: TabPaneSampleInstructionSelection,
704    require: (param: SelectionParam) => param.sampleData.length > 0,
705  },
706  'box-sample-instruction-distribution-selection': {
707    title: 'Data Distribution',
708    type: TabPaneSampleInstructionDistributions,
709    require: (param: SelectionParam) => param.sampleData.length > 0,
710  },
711  'box-sample-instruction-totaltime-selection': {
712    title: 'Total Duration',
713    type: TabPaneSampleInstructionTotalTime,
714    require: (param: SelectionParam) => param.sampleData.length > 0,
715  },
716  'box-sample-instruction': {
717    title: 'Data Flow',
718    type: TabPaneSampleInstruction,
719  },
720  'box-gpu-counter-selection': {
721    title: 'Gpu Counter',
722    type: TabPaneGpuCounterSelection,
723    require: (param: SelectionParam) => param.gpuCounter.length > 0,
724  },
725  'box-gpu-counter': {
726    title: 'Gpu Counter',
727    type: TabPaneGpuCounter,
728  },
729  'tabpane-time-parallel': {
730    title: 'Time Parallel',
731    type: TabPaneTimeParallel,
732    require: (param: SelectionParam) => param.threadIds.length > 0,
733  },
734  'tabpane-mt-parallel': {
735    title: 'MT Parallel',
736    type: TabPaneMtParallel,
737    require: (param: SelectionParam) => param.threadIds.length > 0,
738  },
739  'tab-pane-userplugin': {
740    title: 'User Plugin',
741    type: TabPaneUserPlugin,
742  },
743  'tabpane-dmafrence': {
744    title: 'Dma Frence',
745    type: TabPaneDmaFence,
746    require: (param: SelectionParam) => param.dmaFenceNameData.length > 0,
747  },
748  'box-slice-child': {
749    title: '',
750    type: TabPaneSliceChild,
751  },
752};
753