diff --git a/ide/src/trace/bean/BoxSelection.ts b/ide/src/trace/bean/BoxSelection.ts index ef7af45fc9599d14f315a9f9144e9ea30c4502f1..3a95a14cdd7bb8892171083b96486083e8e1f526 100644 --- a/ide/src/trace/bean/BoxSelection.ts +++ b/ide/src/trace/bean/BoxSelection.ts @@ -40,9 +40,6 @@ export class SelectionParam { isCurrentPane: boolean = false; startup: boolean = false; staticInit: boolean = false; - eventTypeId: string = ''; - - cpus: Array = []; cpuStateRowsId: Array = []; diff --git a/ide/src/trace/component/trace/sheet/TabPaneFilter.ts b/ide/src/trace/component/trace/sheet/TabPaneFilter.ts index 55ff78b5ec5704fa33e757a04c976c9437ab44da..0ecd256f5534c55f8fe51b5ad155250107932dfd 100644 --- a/ide/src/trace/component/trace/sheet/TabPaneFilter.ts +++ b/ide/src/trace/component/trace/sheet/TabPaneFilter.ts @@ -118,7 +118,7 @@ export class TabPaneFilter extends BaseElement { if (this.getFilter) { this.getFilter(this.filterData('icon')); } - if(this.getAttribute('perf') == 'perf') { + if (this.getAttribute('perf') == 'perf') { this.disabledTransfer(true); } } @@ -431,10 +431,25 @@ export class TabPaneFilter extends BaseElement { initializeTreeTransfer() { let radioList = this.shadowRoot!.querySelectorAll('.radio'); let divElement = this.shadowRoot!.querySelectorAll('.tree-radio'); - radioList![radioList.length -1].checked = true; + radioList![radioList.length - 1].checked = true; divElement!.forEach((divEl, idx) => { divEl.addEventListener('click', () => { + let filterData = this.getFilterTreeData(); + if (filterData.callTree[0] === true || filterData.callTree[1] === true) { + let row = this.shadowRoot!.querySelectorAll('.tree-check lit-check-box'); + row[0].checked = false; + row[1].checked = false; + } + if (filterData.callTreeConstraints.checked === true) { + let check = this.shadowRoot!.querySelector('#constraints-check'); + let inputs = this.shadowRoot!.querySelectorAll('.constraints-input'); + check!.checked = false; + inputs[0].value = '0'; + inputs[1].value = '∞'; + } + this.filterInputEL!.value = '' + radioList![idx].checked = true; if (this.getCallTransfer) { this.getCallTransfer({ @@ -490,9 +505,8 @@ export class TabPaneFilter extends BaseElement { let html = ``; this.cutList!.forEach((a, b) => { html += `
- +
${a.name}
`; }); @@ -524,9 +538,8 @@ export class TabPaneFilter extends BaseElement { let html = ``; this.libraryList!.forEach((a, b) => { html += `
- +
${a.name}
`; }); diff --git a/ide/src/trace/component/trace/sheet/hiperf/TabPerfProfile.ts b/ide/src/trace/component/trace/sheet/hiperf/TabPerfProfile.ts index db6f04e7ed3f46a6cfc7695f0c87d1229c350b72..98a48f761bd9ba910b209aa805e921ddc239f65d 100644 --- a/ide/src/trace/component/trace/sheet/hiperf/TabPerfProfile.ts +++ b/ide/src/trace/component/trace/sheet/hiperf/TabPerfProfile.ts @@ -38,7 +38,7 @@ export class TabpanePerfProfile extends BaseElement { private perfProfilerList: LitTable | null | undefined; private perfProfileProgressEL: LitProgressBar | null | undefined; private perfProfilerRightSource: Array = []; - private perfProfilerFilter: TabPaneFilter| null| undefined; + private perfProfilerFilter: TabPaneFilter | null | undefined; private perfProfilerDataSource: any[] = []; private perfProfileSortKey = 'weight'; private perfProfileSortType = 0; @@ -78,39 +78,46 @@ export class TabpanePerfProfile extends BaseElement { getDataByWorkAndUpDateCanvas(perfProfilerSelection: SelectionParam) { const initWidth = this.clientWidth; this.initGetData(perfProfilerSelection, initWidth); - + + this.perfProfilerFilter!.getCallTransferData((data: any) => { - perfProfilerSelection.eventTypeId = data.eventTypeId !== 'count' ? data.eventTypeId : undefined; - this.initGetData(perfProfilerSelection, initWidth); + this.initGetData(perfProfilerSelection, initWidth, data.eventTypeId); }); } - initGetData(perfProfilerSelection: SelectionParam | any, initWidth: number): void { - this.getDataByWorker( - [ - { - funcName: 'setSearchValue', - funcArgs: [''], - }, - { - funcName: 'getCurrentDataFromDb', - funcArgs: [perfProfilerSelection], - }, - ], - (results: any[]) => { - this.setPerfProfilerLeftTableData(results); - this.perfProfilerList!.recycleDataSource = []; - if(perfProfilerSelection.eventTypeId && perfProfilerSelection.eventTypeId !== 'count') { - this.perfProfileFrameChart!.mode = ChartMode.EventCount; - }else{ - this.perfProfileFrameChart!.mode = ChartMode.Count; - } - - this.perfProfileFrameChart?.updateCanvas(true, initWidth); - this.perfProfileFrameChart!.data = this.perfProfilerDataSource; - this.switchFlameChart(); - this.perfProfilerFilter!.icon = 'block'; + initGetData(perfProfilerSelection: SelectionParam | any, initWidth: number, eventTypeId?: string): void { + let perfProfileArgs: any[] = []; + if (eventTypeId) { + perfProfileArgs.push({ + funcName: 'setEventTypeId', + funcArgs: [eventTypeId !== 'count' ? eventTypeId : undefined], + }) + } + perfProfileArgs.push( + { + funcName: 'setSearchValue', + funcArgs: [''], + }, + { + funcName: 'getCurrentDataFromDb', + funcArgs: [perfProfilerSelection], }) + + this.getDataByWorker(perfProfileArgs, (results: any[]) => { + this.setPerfProfilerLeftTableData(results); + this.perfProfilerList!.recycleDataSource = []; + if (eventTypeId && eventTypeId !== 'count') { + this.perfProfileFrameChart!.mode = ChartMode.EventCount; + } else { + this.perfProfileFrameChart!.mode = ChartMode.Count; + } + + this.perfProfileFrameChart?.updateCanvas(true, initWidth); + this.perfProfileFrameChart!.data = this.perfProfilerDataSource; + this.switchFlameChart(); + this.perfProfilerFilter!.icon = 'block'; + }) + } getParentTree( diff --git a/ide/src/trace/database/logic-worker/ProcedureLogicWorkerPerf.ts b/ide/src/trace/database/logic-worker/ProcedureLogicWorkerPerf.ts index 7418a223b956f287316727152222ae3a1523f5b6..5aefb8e1eefb5995f15ef44e23817f9ce3d531fb 100644 --- a/ide/src/trace/database/logic-worker/ProcedureLogicWorkerPerf.ts +++ b/ide/src/trace/database/logic-worker/ProcedureLogicWorkerPerf.ts @@ -36,6 +36,7 @@ export class ProcedureLogicWorkerPerf extends LogicHandler { currentEventId: string = ''; isAnalysis: boolean = false; isPerfBottomUp: boolean = false; + eventTypeId: string = ''; private dataCache = DataCache.getInstance(); @@ -194,8 +195,7 @@ export class ProcedureLogicWorkerPerf extends LogicHandler { let arg = `${cpuFilter}${processFilter}${threadFilter}`.substring(3); filterSql = ` and (${arg})`; } - const eventTypeId = selectionParam.eventTypeId; - eventTypeFilter = eventTypeId ? ` and s.event_type_id = ${eventTypeId}` : ''; + eventTypeFilter = this.eventTypeId ? ` and s.event_type_id = ${this.eventTypeId}` : ''; filterSql += eventTypeFilter; this.queryData( this.currentEventId, @@ -753,6 +753,9 @@ export class ProcedureLogicWorkerPerf extends LogicHandler { case 'splitTree': this.splitPerfTree(this.allProcess, item.funcArgs[0], item.funcArgs[1], item.funcArgs[2]); break; + case 'setEventTypeId': + this.eventTypeId = item.funcArgs[0]; + break; case 'setSearchValue': this.searchValue = item.funcArgs[0]; break;