diff --git a/ide/src/index.html b/ide/index.html similarity index 84% rename from ide/src/index.html rename to ide/index.html index 370f725d06731899f00321a5acb48f6c87ca0039..e18941ebd60d527c52df63f5fdb2f5f995beb707 100644 --- a/ide/src/index.html +++ b/ide/index.html @@ -25,7 +25,5 @@ req.send(null); window.version = req.getResponseHeader('data-version') || ''; - - diff --git a/ide/package.json b/ide/package.json index adc2039b77997eb8c743156d6f824156b00b4fc7..6e9f13f524a3a9fa887ff6563afc5b753c191263 100644 --- a/ide/package.json +++ b/ide/package.json @@ -4,9 +4,16 @@ "description": "Smart Perf", "main": "index.js", "scripts": { + "build": "webpack --mode=production --node-env=production", + "build:dev": "webpack --mode=development", + "build:prod": "webpack --mode=production --node-env=production", + "watch": "webpack --watch", + "serve": "webpack serve", "compile": "node ./build.js", + "statics": "node ./statisticsCheck.js", "test": "jest -u", - "test-c": "jest --coverage -u" + "test-c": "jest --coverage -u", + "lint": "npx eslint --ext .ts ./src/**" }, "jest": { "testEnvironment": "jsdom", @@ -41,20 +48,36 @@ "author": "", "license": "Apache License", "devDependencies": { + "@babel/core": "^7.23.2", "@babel/plugin-proposal-class-properties": "^7.16.7", "@babel/plugin-proposal-decorators": "^7.17.2", - "@babel/preset-env": "*", + "@babel/preset-env": "^7.23.2", "@babel/preset-typescript": "*", "@types/jest": "*", "@types/node": "^17.0.10", + "typescript": "^5.2.2", + "usb": "^2.4.2", "jest": "*", "jest-canvas-mock": "^2.3.1", - "typescript": "^4.2.3", - "jsdom-worker": "^0.2.1", "jest-environment-jsdom": "^28.1.0", - "node-fetch": "^2.6.7", + "jsdom-worker": "^0.2.1", "log4js": "^6.4.4", - "usb": "^2.4.2" + "node-fetch": "^2.6.7", + "autoprefixer": "^10.4.14", + "babel-loader": "^9.1.3", + "css-loader": "^6.8.1", + "mini-css-extract-plugin": "^2.7.6", + "style-loader": "^3.3.3", + "ts-loader": "^9.4.4", + "@webpack-cli/generators": "^3.0.7", + "clean-webpack-plugin": "^4.0.0", + "copy-webpack-plugin": "^11.0.0", + "html-webpack-plugin": "^5.5.3", + "webpack": "^5.89.0", + "webpack-cli": "^5.1.4", + "webpack-dev-server": "^4.15.1" }, - "dependencies": {} + "dependencies": { + "@webcomponents/custom-elements": "^1.6.0" + } } diff --git a/ide/src/TraceRowConfig.ts b/ide/src/TraceRowConfig.ts new file mode 100644 index 0000000000000000000000000000000000000000..60e6c73da91335562cfabec8ac0548df778595cf --- /dev/null +++ b/ide/src/TraceRowConfig.ts @@ -0,0 +1,479 @@ +/* + * Copyright (C) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { BaseElement, element } from '../../../../base-ui/BaseElement.js'; +import '../../../../base-ui/checkbox/LitCheckBox.js'; +import { LitCheckBox } from '../../../../base-ui/checkbox/LitCheckBox.js'; +import { TraceRow } from './TraceRow.js'; +import { SpSystemTrace } from '../../SpSystemTrace.js'; +import { LitSearch } from '../search/Search.js'; +import { TraceSheet } from './TraceSheet.js'; +import { CpuStruct } from '../../../database/ui-worker/ProcedureWorkerCPU.js'; +import { type BaseStruct } from '../../../bean/BaseStruct.js'; + +@element('trace-row-config') +export class TraceRowConfig extends BaseElement { + static allTraceRowList: Array> = []; + selectTypeList: Array | undefined = []; + private spSystemTrace: SpSystemTrace | null | undefined; + private sceneTable: HTMLDivElement | null | undefined; + private chartTable: HTMLDivElement | null | undefined; + private inputElement: HTMLInputElement | null | undefined; + private traceRowList: NodeListOf> | undefined; + + get value(): string { + return this.getAttribute('value') || ''; + } + + set value(value: string) { + this.setAttribute('value', value); + } + + static get observedAttributes(): string[] { + return ['mode']; + } + + init(): void { + let sceneList = [ + 'FrameTimeline', + 'TaskPool', + 'AnimationEffect', + 'AppStartup', + 'HiSysEvent', + 'EnergyEvent', + 'Memory', + 'ProcessMemory', + 'ArkTs', + 'NativeMemory', + 'HiPerf', + 'HiEBpf', + ]; + this.selectTypeList = []; + this.sceneTable!.innerHTML = ''; + this.chartTable!.innerHTML = ''; + this.inputElement!.value = ''; + this.spSystemTrace = this.parentElement!.querySelector('sp-system-trace'); + this.traceRowList = + this.spSystemTrace!.shadowRoot?.querySelector('div[class=rows-pane]')!.querySelectorAll>( + "trace-row[row-parent-id='']" + ); + let allowSceneList: Array = []; + TraceRowConfig.allTraceRowList.push(...this.traceRowList!); + this.traceRowList!.forEach((traceRow: TraceRow) => { + traceRow.setAttribute('scene', ''); + if (traceRow.templateType.length > 0) { + traceRow.templateType.forEach((type) => { + if (sceneList.indexOf(type) >= 0 && allowSceneList.indexOf(type) < 0) { + allowSceneList.push(type); + this.initConfigSceneTable(type); + } + }); + } + this.initConfigChartTable(traceRow); + }); + } + + initConfigSceneTable(item: string): void { + let spliceIndex = 1; + let div = document.createElement('div'); + div.className = 'scene-option-div'; + div.textContent = item; + let optionCheckBox: LitCheckBox = new LitCheckBox(); + optionCheckBox.checked = false; + optionCheckBox.style.justifySelf = 'center'; + optionCheckBox.style.height = '100%'; + optionCheckBox.title = item; + optionCheckBox.addEventListener('change', () => { + this.clearLines(optionCheckBox.title); + if (optionCheckBox.checked) { + this.selectTypeList!.push(item); + } else { + if (this.selectTypeList!.length > 0) { + let indexNum = this.selectTypeList!.indexOf(item); + this.selectTypeList!.splice(indexNum, spliceIndex); + } + } + this.resetChartOption(); + this.resetChartTable(); + }); + let htmlDivElement = document.createElement('div'); + htmlDivElement.style.display = 'grid'; + htmlDivElement.style.gridTemplateColumns = '1fr 1fr'; + htmlDivElement.appendChild(div); + htmlDivElement.appendChild(optionCheckBox); + this.sceneTable?.appendChild(htmlDivElement); + } + + clearLines(type: string) { + if (type === 'FrameTimeline' || type === 'AppStartup') { + this.spSystemTrace?.removeLinkLinesByBusinessType('janks'); + } else if (type === 'Task Pool') { + this.spSystemTrace?.removeLinkLinesByBusinessType('task'); + } + } + + initConfigChartTable(row: TraceRow): void { + let templateType = ''; + if (row.templateType.length > 0) { + templateType = row.templateType.reduce((pre, cur) => `${pre}:${cur}`); + } + let div = document.createElement('div'); + div.className = 'chart-option-div chart-item'; + div.textContent = row.name; + div.title = row.name; + div.setAttribute('search_text', row.name); + let optionCheckBox: LitCheckBox = new LitCheckBox(); + optionCheckBox.checked = true; + optionCheckBox.className = 'chart-config-check chart-item'; + optionCheckBox.style.height = '100%'; + optionCheckBox.style.justifySelf = 'center'; + optionCheckBox.title = templateType; + optionCheckBox.setAttribute('search_text', row.name); + optionCheckBox.addEventListener('change', () => { + if (row.folder) { + TraceRowConfig.allTraceRowList.forEach((chartRow): void => { + let upParentRow = chartRow; + while (upParentRow.hasParentRowEl) { + if (!upParentRow.parentRowEl) { + break; + } + upParentRow = upParentRow.parentRowEl; + } + if (upParentRow === row) { + if (optionCheckBox.checked) { + chartRow.rowHidden = false; + chartRow.setAttribute('scene', ''); + } else { + row.expansion = true; + chartRow.removeAttribute('scene'); + chartRow.rowHidden = true; + } + } + }); + } + if (optionCheckBox.checked) { + row.rowHidden = false; + row.setAttribute('scene', ''); + } else { + row.removeAttribute('scene'); + row.rowHidden = true; + } + this.refreshSystemPanel(); + }); + this.chartTable!.append(...[div, optionCheckBox]); + } + + resetChartOption(): void { + this.shadowRoot!.querySelectorAll('.chart-item').forEach((litCheckBox: LitCheckBox) => { + let isShowCheck: boolean = false; + if (this.selectTypeList!.length === 0) { + isShowCheck = true; + } else { + if (litCheckBox.title !== '') { + let divTemplateTypeList = litCheckBox.title.split(':'); + for (let index = 0; index < divTemplateTypeList.length; index++) { + let type = divTemplateTypeList[index]; + if (this.selectTypeList!.indexOf(type) >= 0) { + isShowCheck = true; + break; + } + } + } + } + litCheckBox.checked = isShowCheck; + }); + } + + resetChartTable(): void { + if (this.traceRowList && this.traceRowList.length > 0) { + this.traceRowList.forEach((traceRow: TraceRow) => { + let isShowRow: boolean = false; + if (this.selectTypeList!.length === 0) { + traceRow.rowHidden = false; + traceRow.setAttribute('scene', ''); + this.refreshChildRow(traceRow.childrenList, true); + } else { + for (let index = 0; index < traceRow.templateType!.length; index++) { + let type = traceRow.templateType![index]; + if (this.selectTypeList!.indexOf(type) >= 0) { + isShowRow = true; + break; + } + } + traceRow.expansion = false; + if (isShowRow) { + if (traceRow.templateType.length > 0) { + traceRow.rowHidden = false; + traceRow.setAttribute('scene', ''); + if (traceRow.childrenList && traceRow.childrenList.length > 0) { + this.refreshChildRow(traceRow.childrenList, isShowRow); + } + } + } else { + traceRow.removeAttribute('scene'); + traceRow.rowHidden = true; + this.refreshChildRow(traceRow.childrenList); + } + } + }); + this.spSystemTrace?.collectRows.forEach((favoriteRow) => { + let isShowRow: boolean = false; + if (this.selectTypeList!.length === 0) { + favoriteRow.rowHidden = false; + favoriteRow.setAttribute('scene', ''); + } else { + if (favoriteRow.parentRowEl) { + favoriteRow.parentRowEl.expansion = false; + for (let index = 0; index < favoriteRow.parentRowEl!.templateType!.length; index++) { + if (this.selectTypeList!.indexOf(favoriteRow.parentRowEl!.templateType![index]) >= 0) { + isShowRow = true; + break; + } + } + } else { + for (let index = 0; index < favoriteRow.templateType!.length; index++) { + if (this.selectTypeList!.indexOf(favoriteRow.templateType![index]) >= 0) { + isShowRow = true; + break; + } + } + } + if (isShowRow) { + favoriteRow.rowHidden = false; + favoriteRow.setAttribute('scene', ''); + } else { + favoriteRow.removeAttribute('scene'); + favoriteRow.rowHidden = true; + } + } + }); + this.refreshSystemPanel(); + } + } + + refreshChildRow(childRows: Array>, isShowScene: boolean = false): void { + childRows.forEach((row) => { + if (isShowScene) { + row.setAttribute('scene', ''); + if (row.childrenList && row.childrenList.length > 0) { + this.refreshChildRow(row.childrenList, isShowScene); + } + row.expansion = false; + } else { + row.removeAttribute('scene'); + row.rowHidden = true; + if (row.childrenList && row.childrenList.length > 0) { + this.refreshChildRow(row.childrenList); + } + } + }); + } + + refreshSystemPanel(): void { + this.clearSearchAndFlag(); + this.spSystemTrace!.rowsPaneEL!.scroll({ + top: 0 - this.spSystemTrace!.canvasPanel!.offsetHeight, + left: 0, + behavior: 'smooth', + }); + this.spSystemTrace!.refreshFavoriteCanvas(); + this.spSystemTrace!.refreshCanvas(true); + } + + clearSearchAndFlag(): void { + let traceSheet = this.spSystemTrace!.shadowRoot?.querySelector('.trace-sheet') as TraceSheet; + if (traceSheet) { + traceSheet!.setAttribute('mode', 'hidden'); + } + let search = document.querySelector('sp-application')!.shadowRoot?.querySelector('#lit-search') as LitSearch; + if (search) { + search.clear(); + } + let highlightRow = this.spSystemTrace!.shadowRoot?.querySelector>('trace-row[highlight]'); + if (highlightRow) { + highlightRow.highlight = false; + } + this.spSystemTrace!.timerShaftEL?.removeTriangle('inverted'); + CpuStruct.wakeupBean = undefined; + this.spSystemTrace!.hoverFlag = undefined; + this.spSystemTrace!.selectFlag = undefined; + } + + initElements(): void { } + + connectedCallback(): void { + this.sceneTable = this.shadowRoot!.querySelector('#scene-select'); + this.chartTable = this.shadowRoot!.querySelector('#chart-select'); + this.inputElement = this.shadowRoot!.querySelector('input'); + this.inputElement?.addEventListener('keyup', () => { + this.shadowRoot!.querySelectorAll('.chart-item').forEach((elementOption: HTMLElement) => { + let searchText = elementOption.getAttribute('search_text') || ''; + if (searchText!.indexOf(this.inputElement!.value) < 0) { + elementOption.style.display = 'none'; + } else { + elementOption.style.display = 'block'; + } + }); + this.value = this.inputElement!.value; + }); + } + + initHtml(): string { + return ` + +
+ Display Template + +
+
+
+ +
Template Select
+
+
+
+
+
+ +
Timeline Details
+
+
+ +
+ +
+
+
+
+
+`; + } + + attributeChangedCallback(name: string, oldValue: string, newValue: string): void { + if (name === 'mode' && newValue === '') { + this.init(); + } + } +} diff --git a/ide/src/base-ui/button/LitButton.ts b/ide/src/base-ui/button/LitButton.ts index c3604bf9b27d8be198f73658dd0bf87bf14b49c7..9c2c9b12db41cebea0d3d78c6742cb277ba0b344 100644 --- a/ide/src/base-ui/button/LitButton.ts +++ b/ide/src/base-ui/button/LitButton.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { BaseElement, element } from '../BaseElement.js'; +import { BaseElement, element } from '../BaseElement'; @element('lit-button') export class LitButton extends BaseElement { diff --git a/ide/src/base-ui/chart/column/LitChartColumn.ts b/ide/src/base-ui/chart/column/LitChartColumn.ts index 19ddfa533dec79e87c2247b4be09cc9817dd3e9b..acf163198c7d2c0030547063137abf11a29204b8 100644 --- a/ide/src/base-ui/chart/column/LitChartColumn.ts +++ b/ide/src/base-ui/chart/column/LitChartColumn.ts @@ -13,10 +13,10 @@ * limitations under the License. */ -import { BaseElement, element } from '../../BaseElement.js'; -import { LitChartColumnConfig } from './LitChartColumnConfig.js'; -import { resizeCanvas } from '../helper.js'; -import { getProbablyTime } from '../../../trace/database/logic-worker/ProcedureLogicWorkerCommon.js'; +import { BaseElement, element } from '../../BaseElement'; +import { LitChartColumnConfig } from './LitChartColumnConfig'; +import { resizeCanvas } from '../helper'; +import { getProbablyTime } from '../../../trace/database/logic-worker/ProcedureLogicWorkerCommon'; class Pillar { obj?: any; @@ -207,42 +207,40 @@ export class LitChartColumn extends BaseElement { for (let i = 0; i <= 5; i++) { this.rowLines.push({ y: gap * i, - label: this.litChartColumnCfg.removeUnit === true ? `${maxValue - valGap * i}` : `${getProbablyTime(maxValue - valGap * i)}`, + label: `${getProbablyTime(maxValue - valGap * i)}`, }); } - if (!this.litChartColumnCfg.notSort) { - this.litChartColumnCfg?.data - .sort((a, b) => b[this.litChartColumnCfg!.yField] - a[this.litChartColumnCfg!.yField]); - } - this.litChartColumnCfg?.data.forEach((litChartColumnItem, litChartColumnIndex, array) => { - this.data.push({ - color: this.litChartColumnCfg!.color(litChartColumnItem), - obj: litChartColumnItem, - root: true, - xLabel: litChartColumnItem[this.litChartColumnCfg!.xField], - yLabel: litChartColumnItem[this.litChartColumnCfg!.yField], - bgFrame: { - x: this.offset!.x! + partWidth * litChartColumnIndex, - y: 0, - w: partWidth, - h: partHeight, - }, - centerX: this.offset!.x! + partWidth * litChartColumnIndex + partWidth / 2, - centerY: - partHeight - - (litChartColumnItem[this.litChartColumnCfg!.yField] * partHeight) / maxValue + - (litChartColumnItem[this.litChartColumnCfg!.yField] * partHeight) / maxValue / 2, - frame: { - x: this.offset!.x! + partWidth * litChartColumnIndex + partWidth / 6, - y: partHeight - (litChartColumnItem[this.litChartColumnCfg!.yField] * partHeight) / maxValue, - w: partWidth - partWidth / 3, - h: (litChartColumnItem[this.litChartColumnCfg!.yField] * partHeight) / maxValue, - }, - height: 0, - heightStep: Math.ceil((litChartColumnItem[this.litChartColumnCfg!.yField] * partHeight) / maxValue / 60), - process: true, + this.litChartColumnCfg?.data + .sort((a, b) => b[this.litChartColumnCfg!.yField] - a[this.litChartColumnCfg!.yField]) + .forEach((litChartColumnItem, litChartColumnIndex, array) => { + this.data.push({ + color: this.litChartColumnCfg!.color(litChartColumnItem), + obj: litChartColumnItem, + root: true, + xLabel: litChartColumnItem[this.litChartColumnCfg!.xField], + yLabel: litChartColumnItem[this.litChartColumnCfg!.yField], + bgFrame: { + x: this.offset!.x! + partWidth * litChartColumnIndex, + y: 0, + w: partWidth, + h: partHeight, + }, + centerX: this.offset!.x! + partWidth * litChartColumnIndex + partWidth / 2, + centerY: + partHeight - + (litChartColumnItem[this.litChartColumnCfg!.yField] * partHeight) / maxValue + + (litChartColumnItem[this.litChartColumnCfg!.yField] * partHeight) / maxValue / 2, + frame: { + x: this.offset!.x! + partWidth * litChartColumnIndex + partWidth / 6, + y: partHeight - (litChartColumnItem[this.litChartColumnCfg!.yField] * partHeight) / maxValue, + w: partWidth - partWidth / 3, + h: (litChartColumnItem[this.litChartColumnCfg!.yField] * partHeight) / maxValue, + }, + height: 0, + heightStep: Math.ceil((litChartColumnItem[this.litChartColumnCfg!.yField] * partHeight) / maxValue / 60), + process: true, + }); }); - }); } else { let reduceGroup = this.litChartColumnCfg.data.reduce((pre, current, index, arr) => { (pre[current[this.litChartColumnCfg!.xField]] = pre[current[this.litChartColumnCfg!.xField]] || []).push( @@ -261,7 +259,7 @@ export class LitChartColumn extends BaseElement { for (let index = 0; index <= 5; index++) { this.rowLines.push({ y: gap * index, - label: `${getProbablyTime(maxValue - valGap * index)}`, + label: `${getProbablyTime(maxValue - valGap * index)} `, }); } Reflect.ownKeys(reduceGroup) diff --git a/ide/src/base-ui/chart/column/LitChartColumnConfig.ts b/ide/src/base-ui/chart/column/LitChartColumnConfig.ts index 0b3283a39fc36344fca5748856b757ac72e623fe..b508e8278349182ee2f1a533a1d24374657c32fd 100644 --- a/ide/src/base-ui/chart/column/LitChartColumnConfig.ts +++ b/ide/src/base-ui/chart/column/LitChartColumnConfig.ts @@ -19,16 +19,14 @@ export interface LitChartColumnConfig { xField: string; yField: string; seriesField: string; - notSort?: boolean; - removeUnit?: boolean; color: (a: any) => string; tip: ((a: any) => string) | undefined; hoverHandler?: (no: number) => void; label: - | { - offset: number; - content: (it: any) => string; - } - | undefined - | null; + | { + offset: number; + content: (it: any) => string; + } + | undefined + | null; } diff --git a/ide/src/base-ui/chart/pagenation/PaginationBox.ts b/ide/src/base-ui/chart/pagenation/PaginationBox.ts index eca0285ea2102a2165adb6557dae983dde7a79be..8c455d3af11634b8e210744555d6c2366d081a27 100644 --- a/ide/src/base-ui/chart/pagenation/PaginationBox.ts +++ b/ide/src/base-ui/chart/pagenation/PaginationBox.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { BaseElement, element } from '../../BaseElement.js'; +import { BaseElement, element } from '../../BaseElement'; @element('pagination-box') export class PaginationBox extends BaseElement { diff --git a/ide/src/base-ui/chart/pie/LitChartPie.ts b/ide/src/base-ui/chart/pie/LitChartPie.ts index a70f491bfdcbdc32ab49f5e359857c38c3b36869..55d6fe23efeaed93db3aa1e0d15f21a75e409b97 100644 --- a/ide/src/base-ui/chart/pie/LitChartPie.ts +++ b/ide/src/base-ui/chart/pie/LitChartPie.ts @@ -13,11 +13,11 @@ * limitations under the License. */ -import { resizeCanvas } from '../helper.js'; -import { BaseElement, element } from '../../BaseElement.js'; -import { LitChartPieConfig } from './LitChartPieConfig.js'; -import { isPointIsCircle, pieChartColors, randomRgbColor } from './LitChartPieData.js'; -import { Utils } from '../../../trace/component/trace/base/Utils.js'; +import { resizeCanvas } from '../helper'; +import { BaseElement, element } from '../../BaseElement'; +import { LitChartPieConfig } from './LitChartPieConfig'; +import { isPointIsCircle, pieChartColors, randomRgbColor } from './LitChartPieData'; +import { Utils } from '../../../trace/component/trace/base/Utils'; interface Rectangle { x: number; diff --git a/ide/src/base-ui/chart/scatter/LitChartScatter.ts b/ide/src/base-ui/chart/scatter/LitChartScatter.ts deleted file mode 100644 index 26d9f365327e30eb2bca6b25b4fee0e9733f82b3..0000000000000000000000000000000000000000 --- a/ide/src/base-ui/chart/scatter/LitChartScatter.ts +++ /dev/null @@ -1,546 +0,0 @@ -/* - * Copyright (C) 2023 Huawei Device Co., Ltd. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { resizeCanvas } from '../helper.js'; -import { BaseElement, element } from '../../BaseElement.js'; -import { LitChartScatterConfig } from "./LitChartScatterConfig.js"; - -@element('lit-chart-scatter') -export class LitChartScatter extends BaseElement { - private scatterTipEL: HTMLDivElement | null | undefined; - private labelsEL: HTMLDivElement | null | undefined; - canvas: HTMLCanvasElement | undefined | null; - canvas2: HTMLCanvasElement | undefined | null; - ctx: CanvasRenderingContext2D | undefined | null; - originX: number = 0; - finalX: number = 0; - originY: number = 0; - finalY: number = 0; - options: LitChartScatterConfig | undefined; - - set config(LitChartScatterConfig: LitChartScatterConfig) { - this.options = LitChartScatterConfig; - this.init(); - } - init(): void { - if (this.options) { - // 清楚上一次绘制的数据 - this.ctx?.clearRect(0, 0, this.clientWidth, this.clientHeight); - this.drawBackground(); - this.drawScatterChart(this.options); - //使用off-screen-canvas保存绘制的像素点 - this.setOffScreen(); - this.labelsEL!.innerText = this.options.title; - } - } - // 使用离屏技术保存绘制的像素点 - setOffScreen(): void { - this.canvas2 = document.createElement('canvas'); - this.canvas2.height = this.clientHeight; - this.canvas2.width = this.clientWidth; - let context2 = this.canvas2.getContext('2d'); - if (this.canvas?.width != 0 && this.canvas?.height != 0) { - context2!.drawImage(this.canvas!, 0, 0); - } - } - /*绘制渐变色背景*/ - drawBackground(): void { - let w: number = this.clientWidth; - let h: number = this.clientHeight; - let color: CanvasGradient = this.ctx?.createRadialGradient(w / 2, h / 2, 0.2 * w, w / 2, h / 2, 0.5 * w)!; - color?.addColorStop(0, '#eaeaea'); - color?.addColorStop(1, '#ccc'); - if (this.options) { - this.options!.globalGradient = color; - } - this.ctx?.save(); - this.ctx!.fillStyle = color; - this.ctx?.fillRect(0, 0, w, h); - this.ctx?.restore(); - } - /** - * 绘制散点图 - */ - drawScatterChart(options: LitChartScatterConfig): void { - this.drawAxis(options); //绘制坐标轴 - this.drawYLabels(options); //绘制y轴坐标 - this.drawXLabels(options); //绘制x轴坐标 - let drawload: boolean = false; - if (options) { - drawload = options.drawload; - } - if (drawload) { - let load: Array = []; - if (options) { - load = options.load; - this.drawBalanceLine(load);//绘制均衡线 - this.drawLoadLine(load);//绘制最大负载线 - } - } - this.drawData(options);//绘制散点图 - } - /** - * 绘制坐标轴 - */ - drawAxis(options: LitChartScatterConfig): void { - let text: Array = new Array(); - if (options) { - text = options.AxisLabel; - } - this.ctx!.font = "10px KATTI"; - this.ctx!.fillStyle = "#000000"; - this.ctx!.strokeStyle = "#000000"; - // 画x轴 - this.ctx?.beginPath(); - this.ctx?.moveTo(this.originX, this.originY); - this.ctx?.lineTo(this.finalX, this.originY); - this.ctx?.fillText(text[0], this.finalX, this.originY); - this.ctx?.stroke(); - // 画Y轴 - this.ctx?.beginPath(); - this.ctx?.moveTo(this.originX, this.originY); - this.ctx?.lineTo(this.originX, this.finalY); - this.ctx?.fillText(text[1], this.originX - 20, this.finalY - 10); - this.ctx?.stroke(); - } - /** - * 绘制y轴坐标 - */ - drawYLabels(options: LitChartScatterConfig): void { - // 添加原点刻度 - this.ctx!.font = "12px KATTI"; - this.ctx!.fillStyle = "#000000"; - this.ctx!.strokeStyle = "#000000"; - this.ctx?.fillText("0", this.originX - 5, this.originY + 10); - let yAxis: Array = []; - if (options) { - yAxis = options.yAxisLabel; - } - // 画Y轴坐标尺 - for (let i = 0; i < yAxis.length; i++) { - let length1 = ((this.originY - this.finalY) - ((this.originY - this.finalY) % 100)) * (yAxis[i] / yAxis[yAxis.length - 1]); - let length2 = this.originY - length1; - this.ctx?.beginPath(); - this.ctx?.moveTo(this.originX, length2); - this.ctx?.lineTo(this.originX + 5, length2); - this.ctx?.fillText(yAxis[i].toString(), this.originX - 40, length2 + 5); - this.ctx?.stroke(); - } - - } - /** - * 绘制x轴坐标 - */ - drawXLabels(options: LitChartScatterConfig): void { - // 画X轴坐标尺 - this.ctx!.fillStyle = "#000000"; - this.ctx!.strokeStyle = "#000000"; - let xAxis: Array = []; - if (options) { - xAxis = options.xAxisLabel; - } - for (let i = 0; i < xAxis.length; i++) { - let length3 = ((this.finalX - this.originX) - ((this.finalX - this.originX) % 100)) * (xAxis[i] / xAxis[xAxis.length - 1]); - let length4 = this.originX + length3; - this.ctx?.beginPath(); - this.ctx?.moveTo(length4, this.originY); - this.ctx?.lineTo(length4, this.originY - 5); - this.ctx?.fillText(xAxis[i].toString(), length4 - 5, this.originY + 10); - this.ctx?.stroke(); - } - } - - /** - * 绘制数据 - */ - drawData(options: LitChartScatterConfig): void { - let data: Array>> = []; - let yAxis: Array = []; - let xAxis: Array = []; - let colorPool: Array = new Array(); - let colorPoolText: Array = new Array(); - let rectY: number = this.clientHeight * 0.05; - if (options) { - data = options.data; - yAxis = options.yAxisLabel; - xAxis = options.xAxisLabel; - colorPool = options.colorPool(); - colorPoolText = options.colorPoolText(); - options.paintingData = [] - } - let xLength = ((this.finalX - this.originX) - ((this.finalX - this.originX) % 100)); - let yLength = ((this.originY - this.finalY) - ((this.originY - this.finalY) % 100)); - for (let i = 0; i < data.length; i++) { - for (let j = 0; j < data[i].length; j++) { - // 打点x坐标 - let x = this.originX + (data[i][j][0] / xAxis[xAxis.length - 1]) * xLength; - // 打点y坐标 - let y = this.originY - (data[i][j][1] / yAxis[yAxis.length - 1]) * yLength; - let r = 6; - if (i > 0) { - options.paintingData[data[i][j][2] - 1] = { - x, y, r, c: data[i][j], color: colorPool[i] - }; - } else { - options.paintingData.push({ - x, y, r, c: data[i][j], color: colorPool[i] - }); - } - this.drawCycle(x, y, r, 0.8, colorPool[i]); - } - if (data[i].length) { - rectY = rectY + 20; - this.ctx?.fillText(colorPoolText[i] + ": ", this.clientWidth - 70, rectY + 4); - this.drawCycle(this.clientWidth - 20, rectY, 7.5, 0.8, colorPool[i]); - } - } - } - /** - * 画圆点 - */ - drawCycle(x: number, y: number, r: number, transparency: number, color: string): void { - this.ctx!.fillStyle = color; - this.ctx?.beginPath(); - this.ctx!.globalAlpha = transparency; - this.ctx?.arc(x, y, r, 0, Math.PI * 2, true); - this.ctx?.closePath(); - this.ctx?.fill(); - - } - - /** - * 绘制最大负载线 - */ - drawLoadLine(data: Array): void { - let maxXAxis: number = 1; - if (this.options) { - maxXAxis = this.options.xAxisLabel[this.options.xAxisLabel.length - 1]; - } - // data[1]用来标注n Hz负载线 - let addr1: number = this.originX + ((this.finalX - this.originX) - ((this.finalX - this.originX) % 100)) * (data[0] / maxXAxis); - let addr2: number = ((this.originY - this.finalY) - ((this.originY - this.finalY) % 100)) / 60; - let y: number = this.originY; - this.ctx!.strokeStyle = "#ff0000"; - for (let i = 0; i < 60; i++) { - this.ctx?.beginPath(); - this.ctx?.moveTo(addr1, y); - y -= addr2; - this.ctx?.lineTo(addr1, y); - if (i % 2 != 0) { - this.ctx?.stroke(); - - } - } - this.ctx!.font = "10px KATTI"; - this.ctx!.fillStyle = "#ff0000"; - this.ctx?.fillText(data[1] + 'Hz最大负载线', addr1 - 20, this.originY - addr2 * 60 - 15); - this.ctx!.fillStyle = "#000000"; - this.ctx?.fillText('过供给区', addr1 / 2, y + 30); - this.ctx?.fillText('欠供给区', addr1 / 2, this.originY - this.finalY); - this.ctx?.fillText('超负载区', addr1 + 20, (this.finalY + this.originY) / 2); - } - - /** - * 绘制均衡线 - */ - drawBalanceLine(data: Array): void { - let maxXAxis: number = 1; - if (this.options) { - maxXAxis = this.options.xAxisLabel[this.options.xAxisLabel.length - 1]; - } - // data[1]用来标注n Hz均衡线 - let addr1: number = ((this.finalX - this.originX) - ((this.finalX - this.originX) % 100)) * (data[0] / maxXAxis) / 60; - let addr2: number = ((this.originY - this.finalY) - ((this.originY - this.finalY) % 100)) / 60; - let x: number = this.originX; - let y: number = this.originY; - this.ctx!.strokeStyle = "#00ff00"; - for (let i = 0; i < 60; i++) { - this.ctx?.beginPath(); - this.ctx?.moveTo(x, y); - x += addr1; - y -= addr2; - this.ctx?.lineTo(x, y); - if (i % 2 == 0) { - this.ctx?.stroke(); - - } - } - this.ctx?.save(); - this.ctx?.translate(addr1 * 25 + this.originX, addr2 * 40 + this.finalY); - this.ctx!.font = "10px KATTI"; - this.ctx!.fillStyle = "#ff0f00"; - this.ctx?.rotate(-Math.atan(addr2 / addr1)); - this.ctx?.fillText(data[1] + 'Hz均衡线', 0, 0); - this.ctx?.restore(); - } - - /*检测是否hover在散点之上*/ - checkHover(options: LitChartScatterConfig | undefined, pos: Object): Object | boolean { - let data: Array = []; - if (options) { - data = options.paintingData; - } - let found: boolean | Object = false; - for (let i = 0; i < data.length; i++) { - found = false; - // @ts-ignore - if (Math.sqrt(Math.pow(pos.x - data[i].x, 2) + Math.pow(pos.y - data[i].y, 2)) < data[i].r) { - found = data[i]; - break; - } - } - return found; - } - - /*绘制hover状态*/ - paintHover(): void { - let obj: Object | null = this.options!.hoverData; - // @ts-ignore - let x: number = obj?.x; - // @ts-ignore - let y: number = obj?.y; - // @ts-ignore - let r: number = obj?.r; - // @ts-ignore - let c: string = obj?.color; - let step: number = 0.5; - this.ctx!.globalAlpha = 1; - this.ctx!.fillStyle = c; - for (let i = 0; i < 10; i++) { - this.ctx?.beginPath(); - this.ctx?.arc(x, y, r + i * step, 0, 2 * Math.PI, false); - this.ctx?.fill(); - this.ctx?.closePath(); - } - } - //利用离屏canvas恢复hover前的状态 - resetHoverWithOffScreen(): void { - let obj: Object | null = null; - if (this.options) { - obj = this.options.hoverData; - } - if (!obj) return; - // @ts-ignore - let { x, y, r, c, color } = obj; - let step = 0.5; - this.ctx!.globalAlpha = 1; - for (let i = 10; i > 0; i--) { - this.ctx?.save(); - //绘制外圆范围 - this.ctx?.drawImage(this.canvas2!, x - r - 12 * step, y - r - 12 * step, 2 * (r + 12 * step), 2 * (r + 12 * step), x - r - 12 * step, y - r - 12 * step, 2 * (r + 12 * step), 2 * (r + 12 * step)); - //绘制内圆 - this.ctx?.beginPath(); - this.ctx?.arc(x, y, r + i * step, 0, 2 * Math.PI, false); - this.ctx?.closePath(); - this.ctx!.fillStyle = color; - this.ctx!.globalAlpha = 0.8; - //填充内圆 - this.ctx?.fill(); - this.ctx?.restore(); - } - this.options!.hoverData = null; - } - /** - * 显示提示框 - */ - showTip(data: any): void { - this.scatterTipEL!.style.display = 'flex'; - this.scatterTipEL!.style.top = `${data.y - 70}px`; - this.scatterTipEL!.style.left = `${data.x}px`; - this.scatterTipEL!.innerHTML = this.options!.tip(data); - // @ts-ignore - this.options!.hoverEvent('CPU-FREQ', true, data.c[2] - 1); - } - /** - * 隐藏提示框 - */ - hideTip(): void { - this.scatterTipEL!.style.display = 'none'; - if (this.options) { - // @ts-ignore - this.options!.hoverEvent('CPU-FREQ', false); - } - } - - connectedCallback(): void { - super.connectedCallback(); - this.canvas = this.shadowRoot!.querySelector('#canvas'); - this.scatterTipEL = this.shadowRoot!.querySelector('#tip'); - this.ctx = this.canvas!.getContext('2d', { alpha: true }); - this.labelsEL = this.shadowRoot!.querySelector('#shape'); - resizeCanvas(this.canvas!); - this.originX = this.clientWidth * 0.1; - this.originY = this.clientHeight * 0.9; - this.finalX = this.clientWidth; - this.finalY = this.clientHeight * 0.1; - - /*hover效果*/ - this.canvas!.onmousemove = (event) => { - let pos: Object = { - x: event.offsetX, - y: event.offsetY - } - let hoverPoint: Object | boolean = this.checkHover(this.options, pos); - /** - * 如果当前有聚焦点 - */ - if (hoverPoint) { - this.showTip(hoverPoint); - let samePoint: boolean = this.options!.hoverData === hoverPoint ? true : false; - if (!samePoint) { - this.resetHoverWithOffScreen(); - this.options!.hoverData = hoverPoint; - } - this.paintHover(); - } else { - //使用离屏canvas恢复 - this.resetHoverWithOffScreen(); - this.hideTip(); - } - } - } - - initElements(): void { - new ResizeObserver((entries, observer) => { - entries.forEach((it) => { - resizeCanvas(this.canvas!); - this.originX = this.clientWidth * 0.1; - this.originY = this.clientHeight * 0.95; - this.finalX = this.clientWidth * 0.9; - this.finalY = this.clientHeight * 0.1; - this.labelsEL!.innerText = ''; - this.init(); - }); - }).observe(this); - } - - initHtml(): string { - return ` - -
-
- -
-
-
`; - } -} - - - - - - - - - - - - - - - - - - - - - diff --git a/ide/src/base-ui/chart/scatter/LitChartScatterConfig.ts b/ide/src/base-ui/chart/scatter/LitChartScatterConfig.ts deleted file mode 100644 index bb9384ef58b212dd49306433d28ccee3798af676..0000000000000000000000000000000000000000 --- a/ide/src/base-ui/chart/scatter/LitChartScatterConfig.ts +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (C) 2023 Huawei Device Co., Ltd. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export interface LitChartScatterConfig { - // y轴坐标数组 - yAxisLabel: Array; - // x轴坐标数组 - xAxisLabel: Array; - // 坐标轴名称 - AxisLabel: Array; - // 用于判断是否绘制负载线及均衡线 - drawload: boolean; - // 用于存放最大负载线及均衡线的参数值 - load: Array; - // 打点数据 - data: Array>>; - // 用于存放绘图数据 - paintingData: Array; - // 用于存放移入点数据 - hoverData: Object | null; - // 渐变色信息 - globalGradient: CanvasGradient | undefined; - // 颜色池 - colorPool: () => Array; - // 移入事件 - hoverEvent: void; - // 图表名称 - title: string; - // 颜色数据名称 - colorPoolText: () => Array; - // 提示信息 - tip: (a: any) => string; -} \ No newline at end of file diff --git a/ide/src/base-ui/checkbox/LitCheckBox.ts b/ide/src/base-ui/checkbox/LitCheckBox.ts index 0e79fea302021ddb6dd40afb3134e2c7b57b6573..e4bede79354ba489007431b7e9b01a89dd62eab0 100644 --- a/ide/src/base-ui/checkbox/LitCheckBox.ts +++ b/ide/src/base-ui/checkbox/LitCheckBox.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { BaseElement, element } from '../BaseElement.js'; +import { BaseElement, element } from '../BaseElement'; @element('lit-check-box') export class LitCheckBox extends BaseElement { diff --git a/ide/src/base-ui/checkbox/LitCheckBoxWithText.ts b/ide/src/base-ui/checkbox/LitCheckBoxWithText.ts index cba91f29b9d76efee9bbc9297e0074c4e6fc2f61..9316e8c8ba49e89f033c318e5d2136397e7911b0 100644 --- a/ide/src/base-ui/checkbox/LitCheckBoxWithText.ts +++ b/ide/src/base-ui/checkbox/LitCheckBoxWithText.ts @@ -13,8 +13,8 @@ * limitations under the License. */ -import { BaseElement, element } from '../BaseElement.js'; -import { SpCheckDesBox } from '../../trace/component/setting/SpCheckDesBox.js'; +import { BaseElement, element } from '../BaseElement'; +import { SpCheckDesBox } from '../../trace/component/setting/SpCheckDesBox'; @element('lit-check-text') export class LitCheckBoxWithText extends BaseElement { diff --git a/ide/src/base-ui/checkbox/LitCheckGroup.ts b/ide/src/base-ui/checkbox/LitCheckGroup.ts index 7587ee6e4fc13b40a36604b1086aff4c76acbeba..4385189e76abca69a585014105c35fcdb3553080 100644 --- a/ide/src/base-ui/checkbox/LitCheckGroup.ts +++ b/ide/src/base-ui/checkbox/LitCheckGroup.ts @@ -13,8 +13,8 @@ * limitations under the License. */ -import { BaseElement, element } from '../BaseElement.js'; -import { LitCheckBox } from './LitCheckBox.js'; +import { BaseElement, element } from '../BaseElement'; +import { LitCheckBox } from './LitCheckBox'; @element('lit-check-group') export class LitCheckGroup extends BaseElement { diff --git a/ide/src/base-ui/drawer/LitDrawer.ts b/ide/src/base-ui/drawer/LitDrawer.ts index 08415d62b9b9bd7ef60f5fa3b1970875bb4500af..eefa2c307504def18faa1e2933deb8a70c1c714e 100644 --- a/ide/src/base-ui/drawer/LitDrawer.ts +++ b/ide/src/base-ui/drawer/LitDrawer.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { BaseElement, element } from '../BaseElement.js'; +import { BaseElement, element } from '../BaseElement'; @element('lit-drawer') export class LitDrawer extends BaseElement { diff --git a/ide/src/base-ui/headline/lit-headline.ts b/ide/src/base-ui/headline/lit-headline.ts index ed0e7c5ddd3a703141de6a5f48d1d072d5893947..0beed234ab19c6ab5b4d8752a3ecdd5469aafa6b 100644 --- a/ide/src/base-ui/headline/lit-headline.ts +++ b/ide/src/base-ui/headline/lit-headline.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { BaseElement, element } from '../BaseElement.js'; +import { BaseElement, element } from '../BaseElement'; @element('lit-headline') export class LitHeadLine extends BaseElement { diff --git a/ide/src/base-ui/icon.svg b/ide/src/base-ui/icon.svg index 3e4d09f3ff3cfc4c3d9efb85db2af2797f00efa2..5524fca98e5054aa8e4d7fc42259163beca1ecfb 100644 --- a/ide/src/base-ui/icon.svg +++ b/ide/src/base-ui/icon.svg @@ -475,4 +475,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ide/src/base-ui/icon/LitIcon.ts b/ide/src/base-ui/icon/LitIcon.ts index af2d22fb006537c6c27275399bc8c7e36e2ba41e..0ef82237c82edfd275f138dbd8078b49bd81ad1c 100644 --- a/ide/src/base-ui/icon/LitIcon.ts +++ b/ide/src/base-ui/icon/LitIcon.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { BaseElement, element } from '../BaseElement.js'; +import { BaseElement, element } from '../BaseElement'; @element('lit-icon') export class LitIcon extends BaseElement { diff --git a/ide/src/base-ui/menu/LitMainMenu.ts b/ide/src/base-ui/menu/LitMainMenu.ts index 1b6a0ce68e0a0dade902b757ea144a3af1bd1fc7..8a6f3760b64f5941914fd9f74eda7063910f0eec 100644 --- a/ide/src/base-ui/menu/LitMainMenu.ts +++ b/ide/src/base-ui/menu/LitMainMenu.ts @@ -13,11 +13,11 @@ * limitations under the License. */ -import { BaseElement, element } from '../BaseElement.js'; -import './LitMainMenuItem.js'; -import './LitMainMenuGroup.js'; -import { LitMainMenuGroup } from './LitMainMenuGroup.js'; -import { LitMainMenuItem } from './LitMainMenuItem.js'; +import { BaseElement, element } from '../BaseElement'; +import './LitMainMenuItem'; +import './LitMainMenuGroup'; +import { LitMainMenuGroup } from './LitMainMenuGroup'; +import { LitMainMenuItem } from './LitMainMenuItem'; @element('lit-main-menu') export class LitMainMenu extends BaseElement { diff --git a/ide/src/base-ui/menu/LitMainMenuGroup.ts b/ide/src/base-ui/menu/LitMainMenuGroup.ts index 6dcacf8be3424b2212ace26740b3df578b05a809..b9d0fbedf3a1e85c64f64763ef38dd5816aff85c 100644 --- a/ide/src/base-ui/menu/LitMainMenuGroup.ts +++ b/ide/src/base-ui/menu/LitMainMenuGroup.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { BaseElement, element } from '../BaseElement.js'; +import { BaseElement, element } from '../BaseElement'; @element('lit-main-menu-group') export class LitMainMenuGroup extends BaseElement { diff --git a/ide/src/base-ui/menu/LitMainMenuItem.ts b/ide/src/base-ui/menu/LitMainMenuItem.ts index 9a1e7793e9291e87d76b7a93727e000a85f9f6d9..fb8939516248865bf2e55dc197201e789e0ed595 100644 --- a/ide/src/base-ui/menu/LitMainMenuItem.ts +++ b/ide/src/base-ui/menu/LitMainMenuItem.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { BaseElement, element } from '../BaseElement.js'; +import { BaseElement, element } from '../BaseElement'; @element('lit-main-menu-item') export class LitMainMenuItem extends BaseElement { diff --git a/ide/src/base-ui/modal/LitModal.ts b/ide/src/base-ui/modal/LitModal.ts index 7471a369ec5404a29bf4406e2c86a8eda942b9b5..4f8800fe1ff2ef60a2e6b3f49989cc712f9a1cd8 100644 --- a/ide/src/base-ui/modal/LitModal.ts +++ b/ide/src/base-ui/modal/LitModal.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { BaseElement, element } from '../BaseElement.js'; +import { BaseElement, element } from '../BaseElement'; @element('lit-modal') export class LitModal extends BaseElement { diff --git a/ide/src/base-ui/popover/LitPopContent.ts b/ide/src/base-ui/popover/LitPopContent.ts index f78382bca16ced0b018c5cb87a4eca596ac66e5b..54fe0d502ef6932e24e5c62e8f3888b6196f6cea 100644 --- a/ide/src/base-ui/popover/LitPopContent.ts +++ b/ide/src/base-ui/popover/LitPopContent.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { BaseElement, element } from '../BaseElement.js'; +import { BaseElement, element } from '../BaseElement'; @element('lit-pop-content') export class LitPopContent extends BaseElement { diff --git a/ide/src/base-ui/popover/LitPopover.ts b/ide/src/base-ui/popover/LitPopover.ts index edc824a853fc3af1e8b220810b5dea0dc5d523cc..1413e2f56f27cf9f86d3a72d1f75f50ff068ff1a 100644 --- a/ide/src/base-ui/popover/LitPopover.ts +++ b/ide/src/base-ui/popover/LitPopover.ts @@ -13,14 +13,14 @@ * limitations under the License. */ -import { BaseElement, element } from '../BaseElement.js'; -import { LitPopContent } from './LitPopContent.js'; -import { LitPopoverTitle } from './LitPopoverTitle.js'; -import { LitRadioGroup } from '../radiobox/LitRadioGroup.js'; -import { LitRadioBox } from '../radiobox/LitRadioBox.js'; -import { LitCheckBox } from '../checkbox/LitCheckBox.js'; -import { LitCheckGroup } from '../checkbox/LitCheckGroup.js'; -import { LitCheckBoxWithText } from '../checkbox/LitCheckBoxWithText.js'; +import { BaseElement, element } from '../BaseElement'; +import { LitPopContent } from './LitPopContent'; +import { LitPopoverTitle } from './LitPopoverTitle'; +import { LitRadioGroup } from '../radiobox/LitRadioGroup'; +import { LitRadioBox } from '../radiobox/LitRadioBox'; +import { LitCheckBox } from '../checkbox/LitCheckBox'; +import { LitCheckGroup } from '../checkbox/LitCheckGroup'; +import { LitCheckBoxWithText } from '../checkbox/LitCheckBoxWithText'; @element('lit-popover') export class LitPopover extends BaseElement { diff --git a/ide/src/base-ui/popover/LitPopoverTitle.ts b/ide/src/base-ui/popover/LitPopoverTitle.ts index fa0d27d832a205e9b96cbb9d20547193bdddd118..dde0ecc161d3db0256e0ea5c9cabc57f2d7716d6 100644 --- a/ide/src/base-ui/popover/LitPopoverTitle.ts +++ b/ide/src/base-ui/popover/LitPopoverTitle.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { BaseElement, element } from '../BaseElement.js'; +import { BaseElement, element } from '../BaseElement'; @element('lit-popover-title') export class LitPopoverTitle extends BaseElement { diff --git a/ide/src/base-ui/popover/LitPopoverV.ts b/ide/src/base-ui/popover/LitPopoverV.ts index c3a02f89f6efd96ee880794bfc17731e65ff0a60..f8bf2f9d1c9cc8c8986fffa50e88ad8f8165393b 100644 --- a/ide/src/base-ui/popover/LitPopoverV.ts +++ b/ide/src/base-ui/popover/LitPopoverV.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { BaseElement, element } from '../BaseElement.js'; +import { BaseElement, element } from '../BaseElement'; @element('lit-popover') export class LitPopover extends BaseElement { diff --git a/ide/src/base-ui/progress-bar/LitProgressBar.ts b/ide/src/base-ui/progress-bar/LitProgressBar.ts index c1f19556642fd08afd239509b96875e0fa184af0..bd6050a813d114157055f140bae0f3572a2f3a04 100644 --- a/ide/src/base-ui/progress-bar/LitProgressBar.ts +++ b/ide/src/base-ui/progress-bar/LitProgressBar.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { BaseElement, element } from '../BaseElement.js'; +import { BaseElement, element } from '../BaseElement'; @element('lit-progress-bar') export class LitProgressBar extends BaseElement { diff --git a/ide/src/base-ui/radiobox/LitRadioBox.ts b/ide/src/base-ui/radiobox/LitRadioBox.ts index 92067fa3aa5cda5c2cda1cd2794a506bc0d0c48e..2b03964c012b4bd89859bf3cb4a84809959b86f3 100644 --- a/ide/src/base-ui/radiobox/LitRadioBox.ts +++ b/ide/src/base-ui/radiobox/LitRadioBox.ts @@ -13,8 +13,8 @@ * limitations under the License. */ -import { BaseElement, element } from '../BaseElement.js'; -import { LitRadioGroup } from './LitRadioGroup.js'; +import { BaseElement, element } from '../BaseElement'; +import { LitRadioGroup } from './LitRadioGroup'; @element('lit-radio') export class LitRadioBox extends BaseElement { diff --git a/ide/src/base-ui/radiobox/LitRadioGroup.ts b/ide/src/base-ui/radiobox/LitRadioGroup.ts index 866477a947277bfecf2c87fb79f2e8d42c06bc0d..dfa2e280b14cf10a5be6cba27fb53553d1cdfac1 100644 --- a/ide/src/base-ui/radiobox/LitRadioGroup.ts +++ b/ide/src/base-ui/radiobox/LitRadioGroup.ts @@ -13,8 +13,8 @@ * limitations under the License. */ -import { BaseElement, element } from '../BaseElement.js'; -import { LitRadioBox } from './LitRadioBox.js'; +import { BaseElement, element } from '../BaseElement'; +import { LitRadioBox } from './LitRadioBox'; @element('lit-radio-group') export class LitRadioGroup extends BaseElement { diff --git a/ide/src/base-ui/select/LitAllocationSelect.ts b/ide/src/base-ui/select/LitAllocationSelect.ts index 53f187bde6be045d13ddf17750af0199a91e865a..51ed28370be1803dd17b25b332447f5c3e6219ef 100644 --- a/ide/src/base-ui/select/LitAllocationSelect.ts +++ b/ide/src/base-ui/select/LitAllocationSelect.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { BaseElement, element } from '../BaseElement.js'; +import { BaseElement, element } from '../BaseElement'; @element('lit-allocation-select') export class LitAllocationSelect extends BaseElement { diff --git a/ide/src/base-ui/select/LitSelect.ts b/ide/src/base-ui/select/LitSelect.ts index ad6e60f1d2fa64490a1667f119310a393ed5cdee..d010c17e3f76eed8e9302acac9d29ed0ffcc79c7 100644 --- a/ide/src/base-ui/select/LitSelect.ts +++ b/ide/src/base-ui/select/LitSelect.ts @@ -13,8 +13,8 @@ * limitations under the License. */ -import { BaseElement, element } from '../BaseElement.js'; -import { selectHtmlStr } from './LitSelectHtml.js'; +import { BaseElement, element } from '../BaseElement'; +import { selectHtmlStr } from './LitSelectHtml'; @element('lit-select') export class LitSelect extends BaseElement { diff --git a/ide/src/base-ui/select/LitSelectOption.ts b/ide/src/base-ui/select/LitSelectOption.ts index 5c7afc8ce8fda677143dd45b06318621d212052a..46310bbc685ad58356da5fad90bed7fde0dd5545 100644 --- a/ide/src/base-ui/select/LitSelectOption.ts +++ b/ide/src/base-ui/select/LitSelectOption.ts @@ -13,8 +13,8 @@ * limitations under the License. */ -import { BaseElement } from '../BaseElement.js'; -import '../icon/LitIcon.js'; +import { BaseElement } from '../BaseElement'; +import '../icon/LitIcon'; export class LitSelectOption extends BaseElement { static get observedAttributes() { diff --git a/ide/src/base-ui/select/LitSelectV.ts b/ide/src/base-ui/select/LitSelectV.ts index fd050676eccd054d7a1cfe349c84b43502095c86..340b1330e9ed0f86a2d377270b30e6a27a0ececc 100644 --- a/ide/src/base-ui/select/LitSelectV.ts +++ b/ide/src/base-ui/select/LitSelectV.ts @@ -13,9 +13,9 @@ * limitations under the License. */ -import { BaseElement, element } from '../BaseElement.js'; -import { LitSelectOption } from './LitSelectOption.js'; -import { selectHtmlStr } from './LitSelectHtml.js'; +import { BaseElement, element } from '../BaseElement'; +import { LitSelectOption } from './LitSelectOption'; +import { selectHtmlStr } from './LitSelectHtml'; @element('lit-select-v') export class LitSelectV extends BaseElement { diff --git a/ide/src/base-ui/slider/LitSlider.ts b/ide/src/base-ui/slider/LitSlider.ts index c608bec9973dcbd116e634a97d6c7654963bf96f..68e8eec623844b713471ba52f96f014ef723e836 100644 --- a/ide/src/base-ui/slider/LitSlider.ts +++ b/ide/src/base-ui/slider/LitSlider.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { BaseElement, element } from '../BaseElement.js'; +import { BaseElement, element } from '../BaseElement'; @element('lit-slider') export class LitSlider extends BaseElement { diff --git a/ide/src/base-ui/switch/lit-switch.ts b/ide/src/base-ui/switch/lit-switch.ts index 98f214e2c9f75e50949943a3289b20aa5b8947b2..20520b008b00d7d7989aca6a822bf879020030f4 100644 --- a/ide/src/base-ui/switch/lit-switch.ts +++ b/ide/src/base-ui/switch/lit-switch.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { BaseElement, element } from '../BaseElement.js'; +import { BaseElement, element } from '../BaseElement'; @element('lit-switch') export default class LitSwitch extends BaseElement { diff --git a/ide/src/base-ui/table/LitPageTable.ts b/ide/src/base-ui/table/LitPageTable.ts index 5bf5f914b887e579f5f897944dbfaf7a201d1067..48b8aec440a5f70237c94bfb4c596231c708b0b8 100644 --- a/ide/src/base-ui/table/LitPageTable.ts +++ b/ide/src/base-ui/table/LitPageTable.ts @@ -13,12 +13,12 @@ * limitations under the License. */ -import { LitTableColumn } from './lit-table-column.js'; -import { LitProgressBar } from './../progress-bar/LitProgressBar.js'; -import { BaseElement, element } from '../BaseElement.js'; -import '../utils/Template.js'; -import { TableRowObject } from './TableRowObject.js'; -import { JSONToCSV } from '../utils/CSVFormater.js'; +import { LitTableColumn } from './lit-table-column'; +import { LitProgressBar } from './../progress-bar/LitProgressBar'; +import { BaseElement, element } from '../BaseElement'; +import '../utils/Template'; +import { TableRowObject } from './TableRowObject'; +import { JSONToCSV } from '../utils/CSVFormater'; @element('lit-page-table') export class LitPageTable extends BaseElement { diff --git a/ide/src/base-ui/table/lit-table-column.ts b/ide/src/base-ui/table/lit-table-column.ts index ba00a4d3a172503aeecd742fea0b1353657570e7..0807bb01a7ec6ef9359cc1f2feb1a23508a024ee 100644 --- a/ide/src/base-ui/table/lit-table-column.ts +++ b/ide/src/base-ui/table/lit-table-column.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { element } from '../BaseElement.js'; +import { element } from '../BaseElement'; @element('lit-table-column') export class LitTableColumn extends HTMLElement { diff --git a/ide/src/base-ui/table/lit-table-group.ts b/ide/src/base-ui/table/lit-table-group.ts index 700e5a81c06fa197ecc7197d058fce6f297a3bc6..d33649c9a070944c4b5ad3f89d5755f537cb5c1f 100644 --- a/ide/src/base-ui/table/lit-table-group.ts +++ b/ide/src/base-ui/table/lit-table-group.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { element } from '../BaseElement.js'; +import { element } from '../BaseElement'; @element('lit-table-group') export class LitTableGroup extends HTMLElement { diff --git a/ide/src/base-ui/table/lit-table.ts b/ide/src/base-ui/table/lit-table.ts index a85f196ed5583b3a44f94bb7d9c39898045d0b88..a71e36461da600e00029593ef4d657c9a7330751 100644 --- a/ide/src/base-ui/table/lit-table.ts +++ b/ide/src/base-ui/table/lit-table.ts @@ -13,17 +13,17 @@ * limitations under the License. */ -import { LitTableColumn } from './lit-table-column.js'; -import { LitProgressBar } from './../progress-bar/LitProgressBar.js'; -import { element } from '../BaseElement.js'; -import '../utils/Template.js'; -import { TableRowObject } from './TableRowObject.js'; -import { ExcelFormater } from '../utils/ExcelFormater.js'; -import { JSONToCSV } from '../utils/CSVFormater.js'; -import { NodeType } from '../../js-heap/model/DatabaseStruct.js'; -import { ConstructorType } from '../../js-heap/model/UiStruct.js'; -import { LitIcon } from '../icon/LitIcon.js'; -import { JsCpuProfilerStatisticsStruct } from '../../trace/bean/JsStruct.js'; +import { LitTableColumn } from './lit-table-column'; +import { LitProgressBar } from './../progress-bar/LitProgressBar'; +import { element } from '../BaseElement'; +import '../utils/Template'; +import { TableRowObject } from './TableRowObject'; +import { ExcelFormater } from '../utils/ExcelFormater'; +import { JSONToCSV } from '../utils/CSVFormater'; +import { NodeType } from '../../js-heap/model/DatabaseStruct'; +import { ConstructorType } from '../../js-heap/model/UiStruct'; +import { LitIcon } from '../icon/LitIcon'; +import { JsCpuProfilerStatisticsStruct } from '../../trace/bean/JsStruct'; const iconWidth = 20; const iconPadding = 5; @element('lit-table') diff --git a/ide/src/base-ui/tabs/lit-tabpane.ts b/ide/src/base-ui/tabs/lit-tabpane.ts index 358749fdc19ace8c4d5b88cbe1a1778d687be02f..d8d7446947ed92f7f967e8938e1b7d5d2760dbf3 100644 --- a/ide/src/base-ui/tabs/lit-tabpane.ts +++ b/ide/src/base-ui/tabs/lit-tabpane.ts @@ -13,8 +13,8 @@ * limitations under the License. */ -import { BaseElement, element } from '../BaseElement.js'; -import { LitTabs } from './lit-tabs.js'; +import { BaseElement, element } from '../BaseElement'; +import { LitTabs } from './lit-tabs'; @element('lit-tabpane') export class LitTabpane extends BaseElement { diff --git a/ide/src/base-ui/tabs/lit-tabs.ts b/ide/src/base-ui/tabs/lit-tabs.ts index 34ba64b3c3733d00731bde850cfaecda6d1513ef..1187d8bc7242b6a7f8f1b7b11c954536fb57b104 100644 --- a/ide/src/base-ui/tabs/lit-tabs.ts +++ b/ide/src/base-ui/tabs/lit-tabs.ts @@ -13,9 +13,9 @@ * limitations under the License. */ -import { element } from '../BaseElement.js'; -import { LitTabpane } from './lit-tabpane.js'; -import { SpStatisticsHttpUtil } from '../../statistics/util/SpStatisticsHttpUtil.js'; +import { element } from '../BaseElement'; +import { LitTabpane } from './lit-tabpane'; +import { SpStatisticsHttpUtil } from '../../statistics/util/SpStatisticsHttpUtil'; @element('lit-tabs') export class LitTabs extends HTMLElement { diff --git a/ide/src/base-ui/tree/LitTree.ts b/ide/src/base-ui/tree/LitTree.ts index 86ab8286ccbcdd3849abd9ac79d71e4cf12bc2e9..a5f9e04955bfcd0070bf1e6fa2ca19fe25fa4097 100644 --- a/ide/src/base-ui/tree/LitTree.ts +++ b/ide/src/base-ui/tree/LitTree.ts @@ -13,9 +13,9 @@ * limitations under the License. */ -import './LitTreeNode.js'; -import { BaseElement, element } from '../BaseElement.js'; -import { type LitTreeNode } from './LitTreeNode.js'; +import './LitTreeNode'; +import { BaseElement, element } from '../BaseElement'; +import { type LitTreeNode } from './LitTreeNode'; export interface TreeItemData { key: string; diff --git a/ide/src/base-ui/tree/LitTreeNode.ts b/ide/src/base-ui/tree/LitTreeNode.ts index 748508653a20e75b92405fcbb52bd8045e4a62ff..f33ce5193311cf7d97cdd328bb0e2ea872f434a3 100644 --- a/ide/src/base-ui/tree/LitTreeNode.ts +++ b/ide/src/base-ui/tree/LitTreeNode.ts @@ -13,10 +13,10 @@ * limitations under the License. */ -import '../icon/LitIcon.js'; -import { BaseElement, element } from '../BaseElement.js'; -import { type LitIcon } from '../icon/LitIcon.js'; -import { type TreeItemData } from './LitTree.js'; +import '../icon/LitIcon'; +import { BaseElement, element } from '../BaseElement'; +import { type LitIcon } from '../icon/LitIcon'; +import { type TreeItemData } from './LitTree'; @element('lit-tree-node') export class LitTreeNode extends BaseElement { diff --git a/ide/src/command/Cmd.ts b/ide/src/command/Cmd.ts index 9ce0e28c87825253b5643de0f0ef08cdc9c57633..f1ab49b978671e794e0443d2669a189639689dff 100644 --- a/ide/src/command/Cmd.ts +++ b/ide/src/command/Cmd.ts @@ -13,9 +13,9 @@ * limitations under the License. */ -import { SpRecordTrace } from '../trace/component/SpRecordTrace.js'; -import { CmdConstant } from './CmdConstant.js'; -import { HdcDeviceManager } from '../hdc/HdcDeviceManager.js'; +import { SpRecordTrace } from '../trace/component/SpRecordTrace'; +import { CmdConstant } from './CmdConstant'; +import { HdcDeviceManager } from '../hdc/HdcDeviceManager'; export class Cmd { static CmdSendPostUtils(uri: string, callback: Function, requestData: any) { diff --git a/ide/src/hdc/HdcDeviceManager.ts b/ide/src/hdc/HdcDeviceManager.ts index 6f484b16075e8ecca1ada30ac6f75b736f6186d2..3aa0ca9bf2029857d0b421df8fa1449e6a2335c6 100644 --- a/ide/src/hdc/HdcDeviceManager.ts +++ b/ide/src/hdc/HdcDeviceManager.ts @@ -13,15 +13,15 @@ * limitations under the License. */ -import { HdcClient } from './hdcclient/HdcClient.js'; -import { UsbTransmissionChannel } from './transmission/UsbTransmissionChannel.js'; -import { HDC_DEVICE_FILTERS } from './common/ConstantType.js'; -import { FormatCommand } from './hdcclient/FormatCommand.js'; -import { log } from '../log/Log.js'; -import { HdcStream } from './hdcclient/HdcStream.js'; -import { HdcCommand } from './hdcclient/HdcCommand.js'; -import { SpRecordTrace } from '../trace/component/SpRecordTrace.js'; -import { DataMessage } from './message/DataMessage.js'; +import { HdcClient } from './hdcclient/HdcClient'; +import { UsbTransmissionChannel } from './transmission/UsbTransmissionChannel'; +import { HDC_DEVICE_FILTERS } from './common/ConstantType'; +import { FormatCommand } from './hdcclient/FormatCommand'; +import { log } from '../log/Log'; +import { HdcStream } from './hdcclient/HdcStream'; +import { HdcCommand } from './hdcclient/HdcCommand'; +import { SpRecordTrace } from '../trace/component/SpRecordTrace'; +import { DataMessage } from './message/DataMessage'; export class HdcDeviceManager { static escapeCharacterDict = { diff --git a/ide/src/hdc/common/Serialize.ts b/ide/src/hdc/common/Serialize.ts index a4201d929be3b885e195e979198c3adced562c11..6b912a8390e85c3cc2920179cf2df7ae3cb35007 100644 --- a/ide/src/hdc/common/Serialize.ts +++ b/ide/src/hdc/common/Serialize.ts @@ -13,12 +13,12 @@ * limitations under the License. */ -import { WireType } from '../message/WireType.js'; -import { SessionHandShake } from '../message/SessionHandShake.js'; -import { PayloadProtect } from '../message/PayloadProtect.js'; -import { TransferConfig } from '../message/TransferConfig.js'; -import { TransferPayload } from '../message/TransferPayload.js'; -import { log } from '../../log/Log.js'; +import { WireType } from '../message/WireType'; +import { SessionHandShake } from '../message/SessionHandShake'; +import { PayloadProtect } from '../message/PayloadProtect'; +import { TransferConfig } from '../message/TransferConfig'; +import { TransferPayload } from '../message/TransferPayload'; +import { log } from '../../log/Log'; export class Serialize { static bannerByteLength: number = 8; diff --git a/ide/src/hdc/common/Utils.ts b/ide/src/hdc/common/Utils.ts index 84ba571056c8a48802920f0f4f89fe63803057e2..8450eea7421a0c3f03f7e1154ce6ecd95fc5a607 100644 --- a/ide/src/hdc/common/Utils.ts +++ b/ide/src/hdc/common/Utils.ts @@ -13,8 +13,8 @@ * limitations under the License. */ -import { FormatCommand } from '../hdcclient/FormatCommand.js'; -import { warn } from '../../log/Log.js'; +import { FormatCommand } from '../hdcclient/FormatCommand'; +import { warn } from '../../log/Log'; export class Utils { private static localId = 1; diff --git a/ide/src/hdc/hdcclient/AsyncQueue.ts b/ide/src/hdc/hdcclient/AsyncQueue.ts index 3b2099451a99096dd43cb431424afa42e691b361..d2ffe40f0212f4b10e34eff2c8259ff5ed36f175 100644 --- a/ide/src/hdc/hdcclient/AsyncQueue.ts +++ b/ide/src/hdc/hdcclient/AsyncQueue.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { DataMessage } from '../message/DataMessage.js'; +import { DataMessage } from '../message/DataMessage'; export class DataMessageQueue { private eleArray: Array; diff --git a/ide/src/hdc/hdcclient/DataListener.ts b/ide/src/hdc/hdcclient/DataListener.ts index b741e1fa223ed416cf2bb1165b3a0df3924204a4..cc7860b477e7e0d7a9a8b179201ef6faf0d8c3c0 100644 --- a/ide/src/hdc/hdcclient/DataListener.ts +++ b/ide/src/hdc/hdcclient/DataListener.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { DataMessage } from '../message/DataMessage.js'; +import { DataMessage } from '../message/DataMessage'; export interface DataListener { createDataMessage(data: DataMessage): void; diff --git a/ide/src/hdc/hdcclient/FormatCommand.ts b/ide/src/hdc/hdcclient/FormatCommand.ts index 46eeab31f7628aca790d7dcf40a285e6dab14547..766b470a0f6fa79905b1ded4f4aa3a9c371d2f27 100644 --- a/ide/src/hdc/hdcclient/FormatCommand.ts +++ b/ide/src/hdc/hdcclient/FormatCommand.ts @@ -13,9 +13,9 @@ * limitations under the License. */ -import { HdcCommand } from './HdcCommand.js'; -import { CMDSTR_FILE_RECV, CMDSTR_FILE_SEND, CMDSTR_SHELL } from '../common/ConstantType.js'; -import { log } from '../../log/Log.js'; +import { HdcCommand } from './HdcCommand'; +import { CMDSTR_FILE_RECV, CMDSTR_FILE_SEND, CMDSTR_SHELL } from '../common/ConstantType'; +import { log } from '../../log/Log'; export class FormatCommand { cmdFlag: number; // uint16_t diff --git a/ide/src/hdc/hdcclient/HdcClient.ts b/ide/src/hdc/hdcclient/HdcClient.ts index 241af4c1a53c41bc9acd0d4362a7f106685f58ac..b82a837953ac0b66cb065f33dd9983b84a58c590 100644 --- a/ide/src/hdc/hdcclient/HdcClient.ts +++ b/ide/src/hdc/hdcclient/HdcClient.ts @@ -13,21 +13,21 @@ * limitations under the License. */ -import { Serialize } from '../common/Serialize.js'; -import { HdcCommand } from './HdcCommand.js'; -import { Utils } from '../common/Utils.js'; -import { HANDSHAKE_MESSAGE } from '../common/ConstantType.js'; -import { PayloadHead } from '../message/PayloadHead.js'; -import { TransmissionInterface } from '../transmission/TransmissionInterface.js'; -import { DataProcessing } from '../transmission/DataProcessing.js'; -import { DataListener } from './DataListener.js'; -import { DataMessage } from '../message/DataMessage.js'; -import { SessionHandShake } from '../message/SessionHandShake.js'; -import { AuthType } from '../message/AuthType.js'; -import { debug, log } from '../../log/Log.js'; -import { HdcStream } from './HdcStream.js'; -import { toHex16 } from '../common/BaseConversion.js'; -import { USBHead } from '../message/USBHead.js'; +import { Serialize } from '../common/Serialize'; +import { HdcCommand } from './HdcCommand'; +import { Utils } from '../common/Utils'; +import { HANDSHAKE_MESSAGE } from '../common/ConstantType'; +import { PayloadHead } from '../message/PayloadHead'; +import { TransmissionInterface } from '../transmission/TransmissionInterface'; +import { DataProcessing } from '../transmission/DataProcessing'; +import { DataListener } from './DataListener'; +import { DataMessage } from '../message/DataMessage'; +import { SessionHandShake } from '../message/SessionHandShake'; +import { AuthType } from '../message/AuthType'; +import { debug, log } from '../../log/Log'; +import { HdcStream } from './HdcStream'; +import { toHex16 } from '../common/BaseConversion'; +import { USBHead } from '../message/USBHead'; export class HdcClient implements DataListener { // @ts-ignore diff --git a/ide/src/hdc/hdcclient/HdcStream.ts b/ide/src/hdc/hdcclient/HdcStream.ts index 8f2249798b851dc4ff1c65223cf28f4f32984bcf..a97a7640f7223a5c010be68d869a0103b2a0050b 100644 --- a/ide/src/hdc/hdcclient/HdcStream.ts +++ b/ide/src/hdc/hdcclient/HdcStream.ts @@ -13,14 +13,14 @@ * limitations under the License. */ -import { DataMessage } from '../message/DataMessage.js'; -import { HdcClient } from './HdcClient.js'; -import { FormatCommand } from './FormatCommand.js'; -import { HdcCommand } from './HdcCommand.js'; -import { Utils } from '../common/Utils.js'; -import { AsyncQueue } from './AsyncQueue.js'; -import { PayloadHead } from '../message/PayloadHead.js'; -import { Serialize } from '../common/Serialize.js'; +import { DataMessage } from '../message/DataMessage'; +import { HdcClient } from './HdcClient'; +import { FormatCommand } from './FormatCommand'; +import { HdcCommand } from './HdcCommand'; +import { Utils } from '../common/Utils'; +import { AsyncQueue } from './AsyncQueue'; +import { PayloadHead } from '../message/PayloadHead'; +import { Serialize } from '../common/Serialize'; export class HdcStream { private dataMessages: AsyncQueue = new AsyncQueue(); diff --git a/ide/src/hdc/message/DataMessage.ts b/ide/src/hdc/message/DataMessage.ts index 811205a352fe7b18aa97942134a1c2e8de9bb0e0..28894dea809ffa427e7c8f1055cdd712a8787787 100644 --- a/ide/src/hdc/message/DataMessage.ts +++ b/ide/src/hdc/message/DataMessage.ts @@ -13,12 +13,12 @@ * limitations under the License. */ -import { USBHead } from './USBHead.js'; -import { debug, log } from '../../log/Log.js'; -import { PayloadHead } from './PayloadHead.js'; -import { Serialize } from '../common/Serialize.js'; -import { Utils } from '../common/Utils.js'; -import { HdcCommand } from '../hdcclient/HdcCommand.js'; +import { USBHead } from './USBHead'; +import { debug, log } from '../../log/Log'; +import { PayloadHead } from './PayloadHead'; +import { Serialize } from '../common/Serialize'; +import { Utils } from '../common/Utils'; +import { HdcCommand } from '../hdcclient/HdcCommand'; export class DataMessage extends Object { body?: DataView; diff --git a/ide/src/hdc/message/PayloadHead.ts b/ide/src/hdc/message/PayloadHead.ts index cea209a9892ad845560fc0d484906a6b7c3bb189..46c1c9423db7c15d3a5af63caa90e0c075dea0a7 100644 --- a/ide/src/hdc/message/PayloadHead.ts +++ b/ide/src/hdc/message/PayloadHead.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { BaseBean } from './BaseBean.js'; +import { BaseBean } from './BaseBean'; export class PayloadHead extends Object implements BaseBean { private _flag: Array = [0, 0]; //uint8_t ct.c_uint8 * 2 diff --git a/ide/src/hdc/message/PayloadProtect.ts b/ide/src/hdc/message/PayloadProtect.ts index bc5a935df1645ae142fcd1831691289c2596e0ac..9b40b2a77a12e0091c8419216737c8fedb2373a8 100644 --- a/ide/src/hdc/message/PayloadProtect.ts +++ b/ide/src/hdc/message/PayloadProtect.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { BaseBean } from './BaseBean.js'; +import { BaseBean } from './BaseBean'; export class PayloadProtect extends Object implements BaseBean { // reserve for encrypt and decrypt diff --git a/ide/src/hdc/message/SessionHandShake.ts b/ide/src/hdc/message/SessionHandShake.ts index a256f76c3047bece31c8ff95530b88fe56cecb61..ac609354555c7b072e65ba74ad789587feb99fff 100644 --- a/ide/src/hdc/message/SessionHandShake.ts +++ b/ide/src/hdc/message/SessionHandShake.ts @@ -13,9 +13,9 @@ * limitations under the License. */ -import { AuthType } from './AuthType.js'; -import { HANDSHAKE_MESSAGE } from '../common/ConstantType.js'; -import { BaseBean } from './BaseBean.js'; +import { AuthType } from './AuthType'; +import { HANDSHAKE_MESSAGE } from '../common/ConstantType'; +import { BaseBean } from './BaseBean'; export class SessionHandShake extends Object implements BaseBean { private _banner: string = HANDSHAKE_MESSAGE; // string must first index diff --git a/ide/src/hdc/message/USBHead.ts b/ide/src/hdc/message/USBHead.ts index 1da3cda47272f70f787016172f0754e3da5487c3..3c60dae02748e7292e77fbf72de43f8c546ab11f 100644 --- a/ide/src/hdc/message/USBHead.ts +++ b/ide/src/hdc/message/USBHead.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { BaseBean } from './BaseBean.js'; +import { BaseBean } from './BaseBean'; export class USBHead extends Object implements BaseBean { private _flag: number[]; // uint8_t 'flag', ct.c_uint8 * 2 flag[2] 2 diff --git a/ide/src/hdc/transmission/DataProcessing.ts b/ide/src/hdc/transmission/DataProcessing.ts index 0b7d6491f3fe78d062a7c4e49e3bfe9905902960..446b7c455f41359a847d1e267429d0e5995bb2f3 100644 --- a/ide/src/hdc/transmission/DataProcessing.ts +++ b/ide/src/hdc/transmission/DataProcessing.ts @@ -13,17 +13,17 @@ * limitations under the License. */ -import { TransmissionInterface } from './TransmissionInterface.js'; -import { PACKET_FLAG, USB_PACKET_FLAG } from '../common/ConstantType.js'; -import { USBHead } from '../message/USBHead.js'; -import { DataMessage } from '../message/DataMessage.js'; -import { DataListener } from '../hdcclient/DataListener.js'; -import { PayloadProtect } from '../message/PayloadProtect.js'; -import { Serialize } from '../common/Serialize.js'; -import { PayloadHead } from '../message/PayloadHead.js'; -import { UsbProtocolOption } from '../hdcclient/UsbProtocolOption.js'; -import { toHex16 } from '../common/BaseConversion.js'; -import { error, log } from '../../log/Log.js'; +import { TransmissionInterface } from './TransmissionInterface'; +import { PACKET_FLAG, USB_PACKET_FLAG } from '../common/ConstantType'; +import { USBHead } from '../message/USBHead'; +import { DataMessage } from '../message/DataMessage'; +import { DataListener } from '../hdcclient/DataListener'; +import { PayloadProtect } from '../message/PayloadProtect'; +import { Serialize } from '../common/Serialize'; +import { PayloadHead } from '../message/PayloadHead'; +import { UsbProtocolOption } from '../hdcclient/UsbProtocolOption'; +import { toHex16 } from '../common/BaseConversion'; +import { error, log } from '../../log/Log'; export class DataProcessing { private readonly transmissionChannel: TransmissionInterface; diff --git a/ide/src/hdc/transmission/UsbTransmissionChannel.ts b/ide/src/hdc/transmission/UsbTransmissionChannel.ts index 976517912b34c1ec2cfaf098dc2cd173c7d438ca..c1a3798df2fea65d37712404f3b86e1448ab0fce 100644 --- a/ide/src/hdc/transmission/UsbTransmissionChannel.ts +++ b/ide/src/hdc/transmission/UsbTransmissionChannel.ts @@ -13,9 +13,9 @@ * limitations under the License. */ -import { TransmissionInterface } from './TransmissionInterface.js'; -import { info } from '../../log/Log.js'; -import { HDC_DEVICE_FILTER } from '../common/ConstantType.js'; +import { TransmissionInterface } from './TransmissionInterface'; +import { info } from '../../log/Log'; +import { HDC_DEVICE_FILTER } from '../common/ConstantType'; export interface matchingUsbDevice { configurationValue: number; diff --git a/ide/src/index.ts b/ide/src/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..e704a70afb6f4fd2a62eddd93b102ee952d68f44 --- /dev/null +++ b/ide/src/index.ts @@ -0,0 +1,3 @@ +import "./trace/SpApplication"; +import {SpApplication} from "./trace/SpApplication"; +document.body.innerHTML = ""; \ No newline at end of file diff --git a/ide/src/js-heap/HeapDataInterface.ts b/ide/src/js-heap/HeapDataInterface.ts index 9c3ac75d68af9e9b6003bdb4a2f9a6ddfe33d588..d5afab0a0a40e7220b6ee3127e2eab5dd9d4ab0b 100644 --- a/ide/src/js-heap/HeapDataInterface.ts +++ b/ide/src/js-heap/HeapDataInterface.ts @@ -13,16 +13,16 @@ * limitations under the License. */ -import { HeapLoader } from './logic/HeapLoader.js'; +import { HeapLoader } from './logic/HeapLoader'; import { AllocationFunction, ConstructorComparison, ConstructorItem, ConstructorType, FileInfo, -} from './model/UiStruct.js'; -import { HeapNodeToConstructorItem } from './utils/Utils.js'; -import { FileStruct, HeapSample, HeapTraceFunctionInfo } from './model/DatabaseStruct.js'; +} from './model/UiStruct'; +import { HeapNodeToConstructorItem } from './utils/Utils'; +import { FileStruct, HeapSample, HeapTraceFunctionInfo } from './model/DatabaseStruct'; export interface ParseListener { parseDone(fileModule: Array): void; diff --git a/ide/src/js-heap/LoadDatabase.ts b/ide/src/js-heap/LoadDatabase.ts index af3c2d3177d5d7c1719d744041cced24b90278b6..0357eae83d807f8a2f4974da6ecd9af52a718a59 100644 --- a/ide/src/js-heap/LoadDatabase.ts +++ b/ide/src/js-heap/LoadDatabase.ts @@ -12,10 +12,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { HeapDataInterface, ParseListener } from './HeapDataInterface.js'; -import { AllocationFunction, FileType } from './model/UiStruct.js'; -import { getTimeForLog } from './utils/Utils.js'; -import { HeapNode, FileStruct } from './model/DatabaseStruct.js'; +import { HeapDataInterface, ParseListener } from './HeapDataInterface'; +import { AllocationFunction, FileType } from './model/UiStruct'; +import { getTimeForLog } from './utils/Utils'; +import { HeapNode, FileStruct } from './model/DatabaseStruct'; import { queryHeapFile, queryHeapInfo, @@ -25,8 +25,8 @@ import { queryHeapTraceNode, queryHeapSample, queryHeapString, -} from '../trace/database/SqlLite.js'; -import { info } from '../log/Log.js'; +} from '../trace/database/SqlLite'; +import { info } from '../log/Log'; export class LoadDatabase { private static loadDB: LoadDatabase; diff --git a/ide/src/js-heap/logic/Allocation.ts b/ide/src/js-heap/logic/Allocation.ts index a910d2473f78a0bb4906c2ea59ef589404e2a577..72a1733a1648c0acf6534353b60fdce84451532f 100644 --- a/ide/src/js-heap/logic/Allocation.ts +++ b/ide/src/js-heap/logic/Allocation.ts @@ -13,8 +13,8 @@ * limitations under the License. */ -import { AllocationFunction } from '../model/UiStruct.js'; -import { FileStruct, HeapTraceFunctionInfo } from '../model/DatabaseStruct.js'; +import { AllocationFunction } from '../model/UiStruct'; +import { FileStruct, HeapTraceFunctionInfo } from '../model/DatabaseStruct'; export class AllocationLogic { private fileStruct: FileStruct; diff --git a/ide/src/js-heap/logic/HeapLoader.ts b/ide/src/js-heap/logic/HeapLoader.ts index 3bfcbb69d060ea144c96bd19c125f79e6ff74727..920d6e2e3398153a707f71b233a994f68d21d468 100644 --- a/ide/src/js-heap/logic/HeapLoader.ts +++ b/ide/src/js-heap/logic/HeapLoader.ts @@ -13,8 +13,8 @@ * limitations under the License. */ -import { AllocationLogic } from './Allocation.js'; -import { AllocationFunction, ConstructorComparison, ConstructorItem, ConstructorType } from '../model/UiStruct.js'; +import { AllocationLogic } from './Allocation'; +import { AllocationFunction, ConstructorComparison, ConstructorItem, ConstructorType } from '../model/UiStruct'; import { DetachedNessState, EdgeType, @@ -24,8 +24,8 @@ import { HeapSample, HeapTraceFunctionInfo, NodeType, -} from '../model/DatabaseStruct.js'; -import { HeapNodeToConstructorItem } from '../utils/Utils.js'; +} from '../model/DatabaseStruct'; +import { HeapNodeToConstructorItem } from '../utils/Utils'; const BASE_SYSTEM_DISTANCE = 100000000; const CAN_BE_QUERIED = 1; diff --git a/ide/src/js-heap/model/DatabaseStruct.ts b/ide/src/js-heap/model/DatabaseStruct.ts index 4112d19b0c55249e2086f118548cd65956e1f7e3..8751f9286afe0916243dc6afb303a0c87bf30b6e 100644 --- a/ide/src/js-heap/model/DatabaseStruct.ts +++ b/ide/src/js-heap/model/DatabaseStruct.ts @@ -13,8 +13,8 @@ * limitations under the License. */ -import { HeapLoader } from '../logic/HeapLoader.js'; -import { AllocationFunction, FileInfo } from './UiStruct.js'; +import { HeapLoader } from '../logic/HeapLoader'; +import { AllocationFunction, FileInfo } from './UiStruct'; export enum EdgeType { CONTEXT = 0, diff --git a/ide/src/js-heap/model/UiStruct.ts b/ide/src/js-heap/model/UiStruct.ts index 02555a42ae898d680bd0dd456dfc3db4418946de..2c27bad7ce76a63ac70e3501df3131d7ebf0283d 100644 --- a/ide/src/js-heap/model/UiStruct.ts +++ b/ide/src/js-heap/model/UiStruct.ts @@ -13,8 +13,8 @@ * limitations under the License. */ -import { HeapDataInterface } from '../HeapDataInterface.js'; -import { EdgeType, NodeType } from './DatabaseStruct.js'; +import { HeapDataInterface } from '../HeapDataInterface'; +import { EdgeType, NodeType } from './DatabaseStruct'; const ROW_TYPE = 'js-memory'; export enum FileType { SNAPSHOT, diff --git a/ide/src/js-heap/utils/Utils.ts b/ide/src/js-heap/utils/Utils.ts index 462a9b0e6885ed0b97bbe0df6cb7c7c3cdb3f38f..3f0f947c230914549a2b2517968fa5217d56a21a 100644 --- a/ide/src/js-heap/utils/Utils.ts +++ b/ide/src/js-heap/utils/Utils.ts @@ -13,8 +13,8 @@ * limitations under the License. */ -import { HeapNode } from '../model/DatabaseStruct.js'; -import { ConstructorComparison } from '../model/UiStruct.js'; +import { HeapNode } from '../model/DatabaseStruct'; +import { ConstructorComparison } from '../model/UiStruct'; export function HeapNodeToConstructorItem(node: HeapNode): ConstructorComparison { let constructor = new ConstructorComparison(); diff --git a/ide/src/statistics/util/SpStatisticsHttpUtil.ts b/ide/src/statistics/util/SpStatisticsHttpUtil.ts index 0273215f46a0e9fc3c07c80b12f8299875d320fe..1b88dbc8eca7c7871cd0a86b9668461a7f4ea291 100644 --- a/ide/src/statistics/util/SpStatisticsHttpUtil.ts +++ b/ide/src/statistics/util/SpStatisticsHttpUtil.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { BurialPointRequestBody } from './SpStatisticsHttpBean.js'; +import { BurialPointRequestBody } from './SpStatisticsHttpBean'; export class SpStatisticsHttpUtil { static requestServerInfo: string = ''; diff --git a/ide/src/trace/SpApplication.ts b/ide/src/trace/SpApplication.ts index 299f7d8095164045d00ea4287df7ec9f240f1169..5b760f70cfa593b7987758790998f6f7569c97d2 100644 --- a/ide/src/trace/SpApplication.ts +++ b/ide/src/trace/SpApplication.ts @@ -13,51 +13,50 @@ * limitations under the License. */ -import { BaseElement, element } from '../base-ui/BaseElement.js'; -import '../base-ui/menu/LitMainMenu.js'; -import '../base-ui/icon/LitIcon.js'; -import { SpMetrics } from './component/SpMetrics.js'; -import { SpHelp } from './component/SpHelp.js'; -import './component/SpHelp.js'; -import { SpQuerySQL } from './component/SpQuerySQL.js'; -import './component/SpQuerySQL.js'; -import { SpSystemTrace } from './component/SpSystemTrace.js'; -import { LitMainMenu, MenuItem } from '../base-ui/menu/LitMainMenu.js'; -import { SpInfoAndStats } from './component/SpInfoAndStas.js'; -import '../base-ui/progress-bar/LitProgressBar.js'; -import { LitProgressBar } from '../base-ui/progress-bar/LitProgressBar.js'; -import { SpRecordTrace } from './component/SpRecordTrace.js'; -import { SpWelcomePage } from './component/SpWelcomePage.js'; -import { LitSearch } from './component/trace/search/Search.js'; -import { DbPool, queryExistFtrace, queryTraceType, threadPool } from './database/SqlLite.js'; -import './component/trace/search/Search.js'; -import './component/SpWelcomePage.js'; -import './component/SpSystemTrace.js'; -import './component/SpRecordTrace.js'; -import './component/SpMetrics.js'; -import './component/SpInfoAndStas.js'; -import './component/trace/base/TraceRow.js'; -import './component/schedulingAnalysis/SpSchedulingAnalysis.js'; -import { info, log } from '../log/Log.js'; -import { LitMainMenuGroup } from '../base-ui/menu/LitMainMenuGroup.js'; -import { LitMainMenuItem } from '../base-ui/menu/LitMainMenuItem.js'; -import { LitIcon } from '../base-ui/icon/LitIcon.js'; -import { Cmd } from '../command/Cmd.js'; -import { TraceRow } from './component/trace/base/TraceRow.js'; -import { SpSchedulingAnalysis } from './component/schedulingAnalysis/SpSchedulingAnalysis.js'; -import './component/trace/base/TraceRowConfig.js'; -import { TraceRowConfig } from './component/trace/base/TraceRowConfig.js'; -import { ColorUtils } from './component/trace/base/ColorUtils.js'; -import { SpStatisticsHttpUtil } from '../statistics/util/SpStatisticsHttpUtil.js'; -import { FlagsConfig, SpFlags } from './component/SpFlags.js'; -import './component/SpFlags.js'; -import './component/trace/base/CustomThemeColor.js'; -import { CustomThemeColor, Theme } from './component/trace/base/CustomThemeColor.js'; -import { convertPool } from './database/Convert.js'; -import { LongTraceDBUtils } from './database/LongTraceDBUtils.js'; -import { type SpKeyboard } from './component/SpKeyboard.js'; -import './component/SpKeyboard.js'; -import "../base-ui/chart/scatter/LitChartScatter.js"; +import { BaseElement, element } from '../base-ui/BaseElement'; +import '../base-ui/menu/LitMainMenu'; +import '../base-ui/icon/LitIcon'; +import { SpMetrics } from './component/SpMetrics'; +import { SpHelp } from './component/SpHelp'; +import './component/SpHelp'; +import { SpQuerySQL } from './component/SpQuerySQL'; +import './component/SpQuerySQL'; +import { SpSystemTrace } from './component/SpSystemTrace'; +import { LitMainMenu, MenuItem } from '../base-ui/menu/LitMainMenu'; +import { SpInfoAndStats } from './component/SpInfoAndStas'; +import '../base-ui/progress-bar/LitProgressBar'; +import { LitProgressBar } from '../base-ui/progress-bar/LitProgressBar'; +import { SpRecordTrace } from './component/SpRecordTrace'; +import { SpWelcomePage } from './component/SpWelcomePage'; +import { LitSearch } from './component/trace/search/Search'; +import { DbPool, queryExistFtrace, queryTraceType, threadPool } from './database/SqlLite'; +import './component/trace/search/Search'; +import './component/SpWelcomePage'; +import './component/SpSystemTrace'; +import './component/SpRecordTrace'; +import './component/SpMetrics'; +import './component/SpInfoAndStas'; +import './component/trace/base/TraceRow'; +import './component/schedulingAnalysis/SpSchedulingAnalysis'; +import { info, log } from '../log/Log'; +import { LitMainMenuGroup } from '../base-ui/menu/LitMainMenuGroup'; +import { LitMainMenuItem } from '../base-ui/menu/LitMainMenuItem'; +import { LitIcon } from '../base-ui/icon/LitIcon'; +import { Cmd } from '../command/Cmd'; +import { TraceRow } from './component/trace/base/TraceRow'; +import { SpSchedulingAnalysis } from './component/schedulingAnalysis/SpSchedulingAnalysis'; +import './component/trace/base/TraceRowConfig'; +import { TraceRowConfig } from './component/trace/base/TraceRowConfig'; +import { ColorUtils } from './component/trace/base/ColorUtils'; +import { SpStatisticsHttpUtil } from '../statistics/util/SpStatisticsHttpUtil'; +import { FlagsConfig, SpFlags } from './component/SpFlags'; +import './component/SpFlags'; +import './component/trace/base/CustomThemeColor'; +import { CustomThemeColor, Theme } from './component/trace/base/CustomThemeColor'; +import { convertPool } from './database/Convert'; +import { LongTraceDBUtils } from './database/LongTraceDBUtils'; +import { type SpKeyboard } from './component/SpKeyboard'; +import './component/SpKeyboard'; @element('sp-application') export class SpApplication extends BaseElement { @@ -556,7 +555,7 @@ export class SpApplication extends BaseElement { - + diff --git a/ide/src/trace/bean/AbilityMonitor.ts b/ide/src/trace/bean/AbilityMonitor.ts index 8134d316c5e7287663dbd6aa05cbce90b5c0b400..668191d25433e8382c6f9ea7f9985a0cb2e9997c 100644 --- a/ide/src/trace/bean/AbilityMonitor.ts +++ b/ide/src/trace/bean/AbilityMonitor.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { CompareStruct } from '../component/trace/sheet/SheetUtils.js'; +import { CompareStruct } from '../component/trace/sheet/SheetUtils'; export class SystemCpuSummary { startTime: number = -1; diff --git a/ide/src/trace/bean/BaseStruct.ts b/ide/src/trace/bean/BaseStruct.ts index 303a1b3915dca7dcd2f919829d0d0c53fe1bd813..040c3300ad2513b86dd161fd0eab5af8cf789ed5 100644 --- a/ide/src/trace/bean/BaseStruct.ts +++ b/ide/src/trace/bean/BaseStruct.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { Rect } from '../component/trace/timer-shaft/Rect.js'; +import { Rect } from '../component/trace/timer-shaft/Rect'; export class BaseStruct { frame: Rect | undefined; diff --git a/ide/src/trace/bean/BinderProcessThread.ts b/ide/src/trace/bean/BinderProcessThread.ts deleted file mode 100644 index 71acc0433e3b008dcbe3e3121be9c5d8029cb8a8..0000000000000000000000000000000000000000 --- a/ide/src/trace/bean/BinderProcessThread.ts +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (C) 2022 Huawei Device Co., Ltd. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export class BinderGroup { - title: string | null | undefined = ''; - count: number = 0; - totalCount: number = 0; - binderAsyncRcvCount?: number = 0; - binderReplyCount?: number = 0; - binderTransactionAsyncCount?: number = 0; - binderTransactionCount?: number = 0; - tid: number = 0; - pid: number = 0; - thread: string = ''; - process: string = ''; - name: string = ''; - cycleStartTime: number = 0; - cycleDur: number = 0; - id: number = 0; - children?: Array; - type?: string = ''; - status?: boolean = false; - idx: number = 0; -} - -export class DataSource { - xName: string = ''; - yAverage: number = 0; -} - -export class FuncNameCycle { - funcName: string = ''; - cycleStartTime: number = 0; - cycleDur: number = 0; - startTime: number = 0; - endTime: number = 0; - id: number = 0; - tid: number = 0; - pid: number = 0; -} - -export class BinderColumn { - name: string = ''; - count: number = 0; - dur: number = 0; - startNS: number = 0; - idx: number = 0 -} \ No newline at end of file diff --git a/ide/src/trace/bean/BoxSelection.ts b/ide/src/trace/bean/BoxSelection.ts index 9301a08f0b9d9da8304e7565ac8e3652d98ee8fe..d840ebc383f6992e419f9e414a0917cd67746dff 100644 --- a/ide/src/trace/bean/BoxSelection.ts +++ b/ide/src/trace/bean/BoxSelection.ts @@ -13,16 +13,16 @@ * limitations under the License. */ -import { CpuFreqLimitsStruct } from '../database/ui-worker/ProcedureWorkerCpuFreqLimits.js'; -import { ClockStruct } from '../database/ui-worker/ProcedureWorkerClock.js'; -import { IrqStruct } from '../database/ui-worker/ProcedureWorkerIrq.js'; -import { FuncStruct } from '../database/ui-worker/ProcedureWorkerFunc.js'; -import { FrameDynamicStruct } from '../database/ui-worker/ProcedureWorkerFrameDynamic.js'; -import { FrameAnimationStruct } from '../database/ui-worker/ProcedureWorkerFrameAnimation.js'; -import { FrameSpacingStruct } from '../database/ui-worker/ProcedureWorkerFrameSpacing.js'; -import { JsCpuProfilerChartFrame } from './JsStruct.js'; -import { LogStruct } from '../database/ui-worker/ProcedureWorkerLog.js'; -import { HiSysEventStruct } from '../database/ui-worker/ProcedureWorkerHiSysEvent.js'; +import { CpuFreqLimitsStruct } from '../database/ui-worker/ProcedureWorkerCpuFreqLimits'; +import { ClockStruct } from '../database/ui-worker/ProcedureWorkerClock'; +import { IrqStruct } from '../database/ui-worker/ProcedureWorkerIrq'; +import { FuncStruct } from '../database/ui-worker/ProcedureWorkerFunc'; +import { FrameDynamicStruct } from '../database/ui-worker/ProcedureWorkerFrameDynamic'; +import { FrameAnimationStruct } from '../database/ui-worker/ProcedureWorkerFrameAnimation'; +import { FrameSpacingStruct } from '../database/ui-worker/ProcedureWorkerFrameSpacing'; +import { JsCpuProfilerChartFrame } from './JsStruct'; +import { LogStruct } from '../database/ui-worker/ProcedureWorkerLog'; +import { HiSysEventStruct } from '../database/ui-worker/ProcedureWorkerHiSysEvent'; export class SelectionParam { recordStartNs: number = 0; diff --git a/ide/src/trace/bean/CpuFreqStruct.ts b/ide/src/trace/bean/CpuFreqStruct.ts index eb76553d0b981306de65d2984e85c24877ee9a70..fe4545185454a97628b11e4e0de29191c1f40922 100644 --- a/ide/src/trace/bean/CpuFreqStruct.ts +++ b/ide/src/trace/bean/CpuFreqStruct.ts @@ -13,8 +13,8 @@ * limitations under the License. */ -import { ColorUtils } from '../component/trace/base/ColorUtils.js'; -import { BaseStruct } from './BaseStruct.js'; +import { ColorUtils } from '../component/trace/base/ColorUtils'; +import { BaseStruct } from './BaseStruct'; export class CpuFreqStruct extends BaseStruct { static maxFreq: number = 0; diff --git a/ide/src/trace/bean/CpuStruct.ts b/ide/src/trace/bean/CpuStruct.ts index 5a6752cf82268d0f90382c03ab0cc6f827d80662..09218cb4ce94879854b64073289e32ebc2002b4c 100644 --- a/ide/src/trace/bean/CpuStruct.ts +++ b/ide/src/trace/bean/CpuStruct.ts @@ -13,9 +13,9 @@ * limitations under the License. */ -import { ColorUtils } from '../component/trace/base/ColorUtils.js'; -import { BaseStruct } from './BaseStruct.js'; -import { WakeupBean } from './WakeupBean.js'; +import { ColorUtils } from '../component/trace/base/ColorUtils'; +import { BaseStruct } from './BaseStruct'; +import { WakeupBean } from './WakeupBean'; export class CpuStruct extends BaseStruct { static cpuCount: number; //最大cpu数量 diff --git a/ide/src/trace/bean/EbpfStruct.ts b/ide/src/trace/bean/EbpfStruct.ts index 3bd187e9e42344b76a0b85d0f030bcaba432abb2..992dab3f94533ab882bdc8a1307763d8b58fe279 100644 --- a/ide/src/trace/bean/EbpfStruct.ts +++ b/ide/src/trace/bean/EbpfStruct.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { PerfLevelStruct } from './PerfProfile.js'; +import { PerfLevelStruct } from './PerfProfile'; export class CallTreeLevelStruct extends PerfLevelStruct { typeId?: number; diff --git a/ide/src/trace/bean/FpsStruct.ts b/ide/src/trace/bean/FpsStruct.ts index bd705aed958c4e4b5115b724c164226b476393f3..0a3b98abbee92b9bea575bbf00df2ba7efe2ec70 100644 --- a/ide/src/trace/bean/FpsStruct.ts +++ b/ide/src/trace/bean/FpsStruct.ts @@ -13,10 +13,10 @@ * limitations under the License. */ -import { Rect } from '../component/trace/timer-shaft/Rect.js'; -import { BaseStruct } from './BaseStruct.js'; +import { Rect } from '../component/trace/timer-shaft/Rect'; +import { BaseStruct } from './BaseStruct'; -import { ns2x } from '../component/trace/TimerShaftElement.js'; +import { ns2x } from '../component/trace/TimerShaftElement'; export class FpsStruct extends BaseStruct { static maxFps: number = 0; diff --git a/ide/src/trace/bean/FrameChartStruct.ts b/ide/src/trace/bean/FrameChartStruct.ts index 3841acb38ef7f51b7e568f191b9be7e64accc94c..2e8b2c883e1ded8089eb2f1df8f04c95b85eb208 100644 --- a/ide/src/trace/bean/FrameChartStruct.ts +++ b/ide/src/trace/bean/FrameChartStruct.ts @@ -13,10 +13,10 @@ * limitations under the License. */ -import { SpApplication } from '../SpApplication.js'; -import { Rect } from '../component/trace/timer-shaft/Rect.js'; -import { warn } from '../../log/Log.js'; -import { BaseStruct, drawString } from '../database/ui-worker/ProcedureWorkerCommon.js'; +import { SpApplication } from '../SpApplication'; +import { Rect } from '../component/trace/timer-shaft/Rect'; +import { warn } from '../../log/Log'; +import { BaseStruct, drawString } from '../database/ui-worker/ProcedureWorkerCommon'; const padding: number = 1; const rectHeight = 20; diff --git a/ide/src/trace/bean/FuncStruct.ts b/ide/src/trace/bean/FuncStruct.ts index ab073cd3ab88824b32a4879d224f684e946a2920..399e9b90f43b4b63ddd94f41092a54716f3f6dcc 100644 --- a/ide/src/trace/bean/FuncStruct.ts +++ b/ide/src/trace/bean/FuncStruct.ts @@ -13,10 +13,10 @@ * limitations under the License. */ -import { BaseStruct } from './BaseStruct.js'; -import { Rect } from '../component/trace/timer-shaft/Rect.js'; -import { ColorUtils } from '../component/trace/base/ColorUtils.js'; -import { drawString } from '../database/ui-worker/ProcedureWorkerCommon.js'; +import { BaseStruct } from './BaseStruct'; +import { Rect } from '../component/trace/timer-shaft/Rect'; +import { ColorUtils } from '../component/trace/base/ColorUtils'; +import { drawString } from '../database/ui-worker/ProcedureWorkerCommon'; export class FuncStruct extends BaseStruct { static hoverFuncStruct: FuncStruct | undefined; diff --git a/ide/src/trace/bean/HeapStruct.ts b/ide/src/trace/bean/HeapStruct.ts index db3d89de90220154006ea7cb7639af535078d3c7..74a03ee30eedd4f48a64568ca18297edab13f8f6 100644 --- a/ide/src/trace/bean/HeapStruct.ts +++ b/ide/src/trace/bean/HeapStruct.ts @@ -13,9 +13,9 @@ * limitations under the License. */ -import { BaseStruct } from './BaseStruct.js'; -import { ns2x } from '../component/trace/TimerShaftElement.js'; -import { Rect } from '../component/trace/timer-shaft/Rect.js'; +import { BaseStruct } from './BaseStruct'; +import { ns2x } from '../component/trace/TimerShaftElement'; +import { Rect } from '../component/trace/timer-shaft/Rect'; export class HeapStruct extends BaseStruct { static hoverHeapStruct: HeapStruct | undefined; diff --git a/ide/src/trace/bean/JanksStruct.ts b/ide/src/trace/bean/JanksStruct.ts index f0367b201a7af0572e97df035b3029d86fe23916..1ba1592cba704bcdadfde0791f44f071c2ccd03d 100644 --- a/ide/src/trace/bean/JanksStruct.ts +++ b/ide/src/trace/bean/JanksStruct.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { BaseStruct } from './BaseStruct.js'; +import { BaseStruct } from './BaseStruct'; export class JanksStruct extends BaseStruct { static hoverJankStruct: JanksStruct | undefined; diff --git a/ide/src/trace/bean/JsStruct.ts b/ide/src/trace/bean/JsStruct.ts index e2a42f2d16eb31a301688050d9d6b7a423a7ca34..a94bc0204a54184cf3b606e0fb57cbb96e37e316 100644 --- a/ide/src/trace/bean/JsStruct.ts +++ b/ide/src/trace/bean/JsStruct.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { SampleType } from '../database/logic-worker/ProcedureLogicWorkerJsCpuProfiler.js'; +import { SampleType } from '../database/logic-worker/ProcedureLogicWorkerJsCpuProfiler'; const ROW_TYPE = 'cpu-profiler'; export class JsCpuProfilerUIStruct { name: string; diff --git a/ide/src/trace/bean/NativeHook.ts b/ide/src/trace/bean/NativeHook.ts index e5a617fce1cdd82a2608921ab5c33110f9992a19..bda0b664a2646e5d897ea3645035288a8ffd216c 100644 --- a/ide/src/trace/bean/NativeHook.ts +++ b/ide/src/trace/bean/NativeHook.ts @@ -13,8 +13,8 @@ * limitations under the License. */ -import { Utils } from '../component/trace/base/Utils.js'; -import { ChartStruct } from '../bean/FrameChartStruct.js'; +import { Utils } from '../component/trace/base/Utils'; +import { ChartStruct } from '../bean/FrameChartStruct'; export class NativeHookStatistics { eventId: number = 0; diff --git a/ide/src/trace/bean/PerfProfile.ts b/ide/src/trace/bean/PerfProfile.ts index d8293e94d0eb9272c0a843a52654870730831076..8e067db57883b33c614cfac7810c939667303bad 100644 --- a/ide/src/trace/bean/PerfProfile.ts +++ b/ide/src/trace/bean/PerfProfile.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { ChartStruct } from '../bean/FrameChartStruct.js'; +import { ChartStruct } from '../bean/FrameChartStruct'; export class PerfFile { path: string = ''; diff --git a/ide/src/trace/bean/ProcessMemStruct.ts b/ide/src/trace/bean/ProcessMemStruct.ts index ce71a220541684fde0d9955579bb437211521e85..6e733e4838bec0d554036ad8113b50f72bcce8ed 100644 --- a/ide/src/trace/bean/ProcessMemStruct.ts +++ b/ide/src/trace/bean/ProcessMemStruct.ts @@ -13,8 +13,8 @@ * limitations under the License. */ -import { BaseStruct } from './BaseStruct.js'; -import { ColorUtils } from '../component/trace/base/ColorUtils.js'; +import { BaseStruct } from './BaseStruct'; +import { ColorUtils } from '../component/trace/base/ColorUtils'; export class ProcessMemStruct extends BaseStruct { static hoverProcessMemStruct: ProcessMemStruct | undefined; diff --git a/ide/src/trace/bean/ProcessStruct.ts b/ide/src/trace/bean/ProcessStruct.ts index ba70e89fecd8c72cb08e30bbbe05f44177c0c955..94a36c613c342af1acd7727c44983c0eeb9321a7 100644 --- a/ide/src/trace/bean/ProcessStruct.ts +++ b/ide/src/trace/bean/ProcessStruct.ts @@ -13,9 +13,9 @@ * limitations under the License. */ -import { ColorUtils } from '../component/trace/base/ColorUtils.js'; -import { BaseStruct } from './BaseStruct.js'; -import { CpuStruct } from '../database/ui-worker/ProcedureWorkerCPU.js'; +import { ColorUtils } from '../component/trace/base/ColorUtils'; +import { BaseStruct } from './BaseStruct'; +import { CpuStruct } from '../database/ui-worker/ProcedureWorkerCPU'; const padding = 1; diff --git a/ide/src/trace/bean/SchedSwitchStruet.ts b/ide/src/trace/bean/SchedSwitchStruet.ts deleted file mode 100644 index 4f27423b1c477cc00ebebada319813a087950c30..0000000000000000000000000000000000000000 --- a/ide/src/trace/bean/SchedSwitchStruet.ts +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (C) 2022 Huawei Device Co., Ltd. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { AnyAaaaRecord } from "dns"; - -export class SchedSwitchStack { - count: number = 0; - cycleNum: number = 1; - duration: number | any; - isHover: boolean = false; - isSelected: boolean = false; - cycle: number = 0; - level: string = ''; - pid: number = -1; - process: string = ''; - state: string = ''; - status: boolean = false; - thread: string = ''; - tid: number = -1; - title: string = ''; - ts: string = ''; - cycleStartTime: number | any; - children: Array = []; -} -export class schedThreadInitData { - cycleEndTime: number = 0; - cycleStartTime: number = 0; - funId: number = 0; - name: string = '' - pid: number = -1; - runningCnt: number = 0; - state: string = ''; - tid: number = -1; - process: string = ''; - thread: string = ''; - dur: number = 0; - leftNS: number = 0 -} - diff --git a/ide/src/trace/bean/ThreadStruct.ts b/ide/src/trace/bean/ThreadStruct.ts index a9301658c83e93b4dd81af7cbc2b3c31b76202f5..48b8b870d9030368eabc8b8cd277812968306491 100644 --- a/ide/src/trace/bean/ThreadStruct.ts +++ b/ide/src/trace/bean/ThreadStruct.ts @@ -13,9 +13,9 @@ * limitations under the License. */ -import { BaseStruct } from './BaseStruct.js'; -import { Utils } from '../component/trace/base/Utils.js'; -import { drawString } from '../database/ui-worker/ProcedureWorkerCommon.js'; +import { BaseStruct } from './BaseStruct'; +import { Utils } from '../component/trace/base/Utils'; +import { drawString } from '../database/ui-worker/ProcedureWorkerCommon'; const padding = 1; @@ -26,7 +26,7 @@ export class ThreadStruct extends BaseStruct { static sColor = '#FBFBFB'; static hoverThreadStruct: ThreadStruct | undefined; static selectThreadStruct: ThreadStruct | undefined; - static selectThreaStructList: Array = new Array(); + static selectThreaStructList: Array = []; hasSched: number | undefined; pid: number | undefined; processName: string | undefined; diff --git a/ide/src/trace/component/SpFlags.ts b/ide/src/trace/component/SpFlags.ts index c5ece3035e60870f3318242810858a38c9c875db..36775d0ef41889478c9da7628869c3bf2fbbb5e5 100644 --- a/ide/src/trace/component/SpFlags.ts +++ b/ide/src/trace/component/SpFlags.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { BaseElement, element } from '../../base-ui/BaseElement.js'; +import { BaseElement, element } from '../../base-ui/BaseElement'; @element('sp-flags') export class SpFlags extends BaseElement { diff --git a/ide/src/trace/component/SpHelp.ts b/ide/src/trace/component/SpHelp.ts index d8ca953ab1cc975783f8b41ed1e79cb0826d591a..4af9598eaf0a6648c17c29c181d6cddb504fe009 100644 --- a/ide/src/trace/component/SpHelp.ts +++ b/ide/src/trace/component/SpHelp.ts @@ -13,11 +13,11 @@ * limitations under the License. */ -import { BaseElement, element } from '../../base-ui/BaseElement.js'; -import { LitMainMenuGroup } from '../../base-ui/menu/LitMainMenuGroup.js'; -import { LitMainMenu, MenuItem } from '../../base-ui/menu/LitMainMenu.js'; +import { BaseElement, element } from '../../base-ui/BaseElement'; +import { LitMainMenuGroup } from '../../base-ui/menu/LitMainMenuGroup'; +import { LitMainMenu, MenuItem } from '../../base-ui/menu/LitMainMenu'; import { LitMainMenuItem } from '../../base-ui/menu/LitMainMenuItem'; -import { SpStatisticsHttpUtil } from '../../statistics/util/SpStatisticsHttpUtil.js'; +import { SpStatisticsHttpUtil } from '../../statistics/util/SpStatisticsHttpUtil'; @element('sp-help') export class SpHelp extends BaseElement { @@ -127,6 +127,7 @@ export class SpHelp extends BaseElement { title: 'Native Memory抓取和展示说明', icon: '', clickHandler: function (item: MenuItem) { + console.log('22222'); SpStatisticsHttpUtil.addOrdinaryVisitAction({ event: 'native', action: 'help_doc', @@ -390,6 +391,7 @@ export class SpHelp extends BaseElement { title: 'Ability Monitor抓取和展示说明', icon: '', clickHandler: function (item: MenuItem) { + console.log('444444'); SpStatisticsHttpUtil.addOrdinaryVisitAction({ event: 'ability', action: 'help_doc', diff --git a/ide/src/trace/component/SpInfoAndStas.ts b/ide/src/trace/component/SpInfoAndStas.ts index 5d312a75004f036d8aec50ec8c8429962cf52fba..987d7b544a73903c7d2271c04951d41b98837316 100644 --- a/ide/src/trace/component/SpInfoAndStas.ts +++ b/ide/src/trace/component/SpInfoAndStas.ts @@ -13,12 +13,12 @@ * limitations under the License. */ -import { BaseElement, element } from '../../base-ui/BaseElement.js'; -import { querySelectTraceStats, queryTraceMetaData } from '../database/SqlLite.js'; -import { LitTable } from '../../base-ui/table/lit-table.js'; -import '../../base-ui/table/lit-table.js'; -import { info } from '../../log/Log.js'; -import { LitProgressBar } from '../../base-ui/progress-bar/LitProgressBar.js'; +import { BaseElement, element } from '../../base-ui/BaseElement'; +import { querySelectTraceStats, queryTraceMetaData } from '../database/SqlLite'; +import { LitTable } from '../../base-ui/table/lit-table'; +import '../../base-ui/table/lit-table'; +import { info } from '../../log/Log'; +import { LitProgressBar } from '../../base-ui/progress-bar/LitProgressBar'; @element('sp-info-and-stats') export class SpInfoAndStats extends BaseElement { diff --git a/ide/src/trace/component/SpKeyboard.ts b/ide/src/trace/component/SpKeyboard.ts index 19341f17e435c3dcc5410cb6f2bf147f054a0fc5..dac46503215fc83a53861e3362e26e83d611f3a7 100644 --- a/ide/src/trace/component/SpKeyboard.ts +++ b/ide/src/trace/component/SpKeyboard.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { BaseElement, element } from '../../base-ui/BaseElement.js'; +import { BaseElement, element } from '../../base-ui/BaseElement'; @element('sp-keyboard') export class SpKeyboard extends BaseElement { initElements(): void { diff --git a/ide/src/trace/component/SpMetrics.ts b/ide/src/trace/component/SpMetrics.ts index 0a41225051ae9fd488c7279d955e77368cd61015..6419f53d1bee8d1cc828910966832a59e7d873c4 100644 --- a/ide/src/trace/component/SpMetrics.ts +++ b/ide/src/trace/component/SpMetrics.ts @@ -13,13 +13,13 @@ * limitations under the License. */ -import { BaseElement, element } from '../../base-ui/BaseElement.js'; +import { BaseElement, element } from '../../base-ui/BaseElement'; -import { queryMetric } from '../database/SqlLite.js'; +import { queryMetric } from '../database/SqlLite'; -import '../../base-ui/table/lit-table.js'; -import { LitProgressBar } from '../../base-ui/progress-bar/LitProgressBar.js'; -import { SpStatisticsHttpUtil } from '../../statistics/util/SpStatisticsHttpUtil.js'; +import '../../base-ui/table/lit-table'; +import { LitProgressBar } from '../../base-ui/progress-bar/LitProgressBar'; +import { SpStatisticsHttpUtil } from '../../statistics/util/SpStatisticsHttpUtil'; @element('sp-metrics') export class SpMetrics extends BaseElement { diff --git a/ide/src/trace/component/SpQuerySQL.ts b/ide/src/trace/component/SpQuerySQL.ts index 4642ff926794f1bce9217e1ef4292ed68b62df35..c4935db1c5921e20f18deeca86d52a590f0bab12 100644 --- a/ide/src/trace/component/SpQuerySQL.ts +++ b/ide/src/trace/component/SpQuerySQL.ts @@ -13,18 +13,18 @@ * limitations under the License. */ -import { BaseElement, element } from '../../base-ui/BaseElement.js'; -import { queryCustomizeSelect } from '../database/SqlLite.js'; -import { LitTable } from '../../base-ui/table/lit-table.js'; -import '../../base-ui/table/lit-table.js'; -import { LitTableColumn } from '../../base-ui/table/lit-table-column.js'; -import { info } from '../../log/Log.js'; -import { LitProgressBar } from '../../base-ui/progress-bar/LitProgressBar.js'; -import { PageNation } from '../../base-ui/chart/pagenation/PageNation.js'; -import { PaginationBox } from '../../base-ui/chart/pagenation/PaginationBox.js'; -import { SpStatisticsHttpUtil } from '../../statistics/util/SpStatisticsHttpUtil.js'; -import { getAllSql } from './trace/base/CommonSql.js'; -import { LitIcon } from '../../base-ui/icon/LitIcon.js'; +import { BaseElement, element } from '../../base-ui/BaseElement'; +import { queryCustomizeSelect } from '../database/SqlLite'; +import { LitTable } from '../../base-ui/table/lit-table'; +import '../../base-ui/table/lit-table'; +import { LitTableColumn } from '../../base-ui/table/lit-table-column'; +import { info } from '../../log/Log'; +import { LitProgressBar } from '../../base-ui/progress-bar/LitProgressBar'; +import { PageNation } from '../../base-ui/chart/pagenation/PageNation'; +import { PaginationBox } from '../../base-ui/chart/pagenation/PaginationBox'; +import { SpStatisticsHttpUtil } from '../../statistics/util/SpStatisticsHttpUtil'; +import { getAllSql } from './trace/base/CommonSql'; +import { LitIcon } from '../../base-ui/icon/LitIcon'; @element('sp-query-sql') export class SpQuerySQL extends BaseElement { @@ -164,11 +164,14 @@ export class SpQuerySQL extends BaseElement { private executeSql(sql: string): void { this.progressLoad!.loading = true; + if (this.querySize){ + this.querySize!.title = `${sql}`; + } queryCustomizeSelect(sql).then((resultList): void => { if (resultList && resultList.length > 0) { this.statDataArray = resultList; this.keyList = Object.keys(resultList[0]); - this.querySize!.textContent = `Query result - ${this.statDataArray.length} counts.`; + this.querySize!.textContent = `Query result - ${this.statDataArray.length} counts.` + `(${sql})`; this.initDataElement(); this.response!.appendChild(this.queryTableEl!); this.setPageNationTableEl(); @@ -179,7 +182,7 @@ export class SpQuerySQL extends BaseElement { } }, 300); } else { - this.querySize!.textContent = `Query result - ${this.statDataArray.length} counts.`; + this.querySize!.textContent = `Query result - ${this.statDataArray.length} counts.` + `(${sql})`; this.progressLoad!.loading = false; } }); @@ -414,6 +417,9 @@ export class SpQuerySQL extends BaseElement { line-height: 20px; font-weight: 400; text-align: left; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; } #response-json{ margin-top: 20px; diff --git a/ide/src/trace/component/SpRecordTrace.ts b/ide/src/trace/component/SpRecordTrace.ts index bd4190c25be884fb96ac5208f2357491c6daaade..dc04881a274dcfc82fc67e18e6ad9914e4b16488 100644 --- a/ide/src/trace/component/SpRecordTrace.ts +++ b/ide/src/trace/component/SpRecordTrace.ts @@ -13,17 +13,17 @@ * limitations under the License. */ -import { BaseElement, element } from '../../base-ui/BaseElement.js'; -import '../../base-ui/popover/LitPopover.js'; -import '../../base-ui/button/LitButton.js'; -import { LitMainMenuGroup } from '../../base-ui/menu/LitMainMenuGroup.js'; -import { LitMainMenuItem } from '../../base-ui/menu/LitMainMenuItem.js'; -import { SpRecordSetting } from './setting/SpRecordSetting.js'; -import { LitMainMenu, MenuGroup, MenuItem } from '../../base-ui/menu/LitMainMenu.js'; -import { SpProbesConfig } from './setting/SpProbesConfig.js'; -import { SpTraceCommand } from './setting/SpTraceCommand.js'; -import { FlagsConfig } from './SpFlags.js'; -import LitSwitch from '../../base-ui/switch/lit-switch.js'; +import { BaseElement, element } from '../../base-ui/BaseElement'; +import '../../base-ui/popover/LitPopover'; +import '../../base-ui/button/LitButton'; +import { LitMainMenuGroup } from '../../base-ui/menu/LitMainMenuGroup'; +import { LitMainMenuItem } from '../../base-ui/menu/LitMainMenuItem'; +import { SpRecordSetting } from './setting/SpRecordSetting'; +import { LitMainMenu, MenuGroup, MenuItem } from '../../base-ui/menu/LitMainMenu'; +import { SpProbesConfig } from './setting/SpProbesConfig'; +import { SpTraceCommand } from './setting/SpTraceCommand'; +import { FlagsConfig } from './SpFlags'; +import LitSwitch from '../../base-ui/switch/lit-switch'; import { LitSlider } from '../../base-ui/slider/LitSlider'; import { @@ -50,28 +50,28 @@ import { sysVMeminfoTypeFromJSON, TracePluginConfig, Type, -} from './setting/bean/ProfilerServiceTypes.js'; -import { PluginConvertUtils } from './setting/utils/PluginConvertUtils.js'; -import { SpAllocations } from './setting/SpAllocations.js'; -import { SpRecordPerf } from './setting/SpRecordPerf.js'; -import { HdcDeviceManager } from '../../hdc/HdcDeviceManager.js'; -import { LitButton } from '../../base-ui/button/LitButton.js'; -import { SpApplication } from '../SpApplication.js'; -import { LitSearch } from './trace/search/Search.js'; -import { LitProgressBar } from '../../base-ui/progress-bar/LitProgressBar.js'; -import { info, log } from '../../log/Log.js'; -import { CmdConstant } from '../../command/CmdConstant.js'; -import { Cmd } from '../../command/Cmd.js'; -import { SpFileSystem } from './setting/SpFileSystem.js'; -import { SpSdkConfig } from './setting/SpSdkConfig.js'; -import { SpVmTracker } from './setting/SpVmTracker.js'; -import { SpHisysEvent } from './setting/SpHisysEvent.js'; -import { SpRecordTemplate } from './setting/SpRecordTemplate.js'; -import { SpStatisticsHttpUtil } from '../../statistics/util/SpStatisticsHttpUtil.js'; -import { SpArkTs } from './setting/SpArkTs.js'; -import { SpWebHdcShell } from './setting/SpWebHdcShell.js'; -import { SpHilogRecord } from './setting/SpHilogRecord.js'; -import { LongTraceDBUtils } from '../database/LongTraceDBUtils.js'; +} from './setting/bean/ProfilerServiceTypes'; +import { PluginConvertUtils } from './setting/utils/PluginConvertUtils'; +import { SpAllocations } from './setting/SpAllocations'; +import { SpRecordPerf } from './setting/SpRecordPerf'; +import { HdcDeviceManager } from '../../hdc/HdcDeviceManager'; +import { LitButton } from '../../base-ui/button/LitButton'; +import { SpApplication } from '../SpApplication'; +import { LitSearch } from './trace/search/Search'; +import { LitProgressBar } from '../../base-ui/progress-bar/LitProgressBar'; +import { info, log } from '../../log/Log'; +import { CmdConstant } from '../../command/CmdConstant'; +import { Cmd } from '../../command/Cmd'; +import { SpFileSystem } from './setting/SpFileSystem'; +import { SpSdkConfig } from './setting/SpSdkConfig'; +import { SpVmTracker } from './setting/SpVmTracker'; +import { SpHisysEvent } from './setting/SpHisysEvent'; +import { SpRecordTemplate } from './setting/SpRecordTemplate'; +import { SpStatisticsHttpUtil } from '../../statistics/util/SpStatisticsHttpUtil'; +import { SpArkTs } from './setting/SpArkTs'; +import { SpWebHdcShell } from './setting/SpWebHdcShell'; +import { SpHilogRecord } from './setting/SpHilogRecord'; +import { LongTraceDBUtils } from '../database/LongTraceDBUtils'; @element('sp-record-trace') export class SpRecordTrace extends BaseElement { diff --git a/ide/src/trace/component/SpSystemTrace.ts b/ide/src/trace/component/SpSystemTrace.ts index d2941ceb361c53dd913b8f77b9ff5b136a01357d..b7c1138b2ab8066945fa2b87ca4cb9ccde8616df 100644 --- a/ide/src/trace/component/SpSystemTrace.ts +++ b/ide/src/trace/component/SpSystemTrace.ts @@ -13,9 +13,9 @@ * limitations under the License. */ -import { BaseElement, element } from '../../base-ui/BaseElement.js'; -import './trace/TimerShaftElement.js'; -import './trace/base/TraceRow.js'; +import { BaseElement, element } from '../../base-ui/BaseElement'; +import './trace/TimerShaftElement'; +import './trace/base/TraceRow'; import { queryBySelectAllocationOrReturn, queryBySelectExecute, @@ -23,20 +23,20 @@ import { querySceneSearchFunc, querySearchFunc, threadPool, -} from '../database/SqlLite.js'; -import { RangeSelectStruct, TraceRow } from './trace/base/TraceRow.js'; -import { TimerShaftElement } from './trace/TimerShaftElement.js'; -import './trace/base/TraceSheet.js'; -import { TraceSheet } from './trace/base/TraceSheet.js'; -import { RangeSelect } from './trace/base/RangeSelect.js'; -import { SelectionParam } from '../bean/BoxSelection.js'; -import { procedurePool } from '../database/Procedure.js'; -import { SpApplication } from '../SpApplication.js'; -import { Flag } from './trace/timer-shaft/Flag.js'; -import { SlicesTime, SportRuler } from './trace/timer-shaft/SportRuler.js'; -import { SpHiPerf } from './chart/SpHiPerf.js'; -import { SearchSdkBean, SearchThreadProcessBean } from '../bean/SearchFuncBean.js'; -import { error, info } from '../../log/Log.js'; +} from '../database/SqlLite'; +import { RangeSelectStruct, TraceRow } from './trace/base/TraceRow'; +import { TimerShaftElement } from './trace/TimerShaftElement'; +import './trace/base/TraceSheet'; +import { TraceSheet } from './trace/base/TraceSheet'; +import { RangeSelect } from './trace/base/RangeSelect'; +import { SelectionParam } from '../bean/BoxSelection'; +import { procedurePool } from '../database/Procedure'; +import { SpApplication } from '../SpApplication'; +import { Flag } from './trace/timer-shaft/Flag'; +import { SlicesTime, SportRuler } from './trace/timer-shaft/SportRuler'; +import { SpHiPerf } from './chart/SpHiPerf'; +import { SearchSdkBean, SearchThreadProcessBean } from '../bean/SearchFuncBean'; +import { error, info } from '../../log/Log'; import { drawFlagLineSegment, drawLines, @@ -49,66 +49,65 @@ import { ns2xByTimeShaft, PairPoint, Rect, -} from '../database/ui-worker/ProcedureWorkerCommon.js'; -import { SpChartManager } from './chart/SpChartManager.js'; -import { CpuStruct, WakeupBean } from '../database/ui-worker/ProcedureWorkerCPU.js'; -import { ProcessStruct } from '../database/ui-worker/ProcedureWorkerProcess.js'; -import { CpuFreqStruct } from '../database/ui-worker/ProcedureWorkerFreq.js'; -import { CpuFreqLimitsStruct } from '../database/ui-worker/ProcedureWorkerCpuFreqLimits.js'; -import { ThreadStruct } from '../database/ui-worker/ProcedureWorkerThread.js'; -import { func, FuncStruct } from '../database/ui-worker/ProcedureWorkerFunc.js'; -import { CpuStateStruct } from '../database/ui-worker/ProcedureWorkerCpuState.js'; -import { HiPerfCpuStruct } from '../database/ui-worker/ProcedureWorkerHiPerfCPU.js'; -import { HiPerfProcessStruct } from '../database/ui-worker/ProcedureWorkerHiPerfProcess.js'; -import { HiPerfThreadStruct } from '../database/ui-worker/ProcedureWorkerHiPerfThread.js'; -import { HiPerfEventStruct } from '../database/ui-worker/ProcedureWorkerHiPerfEvent.js'; -import { HiPerfReportStruct } from '../database/ui-worker/ProcedureWorkerHiPerfReport.js'; -import { FpsStruct } from '../database/ui-worker/ProcedureWorkerFPS.js'; -import { CpuAbilityMonitorStruct } from '../database/ui-worker/ProcedureWorkerCpuAbility.js'; -import { DiskAbilityMonitorStruct } from '../database/ui-worker/ProcedureWorkerDiskIoAbility.js'; -import { MemoryAbilityMonitorStruct } from '../database/ui-worker/ProcedureWorkerMemoryAbility.js'; -import { NetworkAbilityMonitorStruct } from '../database/ui-worker/ProcedureWorkerNetworkAbility.js'; -import { ClockStruct } from '../database/ui-worker/ProcedureWorkerClock.js'; -import { Utils } from './trace/base/Utils.js'; -import { IrqStruct } from '../database/ui-worker/ProcedureWorkerIrq.js'; -import { JanksStruct } from '../bean/JanksStruct.js'; -import { JankStruct } from '../database/ui-worker/ProcedureWorkerJank.js'; -import { TabPaneCurrent } from './trace/sheet/TabPaneCurrent.js'; -import { HeapStruct } from '../database/ui-worker/ProcedureWorkerHeap.js'; -import { SpStatisticsHttpUtil } from '../../statistics/util/SpStatisticsHttpUtil.js'; -import { HeapSnapshotStruct } from '../database/ui-worker/ProcedureWorkerHeapSnapshot.js'; -import { HeapDataInterface } from '../../js-heap/HeapDataInterface.js'; -import { LitTabs } from '../../base-ui/tabs/lit-tabs.js'; -import { TraceRowConfig } from './trace/base/TraceRowConfig.js'; -import { TabPaneCurrentSelection } from './trace/sheet/TabPaneCurrentSelection.js'; -import { SpChartList } from './trace/SpChartList.js'; -import './trace/SpChartList.js'; -import { AppStartupStruct } from '../database/ui-worker/ProcedureWorkerAppStartup.js'; -import { AllAppStartupStruct } from '../database/ui-worker/ProcedureWorkerAllAppStartup.js'; -import { SoStruct } from '../database/ui-worker/ProcedureWorkerSoInit.js'; -import { TabPaneTaskFrames } from './trace/sheet/task/TabPaneTaskFrames.js'; -import { FlagsConfig } from './SpFlags.js'; -import { FrameDynamicStruct } from '../database/ui-worker/ProcedureWorkerFrameDynamic.js'; -import { FrameAnimationStruct } from '../database/ui-worker/ProcedureWorkerFrameAnimation.js'; -import { FrameSpacingStruct } from '../database/ui-worker/ProcedureWorkerFrameSpacing.js'; -import { JsCpuProfilerStruct } from '../database/ui-worker/ProcedureWorkerCpuProfiler.js'; -import { TabPaneSummary } from './trace/sheet/ark-ts/TabPaneSummary.js'; -import { JsCpuProfilerChartFrame } from '../bean/JsStruct.js'; -import { FileInfo } from '../../js-heap/model/UiStruct.js'; -import { SnapshotStruct } from '../database/ui-worker/ProcedureWorkerSnapshot.js'; -import { setSelectState, intersectData, isExistPidInArray } from './Utils.js'; -import { LogStruct } from '../database/ui-worker/ProcedureWorkerLog.js'; -import { TabPaneFrequencySample } from './trace/sheet/cpu/TabPaneFrequencySample.js'; -import { TabPaneCounterSample } from './trace/sheet/cpu/TabPaneCounterSample.js'; -import { LitSearch } from './trace/search/Search.js'; -import { TabPaneFlag } from './trace/timer-shaft/TabPaneFlag.js'; -import { LitTabpane } from '../../base-ui/tabs/lit-tabpane.js'; -import { HiPerfCallChartStruct } from '../database/ui-worker/ProcedureWorkerHiPerfCallChart.js'; -import { type HiSysEventStruct } from '../database/ui-worker/ProcedureWorkerHiSysEvent.js'; -import { InitAnalysis } from '../database/logic-worker/ProcedureLogicWorkerCommon.js'; -import { type SpKeyboard } from '../component/SpKeyboard.js'; -import { drawVSync, enableVSync, setVSyncDisable } from './chart/VSync.js'; -import { binderStruct } from '../database/ui-worker/procedureWorkerBinder.js'; +} from '../database/ui-worker/ProcedureWorkerCommon'; +import { SpChartManager } from './chart/SpChartManager'; +import { CpuStruct, WakeupBean } from '../database/ui-worker/ProcedureWorkerCPU'; +import { ProcessStruct } from '../database/ui-worker/ProcedureWorkerProcess'; +import { CpuFreqStruct } from '../database/ui-worker/ProcedureWorkerFreq'; +import { CpuFreqLimitsStruct } from '../database/ui-worker/ProcedureWorkerCpuFreqLimits'; +import { ThreadStruct } from '../database/ui-worker/ProcedureWorkerThread'; +import { func, FuncStruct } from '../database/ui-worker/ProcedureWorkerFunc'; +import { CpuStateStruct } from '../database/ui-worker/ProcedureWorkerCpuState'; +import { HiPerfCpuStruct } from '../database/ui-worker/ProcedureWorkerHiPerfCPU'; +import { HiPerfProcessStruct } from '../database/ui-worker/ProcedureWorkerHiPerfProcess'; +import { HiPerfThreadStruct } from '../database/ui-worker/ProcedureWorkerHiPerfThread'; +import { HiPerfEventStruct } from '../database/ui-worker/ProcedureWorkerHiPerfEvent'; +import { HiPerfReportStruct } from '../database/ui-worker/ProcedureWorkerHiPerfReport'; +import { FpsStruct } from '../database/ui-worker/ProcedureWorkerFPS'; +import { CpuAbilityMonitorStruct } from '../database/ui-worker/ProcedureWorkerCpuAbility'; +import { DiskAbilityMonitorStruct } from '../database/ui-worker/ProcedureWorkerDiskIoAbility'; +import { MemoryAbilityMonitorStruct } from '../database/ui-worker/ProcedureWorkerMemoryAbility'; +import { NetworkAbilityMonitorStruct } from '../database/ui-worker/ProcedureWorkerNetworkAbility'; +import { ClockStruct } from '../database/ui-worker/ProcedureWorkerClock'; +import { Utils } from './trace/base/Utils'; +import { IrqStruct } from '../database/ui-worker/ProcedureWorkerIrq'; +import { JanksStruct } from '../bean/JanksStruct'; +import { JankStruct } from '../database/ui-worker/ProcedureWorkerJank'; +import { TabPaneCurrent } from './trace/sheet/TabPaneCurrent'; +import { HeapStruct } from '../database/ui-worker/ProcedureWorkerHeap'; +import { SpStatisticsHttpUtil } from '../../statistics/util/SpStatisticsHttpUtil'; +import { HeapSnapshotStruct } from '../database/ui-worker/ProcedureWorkerHeapSnapshot'; +import { HeapDataInterface } from '../../js-heap/HeapDataInterface'; +import { LitTabs } from '../../base-ui/tabs/lit-tabs'; +import { TraceRowConfig } from './trace/base/TraceRowConfig'; +import { TabPaneCurrentSelection } from './trace/sheet/TabPaneCurrentSelection'; +import { SpChartList } from './trace/SpChartList'; +import './trace/SpChartList'; +import { AppStartupStruct } from '../database/ui-worker/ProcedureWorkerAppStartup'; +import { AllAppStartupStruct } from '../database/ui-worker/ProcedureWorkerAllAppStartup'; +import { SoStruct } from '../database/ui-worker/ProcedureWorkerSoInit'; +import { TabPaneTaskFrames } from './trace/sheet/task/TabPaneTaskFrames'; +import { FlagsConfig } from './SpFlags'; +import { FrameDynamicStruct } from '../database/ui-worker/ProcedureWorkerFrameDynamic'; +import { FrameAnimationStruct } from '../database/ui-worker/ProcedureWorkerFrameAnimation'; +import { FrameSpacingStruct } from '../database/ui-worker/ProcedureWorkerFrameSpacing'; +import { JsCpuProfilerStruct } from '../database/ui-worker/ProcedureWorkerCpuProfiler'; +import { TabPaneSummary } from './trace/sheet/ark-ts/TabPaneSummary'; +import { JsCpuProfilerChartFrame } from '../bean/JsStruct'; +import { FileInfo } from '../../js-heap/model/UiStruct'; +import { SnapshotStruct } from '../database/ui-worker/ProcedureWorkerSnapshot'; +import { setSelectState, intersectData, isExistPidInArray } from './Utils'; +import { LogStruct } from '../database/ui-worker/ProcedureWorkerLog'; +import { TabPaneFrequencySample } from './trace/sheet/cpu/TabPaneFrequencySample'; +import { TabPaneCounterSample } from './trace/sheet/cpu/TabPaneCounterSample'; +import { LitSearch } from './trace/search/Search'; +import { TabPaneFlag } from './trace/timer-shaft/TabPaneFlag'; +import { LitTabpane } from '../../base-ui/tabs/lit-tabpane'; +import { HiPerfCallChartStruct } from '../database/ui-worker/ProcedureWorkerHiPerfCallChart'; +import { type HiSysEventStruct } from '../database/ui-worker/ProcedureWorkerHiSysEvent'; +import { InitAnalysis } from '../database/logic-worker/ProcedureLogicWorkerCommon'; +import { type SpKeyboard } from '../component/SpKeyboard'; +import { drawVSync, enableVSync, setVSyncDisable } from './chart/VSync'; function dpr() { return window.devicePixelRatio || 1; @@ -159,6 +158,7 @@ export class SpSystemTrace extends BaseElement { stateRowsId: Array = []; spacerEL: HTMLDivElement | undefined | null; visibleRows: Array> = []; + invisibleRows: Array> = []; collectRows: Array> = []; currentRow: TraceRow | undefined | null; keyboardEnable = true; @@ -306,9 +306,9 @@ export class SpSystemTrace extends BaseElement { let rightStar: HTMLElement | null | undefined = this.traceSheetEL?.shadowRoot ?.querySelector('#current-selection > tabpane-current-selection') ?.shadowRoot?.querySelector('#right-star'); - this.rowsEL = this.shadowRoot?.querySelector('.rows'); this.tipEL = this.shadowRoot?.querySelector('.tip'); this.rowsPaneEL = this.shadowRoot?.querySelector('.rows-pane'); + this.rowsEL = this.rowsPaneEL; this.spacerEL = this.shadowRoot?.querySelector('.spacer'); this.timerShaftEL = this.shadowRoot?.querySelector('.timer-shaft'); this.favoriteChartListEL = this.shadowRoot?.querySelector('#favorite-chart-list'); @@ -785,8 +785,8 @@ export class SpSystemTrace extends BaseElement { let isIntersect = (filterFunc: FuncStruct, rangeData: RangeSelectStruct) => Math.max(filterFunc.startTs! + filterFunc.dur!, rangeData!.endNS || 0) - - Math.min(filterFunc.startTs!, rangeData!.startNS || 0) < - filterFunc.dur! + (rangeData!.endNS || 0) - (rangeData!.startNS || 0) && + Math.min(filterFunc.startTs!, rangeData!.startNS || 0) < + filterFunc.dur! + (rangeData!.endNS || 0) - (rangeData!.startNS || 0) && filterFunc.funName!.indexOf('H:Task ') >= 0; let taskData = it.dataList.filter((taskData: FuncStruct) => { taskData!.tid = parseInt(it.rowId!); @@ -1171,7 +1171,7 @@ export class SpSystemTrace extends BaseElement { } else if (it.rowType == TraceRow.ROW_TYPE_JANK) { let isIntersect = (filterJank: JanksStruct, rangeData: RangeSelectStruct) => Math.max(filterJank.ts! + filterJank.dur!, rangeData!.endNS || 0) - - Math.min(filterJank.ts!, rangeData!.startNS || 0) < + Math.min(filterJank.ts!, rangeData!.startNS || 0) < filterJank.dur! + (rangeData!.endNS || 0) - (rangeData!.startNS || 0); if (it.name == 'Actual Timeline') { selection.jankFramesData = []; @@ -1254,7 +1254,7 @@ export class SpSystemTrace extends BaseElement { } else if (it.rowType == TraceRow.ROW_TYPE_FRAME_ANIMATION) { let isIntersect = (animationStruct: FrameAnimationStruct, selectStruct: RangeSelectStruct) => Math.max(animationStruct.startTs! + animationStruct.dur!, selectStruct!.endNS || 0) - - Math.min(animationStruct.startTs!, selectStruct!.startNS || 0) < + Math.min(animationStruct.startTs!, selectStruct!.startNS || 0) < animationStruct.dur! + (selectStruct!.endNS || 0) - (selectStruct!.startNS || 0); let frameAnimationList = it.dataList.filter((frameAnimationBean: FrameAnimationStruct) => { return isIntersect(frameAnimationBean, TraceRow.rangeSelectObject!); @@ -1398,18 +1398,24 @@ export class SpSystemTrace extends BaseElement { let tr = it.target as TraceRow; if (!it.isIntersecting) { tr.sleeping = true; + this.invisibleRows.indexOf(tr) == -1 && this.invisibleRows.push(tr); this.visibleRows = this.visibleRows.filter((it) => !it.sleeping); } else { - if ( - !this.visibleRows.find( - (vr) => vr.rowId === tr.rowId && vr.rowType === tr.rowType && vr.rowParentId === tr.rowParentId - ) - ) { - this.visibleRows.push(tr); - } tr.sleeping = false; + this.visibleRows.indexOf(tr) == -1 && this.visibleRows.push(tr); + this.invisibleRows = this.invisibleRows.filter((it) => it.sleeping); + } + this.visibleRows + .filter((vr) => vr.expansion) + .forEach((vr) => { + vr.sticky = this.visibleRows.some((vro) => vr.childrenList.filter((it) => !it.collect).indexOf(vro) >= 0); + }); + this.visibleRows + .filter((vr) => !vr.folder && vr.parentRowEl && vr.parentRowEl.expansion) + .forEach((vr) => (vr.parentRowEl!.sticky = true)); + if (this.handler) { + clearTimeout(this.handler); } - if (this.handler) clearTimeout(this.handler); this.handler = setTimeout(() => this.refreshCanvas(false), 100); }); }); @@ -1434,7 +1440,7 @@ export class SpSystemTrace extends BaseElement { window.subscribe(window.SmartEvent.UI.SliceMark, (data) => { this.sliceMarkEventHandler(data); }); - window.subscribe(window.SmartEvent.UI.TraceRowComplete, (tr) => { }); + window.subscribe(window.SmartEvent.UI.TraceRowComplete, (tr) => {}); window.subscribe(window.SmartEvent.UI.RefreshCanvas, () => { this.refreshCanvas(false); }); @@ -1469,6 +1475,7 @@ export class SpSystemTrace extends BaseElement { this.currentCollectGroup = group; }); } + // 清除上一次点击调用栈产生的三角旗子 private clearTriangle(flagList: Array) { this.timerShaftEL!.sportRuler!.times = []; @@ -1896,7 +1903,7 @@ export class SpSystemTrace extends BaseElement { // 如果没有找到帽子,则绘制一个旗子 let time = Math.round( (x * (TraceRow.range?.endNS! - TraceRow.range?.startNS!)) / this.timerShaftEL!.canvas!.offsetWidth + - TraceRow.range?.startNS! + TraceRow.range?.startNS! ); this.timerShaftEL!.sportRuler!.drawTriangle(time, 'squre'); } @@ -2081,13 +2088,13 @@ export class SpSystemTrace extends BaseElement { this.timerShaftEL?.setSlicesMark( FrameAnimationStruct.selectFrameAnimationStruct.startTs || 0, (FrameAnimationStruct.selectFrameAnimationStruct.startTs || 0) + - (FrameAnimationStruct.selectFrameAnimationStruct.dur || 0) + (FrameAnimationStruct.selectFrameAnimationStruct.dur || 0) ); } else if (JsCpuProfilerStruct.selectJsCpuProfilerStruct) { this.timerShaftEL?.setSlicesMark( JsCpuProfilerStruct.selectJsCpuProfilerStruct.startTime || 0, (JsCpuProfilerStruct.selectJsCpuProfilerStruct.startTime || 0) + - (JsCpuProfilerStruct.selectJsCpuProfilerStruct.totalTime || 0) + (JsCpuProfilerStruct.selectJsCpuProfilerStruct.totalTime || 0) ); } else { this.slicestime = this.timerShaftEL?.setSlicesMark(); @@ -2539,7 +2546,7 @@ export class SpSystemTrace extends BaseElement { if (!SportRuler.isMouseInSportRuler) { this.traceSheetEL?.setAttribute('mode', 'hidden'); } - this.removeLinkLinesByBusinessType('task', 'thread'); + this.removeLinkLinesByBusinessType('task','thread'); this.refreshCanvas(true); JankStruct.delJankLineFlag = true; } @@ -2833,7 +2840,6 @@ export class SpSystemTrace extends BaseElement { ); } this.hoverStructNull(); - let flag = JSON.parse(JSON.stringify(ThreadStruct.selectThreadStruct)); this.selectStructNull(); this.wakeupListNull(); ThreadStruct.hoverThreadStruct = findEntry; @@ -2851,7 +2857,7 @@ export class SpSystemTrace extends BaseElement { let endParentRow = this.shadowRoot?.querySelector>( `trace-row[row-id='${data.pid}'][folder]` ); - this.drawThreadLine(endParentRow, flag, data); + //this.drawThreadLine(endParentRow, ThreadStruct.selectThreadStruct, data); }); } ); @@ -3154,7 +3160,7 @@ export class SpSystemTrace extends BaseElement { AppStartupStruct.selectStartupStruct = AppStartupStruct.hoverStartupStruct; this.traceSheetEL?.displayStartupData(AppStartupStruct.selectStartupStruct, scrollToFuncHandler); this.timerShaftEL?.modifyFlagList(undefined); - } else if (clickRowType === TraceRow.ROW_TYPE_ALL_APPSTARTUPS && AllAppStartupStruct.hoverStartupStruct) { + } else if(clickRowType === TraceRow.ROW_TYPE_ALL_APPSTARTUPS && AllAppStartupStruct.hoverStartupStruct){ AllAppStartupStruct.selectStartupStruct = AllAppStartupStruct.hoverStartupStruct; this.traceSheetEL?.displayAllStartupData(AllAppStartupStruct.selectStartupStruct!, scrollToFuncHandler) this.timerShaftEL?.modifyFlagList(undefined); @@ -3696,7 +3702,8 @@ export class SpSystemTrace extends BaseElement { } } - drawThreadLine(endParentRow: any, selectThreadStruct: ThreadStruct, data: any) { + drawThreadLine(endParentRow: any, selectThreadStruct: ThreadStruct + | undefined, data: any) { let collectList = this.favoriteChartListEL!.getCollectRows(); let startRow: any; if (selectThreadStruct == undefined || selectThreadStruct == null) { @@ -4515,7 +4522,6 @@ export class SpSystemTrace extends BaseElement { row.clearMemory(); this.rowsEL!.removeChild(row); }); - this.rowsEL.innerHTML = ''; } this.traceSheetEL?.clearMemory(); this.spacerEL!.style.height = '0px'; @@ -4536,8 +4542,8 @@ export class SpSystemTrace extends BaseElement { procedurePool.clearCache(); Utils.clearData(); InitAnalysis.getInstance().isInitAnalysis = true; - procedurePool.submitWithName('logic0', 'clear', {}, undefined, (res: any) => { }); - procedurePool.submitWithName('logic1', 'clear', {}, undefined, (res: any) => { }); + procedurePool.submitWithName('logic0', 'clear', {}, undefined, (res: any) => {}); + procedurePool.submitWithName('logic1', 'clear', {}, undefined, (res: any) => {}); this.times.clear(); setVSyncDisable(); } @@ -4589,6 +4595,12 @@ export class SpSystemTrace extends BaseElement { if (it.folder) { let offsetYTimeOut: any = undefined; it.addEventListener('expansion-change', (event: any) => { + let max = [...this.rowsPaneEL!.querySelectorAll('trace-row')].reduce( + (pre, cur) => pre + cur.clientHeight!, + 0 + ); + let offset = this.rowsPaneEL!.scrollHeight - max; + this.rowsPaneEL!.scrollTop = this.rowsPaneEL!.scrollTop - offset; JankStruct.delJankLineFlag = false; if (offsetYTimeOut) { clearTimeout(offsetYTimeOut); @@ -4696,15 +4708,12 @@ export class SpSystemTrace extends BaseElement { } if (this.tipEL) { this.tipEL.innerHTML = html; - if (row.rowType === TraceRow.ROW_TYPE_JS_CPU_PROFILER || row.rowType === TraceRow.ROW_TYPE_PERF_CALLCHART || row.rowType === TraceRow.ROW_TYPE_BINDER_COUNT) { + if (row.rowType === TraceRow.ROW_TYPE_JS_CPU_PROFILER || row.rowType === TraceRow.ROW_TYPE_PERF_CALLCHART) { this.tipEL.style.maxWidth = row.clientWidth / 3 + 'px'; this.tipEL.style.wordBreak = ' break-all'; this.tipEL.style.height = 'unset'; this.tipEL.style.display = 'block'; y = y + struct.depth * 20; - if (row.rowType === TraceRow.ROW_TYPE_BINDER_COUNT) { - y = row.hoverY + row.getBoundingClientRect().top - this.getBoundingClientRect().top; - } } else { this.tipEL.style.display = 'flex'; this.tipEL.style.height = row.style.height; diff --git a/ide/src/trace/component/SpWelcomePage.ts b/ide/src/trace/component/SpWelcomePage.ts index 59d9e29a342c59e0c9e15ab1b7e7bdcf25f86a06..8f3fe59e3ee0795bba2fd0d5d0679efac1d3b0ba 100644 --- a/ide/src/trace/component/SpWelcomePage.ts +++ b/ide/src/trace/component/SpWelcomePage.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { BaseElement, element } from '../../base-ui/BaseElement.js'; +import { BaseElement, element } from '../../base-ui/BaseElement'; @element('sp-welcome') export class SpWelcomePage extends BaseElement { diff --git a/ide/src/trace/component/StackBar.ts b/ide/src/trace/component/StackBar.ts index ed7f1c974d9414a222c20dd07e278003af993b1a..162599b34b87e3e97646d1a14470052e341a3f7e 100644 --- a/ide/src/trace/component/StackBar.ts +++ b/ide/src/trace/component/StackBar.ts @@ -13,9 +13,9 @@ * limitations under the License. */ -import { BaseElement, element } from '../../base-ui/BaseElement.js'; -import { SelectionData } from '../bean/BoxSelection.js'; -import { Utils } from './trace/base/Utils.js'; +import { BaseElement, element } from '../../base-ui/BaseElement'; +import { SelectionData } from '../bean/BoxSelection'; +import { Utils } from './trace/base/Utils'; @element('stack-bar') export class StackBar extends BaseElement { diff --git a/ide/src/trace/component/Utils.ts b/ide/src/trace/component/Utils.ts index 84ac77a5df0e5898ba8191b2dbe6182623ec135c..a3b666cfb9d56715150a07286a97e36e5a45eb65 100644 --- a/ide/src/trace/component/Utils.ts +++ b/ide/src/trace/component/Utils.ts @@ -12,9 +12,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { type JsCpuProfilerChartFrame } from '../bean/JsStruct.js'; -import { type SnapshotStruct } from '../database/ui-worker/ProcedureWorkerSnapshot.js'; -import { type RangeSelectStruct, TraceRow } from './trace/base/TraceRow.js'; +import { type JsCpuProfilerChartFrame } from '../bean/JsStruct'; +import { type SnapshotStruct } from '../database/ui-worker/ProcedureWorkerSnapshot'; +import { type RangeSelectStruct, TraceRow } from './trace/base/TraceRow'; export function setSelectState( data: JsCpuProfilerChartFrame, diff --git a/ide/src/trace/component/chart/FrameChart.ts b/ide/src/trace/component/chart/FrameChart.ts index 780f5095383669e47ecc556ac8f681594a4102d3..f9b652fd83fac991918c6cb7194e03e230985df7 100644 --- a/ide/src/trace/component/chart/FrameChart.ts +++ b/ide/src/trace/component/chart/FrameChart.ts @@ -13,11 +13,11 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../base-ui/BaseElement.js'; -import { Rect } from '../trace/timer-shaft/Rect.js'; -import { ChartMode, ChartStruct, draw, setFuncFrame } from '../../bean/FrameChartStruct.js'; -import { SpApplication } from '../../SpApplication.js'; -import { Utils } from '../trace/base/Utils.js'; +import { BaseElement, element } from '../../../base-ui/BaseElement'; +import { Rect } from '../trace/timer-shaft/Rect'; +import { ChartMode, ChartStruct, draw, setFuncFrame } from '../../bean/FrameChartStruct'; +import { SpApplication } from '../../SpApplication'; +import { Utils } from '../trace/base/Utils'; const scaleHeight = 30; // 刻度尺高度 const depthHeight = 20; // 调用栈高度 diff --git a/ide/src/trace/component/chart/PerfDataQuery.ts b/ide/src/trace/component/chart/PerfDataQuery.ts index 9de3f4ff3b6ee0ce64708b4d61f85b4dcdef0f9d..b01c337fbcbf2f7c6e03d7a0f14fbc851246e52d 100644 --- a/ide/src/trace/component/chart/PerfDataQuery.ts +++ b/ide/src/trace/component/chart/PerfDataQuery.ts @@ -13,11 +13,11 @@ * limitations under the License. */ -import { queryPerfFiles } from '../../database/SqlLite.js'; -import { PerfCall, PerfFile } from '../../bean/PerfProfile.js'; -import { info } from '../../../log/Log.js'; -import { SpHiPerf } from './SpHiPerf.js'; -import { procedurePool } from '../../database/Procedure.js'; +import { queryPerfFiles } from '../../database/SqlLite'; +import { PerfCall, PerfFile } from '../../bean/PerfProfile'; +import { info } from '../../../log/Log'; +import { SpHiPerf } from './SpHiPerf'; +import { procedurePool } from '../../database/Procedure'; import {PerfCallChain} from "../../database/logic-worker/ProcedureLogicWorkerPerf"; export class PerfDataQuery { diff --git a/ide/src/trace/component/chart/SpAbilityMonitorChart.ts b/ide/src/trace/component/chart/SpAbilityMonitorChart.ts index 0cdc8127182fa4ef38af0ee6bcfe689ad7b1c96c..904df00c7a385fa12cba8034d8e73d5afafa3cea 100644 --- a/ide/src/trace/component/chart/SpAbilityMonitorChart.ts +++ b/ide/src/trace/component/chart/SpAbilityMonitorChart.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { SpSystemTrace } from '../SpSystemTrace.js'; +import { SpSystemTrace } from '../SpSystemTrace'; import { queryAbilityExits, queryBytesInAbilityData, @@ -37,27 +37,27 @@ import { queryPurgeableSysData, queryReadAbilityData, queryWrittenAbilityData, -} from '../../database/SqlLite.js'; -import { info } from '../../../log/Log.js'; -import { TraceRow } from '../trace/base/TraceRow.js'; -import { Utils } from '../trace/base/Utils.js'; -import { type EmptyRender } from '../../database/ui-worker/ProcedureWorkerCPU.js'; -import { type ProcessStruct } from '../../database/ui-worker/ProcedureWorkerProcess.js'; -import { CpuAbilityMonitorStruct, CpuAbilityRender } from '../../database/ui-worker/ProcedureWorkerCpuAbility.js'; +} from '../../database/SqlLite'; +import { info } from '../../../log/Log'; +import { TraceRow } from '../trace/base/TraceRow'; +import { Utils } from '../trace/base/Utils'; +import { type EmptyRender } from '../../database/ui-worker/ProcedureWorkerCPU'; +import { type ProcessStruct } from '../../database/ui-worker/ProcedureWorkerProcess'; +import { CpuAbilityMonitorStruct, CpuAbilityRender } from '../../database/ui-worker/ProcedureWorkerCpuAbility'; import { MemoryAbilityMonitorStruct, MemoryAbilityRender, -} from '../../database/ui-worker/ProcedureWorkerMemoryAbility.js'; +} from '../../database/ui-worker/ProcedureWorkerMemoryAbility'; import { DiskAbilityMonitorStruct, DiskIoAbilityRender, -} from '../../database/ui-worker/ProcedureWorkerDiskIoAbility.js'; +} from '../../database/ui-worker/ProcedureWorkerDiskIoAbility'; import { NetworkAbilityMonitorStruct, NetworkAbilityRender, -} from '../../database/ui-worker/ProcedureWorkerNetworkAbility.js'; -import { renders } from '../../database/ui-worker/ProcedureWorker.js'; -import { type SnapshotRender, SnapshotStruct } from '../../database/ui-worker/ProcedureWorkerSnapshot.js'; +} from '../../database/ui-worker/ProcedureWorkerNetworkAbility'; +import { renders } from '../../database/ui-worker/ProcedureWorker'; +import { type SnapshotRender, SnapshotStruct } from '../../database/ui-worker/ProcedureWorkerSnapshot'; export class SpAbilityMonitorChart { private trace: SpSystemTrace; diff --git a/ide/src/trace/component/chart/SpAllAppStartups.ts b/ide/src/trace/component/chart/SpAllAppStartups.ts index d12ed401563a85540cd4c580024563dcd2985b74..cded62c6ae1dd00adbdffddea38b86a4f2786a64 100644 --- a/ide/src/trace/component/chart/SpAllAppStartups.ts +++ b/ide/src/trace/component/chart/SpAllAppStartups.ts @@ -13,17 +13,17 @@ * limitations under the License. */ -import { SpSystemTrace } from '../SpSystemTrace.js'; -import { TraceRow } from '../trace/base/TraceRow.js'; -import { renders } from '../../database/ui-worker/ProcedureWorker.js'; -import { CpuFreqStruct } from '../../database/ui-worker/ProcedureWorkerFreq.js'; +import { SpSystemTrace } from '../SpSystemTrace'; +import { TraceRow } from '../trace/base/TraceRow'; +import { renders } from '../../database/ui-worker/ProcedureWorker'; +import { CpuFreqStruct } from '../../database/ui-worker/ProcedureWorkerFreq'; import { queryAppStartupProcessIds, queryProcessStartup, querySingleAppStartupsName, -} from '../../database/SqlLite.js'; -import { FlagsConfig } from '../SpFlags.js'; -import { AllAppStartupStruct, AllAppStartupRender } from '../../database/ui-worker/ProcedureWorkerAllAppStartup.js'; +} from '../../database/SqlLite'; +import { FlagsConfig } from '../SpFlags'; +import { AllAppStartupStruct, AllAppStartupRender } from '../../database/ui-worker/ProcedureWorkerAllAppStartup'; export class SpAllAppStartupsChart { private readonly trace: SpSystemTrace | undefined; @@ -138,4 +138,4 @@ export class SpAllAppStartupsChart { }; SpAllAppStartupsChart.trace.rowsEL?.appendChild(row); } -} +} \ No newline at end of file diff --git a/ide/src/trace/component/chart/SpArkTsChart.ts b/ide/src/trace/component/chart/SpArkTsChart.ts index e3c1c500d6598c451414332aae9646bc0fe16637..678660d01303f2115578a2cf756081bca1b860bc 100644 --- a/ide/src/trace/component/chart/SpArkTsChart.ts +++ b/ide/src/trace/component/chart/SpArkTsChart.ts @@ -12,22 +12,22 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { SpSystemTrace } from '../SpSystemTrace.js'; -import { TraceRow } from '../trace/base/TraceRow.js'; -import { info } from '../../../log/Log.js'; -import { renders } from '../../database/ui-worker/ProcedureWorker.js'; -import { type EmptyRender } from '../../database/ui-worker/ProcedureWorkerCPU.js'; -import { type HeapTimelineRender, HeapTimelineStruct } from '../../database/ui-worker/ProcedureWorkerHeapTimeline.js'; -import { HeapDataInterface, type ParseListener } from '../../../js-heap/HeapDataInterface.js'; -import { LoadDatabase } from '../../../js-heap/LoadDatabase.js'; -import { type FileInfo } from '../../../js-heap/model/UiStruct.js'; -import { type HeapSnapshotRender, HeapSnapshotStruct } from '../../database/ui-worker/ProcedureWorkerHeapSnapshot.js'; -import { procedurePool } from '../../database/Procedure.js'; -import { Utils } from '../trace/base/Utils.js'; -import { type JsCpuProfilerChartFrame } from '../../bean/JsStruct.js'; -import { type JsCpuProfilerRender, JsCpuProfilerStruct } from '../../database/ui-worker/ProcedureWorkerCpuProfiler.js'; -import { ns2s } from '../../database/ui-worker/ProcedureWorkerCommon.js'; -import { queryJsCpuProfilerConfig, queryJsCpuProfilerData, queryJsMemoryData } from '../../database/SqlLite.js'; +import { SpSystemTrace } from '../SpSystemTrace'; +import { TraceRow } from '../trace/base/TraceRow'; +import { info } from '../../../log/Log'; +import { renders } from '../../database/ui-worker/ProcedureWorker'; +import { type EmptyRender } from '../../database/ui-worker/ProcedureWorkerCPU'; +import { type HeapTimelineRender, HeapTimelineStruct } from '../../database/ui-worker/ProcedureWorkerHeapTimeline'; +import { HeapDataInterface, type ParseListener } from '../../../js-heap/HeapDataInterface'; +import { LoadDatabase } from '../../../js-heap/LoadDatabase'; +import { type FileInfo } from '../../../js-heap/model/UiStruct'; +import { type HeapSnapshotRender, HeapSnapshotStruct } from '../../database/ui-worker/ProcedureWorkerHeapSnapshot'; +import { procedurePool } from '../../database/Procedure'; +import { Utils } from '../trace/base/Utils'; +import { type JsCpuProfilerChartFrame } from '../../bean/JsStruct'; +import { type JsCpuProfilerRender, JsCpuProfilerStruct } from '../../database/ui-worker/ProcedureWorkerCpuProfiler'; +import { ns2s } from '../../database/ui-worker/ProcedureWorkerCommon'; +import { queryJsCpuProfilerConfig, queryJsCpuProfilerData, queryJsMemoryData } from '../../database/SqlLite'; const TYPE_SNAPSHOT = 0; const TYPE_TIMELINE = 1; export class SpArkTsChart implements ParseListener { diff --git a/ide/src/trace/component/chart/SpChartManager.ts b/ide/src/trace/component/chart/SpChartManager.ts index ce26806d6f6113f1d6c156561e8ffdf28a1e8038..248f131668cce2f1f1d1a4f3f7d9044af3f5cb6e 100644 --- a/ide/src/trace/component/chart/SpChartManager.ts +++ b/ide/src/trace/component/chart/SpChartManager.ts @@ -13,11 +13,11 @@ * limitations under the License. */ -import { SpSystemTrace } from '../SpSystemTrace.js'; -import { SpHiPerf } from './SpHiPerf.js'; -import { SpCpuChart } from './SpCpuChart.js'; -import { SpFreqChart } from './SpFreqChart.js'; -import { SpFpsChart } from './SpFpsChart.js'; +import { SpSystemTrace } from '../SpSystemTrace'; +import { SpHiPerf } from './SpHiPerf'; +import { SpCpuChart } from './SpCpuChart'; +import { SpFreqChart } from './SpFreqChart'; +import { SpFpsChart } from './SpFpsChart'; import { getCpuUtilizationRate, queryAppStartupProcessIds, @@ -26,32 +26,31 @@ import { queryTaskPoolCallStack, queryThreadAndProcessName, queryTotalTime, -} from '../../database/SqlLite.js'; -import { info } from '../../../log/Log.js'; -import { SpNativeMemoryChart } from './SpNativeMemoryChart.js'; -import { SpAbilityMonitorChart } from './SpAbilityMonitorChart.js'; -import { SpProcessChart } from './SpProcessChart.js'; -import { perfDataQuery } from './PerfDataQuery.js'; -import { SpVirtualMemChart } from './SpVirtualMemChart.js'; -import { SpFileSystemChart } from './SpFileSystemChart.js'; -import { SpSdkChart } from './SpSdkChart.js'; -import { SpHiSysEnergyChart } from './SpHiSysEnergyChart.js'; -import { VmTrackerChart } from './SpVmTrackerChart.js'; -import { SpClockChart } from './SpClockChart.js'; -import { SpIrqChart } from './SpIrqChart.js'; -import { renders } from '../../database/ui-worker/ProcedureWorker.js'; -import { EmptyRender } from '../../database/ui-worker/ProcedureWorkerCPU.js'; -import { TraceRow } from '../trace/base/TraceRow.js'; -import { SpFrameTimeChart } from './SpFrameTimeChart.js'; -import { Utils } from '../trace/base/Utils.js'; -import { SpArkTsChart } from './SpArkTsChart.js'; -import { MemoryConfig } from '../../bean/MemoryConfig.js'; -import { FlagsConfig } from '../SpFlags.js'; -import { SpLogChart } from './SpLogChart.js'; -import { SpHiSysEventChart } from './SpHiSysEventChart.js'; -import { SpAllAppStartupsChart } from './SpAllAppStartups.js'; -import {setVSyncData} from './VSync.js'; -import { SegMenTaTion } from './SpSegmentationChart.js'; +} from '../../database/SqlLite'; +import { info } from '../../../log/Log'; +import { SpNativeMemoryChart } from './SpNativeMemoryChart'; +import { SpAbilityMonitorChart } from './SpAbilityMonitorChart'; +import { SpProcessChart } from './SpProcessChart'; +import { perfDataQuery } from './PerfDataQuery'; +import { SpVirtualMemChart } from './SpVirtualMemChart'; +import { SpFileSystemChart } from './SpFileSystemChart'; +import { SpSdkChart } from './SpSdkChart'; +import { SpHiSysEnergyChart } from './SpHiSysEnergyChart'; +import { VmTrackerChart } from './SpVmTrackerChart'; +import { SpClockChart } from './SpClockChart'; +import { SpIrqChart } from './SpIrqChart'; +import { renders } from '../../database/ui-worker/ProcedureWorker'; +import { EmptyRender } from '../../database/ui-worker/ProcedureWorkerCPU'; +import { TraceRow } from '../trace/base/TraceRow'; +import { SpFrameTimeChart } from './SpFrameTimeChart'; +import { Utils } from '../trace/base/Utils'; +import { SpArkTsChart } from './SpArkTsChart'; +import { MemoryConfig } from '../../bean/MemoryConfig'; +import { FlagsConfig } from '../SpFlags'; +import { SpLogChart } from './SpLogChart'; +import { SpHiSysEventChart } from './SpHiSysEventChart'; +import { SpAllAppStartupsChart } from './SpAllAppStartups'; +import {setVSyncData} from './VSync'; export class SpChartManager { static APP_STARTUP_PID_ARR: Array = []; @@ -71,12 +70,11 @@ export class SpChartManager { private smapsChart: VmTrackerChart; private clockChart: SpClockChart; private irqChart: SpIrqChart; - private SpAllAppStartupsChart!: SpAllAppStartupsChart; + private spAllAppStartupsChart!: SpAllAppStartupsChart; frameTimeChart: SpFrameTimeChart; public arkTsChart: SpArkTsChart; private logChart: SpLogChart; private spHiSysEvent: SpHiSysEventChart; - private SegMenTaTion:SegMenTaTion; constructor(trace: SpSystemTrace) { this.trace = trace; @@ -98,8 +96,7 @@ export class SpChartManager { this.arkTsChart = new SpArkTsChart(trace); this.logChart = new SpLogChart(trace); this.spHiSysEvent = new SpHiSysEventChart(trace); - this.SpAllAppStartupsChart = new SpAllAppStartupsChart(trace); - this.SegMenTaTion = new SegMenTaTion(trace); + this.spAllAppStartupsChart = new SpAllAppStartupsChart(trace); } async init(progress: Function) { @@ -143,7 +140,6 @@ export class SpChartManager { await this.clockChart.init(); progress('Irq init', 84); await this.irqChart.init(); - await this.SegMenTaTion.init(); info('Cpu Freq Data initialized'); await this.virtualMemChart.init(); progress('fps', 85); @@ -171,8 +167,8 @@ export class SpChartManager { progress('ark ts', 90); await this.arkTsChart.initFolder(); info('ark ts initialized'); - await this.SpAllAppStartupsChart.init(); await this.frameTimeChart.init(); + await this.spAllAppStartupsChart.init(); progress('process', 92); await this.process.initAsyncFuncData(); await this.process.initDeliverInputEvent(); diff --git a/ide/src/trace/component/chart/SpClockChart.ts b/ide/src/trace/component/chart/SpClockChart.ts index 2da72725a03bb5580195e5c636f4486f722dae8f..74c4c2d4a801e4b1ecdcd208e8418747305646a3 100644 --- a/ide/src/trace/component/chart/SpClockChart.ts +++ b/ide/src/trace/component/chart/SpClockChart.ts @@ -13,15 +13,15 @@ * limitations under the License. */ -import { SpSystemTrace } from '../SpSystemTrace.js'; -import { queryClockData, queryClockFrequency, queryClockState, queryScreenState } from '../../database/SqlLite.js'; -import { TraceRow } from '../trace/base/TraceRow.js'; -import { renders } from '../../database/ui-worker/ProcedureWorker.js'; -import { info } from '../../../log/Log.js'; -import { ClockRender, ClockStruct } from '../../database/ui-worker/ProcedureWorkerClock.js'; -import { ColorUtils } from '../trace/base/ColorUtils.js'; -import { EmptyRender } from '../../database/ui-worker/ProcedureWorkerCPU.js'; -import { Utils } from '../trace/base/Utils.js'; +import { SpSystemTrace } from '../SpSystemTrace'; +import { queryClockData, queryClockFrequency, queryClockState, queryScreenState } from '../../database/SqlLite'; +import { TraceRow } from '../trace/base/TraceRow'; +import { renders } from '../../database/ui-worker/ProcedureWorker'; +import { info } from '../../../log/Log'; +import { ClockRender, ClockStruct } from '../../database/ui-worker/ProcedureWorkerClock'; +import { ColorUtils } from '../trace/base/ColorUtils'; +import { EmptyRender } from '../../database/ui-worker/ProcedureWorkerCPU'; +import { Utils } from '../trace/base/Utils'; export class SpClockChart { private trace: SpSystemTrace; diff --git a/ide/src/trace/component/chart/SpCpuChart.ts b/ide/src/trace/component/chart/SpCpuChart.ts index 995c3849df6953ac2e7b892095a4863b8335a73c..73d825ae0cf98a59a7610d1baff0daf2031cf3af 100644 --- a/ide/src/trace/component/chart/SpCpuChart.ts +++ b/ide/src/trace/component/chart/SpCpuChart.ts @@ -13,20 +13,20 @@ * limitations under the License. */ -import { SpSystemTrace } from '../SpSystemTrace.js'; +import { SpSystemTrace } from '../SpSystemTrace'; import { queryCpuCount, queryCpuData, queryCpuDataCount, queryCpuMax, queryCpuSchedSlice, -} from '../../database/SqlLite.js'; -import { info } from '../../../log/Log.js'; -import { TraceRow } from '../trace/base/TraceRow.js'; -import { procedurePool } from '../../database/Procedure.js'; -import { CpuRender, CpuStruct } from '../../database/ui-worker/ProcedureWorkerCPU.js'; -import { renders } from '../../database/ui-worker/ProcedureWorker.js'; -import { Utils } from '../trace/base/Utils.js'; +} from '../../database/SqlLite'; +import { info } from '../../../log/Log'; +import { TraceRow } from '../trace/base/TraceRow'; +import { procedurePool } from '../../database/Procedure'; +import { CpuRender, CpuStruct } from '../../database/ui-worker/ProcedureWorkerCPU'; +import { renders } from '../../database/ui-worker/ProcedureWorker'; +import { Utils } from '../trace/base/Utils'; export class SpCpuChart { private trace: SpSystemTrace; diff --git a/ide/src/trace/component/chart/SpFileSystemChart.ts b/ide/src/trace/component/chart/SpFileSystemChart.ts index 458cf57c5e7ff55e10e80b630d75b9ddbb117f9f..02e1badb21c73dd38252f442c0f82d613eb41903 100644 --- a/ide/src/trace/component/chart/SpFileSystemChart.ts +++ b/ide/src/trace/component/chart/SpFileSystemChart.ts @@ -13,21 +13,21 @@ * limitations under the License. */ -import { SpSystemTrace } from '../SpSystemTrace.js'; -import { TraceRow } from '../trace/base/TraceRow.js'; -import { procedurePool } from '../../database/Procedure.js'; +import { SpSystemTrace } from '../SpSystemTrace'; +import { TraceRow } from '../trace/base/TraceRow'; +import { procedurePool } from '../../database/Procedure'; import { getDiskIOLatencyChartDataByProcess, getDiskIOProcess, getFileSysChartDataByType, getFileSysVirtualMemoryChartData, hasFileSysData, -} from '../../database/SqlLite.js'; -import { FileSysChartStruct, FileSystemRender } from '../../database/ui-worker/ProcedureWorkerFileSystem.js'; -import { ColorUtils } from '../trace/base/ColorUtils.js'; -import { Utils } from '../trace/base/Utils.js'; -import { renders } from '../../database/ui-worker/ProcedureWorker.js'; -import { EmptyRender } from '../../database/ui-worker/ProcedureWorkerCPU.js'; +} from '../../database/SqlLite'; +import { FileSysChartStruct, FileSystemRender } from '../../database/ui-worker/ProcedureWorkerFileSystem'; +import { ColorUtils } from '../trace/base/ColorUtils'; +import { Utils } from '../trace/base/Utils'; +import { renders } from '../../database/ui-worker/ProcedureWorker'; +import { EmptyRender } from '../../database/ui-worker/ProcedureWorkerCPU'; export class SpFileSystemChart { private trace: SpSystemTrace; diff --git a/ide/src/trace/component/chart/SpFpsChart.ts b/ide/src/trace/component/chart/SpFpsChart.ts index 3a403662981d505826d1eec3f2a9f0be601327a6..468c4421f46e1e415c6061d26a80528e03136599 100644 --- a/ide/src/trace/component/chart/SpFpsChart.ts +++ b/ide/src/trace/component/chart/SpFpsChart.ts @@ -13,12 +13,12 @@ * limitations under the License. */ -import { SpSystemTrace } from '../SpSystemTrace.js'; -import { getFps } from '../../database/SqlLite.js'; -import { TraceRow } from '../trace/base/TraceRow.js'; -import { info } from '../../../log/Log.js'; -import { renders } from '../../database/ui-worker/ProcedureWorker.js'; -import { FpsRender, FpsStruct } from '../../database/ui-worker/ProcedureWorkerFPS.js'; +import { SpSystemTrace } from '../SpSystemTrace'; +import { getFps } from '../../database/SqlLite'; +import { TraceRow } from '../trace/base/TraceRow'; +import { info } from '../../../log/Log'; +import { renders } from '../../database/ui-worker/ProcedureWorker'; +import { FpsRender, FpsStruct } from '../../database/ui-worker/ProcedureWorkerFPS'; export class SpFpsChart { private trace: SpSystemTrace; diff --git a/ide/src/trace/component/chart/SpFrameTimeChart.ts b/ide/src/trace/component/chart/SpFrameTimeChart.ts index 73c0938a2a99354401bcc1fb2debd4d9d1b84ba1..d4f8230909691dfcb16d04bfe91c203697470bb3 100644 --- a/ide/src/trace/component/chart/SpFrameTimeChart.ts +++ b/ide/src/trace/component/chart/SpFrameTimeChart.ts @@ -13,10 +13,10 @@ * limitations under the License. */ -import { TraceRow } from '../trace/base/TraceRow.js'; -import { renders } from '../../database/ui-worker/ProcedureWorker.js'; -import { JankRender, JankStruct } from '../../database/ui-worker/ProcedureWorkerJank.js'; -import { SpSystemTrace } from '../SpSystemTrace.js'; +import { TraceRow } from '../trace/base/TraceRow'; +import { renders } from '../../database/ui-worker/ProcedureWorker'; +import { JankRender, JankStruct } from '../../database/ui-worker/ProcedureWorkerJank'; +import { SpSystemTrace } from '../SpSystemTrace'; import { queryActualFrameDate, queryExpectedFrameDate, @@ -26,17 +26,17 @@ import { queryFrameSpacing, queryFrameTimeData, queryPhysicalData, -} from '../../database/SqlLite.js'; -import { JanksStruct } from '../../bean/JanksStruct.js'; -import { ns2xByTimeShaft, type PairPoint } from '../../database/ui-worker/ProcedureWorkerCommon.js'; -import { FrameDynamicRender, FrameDynamicStruct } from '../../database/ui-worker/ProcedureWorkerFrameDynamic.js'; -import { FrameAnimationRender, FrameAnimationStruct } from '../../database/ui-worker/ProcedureWorkerFrameAnimation.js'; -import { type BaseStruct } from '../../bean/BaseStruct.js'; -import { FrameSpacingRender, FrameSpacingStruct } from '../../database/ui-worker/ProcedureWorkerFrameSpacing.js'; -import { FlagsConfig, type Params } from '../SpFlags.js'; -import { type AnimationRanges, type DeviceStruct } from '../../bean/FrameComponentBean.js'; -import { type EmptyRender } from '../../database/ui-worker/ProcedureWorkerCPU.js'; -import { TreeItemData } from '../../../base-ui/tree/LitTree.js'; +} from '../../database/SqlLite'; +import { JanksStruct } from '../../bean/JanksStruct'; +import { ns2xByTimeShaft, type PairPoint } from '../../database/ui-worker/ProcedureWorkerCommon'; +import { FrameDynamicRender, FrameDynamicStruct } from '../../database/ui-worker/ProcedureWorkerFrameDynamic'; +import { FrameAnimationRender, FrameAnimationStruct } from '../../database/ui-worker/ProcedureWorkerFrameAnimation'; +import { type BaseStruct } from '../../bean/BaseStruct'; +import { FrameSpacingRender, FrameSpacingStruct } from '../../database/ui-worker/ProcedureWorkerFrameSpacing'; +import { FlagsConfig, type Params } from '../SpFlags'; +import { type AnimationRanges, type DeviceStruct } from '../../bean/FrameComponentBean'; +import { type EmptyRender } from '../../database/ui-worker/ProcedureWorkerCPU'; +import { TreeItemData } from '../../../base-ui/tree/LitTree'; export class SpFrameTimeChart { private trace: SpSystemTrace; @@ -321,7 +321,7 @@ export class SpFrameTimeChart { frameAnimationRow.name = 'Animation'; frameAnimationRow.style.height = `${maxHeight}px`; frameAnimationRow.setAttribute('height', `${maxHeight}`); - frameAnimationRow.addTemplateTypes('Animation Effect'); + frameAnimationRow.addTemplateTypes('AnimationEffect'); frameAnimationRow.setAttribute('children', ''); frameAnimationRow.supplier = (): Promise => new Promise((resolve) => { @@ -370,7 +370,7 @@ export class SpFrameTimeChart { let labelName = dynamicCurveRow.shadowRoot?.querySelector('.name') as HTMLLabelElement; labelName.style.marginRight = '77px'; dynamicCurveRow.name = 'Animation Effect Curve'; - dynamicCurveRow.addTemplateTypes('Animation Effect'); + dynamicCurveRow.addTemplateTypes('AnimationEffect'); dynamicCurveRow.setAttribute('height', '100px'); dynamicCurveRow.setAttribute('children', ''); dynamicCurveRow.setAttribute('model-type', systemConfigList[0].name); @@ -423,7 +423,7 @@ export class SpFrameTimeChart { frameSpacingRow.style.width = '100%'; frameSpacingRow.style.height = '140px'; frameSpacingRow.name = 'Frame spacing'; - frameSpacingRow.addTemplateTypes('Animation Effect'); + frameSpacingRow.addTemplateTypes('AnimationEffect'); frameSpacingRow.setAttribute('height', '140'); frameSpacingRow.setAttribute('children', ''); frameSpacingRow.setAttribute('model-name', name); diff --git a/ide/src/trace/component/chart/SpFreqChart.ts b/ide/src/trace/component/chart/SpFreqChart.ts index a4abd31f8b238613560aecdf395d8e66aabf57cb..d70049d94869030ed80eea9f960acbbf07c6c0e2 100644 --- a/ide/src/trace/component/chart/SpFreqChart.ts +++ b/ide/src/trace/component/chart/SpFreqChart.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { SpSystemTrace } from '../SpSystemTrace.js'; +import { SpSystemTrace } from '../SpSystemTrace'; import { getCpuLimitFreq, getCpuLimitFreqId, @@ -24,16 +24,16 @@ import { queryCpuMaxFreq, queryCpuState, queryCpuStateFilter, -} from '../../database/SqlLite.js'; -import { info } from '../../../log/Log.js'; -import { TraceRow } from '../trace/base/TraceRow.js'; -import { ColorUtils } from '../trace/base/ColorUtils.js'; -import { CpuFreqLimitRender, CpuFreqLimitsStruct } from '../../database/ui-worker/ProcedureWorkerCpuFreqLimits.js'; -import { renders } from '../../database/ui-worker/ProcedureWorker.js'; -import { CpuFreqStruct, FreqRender } from '../../database/ui-worker/ProcedureWorkerFreq.js'; -import { CpuStateRender, CpuStateStruct } from '../../database/ui-worker/ProcedureWorkerCpuState.js'; -import { FolderSupplier, FolderThreadHandler } from './SpChartManager.js'; -import { Utils } from '../trace/base/Utils.js'; +} from '../../database/SqlLite'; +import { info } from '../../../log/Log'; +import { TraceRow } from '../trace/base/TraceRow'; +import { ColorUtils } from '../trace/base/ColorUtils'; +import { CpuFreqLimitRender, CpuFreqLimitsStruct } from '../../database/ui-worker/ProcedureWorkerCpuFreqLimits'; +import { renders } from '../../database/ui-worker/ProcedureWorker'; +import { CpuFreqStruct, FreqRender } from '../../database/ui-worker/ProcedureWorkerFreq'; +import { CpuStateRender, CpuStateStruct } from '../../database/ui-worker/ProcedureWorkerCpuState'; +import { FolderSupplier, FolderThreadHandler } from './SpChartManager'; +import { Utils } from '../trace/base/Utils'; export class SpFreqChart { private trace: SpSystemTrace; private folderRow: TraceRow | undefined; diff --git a/ide/src/trace/component/chart/SpHiPerf.ts b/ide/src/trace/component/chart/SpHiPerf.ts index 3e1d8c91dce77f996b42817bb54cf819cf986109..439975f86dfc857b67d67f32e77e696044cb0eed 100644 --- a/ide/src/trace/component/chart/SpHiPerf.ts +++ b/ide/src/trace/component/chart/SpHiPerf.ts @@ -13,8 +13,8 @@ * limitations under the License. */ -import { SpSystemTrace } from '../SpSystemTrace.js'; -import { TraceRow } from '../trace/base/TraceRow.js'; +import { SpSystemTrace } from '../SpSystemTrace'; +import { TraceRow } from '../trace/base/TraceRow'; import { queryHiPerfCpuData, queryHiPerfCpuMergeData, @@ -24,22 +24,22 @@ import { queryPerfEventType, queryPerfCmdline, queryPerfThread, -} from '../../database/SqlLite.js'; -import { Utils } from '../trace/base/Utils.js'; -import { PerfThread } from '../../bean/PerfProfile.js'; -import { HiperfCpuRender, HiPerfCpuStruct } from '../../database/ui-worker/ProcedureWorkerHiPerfCPU.js'; -import { HiPerfCallChartRender, HiPerfCallChartStruct } from '../../database/ui-worker/ProcedureWorkerHiPerfCallChart.js'; -import { HiperfThreadRender, HiPerfThreadStruct } from '../../database/ui-worker/ProcedureWorkerHiPerfThread.js'; -import { HiperfProcessRender, HiPerfProcessStruct } from '../../database/ui-worker/ProcedureWorkerHiPerfProcess.js'; -import { info } from '../../../log/Log.js'; -import { HiPerfEventStruct } from '../../database/ui-worker/ProcedureWorkerHiPerfEvent.js'; -import { perfDataQuery } from './PerfDataQuery.js'; -import { renders } from '../../database/ui-worker/ProcedureWorker.js'; -import { EmptyRender } from '../../database/ui-worker/ProcedureWorkerCPU.js'; -import { type HiPerfReportStruct } from '../../database/ui-worker/ProcedureWorkerHiPerfReport.js'; -import { SpChartManager } from './SpChartManager.js'; -import { procedurePool } from '../../database/Procedure.js'; -import { HiPerfChartFrame } from '../../bean/PerfStruct.js'; +} from '../../database/SqlLite'; +import { Utils } from '../trace/base/Utils'; +import { PerfThread } from '../../bean/PerfProfile'; +import { HiperfCpuRender, HiPerfCpuStruct } from '../../database/ui-worker/ProcedureWorkerHiPerfCPU'; +import { HiPerfCallChartRender, HiPerfCallChartStruct } from '../../database/ui-worker/ProcedureWorkerHiPerfCallChart'; +import { HiperfThreadRender, HiPerfThreadStruct } from '../../database/ui-worker/ProcedureWorkerHiPerfThread'; +import { HiperfProcessRender, HiPerfProcessStruct } from '../../database/ui-worker/ProcedureWorkerHiPerfProcess'; +import { info } from '../../../log/Log'; +import { HiPerfEventStruct } from '../../database/ui-worker/ProcedureWorkerHiPerfEvent'; +import { perfDataQuery } from './PerfDataQuery'; +import { renders } from '../../database/ui-worker/ProcedureWorker'; +import { EmptyRender } from '../../database/ui-worker/ProcedureWorkerCPU'; +import { type HiPerfReportStruct } from '../../database/ui-worker/ProcedureWorkerHiPerfReport'; +import { SpChartManager } from './SpChartManager'; +import { procedurePool } from '../../database/Procedure'; +import { HiPerfChartFrame } from '../../bean/PerfStruct'; export interface ResultData { existA: boolean | null | undefined; diff --git a/ide/src/trace/component/chart/SpHiSysEnergyChart.ts b/ide/src/trace/component/chart/SpHiSysEnergyChart.ts index 6a157667b2795b474b8335203148b46acfc94e91..cc2f69c63259711fbb33133133821a943ef906b6 100644 --- a/ide/src/trace/component/chart/SpHiSysEnergyChart.ts +++ b/ide/src/trace/component/chart/SpHiSysEnergyChart.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { SpSystemTrace } from '../SpSystemTrace.js'; +import { SpSystemTrace } from '../SpSystemTrace'; import { queryAnomalyData, queryConfigEnergyAppName, @@ -26,17 +26,17 @@ import { querySystemLocationData, querySystemLockData, querySystemSchedulerData, -} from '../../database/SqlLite.js'; -import { info } from '../../../log/Log.js'; -import { TraceRow } from '../trace/base/TraceRow.js'; -import { BaseStruct } from '../../bean/BaseStruct.js'; -import { EnergyAnomalyRender, EnergyAnomalyStruct } from '../../database/ui-worker/ProcedureWorkerEnergyAnomaly.js'; -import { EnergySystemStruct, EnergySystemRender } from '../../database/ui-worker/ProcedureWorkerEnergySystem.js'; -import { EnergyPowerStruct, EnergyPowerRender } from '../../database/ui-worker/ProcedureWorkerEnergyPower.js'; -import { EnergyStateStruct, EnergyStateRender } from '../../database/ui-worker/ProcedureWorkerEnergyState.js'; -import { renders } from '../../database/ui-worker/ProcedureWorker.js'; -import { EmptyRender } from '../../database/ui-worker/ProcedureWorkerCPU.js'; -import { TreeItemData } from '../../../base-ui/tree/LitTree.js'; +} from '../../database/SqlLite'; +import { info } from '../../../log/Log'; +import { TraceRow } from '../trace/base/TraceRow'; +import { BaseStruct } from '../../bean/BaseStruct'; +import { EnergyAnomalyRender, EnergyAnomalyStruct } from '../../database/ui-worker/ProcedureWorkerEnergyAnomaly'; +import { EnergySystemStruct, EnergySystemRender } from '../../database/ui-worker/ProcedureWorkerEnergySystem'; +import { EnergyPowerStruct, EnergyPowerRender } from '../../database/ui-worker/ProcedureWorkerEnergyPower'; +import { EnergyStateStruct, EnergyStateRender } from '../../database/ui-worker/ProcedureWorkerEnergyState'; +import { renders } from '../../database/ui-worker/ProcedureWorker'; +import { EmptyRender } from '../../database/ui-worker/ProcedureWorkerCPU'; +import { TreeItemData } from '../../../base-ui/tree/LitTree'; export class SpHiSysEnergyChart { static app_name: string | null; diff --git a/ide/src/trace/component/chart/SpHiSysEventChart.ts b/ide/src/trace/component/chart/SpHiSysEventChart.ts index bfb2dccbdf07b2b6ca82f962c2a636689d254755..25caff86264fff7e9afb0a49dbdc3c1fc47d01c0 100644 --- a/ide/src/trace/component/chart/SpHiSysEventChart.ts +++ b/ide/src/trace/component/chart/SpHiSysEventChart.ts @@ -13,11 +13,11 @@ * limitations under the License. */ -import { SpSystemTrace } from '../SpSystemTrace.js'; -import { TraceRow } from '../trace/base/TraceRow.js'; -import { renders } from '../../database/ui-worker/ProcedureWorker.js'; -import { HiSysEventRender, HiSysEventStruct } from '../../database/ui-worker/ProcedureWorkerHiSysEvent.js'; -import { queryHiSysEventData } from '../../database/SqlLite.js'; +import { SpSystemTrace } from '../SpSystemTrace'; +import { TraceRow } from '../trace/base/TraceRow'; +import { renders } from '../../database/ui-worker/ProcedureWorker'; +import { HiSysEventRender, HiSysEventStruct } from '../../database/ui-worker/ProcedureWorkerHiSysEvent'; +import { queryHiSysEventData } from '../../database/SqlLite'; export class SpHiSysEventChart { private trace: SpSystemTrace; diff --git a/ide/src/trace/component/chart/SpIrqChart.ts b/ide/src/trace/component/chart/SpIrqChart.ts index b28001936a87bf5fd0dbd884877de2db2830f5b1..87ec79aa8862712c15739654ea494d6d6354d675 100644 --- a/ide/src/trace/component/chart/SpIrqChart.ts +++ b/ide/src/trace/component/chart/SpIrqChart.ts @@ -13,13 +13,13 @@ * limitations under the License. */ -import { SpSystemTrace } from '../SpSystemTrace.js'; -import { TraceRow } from '../trace/base/TraceRow.js'; -import { queryIrqData, queryIrqList } from '../../database/SqlLite.js'; -import { info } from '../../../log/Log.js'; -import { renders } from '../../database/ui-worker/ProcedureWorker.js'; -import { EmptyRender } from '../../database/ui-worker/ProcedureWorkerCPU.js'; -import { IrqRender, IrqStruct } from '../../database/ui-worker/ProcedureWorkerIrq.js'; +import { SpSystemTrace } from '../SpSystemTrace'; +import { TraceRow } from '../trace/base/TraceRow'; +import { queryIrqData, queryIrqList } from '../../database/SqlLite'; +import { info } from '../../../log/Log'; +import { renders } from '../../database/ui-worker/ProcedureWorker'; +import { EmptyRender } from '../../database/ui-worker/ProcedureWorkerCPU'; +import { IrqRender, IrqStruct } from '../../database/ui-worker/ProcedureWorkerIrq'; export class SpIrqChart { private trace: SpSystemTrace; diff --git a/ide/src/trace/component/chart/SpLogChart.ts b/ide/src/trace/component/chart/SpLogChart.ts index b59ae39867c703a26744bf2755589075ce717971..371ea77eaef976848097094e07d7bb8af968e22b 100644 --- a/ide/src/trace/component/chart/SpLogChart.ts +++ b/ide/src/trace/component/chart/SpLogChart.ts @@ -13,11 +13,11 @@ * limitations under the License. */ -import { SpSystemTrace } from '../SpSystemTrace.js'; -import { TraceRow } from '../trace/base/TraceRow.js'; -import { queryLogData } from '../../database/SqlLite.js'; -import { renders } from '../../database/ui-worker/ProcedureWorker.js'; -import { LogRender, LogStruct } from '../../database/ui-worker/ProcedureWorkerLog.js'; +import { SpSystemTrace } from '../SpSystemTrace'; +import { TraceRow } from '../trace/base/TraceRow'; +import { queryLogData } from '../../database/SqlLite'; +import { renders } from '../../database/ui-worker/ProcedureWorker'; +import { LogRender, LogStruct } from '../../database/ui-worker/ProcedureWorkerLog'; const ONE_DAY_NS = 86400000000000; diff --git a/ide/src/trace/component/chart/SpNativeMemoryChart.ts b/ide/src/trace/component/chart/SpNativeMemoryChart.ts index e28619b23cd6a71d1fabeecfaff78b6d624a12bd..25088ab78b3ed584e0fc056a0ad174c610687d66 100644 --- a/ide/src/trace/component/chart/SpNativeMemoryChart.ts +++ b/ide/src/trace/component/chart/SpNativeMemoryChart.ts @@ -13,23 +13,23 @@ * limitations under the License. */ -import { SpSystemTrace } from '../SpSystemTrace.js'; +import { SpSystemTrace } from '../SpSystemTrace'; import { queryBootTime, queryHeapGroupByEvent, queryNativeHookProcess, queryNativeHookStatisticsCount, queryNativeMemoryRealTime, -} from '../../database/SqlLite.js'; -import { TraceRow } from '../trace/base/TraceRow.js'; -import { info } from '../../../log/Log.js'; -import { procedurePool } from '../../database/Procedure.js'; -import { type NativeEventHeap } from '../../bean/NativeHook.js'; -import { HeapRender, HeapStruct } from '../../database/ui-worker/ProcedureWorkerHeap.js'; -import { Utils } from '../trace/base/Utils.js'; -import { renders } from '../../database/ui-worker/ProcedureWorker.js'; -import { EmptyRender } from '../../database/ui-worker/ProcedureWorkerCPU.js'; -import { type BaseStruct } from '../../bean/BaseStruct.js'; +} from '../../database/SqlLite'; +import { TraceRow } from '../trace/base/TraceRow'; +import { info } from '../../../log/Log'; +import { procedurePool } from '../../database/Procedure'; +import { type NativeEventHeap } from '../../bean/NativeHook'; +import { HeapRender, HeapStruct } from '../../database/ui-worker/ProcedureWorkerHeap'; +import { Utils } from '../trace/base/Utils'; +import { renders } from '../../database/ui-worker/ProcedureWorker'; +import { EmptyRender } from '../../database/ui-worker/ProcedureWorkerCPU'; +import { type BaseStruct } from '../../bean/BaseStruct'; export class SpNativeMemoryChart { static EVENT_HEAP: Array = []; diff --git a/ide/src/trace/component/chart/SpProcessChart.ts b/ide/src/trace/component/chart/SpProcessChart.ts index 56cc3717cc94a877caaada46a5b4d00e72290cf7..90d940b0cf380d31a5a79303ea9c0aabb6e977f4 100644 --- a/ide/src/trace/component/chart/SpProcessChart.ts +++ b/ide/src/trace/component/chart/SpProcessChart.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { SpSystemTrace } from '../SpSystemTrace.js'; +import { SpSystemTrace } from '../SpSystemTrace'; import { getFunDataByTid, getMaxDepthByTid, @@ -36,22 +36,22 @@ import { queryProcessThreadsByTable, queryStartupPidArray, queryThreadData, -} from '../../database/SqlLite.js'; -import { Utils } from '../trace/base/Utils.js'; -import { info } from '../../../log/Log.js'; -import { TraceRow } from '../trace/base/TraceRow.js'; -import { renders } from '../../database/ui-worker/ProcedureWorker.js'; -import { ProcessRender, ProcessStruct } from '../../database/ui-worker/ProcedureWorkerProcess.js'; -import { ThreadRender, ThreadStruct } from '../../database/ui-worker/ProcedureWorkerThread.js'; -import { FuncRender, FuncStruct } from '../../database/ui-worker/ProcedureWorkerFunc.js'; -import { MemRender, ProcessMemStruct } from '../../database/ui-worker/ProcedureWorkerMem.js'; -import { FolderSupplier, FolderThreadHandler, SpChartManager } from './SpChartManager.js'; -import { JankRender, JankStruct } from '../../database/ui-worker/ProcedureWorkerJank.js'; -import { ns2xByTimeShaft } from '../../database/ui-worker/ProcedureWorkerCommon.js'; -import { AppStartupRender, AppStartupStruct } from '../../database/ui-worker/ProcedureWorkerAppStartup.js'; -import { SoRender, SoStruct } from '../../database/ui-worker/ProcedureWorkerSoInit.js'; -import { FlagsConfig } from '../SpFlags.js'; -import { JanksStruct } from '../../bean/JanksStruct.js'; +} from '../../database/SqlLite'; +import { Utils } from '../trace/base/Utils'; +import { info } from '../../../log/Log'; +import { TraceRow } from '../trace/base/TraceRow'; +import { renders } from '../../database/ui-worker/ProcedureWorker'; +import { ProcessRender, ProcessStruct } from '../../database/ui-worker/ProcedureWorkerProcess'; +import { ThreadRender, ThreadStruct } from '../../database/ui-worker/ProcedureWorkerThread'; +import { FuncRender, FuncStruct } from '../../database/ui-worker/ProcedureWorkerFunc'; +import { MemRender, ProcessMemStruct } from '../../database/ui-worker/ProcedureWorkerMem'; +import { FolderSupplier, FolderThreadHandler, SpChartManager } from './SpChartManager'; +import { JankRender, JankStruct } from '../../database/ui-worker/ProcedureWorkerJank'; +import { ns2xByTimeShaft } from '../../database/ui-worker/ProcedureWorkerCommon'; +import { AppStartupRender, AppStartupStruct } from '../../database/ui-worker/ProcedureWorkerAppStartup'; +import { SoRender, SoStruct } from '../../database/ui-worker/ProcedureWorkerSoInit'; +import { FlagsConfig } from '../SpFlags'; +import { JanksStruct } from '../../bean/JanksStruct'; export class SpProcessChart { private readonly trace: SpSystemTrace; diff --git a/ide/src/trace/component/chart/SpSdkChart.ts b/ide/src/trace/component/chart/SpSdkChart.ts index 7a04c1b5bc00dc198749ea47b7dd3d8d9b2b9ba2..defce44188270e371eace5bcb20109fdffbf3041 100644 --- a/ide/src/trace/component/chart/SpSdkChart.ts +++ b/ide/src/trace/component/chart/SpSdkChart.ts @@ -13,22 +13,22 @@ * limitations under the License. */ -import { SpSystemTrace } from '../SpSystemTrace.js'; -import { TraceRow } from '../trace/base/TraceRow.js'; +import { SpSystemTrace } from '../SpSystemTrace'; +import { TraceRow } from '../trace/base/TraceRow'; -import { BaseStruct } from '../../bean/BaseStruct.js'; +import { BaseStruct } from '../../bean/BaseStruct'; import { queryCounterMax, querySdkCount, querySdkCounterData, querySdkSliceData, queryStartTime, -} from '../../database/SqlLite.js'; -import { CounterStruct, SdkCounterRender } from '../../database/ui-worker/ProduceWorkerSdkCounter.js'; -import { renders } from '../../database/ui-worker/ProcedureWorker.js'; -import { SdkSliceRender, SdkSliceStruct } from '../../database/ui-worker/ProduceWorkerSdkSlice.js'; -import { EmptyRender } from '../../database/ui-worker/ProcedureWorkerCPU.js'; -import { TabUtil } from '../trace/sheet/sdk/TabUtil.js'; +} from '../../database/SqlLite'; +import { CounterStruct, SdkCounterRender } from '../../database/ui-worker/ProduceWorkerSdkCounter'; +import { renders } from '../../database/ui-worker/ProcedureWorker'; +import { SdkSliceRender, SdkSliceStruct } from '../../database/ui-worker/ProduceWorkerSdkSlice'; +import { EmptyRender } from '../../database/ui-worker/ProcedureWorkerCPU'; +import { TabUtil } from '../trace/sheet/sdk/TabUtil'; export class SpSdkChart { private trace: SpSystemTrace; diff --git a/ide/src/trace/component/chart/SpSegmentationChart.ts b/ide/src/trace/component/chart/SpSegmentationChart.ts deleted file mode 100644 index 443ef90ac5a0d8a3f6a12363cc4be91ad06d74ab..0000000000000000000000000000000000000000 --- a/ide/src/trace/component/chart/SpSegmentationChart.ts +++ /dev/null @@ -1,443 +0,0 @@ -/* - * Copyright (C) 2022 Huawei Device Co., Ltd. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { SpSystemTrace } from '../SpSystemTrace.js'; -import { ColorUtils } from '../trace/base/ColorUtils.js'; -import { TraceRow } from '../trace/base/TraceRow.js'; -import { info } from '../../../log/Log.js'; -import { renders } from '../../database/ui-worker/ProcedureWorker.js'; -import { EmptyRender } from '../../database/ui-worker/ProcedureWorkerCPU.js'; -import { FreqExtendRender, CpuFreqExtendStruct } from '../../database/ui-worker/ProcedureWorkerFreqExtend.js'; -import { BinderRender, binderStruct } from '../../database/ui-worker/procedureWorkerBinder.js'; -import { queryIrqList } from '../../database/SqlLite.js'; - -export class SegMenTaTion { - static trace: SpSystemTrace; - static jsonRow: TraceRow | undefined; - static GpuRow: TraceRow | undefined; - static binderRow: TraceRow | undefined; - static schedRow: TraceRow | undefined; - static freqInfoMapData: any = new Map(); - private rowFolder!: TraceRow; - static chartData: any; - // 数据切割联动 - static setChartData(type: string, data: any) { - this.tabHover(type, false) - let currentMaxValue = 0; - if (type === 'CPU-FREQ') { - let chartData = data.map((v: any) => { - if (v.value > currentMaxValue) { - currentMaxValue = v.value - } - return { - cpu: 0, - dur: v.dur, - value: v.value, - startNS: v.startNS, - cycle: v.cycle, - freq: v.freq - } - }) - CpuFreqExtendStruct.maxValue = currentMaxValue; - SegMenTaTion.jsonRow!.dataList = []; - SegMenTaTion.jsonRow!.dataListCache = []; - SegMenTaTion.jsonRow!.isComplete = false; - SegMenTaTion.jsonRow!.supplier = (): Promise> => - new Promise>((resolve) => resolve(chartData)); - } - else if (type === 'GPU-FREQ') { - let chartData = data.map((v: any) => { - let _count = Number(v.count) - if (_count > currentMaxValue) { - currentMaxValue = _count - } - return { - cpu: 7, - dur: Number(v.dur * 1000000), - value: _count, - startNS: v.startNS, - cycle: v.cycle, - type - } - }) - CpuFreqExtendStruct.maxValue = currentMaxValue; - SegMenTaTion.GpuRow!.dataList = []; - SegMenTaTion.GpuRow!.dataListCache = []; - SegMenTaTion.GpuRow!.isComplete = false; - SegMenTaTion.GpuRow!.supplier = (): Promise> => - new Promise>((resolve) => resolve(chartData)); - SegMenTaTion.trace.refreshCanvas(true) - } else if (type === 'SCHED-SWITCH') { - let chartData = data.map((v: any) => { - if (v.count > currentMaxValue) { - currentMaxValue = v.count - } - return { - cpu: 5, - dur: Number(v.duration) * 1000 * 1000, - value: v.count, - startNS: Number(v.cycleStartTime) * 1000 * 1000, - cycle: v.cycle, - type - } - }) - CpuFreqExtendStruct.maxValue = currentMaxValue; - SegMenTaTion.schedRow!.dataList = []; - SegMenTaTion.schedRow!.dataListCache = []; - SegMenTaTion.schedRow!.isComplete = false; - SegMenTaTion.schedRow!.supplier = (): Promise> => - new Promise>((resolve) => resolve(chartData)); - } else if (type === 'BINDER') { - binderStruct.maxHeight = 0; - let binderList: any = []; - let chartData: any; - data.map((v: any) => { - let listCount = 0; - v.map((t: any) => { - listCount += t.count - if (t.name === 'binder transaction') { - t.depth = t.count - } - if (t.name === 'binder transaction async') { - t.depth = t.count + ((v.filter((i: any) => { - return i.name === 'binder transaction' - }).length > 0) ? (v.filter((i: any) => { - return i.name === 'binder transaction' - })[0].count) : 0); - } - if (t.name === 'binder reply') { - t.depth = t.count + ((v.filter((i: any) => { - return i.name === 'binder transaction' - }).length > 0) ? (v.filter((i: any) => { - return i.name === 'binder transaction' - })[0].count) : 0) + ((v.filter((i: any) => { - return i.name === 'binder transaction async' - }).length > 0) ? (v.filter((i: any) => { - return i.name === 'binder transaction async' - })[0].count) : 0); - } - if (t.name === 'binder async rcv') { - t.depth = t.count + ((v.filter((i: any) => { - return i.name === 'binder transaction' - }).length > 0) ? (v.filter((i: any) => { - return i.name === 'binder transaction' - })[0].count) : 0) + ((v.filter((i: any) => { - return i.name === 'binder transaction async' - }).length > 0) ? (v.filter((i: any) => { - return i.name === 'binder transaction async' - })[0].count) : 0) + ((v.filter((i: any) => { - return i.name === 'binder reply' - }).length > 0) ? (v.filter((i: any) => { - return i.name === 'binder reply' - })[0].count) : 0) - } - binderList.push(t); - }); - binderStruct.maxHeight = binderStruct.maxHeight > listCount ? binderStruct.maxHeight : JSON.parse(JSON.stringify(listCount)); - listCount = 0 - }) - chartData = binderList.map((v: any) => { - return { - cpu: v.name === 'binder transaction' ? - 0 : v.name === 'binder transaction async' ? - 1 : v.name === 'binder reply' ? - 2 : 3, - startNS: v.startNS, - dur: v.dur, - name: `${v.name}`, - value: v.count, - depth: v.depth, - cycle: v.idx, - } - }) - SegMenTaTion.binderRow!.dataList = []; - SegMenTaTion.binderRow!.dataListCache = []; - SegMenTaTion.binderRow!.isComplete = false; - SegMenTaTion.binderRow!.style.height = `${binderStruct.maxHeight > 2 ? binderStruct.maxHeight * 20 + 20 : 40}px`; - SegMenTaTion.binderRow!.supplier = (): Promise> => - new Promise>((resolve) => resolve(chartData)); - } else { - return - } - SegMenTaTion.trace.refreshCanvas(true) - } - - // 悬浮联动 - static tabHover(type: String, tableIsHover: any = false, cycle: number = -1) { - CpuFreqExtendStruct.isTabHover = tableIsHover; - if (type === 'CPU-FREQ' || type === 'GPU-FREQ' || type === 'SCHED-SWITCH') { - if (tableIsHover) { - SegMenTaTion.GpuRow!.isHover = false; - CpuFreqExtendStruct.cycle = cycle - } else { - CpuFreqExtendStruct.cycle = -1 - CpuFreqExtendStruct.hoverCpuFreqStruct = undefined - } - } else if (type === 'BINDER') { - binderStruct.isTableHover = tableIsHover; - if (tableIsHover) { - binderStruct.hoverCycle = cycle - } else { - binderStruct.hoverCycle = -1; - } - } - SegMenTaTion.trace.refreshCanvas(true, 'flagChange') - } - - constructor(trace: SpSystemTrace) { - SegMenTaTion.trace = trace; - } - - async init() { - let irqList = await queryIrqList(); - if (irqList.length == 0) { - return; - } - else { - await this.initFolder(); - await this.initCpuFreq(); - await this.initGpuTrace(); - await this.initSchedTrace(); - await this.initBinderTrace(); - } - } - - async initFolder() { - let row = TraceRow.skeleton(); - row.setAttribute('disabled-check', ''); - row.rowId = `segmentation`; - row.index = 0; - row.rowType = TraceRow.ROW_TYPE_SEGMENTATION; - row.rowParentId = ''; - row.folder = true; - row.style.height = '40px'; - row.name = `Segmentation`; - row.supplier = () => new Promise>((resolve) => resolve([])); - row.onThreadHandler = (useCache) => { - row.canvasSave(SegMenTaTion.trace.canvasPanelCtx!); - if (row.expansion) { - SegMenTaTion.trace.canvasPanelCtx!.clearRect(0, 0, row.frame.width, row.frame.height); - } else { - (renders['empty'] as EmptyRender).renderMainThread( - { - context: SegMenTaTion.trace.canvasPanelCtx, - useCache: useCache, - type: ``, - }, - row - ); - } - row.canvasRestore(SegMenTaTion.trace.canvasPanelCtx!); - }; - this.rowFolder = row; - SegMenTaTion.trace.rowsEL!.appendChild(row); - - } - - async initCpuFreq() { - // json文件泳道 - SegMenTaTion.jsonRow = TraceRow.skeleton(); - SegMenTaTion.jsonRow.rowId = `json0`; - SegMenTaTion.jsonRow.rowType = TraceRow.ROW_TYPE_CPU_COMPUTILITY; - SegMenTaTion.jsonRow.rowParentId = ''; - SegMenTaTion.jsonRow.style.height = '40px'; - SegMenTaTion.jsonRow.name = `Cpu Computility`; - SegMenTaTion.jsonRow.favoriteChangeHandler = SegMenTaTion.trace.favoriteChangeHandler; - SegMenTaTion.jsonRow.checkFile = 'json'; - // 拿到了用户传递的数据 - SegMenTaTion.jsonRow.onRowCheckFileChangeHandler = (e: any) => { - let chartData = JSON.parse(e); - let mapData = new Map(); - chartData.map((v: any) => { - for (let key in v.freqInfo) { - mapData.set(Number(key), v.freqInfo[key]) - } - SegMenTaTion.freqInfoMapData.set(v.cpuId, mapData) - mapData = new Map() - }) - } - SegMenTaTion.jsonRow.focusHandler = (ev) => { - SegMenTaTion.trace!.displayTip( - SegMenTaTion.jsonRow!, - CpuFreqExtendStruct.hoverCpuFreqStruct, - `${ColorUtils.formatNumberComma(CpuFreqExtendStruct.hoverCpuFreqStruct === undefined ? 0 : CpuFreqExtendStruct.hoverCpuFreqStruct.value! || 0)}` - ); - }; - SegMenTaTion.jsonRow.findHoverStruct = () => { - CpuFreqExtendStruct.hoverCpuFreqStruct = SegMenTaTion.jsonRow!.getHoverStruct(); - }; - SegMenTaTion.jsonRow.onThreadHandler = (useCache) => { - let context: CanvasRenderingContext2D; - if (SegMenTaTion.jsonRow!.currentContext) { - context = SegMenTaTion.jsonRow!.currentContext; - } else { - context = SegMenTaTion.jsonRow!.collect ? SegMenTaTion.trace.canvasFavoritePanelCtx! : SegMenTaTion.trace.canvasPanelCtx!; - } - SegMenTaTion.jsonRow!.canvasSave(context); - (renders['freq-extend'] as FreqExtendRender).renderMainThread( - { - context: context, - useCache: useCache, - type: `json0`, - }, - SegMenTaTion.jsonRow! - ); - SegMenTaTion.jsonRow!.canvasRestore(context); - }; - SegMenTaTion.trace.rowsEL!.appendChild(SegMenTaTion.jsonRow); - this.rowFolder!.addChildTraceRow(SegMenTaTion.jsonRow); - } - - async initGpuTrace() { - SegMenTaTion.GpuRow = TraceRow.skeleton(); - SegMenTaTion.GpuRow.rowId = `gpurow`; - SegMenTaTion.GpuRow.rowType = TraceRow.ROW_TYPE_GPU_COMPUTILITY; - SegMenTaTion.GpuRow.rowParentId = ''; - SegMenTaTion.GpuRow.style.height = '40px'; - SegMenTaTion.GpuRow.name = `Gpu Computility`; - SegMenTaTion.GpuRow.favoriteChangeHandler = SegMenTaTion.trace.favoriteChangeHandler; - SegMenTaTion.GpuRow.selectChangeHandler = SegMenTaTion.trace.selectChangeHandler; - SegMenTaTion.GpuRow.supplier = (): Promise> => - new Promise>((resolve) => resolve([])); - SegMenTaTion.GpuRow.focusHandler = (ev) => { - SegMenTaTion.trace!.displayTip( - SegMenTaTion.GpuRow!, - CpuFreqExtendStruct.hoverCpuFreqStruct, - `${ColorUtils.formatNumberComma(CpuFreqExtendStruct.hoverCpuFreqStruct === undefined ? 0 : CpuFreqExtendStruct.hoverCpuFreqStruct.value!)} Hz·ms` - ); - }; - SegMenTaTion.GpuRow.findHoverStruct = () => { - CpuFreqExtendStruct.hoverCpuFreqStruct = SegMenTaTion.GpuRow!.getHoverStruct(); - }; - SegMenTaTion.GpuRow.onThreadHandler = (useCache) => { - let context: CanvasRenderingContext2D; - if (SegMenTaTion.GpuRow!.currentContext) { - context = SegMenTaTion.GpuRow!.currentContext; - } else { - context = SegMenTaTion.GpuRow!.collect ? SegMenTaTion.trace.canvasFavoritePanelCtx! : SegMenTaTion.trace.canvasPanelCtx!; - } - SegMenTaTion.GpuRow!.canvasSave(context); - (renders['freq-extend'] as FreqExtendRender).renderMainThread( - { - context: context, - useCache: useCache, - type: `json0`, - }, - SegMenTaTion.GpuRow! - ); - SegMenTaTion.GpuRow!.canvasRestore(context); - }; - SegMenTaTion.trace.rowsEL!.appendChild(SegMenTaTion.GpuRow); - this.rowFolder!.addChildTraceRow(SegMenTaTion.GpuRow); - } - - async initSchedTrace() { - SegMenTaTion.schedRow = TraceRow.skeleton(); - SegMenTaTion.schedRow.rowId = `sched_switch Count`; - SegMenTaTion.schedRow.rowType = TraceRow.ROW_TYPE_SCHED_SWITCH; - SegMenTaTion.schedRow.rowParentId = ''; - SegMenTaTion.schedRow.style.height = '40px'; - SegMenTaTion.schedRow.name = `Sched_switch Count`; - SegMenTaTion.schedRow.favoriteChangeHandler = SegMenTaTion.trace.favoriteChangeHandler; - SegMenTaTion.schedRow.selectChangeHandler = SegMenTaTion.trace.selectChangeHandler; - SegMenTaTion.schedRow.focusHandler = (ev) => { - SegMenTaTion.trace!.displayTip( - SegMenTaTion.schedRow!, - CpuFreqExtendStruct.hoverCpuFreqStruct, - `${ColorUtils.formatNumberComma(CpuFreqExtendStruct.hoverCpuFreqStruct!.value!)} Hz·ms` - ); - }; - SegMenTaTion.schedRow.findHoverStruct = () => { - CpuFreqExtendStruct.hoverCpuFreqStruct = SegMenTaTion.schedRow!.getHoverStruct(); - }; - SegMenTaTion.schedRow.supplier = (): Promise> => - new Promise>((resolve) => resolve([])); - SegMenTaTion.schedRow.onThreadHandler = (useCache) => { - let context: CanvasRenderingContext2D; - if (SegMenTaTion.schedRow!.currentContext) { - context = SegMenTaTion.schedRow!.currentContext; - } else { - context = SegMenTaTion.schedRow!.collect ? SegMenTaTion.trace.canvasFavoritePanelCtx! : SegMenTaTion.trace.canvasPanelCtx!; - } - SegMenTaTion.schedRow!.canvasSave(context); - (renders['freq-extend'] as FreqExtendRender).renderMainThread( - { - context: context, - useCache: useCache, - type: `json0`, - }, - SegMenTaTion.schedRow! - ); - SegMenTaTion.schedRow!.canvasRestore(context); - }; - SegMenTaTion.trace.rowsEL!.appendChild(SegMenTaTion.schedRow); - this.rowFolder!.addChildTraceRow(SegMenTaTion.schedRow); - } - - async initBinderTrace() { - SegMenTaTion.binderRow = TraceRow.skeleton(); - SegMenTaTion.binderRow.rowId = `binderrow`; - SegMenTaTion.binderRow.rowType = TraceRow.ROW_TYPE_BINDER_COUNT; - SegMenTaTion.binderRow.rowParentId = ''; - SegMenTaTion.binderRow.name = `Binder Count`; - SegMenTaTion.binderRow.style.height = '40px'; - SegMenTaTion.binderRow.favoriteChangeHandler = SegMenTaTion.trace.favoriteChangeHandler; - SegMenTaTion.binderRow.selectChangeHandler = SegMenTaTion.trace.selectChangeHandler; - SegMenTaTion.binderRow.focusHandler = (ev) => { - SegMenTaTion.trace!.displayTip( - SegMenTaTion.binderRow!, - binderStruct.hoverCpuFreqStruct, - `Cycle: ${binderStruct.hoverCpuFreqStruct!.cycle}
- Name: ${binderStruct.hoverCpuFreqStruct!.name || ''}
- Count: ${binderStruct.hoverCpuFreqStruct!.value || ''}` - ); - }; - SegMenTaTion.binderRow.findHoverStruct = () => { - binderStruct.hoverCpuFreqStruct = SegMenTaTion.binderRow!.dataListCache.find((v: any) => { - if (SegMenTaTion.binderRow!.isHover) { - if (v.frame.x < SegMenTaTion.binderRow.hoverX - && v.frame.x + v.frame.width > SegMenTaTion.binderRow.hoverX - && (binderStruct.maxHeight * 20 - v.depth * 20 + 20) < SegMenTaTion.binderRow!.hoverY - && binderStruct.maxHeight * 20 - v.depth * 20 + v.value * 20 + 20 > SegMenTaTion.binderRow!.hoverY) { - console - return v - } - } - }) - }; - SegMenTaTion.binderRow.supplier = (): Promise> => - new Promise>((resolve) => resolve([])); - SegMenTaTion.binderRow.onThreadHandler = (useCache) => { - let context: CanvasRenderingContext2D; - if (SegMenTaTion.binderRow!.currentContext) { - context = SegMenTaTion.binderRow!.currentContext; - } else { - context = SegMenTaTion.binderRow!.collect ? SegMenTaTion.trace.canvasFavoritePanelCtx! : SegMenTaTion.trace.canvasPanelCtx!; - } - SegMenTaTion.binderRow!.canvasSave(context); - (renders['binder'] as BinderRender).renderMainThread( - { - context: context, - useCache: useCache, - type: `binder`, - }, - SegMenTaTion.binderRow! - ); - SegMenTaTion.binderRow!.canvasRestore(context); - }; - SegMenTaTion.trace.rowsEL!.appendChild(SegMenTaTion.binderRow); - this.rowFolder!.addChildTraceRow(SegMenTaTion.binderRow); - } -} diff --git a/ide/src/trace/component/chart/SpVirtualMemChart.ts b/ide/src/trace/component/chart/SpVirtualMemChart.ts index 5a2bab89935d8cc22a6ef5ebded9636766cd7d00..e1a89df4d8240b865a81c967a4b266a15c6d6e5e 100644 --- a/ide/src/trace/component/chart/SpVirtualMemChart.ts +++ b/ide/src/trace/component/chart/SpVirtualMemChart.ts @@ -13,12 +13,12 @@ * limitations under the License. */ -import { SpSystemTrace } from '../SpSystemTrace.js'; -import { TraceRow } from '../trace/base/TraceRow.js'; -import { queryVirtualMemory, queryVirtualMemoryData } from '../../database/SqlLite.js'; -import { VirtualMemoryRender, VirtualMemoryStruct } from '../../database/ui-worker/ProcedureWorkerVirtualMemory.js'; -import { renders } from '../../database/ui-worker/ProcedureWorker.js'; -import { EmptyRender } from '../../database/ui-worker/ProcedureWorkerCPU.js'; +import { SpSystemTrace } from '../SpSystemTrace'; +import { TraceRow } from '../trace/base/TraceRow'; +import { queryVirtualMemory, queryVirtualMemoryData } from '../../database/SqlLite'; +import { VirtualMemoryRender, VirtualMemoryStruct } from '../../database/ui-worker/ProcedureWorkerVirtualMemory'; +import { renders } from '../../database/ui-worker/ProcedureWorker'; +import { EmptyRender } from '../../database/ui-worker/ProcedureWorkerCPU'; export class SpVirtualMemChart { private trace: SpSystemTrace; diff --git a/ide/src/trace/component/chart/SpVmTrackerChart.ts b/ide/src/trace/component/chart/SpVmTrackerChart.ts index 4600b2c7ea2835d9f6f8c45d0d51e66c754a136f..544f6f69a6490ac21f2177d106a3f01129d93c90 100644 --- a/ide/src/trace/component/chart/SpVmTrackerChart.ts +++ b/ide/src/trace/component/chart/SpVmTrackerChart.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { SpSystemTrace } from '../SpSystemTrace.js'; +import { SpSystemTrace } from '../SpSystemTrace'; import { queryDmaSampsData, queryGpuMemoryData, @@ -27,17 +27,17 @@ import { queryGpuWindowType, queryGpuData, queryGpuResourceData, -} from '../../database/SqlLite.js'; -import { TraceRow } from '../trace/base/TraceRow.js'; -import { type BaseStruct } from '../../bean/BaseStruct.js'; -import { renders } from '../../database/ui-worker/ProcedureWorker.js'; -import { Utils } from '../trace/base/Utils.js'; -import { type EmptyRender } from '../../database/ui-worker/ProcedureWorkerCPU.js'; -import { info } from '../../../log/Log.js'; -import { type SnapshotRender, SnapshotStruct } from '../../database/ui-worker/ProcedureWorkerSnapshot.js'; -import { type TreeItemData } from '../../../base-ui/tree/LitTree.js'; -import { MemoryConfig } from '../../bean/MemoryConfig.js'; -import { TabPaneSmapsRecord } from '../trace/sheet/smaps/TabPaneSmapsRecord.js'; +} from '../../database/SqlLite'; +import { TraceRow } from '../trace/base/TraceRow'; +import { type BaseStruct } from '../../bean/BaseStruct'; +import { renders } from '../../database/ui-worker/ProcedureWorker'; +import { Utils } from '../trace/base/Utils'; +import { type EmptyRender } from '../../database/ui-worker/ProcedureWorkerCPU'; +import { info } from '../../../log/Log'; +import { type SnapshotRender, SnapshotStruct } from '../../database/ui-worker/ProcedureWorkerSnapshot'; +import { type TreeItemData } from '../../../base-ui/tree/LitTree'; +import { MemoryConfig } from '../../bean/MemoryConfig'; +import { TabPaneSmapsRecord } from '../trace/sheet/smaps/TabPaneSmapsRecord'; export class VmTrackerChart { private trace: SpSystemTrace; diff --git a/ide/src/trace/component/chart/VSync.ts b/ide/src/trace/component/chart/VSync.ts index e1450937538f79eb58cd6d46b98fc1089301eec3..e870772ac2d4e5a72e1f6a846470ed38a8c6d1a1 100644 --- a/ide/src/trace/component/chart/VSync.ts +++ b/ide/src/trace/component/chart/VSync.ts @@ -12,8 +12,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { query } from '../../database/SqlLite.js'; -import { TraceRow } from '../trace/base/TraceRow.js'; +import { query } from '../../database/SqlLite'; +import { TraceRow } from '../trace/base/TraceRow'; interface VSyncData { startTime: number; dur: number; @@ -24,7 +24,7 @@ let vSyncDataList: VSyncData[] = []; let vSyncEnable = false; let isSingle = false; -export function setVSyncDisable(): void{ +export function setVSyncDisable(): void { vSyncEnable = false; } @@ -57,7 +57,7 @@ export const querySingleVSyncData = (): Promise> => FROM callstack JOIN process WHERE process.name = 'render_service' - AND callstack.name like 'H:GenerateVsyncCount%')` + AND (callstack.name like 'H:GenerateVsyncCount%' or callstack.name like 'H:VSyncGenerator::ThreadLoop::Continue%'))` ); /** diff --git a/ide/src/trace/component/schedulingAnalysis/CheckCpuSetting.ts b/ide/src/trace/component/schedulingAnalysis/CheckCpuSetting.ts index 4643a5e04549199a58a86b2168421773ce7aa42c..f9b1a5450c7b1ac07e1c99ea7c64688d553425d0 100644 --- a/ide/src/trace/component/schedulingAnalysis/CheckCpuSetting.ts +++ b/ide/src/trace/component/schedulingAnalysis/CheckCpuSetting.ts @@ -13,11 +13,11 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../base-ui/BaseElement.js'; -import { LitCheckBox } from '../../../base-ui/checkbox/LitCheckBox.js'; -import '../../../base-ui/checkbox/LitCheckBox.js'; -import { SpSchedulingAnalysis } from './SpSchedulingAnalysis.js'; -import { SpStatisticsHttpUtil } from '../../../statistics/util/SpStatisticsHttpUtil.js'; +import { BaseElement, element } from '../../../base-ui/BaseElement'; +import { LitCheckBox } from '../../../base-ui/checkbox/LitCheckBox'; +import '../../../base-ui/checkbox/LitCheckBox'; +import { SpSchedulingAnalysis } from './SpSchedulingAnalysis'; +import { SpStatisticsHttpUtil } from '../../../statistics/util/SpStatisticsHttpUtil'; export class CpuSetting { cpu: number = 0; diff --git a/ide/src/trace/component/schedulingAnalysis/DrawerCpuTabs.ts b/ide/src/trace/component/schedulingAnalysis/DrawerCpuTabs.ts index 6545c0f7d65afdea1deb4347f235012132b25721..e6432fa1d1f852680aee064793225e1a9aea5bbd 100644 --- a/ide/src/trace/component/schedulingAnalysis/DrawerCpuTabs.ts +++ b/ide/src/trace/component/schedulingAnalysis/DrawerCpuTabs.ts @@ -13,14 +13,14 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../base-ui/BaseElement.js'; -import './TabCpuDetailsFrequency.js'; -import './TabCpuDetailsIdle.js'; -import './TabCpuDetailsIrq.js'; -import { TabCpuDetailsFrequency } from './TabCpuDetailsFrequency.js'; -import { TabCpuDetailsIdle } from './TabCpuDetailsIdle.js'; -import { LitTabs } from '../../../base-ui/tabs/lit-tabs.js'; -import { TabCpuDetailsIrq } from './TabCpuDetailsIrq.js'; +import { BaseElement, element } from '../../../base-ui/BaseElement'; +import './TabCpuDetailsFrequency'; +import './TabCpuDetailsIdle'; +import './TabCpuDetailsIrq'; +import { TabCpuDetailsFrequency } from './TabCpuDetailsFrequency'; +import { TabCpuDetailsIdle } from './TabCpuDetailsIdle'; +import { LitTabs } from '../../../base-ui/tabs/lit-tabs'; +import { TabCpuDetailsIrq } from './TabCpuDetailsIrq'; @element('drawer-cpu-tabs') export class DrawerCpuTabs extends BaseElement { diff --git a/ide/src/trace/component/schedulingAnalysis/SpSchedulingAnalysis.ts b/ide/src/trace/component/schedulingAnalysis/SpSchedulingAnalysis.ts index f84503f38408bb02f1e55965a5bb5e48eabfe7a1..123cf0d84f3b8ab0e04a7ce036e7d59f0802e795 100644 --- a/ide/src/trace/component/schedulingAnalysis/SpSchedulingAnalysis.ts +++ b/ide/src/trace/component/schedulingAnalysis/SpSchedulingAnalysis.ts @@ -13,15 +13,15 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../base-ui/BaseElement.js'; -import './TabThreadAnalysis.js'; -import './TabCpuAnalysis.js'; -import { TabCpuAnalysis } from './TabCpuAnalysis.js'; -import { TabThreadAnalysis } from './TabThreadAnalysis.js'; -import { LitTabs } from '../../../base-ui/tabs/lit-tabs.js'; -import { CheckCpuSetting } from './CheckCpuSetting.js'; -import { Top20FrequencyThread } from './Top20FrequencyThread.js'; -import { procedurePool } from '../../database/Procedure.js'; +import { BaseElement, element } from '../../../base-ui/BaseElement'; +import './TabThreadAnalysis'; +import './TabCpuAnalysis'; +import { TabCpuAnalysis } from './TabCpuAnalysis'; +import { TabThreadAnalysis } from './TabThreadAnalysis'; +import { LitTabs } from '../../../base-ui/tabs/lit-tabs'; +import { CheckCpuSetting } from './CheckCpuSetting'; +import { Top20FrequencyThread } from './Top20FrequencyThread'; +import { procedurePool } from '../../database/Procedure'; @element('sp-scheduling-analysis') export class SpSchedulingAnalysis extends BaseElement { diff --git a/ide/src/trace/component/schedulingAnalysis/TabCpuAnalysis.ts b/ide/src/trace/component/schedulingAnalysis/TabCpuAnalysis.ts index 187d1405509963abea402e2a32608a8019e4d599..ac2ac1a06f3513a5341b25584cd74ec865a6e256 100644 --- a/ide/src/trace/component/schedulingAnalysis/TabCpuAnalysis.ts +++ b/ide/src/trace/component/schedulingAnalysis/TabCpuAnalysis.ts @@ -13,20 +13,20 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../base-ui/BaseElement.js'; -import { SpSchedulingAnalysis } from './SpSchedulingAnalysis.js'; -import { DrawerCpuTabs } from './DrawerCpuTabs.js'; -import { LitChartPie } from '../../../base-ui/chart/pie/LitChartPie.js'; -import { LitDrawer } from '../../../base-ui/drawer/LitDrawer.js'; -import '../../../base-ui/drawer/LitDrawer.js'; -import './DrawerCpuTabs.js'; -import { procedurePool } from '../../database/Procedure.js'; -import { info } from '../../../log/Log.js'; +import { BaseElement, element } from '../../../base-ui/BaseElement'; +import { SpSchedulingAnalysis } from './SpSchedulingAnalysis'; +import { DrawerCpuTabs } from './DrawerCpuTabs'; +import { LitChartPie } from '../../../base-ui/chart/pie/LitChartPie'; +import { LitDrawer } from '../../../base-ui/drawer/LitDrawer'; +import '../../../base-ui/drawer/LitDrawer'; +import './DrawerCpuTabs'; +import { procedurePool } from '../../database/Procedure'; +import { info } from '../../../log/Log'; import { LitSelect } from '../../../base-ui/select/LitSelect'; -import '../../../base-ui/progress-bar/LitProgressBar.js'; -import { LitProgressBar } from '../../../base-ui/progress-bar/LitProgressBar.js'; -import { pieChartColors } from '../../../base-ui/chart/pie/LitChartPieData.js'; -import { SpStatisticsHttpUtil } from '../../../statistics/util/SpStatisticsHttpUtil.js'; +import '../../../base-ui/progress-bar/LitProgressBar'; +import { LitProgressBar } from '../../../base-ui/progress-bar/LitProgressBar'; +import { pieChartColors } from '../../../base-ui/chart/pie/LitChartPieData'; +import { SpStatisticsHttpUtil } from '../../../statistics/util/SpStatisticsHttpUtil'; @element('tab-cpu-analysis') export class TabCpuAnalysis extends BaseElement { diff --git a/ide/src/trace/component/schedulingAnalysis/TabCpuDetailsFrequency.ts b/ide/src/trace/component/schedulingAnalysis/TabCpuDetailsFrequency.ts index ea3da89a9759c4aac82da6b913fca0cb7d3ff1b1..cd2aaaa1096900b357fbe15c88ffeb7ee3ee87f4 100644 --- a/ide/src/trace/component/schedulingAnalysis/TabCpuDetailsFrequency.ts +++ b/ide/src/trace/component/schedulingAnalysis/TabCpuDetailsFrequency.ts @@ -13,19 +13,19 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../base-ui/BaseElement.js'; -import { LitChartPie } from '../../../base-ui/chart/pie/LitChartPie.js'; -import { procedurePool } from '../../database/Procedure.js'; -import { SpSchedulingAnalysis } from './SpSchedulingAnalysis.js'; -import { TabCpuDetailsThreads } from './TabCpuDetailsThreads.js'; -import './TabCpuDetailsThreads.js'; -import { info } from '../../../log/Log.js'; -import { LitTable } from '../../../base-ui/table/lit-table.js'; -import { getDataNo } from './utils/Utils.js'; -import '../../../base-ui/progress-bar/LitProgressBar.js'; -import { LitProgressBar } from '../../../base-ui/progress-bar/LitProgressBar.js'; -import './TableNoData.js'; -import { TableNoData } from './TableNoData.js'; +import { BaseElement, element } from '../../../base-ui/BaseElement'; +import { LitChartPie } from '../../../base-ui/chart/pie/LitChartPie'; +import { procedurePool } from '../../database/Procedure'; +import { SpSchedulingAnalysis } from './SpSchedulingAnalysis'; +import { TabCpuDetailsThreads } from './TabCpuDetailsThreads'; +import './TabCpuDetailsThreads'; +import { info } from '../../../log/Log'; +import { LitTable } from '../../../base-ui/table/lit-table'; +import { getDataNo } from './utils/Utils'; +import '../../../base-ui/progress-bar/LitProgressBar'; +import { LitProgressBar } from '../../../base-ui/progress-bar/LitProgressBar'; +import './TableNoData'; +import { TableNoData } from './TableNoData'; @element('tab-cpu-details-frequency') export class TabCpuDetailsFrequency extends BaseElement { diff --git a/ide/src/trace/component/schedulingAnalysis/TabCpuDetailsIdle.ts b/ide/src/trace/component/schedulingAnalysis/TabCpuDetailsIdle.ts index 1b1239d0c3b0b3e86920997953aed125fa30354d..c9a5c04cfc99dbd648efa8189b5d31c0f5cdbe60 100644 --- a/ide/src/trace/component/schedulingAnalysis/TabCpuDetailsIdle.ts +++ b/ide/src/trace/component/schedulingAnalysis/TabCpuDetailsIdle.ts @@ -13,18 +13,18 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../base-ui/BaseElement.js'; -import { LitChartPie } from '../../../base-ui/chart/pie/LitChartPie.js'; -import { procedurePool } from '../../database/Procedure.js'; -import { SpSchedulingAnalysis } from './SpSchedulingAnalysis.js'; -import { info } from '../../../log/Log.js'; -import { LitTable } from '../../../base-ui/table/lit-table.js'; -import '../../../base-ui/progress-bar/LitProgressBar.js'; -import { LitProgressBar } from '../../../base-ui/progress-bar/LitProgressBar.js'; -import { getDataNo } from './utils/Utils.js'; -import './TableNoData.js'; -import { TableNoData } from './TableNoData.js'; -import { pieChartColors } from '../../../base-ui/chart/pie/LitChartPieData.js'; +import { BaseElement, element } from '../../../base-ui/BaseElement'; +import { LitChartPie } from '../../../base-ui/chart/pie/LitChartPie'; +import { procedurePool } from '../../database/Procedure'; +import { SpSchedulingAnalysis } from './SpSchedulingAnalysis'; +import { info } from '../../../log/Log'; +import { LitTable } from '../../../base-ui/table/lit-table'; +import '../../../base-ui/progress-bar/LitProgressBar'; +import { LitProgressBar } from '../../../base-ui/progress-bar/LitProgressBar'; +import { getDataNo } from './utils/Utils'; +import './TableNoData'; +import { TableNoData } from './TableNoData'; +import { pieChartColors } from '../../../base-ui/chart/pie/LitChartPieData'; @element('tab-cpu-details-idle') export class TabCpuDetailsIdle extends BaseElement { diff --git a/ide/src/trace/component/schedulingAnalysis/TabCpuDetailsIrq.ts b/ide/src/trace/component/schedulingAnalysis/TabCpuDetailsIrq.ts index 3b6547dd6cfe3786beed61f190150a10632ae733..85d3481915669ccd7af3b50de81b12d8926b3378 100644 --- a/ide/src/trace/component/schedulingAnalysis/TabCpuDetailsIrq.ts +++ b/ide/src/trace/component/schedulingAnalysis/TabCpuDetailsIrq.ts @@ -13,17 +13,17 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../base-ui/BaseElement.js'; -import { LitChartPie } from '../../../base-ui/chart/pie/LitChartPie.js'; -import { procedurePool } from '../../database/Procedure.js'; -import { SpSchedulingAnalysis } from './SpSchedulingAnalysis.js'; -import { info } from '../../../log/Log.js'; -import { LitTable } from '../../../base-ui/table/lit-table.js'; -import '../../../base-ui/progress-bar/LitProgressBar.js'; -import { LitProgressBar } from '../../../base-ui/progress-bar/LitProgressBar.js'; -import { getDataNo } from './utils/Utils.js'; -import './TableNoData.js'; -import { TableNoData } from './TableNoData.js'; +import { BaseElement, element } from '../../../base-ui/BaseElement'; +import { LitChartPie } from '../../../base-ui/chart/pie/LitChartPie'; +import { procedurePool } from '../../database/Procedure'; +import { SpSchedulingAnalysis } from './SpSchedulingAnalysis'; +import { info } from '../../../log/Log'; +import { LitTable } from '../../../base-ui/table/lit-table'; +import '../../../base-ui/progress-bar/LitProgressBar'; +import { LitProgressBar } from '../../../base-ui/progress-bar/LitProgressBar'; +import { getDataNo } from './utils/Utils'; +import './TableNoData'; +import { TableNoData } from './TableNoData'; @element('tab-cpu-details-irq') export class TabCpuDetailsIrq extends BaseElement { diff --git a/ide/src/trace/component/schedulingAnalysis/TabCpuDetailsThreads.ts b/ide/src/trace/component/schedulingAnalysis/TabCpuDetailsThreads.ts index cdfa3eaf20aa8ce77d8a40df8ad2a2b2761dd0f2..67eeb8f0902d479ffd1996bba0b633c368a71b09 100644 --- a/ide/src/trace/component/schedulingAnalysis/TabCpuDetailsThreads.ts +++ b/ide/src/trace/component/schedulingAnalysis/TabCpuDetailsThreads.ts @@ -13,15 +13,15 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../base-ui/BaseElement.js'; -import { LitChartPie } from '../../../base-ui/chart/pie/LitChartPie.js'; -import { procedurePool } from '../../database/Procedure.js'; -import { LitTable } from '../../../base-ui/table/lit-table.js'; -import { LitProgressBar } from '../../../base-ui/progress-bar/LitProgressBar.js'; -import '../../../base-ui/progress-bar/LitProgressBar.js'; -import { getDataNo } from './utils/Utils.js'; -import './TableNoData.js'; -import { TableNoData } from './TableNoData.js'; +import { BaseElement, element } from '../../../base-ui/BaseElement'; +import { LitChartPie } from '../../../base-ui/chart/pie/LitChartPie'; +import { procedurePool } from '../../database/Procedure'; +import { LitTable } from '../../../base-ui/table/lit-table'; +import { LitProgressBar } from '../../../base-ui/progress-bar/LitProgressBar'; +import '../../../base-ui/progress-bar/LitProgressBar'; +import { getDataNo } from './utils/Utils'; +import './TableNoData'; +import { TableNoData } from './TableNoData'; @element('tab-cpu-details-threads') export class TabCpuDetailsThreads extends BaseElement { diff --git a/ide/src/trace/component/schedulingAnalysis/TabThreadAnalysis.ts b/ide/src/trace/component/schedulingAnalysis/TabThreadAnalysis.ts index 0d5353bc7fc8237f5bfb556315faa559b5dd293f..f92022a7d3e0cbcbf83bf748bf3aa529a1e01acc 100644 --- a/ide/src/trace/component/schedulingAnalysis/TabThreadAnalysis.ts +++ b/ide/src/trace/component/schedulingAnalysis/TabThreadAnalysis.ts @@ -13,18 +13,18 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../base-ui/BaseElement.js'; -import './Top20ThreadCpuUsage.js'; -import './Top20ThreadRunTime.js'; -import './Top20ProcessSwitchCount.js'; -import './Top20ProcessThreadCount.js'; -import './Top20FrequencyThread.js'; -import { Top20ThreadCpuUsage } from './Top20ThreadCpuUsage.js'; -import { Top20ThreadRunTime } from './Top20ThreadRunTime.js'; -import { Top20ProcessThreadCount } from './Top20ProcessThreadCount.js'; -import { Top20ProcessSwitchCount } from './Top20ProcessSwitchCount.js'; -import { Top20FrequencyThread } from './Top20FrequencyThread.js'; -import { SpStatisticsHttpUtil } from '../../../statistics/util/SpStatisticsHttpUtil.js'; +import { BaseElement, element } from '../../../base-ui/BaseElement'; +import './Top20ThreadCpuUsage'; +import './Top20ThreadRunTime'; +import './Top20ProcessSwitchCount'; +import './Top20ProcessThreadCount'; +import './Top20FrequencyThread'; +import { Top20ThreadCpuUsage } from './Top20ThreadCpuUsage'; +import { Top20ThreadRunTime } from './Top20ThreadRunTime'; +import { Top20ProcessThreadCount } from './Top20ProcessThreadCount'; +import { Top20ProcessSwitchCount } from './Top20ProcessSwitchCount'; +import { Top20FrequencyThread } from './Top20FrequencyThread'; +import { SpStatisticsHttpUtil } from '../../../statistics/util/SpStatisticsHttpUtil'; @element('tab-thread-analysis') export class TabThreadAnalysis extends BaseElement { diff --git a/ide/src/trace/component/schedulingAnalysis/TableNoData.ts b/ide/src/trace/component/schedulingAnalysis/TableNoData.ts index 0666c9fef2f68e5576a9ef3d62659b25bbea6a06..dbc00f3993f514cd4a8d28d1775ca00210eb2022 100644 --- a/ide/src/trace/component/schedulingAnalysis/TableNoData.ts +++ b/ide/src/trace/component/schedulingAnalysis/TableNoData.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../base-ui/BaseElement.js'; +import { BaseElement, element } from '../../../base-ui/BaseElement'; @element('table-no-data') export class TableNoData extends BaseElement { diff --git a/ide/src/trace/component/schedulingAnalysis/Top20FrequencyThread.ts b/ide/src/trace/component/schedulingAnalysis/Top20FrequencyThread.ts index a04d1762753b42cd9ebe9998db32637199a70d66..8791963a594f101bca6104f17c7ed6b594341345 100644 --- a/ide/src/trace/component/schedulingAnalysis/Top20FrequencyThread.ts +++ b/ide/src/trace/component/schedulingAnalysis/Top20FrequencyThread.ts @@ -13,20 +13,20 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../base-ui/table/lit-table.js'; -import { procedurePool } from '../../database/Procedure.js'; -import { info } from '../../../log/Log.js'; -import '../../../base-ui/chart/pie/LitChartPie.js'; -import { LitChartPie } from '../../../base-ui/chart/pie/LitChartPie.js'; -import { LitSelect } from '../../../base-ui/select/LitSelect.js'; -import { queryThreads } from '../../database/SqlLite.js'; -import { LitSelectOption } from '../../../base-ui/select/LitSelectOption.js'; -import '../../../base-ui/progress-bar/LitProgressBar.js'; -import { LitProgressBar } from '../../../base-ui/progress-bar/LitProgressBar.js'; -import './TableNoData.js'; -import { TableNoData } from './TableNoData.js'; -import { getProbablyTime } from '../../database/logic-worker/ProcedureLogicWorkerCommon.js'; +import { BaseElement, element } from '../../../base-ui/BaseElement'; +import { LitTable } from '../../../base-ui/table/lit-table'; +import { procedurePool } from '../../database/Procedure'; +import { info } from '../../../log/Log'; +import '../../../base-ui/chart/pie/LitChartPie'; +import { LitChartPie } from '../../../base-ui/chart/pie/LitChartPie'; +import { LitSelect } from '../../../base-ui/select/LitSelect'; +import { queryThreads } from '../../database/SqlLite'; +import { LitSelectOption } from '../../../base-ui/select/LitSelectOption'; +import '../../../base-ui/progress-bar/LitProgressBar'; +import { LitProgressBar } from '../../../base-ui/progress-bar/LitProgressBar'; +import './TableNoData'; +import { TableNoData } from './TableNoData'; +import { getProbablyTime } from '../../database/logic-worker/ProcedureLogicWorkerCommon'; @element('top20-frequency-thread') export class Top20FrequencyThread extends BaseElement { diff --git a/ide/src/trace/component/schedulingAnalysis/Top20ProcessSwitchCount.ts b/ide/src/trace/component/schedulingAnalysis/Top20ProcessSwitchCount.ts index bfcf7f17047a0d1891a5f2b84af96f76b7787325..a6535146adac0ef1583e11e1def550acaf3c082c 100644 --- a/ide/src/trace/component/schedulingAnalysis/Top20ProcessSwitchCount.ts +++ b/ide/src/trace/component/schedulingAnalysis/Top20ProcessSwitchCount.ts @@ -13,15 +13,15 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../base-ui/table/lit-table.js'; -import { procedurePool } from '../../database/Procedure.js'; -import { info } from '../../../log/Log.js'; -import { LitChartPie } from '../../../base-ui/chart/pie/LitChartPie.js'; -import '../../../base-ui/progress-bar/LitProgressBar.js'; -import { LitProgressBar } from '../../../base-ui/progress-bar/LitProgressBar.js'; -import './TableNoData.js'; -import { TableNoData } from './TableNoData.js'; +import { BaseElement, element } from '../../../base-ui/BaseElement'; +import { LitTable } from '../../../base-ui/table/lit-table'; +import { procedurePool } from '../../database/Procedure'; +import { info } from '../../../log/Log'; +import { LitChartPie } from '../../../base-ui/chart/pie/LitChartPie'; +import '../../../base-ui/progress-bar/LitProgressBar'; +import { LitProgressBar } from '../../../base-ui/progress-bar/LitProgressBar'; +import './TableNoData'; +import { TableNoData } from './TableNoData'; @element('top20-process-switch-count') export class Top20ProcessSwitchCount extends BaseElement { diff --git a/ide/src/trace/component/schedulingAnalysis/Top20ProcessThreadCount.ts b/ide/src/trace/component/schedulingAnalysis/Top20ProcessThreadCount.ts index 235aa457ddd78149a15c536478bb8cb954be9cd7..5d3296977bbe8ad2848a0d3934d9b49468bc334c 100644 --- a/ide/src/trace/component/schedulingAnalysis/Top20ProcessThreadCount.ts +++ b/ide/src/trace/component/schedulingAnalysis/Top20ProcessThreadCount.ts @@ -13,16 +13,16 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../base-ui/table/lit-table.js'; -import { procedurePool } from '../../database/Procedure.js'; -import { info } from '../../../log/Log.js'; -import '../../../base-ui/chart/pie/LitChartPie.js'; -import { LitChartPie } from '../../../base-ui/chart/pie/LitChartPie.js'; -import '../../../base-ui/progress-bar/LitProgressBar.js'; -import { LitProgressBar } from '../../../base-ui/progress-bar/LitProgressBar.js'; -import './TableNoData.js'; -import { TableNoData } from './TableNoData.js'; +import { BaseElement, element } from '../../../base-ui/BaseElement'; +import { LitTable } from '../../../base-ui/table/lit-table'; +import { procedurePool } from '../../database/Procedure'; +import { info } from '../../../log/Log'; +import '../../../base-ui/chart/pie/LitChartPie'; +import { LitChartPie } from '../../../base-ui/chart/pie/LitChartPie'; +import '../../../base-ui/progress-bar/LitProgressBar'; +import { LitProgressBar } from '../../../base-ui/progress-bar/LitProgressBar'; +import './TableNoData'; +import { TableNoData } from './TableNoData'; @element('top20-process-thread-count') export class Top20ProcessThreadCount extends BaseElement { diff --git a/ide/src/trace/component/schedulingAnalysis/Top20ThreadCpuUsage.ts b/ide/src/trace/component/schedulingAnalysis/Top20ThreadCpuUsage.ts index a698bb334fafb0ee8a1cbcfe4ce27503ef0e2f4a..b2466e34e60c2cd5b5eea65b0a4c189ed3525cba 100644 --- a/ide/src/trace/component/schedulingAnalysis/Top20ThreadCpuUsage.ts +++ b/ide/src/trace/component/schedulingAnalysis/Top20ThreadCpuUsage.ts @@ -13,21 +13,21 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../base-ui/table/lit-table.js'; -import { LitChartColumn } from '../../../base-ui/chart/column/LitChartColumn.js'; -import '../../../base-ui/chart/column/LitChartColumn.js'; -import './CheckCpuSetting.js'; -import '../../../base-ui/icon/LitIcon.js'; -import { CheckCpuSetting } from './CheckCpuSetting.js'; -import { procedurePool } from '../../database/Procedure.js'; -import { info } from '../../../log/Log.js'; -import '../../../base-ui/progress-bar/LitProgressBar.js'; -import { LitProgressBar } from '../../../base-ui/progress-bar/LitProgressBar.js'; -import './TableNoData.js'; -import { TableNoData } from './TableNoData.js'; -import { getProbablyTime } from '../../database/logic-worker/ProcedureLogicWorkerCommon.js'; -import { SpSchedulingAnalysis } from './SpSchedulingAnalysis.js'; +import { BaseElement, element } from '../../../base-ui/BaseElement'; +import { LitTable } from '../../../base-ui/table/lit-table'; +import { LitChartColumn } from '../../../base-ui/chart/column/LitChartColumn'; +import '../../../base-ui/chart/column/LitChartColumn'; +import './CheckCpuSetting'; +import '../../../base-ui/icon/LitIcon'; +import { CheckCpuSetting } from './CheckCpuSetting'; +import { procedurePool } from '../../database/Procedure'; +import { info } from '../../../log/Log'; +import '../../../base-ui/progress-bar/LitProgressBar'; +import { LitProgressBar } from '../../../base-ui/progress-bar/LitProgressBar'; +import './TableNoData'; +import { TableNoData } from './TableNoData'; +import { getProbablyTime } from '../../database/logic-worker/ProcedureLogicWorkerCommon'; +import { SpSchedulingAnalysis } from './SpSchedulingAnalysis'; @element('top20-thread-cpu-usage') export class Top20ThreadCpuUsage extends BaseElement { diff --git a/ide/src/trace/component/schedulingAnalysis/Top20ThreadRunTime.ts b/ide/src/trace/component/schedulingAnalysis/Top20ThreadRunTime.ts index eb51e2fffed5fbaf876c8e768429c316c67bd05d..dbd1c6d6be6d0ff73562daeb8f9317ba83eab0bd 100644 --- a/ide/src/trace/component/schedulingAnalysis/Top20ThreadRunTime.ts +++ b/ide/src/trace/component/schedulingAnalysis/Top20ThreadRunTime.ts @@ -13,15 +13,15 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../base-ui/table/lit-table.js'; -import { SpSchedulingAnalysis } from './SpSchedulingAnalysis.js'; -import { procedurePool } from '../../database/Procedure.js'; -import { info } from '../../../log/Log.js'; -import '../../../base-ui/progress-bar/LitProgressBar.js'; -import { LitProgressBar } from '../../../base-ui/progress-bar/LitProgressBar.js'; -import './TableNoData.js'; -import { TableNoData } from './TableNoData.js'; +import { BaseElement, element } from '../../../base-ui/BaseElement'; +import { LitTable } from '../../../base-ui/table/lit-table'; +import { SpSchedulingAnalysis } from './SpSchedulingAnalysis'; +import { procedurePool } from '../../database/Procedure'; +import { info } from '../../../log/Log'; +import '../../../base-ui/progress-bar/LitProgressBar'; +import { LitProgressBar } from '../../../base-ui/progress-bar/LitProgressBar'; +import './TableNoData'; +import { TableNoData } from './TableNoData'; @element('top20-thread-run-time') export class Top20ThreadRunTime extends BaseElement { diff --git a/ide/src/trace/component/schedulingAnalysis/utils/Utils.ts b/ide/src/trace/component/schedulingAnalysis/utils/Utils.ts index c0d40eb6d4cb68ee370fe9c10c3c0d5366802429..3dc44e328dfbf5caba80dfd67bdb9f957b75bcb4 100644 --- a/ide/src/trace/component/schedulingAnalysis/utils/Utils.ts +++ b/ide/src/trace/component/schedulingAnalysis/utils/Utils.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { Utils } from '../../trace/base/Utils.js'; +import { Utils } from '../../trace/base/Utils'; export const getFormatData = (data: Array) => { let arrData: Array = []; diff --git a/ide/src/trace/component/setting/SpAllocations.ts b/ide/src/trace/component/setting/SpAllocations.ts index 2f65c50b8e86f6198de76690d8c6f7e461139c27..29f011429efeb07dfa286bf9ccaa7244f571bb19 100644 --- a/ide/src/trace/component/setting/SpAllocations.ts +++ b/ide/src/trace/component/setting/SpAllocations.ts @@ -13,15 +13,15 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../base-ui/BaseElement.js'; -import { log } from '../../../log/Log.js'; -import { SpApplication } from '../../SpApplication.js'; -import { LitSearch } from '../trace/search/Search.js'; -import { SpRecordTrace } from '../SpRecordTrace.js'; -import { Cmd } from '../../../command/Cmd.js'; -import LitSwitch from '../../../base-ui/switch/lit-switch.js'; -import { LitSlider } from '../../../base-ui/slider/LitSlider.js'; -import { LitSelectV } from '../../../base-ui/select/LitSelectV.js'; +import { BaseElement, element } from '../../../base-ui/BaseElement'; +import { log } from '../../../log/Log'; +import { SpApplication } from '../../SpApplication'; +import { LitSearch } from '../trace/search/Search'; +import { SpRecordTrace } from '../SpRecordTrace'; +import { Cmd } from '../../../command/Cmd'; +import LitSwitch from '../../../base-ui/switch/lit-switch'; +import { LitSlider } from '../../../base-ui/slider/LitSlider'; +import { LitSelectV } from '../../../base-ui/select/LitSelectV'; @element('sp-allocations') export class SpAllocations extends BaseElement { diff --git a/ide/src/trace/component/setting/SpArkTs.ts b/ide/src/trace/component/setting/SpArkTs.ts index c081c43d803cc0f519b9e3ece0972c9e560f1cdb..836360ebed6a319ed3cecc9a71fa2c77464f0ba3 100644 --- a/ide/src/trace/component/setting/SpArkTs.ts +++ b/ide/src/trace/component/setting/SpArkTs.ts @@ -13,17 +13,17 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../base-ui/BaseElement.js'; -import '../../../base-ui/select/LitAllocationSelect.js'; +import { BaseElement, element } from '../../../base-ui/BaseElement'; +import '../../../base-ui/select/LitAllocationSelect'; -import '../../../base-ui/switch/lit-switch.js'; -import { LitAllocationSelect } from '../../../base-ui/select/LitAllocationSelect.js'; -import { SpRecordTrace } from '../SpRecordTrace.js'; -import { Cmd } from '../../../command/Cmd.js'; -import { LitRadioBox } from '../../../base-ui/radiobox/LitRadioBox.js'; -import { SpCheckDesBox } from './SpCheckDesBox.js'; -import LitSwitch from '../../../base-ui/switch/lit-switch.js'; -import { SpApplication } from '../../SpApplication.js'; +import '../../../base-ui/switch/lit-switch'; +import { LitAllocationSelect } from '../../../base-ui/select/LitAllocationSelect'; +import { SpRecordTrace } from '../SpRecordTrace'; +import { Cmd } from '../../../command/Cmd'; +import { LitRadioBox } from '../../../base-ui/radiobox/LitRadioBox'; +import { SpCheckDesBox } from './SpCheckDesBox'; +import LitSwitch from '../../../base-ui/switch/lit-switch'; +import { SpApplication } from '../../SpApplication'; @element('sp-ark-ts') export class SpArkTs extends BaseElement { diff --git a/ide/src/trace/component/setting/SpCheckDesBox.ts b/ide/src/trace/component/setting/SpCheckDesBox.ts index 9a950e7150c7b69735a2fee6f1c2b014f32dd964..d1c0977d2229e7a807249dcdd79fe6cd643bc1a9 100644 --- a/ide/src/trace/component/setting/SpCheckDesBox.ts +++ b/ide/src/trace/component/setting/SpCheckDesBox.ts @@ -13,8 +13,8 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../base-ui/BaseElement.js'; -import { LitCheckBox, LitCheckBoxChangeEvent } from '../../../base-ui/checkbox/LitCheckBox.js'; +import { BaseElement, element } from '../../../base-ui/BaseElement'; +import { LitCheckBox, LitCheckBoxChangeEvent } from '../../../base-ui/checkbox/LitCheckBox'; @element('check-des-box') export class SpCheckDesBox extends BaseElement { diff --git a/ide/src/trace/component/setting/SpFileSystem.ts b/ide/src/trace/component/setting/SpFileSystem.ts index 716a4df7b2cc557a9c71848882fd48159d9b3c53..0a1cce88f66aa49b6c4dcd76dd70a998849e3da5 100644 --- a/ide/src/trace/component/setting/SpFileSystem.ts +++ b/ide/src/trace/component/setting/SpFileSystem.ts @@ -13,19 +13,19 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../base-ui/BaseElement.js'; -import { LitSelectV } from '../../../base-ui/select/LitSelectV.js'; -import LitSwitch, { LitSwitchChangeEvent } from '../../../base-ui/switch/lit-switch.js'; -import '../../../base-ui/select/LitSelectV.js'; -import '../../../base-ui/select/LitSelect.js'; +import { BaseElement, element } from '../../../base-ui/BaseElement'; +import { LitSelectV } from '../../../base-ui/select/LitSelectV'; +import LitSwitch, { LitSwitchChangeEvent } from '../../../base-ui/switch/lit-switch'; +import '../../../base-ui/select/LitSelectV'; +import '../../../base-ui/select/LitSelect'; -import '../../../base-ui/switch/lit-switch.js'; -import { LitSelect } from '../../../base-ui/select/LitSelect.js'; -import { SpRecordTrace } from '../SpRecordTrace.js'; -import { Cmd } from '../../../command/Cmd.js'; -import { CmdConstant } from '../../../command/CmdConstant.js'; -import { HdcDeviceManager } from '../../../hdc/HdcDeviceManager.js'; -import { SpApplication } from '../../SpApplication.js'; +import '../../../base-ui/switch/lit-switch'; +import { LitSelect } from '../../../base-ui/select/LitSelect'; +import { SpRecordTrace } from '../SpRecordTrace'; +import { Cmd } from '../../../command/Cmd'; +import { CmdConstant } from '../../../command/CmdConstant'; +import { HdcDeviceManager } from '../../../hdc/HdcDeviceManager'; +import { SpApplication } from '../../SpApplication'; @element('sp-file-system') export class SpFileSystem extends BaseElement { diff --git a/ide/src/trace/component/setting/SpHilogRecord.ts b/ide/src/trace/component/setting/SpHilogRecord.ts index ef1bb665b7cb1831eacd7b5465101be064e396f5..ce0dba914a8dbc84830bae51d39a1dd258a9158b 100644 --- a/ide/src/trace/component/setting/SpHilogRecord.ts +++ b/ide/src/trace/component/setting/SpHilogRecord.ts @@ -13,15 +13,15 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../base-ui/BaseElement.js'; -import LitSwitch from '../../../base-ui/switch/lit-switch.js'; -import '../../../base-ui/select/LitAllocationSelect.js'; +import { BaseElement, element } from '../../../base-ui/BaseElement'; +import LitSwitch from '../../../base-ui/switch/lit-switch'; +import '../../../base-ui/select/LitAllocationSelect'; -import '../../../base-ui/switch/lit-switch.js'; -import { SpRecordTrace } from '../SpRecordTrace.js'; -import { Cmd } from '../../../command/Cmd.js'; -import { LitAllocationSelect } from '../../../base-ui/select/LitAllocationSelect.js'; -import { LitSelect } from '../../../base-ui/select/LitSelect.js'; +import '../../../base-ui/switch/lit-switch'; +import { SpRecordTrace } from '../SpRecordTrace'; +import { Cmd } from '../../../command/Cmd'; +import { LitAllocationSelect } from '../../../base-ui/select/LitAllocationSelect'; +import { LitSelect } from '../../../base-ui/select/LitSelect'; @element('sp-hi-log') export class SpHilogRecord extends BaseElement { @@ -55,6 +55,7 @@ export class SpHilogRecord extends BaseElement { configVisibility = 'block'; } if (hiLogConfigList) { + console.log(configVisibility); hiLogConfigList!.forEach(configEl => { configEl.style.display = configVisibility; }); diff --git a/ide/src/trace/component/setting/SpHisysEvent.ts b/ide/src/trace/component/setting/SpHisysEvent.ts index 154c68483422de2a68320e020a277bfb797e1444..647cce95b2883b655f9829a2ee9228550a10ab88 100644 --- a/ide/src/trace/component/setting/SpHisysEvent.ts +++ b/ide/src/trace/component/setting/SpHisysEvent.ts @@ -13,13 +13,13 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../base-ui/BaseElement.js'; -import LitSwitch, { LitSwitchChangeEvent } from '../../../base-ui/switch/lit-switch.js'; -import '../../../base-ui/select/LitAllocationSelect.js'; -import '../../../base-ui/switch/lit-switch.js'; -import { SpRecordTrace } from '../SpRecordTrace.js'; -import { HdcDeviceManager } from '../../../hdc/HdcDeviceManager.js'; -import { LitAllocationSelect } from '../../../base-ui/select/LitAllocationSelect.js'; +import { BaseElement, element } from '../../../base-ui/BaseElement'; +import LitSwitch, { LitSwitchChangeEvent } from '../../../base-ui/switch/lit-switch'; +import '../../../base-ui/select/LitAllocationSelect'; +import '../../../base-ui/switch/lit-switch'; +import { SpRecordTrace } from '../SpRecordTrace'; +import { HdcDeviceManager } from '../../../hdc/HdcDeviceManager'; +import { LitAllocationSelect } from '../../../base-ui/select/LitAllocationSelect'; @element('sp-hisys-event') export class SpHisysEvent extends BaseElement { diff --git a/ide/src/trace/component/setting/SpProbesConfig.ts b/ide/src/trace/component/setting/SpProbesConfig.ts index 83e799a541c7e5394a4f5a0840227cb0cf197ce1..ac676627f62c18d06d28de041f55d30c6e146cdd 100644 --- a/ide/src/trace/component/setting/SpProbesConfig.ts +++ b/ide/src/trace/component/setting/SpProbesConfig.ts @@ -13,13 +13,13 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../base-ui/BaseElement.js'; -import { checkDesBean, SpCheckDesBox } from './SpCheckDesBox.js'; -import { LitCheckBox, LitCheckBoxChangeEvent } from '../../../base-ui/checkbox/LitCheckBox.js'; -import { LitRadioGroup } from '../../../base-ui/radiobox/LitRadioGroup.js'; -import { info, log } from '../../../log/Log.js'; +import { BaseElement, element } from '../../../base-ui/BaseElement'; +import { checkDesBean, SpCheckDesBox } from './SpCheckDesBox'; +import { LitCheckBox, LitCheckBoxChangeEvent } from '../../../base-ui/checkbox/LitCheckBox'; +import { LitRadioGroup } from '../../../base-ui/radiobox/LitRadioGroup'; +import { info, log } from '../../../log/Log'; import { LitSlider } from '../../../base-ui/slider/LitSlider'; -import LitSwitch from '../../../base-ui/switch/lit-switch.js'; +import LitSwitch from '../../../base-ui/switch/lit-switch'; @element('probes-config') export class SpProbesConfig extends BaseElement { @@ -66,7 +66,7 @@ export class SpProbesConfig extends BaseElement { if (this.ftraceBufferSizeResult?.hasAttribute('percent')) { return Number(this.ftraceBufferSizeResult?.getAttribute('percent')); } - return 20480; + return 102400; } get memoryConfig() { @@ -312,7 +312,7 @@ export class SpProbesConfig extends BaseElement { ftraceBufferSizeSlider.sliderStyle = { minRange: 2048, maxRange: 307200, - defaultValue: '20480', + defaultValue: '102400', resultUnit: 'KB', stepSize: 2, lineColor: 'var(--dark-color3,#46B1E3)', @@ -332,10 +332,10 @@ export class SpProbesConfig extends BaseElement { if (this.ftraceBufferSizeResult!.hasAttribute('percent')) { ftraceBuffSizeResultInput.value = Number(this.ftraceBufferSizeResult!.getAttribute('percent')).toString(); } else { - ftraceBuffSizeResultInput.value = '20480'; + ftraceBuffSizeResultInput.value = '102400'; } }); - ftraceBufferSizeSliderParent.setAttribute('percent', '20480'); + ftraceBufferSizeSliderParent.setAttribute('percent', '102400'); ftraceBuffSizeResultInput.style.color = 'var(--dark-color1,#000000)'; ftraceBuffSizeResultInput.addEventListener('input', (ev) => { if (this.ftraceBufferSizeResult!.hasAttribute('percent')) { @@ -346,7 +346,7 @@ export class SpProbesConfig extends BaseElement { ftraceBuffSizeResultInput.style.backgroundColor = 'var(--dark-background5,#F2F2F2)'; if (ftraceBuffSizeResultInput.value.trim() === '') { ftraceBuffSizeResultInput.style.color = 'red'; - ftraceBufferSizeSliderParent.setAttribute('percent', '20480'); + ftraceBufferSizeSliderParent.setAttribute('percent', '102400'); return; } let ftraceBufferSize = Number(ftraceBuffSizeResultInput.value); @@ -355,7 +355,7 @@ export class SpProbesConfig extends BaseElement { ftraceBufferSize > ftraceBufferSizeSlider!.sliderStyle.maxRange ) { ftraceBuffSizeResultInput.parentElement!.classList.add('border-red'); - ftraceBufferSizeSliderParent.setAttribute('percent', '20480'); + ftraceBufferSizeSliderParent.setAttribute('percent', '102400'); } else { ftraceBuffSizeResultInput.parentElement!.classList.remove('border-red'); ftraceBufferSizeSlider!.percent = ftraceBuffSizeResultInput.value; @@ -368,8 +368,8 @@ export class SpProbesConfig extends BaseElement { ftraceBuffSizeResultInput.addEventListener('focusout', (ev) => { if (ftraceBuffSizeResultInput.value.trim() === '') { ftraceBuffSizeResultInput.parentElement!.classList.remove('border-red'); - ftraceBufferSizeSliderParent.setAttribute('percent', '20480'); - ftraceBuffSizeResultInput.value = '20480'; + ftraceBufferSizeSliderParent.setAttribute('percent', '102400'); + ftraceBuffSizeResultInput.value = '102400'; ftraceBuffSizeResultInput.style.color = 'var(--dark-color,#6a6f77)'; ftraceBufferSizeSliderParent.setAttribute('percent', ftraceBuffSizeResultInput.value); ftraceBufferSizeSliderParent.setAttribute('percentValue', ftraceBuffSizeResultInput.value); @@ -587,7 +587,7 @@ export class SpProbesConfig extends BaseElement {
- + KB
diff --git a/ide/src/trace/component/setting/SpRecordPerf.ts b/ide/src/trace/component/setting/SpRecordPerf.ts index 8fae2ddcac36f6f0ecaf7ff1e470797e6d1e843b..5c17d0286398bff0b12d4224f3326ae310bf6685 100644 --- a/ide/src/trace/component/setting/SpRecordPerf.ts +++ b/ide/src/trace/component/setting/SpRecordPerf.ts @@ -13,22 +13,22 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../base-ui/BaseElement.js'; -import { LitSelectV } from '../../../base-ui/select/LitSelectV.js'; -import { LitSelect } from '../../../base-ui/select/LitSelect.js'; -import { LitSlider } from '../../../base-ui/slider/LitSlider.js'; -import LitSwitch, { LitSwitchChangeEvent } from '../../../base-ui/switch/lit-switch.js'; -import '../../../base-ui/select/LitSelectV.js'; -import '../../../base-ui/select/LitSelect.js'; - -import '../../../base-ui/switch/lit-switch.js'; -import { info } from '../../../log/Log.js'; -import { HdcDeviceManager } from '../../../hdc/HdcDeviceManager.js'; -import { SpRecordTrace } from '../SpRecordTrace.js'; -import { SpApplication } from '../../SpApplication.js'; -import { LitSearch } from '../trace/search/Search.js'; -import { Cmd } from '../../../command/Cmd.js'; -import { CmdConstant } from '../../../command/CmdConstant.js'; +import { BaseElement, element } from '../../../base-ui/BaseElement'; +import { LitSelectV } from '../../../base-ui/select/LitSelectV'; +import { LitSelect } from '../../../base-ui/select/LitSelect'; +import { LitSlider } from '../../../base-ui/slider/LitSlider'; +import LitSwitch, { LitSwitchChangeEvent } from '../../../base-ui/switch/lit-switch'; +import '../../../base-ui/select/LitSelectV'; +import '../../../base-ui/select/LitSelect'; + +import '../../../base-ui/switch/lit-switch'; +import { info } from '../../../log/Log'; +import { HdcDeviceManager } from '../../../hdc/HdcDeviceManager'; +import { SpRecordTrace } from '../SpRecordTrace'; +import { SpApplication } from '../../SpApplication'; +import { LitSearch } from '../trace/search/Search'; +import { Cmd } from '../../../command/Cmd'; +import { CmdConstant } from '../../../command/CmdConstant'; @element('sp-record-perf') export class SpRecordPerf extends BaseElement { diff --git a/ide/src/trace/component/setting/SpRecordSetting.ts b/ide/src/trace/component/setting/SpRecordSetting.ts index 0421f3630a956b3e6643d736d90767027556ecd7..cafce6e1becb3bea612de093b3da232e5b023acf 100644 --- a/ide/src/trace/component/setting/SpRecordSetting.ts +++ b/ide/src/trace/component/setting/SpRecordSetting.ts @@ -13,14 +13,14 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../base-ui/BaseElement.js'; -import '../../../base-ui/radiobox/LitRadioBox.js'; -import { LitRadioBox } from '../../../base-ui/radiobox/LitRadioBox.js'; -import '../../../base-ui/slider/LitSlider.js'; -import { LitSlider } from '../../../base-ui/slider/LitSlider.js'; -import '../../../base-ui/popover/LitPopover.js'; -import { info } from '../../../log/Log.js'; -import { SpApplication } from '../../SpApplication.js'; +import { BaseElement, element } from '../../../base-ui/BaseElement'; +import '../../../base-ui/radiobox/LitRadioBox'; +import { LitRadioBox } from '../../../base-ui/radiobox/LitRadioBox'; +import '../../../base-ui/slider/LitSlider'; +import { LitSlider } from '../../../base-ui/slider/LitSlider'; +import '../../../base-ui/popover/LitPopover'; +import { info } from '../../../log/Log'; +import { SpApplication } from '../../SpApplication'; @element('record-setting') export class SpRecordSetting extends BaseElement { diff --git a/ide/src/trace/component/setting/SpRecordTemplate.ts b/ide/src/trace/component/setting/SpRecordTemplate.ts index f30c3e8fe1cf93f98aae08000dfde9b6b16a01b5..47cef3107e89b6ff872b17b8956ee233d8e6331d 100644 --- a/ide/src/trace/component/setting/SpRecordTemplate.ts +++ b/ide/src/trace/component/setting/SpRecordTemplate.ts @@ -13,10 +13,10 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../base-ui/BaseElement.js'; -import LitSwitch, { LitSwitchChangeEvent } from '../../../base-ui/switch/lit-switch.js'; -import { HiperfPluginConfig, ProfilerPluginConfig, TracePluginConfig } from './bean/ProfilerServiceTypes.js'; -import { SpRecordTrace } from '../SpRecordTrace.js'; +import { BaseElement, element } from '../../../base-ui/BaseElement'; +import LitSwitch, { LitSwitchChangeEvent } from '../../../base-ui/switch/lit-switch'; +import { HiperfPluginConfig, ProfilerPluginConfig, TracePluginConfig } from './bean/ProfilerServiceTypes'; +import { SpRecordTrace } from '../SpRecordTrace'; @element('sp-record-template') export class SpRecordTemplate extends BaseElement { @@ -152,7 +152,7 @@ export class SpRecordTemplate extends BaseElement { hitraceCategories: hitraceCategories, flushIntervalMs: 1000, hitraceApps: [], - bufferSizeKb: 2048, + bufferSizeKb: 102400, debugOn: false, flushThresholdKb: 4096, clock: 'boot', diff --git a/ide/src/trace/component/setting/SpSdkConfig.ts b/ide/src/trace/component/setting/SpSdkConfig.ts index 9e47432a50ded8500fc96645e2f48fdd5feefa7b..1dd7866014a546a4fb5fc017fa78395c0d8a58f0 100644 --- a/ide/src/trace/component/setting/SpSdkConfig.ts +++ b/ide/src/trace/component/setting/SpSdkConfig.ts @@ -13,15 +13,14 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../base-ui/BaseElement.js'; -import '../../../base-ui/select/LitSelectV.js'; -import '../../../base-ui/select/LitSelect.js'; - -import '../../../base-ui/switch/lit-switch.js'; -import LitSwitch, { LitSwitchChangeEvent } from '../../../base-ui/switch/lit-switch.js'; -import { LitSelectV } from '../../../base-ui/select/LitSelectV.js'; -import { LitAllocationSelect } from '../../../base-ui/select/LitAllocationSelect.js'; +import { BaseElement, element } from '../../../base-ui/BaseElement'; +import '../../../base-ui/select/LitSelectV'; +import '../../../base-ui/select/LitSelect'; +import '../../../base-ui/switch/lit-switch'; +import LitSwitch, { LitSwitchChangeEvent } from '../../../base-ui/switch/lit-switch'; +import { LitSelectV } from '../../../base-ui/select/LitSelectV'; +import { LitAllocationSelect } from '../../../base-ui/select/LitAllocationSelect'; @element('sp-sdk-config') export class SpSdkConfig extends BaseElement { private worker: Worker | undefined; @@ -168,7 +167,8 @@ export class SpSdkConfig extends BaseElement { if (window.useWb) { return; } - this.worker = new Worker('trace/database/ConfigWorker.js'); + + this.worker = new Worker(new URL('../../database/ConfigWorker',import.meta.url)); } } catch (e) {} this.customConfig = this.shadowRoot?.querySelector('.configList'); diff --git a/ide/src/trace/component/setting/SpTraceCommand.ts b/ide/src/trace/component/setting/SpTraceCommand.ts index 4965e7e78a9c31e1dcb999c2060e86f15906ee35..03cb8d6019573c7093ac7c9753076c00ef613d95 100644 --- a/ide/src/trace/component/setting/SpTraceCommand.ts +++ b/ide/src/trace/component/setting/SpTraceCommand.ts @@ -13,10 +13,10 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../base-ui/BaseElement.js'; -import { info } from '../../../log/Log.js'; -import { SpStatisticsHttpUtil } from '../../../statistics/util/SpStatisticsHttpUtil.js'; -import { PluginConvertUtils } from './utils/PluginConvertUtils.js'; +import { BaseElement, element } from '../../../base-ui/BaseElement'; +import { info } from '../../../log/Log'; +import { SpStatisticsHttpUtil } from '../../../statistics/util/SpStatisticsHttpUtil'; +import { PluginConvertUtils } from './utils/PluginConvertUtils'; @element('trace-command') export class SpTraceCommand extends BaseElement { diff --git a/ide/src/trace/component/setting/SpVmTracker.ts b/ide/src/trace/component/setting/SpVmTracker.ts index 81dec5e24e4aaea70fe7f6ad36dfbb078ad7809d..02020beaf1e5c9eea4e8a8a504a406f57a32f9c9 100644 --- a/ide/src/trace/component/setting/SpVmTracker.ts +++ b/ide/src/trace/component/setting/SpVmTracker.ts @@ -13,14 +13,14 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../base-ui/BaseElement.js'; -import LitSwitch, { LitSwitchChangeEvent } from '../../../base-ui/switch/lit-switch.js'; -import '../../../base-ui/select/LitAllocationSelect.js'; - -import '../../../base-ui/switch/lit-switch.js'; -import { LitAllocationSelect } from '../../../base-ui/select/LitAllocationSelect.js'; -import { SpRecordTrace } from '../SpRecordTrace.js'; -import { Cmd } from '../../../command/Cmd.js'; +import { BaseElement, element } from '../../../base-ui/BaseElement'; +import LitSwitch, { LitSwitchChangeEvent } from '../../../base-ui/switch/lit-switch'; +import '../../../base-ui/select/LitAllocationSelect'; + +import '../../../base-ui/switch/lit-switch'; +import { LitAllocationSelect } from '../../../base-ui/select/LitAllocationSelect'; +import { SpRecordTrace } from '../SpRecordTrace'; +import { Cmd } from '../../../command/Cmd'; @element('sp-vm-tracker') export class SpVmTracker extends BaseElement { diff --git a/ide/src/trace/component/setting/SpWebHdcShell.ts b/ide/src/trace/component/setting/SpWebHdcShell.ts index 447cdca7c09c4fe751f391acf22ad6258b928c6e..55e89d8d8414af7cf62d816cbf7623d403508599 100644 --- a/ide/src/trace/component/setting/SpWebHdcShell.ts +++ b/ide/src/trace/component/setting/SpWebHdcShell.ts @@ -13,10 +13,10 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../base-ui/BaseElement.js'; -import { HdcDeviceManager } from '../../../hdc/HdcDeviceManager.js'; -import { SpRecordTrace } from '../SpRecordTrace.js'; -import { DataMessage } from '../../../hdc/message/DataMessage.js'; +import { BaseElement, element } from '../../../base-ui/BaseElement'; +import { HdcDeviceManager } from '../../../hdc/HdcDeviceManager'; +import { SpRecordTrace } from '../SpRecordTrace'; +import { DataMessage } from '../../../hdc/message/DataMessage'; @element('sp-web-hdc-shell') export class SpWebHdcShell extends BaseElement { diff --git a/ide/src/trace/component/trace/SpChartList.ts b/ide/src/trace/component/trace/SpChartList.ts index 6e8e14a2acc24a2e8ad584623e67a557c3db347c..6036253c44760169d339ec2bf10cc60f2af59184 100644 --- a/ide/src/trace/component/trace/SpChartList.ts +++ b/ide/src/trace/component/trace/SpChartList.ts @@ -13,9 +13,9 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../base-ui/BaseElement.js'; -import { TraceRow } from './base/TraceRow.js'; -import { dpr } from './base/Extension.js'; +import { BaseElement, element } from '../../../base-ui/BaseElement'; +import { TraceRow } from './base/TraceRow'; +import { dpr } from './base/Extension'; import { drawFlagLineSegment, drawLines, @@ -25,13 +25,13 @@ import { drawWakeUpList, PairPoint, Rect, -} from '../../database/ui-worker/ProcedureWorkerCommon.js'; -import { Flag } from './timer-shaft/Flag.js'; -import { TimerShaftElement } from './TimerShaftElement.js'; -import { CpuStruct } from '../../database/ui-worker/ProcedureWorkerCPU.js'; -import { WakeupBean } from '../../bean/WakeupBean.js'; -import { LitIcon } from '../../../base-ui/icon/LitIcon.js'; -import { drawVSync } from '../chart/VSync.js'; +} from '../../database/ui-worker/ProcedureWorkerCommon'; +import { Flag } from './timer-shaft/Flag'; +import { TimerShaftElement } from './TimerShaftElement'; +import { CpuStruct } from '../../database/ui-worker/ProcedureWorkerCPU'; +import { WakeupBean } from '../../bean/WakeupBean'; +import { LitIcon } from '../../../base-ui/icon/LitIcon'; +import { drawVSync } from '../chart/VSync'; const maxScale = 0.8; //收藏最大高度为界面最大高度的80% const topHeight = 150; // 顶部cpu使用率部分高度固定为150px @@ -350,6 +350,7 @@ export class SpChartList extends BaseElement { this.fragmentGroup1.appendChild(row); } this.collectEl1?.appendChild(this.fragmentGroup1); + this.scrollTo({ top: this.collectEl1?.clientHeight || 0 }); } else { if (!this.collect2Expand) { this.collect2Expand = true; @@ -362,10 +363,10 @@ export class SpChartList extends BaseElement { this.fragmentGroup2.appendChild(row); } this.collectEl2!.appendChild(this.fragmentGroup2); + this.scrollTo({ top: this.scrollHeight }); } this.updateGroupDisplay(); this.resizeHeight(); - this.scrollTo({ top: this.scrollHeight }); this.refreshFavoriteCanvas(); row.currentContext = this.canvasCtx; } diff --git a/ide/src/trace/component/trace/TimerShaftElement.ts b/ide/src/trace/component/trace/TimerShaftElement.ts index 04d23257385d07d3a23c88e2a9973c6940799a61..e305641871a1397e33a4f2552fab5546e40a33ed 100644 --- a/ide/src/trace/component/trace/TimerShaftElement.ts +++ b/ide/src/trace/component/trace/TimerShaftElement.ts @@ -13,18 +13,18 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../base-ui/BaseElement.js'; -import { TimeRuler } from './timer-shaft/TimeRuler.js'; -import { Rect } from './timer-shaft/Rect.js'; -import { RangeRuler, TimeRange } from './timer-shaft/RangeRuler.js'; -import { SlicesTime, SportRuler } from './timer-shaft/SportRuler.js'; -import { procedurePool } from '../../database/Procedure.js'; -import { Flag } from './timer-shaft/Flag.js'; -import { info } from '../../../log/Log.js'; -import { TraceSheet } from './base/TraceSheet.js'; -import { SelectionParam } from '../../bean/BoxSelection.js'; -import { type SpSystemTrace, CurrentSlicesTime } from '../SpSystemTrace.js'; -import './timer-shaft/CollapseButton.js'; +import { BaseElement, element } from '../../../base-ui/BaseElement'; +import { TimeRuler } from './timer-shaft/TimeRuler'; +import { Rect } from './timer-shaft/Rect'; +import { RangeRuler, TimeRange } from './timer-shaft/RangeRuler'; +import { SlicesTime, SportRuler } from './timer-shaft/SportRuler'; +import { procedurePool } from '../../database/Procedure'; +import { Flag } from './timer-shaft/Flag'; +import { info } from '../../../log/Log'; +import { TraceSheet } from './base/TraceSheet'; +import { SelectionParam } from '../../bean/BoxSelection'; +import { type SpSystemTrace, CurrentSlicesTime } from '../SpSystemTrace'; +import './timer-shaft/CollapseButton'; //随机生成十六位进制颜色 export function randomRgbColor() { let r = Math.floor(Math.random() * 255); diff --git a/ide/src/trace/component/trace/base/ColorUtils.ts b/ide/src/trace/component/trace/base/ColorUtils.ts index c3c75ef11bb354aa3063b14fb504a3a87f66eb0e..e2046a2b0717920c526c72d0b63b167d258148f4 100644 --- a/ide/src/trace/component/trace/base/ColorUtils.ts +++ b/ide/src/trace/component/trace/base/ColorUtils.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { CpuStruct } from '../../../database/ui-worker/ProcedureWorkerCPU.js'; +import { CpuStruct } from '../../../database/ui-worker/ProcedureWorkerCPU'; export class ColorUtils { public static GREY_COLOR: string = '#f0f0f0'; diff --git a/ide/src/trace/component/trace/base/CustomThemeColor.ts b/ide/src/trace/component/trace/base/CustomThemeColor.ts index f743e957376c9fed203ad79203145b1c53baf9a2..762cc311ed6f06cfea7cfea62b4d7e9f516102c4 100644 --- a/ide/src/trace/component/trace/base/CustomThemeColor.ts +++ b/ide/src/trace/component/trace/base/CustomThemeColor.ts @@ -13,11 +13,11 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../base-ui/BaseElement.js'; -import { ColorUtils } from './ColorUtils.js'; -import { LitRadioBox } from '../../../../base-ui/radiobox/LitRadioBox.js'; -import { SpApplication } from '../../../SpApplication.js'; -import { SpSystemTrace } from '../../SpSystemTrace.js'; +import { BaseElement, element } from '../../../../base-ui/BaseElement'; +import { ColorUtils } from './ColorUtils'; +import { LitRadioBox } from '../../../../base-ui/radiobox/LitRadioBox'; +import { SpApplication } from '../../../SpApplication'; +import { SpSystemTrace } from '../../SpSystemTrace'; @element('custom-theme-color') export class CustomThemeColor extends BaseElement { diff --git a/ide/src/trace/component/trace/base/Extension.ts b/ide/src/trace/component/trace/base/Extension.ts index 6373d2c3033baa1c975ee7f8641eb94696428b30..eb01c169d2f23b0fda1ee7f9537462391e6dd79a 100644 --- a/ide/src/trace/component/trace/base/Extension.ts +++ b/ide/src/trace/component/trace/base/Extension.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { EventCenter } from './EventCenter.js'; +import { EventCenter } from './EventCenter'; declare global { interface Number { diff --git a/ide/src/trace/component/trace/base/RangeSelect.ts b/ide/src/trace/component/trace/base/RangeSelect.ts index f6c7ebc3d476a290448d353ee8c37997183f7017..5e3c8c43aa37e5fc160fbae973e4e458d4feed6b 100644 --- a/ide/src/trace/component/trace/base/RangeSelect.ts +++ b/ide/src/trace/component/trace/base/RangeSelect.ts @@ -13,13 +13,13 @@ * limitations under the License. */ -import { RangeSelectStruct, TraceRow } from './TraceRow.js'; -import { Rect } from '../timer-shaft/Rect.js'; -import { ns2x, TimerShaftElement } from '../TimerShaftElement.js'; -import { info } from '../../../../log/Log.js'; -import './Extension.js'; -import { SpSystemTrace } from '../../SpSystemTrace.js'; -import { querySearchRowFuncData } from '../../../database/SqlLite.js'; +import { RangeSelectStruct, TraceRow } from './TraceRow'; +import { Rect } from '../timer-shaft/Rect'; +import { ns2x, TimerShaftElement } from '../TimerShaftElement'; +import { info } from '../../../../log/Log'; +import './Extension'; +import { SpSystemTrace } from '../../SpSystemTrace'; +import { querySearchRowFuncData } from '../../../database/SqlLite'; export class RangeSelect { private rowsEL: HTMLDivElement | undefined | null; @@ -87,7 +87,11 @@ export class RangeSelect { row.docompositionList = []; }); docompositionData = []; - if (this.rangeTraceRow.length === 1 && this.rangeTraceRow[0]?.getAttribute('row-type') === 'func') { + if ( + this.rangeTraceRow.length === 1 && + this.rangeTraceRow[0]?.getAttribute('row-type') === 'func' && + this.rangeTraceRow[0]?.getAttribute('name')?.startsWith('render_service') + ) { querySearchRowFuncData( 'H:RSMainThread::DoComposition', Number(this.rangeTraceRow[0]?.getAttribute('row-id')), diff --git a/ide/src/trace/component/trace/base/TraceRow.ts b/ide/src/trace/component/trace/base/TraceRow.ts index 07de4e950a873d62204fc3aaf123561a225930a6..55a759360e257b86b9c96c6ae700f669d1a14af5 100644 --- a/ide/src/trace/component/trace/base/TraceRow.ts +++ b/ide/src/trace/component/trace/base/TraceRow.ts @@ -13,23 +13,23 @@ * limitations under the License. */ -import { element } from '../../../../base-ui/BaseElement.js'; -import { TimeRange } from '../timer-shaft/RangeRuler.js'; -import '../../../../base-ui/icon/LitIcon.js'; -import { Rect } from '../timer-shaft/Rect.js'; -import { BaseStruct } from '../../../bean/BaseStruct.js'; -import { ns2x } from '../TimerShaftElement.js'; -import { TraceRowObject } from './TraceRowObject.js'; -import { LitCheckBox } from '../../../../base-ui/checkbox/LitCheckBox.js'; +import { element } from '../../../../base-ui/BaseElement'; +import { TimeRange } from '../timer-shaft/RangeRuler'; +import '../../../../base-ui/icon/LitIcon'; +import { Rect } from '../timer-shaft/Rect'; +import { BaseStruct } from '../../../bean/BaseStruct'; +import { ns2x } from '../TimerShaftElement'; +import { TraceRowObject } from './TraceRowObject'; +import { LitCheckBox } from '../../../../base-ui/checkbox/LitCheckBox'; import { LitIcon } from '../../../../base-ui/icon/LitIcon'; -import '../../../../base-ui/popover/LitPopoverV.js'; -import '../../../../base-ui/tree/LitTree.js'; -import { LitPopover } from '../../../../base-ui/popover/LitPopoverV.js'; -import { info } from '../../../../log/Log.js'; -import { ColorUtils } from './ColorUtils.js'; -import { drawSelectionRange, isFrameContainPoint } from '../../../database/ui-worker/ProcedureWorkerCommon.js'; -import { TraceRowConfig } from './TraceRowConfig.js'; -import { type TreeItemData, LitTree } from '../../../../base-ui/tree/LitTree.js'; +import '../../../../base-ui/popover/LitPopoverV'; +import '../../../../base-ui/tree/LitTree'; +import { LitPopover } from '../../../../base-ui/popover/LitPopoverV'; +import { info } from '../../../../log/Log'; +import { ColorUtils } from './ColorUtils'; +import { drawSelectionRange, isFrameContainPoint } from '../../../database/ui-worker/ProcedureWorkerCommon'; +import { TraceRowConfig } from './TraceRowConfig'; +import { type TreeItemData, LitTree } from '../../../../base-ui/tree/LitTree'; export class RangeSelectStruct { startX: number | undefined; @@ -44,11 +44,6 @@ let dragDirection: string = ''; @element('trace-row') export class TraceRow extends HTMLElement { - static ROW_TYPE_SEGMENTATION = 'segmentation'; - static ROW_TYPE_CPU_COMPUTILITY = 'cpu_computility'; - static ROW_TYPE_GPU_COMPUTILITY = 'gpu_computility'; - static ROW_TYPE_SCHED_SWITCH = 'sched_switch'; - static ROW_TYPE_BINDER_COUNT = 'binder'; static ROW_TYPE_CPU = 'cpu-data'; static ROW_TYPE_CPU_STATE = 'cpu-state'; static ROW_TYPE_CPU_FREQ = 'cpu-freq'; @@ -161,7 +156,7 @@ export class TraceRow extends HTMLElement { public isLoading: boolean = false; public tampName: string = ''; public readonly args: any; - public templateType: Array = []; + public templateType: Set = new Set(); private rootEL: HTMLDivElement | null | undefined; private nameEL: HTMLLabelElement | null | undefined; private rowSettingTree: LitTree | null | undefined; @@ -179,9 +174,6 @@ export class TraceRow extends HTMLElement { parentRowEl: TraceRow | undefined; _rowSettingList: Array | null | undefined; _docompositionList: Array | undefined; - public rowCheckFileEL: LitIcon | null | undefined; - public inputEL: any; - public onRowCheckFileChangeHandler: ((file: any) => void) | undefined | null; focusHandler?: (ev: MouseEvent) => void | undefined; findHoverStruct?: () => void | undefined; @@ -196,12 +188,12 @@ export class TraceRow extends HTMLElement { isOffScreen: boolean; skeleton?: boolean; } = { - canvasNumber: 1, - alpha: false, - contextId: '2d', - isOffScreen: true, - skeleton: false, - } + canvasNumber: 1, + alpha: false, + contextId: '2d', + isOffScreen: true, + skeleton: false, + } ) { super(); this.args = args; @@ -224,6 +216,7 @@ export class TraceRow extends HTMLElement { static get observedAttributes() { return [ 'folder', + 'sticky', 'name', 'expansion', 'children', @@ -243,15 +236,6 @@ export class TraceRow extends HTMLElement { 'row-setting-popover-direction', ]; } - - get checkFile(): string { - return this.getAttribute('row-file') || 'disable' - } - - set checkFile(value: string) { - this.setAttribute('row-file', value) - } - get docompositionList(): Array | undefined { return this._docompositionList; } @@ -267,7 +251,16 @@ export class TraceRow extends HTMLElement { set funcExpand(b: boolean) { this.setAttribute('func-expand', b ? 'true' : 'false'); } - + get sticky():boolean{ + return this.hasAttribute('sticky'); + } + set sticky(fixed:boolean){ + if (fixed) { + this.setAttribute('sticky', ''); + }else{ + this.removeAttribute('sticky'); + } + } get hasParentRowEl(): boolean { return this.parentRowEl !== undefined; } @@ -480,7 +473,9 @@ export class TraceRow extends HTMLElement { } addTemplateTypes(...type: string[]): void { - this.templateType.push(...type); + type.forEach(item => { + this.templateType.add(item); + }) if (this.hasParentRowEl) { this.toParentAddTemplateType(this); } @@ -489,7 +484,9 @@ export class TraceRow extends HTMLElement { toParentAddTemplateType = (currentRowEl: TraceRow): void => { let parentRow = currentRowEl.parentRowEl; if (parentRow !== undefined) { - parentRow.templateType.push(...currentRowEl.templateType); + currentRowEl.templateType.forEach(item => { + parentRow!.templateType.add(item); + }); if (parentRow.parentRowEl !== undefined) { this.toParentAddTemplateType(parentRow); } @@ -674,8 +671,6 @@ export class TraceRow extends HTMLElement { this.canvasVessel = this.shadowRoot?.querySelector('.panel-vessel'); this.tipEL = this.shadowRoot?.querySelector('.tip'); let canvasNumber = this.args['canvasNumber']; - this.rowCheckFileEL = this.shadowRoot?.querySelector('.checkfile'); - this.inputEL = this.shadowRoot?.querySelector('#fileinput'); if (!this.args['skeleton']) { for (let i = 0; i < canvasNumber; i++) { let canvas = document.createElement('canvas'); @@ -686,24 +681,6 @@ export class TraceRow extends HTMLElement { } } } - - this.rowCheckFileEL!.onclick = () => { - this.inputEL.click(); - this.inputEL.addEventListener('change', (e: any) => { - let file = e.target.files[0]; - if (file.type === 'application/json') { - let file_reader = new FileReader(); - file_reader.readAsText(file, 'UTF-8'); - file_reader.onload = () => { - let fc = file_reader.result; - this.onRowCheckFileChangeHandler?.(fc) - }; - } else { - return - } - }, false) - } - this.checkBoxEL!.onchange = (ev: any) => { info('checkBoxEL onchange '); if (!ev.target.checked) { @@ -724,13 +701,14 @@ export class TraceRow extends HTMLElement { this.describeEl?.addEventListener('click', () => { if (this.folder) { this.expansion = !this.expansion; + this.sticky = this.expansion; } }); this.funcExpand = true; this.checkType = '-1'; } - addRowSettingPop(): void { + addRowSettingPop(): void{ this.rowSettingPop = document.createElement('lit-popover') as LitPopover; this.rowSettingPop.innerHTML = `
@@ -759,7 +737,7 @@ export class TraceRow extends HTMLElement { this.describeEl?.appendChild(this.rowSettingPop); } - getRowSettingKeys(): Array { + getRowSettingKeys() : Array { if (this.rowSetting === 'enable') { return this.rowSettingTree!.getCheckdKeys(); } @@ -778,7 +756,7 @@ export class TraceRow extends HTMLElement { } } - enableCollapseChart(): void { + enableCollapseChart() : void { this._enableCollapseChart = true; this.nameEL!.onclick = () => { if (this.funcExpand) { @@ -1321,6 +1299,11 @@ export class TraceRow extends HTMLElement { :host(:not([folder])[children]) .name{ } + :host([sticky]) { + position: sticky; + top: 0; + z-index: 999; + } :host([expansion]) { background-color: var(--bark-expansion,#0C65D1); } @@ -1458,34 +1441,14 @@ export class TraceRow extends HTMLElement { :host([row-setting='enable']:not([check-type='-1'])) .collect{ margin-right: 5px; } - :host(:not([row-file='json'])) .checkfile{ - display:none; - } - :host(:not([row-file='json'])) input{ - display:none; - } - :host([row-file='json']) .checkfile{ - display:flex; - } - :host([row-file='json']) input{ - display:flex; - } - :host([row-file='json']) .folder{ - display:none; - } - :host([row-file="json"]) .describe:hover .checkfile{ - color:#000; - }
-
-
`; } diff --git a/ide/src/trace/component/trace/base/TraceRowConfig.ts b/ide/src/trace/component/trace/base/TraceRowConfig.ts index 60e6c73da91335562cfabec8ac0548df778595cf..8073c8b56ed426076365d40cce924964355611c2 100644 --- a/ide/src/trace/component/trace/base/TraceRowConfig.ts +++ b/ide/src/trace/component/trace/base/TraceRowConfig.ts @@ -13,79 +13,120 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../base-ui/BaseElement.js'; -import '../../../../base-ui/checkbox/LitCheckBox.js'; -import { LitCheckBox } from '../../../../base-ui/checkbox/LitCheckBox.js'; -import { TraceRow } from './TraceRow.js'; -import { SpSystemTrace } from '../../SpSystemTrace.js'; -import { LitSearch } from '../search/Search.js'; -import { TraceSheet } from './TraceSheet.js'; -import { CpuStruct } from '../../../database/ui-worker/ProcedureWorkerCPU.js'; -import { type BaseStruct } from '../../../bean/BaseStruct.js'; +import { BaseElement, element } from '../../../../base-ui/BaseElement'; +import '../../../../base-ui/checkbox/LitCheckBox'; +import { LitCheckBox } from '../../../../base-ui/checkbox/LitCheckBox'; +import { TraceRow } from './TraceRow'; +import { SpSystemTrace } from '../../SpSystemTrace'; +import { LitSearch } from '../search/Search'; +import { TraceSheet } from './TraceSheet'; +import { CpuStruct } from '../../../database/ui-worker/ProcedureWorkerCPU'; +import { type BaseStruct } from '../../../bean/BaseStruct'; +import { LitIcon } from '../../../../base-ui/icon/LitIcon'; @element('trace-row-config') export class TraceRowConfig extends BaseElement { static allTraceRowList: Array> = []; - selectTypeList: Array | undefined = []; + private selectTypeList: Array | undefined = []; + private subsystemSelectList: Array | undefined = []; private spSystemTrace: SpSystemTrace | null | undefined; private sceneTable: HTMLDivElement | null | undefined; private chartTable: HTMLDivElement | null | undefined; private inputElement: HTMLInputElement | null | undefined; + private configTitle: HTMLDivElement | null | undefined; private traceRowList: NodeListOf> | undefined; - - get value(): string { - return this.getAttribute('value') || ''; - } - - set value(value: string) { - this.setAttribute('value', value); - } + private exportFileIcon: LitIcon | null | undefined; + private openTempFile: HTMLInputElement | null | undefined; + private treeNodes: SubsystemNode[] = []; + private expandedNodeList: Set = new Set(); + private tempString: string | null = null; + private subSystemSearch: string | undefined; + private backTemp: LitIcon | null | undefined; + private backTableHTML: string | undefined; + private otherRowNames: Array = []; + private sceneList = [ + 'FrameTimeline', + 'AnimationEffect', + 'AppStartup', + 'HiSysEvent', + 'EnergyEvent', + 'Memory', + 'ProcessMemory', + 'ArkTs', + 'NativeMemory', + 'HiPerf', + 'HiEBpf', + ]; static get observedAttributes(): string[] { return ['mode']; } init(): void { - let sceneList = [ - 'FrameTimeline', - 'TaskPool', - 'AnimationEffect', - 'AppStartup', - 'HiSysEvent', - 'EnergyEvent', - 'Memory', - 'ProcessMemory', - 'ArkTs', - 'NativeMemory', - 'HiPerf', - 'HiEBpf', - ]; this.selectTypeList = []; - this.sceneTable!.innerHTML = ''; - this.chartTable!.innerHTML = ''; + this.subsystemSelectList = []; + this.otherRowNames = []; this.inputElement!.value = ''; + this.exportFileIcon!.style.display = 'none'; + this.backTemp!.style.display = 'none'; + this.configTitle!.innerHTML = 'Timeline Details'; this.spSystemTrace = this.parentElement!.querySelector('sp-system-trace'); this.traceRowList = this.spSystemTrace!.shadowRoot?.querySelector('div[class=rows-pane]')!.querySelectorAll>( "trace-row[row-parent-id='']" ); - let allowSceneList: Array = []; TraceRowConfig.allTraceRowList.push(...this.traceRowList!); + this.refreshAllConfig(true, true); + } + + private refreshAllConfig( + isRefreshTopTable: boolean = false, + isRefreshBottomTable: boolean = false, + isSubSysConfig: boolean = false + ): void { + let allowSceneList: Array = []; + this.selectTypeList = []; + this.subsystemSelectList = []; + let topPanel = new DocumentFragment(); + let bottomPanel = new DocumentFragment(); this.traceRowList!.forEach((traceRow: TraceRow) => { traceRow.setAttribute('scene', ''); - if (traceRow.templateType.length > 0) { - traceRow.templateType.forEach((type) => { - if (sceneList.indexOf(type) >= 0 && allowSceneList.indexOf(type) < 0) { - allowSceneList.push(type); - this.initConfigSceneTable(type); - } - }); + this.otherRowNames.push({ + nodeName: traceRow.name, + scene: [...traceRow.templateType] + }); + this.subsystemSelectList!.push({ + nodeName: traceRow.name, + scene: [...traceRow.templateType] + }); + if (isRefreshTopTable) { + this.sceneTable!.innerHTML = ''; + if (traceRow.templateType.size > 0) { + traceRow.templateType.forEach((type) => { + if (this.sceneList.indexOf(type) >= 0 && allowSceneList.indexOf(type) < 0) { + allowSceneList.push(type); + this.initConfigSceneTable(type, topPanel); + } + }); + } + } + if (isRefreshBottomTable) { + if (isSubSysConfig) { + this.backTableHTML = ''; + this.chartTable!.innerHTML = ''; + } else { + this.removeAttribute('temp_config'); + this.backTableHTML = this.chartTable!.innerHTML; + this.chartTable!.innerHTML = ''; + this.initConfigChartTable(traceRow, bottomPanel); + } } - this.initConfigChartTable(traceRow); }); + this.sceneTable?.appendChild(topPanel); + this.chartTable?.appendChild(bottomPanel); } - initConfigSceneTable(item: string): void { + initConfigSceneTable(item: string, topPanel: DocumentFragment): void { let spliceIndex = 1; let div = document.createElement('div'); div.className = 'scene-option-div'; @@ -96,6 +137,7 @@ export class TraceRowConfig extends BaseElement { optionCheckBox.style.height = '100%'; optionCheckBox.title = item; optionCheckBox.addEventListener('change', () => { + this.subsystemSelectList = []; this.clearLines(optionCheckBox.title); if (optionCheckBox.checked) { this.selectTypeList!.push(item); @@ -113,10 +155,10 @@ export class TraceRowConfig extends BaseElement { htmlDivElement.style.gridTemplateColumns = '1fr 1fr'; htmlDivElement.appendChild(div); htmlDivElement.appendChild(optionCheckBox); - this.sceneTable?.appendChild(htmlDivElement); + topPanel.appendChild(htmlDivElement); } - clearLines(type: string) { + clearLines(type: string): void { if (type === 'FrameTimeline' || type === 'AppStartup') { this.spSystemTrace?.removeLinkLinesByBusinessType('janks'); } else if (type === 'Task Pool') { @@ -124,10 +166,10 @@ export class TraceRowConfig extends BaseElement { } } - initConfigChartTable(row: TraceRow): void { + initConfigChartTable(row: TraceRow, bottomPanel: DocumentFragment): void { let templateType = ''; - if (row.templateType.length > 0) { - templateType = row.templateType.reduce((pre, cur) => `${pre}:${cur}`); + if (row.templateType.size > 0) { + templateType = [...row.templateType].reduce((pre, cur) => `${pre}:${cur}`); } let div = document.createElement('div'); div.className = 'chart-option-div chart-item'; @@ -172,7 +214,7 @@ export class TraceRowConfig extends BaseElement { } this.refreshSystemPanel(); }); - this.chartTable!.append(...[div, optionCheckBox]); + bottomPanel.append(...[div, optionCheckBox]); } resetChartOption(): void { @@ -194,6 +236,27 @@ export class TraceRowConfig extends BaseElement { } litCheckBox.checked = isShowCheck; }); + if (this.hasAttribute('temp_config')) { + this.refreshNodes(this.treeNodes); + this.refreshSelectList(this.treeNodes); + this.refreshTable(); + } + } + + refreshSelectList(nodes: SubsystemNode[]): void { + nodes.forEach((item) => { + if (item.depth === 3) { + if (item.isCheck) { + this.subsystemSelectList!.push({ + nodeName: item.nodeName, + scene: item.scene + }); + } + } + if (item.children.length > 0) { + this.refreshSelectList(item.children); + } + }); } resetChartTable(): void { @@ -205,16 +268,11 @@ export class TraceRowConfig extends BaseElement { traceRow.setAttribute('scene', ''); this.refreshChildRow(traceRow.childrenList, true); } else { - for (let index = 0; index < traceRow.templateType!.length; index++) { - let type = traceRow.templateType![index]; - if (this.selectTypeList!.indexOf(type) >= 0) { - isShowRow = true; - break; - } - } + let templateTypeList = [...traceRow.templateType]; + isShowRow = templateTypeList.some(type => this.selectTypeList!.includes(type)); traceRow.expansion = false; if (isShowRow) { - if (traceRow.templateType.length > 0) { + if (traceRow.templateType.size > 0) { traceRow.rowHidden = false; traceRow.setAttribute('scene', ''); if (traceRow.childrenList && traceRow.childrenList.length > 0) { @@ -236,19 +294,11 @@ export class TraceRowConfig extends BaseElement { } else { if (favoriteRow.parentRowEl) { favoriteRow.parentRowEl.expansion = false; - for (let index = 0; index < favoriteRow.parentRowEl!.templateType!.length; index++) { - if (this.selectTypeList!.indexOf(favoriteRow.parentRowEl!.templateType![index]) >= 0) { - isShowRow = true; - break; - } - } + let favoriteList = [...favoriteRow.parentRowEl!.templateType]; + isShowRow = favoriteList.some(type => this.selectTypeList!.includes(type)); } else { - for (let index = 0; index < favoriteRow.templateType!.length; index++) { - if (this.selectTypeList!.indexOf(favoriteRow.templateType![index]) >= 0) { - isShowRow = true; - break; - } - } + let typeList = [...favoriteRow.templateType]; + isShowRow = typeList.some(type => this.selectTypeList!.includes(type)); } if (isShowRow) { favoriteRow.rowHidden = false; @@ -259,10 +309,38 @@ export class TraceRowConfig extends BaseElement { } } }); - this.refreshSystemPanel(); + } + this.refreshSystemPanel(); + } + + refreshNodes(nodes: SubsystemNode[]): void { + if (this.selectTypeList?.length !== 0) { + for (let index = 0; index < nodes.length; index++) { + let item = nodes[index]; + let exists = false; + item.scene?.forEach(sceneItem => { + if (this.selectTypeList!.some(elem => elem === sceneItem)) { + exists = true; + return; + } + }); + if (exists) { + item.isCheck = true; + } else { + item.isCheck = false; + } + this.refreshNodes(item.children); + } + } else { + for (let index = 0; index < nodes.length; index++) { + let item = nodes[index]; + item.isCheck = true; + this.refreshNodes(item.children); + } } } + refreshChildRow(childRows: Array>, isShowScene: boolean = false): void { childRows.forEach((row) => { if (isShowScene) { @@ -311,12 +389,48 @@ export class TraceRowConfig extends BaseElement { this.spSystemTrace!.selectFlag = undefined; } - initElements(): void { } - - connectedCallback(): void { + initElements(): void { this.sceneTable = this.shadowRoot!.querySelector('#scene-select'); this.chartTable = this.shadowRoot!.querySelector('#chart-select'); this.inputElement = this.shadowRoot!.querySelector('input'); + this.backTemp = this.shadowRoot?.querySelector('#back-temp'); + this.openTempFile = this.shadowRoot?.querySelector('#open-temp-file'); + this.exportFileIcon = this.shadowRoot?.querySelector('#export-file-icon'); + let loadTemp = this.shadowRoot?.querySelector('#custom-temp'); + let openFileIcon = this.shadowRoot?.querySelector('#open-file-icon'); + this.configTitle = this.shadowRoot?.querySelector('#config_title'); + let jsonUrl = `https://${window.location.host.split(':')[0]}:${window. + location.port}/application/trace/config/custom_temp_config.json`; + loadTemp!.addEventListener('click', () => { + fetch(jsonUrl).then((res) => { + if (res.ok) { + res.text().then((text) => { + this.tempString = text; + this.loadTempConfig(); + }); + } + })['catch']((err) => { + console.log(err); + }); + }); + openFileIcon!.addEventListener('click', () => { + this.openTempFile!.value = ''; + this.openTempFile?.click(); + }); + } + + private filterFilterSearch(): void { + this.shadowRoot!.querySelectorAll('.temp-chart-item').forEach((subSystemOption: HTMLElement) => { + this.subSystemSearch = subSystemOption.getAttribute('search_text') || ''; + if (this.subSystemSearch!.indexOf(this.inputElement!.value) < 0) { + subSystemOption.style.display = 'none'; + } else { + subSystemOption.style.display = 'grid'; + } + }); + } + + connectedCallback(): void { this.inputElement?.addEventListener('keyup', () => { this.shadowRoot!.querySelectorAll('.chart-item').forEach((elementOption: HTMLElement) => { let searchText = elementOption.getAttribute('search_text') || ''; @@ -326,10 +440,382 @@ export class TraceRowConfig extends BaseElement { elementOption.style.display = 'block'; } }); - this.value = this.inputElement!.value; + this.filterFilterSearch(); + }); + this.backTemp!.addEventListener('click', () => { + this.refreshAllConfig(true, true); + this.resetChartTable(); + this.backTemp!.style.display = 'none'; + this.exportFileIcon!.style.display = 'none'; + this.configTitle!.innerHTML = 'Timeline Details'; + }); + this.openTempFile!.addEventListener('change', (event) => { + let that = this; + let fileList = (event.target as HTMLInputElement).files; + if (fileList && fileList.length > 0) { + let file = fileList[0]; + if (file) { + let reader = new FileReader(); + reader.onload = (): void => { + that.tempString = reader.result as string; + that.loadTempConfig(); + }; + reader.readAsText(file); + } + } + }); + this.exportFileIcon!.addEventListener('click', () => { + this.exportConfig(); }); } + exportConfig(): void { + let a = document.createElement('a'); + let encoder = new TextEncoder(); + let tempBuffer = encoder.encode(this.tempString!); + a.href = URL.createObjectURL(new Blob([tempBuffer])); + a.download = 'custom_config'; + a.click(); + window.URL.revokeObjectURL(a.href); + } + + loadTempConfig(): void { + this.selectTypeList = []; + this.otherRowNames = []; + this.refreshAllConfig(true, true); + this.resetChartTable(); + this.inputElement!.value = ''; + this.backTableHTML = this.chartTable?.innerHTML; + let configJson; + try { + configJson = JSON.parse(this.tempString!); + this.configTitle!.innerHTML = 'SubSystem Template'; + let subsystemsKey: string = 'subsystems'; + if (!configJson[subsystemsKey]) { + this.exportFileIcon!.style.display = 'none'; + this.backTemp!.style.display = 'none'; + this.configTitle!.innerHTML = 'Timeline Details'; + return; + } + } catch (e) { + this.exportFileIcon!.style.display = 'none'; + this.backTemp!.style.display = 'none'; + this.configTitle!.innerHTML = 'Timeline Details'; + return; + } + this.exportFileIcon!.style.display = 'block'; + this.backTemp!.style.display = 'block'; + let id = 0; + this.treeNodes = this.buildSubSystemTreeData(id, configJson); + this.buildTempOtherList(id); + this.setAttribute('temp_config', ''); + this.expandedNodeList.clear(); + this.refreshTable(); + } + + private buildSubSystemTreeData(id: number, configJson: any): SubsystemNode[] { + let subsystemsKey: string = 'subsystems'; + let keys = Object.keys(configJson); + let subSystems: SubsystemNode[] = []; + if (keys.indexOf(subsystemsKey) >= 0) { + let subsystemsData = configJson[subsystemsKey]; + for (let subIndex = 0; subIndex < subsystemsData.length; subIndex++) { + let currentSystemData = subsystemsData[subIndex]; + let currentSubName = currentSystemData.subsystem; + id++; + let subsystemStruct: SubsystemNode = { + id: id, + nodeName: currentSubName, + children: [], + depth: 1, + isCheck: true, + scene: [] + }; + if (subSystems.indexOf(subsystemStruct) < 0) { + let currentCompDates = currentSystemData.components; + for (let compIndex = 0; compIndex < currentCompDates.length; compIndex++) { + let currentCompDate = currentCompDates[compIndex]; + let currentCompName = currentCompDate.component; + let currentChartDates = currentCompDate.charts; + id++; + let componentStruct: SubsystemNode = { + id: id, + parent: subsystemStruct, + nodeName: currentCompName, + children: [], + depth: 2, + isCheck: true, + scene: [] + }; + for (let chartIndex = 0; chartIndex < currentChartDates.length; chartIndex++) { + let currentChartDate = currentChartDates[chartIndex]; + let currentChartName = currentChartDate.chartName; + let currentChartId = currentChartDate.chartId; + let findChartNames: Array | undefined = []; + let scene: string[] = []; + if (this.traceRowList) { + for (let index = 0; index < this.traceRowList.length; index++) { + let item = this.traceRowList[index]; + let chartId = ''; + let name = item.name; + let pattern = / (\d+)$/; + let match = item.name.match(pattern); + if (match) { + chartId = match[0].trim(); + name = item.name.split(match[0])[0]; + if (name !== 'Cpu') { + if (name.toLowerCase().endsWith(currentChartName.toLowerCase()) || currentChartId === chartId) { + scene.push(...item.templateType); + findChartNames.push(item.name); + } + } else { + if (name.toLowerCase().endsWith(currentChartName.toLowerCase())) { + scene.push(...item.templateType); + findChartNames.push(item.name); + } + } + } else { + if (item.name.toLowerCase().endsWith(currentChartName.toLowerCase())) { + scene.push(...item.templateType); + findChartNames.push(item.name); + } + } + } + } + findChartNames.forEach(currentChartName => { + id++; + let chartStruct: SubsystemNode = { + id: id, + parent: componentStruct, + nodeName: currentChartName, + children: [], + depth: 3, + isCheck: true, + scene: scene + }; + if (componentStruct.children.indexOf(chartStruct) < 0) { + let rowNumber = this.otherRowNames.findIndex(row => row.nodeName === chartStruct.nodeName); + if (rowNumber >= 0) { + this.otherRowNames.splice(rowNumber, 1); + } + componentStruct.children.push(chartStruct); + } + }); + } + if (subsystemStruct.children.indexOf(componentStruct) < 0) { + subsystemStruct.children.push(componentStruct); + } + } + subSystems.push(subsystemStruct); + } + } + } + return subSystems; + } + + refreshTable(): void { + this.chartTable!.innerHTML = ''; + for (let index = 0; index < this.treeNodes.length; index++) { + this.buildSubsystem(this.treeNodes[index]); + } + this.filterFilterSearch(); + } + + buildSubsystem(subsystemNode: SubsystemNode): void { + let subsystemDiv = document.createElement('div'); + subsystemDiv.className = 'layout temp-chart-item'; + subsystemDiv.title = subsystemNode.nodeName!; + subsystemDiv.setAttribute('search_text', subsystemNode.nodeName!); + if (subsystemNode.scene) { + subsystemDiv.title = subsystemNode.scene.toString(); + } + if (subsystemNode.depth !== 3) { + let container = document.createElement('div'); + container.style.display = 'flex'; + container.style.marginLeft = `${subsystemNode.depth * 25}px`; + container.style.alignItems = 'center'; + let expandIcon = document.createElement('lit-icon') as LitIcon; + expandIcon.name = 'caret-down'; + expandIcon.className = 'expand-icon'; + if (this.expandedNodeList.has(subsystemNode.id)) { + expandIcon.setAttribute('expansion', ''); + } else { + expandIcon.removeAttribute('expansion'); + } + expandIcon.addEventListener('click', () => { + this.changeNode(subsystemNode.id); + this.refreshTable(); + }); + let componentDiv = document.createElement('div'); + componentDiv.className = 'subsystem-div'; + componentDiv.textContent = subsystemNode.nodeName!; + container.appendChild(expandIcon); + container.appendChild(componentDiv); + subsystemDiv.appendChild(container); + } else { + let chartDiv = document.createElement('div'); + chartDiv.className = 'chart-option'; + chartDiv.textContent = subsystemNode.nodeName!; + subsystemDiv.appendChild(chartDiv); + } + let configCheckBox: LitCheckBox = new LitCheckBox(); + configCheckBox.className = 'scene-check-box temp-chart-item'; + configCheckBox.setAttribute('search_text', subsystemNode.nodeName!); + if (subsystemNode.scene) { + configCheckBox.title = subsystemNode.scene.toString(); + } + configCheckBox.checked = subsystemNode.isCheck!; + configCheckBox.addEventListener('change', () => { + this.spSystemTrace?.removeLinkLinesByBusinessType('janks'); + this.spSystemTrace?.removeLinkLinesByBusinessType('task'); + this.setChildIsSelect(subsystemNode, configCheckBox); + this.setParentSelect(subsystemNode, configCheckBox.checked); + this.refreshTable(); + if (subsystemNode.depth === 3) { + this.traceRowList?.forEach((row) => { + if (row.name === subsystemNode.nodeName) { + if (configCheckBox.checked) { + row.setAttribute('scene', ''); + row.removeAttribute('row-hidden'); + } else { + row.expansion = false; + row.removeAttribute('scene'); + row.setAttribute('row-hidden', ''); + } + } + }); + let chartNumber = this.subsystemSelectList?.findIndex(item => item.nodeName === subsystemNode.nodeName!); + if (configCheckBox.checked) { + if(chartNumber === -1) { + this.subsystemSelectList?.push({ + nodeName: subsystemNode.nodeName!, + scene: configCheckBox.title.split(',') + }); + } + } else { + if (chartNumber !== undefined && chartNumber !== null) { + this.subsystemSelectList?.splice(chartNumber, 1); + } + } + } + + this.spSystemTrace?.collectRows.forEach((favoriteRow) => { + let isShowRow: boolean = false; + let favoriteName = ''; + if (this.subsystemSelectList!.length === 0) { + favoriteRow.removeAttribute('scene'); + favoriteRow.rowHidden = true; + } else { + if (favoriteRow.parentRowEl) { + favoriteRow.parentRowEl.expansion = false; + favoriteName = favoriteRow.parentRowEl!.name; + for (let i = 0; i < this.subsystemSelectList!.length; i++) { + if (this.subsystemSelectList![i].nodeName === favoriteName) { + isShowRow = true; + break; + } + } + } else { + favoriteName = favoriteRow.name; + for (let i = 0; i < this.subsystemSelectList!.length; i++) { + if (this.subsystemSelectList![i].nodeName === favoriteName) { + isShowRow = true; + break; + } + } + } + if (isShowRow) { + favoriteRow.rowHidden = false; + favoriteRow.setAttribute('scene', ''); + } else { + favoriteRow.removeAttribute('scene'); + favoriteRow.rowHidden = true; + } + } + }); + this.refreshSystemPanel(); + }); + subsystemDiv.appendChild(configCheckBox); + this.chartTable?.appendChild(subsystemDiv); + if (subsystemNode.children && this.expandedNodeList.has(subsystemNode.id)) { + subsystemNode.children.forEach(item => { + this.buildSubsystem(item); + }); + } + } + + private buildTempOtherList(id: number): void { + let otherRootNode: SubsystemNode = { + children: [], depth: 1, id: id, nodeName: 'other', isCheck: true, scene: [] + }; + for (let index = 0; index < this.otherRowNames!.length; index++) { + otherRootNode.children.push({ + children: [], + depth: 3, + id: id++, + nodeName: this.otherRowNames![index].nodeName, + isCheck: true, + parent: otherRootNode, + scene: this.otherRowNames![index].scene + }); + } + this.treeNodes.push(otherRootNode); + } + + private setChildIsSelect(node: SubsystemNode, configCheckBox: LitCheckBox): void { + node.isCheck = configCheckBox.checked; + if (node.children.length > 0) { + node.children.forEach(childItem => { + if (childItem.depth === 3) { + let chartNumber = this.subsystemSelectList?.findIndex(item => item.nodeName === childItem.nodeName!); + if (configCheckBox.checked) { + if(chartNumber === -1) { + this.subsystemSelectList?.push({ + nodeName: childItem.nodeName!, + scene: configCheckBox.title.split(',') + }); + } + } else { + if (chartNumber !== undefined && chartNumber !== null) { + this.subsystemSelectList?.splice(chartNumber, 1); + } + } + this.traceRowList?.forEach((item) => { + if (item.name === childItem.nodeName) { + if (configCheckBox.checked) { + item.setAttribute('scene', ''); + item.removeAttribute('row-hidden'); + } else { + item.expansion = false; + item.removeAttribute('scene'); + item.setAttribute('row-hidden', ''); + } + } + }); + } + this.setChildIsSelect(childItem, configCheckBox); + }); + } + } + + private setParentSelect(node: SubsystemNode, isSelect: boolean): void { + if (!isSelect && node.parent) { + node.parent.isCheck = isSelect; + if (node.parent.parent) { + node.parent.parent.isCheck = isSelect; + } + } + } + + private changeNode(currentNode: number): void { + if (this.expandedNodeList.has(currentNode)) { + this.expandedNodeList['delete'](currentNode); + } else { + this.expandedNodeList.add(currentNode); + } + this.refreshTable(); + } + initHtml(): string { return `
Display Template - + +
- -
Template Select
+ +
Template Select
-
- -
Timeline Details
-
-
- -
- +
+
+ +
Timeline Details
+
+
+
+
+ +
+ +
+
+ + + + + +
@@ -475,5 +1013,20 @@ export class TraceRowConfig extends BaseElement { if (name === 'mode' && newValue === '') { this.init(); } - } + }; +} + +export interface SubsystemNode { + id: number; + parent?: SubsystemNode; + nodeName: string | undefined | null; + children: SubsystemNode[]; + depth: number; + isCheck?: boolean; + scene?: string[]; +} + +export interface SceneNode { + nodeName: string | undefined | null; + scene?: string[]; } diff --git a/ide/src/trace/component/trace/base/TraceRowObject.ts b/ide/src/trace/component/trace/base/TraceRowObject.ts index 22cd59520af8c397d8cf5fb98d47c2e246e685e8..bb51910fa26593a1d2cbec578b58749f8b3d34e7 100644 --- a/ide/src/trace/component/trace/base/TraceRowObject.ts +++ b/ide/src/trace/component/trace/base/TraceRowObject.ts @@ -12,9 +12,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { BaseStruct } from '../../../bean/BaseStruct.js'; -import { Rect } from '../timer-shaft/Rect.js'; -import { TraceRow } from './TraceRow.js'; +import { BaseStruct } from '../../../bean/BaseStruct'; +import { Rect } from '../timer-shaft/Rect'; +import { TraceRow } from './TraceRow'; export class TraceRowObject { public rowId: string | undefined; diff --git a/ide/src/trace/component/trace/base/TraceRowRecyclerView.ts b/ide/src/trace/component/trace/base/TraceRowRecyclerView.ts index 6b242748634379a22dc42ddcdfb1085cb34d2a4f..8efa35831876ea8816431f17f0e5843c042dd64e 100644 --- a/ide/src/trace/component/trace/base/TraceRowRecyclerView.ts +++ b/ide/src/trace/component/trace/base/TraceRowRecyclerView.ts @@ -12,10 +12,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { BaseElement, element } from '../../../../base-ui/BaseElement.js'; -import { TraceRowObject } from './TraceRowObject.js'; -import { TraceRow } from './TraceRow.js'; -import { log } from '../../../../log/Log.js'; +import { BaseElement, element } from '../../../../base-ui/BaseElement'; +import { TraceRowObject } from './TraceRowObject'; +import { TraceRow } from './TraceRow'; +import { log } from '../../../../log/Log'; @element('trace-row-recycler-view') export class TraceRowRecyclerView extends BaseElement { diff --git a/ide/src/trace/component/trace/base/TraceSheet.ts b/ide/src/trace/component/trace/base/TraceSheet.ts index 8a93da17ac1ad15fb4e0b890d5163d1b4dc74c44..e7615b0dab3c2afa469a5fa6f74b66c31b7b0d84 100644 --- a/ide/src/trace/component/trace/base/TraceSheet.ts +++ b/ide/src/trace/component/trace/base/TraceSheet.ts @@ -13,76 +13,75 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../base-ui/BaseElement.js'; -import { type LitTabs } from '../../../../base-ui/tabs/lit-tabs.js'; -import { LitTabpane } from '../../../../base-ui/tabs/lit-tabpane.js'; -import { BoxJumpParam, SelectionParam } from '../../../bean/BoxSelection.js'; -import { type TabPaneCurrentSelection } from '../sheet/TabPaneCurrentSelection.js'; -import { type TabPaneFlag } from '../timer-shaft/TabPaneFlag.js'; -import { type Flag } from '../timer-shaft/Flag.js'; -import { type WakeupBean } from '../../../bean/WakeupBean.js'; -import { type LitIcon } from '../../../../base-ui/icon/LitIcon.js'; -import { tabConfig } from './TraceSheetConfig.js'; -import { type TabPaneBoxChild } from '../sheet/cpu/TabPaneBoxChild.js'; -import { type CpuStruct } from '../../../database/ui-worker/ProcedureWorkerCPU.js'; -import { CpuFreqStruct } from '../../../database/ui-worker/ProcedureWorkerFreq.js'; -import { CpuFreqLimitsStruct } from '../../../database/ui-worker/ProcedureWorkerCpuFreqLimits.js'; -import { type ThreadStruct } from '../../../database/ui-worker/ProcedureWorkerThread.js'; -import { type FuncStruct } from '../../../database/ui-worker/ProcedureWorkerFunc.js'; -import { ProcessMemStruct } from '../../../database/ui-worker/ProcedureWorkerMem.js'; -import { CpuStateStruct } from '../../../database/ui-worker/ProcedureWorkerCpuState.js'; -import { type ClockStruct } from '../../../database/ui-worker/ProcedureWorkerClock.js'; -import { type IrqStruct } from '../../../database/ui-worker/ProcedureWorkerIrq.js'; -import { type JankStruct } from '../../../database/ui-worker/ProcedureWorkerJank.js'; -import { type HeapStruct } from '../../../database/ui-worker/ProcedureWorkerHeap.js'; -import { type LitTable } from '../../../../base-ui/table/lit-table.js'; -import { threadPool } from '../../../database/SqlLite.js'; -import { type HeapSnapshotStruct } from '../../../database/ui-worker/ProcedureWorkerHeapSnapshot.js'; -import { type TabPaneNMStatisticAnalysis } from '../sheet/native-memory/TabPaneNMStatisticAnalysis.js'; -import { type TabPaneCurrent } from '../sheet/TabPaneCurrent.js'; -import { type SlicesTime } from '../timer-shaft/SportRuler.js'; -import { type AppStartupStruct } from '../../../database/ui-worker/ProcedureWorkerAppStartup.js'; -import { type AllAppStartupStruct } from '../../../database/ui-worker/ProcedureWorkerAllAppStartup.js'; -import { type SoStruct } from '../../../database/ui-worker/ProcedureWorkerSoInit.js'; -import { type FrameAnimationStruct } from '../../../database/ui-worker/ProcedureWorkerFrameAnimation.js'; -import { type TraceRow } from './TraceRow.js'; -import { type FrameDynamicStruct } from '../../../database/ui-worker/ProcedureWorkerFrameDynamic.js'; -import { type TabPaneFrameDynamic } from '../sheet/frame/TabPaneFrameDynamic.js'; -import { type FrameSpacingStruct } from '../../../database/ui-worker/ProcedureWorkerFrameSpacing.js'; -import { type TabFrameSpacing } from '../sheet/frame/TabFrameSpacing.js'; -import { type JsCpuProfilerChartFrame } from '../../../bean/JsStruct.js'; -import { type TabPaneComparison } from '../sheet/ark-ts/TabPaneComparison.js'; -import { type TabPaneSummary } from '../sheet/ark-ts/TabPaneSummary.js'; -import { type TabPaneGpuClickSelect } from '../sheet/gpu/TabPaneGpuClickSelect.js'; -import { type TabPanePurgTotalSelection } from '../sheet/ability/TabPanePurgTotalSelection.js'; -import { type TabPanePurgPinSelection } from '../sheet/ability/TabPanePurgPinSelection.js'; -import { type TabPaneVmTrackerShmSelection } from '../sheet/vmtracker/TabPaneVmTrackerShmSelection.js'; -import { type TabPaneSmapsStatistics } from '../sheet/smaps/TabPaneSmapsStatistics.js'; -import { type TabPaneSmapsComparison } from '../sheet/smaps/TabPaneSmapsComparison.js'; -import { type SnapshotStruct } from '../../../database/ui-worker/ProcedureWorkerSnapshot.js'; -import { type TabPaneDmaSelectAbility } from '../sheet/ability/TabPaneDmaSelectAbility.js'; -import { type TabPaneGpuMemorySelectAbility } from '../sheet/ability/TabPaneGpuMemorySelectAbility.js'; -import { type TabPaneDmaSelectVmTracker } from '../sheet/vmtracker/TabPaneDmaSelectVmTracker.js'; -import { type TabPanePurgTotalComparisonAbility } from '../sheet/ability/TabPanePurgTotalComparisonAbility.js'; -import { type TabPanePurgPinComparisonAbility } from '../sheet/ability/TabPanePurgPinComparisonAbility.js'; -import { type TabPanePurgTotalComparisonVM } from '../sheet/vmtracker/TabPanePurgTotalComparisonVM.js'; -import { type TabPanePurgPinComparisonVM } from '../sheet/vmtracker/TabPanePurgPinComparisonVM.js'; -import { type TabPaneDmaAbilityComparison } from '../sheet/ability/TabPaneDmaAbilityComparison.js'; -import { type TabPaneGpuMemoryComparison } from '../sheet/ability/TabPaneGpuMemoryComparison.js'; -import { type TabPaneDmaVmTrackerComparison } from '../sheet/vmtracker/TabPaneDmaVmTrackerComparison.js'; -import { type TabPaneGpuMemorySelectVmTracker } from '../sheet/vmtracker/TabPaneGpuMemorySelectVmTracker.js'; -import { type TabPaneGpuMemoryVmTrackerComparison } from '../sheet/vmtracker/TabPaneGpuMemoryVmTrackerComparison.js'; -import { type TabPaneVmTrackerShmComparison } from '../sheet/vmtracker/TabPaneVmTrackerShmComparison.js'; -import { type TabPaneJsCpuStatistics } from '../sheet/ark-ts/TabPaneJsCpuStatistics.js'; -import { type TabPaneGpuClickSelectComparison } from '../sheet/gpu/TabPaneGpuClickSelectComparison.js'; -import { Utils } from './Utils.js'; -import { TabPaneHiLogs } from '../sheet/hilog/TabPaneHiLogs.js'; -import { TabPaneGpuResourceVmTracker } from '../sheet/vmtracker/TabPaneGpuResourceVmTracker.js'; -import { type LitPageTable } from '../../../../base-ui/table/LitPageTable.js'; -import '../../../../base-ui/popover/LitPopoverV.js'; -import { LitPopover } from '../../../../base-ui/popover/LitPopoverV.js'; -import { LitTree, TreeItemData } from '../../../../base-ui/tree/LitTree.js'; -import { SegMenTaTion } from '../../chart/SpSegmentationChart.js'; +import { BaseElement, element } from '../../../../base-ui/BaseElement'; +import { type LitTabs } from '../../../../base-ui/tabs/lit-tabs'; +import { LitTabpane } from '../../../../base-ui/tabs/lit-tabpane'; +import { BoxJumpParam, SelectionParam } from '../../../bean/BoxSelection'; +import { type TabPaneCurrentSelection } from '../sheet/TabPaneCurrentSelection'; +import { type TabPaneFlag } from '../timer-shaft/TabPaneFlag'; +import { type Flag } from '../timer-shaft/Flag'; +import { type WakeupBean } from '../../../bean/WakeupBean'; +import { type LitIcon } from '../../../../base-ui/icon/LitIcon'; +import { tabConfig } from './TraceSheetConfig'; +import { type TabPaneBoxChild } from '../sheet/cpu/TabPaneBoxChild'; +import { type CpuStruct } from '../../../database/ui-worker/ProcedureWorkerCPU'; +import { CpuFreqStruct } from '../../../database/ui-worker/ProcedureWorkerFreq'; +import { CpuFreqLimitsStruct } from '../../../database/ui-worker/ProcedureWorkerCpuFreqLimits'; +import { type ThreadStruct } from '../../../database/ui-worker/ProcedureWorkerThread'; +import { type FuncStruct } from '../../../database/ui-worker/ProcedureWorkerFunc'; +import { ProcessMemStruct } from '../../../database/ui-worker/ProcedureWorkerMem'; +import { CpuStateStruct } from '../../../database/ui-worker/ProcedureWorkerCpuState'; +import { type ClockStruct } from '../../../database/ui-worker/ProcedureWorkerClock'; +import { type IrqStruct } from '../../../database/ui-worker/ProcedureWorkerIrq'; +import { type JankStruct } from '../../../database/ui-worker/ProcedureWorkerJank'; +import { type HeapStruct } from '../../../database/ui-worker/ProcedureWorkerHeap'; +import { type LitTable } from '../../../../base-ui/table/lit-table'; +import { threadPool } from '../../../database/SqlLite'; +import { type HeapSnapshotStruct } from '../../../database/ui-worker/ProcedureWorkerHeapSnapshot'; +import { type TabPaneNMStatisticAnalysis } from '../sheet/native-memory/TabPaneNMStatisticAnalysis'; +import { type TabPaneCurrent } from '../sheet/TabPaneCurrent'; +import { type SlicesTime } from '../timer-shaft/SportRuler'; +import { type AppStartupStruct } from '../../../database/ui-worker/ProcedureWorkerAppStartup'; +import { type AllAppStartupStruct } from '../../../database/ui-worker/ProcedureWorkerAllAppStartup'; +import { type SoStruct } from '../../../database/ui-worker/ProcedureWorkerSoInit'; +import { type FrameAnimationStruct } from '../../../database/ui-worker/ProcedureWorkerFrameAnimation'; +import { type TraceRow } from './TraceRow'; +import { type FrameDynamicStruct } from '../../../database/ui-worker/ProcedureWorkerFrameDynamic'; +import { type TabPaneFrameDynamic } from '../sheet/frame/TabPaneFrameDynamic'; +import { type FrameSpacingStruct } from '../../../database/ui-worker/ProcedureWorkerFrameSpacing'; +import { type TabFrameSpacing } from '../sheet/frame/TabFrameSpacing'; +import { type JsCpuProfilerChartFrame } from '../../../bean/JsStruct'; +import { type TabPaneComparison } from '../sheet/ark-ts/TabPaneComparison'; +import { type TabPaneSummary } from '../sheet/ark-ts/TabPaneSummary'; +import { type TabPaneGpuClickSelect } from '../sheet/gpu/TabPaneGpuClickSelect'; +import { type TabPanePurgTotalSelection } from '../sheet/ability/TabPanePurgTotalSelection'; +import { type TabPanePurgPinSelection } from '../sheet/ability/TabPanePurgPinSelection'; +import { type TabPaneVmTrackerShmSelection } from '../sheet/vmtracker/TabPaneVmTrackerShmSelection'; +import { type TabPaneSmapsStatistics } from '../sheet/smaps/TabPaneSmapsStatistics'; +import { type TabPaneSmapsComparison } from '../sheet/smaps/TabPaneSmapsComparison'; +import { type SnapshotStruct } from '../../../database/ui-worker/ProcedureWorkerSnapshot'; +import { type TabPaneDmaSelectAbility } from '../sheet/ability/TabPaneDmaSelectAbility'; +import { type TabPaneGpuMemorySelectAbility } from '../sheet/ability/TabPaneGpuMemorySelectAbility'; +import { type TabPaneDmaSelectVmTracker } from '../sheet/vmtracker/TabPaneDmaSelectVmTracker'; +import { type TabPanePurgTotalComparisonAbility } from '../sheet/ability/TabPanePurgTotalComparisonAbility'; +import { type TabPanePurgPinComparisonAbility } from '../sheet/ability/TabPanePurgPinComparisonAbility'; +import { type TabPanePurgTotalComparisonVM } from '../sheet/vmtracker/TabPanePurgTotalComparisonVM'; +import { type TabPanePurgPinComparisonVM } from '../sheet/vmtracker/TabPanePurgPinComparisonVM'; +import { type TabPaneDmaAbilityComparison } from '../sheet/ability/TabPaneDmaAbilityComparison'; +import { type TabPaneGpuMemoryComparison } from '../sheet/ability/TabPaneGpuMemoryComparison'; +import { type TabPaneDmaVmTrackerComparison } from '../sheet/vmtracker/TabPaneDmaVmTrackerComparison'; +import { type TabPaneGpuMemorySelectVmTracker } from '../sheet/vmtracker/TabPaneGpuMemorySelectVmTracker'; +import { type TabPaneGpuMemoryVmTrackerComparison } from '../sheet/vmtracker/TabPaneGpuMemoryVmTrackerComparison'; +import { type TabPaneVmTrackerShmComparison } from '../sheet/vmtracker/TabPaneVmTrackerShmComparison'; +import { type TabPaneJsCpuStatistics } from '../sheet/ark-ts/TabPaneJsCpuStatistics'; +import { type TabPaneGpuClickSelectComparison } from '../sheet/gpu/TabPaneGpuClickSelectComparison'; +import { Utils } from './Utils'; +import { TabPaneHiLogs } from '../sheet/hilog/TabPaneHiLogs'; +import { TabPaneGpuResourceVmTracker } from '../sheet/vmtracker/TabPaneGpuResourceVmTracker'; +import { type LitPageTable } from '../../../../base-ui/table/LitPageTable'; +import '../../../../base-ui/popover/LitPopoverV'; +import { LitPopover } from '../../../../base-ui/popover/LitPopoverV'; +import { LitTree, TreeItemData } from '../../../../base-ui/tree/LitTree'; @element('trace-sheet') export class TraceSheet extends BaseElement { @@ -157,7 +156,7 @@ export class TraceSheet extends BaseElement { const select = this.processTree!.getCheckdKeys(); const selectIPid = Number(select[0]); this.switchDiv!.visible = 'false'; - this.updateRangeSelect(selectIPid) + this.updateRangeSelect(selectIPid); this.lastSelectIPid = selectIPid; }; @@ -284,7 +283,7 @@ export class TraceSheet extends BaseElement { } else if ( navRoot!.offsetHeight <= moveY && search!.offsetHeight + timerShaft!.offsetHeight + borderTop + spacer!.offsetHeight <= - window.innerHeight - moveY + window.innerHeight - moveY ) { tabs!.style.height = moveY + 'px'; node!.style.height = moveY - navRoot!.offsetHeight + 'px'; @@ -484,7 +483,7 @@ export class TraceSheet extends BaseElement { scrollWakeUp: (d: any) => void | undefined, scrollPreviousData: (d: ThreadStruct) => void, scrollNextData: (d: ThreadStruct) => void, - callback: ((data: Array) => void) | undefined = undefined, + callback: ((data: Array) => void) | undefined = undefined ) => this.displayTab('current-selection').setThreadData( data, @@ -844,13 +843,14 @@ export class TraceSheet extends BaseElement { } loadTabPaneData(key: string): void { - SegMenTaTion.setChartData('BINDER',[]); let component: any = this.shadowRoot ?.querySelector(`#tabs lit-tabpane[key='${key}']`) ?.children.item(0); if (component) { - this.selection!.isRowClick = false; component.data = this.selection; + if (this.selection) { + this.selection.isRowClick = false; + } } } diff --git a/ide/src/trace/component/trace/base/TraceSheetConfig.ts b/ide/src/trace/component/trace/base/TraceSheetConfig.ts index dd7810ba89e91f0526035f2cba60f7dc8273d6fc..52a5a2becd3abcf2ae99123b6b4142d615f3de6e 100644 --- a/ide/src/trace/component/trace/base/TraceSheetConfig.ts +++ b/ide/src/trace/component/trace/base/TraceSheetConfig.ts @@ -13,120 +13,115 @@ * limitations under the License. */ -import { TabPaneCurrentSelection } from '../sheet/TabPaneCurrentSelection.js'; -import { TabPaneFreq } from '../sheet/freq/TabPaneFreq.js'; -import { TabPaneCpuByThread } from '../sheet/cpu/TabPaneCpuByThread.js'; -import { SelectionParam } from '../../../bean/BoxSelection.js'; -import { TabPaneCpuByProcess } from '../sheet/cpu/TabPaneCpuByProcess.js'; -import { TabPaneCpuUsage } from '../sheet/cpu/TabPaneCpuUsage.js'; -import { TabPaneSPT } from '../sheet/cpu/TabPaneSPT.js'; -import { TabPanePTS } from '../sheet/cpu/TabPanePTS.js'; -import { TabPaneSlices } from '../sheet/process/TabPaneSlices.js'; -import { TabPaneCounter } from '../sheet/process/TabPaneCounter.js'; -import { TabPaneFps } from '../sheet/fps/TabPaneFps.js'; -import { TabPaneFlag } from '../timer-shaft/TabPaneFlag.js'; -import { TabPaneBoxChild } from '../sheet/cpu/TabPaneBoxChild.js'; -import { TabPaneNMStatstics } from '../sheet/native-memory/TabPaneNMStatstics.js'; -import { TabPaneNMemory } from '../sheet/native-memory/TabPaneNMemory.js'; -import { TabPaneNMSampleList } from '../sheet/native-memory/TabPaneNMSampleList.js'; -import { TabpanePerfProfile } from '../sheet/hiperf/TabPerfProfile.js'; -import { TabPanePerfSample } from '../sheet/hiperf/TabPerfSampleList.js'; -import { TabPaneLiveProcesses } from '../sheet/ability/TabPaneLiveProcesses.js'; -import { TabPaneHistoryProcesses } from '../sheet/ability/TabPaneHistoryProcesses.js'; -import { TabPaneCpuAbility } from '../sheet/ability/TabPaneCpuAbility.js'; -import { TabPaneMemoryAbility } from '../sheet/ability/TabPaneMemoryAbility.js'; -import { TabPaneDiskAbility } from '../sheet/ability/TabPaneDiskAbility.js'; -import { TabPaneNetworkAbility } from '../sheet/ability/TabPaneNetworkAbility.js'; -import { TabPaneFileStatistics } from '../sheet/file-system/TabPaneFilesystemStatistics.js'; -import { TabpaneFilesystemCalltree } from '../sheet/file-system/TabPaneFileSystemCalltree.js'; -import { TabPaneFileSystemEvents } from '../sheet/file-system/TabPaneFileSystemEvents.js'; -import { TabPaneFileSystemDescHistory } from '../sheet/file-system/TabPaneFileSystemDescHistory.js'; -import { TabPaneFileSystemDescTimeSlice } from '../sheet/file-system/TabPaneFileSystemDescTimeSlice.js'; -import { TabPaneSdkSlice } from '../sheet/sdk/TabPaneSdkSlice.js'; -import { TabPaneSdkCounter } from '../sheet/sdk/TabPaneSdkCounter.js'; -import { TabPaneCounterSample } from '../sheet/cpu/TabPaneCounterSample.js'; -import { TabPaneThreadStates } from '../sheet/process/TabPaneThreadStates.js'; -import { TabPaneThreadUsage } from '../sheet/process/TabPaneThreadUsage.js'; -import { TabPaneFrequencySample } from '../sheet/cpu/TabPaneFrequencySample.js'; -import { TabPaneEnergyAnomaly } from '../sheet/energy/TabPaneEnergyAnomaly.js'; -import { TabPaneSystemDetails } from '../sheet/energy/TabPaneSystemDetails.js'; -import { TabPanePowerDetails } from '../sheet/energy/TabPanePowerDetails.js'; -import { TabPanePowerBattery } from '../sheet/energy/TabPanePowerBattery.js'; -import { TabPaneCpuStateClick } from '../sheet/cpu/TabPaneCpuStateClick.js'; -import { TabPaneVirtualMemoryStatistics } from '../sheet/file-system/TabPaneVirtualMemoryStatistics.js'; -import { TabPaneIOTierStatistics } from '../sheet/file-system/TabPaneIOTierStatistics.js'; -import { TabPaneIOCallTree, TabPaneVMCallTree } from '../sheet/file-system/TabPaneIOCallTree.js'; -import { TabPaneIoCompletionTimes } from '../sheet/file-system/TabPaneIoCompletionTimes.js'; -import { TabPaneVirtualMemoryEvents } from '../sheet/file-system/TabPaneVMEvents.js'; -import { TabPaneSmapsStatistics } from '../sheet/smaps/TabPaneSmapsStatistics.js'; -import { TabPaneSmapsSample } from '../sheet/smaps/TabPaneSmapsSample.js'; -import { TabPaneFreqLimit } from '../sheet/freq/TabPaneFreqLimit.js'; -import { TabPaneCpuFreqLimits } from '../sheet/freq/TabPaneCpuFreqLimits.js'; -import { TabpaneNMCalltree } from '../sheet/native-memory/TabPaneNMCallTree.js'; -import { TabPaneClockCounter } from '../sheet/clock/TabPaneClockCounter.js'; -import { TabPaneIrqCounter } from '../sheet/irq/TabPaneIrqCounter.js'; -import { TabPaneFrames } from '../sheet/jank/TabPaneFrames.js'; -import { TabPanePerfAnalysis } from '../sheet/hiperf/TabPanePerfAnalysis.js'; -import { TabPaneNMStatisticAnalysis } from '../sheet/native-memory/TabPaneNMStatisticAnalysis.js'; -import { TabPaneFilesystemStatisticsAnalysis } from '../sheet/file-system/TabPaneFilesystemStatisticsAnalysis.js'; -import { TabPaneIOTierStatisticsAnalysis } from '../sheet/file-system/TabPaneIOTierStatisticsAnalysis.js'; -import { TabPaneVirtualMemoryStatisticsAnalysis } from '../sheet/file-system/TabPaneVirtualMemoryStatisticsAnalysis.js'; -import { TabPaneCurrent } from '../sheet/TabPaneCurrent.js'; -import { TabPaneStartup } from '../sheet/process/TabPaneStartup.js'; -import { TabPaneStaticInit } from '../sheet/process/TabPaneStaticInit.js'; -import { TabPaneTaskFrames } from '../sheet/task/TabPaneTaskFrames.js'; -import { TabPaneFrameDynamic } from '../sheet/frame/TabPaneFrameDynamic.js'; -import { TabFrameSpacing } from '../sheet/frame/TabFrameSpacing.js'; -import { TabPaneSummary } from '../sheet/ark-ts/TabPaneSummary.js'; -import { TabPaneComparison } from '../sheet/ark-ts/TabPaneComparison.js'; -import { TabPaneJsCpuTopDown } from '../sheet/ark-ts/TabPaneJsCpuCallTree.js'; -import { TabPaneJsCpuBottomUp } from '../sheet/ark-ts/TabPaneJsCpuBottomUp.js'; -import { TabPaneJsCpuStatistics } from '../sheet/ark-ts/TabPaneJsCpuStatistics.js'; -import { TabPaneGpuClickSelect } from '../sheet/gpu/TabPaneGpuClickSelect.js'; -import { TabPaneGpuTotalBoxSelect } from '../sheet/gpu/TabPaneGpuTotalBoxSelect.js'; -import { TabPaneGpuWindowBoxSelect } from '../sheet/gpu/TabPaneGpuWindowBoxSelect.js'; -import { TabPaneGpuGL } from '../sheet/gpu/TabPaneGpuGL.js'; -import { TabPanePurgTotal } from '../sheet/ability/TabPanePurgTotal.js'; -import { TabPanePurgTotalSelection } from '../sheet/ability/TabPanePurgTotalSelection.js'; -import { TabPanePurgPin } from '../sheet/ability/TabPanePurgPin.js'; -import { TabPanePurgPinSelection } from '../sheet/ability/TabPanePurgPinSelection.js'; -import { TabPaneVmTrackerShmSelection } from '../sheet/vmtracker/TabPaneVmTrackerShmSelection.js'; -import { TabPaneVmTrackerShm } from '../sheet/vmtracker/TabPaneVmTrackerShm.js'; -import { TabPaneDmaAbility } from '../sheet/ability/TabPaneDmaAbility.js'; -import { TabPaneDmaSelectAbility } from '../sheet/ability/TabPaneDmaSelectAbility.js'; -import { TabPaneGpuMemoryAbility } from '../sheet/ability/TabPaneGpuMemoryAbility.js'; -import { TabPaneDmaVmTracker } from '../sheet/vmtracker/TabPaneDmaVmTracker.js'; -import { TabPaneGpuMemoryVmTracker } from '../sheet/vmtracker/TabPaneGpuMemoryVmTracker.js'; -import { TabPaneGpuMemorySelectAbility } from '../sheet/ability/TabPaneGpuMemorySelectAbility.js'; -import { TabPaneGpuMemorySelectVmTracker } from '../sheet/vmtracker/TabPaneGpuMemorySelectVmTracker.js'; -import { TabPaneDmaSelectVmTracker } from '../sheet/vmtracker/TabPaneDmaSelectVmTracker.js'; -import { TabpanePerfBottomUp } from '../sheet/hiperf/TabPerfBottomUp.js'; -import { TabPanePurgTotalComparisonAbility } from '../sheet/ability/TabPanePurgTotalComparisonAbility.js'; -import { TabPanePurgPinComparisonAbility } from '../sheet/ability/TabPanePurgPinComparisonAbility.js'; -import { TabPanePurgTotalComparisonVM } from '../sheet/vmtracker/TabPanePurgTotalComparisonVM.js'; -import { TabPanePurgPinComparisonVM } from '../sheet/vmtracker/TabPanePurgPinComparisonVM.js'; -import { TabPaneDmaAbilityComparison } from '../sheet/ability/TabPaneDmaAbilityComparison.js'; -import { TabPaneGpuMemoryComparison } from '../sheet/ability/TabPaneGpuMemoryComparison.js'; -import { TabPaneDmaVmTrackerComparison } from '../sheet/vmtracker/TabPaneDmaVmTrackerComparison.js'; -import { TabPaneGpuMemoryVmTrackerComparison } from '../sheet/vmtracker/TabPaneGpuMemoryVmTrackerComparison.js'; -import { TabPaneVmTrackerShmComparison } from '../sheet/vmtracker/TabPaneVmTrackerShmComparison.js'; -import { TabPaneSmapsComparison } from '../sheet/smaps/TabPaneSmapsComparison.js'; -import { TabPaneSmapsRecord } from '../sheet/smaps/TabPaneSmapsRecord.js'; -import { TabPaneGpuClickSelectComparison } from '../sheet/gpu/TabPaneGpuClickSelectComparison.js'; -import { TabPaneHiLogs } from '../sheet/hilog/TabPaneHiLogs.js'; -import { TabPaneHiLogSummary } from '../sheet/hilog/TabPaneHiLogSummary.js'; -import { TabPaneSchedPriority } from '../sheet/cpu/TabPaneSchedPriority.js'; -import { TabPaneGpuResourceVmTracker } from '../sheet/vmtracker/TabPaneGpuResourceVmTracker.js'; -import { TabPaneGpuGraph } from '../sheet/gpu/TabPaneGraph.js'; -import { TabPaneFreqUsage } from '../sheet/frequsage/TabPaneFreqUsage.js'; -import { TabPaneFreqDataCut } from '../sheet/frequsage/TabPaneFreqDataCut.js'; -import { TabPaneHisysEvents } from '../sheet/hisysevent/TabPaneHisysEvents.js'; -import { TabPaneHiSysEventSummary } from '../sheet/hisysevent/TabPaneHiSysEventSummary.js'; -import {TabPaneSchedSwitch} from '../sheet/schedswitch/TabPaneSchedSwitch.js'; -import { TabPaneThreadBinders } from '../sheet/binder/TabPaneThreadBinders.js'; -import { TabPaneBinderDataCut } from '../sheet/binder/TabPaneBinderDataCut.js'; -import {TabPaneGpufreq} from '../sheet/gpufreq/tabPaneGpufreqUsage.js' -import {TabPaneGpufreqDataCut} from '../sheet/gpufreq/tabPaneGpufreqDataCut.js' +import { TabPaneCurrentSelection } from '../sheet/TabPaneCurrentSelection'; +import { TabPaneFreq } from '../sheet/freq/TabPaneFreq'; +import { TabPaneCpuByThread } from '../sheet/cpu/TabPaneCpuByThread'; +import { SelectionParam } from '../../../bean/BoxSelection'; +import { TabPaneCpuByProcess } from '../sheet/cpu/TabPaneCpuByProcess'; +import { TabPaneCpuUsage } from '../sheet/cpu/TabPaneCpuUsage'; +import { TabPaneSPT } from '../sheet/cpu/TabPaneSPT'; +import { TabPanePTS } from '../sheet/cpu/TabPanePTS'; +import { TabPaneSlices } from '../sheet/process/TabPaneSlices'; +import { TabPaneCounter } from '../sheet/process/TabPaneCounter'; +import { TabPaneFps } from '../sheet/fps/TabPaneFps'; +import { TabPaneFlag } from '../timer-shaft/TabPaneFlag'; +import { TabPaneBoxChild } from '../sheet/cpu/TabPaneBoxChild'; +import { TabPaneNMStatstics } from '../sheet/native-memory/TabPaneNMStatstics'; +import { TabPaneNMemory } from '../sheet/native-memory/TabPaneNMemory'; +import { TabPaneNMSampleList } from '../sheet/native-memory/TabPaneNMSampleList'; +import { TabpanePerfProfile } from '../sheet/hiperf/TabPerfProfile'; +import { TabPanePerfSample } from '../sheet/hiperf/TabPerfSampleList'; +import { TabPaneLiveProcesses } from '../sheet/ability/TabPaneLiveProcesses'; +import { TabPaneHistoryProcesses } from '../sheet/ability/TabPaneHistoryProcesses'; +import { TabPaneCpuAbility } from '../sheet/ability/TabPaneCpuAbility'; +import { TabPaneMemoryAbility } from '../sheet/ability/TabPaneMemoryAbility'; +import { TabPaneDiskAbility } from '../sheet/ability/TabPaneDiskAbility'; +import { TabPaneNetworkAbility } from '../sheet/ability/TabPaneNetworkAbility'; +import { TabPaneFileStatistics } from '../sheet/file-system/TabPaneFilesystemStatistics'; +import { TabpaneFilesystemCalltree } from '../sheet/file-system/TabPaneFileSystemCalltree'; +import { TabPaneFileSystemEvents } from '../sheet/file-system/TabPaneFileSystemEvents'; +import { TabPaneFileSystemDescHistory } from '../sheet/file-system/TabPaneFileSystemDescHistory'; +import { TabPaneFileSystemDescTimeSlice } from '../sheet/file-system/TabPaneFileSystemDescTimeSlice'; +import { TabPaneSdkSlice } from '../sheet/sdk/TabPaneSdkSlice'; +import { TabPaneSdkCounter } from '../sheet/sdk/TabPaneSdkCounter'; +import { TabPaneCounterSample } from '../sheet/cpu/TabPaneCounterSample'; +import { TabPaneThreadStates } from '../sheet/process/TabPaneThreadStates'; +import { TabPaneThreadUsage } from '../sheet/process/TabPaneThreadUsage'; +import { TabPaneFrequencySample } from '../sheet/cpu/TabPaneFrequencySample'; +import { TabPaneEnergyAnomaly } from '../sheet/energy/TabPaneEnergyAnomaly'; +import { TabPaneSystemDetails } from '../sheet/energy/TabPaneSystemDetails'; +import { TabPanePowerDetails } from '../sheet/energy/TabPanePowerDetails'; +import { TabPanePowerBattery } from '../sheet/energy/TabPanePowerBattery'; +import { TabPaneCpuStateClick } from '../sheet/cpu/TabPaneCpuStateClick'; +import { TabPaneVirtualMemoryStatistics } from '../sheet/file-system/TabPaneVirtualMemoryStatistics'; +import { TabPaneIOTierStatistics } from '../sheet/file-system/TabPaneIOTierStatistics'; +import { TabPaneIOCallTree, TabPaneVMCallTree } from '../sheet/file-system/TabPaneIOCallTree'; +import { TabPaneIoCompletionTimes } from '../sheet/file-system/TabPaneIoCompletionTimes'; +import { TabPaneVirtualMemoryEvents } from '../sheet/file-system/TabPaneVMEvents'; +import { TabPaneSmapsStatistics } from '../sheet/smaps/TabPaneSmapsStatistics'; +import { TabPaneSmapsSample } from '../sheet/smaps/TabPaneSmapsSample'; +import { TabPaneFreqLimit } from '../sheet/freq/TabPaneFreqLimit'; +import { TabPaneCpuFreqLimits } from '../sheet/freq/TabPaneCpuFreqLimits'; +import { TabpaneNMCalltree } from '../sheet/native-memory/TabPaneNMCallTree'; +import { TabPaneClockCounter } from '../sheet/clock/TabPaneClockCounter'; +import { TabPaneIrqCounter } from '../sheet/irq/TabPaneIrqCounter'; +import { TabPaneFrames } from '../sheet/jank/TabPaneFrames'; +import { TabPanePerfAnalysis } from '../sheet/hiperf/TabPanePerfAnalysis'; +import { TabPaneNMStatisticAnalysis } from '../sheet/native-memory/TabPaneNMStatisticAnalysis'; +import { TabPaneFilesystemStatisticsAnalysis } from '../sheet/file-system/TabPaneFilesystemStatisticsAnalysis'; +import { TabPaneIOTierStatisticsAnalysis } from '../sheet/file-system/TabPaneIOTierStatisticsAnalysis'; +import { TabPaneVirtualMemoryStatisticsAnalysis } from '../sheet/file-system/TabPaneVirtualMemoryStatisticsAnalysis'; +import { TabPaneCurrent } from '../sheet/TabPaneCurrent'; +import { TabPaneStartup } from '../sheet/process/TabPaneStartup'; +import { TabPaneStaticInit } from '../sheet/process/TabPaneStaticInit'; +import { TabPaneTaskFrames } from '../sheet/task/TabPaneTaskFrames'; +import { TabPaneFrameDynamic } from '../sheet/frame/TabPaneFrameDynamic'; +import { TabFrameSpacing } from '../sheet/frame/TabFrameSpacing'; +import { TabPaneSummary } from '../sheet/ark-ts/TabPaneSummary'; +import { TabPaneComparison } from '../sheet/ark-ts/TabPaneComparison'; +import { TabPaneJsCpuTopDown } from '../sheet/ark-ts/TabPaneJsCpuCallTree'; +import { TabPaneJsCpuBottomUp } from '../sheet/ark-ts/TabPaneJsCpuBottomUp'; +import { TabPaneJsCpuStatistics } from '../sheet/ark-ts/TabPaneJsCpuStatistics'; +import { TabPaneGpuClickSelect } from '../sheet/gpu/TabPaneGpuClickSelect'; +import { TabPaneGpuTotalBoxSelect } from '../sheet/gpu/TabPaneGpuTotalBoxSelect'; +import { TabPaneGpuWindowBoxSelect } from '../sheet/gpu/TabPaneGpuWindowBoxSelect'; +import { TabPaneGpuGL } from '../sheet/gpu/TabPaneGpuGL'; +import { TabPanePurgTotal } from '../sheet/ability/TabPanePurgTotal'; +import { TabPanePurgTotalSelection } from '../sheet/ability/TabPanePurgTotalSelection'; +import { TabPanePurgPin } from '../sheet/ability/TabPanePurgPin'; +import { TabPanePurgPinSelection } from '../sheet/ability/TabPanePurgPinSelection'; +import { TabPaneVmTrackerShmSelection } from '../sheet/vmtracker/TabPaneVmTrackerShmSelection'; +import { TabPaneVmTrackerShm } from '../sheet/vmtracker/TabPaneVmTrackerShm'; +import { TabPaneDmaAbility } from '../sheet/ability/TabPaneDmaAbility'; +import { TabPaneDmaSelectAbility } from '../sheet/ability/TabPaneDmaSelectAbility'; +import { TabPaneGpuMemoryAbility } from '../sheet/ability/TabPaneGpuMemoryAbility'; +import { TabPaneDmaVmTracker } from '../sheet/vmtracker/TabPaneDmaVmTracker'; +import { TabPaneGpuMemoryVmTracker } from '../sheet/vmtracker/TabPaneGpuMemoryVmTracker'; +import { TabPaneGpuMemorySelectAbility } from '../sheet/ability/TabPaneGpuMemorySelectAbility'; +import { TabPaneGpuMemorySelectVmTracker } from '../sheet/vmtracker/TabPaneGpuMemorySelectVmTracker'; +import { TabPaneDmaSelectVmTracker } from '../sheet/vmtracker/TabPaneDmaSelectVmTracker'; +import { TabpanePerfBottomUp } from '../sheet/hiperf/TabPerfBottomUp'; +import { TabPanePurgTotalComparisonAbility } from '../sheet/ability/TabPanePurgTotalComparisonAbility'; +import { TabPanePurgPinComparisonAbility } from '../sheet/ability/TabPanePurgPinComparisonAbility'; +import { TabPanePurgTotalComparisonVM } from '../sheet/vmtracker/TabPanePurgTotalComparisonVM'; +import { TabPanePurgPinComparisonVM } from '../sheet/vmtracker/TabPanePurgPinComparisonVM'; +import { TabPaneDmaAbilityComparison } from '../sheet/ability/TabPaneDmaAbilityComparison'; +import { TabPaneGpuMemoryComparison } from '../sheet/ability/TabPaneGpuMemoryComparison'; +import { TabPaneDmaVmTrackerComparison } from '../sheet/vmtracker/TabPaneDmaVmTrackerComparison'; +import { TabPaneGpuMemoryVmTrackerComparison } from '../sheet/vmtracker/TabPaneGpuMemoryVmTrackerComparison'; +import { TabPaneVmTrackerShmComparison } from '../sheet/vmtracker/TabPaneVmTrackerShmComparison'; +import { TabPaneSmapsComparison } from '../sheet/smaps/TabPaneSmapsComparison'; +import { TabPaneSmapsRecord } from '../sheet/smaps/TabPaneSmapsRecord'; +import { TabPaneGpuClickSelectComparison } from '../sheet/gpu/TabPaneGpuClickSelectComparison'; +import { TabPaneHiLogs } from '../sheet/hilog/TabPaneHiLogs'; +import { TabPaneHiLogSummary } from '../sheet/hilog/TabPaneHiLogSummary'; +import { TabPaneSchedPriority } from '../sheet/cpu/TabPaneSchedPriority'; +import { TabPaneGpuResourceVmTracker } from '../sheet/vmtracker/TabPaneGpuResourceVmTracker'; +import { TabPaneGpuGraph } from '../sheet/gpu/TabPaneGraph'; +import { TabPaneFreqUsage } from '../sheet/frequsage/TabPaneFreqUsage'; +import { TabPaneFreqDataCut } from '../sheet/frequsage/TabPaneFreqDataCut'; +import { TabPaneHisysEvents } from '../sheet/hisysevent/TabPaneHisysEvents'; +import { TabPaneHiSysEventSummary } from '../sheet/hisysevent/TabPaneHiSysEventSummary'; export let tabConfig: any = { 'current-selection': { @@ -655,28 +650,4 @@ export let tabConfig: any = { type: TabPaneHiSysEventSummary, require: (param: SelectionParam) => param.hiSysEvents.length > 0, }, - 'tabpane-schedswitch': { - title: 'Sched Switch', - type: TabPaneSchedSwitch, - require: (param: SelectionParam) => param.threadIds.length > 0, - 'tabpane-Thrbinders': { - title: 'Thread Binders', - type: TabPaneThreadBinders, - require: (param: SelectionParam) => param.threadIds.length > 0 - }, - 'tabpane-Thrfreqdatacut': { - title: 'Binder DataCut', - type: TabPaneBinderDataCut, - require: (param: SelectionParam) => param.threadIds.length > 0 - }, - 'tabpane-Gpufreq':{ - title: 'Gpufreq Usage', - type: TabPaneGpufreq, - require: (param: SelectionParam) => param.clockMapData.size > 0 && param.clockMapData.size < 2, - }, - 'tabpane-FreqDataCut':{ - title: 'Gpufreq DataCut', - type: TabPaneGpufreqDataCut, - require: (param: SelectionParam) => param.clockMapData.size > 0 && param.clockMapData.size < 2, - } }; diff --git a/ide/src/trace/component/trace/base/Utils.ts b/ide/src/trace/component/trace/base/Utils.ts index 0728af02678222f0527e0b7053deb254a2f77f45..dac79637cdc3fbe4407542ecb5ce6f16dbba3f73 100644 --- a/ide/src/trace/component/trace/base/Utils.ts +++ b/ide/src/trace/component/trace/base/Utils.ts @@ -13,9 +13,9 @@ * limitations under the License. */ -import { SelectionParam } from '../../../bean/BoxSelection.js'; -import { procedurePool } from '../../../database/Procedure.js'; -import { queryNativeHookResponseTypes } from '../../../database/SqlLite.js'; +import { SelectionParam } from '../../../bean/BoxSelection'; +import { procedurePool } from '../../../database/Procedure'; +import { queryNativeHookResponseTypes } from '../../../database/SqlLite'; export class Utils { private static statusMap: Map = new Map(); @@ -97,20 +97,6 @@ export class Utils { } } - public static transferBinderTitle(value: any) { - if (value.startsWith('P-')) { - let pid = value.replace('P-', ''); - let process = Utils.PROCESS_MAP.get(parseInt(pid)) || 'Process'; - return `${process} [${pid}]`; - } else if (value.startsWith('T-')) { - let tid = value.replace('T-', ''); - let thread = Utils.THREAD_MAP.get(parseInt(tid)) || 'Thread'; - return `${thread} [${tid}]`; - } else { - return ''; - } - } - public static getStateColor(state: string): string { if (state === 'D-NIO' || state === 'DK-NIO') { return '#795548'; @@ -497,11 +483,11 @@ export class Utils { } } queryNativeHookResponseTypes(val.leftNs, val.rightNs, types, isStatistic).then((res) => { - procedurePool.submitWithName('logic1', 'native-memory-init-responseType', res, undefined, () => { }); + procedurePool.submitWithName('logic1', 'native-memory-init-responseType', res, undefined, () => {}); }); } - setCurrentSelectIPid(ipid: number): void { - procedurePool.submitWithName('logic1', 'native-memory-set-current_ipid', ipid, undefined, () => { }); + setCurrentSelectIPid(ipid: number): void{ + procedurePool.submitWithName('logic1', 'native-memory-set-current_ipid', ipid, undefined, () => {}); } } diff --git a/ide/src/trace/component/trace/search/Search.ts b/ide/src/trace/component/trace/search/Search.ts index 343333236f8b3818ba4b477eea702ad7feafc1a5..18696bdc5ef28f8ac5c0dc48fab2d698ef456566 100644 --- a/ide/src/trace/component/trace/search/Search.ts +++ b/ide/src/trace/component/trace/search/Search.ts @@ -13,9 +13,9 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../base-ui/BaseElement.js'; -import { LitIcon } from '../../../../base-ui/icon/LitIcon.js'; -import { SpSystemTrace } from '../../../component/SpSystemTrace.js'; +import { BaseElement, element } from '../../../../base-ui/BaseElement'; +import { LitIcon } from '../../../../base-ui/icon/LitIcon'; +import { SpSystemTrace } from '../../../component/SpSystemTrace'; const LOCAL_STORAGE_SEARCH_KEY = 'search_key'; diff --git a/ide/src/trace/component/trace/sheet/SheetUtils.ts b/ide/src/trace/component/trace/sheet/SheetUtils.ts index 9635f19652abd59679c4654bab3c55bfcd475584..b0c8b12804cb92de596fba8554a6bddcc20f18f5 100644 --- a/ide/src/trace/component/trace/sheet/SheetUtils.ts +++ b/ide/src/trace/component/trace/sheet/SheetUtils.ts @@ -13,8 +13,8 @@ * limitations under the License. */ -import { LitTable } from '../../../../base-ui/table/lit-table.js'; -import { NativeMemoryExpression } from '../../../bean/NativeHook.js'; +import { LitTable } from '../../../../base-ui/table/lit-table'; +import { NativeMemoryExpression } from '../../../bean/NativeHook'; export function resizeObserver( parentEl: HTMLElement, diff --git a/ide/src/trace/component/trace/sheet/TabPaneCurrent.ts b/ide/src/trace/component/trace/sheet/TabPaneCurrent.ts index 76bf1e19e55794a9b151913f480cb74aa61c5720..b11d92eece0405aed4c19a16890c657f07043c6f 100644 --- a/ide/src/trace/component/trace/sheet/TabPaneCurrent.ts +++ b/ide/src/trace/component/trace/sheet/TabPaneCurrent.ts @@ -13,13 +13,13 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../base-ui/table/lit-table.js'; -import { MarkStruct } from '../../../bean/MarkStruct.js'; -import { SpSystemTrace } from '../../SpSystemTrace.js'; -import { ns2s } from '../TimerShaftElement.js'; -import { SlicesTime, StType } from '../timer-shaft/SportRuler.js'; -import { getTimeString } from './TabPaneCurrentSelection.js'; +import { BaseElement, element } from '../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../base-ui/table/lit-table'; +import { MarkStruct } from '../../../bean/MarkStruct'; +import { SpSystemTrace } from '../../SpSystemTrace'; +import { ns2s } from '../TimerShaftElement'; +import { SlicesTime, StType } from '../timer-shaft/SportRuler'; +import { getTimeString } from './TabPaneCurrentSelection'; @element('tabpane-current') export class TabPaneCurrent extends BaseElement { @@ -33,7 +33,7 @@ export class TabPaneCurrent extends BaseElement { this.systemTrace = document .querySelector('body > sp-application') ?.shadowRoot!.querySelector('#sp-system-trace'); - this.shadowRoot?.querySelector('#text')?.addEventListener('keyup', (event: any) => { + this.shadowRoot?.querySelector('#text')?.addEventListener('keyup', (event: any) => { event.stopPropagation(); if (event.keyCode == '13') { if (this.slicesTime) { @@ -60,7 +60,7 @@ export class TabPaneCurrent extends BaseElement { window.publish(window.SmartEvent.UI.KeyboardEnable, { enable: false, }); - }); + }); this.panelTable = this.shadowRoot!.querySelector('.notes-editor-panel'); this.panelTable!.addEventListener('row-click', (evt: any) => { if (evt.detail.data.startTime === undefined) { @@ -186,13 +186,13 @@ export class TabPaneCurrent extends BaseElement { } this.slicesTimeList = []; return; - }); + }); // 更新备注信息 this.panelTable!.addEventListener('click', (event: any) => { if (this.slicesTimeList.length === 0) { return; - } + } for (let i = 1; i < tr.length; i++) { let inputValue = tr[i].querySelector('#text-input')!.value; if ( diff --git a/ide/src/trace/component/trace/sheet/TabPaneCurrentSelection.ts b/ide/src/trace/component/trace/sheet/TabPaneCurrentSelection.ts index a0b979d9c7764ccee6522561488da13fb21f5850..bc5383e2dfae6a1b14679a050d4e442952428239 100644 --- a/ide/src/trace/component/trace/sheet/TabPaneCurrentSelection.ts +++ b/ide/src/trace/component/trace/sheet/TabPaneCurrentSelection.ts @@ -13,9 +13,10 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../base-ui/BaseElement.js'; -import { type LitTable } from '../../../../base-ui/table/lit-table.js'; -import '../../../../base-ui/table/lit-table-column.js'; +import { BaseElement, element } from '../../../../base-ui/BaseElement'; +import { type LitTable } from '../../../../base-ui/table/lit-table'; +import '../../../../base-ui/table/lit-table-column'; +import { AllAppStartupStruct } from '../../../database/ui-worker/ProcedureWorkerAllAppStartup'; import { queryBinderArgsByArgset, @@ -30,26 +31,25 @@ import { queryThreadWakeUp, queryThreadWakeUpFrom, queryWakeupListPriority, -} from '../../../database/SqlLite.js'; -import { type WakeupBean } from '../../../bean/WakeupBean.js'; -import { SpApplication } from '../../../SpApplication.js'; -import { TraceRow } from '../base/TraceRow.js'; -import { CpuStruct } from '../../../database/ui-worker/ProcedureWorkerCPU.js'; -import { ThreadStruct } from '../../../database/ui-worker/ProcedureWorkerThread.js'; -import { FuncStruct } from '../../../database/ui-worker/ProcedureWorkerFunc.js'; -import { ProcessMemStruct } from '../../../database/ui-worker/ProcedureWorkerMem.js'; -import { ClockStruct } from '../../../database/ui-worker/ProcedureWorkerClock.js'; -import { ColorUtils } from '../base/ColorUtils.js'; -import { IrqStruct } from '../../../database/ui-worker/ProcedureWorkerIrq.js'; -import { BinderArgBean } from '../../../bean/BinderArgBean.js'; -import { JankStruct } from '../../../database/ui-worker/ProcedureWorkerJank.js'; -import { Utils } from '../base/Utils.js'; -import { SpSystemTrace } from '../../SpSystemTrace.js'; -import { AppStartupStruct } from '../../../database/ui-worker/ProcedureWorkerAppStartup.js'; -import { SoStruct } from '../../../database/ui-worker/ProcedureWorkerSoInit.js'; -import { type SelectionParam } from '../../../bean/BoxSelection.js'; -import { type FrameAnimationStruct } from '../../../database/ui-worker/ProcedureWorkerFrameAnimation.js'; -import { AllAppStartupStruct } from '../../../database/ui-worker/ProcedureWorkerAllAppStartup.js'; +} from '../../../database/SqlLite'; +import { type WakeupBean } from '../../../bean/WakeupBean'; +import { SpApplication } from '../../../SpApplication'; +import { TraceRow } from '../base/TraceRow'; +import { CpuStruct } from '../../../database/ui-worker/ProcedureWorkerCPU'; +import { ThreadStruct } from '../../../database/ui-worker/ProcedureWorkerThread'; +import { FuncStruct } from '../../../database/ui-worker/ProcedureWorkerFunc'; +import { ProcessMemStruct } from '../../../database/ui-worker/ProcedureWorkerMem'; +import { ClockStruct } from '../../../database/ui-worker/ProcedureWorkerClock'; +import { ColorUtils } from '../base/ColorUtils'; +import { IrqStruct } from '../../../database/ui-worker/ProcedureWorkerIrq'; +import { BinderArgBean } from '../../../bean/BinderArgBean'; +import { JankStruct } from '../../../database/ui-worker/ProcedureWorkerJank'; +import { Utils } from '../base/Utils'; +import { SpSystemTrace } from '../../SpSystemTrace'; +import { AppStartupStruct } from '../../../database/ui-worker/ProcedureWorkerAppStartup'; +import { SoStruct } from '../../../database/ui-worker/ProcedureWorkerSoInit'; +import { type SelectionParam } from '../../../bean/BoxSelection'; +import { type FrameAnimationStruct } from '../../../database/ui-worker/ProcedureWorkerFrameAnimation'; const INPUT_WORD = 'This is the interval from when the task became eligible to run \n(e.g.because of notifying a wait queue it was a suspended on) to\n when it started running.'; @@ -823,6 +823,7 @@ export class TabPaneCurrentSelection extends BaseElement { this.currentSelectionTbl!.dataSource = list; } } + setAllStartupData(data: AllAppStartupStruct, scrollCallback: Function): void { this.setTableHeight('550px'); this.initCanvas(); @@ -835,27 +836,27 @@ export class TabPaneCurrentSelection extends BaseElement { allStartUpLeftTitle.innerText = 'Details'; } let list: any[] = []; - list.push({ name: "Name", value: data.stepName! }) + list.push({ name: 'Name', value: data.stepName! }); list.push({ - name: "StartTime(Relative)", - value: getTimeString(data.startTs || 0) + name: 'StartTime(Relative)', + value: getTimeString(data.startTs || 0), }); list.push({ - name: "StartTime(Absolute)", - value: ((data.startTs || 0) + (window as any).recordStartNS) / 1000000000 + 's' + name: 'StartTime(Absolute)', + value: ((data.startTs || 0) + (window as any).recordStartNS) / 1000000000 + 's', }); list.push({ - name: "EndTime(Relative)", - value: getTimeString((data.startTs || 0) + (data.dur || 0)) + name: 'EndTime(Relative)', + value: getTimeString((data.startTs || 0) + (data.dur || 0)), }); list.push({ - name: "EndTime(Abslute)", - value: ((data.startTs || 0) + (data.dur || 0) + (window as any).recordStartNS) / 1000000000 + 's' - }) + name: 'EndTime(Abslute)', + value: ((data.startTs || 0) + (data.dur || 0) + (window as any).recordStartNS) / 1000000000 + 's', + }); list.push({ - name: "Dur", - value: getTimeString(data.dur || 0) - }) + name: 'Dur', + value: getTimeString(data.dur || 0), + }); this.currentSelectionTbl!.dataSource = list; } @@ -1267,7 +1268,7 @@ export class TabPaneCurrentSelection extends BaseElement { this.currentSelectionTbl = this.shadowRoot?.querySelector('#selectionTbl'); this.wakeupListTbl = this.shadowRoot?.querySelector('#wakeupListTbl'); this.scrollView = this.shadowRoot?.querySelector('#scroll_view'); - this.currentSelectionTbl?.addEventListener('column-click', (ev: any) => { }); + this.currentSelectionTbl?.addEventListener('column-click', (ev: any) => {}); window.subscribe(window.SmartEvent.UI.WakeupList, (data: Array) => this.showWakeupListTableData(data)); } diff --git a/ide/src/trace/component/trace/sheet/TabPaneFilter.ts b/ide/src/trace/component/trace/sheet/TabPaneFilter.ts index 12a79097c76c548da6831dfe71279728606dbe15..d1eb77c1bfcc9610d06d514104cb4e450dd32c1f 100644 --- a/ide/src/trace/component/trace/sheet/TabPaneFilter.ts +++ b/ide/src/trace/component/trace/sheet/TabPaneFilter.ts @@ -13,15 +13,15 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../base-ui/BaseElement.js'; -import '../../../../base-ui/select/LitSelect.js'; -import '../../../../base-ui/select/LitSelectOption.js'; -import '../../../../base-ui/icon/LitIcon.js'; -import { LitIcon } from '../../../../base-ui/icon/LitIcon.js'; -import '../../../../base-ui/popover/LitPopoverV.js'; -import { LitCheckBox } from '../../../../base-ui/checkbox/LitCheckBox.js'; +import { BaseElement, element } from '../../../../base-ui/BaseElement'; +import '../../../../base-ui/select/LitSelect'; +import '../../../../base-ui/select/LitSelectOption'; +import '../../../../base-ui/icon/LitIcon'; +import { LitIcon } from '../../../../base-ui/icon/LitIcon'; +import '../../../../base-ui/popover/LitPopoverV'; +import { LitCheckBox } from '../../../../base-ui/checkbox/LitCheckBox'; import { LitSelect } from '../../../../base-ui/select/LitSelect'; -import { queryTransferList } from '../../../database/SqlLite.js'; +import { queryTransferList } from '../../../database/SqlLite'; export interface FilterData { inputValue: string; diff --git a/ide/src/trace/component/trace/sheet/TabPaneJsMemoryFilter.ts b/ide/src/trace/component/trace/sheet/TabPaneJsMemoryFilter.ts index af6ab82d4d1c143755ef955fbb1a067e5aa1f8ce..b0bb5ccfb4f604fbf15936bee3520a8a53f8e237 100644 --- a/ide/src/trace/component/trace/sheet/TabPaneJsMemoryFilter.ts +++ b/ide/src/trace/component/trace/sheet/TabPaneJsMemoryFilter.ts @@ -12,14 +12,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { BaseElement, element } from '../../../../base-ui/BaseElement.js'; -import '../../../../base-ui/icon/LitIcon.js'; -import { LitIcon } from '../../../../base-ui/icon/LitIcon.js'; -import '../../../../base-ui/popover/LitPopoverV.js'; -import { LitCheckBox } from '../../../../base-ui/checkbox/LitCheckBox.js'; -import { LitSelect } from '../../../../base-ui/select/LitSelect.js'; -import '../../../../base-ui/select/LitSelect.js'; -import { LitSelectOption } from '../../../../base-ui/select/LitSelectOption.js'; +import { BaseElement, element } from '../../../../base-ui/BaseElement'; +import '../../../../base-ui/icon/LitIcon'; +import { LitIcon } from '../../../../base-ui/icon/LitIcon'; +import '../../../../base-ui/popover/LitPopoverV'; +import { LitCheckBox } from '../../../../base-ui/checkbox/LitCheckBox'; +import { LitSelect } from '../../../../base-ui/select/LitSelect'; +import '../../../../base-ui/select/LitSelect'; +import { LitSelectOption } from '../../../../base-ui/select/LitSelectOption'; @element('tab-pane-js-memory-filter') export class TabPaneJsMemoryFilter extends BaseElement { initElements(): void {} diff --git a/ide/src/trace/component/trace/sheet/TabProgressBar.ts b/ide/src/trace/component/trace/sheet/TabProgressBar.ts index 469e869aa4814cbcddabae95ef0857c156858832..7e5bb8363994be83c48394271adc5366fc6a628b 100644 --- a/ide/src/trace/component/trace/sheet/TabProgressBar.ts +++ b/ide/src/trace/component/trace/sheet/TabProgressBar.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../base-ui/BaseElement.js'; +import { BaseElement, element } from '../../../../base-ui/BaseElement'; @element('tab-progress-bar') export class TabProgressBar extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/ability/TabPaneCpuAbility.ts b/ide/src/trace/component/trace/sheet/ability/TabPaneCpuAbility.ts index 8a4ef83925082ee30b88ab06ec75411571278615..be51b88877a536030b6177665180349d4a73888e 100644 --- a/ide/src/trace/component/trace/sheet/ability/TabPaneCpuAbility.ts +++ b/ide/src/trace/component/trace/sheet/ability/TabPaneCpuAbility.ts @@ -13,15 +13,15 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; -import { getTabCpuAbilityData } from '../../../../database/SqlLite.js'; -import { SystemCpuSummary } from '../../../../bean/AbilityMonitor.js'; -import { Utils } from '../../base/Utils.js'; -import { ColorUtils } from '../../base/ColorUtils.js'; -import { log } from '../../../../../log/Log.js'; -import { resizeObserver } from '../SheetUtils.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { SelectionParam } from '../../../../bean/BoxSelection'; +import { getTabCpuAbilityData } from '../../../../database/SqlLite'; +import { SystemCpuSummary } from '../../../../bean/AbilityMonitor'; +import { Utils } from '../../base/Utils'; +import { ColorUtils } from '../../base/ColorUtils'; +import { log } from '../../../../../log/Log'; +import { resizeObserver } from '../SheetUtils'; @element('tabpane-cpu-ability') export class TabPaneCpuAbility extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/ability/TabPaneDiskAbility.ts b/ide/src/trace/component/trace/sheet/ability/TabPaneDiskAbility.ts index a295d77b7de79cd261b9192e57b47ae2846e92f6..c259c007bbfe5d43537ddce1452d6ed610100811 100644 --- a/ide/src/trace/component/trace/sheet/ability/TabPaneDiskAbility.ts +++ b/ide/src/trace/component/trace/sheet/ability/TabPaneDiskAbility.ts @@ -13,15 +13,15 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; -import { getTabDiskAbilityData } from '../../../../database/SqlLite.js'; -import { SystemDiskIOSummary } from '../../../../bean/AbilityMonitor.js'; -import { Utils } from '../../base/Utils.js'; -import { ColorUtils } from '../../base/ColorUtils.js'; -import { log } from '../../../../../log/Log.js'; -import { resizeObserver } from '../SheetUtils.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { SelectionParam } from '../../../../bean/BoxSelection'; +import { getTabDiskAbilityData } from '../../../../database/SqlLite'; +import { SystemDiskIOSummary } from '../../../../bean/AbilityMonitor'; +import { Utils } from '../../base/Utils'; +import { ColorUtils } from '../../base/ColorUtils'; +import { log } from '../../../../../log/Log'; +import { resizeObserver } from '../SheetUtils'; @element('tabpane-disk-ability') export class TabPaneDiskAbility extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/ability/TabPaneDmaAbility.ts b/ide/src/trace/component/trace/sheet/ability/TabPaneDmaAbility.ts index 472b61b9375494de18686a2ae774b2f5022850f1..7e55d1ba38549513b597889465fb55da3b658493 100644 --- a/ide/src/trace/component/trace/sheet/ability/TabPaneDmaAbility.ts +++ b/ide/src/trace/component/trace/sheet/ability/TabPaneDmaAbility.ts @@ -13,14 +13,14 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; -import { Dma } from '../../../../bean/AbilityMonitor.js'; -import { resizeObserver } from '../SheetUtils.js'; -import { getTabDmaAbilityData } from '../../../../database/SqlLite.js'; -import { MemoryConfig } from '../../../../bean/MemoryConfig.js'; -import { Utils } from '../../base/Utils.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { SelectionParam } from '../../../../bean/BoxSelection'; +import { Dma } from '../../../../bean/AbilityMonitor'; +import { resizeObserver } from '../SheetUtils'; +import { getTabDmaAbilityData } from '../../../../database/SqlLite'; +import { MemoryConfig } from '../../../../bean/MemoryConfig'; +import { Utils } from '../../base/Utils'; @element('tabpane-dma-ability') export class TabPaneDmaAbility extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/ability/TabPaneDmaAbilityComparison.ts b/ide/src/trace/component/trace/sheet/ability/TabPaneDmaAbilityComparison.ts index 7d1d310e930a3d3a0e996e7cdc877874f49ffc3f..fd145f63a64bac489f4964402b69287358187c90 100644 --- a/ide/src/trace/component/trace/sheet/ability/TabPaneDmaAbilityComparison.ts +++ b/ide/src/trace/component/trace/sheet/ability/TabPaneDmaAbilityComparison.ts @@ -13,17 +13,17 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { type LitSelect } from '../../../../../base-ui/select/LitSelect.js'; -import { LitSelectOption } from '../../../../../base-ui/select/LitSelectOption.js'; -import { type LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { DmaComparison } from '../../../../bean/AbilityMonitor.js'; -import { getTabDmaAbilityComparisonData } from '../../../../database/SqlLite.js'; -import { type SnapshotStruct } from '../../../../database/ui-worker/ProcedureWorkerSnapshot.js'; -import { Utils } from '../../base/Utils.js'; -import { compare, resizeObserverFromMemory } from '../SheetUtils.js'; -import '../TabPaneJsMemoryFilter.js'; -import { type TabPaneJsMemoryFilter } from '../TabPaneJsMemoryFilter.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { type LitSelect } from '../../../../../base-ui/select/LitSelect'; +import { LitSelectOption } from '../../../../../base-ui/select/LitSelectOption'; +import { type LitTable } from '../../../../../base-ui/table/lit-table'; +import { DmaComparison } from '../../../../bean/AbilityMonitor'; +import { getTabDmaAbilityComparisonData } from '../../../../database/SqlLite'; +import { type SnapshotStruct } from '../../../../database/ui-worker/ProcedureWorkerSnapshot'; +import { Utils } from '../../base/Utils'; +import { compare, resizeObserverFromMemory } from '../SheetUtils'; +import '../TabPaneJsMemoryFilter'; +import { type TabPaneJsMemoryFilter } from '../TabPaneJsMemoryFilter'; @element('tabpane-dma-ability-comparison') export class TabPaneDmaAbilityComparison extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/ability/TabPaneDmaSelectAbility.ts b/ide/src/trace/component/trace/sheet/ability/TabPaneDmaSelectAbility.ts index 64852bcbdf09a8117b1e6189086a4ce54ee90d9c..0c705852aa654fb6b82f3248dff1c92f7ba4803b 100644 --- a/ide/src/trace/component/trace/sheet/ability/TabPaneDmaSelectAbility.ts +++ b/ide/src/trace/component/trace/sheet/ability/TabPaneDmaSelectAbility.ts @@ -13,13 +13,13 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { type LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { type Dma } from '../../../../bean/AbilityMonitor.js'; -import { getTabDmaAbilityClickData } from '../../../../database/SqlLite.js'; -import { ns2s } from '../../../../database/ui-worker/ProcedureWorkerCommon.js'; -import { SpSystemTrace } from '../../../SpSystemTrace.js'; -import { Utils } from '../../base/Utils.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { type LitTable } from '../../../../../base-ui/table/lit-table'; +import { type Dma } from '../../../../bean/AbilityMonitor'; +import { getTabDmaAbilityClickData } from '../../../../database/SqlLite'; +import { ns2s } from '../../../../database/ui-worker/ProcedureWorkerCommon'; +import { SpSystemTrace } from '../../../SpSystemTrace'; +import { Utils } from '../../base/Utils'; @element('tabpane-dma-selection-ability') export class TabPaneDmaSelectAbility extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/ability/TabPaneGpuMemoryAbility.ts b/ide/src/trace/component/trace/sheet/ability/TabPaneGpuMemoryAbility.ts index a893001780f2fa1264baeac5089471835c4789f7..a27a2e6cf8cf74573c5e8172140cc98a8acf245b 100644 --- a/ide/src/trace/component/trace/sheet/ability/TabPaneGpuMemoryAbility.ts +++ b/ide/src/trace/component/trace/sheet/ability/TabPaneGpuMemoryAbility.ts @@ -13,16 +13,16 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { type LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { type SelectionParam } from '../../../../bean/BoxSelection.js'; -import { GpuMemory } from '../../../../bean/AbilityMonitor.js'; -import { resizeObserver } from '../SheetUtils.js'; -import { getTabGpuMemoryAbilityData } from '../../../../database/SqlLite.js'; -import { ns2s } from '../../../../database/ui-worker/ProcedureWorkerCommon.js'; -import { MemoryConfig } from '../../../../bean/MemoryConfig.js'; -import { Utils } from '../../base/Utils.js'; -import { SpSystemTrace } from '../../../SpSystemTrace.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { type LitTable } from '../../../../../base-ui/table/lit-table'; +import { type SelectionParam } from '../../../../bean/BoxSelection'; +import { GpuMemory } from '../../../../bean/AbilityMonitor'; +import { resizeObserver } from '../SheetUtils'; +import { getTabGpuMemoryAbilityData } from '../../../../database/SqlLite'; +import { ns2s } from '../../../../database/ui-worker/ProcedureWorkerCommon'; +import { MemoryConfig } from '../../../../bean/MemoryConfig'; +import { Utils } from '../../base/Utils'; +import { SpSystemTrace } from '../../../SpSystemTrace'; @element('tabpane-gpu-memory-ability') export class TabPaneGpuMemoryAbility extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/ability/TabPaneGpuMemoryComparison.ts b/ide/src/trace/component/trace/sheet/ability/TabPaneGpuMemoryComparison.ts index dc97d6a1567486bb4f36cd316ef2b7a2b91b6331..05dcc9b2729d8e15836ae63554ac5e42eca2755f 100644 --- a/ide/src/trace/component/trace/sheet/ability/TabPaneGpuMemoryComparison.ts +++ b/ide/src/trace/component/trace/sheet/ability/TabPaneGpuMemoryComparison.ts @@ -13,18 +13,18 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitSelect } from '../../../../../base-ui/select/LitSelect.js'; -import { LitSelectOption } from '../../../../../base-ui/select/LitSelectOption.js'; -import { type LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { GpuMemoryComparison } from '../../../../bean/AbilityMonitor.js'; -import { getTabGpuMemoryComparisonData } from '../../../../database/SqlLite.js'; -import { type SnapshotStruct } from '../../../../database/ui-worker/ProcedureWorkerSnapshot.js'; -import { SpSystemTrace } from '../../../SpSystemTrace.js'; -import { Utils } from '../../base/Utils.js'; -import { compare, resizeObserverFromMemory } from '../SheetUtils.js'; -import '../TabPaneJsMemoryFilter.js'; -import { type TabPaneJsMemoryFilter } from '../TabPaneJsMemoryFilter.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitSelect } from '../../../../../base-ui/select/LitSelect'; +import { LitSelectOption } from '../../../../../base-ui/select/LitSelectOption'; +import { type LitTable } from '../../../../../base-ui/table/lit-table'; +import { GpuMemoryComparison } from '../../../../bean/AbilityMonitor'; +import { getTabGpuMemoryComparisonData } from '../../../../database/SqlLite'; +import { type SnapshotStruct } from '../../../../database/ui-worker/ProcedureWorkerSnapshot'; +import { SpSystemTrace } from '../../../SpSystemTrace'; +import { Utils } from '../../base/Utils'; +import { compare, resizeObserverFromMemory } from '../SheetUtils'; +import '../TabPaneJsMemoryFilter'; +import { type TabPaneJsMemoryFilter } from '../TabPaneJsMemoryFilter'; @element('tabpane-gpu-memory-comparison') export class TabPaneGpuMemoryComparison extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/ability/TabPaneGpuMemorySelectAbility.ts b/ide/src/trace/component/trace/sheet/ability/TabPaneGpuMemorySelectAbility.ts index 0cd5617ee92a0e1340ac24c634bab1bbb911ca15..fadb4f13a0bd2a788eccefe231132937fab4d3a4 100644 --- a/ide/src/trace/component/trace/sheet/ability/TabPaneGpuMemorySelectAbility.ts +++ b/ide/src/trace/component/trace/sheet/ability/TabPaneGpuMemorySelectAbility.ts @@ -13,12 +13,12 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { type LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { type GpuMemory } from '../../../../bean/AbilityMonitor.js'; -import { getTabGpuMemoryAbilityClickData } from '../../../../database/SqlLite.js'; -import { ns2s } from '../../../../database/ui-worker/ProcedureWorkerCommon.js'; -import { Utils } from '../../base/Utils.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { type LitTable } from '../../../../../base-ui/table/lit-table'; +import { type GpuMemory } from '../../../../bean/AbilityMonitor'; +import { getTabGpuMemoryAbilityClickData } from '../../../../database/SqlLite'; +import { ns2s } from '../../../../database/ui-worker/ProcedureWorkerCommon'; +import { Utils } from '../../base/Utils'; @element('tabpane-gpu-memory-selection-ability') export class TabPaneGpuMemorySelectAbility extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/ability/TabPaneHistoryProcesses.ts b/ide/src/trace/component/trace/sheet/ability/TabPaneHistoryProcesses.ts index 31dc1b0f51e7b2a993b4c6228c673e13611eb690..6cdf5dc66517517f6fd0175c81507acd783382f9 100644 --- a/ide/src/trace/component/trace/sheet/ability/TabPaneHistoryProcesses.ts +++ b/ide/src/trace/component/trace/sheet/ability/TabPaneHistoryProcesses.ts @@ -13,14 +13,14 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; -import { getTabProcessHistoryData } from '../../../../database/SqlLite.js'; -import { Utils } from '../../base/Utils.js'; -import { ProcessHistory } from '../../../../bean/AbilityMonitor.js'; -import { log } from '../../../../../log/Log.js'; -import { resizeObserver } from '../SheetUtils.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { SelectionParam } from '../../../../bean/BoxSelection'; +import { getTabProcessHistoryData } from '../../../../database/SqlLite'; +import { Utils } from '../../base/Utils'; +import { ProcessHistory } from '../../../../bean/AbilityMonitor'; +import { log } from '../../../../../log/Log'; +import { resizeObserver } from '../SheetUtils'; @element('tabpane-history-processes') export class TabPaneHistoryProcesses extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/ability/TabPaneLiveProcesses.ts b/ide/src/trace/component/trace/sheet/ability/TabPaneLiveProcesses.ts index 9042fd211dc136c3f869b5fdc8e564c6df91380a..ba7ba7c06833f49c82049d1bbc191f358a64f584 100644 --- a/ide/src/trace/component/trace/sheet/ability/TabPaneLiveProcesses.ts +++ b/ide/src/trace/component/trace/sheet/ability/TabPaneLiveProcesses.ts @@ -13,14 +13,14 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; -import { getTabLiveProcessData } from '../../../../database/SqlLite.js'; -import { LiveProcess } from '../../../../bean/AbilityMonitor.js'; -import { Utils } from '../../base/Utils.js'; -import { log } from '../../../../../log/Log.js'; -import { resizeObserver } from '../SheetUtils.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { SelectionParam } from '../../../../bean/BoxSelection'; +import { getTabLiveProcessData } from '../../../../database/SqlLite'; +import { LiveProcess } from '../../../../bean/AbilityMonitor'; +import { Utils } from '../../base/Utils'; +import { log } from '../../../../../log/Log'; +import { resizeObserver } from '../SheetUtils'; @element('tabpane-live-processes') export class TabPaneLiveProcesses extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/ability/TabPaneMemoryAbility.ts b/ide/src/trace/component/trace/sheet/ability/TabPaneMemoryAbility.ts index 6c44e049f54a995ea4a28bd3a15521e06c32988d..ca6c6d182a7d1f9803884c6b8cb6975268a4bf03 100644 --- a/ide/src/trace/component/trace/sheet/ability/TabPaneMemoryAbility.ts +++ b/ide/src/trace/component/trace/sheet/ability/TabPaneMemoryAbility.ts @@ -13,14 +13,14 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; -import { getTabMemoryAbilityData, queryStartTime } from '../../../../database/SqlLite.js'; -import { SystemMemorySummary } from '../../../../bean/AbilityMonitor.js'; -import { Utils } from '../../base/Utils.js'; -import { log } from '../../../../../log/Log.js'; -import { resizeObserver } from '../SheetUtils.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { SelectionParam } from '../../../../bean/BoxSelection'; +import { getTabMemoryAbilityData, queryStartTime } from '../../../../database/SqlLite'; +import { SystemMemorySummary } from '../../../../bean/AbilityMonitor'; +import { Utils } from '../../base/Utils'; +import { log } from '../../../../../log/Log'; +import { resizeObserver } from '../SheetUtils'; @element('tabpane-memory-ability') export class TabPaneMemoryAbility extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/ability/TabPaneNetworkAbility.ts b/ide/src/trace/component/trace/sheet/ability/TabPaneNetworkAbility.ts index ce1b7c4fc32596fe1c74f99436f683b29f2ee8ed..5906da1aa3fd5cb31333f2c1e520e6d4d8119b0f 100644 --- a/ide/src/trace/component/trace/sheet/ability/TabPaneNetworkAbility.ts +++ b/ide/src/trace/component/trace/sheet/ability/TabPaneNetworkAbility.ts @@ -13,15 +13,15 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; -import { getTabNetworkAbilityData } from '../../../../database/SqlLite.js'; -import { SystemNetworkSummary } from '../../../../bean/AbilityMonitor.js'; -import { Utils } from '../../base/Utils.js'; -import { ColorUtils } from '../../base/ColorUtils.js'; -import { log } from '../../../../../log/Log.js'; -import { resizeObserver } from '../SheetUtils.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { SelectionParam } from '../../../../bean/BoxSelection'; +import { getTabNetworkAbilityData } from '../../../../database/SqlLite'; +import { SystemNetworkSummary } from '../../../../bean/AbilityMonitor'; +import { Utils } from '../../base/Utils'; +import { ColorUtils } from '../../base/ColorUtils'; +import { log } from '../../../../../log/Log'; +import { resizeObserver } from '../SheetUtils'; @element('tabpane-network-ability') export class TabPaneNetworkAbility extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/ability/TabPanePurgPin.ts b/ide/src/trace/component/trace/sheet/ability/TabPanePurgPin.ts index 87db520d57b7e46ad576d55ef24e3355e9ebd070..7766e44b0f1cfc2cec6b77ac060d368e205f763f 100644 --- a/ide/src/trace/component/trace/sheet/ability/TabPanePurgPin.ts +++ b/ide/src/trace/component/trace/sheet/ability/TabPanePurgPin.ts @@ -13,14 +13,14 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { type LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { type SelectionParam } from '../../../../bean/BoxSelection.js'; -import { MemoryConfig } from '../../../../bean/MemoryConfig.js'; -import { queryProcessPurgeableTab, querySysPurgeableTab } from '../../../../database/SqlLite.js'; -import { Utils } from '../../base/Utils.js'; -import { resizeObserver } from '../SheetUtils.js'; -import { PurgeableTabStruct } from './TabPanePurgTotal.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { type LitTable } from '../../../../../base-ui/table/lit-table'; +import { type SelectionParam } from '../../../../bean/BoxSelection'; +import { MemoryConfig } from '../../../../bean/MemoryConfig'; +import { queryProcessPurgeableTab, querySysPurgeableTab } from '../../../../database/SqlLite'; +import { Utils } from '../../base/Utils'; +import { resizeObserver } from '../SheetUtils'; +import { PurgeableTabStruct } from './TabPanePurgTotal'; @element('tabpane-purg-pin') export class TabPanePurgPin extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/ability/TabPanePurgPinComparisonAbility.ts b/ide/src/trace/component/trace/sheet/ability/TabPanePurgPinComparisonAbility.ts index f29bba5f295c2c8eee1e5b797051c3111c22d8eb..66be75298963681e260c441ecd0c46494d0abd48 100644 --- a/ide/src/trace/component/trace/sheet/ability/TabPanePurgPinComparisonAbility.ts +++ b/ide/src/trace/component/trace/sheet/ability/TabPanePurgPinComparisonAbility.ts @@ -12,15 +12,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { type LitSelect } from '../../../../../base-ui/select/LitSelect.js'; -import { type LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { LitSelectOption } from '../../../../../base-ui/select/LitSelectOption.js'; -import { type SelectionParam } from '../../../../bean/BoxSelection.js'; -import { querySysPurgeableSelectionTab } from '../../../../database/SqlLite.js'; -import { Utils } from '../../base/Utils.js'; -import { CompareStruct, compare, resizeObserverFromMemory } from '../SheetUtils.js'; -import { type TabPaneJsMemoryFilter } from '../TabPaneJsMemoryFilter.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { type LitSelect } from '../../../../../base-ui/select/LitSelect'; +import { type LitTable } from '../../../../../base-ui/table/lit-table'; +import { LitSelectOption } from '../../../../../base-ui/select/LitSelectOption'; +import { type SelectionParam } from '../../../../bean/BoxSelection'; +import { querySysPurgeableSelectionTab } from '../../../../database/SqlLite'; +import { Utils } from '../../base/Utils'; +import { CompareStruct, compare, resizeObserverFromMemory } from '../SheetUtils'; +import { type TabPaneJsMemoryFilter } from '../TabPaneJsMemoryFilter'; @element('tabpane-purgeable-pin-comparison-ability') export class TabPanePurgPinComparisonAbility extends BaseElement { private purgeablePinTable: LitTable | null | undefined; diff --git a/ide/src/trace/component/trace/sheet/ability/TabPanePurgPinSelection.ts b/ide/src/trace/component/trace/sheet/ability/TabPanePurgPinSelection.ts index ad11968a72e7a57bf3e6fffe1e9448d353abe54b..b77e9cda15b6cb5888cc214db1cd5ec3be1cd979 100644 --- a/ide/src/trace/component/trace/sheet/ability/TabPanePurgPinSelection.ts +++ b/ide/src/trace/component/trace/sheet/ability/TabPanePurgPinSelection.ts @@ -13,14 +13,14 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { type LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { MemoryConfig } from '../../../../bean/MemoryConfig.js'; -import { type SelectionParam } from '../../../../bean/BoxSelection.js'; -import { queryProcessPurgeableSelectionTab, querySysPurgeableSelectionTab } from '../../../../database/SqlLite.js'; -import { ns2s } from '../../../../database/ui-worker/ProcedureWorkerCommon.js'; -import { Utils } from '../../base/Utils.js'; -import { resizeObserver } from '../SheetUtils.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { type LitTable } from '../../../../../base-ui/table/lit-table'; +import { MemoryConfig } from '../../../../bean/MemoryConfig'; +import { type SelectionParam } from '../../../../bean/BoxSelection'; +import { queryProcessPurgeableSelectionTab, querySysPurgeableSelectionTab } from '../../../../database/SqlLite'; +import { ns2s } from '../../../../database/ui-worker/ProcedureWorkerCommon'; +import { Utils } from '../../base/Utils'; +import { resizeObserver } from '../SheetUtils'; @element('tabpane-purg-pin-selection') export class TabPanePurgPinSelection extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/ability/TabPanePurgTotal.ts b/ide/src/trace/component/trace/sheet/ability/TabPanePurgTotal.ts index 866804c83a3ac1441a9bd26fab3a44e3b3f5fd23..b8239445bc88ce7b52e8572bfcd4eff943e389ad 100644 --- a/ide/src/trace/component/trace/sheet/ability/TabPanePurgTotal.ts +++ b/ide/src/trace/component/trace/sheet/ability/TabPanePurgTotal.ts @@ -13,13 +13,13 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { type LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { type SelectionParam } from '../../../../bean/BoxSelection.js'; -import { MemoryConfig } from '../../../../bean/MemoryConfig.js'; -import { querySysPurgeableTab, queryProcessPurgeableTab } from '../../../../database/SqlLite.js'; -import { Utils } from '../../base/Utils.js'; -import { resizeObserver } from '../SheetUtils.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { type LitTable } from '../../../../../base-ui/table/lit-table'; +import { type SelectionParam } from '../../../../bean/BoxSelection'; +import { MemoryConfig } from '../../../../bean/MemoryConfig'; +import { querySysPurgeableTab, queryProcessPurgeableTab } from '../../../../database/SqlLite'; +import { Utils } from '../../base/Utils'; +import { resizeObserver } from '../SheetUtils'; @element('tabpane-purg-total') export class TabPanePurgTotal extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/ability/TabPanePurgTotalComparisonAbility.ts b/ide/src/trace/component/trace/sheet/ability/TabPanePurgTotalComparisonAbility.ts index 43ef75b5b61c693ce66a20f27394e8e407243df3..4d21808826d86f290b3e245c976cf6db7d3dbea6 100644 --- a/ide/src/trace/component/trace/sheet/ability/TabPanePurgTotalComparisonAbility.ts +++ b/ide/src/trace/component/trace/sheet/ability/TabPanePurgTotalComparisonAbility.ts @@ -12,15 +12,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { type LitSelect } from '../../../../../base-ui/select/LitSelect.js'; -import { LitSelectOption } from '../../../../../base-ui/select/LitSelectOption.js'; -import { type LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { type SelectionParam } from '../../../../bean/BoxSelection.js'; -import { querySysPurgeableSelectionTab } from '../../../../database/SqlLite.js'; -import { Utils } from '../../base/Utils.js'; -import { CompareStruct, compare, resizeObserverFromMemory } from '../SheetUtils.js'; -import { type TabPaneJsMemoryFilter } from '../TabPaneJsMemoryFilter.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { type LitSelect } from '../../../../../base-ui/select/LitSelect'; +import { LitSelectOption } from '../../../../../base-ui/select/LitSelectOption'; +import { type LitTable } from '../../../../../base-ui/table/lit-table'; +import { type SelectionParam } from '../../../../bean/BoxSelection'; +import { querySysPurgeableSelectionTab } from '../../../../database/SqlLite'; +import { Utils } from '../../base/Utils'; +import { CompareStruct, compare, resizeObserverFromMemory } from '../SheetUtils'; +import { type TabPaneJsMemoryFilter } from '../TabPaneJsMemoryFilter'; @element('tabpane-purgeable-total-comparison-ability') export class TabPanePurgTotalComparisonAbility extends BaseElement { private purgeableTotalTable: LitTable | null | undefined; diff --git a/ide/src/trace/component/trace/sheet/ability/TabPanePurgTotalSelection.ts b/ide/src/trace/component/trace/sheet/ability/TabPanePurgTotalSelection.ts index e12941a5531b7a45193f65459e6cce64c5d91cb6..fb94b7968b95c857a0d33c0aaf13fd09f65cc32f 100644 --- a/ide/src/trace/component/trace/sheet/ability/TabPanePurgTotalSelection.ts +++ b/ide/src/trace/component/trace/sheet/ability/TabPanePurgTotalSelection.ts @@ -13,14 +13,14 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { type LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { type SelectionParam } from '../../../../bean/BoxSelection.js'; -import { MemoryConfig } from '../../../../bean/MemoryConfig.js'; -import { queryProcessPurgeableSelectionTab, querySysPurgeableSelectionTab } from '../../../../database/SqlLite.js'; -import { ns2s } from '../../../../database/ui-worker/ProcedureWorkerCommon.js'; -import { Utils } from '../../base/Utils.js'; -import { resizeObserver } from '../SheetUtils.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { type LitTable } from '../../../../../base-ui/table/lit-table'; +import { type SelectionParam } from '../../../../bean/BoxSelection'; +import { MemoryConfig } from '../../../../bean/MemoryConfig'; +import { queryProcessPurgeableSelectionTab, querySysPurgeableSelectionTab } from '../../../../database/SqlLite'; +import { ns2s } from '../../../../database/ui-worker/ProcedureWorkerCommon'; +import { Utils } from '../../base/Utils'; +import { resizeObserver } from '../SheetUtils'; @element('tabpane-purg-total-selection') export class TabPanePurgTotalSelection extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/ark-ts/TabPaneComparison.ts b/ide/src/trace/component/trace/sheet/ark-ts/TabPaneComparison.ts index 11c090a4013f53f37cee72f32b28f063737e1214..cf69d4b339dddef1a05cb532589e945034b5921d 100644 --- a/ide/src/trace/component/trace/sheet/ark-ts/TabPaneComparison.ts +++ b/ide/src/trace/component/trace/sheet/ark-ts/TabPaneComparison.ts @@ -13,17 +13,17 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { HeapDataInterface } from '../../../../../js-heap/HeapDataInterface.js'; -import { ConstructorComparison, ConstructorItem, ConstructorType } from '../../../../../js-heap/model/UiStruct.js'; -import { LitTableColumn } from '../../../../../base-ui/table/lit-table-column.js'; -import '../../../../../base-ui/table/lit-table-column.js'; -import { TabPaneJsMemoryFilter } from '../TabPaneJsMemoryFilter.js'; -import '../TabPaneJsMemoryFilter.js'; -import { HeapSnapshotStruct } from '../../../../database/ui-worker/ProcedureWorkerHeapSnapshot.js'; -import { LitSelectOption } from '../../../../../base-ui/select/LitSelectOption.js'; -import { LitSelect } from '../../../../../base-ui/select/LitSelect.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { HeapDataInterface } from '../../../../../js-heap/HeapDataInterface'; +import { ConstructorComparison, ConstructorItem, ConstructorType } from '../../../../../js-heap/model/UiStruct'; +import { LitTableColumn } from '../../../../../base-ui/table/lit-table-column'; +import '../../../../../base-ui/table/lit-table-column'; +import { TabPaneJsMemoryFilter } from '../TabPaneJsMemoryFilter'; +import '../TabPaneJsMemoryFilter'; +import { HeapSnapshotStruct } from '../../../../database/ui-worker/ProcedureWorkerHeapSnapshot'; +import { LitSelectOption } from '../../../../../base-ui/select/LitSelectOption'; +import { LitSelect } from '../../../../../base-ui/select/LitSelect'; @element('tabpane-comparison') export class TabPaneComparison extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/ark-ts/TabPaneJsCpu.ts b/ide/src/trace/component/trace/sheet/ark-ts/TabPaneJsCpu.ts index 45a53eefae0398ec80641cd8305f7a1ac85d701e..a9654b5e5074fc323fa21abccf8d1122d8b45baf 100644 --- a/ide/src/trace/component/trace/sheet/ark-ts/TabPaneJsCpu.ts +++ b/ide/src/trace/component/trace/sheet/ark-ts/TabPaneJsCpu.ts @@ -13,14 +13,14 @@ * limitations under the License. */ -import { BaseElement } from '../../../../../base-ui/BaseElement.js'; -import { type LitTable, TableMode } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; -import { type JsCpuProfilerChartFrame, JsCpuProfilerTabStruct } from '../../../../bean/JsStruct.js'; -import { procedurePool } from '../../../../database/Procedure.js'; -import { findSearchNode, ns2s } from '../../../../database/ui-worker/ProcedureWorkerCommon.js'; -import { type FilterData, TabPaneFilter } from '../TabPaneFilter.js'; -import '../TabPaneFilter.js'; +import { BaseElement } from '../../../../../base-ui/BaseElement'; +import { type LitTable, TableMode } from '../../../../../base-ui/table/lit-table'; +import { SelectionParam } from '../../../../bean/BoxSelection'; +import { type JsCpuProfilerChartFrame, JsCpuProfilerTabStruct } from '../../../../bean/JsStruct'; +import { procedurePool } from '../../../../database/Procedure'; +import { findSearchNode, ns2s } from '../../../../database/ui-worker/ProcedureWorkerCommon'; +import { type FilterData, TabPaneFilter } from '../TabPaneFilter'; +import '../TabPaneFilter'; export class TabPaneJsCpuCallTree extends BaseElement { protected TYPE_TOP_DOWN = 0; @@ -183,9 +183,9 @@ export class TabPaneJsCpuCallTree extends BaseElement { if (this.searchValue !== this.profilerFilter!.filterValue) { this.searchValue = this.profilerFilter!.filterValue; findSearchNode(this.callTreeSource, this.searchValue, false); - this.callTreeTable!.setStatus(this.callTreeSource, true); - this.setCallTreeTableData(this.callTreeSource); } + this.callTreeTable!.setStatus(this.callTreeSource, true); + this.setCallTreeTableData(this.callTreeSource); }); } diff --git a/ide/src/trace/component/trace/sheet/ark-ts/TabPaneJsCpuBottomUp.ts b/ide/src/trace/component/trace/sheet/ark-ts/TabPaneJsCpuBottomUp.ts index c17e86e4b56c26580fe04a153d4c795de55f6609..ba1dd2f6f1c3551e959128b1172340ac28c210be 100644 --- a/ide/src/trace/component/trace/sheet/ark-ts/TabPaneJsCpuBottomUp.ts +++ b/ide/src/trace/component/trace/sheet/ark-ts/TabPaneJsCpuBottomUp.ts @@ -13,10 +13,10 @@ * limitations under the License. */ -import { element } from '../../../../../base-ui/BaseElement.js'; -import { type SelectionParam } from '../../../../bean/BoxSelection.js'; -import { type JsCpuProfilerChartFrame } from '../../../../bean/JsStruct.js'; -import { TabPaneJsCpuCallTree } from './TabPaneJsCpu.js'; +import { element } from '../../../../../base-ui/BaseElement'; +import { type SelectionParam } from '../../../../bean/BoxSelection'; +import { type JsCpuProfilerChartFrame } from '../../../../bean/JsStruct'; +import { TabPaneJsCpuCallTree } from './TabPaneJsCpu'; @element('tabpane-js-cpu-bottom-up') export class TabPaneJsCpuBottomUp extends TabPaneJsCpuCallTree { diff --git a/ide/src/trace/component/trace/sheet/ark-ts/TabPaneJsCpuCallTree.ts b/ide/src/trace/component/trace/sheet/ark-ts/TabPaneJsCpuCallTree.ts index 585603c103dece6c707da06b9054458d12116e56..77ac60498540366ea0592d0f170be926e3bf9f87 100644 --- a/ide/src/trace/component/trace/sheet/ark-ts/TabPaneJsCpuCallTree.ts +++ b/ide/src/trace/component/trace/sheet/ark-ts/TabPaneJsCpuCallTree.ts @@ -13,10 +13,10 @@ * limitations under the License. */ -import { element } from '../../../../../base-ui/BaseElement.js'; -import { type SelectionParam } from '../../../../bean/BoxSelection.js'; -import { type JsCpuProfilerChartFrame } from '../../../../bean/JsStruct.js'; -import { TabPaneJsCpuCallTree } from './TabPaneJsCpu.js'; +import { element } from '../../../../../base-ui/BaseElement'; +import { type SelectionParam } from '../../../../bean/BoxSelection'; +import { type JsCpuProfilerChartFrame } from '../../../../bean/JsStruct'; +import { TabPaneJsCpuCallTree } from './TabPaneJsCpu'; @element('tabpane-js-cpu-top-down') export class TabPaneJsCpuTopDown extends TabPaneJsCpuCallTree { diff --git a/ide/src/trace/component/trace/sheet/ark-ts/TabPaneJsCpuStatistics.ts b/ide/src/trace/component/trace/sheet/ark-ts/TabPaneJsCpuStatistics.ts index 69c37acb31968d7f143724f53af3850911e0a2f1..2fdd9e3ae41a160065feff41602e858a5f1c95b8 100644 --- a/ide/src/trace/component/trace/sheet/ark-ts/TabPaneJsCpuStatistics.ts +++ b/ide/src/trace/component/trace/sheet/ark-ts/TabPaneJsCpuStatistics.ts @@ -13,16 +13,16 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { type LitChartPie } from '../../../../../base-ui/chart/pie/LitChartPie.js'; -import { type LitProgressBar } from '../../../../../base-ui/progress-bar/LitProgressBar.js'; -import { type LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; -import { type JsCpuProfilerChartFrame, JsCpuProfilerStatisticsStruct } from '../../../../bean/JsStruct.js'; -import { procedurePool } from '../../../../database/Procedure.js'; -import { type SampleType } from '../../../../database/logic-worker/ProcedureLogicWorkerJsCpuProfiler.js'; -import { ns2s } from '../../../../database/ui-worker/ProcedureWorkerCommon.js'; -import { resizeObserver } from '../SheetUtils.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { type LitChartPie } from '../../../../../base-ui/chart/pie/LitChartPie'; +import { type LitProgressBar } from '../../../../../base-ui/progress-bar/LitProgressBar'; +import { type LitTable } from '../../../../../base-ui/table/lit-table'; +import { SelectionParam } from '../../../../bean/BoxSelection'; +import { type JsCpuProfilerChartFrame, JsCpuProfilerStatisticsStruct } from '../../../../bean/JsStruct'; +import { procedurePool } from '../../../../database/Procedure'; +import { type SampleType } from '../../../../database/logic-worker/ProcedureLogicWorkerJsCpuProfiler'; +import { ns2s } from '../../../../database/ui-worker/ProcedureWorkerCommon'; +import { resizeObserver } from '../SheetUtils'; @element('tabpane-js-cpu-statistics') export class TabPaneJsCpuStatistics extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/ark-ts/TabPaneSummary.ts b/ide/src/trace/component/trace/sheet/ark-ts/TabPaneSummary.ts index 473b7ed4f1d8dc9fff5c6acb9903a4253041b55e..8eba4f982f3e5d9a24a509b16f56c2600759f054 100644 --- a/ide/src/trace/component/trace/sheet/ark-ts/TabPaneSummary.ts +++ b/ide/src/trace/component/trace/sheet/ark-ts/TabPaneSummary.ts @@ -13,19 +13,19 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import '../../../../../base-ui/table/lit-table.js'; -import { type ConstructorItem, FileInfo } from '../../../../../js-heap/model/UiStruct.js'; -import { HeapDataInterface } from '../../../../../js-heap/HeapDataInterface.js'; -import '../../../../../base-ui/table/lit-table-column.js'; -import { TabPaneJsMemoryFilter } from '../TabPaneJsMemoryFilter.js'; -import '../TabPaneJsMemoryFilter.js'; -import { LitProgressBar } from '../../../../../base-ui/progress-bar/LitProgressBar.js'; -import '../../../../../base-ui/progress-bar/LitProgressBar.js'; -import '../../../../../base-ui/slicer/lit-slicer.js'; -import { HeapSnapshotStruct } from '../../../../database/ui-worker/ProcedureWorkerHeapSnapshot.js'; -import { HeapTraceFunctionInfo } from '../../../../../js-heap/model/DatabaseStruct.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import '../../../../../base-ui/table/lit-table'; +import { type ConstructorItem, FileInfo } from '../../../../../js-heap/model/UiStruct'; +import { HeapDataInterface } from '../../../../../js-heap/HeapDataInterface'; +import '../../../../../base-ui/table/lit-table-column'; +import { TabPaneJsMemoryFilter } from '../TabPaneJsMemoryFilter'; +import '../TabPaneJsMemoryFilter'; +import { LitProgressBar } from '../../../../../base-ui/progress-bar/LitProgressBar'; +import '../../../../../base-ui/progress-bar/LitProgressBar'; +import '../../../../../base-ui/slicer/lit-slicer'; +import { HeapSnapshotStruct } from '../../../../database/ui-worker/ProcedureWorkerHeapSnapshot'; +import { HeapTraceFunctionInfo } from '../../../../../js-heap/model/DatabaseStruct'; @element('tabpane-summary') export class TabPaneSummary extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/binder/TabPaneBinderDataCut.ts b/ide/src/trace/component/trace/sheet/binder/TabPaneBinderDataCut.ts deleted file mode 100644 index e3cbaa9c9782b89b3da7894f8b74f9e44b7b9147..0000000000000000000000000000000000000000 --- a/ide/src/trace/component/trace/sheet/binder/TabPaneBinderDataCut.ts +++ /dev/null @@ -1,781 +0,0 @@ -/* - * Copyright (C) 2022 Huawei Device Co., Ltd. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable, RedrawTreeForm } from '../../../../../base-ui/table/lit-table.js'; -import { Utils } from '../../base/Utils.js'; -import { SelectionParam } from '../../../../bean/BoxSelection'; -import { BinderGroup, DataSource, FuncNameCycle, BinderColumn } from '../../../../bean/BinderProcessThread.js'; -import { querySingleFuncNameCycle, queryBinderByThreadId, queryLoopFuncNameCycle } from '../../../../database/SqlLite.js'; -import { resizeObserver } from '../SheetUtils.js'; -import { LitChartColumn } from '../../../../../base-ui/chart/column/LitChartColumn.js'; -import '../../../../../base-ui/chart/column/LitChartColumn.js'; -// import { SegMenTaTion } from '../../../chart/SpSegmentationChart.js'; - -@element('tabpane-binder-datacut') -export class TabPaneBinderDataCut extends BaseElement { - private threadBindersTbl: LitTable | null | undefined; - private currentSelectionParam: SelectionParam | any; - private threadStatesDIV: Element | null | undefined; - private cycleARangeArr: BinderGroup[] | undefined; - private cycleBRangeArr: BinderGroup[] | undefined; - private cycleAStartRangeDIV: HTMLInputElement | null | undefined; - private cycleAEndRangeDIV: HTMLInputElement | null | undefined; - private cycleBStartRangeDIV: HTMLInputElement | null | undefined; - private cycleBEndRangeDIV: HTMLInputElement | null | undefined; - private chartTotal: LitChartColumn | null | undefined; - private dataSource: DataSource[] | undefined; - private rowCycleData: BinderGroup[] | undefined; - private funcNameCycleArr: FuncNameCycle[] | undefined; - private cacheBinderArr: BinderGroup[] | undefined; - private currentThreadId: string | undefined; - - set data(threadStatesParam: SelectionParam | any) { - let threadIdDIV = this.shadowRoot!.querySelector('.thread-id-input') as HTMLElement; - threadIdDIV.style.border = '1px solid rgb(151,151,151)'; - let cycleNameDIV = this.shadowRoot!.querySelector('.cycle-name-input') as HTMLElement; - cycleNameDIV.style.border = '1px solid rgb(151,151,151)'; - if (this.currentSelectionParam === threadStatesParam) { - return; - } - this.dispalyQueryArea(true); - this.clickLoop(false); - this.clickSingle(false); - this.currentSelectionParam = threadStatesParam; - this.threadBindersTbl!.recycleDataSource = []; - this.theadClick(this.threadBindersTbl!.recycleDataSource); - } - - dispalyQueryArea(b: boolean) { - if (b) { - this.setAttribute('dispalyQueryArea', ''); - } else { - this.removeAttribute('dispalyQueryArea'); - } - } - - clickSingle(b: boolean) { - if (b) { - this.setAttribute('clickSingle', ''); - } else { - this.removeAttribute('clickSingle'); - } - } - - clickLoop(b: boolean) { - if (b) { - this.setAttribute('clickLoop', ''); - } else { - this.removeAttribute('clickLoop'); - } - } - - async dataLoopCut(threadId: HTMLInputElement, threadFunc: HTMLInputElement) { - this.currentThreadId = ''; - let threadIds = this.currentSelectionParam.threadIds; - let processIds = this.currentSelectionParam.processIds; - let threadIdValue = threadId.value.trim(); - let threadFuncName = threadFunc.value.trim(); - let leftNS = this.currentSelectionParam.leftNs; - let rightNS = this.currentSelectionParam.rightNs; - if (threadIdValue != '' && threadFuncName != '') { - // SegMenTaTion.setChartData("BINDER", []); - this.clickLoop(true); - this.clickSingle(false); - this.threadBindersTbl!.loading = true; - threadId.style.border = '1px solid rgb(151,151,151)'; - threadFunc.style.border = '1px solid rgb(151,151,151)'; - this.funcNameCycleArr = await queryLoopFuncNameCycle(threadFuncName, threadIdValue, leftNS, rightNS); - let binderArr = await queryBinderByThreadId(processIds, threadIds, leftNS, rightNS); - if (this.funcNameCycleArr.length !== 0) { - let binderCutArr = []; - for (let j = 0; j < this.funcNameCycleArr.length - 1; j++) { - this.funcNameCycleArr[j].cycleDur = this.funcNameCycleArr[j + 1].cycleStartTime - this.funcNameCycleArr[j].cycleStartTime; - for (let i = 0; i < binderArr.length; i++) { - if (binderArr[i].ts > this.funcNameCycleArr[j].cycleStartTime - && binderArr[i].ts + binderArr[i].dur < this.funcNameCycleArr[j + 1].cycleStartTime) { - // calculate cycle duration - binderArr[i].cycleDur = this.funcNameCycleArr[j + 1].cycleStartTime - this.funcNameCycleArr[j].cycleStartTime; - binderArr[i].cycleStartTime = this.funcNameCycleArr[j].cycleStartTime; - binderArr[i].funcName = this.funcNameCycleArr[j].funcName; - binderArr[i].id = this.funcNameCycleArr[j].id; - binderArr[i].thread = Utils.THREAD_MAP.get(binderArr[i].tid) || 'Thread'; - binderArr[i].process = Utils.PROCESS_MAP.get(binderArr[i].pid) || 'Process'; - binderArr[i].count = 1; - binderCutArr.push(binderArr[i]); - } - } - } - let finalCutBinderArr = this.completionCycleName(binderCutArr, 'loop'); - this.threadBindersTbl!.recycleDataSource = this.transferToTreeData(finalCutBinderArr); - this.threadBindersTbl!.loading = false; - this.theadClick(this.threadBindersTbl!.recycleDataSource); - } else { - this.threadBindersTbl!.recycleDataSource = []; - this.threadBindersTbl!.loading = false; - this.theadClick(this.threadBindersTbl!.recycleDataSource); - } - } else { - if (threadIdValue == '') { - threadId.style.border = '1px solid rgb(255,0,0)'; - threadId.setAttribute('placeholder', 'Please input thread id'); - } else { - threadId.style.border = '1px solid rgb(151,151,151)'; - } - - if (threadFuncName == '') { - threadFunc.style.border = '1px solid rgb(255,0,0)'; - threadFunc.setAttribute('placeholder', 'Please input function name'); - } else { - threadFunc.style.border = '1px solid rgb(151,151,151)'; - } - } - } - - async dataSingleCut(threadId: HTMLInputElement, threadFunc: HTMLInputElement) { - this.currentThreadId = ''; - let threadIds = this.currentSelectionParam.threadIds; - let processIds = this.currentSelectionParam.processIds; - let threadIdValue = threadId.value.trim(); - let threadFuncName = threadFunc.value.trim(); - let leftNS = this.currentSelectionParam.leftNs; - let rightNS = this.currentSelectionParam.rightNs; - if (threadIdValue != '' && threadFuncName != '') { - // SegMenTaTion.setChartData("BINDER", []); - this.clickLoop(false); - this.clickSingle(true); - threadId.style.border = '1px solid rgb(151,151,151)'; - threadFunc.style.border = '1px solid rgb(151,151,151)'; - this.threadBindersTbl!.loading = true; - this.funcNameCycleArr = await querySingleFuncNameCycle(threadFuncName, threadIdValue, leftNS, rightNS); - let binderArr = await queryBinderByThreadId(processIds, threadIds, leftNS, rightNS); - if (this.funcNameCycleArr.length !== 0) { - let binderCutArr: BinderGroup[] = []; - for (let j = 0; j < this.funcNameCycleArr.length; j++) { - for (let i = 0; i < binderArr.length; i++) { - if (binderArr[i].ts > this.funcNameCycleArr[j].cycleStartTime - && binderArr[i].ts + binderArr[i].dur < this.funcNameCycleArr[j].cycleStartTime + this.funcNameCycleArr[j]!.cycleDur) { - binderArr[i].cycleDur = this.funcNameCycleArr[j].cycleDur; - binderArr[i].cycleStartTime = this.funcNameCycleArr[j].cycleStartTime; - binderArr[i].funcName = this.funcNameCycleArr[j].funcName; - binderArr[i].id = this.funcNameCycleArr[j].id; - binderArr[i].thread = Utils.THREAD_MAP.get(binderArr[i].tid) || 'Thread'; - binderArr[i].process = Utils.PROCESS_MAP.get(binderArr[i].pid) || 'Process'; - binderArr[i].count = 1; - binderCutArr.push(binderArr[i]); - } - } - } - - let finalCutBinderArr = this.completionCycleName(binderCutArr, 'single'); - this.threadBindersTbl!.recycleDataSource = this.transferToTreeData(finalCutBinderArr); - this.threadBindersTbl!.loading = false; - this.theadClick(this.threadBindersTbl!.recycleDataSource); - } else { - this.threadBindersTbl!.recycleDataSource = []; - this.threadBindersTbl!.loading = false; - this.theadClick(this.threadBindersTbl!.recycleDataSource); - } - } else { - if (threadIdValue == '') { - threadId.style.border = '1px solid rgb(255,0,0)'; - threadId.setAttribute('placeholder', 'Please input thread id'); - } else { - threadId.style.border = '1px solid rgb(151,151,151)'; - } - - if (threadFuncName == '') { - threadFunc.style.border = '1px solid rgb(255,0,0)'; - threadFunc.setAttribute('placeholder', 'Please input function name'); - } else { - threadFunc.style.border = '1px solid rgb(151,151,151)'; - } - } - } - - completionCycleName(binderCutArr: BinderGroup[], type: string): BinderGroup[] { - let threadIds: number[] = this.currentSelectionParam.threadIds; - let threadBinderCutArr: BinderGroup[][] = []; - let childThreadbinderCutArr: BinderGroup[] = []; - threadIds.forEach((tid: number, i: number) => { - childThreadbinderCutArr = []; - binderCutArr.forEach((binder: BinderGroup) => { - if (binder.tid === tid) { - childThreadbinderCutArr.push(binder) - } - }) - if (childThreadbinderCutArr.length > 0) { - threadBinderCutArr.push(childThreadbinderCutArr); - } - }) - // loop data cut need delete last function Name cycle data - if (type === 'loop') { - this.funcNameCycleArr?.pop(); - } - let cloneThreadBinderCutArr: BinderGroup[][] = JSON.parse(JSON.stringify(threadBinderCutArr)); - let binderContainsFuncIdArr: any = []; - threadBinderCutArr.forEach((binderArr: BinderGroup[], idx: number) => { - binderArr.forEach((binder: BinderGroup) => { - if (!binderContainsFuncIdArr.includes(binder.id)) { - binderContainsFuncIdArr.push(binder.id); - } - }) - // When the cycle data is incomplete - if (this.funcNameCycleArr!.length !== binderContainsFuncIdArr.length) { - this.completionAllFname(binderContainsFuncIdArr, idx, cloneThreadBinderCutArr); - } - binderContainsFuncIdArr = []; - }) - cloneThreadBinderCutArr.forEach(arr => { - arr.sort(this.compare('id')); - }) - return cloneThreadBinderCutArr.flat(); - } - - completionAllFname(binderContainsFuncIdArr: number[], idx: number, cloneThreadBinderCutArr: BinderGroup[][]) { - this.funcNameCycleArr!.forEach((it: FuncNameCycle) => { - if (!binderContainsFuncIdArr.includes(it.id)) { - let itemData = cloneThreadBinderCutArr[idx][0]; - let item: BinderGroup = { - title: '', - count: 0, - totalCount: 0, - cycleDur: it.cycleDur, - cycleStartTime: it.cycleStartTime, - id: it.id, - name: '', - pid: itemData.pid, - process: itemData.process, - thread: itemData.thread, - tid: itemData.tid, - idx: 0 - } - cloneThreadBinderCutArr[idx].push(item); - } - }) - } - - compare(prop: string) { - return function (obj1: any, obj2: any) { - let val1 = obj1[prop]; - let val2 = obj2[prop]; - if (val1 < val2) { - return -1; - } else if (val1 > val2) { - return 1; - } else { - return 0; - } - } - } - - transferToTreeData(binderList: Array): Array { - let group: any = {}; - binderList.forEach((it: BinderGroup) => { - let cycleItem = { - title: it.thread + ' ' + '[' + it.tid + ']' + '[' + it.id + ']', - totalCount: it.count, - binderTransactionCount: it.name == 'binder transaction' ? it.count : 0, - binderAsyncRcvCount: it.name == 'binder async rcv' ? it.count : 0, - binderReplyCount: it.name == 'binder reply' ? it.count : 0, - binderTransactionAsyncCount: it.name == 'binder transaction async' ? it.count : 0, - tid: it.tid, - pid: it.pid, - thread: it.thread, - cycleDur: it.cycleDur || 0, - cycleStartTime: it.cycleStartTime, - type: 'cycle', - }; - if (group[`${it.pid}`]) { - let process = group[`${it.pid}`]; - process.totalCount += it.count; - let thread = process.children.find((child: BinderGroup) => child.title === it.thread + ' ' + '[' + it.tid + ']'); - if (thread) { - thread.totalCount += it.count; - let cycle = thread.children.find((child: BinderGroup) => child.title === it.thread + ' ' + '[' + it.tid + ']' + '[' + it.id + ']'); - if (cycle) { - cycle.totalCount += it.count; - cycle.binderTransactionCount += it.name == 'binder transaction' ? it.count : 0; - cycle.binderAsyncRcvCount += it.name == 'binder async rcv' ? it.count : 0; - cycle.binderReplyCount += it.name == 'binder reply' ? it.count : 0; - cycle.binderTransactionAsyncCount += it.name == 'binder transaction async' ? it.count : 0; - } else { - thread.children.push(cycleItem); - } - } else { - process.children.push({ - title: it.thread + ' ' + '[' + it.tid + ']', - totalCount: it.count, - tid: it.tid, - pid: it.pid, - type: 'thread', - children: [cycleItem], - }) - } - } else { - group[`${it.pid}`] = { - title: it.process + ' ' + '[' + it.pid + ']', - totalCount: it.count, - tid: it.tid, - pid: it.pid, - type: 'process', - children: [ - { - title: it.thread + ' ' + '[' + it.tid + ']', - totalCount: it.count, - tid: it.tid, - pid: it.pid, - type: 'thread', - children: [cycleItem], - } - ] - } - } - }); - this.cacheBinderArr = JSON.parse(JSON.stringify(this.addCycleNumber(Object.values(group)))); - let groupArr = this.timeUnitConversion(Object.values(group)) - return groupArr; - } - - addCycleNumber(groupArr: Array): Array { - for (let i = 0; i < groupArr.length; i++) { - if (groupArr[i].type === 'cycle') { - groupArr[i].title = 'cycle ' + (i + 1) + '_' + groupArr[i].thread + ' ' + '[' + groupArr[i].tid + ']'; - groupArr[i].idx = i + 1; - } else { - this.addCycleNumber(groupArr[i].children!) - } - } - return groupArr - } - - timeUnitConversion(groupArr: Array): Array { - for (let i = 0; i < groupArr.length; i++) { - if (groupArr[i].type === 'cycle') { - groupArr[i].cycleDur = Number((groupArr[i].cycleDur / 1000000).toFixed(3)); - groupArr[i].cycleStartTime = Number((groupArr[i].cycleStartTime / 1000000).toFixed(3)); - } else { - this.timeUnitConversion(groupArr[i].children!) - } - } - return groupArr - } - - private theadClick(data: Array): void { - let labels = this.threadBindersTbl?.shadowRoot?.querySelector('.th > .td')!.querySelectorAll('label'); - if (labels) { - for (let i = 0; i < labels.length; i++) { - let label = labels[i].innerHTML; - labels[i].addEventListener('click', (e) => { - if (label.includes('Process') && i === 0) { - this.threadBindersTbl!.setStatus(data, false); - this.threadBindersTbl!.recycleDs = this.threadBindersTbl!.meauseTreeRowElement(data, RedrawTreeForm.Retract); - } else if (label.includes('Thread') && i === 1) { - for (let item of data) { - item.status = true; - if (item.children != undefined && item.children.length > 0) { - this.threadBindersTbl!.setStatus(item.children, false); - } - } - this.threadBindersTbl!.recycleDs = this.threadBindersTbl!.meauseTreeRowElement(data, RedrawTreeForm.Retract); - } else if (label.includes('Cycle') && i === 2) { - this.threadBindersTbl!.setStatus(data, true); - this.threadBindersTbl!.recycleDs = this.threadBindersTbl!.meauseTreeRowElement(data, RedrawTreeForm.Expand); - } - }); - } - } - } - - binderWithCountList(rowCycleData: BinderGroup[]): Array { - let binderWithCountList: Array = []; - rowCycleData.forEach(it => { - if (it.totalCount !== 0) { - let cycleDataArr: BinderColumn[] = []; - if (it.binderTransactionCount !== 0) { - cycleDataArr.push({ - name: 'binder transaction', - count: it.binderTransactionCount!, - dur: it.cycleDur, - startNS: it.cycleStartTime, - idx: it.idx - }) - } - if (it.binderTransactionAsyncCount !== 0) { - cycleDataArr.push({ - name: 'binder transaction async', - count: it.binderTransactionAsyncCount!, - dur: it.cycleDur, - startNS: it.cycleStartTime, - idx: it.idx - }) - } - if (it.binderReplyCount !== 0) { - cycleDataArr.push({ - name: 'binder reply', - count: it.binderReplyCount!, - dur: it.cycleDur, - startNS: it.cycleStartTime, - idx: it.idx - }) - } - if (it.binderAsyncRcvCount !== 0) { - cycleDataArr.push({ - name: 'binder async rcv', - count: it.binderAsyncRcvCount!, - dur: it.cycleDur, - startNS: it.cycleStartTime, - idx: it.idx - }) - } - binderWithCountList.push(cycleDataArr) - } - }) - return binderWithCountList; - } - - findThreadByThreadId(groupArr: Array, threadId: number): BinderGroup[] { - let currentSelectThread: BinderGroup[] = []; - groupArr.forEach(p => { - p.children?.forEach(th => { - if (th.tid === threadId) { - currentSelectThread = th.children! - } - }) - }) - return currentSelectThread - } - - initElements(): void { - this.threadBindersTbl = this.shadowRoot?.querySelector('#tb-binder-count'); - this.chartTotal = this.shadowRoot!.querySelector('#chart_cycle'); - this.cycleAStartRangeDIV = this.shadowRoot?.querySelector('#cycle-a-start-range'); - this.cycleAEndRangeDIV = this.shadowRoot?.querySelector('#cycle-a-end-range'); - this.cycleBStartRangeDIV = this.shadowRoot?.querySelector('#cycle-b-start-range'); - this.cycleBEndRangeDIV = this.shadowRoot?.querySelector('#cycle-b-end-range'); - - this.threadStatesDIV = this.shadowRoot!.querySelector('#dataCut'); - this.threadStatesDIV?.children[2].children[0].addEventListener('click', (e) => { - this.dispalyQueryArea(true); - this.dataSource = []; - // @ts-ignore - this.dataSingleCut(this.threadStatesDIV!.children[0], this.threadStatesDIV?.children[1]); - }) - this.threadStatesDIV?.children[2].children[1].addEventListener('click', (e) => { - this.dispalyQueryArea(true); - this.dataSource = []; - // @ts-ignore - this.dataLoopCut(this.threadStatesDIV?.children[0], this.threadStatesDIV?.children[1]); - }) - - this.threadBindersTbl!.addEventListener('row-click', (evt: any) => { - let currentData = evt.detail.data; - if (currentData.type === 'thread') { - this.currentThreadId = currentData.tid + '' + currentData.pid; - this.clearCycleRange(); - currentData.isSelected = true; - this.threadBindersTbl!.clearAllSelection(currentData); - this.threadBindersTbl!.setCurrentSelection(currentData); - this.rowCycleData = currentData.children; - this.dispalyQueryArea(false); - let totalCount = currentData.totalCount; - this.dataSource = []; - this.dataSource.push({ - xName: 'Total', - yAverage: totalCount !== 0 ? Math.ceil(totalCount / this.rowCycleData!.length) : 0 - }) - if (this.dataSource!.length !== 0) { - this.drawColumn(); - } - let threaId = currentData.tid; - let rowThreadBinderArr = this.findThreadByThreadId(this.cacheBinderArr!, threaId); - let binderList = this.binderWithCountList(rowThreadBinderArr!); - // SegMenTaTion.setChartData('BINDER', binderList); - } - - if (currentData.type === 'cycle' && currentData.tid + '' + currentData.pid === this.currentThreadId) { - currentData.isSelected = true; - this.threadBindersTbl!.clearAllSelection(currentData); - this.threadBindersTbl!.setCurrentSelection(currentData); - // SegMenTaTion.tabHover('BINDER', true, currentData.idx); - } - }); - - this.shadowRoot?.querySelector('#query-btn')?.addEventListener('click', () => { - this.cycleARangeArr = this.rowCycleData?.filter((it: BinderGroup) => { - return it.cycleDur >= Number(this.cycleAStartRangeDIV!.value) - && it.cycleDur < Number(this.cycleAEndRangeDIV!.value); - }) - this.cycleBRangeArr = this.rowCycleData?.filter((it: BinderGroup) => { - return it.cycleDur >= Number(this.cycleBStartRangeDIV!.value) - && it.cycleDur < Number(this.cycleBEndRangeDIV!.value); - }) - let cycleACount = 0; - this.cycleARangeArr?.forEach((it: BinderGroup) => { - cycleACount += it.totalCount; - }) - let cycleBCount = 0; - this.cycleBRangeArr?.forEach((it: BinderGroup) => { - cycleBCount += it.totalCount; - }) - this.dataSource!.length > 1 && this.dataSource?.splice(1); - this.dataSource!.push({ - xName: 'cycleA', - yAverage: cycleACount !== 0 ? Math.ceil(cycleACount / this.cycleARangeArr!.length) : 0 - }) - this.dataSource!.push({ - xName: 'cycleB', - yAverage: cycleBCount !== 0 ? Math.ceil(cycleBCount / this.cycleBRangeArr!.length) : 0 - }) - if (this.dataSource!.length !== 0) { - this.drawColumn(); - } - }) - } - - clearCycleRange(): void { - this.cycleAStartRangeDIV!.value = ''; - this.cycleAEndRangeDIV!.value = ''; - this.cycleBStartRangeDIV!.value = ''; - this.cycleBEndRangeDIV!.value = ''; - } - - drawColumn(): void { - this.chartTotal!.dataSource = this.dataSource!; - this.chartTotal!.config = { - data: this.dataSource!, - appendPadding: 10, - xField: 'xName', - yField: 'yAverage', - seriesField: '', - removeUnit: true, - notSort: true, - color: (a) => { - if (a.xName === 'Total') { - return '#2f72f8'; - } else if (a.xName === 'cycleA') { - return '#ffab67'; - } else if (a.xName === 'cycleB') { - return '#a285d2'; - } else { - return '#0a59f7'; - } - }, - tip: (a) => { - if (a && a[0]) { - let tip = ''; - tip = `
-
Average: ${a[0].obj.yAverage}
-
`; - return tip; - } else { - return ''; - } - }, - label: null, - }; - } - - connectedCallback() { - super.connectedCallback(); - resizeObserver(this.parentElement!, this.threadBindersTbl!); - } - - initHtml(): string { - return ` - -
- - -
- - -
-
-
- -
- - - - - - - - - - - - - - - - - - -
- -
-
-
- Cycle A: - - ~ - -
-
-
- Cycle B: - - ~ - -
-
- -
-
-
-
-
Average Binder Count
- -
-
Total
-
CycleA
-
CycleB
-
-
-
-
-
- ` - } -} \ No newline at end of file diff --git a/ide/src/trace/component/trace/sheet/binder/TabPaneThreadBinders.ts b/ide/src/trace/component/trace/sheet/binder/TabPaneThreadBinders.ts deleted file mode 100644 index d3a464198456c13e1d3a1f19137a25e3d9776522..0000000000000000000000000000000000000000 --- a/ide/src/trace/component/trace/sheet/binder/TabPaneThreadBinders.ts +++ /dev/null @@ -1,180 +0,0 @@ -/* - * Copyright (C) 2022 Huawei Device Co., Ltd. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable, RedrawTreeForm } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; -import '../../../StackBar.js' -import { getTabBindersCount } from '../../../../database/SqlLite.js'; -import { Utils } from '../../base/Utils.js'; -import { resizeObserver } from '../SheetUtils.js'; -import { BinderGroup } from '../../../../bean/BinderProcessThread.js'; - -@element('tabpane-thread-binder') -export class TabPaneThreadBinders extends BaseElement { - private threadBindersTbl: LitTable | null | undefined; - private currentSelectionParam: Selection | undefined; - - set data(threadStatesParam: SelectionParam | any) { - if (this.currentSelectionParam === threadStatesParam) { - return; - } - this.threadBindersTbl!.loading = true; - this.currentSelectionParam = threadStatesParam; - this.threadBindersTbl!.recycleDataSource = []; - let binderList: BinderGroup[] = []; - let threadIds = threadStatesParam.threadIds; - let processIds: any[] = [...new Set(threadStatesParam.processIds)]; - getTabBindersCount(processIds, threadIds, threadStatesParam.leftNs, threadStatesParam.rightNs).then((result) => { - if (result != null && result.length > 0 && result[0].count != 0) { - binderList = result; - } - if (binderList.length > 0) { - this.timeUnitConversion(binderList); - this.threadBindersTbl!.recycleDataSource = this.transferToTreeData(binderList); - this.threadBindersTbl!.loading = false; - this.theadClick(this.threadBindersTbl!.recycleDataSource); - } else if (binderList.length === 0) { - this.threadBindersTbl!.recycleDataSource = []; - this.threadBindersTbl!.loading = false; - this.theadClick(this.threadBindersTbl!.recycleDataSource); - } - }) - } - - timeUnitConversion(binderList: Array) { - binderList.forEach(b => { - b.cycleDur = Number((b.cycleDur / 1000000).toFixed(3)); - b.cycleStartTime = Number((b.cycleStartTime / 1000000).toFixed(3)); - }) - } - - initElements(): void { - this.threadBindersTbl = this.shadowRoot?.querySelector('#tb-binder-count'); - this.threadBindersTbl!.itemTextHandleMap.set('title', Utils.transferBinderTitle); - } - - connectedCallback() { - super.connectedCallback(); - resizeObserver(this.parentElement!, this.threadBindersTbl!); - } - - transferToTreeData(binderList: BinderGroup[]): BinderGroup[] { - let group: any = {}; - binderList.forEach((it: BinderGroup) => { - if (group[`${it.pid}`]) { - let process = group[`${it.pid}`]; - process.totalCount += it.count; - let thread = process.children.find((child: BinderGroup) => child.title === `T-${it.tid}`); - if (thread) { - thread.totalCount += it.count; - thread.binderTransactionCount += it.name == 'binder transaction' ? it.count : 0; - thread.binderAsyncRcvCount += it.name == 'binder async rcv' ? it.count : 0; - thread.binderReplyCount += it.name == 'binder reply' ? it.count : 0; - thread.binderTransactionAsyncCount += it.name == 'binder transaction async' ? it.count : 0; - } else { - process.children.push({ - title: `T-${it.tid}`, - totalCount: it.count, - binderTransactionCount: it.name == 'binder transaction' ? it.count : 0, - binderAsyncRcvCount: it.name == 'binder async rcv' ? it.count : 0, - binderReplyCount: it.name == 'binder reply' ? it.count : 0, - binderTransactionAsyncCount: it.name == 'binder transaction async' ? it.count : 0, - tid: it.tid, - pid: it.pid - }) - } - } else { - group[`${it.pid}`] = { - title: `P-${it.pid}`, - totalCount: it.count, - tid: it.tid, - pid: it.pid, - cycleDur: it.cycleDur || 0, - cycleStartTime: it.cycleStartTime, - children: [ - { - title: `T-${it.tid}`, - totalCount: it.count, - binderTransactionCount: it.name == 'binder transaction' ? it.count : 0, - binderAsyncRcvCount: it.name == 'binder async rcv' ? it.count : 0, - binderReplyCount: it.name == 'binder reply' ? it.count : 0, - binderTransactionAsyncCount: it.name == 'binder transaction async' ? it.count : 0, - tid: it.tid, - pid: it.pid, - } - ] - } - } - }); - return Object.values(group); - } - - private theadClick(data: Array) { - let labels = this.threadBindersTbl?.shadowRoot?.querySelector('.th > .td')!.querySelectorAll('label'); - if (labels) { - for (let i = 0; i < labels.length; i++) { - let label = labels[i].innerHTML; - labels[i].addEventListener('click', (e) => { - if (label.includes('Process') && i === 0) { - this.threadBindersTbl!.setStatus(data, false); - this.threadBindersTbl!.recycleDs = this.threadBindersTbl!.meauseTreeRowElement(data, RedrawTreeForm.Retract); - } else if (label.includes('Thread') && i === 1) { - for (let item of data) { - item.status = true; - if (item.children != undefined && item.children.length > 0) { - this.threadBindersTbl!.setStatus(item.children, false); - } - } - this.threadBindersTbl!.recycleDs = this.threadBindersTbl!.meauseTreeRowElement(data, RedrawTreeForm.Retract); - } - }); - } - } - } - - - initHtml(): string { - return ` - - - - - - - - - - - - - - - - - ` - } -} \ No newline at end of file diff --git a/ide/src/trace/component/trace/sheet/clock/TabPaneClockCounter.ts b/ide/src/trace/component/trace/sheet/clock/TabPaneClockCounter.ts index d7113aeeae81f98bb00905f17d49bdc20ec6c8cb..7d1b6d2cdef5feec66fee7011026029869c861c2 100644 --- a/ide/src/trace/component/trace/sheet/clock/TabPaneClockCounter.ts +++ b/ide/src/trace/component/trace/sheet/clock/TabPaneClockCounter.ts @@ -13,10 +13,10 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { Counter, SelectionData, SelectionParam } from '../../../../bean/BoxSelection.js'; -import { resizeObserver } from '../SheetUtils.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { Counter, SelectionData, SelectionParam } from '../../../../bean/BoxSelection'; +import { resizeObserver } from '../SheetUtils'; @element('tabpane-clock-counter') export class TabPaneClockCounter extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/cpu/TabPaneBoxChild.ts b/ide/src/trace/component/trace/sheet/cpu/TabPaneBoxChild.ts index b726a4f65c6a2e09789bde25e2502df13a3c57bc..232fa680bb96d44d98b36e4f65cc31ab18a8010c 100644 --- a/ide/src/trace/component/trace/sheet/cpu/TabPaneBoxChild.ts +++ b/ide/src/trace/component/trace/sheet/cpu/TabPaneBoxChild.ts @@ -13,13 +13,13 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { BoxJumpParam, SelectionData } from '../../../../bean/BoxSelection.js'; -import { getTabBoxChildData } from '../../../../database/SqlLite.js'; -import { Utils } from '../../base/Utils.js'; -import { SPTChild } from '../../../../bean/StateProcessThread.js'; -import { resizeObserver } from '../SheetUtils.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { BoxJumpParam, SelectionData } from '../../../../bean/BoxSelection'; +import { getTabBoxChildData } from '../../../../database/SqlLite'; +import { Utils } from '../../base/Utils'; +import { SPTChild } from '../../../../bean/StateProcessThread'; +import { resizeObserver } from '../SheetUtils'; @element('tabpane-box-child') export class TabPaneBoxChild extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/cpu/TabPaneCounterSample.ts b/ide/src/trace/component/trace/sheet/cpu/TabPaneCounterSample.ts index be23bba725b5070f4816a75863fe302c33907653..1ccb2edf1c6447a56f2b78d4cd8e57ecb1000a1e 100644 --- a/ide/src/trace/component/trace/sheet/cpu/TabPaneCounterSample.ts +++ b/ide/src/trace/component/trace/sheet/cpu/TabPaneCounterSample.ts @@ -13,19 +13,19 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; -import { getTabPaneCounterSampleData } from '../../../../database/SqlLite.js'; -import { LitProgressBar } from '../../../../../base-ui/progress-bar/LitProgressBar.js'; -import { Utils } from '../../base/Utils.js'; -import { resizeObserver } from '../SheetUtils.js'; -import { SpSystemTrace } from '../../../SpSystemTrace.js'; -import { dataFilterHandler, drawLines } from '../../../../database/ui-worker/ProcedureWorkerCommon.js'; -import { TraceRow } from '../../base/TraceRow.js'; -import { CpuFreqStruct } from '../../../../database/ui-worker/ProcedureWorkerFreq.js'; -import { CpuState } from '../../../../database/logic-worker/ProcedureLogicWorkerCpuState.js'; -import { CpuStateStruct } from '../../../../database/ui-worker/ProcedureWorkerCpuState.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { SelectionParam } from '../../../../bean/BoxSelection'; +import { getTabPaneCounterSampleData } from '../../../../database/SqlLite'; +import { LitProgressBar } from '../../../../../base-ui/progress-bar/LitProgressBar'; +import { Utils } from '../../base/Utils'; +import { resizeObserver } from '../SheetUtils'; +import { SpSystemTrace } from '../../../SpSystemTrace'; +import { dataFilterHandler, drawLines } from '../../../../database/ui-worker/ProcedureWorkerCommon'; +import { TraceRow } from '../../base/TraceRow'; +import { CpuFreqStruct } from '../../../../database/ui-worker/ProcedureWorkerFreq'; +import { CpuState } from '../../../../database/logic-worker/ProcedureLogicWorkerCpuState'; +import { CpuStateStruct } from '../../../../database/ui-worker/ProcedureWorkerCpuState'; @element('tabpane-counter-sample') export class TabPaneCounterSample extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/cpu/TabPaneCpuByProcess.ts b/ide/src/trace/component/trace/sheet/cpu/TabPaneCpuByProcess.ts index eff4585fd0be4aacb82ddcd7957c4428adaac007..5776e8c2b72fc6550f5792d7a7f665354107912e 100644 --- a/ide/src/trace/component/trace/sheet/cpu/TabPaneCpuByProcess.ts +++ b/ide/src/trace/component/trace/sheet/cpu/TabPaneCpuByProcess.ts @@ -13,13 +13,13 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionData, SelectionParam } from '../../../../bean/BoxSelection.js'; -import { getTabCpuByProcess } from '../../../../database/SqlLite.js'; -import { log } from '../../../../../log/Log.js'; -import { Utils } from '../../base/Utils.js'; -import { resizeObserver } from '../SheetUtils.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { SelectionData, SelectionParam } from '../../../../bean/BoxSelection'; +import { getTabCpuByProcess } from '../../../../database/SqlLite'; +import { log } from '../../../../../log/Log'; +import { Utils } from '../../base/Utils'; +import { resizeObserver } from '../SheetUtils'; @element('tabpane-cpu-process') export class TabPaneCpuByProcess extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/cpu/TabPaneCpuByThread.ts b/ide/src/trace/component/trace/sheet/cpu/TabPaneCpuByThread.ts index ed3401bf2e01ac55bef17055977d72a34d336b10..b4317de4106823f2894a38eca3b8ab06b1bfa112 100644 --- a/ide/src/trace/component/trace/sheet/cpu/TabPaneCpuByThread.ts +++ b/ide/src/trace/component/trace/sheet/cpu/TabPaneCpuByThread.ts @@ -13,14 +13,14 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionData, SelectionParam } from '../../../../bean/BoxSelection.js'; -import { getTabCpuByThread } from '../../../../database/SqlLite.js'; -import { log } from '../../../../../log/Log.js'; -import { getProbablyTime } from '../../../../database/logic-worker/ProcedureLogicWorkerCommon.js'; -import { Utils } from '../../base/Utils.js'; -import { resizeObserver } from '../SheetUtils.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { SelectionData, SelectionParam } from '../../../../bean/BoxSelection'; +import { getTabCpuByThread } from '../../../../database/SqlLite'; +import { log } from '../../../../../log/Log'; +import { getProbablyTime } from '../../../../database/logic-worker/ProcedureLogicWorkerCommon'; +import { Utils } from '../../base/Utils'; +import { resizeObserver } from '../SheetUtils'; @element('tabpane-cpu-thread') export class TabPaneCpuByThread extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/cpu/TabPaneCpuStateClick.ts b/ide/src/trace/component/trace/sheet/cpu/TabPaneCpuStateClick.ts index 99cb870d901740b8885983b396d409eb2538e3d2..28f2f744a820f70dfaa3389c070eba6e5cf63e5a 100644 --- a/ide/src/trace/component/trace/sheet/cpu/TabPaneCpuStateClick.ts +++ b/ide/src/trace/component/trace/sheet/cpu/TabPaneCpuStateClick.ts @@ -13,10 +13,10 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { Utils } from '../../base/Utils.js'; -import { resizeObserver } from '../SheetUtils.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { Utils } from '../../base/Utils'; +import { resizeObserver } from '../SheetUtils'; @element('tabpane-cpu-state-click') export class TabPaneCpuStateClick extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/cpu/TabPaneCpuUsage.ts b/ide/src/trace/component/trace/sheet/cpu/TabPaneCpuUsage.ts index 2d99bd6ebe83bb10815032796c2d7dbffc51d0ee..b25a44cdb209a6659505571c2560134f8ae9563d 100644 --- a/ide/src/trace/component/trace/sheet/cpu/TabPaneCpuUsage.ts +++ b/ide/src/trace/component/trace/sheet/cpu/TabPaneCpuUsage.ts @@ -13,12 +13,12 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; -import { getTabCpuFreq, getTabCpuUsage } from '../../../../database/SqlLite.js'; -import { CpuUsage, Freq } from '../../../../bean/CpuUsage.js'; -import { resizeObserver } from '../SheetUtils.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { SelectionParam } from '../../../../bean/BoxSelection'; +import { getTabCpuFreq, getTabCpuUsage } from '../../../../database/SqlLite'; +import { CpuUsage, Freq } from '../../../../bean/CpuUsage'; +import { resizeObserver } from '../SheetUtils'; @element('tabpane-cpu-usage') export class TabPaneCpuUsage extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/cpu/TabPaneFrequencySample.ts b/ide/src/trace/component/trace/sheet/cpu/TabPaneFrequencySample.ts index 44069d6cf24901715d5a242bce95fc9ca54148d2..81d015b1c37e38d86197dc3556bf784f40190ed8 100644 --- a/ide/src/trace/component/trace/sheet/cpu/TabPaneFrequencySample.ts +++ b/ide/src/trace/component/trace/sheet/cpu/TabPaneFrequencySample.ts @@ -12,19 +12,18 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; -import { getTabPaneFrequencySampleData, getTabPaneCounterSampleData } from '../../../../database/SqlLite.js'; -import { ColorUtils } from '../../base/ColorUtils.js'; -import { resizeObserver } from '../SheetUtils.js'; -import { CpuFreqStruct } from '../../../../database/ui-worker/ProcedureWorkerFreq.js'; -import { SpSystemTrace } from '../../../SpSystemTrace.js'; -import { TraceRow } from '../../base/TraceRow.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { SelectionParam } from '../../../../bean/BoxSelection'; +import { getTabPaneFrequencySampleData, getTabPaneCounterSampleData } from '../../../../database/SqlLite'; +import { ColorUtils } from '../../base/ColorUtils'; +import { resizeObserver } from '../SheetUtils'; +import { CpuFreqStruct } from '../../../../database/ui-worker/ProcedureWorkerFreq'; +import { SpSystemTrace } from '../../../SpSystemTrace'; +import { TraceRow } from '../../base/TraceRow'; import { drawLines, -} from '../../../../database/ui-worker/ProcedureWorkerCommon.js'; +} from '../../../../database/ui-worker/ProcedureWorkerCommon'; @element('tabpane-frequency-sample') export class TabPaneFrequencySample extends BaseElement { @@ -187,7 +186,7 @@ export class TabPaneFrequencySample extends BaseElement { stateFiliterIds ); //开启一个线程计算busyTime - this.worker = new Worker('trace/database/StateBusyTimeWorker.js'); + this.worker = new Worker(new URL('../../../../database/StateBusyTimeWorker',import.meta.url)); let msg = { frqSampleParam, result, diff --git a/ide/src/trace/component/trace/sheet/cpu/TabPanePTS.ts b/ide/src/trace/component/trace/sheet/cpu/TabPanePTS.ts index 8f1d525b0c5b8adc5d13ad7098995577067a3c68..61f78e9a7f55ce5ef36c2be18199581523c39fe9 100644 --- a/ide/src/trace/component/trace/sheet/cpu/TabPanePTS.ts +++ b/ide/src/trace/component/trace/sheet/cpu/TabPanePTS.ts @@ -13,13 +13,13 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable, RedrawTreeForm } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; -import { resizeObserver } from '../SheetUtils.js'; -import { procedurePool } from '../../../../database/Procedure.js'; -import { Utils } from '../../base/Utils.js'; -import { SliceGroup } from '../../../../bean/StateProcessThread.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable, RedrawTreeForm } from '../../../../../base-ui/table/lit-table'; +import { SelectionParam } from '../../../../bean/BoxSelection'; +import { resizeObserver } from '../SheetUtils'; +import { procedurePool } from '../../../../database/Procedure'; +import { Utils } from '../../base/Utils'; +import { SliceGroup } from '../../../../bean/StateProcessThread'; @element('tabpane-pts') export class TabPanePTS extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/cpu/TabPaneSPT.ts b/ide/src/trace/component/trace/sheet/cpu/TabPaneSPT.ts index b3997a386ef568cc5ca45c1cc93606a941982da1..dc2aa50f9dee2c91800774c57c15e776c8e2125d 100644 --- a/ide/src/trace/component/trace/sheet/cpu/TabPaneSPT.ts +++ b/ide/src/trace/component/trace/sheet/cpu/TabPaneSPT.ts @@ -13,13 +13,13 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable, RedrawTreeForm } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; -import { SliceGroup } from '../../../../bean/StateProcessThread.js'; -import { resizeObserver } from '../SheetUtils.js'; -import { procedurePool } from '../../../../database/Procedure.js'; -import { Utils } from '../../base/Utils.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable, RedrawTreeForm } from '../../../../../base-ui/table/lit-table'; +import { SelectionParam } from '../../../../bean/BoxSelection'; +import { SliceGroup } from '../../../../bean/StateProcessThread'; +import { resizeObserver } from '../SheetUtils'; +import { procedurePool } from '../../../../database/Procedure'; +import { Utils } from '../../base/Utils'; @element('tabpane-spt') export class TabPaneSPT extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/cpu/TabPaneSchedPriority.ts b/ide/src/trace/component/trace/sheet/cpu/TabPaneSchedPriority.ts index 6173e3ad82d2de025ad46de97912ac59ba8ae848..a50f767751fd3decdf8765697369edbefe69dd60 100644 --- a/ide/src/trace/component/trace/sheet/cpu/TabPaneSchedPriority.ts +++ b/ide/src/trace/component/trace/sheet/cpu/TabPaneSchedPriority.ts @@ -13,14 +13,14 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable, RedrawTreeForm } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; -import { resizeObserver } from '../SheetUtils.js'; -import { procedurePool } from '../../../../database/Procedure.js'; -import { Utils } from '../../base/Utils.js'; -import { queryThreadStateArgsByName } from '../../../../database/SqlLite.js'; -import { Priority } from '../../../../bean/StateProcessThread.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable, RedrawTreeForm } from '../../../../../base-ui/table/lit-table'; +import { SelectionParam } from '../../../../bean/BoxSelection'; +import { resizeObserver } from '../SheetUtils'; +import { procedurePool } from '../../../../database/Procedure'; +import { Utils } from '../../base/Utils'; +import { queryThreadStateArgsByName } from '../../../../database/SqlLite'; +import { Priority } from '../../../../bean/StateProcessThread'; @element('tabpane-sched-priority') export class TabPaneSchedPriority extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/energy/TabPaneEnergyAnomaly.ts b/ide/src/trace/component/trace/sheet/energy/TabPaneEnergyAnomaly.ts index a486f5608311108c0189032444e8c6faf80b7bb5..7751905f65bcf83b97d4203e1f2d1dc6892cb22e 100644 --- a/ide/src/trace/component/trace/sheet/energy/TabPaneEnergyAnomaly.ts +++ b/ide/src/trace/component/trace/sheet/energy/TabPaneEnergyAnomaly.ts @@ -13,14 +13,14 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { SpHiSysEnergyChart } from '../../../chart/SpHiSysEnergyChart.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { SpHiSysEnergyChart } from '../../../chart/SpHiSysEnergyChart'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; -import { queryAnomalyDetailedData } from '../../../../database/SqlLite.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; -import { EnergyAnomalyStruct } from '../../../../database/ui-worker/ProcedureWorkerEnergyAnomaly.js'; -import { resizeObserver } from '../SheetUtils.js'; +import { queryAnomalyDetailedData } from '../../../../database/SqlLite'; +import { SelectionParam } from '../../../../bean/BoxSelection'; +import { EnergyAnomalyStruct } from '../../../../database/ui-worker/ProcedureWorkerEnergyAnomaly'; +import { resizeObserver } from '../SheetUtils'; @element('tabpane-anomaly-details') export class TabPaneEnergyAnomaly extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/energy/TabPanePowerBattery.ts b/ide/src/trace/component/trace/sheet/energy/TabPanePowerBattery.ts index b4e4097316b00f53a9ec7f7fdef0e757c650ffde..c9189081780e2c98613519ff3f12814a8c92d8fa 100644 --- a/ide/src/trace/component/trace/sheet/energy/TabPanePowerBattery.ts +++ b/ide/src/trace/component/trace/sheet/energy/TabPanePowerBattery.ts @@ -13,13 +13,13 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; -import { getTabPowerBatteryData } from '../../../../database/SqlLite.js'; -import { SpHiSysEnergyChart } from '../../../chart/SpHiSysEnergyChart.js'; -import '../../../../../base-ui/table/lit-table.js'; -import { resizeObserver } from '../SheetUtils.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { SelectionParam } from '../../../../bean/BoxSelection'; +import { getTabPowerBatteryData } from '../../../../database/SqlLite'; +import { SpHiSysEnergyChart } from '../../../chart/SpHiSysEnergyChart'; +import '../../../../../base-ui/table/lit-table'; +import { resizeObserver } from '../SheetUtils'; @element('tabpane-power-battery') export class TabPanePowerBattery extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/energy/TabPanePowerDetails.ts b/ide/src/trace/component/trace/sheet/energy/TabPanePowerDetails.ts index b53a227011242db18620ccbd8cfb24c39e23b001..bd31a6818b398cae32a70baec32e26ba8c7e5935 100644 --- a/ide/src/trace/component/trace/sheet/energy/TabPanePowerDetails.ts +++ b/ide/src/trace/component/trace/sheet/energy/TabPanePowerDetails.ts @@ -13,14 +13,14 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; -import { getTabPowerDetailsData } from '../../../../database/SqlLite.js'; -import { log } from '../../../../../log/Log.js'; -import { PowerDetailsEnergy } from '../../../../bean/EnergyStruct.js'; -import { SpHiSysEnergyChart } from '../../../chart/SpHiSysEnergyChart.js'; -import { resizeObserver } from '../SheetUtils.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { SelectionParam } from '../../../../bean/BoxSelection'; +import { getTabPowerDetailsData } from '../../../../database/SqlLite'; +import { log } from '../../../../../log/Log'; +import { PowerDetailsEnergy } from '../../../../bean/EnergyStruct'; +import { SpHiSysEnergyChart } from '../../../chart/SpHiSysEnergyChart'; +import { resizeObserver } from '../SheetUtils'; @element('tabpane-power-details') export class TabPanePowerDetails extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/energy/TabPaneSystemDetails.ts b/ide/src/trace/component/trace/sheet/energy/TabPaneSystemDetails.ts index 5f971e57093689c84616977b6270f1b84babde2e..dde0764ffa22bc6fa36017f640a7972b2922d503 100644 --- a/ide/src/trace/component/trace/sheet/energy/TabPaneSystemDetails.ts +++ b/ide/src/trace/component/trace/sheet/energy/TabPaneSystemDetails.ts @@ -13,18 +13,18 @@ * limitations under the License. */ -import { SystemDetailsEnergy } from '../../../../bean/EnergyStruct.js'; -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; +import { SystemDetailsEnergy } from '../../../../bean/EnergyStruct'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { SelectionParam } from '../../../../bean/BoxSelection'; import { querySysLocationDetailsData, querySysLockDetailsData, querySystemWorkData, -} from '../../../../database/SqlLite.js'; -import { SpHiSysEnergyChart } from '../../../chart/SpHiSysEnergyChart.js'; -import { resizeObserver } from '../SheetUtils.js'; -import { type LitSlicerTrack } from '../../../../../base-ui/slicer/lit-slicer.js'; +} from '../../../../database/SqlLite'; +import { SpHiSysEnergyChart } from '../../../chart/SpHiSysEnergyChart'; +import { resizeObserver } from '../SheetUtils'; +import { type LitSlicerTrack } from '../../../../../base-ui/slicer/lit-slicer'; @element('tabpane-system-details') export class TabPaneSystemDetails extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/file-system/TabPaneCallTree.ts b/ide/src/trace/component/trace/sheet/file-system/TabPaneCallTree.ts index 58dfb252118a6f282bf5d98f1a07e7c5f0d647ae..fcd02b4823eca1f64564861fac4fac05057ddcc6 100644 --- a/ide/src/trace/component/trace/sheet/file-system/TabPaneCallTree.ts +++ b/ide/src/trace/component/trace/sheet/file-system/TabPaneCallTree.ts @@ -13,19 +13,19 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { LitProgressBar } from '../../../../../base-ui/progress-bar/LitProgressBar.js'; -import { FrameChart } from '../../../chart/FrameChart.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; -import { ChartMode } from '../../../../bean/FrameChartStruct.js'; -import { FilterData, TabPaneFilter } from '../TabPaneFilter.js'; -import { procedurePool } from '../../../../database/Procedure.js'; -import { MerageBean } from '../../../../database/logic-worker/ProcedureLogicWorkerCommon.js'; -import { showButtonMenu } from '../SheetUtils.js'; -import { CallTreeLevelStruct } from '../../../../bean/EbpfStruct.js'; -import '../../../../../base-ui/headline/lit-headline.js'; -import { LitHeadLine } from '../../../../../base-ui/headline/lit-headline.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { LitProgressBar } from '../../../../../base-ui/progress-bar/LitProgressBar'; +import { FrameChart } from '../../../chart/FrameChart'; +import { SelectionParam } from '../../../../bean/BoxSelection'; +import { ChartMode } from '../../../../bean/FrameChartStruct'; +import { FilterData, TabPaneFilter } from '../TabPaneFilter'; +import { procedurePool } from '../../../../database/Procedure'; +import { MerageBean } from '../../../../database/logic-worker/ProcedureLogicWorkerCommon'; +import { showButtonMenu } from '../SheetUtils'; +import { CallTreeLevelStruct } from '../../../../bean/EbpfStruct'; +import '../../../../../base-ui/headline/lit-headline'; +import { LitHeadLine } from '../../../../../base-ui/headline/lit-headline'; const InvertOptionIndex: number = 0; const hideEventOptionIndex: number = 2; @@ -558,6 +558,8 @@ export class TabPaneCallTree extends BaseElement { this.switchFlameChart(callTreeFilterData); }); } else { + this.callTreeTbl!.setStatus(this.callTreeDataSource, true); + this.setLTableData(this.callTreeDataSource); this.switchFlameChart(callTreeFilterData); } }); diff --git a/ide/src/trace/component/trace/sheet/file-system/TabPaneFileSystemCalltree.ts b/ide/src/trace/component/trace/sheet/file-system/TabPaneFileSystemCalltree.ts index b47dcc8c28dc2fea0683a6cc6c41ac45d6ae4937..767267fd6eda15b5c1d43fe6cdfb173d76239351 100644 --- a/ide/src/trace/component/trace/sheet/file-system/TabPaneFileSystemCalltree.ts +++ b/ide/src/trace/component/trace/sheet/file-system/TabPaneFileSystemCalltree.ts @@ -13,21 +13,21 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { LitProgressBar } from '../../../../../base-ui/progress-bar/LitProgressBar.js'; -import { FrameChart } from '../../../chart/FrameChart.js'; -import '../../../chart/FrameChart.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; -import { ChartMode } from '../../../../bean/FrameChartStruct.js'; -import { FilterData, TabPaneFilter } from '../TabPaneFilter.js'; -import '../TabPaneFilter.js'; -import { procedurePool } from '../../../../database/Procedure.js'; -import { FileMerageBean } from '../../../../database/logic-worker/ProcedureLogicWorkerFileSystem.js'; -import { showButtonMenu } from '../SheetUtils.js'; -import { CallTreeLevelStruct } from '../../../../bean/EbpfStruct.js'; -import '../../../../../base-ui/headline/lit-headline.js'; -import { LitHeadLine } from '../../../../../base-ui/headline/lit-headline.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { LitProgressBar } from '../../../../../base-ui/progress-bar/LitProgressBar'; +import { FrameChart } from '../../../chart/FrameChart'; +import '../../../chart/FrameChart'; +import { SelectionParam } from '../../../../bean/BoxSelection'; +import { ChartMode } from '../../../../bean/FrameChartStruct'; +import { FilterData, TabPaneFilter } from '../TabPaneFilter'; +import '../TabPaneFilter'; +import { procedurePool } from '../../../../database/Procedure'; +import { FileMerageBean } from '../../../../database/logic-worker/ProcedureLogicWorkerFileSystem'; +import { showButtonMenu } from '../SheetUtils'; +import { CallTreeLevelStruct } from '../../../../bean/EbpfStruct'; +import '../../../../../base-ui/headline/lit-headline'; +import { LitHeadLine } from '../../../../../base-ui/headline/lit-headline'; const InvertOptionIndex: number = 0; const hideEventOptionIndex: number = 2; @@ -506,6 +506,8 @@ export class TabpaneFilesystemCalltree extends BaseElement { this.switchFlameChart(data); }); } else { + this.fsCallTreeTbl!.setStatus(this.fsCallTreeDataSource, true); + this.setLTableData(this.fsCallTreeDataSource); this.switchFlameChart(data); } }); diff --git a/ide/src/trace/component/trace/sheet/file-system/TabPaneFileSystemDescHistory.ts b/ide/src/trace/component/trace/sheet/file-system/TabPaneFileSystemDescHistory.ts index ef08cf519eac3b4f42a1dafb1a321ea6e360425d..f6344b2153cd15db79ce8ada578116f571e4466e 100644 --- a/ide/src/trace/component/trace/sheet/file-system/TabPaneFileSystemDescHistory.ts +++ b/ide/src/trace/component/trace/sheet/file-system/TabPaneFileSystemDescHistory.ts @@ -13,14 +13,14 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; -import '../../../../../base-ui/slicer/lit-slicer.js'; -import { LitProgressBar } from '../../../../../base-ui/progress-bar/LitProgressBar.js'; -import { FilterData, TabPaneFilter } from '../TabPaneFilter.js'; -import { FileSysEvent } from '../../../../database/logic-worker/ProcedureLogicWorkerFileSystem.js'; -import { procedurePool } from '../../../../database/Procedure.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { SelectionParam } from '../../../../bean/BoxSelection'; +import '../../../../../base-ui/slicer/lit-slicer'; +import { LitProgressBar } from '../../../../../base-ui/progress-bar/LitProgressBar'; +import { FilterData, TabPaneFilter } from '../TabPaneFilter'; +import { FileSysEvent } from '../../../../database/logic-worker/ProcedureLogicWorkerFileSystem'; +import { procedurePool } from '../../../../database/Procedure'; @element('tabpane-filesystem-desc-history') export class TabPaneFileSystemDescHistory extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/file-system/TabPaneFileSystemDescTimeSlice.ts b/ide/src/trace/component/trace/sheet/file-system/TabPaneFileSystemDescTimeSlice.ts index f54abc99d2f42f1554639fdafa038abe15f13bbb..f20b095c91988f652b528f4d2da067d2b9c42304 100644 --- a/ide/src/trace/component/trace/sheet/file-system/TabPaneFileSystemDescTimeSlice.ts +++ b/ide/src/trace/component/trace/sheet/file-system/TabPaneFileSystemDescTimeSlice.ts @@ -13,13 +13,13 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; -import '../../../../../base-ui/slicer/lit-slicer.js'; -import { LitProgressBar } from '../../../../../base-ui/progress-bar/LitProgressBar.js'; -import { FileSysEvent } from '../../../../database/logic-worker/ProcedureLogicWorkerFileSystem.js'; -import { procedurePool } from '../../../../database/Procedure.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { SelectionParam } from '../../../../bean/BoxSelection'; +import '../../../../../base-ui/slicer/lit-slicer'; +import { LitProgressBar } from '../../../../../base-ui/progress-bar/LitProgressBar'; +import { FileSysEvent } from '../../../../database/logic-worker/ProcedureLogicWorkerFileSystem'; +import { procedurePool } from '../../../../database/Procedure'; @element('tabpane-filesystem-desc-time-slice') export class TabPaneFileSystemDescTimeSlice extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/file-system/TabPaneFileSystemEvents.ts b/ide/src/trace/component/trace/sheet/file-system/TabPaneFileSystemEvents.ts index 44460346c88bc4798e6427221aa6811b5d3c4ec4..a42f941850ec7d3612c2b3beb2d8a803a2f2ec7a 100644 --- a/ide/src/trace/component/trace/sheet/file-system/TabPaneFileSystemEvents.ts +++ b/ide/src/trace/component/trace/sheet/file-system/TabPaneFileSystemEvents.ts @@ -13,15 +13,15 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; -import '../../../../../base-ui/slicer/lit-slicer.js'; -import { LitProgressBar } from '../../../../../base-ui/progress-bar/LitProgressBar.js'; -import { procedurePool } from '../../../../database/Procedure.js'; -import { FileSysEvent } from '../../../../database/logic-worker/ProcedureLogicWorkerFileSystem.js'; -import { FilterData, TabPaneFilter } from '../TabPaneFilter.js'; -import '../TabPaneFilter.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { SelectionParam } from '../../../../bean/BoxSelection'; +import '../../../../../base-ui/slicer/lit-slicer'; +import { LitProgressBar } from '../../../../../base-ui/progress-bar/LitProgressBar'; +import { procedurePool } from '../../../../database/Procedure'; +import { FileSysEvent } from '../../../../database/logic-worker/ProcedureLogicWorkerFileSystem'; +import { FilterData, TabPaneFilter } from '../TabPaneFilter'; +import '../TabPaneFilter'; @element('tabpane-filesystem-event') export class TabPaneFileSystemEvents extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/file-system/TabPaneFilesystemStatistics.ts b/ide/src/trace/component/trace/sheet/file-system/TabPaneFilesystemStatistics.ts index eddd56dd2de562ff89221da481d217dab34975ef..2ae7372ad7e5359f77a683400b00c7a2e0019252 100644 --- a/ide/src/trace/component/trace/sheet/file-system/TabPaneFilesystemStatistics.ts +++ b/ide/src/trace/component/trace/sheet/file-system/TabPaneFilesystemStatistics.ts @@ -13,12 +13,12 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; -import { getTabPaneFilesystemStatistics } from '../../../../database/SqlLite.js'; -import { Utils } from '../../base/Utils.js'; -import { LitProgressBar } from '../../../../../base-ui/progress-bar/LitProgressBar.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { SelectionParam } from '../../../../bean/BoxSelection'; +import { getTabPaneFilesystemStatistics } from '../../../../database/SqlLite'; +import { Utils } from '../../base/Utils'; +import { LitProgressBar } from '../../../../../base-ui/progress-bar/LitProgressBar'; @element('tabpane-file-statistics') export class TabPaneFileStatistics extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/file-system/TabPaneFilesystemStatisticsAnalysis.ts b/ide/src/trace/component/trace/sheet/file-system/TabPaneFilesystemStatisticsAnalysis.ts index 677b27a3f9a2cc0a7f565b3603f698f18e4713a6..283ec7acc1f34742e59896ca5e707eb5586d2270 100644 --- a/ide/src/trace/component/trace/sheet/file-system/TabPaneFilesystemStatisticsAnalysis.ts +++ b/ide/src/trace/component/trace/sheet/file-system/TabPaneFilesystemStatisticsAnalysis.ts @@ -13,18 +13,18 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { LitChartPie } from '../../../../../base-ui/chart/pie/LitChartPie.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; -import '../../../../../base-ui/chart/pie/LitChartPie.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { LitChartPie } from '../../../../../base-ui/chart/pie/LitChartPie'; +import { SelectionParam } from '../../../../bean/BoxSelection'; +import '../../../../../base-ui/chart/pie/LitChartPie'; import { LitProgressBar } from '../../../../../base-ui/progress-bar/LitProgressBar'; -import { Utils } from '../../base/Utils.js'; -import { procedurePool } from '../../../../database/Procedure.js'; -import { LitCheckBox } from '../../../../../base-ui/checkbox/LitCheckBox.js'; -import { TabPaneFilter } from '../TabPaneFilter.js'; -import { initSort } from '../SheetUtils.js'; -import { TabpaneFilesystemCalltree } from './TabPaneFileSystemCalltree.js'; +import { Utils } from '../../base/Utils'; +import { procedurePool } from '../../../../database/Procedure'; +import { LitCheckBox } from '../../../../../base-ui/checkbox/LitCheckBox'; +import { TabPaneFilter } from '../TabPaneFilter'; +import { initSort } from '../SheetUtils'; +import { TabpaneFilesystemCalltree } from './TabPaneFileSystemCalltree'; @element('tabpane-file-statistics-analysis') export class TabPaneFilesystemStatisticsAnalysis extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/file-system/TabPaneIOCallTree.ts b/ide/src/trace/component/trace/sheet/file-system/TabPaneIOCallTree.ts index 9cf8310707f26be85ff07eedcea4d62c855af538..92a1ecc1618ac1f0b039b0f105e6b9c6abf46407 100644 --- a/ide/src/trace/component/trace/sheet/file-system/TabPaneIOCallTree.ts +++ b/ide/src/trace/component/trace/sheet/file-system/TabPaneIOCallTree.ts @@ -13,9 +13,9 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import './TabPaneCallTree.js'; -import { TabPaneCallTree } from './TabPaneCallTree.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import './TabPaneCallTree'; +import { TabPaneCallTree } from './TabPaneCallTree'; @element('tabpane-io-calltree') export class TabPaneIOCallTree extends TabPaneCallTree { diff --git a/ide/src/trace/component/trace/sheet/file-system/TabPaneIOTierStatistics.ts b/ide/src/trace/component/trace/sheet/file-system/TabPaneIOTierStatistics.ts index 6562632a1d4230db44e2bfa4897232b8ca6bfa77..d155ae4c6b211dfde3e6e08a8a6ed0504bf756ff 100644 --- a/ide/src/trace/component/trace/sheet/file-system/TabPaneIOTierStatistics.ts +++ b/ide/src/trace/component/trace/sheet/file-system/TabPaneIOTierStatistics.ts @@ -13,14 +13,14 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; -import { getTabPaneIOTierStatisticsData } from '../../../../database/SqlLite.js'; -import { Utils } from '../../base/Utils.js'; -import { LitProgressBar } from '../../../../../base-ui/progress-bar/LitProgressBar.js'; -import { TabPaneFilter } from '../TabPaneFilter.js'; -import { SpSystemTrace } from '../../../SpSystemTrace.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { SelectionParam } from '../../../../bean/BoxSelection'; +import { getTabPaneIOTierStatisticsData } from '../../../../database/SqlLite'; +import { Utils } from '../../base/Utils'; +import { LitProgressBar } from '../../../../../base-ui/progress-bar/LitProgressBar'; +import { TabPaneFilter } from '../TabPaneFilter'; +import { SpSystemTrace } from '../../../SpSystemTrace'; @element('tabpane-io-tier-statistics') export class TabPaneIOTierStatistics extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/file-system/TabPaneIOTierStatisticsAnalysis.ts b/ide/src/trace/component/trace/sheet/file-system/TabPaneIOTierStatisticsAnalysis.ts index 0fb0b6ebaa94f989fe1bc3a68d36507a50a71b02..7521c71c6f1124c76782f6f013c007099278c331 100644 --- a/ide/src/trace/component/trace/sheet/file-system/TabPaneIOTierStatisticsAnalysis.ts +++ b/ide/src/trace/component/trace/sheet/file-system/TabPaneIOTierStatisticsAnalysis.ts @@ -13,18 +13,18 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { LitChartPie } from '../../../../../base-ui/chart/pie/LitChartPie.js'; -import '../../../../../base-ui/chart/pie/LitChartPie.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { LitChartPie } from '../../../../../base-ui/chart/pie/LitChartPie'; +import '../../../../../base-ui/chart/pie/LitChartPie'; +import { SelectionParam } from '../../../../bean/BoxSelection'; import { LitProgressBar } from '../../../../../base-ui/progress-bar/LitProgressBar'; -import { Utils } from '../../base/Utils.js'; -import { procedurePool } from '../../../../database/Procedure.js'; -import { LitCheckBox } from '../../../../../base-ui/checkbox/LitCheckBox.js'; -import { TabPaneFilter } from '../TabPaneFilter.js'; -import { initSort } from '../SheetUtils.js'; -import { TabPaneIOCallTree } from './TabPaneIOCallTree.js'; +import { Utils } from '../../base/Utils'; +import { procedurePool } from '../../../../database/Procedure'; +import { LitCheckBox } from '../../../../../base-ui/checkbox/LitCheckBox'; +import { TabPaneFilter } from '../TabPaneFilter'; +import { initSort } from '../SheetUtils'; +import { TabPaneIOCallTree } from './TabPaneIOCallTree'; @element('tabpane-tb-vm-statistics') export class TabPaneIOTierStatisticsAnalysis extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/file-system/TabPaneIoCompletionTimes.ts b/ide/src/trace/component/trace/sheet/file-system/TabPaneIoCompletionTimes.ts index 0acaca49bd3a306b886c23215eb4d8d1bc39e530..57fa58e7aad3cc2b8590e141af343f80eee42492 100644 --- a/ide/src/trace/component/trace/sheet/file-system/TabPaneIoCompletionTimes.ts +++ b/ide/src/trace/component/trace/sheet/file-system/TabPaneIoCompletionTimes.ts @@ -13,19 +13,19 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; -import '../../../../../base-ui/slicer/lit-slicer.js'; -import { LitProgressBar } from '../../../../../base-ui/progress-bar/LitProgressBar.js'; -import { procedurePool } from '../../../../database/Procedure.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { SelectionParam } from '../../../../bean/BoxSelection'; +import '../../../../../base-ui/slicer/lit-slicer'; +import { LitProgressBar } from '../../../../../base-ui/progress-bar/LitProgressBar'; +import { procedurePool } from '../../../../database/Procedure'; import { FileSysEvent, IoCompletionTimes, VM_TYPE_MAP, -} from '../../../../database/logic-worker/ProcedureLogicWorkerFileSystem.js'; -import { FilterData, TabPaneFilter } from '../TabPaneFilter.js'; -import { getTabIoCompletionTimesType } from '../../../../database/SqlLite.js'; +} from '../../../../database/logic-worker/ProcedureLogicWorkerFileSystem'; +import { FilterData, TabPaneFilter } from '../TabPaneFilter'; +import { getTabIoCompletionTimesType } from '../../../../database/SqlLite'; @element('tabpane-io-completiontimes') export class TabPaneIoCompletionTimes extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/file-system/TabPaneVMEvents.ts b/ide/src/trace/component/trace/sheet/file-system/TabPaneVMEvents.ts index 18da8baa61ca9c43c3ff2c3fd39d9a403b635cda..af97a433f048d7c03ef9cfd6d27501598ceb12b4 100644 --- a/ide/src/trace/component/trace/sheet/file-system/TabPaneVMEvents.ts +++ b/ide/src/trace/component/trace/sheet/file-system/TabPaneVMEvents.ts @@ -13,15 +13,15 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; -import '../../../../../base-ui/slicer/lit-slicer.js'; -import { LitProgressBar } from '../../../../../base-ui/progress-bar/LitProgressBar.js'; -import { procedurePool } from '../../../../database/Procedure.js'; -import { VirtualMemoryEvent, VM_TYPE_MAP } from '../../../../database/logic-worker/ProcedureLogicWorkerFileSystem.js'; -import { FilterData, TabPaneFilter } from '../TabPaneFilter.js'; -import { getTabVirtualMemoryType } from '../../../../database/SqlLite.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { SelectionParam } from '../../../../bean/BoxSelection'; +import '../../../../../base-ui/slicer/lit-slicer'; +import { LitProgressBar } from '../../../../../base-ui/progress-bar/LitProgressBar'; +import { procedurePool } from '../../../../database/Procedure'; +import { VirtualMemoryEvent, VM_TYPE_MAP } from '../../../../database/logic-worker/ProcedureLogicWorkerFileSystem'; +import { FilterData, TabPaneFilter } from '../TabPaneFilter'; +import { getTabVirtualMemoryType } from '../../../../database/SqlLite'; @element('tabpane-virtualmemory-event') export class TabPaneVirtualMemoryEvents extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/file-system/TabPaneVirtualMemoryStatistics.ts b/ide/src/trace/component/trace/sheet/file-system/TabPaneVirtualMemoryStatistics.ts index 1441162613d3c5dd89fe195d14cfdd8b88893058..943c7961f4ded9749cf10fc87be2658172150ca4 100644 --- a/ide/src/trace/component/trace/sheet/file-system/TabPaneVirtualMemoryStatistics.ts +++ b/ide/src/trace/component/trace/sheet/file-system/TabPaneVirtualMemoryStatistics.ts @@ -13,15 +13,15 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; -import { getTabPaneVirtualMemoryStatisticsData } from '../../../../database/SqlLite.js'; -import { Utils } from '../../base/Utils.js'; -import { LitProgressBar } from '../../../../../base-ui/progress-bar/LitProgressBar.js'; -import { TabPaneFilter } from '../TabPaneFilter.js'; -import '../TabPaneFilter.js'; -import { VM_TYPE_MAP } from '../../../../database/logic-worker/ProcedureLogicWorkerFileSystem.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { SelectionParam } from '../../../../bean/BoxSelection'; +import { getTabPaneVirtualMemoryStatisticsData } from '../../../../database/SqlLite'; +import { Utils } from '../../base/Utils'; +import { LitProgressBar } from '../../../../../base-ui/progress-bar/LitProgressBar'; +import { TabPaneFilter } from '../TabPaneFilter'; +import '../TabPaneFilter'; +import { VM_TYPE_MAP } from '../../../../database/logic-worker/ProcedureLogicWorkerFileSystem'; @element('tabpane-virtual-memory-statistics') export class TabPaneVirtualMemoryStatistics extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/file-system/TabPaneVirtualMemoryStatisticsAnalysis.ts b/ide/src/trace/component/trace/sheet/file-system/TabPaneVirtualMemoryStatisticsAnalysis.ts index db1c388194e9222f274bce483264fe5eb12993f7..3679a3f57db698ee16849bb09705d7d2a02d1297 100644 --- a/ide/src/trace/component/trace/sheet/file-system/TabPaneVirtualMemoryStatisticsAnalysis.ts +++ b/ide/src/trace/component/trace/sheet/file-system/TabPaneVirtualMemoryStatisticsAnalysis.ts @@ -13,18 +13,18 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; -import { LitChartPie } from '../../../../../base-ui/chart/pie/LitChartPie.js'; -import '../../../../../base-ui/chart/pie/LitChartPie.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { SelectionParam } from '../../../../bean/BoxSelection'; +import { LitChartPie } from '../../../../../base-ui/chart/pie/LitChartPie'; +import '../../../../../base-ui/chart/pie/LitChartPie'; import { LitProgressBar } from '../../../../../base-ui/progress-bar/LitProgressBar'; -import { Utils } from '../../base/Utils.js'; -import { procedurePool } from '../../../../database/Procedure.js'; -import { LitCheckBox } from '../../../../../base-ui/checkbox/LitCheckBox.js'; -import { TabPaneFilter } from '../TabPaneFilter.js'; -import { initSort } from '../SheetUtils.js'; -import { TabPaneVMCallTree } from './TabPaneIOCallTree.js'; +import { Utils } from '../../base/Utils'; +import { procedurePool } from '../../../../database/Procedure'; +import { LitCheckBox } from '../../../../../base-ui/checkbox/LitCheckBox'; +import { TabPaneFilter } from '../TabPaneFilter'; +import { initSort } from '../SheetUtils'; +import { TabPaneVMCallTree } from './TabPaneIOCallTree'; @element('tabpane-virtual-memory-statistics-analysis') export class TabPaneVirtualMemoryStatisticsAnalysis extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/fps/TabPaneFps.ts b/ide/src/trace/component/trace/sheet/fps/TabPaneFps.ts index 909a97ad6af43475ef95f8ca4621ee82631ae6bf..c20ea92c015b4d1f065683835233f02dff20287d 100644 --- a/ide/src/trace/component/trace/sheet/fps/TabPaneFps.ts +++ b/ide/src/trace/component/trace/sheet/fps/TabPaneFps.ts @@ -13,13 +13,13 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; -import { getTabFps } from '../../../../database/SqlLite.js'; -import { Utils } from '../../base/Utils.js'; -import { log } from '../../../../../log/Log.js'; -import { resizeObserver } from '../SheetUtils.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { SelectionParam } from '../../../../bean/BoxSelection'; +import { getTabFps } from '../../../../database/SqlLite'; +import { Utils } from '../../base/Utils'; +import { log } from '../../../../../log/Log'; +import { resizeObserver } from '../SheetUtils'; @element('tabpane-fps') export class TabPaneFps extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/frame/TabFrameSpacing.ts b/ide/src/trace/component/trace/sheet/frame/TabFrameSpacing.ts index bce670668c08946a96dae88adae226b8c46e092b..a81ea2165d4902b764a7339cf0c16f07bfa28fc6 100644 --- a/ide/src/trace/component/trace/sheet/frame/TabFrameSpacing.ts +++ b/ide/src/trace/component/trace/sheet/frame/TabFrameSpacing.ts @@ -13,12 +13,12 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { FrameSpacingStruct } from '../../../../database/ui-worker/ProcedureWorkerFrameSpacing.js'; -import { type SelectionParam } from '../../../../bean/BoxSelection.js'; -import { type LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { resizeObserver } from '../SheetUtils.js'; -import { Utils } from '../../base/Utils.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { FrameSpacingStruct } from '../../../../database/ui-worker/ProcedureWorkerFrameSpacing'; +import { type SelectionParam } from '../../../../bean/BoxSelection'; +import { type LitTable } from '../../../../../base-ui/table/lit-table'; +import { resizeObserver } from '../SheetUtils'; +import { Utils } from '../../base/Utils'; @element('tabpane-frames-spacing') export class TabFrameSpacing extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/frame/TabPaneFrameDynamic.ts b/ide/src/trace/component/trace/sheet/frame/TabPaneFrameDynamic.ts index c0464dcbc2c647a424ad8e65c5f604635f4668cd..0d869989d6b33d86ca02b9529c4813cf4dd93f60 100644 --- a/ide/src/trace/component/trace/sheet/frame/TabPaneFrameDynamic.ts +++ b/ide/src/trace/component/trace/sheet/frame/TabPaneFrameDynamic.ts @@ -13,13 +13,13 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { type SelectionParam } from '../../../../bean/BoxSelection.js'; -import { type LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { resizeObserver } from '../SheetUtils.js'; -import { type FrameDynamicStruct } from '../../../../database/ui-worker/ProcedureWorkerFrameDynamic.js'; -import { type FrameAnimationSelect } from '../../../../bean/FrameComponentBean.js'; -import { Utils } from '../../base/Utils.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { type SelectionParam } from '../../../../bean/BoxSelection'; +import { type LitTable } from '../../../../../base-ui/table/lit-table'; +import { resizeObserver } from '../SheetUtils'; +import { type FrameDynamicStruct } from '../../../../database/ui-worker/ProcedureWorkerFrameDynamic'; +import { type FrameAnimationSelect } from '../../../../bean/FrameComponentBean'; +import { Utils } from '../../base/Utils'; @element('tabpane-frame-dynamic') export class TabPaneFrameDynamic extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/freq/TabPaneCpuFreqLimits.ts b/ide/src/trace/component/trace/sheet/freq/TabPaneCpuFreqLimits.ts index 26b893b49a22a8f5efa8ba4aca60ec70b09ed642..0f28cfa1500f0fb073cf1e41d204e2019178c0c1 100644 --- a/ide/src/trace/component/trace/sheet/freq/TabPaneCpuFreqLimits.ts +++ b/ide/src/trace/component/trace/sheet/freq/TabPaneCpuFreqLimits.ts @@ -13,13 +13,13 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; -import { Utils } from '../../base/Utils.js'; -import { ColorUtils } from '../../base/ColorUtils.js'; -import { CpuFreqLimitsStruct } from '../../../../database/ui-worker/ProcedureWorkerCpuFreqLimits.js'; -import { resizeObserver } from '../SheetUtils.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { SelectionParam } from '../../../../bean/BoxSelection'; +import { Utils } from '../../base/Utils'; +import { ColorUtils } from '../../base/ColorUtils'; +import { CpuFreqLimitsStruct } from '../../../../database/ui-worker/ProcedureWorkerCpuFreqLimits'; +import { resizeObserver } from '../SheetUtils'; @element('tabpane-cpu-freq-limits') export class TabPaneCpuFreqLimits extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/freq/TabPaneFreq.ts b/ide/src/trace/component/trace/sheet/freq/TabPaneFreq.ts index d5d97ffe790ce7df4ea9df3edc3d5cd0cd770f04..c737a40e18ac1b8a9d138afe6bf7c8bfc2f7f8d4 100644 --- a/ide/src/trace/component/trace/sheet/freq/TabPaneFreq.ts +++ b/ide/src/trace/component/trace/sheet/freq/TabPaneFreq.ts @@ -13,11 +13,11 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { ColorUtils } from '../../base/ColorUtils.js'; -import { Utils } from '../../base/Utils.js'; -import { resizeObserver } from '../SheetUtils.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { ColorUtils } from '../../base/ColorUtils'; +import { Utils } from '../../base/Utils'; +import { resizeObserver } from '../SheetUtils'; @element('tabpane-freq') export class TabPaneFreq extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/freq/TabPaneFreqLimit.ts b/ide/src/trace/component/trace/sheet/freq/TabPaneFreqLimit.ts index 0c96423c1befd016b88e01c94e855c6105683818..23568faa7e87904575113e97aacd2e4bdf3967e3 100644 --- a/ide/src/trace/component/trace/sheet/freq/TabPaneFreqLimit.ts +++ b/ide/src/trace/component/trace/sheet/freq/TabPaneFreqLimit.ts @@ -13,11 +13,11 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { ColorUtils } from '../../base/ColorUtils.js'; -import { Utils } from '../../base/Utils.js'; -import { resizeObserver } from '../SheetUtils.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { ColorUtils } from '../../base/ColorUtils'; +import { Utils } from '../../base/Utils'; +import { resizeObserver } from '../SheetUtils'; @element('tabpane-freq-limit') export class TabPaneFreqLimit extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/frequsage/TabPaneFreqDataCut.ts b/ide/src/trace/component/trace/sheet/frequsage/TabPaneFreqDataCut.ts index 4f2accc5316b5830aa64a1362db397bb47349d2f..a63a2519d29870dd7c1bd9d5d8ed5262e937cbc5 100644 --- a/ide/src/trace/component/trace/sheet/frequsage/TabPaneFreqDataCut.ts +++ b/ide/src/trace/component/trace/sheet/frequsage/TabPaneFreqDataCut.ts @@ -12,797 +12,224 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable, RedrawTreeForm } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionData, SelectionParam } from '../../../../bean/BoxSelection.js'; -import '../../../StackBar.js' -import { getTabRunningPercent, queryCpuFreqUsageData, queryCpuFreqFilterId, querySearchFuncData } from '../../../../database/SqlLite.js'; -import { Utils } from '../../base/Utils.js'; -import { resizeObserver } from '../SheetUtils.js'; -import { SliceGroup } from '../../../../bean/StateProcessThread.js'; -import { LitChartScatter } from '../../../../../base-ui/chart/scatter/LitChartScatter.js'; -import { SegMenTaTion } from "../../../chart/SpSegmentationChart.js"; -import { TabPaneFreqUsageConfig, TabPaneRunningConfig, TabPaneCpuFreqConfig } from "./TabPaneFreqUsageConfig.js"; + +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable, RedrawTreeForm } from '../../../../../base-ui/table/lit-table'; +import { SelectionData, SelectionParam } from '../../../../bean/BoxSelection'; +import '../../../StackBar'; +import { + getTabRunningPercent, + querySearchFuncData, + queryCpuFreqUsageData, + queryCpuFreqFilterId, +} from '../../../../database/SqlLite'; +import { Utils } from '../../base/Utils'; +import { resizeObserver } from '../SheetUtils'; +import { SliceGroup } from '../../../../bean/StateProcessThread'; @element('tabpane-freqdatacut') export class TabPaneFreqDataCut extends BaseElement { - private threadStatesTbl: LitTable | null | undefined; - private threadStatesTblSource: Array = []; - private currentSelectionParam: SelectionParam | any; - private threadStatesDIV: HTMLDivElement | null | undefined; - private scatterInput: HTMLInputElement | null | undefined; - private initData: Map> = new Map(); - private processArr: Array = []; - private threadArr: Array = []; - private statisticsScatter: LitChartScatter | null | undefined; + private threadStatesTbl: LitTable | null | undefined; + private threadStatesTblSource: Array = []; + private currentSelectionParam: SelectionParam | any; + private threadStatesDIV: Element | null | undefined; + private initData: any = new Map(); + private processArr: any = new Array(); + private threadArr: any = new Array(); - set data(threadStatesParam: SelectionParam | any) { - if (this.currentSelectionParam === threadStatesParam) { - return; - } - this.currentSelectionParam = threadStatesParam; - this.initData = new Map(); - this.threadArr = []; - this.initUI(); - this.init(threadStatesParam); - let pidArr: Array = []; - // 整理进程级的数组信息 - let processArr: Array = threadStatesParam.processIds.length > 1 ? [...new Set(threadStatesParam.processIds)] : threadStatesParam.processIds; - for (let i of processArr) { - pidArr.push(new TabPaneFreqUsageConfig(Utils.PROCESS_MAP.get(i) === null ? 'Process ' + i : Utils.PROCESS_MAP.get(i) + ' ' + i, '', i, '', 0, '', '', 0, '', 0, 'process', -1, [])); - } - // 拷贝给私有属性,以便后续进行数据切割时免除整理进程层级数据 - this.processArr = pidArr; - } - /** - * 初始化数据 - */ - async init(threadStatesParam: SelectionParam | any): Promise { - let [runningData, sum]: Array = await this.queryRunningData(threadStatesParam); - let cpuFreqData: Array = await this.queryCpuFreqData(threadStatesParam); - if (runningData.size > 0) { - // 将cpu频点数据与running状态数据整合,保证其上该段时长内有对应的cpu频点数据 - this.mergeFreqData(runningData, cpuFreqData, sum); - this.threadStatesTbl!.loading = false; - } else { - this.threadStatesTblSource = []; - this.threadStatesTbl!.recycleDataSource = []; - this.threadStatesTbl!.loading = false; - } - } - /** - * 重置UI输入框等组件为默认状态 - */ - initUI(): void { - this.threadStatesTblSource = []; - this.threadStatesTbl!.recycleDataSource = []; - this.threadStatesTbl!.loading = true; - let tableValue: any = this.threadStatesTbl; - tableValue.value = []; - let divRoot1: any = this.shadowRoot?.querySelector('#dataCutThreadId'); - divRoot1.value = ''; - divRoot1.style.border = '1px solid rgb(151,151,151)'; - let divRoot2: any = this.shadowRoot?.querySelector('#dataCutThreadFunc'); - divRoot2.value = ''; - divRoot2.style.border = '1px solid rgb(151,151,151)'; - let divRoot3: any = this.shadowRoot?.querySelector('#maxFreq'); - divRoot3.style.border = '1px solid rgb(151,151,151)'; - let divRoot4: any = this.shadowRoot?.querySelector('#maxHz'); - divRoot4.style.border = '1px solid rgb(151,151,151)'; - let divRoot5: any = this.shadowRoot?.querySelector('#cycle-a-start-range'); - divRoot5.value = '' - let divRoot6: any = this.shadowRoot?.querySelector('#cycle-a-end-range'); - divRoot6.value = ''; - let divRoot7: any = this.shadowRoot?.querySelector('#cycle-b-start-range'); - divRoot7.value = ''; - let divRoot8: any = this.shadowRoot?.querySelector('#cycle-b-end-range'); - divRoot8.value = ''; - // @ts-ignore - this.shadowRoot?.querySelector('#cycleQuery')!.style.display = 'none'; - // @ts-ignore - this.statisticsScatter!.config = undefined; + set data(threadStatesParam: SelectionParam | any) { + if (this.currentSelectionParam === threadStatesParam) { + return; } - /** - * 查询cpu频点信息 - */ - async queryCpuFreqData(threadStatesParam: SelectionParam | any): Promise> { + this.currentSelectionParam = threadStatesParam; + this.threadStatesTblSource = []; + this.threadStatesTbl!.recycleDataSource = []; + this.threadStatesTbl!.loading = true; + this.initData = new Map(); + let tableValue: any = this.threadStatesTbl; + tableValue.value = []; + let divRoot1: any = this.shadowRoot?.querySelector('#dataCutThreadId'); + divRoot1.value = ''; + let divRoot2: any = this.shadowRoot?.querySelector('#dataCutThreadFunc'); + divRoot2.value = ''; + // 查询running状态线程数据 + getTabRunningPercent(threadStatesParam.threadIds, threadStatesParam.leftNs, threadStatesParam.rightNs).then( + (result) => { // 查询cpu及id信息 - let result: Array = await queryCpuFreqFilterId(); - // 以键值对形式将cpu及id进行对应,后续会将频点数据与其对应cpu进行整合 - let IdMap: Map = new Map(); - let queryId: Array = []; - for (let i = 0; i < result.length; i++) { - queryId.push(result[i].id); - IdMap.set(result[i].id, result[i].cpu); - } - let dealArr: Array = []; - // 通过id去查询频点数据 - let res: Array = await queryCpuFreqUsageData(queryId); - for (let i of res) { - let obj = new TabPaneCpuFreqConfig(i.startNS + threadStatesParam.recordStartNs, IdMap.get(i.filter_id)!, i.value, i.dur) - dealArr.push(obj); - } - return dealArr; - } - - /** - * 查询框选区域内的所有running状态数据 - */ - async queryRunningData(threadStatesParam: SelectionParam | any): Promise> { - let result: Array = await getTabRunningPercent(threadStatesParam.threadIds, threadStatesParam.leftNs, threadStatesParam.rightNs); - let needDeal: Map> = new Map(), sum: number = 0; - if (result != null && result.length > 0) { - let processArr: Array = threadStatesParam.processIds.length > 1 ? [...new Set(threadStatesParam.processIds)] : threadStatesParam.processIds; - for (let e of result) { - if (processArr.includes(e.pid)) { - if (needDeal.get(e.pid + '_' + e.tid) === undefined) { - this.threadArr.push(new TabPaneFreqUsageConfig(Utils.THREAD_MAP.get(e.tid) + ' ' + e.tid, '', e.pid, e.tid, 0, '', '', 0, '', 0, 'thread', -1, [])); - needDeal.set(e.pid + '_' + e.tid, new Array()); - } - if ((e.ts < (threadStatesParam.leftNs + threadStatesParam.recordStartNs)) && ((e.ts + e.dur) > (threadStatesParam.leftNs + threadStatesParam.recordStartNs))) { - const ts = e.ts; - e.ts = threadStatesParam.leftNs + threadStatesParam.recordStartNs; - e.dur = ts + e.dur - (threadStatesParam.leftNs + threadStatesParam.recordStartNs); - } - if ((e.ts + e.dur) > (threadStatesParam.rightNs + threadStatesParam.recordStartNs)) { - e.dur = threadStatesParam.rightNs + threadStatesParam.recordStartNs - e.ts; - } - let process = Utils.PROCESS_MAP.get(e.pid); - let thread = Utils.THREAD_MAP.get(e.tid); - e.process = process == null || process.length == 0 ? '[NULL]' : process; - e.thread = thread == null || thread.length == 0 ? '[NULL]' : thread; - let arr: any = needDeal.get(e.pid + '_' + e.tid); - sum += e.dur; - arr.push(e); - } - } - } - return [needDeal, sum]; - } - - /** - * 将cpu频点数据与running状态数据整合,保证其上该段时长内有对应的cpu频点数据 - */ - mergeFreqData(needDeal: Map>, dealArr: Array, sum: number): void { - needDeal.forEach((value: Array, key: string) => { - let resultList: Array = []; - for (let i = 0; i < value.length; i++) { - for (let j = 0; j < dealArr.length; j++) { - // 只需要判断running状态数据与频点数据cpu相同的情况 - if (value[i].cpu === dealArr[j].cpu) { - // running状态数据的开始时间大于频点数据开始时间,小于频点结束时间。且running状态数据的持续时间小于频点结束时间减去running状态数据开始时间的情况 - if (value[i].ts > dealArr[j].startNS && value[i].ts < (dealArr[j].startNS + dealArr[j].dur) && value[i].dur < (dealArr[j].startNS + dealArr[j].dur - value[i].ts)) { - resultList.push(new TabPaneFreqUsageConfig(value[i].thread, value[i].ts, value[i].pid, value[i].tid, 0, value[i].cpu, dealArr[j].value, value[i].dur, '', value[i].dur / sum * 100, 'freqdata', -1, undefined)); - break; - } - // running状态数据的开始时间大于频点数据开始时间,小于频点结束时间。且running状态数据的持续时间大于频点结束时间减去running状态数据开始时间的情况 - if (value[i].ts > dealArr[j].startNS && value[i].ts < (dealArr[j].startNS + dealArr[j].dur) && value[i].dur > (dealArr[j].startNS + dealArr[j].dur - value[i].ts)) { - resultList.push(new TabPaneFreqUsageConfig(value[i].thread, value[i].ts, value[i].pid, value[i].tid, 0, value[i].cpu, dealArr[j].value, (dealArr[j].startNS + dealArr[j].dur - value[i].ts), '', (dealArr[j].startNS + dealArr[j].dur - value[i].ts) / sum * 100, 'freqdata', -1, undefined)); - } - // running状态数据的开始时间小于频点数据开始时间,running状态数据的结束时间大于频点数据开始时间。且running状态数据在频点数据开始时间后的持续时间小于频点数据持续时间的情况 - if (value[i].ts < dealArr[j].startNS && (value[i].ts + value[i].dur) > dealArr[j].startNS && (value[i].dur + value[i].ts - dealArr[j].startNS) < dealArr[j].dur) { - resultList.push(new TabPaneFreqUsageConfig(value[i].thread, dealArr[j].startNS, value[i].pid, value[i].tid, 0, value[i].cpu, dealArr[j].value, (value[i].dur + value[i].ts - dealArr[j].startNS), '', (value[i].dur + value[i].ts - dealArr[j].startNS) / sum * 100, 'freqdata', -1, undefined)); - break; - } - // running状态数据的开始时间小于频点数据开始时间,running状态数据的结束时间大于频点数据开始时间。且running状态数据在频点数据开始时间后的持续时间大于频点数据持续时间的情况 - if (value[i].ts < dealArr[j].startNS && (value[i].ts + value[i].dur) > dealArr[j].startNS && (value[i].dur + value[i].ts - dealArr[j].startNS) > dealArr[j].dur) { - resultList.push(new TabPaneFreqUsageConfig(value[i].thread, dealArr[j].startNS, value[i].pid, value[i].tid, 0, value[i].cpu, dealArr[j].value, dealArr[j].dur, '', dealArr[j].dur / sum * 100, 'freqdata', -1, undefined)); - } - // running状态数据的开始时间小于频点数据开始时间,running状态数据的持续时间小于频点数据开始时间的情况 - if (value[i].ts < dealArr[j].startNS && (value[i].ts + value[i].dur) < dealArr[j].startNS) { - resultList.push(new TabPaneFreqUsageConfig(value[i].thread, value[i].ts, value[i].pid, value[i].tid, 0, value[i].cpu, 'unknown', value[i].dur, '', value[i].dur / sum * 100, 'freqdata', -1, undefined)); - break; - } - } - } - } - this.initData.set(key, resultList); - }) - } - /** - * single方式切割数据功能 - */ - dataSingleCut(threadId: HTMLInputElement, threadFunc: HTMLInputElement, resultList: Map>): void { - threadId.style.border = '1px solid rgb(151,151,151)'; - threadFunc.style.border = '1px solid rgb(151,151,151)'; - let threadIdValue = threadId.value.trim(); - let threadFuncName = threadFunc.value.trim(); - let leftNS = this.currentSelectionParam.leftNs; - let rightNS = this.currentSelectionParam.rightNs; - let tableValue: any = this.threadStatesTbl; - tableValue.value = []; - if (threadIdValue != '' && threadFuncName != '') { - // 根据用户输入的线程ID,方法名去查询数据库,得到对应的方法起始时间,持续时间等数据,以便作为依据进行后续数据切割 - querySearchFuncData(threadFuncName, Number(threadIdValue), leftNS, rightNS).then(result => { - if (result != null && result.length > 0) { - // targetMap为全局initData的拷贝对象,dealArr数组用来存放周期切割依据数据 - let targetMap: Map> = new Map(), dealArr: Array = []; - // 新创建map对象接收传过来的实参map - resultList.forEach((item: Array, key: string) => { - targetMap.set(key, JSON.parse(JSON.stringify(item))); - }) - // 整理周期切割依据的数据 - for (let i of result) { - if (i.startTime + this.currentSelectionParam.recordStartNs + i.dur < this.currentSelectionParam.rightNs + this.currentSelectionParam.recordStartNs) { - dealArr.push({ 'ts': i.startTime + this.currentSelectionParam.recordStartNs, 'dur': i.dur }); - } - } - let cycleMap: Map> = new Map(), totalList: Map> = new Map(); - this.mergeSingleData(dealArr, targetMap, cycleMap, totalList); - // 拷贝线程数组,防止数据污染 - let threadArr = JSON.parse(JSON.stringify(this.threadArr)); - // 拷贝进程数组,防止数据污染 - let processArr = JSON.parse(JSON.stringify(this.processArr)); - // 将周期层级防止到线程层级下 - this.mergeThreadData(threadArr, cycleMap); - // 将原始数据放置到对应的线程层级下,周期数据前 - let totalData = this.merge(totalList); - this.mergeTotalData(threadArr, totalData); - // 合并数据到进程层级下 - this.mergePidData(processArr, threadArr); - this.fixedDeal(processArr); - this.threadStatesTblSource = processArr; - this.threadStatesTbl!.recycleDataSource = processArr; - this.threadStatesTbl!.loading = false; - this.threadClick(processArr); - } else { - this.threadStatesTblSource = []; - this.threadStatesTbl!.recycleDataSource = []; - this.threadStatesTbl!.loading = false; - } - }) - } else { - this.threadStatesTbl!.loading = false; - if (threadIdValue == '') { - threadId.style.border = '2px solid rgb(255,0,0)'; - } - if (threadFuncName == '') { - threadFunc.style.border = '2px solid rgb(255,0,0)'; - } - } - } - /** - * 整合Single切割方式中的频点数据与方法周期数据 - */ - mergeSingleData(dealArr: Array, targetMap: Map>, cycleMap: Map>, totalList: Map>): void { - let timeDur = this.currentSelectionParam.recordStartNs; - targetMap.forEach((value, key) => { - cycleMap.set(key, new Array()); - totalList.set(key, new Array()); - for (let i = 0; i < dealArr.length; i++) { - let cpuArr: Array = [], resList: Array = [], cpuMap: Map> = new Map(); - // 时间倍数值 - const countMutiple = 1000000; - cpuMap.set(key, new Array()); - cycleMap.get(key)?.push(new TabPaneFreqUsageConfig('cycle' + (i + 1) + '—' + value[0].thread, ((dealArr[i].ts - timeDur) / 1000000).toFixed(3), key.split('_')[0], key.split('_')[1], 0, '', '', 0, (dealArr[i].dur / 1000000).toFixed(3), 0, 'cycle', i + 1, [])); - for (let j = 0; j < value.length; j++) { - // 判断若用户导入json文件,则替换为对应cpu下的对应频点的算力值进行算力消耗计算 - let consumptionMap: Map = SegMenTaTion.freqInfoMapData.size > 0 && SegMenTaTion.freqInfoMapData.get(value[j].cpu); - // 若存在算力值,则直接取值做计算。若不存在算力值,且频点值不为unknown的情况,则取频点值做计算,若为unknown,则取0做兼容 - const consumption = (consumptionMap && consumptionMap.get(value[j].freq)) ? consumptionMap.get(value[j].freq) : (value[j].freq == 'unknown' ? 0 : value[j].freq); - if (!cpuArr.includes(value[j].cpu)) { - cpuArr.push(value[j].cpu); - cpuMap.get(key)?.push(new TabPaneFreqUsageConfig('cycle' + (i + 1) + '—' + value[j].thread, '', value[j].pid, value[j].tid, 0, value[j].cpu, '', 0, '', 0, 'cpu', -1, [])); - } - // 以下为频点数据按Single周期切割数据如何取舍的判断条件,dealArr为周期切割依据,value为某一线程下的频点汇总数据 - // 如果频点数据开始时间大于某一周期起始时间,小于该周期的结束时间。且频点数据结束时间小于周期结束时间的情况 - if (dealArr[i].ts < value[j].ts && dealArr[i].ts + dealArr[i].dur > value[j].ts && dealArr[i].ts + dealArr[i].dur > value[j].ts + value[j].dur) { - resList.push(new TabPaneFreqUsageConfig('cycle' + (i + 1) + '—' + value[j].thread, '', value[j].pid, value[j].tid, (consumption * value[j].dur) / countMutiple, value[j].cpu, value[j].freq, value[j].dur, '', value[j].percent, 'freqdata', i, undefined)); - totalList.get(key)?.push(new TabPaneFreqUsageConfig(value[j].thread, '', value[j].pid, value[j].tid, (consumption * value[j].dur) / countMutiple, value[j].cpu, value[j].freq, value[j].dur, '', value[j].percent, 'freqdata', i, undefined)); - } - // 如果频点数据开始时间大于某一周期起始时间,小于该周期的结束时间。且频点数据结束时间大于等于周期结束时间的情况 - if (dealArr[i].ts < value[j].ts && dealArr[i].ts + dealArr[i].dur > value[j].ts && dealArr[i].ts + dealArr[i].dur <= value[j].ts + value[j].dur) { - resList.push(new TabPaneFreqUsageConfig('cycle' + (i + 1) + '—' + value[j].thread, '', value[j].pid, value[j].tid, (dealArr[i].ts + dealArr[i].dur - value[j].ts) * consumption / countMutiple, value[j].cpu, value[j].freq, dealArr[i].ts + dealArr[i].dur - value[j].ts, '', (dealArr[i].ts + dealArr[i].dur - value[j].ts) / value[j].dur * value[j].percent, 'freqdata', i, undefined)); - totalList.get(key)?.push(new TabPaneFreqUsageConfig(value[j].thread, '', value[j].pid, value[j].tid, (dealArr[i].ts + dealArr[i].dur - value[j].ts) * consumption / countMutiple, value[j].cpu, value[j].freq, dealArr[i].ts + dealArr[i].dur - value[j].ts, '', (dealArr[i].ts + dealArr[i].dur - value[j].ts) / value[j].dur * value[j].percent, 'freqdata', i, undefined)); - break; - } - // 如果频点数据开始时间小于某一周期起始时间,结束时间大于该周期的开始时间。且频点数据结束时间大于周期结束时间的情况 - if (dealArr[i].ts > value[j].ts && value[j].ts + value[j].dur > dealArr[i].ts && value[j].ts + value[j].dur > dealArr[i].ts + dealArr[i].dur) { - resList.push(new TabPaneFreqUsageConfig('cycle' + (i + 1) + '—' + value[j].thread, '', value[j].pid, value[j].tid, dealArr[i].dur * consumption / countMutiple, value[j].cpu, value[j].freq, dealArr[i].dur, '', dealArr[i].dur / value[j].dur * value[j].percent, 'freqdata', i, undefined)); - totalList.get(key)?.push(new TabPaneFreqUsageConfig(value[j].thread, '', value[j].pid, value[j].tid, dealArr[i].dur * consumption / countMutiple, value[j].cpu, value[j].freq, dealArr[i].dur, '', dealArr[i].dur / value[j].dur * value[j].percent, 'freqdata', i, undefined)); - break; - } - // 如果频点数据开始时间小于某一周期起始时间,结束时间大于该周期的开始时间。且频点数据结束时间小于等于周期结束时间的情况 - if (dealArr[i].ts > value[j].ts && value[j].ts + value[j].dur > dealArr[i].ts && value[j].ts + value[j].dur <= dealArr[i].ts + dealArr[i].dur) { - resList.push(new TabPaneFreqUsageConfig('cycle' + (i + 1) + '—' + value[j].thread, '', value[j].pid, value[j].tid, (value[j].ts + value[j].dur - dealArr[i].ts) * consumption / countMutiple, value[j].cpu, value[j].freq, value[j].ts + value[j].dur - dealArr[i].ts, '', (value[j].ts + value[j].dur - dealArr[i].ts) / value[j].dur * value[j].percent, 'freqdata', i, undefined)); - totalList.get(key)?.push(new TabPaneFreqUsageConfig(value[j].thread, '', value[j].pid, value[j].tid, (value[j].ts + value[j].dur - dealArr[i].ts) * consumption / countMutiple, value[j].cpu, value[j].freq, value[j].ts + value[j].dur - dealArr[i].ts, '', (value[j].ts + value[j].dur - dealArr[i].ts) / value[j].dur * value[j].percent, 'freqdata', i, undefined)); - } - } - this.mergeData(resList); - // 整理排序相同周期下的数据 - this.mergeCpuData(cpuMap.get(key)!, resList); - // 将cpu数据放置到对应周期层级下 - this.mergeCycleData(cycleMap.get(key)![i], cpuMap.get(key)); - } - }); - } - /** - * Loop方式切割数据功能 - */ - dataLoopCut(threadId: HTMLInputElement, threadFunc: HTMLInputElement, resultList: Map>): void { - threadId.style.border = '1px solid rgb(151,151,151)'; - threadFunc.style.border = '1px solid rgb(151,151,151)'; - let threadIdValue = threadId!.value.trim(); - let threadFuncName = threadFunc.value.trim(); - let leftNS = this.currentSelectionParam.leftNs; - let rightNS = this.currentSelectionParam.rightNs; - let tableValue: any = this.threadStatesTbl; - tableValue.value = []; - if (threadIdValue !== '' && threadFuncName !== '') { - querySearchFuncData(threadFuncName, Number(threadIdValue), leftNS, rightNS).then(res => { - if (res !== null && res.length > 0) { - // targetMap为全局initData的拷贝对象,cutArr数组用来存放周期切割依据数据 - let targetMap: Map> = new Map(), cutArr: Array = []; - // 新创建map对象接收传过来的实参map - resultList.forEach((item: Array, key: string) => { - targetMap.set(key, JSON.parse(JSON.stringify(item))); - }) - // 根据线程id及方法名获取的数据,处理后用作切割时间依据,时间跨度为整个方法开始时间到末个方法开始时间 - for (let i of res) { - cutArr[cutArr.length - 1] && (cutArr[cutArr.length - 1].dur = i.startTime ? i.startTime + this.currentSelectionParam.recordStartNs - cutArr[cutArr.length - 1].ts : 0); - cutArr.push({ 'ts': i.startTime + this.currentSelectionParam.recordStartNs }); - } - let cycleMap: Map> = new Map(); - let totalList: Map> = new Map(); - this.mergeLoopData(cutArr, targetMap, cycleMap, totalList); - let threadArr: Array = JSON.parse(JSON.stringify(this.threadArr)); - let processArr: Array = JSON.parse(JSON.stringify(this.processArr)); - this.mergeThreadData(threadArr, cycleMap); - let totalData = this.merge(totalList); - this.mergeTotalData(threadArr, totalData); - this.mergePidData(processArr, threadArr); - this.fixedDeal(processArr); - this.threadStatesTblSource = processArr; - this.threadStatesTbl!.recycleDataSource = processArr; - this.threadStatesTbl!.loading = false; - this.threadClick(processArr); - } else { - this.threadStatesTblSource = []; - this.threadStatesTbl!.recycleDataSource = []; - this.threadStatesTbl!.loading = false; - } - }) - } else { - this.threadStatesTbl!.loading = false; - if (threadIdValue === '') { - threadId.style.border = '2px solid rgb(255,0,0)'; - } - if (threadFuncName === '') { - threadFunc.style.border = '2px solid rgb(255,0,0)'; - } - } - } - /** - * 整合Loop切割方式中的频点数据与方法周期数据 - */ - mergeLoopData(cutArr: Array, targetMap: Map>, cycleMap: Map>, totalList: Map>): void { - let timeDur: number = this.currentSelectionParam.recordStartNs; - targetMap.forEach((value, key) => { - cycleMap.set(key, new Array()); - totalList.set(key, new Array()); - for (let i = 0; i < cutArr.length - 1; i++) { - let cpuArr: Array = [], resList: Array = [], cpuMap: Map> = new Map(); - // 时间倍数值 - const countMutiple = 1000000; - cpuMap.set(key, new Array()); - // 创建周期层级数据 - cycleMap.get(key)?.push(new TabPaneFreqUsageConfig('cycle' + (i + 1) + '—' + value[0].thread, ((cutArr[i].ts - timeDur) / 1000000).toFixed(3), key.split('_')[0], key.split('_')[1], 0, '', '', 0, (cutArr[i].dur / 1000000).toFixed(3), 0, 'cycle', i + 1, [])); - for (let j = 0; j < value.length; j++) { - // 判断若用户导入json文件,则替换为对应cpu下的对应频点的算力值进行算力消耗计算 - let consumptionMap: Map = SegMenTaTion.freqInfoMapData.size > 0 && SegMenTaTion.freqInfoMapData.get(value[j].cpu); - // 若存在算力值,则直接取值做计算。若不存在算力值,且频点值不为unknown的情况,则取频点值做计算,若为unknown,则取0做兼容 - const consumption = (consumptionMap && consumptionMap.get(value[j].freq)) ? consumptionMap.get(value[j].freq) : (value[j].freq == 'unknown' ? 0 : value[j].freq); - if (!cpuArr.includes(value[j].cpu)) { - cpuArr.push(value[j].cpu); - // 创建cpu层级数据,以便后续生成树结构 - cpuMap.get(key)?.push(new TabPaneFreqUsageConfig('cycle' + (i + 1) + '—' + value[j].thread, '', value[j].pid, value[j].tid, 0, value[j].cpu, '', 0, '', 0, 'cpu', -1, [])); - } - // 以下为频点数据按Loop周期切割数据如何取舍的判断条件,cutArr为周期切割依据,value为某一线程下的频点汇总数据 - // 如果频点数据开始时间大于某一周期起始时间,且结束时间小于等于下一同名方法开始时间的情况 - if (value[j].ts >= cutArr[i].ts && (value[j].ts + value[j].dur) <= cutArr[i + 1].ts) { - resList.push(new TabPaneFreqUsageConfig('cycle' + (i + 1) + '—' + value[j].thread, '', value[j].pid, value[j].tid, (consumption * value[j].dur) / countMutiple, value[j].cpu, value[j].freq, value[j].dur, '', value[j].percent, 'freqdata', i, undefined)); - totalList.get(key)?.push(new TabPaneFreqUsageConfig(value[j].thread, '', value[j].pid, value[j].tid, (consumption * value[j].dur) / countMutiple, value[j].cpu, value[j].freq, value[j].dur, '', value[j].percent, 'freqdata', i, undefined)); - } - // 如果频点数据开始时间大于某一周期起始时间,且结束时间大于下一同名方法开始时间的情况 - if (value[j].ts >= cutArr[i].ts && (value[j].ts + value[j].dur) > cutArr[i + 1].ts) { - if (cutArr[i + 1].ts - value[j].ts > 0) { - resList.push(new TabPaneFreqUsageConfig('cycle' + (i + 1) + '—' + value[j].thread, '', value[j].pid, value[j].tid, (consumption * (cutArr[i + 1].ts - value[j].ts)) / countMutiple, value[j].cpu, value[j].freq, cutArr[i + 1].ts - value[j].ts, '', value[j].percent * ((cutArr[i + 1].ts - value[j].ts) / value[j].dur), 'freqdata', i, undefined)); - totalList.get(key)?.push(new TabPaneFreqUsageConfig(value[j].thread, '', value[j].pid, value[j].tid, (consumption * (cutArr[i + 1].ts - value[j].ts)) / countMutiple, value[j].cpu, value[j].freq, cutArr[i + 1].ts - value[j].ts, '', value[j].percent * ((cutArr[i + 1].ts - value[j].ts) / value[j].dur), 'freqdata', i, undefined)); - break; - } - } - // 如果频点数据开始时间小于某一周期起始时间,且结束时间大于下一同名方法开始时间的情况 - if (value[j].ts < cutArr[i].ts && (value[j].ts + value[j].dur) > cutArr[i + 1].ts) { - resList.push(new TabPaneFreqUsageConfig('cycle' + (i + 1) + '—' + value[j].thread, '', value[j].pid, value[j].tid, (consumption * (cutArr[i + 1].ts - cutArr[i].ts)) / countMutiple, value[j].cpu, value[j].freq, cutArr[i + 1].ts - cutArr[i].ts, '', value[j].percent * ((cutArr[i + 1].ts - cutArr[i].ts) / value[j].dur), 'freqdata', i, undefined)); - totalList.get(key)?.push(new TabPaneFreqUsageConfig(value[j].thread, '', value[j].pid, value[j].tid, (consumption * (cutArr[i + 1].ts - cutArr[i].ts)) / countMutiple, value[j].cpu, value[j].freq, cutArr[i + 1].ts - cutArr[i].ts, '', value[j].percent * ((cutArr[i + 1].ts - cutArr[i].ts) / value[j].dur), 'freqdata', i, undefined)); - } - // 如果频点数据开始时间小于某一周期起始时间,结束时间大于该方法开始时间。且频点数据结束时间小于下一同名方法开始时间 - if (value[j].ts < cutArr[i].ts && (value[j].ts + value[j].dur) > cutArr[i].ts && (value[j].ts + value[j].dur) < cutArr[i + 1].ts) { - resList.push(new TabPaneFreqUsageConfig('cycle' + (i + 1) + '—' + value[j].thread, '', value[j].pid, value[j].tid, (consumption * (value[j].dur + value[j].ts - cutArr[i].ts)) / countMutiple, value[j].cpu, value[j].freq, value[j].dur + value[j].ts - cutArr[i].ts, '', value[j].percent * ((value[j].dur + value[j].ts - cutArr[i].ts) / value[j].dur), 'freqdata', i, undefined)); - totalList.get(key)?.push(new TabPaneFreqUsageConfig(value[j].thread, '', value[j].pid, value[j].tid, (consumption * (value[j].dur + value[j].ts - cutArr[i].ts)) / countMutiple, value[j].cpu, value[j].freq, value[j].dur + value[j].ts - cutArr[i].ts, '', value[j].percent * ((value[j].dur + value[j].ts - cutArr[i].ts) / value[j].dur), 'freqdata', i, undefined)); - } + queryCpuFreqFilterId().then((r) => { + // 以键值对形式将cpu及id进行对应,后续会将频点数据与其对应cpu进行整合 + let IdMap = new Map(); + let queryId = new Array(); + for (let i = 0; i < r.length; i++) { + queryId.push(r[i].id); + IdMap.set(r[i].id, r[i].cpu); + } + // 通过id去查询频点数据 + queryCpuFreqUsageData(queryId).then((res) => { + if (result != null && result.length > 0) { + let sum = 0; + let dealArr = new Array(); + for (let i of res) { + dealArr.push({ + startNS: i.startNS + threadStatesParam.recordStartNs, + dur: i.dur, + value: i.value, + cpu: IdMap.get(i.filter_id), + }); + } + let needDeal = new Map(); + let pidArr = new Array(); + let threadArr = new Array(); + // 整理进程级的数组信息 + let processArr: any = + threadStatesParam.processIds.length > 1 + ? [...new Set(threadStatesParam.processIds)] + : threadStatesParam.processIds; + for (let i of processArr) { + pidArr.push({ + process: Utils.PROCESS_MAP.get(i) == null ? 'Process ' + i : Utils.PROCESS_MAP.get(i) + ' ' + i, + thread: Utils.PROCESS_MAP.get(i) == null ? 'Process ' + i : Utils.PROCESS_MAP.get(i) + ' ' + i, + pid: i, + tid: '', + count: 0, + cpu: '', + freq: '', + dur: 0, + percent: 0, + state: 'Running', + children: new Array(), + }); + } + // 拷贝给私有属性,以便后续进行数据切割时免除整理进程层级数据 + this.processArr = JSON.parse(JSON.stringify(pidArr)); + for (let e of result) { + if (processArr.includes(e.pid) && e.state == 'Running') { + if (needDeal.get(e.pid + '_' + e.tid) == undefined) { + threadArr.push({ + process: + Utils.PROCESS_MAP.get(e.pid) == null + ? 'Process ' + e.pid + : Utils.PROCESS_MAP.get(e.pid) + ' ' + e.pid, + thread: Utils.THREAD_MAP.get(e.tid) + ' ' + e.tid, + pid: e.pid, + tid: e.tid, + count: 0, + cpu: '', + freq: '', + dur: 0, + percent: 0, + state: 'Running', + children: new Array(), + }); + needDeal.set(e.pid + '_' + e.tid, new Array()); + } + if ( + e.ts < threadStatesParam.leftNs + threadStatesParam.recordStartNs && + e.ts + e.dur > threadStatesParam.leftNs + threadStatesParam.recordStartNs + ) { + const ts = e.ts; + e.ts = threadStatesParam.leftNs + threadStatesParam.recordStartNs; + e.dur = ts + e.dur - (threadStatesParam.leftNs + threadStatesParam.recordStartNs); + } + if (e.ts + e.dur > threadStatesParam.rightNs + threadStatesParam.recordStartNs) { + e.dur = threadStatesParam.rightNs + threadStatesParam.recordStartNs - e.ts; + } + let arr = needDeal.get(e.pid + '_' + e.tid); + let process = Utils.PROCESS_MAP.get(e.pid); + let thread = Utils.THREAD_MAP.get(e.tid); + e.process = process == null || process.length == 0 ? '[NULL]' : process; + e.thread = thread == null || thread.length == 0 ? '[NULL]' : thread; + e.stateJX = e.state; + e.state = Utils.getEndState(e.stateJX); + sum += e.dur; + arr.push(e); } - // 合并相同周期内的数据 - this.mergeData(resList); - // 整理排序相同周期下的数据 - this.mergeCpuData(cpuMap.get(key)!, resList); - // 将cpu数据放置到对应周期层级下 - this.mergeCycleData(cycleMap.get(key)![i], cpuMap.get(key)); + } + // 拷贝给私有属性,以便后续进行数据切割时免除整理线程层级数据 + this.threadArr = JSON.parse(JSON.stringify(threadArr)); + // 整理running线程数据、cpu层级信息 + this.mergeFreqData(needDeal, dealArr, sum); + this.threadStatesTbl!.loading = false; + } else { + this.threadStatesTblSource = []; + this.threadStatesTbl!.recycleDataSource = []; + this.threadStatesTbl!.loading = false; } + }); }); - } - /** - * 切割后整合好的周期频点数据放置到对应的线程下 - */ - mergeThreadData(threadArr: Array, cycleMap: Map>): void { - for (let i = 0; i < threadArr.length; i++) { - let cycleMapData = cycleMap.get(threadArr[i].pid + '_' + threadArr[i].tid); - for (let j = 0; j < cycleMapData!.length; j++) { - threadArr[i].children.push(cycleMapData![j]); - threadArr[i].count += cycleMapData![j].count; - threadArr[i].dur += cycleMapData![j].dur; - threadArr[i].percent += cycleMapData![j].percent; + } + ); + } + private threadClick(data: Array) { + let labels = this.threadStatesTbl?.shadowRoot?.querySelector('.th > .td')!.querySelectorAll('label'); + if (labels) { + for (let i = 0; i < labels.length; i++) { + let label = labels[i].innerHTML; + labels[i].addEventListener('click', (e) => { + if (label.includes('Process') && i === 0) { + this.threadStatesTbl!.setStatus(data, false); + this.threadStatesTbl!.recycleDs = this.threadStatesTbl!.meauseTreeRowElement(data, RedrawTreeForm.Retract); + } else if (label.includes('Thread') && i === 1) { + for (let item of data) { + item.status = true; + if (item.children != undefined && item.children.length > 0) { + this.threadStatesTbl!.setStatus(item.children, false); + } } - } - } - /** - * 切割后整合好的线程级频点数据放置到对应的进程 - */ - mergePidData(pidArr: Array, threadArr: Array): void { - for (let i = 0; i < pidArr.length; i++) { - for (let j = 0; j < threadArr.length; j++) { - if (pidArr[i].pid === threadArr[j].pid) { - pidArr[i].children.push(threadArr[j]); - pidArr[i].count += threadArr[j].count; - pidArr[i].dur += threadArr[j].dur; - pidArr[i].percent += threadArr[j].percent; - } - } - } - } - /** - * 合并相同周期内运行所在cpu相同、频点相同的数据 - */ - mergeData(resList: Array): void { - // 合并相同周期内的数据 - for (let i = 0; i < resList.length; i++) { - for (let j = i + 1; j < resList.length; j++) { - if (resList[i].cpu === resList[j].cpu && resList[i].freq === resList[j].freq && resList[i].id === resList[j].id) { - resList[i].dur += resList[j].dur; - resList[i].percent += resList[j].percent; - resList[i].count += resList[j].count; - resList.splice(j, 1); - j--; - } - } - } - } - /** - * 将cpu层级数据放到对应的周期层级下 - */ - mergeCycleData(obj: TabPaneFreqUsageConfig, arr: Array | undefined): void { - for (let i = 0; i < arr!.length; i++) { - if (arr![i].count === 0 && arr![i].dur === 0) { - continue; - } - obj.children?.push(arr![i]); - obj.count += arr![i].count; - obj.dur += arr![i].dur; - obj.percent += arr![i].percent; - } - } - /** - * 将切割好的不区分周期的数据作为total数据放到对应的线程层级下,周期数据前 - */ - mergeTotalData(threadArr: Array, totalData: Array): void { - for (let i = 0; i < threadArr.length; i++) { - for (let j = 0; j < totalData.length; j++) { - if (Number(threadArr[i].pid) === Number(totalData[j].pid) && Number(threadArr[i].tid) === Number(totalData[j].tid)) { - totalData[j].thread = 'TotalData'; - threadArr[i].children.unshift(totalData[j]); - } - } - } - } - /** - * 整理排序相同周期下的数据 - */ - mergeCpuData(cpuArray: Array, resList: Array): void { - // 以算力消耗降序排列 - resList.sort((a, b) => b.count - a.count); - // 以cpu升序排列 - cpuArray.sort((a: any, b: any) => a.cpu - b.cpu); - cpuArray.forEach((item: any) => { - for (let s = 0; s < resList.length; s++) { - if (item.cpu === resList[s].cpu) { - item.children.push(resList[s]); - item.count += resList[s].count; - item.dur += resList[s].dur; - item.percent += resList[s].percent; + this.threadStatesTbl!.recycleDs = this.threadStatesTbl!.meauseTreeRowElement(data, RedrawTreeForm.Retract); + } else if (label.includes('Cycle') && i === 2) { + for (let item of data) { + item.status = true; + for (let value of item.children ? item.children : []) { + value.status = true; + if (value.children != undefined && value.children.length > 0) { + this.threadStatesTbl!.setStatus(value.children, false); } + } } + this.threadStatesTbl!.recycleDs = this.threadStatesTbl!.meauseTreeRowElement(data, RedrawTreeForm.Retract); + } else if (label.includes('CPU') && i === 3) { + this.threadStatesTbl!.setStatus(data, true); + this.threadStatesTbl!.recycleDs = this.threadStatesTbl!.meauseTreeRowElement(data, RedrawTreeForm.Expand); + } }); - + } } - /** - * 切割好的不区分周期的数据,以相同cpu相同频点的进行整合 - */ - merge(totalList: Map>): Array { - let result: Array = new Array(); - totalList.forEach((value: any, key: any) => { - let countNum = result.push(new TabPaneFreqUsageConfig('', '', key.split('_')[0], key.split('_')[1], 0, '', '', 0, '', 0, 'cycle', 0, [])); - let cpuArr: Array = []; - let flagArr: Array = []; - for (let i = 0; i < value.length; i++) { - if (!flagArr.includes(value[i].cpu)) { - flagArr.push(value[i].cpu); - let flag = cpuArr.push(new TabPaneFreqUsageConfig(value[i].thread, '', value[i].pid, value[i].tid, 0, value[i].cpu, '', 0, '', 0, 'cpu', -1, [])); - result[countNum - 1].children?.push(cpuArr[flag - 1]); - } - for (let j = i + 1; j < value.length; j++) { - if (value[i].cpu === value[j].cpu && value[i].freq === value[j].freq) { - value[i].dur += value[j].dur; - value[i].percent += value[j].percent; - value[i].count += value[j].count; - value.splice(j, 1); - j--; - } - } - } - result[countNum - 1].children?.sort((a: any, b: any) => a.cpu - b.cpu); - for (let i = 0; i < cpuArr.length; i++) { - for (let j = 0; j < value.length; j++) { - if (cpuArr[i].cpu === value[j].cpu) { - cpuArr[i].children.push(value[j]); - cpuArr[i].dur += value[j].dur; - cpuArr[i].count += value[j].count; - cpuArr[i].percent += value[j].percent; - } - } - result[countNum - 1].dur += cpuArr[i].dur; - result[countNum - 1].count += cpuArr[i].count; - result[countNum - 1].percent += cpuArr[i].percent; - } + let scatterData: any = this.threadStatesTbl?.shadowRoot?.querySelectorAll('.tree-first-body'); + if (scatterData) { + for (let j = 0; j < scatterData.length; j++) { + let scatter = scatterData[j].data; + scatterData[j].addEventListener('click', (e: any) => { + console.log(scatter); }); - return result; - } - /** - * 递归整理数据,取小数位数,转换单位 - */ - fixedDeal(arr: Array): void { - if (arr === undefined) { - return; - } - for (let i = 0; i < arr.length; i++) { - arr[i].percent = arr[i].percent > 100 ? 100 : arr[i].percent; - arr[i].percent = arr[i].percent.toFixed(2); - arr[i].dur = (arr[i].dur / 1000000).toFixed(3); - if (arr[i].freq !== '') { - if (arr[i].freq === 'unknown') { - arr[i].freq = 'unknown'; - } else { - arr[i].freq = arr[i].freq / 1000; - } - } - if (!(SegMenTaTion.freqInfoMapData.size > 0)) { - arr[i].count = (arr[i].count / 1000).toFixed(3); - } else { - arr[i].count = (arr[i].count).toFixed(3); - } - this.fixedDeal(arr[i].children); - } + } } + } - /** - * 绑定表格点击事件 - */ - private threadClick(data: Array): void { - let labels = this.threadStatesTbl?.shadowRoot?.querySelector('.th > .td')!.querySelectorAll('label'); - if (labels) { - for (let i = 0; i < labels.length; i++) { - let label = labels[i].innerHTML; - labels[i].addEventListener('click', (e) => { - if (!this.threadStatesTblSource.length && !this.threadStatesTbl!.recycleDataSource.length) { - data = []; - } - if (label.includes('Process') && i === 0) { - this.threadStatesTbl!.setStatus(data, false); - this.threadStatesTbl!.recycleDs = this.threadStatesTbl!.meauseTreeRowElement(data, RedrawTreeForm.Retract); - } else if (label.includes('Thread') && i === 1) { - for (let item of data) { - item.status = true; - if (item.children != undefined && item.children.length > 0) { - this.threadStatesTbl!.setStatus(item.children, false); - } - } - this.threadStatesTbl!.recycleDs = this.threadStatesTbl!.meauseTreeRowElement(data, RedrawTreeForm.Retract); - } else if (label.includes('Cycle') && i === 2) { - for (let item of data) { - item.status = true; - for (let value of item.children ? item.children : []) { - value.status = true; - if (value.children != undefined && value.children.length > 0) { - this.threadStatesTbl!.setStatus(value.children, false); - } - } - } - this.threadStatesTbl!.recycleDs = this.threadStatesTbl!.meauseTreeRowElement(data, RedrawTreeForm.Retract); - } else if (label.includes('CPU') && i === 3) { - this.threadStatesTbl!.setStatus(data, true); - this.threadStatesTbl!.recycleDs = this.threadStatesTbl!.meauseTreeRowElement(data, RedrawTreeForm.Expand); - } - }); - } - } - } - /** - * 散点图渲染数据整理 - */ - render(res: Array, str: string, queryCycleScatter: Array): void { - let maxFreq: HTMLInputElement = this.scatterInput!.querySelector('#maxFreq')!; - let maxHz: HTMLInputElement = this.scatterInput!.querySelector('#maxHz')!; - maxFreq.style.border = '1px solid rgb(151,151,151)'; - maxHz.style.border = '1px solid rgb(151,151,151)'; - if (maxFreq.value && maxHz.value) { - if (/^[0-9]*$/.test(maxFreq.value) && /^[0-9]*$/.test(maxHz.value)) { - // @ts-ignore - this.shadowRoot?.querySelector('#cycleQuery')!.style.display = 'block'; - let freq: Map = (SegMenTaTion.freqInfoMapData.size > 0 && SegMenTaTion.freqInfoMapData.get(SegMenTaTion.freqInfoMapData.size - 1)); - // @ts-ignore - let yAxis: number = (freq && freq.get(Number(maxFreq.value) * 1000)) ? freq.get(Number(maxFreq.value) * 1000) : Number(maxFreq.value); - let xAxis: number = yAxis * 1000 / Number(maxHz.value);//MHz·s - // 需要做筛选时,会利用下面的cycleA、cycleB数组 - let scatterArr: Array> = [], traceRowdata: Array = [], cycleA: Array> = [], cycleB: Array> = []; - let cycleAStart: number = queryCycleScatter[0] || 0, cycleAEnd: number = queryCycleScatter[1] || 0, cycleBStart: number = queryCycleScatter[2] || 0, cycleBEnd: number = queryCycleScatter[3] || 0; - for (let i = 1; i < res.length; i++) { - const count: number = Number(res[i].count), dur: number = Number(res[i].cdur), r_dur: number = Number(res[i].dur);//MHz·ms ms ms - scatterArr.push([count, count / dur, i, dur, r_dur]); - traceRowdata.push( - { - 'dur': dur * 1000000, - 'value': count, - 'freq': Math.round(count / dur) * 1000, - 'startNS': Number(res[i].ts) * 1000000, - 'cycle': i - 1 - } - ); - if (dur >= cycleAStart && dur < cycleAEnd) { - cycleA.push([count, count / dur, i, dur, r_dur]); - } - if (dur >= cycleBStart && dur < cycleBEnd) { - cycleB.push([count, count / dur, i, dur, r_dur]); - } - } - this.setConfig(Number(maxHz.value), str, scatterArr, yAxis, xAxis, cycleA, cycleB); - SegMenTaTion.setChartData('CPU-FREQ', traceRowdata); - } else { - if (!/^[0-9]*$/.test(maxFreq.value)) { - maxFreq.style.border = '2px solid rgb(255,0,0)'; - } - if (!/^[0-9]*$/.test(maxHz.value)) { - maxHz.style.border = '2px solid rgb(255,0,0)'; - } - } - } else { - if (maxFreq.value === '') { - maxFreq.style.border = '2px solid rgb(255,0,0)'; - maxFreq.setAttribute('placeholder', 'Please input maxFreq'); - } - if (maxHz.value === '') { - maxHz.style.border = '2px solid rgb(255,0,0)'; - maxHz.setAttribute('placeholder', 'Please input Fps'); - } - SegMenTaTion.setChartData('CPU-FREQ', []); - } - } - - /** - * 配置散点图 - */ - setConfig(maxHz: number, str: string, scatterArr: Array>, yAxis: number, xAxis: number, cycleA: Array>, cycleB: Array>): void { - this.statisticsScatter!.config = { - // 纵轴坐标值 - yAxisLabel: [Math.round(yAxis / 5), Math.round(yAxis * 2 / 5), Math.round(yAxis * 3 / 5), Math.round(yAxis * 4 / 5), Math.round(yAxis)], - // 横轴坐标值 - xAxisLabel: [Math.round(xAxis / 5), Math.round(xAxis * 2 / 5), Math.round(xAxis * 3 / 5), Math.round(xAxis * 4 / 5), Math.round(xAxis), Math.round(xAxis * 6 / 5)], - // 横轴字段、纵轴字段 - AxisLabel: ['负载', '算力供给'], - // 是否加载最大负载线及均衡线 - drawload: true, - // 最大负载线及均衡线值 - load: [xAxis, maxHz], - // 绘制点数据信息存储数组 - paintingData: [], - // 当前移入点坐标信息 - hoverData: {}, - // 颜色池 - colorPool: () => ['#2f72f8', '#ffab67', '#a285d2'], - // 移入数据点时是否触发函数 - //@ts-ignore - hoverEvent: SegMenTaTion.tabHover, - // 渐变色背景信息 - globalGradient: undefined, - // 渲染数据点 - data: [scatterArr, cycleA, cycleB], - // 散点图title - title: str, - colorPoolText: () => ['Total', 'CycleA', 'CycleB'], - tip: (data: any) => { - return ` -
- Cycle: ${data.c[2]};
- Comsumption: ${data.c[0]};
- Cycle_dur: ${data.c[3]} ms;
- Running_dur: ${data.c[4]} ms;
-
- ` - } - }; - - } - - initElements(): void { - this.threadStatesTbl = this.shadowRoot?.querySelector('#tb-running-datacut'); - // 绑定single、loop按钮点击事件 - this.threadStatesDIV = this.shadowRoot?.querySelector('#dataCut'); - this.threadStatesDIV?.children[2].children[0].addEventListener('click', (e) => { - this.threadStatesTbl!.loading = true; - // @ts-ignore - this.dataSingleCut(this.threadStatesDIV?.children[0]!, this.threadStatesDIV?.children[1]!, this.initData); - }) - this.threadStatesDIV?.children[2].children[1].addEventListener('click', (e) => { - this.threadStatesTbl!.loading = true; - // @ts-ignore - this.dataLoopCut(this.threadStatesDIV?.children[0]!, this.threadStatesDIV?.children[1]!, this.initData); - }) - this.statisticsScatter = this.shadowRoot?.querySelector('#chart-scatter'); - // 增加表格thread层级点击更新散点图事件、周期层级点击高亮泳道图对应段事件 - let scatterData: Array = new Array(); - let str: string = ''; - this.threadStatesTbl!.addEventListener('row-click', (evt): void => { - // @ts-ignore - if (evt.detail.flag === 'thread') { - // @ts-ignore - scatterData = evt.detail.children; - // @ts-ignore - str = evt.detail.thread; - this.render(scatterData, str, []); - } - // @ts-ignore - if (evt.detail.flag === 'cycle' && evt.detail.pid === scatterData[evt.detail.id - 1].pid && evt.detail.tid === scatterData[evt.detail.id - 1].tid) { - // @ts-ignore - SegMenTaTion.tabHover('CPU-FREQ', true, evt.detail.id - 1); - - } - }); - this.scatterInput = this.shadowRoot?.querySelector('.chart-box'); - this.shadowRoot?.querySelector('#query-btn')!.addEventListener('click', (e) => { - // @ts-ignore - let cycleAStartValue = this.shadowRoot?.querySelector('#cycle-a-start-range')!.value; - // @ts-ignore - let cycleAEndValue = this.shadowRoot?.querySelector('#cycle-a-end-range')!.value; - // @ts-ignore - let cycleBStartValue = this.shadowRoot?.querySelector('#cycle-b-start-range')!.value; - // @ts-ignore - let cycleBEndValue = this.shadowRoot?.querySelector('#cycle-b-end-range')!.value; - let queryCycleScatter = [Number(cycleAStartValue), Number(cycleAEndValue), Number(cycleBStartValue), Number(cycleBEndValue)]; - this.render(scatterData, str, queryCycleScatter); - }) - } - - connectedCallback(): void { - super.connectedCallback(); - resizeObserver(this.parentElement!, this.threadStatesTbl!); - } - - initHtml(): string { - return ` + initElements(): void { + this.threadStatesTbl = this.shadowRoot?.querySelector('#tb-running-percent'); + // 暂时屏蔽列排序功能,后续增加则重写排序方法 + this.threadStatesDIV = this.shadowRoot?.querySelector('#dataCut'); + this.threadStatesDIV?.children[2].children[0].addEventListener('click', (e) => { + this.threadStatesTbl!.loading = true; + this.dataSingleCut(this.threadStatesDIV?.children[0], this.threadStatesDIV?.children[1], this.initData); + }); + this.threadStatesDIV?.children[2].children[1].addEventListener('click', (e) => { + this.threadStatesTbl!.loading = true; + this.dataLoopCut(this.threadStatesDIV?.children[0], this.threadStatesDIV?.children[1], this.initData); + }); + } + connectedCallback() { + super.connectedCallback(); + resizeObserver(this.parentElement!, this.threadStatesTbl!); + } + initHtml(): string { + return `
@@ -854,61 +259,765 @@ export class TabPaneFreqDataCut extends BaseElement {
- - -
- - - - - - - - - - - - - - - - - - -
- -
-
- maxFreq: - - Fps: - -
-
-
- - -
-
-
- ` + + + + + + + + + + + + + + + + + + + `; + } + sortByColumn(treadStateDetail: any) { + function compare(property: any, treadStatesSort: any, type: any) { + return function (threadStatesLeftData: SelectionData | any, threadStatesRightData: SelectionData | any) { + if (threadStatesLeftData.process == ' ' || threadStatesRightData.process == ' ') { + return 0; + } + if (type === 'number') { + return treadStatesSort === 2 + ? parseFloat(threadStatesRightData[property]) - parseFloat(threadStatesLeftData[property]) + : parseFloat(threadStatesLeftData[property]) - parseFloat(threadStatesRightData[property]); + } else { + if (threadStatesRightData[property] > threadStatesLeftData[property]) { + return treadStatesSort === 2 ? 1 : -1; + } else if (threadStatesRightData[property] == threadStatesLeftData[property]) { + return 0; + } else { + return treadStatesSort === 2 ? -1 : 1; + } + } + }; + } + + if (treadStateDetail.key === 'name' || treadStateDetail.key === 'thread' || treadStateDetail.key === 'state') { + this.threadStatesTblSource.sort(compare(treadStateDetail.key, treadStateDetail.sort, 'string')); + } else { + this.threadStatesTblSource.sort(compare(treadStateDetail.key, treadStateDetail.sort, 'number')); } -} \ No newline at end of file + this.threadStatesTbl!.recycleDataSource = this.threadStatesTblSource; + } + // single方式切割数据功能 + dataSingleCut(threadId: any, threadFunc: any, resultList: any) { + threadId.style.border = '1px solid rgb(151,151,151)'; + threadFunc.style.border = '1px solid rgb(151,151,151)'; + let threadIdValue = threadId.value.trim(); + let threadFuncName = threadFunc.value.trim(); + let leftNS = this.currentSelectionParam.leftNs; + let rightNS = this.currentSelectionParam.rightNs; + let tableValue: any = this.threadStatesTbl; + tableValue.value = []; + if (threadIdValue != '' && threadFuncName != '') { + // 根据用户输入的线程ID,方法名去查询数据库,得到对应的方法起始时间,持续时间等数据,以便作为依据进行后续数据切割 + querySearchFuncData(threadFuncName, Number(threadIdValue), leftNS, rightNS).then((result) => { + if (result != null && result.length > 0) { + let targetMap = new Map(); + // 新创建map对象接收传过来的实参map + resultList.forEach((item: any, key: any) => { + targetMap.set(key, JSON.parse(JSON.stringify(item))); + }); + let timeDur = this.currentSelectionParam.recordStartNs; + // 周期切割依据数据整理 + let dealArr = new Array(); + for (let i of result) { + if (i.startTime + timeDur + i.dur < this.currentSelectionParam.rightNs + timeDur) { + dealArr.push({ ts: i.startTime + timeDur, dur: i.dur }); + } + } + let cycleMap = new Map(); + let totalList = new Map(); + targetMap.forEach((item, key) => { + cycleMap.set(key, new Array()); + totalList.set(key, new Array()); + for (let i = 0; i < dealArr.length; i++) { + let cpuArr = new Array(); + let cpuMap = new Map(); + let resList = new Array(); + // 时间由纳秒转换为秒的倍数 + const multiple = 1000000000; + // 算力倍数值 + const countMutiple = 1000; + cpuMap.set(key, new Array()); + cycleMap + .get(key) + .push({ + thread: '周期' + (i + 1) + '—' + item[0].thread, + ts: (dealArr[i].ts - timeDur) / multiple, + count: 0, + cpu: '', + freq: '', + dur: 0, + percent: 0, + state: 'Running', + children: new Array(), + }); + let value = JSON.parse(JSON.stringify(item)); + for (let j = 0; j < value.length; j++) { + value[j].ts = value[j].ts * multiple; + value[j].freq = value[j].freq == 'unknown' ? 0 : value[j].freq; + if (!cpuArr.includes(value[j].cpu)) { + cpuArr.push(value[j].cpu); + cpuMap + .get(key) + .push({ + thread: '周期' + (i + 1) + '—' + value[j].thread, + pid: value[j].pid, + tid: value[j].tid, + count: 0, + cpu: value[j].cpu, + freq: '', + dur: 0, + percent: 0, + state: 'Running', + children: new Array(), + }); + } + if (dealArr[i].ts < value[j].ts) { + if (dealArr[i].ts + dealArr[i].dur > value[j].ts) { + if (dealArr[i].ts + dealArr[i].dur > value[j].ts + value[j].dur) { + resList.push({ + thread: '周期' + (i + 1) + '—' + value[j].thread, + pid: value[j].pid, + tid: value[j].tid, + count: (value[j].freq * value[j].dur) / countMutiple, + cpu: value[j].cpu, + freq: value[j].freq, + dur: value[j].dur, + percent: value[j].percent, + state: 'Running', + id: i, + }); + totalList + .get(key) + .push({ + thread: value[j].thread, + pid: value[j].pid, + tid: value[j].tid, + count: (value[j].freq * value[j].dur) / countMutiple, + cpu: value[j].cpu, + freq: value[j].freq, + dur: value[j].dur, + percent: value[j].percent, + state: 'Running', + id: i, + }); + } else { + resList.push({ + thread: '周期' + (i + 1) + '—' + value[j].thread, + pid: value[j].pid, + tid: value[j].tid, + count: ((dealArr[i].ts + dealArr[i].dur - value[j].ts) * value[j].freq) / countMutiple, + cpu: value[j].cpu, + freq: value[j].freq, + dur: dealArr[i].ts + dealArr[i].dur - value[j].ts, + percent: ((dealArr[i].ts + dealArr[i].dur - value[j].ts) / value[j].dur) * value[j].percent, + state: 'Running', + id: i, + }); + totalList + .get(key) + .push({ + thread: value[j].thread, + pid: value[j].pid, + tid: value[j].tid, + count: ((dealArr[i].ts + dealArr[i].dur - value[j].ts) * value[j].freq) / countMutiple, + cpu: value[j].cpu, + freq: value[j].freq, + dur: dealArr[i].ts + dealArr[i].dur - value[j].ts, + percent: ((dealArr[i].ts + dealArr[i].dur - value[j].ts) / value[j].dur) * value[j].percent, + state: 'Running', + id: i, + }); + break; + } + } + } else { + if (value[j].ts + value[j].dur > dealArr[i].ts) { + if (value[j].ts + value[j].dur > dealArr[i].ts + dealArr[i].dur) { + resList.push({ + thread: '周期' + (i + 1) + '—' + value[j].thread, + pid: value[j].pid, + tid: value[j].tid, + count: (dealArr[i].dur * value[j].freq) / countMutiple, + cpu: value[j].cpu, + freq: value[j].freq, + dur: dealArr[i].dur, + percent: (dealArr[i].dur / value[j].dur) * value[j].percent, + state: 'Running', + id: i, + }); + totalList + .get(key) + .push({ + thread: value[j].thread, + pid: value[j].pid, + tid: value[j].tid, + count: (dealArr[i].dur * value[j].freq) / countMutiple, + cpu: value[j].cpu, + freq: value[j].freq, + dur: dealArr[i].dur, + percent: (dealArr[i].dur / value[j].dur) * value[j].percent, + state: 'Running', + id: i, + }); + break; + } else { + resList.push({ + thread: '周期' + (i + 1) + '—' + value[j].thread, + pid: value[j].pid, + tid: value[j].tid, + count: ((value[j].ts + value[j].dur - dealArr[i].ts) * value[j].freq) / countMutiple, + cpu: value[j].cpu, + freq: value[j].freq, + dur: value[j].ts + value[j].dur - dealArr[i].ts, + percent: ((value[j].ts + value[j].dur - dealArr[i].ts) / value[j].dur) * value[j].percent, + state: 'Running', + id: i, + }); + totalList + .get(key) + .push({ + thread: value[j].thread, + pid: value[j].pid, + tid: value[j].tid, + count: ((value[j].ts + value[j].dur - dealArr[i].ts) * value[j].freq) / countMutiple, + cpu: value[j].cpu, + freq: value[j].freq, + dur: value[j].ts + value[j].dur - dealArr[i].ts, + percent: ((value[j].ts + value[j].dur - dealArr[i].ts) / value[j].dur) * value[j].percent, + state: 'Running', + id: i, + }); + } + } + } + } + this.mergeData(resList); + resList.sort((a, b) => b.count - a.count); + cpuMap.get(key).sort((a: any, b: any) => a.cpu - b.cpu); + cpuMap.get(key).forEach((item: any) => { + for (let s = 0; s < resList.length; s++) { + if (item.cpu == resList[s].cpu) { + item.children.push(resList[s]); + item.count += resList[s].count; + item.dur += resList[s].dur; + item.percent += resList[s].percent; + } + } + }); + // 将cpu数据放置到对应周期层级下 + this.mergeCycleData(cycleMap.get(key)[i], cpuMap.get(key)); + } + }); + // 拷贝线程数组,防止数据污染 + let threadArr = JSON.parse(JSON.stringify(this.threadArr)); + // 拷贝进程数组,防止数据污染 + let processArr = JSON.parse(JSON.stringify(this.processArr)); + // 将周期层级防止到线程层级下 + this.mergeThreadData(threadArr, cycleMap); + // 将原始数据放置到对应的线程层级下,周期数据前 + let totalData = this.merge(totalList); + this.mergeTotalData(threadArr, totalData); + // 合并数据到进程层级下 + this.mergePidData(processArr, threadArr); + this.fixedDeal(processArr); + this.threadStatesTblSource = processArr; + this.threadStatesTbl!.recycleDataSource = processArr; + this.threadStatesTbl!.loading = false; + this.threadClick(processArr); + } else { + this.threadStatesTblSource = []; + this.threadStatesTbl!.recycleDataSource = []; + this.threadStatesTbl!.loading = false; + } + }); + } else { + this.threadStatesTbl!.loading = false; + if (threadIdValue == '') { + threadId.style.border = '1px solid rgb(255,0,0)'; + threadId.setAttribute('placeholder', 'Please input thread id'); + } + if (threadFuncName == '') { + threadFunc.style.border = '1px solid rgb(255,0,0)'; + threadFunc.setAttribute('placeholder', 'Please input function name'); + } + } + } + // Loop方式切割数据功能 + dataLoopCut(threadId: any, threadFunc: any, resultList: any) { + threadId.style.border = '1px solid rgb(151,151,151)'; + threadFunc.style.border = '1px solid rgb(151,151,151)'; + let threadIdValue = threadId.value.trim(); + let threadFuncName = threadFunc.value.trim(); + let leftNS = this.currentSelectionParam.leftNs; + let rightNS = this.currentSelectionParam.rightNs; + let tableValue: any = this.threadStatesTbl; + tableValue.value = []; + if (threadIdValue != '' && threadFuncName != '') { + querySearchFuncData(threadFuncName, Number(threadIdValue), leftNS, rightNS).then((res) => { + if (res != null && res.length > 0) { + let targetMap = new Map(); + // 新创建map对象接收传过来的实参map + resultList.forEach((item: any, key: any) => { + targetMap.set(key, JSON.parse(JSON.stringify(item))); + }); + let timeDur = this.currentSelectionParam.recordStartNs; + let cutArr = new Array(); + // 根据线程id及方法名获取的数据,处理后用作切割时间依据,时间跨度为整个方法开始时间到末个方法开始时间 + for (let i of res) { + cutArr.push({ ts: i.startTime + timeDur }); + } + let cycleMap = new Map(); + let totalList = new Map(); + targetMap.forEach((item, key) => { + cycleMap.set(key, new Array()); + totalList.set(key, new Array()); + for (let i = 0; i < cutArr.length - 1; i++) { + let cpuArr = new Array(); + let cpuMap = new Map(); + let resList = new Array(); + // 时间由纳秒转换为秒的倍数 + const multiple = 1000000000; + // 算力倍数值 + const countMutiple = 1000; + cpuMap.set(key, new Array()); + cycleMap + .get(key) + .push({ + thread: '周期' + (i + 1) + '—' + item[0].thread, + ts: (cutArr[i].ts - timeDur) / multiple, + count: 0, + cpu: '', + freq: '', + dur: 0, + percent: 0, + state: 'Running', + children: new Array(), + }); + let value = JSON.parse(JSON.stringify(item)); + for (let j = 0; j < value.length; j++) { + value[j].ts = value[j].ts * multiple; + value[j].freq = value[j].freq == 'unknown' ? 0 : value[j].freq; + if (!cpuArr.includes(value[j].cpu)) { + cpuArr.push(value[j].cpu); + cpuMap + .get(key) + .push({ + thread: '周期' + (i + 1) + '—' + value[j].thread, + pid: value[j].pid, + tid: value[j].tid, + count: 0, + cpu: value[j].cpu, + freq: '', + dur: 0, + percent: 0, + state: 'Running', + children: new Array(), + }); + } + if (value[j].ts >= cutArr[i].ts) { + if (value[j].ts + value[j].dur <= cutArr[i + 1].ts) { + resList.push({ + thread: '周期' + (i + 1) + '—' + value[j].thread, + pid: value[j].pid, + tid: value[j].tid, + count: (value[j].freq * value[j].dur) / countMutiple, + cpu: value[j].cpu, + freq: value[j].freq, + dur: value[j].dur, + percent: value[j].percent, + state: 'Running', + id: i, + }); + totalList + .get(key) + .push({ + thread: value[j].thread, + pid: value[j].pid, + tid: value[j].tid, + count: (value[j].freq * value[j].dur) / countMutiple, + cpu: value[j].cpu, + freq: value[j].freq, + dur: value[j].dur, + percent: value[j].percent, + state: 'Running', + id: i, + }); + } else { + if (cutArr[i + 1].ts - value[j].ts > 0) { + resList.push({ + thread: '周期' + (i + 1) + '—' + value[j].thread, + pid: value[j].pid, + tid: value[j].tid, + count: (value[j].freq * (cutArr[i + 1].ts - value[j].ts)) / countMutiple, + cpu: value[j].cpu, + freq: value[j].freq, + dur: cutArr[i + 1].ts - value[j].ts, + percent: value[j].percent * ((cutArr[i + 1].ts - value[j].ts) / value[j].dur), + state: 'Running', + id: i, + }); + totalList + .get(key) + .push({ + thread: value[j].thread, + pid: value[j].pid, + tid: value[j].tid, + count: (value[j].freq * (cutArr[i + 1].ts - value[j].ts)) / countMutiple, + cpu: value[j].cpu, + freq: value[j].freq, + dur: cutArr[i + 1].ts - value[j].ts, + percent: value[j].percent * ((cutArr[i + 1].ts - value[j].ts) / value[j].dur), + state: 'Running', + id: i, + }); + break; + } + } + } else { + if (value[j].ts + value[j].dur > cutArr[i + 1].ts) { + resList.push({ + thread: '周期' + (i + 1) + '—' + value[j].thread, + pid: value[j].pid, + tid: value[j].tid, + count: (value[j].freq * (cutArr[i + 1].ts - cutArr[i].ts)) / countMutiple, + cpu: value[j].cpu, + freq: value[j].freq, + dur: cutArr[i + 1].ts - cutArr[i].ts, + percent: value[j].percent * ((cutArr[i + 1].ts - cutArr[i].ts) / value[j].dur), + state: 'Running', + id: i, + }); + totalList + .get(key) + .push({ + thread: value[j].thread, + pid: value[j].pid, + tid: value[j].tid, + count: (value[j].freq * (cutArr[i + 1].ts - cutArr[i].ts)) / countMutiple, + cpu: value[j].cpu, + freq: value[j].freq, + dur: cutArr[i + 1].ts - cutArr[i].ts, + percent: value[j].percent * ((cutArr[i + 1].ts - cutArr[i].ts) / value[j].dur), + state: 'Running', + id: i, + }); + } + if (value[j].ts + value[j].dur > cutArr[i].ts && value[j].ts + value[j].dur < cutArr[i + 1].ts) { + resList.push({ + thread: '周期' + (i + 1) + '—' + value[j].thread, + pid: value[j].pid, + tid: value[j].tid, + count: (value[j].freq * (value[j].dur + value[j].ts - cutArr[i].ts)) / countMutiple, + cpu: value[j].cpu, + freq: value[j].freq, + dur: value[j].dur + value[j].ts - cutArr[i].ts, + percent: value[j].percent * ((value[j].dur + value[j].ts - cutArr[i].ts) / value[j].dur), + state: 'Running', + id: i, + }); + totalList + .get(key) + .push({ + thread: value[j].thread, + pid: value[j].pid, + tid: value[j].tid, + count: (value[j].freq * (value[j].dur + value[j].ts - cutArr[i].ts)) / countMutiple, + cpu: value[j].cpu, + freq: value[j].freq, + dur: value[j].dur + value[j].ts - cutArr[i].ts, + percent: value[j].percent * ((value[j].dur + value[j].ts - cutArr[i].ts) / value[j].dur), + state: 'Running', + id: i, + }); + } + } + } + // 合并相同周期内的数据 + this.mergeData(resList); + // 以算力消耗降序排列 + resList.sort((a, b) => b.count - a.count); + // 以cpu升序排列 + cpuMap.get(key).sort((a: any, b: any) => a.cpu - b.cpu); + cpuMap.get(key).forEach((item: any) => { + for (let s = 0; s < resList.length; s++) { + if (item.cpu == resList[s].cpu) { + item.children.push(resList[s]); + item.count += resList[s].count; + item.dur += resList[s].dur; + item.percent += resList[s].percent; + } + } + }); + // 将cpu数据放置到对应周期层级下 + this.mergeCycleData(cycleMap.get(key)[i], cpuMap.get(key)); + } + }); + let threadArr = JSON.parse(JSON.stringify(this.threadArr)); + let processArr = JSON.parse(JSON.stringify(this.processArr)); + this.mergeThreadData(threadArr, cycleMap); + let totalData = this.merge(totalList); + this.mergeTotalData(threadArr, totalData); + this.mergePidData(processArr, threadArr); + this.fixedDeal(processArr); + this.threadStatesTblSource = processArr; + this.threadStatesTbl!.recycleDataSource = processArr; + this.threadStatesTbl!.setStatus(processArr, true); + this.threadStatesTbl!.loading = false; + this.threadClick(processArr); + } else { + this.threadStatesTblSource = []; + this.threadStatesTbl!.recycleDataSource = []; + this.threadStatesTbl!.loading = false; + } + }); + } else { + this.threadStatesTbl!.loading = false; + if (threadIdValue == '') { + threadId.style.border = '1px solid rgb(255,0,0)'; + threadId.setAttribute('placeholder', 'Please input thread id'); + } + if (threadFuncName == '') { + threadFunc.style.border = '1px solid rgb(255,0,0)'; + threadFunc.setAttribute('placeholder', 'Please input function name'); + } + } + } + mergeFreqData(needDeal: any, dealArr: any, sum: number) { + needDeal.forEach((value: any, key: any) => { + let resultList = new Array(); + // 时间由纳秒转换为秒的倍数 + const multiple = 1000000000; + // 算力倍数值 + const countMutiple = 1000; + for (let i = 0; i < value.length; i++) { + for (let j = 0; j < dealArr.length; j++) { + if (value[i].cpu == dealArr[j].cpu) { + if (value[i].ts > dealArr[j].startNS) { + if (value[i].ts < dealArr[j].startNS + dealArr[j].dur) { + if (value[i].dur < dealArr[j].startNS + dealArr[j].dur - value[i].ts) { + resultList.push({ + thread: value[i].thread, + pid: value[i].pid, + tid: value[i].tid, + count: (dealArr[j].value * value[i].dur) / countMutiple, + cpu: value[i].cpu, + freq: dealArr[j].value, + dur: value[i].dur, + percent: (value[i].dur / sum) * 100, + state: 'Running', + ts: value[i].ts / multiple, + }); + break; + } else { + resultList.push({ + thread: value[i].thread, + pid: value[i].pid, + tid: value[i].tid, + count: (dealArr[j].value * (dealArr[j].startNS + dealArr[j].dur - value[i].ts)) / countMutiple, + cpu: value[i].cpu, + freq: dealArr[j].value, + dur: dealArr[j].startNS + dealArr[j].dur - value[i].ts, + percent: ((dealArr[j].startNS + dealArr[j].dur - value[i].ts) / sum) * 100, + state: 'Running', + ts: value[i].ts / multiple, + }); + } + } + } else { + if (value[i].ts + value[i].dur > dealArr[j].startNS) { + if (value[i].dur + value[i].ts - dealArr[j].startNS < dealArr[j].dur) { + resultList.push({ + thread: value[i].thread, + pid: value[i].pid, + tid: value[i].tid, + count: (dealArr[j].value * (value[i].dur + value[i].ts - dealArr[j].startNS)) / countMutiple, + cpu: value[i].cpu, + freq: dealArr[j].value, + dur: value[i].dur + value[i].ts - dealArr[j].startNS, + percent: ((value[i].dur + value[i].ts - dealArr[j].startNS) / sum) * 100, + state: 'Running', + ts: dealArr[j].startNS / multiple, + }); + break; + } else { + resultList.push({ + thread: value[i].thread, + pid: value[i].pid, + tid: value[i].tid, + count: (dealArr[j].value * dealArr[j].dur) / countMutiple, + cpu: value[i].cpu, + freq: dealArr[j].value, + dur: dealArr[j].dur, + percent: (dealArr[j].dur / sum) * 100, + state: 'Running', + ts: dealArr[j].startNS / multiple, + }); + } + } else { + resultList.push({ + thread: value[i].thread, + pid: value[i].pid, + tid: value[i].tid, + count: 0, + cpu: value[i].cpu, + freq: 'unknown', + dur: value[i].dur, + percent: (value[i].dur / sum) * 100, + state: 'Running', + ts: value[i].ts / multiple, + }); + break; + } + } + } + } + } + this.initData.set(key, JSON.parse(JSON.stringify(resultList))); + }); + } + mergeThreadData(threadArr: any, cpuMap: any) { + for (let i = 0; i < threadArr.length; i++) { + let cpuMapData = cpuMap.get(threadArr[i].pid + '_' + threadArr[i].tid); + for (let j = 0; j < cpuMapData.length; j++) { + threadArr[i].children.push(cpuMapData[j]); + threadArr[i].count += cpuMapData[j].count; + threadArr[i].dur += cpuMapData[j].dur; + threadArr[i].percent += cpuMapData[j].percent; + } + } + } + mergePidData(pidArr: any, threadArr: any) { + for (let i = 0; i < pidArr.length; i++) { + for (let j = 0; j < threadArr.length; j++) { + if (pidArr[i].pid == threadArr[j].pid) { + pidArr[i].children.push(threadArr[j]); + pidArr[i].count += threadArr[j].count; + pidArr[i].dur += threadArr[j].dur; + pidArr[i].percent += threadArr[j].percent; + } + } + } + } + mergeData(resList: any) { + // 合并相同周期内的数据 + for (let i = 0; i < resList.length; i++) { + for (let j = i + 1; j < resList.length; j++) { + if ( + resList[i].cpu === resList[j].cpu && + resList[i].freq === resList[j].freq && + resList[i].id === resList[j].id + ) { + resList[i].dur += resList[j].dur; + resList[i].percent += resList[j].percent; + resList[i].count += resList[j].count; + resList.splice(j, 1); + j--; + } + } + } + } + mergeCycleData(obj: any, arr: any) { + for (let i = 0; i < arr.length; i++) { + if (arr[i].count === 0 && arr[i].dur === 0) { + continue; + } + obj.children.push(arr[i]); + obj.count += arr[i].count; + obj.dur += arr[i].dur; + obj.percent += arr[i].percent; + } + } + mergeTotalData(threadArr: any, totalData: any) { + for (let i = 0; i < threadArr.length; i++) { + for (let j = 0; j < totalData.length; j++) { + if (threadArr[i].pid == totalData[j].pid && threadArr[i].tid == totalData[j].tid) { + totalData[j].thread = 'TotalData'; + threadArr[i].children.unshift(totalData[j]); + } + } + } + } + fixedDeal(arr: any) { + if (arr == undefined) { + return; + } + for (let i = 0; i < arr.length; i++) { + arr[i].percent = arr[i].percent > 100 ? 100 : arr[i].percent; + arr[i].percent = arr[i].percent.toFixed(2); + this.fixedDeal(arr[i].children); + } + } + merge(totalList: any) { + let result = new Array(); + totalList.forEach((value: any, key: any) => { + let countNum = result.push({ + thread: '', + pid: key.split('_')[0], + tid: key.split('_')[1], + count: 0, + cpu: '', + freq: '', + dur: 0, + percent: 0, + state: 'Running', + children: new Array(), + }); + let cpuArr = new Array(); + let flagArr = new Array(); + for (let i = 0; i < value.length; i++) { + if (!flagArr.includes(value[i].cpu)) { + flagArr.push(value[i].cpu); + let flag = cpuArr.push({ + thread: value[i].thread, + pid: value[i].pid, + tid: value[i].tid, + count: 0, + cpu: value[i].cpu, + freq: '', + dur: 0, + percent: 0, + state: 'Running', + children: new Array(), + }); + result[countNum - 1].children.push(cpuArr[flag - 1]); + } + for (let j = i + 1; j < value.length; j++) { + if (value[i].cpu === value[j].cpu && value[i].freq === value[j].freq) { + value[i].dur += value[j].dur; + value[i].percent += value[j].percent; + value[i].count += value[j].count; + value.splice(j, 1); + j--; + } + } + } + result[countNum - 1].children.sort((a: any, b: any) => a.cpu - b.cpu); + for (let i = 0; i < cpuArr.length; i++) { + for (let j = 0; j < value.length; j++) { + if (cpuArr[i].cpu == value[j].cpu) { + cpuArr[i].children.push(value[j]); + cpuArr[i].dur += value[j].dur; + cpuArr[i].count += value[j].count; + cpuArr[i].percent += value[j].percent; + } + } + result[countNum - 1].dur += cpuArr[i].dur; + result[countNum - 1].count += cpuArr[i].count; + result[countNum - 1].percent += cpuArr[i].percent; + } + }); + return result; + } +} diff --git a/ide/src/trace/component/trace/sheet/frequsage/TabPaneFreqUsage.ts b/ide/src/trace/component/trace/sheet/frequsage/TabPaneFreqUsage.ts index 8814bed802417ce72c31d376ad0c8e99a07f4d1e..01460ab36881394612fe6a6ee7afa839813a7333 100644 --- a/ide/src/trace/component/trace/sheet/frequsage/TabPaneFreqUsage.ts +++ b/ide/src/trace/component/trace/sheet/frequsage/TabPaneFreqUsage.ts @@ -13,307 +13,350 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable, RedrawTreeForm } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionData, SelectionParam } from '../../../../bean/BoxSelection.js'; -import '../../../StackBar.js' -import { getTabRunningPercent, queryCpuFreqUsageData, queryCpuFreqFilterId } from '../../../../database/SqlLite.js'; -import { Utils } from '../../base/Utils.js'; -import { resizeObserver } from '../SheetUtils.js'; -import { SliceGroup } from '../../../../bean/StateProcessThread.js'; -import { SegMenTaTion } from "../../../chart/SpSegmentationChart.js"; -import { TabPaneFreqUsageConfig, TabPaneRunningConfig, TabPaneCpuFreqConfig } from "./TabPaneFreqUsageConfig.js"; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable, RedrawTreeForm } from '../../../../../base-ui/table/lit-table'; +import { SelectionData, SelectionParam } from '../../../../bean/BoxSelection'; +import '../../../StackBar'; +import { getTabRunningPercent, queryCpuFreqUsageData, queryCpuFreqFilterId } from '../../../../database/SqlLite'; +import { Utils } from '../../base/Utils'; +import { resizeObserver } from '../SheetUtils'; +import { SliceGroup } from '../../../../bean/StateProcessThread'; @element('tabpane-frequsage') export class TabPaneFreqUsage extends BaseElement { - private threadStatesTbl: LitTable | null | undefined; - private threadStatesTblSource: Array = []; - private currentSelectionParam: Selection | undefined; - private threadArr: Array = []; + private threadStatesTbl: LitTable | null | undefined; + private threadStatesTblSource: Array = []; + private currentSelectionParam: Selection | undefined; - set data(threadStatesParam: SelectionParam | any) { - if (this.currentSelectionParam === threadStatesParam) { - return; - } - this.threadStatesTbl!.loading = true; - this.currentSelectionParam = threadStatesParam; - this.threadStatesTblSource = []; - this.threadStatesTbl!.recycleDataSource = []; - let tableValue: any = this.threadStatesTbl; - tableValue.value = []; - this.threadArr = []; - this.init(threadStatesParam); - } - /** - * 初始化数据 - */ - async init(threadStatesParam: SelectionParam | any): Promise { - let [runningData, sum] = await this.queryRunningData(threadStatesParam); - let cpuFreqData: Array = await this.queryCpuFreqData(threadStatesParam); - let cpuMap: Map> = new Map(); - if (runningData.size > 0) { - // 创建进程级的数组 - let pidArr: Array = [], processArr: Array = threadStatesParam.processIds.length > 1 ? [...new Set(threadStatesParam.processIds)] : threadStatesParam.processIds; - for (let i of processArr) { - pidArr.push(new TabPaneFreqUsageConfig(Utils.PROCESS_MAP.get(i) === null ? 'Process ' + i : Utils.PROCESS_MAP.get(i) + ' ' + i, '', i, '', 0, '', '', 0, '', 0, 'process', -1, [])); - } - // 将cpu频点数据与running状态数据整合,保证其上该段时长内有对应的cpu频点数据 - this.mergeFreqData(runningData, cpuMap, cpuFreqData, sum, threadStatesParam); - // 将频点数据放置到对应cpu层级下 - this.mergeCpuData(cpuMap, runningData); - // 将cpu层级数据放置到线程分组下 - this.mergeThreadData(this.threadArr, cpuMap); - // 将线程层级数据放置到进程级分组下 - this.mergePidData(pidArr, this.threadArr); - // 百分比保留两位小数 - this.fixedDeal(pidArr) - this.threadStatesTblSource = pidArr; - this.threadStatesTbl!.recycleDataSource = pidArr; - this.threadStatesTbl!.loading = false; - this.theadClick(pidArr); - this.threadStatesTbl!.loading = false; - } else { - this.threadStatesTblSource = []; - this.threadStatesTbl!.recycleDataSource = []; - this.threadStatesTbl!.loading = false; - } - } - /** - * 查询cpu频点信息 - */ - async queryCpuFreqData(threadStatesParam: SelectionParam | any): Promise> { - // 查询cpu及id信息 - let result: Array = await queryCpuFreqFilterId(); - // 以键值对形式将cpu及id进行对应,后续会将频点数据与其对应cpu进行整合 - let IdMap: Map = new Map(); - let queryId: Array = []; - for (let i = 0; i < result.length; i++) { - queryId.push(result[i].id); - IdMap.set(result[i].id, result[i].cpu); - } - let dealArr: Array = []; - // 通过id去查询频点数据 - let res: Array = await queryCpuFreqUsageData(queryId); - for (let i of res) { - let obj = new TabPaneCpuFreqConfig(i.startNS + threadStatesParam.recordStartNs, IdMap.get(i.filter_id)!, i.value, i.dur) - dealArr.push(obj); - } - return dealArr; + set data(threadStatesParam: SelectionParam | any) { + if (this.currentSelectionParam === threadStatesParam) { + return; } - - /** - * 查询框选区域内的所有running状态数据 - */ - async queryRunningData(threadStatesParam: SelectionParam | any): Promise> { - // 查询running状态线程数据 - let result: Array = await getTabRunningPercent(threadStatesParam.threadIds, threadStatesParam.leftNs, threadStatesParam.rightNs); - let needDeal: Map> = new Map(), sum: number = 0; - if (result != null && result.length > 0) { - // 将running线程数据存到map中 - for (let e of result) { - if(threadStatesParam.processIds.includes(e.pid)){ - if (needDeal.get(e.pid + '_' + e.tid) === undefined) { - this.threadArr.push(new TabPaneFreqUsageConfig(Utils.THREAD_MAP.get(e.tid) + ' ' + e.tid, '', e.pid, e.tid, 0, '', '', 0, '', 0, 'thread', -1, [])); - needDeal.set(e.pid + '_' + e.tid, new Array()); - } - if ((e.ts < (threadStatesParam.leftNs + threadStatesParam.recordStartNs)) && ((e.ts + e.dur) > (threadStatesParam.leftNs + threadStatesParam.recordStartNs))) { - const ts = e.ts; - e.ts = threadStatesParam.leftNs + threadStatesParam.recordStartNs; - e.dur = ts + e.dur - (threadStatesParam.leftNs + threadStatesParam.recordStartNs); - } - if ((e.ts + e.dur) > (threadStatesParam.rightNs + threadStatesParam.recordStartNs)) { - e.dur = threadStatesParam.rightNs + threadStatesParam.recordStartNs - e.ts; - } - let process = Utils.PROCESS_MAP.get(e.pid); - let thread = Utils.THREAD_MAP.get(e.tid); - e.process = process == null || process.length == 0 ? '[NULL]' : process; - e.thread = thread == null || thread.length == 0 ? '[NULL]' : thread; - let arr: any = needDeal.get(e.pid + '_' + e.tid); - sum += e.dur; - arr.push(e); - } - } - } - return [needDeal, sum]; - } - - /** - * 整合running数据与频点数据 - */ - mergeFreqData(needDeal: Map>, cpuMap: Map>, dealArr: Array, sum: number, threadStatesParam: SelectionParam | any): void { - needDeal.forEach((value: Array, key: string) => { - let resultList: Array = [], cpuArr: Array = []; - cpuMap.set(key, new Array()); - const multiple: number = 1000; - for (let i = 0; i < value.length; i++) { - if (!cpuArr.includes(value[i].cpu)) { - cpuArr.push(value[i].cpu); - cpuMap.get(key)?.push(new TabPaneFreqUsageConfig(value[i].tid + '_' + Utils.THREAD_MAP.get(value[i].tid), '', value[i].pid, value[i].tid, 0, value[i].cpu, '', 0, '', 0, 'cpu', -1, [])); - } - for (let j = 0; j < dealArr.length; j++) { - const consumption = SegMenTaTion.freqInfoMapData.size > 0 ? SegMenTaTion.freqInfoMapData.get(value[i].cpu).get(dealArr[j].value) : dealArr[j].value; - // 只需要合并相同cpu的数据 - if (value[i].cpu === dealArr[j].cpu) { - // 当running状态数据的开始时间大于频点数据开始时间,小于频点结束时间。且running数据的持续时间小于频点结束时间减去running数据开始时间的差值的情况 - if (value[i].ts > dealArr[j].startNS && value[i].ts < (dealArr[j].startNS + dealArr[j].dur) && value[i].dur < (dealArr[j].startNS + dealArr[j].dur - value[i].ts)) { - resultList.push(new TabPaneFreqUsageConfig(value[i].tid + '_' + value[i].thread, value[i].ts, '', '', (consumption * value[i].dur) / multiple, value[i].cpu, dealArr[j].value, value[i].dur, '', value[i].dur / sum * 100, 'freqdata', -1, undefined)); - break; - } - // 当running状态数据的开始时间大于频点数据开始时间,小于频点结束时间。且running数据的持续时间大于等于频点结束时间减去running数据开始时间的差值的情况 - if (value[i].ts > dealArr[j].startNS && value[i].ts < (dealArr[j].startNS + dealArr[j].dur) && value[i].dur >= (dealArr[j].startNS + dealArr[j].dur - value[i].ts)) { - resultList.push(new TabPaneFreqUsageConfig(value[i].tid + '_' + value[i].thread, value[i].ts, '', '', (consumption * (dealArr[j].startNS + dealArr[j].dur - value[i].ts)) / multiple, value[i].cpu, dealArr[j].value, (dealArr[j].startNS + dealArr[j].dur - value[i].ts), '', (dealArr[j].startNS + dealArr[j].dur - value[i].ts) / sum * 100, 'freqdata', -1, undefined)); - } - // 当running状态数据的开始时间小于等于频点数据开始时间,结束时间大于频点开始时间。且running数据的持续时间减去频点数据开始时间的差值小于频点数据持续时间的情况 - if (value[i].ts <= dealArr[j].startNS && (value[i].ts + value[i].dur) > dealArr[j].startNS && (value[i].dur + value[i].ts - dealArr[j].startNS) < dealArr[j].dur) { - resultList.push(new TabPaneFreqUsageConfig(value[i].tid + '_' + value[i].thread, dealArr[j].startNS, '', '', (consumption * (value[i].dur + value[i].ts - dealArr[j].startNS)) / multiple, value[i].cpu, dealArr[j].value, (value[i].dur + value[i].ts - dealArr[j].startNS), '', (value[i].dur + value[i].ts - dealArr[j].startNS) / sum * 100, 'freqdata', -1, undefined)); - break; - } - // 当running状态数据的开始时间小于等于频点数据开始时间,结束时间大于频点开始时间。且running数据的持续时间减去频点数据开始时间的差值大于等于频点数据持续时间的情况 - if (value[i].ts <= dealArr[j].startNS && (value[i].ts + value[i].dur) > dealArr[j].startNS && (value[i].dur + value[i].ts - dealArr[j].startNS) >= dealArr[j].dur) { - resultList.push(new TabPaneFreqUsageConfig(value[i].tid + '_' + value[i].thread, dealArr[j].startNS, '', '', (consumption * dealArr[j].dur) / multiple, value[i].cpu, dealArr[j].value, dealArr[j].dur, '', dealArr[j].dur / sum * 100, 'freqdata', -1, undefined)); - } - // 当running状态数据的开始时间小于等于频点数据开始时间,结束时间小于等于频点开始时间的情况 - if (value[i].ts <= dealArr[j].startNS && (value[i].ts + value[i].dur) <= dealArr[j].startNS){ - resultList.push(new TabPaneFreqUsageConfig(value[i].tid + '_' + value[i].thread, value[i].ts, '', '', 0, value[i].cpu, 'unknown', value[i].dur, '', value[i].dur / sum * 100, 'freqdata', -1, undefined)); - break; - } - } - } - } - cpuMap.get(key)?.sort((a: any, b: any) => a.cpu - b.cpu); - needDeal.set(key, this.mergeData(resultList, threadStatesParam)); - }) - } - - /** - * 合并同一线程内,当运行所在cpu和频点相同时,dur及percent进行累加求和 - */ - mergeData(resultList: Array, threadStatesParam: SelectionParam | any): Array{ - for (let i = 0; i < resultList.length; i++) { - for (let j = i + 1; j < resultList.length; j++) { - if (resultList[i].cpu === resultList[j].cpu && resultList[i].freq === resultList[j].freq) { - resultList[i].dur += resultList[j].dur; - resultList[i].percent += resultList[j].percent; - resultList[i].count += resultList[j].count; - resultList.splice(j, 1); - j--; + this.threadStatesTbl!.loading = true; + this.currentSelectionParam = threadStatesParam; + this.threadStatesTblSource = []; + this.threadStatesTbl!.recycleDataSource = []; + let tableValue: any = this.threadStatesTbl; + tableValue.value = []; + // 查询框选区域内的状态为running的数据 + getTabRunningPercent(threadStatesParam.threadIds, threadStatesParam.leftNs, threadStatesParam.rightNs).then( + (result) => { + // 查询该trace文件中的cpu核数及id + queryCpuFreqFilterId().then((r) => { + // 将查询结果以键值对形式存入Map对象,仪表后续将频点数据与Cpu进行关联 + let IdMap = new Map(); + let queryId = new Array(); + for (let i = 0; i < r.length; i++) { + queryId.push(r[i].id); + IdMap.set(r[i].id, r[i].cpu); + } + // 通过cpu的id去查询总的cpu频点数据 + queryCpuFreqUsageData(queryId).then((res) => { + if (result != null && result.length > 0) { + let sum = 0; + let dealArr = new Array(); + // 将cpu频点数据进行整合 + for (let i of res) { + dealArr.push({ + startNS: i.startNS + threadStatesParam.recordStartNs, + dur: i.dur, + value: i.value, + cpu: IdMap.get(i.filter_id), + }); + } + let needDeal = new Map(); + let cpuMap = new Map(); + let pidArr = new Array(); + let threadArr = new Array(); + // 创建进程级的数组 + let processArr: any = + threadStatesParam.processIds.length > 1 + ? [...new Set(threadStatesParam.processIds)] + : threadStatesParam.processIds; + for (let i of processArr) { + pidArr.push({ + process: Utils.PROCESS_MAP.get(i) == null ? 'Process ' + i : Utils.PROCESS_MAP.get(i) + ' ' + i, + thread: Utils.PROCESS_MAP.get(i) == null ? 'Process ' + i : Utils.PROCESS_MAP.get(i) + ' ' + i, + pid: i, + tid: '', + count: 0, + cpu: '', + freq: '', + dur: 0, + percent: 0, + state: 'Running', + children: new Array(), + }); + } + // 将running线程数据存到map中 + for (let e of result) { + if (processArr.includes(e.pid) && e.state == 'Running') { + if (needDeal.get(e.pid + '_' + e.tid) == undefined) { + threadArr.push({ + process: + Utils.PROCESS_MAP.get(e.pid) == null + ? 'Process ' + e.pid + : Utils.PROCESS_MAP.get(e.pid) + ' ' + e.pid, + thread: Utils.THREAD_MAP.get(e.tid) + ' ' + e.tid, + pid: e.pid, + tid: e.tid, + count: 0, + cpu: '', + freq: '', + dur: 0, + percent: 0, + state: 'Running', + children: new Array(), + }); + needDeal.set(e.pid + '_' + e.tid, new Array()); + } + if ( + e.ts < threadStatesParam.leftNs + threadStatesParam.recordStartNs && + e.ts + e.dur > threadStatesParam.leftNs + threadStatesParam.recordStartNs + ) { + const ts = e.ts; + e.ts = threadStatesParam.leftNs + threadStatesParam.recordStartNs; + e.dur = ts + e.dur - (threadStatesParam.leftNs + threadStatesParam.recordStartNs); + } + if (e.ts + e.dur > threadStatesParam.rightNs + threadStatesParam.recordStartNs) { + e.dur = threadStatesParam.rightNs + threadStatesParam.recordStartNs - e.ts; + } + let arr = needDeal.get(e.pid + '_' + e.tid); + let process = Utils.PROCESS_MAP.get(e.pid); + let thread = Utils.THREAD_MAP.get(e.tid); + e.process = process == null || process.length == 0 ? '[NULL]' : process; + e.thread = thread == null || thread.length == 0 ? '[NULL]' : thread; + e.stateJX = e.state; + e.state = Utils.getEndState(e.stateJX); + sum += e.dur; + arr.push(e); } + } + // 整理running线程数据、cpu层级信息 + this.mergeFreqData(needDeal, cpuMap, dealArr, sum, threadStatesParam); + // 将频点数据放置到对应cpu层级下 + this.mergeCpuData(cpuMap, needDeal); + // 将cpu层级数据放置到线程分组下 + this.mergeThreadData(threadArr, cpuMap); + // 将线程层级数据放置到进程级分组下 + this.mergePidData(pidArr, threadArr); + // 百分比保留两位小数 + this.fixedDeal(pidArr); + this.threadStatesTblSource = pidArr; + this.threadStatesTbl!.recycleDataSource = pidArr; + this.threadStatesTbl!.loading = false; + this.theadClick(pidArr); + } else { + this.threadStatesTblSource = []; + this.threadStatesTbl!.recycleDataSource = []; + this.threadStatesTbl!.loading = false; } - resultList[i].ts = resultList[i].ts - threadStatesParam.recordStartNs; - } - resultList.sort((a, b) => b.count - a.count); - return resultList; - } + }); + }); + } + ); + } - /** - * 将整理好的running频点数据通过map的键放到对应的cpu分组层级下 - */ - mergeCpuData(cpuMap: Map>, needDeal: Map>): void { - cpuMap.forEach((value: Array, key: string) => { - let arr = needDeal.get(key); - for (let i = 0; i < value.length; i++) { - for (let j = 0; j < arr!.length; j++) { - if (arr![j].cpu === value[i].cpu) { - value[i].children?.push(arr![j]); - value[i].count += arr![j].count; - value[i].dur += arr![j].dur; - value[i].percent += arr![j].percent; - } - } + private theadClick(data: Array) { + let labels = this.threadStatesTbl?.shadowRoot?.querySelector('.th > .td')!.querySelectorAll('label'); + if (labels) { + for (let i = 0; i < labels.length; i++) { + let label = labels[i].innerHTML; + labels[i].addEventListener('click', (e) => { + if (label.includes('Process') && i === 0) { + this.threadStatesTbl!.setStatus(data, false); + this.threadStatesTbl!.recycleDs = this.threadStatesTbl!.meauseTreeRowElement(data, RedrawTreeForm.Retract); + } else if (label.includes('Thread') && i === 1) { + for (let item of data) { + item.status = true; + if (item.children != undefined && item.children.length > 0) { + this.threadStatesTbl!.setStatus(item.children, false); + } } + this.threadStatesTbl!.recycleDs = this.threadStatesTbl!.meauseTreeRowElement(data, RedrawTreeForm.Retract); + } else if (label.includes('CPU') && i === 2) { + this.threadStatesTbl!.setStatus(data, true); + this.threadStatesTbl!.recycleDs = this.threadStatesTbl!.meauseTreeRowElement(data, RedrawTreeForm.Expand); + } }); + } } - - /** - * 将整理好的cpu层级数据放到对应的线程下 - */ - mergeThreadData(threadArr: Array, cpuMap: Map>): void { - for (let i = 0; i < threadArr.length; i++) { - let cpuMapData = cpuMap.get(threadArr[i].pid + '_' + threadArr[i].tid); - for (let j = 0; j < cpuMapData!.length; j++) { - threadArr[i].children.push(cpuMapData![j]); - threadArr[i].count += cpuMapData![j].count; - threadArr[i].dur += cpuMapData![j].dur; - threadArr[i].percent += cpuMapData![j].percent; - } + } + mergeFreqData(needDeal: any, cpuMap: any, dealArr: any, sum: number, threadStatesParam: SelectionParam | any) { + needDeal.forEach((value: any, key: any) => { + let resultList = new Array(); + cpuMap.set(key, new Array()); + let cpuArr = new Array(); + const multiple = 1000; + for (let i = 0; i < value.length; i++) { + if (!cpuArr.includes(value[i].cpu)) { + cpuArr.push(value[i].cpu); + cpuMap + .get(key) + .push({ + process: + Utils.PROCESS_MAP.get(value[i].pid) == null + ? 'Process ' + value[i].pid + : Utils.PROCESS_MAP.get(value[i].pid) + ' ' + value[i].pid, + thread: value[i].tid + '_' + Utils.THREAD_MAP.get(value[i].tid), + pid: value[i].pid, + tid: value[i].tid, + count: 0, + cpu: value[i].cpu, + freq: '', + dur: 0, + percent: 0, + state: 'Running', + children: new Array(), + }); } - } - - /** - * 将整理好的线程层级数据放到对应的进程下 - */ - mergePidData(pidArr: Array, threadArr: Array): void { - for (let i = 0; i < pidArr.length; i++) { - for (let j = 0; j < threadArr.length; j++) { - if (pidArr[i].pid === threadArr[j].pid) { - pidArr[i].children.push(threadArr[j]); - pidArr[i].count += threadArr[j].count; - pidArr[i].dur += threadArr[j].dur; - pidArr[i].percent += threadArr[j].percent; + for (let j = 0; j < dealArr.length; j++) { + if (value[i].cpu == dealArr[j].cpu) { + if (value[i].ts > dealArr[j].startNS) { + if (value[i].ts < dealArr[j].startNS + dealArr[j].dur) { + if (value[i].dur < dealArr[j].startNS + dealArr[j].dur - value[i].ts) { + resultList.push({ + thread: value[i].tid + '_' + value[i].thread, + count: (dealArr[j].value * value[i].dur) / multiple, + cpu: value[i].cpu, + freq: dealArr[j].value, + dur: value[i].dur, + percent: (value[i].dur / sum) * 100, + state: 'Running', + ts: value[i].ts, + }); + break; + } else { + resultList.push({ + thread: value[i].tid + '_' + value[i].thread, + count: (dealArr[j].value * (dealArr[j].startNS + dealArr[j].dur - value[i].ts)) / multiple, + cpu: value[i].cpu, + freq: dealArr[j].value, + dur: dealArr[j].startNS + dealArr[j].dur - value[i].ts, + percent: ((dealArr[j].startNS + dealArr[j].dur - value[i].ts) / sum) * 100, + state: 'Running', + ts: value[i].ts, + }); } - } - } - } - - /** - * 递归整理数据小数位 - */ - fixedDeal(arr: Array): void { - if (arr == undefined) { - return; - } - for (let i = 0; i < arr.length; i++) { - arr[i].percent = arr[i].percent > 100 ? 100 : arr[i].percent; - arr[i].percent = arr[i].percent.toFixed(2); - arr[i].dur = (arr[i].dur / 1000000).toFixed(3); - arr[i].count = (arr[i].count / 1000000).toFixed(3); - if (arr[i].freq !== '') { - if (arr[i].freq === 'unknown') { - arr[i].freq = 'unknown'; + } + } else { + if (value[i].ts + value[i].dur > dealArr[j].startNS) { + if (value[i].dur + value[i].ts - dealArr[j].startNS < dealArr[j].dur) { + resultList.push({ + thread: value[i].tid + '_' + value[i].thread, + count: (dealArr[j].value * (value[i].dur + value[i].ts - dealArr[j].startNS)) / multiple, + cpu: value[i].cpu, + freq: dealArr[j].value, + dur: value[i].dur + value[i].ts - dealArr[j].startNS, + percent: ((value[i].dur + value[i].ts - dealArr[j].startNS) / sum) * 100, + state: 'Running', + ts: dealArr[j].startNS, + }); + break; } else { - arr[i].freq = arr[i].freq / 1000; + resultList.push({ + thread: value[i].tid + '_' + value[i].thread, + count: (dealArr[j].value * dealArr[j].dur) / multiple, + cpu: value[i].cpu, + freq: dealArr[j].value, + dur: dealArr[j].dur, + percent: (dealArr[j].dur / sum) * 100, + state: 'Running', + ts: dealArr[j].startNS, + }); } + } else { + resultList.push({ + thread: value[i].tid + '_' + value[i].thread, + count: 0, + cpu: value[i].cpu, + freq: 'unknown', + dur: value[i].dur, + percent: (value[i].dur / sum) * 100, + state: 'Running', + ts: value[i].ts, + }); + break; + } } - this.fixedDeal(arr[i].children); + } + } + } + //合并同一线程内,当运行所在cpu和频点相同时,dur及percent进行累加求和,或许可以进行算法优化 + for (let i = 0; i < resultList.length; i++) { + for (let j = i + 1; j < resultList.length; j++) { + if (resultList[i].cpu == resultList[j].cpu && resultList[i].freq == resultList[j].freq) { + resultList[i].dur += resultList[j].dur; + resultList[i].percent += resultList[j].percent; + resultList[i].count += resultList[j].count; + resultList.splice(j, 1); + j--; + } + } + resultList[i].ts = resultList[i].ts - threadStatesParam.recordStartNs; + } + resultList.sort((a, b) => b.count - a.count); + cpuMap.get(key).sort((a: any, b: any) => a.cpu - b.cpu); + needDeal.set(key, resultList); + }); + } + mergeCpuData(cpuMap: any, needDeal: any) { + cpuMap.forEach((value: any, key: any) => { + let arr = needDeal.get(key); + for (let i = 0; i < value.length; i++) { + for (let j = 0; j < arr.length; j++) { + if (arr[j].cpu == value[i].cpu) { + value[i].children.push(arr[j]); + value[i].count += arr[j].count; + value[i].dur += arr[j].dur; + value[i].percent += arr[j].percent; + } } + } + }); + } + mergeThreadData(threadArr: any, cpuMap: any) { + for (let i = 0; i < threadArr.length; i++) { + let cpuMapData = cpuMap.get(threadArr[i].pid + '_' + threadArr[i].tid); + for (let j = 0; j < cpuMapData.length; j++) { + threadArr[i].children.push(cpuMapData[j]); + threadArr[i].count += cpuMapData[j].count; + threadArr[i].dur += cpuMapData[j].dur; + threadArr[i].percent += cpuMapData[j].percent; + } } - /** - * 表头点击事件 - */ - private theadClick(data: Array): void { - let labels = this.threadStatesTbl?.shadowRoot?.querySelector('.th > .td')!.querySelectorAll('label'); - if (labels) { - for (let i = 0; i < labels.length; i++) { - let label = labels[i].innerHTML; - labels[i].addEventListener('click', (e) => { - if (label.includes('Process') && i === 0) { - this.threadStatesTbl!.setStatus(data, false); - this.threadStatesTbl!.recycleDs = this.threadStatesTbl!.meauseTreeRowElement(data, RedrawTreeForm.Retract); - } else if (label.includes('Thread') && i === 1) { - for (let item of data) { - item.status = true; - if (item.children != undefined && item.children.length > 0) { - this.threadStatesTbl!.setStatus(item.children, false); - } - } - this.threadStatesTbl!.recycleDs = this.threadStatesTbl!.meauseTreeRowElement(data, RedrawTreeForm.Retract); - } else if (label.includes('CPU') && i === 2) { - this.threadStatesTbl!.setStatus(data, true); - this.threadStatesTbl!.recycleDs = this.threadStatesTbl!.meauseTreeRowElement(data, RedrawTreeForm.Expand); - } - }); - } + } + mergePidData(pidArr: any, threadArr: any) { + for (let i = 0; i < pidArr.length; i++) { + for (let j = 0; j < threadArr.length; j++) { + if (pidArr[i].pid == threadArr[j].pid) { + pidArr[i].children.push(threadArr[j]); + pidArr[i].count += threadArr[j].count; + pidArr[i].dur += threadArr[j].dur; + pidArr[i].percent += threadArr[j].percent; } + } } - initElements(): void { - this.threadStatesTbl = this.shadowRoot?.querySelector('#tb-running-percent'); + } + fixedDeal(arr: any) { + if (arr == undefined) { + return; } - connectedCallback(): void { - super.connectedCallback(); - resizeObserver(this.parentElement!, this.threadStatesTbl!); + for (let i = 0; i < arr.length; i++) { + arr[i].percent = arr[i].percent > 100 ? 100 : arr[i].percent; + arr[i].percent = arr[i].percent.toFixed(2); + this.fixedDeal(arr[i].children); } - initHtml(): string { - return ` + } + initElements(): void { + this.threadStatesTbl = this.shadowRoot?.querySelector('#tb-running-percent'); + } + connectedCallback() { + super.connectedCallback(); + resizeObserver(this.parentElement!, this.threadStatesTbl!); + } + initHtml(): string { + return ` -
- - -
- - -
-
- - - - - - - - - - - - - - - ` - } - - private validationFun(threadIdValue: string, threadFuncName: string, originalThreadIdStyle: string, originalThreadFuncStyle: string, originalThreadIdPlaceholder: string, originalThreadFuncPlaceholder: string, fun: string) { - if (threadIdValue == '') { - this.threadStatesTbl!.loading = false; - this._threadId!.style.border = '1px solid rgb(255,0,0)'; - this._threadId!.setAttribute('placeholder', 'Please input thread id'); - this.threadStatesTbl!.recycleDataSource = []; - } else if (threadFuncName == '') { - this.threadStatesTbl!.loading = false; - this._threadFunc!.style.border = '1px solid rgb(255,0,0)'; - this._threadFunc!.setAttribute('placeholder', 'Please input function name'); - this.threadStatesTbl!.recycleDataSource = []; - } else { - this._threadId!.style.border = originalThreadIdStyle; - this._threadFunc!.style.border = originalThreadFuncStyle; - this._threadId!.setAttribute('placeholder', originalThreadIdPlaceholder); - this._threadFunc!.setAttribute('placeholder', originalThreadFuncPlaceholder); - if (fun == 'single') { - getGpufreqDataCut(threadIdValue, threadFuncName, this.currentSelectionParam.leftNs, this.currentSelectionParam.rightNs, true, false).then((result) => { - let _initData = JSON.parse(JSON.stringify(this.initData)) - this.dataCutFun(_initData, result) - }) - } - if (fun == 'loop') { - getGpufreqDataCut(threadIdValue, threadFuncName, this.currentSelectionParam.leftNs, this.currentSelectionParam.rightNs, false, true).then((result) => { - let _initData = JSON.parse(JSON.stringify(this.initData)) - this.dataCutFun(_initData, result) - }) - } - - } - } - - private dataCutFun(initData: Array, dataCut: Array) { - let earliest: number = 0 - let selectGpufreqData = new Array(); - if (initData.length > 0 && dataCut.length > 0) { - let lastList = [] - getGpufreqData(this.currentSelectionParam.leftNs, this.currentSelectionParam.rightNs, true).then((result) => { - if (result.length > 0) { - earliest = result[0].startNS - let _dataCut = dataCut.filter(i => i.startTime >= earliest); - for (let i = 0; i < _dataCut.length; i++) { - let e = _dataCut[i]; - for (let j of initData) { - if (e.startTime >= j.startNS && e.startTime <= j.endTime) { - if (e.endTime <= j.endTime) { - let obj = { - 'startNS': e.startTime, - 'endTime': e.endTime, - 'dur': e.endTime - e.startTime, - 'count': (e.endTime - e.startTime) * j.value, - 'ts': e.startTime + this.currentSelectionParam.recordStartNs, - 'parentIndex': i, - 'thread': j.thread, - 'filterId': j.filterId, - 'freq': j.freq, - 'value': j.value - } - lastList.push(obj) - } else { - let obj = { - 'startNS': e.startTime, - 'endTime': j.endTime, - 'dur': j.endTime - e.startTime, - 'count': (j.endTime - e.startTime) * j.value, - 'ts': e.startTime + this.currentSelectionParam.recordStartNs, - 'parentIndex': i, - 'thread': j.thread, - 'filterId': j.filterId, - 'freq': j.freq, - 'value': j.value - } - lastList.push(obj) - } - } else if (e.startTime <= j.startNS && j.endTime <= e.endTime) { - let obj = { - 'startNS': j.startNS, - 'endTime': j.endTime, - 'dur': j.endTime - j.startNS, - 'count': (j.endTime - j.startNS) * j.value, - 'ts': j.startNS + this.currentSelectionParam.recordStartNs, - 'parentIndex': i, - 'thread': j.thread, - 'filterId': j.filterId, - 'freq': j.freq, - 'value': j.value - } - lastList.push(obj) - } - else if (j.startNS <= e.endTime && e.endTime <= j.endTime) { - let obj = { - 'startNS': j.startNS, - 'endTime': e.endTime, - 'dur': e.endTime - j.startNS, - 'count': (e.endTime - j.startNS) * j.value, - 'ts': j.startNS + this.currentSelectionParam.recordStartNs, - 'parentIndex': i, - 'thread': j.thread, - 'filterId': j.filterId, - 'freq': j.freq, - 'value': j.value - } - lastList.push(obj) - } - } - } - let tree = this.createTree(lastList) - selectGpufreqData.push(tree) - this.threadStatesTbl!.recycleDataSource = selectGpufreqData; - this.threadStatesTbl!.loading = false; - this.theadClick(selectGpufreqData) - } else { - this.threadStatesTbl!.recycleDataSource = [] - this.threadStatesTbl!.loading = false; - } - - }) - - - } else { - this.threadStatesTbl!.recycleDataSource = [] - this.threadStatesTbl!.loading = false; - } - } - - private createTree(data: Array) { - if (data.length > 0) { - const root = { - thread: "gpufreq Frequency", - count: '0', - freq: '', - dur: '0', - percent: '100', - level: 1, - children: [], - }; - - const valueMap = {}; - data.forEach((item: any) => { - const parentIndex = item.parentIndex; - const freq = item.freq; - const unit = 1000000 - const kunit= 1000000000000 - item.thread = `${item.thread} Frequency`; - item.level = 4 - item.dur = (item.dur / unit).toFixed(3) - item.count = (item.count / kunit).toFixed(3) - item.freq = (item.freq).toFixed(3) - if (!valueMap[parentIndex]) { - valueMap[parentIndex] = { - thread: `cycle ${parentIndex + 1} ${item.thread}`, - count: item.count, - dur: item.dur, - ts: item.ts, - startTime: (item.startNS / unit).toFixed(3), - startNS: item.startNS, - percent: '100', - level: 2, - cycle: parentIndex + 1, - children: [], - }; - } else { - let fdur = Number(valueMap[parentIndex].dur) - let fcount = Number(valueMap[parentIndex].count) - let idur = Number(item.dur) - let icount = Number(item.count) - fdur += idur; - valueMap[parentIndex].dur = fdur.toFixed(3); - fcount += icount; - valueMap[parentIndex].count = fcount.toFixed(3); - } - - if (!valueMap[parentIndex].children[freq]) { - valueMap[parentIndex].children[freq] = { - thread: item.thread, - count: item.count, - gpufreq: item.freq, - dur: item.dur, - percent: '100', - level: 3, - children: [], - }; - } else { - let zdur = Number(valueMap[parentIndex].children[freq].dur) - let zcount = Number(valueMap[parentIndex].children[freq].count) - let idur = Number(item.dur) - let icount = Number(item.count) - zdur += idur; - valueMap[parentIndex].children[freq].dur = zdur.toFixed(3); - zcount += icount; - valueMap[parentIndex].children[freq].count = zcount.toFixed(3); - } - valueMap[parentIndex].children[freq].children.push(item); - - }) - Object.values(valueMap).forEach((node: any) => { - const parentNode = valueMap[node.value - 1]; - if (parentNode) { - parentNode.children.push(node); - let pdur = Number(parentNode.dur) - let pcount = Number(parentNode.count) - let ndur = Number(node.dur) - let ncount = Number(node.count) - pdur += ndur; - parentNode.dur = pdur.toFixed(3); - pcount += ncount; - parentNode.count += pcount.toFixed(3); - } else { - root.children.push(node); - let rdur = Number(root.dur) - let rcount = Number(root.count) - let ndur = Number(node.dur) - let ncount = Number(node.count) - rdur += ndur; - root.dur = rdur.toFixed(3); - rcount += ncount; - root.count = rcount.toFixed(3); - } - - }); - // 移除 key 值 - root.children.forEach((item: any) => { - item.children = Object.values(item.children); - }) - function calculatePercent(node: any) { - if (node.count === 0 || node.count === undefined) { - return; - } - node.percent = (Number(node.count) / Number(root.count) * 100).toFixed(2); - - if (node.children && node.children.length > 0) { - node.children.forEach(calculatePercent); - } else { - return; - } - } - calculatePercent(root); - - SegMenTaTion.setChartData('GPU-FREQ', root.children) - return root; - - } else { - return {} - } - } - - private theadClick(data: Array) { - let labels = this.threadStatesTbl?.shadowRoot?.querySelector('.th > .td')!.querySelectorAll('label'); - - if (labels) { - for (let i = 0; i < labels.length; i++) { - let label = labels[i].innerHTML; - labels[i].addEventListener('click', (e) => { - - if (label.includes('All') && i === 0) { - this.threadStatesTbl!.setStatus(data, false); - this.threadStatesTbl!.recycleDs = this.threadStatesTbl!.meauseTreeRowElement(data, RedrawTreeForm.Retract); - - } else if (label.includes('Cycle') && i === 1) { - for (let item of data) { - item.status = true; - if (item.children != undefined && item.children.length > 0) { - this.threadStatesTbl!.setStatus(item.children, false); - } - } - this.threadStatesTbl!.recycleDs = this.threadStatesTbl!.meauseTreeRowElement(data, RedrawTreeForm.Retract); - - } else if (label.includes('Freq') && i === 2) { - for (let item of data) { - item.status = true; - for (let e of item.children ? item.children : []) { - e.status = true; - if (e.children != undefined && e.children.length > 0) { - this.threadStatesTbl!.setStatus(e.children, false, 0); - } - } - } - - this.threadStatesTbl!.recycleDs = this.threadStatesTbl!.meauseTreeRowElement(data, RedrawTreeForm.Retract); - - } else if (label.includes('Thread') && i === 3) { - this.threadStatesTbl!.setStatus(data, true); - this.threadStatesTbl!.recycleDs = this.threadStatesTbl!.meauseTreeRowElement(data, RedrawTreeForm.Expand); - - } - }); - } - } - - } - -} \ No newline at end of file diff --git a/ide/src/trace/component/trace/sheet/gpufreq/tabPaneGpufreqUsage.ts b/ide/src/trace/component/trace/sheet/gpufreq/tabPaneGpufreqUsage.ts deleted file mode 100644 index eac6a133918b6f306ba3c4b4042649c2013a31a7..0000000000000000000000000000000000000000 --- a/ide/src/trace/component/trace/sheet/gpufreq/tabPaneGpufreqUsage.ts +++ /dev/null @@ -1,221 +0,0 @@ -/* - * Copyright (C) 2022 Huawei Device Co., Ltd. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable, RedrawTreeForm } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionData, SelectionParam } from '../../../../bean/BoxSelection.js'; -import { getGpufreqData } from '../../../../database/SqlLite.js'; -import { resizeObserver } from '../SheetUtils.js'; -import { SliceGroup } from '../../../../bean/StateProcessThread.js'; - -@element('tabpane-gpufreq') -export class TabPaneGpufreq extends BaseElement { - private threadStatesTbl: LitTable | null | undefined; - private currentSelectionParam: Selection | undefined; - - set data(clockCounterValue: SelectionParam | any) { - let dataSource: Array = []; - if (this.currentSelectionParam === clockCounterValue) { - return; - } - this.currentSelectionParam = clockCounterValue; - this.threadStatesTbl!.recycleDataSource = []; - this.threadStatesTbl!.loading = true; - getGpufreqData(clockCounterValue.leftNs, clockCounterValue.rightNs, false).then((result) => { - if (result != null && result.length > 0) { - let resultList = JSON.parse(JSON.stringify(result)) - if (result.length == 1) { - resultList[0].dur = clockCounterValue.rightNs - clockCounterValue.leftNs - resultList[0].count = resultList[0].dur * resultList[0].value - } else { - resultList[0].dur = resultList[1].startNS - clockCounterValue.leftNs - resultList[0].count = resultList[0].dur * resultList[0].value - - resultList[resultList.length - 1].dur = clockCounterValue.rightNs - resultList[resultList.length - 1].startNS - resultList[resultList.length - 1].count = resultList[resultList.length - 1].dur * resultList[resultList.length - 1].value - } - let sd: any = this.createTree(resultList); - dataSource = sd; - this.threadStatesTbl!.recycleDataSource = dataSource; - this.threadStatesTbl!.loading = false; - let List = new Array(); - List.push(...dataSource) - this.theadClick(List) - } else { - this.threadStatesTbl!.recycleDataSource = []; - this.threadStatesTbl!.loading = false; - } - - }) - - } - - initElements(): void { - this.threadStatesTbl = this.shadowRoot?.querySelector('#tb-gpufreq-percent'); - } - - connectedCallback() { - super.connectedCallback(); - resizeObserver(this.parentElement!, this.threadStatesTbl!); - } - - initHtml(): string { - return ` - - - - - - - - - - - - - - ` - } - - private createTree(sourceList: Array) { - let selectGpufreqData = new Array(); - if (sourceList.length > 0) { - function createTree(data: Array) { - const root = { - thread: "gpufreq Frequency", - count: '0', - freq: '', - dur: '0', - percent: '100', - children: [], - }; - - const valueMap = {}; - data.forEach((item: any) => { - const freq = item.freq; - const unit = 1000000 - const kunit= 1000000000000 - item.dur = (item.dur / unit).toFixed(3) - item.count = (item.count / kunit).toFixed(3) - item.freq = (item.freq).toFixed(3) - item.thread = `${item.thread} Frequency` - if (!valueMap[freq]) { - valueMap[freq] = { - thread: "gpufreq Frequency", - count: item.count, - gpufreq: item.freq, - dur: item.dur, - percent: '100', - children: [], - }; - } else { - let fdur = Number(valueMap[freq].dur) - let fcount = Number(valueMap[freq].count) - let idur = Number(item.dur) - let icount = Number(item.count) - fdur += idur; - valueMap[freq].dur = fdur.toFixed(3); - fcount += icount; - valueMap[freq].count = fcount.toFixed(3); - } - valueMap[freq].children.push(item); - }); - - function calculatePercent(node: any) { - if (node.count === 0 || node.count === undefined) { - return; - } - node.percent = (Number(node.count) / Number(root.count) * 100).toFixed(2); - - if (node.children && node.children.length > 0) { - node.children.forEach(calculatePercent); - } else { - return - } - } - - Object.values(valueMap).forEach((node: any) => { - const parentNode = valueMap[node.value - 1]; - if (parentNode) { - parentNode.children.push(node); - let pdur = Number(parentNode.dur) - let pcount = Number(parentNode.count) - let ndur = Number(node.dur) - let ncount = Number(node.count) - pdur += ndur; - parentNode.dur = pdur.toFixed(3); - pcount += ncount; - parentNode.count += pcount.toFixed(3); - } else { - root.children.push(node); - let rdur = Number(root.dur) - let rcount = Number(root.count) - let ndur = Number(node.dur) - let ncount = Number(node.count) - rdur += ndur; - root.dur = rdur.toFixed(3); - rcount += ncount; - root.count = rcount.toFixed(3); - } - - }); - calculatePercent(root); - - return root; - } - const tree = createTree(sourceList); - selectGpufreqData.push(tree) - - } - return selectGpufreqData - } - - private theadClick(data: Array) { - let labels = this.threadStatesTbl?.shadowRoot?.querySelector('.th > .td')!.querySelectorAll('label'); - - if (labels) { - for (let i = 0; i < labels.length; i++) { - let label = labels[i].innerHTML; - labels[i].addEventListener('click', (e) => { - - if (label.includes('All') && i === 0) { - this.threadStatesTbl!.setStatus(data, false); - this.threadStatesTbl!.recycleDs = this.threadStatesTbl!.meauseTreeRowElement(data, RedrawTreeForm.Retract); - - } else if (label.includes('Freq') && i === 1) { - - for (let item of data) { - item.status = true; - if (item.children != undefined && item.children.length > 0) { - this.threadStatesTbl!.setStatus(item.children, false); - } - } - this.threadStatesTbl!.recycleDs = this.threadStatesTbl!.meauseTreeRowElement(data, RedrawTreeForm.Retract); - - } else if (label.includes('Thread') && i === 2) { - this.threadStatesTbl!.setStatus(data, true); - this.threadStatesTbl!.recycleDs = this.threadStatesTbl!.meauseTreeRowElement(data, RedrawTreeForm.Expand); - } - }); - } - } - } -} \ No newline at end of file diff --git a/ide/src/trace/component/trace/sheet/hilog/TabPaneHiLogSummary.ts b/ide/src/trace/component/trace/sheet/hilog/TabPaneHiLogSummary.ts index 3da7ee6597a1043b315f00fe8ca566528c94f512..64de128b675b4bee05f9e381bb2ee63bfb0e2e17 100644 --- a/ide/src/trace/component/trace/sheet/hilog/TabPaneHiLogSummary.ts +++ b/ide/src/trace/component/trace/sheet/hilog/TabPaneHiLogSummary.ts @@ -13,12 +13,12 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; -import { LogStruct } from '../../../../database/ui-worker/ProcedureWorkerLog.js'; -import { ColorUtils } from '../../base/ColorUtils.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { LitIcon } from '../../../../../base-ui/icon/LitIcon.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { SelectionParam } from '../../../../bean/BoxSelection'; +import { LogStruct } from '../../../../database/ui-worker/ProcedureWorkerLog'; +import { ColorUtils } from '../../base/ColorUtils'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { LitIcon } from '../../../../../base-ui/icon/LitIcon'; @element('tab-hi-log-summary') export class TabPaneHiLogSummary extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/hilog/TabPaneHiLogs.ts b/ide/src/trace/component/trace/sheet/hilog/TabPaneHiLogs.ts index cf3b8983c77be18ba152d4f25150e2576c476322..bb4c18b0522e547973e91cf4a4fb914f9cce3461 100644 --- a/ide/src/trace/component/trace/sheet/hilog/TabPaneHiLogs.ts +++ b/ide/src/trace/component/trace/sheet/hilog/TabPaneHiLogs.ts @@ -13,16 +13,16 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; -import { TraceRow } from '../../base/TraceRow.js'; -import { TraceSheet } from '../../base/TraceSheet.js'; -import { Flag } from '../../timer-shaft/Flag.js'; -import { SpSystemTrace } from '../../../SpSystemTrace.js'; -import { ns2Timestamp, ns2x, Rect } from '../../../../database/ui-worker/ProcedureWorkerCommon.js'; -import { LogStruct } from '../../../../database/ui-worker/ProcedureWorkerLog.js'; -import { ColorUtils } from '../../base/ColorUtils.js'; -import { LitPageTable } from '../../../../../base-ui/table/LitPageTable.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { SelectionParam } from '../../../../bean/BoxSelection'; +import { TraceRow } from '../../base/TraceRow'; +import { TraceSheet } from '../../base/TraceSheet'; +import { Flag } from '../../timer-shaft/Flag'; +import { SpSystemTrace } from '../../../SpSystemTrace'; +import { ns2Timestamp, ns2x, Rect } from '../../../../database/ui-worker/ProcedureWorkerCommon'; +import { LogStruct } from '../../../../database/ui-worker/ProcedureWorkerLog'; +import { ColorUtils } from '../../base/ColorUtils'; +import { LitPageTable } from '../../../../../base-ui/table/LitPageTable'; @element('tab-hi-log') export class TabPaneHiLogs extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/hiperf/TabPanePerfAnalysis.ts b/ide/src/trace/component/trace/sheet/hiperf/TabPanePerfAnalysis.ts index 869e257782ef0893b7dd8e4bc15b21191b0cf561..0aff8cc73fb72abd7a4f9b9983c32986763af58b 100644 --- a/ide/src/trace/component/trace/sheet/hiperf/TabPanePerfAnalysis.ts +++ b/ide/src/trace/component/trace/sheet/hiperf/TabPanePerfAnalysis.ts @@ -13,17 +13,17 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; -import { LitChartPie } from '../../../../../base-ui/chart/pie/LitChartPie.js'; -import '../../../../../base-ui/chart/pie/LitChartPie.js'; -import { LitProgressBar } from '../../../../../base-ui/progress-bar/LitProgressBar.js'; -import { procedurePool } from '../../../../database/Procedure.js'; -import { TabPaneFilter } from '../TabPaneFilter.js'; -import { LitCheckBox } from '../../../../../base-ui/checkbox/LitCheckBox.js'; -import { initSort } from '../SheetUtils.js'; -import { TabpanePerfProfile } from './TabPerfProfile.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { SelectionParam } from '../../../../bean/BoxSelection'; +import { LitChartPie } from '../../../../../base-ui/chart/pie/LitChartPie'; +import '../../../../../base-ui/chart/pie/LitChartPie'; +import { LitProgressBar } from '../../../../../base-ui/progress-bar/LitProgressBar'; +import { procedurePool } from '../../../../database/Procedure'; +import { TabPaneFilter } from '../TabPaneFilter'; +import { LitCheckBox } from '../../../../../base-ui/checkbox/LitCheckBox'; +import { initSort } from '../SheetUtils'; +import { TabpanePerfProfile } from './TabPerfProfile'; @element('tabpane-perf-analysis') export class TabPanePerfAnalysis extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/hiperf/TabPerfBottomUp.ts b/ide/src/trace/component/trace/sheet/hiperf/TabPerfBottomUp.ts index 0528dedd3925662b8dc331016b1b83047a366f90..ed000f5f3233ebb9c04064bc0f5dd5804d337d90 100644 --- a/ide/src/trace/component/trace/sheet/hiperf/TabPerfBottomUp.ts +++ b/ide/src/trace/component/trace/sheet/hiperf/TabPerfBottomUp.ts @@ -13,18 +13,18 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { type LitTable } from '../../../../../base-ui/table/lit-table.js'; -import '../TabPaneFilter.js'; -import { type FilterData, TabPaneFilter } from '../TabPaneFilter.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; -import '../../../chart/FrameChart.js'; -import '../../../../../base-ui/slicer/lit-slicer.js'; -import '../../../../../base-ui/progress-bar/LitProgressBar.js'; -import { procedurePool } from '../../../../database/Procedure.js'; -import { type LitProgressBar } from '../../../../../base-ui/progress-bar/LitProgressBar.js'; -import { type PerfBottomUpStruct } from '../../../../bean/PerfBottomUpStruct.js'; -import { findSearchNode } from '../../../../database/ui-worker/ProcedureWorkerCommon.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { type LitTable } from '../../../../../base-ui/table/lit-table'; +import '../TabPaneFilter'; +import { type FilterData, TabPaneFilter } from '../TabPaneFilter'; +import { SelectionParam } from '../../../../bean/BoxSelection'; +import '../../../chart/FrameChart'; +import '../../../../../base-ui/slicer/lit-slicer'; +import '../../../../../base-ui/progress-bar/LitProgressBar'; +import { procedurePool } from '../../../../database/Procedure'; +import { type LitProgressBar } from '../../../../../base-ui/progress-bar/LitProgressBar'; +import { type PerfBottomUpStruct } from '../../../../bean/PerfBottomUpStruct'; +import { findSearchNode } from '../../../../database/ui-worker/ProcedureWorkerCommon'; @element('tabpane-perf-bottom-up') export class TabpanePerfBottomUp extends BaseElement { @@ -51,9 +51,9 @@ export class TabpanePerfBottomUp extends BaseElement { if (this.searchValue !== this.bottomUpFilter!.filterValue) { this.searchValue = this.bottomUpFilter!.filterValue; findSearchNode(this.bottomUpSource, this.searchValue, false); - this.bottomUpTable!.setStatus(this.bottomUpSource, true); - this.setBottomUpTableData(this.bottomUpSource); } + this.bottomUpTable!.setStatus(this.bottomUpSource, true); + this.setBottomUpTableData(this.bottomUpSource); }); } @@ -98,18 +98,25 @@ export class TabpanePerfBottomUp extends BaseElement { const percentageDenominator = 100; const percentFraction = 1; this.stackTable!.recycleDataSource = []; - let sum = results.reduce((sum, struct) => { - sum.totalCount += struct.selfTime; - sum.totalEvent += struct.eventCount; - return sum; - }, { - totalCount: 0, - totalEvent: 0 - }); + let sum = results.reduce( + (sum, struct) => { + sum.totalCount += struct.selfTime; + sum.totalEvent += struct.eventCount; + return sum; + }, + { + totalCount: 0, + totalEvent: 0, + } + ); const setTabData = (array: Array): void => { array.forEach((data) => { - data.totalTimePercent = `${((data.totalTime / sum.totalCount) * percentageDenominator).toFixed(percentFraction)}%`; - data.selfTimePercent = `${((data.selfTime / sum.totalCount) * percentageDenominator).toFixed(percentFraction)}%`; + data.totalTimePercent = `${((data.totalTime / sum.totalCount) * percentageDenominator).toFixed( + percentFraction + )}%`; + data.selfTimePercent = `${((data.selfTime / sum.totalCount) * percentageDenominator).toFixed( + percentFraction + )}%`; data.eventPercent = `${((data.eventCount / sum.totalEvent) * percentageDenominator).toFixed(percentFraction)}%`; setTabData(data.children); }); diff --git a/ide/src/trace/component/trace/sheet/hiperf/TabPerfProfile.ts b/ide/src/trace/component/trace/sheet/hiperf/TabPerfProfile.ts index dc4aff849773c400558782473a2c642b42c34028..e713b83fb8e26ee233c61f3b6ef1eedd59d1f93f 100644 --- a/ide/src/trace/component/trace/sheet/hiperf/TabPerfProfile.ts +++ b/ide/src/trace/component/trace/sheet/hiperf/TabPerfProfile.ts @@ -13,22 +13,22 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import '../TabPaneFilter.js'; -import { FilterData, TabPaneFilter } from '../TabPaneFilter.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; -import { PerfCallChainMerageData, PerfLevelStruct } from '../../../../bean/PerfProfile.js'; -import '../../../chart/FrameChart.js'; -import { FrameChart } from '../../../chart/FrameChart.js'; -import { ChartMode } from '../../../../bean/FrameChartStruct.js'; -import '../../../../../base-ui/slicer/lit-slicer.js'; -import '../../../../../base-ui/progress-bar/LitProgressBar.js'; -import { LitProgressBar } from '../../../../../base-ui/progress-bar/LitProgressBar.js'; -import { procedurePool } from '../../../../database/Procedure.js'; -import { showButtonMenu } from '../SheetUtils.js'; -import '../../../../../base-ui/headline/lit-headline.js'; -import { LitHeadLine } from '../../../../../base-ui/headline/lit-headline.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import '../TabPaneFilter'; +import { FilterData, TabPaneFilter } from '../TabPaneFilter'; +import { SelectionParam } from '../../../../bean/BoxSelection'; +import { PerfCallChainMerageData, PerfLevelStruct } from '../../../../bean/PerfProfile'; +import '../../../chart/FrameChart'; +import { FrameChart } from '../../../chart/FrameChart'; +import { ChartMode } from '../../../../bean/FrameChartStruct'; +import '../../../../../base-ui/slicer/lit-slicer'; +import '../../../../../base-ui/progress-bar/LitProgressBar'; +import { LitProgressBar } from '../../../../../base-ui/progress-bar/LitProgressBar'; +import { procedurePool } from '../../../../database/Procedure'; +import { showButtonMenu } from '../SheetUtils'; +import '../../../../../base-ui/headline/lit-headline'; +import { LitHeadLine } from '../../../../../base-ui/headline/lit-headline'; const InvertOptionIndex: number = 0; const hideThreadOptionIndex: number = 3; @@ -516,6 +516,8 @@ export class TabpanePerfProfile extends BaseElement { this.switchFlameChart(data); }); } else { + this.perfProfilerTbl!.setStatus(this.perfProfilerDataSource, true); + this.setPerfProfilerLeftTableData(this.perfProfilerDataSource); this.switchFlameChart(data); } }); diff --git a/ide/src/trace/component/trace/sheet/hiperf/TabPerfSampleList.ts b/ide/src/trace/component/trace/sheet/hiperf/TabPerfSampleList.ts index 5cf7de7c8a382fe6b4a0e1f309c22aba8667d527..a1b2869854904a30e0cff9472e622407bba18aaa 100644 --- a/ide/src/trace/component/trace/sheet/hiperf/TabPerfSampleList.ts +++ b/ide/src/trace/component/trace/sheet/hiperf/TabPerfSampleList.ts @@ -13,21 +13,21 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; -import { perfDataQuery } from '../../../chart/PerfDataQuery.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { SelectionParam } from '../../../../bean/BoxSelection'; +import { perfDataQuery } from '../../../chart/PerfDataQuery'; import { queryPerfProcess, queryPerfSampleCallChain, queryPerfSampleListByTimeRange, -} from '../../../../database/SqlLite.js'; -import { PerfFile, PerfSample, PerfStack, PerfThread } from '../../../../bean/PerfProfile.js'; -import { Utils } from '../../base/Utils.js'; -import { SpApplication } from '../../../../SpApplication.js'; -import { log } from '../../../../../log/Log.js'; -import '../../../../../base-ui/slicer/lit-slicer.js'; -import { Cmd } from '../../../../../command/Cmd.js'; +} from '../../../../database/SqlLite'; +import { PerfFile, PerfSample, PerfStack, PerfThread } from '../../../../bean/PerfProfile'; +import { Utils } from '../../base/Utils'; +import { SpApplication } from '../../../../SpApplication'; +import { log } from '../../../../../log/Log'; +import '../../../../../base-ui/slicer/lit-slicer'; +import { Cmd } from '../../../../../command/Cmd'; @element('tabpane-perf-sample') export class TabPanePerfSample extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/hisysevent/TabPaneHiSysEventSummary.ts b/ide/src/trace/component/trace/sheet/hisysevent/TabPaneHiSysEventSummary.ts index ef348c5f1f40615f557a10055be0a1db771f5613..170aec8d47a9c06e04fc919e115c8c3aad097658 100644 --- a/ide/src/trace/component/trace/sheet/hisysevent/TabPaneHiSysEventSummary.ts +++ b/ide/src/trace/component/trace/sheet/hisysevent/TabPaneHiSysEventSummary.ts @@ -13,12 +13,12 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; -import { LitIcon } from '../../../../../base-ui/icon/LitIcon.js'; -import { HiSysEventStruct } from '../../../../database/ui-worker/ProcedureWorkerHiSysEvent.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { ColorUtils } from '../../base/ColorUtils.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { SelectionParam } from '../../../../bean/BoxSelection'; +import { LitIcon } from '../../../../../base-ui/icon/LitIcon'; +import { HiSysEventStruct } from '../../../../database/ui-worker/ProcedureWorkerHiSysEvent'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { ColorUtils } from '../../base/ColorUtils'; @element('tab-hi-sysevent-summary') export class TabPaneHiSysEventSummary extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/hisysevent/TabPaneHisysEvents.ts b/ide/src/trace/component/trace/sheet/hisysevent/TabPaneHisysEvents.ts index 6d0e1470741f9dcc66791bb400cd6e71cdca0693..eed0e4b5adb6dd99661fa4d884175ac25de41d73 100644 --- a/ide/src/trace/component/trace/sheet/hisysevent/TabPaneHisysEvents.ts +++ b/ide/src/trace/component/trace/sheet/hisysevent/TabPaneHisysEvents.ts @@ -13,19 +13,19 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; -import { HiSysEventStruct } from '../../../../database/ui-worker/ProcedureWorkerHiSysEvent.js'; -import { ns2x, Rect } from '../../../../database/ui-worker/ProcedureWorkerCommon.js'; -import { LitPageTable } from '../../../../../base-ui/table/LitPageTable.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { LitSlicerTrack } from '../../../../../base-ui/slicer/lit-slicer.js'; -import { TraceRow } from '../../base/TraceRow.js'; -import { Flag } from '../../timer-shaft/Flag.js'; -import { TraceSheet } from '../../base/TraceSheet.js'; -import { SpSystemTrace } from '../../../SpSystemTrace.js'; -import { ColorUtils } from '../../base/ColorUtils.js'; -import { queryRealTime } from '../../../../database/SqlLite.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { SelectionParam } from '../../../../bean/BoxSelection'; +import { HiSysEventStruct } from '../../../../database/ui-worker/ProcedureWorkerHiSysEvent'; +import { ns2x, Rect } from '../../../../database/ui-worker/ProcedureWorkerCommon'; +import { LitPageTable } from '../../../../../base-ui/table/LitPageTable'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { LitSlicerTrack } from '../../../../../base-ui/slicer/lit-slicer'; +import { TraceRow } from '../../base/TraceRow'; +import { Flag } from '../../timer-shaft/Flag'; +import { TraceSheet } from '../../base/TraceSheet'; +import { SpSystemTrace } from '../../../SpSystemTrace'; +import { ColorUtils } from '../../base/ColorUtils'; +import { queryRealTime } from '../../../../database/SqlLite'; @element('tab-hisysevents') export class TabPaneHisysEvents extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/irq/TabPaneIrqCounter.ts b/ide/src/trace/component/trace/sheet/irq/TabPaneIrqCounter.ts index 8b99c6708279f7d9c7d332aeb23c8008fbd9fcf4..df852c3c622bfca925f0084b433eb9168edc16fe 100644 --- a/ide/src/trace/component/trace/sheet/irq/TabPaneIrqCounter.ts +++ b/ide/src/trace/component/trace/sheet/irq/TabPaneIrqCounter.ts @@ -13,10 +13,10 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionData, SelectionParam } from '../../../../bean/BoxSelection.js'; -import { resizeObserver } from '../SheetUtils.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { SelectionData, SelectionParam } from '../../../../bean/BoxSelection'; +import { resizeObserver } from '../SheetUtils'; @element('tabpane-irq-counter') export class TabPaneIrqCounter extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/jank/TabPaneFrames.ts b/ide/src/trace/component/trace/sheet/jank/TabPaneFrames.ts index 589618ca369e6843fbfd61bc9bf81d17c3f27429..ab99fd7833b3bb4b0cec20702cdeb67a3da20f32 100644 --- a/ide/src/trace/component/trace/sheet/jank/TabPaneFrames.ts +++ b/ide/src/trace/component/trace/sheet/jank/TabPaneFrames.ts @@ -13,12 +13,12 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; import { SelectionData, SelectionParam } from '../../../../bean/BoxSelection'; import { LitTable } from '../../../../../base-ui/table/lit-table'; -import { JankFramesStruct } from '../../../../bean/JankFramesStruct.js'; -import { JanksStruct } from '../../../../bean/JanksStruct.js'; -import { resizeObserver } from '../SheetUtils.js'; +import { JankFramesStruct } from '../../../../bean/JankFramesStruct'; +import { JanksStruct } from '../../../../bean/JanksStruct'; +import { resizeObserver } from '../SheetUtils'; @element('tabpane-frames') export class TabPaneFrames extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/native-memory/TabPaneNMCallTree.ts b/ide/src/trace/component/trace/sheet/native-memory/TabPaneNMCallTree.ts index d9bf3be9bc3293387bc01261bce20af556618d76..60b5016c8354c56540b94d0f61f475972f449750 100644 --- a/ide/src/trace/component/trace/sheet/native-memory/TabPaneNMCallTree.ts +++ b/ide/src/trace/component/trace/sheet/native-memory/TabPaneNMCallTree.ts @@ -13,21 +13,21 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { LitProgressBar } from '../../../../../base-ui/progress-bar/LitProgressBar.js'; -import { FrameChart } from '../../../chart/FrameChart.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; -import { ChartMode } from '../../../../bean/FrameChartStruct.js'; -import { FilterData, TabPaneFilter } from '../TabPaneFilter.js'; -import { procedurePool } from '../../../../database/Procedure.js'; -import { FileMerageBean } from '../../../../database/logic-worker/ProcedureLogicWorkerFileSystem.js'; -import { queryNativeHookSubType, queryNativeHookStatisticSubType } from '../../../../database/SqlLite.js'; -import { ParseExpression } from '../SheetUtils.js'; -import { FilterByAnalysis, NativeMemoryExpression } from '../../../../bean/NativeHook.js'; -import { SpSystemTrace } from '../../../SpSystemTrace.js'; -import '../../../../../base-ui/headline/lit-headline.js'; -import { LitHeadLine } from '../../../../../base-ui/headline/lit-headline.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { LitProgressBar } from '../../../../../base-ui/progress-bar/LitProgressBar'; +import { FrameChart } from '../../../chart/FrameChart'; +import { SelectionParam } from '../../../../bean/BoxSelection'; +import { ChartMode } from '../../../../bean/FrameChartStruct'; +import { FilterData, TabPaneFilter } from '../TabPaneFilter'; +import { procedurePool } from '../../../../database/Procedure'; +import { FileMerageBean } from '../../../../database/logic-worker/ProcedureLogicWorkerFileSystem'; +import { queryNativeHookSubType, queryNativeHookStatisticSubType } from '../../../../database/SqlLite'; +import { ParseExpression } from '../SheetUtils'; +import { FilterByAnalysis, NativeMemoryExpression } from '../../../../bean/NativeHook'; +import { SpSystemTrace } from '../../../SpSystemTrace'; +import '../../../../../base-ui/headline/lit-headline'; +import { LitHeadLine } from '../../../../../base-ui/headline/lit-headline'; const InvertOpyionIndex: number = 0; const HideSystemSoOptionIndex: number = 1; @@ -668,6 +668,8 @@ export class TabpaneNMCalltree extends BaseElement { this.switchFlameChart(nmCallTreeData); }); } else { + this.nmCallTreeTbl!.setStatus(this.nmCallTreeSource, true); + this.setLTableData(this.nmCallTreeSource); this.switchFlameChart(nmCallTreeData); } } diff --git a/ide/src/trace/component/trace/sheet/native-memory/TabPaneNMSampleList.ts b/ide/src/trace/component/trace/sheet/native-memory/TabPaneNMSampleList.ts index 0389bb35864d5b343ec8c3845944fef5cc42411b..2b155b79396dc6bb8b8fa4b3aad0b30b38119c0f 100644 --- a/ide/src/trace/component/trace/sheet/native-memory/TabPaneNMSampleList.ts +++ b/ide/src/trace/component/trace/sheet/native-memory/TabPaneNMSampleList.ts @@ -13,24 +13,24 @@ * limitations under the License. */ -import '../../../../../base-ui/table/lit-table-column.js'; -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; -import { queryAllHookData, queryNativeHookSnapshotTypes } from '../../../../database/SqlLite.js'; +import '../../../../../base-ui/table/lit-table-column'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { SelectionParam } from '../../../../bean/BoxSelection'; +import { queryAllHookData, queryNativeHookSnapshotTypes } from '../../../../database/SqlLite'; import { NativeHookCallInfo, NativeHookSampleQueryInfo, NativeHookSamplerInfo, NativeMemory, -} from '../../../../bean/NativeHook.js'; -import { Utils } from '../../base/Utils.js'; -import '../TabPaneFilter.js'; -import { FilterData, TabPaneFilter } from '../TabPaneFilter.js'; -import '../../../../../base-ui/slicer/lit-slicer.js'; -import { procedurePool } from '../../../../database/Procedure.js'; -import { formatRealDateMs, getTimeString } from '../../../../database/logic-worker/ProcedureLogicWorkerCommon.js'; -import { SpNativeMemoryChart } from '../../../chart/SpNativeMemoryChart.js'; +} from '../../../../bean/NativeHook'; +import { Utils } from '../../base/Utils'; +import '../TabPaneFilter'; +import { FilterData, TabPaneFilter } from '../TabPaneFilter'; +import '../../../../../base-ui/slicer/lit-slicer'; +import { procedurePool } from '../../../../database/Procedure'; +import { formatRealDateMs, getTimeString } from '../../../../database/logic-worker/ProcedureLogicWorkerCommon'; +import { SpNativeMemoryChart } from '../../../chart/SpNativeMemoryChart'; @element('tabpane-native-sample') export class TabPaneNMSampleList extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/native-memory/TabPaneNMStatisticAnalysis.ts b/ide/src/trace/component/trace/sheet/native-memory/TabPaneNMStatisticAnalysis.ts index 13ae181f9cae22fa997576e239433e2483fa95da..8d02f0ca38a6035894d1bc9356830d9bc5637c8c 100644 --- a/ide/src/trace/component/trace/sheet/native-memory/TabPaneNMStatisticAnalysis.ts +++ b/ide/src/trace/component/trace/sheet/native-memory/TabPaneNMStatisticAnalysis.ts @@ -12,21 +12,21 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; -import { LitChartPie } from '../../../../../base-ui/chart/pie/LitChartPie.js'; -import '../../../../../base-ui/chart/pie/LitChartPie.js'; -import { LitProgressBar } from '../../../../../base-ui/progress-bar/LitProgressBar.js'; -import { Utils } from '../../base/Utils.js'; -import { SpSystemTrace } from '../../../SpSystemTrace.js'; -import { procedurePool } from '../../../../database/Procedure.js'; -import { TabPaneFilter } from '../TabPaneFilter.js'; -import { LitCheckBox } from '../../../../../base-ui/checkbox/LitCheckBox.js'; -import { initSort } from '../SheetUtils.js'; -import { TabpaneNMCalltree } from './TabPaneNMCallTree.js'; -import { FilterByAnalysis } from '../../../../bean/NativeHook.js'; -import { InitAnalysis } from '../../../../database/logic-worker/ProcedureLogicWorkerCommon.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { SelectionParam } from '../../../../bean/BoxSelection'; +import { LitChartPie } from '../../../../../base-ui/chart/pie/LitChartPie'; +import '../../../../../base-ui/chart/pie/LitChartPie'; +import { LitProgressBar } from '../../../../../base-ui/progress-bar/LitProgressBar'; +import { Utils } from '../../base/Utils'; +import { SpSystemTrace } from '../../../SpSystemTrace'; +import { procedurePool } from '../../../../database/Procedure'; +import { TabPaneFilter } from '../TabPaneFilter'; +import { LitCheckBox } from '../../../../../base-ui/checkbox/LitCheckBox'; +import { initSort } from '../SheetUtils'; +import { TabpaneNMCalltree } from './TabPaneNMCallTree'; +import { FilterByAnalysis } from '../../../../bean/NativeHook'; +import { InitAnalysis } from '../../../../database/logic-worker/ProcedureLogicWorkerCommon'; const TYPE_ALLOC_STRING = 'AllocEvent'; const TYPE_MAP_STRING = 'MmapEvent'; diff --git a/ide/src/trace/component/trace/sheet/native-memory/TabPaneNMStatstics.ts b/ide/src/trace/component/trace/sheet/native-memory/TabPaneNMStatstics.ts index d12c761306c504b83db98cb9a9e1137245471009..ca3c350d489cd5f19bf9f9ff0cd3fd404af1ccab 100644 --- a/ide/src/trace/component/trace/sheet/native-memory/TabPaneNMStatstics.ts +++ b/ide/src/trace/component/trace/sheet/native-memory/TabPaneNMStatstics.ts @@ -13,21 +13,21 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { SelectionParam } from '../../../../bean/BoxSelection'; import { queryNativeHookStatistics, queryNativeHookStatisticsMalloc, queryNativeHookStatisticsSubType, -} from '../../../../database/SqlLite.js'; -import { NativeHookMalloc, NativeHookStatisticsTableData } from '../../../../bean/NativeHook.js'; -import { Utils } from '../../base/Utils.js'; -import { SpSystemTrace } from '../../../SpSystemTrace.js'; -import '../TabProgressBar.js'; -import { SpNativeMemoryChart } from '../../../chart/SpNativeMemoryChart.js'; -import { resizeObserver } from '../SheetUtils.js'; -import { TabPaneNMSampleList } from './TabPaneNMSampleList.js'; +} from '../../../../database/SqlLite'; +import { NativeHookMalloc, NativeHookStatisticsTableData } from '../../../../bean/NativeHook'; +import { Utils } from '../../base/Utils'; +import { SpSystemTrace } from '../../../SpSystemTrace'; +import '../TabProgressBar'; +import { SpNativeMemoryChart } from '../../../chart/SpNativeMemoryChart'; +import { resizeObserver } from '../SheetUtils'; +import { TabPaneNMSampleList } from './TabPaneNMSampleList'; import { env } from 'process'; @element('tabpane-native-statistics') diff --git a/ide/src/trace/component/trace/sheet/native-memory/TabPaneNMemory.ts b/ide/src/trace/component/trace/sheet/native-memory/TabPaneNMemory.ts index e81641dff1423f8062b7a163f961f354a204b41b..7d2e4a1caa175b2d546e27556cedd6cd481ff3ee 100644 --- a/ide/src/trace/component/trace/sheet/native-memory/TabPaneNMemory.ts +++ b/ide/src/trace/component/trace/sheet/native-memory/TabPaneNMemory.ts @@ -13,25 +13,25 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { type LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { type LitPageTable } from '../../../../../base-ui/table/LitPageTable.js'; -import '../../../../../base-ui/table/LitPageTable.js'; -import '../../../../../base-ui/slicer/lit-slicer.js'; -import { type SelectionParam } from '../../../../bean/BoxSelection.js'; -import { type NativeMemory, NativeHookCallInfo } from '../../../../bean/NativeHook.js'; -import '../TabPaneFilter.js'; -import { FilterData, TabPaneFilter } from '../TabPaneFilter.js'; -import { TabPaneNMSampleList } from './TabPaneNMSampleList.js'; -import { type LitProgressBar } from '../../../../../base-ui/progress-bar/LitProgressBar.js'; -import { procedurePool } from '../../../../database/Procedure.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { type LitTable } from '../../../../../base-ui/table/lit-table'; +import { type LitPageTable } from '../../../../../base-ui/table/LitPageTable'; +import '../../../../../base-ui/table/LitPageTable'; +import '../../../../../base-ui/slicer/lit-slicer'; +import { type SelectionParam } from '../../../../bean/BoxSelection'; +import { type NativeMemory, NativeHookCallInfo } from '../../../../bean/NativeHook'; +import '../TabPaneFilter'; +import { FilterData, TabPaneFilter } from '../TabPaneFilter'; +import { TabPaneNMSampleList } from './TabPaneNMSampleList'; +import { type LitProgressBar } from '../../../../../base-ui/progress-bar/LitProgressBar'; +import { procedurePool } from '../../../../database/Procedure'; import { formatRealDateMs, getByteWithUnit, getTimeString, -} from '../../../../database/logic-worker/ProcedureLogicWorkerCommon.js'; -import { SpNativeMemoryChart } from '../../../chart/SpNativeMemoryChart.js'; -import { Utils } from '../../base/Utils.js'; +} from '../../../../database/logic-worker/ProcedureLogicWorkerCommon'; +import { SpNativeMemoryChart } from '../../../chart/SpNativeMemoryChart'; +import { Utils } from '../../base/Utils'; @element('tabpane-native-memory') export class TabPaneNMemory extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/process/TabPaneCounter.ts b/ide/src/trace/component/trace/sheet/process/TabPaneCounter.ts index d1e5efd7fc7af08c7f12e097d7ed1da38f28ca74..b3fd81c16d91fd37802a08241cad44b81120ba52 100644 --- a/ide/src/trace/component/trace/sheet/process/TabPaneCounter.ts +++ b/ide/src/trace/component/trace/sheet/process/TabPaneCounter.ts @@ -13,11 +13,11 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { Counter, SelectionData, SelectionParam } from '../../../../bean/BoxSelection.js'; -import { getTabCounters, getTabVirtualCounters } from '../../../../database/SqlLite.js'; -import { resizeObserver } from '../SheetUtils.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { Counter, SelectionData, SelectionParam } from '../../../../bean/BoxSelection'; +import { getTabCounters, getTabVirtualCounters } from '../../../../database/SqlLite'; +import { resizeObserver } from '../SheetUtils'; @element('tabpane-counter') export class TabPaneCounter extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/process/TabPaneSlices.ts b/ide/src/trace/component/trace/sheet/process/TabPaneSlices.ts index b0592a5edf4f6a17e4851872b2b21925a52fbc9a..aa154985c1c2231a8a95daeb2fd65989004e00d4 100644 --- a/ide/src/trace/component/trace/sheet/process/TabPaneSlices.ts +++ b/ide/src/trace/component/trace/sheet/process/TabPaneSlices.ts @@ -13,15 +13,15 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionData, SelectionParam } from '../../../../bean/BoxSelection.js'; -import { getTabSlices, getTabSlicesAsyncFunc } from '../../../../database/SqlLite.js'; -import { SpAllocations } from '../../../setting/SpAllocations.js'; -import { SpSystemTrace } from '../../../SpSystemTrace.js'; -import { TraceRow } from '../../base/TraceRow.js'; -import { LitSearch } from '../../search/Search.js'; -import { resizeObserver } from '../SheetUtils.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { SelectionData, SelectionParam } from '../../../../bean/BoxSelection'; +import { getTabSlices, getTabSlicesAsyncFunc } from '../../../../database/SqlLite'; +import { SpAllocations } from '../../../setting/SpAllocations'; +import { SpSystemTrace } from '../../../SpSystemTrace'; +import { TraceRow } from '../../base/TraceRow'; +import { LitSearch } from '../../search/Search'; +import { resizeObserver } from '../SheetUtils'; @element('tabpane-slices') export class TabPaneSlices extends BaseElement { @@ -125,7 +125,7 @@ export class TabPaneSlices extends BaseElement { for (const searchItem of search.list) { for (const traceRow of sliceRowList) { if ( - Math.max(TraceRow.rangeSelectObject?.startNS!, searchItem.startTime) < + Math.max(TraceRow.rangeSelectObject?.startNS!, searchItem.startTime) <= Math.min(TraceRow.rangeSelectObject?.endNS!, searchItem.startTime + searchItem.dur) && !rangeSelectList.includes(searchItem) ) { diff --git a/ide/src/trace/component/trace/sheet/process/TabPaneStartup.ts b/ide/src/trace/component/trace/sheet/process/TabPaneStartup.ts index edaeaba99dab66a5780525327940e073a6956ddf..31446dc585c30667b30d07493dd8df6ea749fbcb 100644 --- a/ide/src/trace/component/trace/sheet/process/TabPaneStartup.ts +++ b/ide/src/trace/component/trace/sheet/process/TabPaneStartup.ts @@ -13,14 +13,14 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; -import { getTabStartups } from '../../../../database/SqlLite.js'; -import { log } from '../../../../../log/Log.js'; -import { getProbablyTime } from '../../../../database/logic-worker/ProcedureLogicWorkerCommon.js'; -import { resizeObserver } from '../SheetUtils.js'; -import { AppStartupStruct } from '../../../../database/ui-worker/ProcedureWorkerAppStartup.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { SelectionParam } from '../../../../bean/BoxSelection'; +import { getTabStartups } from '../../../../database/SqlLite'; +import { log } from '../../../../../log/Log'; +import { getProbablyTime } from '../../../../database/logic-worker/ProcedureLogicWorkerCommon'; +import { resizeObserver } from '../SheetUtils'; +import { AppStartupStruct } from '../../../../database/ui-worker/ProcedureWorkerAppStartup'; interface StartupTreeItem { name: string; diff --git a/ide/src/trace/component/trace/sheet/process/TabPaneStaticInit.ts b/ide/src/trace/component/trace/sheet/process/TabPaneStaticInit.ts index 05cf471be1588717a412139aa4e9a687467cc957..906a936a287a1531e7046a70ef8c3ff0646cdd1b 100644 --- a/ide/src/trace/component/trace/sheet/process/TabPaneStaticInit.ts +++ b/ide/src/trace/component/trace/sheet/process/TabPaneStaticInit.ts @@ -13,14 +13,14 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; -import { getTabStaticInit } from '../../../../database/SqlLite.js'; -import { log } from '../../../../../log/Log.js'; -import { getProbablyTime } from '../../../../database/logic-worker/ProcedureLogicWorkerCommon.js'; -import { resizeObserver } from '../SheetUtils.js'; -import { SoStruct } from '../../../../database/ui-worker/ProcedureWorkerSoInit.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { SelectionParam } from '../../../../bean/BoxSelection'; +import { getTabStaticInit } from '../../../../database/SqlLite'; +import { log } from '../../../../../log/Log'; +import { getProbablyTime } from '../../../../database/logic-worker/ProcedureLogicWorkerCommon'; +import { resizeObserver } from '../SheetUtils'; +import { SoStruct } from '../../../../database/ui-worker/ProcedureWorkerSoInit'; interface SoTreeItem { name: string; diff --git a/ide/src/trace/component/trace/sheet/process/TabPaneThreadStates.ts b/ide/src/trace/component/trace/sheet/process/TabPaneThreadStates.ts index 4c50e7fa9b25b325df7d2ff6b9e1fabb0eaaa747..06a433cf84deb32d77b5b0c0e87ac3cd56bd5eb3 100644 --- a/ide/src/trace/component/trace/sheet/process/TabPaneThreadStates.ts +++ b/ide/src/trace/component/trace/sheet/process/TabPaneThreadStates.ts @@ -13,15 +13,15 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionData, SelectionParam } from '../../../../bean/BoxSelection.js'; -import '../../../StackBar.js'; -import { getTabThreadStates, getTabThreadStatesDetail } from '../../../../database/SqlLite.js'; -import { Utils } from '../../base/Utils.js'; -import { StackBar } from '../../../StackBar.js'; -import { log } from '../../../../../log/Log.js'; -import { resizeObserver } from '../SheetUtils.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { SelectionData, SelectionParam } from '../../../../bean/BoxSelection'; +import '../../../StackBar'; +import { getTabThreadStates, getTabThreadStatesDetail } from '../../../../database/SqlLite'; +import { Utils } from '../../base/Utils'; +import { StackBar } from '../../../StackBar'; +import { log } from '../../../../../log/Log'; +import { resizeObserver } from '../SheetUtils'; @element('tabpane-thread-states') export class TabPaneThreadStates extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/process/TabPaneThreadUsage.ts b/ide/src/trace/component/trace/sheet/process/TabPaneThreadUsage.ts index d2935698495bc9589a1b661585d1eebb5aa2e7b8..4a8db661cec919264f2484a58c140f4494aa777a 100644 --- a/ide/src/trace/component/trace/sheet/process/TabPaneThreadUsage.ts +++ b/ide/src/trace/component/trace/sheet/process/TabPaneThreadUsage.ts @@ -13,16 +13,16 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionData, SelectionParam } from '../../../../bean/BoxSelection.js'; -import '../../../StackBar.js'; -import { getTabRunningPersent, getTabThreadStatesCpu } from '../../../../database/SqlLite.js'; -import { log } from '../../../../../log/Log.js'; -import { getProbablyTime } from '../../../../database/logic-worker/ProcedureLogicWorkerCommon.js'; -import { Utils } from '../../base/Utils.js'; -import { CpuStruct } from '../../../../database/ui-worker/ProcedureWorkerCPU.js'; -import { resizeObserver } from '../SheetUtils.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { SelectionData, SelectionParam } from '../../../../bean/BoxSelection'; +import '../../../StackBar'; +import { getTabRunningPersent, getTabThreadStatesCpu } from '../../../../database/SqlLite'; +import { log } from '../../../../../log/Log'; +import { getProbablyTime } from '../../../../database/logic-worker/ProcedureLogicWorkerCommon'; +import { Utils } from '../../base/Utils'; +import { CpuStruct } from '../../../../database/ui-worker/ProcedureWorkerCPU'; +import { resizeObserver } from '../SheetUtils'; @element('tabpane-thread-usage') export class TabPaneThreadUsage extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/schedswitch/TabPaneSchedSwitch.ts b/ide/src/trace/component/trace/sheet/schedswitch/TabPaneSchedSwitch.ts deleted file mode 100644 index 6436ad996c608d7b76e53ea90a36907d2a745d9f..0000000000000000000000000000000000000000 --- a/ide/src/trace/component/trace/sheet/schedswitch/TabPaneSchedSwitch.ts +++ /dev/null @@ -1,736 +0,0 @@ -/* - * Copyright (C) 2022 Huawei Device Co., Ltd. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { log } from 'console'; -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitButton } from '../../../../../base-ui/button/LitButton.js'; -import { LitTable, RedrawTreeForm } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionData, SelectionParam } from '../../../../bean/BoxSelection'; -import { querySchedThreadStates, querySingleCutData, queryLoopCutData } from '../../../../database/SqlLite.js'; -import { Utils } from '../../base/Utils.js'; -import { resizeObserver } from '../SheetUtils.js'; -import { LitChartColumn } from '../../../../../base-ui/chart/column/LitChartColumn.js'; -import { TableNoData } from '../../../schedulingAnalysis/TableNoData.js'; -import { getProbablyTime } from '../../../../database/logic-worker/ProcedureLogicWorkerCommon.js'; -import { SchedSwitchStack, schedThreadInitData } from '../../../../bean/SchedSwitchStruet.js'; -import { SegMenTaTion } from '../../../../../trace/component/chart/SpSegmentationChart.js' - - -@element('tabpane-schedswitch') -export class TabPaneSchedSwitch extends BaseElement { - private schedSwitchTbl: LitTable | null | undefined; - private threadQueryDIV: Element | null | undefined; - private rightDIV: HTMLDivElement | null | undefined; - private threadIdInput: HTMLInputElement | null | undefined; - private funcNameInput: HTMLInputElement | null | undefined; - private singleBtn: LitButton | null | undefined; - private loopBtn: LitButton | null | undefined; - private cycleALeftInput: HTMLInputElement | null | undefined; - private cycleARightInput: HTMLInputElement | null | undefined; - private cycleBLeftInput: HTMLInputElement | null | undefined; - private cycleBRightInput: HTMLInputElement | null | undefined; - private queryButton: LitButton | null | undefined; - private threadFlag: string = ''; - private selectionParam: SelectionParam | undefined; - private canvansName: HTMLDivElement | null | undefined; - private singleSourceData: Array = []; - private loopSourceData: Array = []; - private chartTotal: LitChartColumn | null | undefined; - private histogramSource: Array = []; - private rangeA: object = {}; - private rangeB: object = {}; - private rangeTotal: object = {}; - private clickThreadChildren: Array = []; - private isThreadStatesData: boolean = false; - private clickHighlightCondition: string = ''; - - - set data(threadStatesParam: SelectionParam | any) { - if (this.selectionParam === threadStatesParam) return; - let tblVal: any = this.schedSwitchTbl; - let threadIdInput: any = this.threadIdInput; - let funcNameInput: any = this.funcNameInput; - this.schedSwitchTbl!.recycleDataSource = []; - this.queryButton!.style.pointerEvents = 'none'; - this.schedSwitchTbl!.loading = false; - this.isThreadStatesData = false; - tblVal.value = []; - threadIdInput.value = ''; - funcNameInput.value = ''; - funcNameInput.style.border = '1px solid rgb(151,151,151)'; - threadIdInput.style.border = '1px solid rgb(151,151,151)'; - this.selectionParam = threadStatesParam; - this.canvansName!.textContent = 'sched switch平均分布图'; - this.isQueryButtonClick(false); - this.isSingleButtonFn(false); - this.isLoopButtonFn(false); - this.isCanvansDisplayFn(false); - } - initElements(): void { - this.schedSwitchTbl = this.shadowRoot!.querySelector('#tb-running'); - this.threadQueryDIV = this.shadowRoot?.querySelector('#data-cut'); - this.rightDIV = this.shadowRoot?.querySelector('#right'); - this.canvansName = this.shadowRoot!.querySelector('.sched-subheading'); - this.chartTotal = this.shadowRoot!.querySelector('#chart_total'); - this.threadIdInput = this.shadowRoot?.getElementById('cut-threadid') as HTMLInputElement; - this.funcNameInput = this.shadowRoot?.querySelector('#cut-thread-func') as HTMLInputElement; - this.singleBtn = this.shadowRoot?.querySelector('.single-btn'); - this.loopBtn = this.shadowRoot?.querySelector('.loop-btn'); - this.cycleALeftInput = this.shadowRoot?.getElementById('leftA') as HTMLInputElement; - this.cycleARightInput = this.shadowRoot?.getElementById('rightA') as HTMLInputElement; - this.cycleBLeftInput = this.shadowRoot?.getElementById('leftB') as HTMLInputElement; - this.cycleBRightInput = this.shadowRoot?.getElementById('rightB') as HTMLInputElement; - this.queryButton = this.shadowRoot?.querySelector('.query-btn'); - this.singleBtn?.addEventListener('click', (e) => { this.queryCutInfoFn(this.singleBtn!.innerHTML) }); - this.loopBtn?.addEventListener('click', (e) => { this.queryCutInfoFn(this.loopBtn!.innerHTML) }); - this.queryButton!.addEventListener('click', (e) => { this.queryCycleRangeData() }); - this.schedSwitchTbl!.addEventListener('row-click', (evt: any) => { - let data = evt.detail.data as SchedSwitchStack; - if (data.level == 'process') { - this.isCanvansDisplayFn(false); - this.threadFlag = ''; - } else if (data.level == 'thread') { - this.cycleALeftInput!.value = ''; - this.cycleARightInput!.value = ''; - this.cycleBLeftInput!.value = ''; - this.cycleBRightInput!.value = ''; - this.histogramSource = []; - this.clickThreadChildren = data.children; - this.queryButton!.style.pointerEvents = 'none'; - this.isCanvansDisplayFn(true); - this.isQueryButtonClick(false); - this.threadFlag = 'thread'; - this.clickHighlightCondition = `${data.process} - ${data.pid} - ${data.thread} - ${data.tid}`; - this.rangeTotal = { - count: evt.detail.count, - cycleNum: evt.detail.cycleNum, - average: evt.detail.cycleNum ? Math.ceil(evt.detail.count / evt.detail.cycleNum) : 0, - size: 'Total', - isHover: false, - color: '#2f72f8' - }; - this.histogramSource.push(this.rangeTotal); - data.isSelected = true; - this.schedSwitchTbl!.clearAllSelection(data); - this.schedSwitchTbl!.setCurrentSelection(data); - // SegMenTaTion.setChartData('SCHED-SWITCH', evt.detail.children); - this.queryHistogramData() - } else if (data.level == 'cycle') { - if (this.threadFlag == 'thread') { - this.isCanvansDisplayFn(true); - } - if (this.clickHighlightCondition == `${data.process} - ${data.pid} - ${data.thread} - ${data.tid}`) { - data.isSelected = true; - this.schedSwitchTbl!.clearAllSelection(data); - this.schedSwitchTbl!.setCurrentSelection(data); - // SegMenTaTion.tabHover('SCHED-SWITCH', true, data!.cycle); - } - } - }) - this.cycleALeftInput!.addEventListener('input', (evt: any) => { - this.checkInputRangeFn(this.cycleALeftInput, this.cycleARightInput, this.cycleBLeftInput, this.cycleBRightInput, this.cycleALeftInput!.value, this.cycleARightInput!.value) - }) - this.cycleARightInput!.addEventListener('input', (evt: any) => { - this.checkInputRangeFn(this.cycleARightInput, this.cycleALeftInput, this.cycleBLeftInput, this.cycleBRightInput, this.cycleALeftInput!.value, this.cycleARightInput!.value) - }) - this.cycleBLeftInput!.addEventListener('input', (evt: any) => { - this.checkInputRangeFn(this.cycleBLeftInput, this.cycleBRightInput, this.cycleALeftInput, this.cycleARightInput, this.cycleBLeftInput!.value, this.cycleBRightInput!.value) - }) - this.cycleBRightInput!.addEventListener('input', (evt: any) => { - this.checkInputRangeFn(this.cycleBRightInput, this.cycleBLeftInput, this.cycleALeftInput, this.cycleARightInput, this.cycleBLeftInput!.value, this.cycleBRightInput!.value) - }) - } - - checkInputRangeFn(firstInput: any, secondInput: any, thirdInput: any, fourInput: any, lVal: string, rVal: string): void { - let leftVal = Number(lVal); - let rightVal = Number(rVal); - if (firstInput!.value != '' && secondInput!.value != '') { - if (firstInput!.value != '' && secondInput!.value != '') { - if (leftVal >= rightVal) { - firstInput!.style.color = 'red'; - this.queryButton!.style.pointerEvents = 'none'; - this.isQueryButtonClick(false); - } else if (leftVal < rightVal) { - firstInput!.style.color = 'black'; - secondInput!.style.color = 'black'; - this.queryButton!.style.pointerEvents = 'auto'; - this.isQueryButtonClick(true); - } - } - } else if ((firstInput.value == '' && secondInput!.value != '') || (firstInput!.value != '' && secondInput!.value == '')) { - this.queryButton!.style.pointerEvents = 'none'; - this.isQueryButtonClick(false); - } else if (firstInput!.value == '' && secondInput!.value == '' && thirdInput!.value != '' && fourInput!.value != '') { - this.queryButton!.style.pointerEvents = 'auto'; - this.isQueryButtonClick(true); - } - } - - async initThreadStateData(threadParam: SelectionParam | null | undefined): Promise { - let leftStartNs = threadParam!.leftNs + threadParam!.recordStartNs; - let rightEndNs = threadParam!.rightNs + threadParam!.recordStartNs; - let res = await querySchedThreadStates(threadParam!.threadIds, leftStartNs, rightEndNs); - if (res.length == 0) { - this.schedSwitchTbl!.recycleDataSource = []; - this.schedSwitchTbl!.loading = false; - this.clickTreeTitleFn(this.schedSwitchTbl!.recycleDataSource); - return - } - this.singleSourceData = JSON.parse(JSON.stringify(res)); - this.loopSourceData = JSON.parse(JSON.stringify(res)); - this.isThreadStatesData = true; - } - - async queryCutInfoFn(btnHtml: string): Promise { - let threadId = this.threadIdInput!.value.trim(); - let threadFunName = this.funcNameInput!.value.trim(); - let leftStartNs = this.selectionParam!.leftNs + this.selectionParam!.recordStartNs; - let rightEndNs = this.selectionParam!.rightNs + this.selectionParam!.recordStartNs; - let cutData: Array = []; - let tblVal: any = this.schedSwitchTbl; - this.threadFlag = ''; - if (threadId != "" && threadFunName != "") { - this.threadIdInput!.style.border = '1px solid rgb(151,151,151)'; - this.funcNameInput!.style.border = '1px solid rgb(151,151,151)'; - tblVal!.value = []; - this.isCanvansDisplayFn(false); - this.schedSwitchTbl!.loading = true; - if (!this.isThreadStatesData) this.initThreadStateData(this.selectionParam); - if (btnHtml == 'Single') { - this.isSingleButtonFn(true); - this.isLoopButtonFn(false); - let res = await querySingleCutData(threadFunName, threadId, leftStartNs, rightEndNs); - if (res.length == 0) { - this.schedSwitchTbl!.recycleDataSource = []; - this.schedSwitchTbl!.loading = false; - this.clickTreeTitleFn(this.schedSwitchTbl!.recycleDataSource); - return - }; - for (let idx = 0; idx < res.length; idx++) { - for (let i = 0; i < this.singleSourceData.length; i++) { - let singleItem = this.singleSourceData[i] - if (!(singleItem.endTs < res[idx].cycleStartTime || singleItem.ts > res[idx].cycleEndTime)) { - let info = { - pid: singleItem.pid, - tid: singleItem.tid, - state: singleItem.state, - cycleStartTime: res[idx].cycleStartTime, - cycleEndTime: res[idx].cycleEndTime, - name: res[idx].name, - funId: res[idx].id, - runningCnt: singleItem.state == 'Running' ? 1 : 0, - } - cutData.push(info) - } - } - } - }; - if (btnHtml == 'Loop') { - this.isLoopButtonFn(true); - this.isSingleButtonFn(false); - this.schedSwitchTbl!.loading = true; - let res = await queryLoopCutData(threadFunName, threadId, leftStartNs, rightEndNs); - if (res.length == 0) { - this.schedSwitchTbl!.recycleDataSource = []; - this.schedSwitchTbl!.loading = false; - this.clickTreeTitleFn(this.schedSwitchTbl!.recycleDataSource); - return - }; - for (let idx = 0; idx < res.length - 1; idx++) { - res[idx].cycleEndTime = res[idx + 1].cycleStartTime; - for (let i = 0; i < this.loopSourceData.length; i++) { - let loopItem = this.loopSourceData[i] - if (!(loopItem.endTs < res[idx].cycleStartTime || loopItem.ts > res[idx].cycleEndTime)) { - let info = { - pid: loopItem.pid, - tid: loopItem.tid, - state: loopItem.state, - cycleStartTime: res[idx].cycleStartTime, - cycleEndTime: res[idx + 1].cycleStartTime, - name: res[idx].name, - funId: res[idx].id, - runningCnt: loopItem.state == 'Running' ? 1 : 0, - } - cutData.push(info) - } - } - } - }; - this.handleSchedThreadData(cutData) - } else { - if (threadId == "") { - this.threadIdInput!.style.border = '2px solid rgb(255,0,0)'; - this.threadIdInput!.setAttribute('placeholder', 'Please input thread id'); - } else { - this.threadIdInput!.style.border = '1px solid rgb(151,151,151)'; - }; - if (threadFunName == '') { - this.funcNameInput!.style.border = '2px solid rgb(255,0,0)'; - this.funcNameInput!.setAttribute('placeholder', 'Please input function name'); - } else { - this.funcNameInput!.style.border = '1px solid rgb(151,151,151)'; - } - } - } - - handleSchedThreadData(result: Array): void { - let resultData: Array = []; - if (result != null && result.length > 0) { - for (let e of result) { - if (this.selectionParam!.processIds.includes(e.pid)) { - let process = Utils.PROCESS_MAP.get(e.pid); - let thread = Utils.THREAD_MAP.get(e.tid); - e.process = process == null || process.length == 0 ? '[NULL]' : process; - e.thread = thread == null || thread.length == 0 ? '[NULL]' : thread; - e.dur = e.cycleEndTime - e.cycleStartTime; - e.leftNS = e.cycleStartTime - this.selectionParam!.recordStartNs; - resultData.push(e); - } - } - this.translateIntoTreeData(resultData); - } - } - - translateIntoTreeData(data: Array): void { - let group: any = {}; - if (data != null && data.length > 0) { - data.forEach((slice: any) => { - let item = { - title: `${slice.thread}`, - count: slice.runningCnt, - cycleNum: 1, - state: slice.state, - tid: slice.tid, - pid: slice.pid, - thread: slice.thread, - process: slice.process, - cycleStartTime: slice.leftNS, - duration: slice.dur, - level: 'cycle', - }; - if (group[`${slice.pid}`]) { - let process = group[`${slice.pid}`]; - process.count += slice.runningCnt; - let thread = process.children.find((child: any) => child.title === `${slice.thread}` + `[${slice.tid}]`); - if (thread) { - thread.count += slice.runningCnt; - let cycle = thread.children.find((child: any) => child.cycleStartTime === slice.leftNS); - if (cycle) { - cycle.count += slice.runningCnt; - } else { - thread.cycleNum += 1; - process.cycleNum += 1; - thread.duration += slice.dur; - process.duration += slice.dur; - thread.children.push(item); - } - } else { - process.cycleNum += 1; - process.duration += slice.dur; - process.children.push({ - title: `${slice.thread}` + `[${slice.tid}]`, - count: slice.runningCnt, - cycleNum: 1, - pid: slice.pid, - tid: slice.tid, - thread: slice.thread, - process: slice.process, - duration: slice.dur, - level: 'thread', - cycleStartTime: '', - children: [item] - }); - } - } else { - group[`${slice.pid}`] = { - title: `${slice.process}` + `[${slice.pid}]`, - count: slice.runningCnt, - cycleNum: 1, - tid: slice.tid, - pid: slice.pid, - thread: slice.thread, - process: slice.process, - duration: slice.dur, - level: 'process', - cycleStartTime: '', - children: [ - { - title: `${slice.thread}` + `[${slice.tid}]`, - count: slice.runningCnt, - cycleNum: 1, - tid: slice.tid, - pid: slice.pid, - thread: slice.thread, - process: slice.process, - duration: slice.dur, - level: 'thread', - cycleStartTime: '', - children: [item] - }, - ], - }; - } - }); - group = Object.values(group); - for (let i = 0; i < group.length; i++) { - this.addCycleNumber([group[i]]); - } - this.schedSwitchTbl!.recycleDataSource = group; - this.schedSwitchTbl!.loading = false; - this.clickTreeTitleFn(this.schedSwitchTbl!.recycleDataSource); - } - } - addCycleNumber(groupItem: Array): void { - let flagNumber = 0; - for (let idx = 0; idx < groupItem.length; idx++) { - groupItem[idx].duration = (groupItem[idx].duration / 1000000.0).toFixed(3); - if (!(groupItem[idx].children)) { - flagNumber += 1; - groupItem[idx].cycle = flagNumber; - groupItem[idx].title = `cycle ${flagNumber}-` + groupItem[idx].title; - groupItem[idx].cycleStartTime = (groupItem[idx].cycleStartTime / 1000000.0).toFixed(3); - } else { - this.addCycleNumber(groupItem[idx].children) - } - } - } - - clickTreeTitleFn(data: Array): void { - let labelList = this.schedSwitchTbl!.shadowRoot?.querySelector('.th > .td')!.querySelectorAll('label'); - if (labelList) { - for (let i = 0; i < labelList.length; i++) { - let lable = labelList[i].innerHTML; - labelList[i].addEventListener('click', (e) => { - if (lable.includes('Process') && i == 0) { - this.schedSwitchTbl!.setStatus(data, false); - this.schedSwitchTbl!.recycleDs = this.schedSwitchTbl!.meauseTreeRowElement(data, RedrawTreeForm.Retract); - } else if (lable.includes('Thread') && i == 1) { - for (let item of data) { - item.status = true; - if (item.children != undefined && item.children.length > 0) { - this.schedSwitchTbl!.setStatus(item.children, false); - } - } - this.schedSwitchTbl!.recycleDs = this.schedSwitchTbl!.meauseTreeRowElement(data, RedrawTreeForm.Retract); - } else if (lable.includes('Cycle') && i == 2) { - this.schedSwitchTbl!.setStatus(data, true); - this.schedSwitchTbl!.recycleDs = this.schedSwitchTbl!.meauseTreeRowElement(data, RedrawTreeForm.Expand) - } - }) - - } - } - - } - - queryCycleRangeData(): void { - let cycleALeft = this.cycleALeftInput!.value.trim(); - let cycleARight = this.cycleARightInput!.value.trim(); - let cycleBLeft = this.cycleBLeftInput!.value.trim(); - let cycleBRight = this.cycleBRightInput!.value.trim(); - this.histogramSource = []; - this.histogramSource.push(this.rangeTotal) - if (cycleALeft != '' && cycleARight != '' && cycleALeft != cycleARight) { - let countA = 0; - let rangeFilterA = this.clickThreadChildren.filter((it: any) => Number(it.duration) >= Number(cycleALeft) && Number(it.duration) < Number(cycleARight)); - rangeFilterA.forEach((item: any) => { - countA += item.count - }) - this.rangeA = { - count: countA, - cycleNum: rangeFilterA.length, - average: rangeFilterA.length ? Math.ceil(countA / rangeFilterA.length) : 0, - size: 'Cycle A', - isHover: false, - color: '#ffab67' - } - this.histogramSource.push(this.rangeA); - } - - if (cycleBLeft != '' && cycleBRight != '' && cycleBLeft != cycleBRight) { - let countB = 0; - let rangeFilterB = this.clickThreadChildren.filter((it: any) => Number(it.duration) >= Number(cycleBLeft) && Number(it.duration) < Number(cycleBRight)) - rangeFilterB.forEach((item: any) => { - countB += item.count - }) - this.rangeB = { - count: countB, - cycleNum: rangeFilterB.length, - average: rangeFilterB.length ? Math.ceil(countB / rangeFilterB.length) : 0, - size: 'Cycle B', - isHover: false, - color: '#a285d2' - } - this.histogramSource.push(this.rangeB) - } - this.queryHistogramData(); - } - - queryHistogramData(): void { - let source = []; - source = this.histogramSource.map((it: any, index: number) => { - let data: any = { - cycle: it.size, - average: it.average, - visible: 1, - color: it.color, - }; - return data; - }); - this.chartTotal!.config = { - data: source, - appendPadding: 10, - xField: 'cycle', - yField: 'average', - notSort: true, - removeUnit: true, - seriesField: '', - color: (a) => { - if (a.cycle === 'Total') { - return '#2f72f8'; - } else if (a.cycle === 'Cycle A') { - return '#ffab67'; - } else if (a.cycle === 'Cycle B') { - return '#a285d2'; - } else { - return '#0a59f7'; - } - }, - tip: (a) => { - if (a && a[0]) { - let tip = ''; - for (let obj of a) { - tip = - `${tip} -
-
-
${obj.xLabel}:${obj.obj.average}
-
- `; - } - return tip; - } else { - return ''; - } - }, - label: null, - }; - } - - isCanvansDisplayFn(flag: boolean): void { - if (!flag) { - this.setAttribute('isCanvansDisplay', '') - } else { - this.removeAttribute('isCanvansDisplay') - } - } - - isSingleButtonFn(flag: boolean): void { - if (flag) { - this.setAttribute('isSingleButton', '') - } else { - this.removeAttribute('isSingleButton') - } - } - - isLoopButtonFn(flag: boolean): void { - if (flag) { - this.setAttribute('isLoopButton', '') - } else { - this.removeAttribute('isLoopButton') - } - } - - isQueryButtonClick(flag: boolean): void { - if (flag) { - this.setAttribute('isQueryButton', '') - } else { - this.removeAttribute('isQueryButton') - } - } - - connectedCallback() { - super.connectedCallback(); - resizeObserver(this.parentElement!, this.schedSwitchTbl!); - } - initHtml(): string { - return ` - -
- - -
- - -
-
-
-
- - - - - - - - - - -
- - -
- - ` - } -} diff --git a/ide/src/trace/component/trace/sheet/sdk/TabPaneSdkCounter.ts b/ide/src/trace/component/trace/sheet/sdk/TabPaneSdkCounter.ts index 109d7d77796a9e2113a46499db0d5405ed3b147e..030111e9ad10f0d3fbce040d17b645b926810338 100644 --- a/ide/src/trace/component/trace/sheet/sdk/TabPaneSdkCounter.ts +++ b/ide/src/trace/component/trace/sheet/sdk/TabPaneSdkCounter.ts @@ -13,15 +13,15 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionData, SelectionParam } from '../../../../bean/BoxSelection.js'; -import { getTabSdkCounterData, getTabSdkCounterLeftData, queryStartTime } from '../../../../database/SqlLite.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { SelectionData, SelectionParam } from '../../../../bean/BoxSelection'; +import { getTabSdkCounterData, getTabSdkCounterLeftData, queryStartTime } from '../../../../database/SqlLite'; import { LitTableColumn } from '../../../../../base-ui/table/lit-table-column'; -import { Utils } from '../../base/Utils.js'; -import { SpSystemTrace } from '../../../SpSystemTrace.js'; -import { TabUtil } from './TabUtil.js'; -import { resizeObserver } from '../SheetUtils.js'; +import { Utils } from '../../base/Utils'; +import { SpSystemTrace } from '../../../SpSystemTrace'; +import { TabUtil } from './TabUtil'; +import { resizeObserver } from '../SheetUtils'; @element('tabpane-sdk-counter') export class TabPaneSdkCounter extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/sdk/TabPaneSdkSlice.ts b/ide/src/trace/component/trace/sheet/sdk/TabPaneSdkSlice.ts index ed5a07277a09e9e0a526ec0171580fe303ee27b6..e2e3371fa66d7b5a9a36776cf7197dc83a54437a 100644 --- a/ide/src/trace/component/trace/sheet/sdk/TabPaneSdkSlice.ts +++ b/ide/src/trace/component/trace/sheet/sdk/TabPaneSdkSlice.ts @@ -13,15 +13,15 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionData, SelectionParam } from '../../../../bean/BoxSelection.js'; -import { getTabSdkSliceData, queryStartTime, queryTotalTime } from '../../../../database/SqlLite.js'; -import { LitTableColumn } from '../../../../../base-ui/table/lit-table-column.js'; -import { Utils } from '../../base/Utils.js'; -import { SpSystemTrace } from '../../../SpSystemTrace.js'; -import { TabUtil } from './TabUtil.js'; -import { resizeObserver } from '../SheetUtils.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { SelectionData, SelectionParam } from '../../../../bean/BoxSelection'; +import { getTabSdkSliceData, queryStartTime, queryTotalTime } from '../../../../database/SqlLite'; +import { LitTableColumn } from '../../../../../base-ui/table/lit-table-column'; +import { Utils } from '../../base/Utils'; +import { SpSystemTrace } from '../../../SpSystemTrace'; +import { TabUtil } from './TabUtil'; +import { resizeObserver } from '../SheetUtils'; @element('tabpane-sdk-slice') export class TabPaneSdkSlice extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/smaps/TabPaneSmapsComparison.ts b/ide/src/trace/component/trace/sheet/smaps/TabPaneSmapsComparison.ts index 79753f1b15bf6590d90195a92a83494365828c12..3ce1ec41fa3b5bf33e9ed9ac9843ce1ff2b4b18f 100644 --- a/ide/src/trace/component/trace/sheet/smaps/TabPaneSmapsComparison.ts +++ b/ide/src/trace/component/trace/sheet/smaps/TabPaneSmapsComparison.ts @@ -12,16 +12,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { element } from '../../../../../base-ui/BaseElement.js'; -import { type LitSelect } from '../../../../../base-ui/select/LitSelect.js'; -import { LitSelectOption } from '../../../../../base-ui/select/LitSelectOption.js'; -import { type LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { type SelectionParam } from '../../../../bean/BoxSelection.js'; -import { getTabSmapsStatisticData } from '../../../../database/SqlLite.js'; -import { resizeObserverFromMemory } from '../SheetUtils.js'; -import { type TabPaneJsMemoryFilter } from '../TabPaneJsMemoryFilter.js'; -import { TabPaneSmapsStatistics } from './TabPaneSmapsStatistics.js'; -import { type SmapsType } from '../../../../bean/SmapsStruct.js'; +import { element } from '../../../../../base-ui/BaseElement'; +import { type LitSelect } from '../../../../../base-ui/select/LitSelect'; +import { LitSelectOption } from '../../../../../base-ui/select/LitSelectOption'; +import { type LitTable } from '../../../../../base-ui/table/lit-table'; +import { type SelectionParam } from '../../../../bean/BoxSelection'; +import { getTabSmapsStatisticData } from '../../../../database/SqlLite'; +import { resizeObserverFromMemory } from '../SheetUtils'; +import { type TabPaneJsMemoryFilter } from '../TabPaneJsMemoryFilter'; +import { TabPaneSmapsStatistics } from './TabPaneSmapsStatistics'; +import { type SmapsType } from '../../../../bean/SmapsStruct'; @element('tabpane-smaps-comparison') export class TabPaneSmapsComparison extends TabPaneSmapsStatistics { diff --git a/ide/src/trace/component/trace/sheet/smaps/TabPaneSmapsRecord.ts b/ide/src/trace/component/trace/sheet/smaps/TabPaneSmapsRecord.ts index 41336849185b2c1e9acfb5226683ad9b958e887d..78d9471f955ce497b31c8d9e4d1597e357e9111e 100644 --- a/ide/src/trace/component/trace/sheet/smaps/TabPaneSmapsRecord.ts +++ b/ide/src/trace/component/trace/sheet/smaps/TabPaneSmapsRecord.ts @@ -13,17 +13,17 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; -import { MemoryConfig } from '../../../../bean/MemoryConfig.js'; -import { SmapsType } from '../../../../bean/SmapsStruct.js'; -import { querySmapsRecordTabData } from '../../../../database/SqlLite.js'; -import { getByteWithUnit } from '../../../../database/logic-worker/ProcedureLogicWorkerCommon.js'; -import { ns2s } from '../../../../database/ui-worker/ProcedureWorkerCommon.js'; -import { SnapshotStruct } from '../../../../database/ui-worker/ProcedureWorkerSnapshot.js'; -import { SpSystemTrace } from '../../../SpSystemTrace.js'; -import { resizeObserver } from '../SheetUtils.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { SelectionParam } from '../../../../bean/BoxSelection'; +import { MemoryConfig } from '../../../../bean/MemoryConfig'; +import { SmapsType } from '../../../../bean/SmapsStruct'; +import { querySmapsRecordTabData } from '../../../../database/SqlLite'; +import { getByteWithUnit } from '../../../../database/logic-worker/ProcedureLogicWorkerCommon'; +import { ns2s } from '../../../../database/ui-worker/ProcedureWorkerCommon'; +import { SnapshotStruct } from '../../../../database/ui-worker/ProcedureWorkerSnapshot'; +import { SpSystemTrace } from '../../../SpSystemTrace'; +import { resizeObserver } from '../SheetUtils'; @element('tabpane-smaps-record') export class TabPaneSmapsRecord extends BaseElement { private smapsRecordTable: LitTable | undefined | null; diff --git a/ide/src/trace/component/trace/sheet/smaps/TabPaneSmapsSample.ts b/ide/src/trace/component/trace/sheet/smaps/TabPaneSmapsSample.ts index 0adc3f8ae82dca45552f6dcbf9dd771c0c8c30c9..d52bd5b8d12aeab17ea166975d04be564c1873a8 100644 --- a/ide/src/trace/component/trace/sheet/smaps/TabPaneSmapsSample.ts +++ b/ide/src/trace/component/trace/sheet/smaps/TabPaneSmapsSample.ts @@ -12,15 +12,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; -import { getTabSmapsData, getTabSmapsSampleData } from '../../../../database/SqlLite.js'; -import { Utils } from '../../base/Utils.js'; -import { log } from '../../../../../log/Log.js'; -import { Smaps, SmapsType, TYPE_STRING } from '../../../../bean/SmapsStruct.js'; -import { MemoryConfig } from '../../../../bean/MemoryConfig.js'; -import { SpSystemTrace } from '../../../SpSystemTrace.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { SelectionParam } from '../../../../bean/BoxSelection'; +import { getTabSmapsData, getTabSmapsSampleData } from '../../../../database/SqlLite'; +import { Utils } from '../../base/Utils'; +import { log } from '../../../../../log/Log'; +import { Smaps, SmapsType, TYPE_STRING } from '../../../../bean/SmapsStruct'; +import { MemoryConfig } from '../../../../bean/MemoryConfig'; +import { SpSystemTrace } from '../../../SpSystemTrace'; @element('tabpane-smaps-sample') export class TabPaneSmapsSample extends BaseElement { private tblSmapsSample: LitTable | null | undefined; @@ -54,7 +54,8 @@ export class TabPaneSmapsSample extends BaseElement { new ResizeObserver(() => { if (this.parentElement?.clientHeight != 0) { // @ts-ignore - this.tblSmapsSample?.shadowRoot?.querySelector('.table').style.height = this.parentElement.clientHeight - 15+ 'px'; + this.tblSmapsSample?.shadowRoot?.querySelector('.table').style.height = + this.parentElement!.clientHeight - 15 + 'px'; this.tblSmapsSample?.reMeauseHeight(); } }).observe(this.parentElement!); @@ -69,7 +70,7 @@ export class TabPaneSmapsSample extends BaseElement { ); } setSmaps(data: SelectionParam): void { - getTabSmapsSampleData(data.rightNs).then((result) => { + getTabSmapsSampleData(data.leftNs).then((result) => { this.tblSmapsSample!.loading = false; this.filteredData(result); }); @@ -185,11 +186,7 @@ export class TabPaneSmapsSample extends BaseElement { } }; } - if ( - detail.key === 'rssStr' || - detail.key === 'sizeStr' || - detail.key === 'resideStr' - ) { + if (detail.key === 'rssStr' || detail.key === 'sizeStr' || detail.key === 'resideStr') { let key = detail.key.substring(0, detail.key.indexOf('Str')); this.sourceSmapsSample.sort(compare(key, detail.sort, 'number')); } else { diff --git a/ide/src/trace/component/trace/sheet/smaps/TabPaneSmapsStatistics.ts b/ide/src/trace/component/trace/sheet/smaps/TabPaneSmapsStatistics.ts index 986493bb7c99c23f2a31328865c506c9a58cafef..44f7a5769231c4aaa5f8f890dcc19675c5b5a67a 100644 --- a/ide/src/trace/component/trace/sheet/smaps/TabPaneSmapsStatistics.ts +++ b/ide/src/trace/component/trace/sheet/smaps/TabPaneSmapsStatistics.ts @@ -12,19 +12,19 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { SelectionParam } from '../../../../bean/BoxSelection.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { SelectionParam } from '../../../../bean/BoxSelection'; import { getTabSmapsMaxSize, getTabSmapsStatisticData, getTabSmapsStatisticMaxSize, getTabSmapsStatisticSelectData, -} from '../../../../database/SqlLite.js'; -import { type Smaps, SmapsTreeObj, SmapsType, TYPE_STRING } from '../../../../bean/SmapsStruct.js'; -import { Utils } from '../../base/Utils.js'; -import { MemoryConfig } from '../../../../bean/MemoryConfig.js'; -import { SpSystemTrace } from '../../../SpSystemTrace.js'; +} from '../../../../database/SqlLite'; +import { type Smaps, SmapsTreeObj, SmapsType, TYPE_STRING } from '../../../../bean/SmapsStruct'; +import { Utils } from '../../base/Utils'; +import { MemoryConfig } from '../../../../bean/MemoryConfig'; +import { SpSystemTrace } from '../../../SpSystemTrace'; @element('tabpane-smaps-statistics') export class TabPaneSmapsStatistics extends BaseElement { private tblSmapsStatistics: LitTable | null | undefined; diff --git a/ide/src/trace/component/trace/sheet/task/TabPaneTaskFrames.ts b/ide/src/trace/component/trace/sheet/task/TabPaneTaskFrames.ts index 7b9bb689dc4eabc8dfef9e4c3b2378e677c71b99..1d3e7f09b632c871d5c58d16d04bd124187c7fc4 100644 --- a/ide/src/trace/component/trace/sheet/task/TabPaneTaskFrames.ts +++ b/ide/src/trace/component/trace/sheet/task/TabPaneTaskFrames.ts @@ -13,19 +13,19 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; import { SelectionParam } from '../../../../bean/BoxSelection'; import { LitTable } from '../../../../../base-ui/table/lit-table'; -import { resizeObserver } from '../SheetUtils.js'; -import { FuncStruct } from '../../../../database/ui-worker/ProcedureWorkerFunc.js'; +import { resizeObserver } from '../SheetUtils'; +import { FuncStruct } from '../../../../database/ui-worker/ProcedureWorkerFunc'; import { queryConcurrencyTask, queryTaskListByExecuteTaskIds, queryTaskPoolTotalNum, -} from '../../../../database/SqlLite.js'; -import { BaseStruct } from '../../../../database/ui-worker/ProcedureWorkerCommon.js'; -import { SpSystemTrace } from '../../../SpSystemTrace.js'; -import { type LitProgressBar } from '../../../../../base-ui/progress-bar/LitProgressBar.js'; +} from '../../../../database/SqlLite'; +import { BaseStruct } from '../../../../database/ui-worker/ProcedureWorkerCommon'; +import { SpSystemTrace } from '../../../SpSystemTrace'; +import { type LitProgressBar } from '../../../../../base-ui/progress-bar/LitProgressBar'; const ALLOCATION_TASK = 'H:Task Allocation:'; const PERFORM_TASK = 'H:Task Perform:'; diff --git a/ide/src/trace/component/trace/sheet/vmtracker/TabPaneDmaSelectVmTracker.ts b/ide/src/trace/component/trace/sheet/vmtracker/TabPaneDmaSelectVmTracker.ts index ea2fbcbdc2aaf11e7f6dc9851dfafc10135efd36..812906df97770824da8ad33fc1d0436a9e975c0c 100644 --- a/ide/src/trace/component/trace/sheet/vmtracker/TabPaneDmaSelectVmTracker.ts +++ b/ide/src/trace/component/trace/sheet/vmtracker/TabPaneDmaSelectVmTracker.ts @@ -13,14 +13,14 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { type LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { type Dma } from '../../../../bean/AbilityMonitor.js'; -import { MemoryConfig } from '../../../../bean/MemoryConfig.js'; -import { getTabDmaVMTrackerClickData } from '../../../../database/SqlLite.js'; -import { SpSystemTrace } from '../../../SpSystemTrace.js'; -import { Utils } from '../../base/Utils.js'; -import { ns2s } from '../../TimerShaftElement.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { type LitTable } from '../../../../../base-ui/table/lit-table'; +import { type Dma } from '../../../../bean/AbilityMonitor'; +import { MemoryConfig } from '../../../../bean/MemoryConfig'; +import { getTabDmaVMTrackerClickData } from '../../../../database/SqlLite'; +import { SpSystemTrace } from '../../../SpSystemTrace'; +import { Utils } from '../../base/Utils'; +import { ns2s } from '../../TimerShaftElement'; @element('tabpane-dma-selection-vmtracker') export class TabPaneDmaSelectVmTracker extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/vmtracker/TabPaneDmaVmTracker.ts b/ide/src/trace/component/trace/sheet/vmtracker/TabPaneDmaVmTracker.ts index b9cba294653e9177da3da3c39f9207d3552f2abf..cf611d231d7d09de6e66c5e8d71d962201c81a68 100644 --- a/ide/src/trace/component/trace/sheet/vmtracker/TabPaneDmaVmTracker.ts +++ b/ide/src/trace/component/trace/sheet/vmtracker/TabPaneDmaVmTracker.ts @@ -13,14 +13,14 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { type LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { type SelectionParam } from '../../../../bean/BoxSelection.js'; -import { resizeObserver } from '../SheetUtils.js'; -import { getTabDmaVmTrackerData } from '../../../../database/SqlLite.js'; -import { type Dma } from '../../../../bean/AbilityMonitor.js'; -import { MemoryConfig } from '../../../../bean/MemoryConfig.js'; -import { Utils } from '../../base/Utils.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { type LitTable } from '../../../../../base-ui/table/lit-table'; +import { type SelectionParam } from '../../../../bean/BoxSelection'; +import { resizeObserver } from '../SheetUtils'; +import { getTabDmaVmTrackerData } from '../../../../database/SqlLite'; +import { type Dma } from '../../../../bean/AbilityMonitor'; +import { MemoryConfig } from '../../../../bean/MemoryConfig'; +import { Utils } from '../../base/Utils'; @element('tabpane-dma-vmtracker') export class TabPaneDmaVmTracker extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/vmtracker/TabPaneDmaVmTrackerComparison.ts b/ide/src/trace/component/trace/sheet/vmtracker/TabPaneDmaVmTrackerComparison.ts index 06f2183e63af8c3a943cf4ebe9dfff5b25bd8dab..b6233f713177e111e21d4b1c4b825e797d5e15d0 100644 --- a/ide/src/trace/component/trace/sheet/vmtracker/TabPaneDmaVmTrackerComparison.ts +++ b/ide/src/trace/component/trace/sheet/vmtracker/TabPaneDmaVmTrackerComparison.ts @@ -13,18 +13,18 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { type LitSelect } from '../../../../../base-ui/select/LitSelect.js'; -import { LitSelectOption } from '../../../../../base-ui/select/LitSelectOption.js'; -import { type LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { type DmaComparison } from '../../../../bean/AbilityMonitor.js'; -import { MemoryConfig } from '../../../../bean/MemoryConfig.js'; -import { getTabDmaVmTrackerComparisonData } from '../../../../database/SqlLite.js'; -import { type SnapshotStruct } from '../../../../database/ui-worker/ProcedureWorkerSnapshot.js'; -import { Utils } from '../../base/Utils.js'; -import { resizeObserverFromMemory } from '../SheetUtils.js'; -import '../TabPaneJsMemoryFilter.js'; -import { type TabPaneJsMemoryFilter } from '../TabPaneJsMemoryFilter.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { type LitSelect } from '../../../../../base-ui/select/LitSelect'; +import { LitSelectOption } from '../../../../../base-ui/select/LitSelectOption'; +import { type LitTable } from '../../../../../base-ui/table/lit-table'; +import { type DmaComparison } from '../../../../bean/AbilityMonitor'; +import { MemoryConfig } from '../../../../bean/MemoryConfig'; +import { getTabDmaVmTrackerComparisonData } from '../../../../database/SqlLite'; +import { type SnapshotStruct } from '../../../../database/ui-worker/ProcedureWorkerSnapshot'; +import { Utils } from '../../base/Utils'; +import { resizeObserverFromMemory } from '../SheetUtils'; +import '../TabPaneJsMemoryFilter'; +import { type TabPaneJsMemoryFilter } from '../TabPaneJsMemoryFilter'; @element('tabpane-dma-vmtracker-comparison') export class TabPaneDmaVmTrackerComparison extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/vmtracker/TabPaneGpuMemorySelectVmTracker.ts b/ide/src/trace/component/trace/sheet/vmtracker/TabPaneGpuMemorySelectVmTracker.ts index 13eca83b6761b3d47f5286baa2233b97f80cbe46..5e9a4f5644148c61ca51f24130257b79259279e4 100644 --- a/ide/src/trace/component/trace/sheet/vmtracker/TabPaneGpuMemorySelectVmTracker.ts +++ b/ide/src/trace/component/trace/sheet/vmtracker/TabPaneGpuMemorySelectVmTracker.ts @@ -13,13 +13,13 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { type LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { type GpuMemory } from '../../../../bean/AbilityMonitor.js'; -import { MemoryConfig } from '../../../../bean/MemoryConfig.js'; -import { getTabGpuMemoryVMTrackerClickData } from '../../../../database/SqlLite.js'; -import { ns2s } from '../../../../database/ui-worker/ProcedureWorkerCommon.js'; -import { Utils } from '../../base/Utils.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { type LitTable } from '../../../../../base-ui/table/lit-table'; +import { type GpuMemory } from '../../../../bean/AbilityMonitor'; +import { MemoryConfig } from '../../../../bean/MemoryConfig'; +import { getTabGpuMemoryVMTrackerClickData } from '../../../../database/SqlLite'; +import { ns2s } from '../../../../database/ui-worker/ProcedureWorkerCommon'; +import { Utils } from '../../base/Utils'; @element('tabpane-gpu-memory-selection-vmtracker') export class TabPaneGpuMemorySelectVmTracker extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/vmtracker/TabPaneGpuMemoryVmTracker.ts b/ide/src/trace/component/trace/sheet/vmtracker/TabPaneGpuMemoryVmTracker.ts index 646f039664868000bf9bbf02bdabd779cc4a231d..a3af32e2b9721f38587b9847263109e67e3a59c1 100644 --- a/ide/src/trace/component/trace/sheet/vmtracker/TabPaneGpuMemoryVmTracker.ts +++ b/ide/src/trace/component/trace/sheet/vmtracker/TabPaneGpuMemoryVmTracker.ts @@ -13,15 +13,15 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { type LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { type SelectionParam } from '../../../../bean/BoxSelection.js'; -import { resizeObserver } from '../SheetUtils.js'; -import { getTabGpuMemoryData } from '../../../../database/SqlLite.js'; -import { GpuMemory } from '../../../../bean/AbilityMonitor.js'; -import { MemoryConfig } from '../../../../bean/MemoryConfig.js'; -import { Utils } from '../../base/Utils.js'; -import { SpSystemTrace } from '../../../SpSystemTrace.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { type LitTable } from '../../../../../base-ui/table/lit-table'; +import { type SelectionParam } from '../../../../bean/BoxSelection'; +import { resizeObserver } from '../SheetUtils'; +import { getTabGpuMemoryData } from '../../../../database/SqlLite'; +import { GpuMemory } from '../../../../bean/AbilityMonitor'; +import { MemoryConfig } from '../../../../bean/MemoryConfig'; +import { Utils } from '../../base/Utils'; +import { SpSystemTrace } from '../../../SpSystemTrace'; @element('tabpane-gpu-memory-vmtracker') export class TabPaneGpuMemoryVmTracker extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/vmtracker/TabPaneGpuMemoryVmTrackerComparison.ts b/ide/src/trace/component/trace/sheet/vmtracker/TabPaneGpuMemoryVmTrackerComparison.ts index 3606c9de2046e47c26e3e31a1e6d447b53092fc5..ebc9671cdb29281c62252b5e2a5380dfafa6219c 100644 --- a/ide/src/trace/component/trace/sheet/vmtracker/TabPaneGpuMemoryVmTrackerComparison.ts +++ b/ide/src/trace/component/trace/sheet/vmtracker/TabPaneGpuMemoryVmTrackerComparison.ts @@ -13,19 +13,19 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { type LitSelect } from '../../../../../base-ui/select/LitSelect.js'; -import { LitSelectOption } from '../../../../../base-ui/select/LitSelectOption.js'; -import { type LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { GpuMemoryComparison } from '../../../../bean/AbilityMonitor.js'; -import { MemoryConfig } from '../../../../bean/MemoryConfig.js'; -import { getTabGpuMemoryVmTrackerComparisonData } from '../../../../database/SqlLite.js'; -import { type SnapshotStruct } from '../../../../database/ui-worker/ProcedureWorkerSnapshot.js'; -import { SpSystemTrace } from '../../../SpSystemTrace.js'; -import { Utils } from '../../base/Utils.js'; -import { compare, resizeObserverFromMemory } from '../SheetUtils.js'; -import '../TabPaneJsMemoryFilter.js'; -import { type TabPaneJsMemoryFilter } from '../TabPaneJsMemoryFilter.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { type LitSelect } from '../../../../../base-ui/select/LitSelect'; +import { LitSelectOption } from '../../../../../base-ui/select/LitSelectOption'; +import { type LitTable } from '../../../../../base-ui/table/lit-table'; +import { GpuMemoryComparison } from '../../../../bean/AbilityMonitor'; +import { MemoryConfig } from '../../../../bean/MemoryConfig'; +import { getTabGpuMemoryVmTrackerComparisonData } from '../../../../database/SqlLite'; +import { type SnapshotStruct } from '../../../../database/ui-worker/ProcedureWorkerSnapshot'; +import { SpSystemTrace } from '../../../SpSystemTrace'; +import { Utils } from '../../base/Utils'; +import { compare, resizeObserverFromMemory } from '../SheetUtils'; +import '../TabPaneJsMemoryFilter'; +import { type TabPaneJsMemoryFilter } from '../TabPaneJsMemoryFilter'; @element('tabpane-gpu-memory-vmtracker-comparison') export class TabPaneGpuMemoryVmTrackerComparison extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/vmtracker/TabPaneGpuResourceVmTracker.ts b/ide/src/trace/component/trace/sheet/vmtracker/TabPaneGpuResourceVmTracker.ts index 1dd1fcd916004d942fe4c5157e8311808eeee11d..6677de14574612c540231ec15a171469a5f62514 100644 --- a/ide/src/trace/component/trace/sheet/vmtracker/TabPaneGpuResourceVmTracker.ts +++ b/ide/src/trace/component/trace/sheet/vmtracker/TabPaneGpuResourceVmTracker.ts @@ -13,13 +13,13 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { queryGpuResourceTabData } from '../../../../database/SqlLite.js'; -import { getByteWithUnit } from '../../../../database/logic-worker/ProcedureLogicWorkerCommon.js'; -import { ns2s } from '../../../../database/ui-worker/ProcedureWorkerCommon.js'; -import { SpSystemTrace } from '../../../SpSystemTrace.js'; -import { resizeObserver } from '../SheetUtils.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { queryGpuResourceTabData } from '../../../../database/SqlLite'; +import { getByteWithUnit } from '../../../../database/logic-worker/ProcedureLogicWorkerCommon'; +import { ns2s } from '../../../../database/ui-worker/ProcedureWorkerCommon'; +import { SpSystemTrace } from '../../../SpSystemTrace'; +import { resizeObserver } from '../SheetUtils'; @element('tabpane-gpu-resource') export class TabPaneGpuResourceVmTracker extends BaseElement { private gpuResourceTable: LitTable | undefined | null; diff --git a/ide/src/trace/component/trace/sheet/vmtracker/TabPanePurgPinComparisonVM.ts b/ide/src/trace/component/trace/sheet/vmtracker/TabPanePurgPinComparisonVM.ts index 68295a39ffee74e1d2d39ce7a500a1aeb0ded9c3..3f8a883f97cd6711a2bb529803011ba2c860683b 100644 --- a/ide/src/trace/component/trace/sheet/vmtracker/TabPanePurgPinComparisonVM.ts +++ b/ide/src/trace/component/trace/sheet/vmtracker/TabPanePurgPinComparisonVM.ts @@ -12,16 +12,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { type LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { type LitSelect } from '../../../../../base-ui/select/LitSelect.js'; -import { LitSelectOption } from '../../../../../base-ui/select/LitSelectOption.js'; -import { type SelectionParam } from '../../../../bean/BoxSelection.js'; -import { MemoryConfig } from '../../../../bean/MemoryConfig.js'; -import { queryProcessPurgeableSelectionTab } from '../../../../database/SqlLite.js'; -import { Utils } from '../../base/Utils.js'; -import { CompareStruct, compare, resizeObserverFromMemory } from '../SheetUtils.js'; -import { type TabPaneJsMemoryFilter } from '../TabPaneJsMemoryFilter.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { type LitTable } from '../../../../../base-ui/table/lit-table'; +import { type LitSelect } from '../../../../../base-ui/select/LitSelect'; +import { LitSelectOption } from '../../../../../base-ui/select/LitSelectOption'; +import { type SelectionParam } from '../../../../bean/BoxSelection'; +import { MemoryConfig } from '../../../../bean/MemoryConfig'; +import { queryProcessPurgeableSelectionTab } from '../../../../database/SqlLite'; +import { Utils } from '../../base/Utils'; +import { CompareStruct, compare, resizeObserverFromMemory } from '../SheetUtils'; +import { type TabPaneJsMemoryFilter } from '../TabPaneJsMemoryFilter'; @element('tabpane-purgeable-pin-comparison-vm') export class TabPanePurgPinComparisonVM extends BaseElement { private purgeablePinTable: LitTable | null | undefined; diff --git a/ide/src/trace/component/trace/sheet/vmtracker/TabPanePurgTotalComparisonVM.ts b/ide/src/trace/component/trace/sheet/vmtracker/TabPanePurgTotalComparisonVM.ts index c7b1d52d028eda5788cb738fd05a794fc9d97397..6c9d7254d0c4c1fa4c25f0f1f6fe8daab5188df5 100644 --- a/ide/src/trace/component/trace/sheet/vmtracker/TabPanePurgTotalComparisonVM.ts +++ b/ide/src/trace/component/trace/sheet/vmtracker/TabPanePurgTotalComparisonVM.ts @@ -12,16 +12,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { type LitSelect } from '../../../../../base-ui/select/LitSelect.js'; -import { LitSelectOption } from '../../../../../base-ui/select/LitSelectOption.js'; -import { type LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { type SelectionParam } from '../../../../bean/BoxSelection.js'; -import { MemoryConfig } from '../../../../bean/MemoryConfig.js'; -import { queryProcessPurgeableSelectionTab } from '../../../../database/SqlLite.js'; -import { Utils } from '../../base/Utils.js'; -import { CompareStruct, compare, resizeObserverFromMemory } from '../SheetUtils.js'; -import { type TabPaneJsMemoryFilter } from '../TabPaneJsMemoryFilter.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { type LitSelect } from '../../../../../base-ui/select/LitSelect'; +import { LitSelectOption } from '../../../../../base-ui/select/LitSelectOption'; +import { type LitTable } from '../../../../../base-ui/table/lit-table'; +import { type SelectionParam } from '../../../../bean/BoxSelection'; +import { MemoryConfig } from '../../../../bean/MemoryConfig'; +import { queryProcessPurgeableSelectionTab } from '../../../../database/SqlLite'; +import { Utils } from '../../base/Utils'; +import { CompareStruct, compare, resizeObserverFromMemory } from '../SheetUtils'; +import { type TabPaneJsMemoryFilter } from '../TabPaneJsMemoryFilter'; @element('tabpane-purgeable-total-comparison-vm') export class TabPanePurgTotalComparisonVM extends BaseElement { private purgeableTotalTable: LitTable | null | undefined; diff --git a/ide/src/trace/component/trace/sheet/vmtracker/TabPaneVmTrackerShm.ts b/ide/src/trace/component/trace/sheet/vmtracker/TabPaneVmTrackerShm.ts index b0480c539ae87c6502350a11bfdfe28647f3c1d4..ec647f6daafa6c327859ef6cb959e44debad64c7 100644 --- a/ide/src/trace/component/trace/sheet/vmtracker/TabPaneVmTrackerShm.ts +++ b/ide/src/trace/component/trace/sheet/vmtracker/TabPaneVmTrackerShm.ts @@ -12,13 +12,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { type LitTable } from '../../../../../base-ui/table/lit-table.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { type LitTable } from '../../../../../base-ui/table/lit-table'; import { type SelectionParam } from '../../../../bean/BoxSelection'; -import { queryVmTrackerShmSizeData } from '../../../../database/SqlLite.js'; -import { Utils } from '../../base/Utils.js'; -import { MemoryConfig } from '../../../../bean/MemoryConfig.js'; -import { ns2s } from '../../../../database/ui-worker/ProcedureWorkerCommon.js'; +import { queryVmTrackerShmSizeData } from '../../../../database/SqlLite'; +import { Utils } from '../../base/Utils'; +import { MemoryConfig } from '../../../../bean/MemoryConfig'; +import { ns2s } from '../../../../database/ui-worker/ProcedureWorkerCommon'; @element('tabpane-vmtracker-shm') export class TabPaneVmTrackerShm extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/vmtracker/TabPaneVmTrackerShmComparison.ts b/ide/src/trace/component/trace/sheet/vmtracker/TabPaneVmTrackerShmComparison.ts index a5f233bfda2a898a8a4bd4a5d2c9a284a51a9f1a..18ebc96814f7a9319beda4533acb79adcf200935 100644 --- a/ide/src/trace/component/trace/sheet/vmtracker/TabPaneVmTrackerShmComparison.ts +++ b/ide/src/trace/component/trace/sheet/vmtracker/TabPaneVmTrackerShmComparison.ts @@ -12,17 +12,17 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { type LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { queryVmTrackerShmSelectionData } from '../../../../database/SqlLite.js'; -import { type SnapshotStruct } from '../../../../database/ui-worker/ProcedureWorkerSnapshot.js'; -import { MemoryConfig } from '../../../../bean/MemoryConfig.js'; -import { ns2s } from '../../../../database/ui-worker/ProcedureWorkerCommon.js'; -import { Utils } from '../../base/Utils.js'; -import { LitSelectOption } from '../../../../../base-ui/select/LitSelectOption.js'; -import { type LitSelect } from '../../../../../base-ui/select/LitSelect.js'; -import { type TabPaneJsMemoryFilter } from '../TabPaneJsMemoryFilter.js'; -import { resizeObserverFromMemory } from '../SheetUtils.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { type LitTable } from '../../../../../base-ui/table/lit-table'; +import { queryVmTrackerShmSelectionData } from '../../../../database/SqlLite'; +import { type SnapshotStruct } from '../../../../database/ui-worker/ProcedureWorkerSnapshot'; +import { MemoryConfig } from '../../../../bean/MemoryConfig'; +import { ns2s } from '../../../../database/ui-worker/ProcedureWorkerCommon'; +import { Utils } from '../../base/Utils'; +import { LitSelectOption } from '../../../../../base-ui/select/LitSelectOption'; +import { type LitSelect } from '../../../../../base-ui/select/LitSelect'; +import { type TabPaneJsMemoryFilter } from '../TabPaneJsMemoryFilter'; +import { resizeObserverFromMemory } from '../SheetUtils'; @element('tabpane-vmtracker-shm-comparison') export class TabPaneVmTrackerShmComparison extends BaseElement { diff --git a/ide/src/trace/component/trace/sheet/vmtracker/TabPaneVmTrackerShmSelection.ts b/ide/src/trace/component/trace/sheet/vmtracker/TabPaneVmTrackerShmSelection.ts index 6eb48eb5f9d50c723a9cc0822d71f4af3a9dc5f5..03b2c464d4323a2f6f7984626824b9a6320191fe 100644 --- a/ide/src/trace/component/trace/sheet/vmtracker/TabPaneVmTrackerShmSelection.ts +++ b/ide/src/trace/component/trace/sheet/vmtracker/TabPaneVmTrackerShmSelection.ts @@ -12,14 +12,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { BaseElement, element } from '../../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../../base-ui/table/lit-table.js'; -import { queryVmTrackerShmSelectionData } from '../../../../database/SqlLite.js'; -import { SpSystemTrace } from '../../../SpSystemTrace.js'; -import { Utils } from '../../base/Utils.js'; +import { BaseElement, element } from '../../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../../base-ui/table/lit-table'; +import { queryVmTrackerShmSelectionData } from '../../../../database/SqlLite'; +import { SpSystemTrace } from '../../../SpSystemTrace'; +import { Utils } from '../../base/Utils'; import { SnapshotStruct } from '../../../../database/ui-worker/ProcedureWorkerSnapshot'; -import { MemoryConfig } from '../../../../bean/MemoryConfig.js'; -import { ns2s } from '../../../../database/ui-worker/ProcedureWorkerCommon.js'; +import { MemoryConfig } from '../../../../bean/MemoryConfig'; +import { ns2s } from '../../../../database/ui-worker/ProcedureWorkerCommon'; @element('tabpane-vmtracker-shm-selection') export class TabPaneVmTrackerShmSelection extends BaseElement { diff --git a/ide/src/trace/component/trace/timer-shaft/CollapseButton.ts b/ide/src/trace/component/trace/timer-shaft/CollapseButton.ts index 25b74d338ca1fafb7b44c81f00d31e2e328471b4..27e0fb8d2c5f99b697fffc9158b341fe967c4a53 100644 --- a/ide/src/trace/component/trace/timer-shaft/CollapseButton.ts +++ b/ide/src/trace/component/trace/timer-shaft/CollapseButton.ts @@ -13,9 +13,9 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../base-ui/BaseElement.js'; -import '../../../../base-ui/BaseElement.js'; -import '../../../../base-ui/icon/LitIcon.js'; +import { BaseElement, element } from '../../../../base-ui/BaseElement'; +import '../../../../base-ui/BaseElement'; +import '../../../../base-ui/icon/LitIcon'; @element('collapse-button') export default class CollapseButton extends BaseElement { diff --git a/ide/src/trace/component/trace/timer-shaft/Graph.ts b/ide/src/trace/component/trace/timer-shaft/Graph.ts index 7117194ceed418c77f85fbea3565c5c6be9e82c4..9137b07df98630aa9e56a4d37e8590e9982ca158 100644 --- a/ide/src/trace/component/trace/timer-shaft/Graph.ts +++ b/ide/src/trace/component/trace/timer-shaft/Graph.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { Rect } from './Rect.js'; +import { Rect } from './Rect'; export abstract class Graph { frame: Rect; diff --git a/ide/src/trace/component/trace/timer-shaft/RangeRuler.ts b/ide/src/trace/component/trace/timer-shaft/RangeRuler.ts index e3b13bcdc29e4b8f034b2fb2317b3d9136f5886e..78af1d9afd1d478602404742215f8a7c56daa4f1 100644 --- a/ide/src/trace/component/trace/timer-shaft/RangeRuler.ts +++ b/ide/src/trace/component/trace/timer-shaft/RangeRuler.ts @@ -13,12 +13,12 @@ * limitations under the License. */ -import { Graph } from './Graph.js'; -import { Rect } from './Rect.js'; -import { ns2s, ns2UnitS, TimerShaftElement } from '../TimerShaftElement.js'; -import { ColorUtils, interpolateColorBrightness } from '../base/ColorUtils.js'; -import { CpuStruct } from '../../../database/ui-worker/ProcedureWorkerCPU.js'; -import { CurrentSlicesTime, SpSystemTrace } from '../../SpSystemTrace.js'; +import { Graph } from './Graph'; +import { Rect } from './Rect'; +import { ns2s, ns2UnitS, TimerShaftElement } from '../TimerShaftElement'; +import { ColorUtils, interpolateColorBrightness } from '../base/ColorUtils'; +import { CpuStruct } from '../../../database/ui-worker/ProcedureWorkerCPU'; +import { CurrentSlicesTime, SpSystemTrace } from '../../SpSystemTrace'; const MarkPadding = 5; const FIT_TOTALX_MIN: number = 280; @@ -412,17 +412,17 @@ export class RangeRuler extends Graph { this.animaStartTime = dat.getTime(); } this.currentDuration = new Date().getTime() - this.animaStartTime; - this.setCacheInterval(); - this.range.refresh = this.cacheInterval.flag; + this.setCacheInterval(new Date().getTime() - this.animaStartTime); } - setCacheInterval() { - if (Math.trunc(this.currentDuration / this.cacheInterval.interval) !== this.cacheInterval.value) { + setCacheInterval(offsetTime:number) { + if (Math.trunc(offsetTime / this.cacheInterval.interval) !== this.cacheInterval.value) { this.cacheInterval.flag = true; - this.cacheInterval.value = Math.trunc(this.currentDuration / this.cacheInterval.interval); + this.cacheInterval.value = Math.trunc(offsetTime / this.cacheInterval.interval); } else { this.cacheInterval.flag = false; } + this.range.refresh = this.cacheInterval.flag; } delayDraw() { @@ -481,49 +481,21 @@ export class RangeRuler extends Graph { } cancelTimeOut: any = undefined; + isKeyPress: boolean = false; keyPress(keyboardEvent: KeyboardEvent, currentSlicesTime?: CurrentSlicesTime) { - if (currentSlicesTime) { - this.currentSlicesTime = currentSlicesTime; - } - if ( - this.animaStartTime == undefined || - (this.pressedKeys.length > 0 && - this.pressedKeys[this.pressedKeys.length - 1] !== keyboardEvent.key.toLocaleLowerCase()) - ) { - let dat = new Date(); - dat.setTime(dat.getTime() - 400); - this.animaStartTime = dat.getTime(); - } - this.currentDuration = new Date().getTime() - this.animaStartTime; - this.setCacheInterval(); - this.range.refresh = this.cacheInterval.flag; - if (this.pressedKeys.length > 0) { - if (this.pressedKeys[this.pressedKeys.length - 1] !== keyboardEvent.key.toLocaleLowerCase()) { - this.cancelPressFrame(); - this.cancelUpFrame(); - this.pressedKeys.push(keyboardEvent.key.toLocaleLowerCase()); - let date = new Date(); - date.setTime(date.getTime() - 400); - this.animaStartTime = date.getTime(); - this.keyboardKeyPressMap[this.pressedKeys[this.pressedKeys.length - 1]]?.bind(this)(); + //第一个按键或者最后一个按下的和当前按键不一致 + if (this.pressedKeys.length == 0 || this.pressedKeys[this.pressedKeys.length - 1] !== keyboardEvent.key.toLocaleLowerCase()) { + if (currentSlicesTime) { + this.currentSlicesTime = currentSlicesTime; } - } else { this.cancelPressFrame(); this.cancelUpFrame(); this.pressedKeys.push(keyboardEvent.key.toLocaleLowerCase()); - let dat = new Date(); - dat.setTime(dat.getTime() - 400); - this.animaStartTime = dat.getTime(); + this.animaStartTime = new Date().getTime();//记录按下的时间 this.keyboardKeyPressMap[this.pressedKeys[this.pressedKeys.length - 1]]?.bind(this)(); } this.isPress = true; - if (this.cancelTimeOut) { - clearTimeout(this.cancelTimeOut); - } - this.cancelTimeOut = setTimeout(() => { - this.keyUp({ key: keyboardEvent.key } as KeyboardEvent); - }, 1000); } keyPressF(): void { @@ -615,11 +587,11 @@ export class RangeRuler extends Graph { x++; if (sliceMidX >= midX - MID_OFFSET && sliceMidX <= midX + MID_OFFSET) { /* 把 endNS 转换为 endX , startNS 转化 startX, - totalX = ( endX - startX ) 280px <= totalX <= 300px - 此时,如果slice的比例或者宽度不合适,则进行调整校正,缩放到合适的比例。 - 不能使用固定的 scale, 因为调整slice的宽度时,scale、 startNS 和 endNS 都在变化, - 所以要使用 totalX 来判断slice是否缩放到合适的大小了。 - */ + totalX = ( endX - startX ) 280px <= totalX <= 300px + 此时,如果slice的比例或者宽度不合适,则进行调整校正,缩放到合适的比例。 + 不能使用固定的 scale, 因为调整slice的宽度时,scale、 startNS 和 endNS 都在变化, + 所以要使用 totalX 来判断slice是否缩放到合适的大小了。 + */ if ( (totalX < FIT_TOTALX_MIN - MID_OFFSET && totalX > 0) || Math.round(totalX) > FIT_TOTALX_MAX + MID_OFFSET @@ -709,8 +681,13 @@ export class RangeRuler extends Graph { this.pressFrameIdF = requestAnimationFrame(animF); this.zoomFit(startTime, endTime); } + + fixReg = 76;//速度上线 + f = 11;//加速度系数,值越小加速度越大 keyPressW() { let animW = () => { + let offset = Date.now() - this.animaStartTime!; + this.setCacheInterval(offset); if (this.scale === 50) { this.fillX(); this.range.refresh = true; @@ -718,8 +695,11 @@ export class RangeRuler extends Graph { this.range.refresh = false; return; } - this.range.startNS += (this.centerXPercentage * this.currentDuration * this.scale) / this.p; - this.range.endNS -= ((1 - this.centerXPercentage) * this.currentDuration * this.scale) / this.p; + this.currentDuration = (offset) / this.f;//reg + if (this.currentDuration >= this.fixReg) this.currentDuration = this.fixReg; + let bb = Math.tan(Math.PI / 180 * this.currentDuration); + this.range.startNS += (this.centerXPercentage * bb * this.scale); + this.range.endNS -= ((1 - this.centerXPercentage) * bb * this.scale); this.fillX(); this.draw(); this.range.refresh = false; @@ -730,6 +710,8 @@ export class RangeRuler extends Graph { keyPressS() { let animS = () => { + let offset = Date.now() - this.animaStartTime!; + this.setCacheInterval(offset); if (this.range.startNS <= 0 && this.range.endNS >= this.range.totalNS) { this.fillX(); this.range.refresh = true; @@ -737,8 +719,11 @@ export class RangeRuler extends Graph { this.range.refresh = false; return; } - this.range.startNS -= ((this.centerXPercentage * this.scale) / this.p) * this.currentDuration; - this.range.endNS += (((1 - this.centerXPercentage) * this.scale) / this.p) * this.currentDuration; + this.currentDuration = (offset) / this.f + if (this.currentDuration >= this.fixReg) this.currentDuration = this.fixReg; + let bb = Math.tan(Math.PI / 180 * this.currentDuration); + this.range.startNS -= ((this.centerXPercentage * bb * this.scale)); + this.range.endNS += (((1 - this.centerXPercentage) * bb * this.scale)); this.fillX(); this.draw(); this.range.refresh = false; @@ -749,6 +734,8 @@ export class RangeRuler extends Graph { keyPressA() { let animA = () => { + let offset = Date.now() - this.animaStartTime!; + this.setCacheInterval(offset); if (this.range.startNS <= 0) { this.fillX(); this.range.refresh = true; @@ -756,7 +743,10 @@ export class RangeRuler extends Graph { this.range.refresh = false; return; } - let s = (this.scale / this.p) * this.currentDuration * 0.4; + this.currentDuration = (offset) / this.f + if (this.currentDuration >= this.fixReg) this.currentDuration = this.fixReg; + let bb = Math.tan(Math.PI / 180 * this.currentDuration); + let s = this.scale * bb; this.range.startNS -= s; this.range.endNS -= s; this.fillX(); @@ -769,6 +759,8 @@ export class RangeRuler extends Graph { keyPressD() { let animD = () => { + let offset = Date.now() - this.animaStartTime!; + this.setCacheInterval(offset); if (this.range.endNS >= this.range.totalNS) { this.fillX(); this.range.refresh = true; @@ -776,7 +768,10 @@ export class RangeRuler extends Graph { this.range.refresh = false; return; } - let s = (this.scale / this.p) * this.currentDuration * 0.4; + this.currentDuration = (offset) / this.f + if (this.currentDuration >= this.fixReg) this.currentDuration = this.fixReg; + let bb = Math.tan(Math.PI / 180 * this.currentDuration); + let s = this.scale * bb; this.range.startNS += s; this.range.endNS += s; this.fillX(); @@ -823,23 +818,21 @@ export class RangeRuler extends Graph { let animW = () => { if (this.scale === 50) { this.fillX(); - this.range.refresh = true; - this.notifyHandler(this.range); - this.range.refresh = false; + this.keyUpEnd(); return; } let dur = new Date().getTime() - startTime; - this.range.startNS += (this.centerXPercentage * 100 * this.scale) / this.p; - this.range.endNS -= ((1 - this.centerXPercentage) * 100 * this.scale) / this.p; + if (dur > 150) dur = 150; + let offset = Math.tan(Math.PI / 180 * (150 - dur) * 0.2) * this.scale; + this.range.startNS += (this.centerXPercentage * offset); + this.range.endNS -= ((1 - this.centerXPercentage) * offset); this.fillX(); this.draw(); this.range.refresh = false; - if (dur < 100) { + if (dur < 150) { this.upFrameIdW = requestAnimationFrame(animW); } else { - this.range.refresh = true; - this.notifyHandler(this.range); - this.range.refresh = false; + this.keyUpEnd(); } }; this.upFrameIdW = requestAnimationFrame(animW); @@ -850,23 +843,21 @@ export class RangeRuler extends Graph { let animS = () => { if (this.range.startNS <= 0 && this.range.endNS >= this.range.totalNS) { this.fillX(); - this.range.refresh = true; - this.notifyHandler(this.range); - this.range.refresh = false; + this.keyUpEnd(); return; } let dur = new Date().getTime() - startTime; - this.range.startNS -= (this.centerXPercentage * 100 * this.scale) / this.p; - this.range.endNS += ((1 - this.centerXPercentage) * 100 * this.scale) / this.p; + if (dur > 150) dur = 150; + let offset = Math.tan(Math.PI / 180 * (150 - dur) * 0.2) * this.scale; + this.range.startNS -= (this.centerXPercentage * offset); + this.range.endNS += ((1 - this.centerXPercentage) * offset); this.fillX(); this.draw(); this.range.refresh = false; - if (dur < 100) { + if (dur < 150) { this.upFrameIdS = requestAnimationFrame(animS); } else { - this.range.refresh = true; - this.notifyHandler(this.range); - this.range.refresh = false; + this.keyUpEnd(); } }; this.upFrameIdS = requestAnimationFrame(animS); @@ -877,51 +868,52 @@ export class RangeRuler extends Graph { let animA = () => { if (this.range.startNS <= 0) { this.fillX(); - this.range.refresh = true; - this.notifyHandler(this.range); - this.range.refresh = false; + this.keyUpEnd(); return; } let dur = new Date().getTime() - startTime; - let s = (this.scale * 80) / this.p; - this.range.startNS -= s; - this.range.endNS -= s; + if (dur > 150) dur = 150; + let offset = Math.tan(Math.PI / 180 * (150 - dur) * 0.15) * this.scale; + this.range.startNS -= offset; + this.range.endNS -= offset; this.fillX(); this.draw(); this.range.refresh = false; - if (dur < 100) { + if (dur < 150) { this.upFrameIdA = requestAnimationFrame(animA); } else { - this.range.refresh = true; - this.notifyHandler(this.range); - this.range.refresh = false; + this.keyUpEnd(); } }; this.upFrameIdA = requestAnimationFrame(animA); } + keyUpEnd() { + this.range.refresh = true; + // window.isLastFrame = true; + this.notifyHandler(this.range); + this.range.refresh = false; + // window.isLastFrame = false; + } + keyUpD(): void { let startTime = new Date().getTime(); let animD = () => { if (this.range.endNS >= this.range.totalNS) { - this.range.refresh = true; - this.notifyHandler(this.range); - this.range.refresh = false; + this.keyUpEnd(); return; } let dur = new Date().getTime() - startTime; - let s = (this.scale * 80) / this.p; - this.range.startNS += s; - this.range.endNS += s; + let offset = Math.tan(Math.PI / 180 * (150 - dur) * 0.15) * this.scale; + this.range.startNS += offset; + this.range.endNS += offset; this.fillX(); this.draw(); this.range.refresh = false; - if (dur < 100) { + if (dur < 150) { this.upFrameIdD = requestAnimationFrame(animD); } else { - this.range.refresh = true; - this.notifyHandler(this.range); - this.range.refresh = false; + this.keyUpEnd(); } }; this.upFrameIdD = requestAnimationFrame(animD); diff --git a/ide/src/trace/component/trace/timer-shaft/SportRuler.ts b/ide/src/trace/component/trace/timer-shaft/SportRuler.ts index 91eb01ff66335fd5d6f23524a740ae59632af822..b40342fb5b5dce67a8b1139c02c014ab3e7b63aa 100644 --- a/ide/src/trace/component/trace/timer-shaft/SportRuler.ts +++ b/ide/src/trace/component/trace/timer-shaft/SportRuler.ts @@ -13,14 +13,14 @@ * limitations under the License. */ -import { Graph } from './Graph.js'; -import { Rect } from './Rect.js'; -import { TimeRange } from './RangeRuler.js'; -import { Flag } from './Flag.js'; -import { ns2s, ns2x, randomRgbColor, TimerShaftElement } from '../TimerShaftElement.js'; -import { TraceRow } from '../base/TraceRow.js'; -import { SpApplication } from '../../../SpApplication.js'; -import { Utils } from '../base/Utils.js'; +import { Graph } from './Graph'; +import { Rect } from './Rect'; +import { TimeRange } from './RangeRuler'; +import { Flag } from './Flag'; +import { ns2s, ns2x, randomRgbColor, TimerShaftElement } from '../TimerShaftElement'; +import { TraceRow } from '../base/TraceRow'; +import { SpApplication } from '../../../SpApplication'; +import { Utils } from '../base/Utils'; export enum StType { TEMP, //临时的 diff --git a/ide/src/trace/component/trace/timer-shaft/TabPaneFlag.ts b/ide/src/trace/component/trace/timer-shaft/TabPaneFlag.ts index d04adca86807897561c28a89caf882e0c29373c3..ab0dac27e8f4e439057164b93ebd386d88353f64 100644 --- a/ide/src/trace/component/trace/timer-shaft/TabPaneFlag.ts +++ b/ide/src/trace/component/trace/timer-shaft/TabPaneFlag.ts @@ -13,13 +13,13 @@ * limitations under the License. */ -import { BaseElement, element } from '../../../../base-ui/BaseElement.js'; -import { LitTable } from '../../../../base-ui/table/lit-table.js'; -import { MarkStruct } from '../../../bean/MarkStruct.js'; -import { SpSystemTrace } from '../../SpSystemTrace.js'; -import { ns2s } from '../TimerShaftElement.js'; -import { getTimeString } from '../sheet/TabPaneCurrentSelection.js'; -import { Flag } from './Flag.js'; +import { BaseElement, element } from '../../../../base-ui/BaseElement'; +import { LitTable } from '../../../../base-ui/table/lit-table'; +import { MarkStruct } from '../../../bean/MarkStruct'; +import { SpSystemTrace } from '../../SpSystemTrace'; +import { ns2s } from '../TimerShaftElement'; +import { getTimeString } from '../sheet/TabPaneCurrentSelection'; +import { Flag } from './Flag'; @element('tabpane-flag') export class TabPaneFlag extends BaseElement { @@ -33,7 +33,7 @@ export class TabPaneFlag extends BaseElement { this.systemTrace = document .querySelector('body > sp-application') ?.shadowRoot!.querySelector('#sp-system-trace'); - this.panelTable = this.shadowRoot!.querySelector('.notes-editor-panel'); + this.panelTable = this.shadowRoot!.querySelector('.notes-editor-panel'); this.panelTable!.addEventListener('row-click', (evt: any) => { if (evt.detail.data.startTime === undefined) { return; @@ -148,7 +148,7 @@ export class TabPaneFlag extends BaseElement { this.panelTable!.addEventListener('click', (event: any) => { if (this.flagList.length === 0) { return; - } + } for (let i = 1; i < tr.length; i++) { let inputValue = tr[i].querySelector('#text-input')!.value; if (this.tableDataSource[i].startTime === this.flagList[i - 1].time) { diff --git a/ide/src/trace/component/trace/timer-shaft/TimeRuler.ts b/ide/src/trace/component/trace/timer-shaft/TimeRuler.ts index a802f4f8e38afdb7762a4588e7ebc5cdb1f52ece..e5f274d823223448759d7c2782527b0eb8231633 100644 --- a/ide/src/trace/component/trace/timer-shaft/TimeRuler.ts +++ b/ide/src/trace/component/trace/timer-shaft/TimeRuler.ts @@ -13,9 +13,9 @@ * limitations under the License. */ -import { Graph } from './Graph.js'; -import { Rect } from './Rect.js'; -import { ns2s, TimerShaftElement } from '../TimerShaftElement.js'; +import { Graph } from './Graph'; +import { Rect } from './Rect'; +import { ns2s, TimerShaftElement } from '../TimerShaftElement'; export class TimeRuler extends Graph { totalNS: number; diff --git a/ide/src/trace/config/custom_temp_config.json b/ide/src/trace/config/custom_temp_config.json new file mode 100644 index 0000000000000000000000000000000000000000..ad4fceafbc55a3ccd5724963f443bfdd66d9197d --- /dev/null +++ b/ide/src/trace/config/custom_temp_config.json @@ -0,0 +1,55 @@ + +{ + "subsystems": [ + { + "subsystem": "Cpu", + "components": [ + { + "component": "Cpu", + "charts": [ + {"chartName": "Cpu", "chartId": ""} + ] + }, + { + "component": "Cpu Frequency", + "charts": [ + {"chartName": "Cpu Frequency", "chartId": ""} + ] + }, + { + "component": "Cpu State", + "charts": [ + {"chartName": "Cpu State", "chartId": ""} + ] + }, + { + "component": "Cpu Freq Limit", + "charts": [ + {"chartName": "Cpu Freq Limit", "chartId": ""} + ] + } + ] + }, + { + "subsystem": "Irqs", + "components": [ + { + "component": "Irqs", + "charts": [ + {"chartName": "Irqs", "chartId": ""} + ] + } + ] + }, + { + "subsystem": "FrameTimeline", + "components": [ + { + "component": "FrameTimeline", + "charts": [ + {"chartName": "FrameTimeline", "chartId": ""} + ] + } + ] + }] +} diff --git a/ide/src/trace/database/Convert.ts b/ide/src/trace/database/Convert.ts index 1698e33fa47edb26c3d65eaf98c3a55f577af40a..72410531e2e7d05adfb328fdba5e5867b7ec5953 100644 --- a/ide/src/trace/database/Convert.ts +++ b/ide/src/trace/database/Convert.ts @@ -13,15 +13,17 @@ * limitations under the License. */ -import { DbPool } from './SqlLite.js'; - -class ConvertThread extends Worker { +import { DbPool } from './SqlLite'; +class ConvertThread { busy: boolean = false; isCancelled: boolean = false; id: number = -1; taskMap: any = {}; name: string | undefined; - + worker?:Worker; + constructor(worker:Worker) { + this.worker = worker; + } uuid(): string { // @ts-ignore return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, (c) => @@ -42,7 +44,7 @@ class ConvertThread extends Worker { buffer: DbPool.sharedBuffer!, }; try { - this.postMessage(pam, [DbPool.sharedBuffer!]); + this.worker!.postMessage(pam, [DbPool.sharedBuffer!]); } catch (e: any) {} } } @@ -62,9 +64,9 @@ class ConvertPool { for (let i = 0; i < this.maxThreadNumber; i++) { let thread: ConvertThread; if (type === 'convert') { - thread = new ConvertThread('trace/database/ConvertTraceWorker.js'); + thread = new ConvertThread(new Worker(new URL('./ConvertTraceWorker',import.meta.url))); } - thread!.onmessage = (event: MessageEvent) => { + thread!.worker!.onmessage = (event: MessageEvent) => { thread.busy = false; ConvertPool.data = event.data.results; if (Reflect.has(thread.taskMap, event.data.id)) { @@ -83,8 +85,8 @@ class ConvertPool { } } }; - thread!.onmessageerror = (e) => {}; - thread!.onerror = (e) => {}; + thread!.worker!.onmessageerror = (e) => {}; + thread!.worker!.onerror = (e) => {}; thread!.id = i; thread!.busy = false; this.works?.push(thread!); @@ -94,7 +96,7 @@ class ConvertPool { close = () => { for (let i = 0; i < this.works.length; i++) { let thread = this.works[i]; - thread.terminate(); + thread.worker!.terminate(); } this.works.length = 0; }; diff --git a/ide/src/trace/database/DBUtils.ts b/ide/src/trace/database/DBUtils.ts index 79e94b3791bcce2a0ab47ada5daf2481c0da7401..674f7a4f63487ef5a0255da68513bc3e8e87e912 100644 --- a/ide/src/trace/database/DBUtils.ts +++ b/ide/src/trace/database/DBUtils.ts @@ -1,4 +1,4 @@ -import { info } from '../../log/Log.js'; +import { info } from '../../log/Log'; /** * 数据缓存期限 diff --git a/ide/src/trace/database/LongTraceDBUtils.ts b/ide/src/trace/database/LongTraceDBUtils.ts index 3ca7657829d2b309fdb2dc8ea45bd048f57321a4..89a5bded1e0c875e85a1770f7f1fc71500e4dc39 100644 --- a/ide/src/trace/database/LongTraceDBUtils.ts +++ b/ide/src/trace/database/LongTraceDBUtils.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { IndexedDBHelp } from './IndexedDBHelp.js'; +import { IndexedDBHelp } from './IndexedDBHelp'; export class LongTraceDBUtils { public static instance: LongTraceDBUtils | undefined; diff --git a/ide/src/trace/database/Procedure.ts b/ide/src/trace/database/Procedure.ts index 680f3329f8c5b10e65ea704438ee128fa0c3f33d..2809daf2fb7cd4f5b12351302096080c2a3f7c5c 100644 --- a/ide/src/trace/database/Procedure.ts +++ b/ide/src/trace/database/Procedure.ts @@ -13,14 +13,19 @@ * limitations under the License. */ -import { query } from './SqlLite.js'; +import { query } from './SqlLite'; -class ProcedureThread extends Worker { +class ProcedureThread{ busy: boolean = false; isCancelled: boolean = false; id: number = -1; taskMap: any = {}; name: string | undefined; + worker?:Worker; + + constructor(worker:Worker) { + this.worker = worker; + } uuid(): string { // @ts-ignore @@ -42,22 +47,22 @@ class ProcedureThread extends Worker { try { if (Array.isArray(transfer)) { if (transfer.length > 0) { - this.postMessage(pam, [...transfer]); + this.worker!.postMessage(pam, [...transfer]); } else { - this.postMessage(pam); + this.worker!.postMessage(pam); } } else { - this.postMessage(pam, [transfer]); + this.worker!.postMessage(pam, [transfer]); } } catch (e: any) {} } else { - this.postMessage(pam); + this.worker!.postMessage(pam); } } cancel() { this.isCancelled = true; - this.terminate(); + this.worker!.terminate(); } } @@ -98,11 +103,11 @@ class ProcedurePool { if (window.useWb) { return; } - let newThread: ProcedureThread = new ProcedureThread('trace/database/ui-worker/ProcedureWorker.js', { + let newThread: ProcedureThread = new ProcedureThread(new Worker(new URL('./ui-worker/ProcedureWorker',import.meta.url), { type: 'module', - }); + })); newThread.name = this.names[this.works.length]; - newThread.onmessage = (event: MessageEvent) => { + newThread.worker!.onmessage = (event: MessageEvent) => { newThread.busy = false; if ((event.data.type as string) == 'timeline-range-changed') { this.timelineChange && this.timelineChange(event.data.results); @@ -122,8 +127,8 @@ class ProcedurePool { this.onComplete(); } }; - newThread.onmessageerror = (e) => {}; - newThread.onerror = (e) => {}; + newThread.worker!.onmessageerror = (e) => {}; + newThread.worker!.onerror = (e) => {}; newThread.id = this.works.length; newThread.busy = false; this.works?.push(newThread); @@ -135,15 +140,15 @@ class ProcedurePool { if (window.useWb) { return; } - let thread: ProcedureThread = new ProcedureThread('trace/database/logic-worker/ProcedureLogicWorker.js', { + let thread: ProcedureThread = new ProcedureThread(new Worker(new URL('./logic-worker/ProcedureLogicWorker',import.meta.url), { type: 'module', - }); + })); thread.name = this.logicDataHandles[this.works.length - this.names.length]; - thread.onmessage = (event: MessageEvent) => { + thread.worker!.onmessage = (event: MessageEvent) => { thread.busy = false; if (event.data.isQuery) { query(event.data.type, event.data.sql, event.data.args, 'exec-buf').then((res: any) => { - thread.postMessage({ + thread.worker!.postMessage({ type: event.data.type, params: { list: res, @@ -177,8 +182,8 @@ class ProcedurePool { this.onComplete(); } }; - thread.onmessageerror = (e) => {}; - thread.onerror = (e) => {}; + thread.worker!.onmessageerror = (e) => {}; + thread.worker!.onerror = (e) => {}; thread.id = this.works.length; thread.busy = false; this.works?.push(thread); @@ -188,7 +193,7 @@ class ProcedurePool { close = () => { for (let i = 0; i < this.works.length; i++) { let thread = this.works[i]; - thread.terminate(); + thread.worker!.terminate(); } this.works.length = 0; }; diff --git a/ide/src/trace/database/SqlLite.ts b/ide/src/trace/database/SqlLite.ts index 878d8f637ba1914939483e5ae6fb0db0c42fdf62..e185d24e734113a95fb15a433587f58b1c8c38ce 100644 --- a/ide/src/trace/database/SqlLite.ts +++ b/ide/src/trace/database/SqlLite.ts @@ -13,11 +13,11 @@ * limitations under the License. */ -import { Counter, Fps, SelectionData } from '../bean/BoxSelection.js'; -import { WakeupBean } from '../bean/WakeupBean.js'; -import { BinderArgBean } from '../bean/BinderArgBean.js'; -import { SPTChild } from '../bean/StateProcessThread.js'; -import { CpuUsage, Freq } from '../bean/CpuUsage.js'; +import { Counter, Fps, SelectionData } from '../bean/BoxSelection'; +import { WakeupBean } from '../bean/WakeupBean'; +import { BinderArgBean } from '../bean/BinderArgBean'; +import { SPTChild } from '../bean/StateProcessThread'; +import { CpuUsage, Freq } from '../bean/CpuUsage'; import { NativeEvent, @@ -26,7 +26,7 @@ import { NativeHookProcess, NativeHookSampleQueryInfo, NativeHookStatistics, -} from '../bean/NativeHook.js'; +} from '../bean/NativeHook'; import { Dma, DmaComparison, @@ -37,7 +37,7 @@ import { SystemCpuSummary, SystemDiskIOSummary, SystemNetworkSummary, -} from '../bean/AbilityMonitor.js'; +} from '../bean/AbilityMonitor'; import { PerfCall, @@ -47,29 +47,29 @@ import { PerfSample, PerfStack, PerfThread, -} from '../bean/PerfProfile.js'; -import { SearchFuncBean } from '../bean/SearchFuncBean.js'; -import { CounterSummary, SdkSliceSummary } from '../bean/SdkSummary.js'; -import { Smaps } from '../bean/SmapsStruct.js'; -import { CpuFreqRowLimit } from '../component/chart/SpFreqChart.js'; -import { CpuFreqLimitsStruct } from './ui-worker/ProcedureWorkerCpuFreqLimits.js'; -import { CpuStruct } from './ui-worker/ProcedureWorkerCPU.js'; -import { CpuFreqStruct } from './ui-worker/ProcedureWorkerFreq.js'; -import { ThreadStruct } from './ui-worker/ProcedureWorkerThread.js'; -import { FuncStruct } from './ui-worker/ProcedureWorkerFunc.js'; -import { ProcessMemStruct } from './ui-worker/ProcedureWorkerMem.js'; -import { FpsStruct } from './ui-worker/ProcedureWorkerFPS.js'; -import { CpuAbilityMonitorStruct } from './ui-worker/ProcedureWorkerCpuAbility.js'; -import { MemoryAbilityMonitorStruct } from './ui-worker/ProcedureWorkerMemoryAbility.js'; -import { DiskAbilityMonitorStruct } from './ui-worker/ProcedureWorkerDiskIoAbility.js'; -import { NetworkAbilityMonitorStruct } from './ui-worker/ProcedureWorkerNetworkAbility.js'; -import { EnergyAnomalyStruct } from './ui-worker/ProcedureWorkerEnergyAnomaly.js'; -import { EnergyStateStruct } from './ui-worker/ProcedureWorkerEnergyState.js'; -import { CounterStruct } from './ui-worker/ProduceWorkerSdkCounter.js'; -import { SdkSliceStruct } from './ui-worker/ProduceWorkerSdkSlice.js'; -import { SystemDetailsEnergy } from '../bean/EnergyStruct.js'; -import { ClockStruct } from './ui-worker/ProcedureWorkerClock.js'; -import { IrqStruct } from './ui-worker/ProcedureWorkerIrq.js'; +} from '../bean/PerfProfile'; +import { SearchFuncBean } from '../bean/SearchFuncBean'; +import { CounterSummary, SdkSliceSummary } from '../bean/SdkSummary'; +import { Smaps } from '../bean/SmapsStruct'; +import { CpuFreqRowLimit } from '../component/chart/SpFreqChart'; +import { CpuFreqLimitsStruct } from './ui-worker/ProcedureWorkerCpuFreqLimits'; +import { CpuStruct } from './ui-worker/ProcedureWorkerCPU'; +import { CpuFreqStruct } from './ui-worker/ProcedureWorkerFreq'; +import { ThreadStruct } from './ui-worker/ProcedureWorkerThread'; +import { FuncStruct } from './ui-worker/ProcedureWorkerFunc'; +import { ProcessMemStruct } from './ui-worker/ProcedureWorkerMem'; +import { FpsStruct } from './ui-worker/ProcedureWorkerFPS'; +import { CpuAbilityMonitorStruct } from './ui-worker/ProcedureWorkerCpuAbility'; +import { MemoryAbilityMonitorStruct } from './ui-worker/ProcedureWorkerMemoryAbility'; +import { DiskAbilityMonitorStruct } from './ui-worker/ProcedureWorkerDiskIoAbility'; +import { NetworkAbilityMonitorStruct } from './ui-worker/ProcedureWorkerNetworkAbility'; +import { EnergyAnomalyStruct } from './ui-worker/ProcedureWorkerEnergyAnomaly'; +import { EnergyStateStruct } from './ui-worker/ProcedureWorkerEnergyState'; +import { CounterStruct } from './ui-worker/ProduceWorkerSdkCounter'; +import { SdkSliceStruct } from './ui-worker/ProduceWorkerSdkSlice'; +import { SystemDetailsEnergy } from '../bean/EnergyStruct'; +import { ClockStruct } from './ui-worker/ProcedureWorkerClock'; +import { IrqStruct } from './ui-worker/ProcedureWorkerIrq'; import { HeapEdge, HeapLocation, @@ -77,24 +77,26 @@ import { HeapSample, HeapTraceFunctionInfo, } from '../../js-heap/model/DatabaseStruct'; -import { FileInfo } from '../../js-heap/model/UiStruct.js'; -import { AppStartupStruct } from './ui-worker/ProcedureWorkerAppStartup.js'; -import { SoStruct } from './ui-worker/ProcedureWorkerSoInit.js'; -import { HeapTreeDataBean } from './logic-worker/ProcedureLogicWorkerCommon.js'; -import { TaskTabStruct } from '../component/trace/sheet/task/TabPaneTaskFrames.js'; -import { type DeviceStruct } from '../bean/FrameComponentBean.js'; -import { type FrameSpacingStruct } from './ui-worker/ProcedureWorkerFrameSpacing.js'; -import { type FrameDynamicStruct } from './ui-worker/ProcedureWorkerFrameDynamic.js'; -import { type FrameAnimationStruct } from './ui-worker/ProcedureWorkerFrameAnimation.js'; -import { type SnapshotStruct } from './ui-worker/ProcedureWorkerSnapshot.js'; -import { type MemoryConfig } from '../bean/MemoryConfig.js'; -import { LogStruct } from './ui-worker/ProcedureWorkerLog.js'; -import { HiSysEventStruct } from './ui-worker/ProcedureWorkerHiSysEvent.js'; -import { FuncNameCycle } from '../bean/BinderProcessThread.js'; - -class DataWorkerThread extends Worker { +import { FileInfo } from '../../js-heap/model/UiStruct'; +import { AppStartupStruct } from './ui-worker/ProcedureWorkerAppStartup'; +import { SoStruct } from './ui-worker/ProcedureWorkerSoInit'; +import { HeapTreeDataBean } from './logic-worker/ProcedureLogicWorkerCommon'; +import { TaskTabStruct } from '../component/trace/sheet/task/TabPaneTaskFrames'; +import { type DeviceStruct } from '../bean/FrameComponentBean'; +import { type FrameSpacingStruct } from './ui-worker/ProcedureWorkerFrameSpacing'; +import { type FrameDynamicStruct } from './ui-worker/ProcedureWorkerFrameDynamic'; +import { type FrameAnimationStruct } from './ui-worker/ProcedureWorkerFrameAnimation'; +import { type SnapshotStruct } from './ui-worker/ProcedureWorkerSnapshot'; +import { type MemoryConfig } from '../bean/MemoryConfig'; +import { LogStruct } from './ui-worker/ProcedureWorkerLog'; +import { HiSysEventStruct } from './ui-worker/ProcedureWorkerHiSysEvent'; + +class DataWorkerThread { taskMap: any = {}; - + worker?:Worker; + constructor(worker:Worker) { + this.worker = worker; + } uuid(): string { // @ts-ignore return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, (c: any) => @@ -111,16 +113,20 @@ class DataWorkerThread extends Worker { action: action, args: args, }; - this.postMessage(msg); + this.worker!.postMessage(msg); } } -class DbThread extends Worker { +class DbThread { busy: boolean = false; isCancelled: boolean = false; id: number = -1; taskMap: any = {}; cacheArray: Array = []; + worker?:Worker; + constructor(worker:Worker) { + this.worker=worker; + } uuid(): string { // @ts-ignore @@ -140,7 +146,7 @@ class DbThread extends Worker { sql: sql, params: args, }; - this.postMessage(msg); + this.worker!.postMessage(msg); } cutFileByRange( @@ -158,7 +164,7 @@ class DbThread extends Worker { handler(res.cutStatus, res.msg); } }; - this.postMessage( + this.worker!.postMessage( { id: id, action: 'cut-file', @@ -193,7 +199,7 @@ class DbThread extends Worker { resolve({ status: res.init, msg: res.msg }); } }; - this.postMessage( + this.worker!.postMessage( { id: id, action: 'open', @@ -207,7 +213,7 @@ class DbThread extends Worker { }; resetWASM() { - this.postMessage({ + this.worker!.postMessage({ id: this.uuid(), action: 'reset', }); @@ -247,16 +253,17 @@ export class DbPool { thread = threadBuild(); } else { if (type === 'wasm') { - thread = new DbThread('trace/database/TraceWorker.js'); + thread = new DbThread(new Worker(new URL('./TraceWorker',import.meta.url))); } else if (type === 'server') { - thread = new DbThread('trace/database/SqlLiteWorker.js'); + thread = new DbThread(new Worker(new URL('./SqlLiteWorker',import.meta.url))); } else if (type === 'sqlite') { - thread = new DbThread('trace/database/SqlLiteWorker.js'); + thread = new DbThread(new Worker(new URL('./SqlLiteWorker',import.meta.url))); } } + if (thread) { this.currentWasmThread = thread; - thread!.onmessage = (event: MessageEvent) => { + thread!.worker!.onmessage = (event: MessageEvent) => { thread!.busy = false; if (Reflect.has(thread!.taskMap, event.data.id)) { if (event.data.results) { @@ -298,8 +305,12 @@ export class DbPool { } } }; - thread!.onmessageerror = (e) => { }; - thread!.onerror = (e) => { }; + thread!.worker!.onmessageerror = (e) => { + console.log(e); + }; + thread!.worker!.onerror = (e) => { + console.log(e); + }; thread!.id = i; thread!.busy = false; this.works?.push(thread!); @@ -346,7 +357,7 @@ export class DbPool { clearInterval(this.cutDownTimer); for (let i = 0; i < this.works.length; i++) { let thread = this.works[i]; - thread.terminate(); + thread.worker!.terminate(); } this.works.length = 0; }; @@ -724,8 +735,8 @@ export const getTabFps = (leftNs: number, rightNs: number): Promise> { $leftNS: leftNs, $rightNS: rightNs } ); -export const getTabCounters = (processFilterIds: Array, virtualFilterIds: Array, startTime: number) => { - let processSql = `select + export const getTabCounters = (processFilterIds: Array, virtualFilterIds: Array, startTime: number) => { + let processSql = `select t1.filter_id as trackId, t2.name, value, @@ -741,8 +752,8 @@ export const getTabCounters = (processFilterIds: Array, virtualFilterIds where filter_id in (${processFilterIds.join(',')}) and - startTime <= ${startTime}`; - let virtualSql = `select + startTime <= ${startTime}` ; + let virtualSql = `select t1.filter_id as trackId, t2.name, value, @@ -759,18 +770,18 @@ export const getTabCounters = (processFilterIds: Array, virtualFilterIds filter_id in (${virtualFilterIds.join(',')}) and startTime <= ${startTime}`; - let sql = ''; - if (processFilterIds.length > 0 && virtualFilterIds.length > 0) { - sql = `${processSql} union ${virtualSql}`; - } else { - if (processFilterIds.length > 0) { - sql = processSql; + let sql = ''; + if (processFilterIds.length > 0 && virtualFilterIds.length > 0) { + sql = `${processSql} union ${virtualSql}`; } else { - sql = virtualSql; + if (processFilterIds.length > 0) { + sql = processSql; + } else { + sql = virtualSql; + } } + return query('getTabCounters', sql, {}); } - return query('getTabCounters', sql, {}); -} export const getTabVirtualCounters = (virtualFilterIds: Array, startTime: number) => query( @@ -877,10 +888,6 @@ export const getTabSlices = ( T.tid in (${funTids.join(',')}) and P.pid in (${pids.join(',')}) - and - c.name != 'binder transaction async' - and - c.name != 'binder async rcv' and c.cookie is null and @@ -1352,7 +1359,8 @@ export const queryVirtualMemory = (): Promise> => export const queryVirtualMemoryData = (filterId: number): Promise> => query( 'queryVirtualMemoryData', - `select ts-${(window as any).recordStartNS + `select ts-${ + (window as any).recordStartNS } as startTime,value,filter_id as filterID from sys_mem_measure where filter_id=$filter_id`, { $filter_id: filterId } ); @@ -1428,7 +1436,7 @@ order by start_name;`, { $pid: pid } ); -export const queryProcessAllAppStartup = (pids: Array): Promise> => + export const queryProcessAllAppStartup = (pids: Array): Promise> => query( 'queryProcessStartup', ` @@ -1449,13 +1457,13 @@ order by start_name;`, { $pid: pids } ); -export const querySingleAppStartupsName = (pid: number): Promise> => + export const querySingleAppStartupsName = (pid:number): Promise> => query( 'queryAllAppStartupsName', `select name from process where pid=$pid`, { $pid: pid } - ) + ); export const queryProcessSoMaxDepth = (): Promise> => query( @@ -2776,7 +2784,7 @@ export const queryPerfThread = (): Promise> => a.process_id as pid, b.thread_name as processName from perf_thread a - left join (select distinct process_id, thread_name from perf_thread) b + left join (select distinct process_id, thread_name from perf_thread where process_id = thread_id) b on a.process_id = b.process_id order by pid;`, {} @@ -3995,9 +4003,11 @@ export const queryEbpfSamplesCount = (startTime: number, endTime: number, ipids: select fsCount, vmCount from -(select count(1) as fsCount from file_system_sample s,trace_range t where s.end_ts between $startTime + t.start_ts and $endTime + t.start_ts ${ipids.length > 0 ? `and s.ipid in (${ipids.join(',')})` : '' +(select count(1) as fsCount from file_system_sample s,trace_range t where s.end_ts between $startTime + t.start_ts and $endTime + t.start_ts ${ + ipids.length > 0 ? `and s.ipid in (${ipids.join(',')})` : '' }) -,(select count(1) as vmCount from paged_memory_sample s,trace_range t where s.end_ts between $startTime + t.start_ts and $endTime + t.start_ts ${ipids.length > 0 ? `and s.ipid in (${ipids.join(',')})` : '' +,(select count(1) as vmCount from paged_memory_sample s,trace_range t where s.end_ts between $startTime + t.start_ts and $endTime + t.start_ts ${ + ipids.length > 0 ? `and s.ipid in (${ipids.join(',')})` : '' }); `, { $startTime: startTime, $endTime: endTime } @@ -4832,7 +4842,7 @@ export const queryVmTrackerShmSelectionData = (startNs: number, ipid: number): P where startNS = ${startNs} and ipid = ${ipid};`, {} ); -export const getTabSmapsSampleData = (rightNs: number): Promise> => +export const getTabSmapsSampleData = (leftNs: number): Promise> => query( 'getTabSmapsSampleData', ` @@ -4848,8 +4858,8 @@ export const getTabSmapsSampleData = (rightNs: number): Promise> => private_dirty * 1024 as privateDirty,swap * 1024 as swap,swap_pss * 1024 as swapPss FROM smaps A, trace_range AS t - WHERE (startNs) = $rightNs`, - { $rightNs: rightNs }, + WHERE (startNs) = ${leftNs}`, + { $leftNs: leftNs }, 'exec' ); @@ -5646,6 +5656,9 @@ export const queryTraceType = (): Promise< m.name = 'source_type';` ); +export const queryTransferList = (): Promise> => + query('queryTransferList', `select id, report_value as cmdStr from perf_report where report_type = 'config_name'`); + export const getTabRunningPercent = (tIds: Array, leftNS: number, rightNS: number): Promise> => query( 'getTabRunningPercent', @@ -5677,8 +5690,16 @@ export const querySearchFuncData = ( 'querySearchFuncData', ` select + c.cookie, + c.id, + c.name as funName, c.ts - r.start_ts as startTime, - c.dur + c.dur, + c.depth, + t.tid, + t.name as threadName, + p.pid, + 'func' as type from callstack c left join @@ -5697,7 +5718,8 @@ export const querySearchFuncData = ( t.tid = ${tIds} and not ((startTime < ${leftNS}) or (startTime > ${rightNS})); - ` + `, + { $search: funcName } ); export const queryCpuFreqUsageData = (Ids: Array): Promise> => @@ -5766,15 +5788,15 @@ export const queryHiSysEventData = (): Promise> => ORDER BY S.ts` ); -export const querySearchRowFuncData = ( - funcName: string, - tIds: number, - leftNS: number, - rightNS: number -): Promise> => - query( - 'querySearchRowFuncData', - ` + export const querySearchRowFuncData = ( + funcName: string, + tIds: number, + leftNS: number, + rightNS: number + ): Promise> => + query( + 'querySearchRowFuncData', + ` select c.name as funName, c.ts - r.start_ts as startTime, @@ -5800,366 +5822,5 @@ export const querySearchRowFuncData = ( and not ((startTime < ${leftNS}) or (startTime > ${rightNS})); `, - { $search: funcName } - ); - -export const queryTransferList = (): Promise> => - query( - 'queryTransferList', - `SELECT - id, - report_value as cmdStr - FROM - perf_report - WHERE - report_type = 'config_name'` - ); - -export const getTabBindersCount = (pIds: number[], tIds: number[], leftNS: number, rightNS: number): Promise> => - query( - 'getTabBindersCount', - ` - SELECT - c.name, - c.dur, - 1 AS count, - c.ts, - c.ts - r.start_ts AS startTime, - c.ts -r.start_ts + c.dur AS endTime, - t.tid, - p.pid, - ${leftNS} AS cycleStartTime, - (${rightNS} - ${leftNS}) AS cycleDur - FROM - callstack c, trace_range r - LEFT JOIN - thread t - ON - c.callid = t.id - LEFT JOIN - process p - ON - t.ipid = p.id - WHERE - c.name in ('binder transaction', 'binder async rcv', 'binder reply', 'binder transaction async') - AND - t.tid in (${tIds.join(',')}) - AND - p.pid in (${pIds.join(',')}) - AND NOT - ((startTime < ${leftNS}) - OR - (endTime > ${rightNS})); - `, - { - $leftNS: leftNS, - $rightNS: rightNS - } - ); - -export const queryBinderByThreadId = (pIds: number[], tIds: Array, leftNS: number, rightNS: number): Promise> => - query( - 'queryBinderByThreadId', - ` - SELECT - c.name, - c.ts - r.start_ts AS ts, - c.dur, - c.ts - r.start_ts AS startTime, - c.ts - r.start_ts + c.dur AS endTime, - t.tid, - p.pid - FROM - callstack c, trace_range r - LEFT JOIN - thread t - ON - c.callid = t.id - LEFT JOIN - process p - ON - t.ipid = p.id - WHERE - c.name in ('binder transaction', 'binder async rcv', 'binder reply', 'binder transaction async') - AND - t.tid in (${tIds.join(',')}) - AND - p.pid in (${pIds.join(',')}) - AND NOT - ((startTime < ${leftNS}) - OR - (endTime > ${rightNS})) - `, - { - $tIds: tIds, - $leftNS: leftNS, - $rightNS: rightNS - } - ); - - -export const querySingleFuncNameCycle = (funcName: string, tIds: string, leftNS: number, rightNS: number): Promise> => - query( - 'querySingleFuncNameCycle', - ` - SELECT - c.name AS funcName, - c.ts - r.start_ts AS cycleStartTime, - c.dur AS cycleDur, - c.id, - t.tid, - p.pid, - c.ts - r.start_ts + c.dur AS endTime - FROM - callstack c, trace_range r - LEFT JOIN - thread t - ON - c.callid = t.id - LEFT JOIN - process p - ON - t.ipid = p.id - WHERE - c.name = '${funcName}' - AND - t.tid = ${tIds} - AND NOT - ((cycleStartTime < ${leftNS}) - OR - (endTime > ${rightNS})) - `, - { - $funcName: funcName, - $tIds: tIds, - $leftNS: leftNS, - $rightNS: rightNS - } - ); - -export const queryLoopFuncNameCycle = (funcName: string, tIds: string, leftNS: number, rightNS: number): Promise> => - query( - 'queryLoopFuncNameCycle', - ` - SELECT - c.name AS funcName, - c.ts - r.start_ts AS cycleStartTime, - 0 AS cycleDur, - c.id, - t.tid, - p.pid - FROM - callstack c, trace_range r - LEFT JOIN - thread t - ON - c.callid = t.id - LEFT JOIN - process p - ON - t.ipid = p.id - WHERE - c.name = '${funcName}' - AND - t.tid = ${tIds} - AND NOT - ((cycleStartTime < ${leftNS}) - OR - (cycleStartTime > ${rightNS})) - `, - { - $funcName: funcName, - $tIds: tIds, - $leftNS: leftNS, - $rightNS: rightNS - } - ); - - - export const querySchedThreadStates = (tIds: Array, leftStartNs: number, rightEndNs: number): Promise> => - query( - 'getTabThreadStates', - ` - select - B.id, - B.pid, - B.tid, - B.state, - B.type, - B.dur, - B.ts, - B.dur + B.ts as endTs - from - thread_state AS B - where - B.tid in (${tIds.join(',')}) - and - not ((B.ts + ifnull(B.dur,0) < $leftStartNs) or (B.ts > $rightEndNs)) - order by - B.pid; - `, - { $leftStartNs: leftStartNs, $rightEndNs: rightEndNs } + { $search: funcName } ); - - export const querySingleCutData = (funcName: string, tIds: string, leftStartNs: number, rightEndNs: number): Promise> => - query( - 'querySingleCutData', - ` - select - c.id, - c.name, - c.ts as cycleStartTime, - c.ts + c.dur as cycleEndTime, - c.depth, - t.tid, - p.pid, - c.dur - from - callstack c - left join - thread t on c.callid = t.id - left join - process p on t.ipid = p.id - left join - trace_range r - where - c.name = '${funcName}' - and - t.tid = '${tIds}' - and - not ((c.ts < $leftStartNs) or (c.ts + ifnull(c.dur, 0) > $rightEndNs)) - `, - {$leftStartNs: leftStartNs, $rightEndNs: rightEndNs} - ) - - export const queryLoopCutData = ( funcName: string, tIds: string, leftStartNs: number, rightEndNs: number): Promise> => - query ( - 'queryLoopCutData', - ` - select - c.id, - c.name, - c.ts as cycleStartTime, - c.depth, - t.tid, - p.pid - from callstack c - left join - thread t on c.callid = t.id - left join - process p on t.ipid = p.id - where - c.name = '${funcName}' - and - t.tid = '${tIds}' - and - not ((c.ts < $leftStartNs) or (c.ts > $rightEndNs)) - order by - c.ts - `, - { $leftStartNs: leftStartNs, $rightEndNs: rightEndNs } - ) - export const getGpufreqData = (leftNS: number, rightNS: number, earliest: boolean): Promise> => { - let queryCondition = ''; - if (!earliest) { - queryCondition += ` where not ((s.ts - r.start_ts + ifnull(s.dur,0) < ${leftNS}) or (s.ts - r.start_ts > ${rightNS}))` - } - return query( - 'getGpufreqData', - ` - with state as - (select - name, - filter_id, - ts, - endts, - endts-ts as dur, - type, - value - from - (select - measure.filter_id, - clock_event_filter.name, - measure.ts, - lead(ts, 1, null) over( order by measure.ts) endts, - measure.type, - measure.value - from - clock_event_filter, - trace_range - left join - measure - where - clock_event_filter.name = 'gpufreq' - and - clock_event_filter.type = 'clock_set_rate' - and - clock_event_filter.id = measure.filter_id - order by measure.ts) - where endts is not null - ) - select - s.name as thread, - s.filter_id as filterId, - s.value/1000000 as freq, - s.value*s.dur as count, - s.value, - s.ts, - s.ts-r.start_ts as startNS, - s.dur, - s.endts- r.start_ts as endTime - from - state s, - trace_range r - ${queryCondition} - order by ts - `, - { $leftNS: leftNS, $rightNS: rightNS } - ); - } - - export const getGpufreqDataCut = (tIds: string, funcName: string, leftNS: number, rightNS: number, single: boolean, loop: boolean): Promise> => { - let queryCondition = ''; - if (single) { - queryCondition += `select s.funName,s.startTime,s.dur,s.startTime+s.dur as endTime,s.depth,s.tid,s.threadName,s.pid from state s - where endTime between ${leftNS} and ${rightNS}`; - } - if (loop) { - queryCondition += `select s.funName,s.startTime,s.loopEndTime-s.startTime as dur,s.loopEndTime as endTime,s.depth,s.tid,s.threadName,s.pid from state s - where endTime between ${leftNS} and ${rightNS} `; - } - return query( - 'getGpufreqDataCut', - ` - with state as - (select - * - from - (select - c.name as funName, - c.ts - r.start_ts as startTime, - c.dur, - lead(c.ts - r.start_ts, 1, null) over( order by c.ts - r.start_ts) loopEndTime, - c.depth, - t.tid, - t.name as threadName, - p.pid - from - callstack c - left join - thread t on c.callid = t.id - left join - process p on t.ipid = p.id - left join - trace_range r - where - c.name like '%${funcName}%' - and - tid = '${tIds}' - and - startTime between ${leftNS} and ${rightNS})) - ${queryCondition} - `, - { $search: funcName } - ); - } diff --git a/ide/src/trace/database/SqlLiteWorker.ts b/ide/src/trace/database/SqlLiteWorker.ts index b0f4a020cf06ca1d871f34ccc34e89299a7a7e3c..aec8b517da4b1bca8030b658d5d0685d1a2cf5c8 100644 --- a/ide/src/trace/database/SqlLiteWorker.ts +++ b/ide/src/trace/database/SqlLiteWorker.ts @@ -13,7 +13,8 @@ * limitations under the License. */ -importScripts('sql-wasm.js', 'TempSql.js'); +importScripts('sql-wasm.js'); +import {temp_init_sql_list} from "./TempSql"; let conn: any = null; let encoder = new TextEncoder(); function initIndexedDB() { diff --git a/ide/src/trace/database/TempSql.ts b/ide/src/trace/database/TempSql.ts index ec61a763dafca8e76675230addae9080b564f58f..f14312ede6f457cd0e888d8eb316046965854db6 100644 --- a/ide/src/trace/database/TempSql.ts +++ b/ide/src/trace/database/TempSql.ts @@ -399,3 +399,4 @@ let delete_callstack_binder_data = `DELETE or name = 'binder async rcv';`; let temp_init_sql_list = [temp_query_process]; +export { temp_init_sql_list }; diff --git a/ide/src/trace/database/TraceWorker.ts b/ide/src/trace/database/TraceWorker.ts index b4e213ab2dfdc14cbea0cf07d4c454bf1ffffa5e..113a24fb8f0074b03db7d512b62378a72178ed68 100644 --- a/ide/src/trace/database/TraceWorker.ts +++ b/ide/src/trace/database/TraceWorker.ts @@ -13,7 +13,8 @@ * limitations under the License. */ -importScripts('trace_streamer_builtin.js', 'TempSql.js'); +importScripts('trace_streamer_builtin.js'); +import {temp_init_sql_list} from "./TempSql"; let Module: any = null; let enc = new TextEncoder(); @@ -340,7 +341,11 @@ self.onmessage = async (e: MessageEvent) => { const dataSlice = uint8Array.subarray(wrSize, wrSize + sliceLen); Module.HEAPU8.set(dataSlice, reqBufferAddr); wrSize += sliceLen; - r2 = Module._TraceStreamerParseDataEx(sliceLen); + if (wrSize >= uint8Array.length) { + r2 = Module._TraceStreamerParseDataEx(sliceLen, 1); + } else { + r2 = Module._TraceStreamerParseDataEx(sliceLen, 0); + } if (r2 == -1) { break; } @@ -360,7 +365,6 @@ self.onmessage = async (e: MessageEvent) => { }); return; } - // @ts-ignore temp_init_sql_list.forEach((item, index) => { let r = createView(item); // @ts-ignore diff --git a/ide/src/trace/database/TraceWorkerRoot.ts b/ide/src/trace/database/TraceWorkerRoot.ts deleted file mode 100644 index 07aac33f2de317d6f36907d819547d3b22b7cc93..0000000000000000000000000000000000000000 --- a/ide/src/trace/database/TraceWorkerRoot.ts +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (C) 2022 Huawei Device Co., Ltd. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -let worker: Worker; -self.onmessage = (e) => { - if (e.data.action === 'open') { - worker = new Worker('TraceWorker.js'); - worker.onmessage = (msg) => { - self.postMessage(msg.data); - }; - worker.postMessage(e.data, [e.data.buffer]); - } else if (e.data.action === 'exec') { - worker.postMessage(e.data); - } else if (e.data.action == 'exec-buf') { - // @ts-ignore - worker.postMessage(e.data); - } -}; -self.onerror = (event) => { - worker.terminate(); -}; -self.onclose = () => { - worker.terminate(); -}; diff --git a/ide/src/trace/database/logic-worker/ProcedureLogicWorker.ts b/ide/src/trace/database/logic-worker/ProcedureLogicWorker.ts index 36f548bdff4fd8e7ef076e9e346d1c1210d50021..1e5b7883a73e9ec5d2886312f1605cb091b8e3f0 100644 --- a/ide/src/trace/database/logic-worker/ProcedureLogicWorker.ts +++ b/ide/src/trace/database/logic-worker/ProcedureLogicWorker.ts @@ -13,14 +13,14 @@ * limitations under the License. */ -import { ProcedureLogicWorkerPerf } from './ProcedureLogicWorkerPerf.js'; -import { ProcedureLogicWorkerNativeMemory } from './ProcedureLogicWorkerNativeNemory.js'; -import { ProcedureLogicWorkerFileSystem } from './ProcedureLogicWorkerFileSystem.js'; -import { ProcedureLogicWorkerSPT } from './ProcedureLogicWorkerSPT.js'; -import { ProcedureLogicWorkerCpuState } from './ProcedureLogicWorkerCpuState.js'; -import { ProcedureLogicWorkerSchedulingAnalysis } from './ProcedureLogicWorkerSchedulingAnalysis.js'; -import { DataCache } from './ProcedureLogicWorkerCommon.js'; -import { ProcedureLogicWorkerJsCpuProfiler } from './ProcedureLogicWorkerJsCpuProfiler.js'; +import { ProcedureLogicWorkerPerf } from './ProcedureLogicWorkerPerf'; +import { ProcedureLogicWorkerNativeMemory } from './ProcedureLogicWorkerNativeNemory'; +import { ProcedureLogicWorkerFileSystem } from './ProcedureLogicWorkerFileSystem'; +import { ProcedureLogicWorkerSPT } from './ProcedureLogicWorkerSPT'; +import { ProcedureLogicWorkerCpuState } from './ProcedureLogicWorkerCpuState'; +import { ProcedureLogicWorkerSchedulingAnalysis } from './ProcedureLogicWorkerSchedulingAnalysis'; +import { DataCache } from './ProcedureLogicWorkerCommon'; +import { ProcedureLogicWorkerJsCpuProfiler } from './ProcedureLogicWorkerJsCpuProfiler'; let logicWorker: any = { perf: new ProcedureLogicWorkerPerf(), diff --git a/ide/src/trace/database/logic-worker/ProcedureLogicWorkerCpuState.ts b/ide/src/trace/database/logic-worker/ProcedureLogicWorkerCpuState.ts index 7b2eedd7958c849c47b7a2fd0db4080f55bb933d..fa076d50999c9f8477931efdb4af45dc256dccc6 100644 --- a/ide/src/trace/database/logic-worker/ProcedureLogicWorkerCpuState.ts +++ b/ide/src/trace/database/logic-worker/ProcedureLogicWorkerCpuState.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { convertJSON, LogicHandler } from './ProcedureLogicWorkerCommon.js'; +import { convertJSON, LogicHandler } from './ProcedureLogicWorkerCommon'; export class ProcedureLogicWorkerCpuState extends LogicHandler { currentEventId: string = ''; diff --git a/ide/src/trace/database/logic-worker/ProcedureLogicWorkerFileSystem.ts b/ide/src/trace/database/logic-worker/ProcedureLogicWorkerFileSystem.ts index 16ea6aec34fe0c1cec07eafda0236553343e34b6..14cb702cd760671601aac90c957ac9b27d4f3f2e 100644 --- a/ide/src/trace/database/logic-worker/ProcedureLogicWorkerFileSystem.ts +++ b/ide/src/trace/database/logic-worker/ProcedureLogicWorkerFileSystem.ts @@ -25,7 +25,7 @@ import { merageBeanDataSplit, postMessage, setFileName, -} from './ProcedureLogicWorkerCommon.js'; +} from './ProcedureLogicWorkerCommon'; export let FILE_TYPE_MAP = { '0': 'OPEN', diff --git a/ide/src/trace/database/logic-worker/ProcedureLogicWorkerJsCpuProfiler.ts b/ide/src/trace/database/logic-worker/ProcedureLogicWorkerJsCpuProfiler.ts index f680e42b1404bd9b216c0d11b5030361701405da..7cc31c7f67220031da37966971d907f114cbc03e 100644 --- a/ide/src/trace/database/logic-worker/ProcedureLogicWorkerJsCpuProfiler.ts +++ b/ide/src/trace/database/logic-worker/ProcedureLogicWorkerJsCpuProfiler.ts @@ -12,8 +12,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { JsCpuProfilerChartFrame, JsCpuProfilerTabStruct, type JsCpuProfilerUIStruct } from '../../bean/JsStruct.js'; -import { DataCache, type JsProfilerSymbol, LogicHandler, convertJSON } from './ProcedureLogicWorkerCommon.js'; +import { JsCpuProfilerChartFrame, JsCpuProfilerTabStruct, type JsCpuProfilerUIStruct } from '../../bean/JsStruct'; +import { DataCache, type JsProfilerSymbol, LogicHandler, convertJSON } from './ProcedureLogicWorkerCommon'; const ROOT_ID = 1; const LAMBDA_FUNCTION_NAME = '(anonymous)'; diff --git a/ide/src/trace/database/logic-worker/ProcedureLogicWorkerNativeNemory.ts b/ide/src/trace/database/logic-worker/ProcedureLogicWorkerNativeNemory.ts index 4a9eddbdbe2c9b49e33933dbe4daef26e198cd63..2e478f43cac7607359403d072d36e566778355ec 100644 --- a/ide/src/trace/database/logic-worker/ProcedureLogicWorkerNativeNemory.ts +++ b/ide/src/trace/database/logic-worker/ProcedureLogicWorkerNativeNemory.ts @@ -12,7 +12,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { FilterByAnalysis, NativeMemoryExpression } from '../../bean/NativeHook.js'; +import { FilterByAnalysis, NativeMemoryExpression } from '../../bean/NativeHook'; import { convertJSON, DataCache, @@ -23,7 +23,7 @@ import { merageBeanDataSplit, postMessage, setFileName, -} from './ProcedureLogicWorkerCommon.js'; +} from './ProcedureLogicWorkerCommon'; export class ProcedureLogicWorkerNativeMemory extends LogicHandler { selectTotalSize = 0; diff --git a/ide/src/trace/database/logic-worker/ProcedureLogicWorkerPerf.ts b/ide/src/trace/database/logic-worker/ProcedureLogicWorkerPerf.ts index 28c40973cb8a5fa25487a60f540370635f9e5555..ee50ac07c59d9a3b540dde25101dd30905579a5c 100644 --- a/ide/src/trace/database/logic-worker/ProcedureLogicWorkerPerf.ts +++ b/ide/src/trace/database/logic-worker/ProcedureLogicWorkerPerf.ts @@ -13,13 +13,13 @@ * limitations under the License. */ -import { LogicHandler, ChartStruct, convertJSON, DataCache, HiPerfSymbol } from './ProcedureLogicWorkerCommon.js'; -import { PerfBottomUpStruct } from '../../bean/PerfBottomUpStruct.js'; -import { HiPerfChartFrame } from '../../bean/PerfStruct.js'; +import { LogicHandler, ChartStruct, convertJSON, DataCache, HiPerfSymbol } from './ProcedureLogicWorkerCommon'; +import { PerfBottomUpStruct } from '../../bean/PerfBottomUpStruct'; +import { HiPerfChartFrame } from '../../bean/PerfStruct'; const systemRuleName: string = '/system/'; const numRuleName: string = '/max/min/'; -const maxDepth: number = 128; +const maxDepth: number = 256; export class ProcedureLogicWorkerPerf extends LogicHandler { filesData: any = {}; diff --git a/ide/src/trace/database/logic-worker/ProcedureLogicWorkerSPT.ts b/ide/src/trace/database/logic-worker/ProcedureLogicWorkerSPT.ts index 9ddf18efc7d9d33638bed8ea1933e1a61311fbcd..f431c5b0e49f1b732e648420dc0cb9d7cbe5456a 100644 --- a/ide/src/trace/database/logic-worker/ProcedureLogicWorkerSPT.ts +++ b/ide/src/trace/database/logic-worker/ProcedureLogicWorkerSPT.ts @@ -13,8 +13,8 @@ * limitations under the License. */ -import { convertJSON, LogicHandler } from './ProcedureLogicWorkerCommon.js'; -import { SliceGroup } from '../../bean/StateProcessThread.js'; +import { convertJSON, LogicHandler } from './ProcedureLogicWorkerCommon'; +import { SliceGroup } from '../../bean/StateProcessThread'; export class ProcedureLogicWorkerSPT extends LogicHandler { threadSlice: Array = []; diff --git a/ide/src/trace/database/logic-worker/ProcedureLogicWorkerSchedulingAnalysis.ts b/ide/src/trace/database/logic-worker/ProcedureLogicWorkerSchedulingAnalysis.ts index dfd5f8ff1b1500d96be2114b103e002909088cf2..607eccebfbbbfd758bb678008e587210e232e06b 100644 --- a/ide/src/trace/database/logic-worker/ProcedureLogicWorkerSchedulingAnalysis.ts +++ b/ide/src/trace/database/logic-worker/ProcedureLogicWorkerSchedulingAnalysis.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { convertJSON, getProbablyTime, LogicHandler } from './ProcedureLogicWorkerCommon.js'; +import { convertJSON, getProbablyTime, LogicHandler } from './ProcedureLogicWorkerCommon'; export class ProcedureLogicWorkerSchedulingAnalysis extends LogicHandler { currentEventId: string = ''; diff --git a/ide/src/trace/database/ui-worker/ProcedureWorker.ts b/ide/src/trace/database/ui-worker/ProcedureWorker.ts index 1a6bbab86733d5c89fda1b50ff3b7016f606f047..df8360f91a55f835e57eac8212daa652b9157bb4 100644 --- a/ide/src/trace/database/ui-worker/ProcedureWorker.ts +++ b/ide/src/trace/database/ui-worker/ProcedureWorker.ts @@ -13,54 +13,52 @@ * limitations under the License. */ -import { CpuRender, EmptyRender } from './ProcedureWorkerCPU.js'; -import { RequestMessage } from './ProcedureWorkerCommon.js'; -import { FreqRender } from './ProcedureWorkerFreq.js'; -import { ProcessRender } from './ProcedureWorkerProcess.js'; -import { MemRender } from './ProcedureWorkerMem.js'; -import { ThreadRender } from './ProcedureWorkerThread.js'; -import { FuncRender } from './ProcedureWorkerFunc.js'; -import { FpsRender } from './ProcedureWorkerFPS.js'; -import { HeapRender, NativeMemoryRender } from './ProcedureWorkerHeap.js'; -import { CpuAbilityRender } from './ProcedureWorkerCpuAbility.js'; -import { MemoryAbilityRender } from './ProcedureWorkerMemoryAbility.js'; -import { DiskIoAbilityRender } from './ProcedureWorkerDiskIoAbility.js'; -import { NetworkAbilityRender } from './ProcedureWorkerNetworkAbility.js'; -import { HiperfCpuRender } from './ProcedureWorkerHiPerfCPU.js'; -import { HiperfProcessRender } from './ProcedureWorkerHiPerfProcess.js'; -import { HiperfThreadRender } from './ProcedureWorkerHiPerfThread.js'; -import { HiperfEventRender } from './ProcedureWorkerHiPerfEvent.js'; -import { HiperfReportRender } from './ProcedureWorkerHiPerfReport.js'; -import { VirtualMemoryRender } from './ProcedureWorkerVirtualMemory.js'; -import { FileSystemRender } from './ProcedureWorkerFileSystem.js'; -import { info } from '../../../log/Log.js'; -import { SdkSliceRender } from './ProduceWorkerSdkSlice.js'; -import { SdkCounterRender } from './ProduceWorkerSdkCounter.js'; -import { CpuStateRender } from './ProcedureWorkerCpuState.js'; -import { EnergyAnomalyRender } from './ProcedureWorkerEnergyAnomaly.js'; -import { EnergySystemRender } from './ProcedureWorkerEnergySystem.js'; -import { EnergyPowerRender } from './ProcedureWorkerEnergyPower.js'; -import { EnergyStateRender } from './ProcedureWorkerEnergyState.js'; -import { CpuFreqLimitRender } from './ProcedureWorkerCpuFreqLimits.js'; -import { ClockRender } from './ProcedureWorkerClock.js'; -import { IrqRender } from './ProcedureWorkerIrq.js'; -import { JankRender } from './ProcedureWorkerJank.js'; -import { HeapTimelineRender } from './ProcedureWorkerHeapTimeline.js'; -import { HeapSnapshotRender } from './ProcedureWorkerHeapSnapshot.js'; -import { translateJsonString } from '../logic-worker/ProcedureLogicWorkerCommon.js'; -import { AppStartupRender } from './ProcedureWorkerAppStartup.js'; -import { SoRender } from './ProcedureWorkerSoInit.js'; -import { FrameDynamicRender } from './ProcedureWorkerFrameDynamic.js'; -import { FrameAnimationRender } from './ProcedureWorkerFrameAnimation.js'; -import { FrameSpacingRender } from './ProcedureWorkerFrameSpacing.js'; -import { JsCpuProfilerRender } from './ProcedureWorkerCpuProfiler.js'; -import { SnapshotRender } from './ProcedureWorkerSnapshot.js'; -import { LogRender } from './ProcedureWorkerLog.js'; -import { HiPerfCallChartRender } from './ProcedureWorkerHiPerfCallChart.js'; -import { HiSysEventRender } from './ProcedureWorkerHiSysEvent.js'; -import { AllAppStartupRender } from './ProcedureWorkerAllAppStartup.js'; -import { FreqExtendRender } from './ProcedureWorkerFreqExtend.js'; -import { BinderRender } from './procedureWorkerBinder.js'; +import { CpuRender, EmptyRender } from './ProcedureWorkerCPU'; +import { RequestMessage } from './ProcedureWorkerCommon'; +import { FreqRender } from './ProcedureWorkerFreq'; +import { ProcessRender } from './ProcedureWorkerProcess'; +import { MemRender } from './ProcedureWorkerMem'; +import { ThreadRender } from './ProcedureWorkerThread'; +import { FuncRender } from './ProcedureWorkerFunc'; +import { FpsRender } from './ProcedureWorkerFPS'; +import { HeapRender, NativeMemoryRender } from './ProcedureWorkerHeap'; +import { CpuAbilityRender } from './ProcedureWorkerCpuAbility'; +import { MemoryAbilityRender } from './ProcedureWorkerMemoryAbility'; +import { DiskIoAbilityRender } from './ProcedureWorkerDiskIoAbility'; +import { NetworkAbilityRender } from './ProcedureWorkerNetworkAbility'; +import { HiperfCpuRender } from './ProcedureWorkerHiPerfCPU'; +import { HiperfProcessRender } from './ProcedureWorkerHiPerfProcess'; +import { HiperfThreadRender } from './ProcedureWorkerHiPerfThread'; +import { HiperfEventRender } from './ProcedureWorkerHiPerfEvent'; +import { HiperfReportRender } from './ProcedureWorkerHiPerfReport'; +import { VirtualMemoryRender } from './ProcedureWorkerVirtualMemory'; +import { FileSystemRender } from './ProcedureWorkerFileSystem'; +import { info } from '../../../log/Log'; +import { SdkSliceRender } from './ProduceWorkerSdkSlice'; +import { SdkCounterRender } from './ProduceWorkerSdkCounter'; +import { CpuStateRender } from './ProcedureWorkerCpuState'; +import { EnergyAnomalyRender } from './ProcedureWorkerEnergyAnomaly'; +import { EnergySystemRender } from './ProcedureWorkerEnergySystem'; +import { EnergyPowerRender } from './ProcedureWorkerEnergyPower'; +import { EnergyStateRender } from './ProcedureWorkerEnergyState'; +import { CpuFreqLimitRender } from './ProcedureWorkerCpuFreqLimits'; +import { ClockRender } from './ProcedureWorkerClock'; +import { IrqRender } from './ProcedureWorkerIrq'; +import { JankRender } from './ProcedureWorkerJank'; +import { HeapTimelineRender } from './ProcedureWorkerHeapTimeline'; +import { HeapSnapshotRender } from './ProcedureWorkerHeapSnapshot'; +import { translateJsonString } from '../logic-worker/ProcedureLogicWorkerCommon'; +import { AppStartupRender } from './ProcedureWorkerAppStartup'; +import { SoRender } from './ProcedureWorkerSoInit'; +import { FrameDynamicRender } from './ProcedureWorkerFrameDynamic'; +import { FrameAnimationRender } from './ProcedureWorkerFrameAnimation'; +import { FrameSpacingRender } from './ProcedureWorkerFrameSpacing'; +import { JsCpuProfilerRender } from './ProcedureWorkerCpuProfiler'; +import { SnapshotRender } from './ProcedureWorkerSnapshot'; +import { LogRender } from './ProcedureWorkerLog'; +import { HiPerfCallChartRender } from './ProcedureWorkerHiPerfCallChart'; +import { HiSysEventRender } from './ProcedureWorkerHiSysEvent'; +import { AllAppStartupRender } from './ProcedureWorkerAllAppStartup'; let dataList: any = {}; let dataList2: any = {}; @@ -117,8 +115,6 @@ export let renders: any = { snapshot: new SnapshotRender(), logs: new LogRender(), hiSysEvent: new HiSysEventRender(), - 'freq-extend': new FreqExtendRender(), - 'binder' : new BinderRender() }; function match(type: string, req: RequestMessage): void { diff --git a/ide/src/trace/database/ui-worker/ProcedureWorkerAllAppStartup.ts b/ide/src/trace/database/ui-worker/ProcedureWorkerAllAppStartup.ts index ede7a83695bda6e53ab64a5e799976ea3441e74c..b39d47762d03d29b590cd6f78c1508df9b7768df 100644 --- a/ide/src/trace/database/ui-worker/ProcedureWorkerAllAppStartup.ts +++ b/ide/src/trace/database/ui-worker/ProcedureWorkerAllAppStartup.ts @@ -13,10 +13,10 @@ * limitations under the License. */ -import { BaseStruct, dataFilterHandler, drawString } from './ProcedureWorkerCommon.js'; -import { TraceRow } from '../../component/trace/base/TraceRow.js'; -import { ColorUtils } from '../../component/trace/base/ColorUtils.js'; -import { querySingleAppStartupsName } from '../SqlLite.js'; +import { BaseStruct, dataFilterHandler, drawString } from './ProcedureWorkerCommon'; +import { TraceRow } from '../../component/trace/base/TraceRow'; +import { ColorUtils } from '../../component/trace/base/ColorUtils'; +import { querySingleAppStartupsName } from '../SqlLite'; export class AllAppStartupRender { renderMainThread( @@ -106,4 +106,4 @@ export class AllAppStartupStruct extends BaseStruct { let singleAppName = await querySingleAppStartupsName(pid); return singleAppName[0].name; } -} +} \ No newline at end of file diff --git a/ide/src/trace/database/ui-worker/ProcedureWorkerAppStartup.ts b/ide/src/trace/database/ui-worker/ProcedureWorkerAppStartup.ts index 0004453581ef42bb9b29d70336367125953ad446..72b37293fd79c8c032e55b8d046520a3759e97ef 100644 --- a/ide/src/trace/database/ui-worker/ProcedureWorkerAppStartup.ts +++ b/ide/src/trace/database/ui-worker/ProcedureWorkerAppStartup.ts @@ -13,9 +13,9 @@ * limitations under the License. */ -import { BaseStruct, dataFilterHandler, drawString } from './ProcedureWorkerCommon.js'; -import { TraceRow } from '../../component/trace/base/TraceRow.js'; -import { ColorUtils } from '../../component/trace/base/ColorUtils.js'; +import { BaseStruct, dataFilterHandler, drawString } from './ProcedureWorkerCommon'; +import { TraceRow } from '../../component/trace/base/TraceRow'; +import { ColorUtils } from '../../component/trace/base/ColorUtils'; export class AppStartupRender { renderMainThread( diff --git a/ide/src/trace/database/ui-worker/ProcedureWorkerCPU.ts b/ide/src/trace/database/ui-worker/ProcedureWorkerCPU.ts index 7bb0d61b57bd7cfc57e19623f136ea53faaeed86..d70d006b74624bd7b1dd2d1b96ffe42d89662050 100644 --- a/ide/src/trace/database/ui-worker/ProcedureWorkerCPU.ts +++ b/ide/src/trace/database/ui-worker/ProcedureWorkerCPU.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { ColorUtils } from '../../component/trace/base/ColorUtils.js'; +import { ColorUtils } from '../../component/trace/base/ColorUtils'; import { BaseStruct, dataFilterHandler, @@ -25,9 +25,9 @@ import { drawWakeUpList, Render, RequestMessage, -} from './ProcedureWorkerCommon.js'; -import { TraceRow } from '../../component/trace/base/TraceRow.js'; -import { SpSystemTrace } from '../../component/SpSystemTrace.js'; +} from './ProcedureWorkerCommon'; +import { TraceRow } from '../../component/trace/base/TraceRow'; +import { SpSystemTrace } from '../../component/SpSystemTrace'; export class EmptyRender extends Render { renderMainThread(req: any, row: TraceRow) { diff --git a/ide/src/trace/database/ui-worker/ProcedureWorkerClock.ts b/ide/src/trace/database/ui-worker/ProcedureWorkerClock.ts index 734274b33807a7fd0d37e3fd1beee2add9fb0a28..8fe3c9f39a7bbd3b3c6732419f007b60da31c803 100644 --- a/ide/src/trace/database/ui-worker/ProcedureWorkerClock.ts +++ b/ide/src/trace/database/ui-worker/ProcedureWorkerClock.ts @@ -13,9 +13,9 @@ * limitations under the License. */ -import { BaseStruct, dataFilterHandler, isFrameContainPoint, Render } from './ProcedureWorkerCommon.js'; -import { TraceRow } from '../../component/trace/base/TraceRow.js'; -import { ColorUtils } from '../../component/trace/base/ColorUtils.js'; +import { BaseStruct, dataFilterHandler, isFrameContainPoint, Render } from './ProcedureWorkerCommon'; +import { TraceRow } from '../../component/trace/base/TraceRow'; +import { ColorUtils } from '../../component/trace/base/ColorUtils'; export class ClockRender extends Render { renderMainThread( diff --git a/ide/src/trace/database/ui-worker/ProcedureWorkerCommon.ts b/ide/src/trace/database/ui-worker/ProcedureWorkerCommon.ts index a7d0e1ca1865b498d441bbf166c88d3b166c46bd..462810fae7e1db1a0ea270459034205d7c4b8275 100644 --- a/ide/src/trace/database/ui-worker/ProcedureWorkerCommon.ts +++ b/ide/src/trace/database/ui-worker/ProcedureWorkerCommon.ts @@ -13,10 +13,10 @@ * limitations under the License. */ -import { CpuStruct, WakeupBean } from './ProcedureWorkerCPU.js'; -import { TraceRow } from '../../component/trace/base/TraceRow.js'; +import { CpuStruct, WakeupBean } from './ProcedureWorkerCPU'; +import { TraceRow } from '../../component/trace/base/TraceRow'; import { TimerShaftElement } from '../../component/trace/TimerShaftElement'; -import { Flag } from '../../component/trace/timer-shaft/Flag.js'; +import { Flag } from '../../component/trace/timer-shaft/Flag'; export abstract class Render { abstract renderMainThread(req: any, row: TraceRow): void; @@ -48,10 +48,10 @@ export class RequestMessage { totalNS: any; slicesTime: | { - startTime: number | null; - endTime: number | null; - color: string | null; - } + startTime: number | null; + endTime: number | null; + color: string | null; + } | undefined; range: any; scale: any; @@ -64,9 +64,9 @@ export class RequestMessage { id: any; postMessage: | { - (message: any, targetOrigin: string, transfer?: Transferable[]): void; - (message: any, options?: WindowPostMessageOptions): void; - } + (message: any, targetOrigin: string, transfer?: Transferable[]): void; + (message: any, options?: WindowPostMessageOptions): void; + } | undefined; } @@ -99,8 +99,8 @@ export function ns2Timestamp(ns: number): string { return `${hour.toString().padStart(2, '0')}:${minute.toString().padStart(2, '0')}:${second .toString() .padStart(2, '0')}:${millisecond.toString().padStart(3, '0')}:${microsecond - .toString() - .padStart(3, '0')}:${nanosecond.toString().padStart(3, '0')}`; + .toString() + .padStart(3, '0')}:${nanosecond.toString().padStart(3, '0')}`; } const offsetX = 5; @@ -476,7 +476,7 @@ export class Point { export enum LineType { brokenLine, bezierCurve, - StraightLine + StraightLine, } export class PairPoint { @@ -539,10 +539,10 @@ export function drawFlagLine( frame: any, slicesTime: | { - startTime: number | null | undefined; - endTime: number | null | undefined; - color: string | null | undefined; - } + startTime: number | null | undefined; + endTime: number | null | undefined; + color: string | null | undefined; + } | undefined ) { if (commonCtx) { @@ -749,9 +749,9 @@ export function drawSelectionRange(context: any, params: TraceRow) { if (params._docompositionList?.length) { const rateList: Array = [...new Set(params.docompositionList)]; if (rateList.length >= 2) { - // 计算平均帧率 - let cutres: number = (rateList[rateList.length - 1]! - rateList[0]!); - let avgFrameRate: string = ((rateList.length - 1) / cutres * 1000000000).toFixed(1) + 'fps'; + // 计算平均帧率 + let cutres: number = rateList[rateList.length - 1]! - rateList[0]!; + let avgFrameRate: string = (((rateList.length - 1) / cutres) * 1000000000).toFixed(1) + 'fps'; let avgRateStartX = Math.floor( ns2x( @@ -774,13 +774,17 @@ export function drawSelectionRange(context: any, params: TraceRow) { const textWidth = context.measureText(avgFrameRate).width; const textHeight = 25; const padding = 5; - let textX = Math.floor(ns2x( - (rateList[0]! + rateList[rateList.length - 1]!) / 2, - TraceRow.range?.startNS ?? 0, - TraceRow.range?.endNS ?? 0, - TraceRow.range?.totalNS ?? 0, - params.frame - )) - textWidth / 2; + let textX = + Math.floor( + ns2x( + (rateList[0]! + rateList[rateList.length - 1]!) / 2, + TraceRow.range?.startNS ?? 0, + TraceRow.range?.endNS ?? 0, + TraceRow.range?.totalNS ?? 0, + params.frame + ) + ) - + textWidth / 2; const textY = params.frame.y + 25; //左移到边界,不画线和文字 @@ -795,7 +799,7 @@ export function drawSelectionRange(context: any, params: TraceRow) { } //右移到边界,不画线和文字 if (textX + textWidth / 2 >= params.frame.width) { - textX = params.frame.width + 100 + textX = params.frame.width + 100; } if (avgRateStartX >= params.frame.width) { avgRateStartX = params.frame.width + 100; @@ -803,9 +807,14 @@ export function drawSelectionRange(context: any, params: TraceRow) { if (avgRateEndX >= params.frame.width) { avgRateEndX = params.frame.width + 100; } - // 绘制文字背景矩形 + // 绘制文字背景矩形 context.fillStyle = 'red'; - context.fillRect(textX - padding, textY - textHeight + padding, textWidth + padding * 2, textHeight - padding * 2); + context.fillRect( + textX - padding, + textY - textHeight + padding, + textWidth + padding * 2, + textHeight - padding * 2 + ); context.lineWidth = 2; context.strokeStyle = 'yellow'; @@ -1201,7 +1210,7 @@ export function drawLoading( frame: any, left: number, right: number -) { } +) {} export function drawString(ctx: CanvasRenderingContext2D, str: string, textPadding: number, frame: Rect, data: any) { if (data.textMetricsWidth === undefined) { diff --git a/ide/src/trace/database/ui-worker/ProcedureWorkerCpuAbility.ts b/ide/src/trace/database/ui-worker/ProcedureWorkerCpuAbility.ts index 71d2c66f0debe1b075b4d9a5b78ce947a9aaf540..57d750a4cc5d4edc16b5840091f8f44c6ec6b33f 100644 --- a/ide/src/trace/database/ui-worker/ProcedureWorkerCpuAbility.ts +++ b/ide/src/trace/database/ui-worker/ProcedureWorkerCpuAbility.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { ColorUtils } from '../../component/trace/base/ColorUtils.js'; +import { ColorUtils } from '../../component/trace/base/ColorUtils'; import { BaseStruct, dataFilterHandler, @@ -21,9 +21,9 @@ import { ns2x, RequestMessage, Render, -} from './ProcedureWorkerCommon.js'; -import { TraceRow } from '../../component/trace/base/TraceRow.js'; -import { DiskAbilityMonitorStruct } from './ProcedureWorkerDiskIoAbility.js'; +} from './ProcedureWorkerCommon'; +import { TraceRow } from '../../component/trace/base/TraceRow'; +import { DiskAbilityMonitorStruct } from './ProcedureWorkerDiskIoAbility'; export class CpuAbilityRender extends Render { renderMainThread( diff --git a/ide/src/trace/database/ui-worker/ProcedureWorkerCpuFreqLimits.ts b/ide/src/trace/database/ui-worker/ProcedureWorkerCpuFreqLimits.ts index f4e46ac9182d3d972e68d3a01c7a407001b913f5..9f4c51fb7a0ba1301368152040387ce2a7a20758 100644 --- a/ide/src/trace/database/ui-worker/ProcedureWorkerCpuFreqLimits.ts +++ b/ide/src/trace/database/ui-worker/ProcedureWorkerCpuFreqLimits.ts @@ -24,10 +24,10 @@ import { drawFlagLine, RequestMessage, drawSelection, -} from './ProcedureWorkerCommon.js'; -import { ColorUtils } from '../../component/trace/base/ColorUtils.js'; -import { TraceRow } from '../../component/trace/base/TraceRow.js'; -import { convertJSON } from '../logic-worker/ProcedureLogicWorkerCommon.js'; +} from './ProcedureWorkerCommon'; +import { ColorUtils } from '../../component/trace/base/ColorUtils'; +import { TraceRow } from '../../component/trace/base/TraceRow'; +import { convertJSON } from '../logic-worker/ProcedureLogicWorkerCommon'; export class CpuFreqLimitRender extends Render { renderMainThread( diff --git a/ide/src/trace/database/ui-worker/ProcedureWorkerCpuProfiler.ts b/ide/src/trace/database/ui-worker/ProcedureWorkerCpuProfiler.ts index 4624a047f3f826448ef9ac61b41f3d49a35ff069..5cc451c9310ce853a5cedb133db881b266916003 100644 --- a/ide/src/trace/database/ui-worker/ProcedureWorkerCpuProfiler.ts +++ b/ide/src/trace/database/ui-worker/ProcedureWorkerCpuProfiler.ts @@ -13,10 +13,10 @@ * limitations under the License. */ -import { BaseStruct, type Rect, Render, drawString, isFrameContainPoint, ns2x } from './ProcedureWorkerCommon.js'; -import { TraceRow } from '../../component/trace/base/TraceRow.js'; -import { ColorUtils } from '../../component/trace/base/ColorUtils.js'; -import { type JsCpuProfilerChartFrame } from '../../bean/JsStruct.js'; +import { BaseStruct, type Rect, Render, drawString, isFrameContainPoint, ns2x } from './ProcedureWorkerCommon'; +import { TraceRow } from '../../component/trace/base/TraceRow'; +import { ColorUtils } from '../../component/trace/base/ColorUtils'; +import { type JsCpuProfilerChartFrame } from '../../bean/JsStruct'; export class JsCpuProfilerRender extends Render { renderMainThread( diff --git a/ide/src/trace/database/ui-worker/ProcedureWorkerCpuState.ts b/ide/src/trace/database/ui-worker/ProcedureWorkerCpuState.ts index 9c6daacf0062f22eeb8dfe24e4ee28bfe2d3a0ba..66133035e107354a555e77a451495ef28dde5986 100644 --- a/ide/src/trace/database/ui-worker/ProcedureWorkerCpuState.ts +++ b/ide/src/trace/database/ui-worker/ProcedureWorkerCpuState.ts @@ -25,10 +25,10 @@ import { PerfRender, Render, RequestMessage, -} from './ProcedureWorkerCommon.js'; -import { TraceRow } from '../../component/trace/base/TraceRow.js'; -import { ColorUtils } from '../../component/trace/base/ColorUtils.js'; -import { convertJSON } from '../logic-worker/ProcedureLogicWorkerCommon.js'; +} from './ProcedureWorkerCommon'; +import { TraceRow } from '../../component/trace/base/TraceRow'; +import { ColorUtils } from '../../component/trace/base/ColorUtils'; +import { convertJSON } from '../logic-worker/ProcedureLogicWorkerCommon'; export class CpuStateRender extends PerfRender { renderMainThread( diff --git a/ide/src/trace/database/ui-worker/ProcedureWorkerDiskIoAbility.ts b/ide/src/trace/database/ui-worker/ProcedureWorkerDiskIoAbility.ts index f8987b41e3ab4596a8db511e75923a2aeb303fae..b82d5e5ac1f58fefa0bb6ea8b224a5d26bc28710 100644 --- a/ide/src/trace/database/ui-worker/ProcedureWorkerDiskIoAbility.ts +++ b/ide/src/trace/database/ui-worker/ProcedureWorkerDiskIoAbility.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { ColorUtils } from '../../component/trace/base/ColorUtils.js'; +import { ColorUtils } from '../../component/trace/base/ColorUtils'; import { BaseStruct, drawLines, @@ -25,8 +25,8 @@ import { drawFlagLine, RequestMessage, dataFilterHandler, -} from './ProcedureWorkerCommon.js'; -import { TraceRow } from '../../component/trace/base/TraceRow.js'; +} from './ProcedureWorkerCommon'; +import { TraceRow } from '../../component/trace/base/TraceRow'; export class DiskIoAbilityRender extends Render { renderMainThread( diff --git a/ide/src/trace/database/ui-worker/ProcedureWorkerEnergyAnomaly.ts b/ide/src/trace/database/ui-worker/ProcedureWorkerEnergyAnomaly.ts index 7771350e4118bc140ab6401def3880e94d1d5bba..e2f235eeb42d23eb3a647e81269ef0697198046b 100644 --- a/ide/src/trace/database/ui-worker/ProcedureWorkerEnergyAnomaly.ts +++ b/ide/src/trace/database/ui-worker/ProcedureWorkerEnergyAnomaly.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { ColorUtils } from '../../component/trace/base/ColorUtils.js'; +import { ColorUtils } from '../../component/trace/base/ColorUtils'; import { BaseStruct, drawFlagLine, @@ -23,8 +23,8 @@ import { isFrameContainPoint, PerfRender, RequestMessage, -} from './ProcedureWorkerCommon.js'; -import { TraceRow } from '../../component/trace/base/TraceRow.js'; +} from './ProcedureWorkerCommon'; +import { TraceRow } from '../../component/trace/base/TraceRow'; export class EnergyAnomalyRender extends PerfRender { renderMainThread( diff --git a/ide/src/trace/database/ui-worker/ProcedureWorkerEnergyPower.ts b/ide/src/trace/database/ui-worker/ProcedureWorkerEnergyPower.ts index 5d491b9c1fcdb4abc3b0e8e6929b4e7ff1ff2f0b..d4a3877c7be8fee39b4f0c86970dd358593f2ede 100644 --- a/ide/src/trace/database/ui-worker/ProcedureWorkerEnergyPower.ts +++ b/ide/src/trace/database/ui-worker/ProcedureWorkerEnergyPower.ts @@ -23,8 +23,8 @@ import { RequestMessage, drawSelection, isFrameContainPoint, -} from './ProcedureWorkerCommon.js'; -import { TraceRow } from '../../component/trace/base/TraceRow.js'; +} from './ProcedureWorkerCommon'; +import { TraceRow } from '../../component/trace/base/TraceRow'; export class EnergyPowerRender extends Render { renderMainThread( diff --git a/ide/src/trace/database/ui-worker/ProcedureWorkerEnergyState.ts b/ide/src/trace/database/ui-worker/ProcedureWorkerEnergyState.ts index 0868eb70074ccd3bab485ac3ed77c833a064883d..37fb24d250f8c1de12f45a705159d500c24d613f 100644 --- a/ide/src/trace/database/ui-worker/ProcedureWorkerEnergyState.ts +++ b/ide/src/trace/database/ui-worker/ProcedureWorkerEnergyState.ts @@ -23,8 +23,8 @@ import { ns2x, Render, RequestMessage, -} from './ProcedureWorkerCommon.js'; -import { TraceRow } from '../../component/trace/base/TraceRow.js'; +} from './ProcedureWorkerCommon'; +import { TraceRow } from '../../component/trace/base/TraceRow'; export class EnergyStateRender extends Render { renderMainThread( diff --git a/ide/src/trace/database/ui-worker/ProcedureWorkerEnergySystem.ts b/ide/src/trace/database/ui-worker/ProcedureWorkerEnergySystem.ts index 0de99ab6cc2fb24730a761dd09d8a7a02c8bc97b..237834bdf6953bcae17bdcf470a9e14a536ff0bd 100644 --- a/ide/src/trace/database/ui-worker/ProcedureWorkerEnergySystem.ts +++ b/ide/src/trace/database/ui-worker/ProcedureWorkerEnergySystem.ts @@ -23,8 +23,8 @@ import { ns2x, Render, RequestMessage, -} from './ProcedureWorkerCommon.js'; -import { TraceRow } from '../../component/trace/base/TraceRow.js'; +} from './ProcedureWorkerCommon'; +import { TraceRow } from '../../component/trace/base/TraceRow'; export class EnergySystemRender extends Render { renderMainThread( diff --git a/ide/src/trace/database/ui-worker/ProcedureWorkerFPS.ts b/ide/src/trace/database/ui-worker/ProcedureWorkerFPS.ts index 9a2d142d734c41f8c18611e29a87133a6e05d600..27fc1073503d576890aaa2bbfac0bed4a8ae44a4 100644 --- a/ide/src/trace/database/ui-worker/ProcedureWorkerFPS.ts +++ b/ide/src/trace/database/ui-worker/ProcedureWorkerFPS.ts @@ -24,8 +24,8 @@ import { Rect, Render, RequestMessage, -} from './ProcedureWorkerCommon.js'; -import { TraceRow } from '../../component/trace/base/TraceRow.js'; +} from './ProcedureWorkerCommon'; +import { TraceRow } from '../../component/trace/base/TraceRow'; export class FpsRender extends Render { renderMainThread( diff --git a/ide/src/trace/database/ui-worker/ProcedureWorkerFileSystem.ts b/ide/src/trace/database/ui-worker/ProcedureWorkerFileSystem.ts index 1cf4f75e20e6c2e4db1e5f12cc7f4d2d6681cfa4..5fe12b249c14692fe6a29002eab4c7bc7299fae4 100644 --- a/ide/src/trace/database/ui-worker/ProcedureWorkerFileSystem.ts +++ b/ide/src/trace/database/ui-worker/ProcedureWorkerFileSystem.ts @@ -21,8 +21,8 @@ import { drawSelection, PerfRender, RequestMessage, -} from './ProcedureWorkerCommon.js'; -import { TraceRow } from '../../component/trace/base/TraceRow.js'; +} from './ProcedureWorkerCommon'; +import { TraceRow } from '../../component/trace/base/TraceRow'; export class FileSystemRender extends PerfRender { renderMainThread( diff --git a/ide/src/trace/database/ui-worker/ProcedureWorkerFrameAnimation.ts b/ide/src/trace/database/ui-worker/ProcedureWorkerFrameAnimation.ts index 8792687a20c036fa850b63622e1bd31492e6fd02..f23ff40f2aafa95f27df798be2456650d7b668dd 100644 --- a/ide/src/trace/database/ui-worker/ProcedureWorkerFrameAnimation.ts +++ b/ide/src/trace/database/ui-worker/ProcedureWorkerFrameAnimation.ts @@ -13,9 +13,9 @@ * limitations under the License. */ -import { ColorUtils } from '../../component/trace/base/ColorUtils.js'; -import { TraceRow } from '../../component/trace/base/TraceRow.js'; -import { BaseStruct, drawString, isFrameContainPoint, ns2x, Rect, Render } from './ProcedureWorkerCommon.js'; +import { ColorUtils } from '../../component/trace/base/ColorUtils'; +import { TraceRow } from '../../component/trace/base/TraceRow'; +import { BaseStruct, drawString, isFrameContainPoint, ns2x, Rect, Render } from './ProcedureWorkerCommon'; export class FrameAnimationRender extends Render { renderMainThread( diff --git a/ide/src/trace/database/ui-worker/ProcedureWorkerFrameDynamic.ts b/ide/src/trace/database/ui-worker/ProcedureWorkerFrameDynamic.ts index 01e5dce0e7f2f766b28876f1d011ba9890186f0d..2c0ff50316a22462611d560300ac215262422695 100644 --- a/ide/src/trace/database/ui-worker/ProcedureWorkerFrameDynamic.ts +++ b/ide/src/trace/database/ui-worker/ProcedureWorkerFrameDynamic.ts @@ -13,10 +13,10 @@ * limitations under the License. */ -import { TraceRow } from '../../component/trace/base/TraceRow.js'; -import { BaseStruct, computeUnitWidth, isSurroundingPoint, ns2x, Rect, Render } from './ProcedureWorkerCommon.js'; -import { type AnimationRanges } from '../../bean/FrameComponentBean.js'; -import { ColorUtils } from '../../component/trace/base/ColorUtils.js'; +import { TraceRow } from '../../component/trace/base/TraceRow'; +import { BaseStruct, computeUnitWidth, isSurroundingPoint, ns2x, Rect, Render } from './ProcedureWorkerCommon'; +import { type AnimationRanges } from '../../bean/FrameComponentBean'; +import { ColorUtils } from '../../component/trace/base/ColorUtils'; export class FrameDynamicRender extends Render { renderMainThread( diff --git a/ide/src/trace/database/ui-worker/ProcedureWorkerFrameSpacing.ts b/ide/src/trace/database/ui-worker/ProcedureWorkerFrameSpacing.ts index 0d6ae0d62a2518e8f0a71e6972aec2bc68ecec31..45b6ea7273802d952553f18e6fdf9f8795f653ff 100644 --- a/ide/src/trace/database/ui-worker/ProcedureWorkerFrameSpacing.ts +++ b/ide/src/trace/database/ui-worker/ProcedureWorkerFrameSpacing.ts @@ -13,10 +13,10 @@ * limitations under the License. */ -import { TraceRow } from '../../component/trace/base/TraceRow.js'; -import { BaseStruct, computeUnitWidth, isSurroundingPoint, ns2x, Rect, Render } from './ProcedureWorkerCommon.js'; -import { type AnimationRanges } from '../../bean/FrameComponentBean.js'; -import { ColorUtils } from '../../component/trace/base/ColorUtils.js'; +import { TraceRow } from '../../component/trace/base/TraceRow'; +import { BaseStruct, computeUnitWidth, isSurroundingPoint, ns2x, Rect, Render } from './ProcedureWorkerCommon'; +import { type AnimationRanges } from '../../bean/FrameComponentBean'; +import { ColorUtils } from '../../component/trace/base/ColorUtils'; export class FrameSpacingRender extends Render { renderMainThread( diff --git a/ide/src/trace/database/ui-worker/ProcedureWorkerFreq.ts b/ide/src/trace/database/ui-worker/ProcedureWorkerFreq.ts index 3e7744f839c47ab8b668fb16f3ded4aef898a04e..1661717aa74038badca5f831b8a2ec1f4f3eb78e 100644 --- a/ide/src/trace/database/ui-worker/ProcedureWorkerFreq.ts +++ b/ide/src/trace/database/ui-worker/ProcedureWorkerFreq.ts @@ -13,9 +13,9 @@ * limitations under the License. */ -import { ColorUtils } from '../../component/trace/base/ColorUtils.js'; -import { BaseStruct, dataFilterHandler, isFrameContainPoint, Render, RequestMessage } from './ProcedureWorkerCommon.js'; -import { TraceRow } from '../../component/trace/base/TraceRow.js'; +import { ColorUtils } from '../../component/trace/base/ColorUtils'; +import { BaseStruct, dataFilterHandler, isFrameContainPoint, Render, RequestMessage } from './ProcedureWorkerCommon'; +import { TraceRow } from '../../component/trace/base/TraceRow'; export class FreqRender extends Render { renderMainThread( diff --git a/ide/src/trace/database/ui-worker/ProcedureWorkerFreqExtend.ts b/ide/src/trace/database/ui-worker/ProcedureWorkerFreqExtend.ts deleted file mode 100644 index 3faaf8575dae08be735b5a07dc6f5fd7df149980..0000000000000000000000000000000000000000 --- a/ide/src/trace/database/ui-worker/ProcedureWorkerFreqExtend.ts +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright (C) 2022 Huawei Device Co., Ltd. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { ColorUtils } from '../../component/trace/base/ColorUtils.js'; -import { BaseStruct, dataFilterHandler, isFrameContainPoint, Render, RequestMessage } from './ProcedureWorkerCommon.js'; -import { TraceRow } from '../../component/trace/base/TraceRow.js'; - -export class FreqExtendRender extends Render { - renderMainThread( - freqReq: { - context: CanvasRenderingContext2D; - useCache: boolean; - type: string; - }, - row: TraceRow - ) { - let freqList = row.dataList; - let freqFilter = row.dataListCache; - dataFilterHandler(freqList, freqFilter, { - startKey: 'startNS', - durKey: 'dur', - startNS: TraceRow.range?.startNS ?? 0, - endNS: TraceRow.range?.endNS ?? 0, - totalNS: TraceRow.range?.totalNS ?? 0, - frame: row.frame, - paddingTop: 5, - useCache: freqReq.useCache || !(TraceRow.range?.refresh ?? false), - }); - - if (row.isHover) { - CpuFreqExtendStruct.cycle = -1; - CpuFreqExtendStruct.isTabHover = false; - } - freqReq.context.beginPath(); - for (let re of freqFilter) { - if (row.isHover && re.frame && isFrameContainPoint(re.frame, row.hoverX, row.hoverY)) { - CpuFreqExtendStruct.hoverCpuFreqStruct = re; - } - if (!row.isHover && !CpuFreqExtendStruct.isTabHover) CpuFreqExtendStruct.hoverCpuFreqStruct = undefined; - CpuFreqExtendStruct.draw(freqReq.context, re); - } - freqReq.context.closePath(); - } -} - -export class CpuFreqExtendStruct extends BaseStruct { - static maxValue: number = 0; - static cycle: number = -1; - static isTabHover: boolean = false; - static hoverCpuFreqStruct: CpuFreqExtendStruct | undefined; - freq: number = 0; - static selectCpuFreqStruct: CpuFreqExtendStruct | undefined; - cpu: number | undefined; - value: number | undefined; - startNS: number | undefined; - dur: number | undefined; //自补充,数据库没有返回 - cycle: number | undefined; - - static draw(freqContext: CanvasRenderingContext2D, data: CpuFreqExtendStruct) { - if (data.frame) { - let width = data.frame.width || 0; - let index = data.cpu || 0; - index += 2; - freqContext.fillStyle = ColorUtils.colorForTid(index); - freqContext.strokeStyle = ColorUtils.colorForTid(index); - if (data === CpuFreqExtendStruct.hoverCpuFreqStruct - || data === CpuFreqExtendStruct.selectCpuFreqStruct - || data === CpuFreqExtendStruct.selectCpuFreqStruct - || (data.cycle === CpuFreqExtendStruct.cycle - && CpuFreqExtendStruct.cycle !== -1)) { - freqContext.fillStyle = '#ff0000'; - freqContext.strokeStyle = '#ff0000'; - freqContext.lineWidth = 3; - freqContext.globalAlpha = 0.6; - let drawHeight: number = Math.floor( - ((data.value || 0) * (data.frame.height || 0) * 1.0) / CpuFreqExtendStruct.maxValue - ); - if (drawHeight < 1) { - drawHeight = 1; - } - freqContext.fillRect(data.frame.x, data.frame.y + data.frame.height - drawHeight, width, drawHeight); - freqContext.globalAlpha = 0.8; - freqContext.strokeRect(data.frame.x, data.frame.y + data.frame.height - drawHeight, width, drawHeight); - } else { - freqContext.globalAlpha = 0.6; - freqContext.lineWidth = 1; - let drawHeight: number = Math.floor(((data.value || 0) * (data.frame.height || 0)) / CpuFreqExtendStruct.maxValue); - if (drawHeight < 1) { - drawHeight = 1; - } - freqContext.fillRect(data.frame.x, data.frame.y + data.frame.height - drawHeight, width, drawHeight); - } - } - freqContext.globalAlpha = 1.0; - freqContext.lineWidth = 1; - } -} diff --git a/ide/src/trace/database/ui-worker/ProcedureWorkerFunc.ts b/ide/src/trace/database/ui-worker/ProcedureWorkerFunc.ts index 5c7dc86878d869c922a7c5ed516e7b5d72194880..d34ec56c6aa21dfb82680b8c40377b26e39b140e 100644 --- a/ide/src/trace/database/ui-worker/ProcedureWorkerFunc.ts +++ b/ide/src/trace/database/ui-worker/ProcedureWorkerFunc.ts @@ -13,8 +13,8 @@ * limitations under the License. */ -import { ColorUtils } from '../../component/trace/base/ColorUtils.js'; -import { TraceRow } from '../../component/trace/base/TraceRow.js'; +import { ColorUtils } from '../../component/trace/base/ColorUtils'; +import { TraceRow } from '../../component/trace/base/TraceRow'; import { BaseStruct, isFrameContainPoint, @@ -23,9 +23,9 @@ import { Render, RequestMessage, drawString, -} from './ProcedureWorkerCommon.js'; -import { FuncStruct as BaseFuncStruct } from '../../bean/FuncStruct.js'; -import { FlagsConfig } from '../../component/SpFlags.js'; +} from './ProcedureWorkerCommon'; +import { FuncStruct as BaseFuncStruct } from '../../bean/FuncStruct'; +import { FlagsConfig } from '../../component/SpFlags'; export class FuncRender extends Render { renderMainThread( req: { diff --git a/ide/src/trace/database/ui-worker/ProcedureWorkerHeap.ts b/ide/src/trace/database/ui-worker/ProcedureWorkerHeap.ts index f209e2921c23b0564910794daa7932caec7342ad..0f455b95349ab6e435f6933fec09a6d15f637b94 100644 --- a/ide/src/trace/database/ui-worker/ProcedureWorkerHeap.ts +++ b/ide/src/trace/database/ui-worker/ProcedureWorkerHeap.ts @@ -26,9 +26,9 @@ import { RequestMessage, isFrameContainPoint, ns2x, -} from './ProcedureWorkerCommon.js'; -import { TraceRow } from '../../component/trace/base/TraceRow.js'; -import { HeapStruct as BaseHeapStruct } from '../../bean/HeapStruct.js'; +} from './ProcedureWorkerCommon'; +import { TraceRow } from '../../component/trace/base/TraceRow'; +import { HeapStruct as BaseHeapStruct } from '../../bean/HeapStruct'; export class NativeMemoryRender extends Render { renderMainThread(req: any, row: TraceRow) {} } diff --git a/ide/src/trace/database/ui-worker/ProcedureWorkerHeapSnapshot.ts b/ide/src/trace/database/ui-worker/ProcedureWorkerHeapSnapshot.ts index 2d59938296de01d4b3b1245e4de2b5d413df4a7e..6af0131289d3786c0c72a4a21c5e1b31785961c5 100644 --- a/ide/src/trace/database/ui-worker/ProcedureWorkerHeapSnapshot.ts +++ b/ide/src/trace/database/ui-worker/ProcedureWorkerHeapSnapshot.ts @@ -13,9 +13,9 @@ * limitations under the License. */ -import { BaseStruct, Rect, Render, isFrameContainPoint } from './ProcedureWorkerCommon.js'; -import { TraceRow } from '../../component/trace/base/TraceRow.js'; -import { Utils } from '../../component/trace/base/Utils.js'; +import { BaseStruct, Rect, Render, isFrameContainPoint } from './ProcedureWorkerCommon'; +import { TraceRow } from '../../component/trace/base/TraceRow'; +import { Utils } from '../../component/trace/base/Utils'; export class HeapSnapshotRender extends Render { renderMainThread( req: { diff --git a/ide/src/trace/database/ui-worker/ProcedureWorkerHeapTimeline.ts b/ide/src/trace/database/ui-worker/ProcedureWorkerHeapTimeline.ts index c5960e14a570a40954ab26e047b0d994492204de..57ad8459749a7c326a6fa28a4f760bb21f2c1c7c 100644 --- a/ide/src/trace/database/ui-worker/ProcedureWorkerHeapTimeline.ts +++ b/ide/src/trace/database/ui-worker/ProcedureWorkerHeapTimeline.ts @@ -12,9 +12,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { BaseStruct, Rect, isFrameContainPoint } from './ProcedureWorkerCommon.js'; -import { TraceRow } from '../../component/trace/base/TraceRow.js'; -import { HeapSample } from '../../../js-heap/model/DatabaseStruct.js'; +import { BaseStruct, Rect, isFrameContainPoint } from './ProcedureWorkerCommon'; +import { TraceRow } from '../../component/trace/base/TraceRow'; +import { HeapSample } from '../../../js-heap/model/DatabaseStruct'; export class HeapTimelineRender { renderMainThread( diff --git a/ide/src/trace/database/ui-worker/ProcedureWorkerHiPerfCPU.ts b/ide/src/trace/database/ui-worker/ProcedureWorkerHiPerfCPU.ts index 831f27a9f67b97ce2b2fde3538c44dcced811790..2b208131327e4e1ca7b05610d0512e3b1a158c3b 100644 --- a/ide/src/trace/database/ui-worker/ProcedureWorkerHiPerfCPU.ts +++ b/ide/src/trace/database/ui-worker/ProcedureWorkerHiPerfCPU.ts @@ -13,14 +13,14 @@ * limitations under the License. */ -import { ColorUtils } from '../../component/trace/base/ColorUtils.js'; +import { ColorUtils } from '../../component/trace/base/ColorUtils'; import { HiPerfStruct, hiPerf, PerfRender, RequestMessage, -} from './ProcedureWorkerCommon.js'; -import { TraceRow } from '../../component/trace/base/TraceRow.js'; +} from './ProcedureWorkerCommon'; +import { TraceRow } from '../../component/trace/base/TraceRow'; export class HiperfCpuRender extends PerfRender { renderMainThread(req: any, row: TraceRow): void { diff --git a/ide/src/trace/database/ui-worker/ProcedureWorkerHiPerfCallChart.ts b/ide/src/trace/database/ui-worker/ProcedureWorkerHiPerfCallChart.ts index 8cb120c005d9f28aae8094bde66c5a338ed29e3a..b2ae06f45e705feee56bdfaeb35d5137d199399f 100644 --- a/ide/src/trace/database/ui-worker/ProcedureWorkerHiPerfCallChart.ts +++ b/ide/src/trace/database/ui-worker/ProcedureWorkerHiPerfCallChart.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { ColorUtils } from '../../component/trace/base/ColorUtils.js'; +import { ColorUtils } from '../../component/trace/base/ColorUtils'; import { BaseStruct, type Rect, @@ -21,9 +21,9 @@ import { drawString, Render, isFrameContainPoint -} from './ProcedureWorkerCommon.js'; -import { TraceRow } from '../../component/trace/base/TraceRow.js'; -import { HiPerfChartFrame } from '../../bean/PerfStruct.js'; +} from './ProcedureWorkerCommon'; +import { TraceRow } from '../../component/trace/base/TraceRow'; +import { HiPerfChartFrame } from '../../bean/PerfStruct'; export class HiPerfCallChartRender extends Render { renderMainThread(req: any, row: TraceRow): void { diff --git a/ide/src/trace/database/ui-worker/ProcedureWorkerHiPerfEvent.ts b/ide/src/trace/database/ui-worker/ProcedureWorkerHiPerfEvent.ts index ba3749efce87b617a719142e14313e976670ae47..61468f7b99d6b209446b575376845a97edc536f5 100644 --- a/ide/src/trace/database/ui-worker/ProcedureWorkerHiPerfEvent.ts +++ b/ide/src/trace/database/ui-worker/ProcedureWorkerHiPerfEvent.ts @@ -13,9 +13,9 @@ * limitations under the License. */ -import { ColorUtils } from '../../component/trace/base/ColorUtils.js'; -import { hiPerf, HiPerfStruct, PerfRender, RequestMessage } from './ProcedureWorkerCommon.js'; -import { TraceRow } from '../../component/trace/base/TraceRow.js'; +import { ColorUtils } from '../../component/trace/base/ColorUtils'; +import { hiPerf, HiPerfStruct, PerfRender, RequestMessage } from './ProcedureWorkerCommon'; +import { TraceRow } from '../../component/trace/base/TraceRow'; export class HiperfEventRender extends PerfRender { renderMainThread(hiPerfEventReq: any, row: TraceRow): void { diff --git a/ide/src/trace/database/ui-worker/ProcedureWorkerHiPerfProcess.ts b/ide/src/trace/database/ui-worker/ProcedureWorkerHiPerfProcess.ts index 51db538f4d0128f6ed70405a7fa547cb4c8cefd5..96638bba663806acc479cdca4187e3a52dfb48e3 100644 --- a/ide/src/trace/database/ui-worker/ProcedureWorkerHiPerfProcess.ts +++ b/ide/src/trace/database/ui-worker/ProcedureWorkerHiPerfProcess.ts @@ -13,9 +13,9 @@ * limitations under the License. */ -import { ColorUtils } from '../../component/trace/base/ColorUtils.js'; -import { hiPerf, HiPerfStruct, PerfRender, RequestMessage } from './ProcedureWorkerCommon.js'; -import { TraceRow } from '../../component/trace/base/TraceRow.js'; +import { ColorUtils } from '../../component/trace/base/ColorUtils'; +import { hiPerf, HiPerfStruct, PerfRender, RequestMessage } from './ProcedureWorkerCommon'; +import { TraceRow } from '../../component/trace/base/TraceRow'; export class HiperfProcessRender extends PerfRender { renderMainThread(hiPerfProcessReq: any, row: TraceRow): void { diff --git a/ide/src/trace/database/ui-worker/ProcedureWorkerHiPerfReport.ts b/ide/src/trace/database/ui-worker/ProcedureWorkerHiPerfReport.ts index 043bab3675a9d6d5648da42dd79dd566f93207b7..dbb1033828809e30683c0aa0fc8c4bd5a36ed87d 100644 --- a/ide/src/trace/database/ui-worker/ProcedureWorkerHiPerfReport.ts +++ b/ide/src/trace/database/ui-worker/ProcedureWorkerHiPerfReport.ts @@ -13,10 +13,10 @@ * limitations under the License. */ -import { ColorUtils } from '../../component/trace/base/ColorUtils.js'; -import { HiPerfStruct, PerfRender, type RequestMessage } from './ProcedureWorkerCommon.js'; +import { ColorUtils } from '../../component/trace/base/ColorUtils'; +import { HiPerfStruct, PerfRender, type RequestMessage } from './ProcedureWorkerCommon'; -import { TraceRow } from '../../component/trace/base/TraceRow.js'; +import { TraceRow } from '../../component/trace/base/TraceRow'; export class HiperfReportRender extends PerfRender { renderMainThread(hiPerfReportReq: any, row: TraceRow): void { diff --git a/ide/src/trace/database/ui-worker/ProcedureWorkerHiPerfThread.ts b/ide/src/trace/database/ui-worker/ProcedureWorkerHiPerfThread.ts index eb8a668e803b2080fdc9cf785f95e30fd1661d0a..d816d9b94b62a4eb53630949d806d39ace1310f8 100644 --- a/ide/src/trace/database/ui-worker/ProcedureWorkerHiPerfThread.ts +++ b/ide/src/trace/database/ui-worker/ProcedureWorkerHiPerfThread.ts @@ -13,9 +13,9 @@ * limitations under the License. */ -import { ColorUtils } from '../../component/trace/base/ColorUtils.js'; -import { hiPerf, HiPerfStruct, PerfRender, RequestMessage } from './ProcedureWorkerCommon.js'; -import { TraceRow } from '../../component/trace/base/TraceRow.js'; +import { ColorUtils } from '../../component/trace/base/ColorUtils'; +import { hiPerf, HiPerfStruct, PerfRender, RequestMessage } from './ProcedureWorkerCommon'; +import { TraceRow } from '../../component/trace/base/TraceRow'; export class HiperfThreadRender extends PerfRender { renderMainThread(hiPerfThreadReq: any, row: TraceRow): void { diff --git a/ide/src/trace/database/ui-worker/ProcedureWorkerHiSysEvent.ts b/ide/src/trace/database/ui-worker/ProcedureWorkerHiSysEvent.ts index 2c1c5154b7b55de2527cfb99f9eb48134464237e..ed7a0b196e03ebe302588f32b6df19f7402c0bc6 100644 --- a/ide/src/trace/database/ui-worker/ProcedureWorkerHiSysEvent.ts +++ b/ide/src/trace/database/ui-worker/ProcedureWorkerHiSysEvent.ts @@ -13,9 +13,9 @@ * limitations under the License. */ -import { TraceRow } from '../../component/trace/base/TraceRow.js'; -import { BaseStruct, dataFilterHandler, ns2x, Rect, Render } from './ProcedureWorkerCommon.js'; -import { ColorUtils } from '../../component/trace/base/ColorUtils.js'; +import { TraceRow } from '../../component/trace/base/TraceRow'; +import { BaseStruct, dataFilterHandler, ns2x, Rect, Render } from './ProcedureWorkerCommon'; +import { ColorUtils } from '../../component/trace/base/ColorUtils'; export class HiSysEventRender extends Render { renderMainThread( diff --git a/ide/src/trace/database/ui-worker/ProcedureWorkerIrq.ts b/ide/src/trace/database/ui-worker/ProcedureWorkerIrq.ts index f27b1c0ab699745e3630fa6859ee9834ab496ffe..bbbb4dbe2269b3cf5e0627408b4d63486770e8ea 100644 --- a/ide/src/trace/database/ui-worker/ProcedureWorkerIrq.ts +++ b/ide/src/trace/database/ui-worker/ProcedureWorkerIrq.ts @@ -20,9 +20,9 @@ import { Rect, Render, drawString, -} from './ProcedureWorkerCommon.js'; -import { TraceRow } from '../../component/trace/base/TraceRow.js'; -import { ColorUtils } from '../../component/trace/base/ColorUtils.js'; +} from './ProcedureWorkerCommon'; +import { TraceRow } from '../../component/trace/base/TraceRow'; +import { ColorUtils } from '../../component/trace/base/ColorUtils'; export class IrqRender extends Render { renderMainThread( diff --git a/ide/src/trace/database/ui-worker/ProcedureWorkerJank.ts b/ide/src/trace/database/ui-worker/ProcedureWorkerJank.ts index 88924004e14e2a61de4a1f3c8562dc30825e58bf..db370504ba8e8bbd4d372e7e8199abab35500627 100644 --- a/ide/src/trace/database/ui-worker/ProcedureWorkerJank.ts +++ b/ide/src/trace/database/ui-worker/ProcedureWorkerJank.ts @@ -13,10 +13,10 @@ * limitations under the License. */ -import { JanksStruct } from '../../bean/JanksStruct.js'; -import { ColorUtils } from '../../component/trace/base/ColorUtils.js'; -import { TraceRow } from '../../component/trace/base/TraceRow.js'; -import { BaseStruct, isFrameContainPoint, ns2x, Render, RequestMessage, drawString } from './ProcedureWorkerCommon.js'; +import { JanksStruct } from '../../bean/JanksStruct'; +import { ColorUtils } from '../../component/trace/base/ColorUtils'; +import { TraceRow } from '../../component/trace/base/TraceRow'; +import { BaseStruct, isFrameContainPoint, ns2x, Render, RequestMessage, drawString } from './ProcedureWorkerCommon'; export class JankRender extends Render { renderMainThread( diff --git a/ide/src/trace/database/ui-worker/ProcedureWorkerLog.ts b/ide/src/trace/database/ui-worker/ProcedureWorkerLog.ts index 88fad80c6521631c7e52b5a0462e894b0ee3d091..d120d36b7af86b05c37128c07f2e8f8292ba105d 100644 --- a/ide/src/trace/database/ui-worker/ProcedureWorkerLog.ts +++ b/ide/src/trace/database/ui-worker/ProcedureWorkerLog.ts @@ -13,11 +13,11 @@ * limitations under the License. */ -import { TraceRow } from '../../component/trace/base/TraceRow.js'; -import { ns2x, Rect, Render } from './ProcedureWorkerCommon.js'; +import { TraceRow } from '../../component/trace/base/TraceRow'; +import { ns2x, Rect, Render } from './ProcedureWorkerCommon'; -import { BaseStruct } from '../../bean/BaseStruct.js'; -import { ColorUtils } from '../../component/trace/base/ColorUtils.js'; +import { BaseStruct } from '../../bean/BaseStruct'; +import { ColorUtils } from '../../component/trace/base/ColorUtils'; const LOG_STRUCT_HEIGHT = 7; const X_PADDING = 5; diff --git a/ide/src/trace/database/ui-worker/ProcedureWorkerMem.ts b/ide/src/trace/database/ui-worker/ProcedureWorkerMem.ts index 783afe8f9e397ef6b66a3c9ea8d9d1fef3a65c7a..e2ce4fa904262cfd68d5e8acb9b3dd1435fcc2eb 100644 --- a/ide/src/trace/database/ui-worker/ProcedureWorkerMem.ts +++ b/ide/src/trace/database/ui-worker/ProcedureWorkerMem.ts @@ -13,8 +13,8 @@ * limitations under the License. */ -import { ColorUtils } from '../../component/trace/base/ColorUtils.js'; -import { TraceRow } from '../../component/trace/base/TraceRow.js'; +import { ColorUtils } from '../../component/trace/base/ColorUtils'; +import { TraceRow } from '../../component/trace/base/TraceRow'; import { BaseStruct, drawFlagLine, @@ -28,9 +28,9 @@ import { Render, RequestMessage, mem, -} from './ProcedureWorkerCommon.js'; -import { CpuStruct } from './ProcedureWorkerCPU.js'; -import { ProcessMemStruct as BaseProcessMemStruct } from '../../bean/ProcessMemStruct.js'; +} from './ProcedureWorkerCommon'; +import { CpuStruct } from './ProcedureWorkerCPU'; +import { ProcessMemStruct as BaseProcessMemStruct } from '../../bean/ProcessMemStruct'; export class MemRender extends Render { renderMainThread( req: { diff --git a/ide/src/trace/database/ui-worker/ProcedureWorkerMemoryAbility.ts b/ide/src/trace/database/ui-worker/ProcedureWorkerMemoryAbility.ts index 1183cbe069dd541433f7ce1af39a44f92ae4f1ac..f328b69f14ea4832d3f24f2798d7c113bf7470f1 100644 --- a/ide/src/trace/database/ui-worker/ProcedureWorkerMemoryAbility.ts +++ b/ide/src/trace/database/ui-worker/ProcedureWorkerMemoryAbility.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { ColorUtils } from '../../component/trace/base/ColorUtils.js'; +import { ColorUtils } from '../../component/trace/base/ColorUtils'; import { BaseStruct, dataFilterHandler, @@ -25,8 +25,8 @@ import { RequestMessage, isFrameContainPoint, ns2x, -} from './ProcedureWorkerCommon.js'; -import { TraceRow } from '../../component/trace/base/TraceRow.js'; +} from './ProcedureWorkerCommon'; +import { TraceRow } from '../../component/trace/base/TraceRow'; export class MemoryAbilityRender extends Render { renderMainThread( diff --git a/ide/src/trace/database/ui-worker/ProcedureWorkerNetworkAbility.ts b/ide/src/trace/database/ui-worker/ProcedureWorkerNetworkAbility.ts index f98577c51b1b7e59385259b3d253ecfa1f0c6c1c..7a546cd4df57f9740d0b193b9c3b2791be3a5fea 100644 --- a/ide/src/trace/database/ui-worker/ProcedureWorkerNetworkAbility.ts +++ b/ide/src/trace/database/ui-worker/ProcedureWorkerNetworkAbility.ts @@ -13,9 +13,9 @@ * limitations under the License. */ -import { ColorUtils } from '../../component/trace/base/ColorUtils.js'; -import { dataFilterHandler, isFrameContainPoint, Render, RequestMessage, BaseStruct } from './ProcedureWorkerCommon.js'; -import { TraceRow } from '../../component/trace/base/TraceRow.js'; +import { ColorUtils } from '../../component/trace/base/ColorUtils'; +import { dataFilterHandler, isFrameContainPoint, Render, RequestMessage, BaseStruct } from './ProcedureWorkerCommon'; +import { TraceRow } from '../../component/trace/base/TraceRow'; export class NetworkAbilityRender extends Render { renderMainThread( req: { diff --git a/ide/src/trace/database/ui-worker/ProcedureWorkerPerfCallchains.ts b/ide/src/trace/database/ui-worker/ProcedureWorkerPerfCallchains.ts index e676b085fd47d87e21509a5cfe5827e7fd42d60b..170db83b7d1965d63822fee49a3bd0cf65a2507d 100644 --- a/ide/src/trace/database/ui-worker/ProcedureWorkerPerfCallchains.ts +++ b/ide/src/trace/database/ui-worker/ProcedureWorkerPerfCallchains.ts @@ -12,10 +12,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - -class PerfCallChainThread extends Worker { +class PerfCallChainThread{ busy: boolean = false; taskMap: any = {}; + worker?:Worker; + + constructor(worker:Worker) { + this.worker=worker; + } + uuid(): string { // @ts-ignore return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, (c: any) => @@ -33,7 +38,7 @@ class PerfCallChainThread extends Worker { action: action || 'exec', params: args, }; - this.postMessage(msg); + this.worker!.postMessage(msg); } } @@ -44,15 +49,15 @@ export class PerfCallChainPool { close = async () => { for (let i = 0; i < this.works.length; i++) { let thread = this.works[i]; - thread.terminate(); + thread.worker!.terminate(); } this.works.length = 0; }; init = async () => { await this.close(); - let thread = new PerfCallChainThread('trace/component/chart/PerfDataQuery.js', { type: 'module' }); //trace/component/chart/PerfDataQuery.js - thread!.onmessage = (event: MessageEvent) => { + let thread = new PerfCallChainThread(new Worker(new URL('../../component/chart/PerfDataQuery',import.meta.url), { type: 'module' })); //trace/component/chart/PerfDataQuery.js + thread!.worker!.onmessage = (event: MessageEvent) => { thread.busy = false; let fun = thread.taskMap[event.data.id]; if (fun) { @@ -60,8 +65,8 @@ export class PerfCallChainPool { } Reflect.deleteProperty(thread.taskMap, event.data.id); }; - thread!.onmessageerror = (e) => {}; - thread!.onerror = (e) => {}; + thread!.worker!.onmessageerror = (e) => {}; + thread!.worker!.onerror = (e) => {}; thread!.busy = false; this.works?.push(thread!); }; diff --git a/ide/src/trace/database/ui-worker/ProcedureWorkerProcess.ts b/ide/src/trace/database/ui-worker/ProcedureWorkerProcess.ts index e6e580660a5dd7849623b0fe0a49497cd58716a5..6073013c54d3dba53168ba0b8345976dc0212633 100644 --- a/ide/src/trace/database/ui-worker/ProcedureWorkerProcess.ts +++ b/ide/src/trace/database/ui-worker/ProcedureWorkerProcess.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { ColorUtils } from '../../component/trace/base/ColorUtils.js'; +import { ColorUtils } from '../../component/trace/base/ColorUtils'; import { BaseStruct, drawFlagLine, @@ -24,9 +24,9 @@ import { ns2x, Render, RequestMessage, -} from './ProcedureWorkerCommon.js'; -import { CpuStruct } from './ProcedureWorkerCPU.js'; -import { TraceRow } from '../../component/trace/base/TraceRow.js'; +} from './ProcedureWorkerCommon'; +import { CpuStruct } from './ProcedureWorkerCPU'; +import { TraceRow } from '../../component/trace/base/TraceRow'; export class ProcessRender extends Render { renderMainThread(req: any, row: TraceRow) { diff --git a/ide/src/trace/database/ui-worker/ProcedureWorkerSnapshot.ts b/ide/src/trace/database/ui-worker/ProcedureWorkerSnapshot.ts index 35fdf2dd323d1f601156a2138784d642a42078b8..90734acd717189ffdf8bd11ddc07795376a87e52 100644 --- a/ide/src/trace/database/ui-worker/ProcedureWorkerSnapshot.ts +++ b/ide/src/trace/database/ui-worker/ProcedureWorkerSnapshot.ts @@ -12,10 +12,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { BaseStruct, Rect, Render, isFrameContainPoint, ns2x } from './ProcedureWorkerCommon.js'; -import { TraceRow } from '../../component/trace/base/TraceRow.js'; -import { Utils } from '../../component/trace/base/Utils.js'; -import { MemoryConfig } from '../../bean/MemoryConfig.js'; +import { BaseStruct, Rect, Render, isFrameContainPoint, ns2x } from './ProcedureWorkerCommon'; +import { TraceRow } from '../../component/trace/base/TraceRow'; +import { Utils } from '../../component/trace/base/Utils'; +import { MemoryConfig } from '../../bean/MemoryConfig'; export class SnapshotRender extends Render { renderMainThread( diff --git a/ide/src/trace/database/ui-worker/ProcedureWorkerSoInit.ts b/ide/src/trace/database/ui-worker/ProcedureWorkerSoInit.ts index 1bb93b1e15cdbf86d1743642043676e064b38b10..205b3847a384af201af483afec41c27bcc3841dd 100644 --- a/ide/src/trace/database/ui-worker/ProcedureWorkerSoInit.ts +++ b/ide/src/trace/database/ui-worker/ProcedureWorkerSoInit.ts @@ -13,9 +13,9 @@ * limitations under the License. */ -import { ColorUtils } from '../../component/trace/base/ColorUtils.js'; -import { TraceRow } from '../../component/trace/base/TraceRow.js'; -import { BaseStruct, isFrameContainPoint, ns2x, Render, RequestMessage, drawString } from './ProcedureWorkerCommon.js'; +import { ColorUtils } from '../../component/trace/base/ColorUtils'; +import { TraceRow } from '../../component/trace/base/TraceRow'; +import { BaseStruct, isFrameContainPoint, ns2x, Render, RequestMessage, drawString } from './ProcedureWorkerCommon'; export class SoRender extends Render { renderMainThread( diff --git a/ide/src/trace/database/ui-worker/ProcedureWorkerThread.ts b/ide/src/trace/database/ui-worker/ProcedureWorkerThread.ts index 6a31c89391734bcb7cc6dd4dfadf18b9ce6754fd..aec83744c2fb30e9190e275d58e91fd21cd6384d 100644 --- a/ide/src/trace/database/ui-worker/ProcedureWorkerThread.ts +++ b/ide/src/trace/database/ui-worker/ProcedureWorkerThread.ts @@ -21,10 +21,10 @@ import { Render, RequestMessage, drawString, -} from './ProcedureWorkerCommon.js'; -import { TraceRow } from '../../component/trace/base/TraceRow.js'; -import { Utils } from '../../component/trace/base/Utils.js'; -import { ThreadStruct as BaseThreadStruct } from '../../bean/ThreadStruct.js'; +} from './ProcedureWorkerCommon'; +import { TraceRow } from '../../component/trace/base/TraceRow'; +import { Utils } from '../../component/trace/base/Utils'; +import { ThreadStruct as BaseThreadStruct } from '../../bean/ThreadStruct'; export class ThreadRender extends Render { renderMainThread( threadReq: { @@ -58,7 +58,7 @@ export class ThreadRender extends Render { threadReq.context.closePath(); } - render(threadReq: RequestMessage, threadList: Array, threadFilter: Array) { } + render(threadReq: RequestMessage, threadList: Array, threadFilter: Array) {} } const padding = 3; diff --git a/ide/src/trace/database/ui-worker/ProcedureWorkerTimeline.ts b/ide/src/trace/database/ui-worker/ProcedureWorkerTimeline.ts index 5d93c9b80b39e60ce5c09415daa2671e9b46e9a4..ef5cd6a618a4eb97ce0e75480573030fabc6a9e7 100644 --- a/ide/src/trace/database/ui-worker/ProcedureWorkerTimeline.ts +++ b/ide/src/trace/database/ui-worker/ProcedureWorkerTimeline.ts @@ -13,10 +13,10 @@ * limitations under the License. */ -import { ns2s, Rect, Render, RequestMessage } from './ProcedureWorkerCommon.js'; -import { ColorUtils } from '../../component/trace/base/ColorUtils.js'; -import { TraceRow } from '../../component/trace/base/TraceRow.js'; -import { CpuStruct } from './ProcedureWorkerCPU.js'; +import { ns2s, Rect, Render, RequestMessage } from './ProcedureWorkerCommon'; +import { ColorUtils } from '../../component/trace/base/ColorUtils'; +import { TraceRow } from '../../component/trace/base/TraceRow'; +import { CpuStruct } from './ProcedureWorkerCPU'; //绘制时间轴 let timeRuler: TimeRuler | undefined; diff --git a/ide/src/trace/database/ui-worker/ProcedureWorkerVirtualMemory.ts b/ide/src/trace/database/ui-worker/ProcedureWorkerVirtualMemory.ts index 3d43f6b0ab3a461a94978e723197d786737dd091..51e2ff5f51e445ab4cdf69b317fc96f000c84f42 100644 --- a/ide/src/trace/database/ui-worker/ProcedureWorkerVirtualMemory.ts +++ b/ide/src/trace/database/ui-worker/ProcedureWorkerVirtualMemory.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { ColorUtils } from '../../component/trace/base/ColorUtils.js'; +import { ColorUtils } from '../../component/trace/base/ColorUtils'; import { BaseStruct, drawLines, @@ -24,8 +24,8 @@ import { drawFlagLine, drawSelection, isFrameContainPoint, -} from './ProcedureWorkerCommon.js'; -import { TraceRow } from '../../component/trace/base/TraceRow.js'; +} from './ProcedureWorkerCommon'; +import { TraceRow } from '../../component/trace/base/TraceRow'; export class VirtualMemoryRender extends Render { renderMainThread( diff --git a/ide/src/trace/database/ui-worker/ProduceWorkerSdkCounter.ts b/ide/src/trace/database/ui-worker/ProduceWorkerSdkCounter.ts index 807daaac5e4503dc83397ab42b55994a7a2b5f65..fcb5c8d4567fa21cd3afdd9d9e9d02ed8349ee08 100644 --- a/ide/src/trace/database/ui-worker/ProduceWorkerSdkCounter.ts +++ b/ide/src/trace/database/ui-worker/ProduceWorkerSdkCounter.ts @@ -23,8 +23,8 @@ import { RequestMessage, drawLines, drawLoading, -} from './ProcedureWorkerCommon.js'; -import { TraceRow } from '../../component/trace/base/TraceRow.js'; +} from './ProcedureWorkerCommon'; +import { TraceRow } from '../../component/trace/base/TraceRow'; export class SdkCounterRender extends Render { renderMainThread( diff --git a/ide/src/trace/database/ui-worker/ProduceWorkerSdkSlice.ts b/ide/src/trace/database/ui-worker/ProduceWorkerSdkSlice.ts index bad3969f4d71c92ea891052aefae733e9a343988..f7abd77b40c5ba42620c77b86f1315047546af7f 100644 --- a/ide/src/trace/database/ui-worker/ProduceWorkerSdkSlice.ts +++ b/ide/src/trace/database/ui-worker/ProduceWorkerSdkSlice.ts @@ -24,9 +24,9 @@ import { isFrameContainPoint, ns2x, drawSelection, -} from './ProcedureWorkerCommon.js'; -import { TraceRow } from '../../component/trace/base/TraceRow.js'; -import { CounterStruct } from './ProduceWorkerSdkCounter.js'; +} from './ProcedureWorkerCommon'; +import { TraceRow } from '../../component/trace/base/TraceRow'; +import { CounterStruct } from './ProduceWorkerSdkCounter'; export class SdkSliceRender extends Render { renderMainThread( diff --git a/ide/src/trace/database/ui-worker/procedureWorkerBinder.ts b/ide/src/trace/database/ui-worker/procedureWorkerBinder.ts deleted file mode 100644 index ee20c3fb603cb9e7fe8e28deadadffc45f8e3397..0000000000000000000000000000000000000000 --- a/ide/src/trace/database/ui-worker/procedureWorkerBinder.ts +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright (C) 2022 Huawei Device Co., Ltd. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { ColorUtils } from '../../component/trace/base/ColorUtils.js'; -import { BaseStruct, dataFilterHandler, isFrameContainPoint, Render, RequestMessage } from './ProcedureWorkerCommon.js'; -import { TraceRow } from '../../component/trace/base/TraceRow.js'; -import { drawString, Rect } from './ProcedureWorkerCommon.js'; - -export class BinderRender extends Render { - renderMainThread( - freqReq: { - context: CanvasRenderingContext2D; - useCache: boolean; - type: string; - }, - row: TraceRow - ) { - let freqList = row.dataList; - let freqFilter = row.dataListCache; - dataFilterHandler(freqList, freqFilter, { - startKey: 'startNS', - durKey: 'dur', - startNS: TraceRow.range?.startNS ?? 0, - endNS: TraceRow.range?.endNS ?? 0, - totalNS: TraceRow.range?.totalNS ?? 0, - frame: row.frame, - paddingTop: 5, - useCache: freqReq.useCache || !(TraceRow.range?.refresh ?? false), - }); - freqReq.context.beginPath(); - for (let re of freqFilter) { - if (row.isHover - && re.frame - && (re.frame.x < row.hoverX - && (binderStruct.maxHeight * 20 - re.depth * 20 + 20) < row.hoverY - && re.frame.x + re.frame.width > row.hoverX - && binderStruct.maxHeight * 20 - re.depth * 20 + re.value * 20 + 20 > row.hoverY)) { - binderStruct.hoverCpuFreqStruct = re; - } else { - binderStruct.hoverCpuFreqStruct = undefined; - } - binderStruct.draw(freqReq.context, re); - } - freqReq.context.closePath(); - } -} -export class binderStruct extends BaseStruct { - static hoverCpuFreqStruct: binderStruct | undefined; - static selectCpuFreqStruct: binderStruct | undefined; - static maxHeight: number = 0; - static hoverCycle: number = -1; - static isTableHover: boolean = false; - cpu: number | undefined; - value: number = 0; - cycle: number = -1; - startNS: number | undefined; - dur: number | undefined; //自补充,数据库没有返回 - name: string | undefined; - depth: number = 0; - static draw(freqContext: CanvasRenderingContext2D, data: binderStruct) { - if (data.frame) { - let index = data.cpu || 0; - let color = ''; - if (data.name === 'binder transaction') { - color = '#e86b6a'; - } - if (data.name === 'binder transaction async') { - color = '#7da6f4'; - } - if (data.name === 'binder reply') { - color = '#0cbdd4'; - } - if (data.name === 'binder async rcv') { - color = '#8770d3'; - } - freqContext.fillStyle = color - if (data === binderStruct.hoverCpuFreqStruct || data === binderStruct.selectCpuFreqStruct || (data.cycle === binderStruct.hoverCycle && binderStruct.isTableHover)) { - freqContext.globalAlpha = 1; - freqContext.lineWidth = 1; - freqContext.fillRect(data.frame.x, binderStruct.maxHeight * 20 - data.depth * 20 + 20, data.frame.width, data.value * 20); - } else { - freqContext.globalAlpha = 0.6; - freqContext.lineWidth = 1; - freqContext.fillRect(data.frame.x, binderStruct.maxHeight * 20 - data.depth * 20 + 20, data.frame.width, data.value * 20); - } - if (data.frame.width > 8) { - freqContext.lineWidth = 1; - freqContext.fillStyle = ColorUtils.funcTextColor( - ColorUtils.FUNC_COLOR[ColorUtils.hashFunc(data.name || '', 0, ColorUtils.FUNC_COLOR.length)] - ); - freqContext.textBaseline = 'middle'; - drawString(freqContext, `${data.name || ''}`, 6, new Rect(data.frame.x, binderStruct.maxHeight * 20 - data.depth * 20 + 20, data.frame.width, data.value * 20), data); - } - freqContext.globalAlpha = 1.0; - freqContext.lineWidth = 1; - } - } -} \ No newline at end of file diff --git a/ide/src/trace/grpc/HiProfilerClient.ts b/ide/src/trace/grpc/HiProfilerClient.ts index ad67d750a6068488094ed493b57719fd76a62bdb..9749e618748019d75bfff98849baea9c2ac5ea98 100644 --- a/ide/src/trace/grpc/HiProfilerClient.ts +++ b/ide/src/trace/grpc/HiProfilerClient.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { Address, ProfilerClient } from './ProfilerClient.js'; +import { Address, ProfilerClient } from './ProfilerClient'; export class HiProfilerClient { private _client: ProfilerClient; diff --git a/ide/tsconfig.json b/ide/tsconfig.json index 57e2db39f93c0524745586404c81c2c5b2b28aeb..d25b14fc5eef68aecbf86efec36757fb6bac093f 100644 --- a/ide/tsconfig.json +++ b/ide/tsconfig.json @@ -5,18 +5,18 @@ /* Basic Options */ // "incremental": true, /* Enable incremental compilation */ - "target": "ES2015", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */ - "module": "es2015", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */ + "target": "es6", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */ + "module": "ES2022", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */ // "lib": [], /* Specify library files to be included in the compilation. */ -// "allowJs": true, /* Allow javascript files to be compiled. */ + "allowJs": true, /* Allow javascript files to be compiled. */ // "checkJs": true, /* Report errors in .js files. */ // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ // "declaration": true, /* Generates corresponding '.d.ts' file. */ // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ // "sourceMap": true, /* Generates corresponding '.map' file. */ // "outFile": "./", /* Concatenate and emit output to single file. */ - "outDir": "./dist", /* Redirect output structure to the directory. */ - "rootDir": "./src", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ +// "outDir": "./dist", /* Redirect output structure to the directory. */ +// "rootDir": "./src", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ // "composite": true, /* Enable project compilation */ // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ // "removeComments": true, /* Do not emit comments to output. */ @@ -27,13 +27,13 @@ /* Strict Type-Checking Options */ "strict": true, /* Enable all strict type-checking options. */ - // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ +// "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ // "strictNullChecks": true, /* Enable strict null checks. */ // "strictFunctionTypes": true, /* Enable strict checking of function types. */ // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ - // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ +// "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ /* Additional Checks */ // "noUnusedLocals": true, /* Report errors on unused locals. */ @@ -48,8 +48,8 @@ // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ // "typeRoots": [], /* List of folders to include type definitions from. */ // "types": [], /* Type declaration files to be included in compilation. */ - // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ - "esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ + "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ +// "esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ @@ -67,5 +67,5 @@ "skipLibCheck": true, /* Skip type checking of declaration files. */ "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ }, - "include": ["src"] + "files": ["src/index.ts"], } diff --git a/ide/webpack.config.js b/ide/webpack.config.js new file mode 100644 index 0000000000000000000000000000000000000000..7820f79fa314aa4e8b839c2347cc974445ce82e9 --- /dev/null +++ b/ide/webpack.config.js @@ -0,0 +1,204 @@ +// Generated using webpack-cli https://github.com/webpack/webpack-cli + +const path = require('path'); +const { CleanWebpackPlugin } = require('clean-webpack-plugin'); +const HtmlWebpackPlugin = require('html-webpack-plugin'); +const MiniCssExtractPlugin = require('mini-css-extract-plugin'); +const isProduction = process.env.NODE_ENV === 'production'; +const CopyWebpackPlugin = require('copy-webpack-plugin'); +const os = require('os'); +const childProcess = require('child_process'); +const { exec } = require('child_process'); +const fs = require('fs'); + + +function directoryExists(path) { + try { + fs.accessSync(path); + return true; + } catch (error) { + return false; + } +} + +function runCommand(command) { + return new Promise((resolve, reject) => { + exec(command, (error, stdout, stderr) => { + if (error) { + reject(error); + } else { + resolve(stdout); + } + }); + }); +} + +const stylesHandler = isProduction ? MiniCssExtractPlugin.loader : 'style-loader'; +//compile server +((flag) => { + if (!flag) { + return; + } + console.log('start compile server'); + let outPath = path.normalize(path.join(__dirname, '/', 'dist')); + let serverSrc = path.normalize(path.join(__dirname, '/server/main.go')); + if (!directoryExists(outPath)){ + runCommand(`mkdir ${outPath}`); + } else { + runCommand(`rm -rf ${outPath}/* `).then((result)=>{ + + }); + } + let rs; + if (os.type() === 'Windows_NT') { + rs = childProcess.spawnSync('go', ['build', '-o', outPath, serverSrc], { + encoding: 'utf-8', + }); + } else { + rs = childProcess.spawnSync('go', ['build', '-o', outPath + '/main', serverSrc], { + encoding: 'utf-8', + }); + } + if (rs.status === 0) { + console.log('compile server success'); + } else { + console.error('compile server failed', rs); + } +})(true); +const config = { + entry: './src/index.ts', + output: { + path: path.resolve(__dirname, 'dist'), + filename: '[name].[chunkhash].bundle.js', + clean: false, + }, + devServer: { + open: true, + host: 'localhost', + }, + plugins: [ + new HtmlWebpackPlugin({ + template: 'index.html', + }), + new CleanWebpackPlugin({ + verbose: true, + cleanOnceBeforeBuildPatterns: ['!main'], + }), + new CopyWebpackPlugin({ + patterns: [ + { + from: './src/figures', + to: 'figures', + }, + { + from: './src/img', + to: 'img', + }, + { + from: './src/doc', + to: 'doc', + }, + { + from: './src/base-ui/icon.svg', + to: 'base-ui/icon.svg', + }, + { + from: './bin/trace_converter_builtin.js', + to: 'trace_converter_builtin.js', + }, + { + from: './bin/trace_converter_builtin.wasm', + to: 'trace_converter_builtin.wasm', + }, + { + from: './bin/trace_streamer_builtin.js', + to: 'trace_streamer_builtin.js', + }, + { + from: './bin/trace_streamer_builtin.wasm', + to: 'trace_streamer_builtin.wasm', + }, + { + from: './bin/trace_streamer_dubai_builtin.js', + to: 'trace_streamer_dubai_builtin.js', + }, + { + from: './bin/trace_streamer_dubai_builtin.wasm', + to: 'trace_streamer_dubai_builtin.wasm', + }, + { + from: './bin/trace_streamer_sdk_builtin.js', + to: 'trace_streamer_sdk_builtin.js', + }, + { + from: './bin/trace_streamer_sdk_builtin.wasm', + to: 'trace_streamer_sdk_builtin.wasm', + }, + { + from: './third-party/sql-wasm.js', + to: 'sql-wasm.js', + }, + { + from: './third-party/sql-wasm.wasm', + to: 'sql-wasm.wasm', + }, + { + from: './server/version.txt', + to: 'version.txt', + }, + { + from: './server/wasm.json', + to: 'wasm.json', + }, + ], + }), + // Add your plugins here + // Learn more about plugins from https://webpack.js.org/configuration/plugins/ + ], + module: { + rules: [ + { + test: /\.(ts|tsx)$/i, + loader: 'ts-loader', + exclude: ['/node_modules/'], + }, + { + test: /\.css$/i, + use: [stylesHandler, 'css-loader', 'postcss-loader'], + }, + { + test: /\.(eot|svg|ttf|woff|woff2|png|jpg|gif)$/i, + type: 'asset', + }, + + // Add your rules for custom modules here + // Learn more about loaders from https://webpack.js.org/loaders/ + ], + }, + resolve: { + extensions: ['.tsx', '.ts', '.jsx', '.js', '...'], + fallback: { + fs: false, + tls: false, + net: false, + zlib: false, + http: false, + https: false, + stream: false, + crypto: false, + child_process: false, + path: false, //if you want to use this module also don't forget npm i crypto-browserify + }, + }, +}; + +module.exports = () => { + if (isProduction) { + config.mode = 'production'; + + config.plugins.push(new MiniCssExtractPlugin()); + } else { + config.mode = 'development'; + } + return config; +}; diff --git a/trace_streamer/.gn b/trace_streamer/.gn index 5d10241c5c8409be25d789065605bf85a19f8424..74c472e0b66e8d6288324e2e6cbc1e186ed89d8d 100644 --- a/trace_streamer/.gn +++ b/trace_streamer/.gn @@ -11,4 +11,5 @@ # See the License for the specific language governing permissions and # limitations under the License. -buildconfig = "//gn/CONFIG.gn" \ No newline at end of file +buildconfig = "//gn/CONFIG.gn" +script_executable = "/usr/bin/env" \ No newline at end of file diff --git a/trace_streamer/build/ohos.gni b/trace_streamer/build/ohos.gni index 867dcbd2d48fbf2b5170bc843391ac8e8e85263d..8b30ab63320ab5c772054b4a5b6d29ae8588b54a 100644 --- a/trace_streamer/build/ohos.gni +++ b/trace_streamer/build/ohos.gni @@ -136,5 +136,11 @@ template("ohos_executable") { if (defined(invoker.ohos_test)) { ohos_test = invoker.ohos_test } + if (defined(invoker.output_extension)) { + output_extension = invoker.output_extension + } + if (is_mingw) { + output_extension = "exe" + } } } diff --git a/trace_streamer/prebuilts/patch_hiperf/hiviewdfx_BUILD.gn b/trace_streamer/prebuilts/patch_hiperf/hiviewdfx_BUILD.gn index 089dcf09eb8ca73b65239eb82d113b4a24a03a47..04ea0f2cf180e6ad5883a5985f8bac686eeb27b8 100644 --- a/trace_streamer/prebuilts/patch_hiperf/hiviewdfx_BUILD.gn +++ b/trace_streamer/prebuilts/patch_hiperf/hiviewdfx_BUILD.gn @@ -61,7 +61,7 @@ ohos_source_set("hiviewdfx_source") { "${THIRD_PARTY}/perf_include/hiviewdfx/faultloggerd/interfaces/innerkits/unwinder/dfx_symbols.cpp", ] if (is_debug) { - sources += [ "${THIRD_PARTY}/perf_include/hiviewdfx/faultloggerd/interfaces/innerkits/unwinder/dfx_accessor.cpp" ] + sources += [ "${THIRD_PARTY}/perf_include/hiviewdfx/faultloggerd/interfaces/innerkits/unwinder/dfx_accessors.cpp" ] } } diff --git a/trace_streamer/prebuilts/patch_protobuf/protobufbuild.gn b/trace_streamer/prebuilts/patch_protobuf/protobufbuild.gn index 803128c4b302137d37359d6ff6cac997d334ed70..9975dbbc8a568ee957b9b8d6cfda84cc3de12bd1 100644 --- a/trace_streamer/prebuilts/patch_protobuf/protobufbuild.gn +++ b/trace_streamer/prebuilts/patch_protobuf/protobufbuild.gn @@ -320,5 +320,8 @@ if (use_wasm) { "-Wno-sign-compare", "-D HAVE_PTHREAD", ] + if (is_mingw) { + output_extension = "exe" + } } } diff --git a/trace_streamer/src/base/ts_common.h b/trace_streamer/src/base/ts_common.h index a1170c994713f00c0bf0ef52f1d3bc38d37f0947..75d609b36848990ca1de69bd7b934bbf3f791d61 100644 --- a/trace_streamer/src/base/ts_common.h +++ b/trace_streamer/src/base/ts_common.h @@ -21,6 +21,8 @@ #include #include using ClockId = uint32_t; +constexpr size_t G_CHUNK_SIZE = 1024 * 1024; +constexpr size_t FLUSH_CHUNK_THRESHOLD = G_CHUNK_SIZE - 10000; const std::string INVALID_STRING = "INVALID_STRING"; const uint64_t INVALID_ITID = std::numeric_limits::max(); const uint64_t INVALID_IPID = std::numeric_limits::max(); @@ -40,6 +42,7 @@ const uint64_t SEC_TO_NS = 1000 * 1000 * 1000; const int32_t STR_DEFAULT_LEN = -1; const auto INVALID_CPU = INVALID_UINT32; const auto INVALID_TIME = INVALID_UINT64; +const std::string HEX_PREFIX = "0x"; const std::string MEM_QUERY = "select max(value) as maxNum, min(value) as minNum, avg(value) as avgNum, filter.name as name, p.name as " "processName from process_measure left join process_measure_filter as filter on filter.id= filter_id left join " @@ -200,6 +203,7 @@ enum DataSourceType { DATA_SOURCE_TYPE_JSMEMORY_CONFIG, DATA_SOURCE_TYPE_MEM_CONFIG }; +enum HookMemoryType { MALLOC = 0, MMAP = 1, FILE_PAGE_MSG = 2, MEMORY_USING_MSG = 3 }; using DataIndex = uint64_t; using TableRowId = int32_t; using InternalPid = uint32_t; diff --git a/trace_streamer/src/filter/native_hook_filter.cpp b/trace_streamer/src/filter/native_hook_filter.cpp index 4afd5532fff8abdea6ed64a070e0b5eb562adac6..c48e799cc9bb8a9d9fdb9be60696c5e2121aed48 100644 --- a/trace_streamer/src/filter/native_hook_filter.cpp +++ b/trace_streamer/src/filter/native_hook_filter.cpp @@ -590,7 +590,7 @@ inline void NativeHookFilter::FillOfflineSymbolizationFrames( auto curCacheIpid = mapItor->second->back(); stackIdToCallChainIdMap_.insert(std::make_pair(mapItor->first, ++callChainId_)); auto framesInfo = OfflineSymbolization(mapItor->second); - uint64_t depth = 0; + uint16_t depth = 0; uint64_t filePathIndex = INVALID_UINT64; if (isSingleProcData_) { curCacheIpid = SINGLE_PROC_IPID; @@ -602,8 +602,8 @@ inline void NativeHookFilter::FillOfflineSymbolizationFrames( std::string vaddr = base::Uint64ToHexText(frameInfo->symVaddr_); auto row = traceDataCache_->GetNativeHookFrameData()->AppendNewNativeHookFrame( - callChainId_, depth, frameInfo->ip_, INVALID_UINT64, frameInfo->symbolIndex_, filePathIndex, - frameInfo->offset_, frameInfo->symbolOffset_, vaddr); + callChainId_, depth++, frameInfo->ip_, frameInfo->symbolIndex_, filePathIndex, frameInfo->offset_, + frameInfo->symbolOffset_, vaddr); UpdateFilePathIndexToCallStackRowMap(row, filePathIndex); } } @@ -853,7 +853,7 @@ void NativeHookFilter::ParseFramesInCallStackCompressedMode() for (auto stackIdToFramesItor = stackIdToFramesMap_.begin(); stackIdToFramesItor != stackIdToFramesMap_.end(); stackIdToFramesItor++) { auto frameIds = stackIdToFramesItor->second; - uint64_t depth = 0; + uint16_t depth = 0; auto curCacheIpid = frameIds->back(); if (isSingleProcData_) { curCacheIpid = SINGLE_PROC_IPID; @@ -880,8 +880,8 @@ void NativeHookFilter::ParseFramesInCallStackCompressedMode() continue; } auto row = traceDataCache_->GetNativeHookFrameData()->AppendNewNativeHookFrame( - stackIdToFramesItor->first, depth++, reader.ip(), reader.sp(), symbolIndex, filePathIndex, - reader.offset(), reader.symbol_offset()); + stackIdToFramesItor->first, depth++, reader.ip(), symbolIndex, filePathIndex, reader.offset(), + reader.symbol_offset()); UpdateFilePathIndexToCallStackRowMap(row, filePathIndex); } } @@ -895,7 +895,7 @@ void NativeHookFilter::ParseFramesWithOutCallStackCompressedMode() continue; } auto& framesHash = stackHashValueToFramesHashMap_.at(itor->second); - uint64_t depth = 0; + uint16_t depth = 0; for (auto frameHashValueVectorItor = framesHash.crbegin(); frameHashValueVectorItor != framesHash.crend(); frameHashValueVectorItor++) { if (!frameHashToFrameInfoMap_.count(*frameHashValueVectorItor)) { @@ -904,8 +904,8 @@ void NativeHookFilter::ParseFramesWithOutCallStackCompressedMode() } auto& frameInfo = frameHashToFrameInfoMap_.at(*frameHashValueVectorItor); auto row = traceDataCache_->GetNativeHookFrameData()->AppendNewNativeHookFrame( - callChainId, depth++, frameInfo->ip_, frameInfo->sp_, frameInfo->symbolIndex_, - frameInfo->filePathIndex_, frameInfo->offset_, frameInfo->symbolOffset_); + callChainId, depth++, frameInfo->ip_, frameInfo->symbolIndex_, frameInfo->filePathIndex_, + frameInfo->offset_, frameInfo->symbolOffset_); UpdateFilePathIndexToCallStackRowMap(row, frameInfo->filePathIndex_); } } diff --git a/trace_streamer/src/main.cpp b/trace_streamer/src/main.cpp index 2f4b478eba53270d448732166c77909e9e0c5b91..147cc43b55d9f928eb1d70c23705c43b54241f62 100644 --- a/trace_streamer/src/main.cpp +++ b/trace_streamer/src/main.cpp @@ -46,7 +46,6 @@ namespace SysTuning { namespace TraceStreamer { using namespace SysTuning::TraceStreamer; using namespace SysTuning::base; -constexpr size_t G_CHUNK_SIZE = 1024 * 1024; constexpr int G_MIN_PARAM_NUM = 2; constexpr size_t G_FILE_PERMISSION = 664; constexpr uint8_t RAW_TRACE_PARSE_MAX = 2; @@ -72,18 +71,19 @@ void ShowHelpInfo(const char* argv) printf( "trace analyze tool, it can transfer a bytrace/htrace file into a " "SQLite database and save result to a local file trace_streamer.log.\n" - "Usage: %s FILE -e sqlite_out.pb\n" + "Usage: %s FILE -e sqlite_out.db\n" " or %s FILE -c\n" "Options:\n" " -e transfer a trace file into a SQLiteBased DB. with -nm to except meta table\n" " -c command line mode.\n" - " -d dump perf readable text.\n" + " -d dump perf/hook/ebpf readable text.Default dump file path is src path name + `_ReadableText.txt`\n" " -h start HTTP server.\n" " -l , --level=\n" " Show specific level/levels logs with format: level1,level2,level3\n" " Long level string coule be: DEBUG/INFO/WARN/ERROR/FATAL/OFF.\n" " Short level string coule be: D/I/W/E/F/O.\n" " Default level is OFF.\n" + " -o set dump file path.\n" " -s separate arkts-plugin data, and save it in current dir with default filename.\n" " -p Specify the port of HTTP server, default is 9001.\n" " -q select sql from file.\n" @@ -136,14 +136,14 @@ bool ReadAndParser(SysTuning::TraceStreamer::TraceStreamerSelector& ta, int fd) if (!ta.ParseTraceDataSegment(std::move(buf), static_cast(rsize), false, isFinish)) { return false; }; - TS_LOGI("\rLoadingFile:\t%.2f MB\r", static_cast(g_loadSize) / 1E6); + printf("\rLoadingFile:\t%.2f MB\r", static_cast(g_loadSize) / 1E6); } ta.WaitForParserEnd(); auto endTime = (std::chrono::duration_cast(std::chrono::system_clock::now().time_since_epoch())) .count(); - TS_LOGI("\nParserDuration:\t%u ms", static_cast(endTime - startTime)); - TS_LOGI("ParserSpeed:\t%.2f MB/s", (g_loadSize / (endTime - startTime) / 1E3)); + (void)fprintf(stdout, "\nParserDuration:\t%u ms\n", static_cast(endTime - startTime)); + (void)fprintf(stdout, "ParserSpeed:\t%.2f MB/s\n", (g_loadSize / (endTime - startTime) / 1E3)); return true; } bool SetFileSize(const std::string& traceFilePath) @@ -204,27 +204,27 @@ int ExportDatabase(TraceStreamerSelector& ts, const std::string& sqliteFilePath) metaData->SetParserToolVersion(g_traceStreamerVersion); metaData->SetParserToolPublishDateTime(g_traceStreamerPublishVersion); metaData->SetTraceDataSize(g_loadSize); - TS_LOGI("ExportDatabase begin...\n"); if (ts.ExportDatabase(sqliteFilePath)) { fprintf(stdout, "ExportDatabase failed\n"); ExportStatusToLog(sqliteFilePath, TRACE_PARSER_ABNORMAL); return 1; } - TS_LOGI("ExportDatabase end\n"); } auto endTime = (std::chrono::duration_cast(std::chrono::system_clock::now().time_since_epoch())) .count(); endTime += 1; // for any exception of endTime == startTime - TS_LOGI("ExportDuration:\t%u ms\n", static_cast(endTime - startTime)); - TS_LOGI("ExportSpeed:\t%.2f MB/s\n", (g_loadSize / (endTime - startTime)) / 1E3); + fprintf(stdout, "ExportDuration:\t%u ms\n", static_cast(endTime - startTime)); + fprintf(stdout, "ExportSpeed:\t%.2f MB/s\n", (g_loadSize / (endTime - startTime)) / 1E3); return 0; } +enum DumpFileType { UNKONW_TYPE = 0, PERF_TYPE, NATIVE_HOOK_TYPE, EBPF_TYPE }; struct TraceExportOption { std::string traceFilePath; std::string sqliteFilePath; - std::string perfReadableTextFilePath; + DumpFileType dumpFileType = DumpFileType::UNKONW_TYPE; + std::string outputFilePath; std::string metricsIndex; std::string sqlOperatorFilePath; bool interactiveState = false; @@ -235,12 +235,27 @@ struct HttpOption { bool enable = false; int port = 9001; }; +bool SetDumpFileType(char** argv, const std::string& dumpFileType, TraceExportOption& traceExportOption) +{ + if (dumpFileType == "perf") { + traceExportOption.dumpFileType = DumpFileType::PERF_TYPE; + } else if (dumpFileType == "hook") { + traceExportOption.dumpFileType = DumpFileType::NATIVE_HOOK_TYPE; + } else if (dumpFileType == "ebpf") { + traceExportOption.dumpFileType = DumpFileType::EBPF_TYPE; + } else { + ShowHelpInfo(argv[0]); + return false; + } + return true; +} int CheckFinal(char** argv, TraceExportOption& traceExportOption, HttpOption& httpOption) { if ((traceExportOption.traceFilePath.empty() || (!traceExportOption.interactiveState && traceExportOption.sqliteFilePath.empty())) && !httpOption.enable && !traceExportOption.separateFile && traceExportOption.metricsIndex.empty() && - traceExportOption.sqlOperatorFilePath.empty() && traceExportOption.perfReadableTextFilePath.empty()) { + traceExportOption.sqlOperatorFilePath.empty() && traceExportOption.outputFilePath.empty() && + traceExportOption.dumpFileType == DumpFileType::UNKONW_TYPE) { ShowHelpInfo(argv[0]); return 1; } @@ -268,12 +283,16 @@ int CheckArgs(int argc, char** argv, TraceExportOption& traceExportOption, HttpO continue; } else if (!strcmp(argv[i], "-d") || !strcmp(argv[i], "--dump")) { TS_CHECK_TRUE_RET(CheckArgc(argc, argv, ++i), 1); - traceExportOption.perfReadableTextFilePath = std::string(argv[i]); + TS_CHECK_TRUE_RET(SetDumpFileType(argv, std::string(argv[i]), traceExportOption), 1); continue; } else if (!strcmp(argv[i], "-q") || !strcmp(argv[i], "--query-file")) { TS_CHECK_TRUE_RET(CheckArgc(argc, argv, ++i), 1); traceExportOption.sqlOperatorFilePath = std::string(argv[i]); continue; + } else if (!strcmp(argv[i], "-o") || !strcmp(argv[i], "--out")) { + TS_CHECK_TRUE_RET(CheckArgc(argc, argv, ++i), 1); + traceExportOption.outputFilePath = std::string(argv[i]); + continue; } else if (!strcmp(argv[i], "-i") || !strcmp(argv[i], "--info")) { PrintInformation(); } else if (!strcmp(argv[i], "-l") || !strcmp(argv[i], "--level")) { @@ -306,6 +325,8 @@ int CheckArgs(int argc, char** argv, TraceExportOption& traceExportOption, HttpO continue; } traceExportOption.traceFilePath = std::string(argv[i]); + auto strVec = SplitStringToVec(traceExportOption.traceFilePath, "."); + traceExportOption.outputFilePath = strVec.front() + "_ReadableText.txt"; } return CheckFinal(argv, traceExportOption, httpOption); } @@ -344,8 +365,12 @@ int main(int argc, char** argv) } return 1; } - if (!tsOption.perfReadableTextFilePath.empty()) { - ts.ExportPerfReadableText(tsOption.perfReadableTextFilePath); + if (tsOption.dumpFileType == DumpFileType::PERF_TYPE) { + ts.ExportPerfReadableText(tsOption.outputFilePath); + } else if (tsOption.dumpFileType == DumpFileType::NATIVE_HOOK_TYPE) { + ts.ExportHookReadableText(tsOption.outputFilePath); + } else if (tsOption.dumpFileType == DumpFileType::EBPF_TYPE) { + ts.ExportEbpfReadableText(tsOption.outputFilePath); } if (tsOption.interactiveState) { MetaData* metaData = ts.GetMetaData(); diff --git a/trace_streamer/src/parser/common_types.h b/trace_streamer/src/parser/common_types.h index c874648cdcb9c2ea7d754a793ed39ba22a6af9fb..5470e7a9fd3ad1cc621cba9b5d2ac368e8fd1942 100644 --- a/trace_streamer/src/parser/common_types.h +++ b/trace_streamer/src/parser/common_types.h @@ -158,10 +158,7 @@ enum RawTraceContentType : uint8_t { CONTENT_TYPE_PRINTK_FORMATS = 31, CONTENT_TYPE_KALLSYMS = 32 }; -enum RawTraceFileType : uint8_t { - FILE_RAW_TRACE = 0, - HM_FILE_RAW_TRACE = 1 -}; +enum RawTraceFileType : uint8_t { FILE_RAW_TRACE = 0, HM_FILE_RAW_TRACE = 1 }; } // namespace TraceStreamer } // namespace SysTuning #endif // _BYTRACE_COMMON_TYPES_H_ diff --git a/trace_streamer/src/parser/rawtrace_parser/ftrace_event_processor.h b/trace_streamer/src/parser/rawtrace_parser/ftrace_event_processor.h index 4b6bfd3c98b330c93c4cbd97b1906768c8343c1b..d612346f4a3c1d167f101ff6be42986992b61c11 100644 --- a/trace_streamer/src/parser/rawtrace_parser/ftrace_event_processor.h +++ b/trace_streamer/src/parser/rawtrace_parser/ftrace_event_processor.h @@ -21,10 +21,9 @@ #include "trace_plugin_result.pb.h" #include "trace_streamer_config.h" -#define HM_EVENT_ID_OFFSET 32768 - namespace SysTuning { namespace TraceStreamer { +constexpr uint32_t HM_EVENT_ID_OFFSET = 32768; using namespace TraceCfg; class FtraceEventProcessor { public: diff --git a/trace_streamer/src/parser/rawtrace_parser/ftrace_processor.cpp b/trace_streamer/src/parser/rawtrace_parser/ftrace_processor.cpp index fd147ba5a0401b13d58b4f84958d498691d7e43f..3ad652d686324dab2dde49a85896de17c56fc3fe 100644 --- a/trace_streamer/src/parser/rawtrace_parser/ftrace_processor.cpp +++ b/trace_streamer/src/parser/rawtrace_parser/ftrace_processor.cpp @@ -152,10 +152,10 @@ bool FtraceProcessor::HandleEventFormat(const std::string& formatInfo, EventForm auto lastFiledIndex = format.fields.size() - 1; format.eventSize = format.fields[lastFiledIndex].offset + format.fields[lastFiledIndex].size; if (format.eventId >= HM_EVENT_ID_OFFSET) { - for (auto &fmt: format.commonFields) { + for (auto& fmt : format.commonFields) { fmt.offset += offsetof(struct HmTraceHeader, commonType); } - for (auto &fmt: format.fields) { + for (auto& fmt : format.fields) { fmt.offset += offsetof(struct HmTraceHeader, commonType); } format.eventSize += offsetof(struct HmTraceHeader, commonType); @@ -645,13 +645,12 @@ static inline int RmqEntryTotalSize(unsigned int size) return sizeof(struct RmqEntry) + ((size + RMQ_ENTRY_ALIGN_MASK) & (~RMQ_ENTRY_ALIGN_MASK)); } -bool FtraceProcessor::HmParsePageData(FtraceCpuDetailMsg& cpuMsg, - CpuDetailParser& cpuDetailParser, uint8_t* &data) +bool FtraceProcessor::HmParsePageData(FtraceCpuDetailMsg& cpuMsg, CpuDetailParser& cpuDetailParser, uint8_t*& data) { - struct RmqConsumerData *rmqData = (struct RmqConsumerData *)data; + struct RmqConsumerData* rmqData = reinterpret_cast(data); uint64_t timeStampBase = rmqData->timeStamp; - struct RmqEntry *event; - struct HmTraceHeader *header; + struct RmqEntry* event; + struct HmTraceHeader* header; unsigned int evtSize; unsigned int eventId; EventFormat format = {}; @@ -663,13 +662,13 @@ bool FtraceProcessor::HmParsePageData(FtraceCpuDetailMsg& cpuMsg, auto curPtr = rmqData->data; auto endPtr = rmqData->data + rmqData->length; while (curPtr < endPtr) { - event = (struct RmqEntry *)curPtr; + event = (struct RmqEntry*)curPtr; evtSize = event->size; if (evtSize == 0U) { break; } - header = (struct HmTraceHeader *)event->data; + header = reinterpret_cast(event->data); eventId = header->commonType; if (!GetEventFormatById(eventId, format)) { curPtr += RmqEntryTotalSize(evtSize); @@ -681,7 +680,7 @@ bool FtraceProcessor::HmParsePageData(FtraceCpuDetailMsg& cpuMsg, ftraceEvent->set_timestamp(event->timeStampOffset + timeStampBase); ftraceEvent->set_tgid(header->tgid); ftraceEvent->set_comm(header->tcbName); - HandleFtraceEvent(*ftraceEvent, (uint8_t *)header, evtSize, format); + HandleFtraceEvent(*ftraceEvent, reinterpret_cast(header), evtSize, format); std::unique_ptr eventInfo = std::make_unique(); eventInfo->cpuId = cpuMsg.cpu(); eventInfo->eventId = eventId; @@ -689,9 +688,10 @@ bool FtraceProcessor::HmParsePageData(FtraceCpuDetailMsg& cpuMsg, cpuDetailParser.EventAppend(std::move(eventInfo)); num++; } else { - TS_LOGD("mark.debug. evtId = %u evtSize = %u format.eventId = %u format.evtSize = %u" - "format.eventName = %s format.eventType = %s", eventId, evtSize, format.eventId, format.eventSize, - format.eventName.c_str(), format.eventType.c_str()); + TS_LOGD( + "mark.debug. evtId = %u evtSize = %u format.eventId = %u format.evtSize = %u" + "format.eventName = %s format.eventType = %s", + eventId, evtSize, format.eventId, format.eventSize, format.eventName.c_str(), format.eventType.c_str()); } curPtr += RmqEntryTotalSize(evtSize); } diff --git a/trace_streamer/src/parser/rawtrace_parser/ftrace_processor.h b/trace_streamer/src/parser/rawtrace_parser/ftrace_processor.h index 011ccdc304bb7230051891f10ff657c5d4cdecfe..cd10e4cef7d8c8ffd80c409c77b2ba3fc0ff4d14 100644 --- a/trace_streamer/src/parser/rawtrace_parser/ftrace_processor.h +++ b/trace_streamer/src/parser/rawtrace_parser/ftrace_processor.h @@ -39,8 +39,7 @@ public: CpuDetailParser& cpuDetailParser, uint8_t page[], size_t size = FTRACE_PAGE_SIZE); - bool HmParsePageData(FtraceCpuDetailMsg& cpuDetailMsg, - CpuDetailParser& cpuDetailParser, uint8_t* &data); + bool HmParsePageData(FtraceCpuDetailMsg& cpuDetailMsg, CpuDetailParser& cpuDetailParser, uint8_t*& data); bool HandleTgids(const std::string& tgids); bool HandleCmdlines(const std::string& cmdlines); diff --git a/trace_streamer/src/parser/rawtrace_parser/rawtrace_parser.cpp b/trace_streamer/src/parser/rawtrace_parser/rawtrace_parser.cpp index 3430100b332482ce33f31df7361640f45d99908b..beb23ccd41d23d27415d43457f7807668cd45826 100644 --- a/trace_streamer/src/parser/rawtrace_parser/rawtrace_parser.cpp +++ b/trace_streamer/src/parser/rawtrace_parser/rawtrace_parser.cpp @@ -100,8 +100,8 @@ bool RawTraceParser::HmParseCpuRawData(const std::string& buffer) auto endPtr = startPtr + buffer.size(); for (uint8_t* data = const_cast(startPtr); data < endPtr;) { - TS_CHECK_TRUE(ftraceProcessor_->HmParsePageData(*cpuDetail_.get(), *cpuDetailParser_.get(), data), - false, "hm parse page failed!"); + TS_CHECK_TRUE(ftraceProcessor_->HmParsePageData(*cpuDetail_.get(), *cpuDetailParser_.get(), data), false, + "hm parse page failed!"); cpuDetailParser_->FilterAllEvents(*cpuDetail_.get()); } TS_LOGD("mark.debug. HmParseCpuRawData end success"); diff --git a/trace_streamer/src/table/native_hook/native_hook_frame_table.cpp b/trace_streamer/src/table/native_hook/native_hook_frame_table.cpp index f84c7cb5262505625f2df52c70273fad26977c41..51edd5438ee03b732ed6e5f4c781492bfba873e6 100644 --- a/trace_streamer/src/table/native_hook/native_hook_frame_table.cpp +++ b/trace_streamer/src/table/native_hook/native_hook_frame_table.cpp @@ -176,7 +176,7 @@ int32_t NativeHookFrameTable::Cursor::Column(int32_t column) const } break; case Index::DEPTH: - sqlite3_result_int64(context_, static_cast(nativeHookFrameInfoObj_.Depths()[CurrentRow()])); + sqlite3_result_int(context_, static_cast(nativeHookFrameInfoObj_.Depths()[CurrentRow()])); break; case Index::IP: if (nativeHookFrameInfoObj_.Ips()[CurrentRow()] != INVALID_UINT64) { diff --git a/trace_streamer/src/trace_data/BUILD.gn b/trace_streamer/src/trace_data/BUILD.gn index 04012932ca504893df1e1bb629f5bc231fe907ee..159d66608771d97148ec30c5ee52812f0bfc7155 100644 --- a/trace_streamer/src/trace_data/BUILD.gn +++ b/trace_streamer/src/trace_data/BUILD.gn @@ -67,5 +67,6 @@ ohos_source_set("trace_data") { "${THIRD_PARTY}/protobuf/src", "${THIRD_PARTY}/bounds_checking_function/include", "${THIRD_PARTY}/json/single_include/nlohmann", + "${THIRD_PARTY}/perf_include/hiviewdfx/faultloggerd/interfaces/nonlinux", ] } diff --git a/trace_streamer/src/trace_data/trace_data_cache.cpp b/trace_streamer/src/trace_data/trace_data_cache.cpp index 5637f671be133fb348c845f8deb983b95df5e1c0..8735619620e4deedcad8b1eda2229e76df7e059f 100644 --- a/trace_streamer/src/trace_data/trace_data_cache.cpp +++ b/trace_streamer/src/trace_data/trace_data_cache.cpp @@ -83,6 +83,7 @@ #include "native_hook_statistic_table.h" #include "network_table.h" #include "paged_memory_sample_table.h" +#include "parser/ebpf_parser/ebpf_stdtype.h" #include "perf_call_chain_table.h" #include "perf_files_table.h" #include "perf_report_table.h" @@ -116,6 +117,7 @@ namespace SysTuning { namespace TraceStreamer { constexpr uint8_t CPU_ID_FORMAT_WIDTH = 3; +constexpr uint8_t TIME_PRECISION_SIX = 6; TraceDataCache::TraceDataCache() { InitDB(); @@ -283,29 +285,27 @@ void TraceDataCache::ClearHookCommProtos() int32_t TraceDataCache::ExportPerfReadableText(const std::string& outputName, TraceDataDB::ResultCallBack resultCallBack) { -#if !IS_WASM - int32_t fd(base::OpenFile(outputName, O_CREAT | O_RDWR, TS_PERMISSION_RW)); - TS_CHECK_TRUE(fd != -1, 1, "Failed to create file: %s, err:%s", outputName.c_str(), strerror(errno)); - std::unique_ptr> fp(&fd, [](int32_t* fp) { close(*fp); }); - TS_CHECK_TRUE(ftruncate(fd, 0) != -1, 1, "Failed to ftruncate file: %s, err:%s", outputName.c_str(), + int32_t perfFd = base::OpenFile(outputName, O_CREAT | O_RDWR, TS_PERMISSION_RW); + TS_CHECK_TRUE(perfFd != -1, 1, "Failed to create file: %s, err:%s", outputName.c_str(), strerror(errno)); + std::unique_ptr> fp(&perfFd, [](int32_t* fp) { close(*fp); }); + TS_CHECK_TRUE(ftruncate(perfFd, 0) != -1, 1, "Failed to ftruncate file: %s, err:%s", outputName.c_str(), strerror(errno)); -#endif - TS_LOGI("ExportPerfReadableText begin...\n"); - uint8_t curTimePrecision = 6; - std::string buffLine; - for (uint64_t row = 0; row < perfSample_.Size(); ++row) { - std::string procName; + TS_LOGI("ExportPerfReadableText begin..."); + std::string perfBufferLine; + perfBufferLine.reserve(G_CHUNK_SIZE); + for (uint64_t row = 0; row < perfSample_.Size();) { + std::string perfTaskName; std::string cpuIdStr = std::to_string(perfSample_.CpuIds()[row]); std::string eventTypeName; - auto threadId = perfSample_.Tids()[row]; - if (threadId == 0) { + auto perfTaskId = perfSample_.Tids()[row]; + if (perfTaskId == 0) { auto threadDataRow = 0; - procName = GetDataFromDict(GetConstThreadData(threadDataRow).nameIndex_); + perfTaskName = GetDataFromDict(GetConstThreadData(threadDataRow).nameIndex_); } else { - auto perfThreadTidItor = std::find(perfThread_.Tids().begin(), perfThread_.Tids().end(), threadId); + auto perfThreadTidItor = std::find(perfThread_.Tids().begin(), perfThread_.Tids().end(), perfTaskId); if (perfThreadTidItor != perfThread_.Tids().end()) { auto perfThreadRow = std::distance(perfThread_.Tids().begin(), perfThreadTidItor); - procName = GetDataFromDict(perfThread_.ThreadNames()[perfThreadRow]); + perfTaskName = GetDataFromDict(perfThread_.ThreadNames()[perfThreadRow]); } } auto perfReportIdItor = @@ -314,23 +314,29 @@ int32_t TraceDataCache::ExportPerfReadableText(const std::string& outputName, auto perfReportRow = std::distance(perfReport_.IdsData().begin(), perfReportIdItor); eventTypeName = GetDataFromDict(perfReport_.Values()[perfReportRow]); } - buffLine += procName; - buffLine += (" " + std::to_string(threadId)); - buffLine += (" [" + std::string(CPU_ID_FORMAT_WIDTH - cpuIdStr.size(), '0') + cpuIdStr + "]"); - buffLine += (" " + base::ConvertTimestampToSecStr(perfSample_.TimeStampData()[row], curTimePrecision) + ":"); - buffLine += (" " + std::to_string(perfSample_.EventCounts()[row])); - buffLine += (" " + eventTypeName + " \r\n"); - ExportPerfCallChaninText(perfSample_.SampleIds()[row], buffLine); -#if !IS_WASM - TS_CHECK_TRUE(write(fd, buffLine.data(), buffLine.size()) != -1, 1, "Failed to write file: %s, err:%s", - outputName.c_str(), strerror(errno)); -#endif - buffLine.clear(); + perfBufferLine.append(perfTaskName); + perfBufferLine.append(" ").append(std::to_string(perfTaskId)); + perfBufferLine.append(" [") + .append(std::string(CPU_ID_FORMAT_WIDTH - cpuIdStr.size(), '0')) + .append(cpuIdStr) + .append("]"); + perfBufferLine.append(" ") + .append(base::ConvertTimestampToSecStr(perfSample_.TimeStampData()[row], TIME_PRECISION_SIX)) + .append(":"); + perfBufferLine.append(" ").append(std::to_string(perfSample_.EventCounts()[row])); + perfBufferLine.append(" ").append(eventTypeName).append(" \r\n"); + ExportPerfCallChaninText(perfSample_.SampleIds()[row], perfBufferLine); + if (++row != perfSample_.Size() && perfBufferLine.size() < FLUSH_CHUNK_THRESHOLD) { + continue; + } + TS_CHECK_TRUE(write(perfFd, perfBufferLine.data(), perfBufferLine.size()) != -1, 1, + "Failed to write file: %s, err:%s", outputName.c_str(), strerror(errno)); + perfBufferLine.clear(); } - TS_LOGI("ExportPerfReadableText end...\n"); + TS_LOGI("ExportPerfReadableText end..."); return 0; } -void TraceDataCache::ExportPerfCallChaninText(uint32_t callChainId, std::string& buffLine) +void TraceDataCache::ExportPerfCallChaninText(uint32_t callChainId, std::string& bufferLine) { std::stack callChainStackRows; auto perfCallChainItor = @@ -352,11 +358,247 @@ void TraceDataCache::ExportPerfCallChaninText(uint32_t callChainId, std::string& auto perfFileRow = std::distance(perfFiles_.FileIds().begin(), perfFileIdItor); filePath = GetDataFromDict(perfFiles_.FilePaths()[perfFileRow]); } - buffLine += ("\t" + formatIp); - buffLine += (" [" + perfCallChain_.Names()[perfCallChainRow] + "]"); - buffLine += (" (" + filePath + ")\r\n"); + bufferLine.append("\t").append(formatIp); + bufferLine.append(" [").append(perfCallChain_.Names()[perfCallChainRow]).append("]"); + bufferLine.append(" (").append(filePath).append(")\r\n"); + } + bufferLine.append("\r\n"); +} +int32_t TraceDataCache::ExportHookReadableText(const std::string& outputName, + TraceDataDB::ResultCallBack resultCallBack) +{ + int32_t hookFd = base::OpenFile(outputName, O_CREAT | O_RDWR, TS_PERMISSION_RW); + TS_CHECK_TRUE(hookFd != -1, 1, "Failed to create file: %s, err:%s", outputName.c_str(), strerror(errno)); + std::unique_ptr> fp(&hookFd, [](int32_t* fp) { close(*fp); }); + TS_CHECK_TRUE(ftruncate(hookFd, 0) != -1, 1, "Failed to ftruncate file: %s, err:%s", outputName.c_str(), + strerror(errno)); + TS_LOGI("ExportHookReadableText begin..."); + std::string hookBufferLine; + hookBufferLine.reserve(G_CHUNK_SIZE); + ExportHookDataReadableText(hookFd, hookBufferLine); + ExportHookStatisticReadableText(hookFd, hookBufferLine); + TS_LOGI("ExportHookReadableText end..."); + return 0; +} +bool TraceDataCache::ExportHookDataReadableText(int32_t fd, std::string& bufferLine) +{ + for (uint64_t row = 0; row < nativeHookData_.Size();) { + auto itid = nativeHookData_.InternalTidsData()[row]; + auto hookTaskId = internalThreadsData_[itid].tid_; + auto hookTaskName = GetDataFromDict(internalThreadsData_[itid].nameIndex_); + bufferLine.append(hookTaskName); + bufferLine.append(" ").append(std::to_string(hookTaskId)); + bufferLine.append(" ").append("[---]"); // default HookData event cpu id + bufferLine.append(" ") + .append(base::ConvertTimestampToSecStr(nativeHookData_.TimeStampData()[row], TIME_PRECISION_SIX)) + .append(":"); + bufferLine.append(" ").append("1"); // default HookData event event cnt + bufferLine.append(" ").append(nativeHookData_.EventTypes()[row]).append(" \r\n"); + ExportHookCallChaninText(nativeHookData_.CallChainIds()[row], bufferLine); + if (++row != nativeHookData_.Size() && bufferLine.size() < FLUSH_CHUNK_THRESHOLD) { + continue; + } + TS_CHECK_TRUE(write(fd, bufferLine.data(), bufferLine.size()) != -1, false, + "Failed to write HookData file, err:%s", strerror(errno)); + bufferLine.clear(); + } + return true; +} +bool TraceDataCache::ExportHookStatisticReadableText(int32_t fd, std::string& bufferLine) +{ + std::map statisticEventTypeMap = { + {HookMemoryType::MALLOC, "AllocEvent"}, + {HookMemoryType::MMAP, "MmapEvent"}, + {HookMemoryType::FILE_PAGE_MSG, "FilePageEvent"}, + {HookMemoryType::MEMORY_USING_MSG, "MemoryUsingEvent"}}; + for (uint64_t row = 0; row < nativeHookStatisticData_.Size();) { + auto ipid = nativeHookStatisticData_.Ipids()[row]; + auto statisticTaskId = internalProcessesData_[ipid].pid_; + auto statisticTaskName = internalProcessesData_[ipid].cmdLine_; + std::string_view eventType; + auto statisticEventTypeItor = statisticEventTypeMap.find(nativeHookStatisticData_.MemoryTypes()[row]); + if (statisticEventTypeItor != statisticEventTypeMap.end()) { + eventType = statisticEventTypeItor->second; + } + bufferLine.append(statisticTaskName); + bufferLine.append(" ").append(std::to_string(statisticTaskId)); + bufferLine.append(" ").append("[---]"); // default HookStatistic event cpu id + bufferLine.append(" ") + .append(base::ConvertTimestampToSecStr(nativeHookStatisticData_.TimeStampData()[row], TIME_PRECISION_SIX)) + .append(":"); + bufferLine.append(" ").append("1"); // default HookStatistic event event cnt + bufferLine.append(" ").append(eventType).append(" \r\n"); + ExportHookCallChaninText(nativeHookStatisticData_.CallChainIds()[row], bufferLine); + if (++row != nativeHookStatisticData_.Size() && bufferLine.size() < FLUSH_CHUNK_THRESHOLD) { + continue; + } + TS_CHECK_TRUE(write(fd, bufferLine.data(), bufferLine.size()) != -1, false, + "Failed to write HookStatistic file, err:%s", strerror(errno)); + bufferLine.clear(); + } + return true; +} +void TraceDataCache::ExportHookCallChaninText(uint32_t callChainId, std::string& bufferLine) +{ + auto hookFrameCallChainItor = std::lower_bound(nativeHookFrameData_.CallChainIds().begin(), + nativeHookFrameData_.CallChainIds().end(), callChainId); + while (hookFrameCallChainItor != nativeHookFrameData_.CallChainIds().end() && + callChainId == *hookFrameCallChainItor) { + auto hookCallChainRow = std::distance(nativeHookFrameData_.CallChainIds().begin(), hookFrameCallChainItor); + auto hookFrameIp = base::number(nativeHookFrameData_.Ips()[hookCallChainRow], base::INTEGER_RADIX_TYPE_HEX); + hookFrameIp = std::string(base::INTEGER_RADIX_TYPE_HEX - hookFrameIp.size(), ' ') + hookFrameIp; + std::string hookSymName("unknown"); + std::string hookFilePath("[unknown]"); + if (nativeHookFrameData_.SymbolNames()[hookCallChainRow] != INVALID_UINT64) { + hookSymName = GetDataFromDict(nativeHookFrameData_.SymbolNames()[hookCallChainRow]); + } + if (nativeHookFrameData_.FilePaths()[hookCallChainRow] != INVALID_UINT64) { + hookFilePath = GetDataFromDict(nativeHookFrameData_.FilePaths()[hookCallChainRow]); + } + bufferLine.append("\t").append(hookFrameIp); + bufferLine.append(" [").append(hookSymName).append("]"); + bufferLine.append(" (").append(hookFilePath).append(")\r\n"); + ++hookFrameCallChainItor; + } + bufferLine.append("\r\n"); +} +int32_t TraceDataCache::ExportEbpfReadableText(const std::string& outputName, + TraceDataDB::ResultCallBack resultCallBack) +{ + int32_t ebpfFd = base::OpenFile(outputName, O_CREAT | O_RDWR, TS_PERMISSION_RW); + TS_CHECK_TRUE(ebpfFd != -1, 1, "Failed to create file: %s, err:%s", outputName.c_str(), strerror(errno)); + std::unique_ptr> fp(&ebpfFd, [](int32_t* fp) { close(*fp); }); + TS_CHECK_TRUE(ftruncate(ebpfFd, 0) != -1, 1, "Failed to ftruncate file: %s, err:%s", outputName.c_str(), + strerror(errno)); + TS_LOGI("ExportEbpfReadableText begin..."); + EbpfEventTypeMap ebpfEventTypeMap = { + {EbpfStdtype::EBPF_DATA_TYPE::ITEM_EVENT_MAPS, "MapsEvent"}, + {EbpfStdtype::EBPF_DATA_TYPE::ITEM_SYMBOL_INFO, "SymbolEvent"}, + {EbpfStdtype::EBPF_DATA_TYPE::ITEM_EVENT_FS, "FsEvent"}, + {EbpfStdtype::EBPF_DATA_TYPE::ITEM_EVENT_VM, "VmEvent"}, + {EbpfStdtype::EBPF_DATA_TYPE::ITEM_EVENT_BIO, "BioEvent"}, + {EbpfStdtype::EBPF_DATA_TYPE::ITEM_EVENT_STR, "StrEvent"}, + {EbpfStdtype::EBPF_DATA_TYPE::ITEM_EVENT_KENEL_SYMBOL_INFO, "KernelSymbolEvent"}}; + std::string ebpfBufferLine; + ebpfBufferLine.reserve(G_CHUNK_SIZE); + ExportEbpfFileSystemReadableText(ebpfFd, ebpfBufferLine, ebpfEventTypeMap); + ExportEbpfPagedMemReadableText(ebpfFd, ebpfBufferLine, ebpfEventTypeMap); + ExportEbpfBIOReadableText(ebpfFd, ebpfBufferLine, ebpfEventTypeMap); + TS_LOGI("ExportEbpfReadableText end..."); + return 0; +} +bool TraceDataCache::ExportEbpfFileSystemReadableText(int32_t fd, + std::string& bufferLine, + const EbpfEventTypeMap& ebpfEventTypeMap) +{ + for (uint64_t row = 0; row < fileSamplingTableData_.Size();) { + auto fileSysTaskId = internalThreadsData_[fileSamplingTableData_.Itids()[row]].tid_; + auto fileSysTaskName = GetDataFromDict(internalThreadsData_[fileSamplingTableData_.Itids()[row]].nameIndex_); + std::string_view fileSampleEventType; + auto ebpfEventTypeItor = ebpfEventTypeMap.find(fileSamplingTableData_.Types()[row]); + if (ebpfEventTypeItor != ebpfEventTypeMap.end()) { + fileSampleEventType = ebpfEventTypeItor->second; + } + bufferLine.append(fileSysTaskName); + bufferLine.append(" ").append(std::to_string(fileSysTaskId)); + bufferLine.append(" ").append("[---]"); // default FileSystem event cpu id + bufferLine.append(" ") + .append(base::ConvertTimestampToSecStr(fileSamplingTableData_.StartTs()[row], TIME_PRECISION_SIX)) + .append(":"); + bufferLine.append(" ").append("1"); // default FileSystem event cnt + bufferLine.append(" ").append(fileSampleEventType).append(" \r\n"); + ExportEbpfCallChaninText(fileSamplingTableData_.CallChainIds()[row], bufferLine); + if (++row != fileSamplingTableData_.Size() && bufferLine.size() < FLUSH_CHUNK_THRESHOLD) { + continue; + } + TS_CHECK_TRUE(write(fd, bufferLine.data(), bufferLine.size()) != -1, false, + "Failed to write FileSystem event file err:%s", strerror(errno)); + bufferLine.clear(); + } + return true; +} +bool TraceDataCache::ExportEbpfPagedMemReadableText(int32_t fd, + std::string& bufferLine, + const EbpfEventTypeMap& ebpfEventTypeMap) +{ + for (uint64_t row = 0; row < pagedMemorySampleData_.Size();) { + auto pagedMemTaskId = internalThreadsData_[pagedMemorySampleData_.Itids()[row]].tid_; + auto pagedMemTaskName = GetDataFromDict(internalThreadsData_[pagedMemorySampleData_.Itids()[row]].nameIndex_); + std::string_view pageMemEventType; + auto ebpfEventTypeItor = ebpfEventTypeMap.find(pagedMemorySampleData_.Types()[row]); + if (ebpfEventTypeItor != ebpfEventTypeMap.end()) { + pageMemEventType = ebpfEventTypeItor->second; + } + bufferLine.append(pagedMemTaskName); + bufferLine.append(" ").append(std::to_string(pagedMemTaskId)); + bufferLine.append(" ").append("[---]"); // default PagedMem event cpu id + bufferLine.append(" ") + .append(base::ConvertTimestampToSecStr(pagedMemorySampleData_.StartTs()[row], TIME_PRECISION_SIX)) + .append(":"); + bufferLine.append(" ").append("1"); // default PagedMem event cnt + bufferLine.append(" ").append(pageMemEventType).append(" \r\n"); + ExportEbpfCallChaninText(pagedMemorySampleData_.CallChainIds()[row], bufferLine); + if (++row != pagedMemorySampleData_.Size() && bufferLine.size() < FLUSH_CHUNK_THRESHOLD) { + continue; + } + TS_CHECK_TRUE(write(fd, bufferLine.data(), bufferLine.size()) != -1, false, + "Failed to write PagedMem event file err:%s", strerror(errno)); + bufferLine.clear(); + } + return true; +} +bool TraceDataCache::ExportEbpfBIOReadableText(int32_t fd, + std::string& bufferLine, + const EbpfEventTypeMap& ebpfEventTypeMap) +{ + for (uint64_t row = 0; row < bioLatencySampleData_.Size();) { + auto bioTaskId = internalThreadsData_[bioLatencySampleData_.Itids()[row]].tid_; + auto bioTaskName = GetDataFromDict(internalThreadsData_[bioLatencySampleData_.Itids()[row]].nameIndex_); + std::string_view bioEventType; + auto ebpfEventTypeItor = ebpfEventTypeMap.find(bioLatencySampleData_.Types()[row]); + if (ebpfEventTypeItor != ebpfEventTypeMap.end()) { + bioEventType = ebpfEventTypeItor->second; + } + bufferLine.append(bioTaskName); + bufferLine.append(" ").append(std::to_string(bioTaskId)); + bufferLine.append(" ").append("[---]"); // default BIO event cpu id + bufferLine.append(" ") + .append(base::ConvertTimestampToSecStr(bioLatencySampleData_.StartTs()[row], TIME_PRECISION_SIX)) + .append(":"); + bufferLine.append(" ").append("1"); // default BIO event cnt + bufferLine.append(" ").append(bioEventType).append(" \r\n"); + ExportEbpfCallChaninText(bioLatencySampleData_.CallChainIds()[row], bufferLine); + if (++row != bioLatencySampleData_.Size() && bufferLine.size() < FLUSH_CHUNK_THRESHOLD) { + continue; + } + TS_CHECK_TRUE(write(fd, bufferLine.data(), bufferLine.size()) != -1, false, + "Failed to write BIO event file err:%s", strerror(errno)); + bufferLine.clear(); + } + return true; +} +void TraceDataCache::ExportEbpfCallChaninText(uint32_t callChainId, std::string& bufferLine) +{ + auto ebpfCallChainItor = std::lower_bound(ebpfCallStackData_.CallChainIds().begin(), + ebpfCallStackData_.CallChainIds().end(), callChainId); + while (ebpfCallChainItor != ebpfCallStackData_.CallChainIds().end() && callChainId == *ebpfCallChainItor) { + auto ebpfCallChainRow = std::distance(ebpfCallStackData_.CallChainIds().begin(), ebpfCallChainItor); + auto ebpfFrameIp = GetDataFromDict(ebpfCallStackData_.Ips()[ebpfCallChainRow]).substr(HEX_PREFIX.size()); + ebpfFrameIp = std::string(base::INTEGER_RADIX_TYPE_HEX - ebpfFrameIp.size(), ' ') + ebpfFrameIp; + std::string ebpfSymName("unknown"); + std::string ebpfFilePath("[unknown]"); + if (ebpfCallStackData_.SymbolIds()[ebpfCallChainRow] != INVALID_UINT64) { + ebpfSymName = GetDataFromDict(ebpfCallStackData_.SymbolIds()[ebpfCallChainRow]); + } + if (ebpfCallStackData_.FilePathIds()[ebpfCallChainRow] != INVALID_UINT64) { + ebpfFilePath = GetDataFromDict(ebpfCallStackData_.FilePathIds()[ebpfCallChainRow]); + } + bufferLine.append("\t").append(ebpfFrameIp); + bufferLine.append(" [").append(ebpfSymName).append("]"); + bufferLine.append(" (").append(ebpfFilePath).append(")\r\n"); + ++ebpfCallChainItor; } - buffLine += "\r\n"; + bufferLine.append("\r\n"); } } // namespace TraceStreamer } // namespace SysTuning diff --git a/trace_streamer/src/trace_data/trace_data_cache.h b/trace_streamer/src/trace_data/trace_data_cache.h index 23dc3a94586014d4c15302b8392339f342b52185..d9e98423e73682493a5535549af594aa247e6bb2 100644 --- a/trace_streamer/src/trace_data/trace_data_cache.h +++ b/trace_streamer/src/trace_data/trace_data_cache.h @@ -46,10 +46,22 @@ public: std::deque>& HookCommProtos(); void ClearHookCommProtos(); int32_t ExportPerfReadableText(const std::string& outputName, TraceDataDB::ResultCallBack resultCallBack = nullptr); + int32_t ExportHookReadableText(const std::string& outputName, TraceDataDB::ResultCallBack resultCallBack = nullptr); + int32_t ExportEbpfReadableText(const std::string& outputName, TraceDataDB::ResultCallBack resultCallBack = nullptr); private: void InitDB(); void ExportPerfCallChaninText(uint32_t callChainId, std::string& buffLine); + void ExportHookCallChaninText(uint32_t callChainId, std::string& buffLine); + bool ExportHookDataReadableText(int32_t fd, std::string& bufferLine); + bool ExportHookStatisticReadableText(int32_t fd, std::string& bufferLine); + using EbpfEventTypeMap = std::map; + bool ExportEbpfFileSystemReadableText(int32_t fd, + std::string& bufferLine, + const EbpfEventTypeMap& ebpfEventTypeMap); + bool ExportEbpfPagedMemReadableText(int32_t fd, std::string& bufferLine, const EbpfEventTypeMap& ebpfEventTypeMap); + bool ExportEbpfBIOReadableText(int32_t fd, std::string& bufferLine, const EbpfEventTypeMap& ebpfEventTypeMap); + void ExportEbpfCallChaninText(uint32_t callChainId, std::string& bufferLine); private: bool dbInited_ = false; diff --git a/trace_streamer/src/trace_data/trace_data_cache_base.h b/trace_streamer/src/trace_data/trace_data_cache_base.h index 78a7bf4b0c6b06e3dd04b7ab9edd86aa7274856b..d5b63d37f903ad1dd9598ee47df2f3b14400c46f 100644 --- a/trace_streamer/src/trace_data/trace_data_cache_base.h +++ b/trace_streamer/src/trace_data/trace_data_cache_base.h @@ -138,7 +138,7 @@ public: LiveProcessDetailData liveProcessDetailData_; FileSystemSample fileSamplingTableData_; EbpfCallStackData ebpfCallStackData_; - PagedMemorySampleData PagedMemorySampleData_; + PagedMemorySampleData pagedMemorySampleData_; #if WITH_EBPF_HELP EbpfProcessMaps ebpfProcessMaps_; EbpfElf ebpfElf_; diff --git a/trace_streamer/src/trace_data/trace_data_cache_reader.cpp b/trace_streamer/src/trace_data/trace_data_cache_reader.cpp index 16b87917ca32180656875471fb3e4eb1ee36cdc2..df45e6d6d291f0a2848854bee9eb9095009e5341 100644 --- a/trace_streamer/src/trace_data/trace_data_cache_reader.cpp +++ b/trace_streamer/src/trace_data/trace_data_cache_reader.cpp @@ -281,7 +281,7 @@ const EbpfCallStackData& TraceDataCacheReader::GetConstEbpfCallStackData() const } const PagedMemorySampleData& TraceDataCacheReader::GetConstPagedMemorySampleData() const { - return PagedMemorySampleData_; + return pagedMemorySampleData_; } #if WITH_EBPF_HELP const EbpfProcessMaps& TraceDataCacheReader::GetConstEbpfProcessMaps() const diff --git a/trace_streamer/src/trace_data/trace_data_cache_writer.cpp b/trace_streamer/src/trace_data/trace_data_cache_writer.cpp index 9274963c1144a83587bd120d9f1e5ecb08ec35a7..688aa27d5f89aaef2afa999df99aae147ac5e9e1 100644 --- a/trace_streamer/src/trace_data/trace_data_cache_writer.cpp +++ b/trace_streamer/src/trace_data/trace_data_cache_writer.cpp @@ -274,7 +274,7 @@ EbpfCallStackData* TraceDataCacheWriter::GetEbpfCallStack() } PagedMemorySampleData* TraceDataCacheWriter::GetPagedMemorySampleData() { - return &PagedMemorySampleData_; + return &pagedMemorySampleData_; } #if WITH_EBPF_HELP EbpfProcessMaps* TraceDataCacheWriter::GetEbpfProcessMaps() @@ -487,7 +487,7 @@ void TraceDataCacheWriter::Clear() liveProcessDetailData_.Clear(); fileSamplingTableData_.Clear(); ebpfCallStackData_.Clear(); - PagedMemorySampleData_.Clear(); + pagedMemorySampleData_.Clear(); jsHeapFilesData_.Clear(); jsHeapEdgesData_.Clear(); jsHeapInfoData_.Clear(); diff --git a/trace_streamer/src/trace_data/trace_stdtype.cpp b/trace_streamer/src/trace_data/trace_stdtype.cpp index 49a6c0b928e351e17aeaf77dc6f9b54e5fe7c88a..7968c42f2216fadda97f988f56524fe425796290 100644 --- a/trace_streamer/src/trace_data/trace_stdtype.cpp +++ b/trace_streamer/src/trace_data/trace_stdtype.cpp @@ -662,9 +662,8 @@ const std::deque& NativeHook::CurrentSizeDurs() const return currentSizeDurs_; } size_t NativeHookFrame::AppendNewNativeHookFrame(uint32_t callChainId, - uint64_t depth, + uint16_t depth, uint64_t ip, - uint64_t sp, DataIndex symbolName, DataIndex filePath, uint64_t offset, @@ -673,7 +672,6 @@ size_t NativeHookFrame::AppendNewNativeHookFrame(uint32_t callChainId, { callChainIds_.emplace_back(callChainId); ips_.emplace_back(ip); - sps_.emplace_back(sp); depths_.emplace_back(depth); symbolNames_.emplace_back(symbolName); filePaths_.emplace_back(filePath); @@ -683,9 +681,8 @@ size_t NativeHookFrame::AppendNewNativeHookFrame(uint32_t callChainId, return Size() - 1; } size_t NativeHookFrame::AppendNewNativeHookFrame(uint32_t callChainId, - uint64_t depth, + uint16_t depth, uint64_t ip, - uint64_t sp, DataIndex symbolName, DataIndex filePath, uint64_t offset, @@ -693,7 +690,6 @@ size_t NativeHookFrame::AppendNewNativeHookFrame(uint32_t callChainId, { callChainIds_.emplace_back(callChainId); ips_.emplace_back(ip); - sps_.emplace_back(sp); depths_.emplace_back(depth); symbolNames_.emplace_back(symbolName); filePaths_.emplace_back(filePath); @@ -759,7 +755,7 @@ const std::deque& NativeHookFrame::CallChainIds() const { return callChainIds_; } -const std::deque& NativeHookFrame::Depths() const +const std::deque& NativeHookFrame::Depths() const { return depths_; } @@ -767,10 +763,6 @@ const std::deque& NativeHookFrame::Ips() const { return ips_; } -const std::deque& NativeHookFrame::Sps() const -{ - return sps_; -} const std::deque& NativeHookFrame::SymbolNames() const { return symbolNames_; diff --git a/trace_streamer/src/trace_data/trace_stdtype.h b/trace_streamer/src/trace_data/trace_stdtype.h index 8edb46764cc9ce8d26f1bde5cd520f835b311e86..f664133276ad98d62c7f80cb907c99645c833269 100644 --- a/trace_streamer/src/trace_data/trace_stdtype.h +++ b/trace_streamer/src/trace_data/trace_stdtype.h @@ -825,17 +825,15 @@ private: class NativeHookFrame { public: size_t AppendNewNativeHookFrame(uint32_t callChainId, - uint64_t depth, + uint16_t depth, uint64_t ip, - uint64_t sp, DataIndex symbolName, DataIndex filePath, uint64_t offset, uint64_t symbolOffset); size_t AppendNewNativeHookFrame(uint32_t callChainId, - uint64_t depth, + uint16_t depth, uint64_t ip, - uint64_t sp, DataIndex symbolName, DataIndex filePath, uint64_t offset, @@ -852,9 +850,8 @@ public: void UpdateFileId(std::map& filePathIdToFilePathName); void UpdateVaddrs(std::deque& vaddrs); const std::deque& CallChainIds() const; - const std::deque& Depths() const; + const std::deque& Depths() const; const std::deque& Ips() const; - const std::deque& Sps() const; const std::deque& SymbolNames() const; const std::deque& FilePaths() const; const std::deque& Offsets() const; @@ -869,7 +866,6 @@ public: callChainIds_.clear(); depths_.clear(); ips_.clear(); - sps_.clear(); symbolNames_.clear(); filePaths_.clear(); offsets_.clear(); @@ -879,9 +875,8 @@ public: private: std::deque callChainIds_ = {}; - std::deque depths_ = {}; + std::deque depths_ = {}; std::deque ips_ = {}; - std::deque sps_ = {}; std::deque symbolNames_ = {}; std::deque filePaths_ = {}; std::deque offsets_ = {}; diff --git a/trace_streamer/src/trace_streamer/trace_streamer_selector.cpp b/trace_streamer/src/trace_streamer/trace_streamer_selector.cpp index acaf03eb6f0654e657857b95a1bc7d61d53d2010..852ddddc3421740f93f234402420befbf231d06f 100644 --- a/trace_streamer/src/trace_streamer/trace_streamer_selector.cpp +++ b/trace_streamer/src/trace_streamer/trace_streamer_selector.cpp @@ -294,6 +294,20 @@ int32_t TraceStreamerSelector::ExportPerfReadableText(const std::string& outputN return traceDataCache_->ExportPerfReadableText(outputName, resultCallBack); } +int32_t TraceStreamerSelector::ExportHookReadableText(const std::string& outputName, + TraceDataDB::ResultCallBack resultCallBack) +{ + traceDataCache_->UpdateTraceRange(); + return traceDataCache_->ExportHookReadableText(outputName, resultCallBack); +} + +int32_t TraceStreamerSelector::ExportEbpfReadableText(const std::string& outputName, + TraceDataDB::ResultCallBack resultCallBack) +{ + traceDataCache_->UpdateTraceRange(); + return traceDataCache_->ExportEbpfReadableText(outputName, resultCallBack); +} + bool TraceStreamerSelector::ReloadSymbolFiles(std::string& directory, std::vector& symbolsPaths) { TS_LOGE("directory is %s", directory.c_str()); diff --git a/trace_streamer/src/trace_streamer/trace_streamer_selector.h b/trace_streamer/src/trace_streamer/trace_streamer_selector.h index 9a0db4e2500621e1ff177312c6b79db78a137442..9688a9aa7910eabc3e23297a671246d4153f87a4 100644 --- a/trace_streamer/src/trace_streamer/trace_streamer_selector.h +++ b/trace_streamer/src/trace_streamer/trace_streamer_selector.h @@ -36,6 +36,8 @@ public: static void SetCleanMode(bool cleanMode); int32_t ExportDatabase(const std::string& outputName, TraceDataDB::ResultCallBack resultCallBack = nullptr); int32_t ExportPerfReadableText(const std::string& outputName, TraceDataDB::ResultCallBack resultCallBack = nullptr); + int32_t ExportHookReadableText(const std::string& outputName, TraceDataDB::ResultCallBack resultCallBack = nullptr); + int32_t ExportEbpfReadableText(const std::string& outputName, TraceDataDB::ResultCallBack resultCallBack = nullptr); bool ReloadSymbolFiles(std::string& symbolsPath, std::vector& symbolsPaths); std::vector SearchData(); int32_t OperateDatabase(const std::string& sql);