1fb726d48Sopenharmony_ci/* 2fb726d48Sopenharmony_ci * Copyright (C) 2022 Huawei Device Co., Ltd. 3fb726d48Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4fb726d48Sopenharmony_ci * you may not use this file except in compliance with the License. 5fb726d48Sopenharmony_ci * You may obtain a copy of the License at 6fb726d48Sopenharmony_ci * 7fb726d48Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8fb726d48Sopenharmony_ci * 9fb726d48Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10fb726d48Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11fb726d48Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12fb726d48Sopenharmony_ci * See the License for the specific language governing permissions and 13fb726d48Sopenharmony_ci * limitations under the License. 14fb726d48Sopenharmony_ci */ 15fb726d48Sopenharmony_ci 16fb726d48Sopenharmony_ciimport { BaseElement, element } from '../../../base-ui/BaseElement'; 17fb726d48Sopenharmony_ciimport { LitTable } from '../../../base-ui/table/lit-table'; 18fb726d48Sopenharmony_ciimport { LitChartColumn } from '../../../base-ui/chart/column/LitChartColumn'; 19fb726d48Sopenharmony_ciimport '../../../base-ui/chart/column/LitChartColumn'; 20fb726d48Sopenharmony_ciimport './CheckCpuSetting'; 21fb726d48Sopenharmony_ciimport '../../../base-ui/icon/LitIcon'; 22fb726d48Sopenharmony_ciimport { CheckCpuSetting } from './CheckCpuSetting'; 23fb726d48Sopenharmony_ciimport { procedurePool } from '../../database/Procedure'; 24fb726d48Sopenharmony_ciimport { info } from '../../../log/Log'; 25fb726d48Sopenharmony_ciimport '../../../base-ui/progress-bar/LitProgressBar'; 26fb726d48Sopenharmony_ciimport { LitProgressBar } from '../../../base-ui/progress-bar/LitProgressBar'; 27fb726d48Sopenharmony_ciimport './TableNoData'; 28fb726d48Sopenharmony_ciimport { TableNoData } from './TableNoData'; 29fb726d48Sopenharmony_ciimport { getProbablyTime } from '../../database/logic-worker/ProcedureLogicWorkerCommon'; 30fb726d48Sopenharmony_ciimport { SpSchedulingAnalysis } from './SpSchedulingAnalysis'; 31fb726d48Sopenharmony_ciimport { Top20ThreadCpuUsageHtml } from './Top20ThreadCpuUsage.html'; 32fb726d48Sopenharmony_ci 33fb726d48Sopenharmony_ci@element('top20-thread-cpu-usage') 34fb726d48Sopenharmony_ciexport class Top20ThreadCpuUsage extends BaseElement { 35fb726d48Sopenharmony_ci traceChange: boolean = false; 36fb726d48Sopenharmony_ci private table: LitTable | null | undefined; 37fb726d48Sopenharmony_ci private tableBig: LitTable | null | undefined; 38fb726d48Sopenharmony_ci private tableMid: LitTable | null | undefined; 39fb726d48Sopenharmony_ci private tableSmall: LitTable | null | undefined; 40fb726d48Sopenharmony_ci private chartTotal: LitChartColumn | null | undefined; 41fb726d48Sopenharmony_ci private chart2: LitChartColumn | null | undefined; 42fb726d48Sopenharmony_ci private chart3: LitChartColumn | null | undefined; 43fb726d48Sopenharmony_ci private chart4: LitChartColumn | null | undefined; 44fb726d48Sopenharmony_ci private cpuSetting: CheckCpuSetting | undefined | null; 45fb726d48Sopenharmony_ci private setting: HTMLDivElement | null | undefined; 46fb726d48Sopenharmony_ci private progress: LitProgressBar | null | undefined; 47fb726d48Sopenharmony_ci private nodata: TableNoData | null | undefined; 48fb726d48Sopenharmony_ci private map: Map<string, { chart: LitChartColumn; table: LitTable }> | undefined; 49fb726d48Sopenharmony_ci private data: Array<unknown> = []; 50fb726d48Sopenharmony_ci private dataBig: Array<unknown> = []; 51fb726d48Sopenharmony_ci private dataMid: Array<unknown> = []; 52fb726d48Sopenharmony_ci private dataSmall: Array<unknown> = []; 53fb726d48Sopenharmony_ci private sort: unknown = { 54fb726d48Sopenharmony_ci total: { key: '', sort: 0 }, 55fb726d48Sopenharmony_ci small: { key: '', sort: 0 }, 56fb726d48Sopenharmony_ci mid: { key: '', sort: 0 }, 57fb726d48Sopenharmony_ci big: { key: '', sort: 0 }, 58fb726d48Sopenharmony_ci }; 59fb726d48Sopenharmony_ci 60fb726d48Sopenharmony_ci private publicColumns = ` 61fb726d48Sopenharmony_ci <lit-table-column width="50px" title=" " data-index="no" key="no" align="flex-start"></lit-table-column> 62fb726d48Sopenharmony_ci <lit-table-column width="50px" title="" data-index="visible" key="visible" align="flex-start"> 63fb726d48Sopenharmony_ci <template> 64fb726d48Sopenharmony_ci <lit-icon name="{{ visible === 1 ? 'eye':'eye-close' }}" onclick="{ 65fb726d48Sopenharmony_ci let data = this.parentElement.parentElement.data; 66fb726d48Sopenharmony_ci data.visible = data.visible === 1 ? 0 : 1 67fb726d48Sopenharmony_ci this.name = data.visible === 1 ? 'eye':'eye-close' 68fb726d48Sopenharmony_ci data.hideHandler() 69fb726d48Sopenharmony_ci }" size="20"></lit-icon> 70fb726d48Sopenharmony_ci </template> 71fb726d48Sopenharmony_ci </lit-table-column> 72fb726d48Sopenharmony_ci <lit-table-column width="100px" title="tid" data-index="tid" key="tid" align="flex-start" order></lit-table-column> 73fb726d48Sopenharmony_ci <lit-table-column width="200px" title="t_name" data-index="tName" key="tName" align="flex-start" order></lit-table-column> 74fb726d48Sopenharmony_ci <lit-table-column width="100px" title="pid" data-index="pid" key="pid" align="flex-start" order></lit-table-column> 75fb726d48Sopenharmony_ci <lit-table-column width="200px" title="p_name" data-index="pName" key="pName" align="flex-start" order></lit-table-column> 76fb726d48Sopenharmony_ci `; 77fb726d48Sopenharmony_ci private bigColumn = ` 78fb726d48Sopenharmony_ci <lit-table-column width="100px" title="big core" data-index="bigTimeStr" key="bigTimeStr" align="flex-start" order></lit-table-column> 79fb726d48Sopenharmony_ci <lit-table-column width="100px" title="%" data-index="bigPercent" key="bigPercent" align="flex-start" order></lit-table-column> 80fb726d48Sopenharmony_ci `; 81fb726d48Sopenharmony_ci private midColumn = ` 82fb726d48Sopenharmony_ci <lit-table-column width="100px" title="middle core" data-index="midTimeStr" key="midTimeStr" align="flex-start" order></lit-table-column> 83fb726d48Sopenharmony_ci <lit-table-column width="100px" title="%" data-index="midPercent" key="midPercent" align="flex-start" order></lit-table-column> 84fb726d48Sopenharmony_ci `; 85fb726d48Sopenharmony_ci private smallColumn = ` 86fb726d48Sopenharmony_ci <lit-table-column width="100px" title="small core" data-index="smallTimeStr" key="smallTimeStr" align="flex-start" order></lit-table-column> 87fb726d48Sopenharmony_ci <lit-table-column width="100px" title="%" data-index="smallPercent" key="smallPercent" align="flex-start" order></lit-table-column> 88fb726d48Sopenharmony_ci `; 89fb726d48Sopenharmony_ci 90fb726d48Sopenharmony_ci initElements(): void { 91fb726d48Sopenharmony_ci this.nodata = this.shadowRoot!.querySelector<TableNoData>('#nodata'); 92fb726d48Sopenharmony_ci this.progress = this.shadowRoot!.querySelector<LitProgressBar>('#loading'); 93fb726d48Sopenharmony_ci this.table = this.shadowRoot!.querySelector<LitTable>('#tb-thread-usage'); 94fb726d48Sopenharmony_ci this.tableBig = this.shadowRoot!.querySelector<LitTable>('#tb-thread-big'); 95fb726d48Sopenharmony_ci this.tableMid = this.shadowRoot!.querySelector<LitTable>('#tb-thread-mid'); 96fb726d48Sopenharmony_ci this.tableSmall = this.shadowRoot!.querySelector<LitTable>('#tb-thread-small'); 97fb726d48Sopenharmony_ci this.chartTotal = this.shadowRoot!.querySelector<LitChartColumn>('#chart_total'); 98fb726d48Sopenharmony_ci this.chart2 = this.shadowRoot!.querySelector<LitChartColumn>('#chart_2'); 99fb726d48Sopenharmony_ci this.chart3 = this.shadowRoot!.querySelector<LitChartColumn>('#chart_3'); 100fb726d48Sopenharmony_ci this.chart4 = this.shadowRoot!.querySelector<LitChartColumn>('#chart_4'); 101fb726d48Sopenharmony_ci this.map = new Map<string, { chart: LitChartColumn; table: LitTable }>(); 102fb726d48Sopenharmony_ci this.map.set('total', { chart: this.chartTotal!, table: this.table! }); 103fb726d48Sopenharmony_ci this.map.set('small', { chart: this.chart2!, table: this.tableSmall! }); 104fb726d48Sopenharmony_ci this.map.set('mid', { chart: this.chart3!, table: this.tableMid! }); 105fb726d48Sopenharmony_ci this.map.set('big', { chart: this.chart4!, table: this.tableBig! }); 106fb726d48Sopenharmony_ci this.setting = this.shadowRoot!.querySelector<HTMLDivElement>('#setting'); 107fb726d48Sopenharmony_ci this.cpuSetting = this.shadowRoot!.querySelector<CheckCpuSetting>('#cpu_setting'); 108fb726d48Sopenharmony_ci this.cpuSetting!.cpuSetListener = (): void => { 109fb726d48Sopenharmony_ci this.cpuSetting!.style.display = 'none'; 110fb726d48Sopenharmony_ci //@ts-ignore 111fb726d48Sopenharmony_ci (this.shadowRoot!.querySelector('#total')! as unknown).style.display = 'grid'; 112fb726d48Sopenharmony_ci //@ts-ignore 113fb726d48Sopenharmony_ci (this.shadowRoot!.querySelector('#small')! as unknown).style.display = 114fb726d48Sopenharmony_ci CheckCpuSetting.small_cores.length > 0 ? 'grid' : 'none'; 115fb726d48Sopenharmony_ci //@ts-ignore 116fb726d48Sopenharmony_ci (this.shadowRoot!.querySelector('#mid')! as unknown).style.display = 117fb726d48Sopenharmony_ci CheckCpuSetting.mid_cores.length > 0 ? 'grid' : 'none'; 118fb726d48Sopenharmony_ci //@ts-ignore 119fb726d48Sopenharmony_ci (this.shadowRoot!.querySelector('#big')! as unknown).style.display = 120fb726d48Sopenharmony_ci CheckCpuSetting.big_cores.length > 0 ? 'grid' : 'none'; 121fb726d48Sopenharmony_ci this.queryData(); 122fb726d48Sopenharmony_ci }; 123fb726d48Sopenharmony_ci this.setting?.addEventListener('click', (): void => { 124fb726d48Sopenharmony_ci for (let node of this.shadowRoot!.querySelectorAll('.content_grid')) { 125fb726d48Sopenharmony_ci //@ts-ignore 126fb726d48Sopenharmony_ci (node as unknown).style.display = 'none'; 127fb726d48Sopenharmony_ci } 128fb726d48Sopenharmony_ci this.cpuSetting!.style.display = 'inline'; 129fb726d48Sopenharmony_ci this.cpuSetting?.init(); 130fb726d48Sopenharmony_ci }); 131fb726d48Sopenharmony_ci this.tabListener(); 132fb726d48Sopenharmony_ci } 133fb726d48Sopenharmony_ci 134fb726d48Sopenharmony_ci private tabListener(): void { 135fb726d48Sopenharmony_ci for (let key of this.map!.keys()) { 136fb726d48Sopenharmony_ci let tab = this.map!.get(key)!.table; 137fb726d48Sopenharmony_ci let chart = this.map!.get(key)!.chart; 138fb726d48Sopenharmony_ci tab!.addEventListener('row-click', (evt: unknown): void => { 139fb726d48Sopenharmony_ci //@ts-ignore 140fb726d48Sopenharmony_ci let data = evt.detail.data; 141fb726d48Sopenharmony_ci data.isSelected = true; 142fb726d48Sopenharmony_ci // @ts-ignore 143fb726d48Sopenharmony_ci if ((evt.detail as unknown).callBack) { 144fb726d48Sopenharmony_ci // @ts-ignore 145fb726d48Sopenharmony_ci (evt.detail as unknown).callBack(true); 146fb726d48Sopenharmony_ci } 147fb726d48Sopenharmony_ci }); 148fb726d48Sopenharmony_ci tab!.addEventListener('column-click', (evt: unknown): void => { 149fb726d48Sopenharmony_ci //@ts-ignore 150fb726d48Sopenharmony_ci this.sort[key].key = evt.detail.key; 151fb726d48Sopenharmony_ci //@ts-ignore 152fb726d48Sopenharmony_ci this.sort[key].sort = evt.detail.sort; 153fb726d48Sopenharmony_ci if (key === 'total') { 154fb726d48Sopenharmony_ci //@ts-ignore 155fb726d48Sopenharmony_ci this.sortByColumn(evt.detail, tab, this.data); 156fb726d48Sopenharmony_ci } else if (key === 'small') { 157fb726d48Sopenharmony_ci //@ts-ignore 158fb726d48Sopenharmony_ci this.sortByColumn(evt.detail, tab, this.dataSmall); 159fb726d48Sopenharmony_ci } else if (key === 'mid') { 160fb726d48Sopenharmony_ci //@ts-ignore 161fb726d48Sopenharmony_ci this.sortByColumn(evt.detail, tab, this.dataMid); 162fb726d48Sopenharmony_ci } else if (key === 'big') { 163fb726d48Sopenharmony_ci //@ts-ignore 164fb726d48Sopenharmony_ci this.sortByColumn(evt.detail, tab, this.dataBig); 165fb726d48Sopenharmony_ci } 166fb726d48Sopenharmony_ci }); 167fb726d48Sopenharmony_ci tab!.addEventListener('row-hover', (evt: unknown): void => { 168fb726d48Sopenharmony_ci //@ts-ignore 169fb726d48Sopenharmony_ci if (evt.detail.data) { 170fb726d48Sopenharmony_ci //@ts-ignore 171fb726d48Sopenharmony_ci let data = evt.detail.data; 172fb726d48Sopenharmony_ci data.isHover = true; 173fb726d48Sopenharmony_ci //@ts-ignore 174fb726d48Sopenharmony_ci if ((evt.detail as unknown).callBack) { 175fb726d48Sopenharmony_ci //@ts-ignore 176fb726d48Sopenharmony_ci (evt.detail as unknown).callBack(true); 177fb726d48Sopenharmony_ci } 178fb726d48Sopenharmony_ci chart.showHoverColumn(data.no); 179fb726d48Sopenharmony_ci } 180fb726d48Sopenharmony_ci }); 181fb726d48Sopenharmony_ci } 182fb726d48Sopenharmony_ci } 183fb726d48Sopenharmony_ci 184fb726d48Sopenharmony_ci sortByColumn(detail: unknown, table: LitTable | null | undefined, data: Array<unknown>): void { 185fb726d48Sopenharmony_ci // @ts-ignore 186fb726d48Sopenharmony_ci function compare(threadCpuUsageProperty, sort, type) { 187fb726d48Sopenharmony_ci return function (a: unknown, b: unknown) { 188fb726d48Sopenharmony_ci if (type === 'number') { 189fb726d48Sopenharmony_ci return sort === 2 190fb726d48Sopenharmony_ci ? // @ts-ignore 191fb726d48Sopenharmony_ci parseFloat(b[threadCpuUsageProperty]) - parseFloat(a[threadCpuUsageProperty]) 192fb726d48Sopenharmony_ci : //@ts-ignore 193fb726d48Sopenharmony_ci parseFloat(a[threadCpuUsageProperty]) - parseFloat(b[threadCpuUsageProperty]); 194fb726d48Sopenharmony_ci } else { 195fb726d48Sopenharmony_ci if (sort === 2) { 196fb726d48Sopenharmony_ci //@ts-ignore 197fb726d48Sopenharmony_ci return b[threadCpuUsageProperty].toString().localeCompare(a[threadCpuUsageProperty].toString()); 198fb726d48Sopenharmony_ci } else { 199fb726d48Sopenharmony_ci //@ts-ignore 200fb726d48Sopenharmony_ci return a[threadCpuUsageProperty].toString().localeCompare(b[threadCpuUsageProperty].toString()); 201fb726d48Sopenharmony_ci } 202fb726d48Sopenharmony_ci } 203fb726d48Sopenharmony_ci }; 204fb726d48Sopenharmony_ci } 205fb726d48Sopenharmony_ci 206fb726d48Sopenharmony_ci let type = 'number'; 207fb726d48Sopenharmony_ci //@ts-ignore 208fb726d48Sopenharmony_ci let key = detail.key; 209fb726d48Sopenharmony_ci 210fb726d48Sopenharmony_ci if (key === 'bigTimeStr') { 211fb726d48Sopenharmony_ci key = 'big'; 212fb726d48Sopenharmony_ci } else if (key === 'midTimeStr') { 213fb726d48Sopenharmony_ci key = 'mid'; 214fb726d48Sopenharmony_ci } else if (key === 'smallTimeStr') { 215fb726d48Sopenharmony_ci key = 'small'; 216fb726d48Sopenharmony_ci } else if ( 217fb726d48Sopenharmony_ci key === 'bigPercent' || 218fb726d48Sopenharmony_ci key === 'ratio' || 219fb726d48Sopenharmony_ci key === 'tid' || 220fb726d48Sopenharmony_ci key === 'pid' || 221fb726d48Sopenharmony_ci key === 'midPercent' || 222fb726d48Sopenharmony_ci key.includes('cpu') 223fb726d48Sopenharmony_ci ) { 224fb726d48Sopenharmony_ci } else { 225fb726d48Sopenharmony_ci type = 'string'; 226fb726d48Sopenharmony_ci } 227fb726d48Sopenharmony_ci //@ts-ignore 228fb726d48Sopenharmony_ci data.sort(compare(key, detail.sort, type)); 229fb726d48Sopenharmony_ci table!.recycleDataSource = data; 230fb726d48Sopenharmony_ci } 231fb726d48Sopenharmony_ci 232fb726d48Sopenharmony_ci init(): void { 233fb726d48Sopenharmony_ci if (!this.traceChange) { 234fb726d48Sopenharmony_ci for (let key of this.map!.keys()) { 235fb726d48Sopenharmony_ci this.map!.get(key)!.table.reMeauseHeight(); 236fb726d48Sopenharmony_ci } 237fb726d48Sopenharmony_ci return; 238fb726d48Sopenharmony_ci } 239fb726d48Sopenharmony_ci this.traceChange = false; 240fb726d48Sopenharmony_ci for (let key of this.map!.keys()) { 241fb726d48Sopenharmony_ci let table = this.map!.get(key)!.table; 242fb726d48Sopenharmony_ci table.innerHTML = ''; 243fb726d48Sopenharmony_ci let columns = this.getTableColumns(key); 244fb726d48Sopenharmony_ci for (let i = 0; i < SpSchedulingAnalysis.cpuCount; i++) { 245fb726d48Sopenharmony_ci columns = ` 246fb726d48Sopenharmony_ci ${columns} 247fb726d48Sopenharmony_ci <lit-table-column width="120px" title="cpu${i}(us)" data-index="cpu${i}" key="cpu${i}" align="flex-start" order></lit-table-column> 248fb726d48Sopenharmony_ci `; 249fb726d48Sopenharmony_ci } 250fb726d48Sopenharmony_ci table.innerHTML = columns; 251fb726d48Sopenharmony_ci } 252fb726d48Sopenharmony_ci 253fb726d48Sopenharmony_ci if (!CheckCpuSetting.init_setting) { 254fb726d48Sopenharmony_ci for (let node of this.shadowRoot!.querySelectorAll('.content_grid')) { 255fb726d48Sopenharmony_ci //@ts-ignore 256fb726d48Sopenharmony_ci (node as unknown).style.display = 'none'; 257fb726d48Sopenharmony_ci } 258fb726d48Sopenharmony_ci this.cpuSetting!.style.display = 'inline'; 259fb726d48Sopenharmony_ci this.cpuSetting?.init(); 260fb726d48Sopenharmony_ci } else { 261fb726d48Sopenharmony_ci this.queryData(); 262fb726d48Sopenharmony_ci } 263fb726d48Sopenharmony_ci } 264fb726d48Sopenharmony_ci 265fb726d48Sopenharmony_ci clearData(): void { 266fb726d48Sopenharmony_ci this.traceChange = true; 267fb726d48Sopenharmony_ci for (let key of this.map!.keys()) { 268fb726d48Sopenharmony_ci this.map!.get(key)!.chart.dataSource = []; 269fb726d48Sopenharmony_ci this.map!.get(key)!.table.recycleDataSource = []; 270fb726d48Sopenharmony_ci } 271fb726d48Sopenharmony_ci } 272fb726d48Sopenharmony_ci 273fb726d48Sopenharmony_ci queryData(): void { 274fb726d48Sopenharmony_ci this.progress!.loading = true; 275fb726d48Sopenharmony_ci this.queryLogicWorker('scheduling-Thread CpuUsage', 'query Thread Cpu Usage Analysis Time:', (res): void => { 276fb726d48Sopenharmony_ci //@ts-ignore 277fb726d48Sopenharmony_ci this.nodata!.noData = res.keys().length === 0; 278fb726d48Sopenharmony_ci for (let key of this.map!.keys()) { 279fb726d48Sopenharmony_ci let obj = this.map!.get(key)!; 280fb726d48Sopenharmony_ci //@ts-ignore 281fb726d48Sopenharmony_ci let source: unknown[] = res.get(key) || []; 282fb726d48Sopenharmony_ci source = source.map((it: unknown, index: number) => { 283fb726d48Sopenharmony_ci let data: unknown = { 284fb726d48Sopenharmony_ci //@ts-ignore 285fb726d48Sopenharmony_ci pid: it.pid, 286fb726d48Sopenharmony_ci //@ts-ignore 287fb726d48Sopenharmony_ci pName: it.pName, 288fb726d48Sopenharmony_ci //@ts-ignore 289fb726d48Sopenharmony_ci tid: it.tid, 290fb726d48Sopenharmony_ci //@ts-ignore 291fb726d48Sopenharmony_ci tName: it.tName, 292fb726d48Sopenharmony_ci //@ts-ignore 293fb726d48Sopenharmony_ci total: it.total, 294fb726d48Sopenharmony_ci //@ts-ignore 295fb726d48Sopenharmony_ci big: it.big, 296fb726d48Sopenharmony_ci //@ts-ignore 297fb726d48Sopenharmony_ci mid: it.mid, 298fb726d48Sopenharmony_ci //@ts-ignore 299fb726d48Sopenharmony_ci small: it.small, 300fb726d48Sopenharmony_ci no: index + 1, 301fb726d48Sopenharmony_ci visible: 1, 302fb726d48Sopenharmony_ci //@ts-ignore 303fb726d48Sopenharmony_ci bigPercent: it.bigPercent, 304fb726d48Sopenharmony_ci //@ts-ignore 305fb726d48Sopenharmony_ci midPercent: it.midPercent, 306fb726d48Sopenharmony_ci //@ts-ignore 307fb726d48Sopenharmony_ci smallPercent: it.smallPercent, 308fb726d48Sopenharmony_ci //@ts-ignore 309fb726d48Sopenharmony_ci bigTimeStr: it.bigTimeStr, 310fb726d48Sopenharmony_ci //@ts-ignore 311fb726d48Sopenharmony_ci midTimeStr: it.midTimeStr, 312fb726d48Sopenharmony_ci //@ts-ignore 313fb726d48Sopenharmony_ci smallTimeStr: it.smallTimeStr, 314fb726d48Sopenharmony_ci hideHandler: (): void => { 315fb726d48Sopenharmony_ci //@ts-ignore 316fb726d48Sopenharmony_ci let arr = source.filter((o) => o.visible === 1); 317fb726d48Sopenharmony_ci obj.chart.dataSource = this.getArrayDataBySize(key, arr); 318fb726d48Sopenharmony_ci }, 319fb726d48Sopenharmony_ci }; 320fb726d48Sopenharmony_ci for (let i = 0; i < SpSchedulingAnalysis.cpuCount; i++) { 321fb726d48Sopenharmony_ci //@ts-ignore 322fb726d48Sopenharmony_ci data[`cpu${i}`] = (it[`cpu${i}`] || 0) / 1000; 323fb726d48Sopenharmony_ci } 324fb726d48Sopenharmony_ci return data; 325fb726d48Sopenharmony_ci }); 326fb726d48Sopenharmony_ci this.setChartConfig(obj, key, source); 327fb726d48Sopenharmony_ci this.assignmentData(key, source, obj); 328fb726d48Sopenharmony_ci } 329fb726d48Sopenharmony_ci this.progress!.loading = false; 330fb726d48Sopenharmony_ci }); 331fb726d48Sopenharmony_ci } 332fb726d48Sopenharmony_ci 333fb726d48Sopenharmony_ci private assignmentData(key: string, source: unknown[], obj: { chart: LitChartColumn; table: LitTable }): void { 334fb726d48Sopenharmony_ci if (key === 'total') { 335fb726d48Sopenharmony_ci this.data = source; 336fb726d48Sopenharmony_ci } else if (key === 'small') { 337fb726d48Sopenharmony_ci this.dataSmall = source; 338fb726d48Sopenharmony_ci } else if (key === 'mid') { 339fb726d48Sopenharmony_ci this.dataMid = source; 340fb726d48Sopenharmony_ci } else if (key === 'big') { 341fb726d48Sopenharmony_ci this.dataBig = source; 342fb726d48Sopenharmony_ci } 343fb726d48Sopenharmony_ci //@ts-ignore 344fb726d48Sopenharmony_ci if (this.sort[key].key !== '') { 345fb726d48Sopenharmony_ci //@ts-ignore 346fb726d48Sopenharmony_ci this.sortByColumn(this.sort[key], obj.table, source); 347fb726d48Sopenharmony_ci } else { 348fb726d48Sopenharmony_ci obj.table.recycleDataSource = source; 349fb726d48Sopenharmony_ci } 350fb726d48Sopenharmony_ci } 351fb726d48Sopenharmony_ci 352fb726d48Sopenharmony_ci private setChartConfig(obj: { chart: LitChartColumn; table: LitTable }, key: string, source: unknown[]): void { 353fb726d48Sopenharmony_ci obj.chart.config = { 354fb726d48Sopenharmony_ci data: this.getArrayDataBySize(key, source), 355fb726d48Sopenharmony_ci appendPadding: 10, 356fb726d48Sopenharmony_ci xField: 'tid', 357fb726d48Sopenharmony_ci yField: 'total', 358fb726d48Sopenharmony_ci seriesField: key === 'total' ? 'size' : '', 359fb726d48Sopenharmony_ci color: (a): string => { 360fb726d48Sopenharmony_ci //@ts-ignore 361fb726d48Sopenharmony_ci if (a.size === 'big core') { 362fb726d48Sopenharmony_ci return '#2f72f8'; //@ts-ignore 363fb726d48Sopenharmony_ci } else if (a.size === 'middle core') { 364fb726d48Sopenharmony_ci return '#ffab67'; //@ts-ignore 365fb726d48Sopenharmony_ci } else if (a.size === 'small core') { 366fb726d48Sopenharmony_ci return '#a285d2'; 367fb726d48Sopenharmony_ci } else { 368fb726d48Sopenharmony_ci return '#0a59f7'; 369fb726d48Sopenharmony_ci } 370fb726d48Sopenharmony_ci }, 371fb726d48Sopenharmony_ci hoverHandler: (no): void => { 372fb726d48Sopenharmony_ci this.setHover(source, no, obj); 373fb726d48Sopenharmony_ci }, 374fb726d48Sopenharmony_ci tip: (a): string => { 375fb726d48Sopenharmony_ci //@ts-ignore 376fb726d48Sopenharmony_ci if (a && a[0]) { 377fb726d48Sopenharmony_ci let tip = ''; 378fb726d48Sopenharmony_ci let total = 0; //@ts-ignore 379fb726d48Sopenharmony_ci for (let obj of a) { 380fb726d48Sopenharmony_ci total += obj.obj.total; 381fb726d48Sopenharmony_ci tip = `${tip} 382fb726d48Sopenharmony_ci <div style="display:flex;flex-direction: row;align-items: center;"> 383fb726d48Sopenharmony_ci <div style="width: 10px;height: 5px;background-color: ${obj.color}; 384fb726d48Sopenharmony_ci margin-right: 5px"></div> 385fb726d48Sopenharmony_ci <div>${obj.type || key}:${obj.obj.timeStr}</div> 386fb726d48Sopenharmony_ci </div> 387fb726d48Sopenharmony_ci `; 388fb726d48Sopenharmony_ci } 389fb726d48Sopenharmony_ci tip = `<div> 390fb726d48Sopenharmony_ci <div>tid:${ 391fb726d48Sopenharmony_ci //@ts-ignore 392fb726d48Sopenharmony_ci a[0].obj.tid 393fb726d48Sopenharmony_ci }</div> 394fb726d48Sopenharmony_ci ${tip} 395fb726d48Sopenharmony_ci ${ 396fb726d48Sopenharmony_ci //@ts-ignore 397fb726d48Sopenharmony_ci a.length > 1 ? `<div>total:${getProbablyTime(total)}</div>` : '' 398fb726d48Sopenharmony_ci } 399fb726d48Sopenharmony_ci </div>`; 400fb726d48Sopenharmony_ci return tip; 401fb726d48Sopenharmony_ci } else { 402fb726d48Sopenharmony_ci return ''; 403fb726d48Sopenharmony_ci } 404fb726d48Sopenharmony_ci }, 405fb726d48Sopenharmony_ci label: null, 406fb726d48Sopenharmony_ci }; 407fb726d48Sopenharmony_ci } 408fb726d48Sopenharmony_ci 409fb726d48Sopenharmony_ci private setHover(source: unknown[], no: number, obj: { chart: LitChartColumn; table: LitTable }): void { 410fb726d48Sopenharmony_ci //@ts-ignore 411fb726d48Sopenharmony_ci let data = source.find((it) => it.no === no); 412fb726d48Sopenharmony_ci if (data) { 413fb726d48Sopenharmony_ci //@ts-ignore 414fb726d48Sopenharmony_ci data.isHover = true; 415fb726d48Sopenharmony_ci obj.table!.setCurrentHover(data); 416fb726d48Sopenharmony_ci } else { 417fb726d48Sopenharmony_ci obj.table!.mouseOut(); 418fb726d48Sopenharmony_ci } 419fb726d48Sopenharmony_ci } 420fb726d48Sopenharmony_ci 421fb726d48Sopenharmony_ci getArrayDataBySize(type: string, arr: Array<unknown>): unknown[] { 422fb726d48Sopenharmony_ci let data: unknown[] = []; 423fb726d48Sopenharmony_ci for (let obj of arr) { 424fb726d48Sopenharmony_ci if (type === 'total') { 425fb726d48Sopenharmony_ci data.push({ 426fb726d48Sopenharmony_ci //@ts-ignore 427fb726d48Sopenharmony_ci pid: obj.pid, //@ts-ignore 428fb726d48Sopenharmony_ci pName: obj.pName, //@ts-ignore 429fb726d48Sopenharmony_ci tid: obj.tid, //@ts-ignore 430fb726d48Sopenharmony_ci tName: obj.tName, //@ts-ignore 431fb726d48Sopenharmony_ci total: obj.big, 432fb726d48Sopenharmony_ci size: 'big core', //@ts-ignore 433fb726d48Sopenharmony_ci no: obj.no, //@ts-ignore 434fb726d48Sopenharmony_ci timeStr: obj.bigTimeStr, 435fb726d48Sopenharmony_ci }); 436fb726d48Sopenharmony_ci data.push({ 437fb726d48Sopenharmony_ci //@ts-ignore 438fb726d48Sopenharmony_ci pid: obj.pid, //@ts-ignore 439fb726d48Sopenharmony_ci pName: obj.pName, //@ts-ignore 440fb726d48Sopenharmony_ci tid: obj.tid, //@ts-ignore 441fb726d48Sopenharmony_ci tName: obj.tName, //@ts-ignore 442fb726d48Sopenharmony_ci total: obj.mid, 443fb726d48Sopenharmony_ci size: 'middle core', //@ts-ignore 444fb726d48Sopenharmony_ci no: obj.no, //@ts-ignore 445fb726d48Sopenharmony_ci timeStr: obj.midTimeStr, 446fb726d48Sopenharmony_ci }); 447fb726d48Sopenharmony_ci data.push({ 448fb726d48Sopenharmony_ci //@ts-ignore 449fb726d48Sopenharmony_ci pid: obj.pid, //@ts-ignore 450fb726d48Sopenharmony_ci pName: obj.pName, //@ts-ignore 451fb726d48Sopenharmony_ci tid: obj.tid, //@ts-ignore 452fb726d48Sopenharmony_ci tName: obj.tName, //@ts-ignore 453fb726d48Sopenharmony_ci total: obj.small, 454fb726d48Sopenharmony_ci size: 'small core', //@ts-ignore 455fb726d48Sopenharmony_ci no: obj.no, //@ts-ignore 456fb726d48Sopenharmony_ci timeStr: obj.smallTimeStr, 457fb726d48Sopenharmony_ci }); 458fb726d48Sopenharmony_ci } else { 459fb726d48Sopenharmony_ci data.push({ 460fb726d48Sopenharmony_ci //@ts-ignore 461fb726d48Sopenharmony_ci pid: obj.pid, //@ts-ignore 462fb726d48Sopenharmony_ci pName: obj.pName, //@ts-ignore 463fb726d48Sopenharmony_ci tid: obj.tid, //@ts-ignore 464fb726d48Sopenharmony_ci tName: obj.tName, //@ts-ignore 465fb726d48Sopenharmony_ci total: obj[type], //@ts-ignore 466fb726d48Sopenharmony_ci no: obj.no, //@ts-ignore 467fb726d48Sopenharmony_ci timeStr: obj[`${type}TimeStr`], 468fb726d48Sopenharmony_ci }); 469fb726d48Sopenharmony_ci } 470fb726d48Sopenharmony_ci } 471fb726d48Sopenharmony_ci return data; 472fb726d48Sopenharmony_ci } 473fb726d48Sopenharmony_ci 474fb726d48Sopenharmony_ci queryLogicWorker(option: string, log: string, handler: (res: unknown) => void): void { 475fb726d48Sopenharmony_ci let time = new Date().getTime(); 476fb726d48Sopenharmony_ci procedurePool.submitWithName( 477fb726d48Sopenharmony_ci 'logic0', 478fb726d48Sopenharmony_ci option, 479fb726d48Sopenharmony_ci { 480fb726d48Sopenharmony_ci bigCores: CheckCpuSetting.big_cores, 481fb726d48Sopenharmony_ci midCores: CheckCpuSetting.mid_cores, 482fb726d48Sopenharmony_ci smallCores: CheckCpuSetting.small_cores, 483fb726d48Sopenharmony_ci }, 484fb726d48Sopenharmony_ci undefined, 485fb726d48Sopenharmony_ci handler 486fb726d48Sopenharmony_ci ); 487fb726d48Sopenharmony_ci let durTime = new Date().getTime() - time; 488fb726d48Sopenharmony_ci info(log, durTime); 489fb726d48Sopenharmony_ci } 490fb726d48Sopenharmony_ci 491fb726d48Sopenharmony_ci getTableColumns(type: string): string { 492fb726d48Sopenharmony_ci if (type === 'total') { 493fb726d48Sopenharmony_ci return `${this.publicColumns}${this.bigColumn}${this.midColumn}${this.smallColumn}`; 494fb726d48Sopenharmony_ci } else if (type === 'big') { 495fb726d48Sopenharmony_ci return `${this.publicColumns}${this.bigColumn}`; 496fb726d48Sopenharmony_ci } else if (type === 'mid') { 497fb726d48Sopenharmony_ci return `${this.publicColumns}${this.midColumn}`; 498fb726d48Sopenharmony_ci } else if (type === 'small') { 499fb726d48Sopenharmony_ci return `${this.publicColumns}${this.smallColumn}`; 500fb726d48Sopenharmony_ci } else { 501fb726d48Sopenharmony_ci return ''; 502fb726d48Sopenharmony_ci } 503fb726d48Sopenharmony_ci } 504fb726d48Sopenharmony_ci 505fb726d48Sopenharmony_ci initHtml(): string { 506fb726d48Sopenharmony_ci return Top20ThreadCpuUsageHtml; 507fb726d48Sopenharmony_ci } 508fb726d48Sopenharmony_ci} 509