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 { getThreadPoolTraceBufferCacheKey } from './database/SqlLite'; 17fb726d48Sopenharmony_ci 18fb726d48Sopenharmony_ciexport enum TraceMode { 19fb726d48Sopenharmony_ci NORMAL, 20fb726d48Sopenharmony_ci LONG_TRACE, 21fb726d48Sopenharmony_ci DISTRIBUTED, 22fb726d48Sopenharmony_ci} 23fb726d48Sopenharmony_ci 24fb726d48Sopenharmony_ciexport const applicationHtml: string = ` 25fb726d48Sopenharmony_ci <style> 26fb726d48Sopenharmony_ci :host{ 27fb726d48Sopenharmony_ci 28fb726d48Sopenharmony_ci } 29fb726d48Sopenharmony_ci .dark{ 30fb726d48Sopenharmony_ci --dark-background: #272C34; 31fb726d48Sopenharmony_ci --dark-background1: #424851; 32fb726d48Sopenharmony_ci --dark-background2: #262f3c; 33fb726d48Sopenharmony_ci --dark-background3: #292D33; 34fb726d48Sopenharmony_ci --dark-background4: #323841; 35fb726d48Sopenharmony_ci --dark-background5: #333840; 36fb726d48Sopenharmony_ci --dark-background6: rgba(82,145,255,0.2); 37fb726d48Sopenharmony_ci --dark-background7: #494d52; 38fb726d48Sopenharmony_ci --dark-background8: #5291FF; 39fb726d48Sopenharmony_ci --dark-color: rgba(255,255,255,0.6); 40fb726d48Sopenharmony_ci --dark-color1: rgba(255,255,255,0.86); 41fb726d48Sopenharmony_ci --dark-color2: rgba(255,255,255,0.9); 42fb726d48Sopenharmony_ci --dark-border: #474F59; 43fb726d48Sopenharmony_ci --dark-color3:#4694C2; 44fb726d48Sopenharmony_ci --dark-color4:#5AADA0; 45fb726d48Sopenharmony_ci --dark-border1: #454E5A; 46fb726d48Sopenharmony_ci --bark-expansion:#0076FF; 47fb726d48Sopenharmony_ci --bark-prompt:#9e9e9e; 48fb726d48Sopenharmony_ci --dark-icon:#adafb3; 49fb726d48Sopenharmony_ci --dark-img: url('img/dark_pic.png'); 50fb726d48Sopenharmony_ci background: #272C34; 51fb726d48Sopenharmony_ci color: #FFFFFF; 52fb726d48Sopenharmony_ci } 53fb726d48Sopenharmony_ci .root{ 54fb726d48Sopenharmony_ci display: grid; 55fb726d48Sopenharmony_ci grid-template-rows: min-content 1fr; 56fb726d48Sopenharmony_ci grid-template-columns: min-content 1fr; 57fb726d48Sopenharmony_ci grid-template-areas: 'm s' 58fb726d48Sopenharmony_ci 'm b'; 59fb726d48Sopenharmony_ci height: 100vh; 60fb726d48Sopenharmony_ci width: 100vw; 61fb726d48Sopenharmony_ci } 62fb726d48Sopenharmony_ci .filedrag::after { 63fb726d48Sopenharmony_ci content: 'Drop the trace file to open it'; 64fb726d48Sopenharmony_ci position: fixed; 65fb726d48Sopenharmony_ci z-index: 2001; 66fb726d48Sopenharmony_ci top: 0; 67fb726d48Sopenharmony_ci left: 0; 68fb726d48Sopenharmony_ci right: 0; 69fb726d48Sopenharmony_ci bottom: 0; 70fb726d48Sopenharmony_ci border: 5px dashed var(--dark-color1,#404854); 71fb726d48Sopenharmony_ci text-align: center; 72fb726d48Sopenharmony_ci font-size: 3rem; 73fb726d48Sopenharmony_ci line-height: 100vh; 74fb726d48Sopenharmony_ci background: rgba(255, 255, 255, 0.5); 75fb726d48Sopenharmony_ci } 76fb726d48Sopenharmony_ci .menu{ 77fb726d48Sopenharmony_ci grid-area: m; 78fb726d48Sopenharmony_ci /*transition: all 0.2s;*/ 79fb726d48Sopenharmony_ci box-shadow: 4px 0px 20px rgba(0,0,0,0.05); 80fb726d48Sopenharmony_ci z-index: 2000; 81fb726d48Sopenharmony_ci } 82fb726d48Sopenharmony_ci .search-vessel{ 83fb726d48Sopenharmony_ci z-index: 999; 84fb726d48Sopenharmony_ci position: relative; 85fb726d48Sopenharmony_ci cursor: default; 86fb726d48Sopenharmony_ci } 87fb726d48Sopenharmony_ci .progress{ 88fb726d48Sopenharmony_ci bottom: 0; 89fb726d48Sopenharmony_ci position: absolute; 90fb726d48Sopenharmony_ci height: 1px; 91fb726d48Sopenharmony_ci left: 0; 92fb726d48Sopenharmony_ci right: 0; 93fb726d48Sopenharmony_ci } 94fb726d48Sopenharmony_ci 95fb726d48Sopenharmony_ci :host(:not([search])) .search-vessel { 96fb726d48Sopenharmony_ci display: none; 97fb726d48Sopenharmony_ci } 98fb726d48Sopenharmony_ci :host(:not([search])) .search-vessel .search { 99fb726d48Sopenharmony_ci background-color: var(--dark-background5,#F6F6F6); 100fb726d48Sopenharmony_ci } 101fb726d48Sopenharmony_ci .search{ 102fb726d48Sopenharmony_ci grid-area: s; 103fb726d48Sopenharmony_ci background-color: var(--dark-background,#FFFFFF); 104fb726d48Sopenharmony_ci height: 48px; 105fb726d48Sopenharmony_ci display: flex; 106fb726d48Sopenharmony_ci justify-content: center; 107fb726d48Sopenharmony_ci align-items: center; 108fb726d48Sopenharmony_ci 109fb726d48Sopenharmony_ci } 110fb726d48Sopenharmony_ci .search .search-bg{ 111fb726d48Sopenharmony_ci background-color: var(--dark-background5,#fff); 112fb726d48Sopenharmony_ci border-radius: 40px; 113fb726d48Sopenharmony_ci padding: 3px 20px; 114fb726d48Sopenharmony_ci display: flex; 115fb726d48Sopenharmony_ci justify-content: center; 116fb726d48Sopenharmony_ci align-items: center; 117fb726d48Sopenharmony_ci border: 1px solid var(--dark-border,#c5c5c5); 118fb726d48Sopenharmony_ci } 119fb726d48Sopenharmony_ci lit-search input{ 120fb726d48Sopenharmony_ci outline: none; 121fb726d48Sopenharmony_ci border: 0px; 122fb726d48Sopenharmony_ci background-color: transparent; 123fb726d48Sopenharmony_ci font-size: inherit; 124fb726d48Sopenharmony_ci color: var(--dark-color,#666666); 125fb726d48Sopenharmony_ci width: 30vw; 126fb726d48Sopenharmony_ci height: auto; 127fb726d48Sopenharmony_ci vertical-align:middle; 128fb726d48Sopenharmony_ci line-height:inherit; 129fb726d48Sopenharmony_ci height:inherit; 130fb726d48Sopenharmony_ci padding: 6px 6px 6px 6px}; 131fb726d48Sopenharmony_ci max-height: inherit; 132fb726d48Sopenharmony_ci box-sizing: border-box; 133fb726d48Sopenharmony_ci 134fb726d48Sopenharmony_ci } 135fb726d48Sopenharmony_ci ::placeholder { /* CSS 3 標準 */ 136fb726d48Sopenharmony_ci color: #b5b7ba; 137fb726d48Sopenharmony_ci font-size: 1em; 138fb726d48Sopenharmony_ci } 139fb726d48Sopenharmony_ci lit-search input::placeholder { 140fb726d48Sopenharmony_ci color: #b5b7ba; 141fb726d48Sopenharmony_ci font-size: 1em; 142fb726d48Sopenharmony_ci } 143fb726d48Sopenharmony_ci .content{ 144fb726d48Sopenharmony_ci grid-area: b; 145fb726d48Sopenharmony_ci background-color: #ffffff; 146fb726d48Sopenharmony_ci height: 100%; 147fb726d48Sopenharmony_ci overflow: auto; 148fb726d48Sopenharmony_ci position:relative; 149fb726d48Sopenharmony_ci } 150fb726d48Sopenharmony_ci .sheet{ 151fb726d48Sopenharmony_ci 152fb726d48Sopenharmony_ci } 153fb726d48Sopenharmony_ci .sidebar-button{ 154fb726d48Sopenharmony_ci position: absolute; 155fb726d48Sopenharmony_ci top: 0; 156fb726d48Sopenharmony_ci left: 0; 157fb726d48Sopenharmony_ci background-color: var(--dark-background1,#FFFFFF); 158fb726d48Sopenharmony_ci height: 100%; 159fb726d48Sopenharmony_ci border-radius: 0 5px 5px 0; 160fb726d48Sopenharmony_ci width: 48px; 161fb726d48Sopenharmony_ci display: flex; 162fb726d48Sopenharmony_ci align-content: center; 163fb726d48Sopenharmony_ci justify-content: center; 164fb726d48Sopenharmony_ci cursor: pointer; 165fb726d48Sopenharmony_ci } 166fb726d48Sopenharmony_ci :host{ 167fb726d48Sopenharmony_ci font-size: inherit; 168fb726d48Sopenharmony_ci display: inline-block; 169fb726d48Sopenharmony_ci transition: .3s; 170fb726d48Sopenharmony_ci } 171fb726d48Sopenharmony_ci :host([spin]){ 172fb726d48Sopenharmony_ci animation: rotate 1.75s linear infinite; 173fb726d48Sopenharmony_ci } 174fb726d48Sopenharmony_ci @keyframes rotate { 175fb726d48Sopenharmony_ci to{ 176fb726d48Sopenharmony_ci transform: rotate(360deg); 177fb726d48Sopenharmony_ci } 178fb726d48Sopenharmony_ci } 179fb726d48Sopenharmony_ci .icon{ 180fb726d48Sopenharmony_ci display: block; 181fb726d48Sopenharmony_ci width: 1em; 182fb726d48Sopenharmony_ci height: 1em; 183fb726d48Sopenharmony_ci margin: auto; 184fb726d48Sopenharmony_ci fill: currentColor; 185fb726d48Sopenharmony_ci overflow: hidden; 186fb726d48Sopenharmony_ci font-size: 20px; 187fb726d48Sopenharmony_ci color: #1E4EEA; 188fb726d48Sopenharmony_ci } 189fb726d48Sopenharmony_ci :host([chart_filter]) .chart-filter { 190fb726d48Sopenharmony_ci display: grid; 191fb726d48Sopenharmony_ci grid-template-rows: min-content min-content min-content max-content auto; 192fb726d48Sopenharmony_ci overflow-y: clip; 193fb726d48Sopenharmony_ci height: 99%; 194fb726d48Sopenharmony_ci visibility: visible; 195fb726d48Sopenharmony_ci position: absolute; 196fb726d48Sopenharmony_ci width: 40%; 197fb726d48Sopenharmony_ci right: 0; 198fb726d48Sopenharmony_ci z-index: 1001; 199fb726d48Sopenharmony_ci top: 0; 200fb726d48Sopenharmony_ci } 201fb726d48Sopenharmony_ci :host([custom-color]) .custom-color { 202fb726d48Sopenharmony_ci display: grid; 203fb726d48Sopenharmony_ci grid-template-rows: min-content min-content min-content max-content auto; 204fb726d48Sopenharmony_ci overflow-y: auto; 205fb726d48Sopenharmony_ci height: 100%; 206fb726d48Sopenharmony_ci visibility: visible; 207fb726d48Sopenharmony_ci position: absolute; 208fb726d48Sopenharmony_ci width: 50%; 209fb726d48Sopenharmony_ci right: 0; 210fb726d48Sopenharmony_ci z-index: 1002; 211fb726d48Sopenharmony_ci top: 0; 212fb726d48Sopenharmony_ci } 213fb726d48Sopenharmony_ci .filter-config { 214fb726d48Sopenharmony_ci opacity: 1; 215fb726d48Sopenharmony_ci visibility: hidden; 216fb726d48Sopenharmony_ci } 217fb726d48Sopenharmony_ci .filter-config:hover { 218fb726d48Sopenharmony_ci opacity: 0.7; 219fb726d48Sopenharmony_ci } 220fb726d48Sopenharmony_ci .page-button[prohibit] { 221fb726d48Sopenharmony_ci cursor: none; 222fb726d48Sopenharmony_ci } 223fb726d48Sopenharmony_ci .page-button { 224fb726d48Sopenharmony_ci background: #D8D8D8; 225fb726d48Sopenharmony_ci border-radius: 12px; 226fb726d48Sopenharmony_ci width: 24px; 227fb726d48Sopenharmony_ci height: 24px; 228fb726d48Sopenharmony_ci margin-right: 12px; 229fb726d48Sopenharmony_ci display: flex; 230fb726d48Sopenharmony_ci justify-content: center; 231fb726d48Sopenharmony_ci align-items: center; 232fb726d48Sopenharmony_ci } 233fb726d48Sopenharmony_ci #preview-button:hover { 234fb726d48Sopenharmony_ci cursor: pointer; 235fb726d48Sopenharmony_ci background: #0A59F7; 236fb726d48Sopenharmony_ci color: #FFFFFF; 237fb726d48Sopenharmony_ci opacity: 1; 238fb726d48Sopenharmony_ci } 239fb726d48Sopenharmony_ci #next-button:hover { 240fb726d48Sopenharmony_ci cursor: pointer; 241fb726d48Sopenharmony_ci background: #0A59F7; 242fb726d48Sopenharmony_ci color: #FFFFFF; 243fb726d48Sopenharmony_ci opacity: 1; 244fb726d48Sopenharmony_ci } 245fb726d48Sopenharmony_ci .pagination:hover { 246fb726d48Sopenharmony_ci cursor: pointer; 247fb726d48Sopenharmony_ci background: #0A59F7; 248fb726d48Sopenharmony_ci color: #FFFFFF; 249fb726d48Sopenharmony_ci opacity: 1; 250fb726d48Sopenharmony_ci } 251fb726d48Sopenharmony_ci .confirm-button:hover { 252fb726d48Sopenharmony_ci cursor: pointer; 253fb726d48Sopenharmony_ci background: #0A59F7; 254fb726d48Sopenharmony_ci color: #FFFFFF; 255fb726d48Sopenharmony_ci opacity: 1; 256fb726d48Sopenharmony_ci } 257fb726d48Sopenharmony_ci .pagination { 258fb726d48Sopenharmony_ci background: #D8D8D8; 259fb726d48Sopenharmony_ci color: #000000; 260fb726d48Sopenharmony_ci border-radius: 12px; 261fb726d48Sopenharmony_ci width: 24px; 262fb726d48Sopenharmony_ci height: 24px; 263fb726d48Sopenharmony_ci margin-right: 12px; 264fb726d48Sopenharmony_ci display: flex; 265fb726d48Sopenharmony_ci justify-content: center; 266fb726d48Sopenharmony_ci align-items: center; 267fb726d48Sopenharmony_ci font-family: Helvetica; 268fb726d48Sopenharmony_ci font-size: 12px; 269fb726d48Sopenharmony_ci text-align: center; 270fb726d48Sopenharmony_ci line-height: 20px; 271fb726d48Sopenharmony_ci font-weight: 400; 272fb726d48Sopenharmony_ci opacity: 0.6; 273fb726d48Sopenharmony_ci } 274fb726d48Sopenharmony_ci .pagination[selected] { 275fb726d48Sopenharmony_ci background: #0A59F7; 276fb726d48Sopenharmony_ci color: #FFFFFF; 277fb726d48Sopenharmony_ci opacity: 1; 278fb726d48Sopenharmony_ci } 279fb726d48Sopenharmony_ci .page-jump-font { 280fb726d48Sopenharmony_ci opacity: 0.6; 281fb726d48Sopenharmony_ci font-family: Helvetica; 282fb726d48Sopenharmony_ci font-size: 12px; 283fb726d48Sopenharmony_ci color: #000000; 284fb726d48Sopenharmony_ci text-align: center; 285fb726d48Sopenharmony_ci line-height: 20px; 286fb726d48Sopenharmony_ci font-weight: 400; 287fb726d48Sopenharmony_ci } 288fb726d48Sopenharmony_ci .page-input { 289fb726d48Sopenharmony_ci background: #D8D8D8; 290fb726d48Sopenharmony_ci border-radius: 10px; 291fb726d48Sopenharmony_ci width: 40px; 292fb726d48Sopenharmony_ci height: 24px; 293fb726d48Sopenharmony_ci justify-content: center; 294fb726d48Sopenharmony_ci align-items: center; 295fb726d48Sopenharmony_ci text-align: center; 296fb726d48Sopenharmony_ci margin-right: 8px; 297fb726d48Sopenharmony_ci border: none; 298fb726d48Sopenharmony_ci } 299fb726d48Sopenharmony_ci .confirm-button { 300fb726d48Sopenharmony_ci font-family: Helvetica; 301fb726d48Sopenharmony_ci font-size: 12px; 302fb726d48Sopenharmony_ci color: #0A59F7; 303fb726d48Sopenharmony_ci text-align: center; 304fb726d48Sopenharmony_ci font-weight: 400; 305fb726d48Sopenharmony_ci border: 1px solid #0A59F7; 306fb726d48Sopenharmony_ci border-radius: 10px; 307fb726d48Sopenharmony_ci width: 64px; 308fb726d48Sopenharmony_ci height: 24px; 309fb726d48Sopenharmony_ci line-height: 24px; 310fb726d48Sopenharmony_ci } 311fb726d48Sopenharmony_ci .long_trace_page { 312fb726d48Sopenharmony_ci justify-content: center; 313fb726d48Sopenharmony_ci width: -webkit-fill-available; 314fb726d48Sopenharmony_ci margin-right: 5.2em; 315fb726d48Sopenharmony_ci align-items: center; 316fb726d48Sopenharmony_ci display: none; 317fb726d48Sopenharmony_ci } 318fb726d48Sopenharmony_ci .content-center-option { 319fb726d48Sopenharmony_ci justify-content: center; 320fb726d48Sopenharmony_ci width: -webkit-fill-available; 321fb726d48Sopenharmony_ci margin-right: 5.2em; 322fb726d48Sopenharmony_ci align-items: center; 323fb726d48Sopenharmony_ci width: auto; 324fb726d48Sopenharmony_ci } 325fb726d48Sopenharmony_ci .page-number-list { 326fb726d48Sopenharmony_ci display: flex; 327fb726d48Sopenharmony_ci } 328fb726d48Sopenharmony_ci 329fb726d48Sopenharmony_ci #sp-ai-analysis { 330fb726d48Sopenharmony_ci top:0px; 331fb726d48Sopenharmony_ci right:0px; 332fb726d48Sopenharmony_ci position:absolute; 333fb726d48Sopenharmony_ci z-index:9999; 334fb726d48Sopenharmony_ci min-width:430px; 335fb726d48Sopenharmony_ci max-width:75%; 336fb726d48Sopenharmony_ci width:430px; 337fb726d48Sopenharmony_ci height:740px; 338fb726d48Sopenharmony_ci box-shadow:3px 0px 14px #000; 339fb726d48Sopenharmony_ci border-radius:8px; 340fb726d48Sopenharmony_ci background-color:#fff; 341fb726d48Sopenharmony_ci padding:10px 10px 10px 5px; 342fb726d48Sopenharmony_ci user-select:none; 343fb726d48Sopenharmony_ci box-sizing:border-box; 344fb726d48Sopenharmony_ci visibility:hidden; 345fb726d48Sopenharmony_ci } 346fb726d48Sopenharmony_ci </style> 347fb726d48Sopenharmony_ci <div class="root" style="position: relative;"> 348fb726d48Sopenharmony_ci <sp-bubble-ai style="visibility: visible; top:50%;right:2px;position: absolute;z-index: 1000" id="sp-bubbles"></sp-bubble-ai> 349fb726d48Sopenharmony_ci <sp-advertisement style="bottom:2px;right:2px;position: absolute;z-index: 10086" id= "sp-advertisement"></sp-advertisement> 350fb726d48Sopenharmony_ci <lit-main-menu id="main-menu" class="menu" data=''></lit-main-menu> 351fb726d48Sopenharmony_ci <sp-keyboard style="width:100%;height:100%;overflow:auto;visibility:hidden;top:0px;left:0px;right:0;bottom:0px;position:absolute;z-index: 8888" id="sp-keyboard"> 352fb726d48Sopenharmony_ci </sp-keyboard> 353fb726d48Sopenharmony_ci <div class="search-vessel"> 354fb726d48Sopenharmony_ci <div class="search" style="position: relative;"> 355fb726d48Sopenharmony_ci <div class="sidebar-button" style="width: 0"> 356fb726d48Sopenharmony_ci <svg class="icon" id="icon" aria-hidden="true" viewBox="0 0 1024 1024"> 357fb726d48Sopenharmony_ci <use id="use" xlink:href="./base-ui/icon.svg#icon-menu"></use> 358fb726d48Sopenharmony_ci </svg> 359fb726d48Sopenharmony_ci </div> 360fb726d48Sopenharmony_ci <div class = "content-left-option" style="text-align: left; 361fb726d48Sopenharmony_ci position: absolute;left: 5px ; cursor: pointer;top: 15px"> 362fb726d48Sopenharmony_ci <div title="Import Key Path" id="import-key-path" style="display: none ;text-align: left;cursor: pointer;"> 363fb726d48Sopenharmony_ci <input id="import-config" style="display: none;pointer-events: none" type="file" accept=".json" > 364fb726d48Sopenharmony_ci <label style="width: 20px;height: 20px;cursor: pointer;" for="import-config"> 365fb726d48Sopenharmony_ci <lit-icon id="import-btn" name="copy-csv" style="pointer-events: none" size="20"> 366fb726d48Sopenharmony_ci </lit-icon> 367fb726d48Sopenharmony_ci </label> 368fb726d48Sopenharmony_ci </div> 369fb726d48Sopenharmony_ci <lit-icon id="close-key-path" name="close" title="Close Key Path" color='#fff' size="20" style="display: none;text-align: left;cursor: pointer;"> 370fb726d48Sopenharmony_ci </lit-icon> 371fb726d48Sopenharmony_ci </div> 372fb726d48Sopenharmony_ci <lit-search id="lit-search"></lit-search> 373fb726d48Sopenharmony_ci <lit-search id="lit-record-search"></lit-search> 374fb726d48Sopenharmony_ci <div class="content-center-option" style="display: "> 375fb726d48Sopenharmony_ci <div class="long_trace_page" style="display: none;"> 376fb726d48Sopenharmony_ci <div class="page-button" id="preview-button"> 377fb726d48Sopenharmony_ci <img title="preview" src="img/preview.png"/> 378fb726d48Sopenharmony_ci </div> 379fb726d48Sopenharmony_ci <div class="page-number-list"></div> 380fb726d48Sopenharmony_ci <div class="page-button" id="next-button" style="margin-right: 8px;"> 381fb726d48Sopenharmony_ci <img title="next" src="img/next.png"/> 382fb726d48Sopenharmony_ci </div> 383fb726d48Sopenharmony_ci <div class="page-jump-font" style="margin-right: 8px;">To</div> 384fb726d48Sopenharmony_ci <input class="page-input" /> 385fb726d48Sopenharmony_ci <div class="confirm-button">Confirm</div> 386fb726d48Sopenharmony_ci </div> 387fb726d48Sopenharmony_ci </div> 388fb726d48Sopenharmony_ci </div> 389fb726d48Sopenharmony_ci <div class = "content-right-option" style="display: flex;flex-flow: nowrap;text-align: right;position: absolute;right: 1.2em;cursor: pointer;top: 17px""> 390fb726d48Sopenharmony_ci <img class="ai_analysis" title="Display Template" src="img/ai-analysis.png" style="margin-left: 0.8em;width:16px;height:16px"> 391fb726d48Sopenharmony_ci <lit-icon class="export-record" title="Download Mark Trace" name="download" size="16" style="margin-left: 0.8em;"></lit-icon> 392fb726d48Sopenharmony_ci <img class="cut-trace-file" title="Cut Trace File" src="img/menu-cut.svg" style="margin-left: 0.8em;"> 393fb726d48Sopenharmony_ci <img class="filter-config" title="Display Template" src="img/config_filter.png" style="margin-left: 0.8em;"> 394fb726d48Sopenharmony_ci </div> 395fb726d48Sopenharmony_ci <lit-progress-bar class="progress"></lit-progress-bar> 396fb726d48Sopenharmony_ci </div> 397fb726d48Sopenharmony_ci <div id="app-content" class="content"> 398fb726d48Sopenharmony_ci <sp-welcome style="visibility:visible;top:0px;left:0px;position:absolute;z-index: 100" id="sp-welcome"> 399fb726d48Sopenharmony_ci </sp-welcome> 400fb726d48Sopenharmony_ci <sp-ai-analysis id="sp-ai-analysis"> 401fb726d48Sopenharmony_ci </sp-ai-analysis> 402fb726d48Sopenharmony_ci <sp-system-trace style="visibility:hidden;z-index: 101;" id="sp-system-trace"> 403fb726d48Sopenharmony_ci </sp-system-trace> 404fb726d48Sopenharmony_ci <sp-record-trace style="overflow:auto;width:100%;height:100%;visibility:hidden;top:0px;left:0px;right:0;bottom:0px;position:absolute;z-index: 102" id="sp-record-trace"> 405fb726d48Sopenharmony_ci </sp-record-trace> 406fb726d48Sopenharmony_ci <sp-record-trace record_template='' style="overflow:auto;width:100%;height:100%;visibility:hidden;top:0px;left:0px;right:0;bottom:0px;position:absolute;z-index: 102" id="sp-record-template"> 407fb726d48Sopenharmony_ci </sp-record-trace> 408fb726d48Sopenharmony_ci <sp-scheduling-analysis style="width:100%;height:100%;overflow:auto;visibility:hidden;top:0;left:0;right:0;bottom:0;position:absolute;" id="sp-scheduling-analysis"></sp-scheduling-analysis> 409fb726d48Sopenharmony_ci <sp-metrics style="width:100%;height:100%;overflow:auto;visibility:hidden;top:0;left:0;right:0;bottom:0;position:absolute;z-index: 105" id="sp-metrics"> 410fb726d48Sopenharmony_ci </sp-metrics> 411fb726d48Sopenharmony_ci <sp-query-sql style="width:100%;height:100%;overflow:auto;visibility:hidden;top:0;left:0;right:0;bottom:0;position:absolute;z-index: 106" id="sp-query-sql"> 412fb726d48Sopenharmony_ci </sp-query-sql> 413fb726d48Sopenharmony_ci <sp-info-and-stats style="width:100%;height:100%;overflow:auto;visibility:hidden;top:0;left:0;right:0;bottom:0;position:absolute;z-index: 107" id="sp-info-and-stats"> 414fb726d48Sopenharmony_ci </sp-info-and-stats> 415fb726d48Sopenharmony_ci <sp-convert-trace style="width:100%;height:100%;overflow:auto;visibility:hidden;top:0;left:0;right:0;bottom:0;position:absolute;z-index: 107" id="sp-convert-trace"> 416fb726d48Sopenharmony_ci </sp-convert-trace> 417fb726d48Sopenharmony_ci <sp-help style="width:100%;height:100%;overflow:hidden;visibility:hidden;top:0px;left:0px;right:0;bottom:0px;position:absolute;z-index: 103" id="sp-help"> 418fb726d48Sopenharmony_ci </sp-help> 419fb726d48Sopenharmony_ci <sp-flags style="width:100%;height:100%;overflow:auto;visibility:hidden;top:0px;left:0px;right:0;bottom:0px;position:absolute;z-index: 104" id="sp-flags"> 420fb726d48Sopenharmony_ci </sp-flags> 421fb726d48Sopenharmony_ci <sp-third-party style="width:100%;height:100%;overflow:auto;visibility:hidden;top:0px;left:0px;right:0;bottom:0px;position:absolute;z-index: 104" id="sp-third-party"> 422fb726d48Sopenharmony_ci </sp-third-party> 423fb726d48Sopenharmony_ci <trace-row-config class="chart-filter" style="height:100%;top:0px;right:0;bottom:0px;position:absolute;z-index: 1001"></trace-row-config> 424fb726d48Sopenharmony_ci <custom-theme-color class="custom-color" style="height:100%;top:0px;right:0;bottom:0px;position:absolute;z-index: 1001"></custom-theme-color> 425fb726d48Sopenharmony_ci </div> 426fb726d48Sopenharmony_ci </div> 427fb726d48Sopenharmony_ci `; 428fb726d48Sopenharmony_ci 429fb726d48Sopenharmony_ciexport function readTraceFileBuffer(): Promise<ArrayBuffer | undefined> { 430fb726d48Sopenharmony_ci return new Promise((resolve) => { 431fb726d48Sopenharmony_ci caches.match(getThreadPoolTraceBufferCacheKey('1')).then((res) => { 432fb726d48Sopenharmony_ci if (res) { 433fb726d48Sopenharmony_ci res.arrayBuffer().then((buffer) => { 434fb726d48Sopenharmony_ci resolve(buffer); 435fb726d48Sopenharmony_ci }); 436fb726d48Sopenharmony_ci } else { 437fb726d48Sopenharmony_ci resolve(undefined); 438fb726d48Sopenharmony_ci } 439fb726d48Sopenharmony_ci }); 440fb726d48Sopenharmony_ci }); 441fb726d48Sopenharmony_ci} 442fb726d48Sopenharmony_ci 443fb726d48Sopenharmony_ciexport function clearTraceFileCache(): void { 444fb726d48Sopenharmony_ci caches.keys().then((keys) => { 445fb726d48Sopenharmony_ci keys.forEach((key) => { 446fb726d48Sopenharmony_ci if (key === getThreadPoolTraceBufferCacheKey('1')) { 447fb726d48Sopenharmony_ci caches.delete(key).then(); 448fb726d48Sopenharmony_ci } else if (key.includes('/') && key.includes('-')) { 449fb726d48Sopenharmony_ci let splits = key.split('/'); 450fb726d48Sopenharmony_ci let keyStr = splits[splits.length - 1]; 451fb726d48Sopenharmony_ci let time = keyStr.split('-')[0]; 452fb726d48Sopenharmony_ci let fileDate = new Date(parseInt(time)); 453fb726d48Sopenharmony_ci if (fileDate.toLocaleDateString() !== new Date().toLocaleDateString()) { 454fb726d48Sopenharmony_ci //如果不是当天的缓存则删去缓存文件 455fb726d48Sopenharmony_ci caches.delete(key).then(); 456fb726d48Sopenharmony_ci } 457fb726d48Sopenharmony_ci } else { 458fb726d48Sopenharmony_ci caches.delete(key).then(); 459fb726d48Sopenharmony_ci } 460fb726d48Sopenharmony_ci }); 461fb726d48Sopenharmony_ci }); 462fb726d48Sopenharmony_ci} 463fb726d48Sopenharmony_ci 464fb726d48Sopenharmony_ciexport function postLog(filename: string, fileSize: string): void { 465fb726d48Sopenharmony_ci fetch(`https://${window.location.host.split(':')[0]}:${window.location.port}/logger`, { 466fb726d48Sopenharmony_ci method: 'POST', 467fb726d48Sopenharmony_ci headers: { 468fb726d48Sopenharmony_ci 'Content-Type': 'application/json', 469fb726d48Sopenharmony_ci }, 470fb726d48Sopenharmony_ci body: JSON.stringify({ 471fb726d48Sopenharmony_ci fileName: filename, 472fb726d48Sopenharmony_ci fileSize: fileSize, 473fb726d48Sopenharmony_ci }), 474fb726d48Sopenharmony_ci }) 475fb726d48Sopenharmony_ci .then((response) => response.json()) 476fb726d48Sopenharmony_ci .then((data) => { }) 477fb726d48Sopenharmony_ci .catch((error) => { }); 478fb726d48Sopenharmony_ci} 479fb726d48Sopenharmony_ci 480fb726d48Sopenharmony_ciexport function indexedDataToBufferData(sourceData: unknown): ArrayBuffer { 481fb726d48Sopenharmony_ci let uintArrayLength = 0; 482fb726d48Sopenharmony_ci //@ts-ignore 483fb726d48Sopenharmony_ci let uintDataList = sourceData.map((item: unknown) => { 484fb726d48Sopenharmony_ci //@ts-ignore 485fb726d48Sopenharmony_ci let currentBufData = new Uint8Array(item.buf); 486fb726d48Sopenharmony_ci uintArrayLength += currentBufData.length; 487fb726d48Sopenharmony_ci return currentBufData; 488fb726d48Sopenharmony_ci }); 489fb726d48Sopenharmony_ci let resultArrayBuffer = new ArrayBuffer(uintArrayLength); 490fb726d48Sopenharmony_ci let resultUintArray = new Uint8Array(resultArrayBuffer); 491fb726d48Sopenharmony_ci let offset = 0; 492fb726d48Sopenharmony_ci uintDataList.forEach((currentArray: Uint8Array) => { 493fb726d48Sopenharmony_ci resultUintArray.set(currentArray, offset); 494fb726d48Sopenharmony_ci offset += currentArray.length; 495fb726d48Sopenharmony_ci }); 496fb726d48Sopenharmony_ci return resultArrayBuffer; 497fb726d48Sopenharmony_ci} 498fb726d48Sopenharmony_ci 499fb726d48Sopenharmony_ciexport function findFreeSizeAlgorithm(numbers: Array<number>, freeSize: number): Array<number> { 500fb726d48Sopenharmony_ci let closestSize = 0; 501fb726d48Sopenharmony_ci let currentSize = 0; 502fb726d48Sopenharmony_ci let finalIndex: Array<number> = []; 503fb726d48Sopenharmony_ci let currentSelectIndex: Array<number> = []; 504fb726d48Sopenharmony_ci 505fb726d48Sopenharmony_ci function reBackFind(index: number): void { 506fb726d48Sopenharmony_ci if (index === numbers.length) { 507fb726d48Sopenharmony_ci const sumDifference = Math.abs(currentSize - freeSize); 508fb726d48Sopenharmony_ci if (currentSize <= freeSize && sumDifference < Math.abs(closestSize - freeSize)) { 509fb726d48Sopenharmony_ci closestSize = currentSize; 510fb726d48Sopenharmony_ci finalIndex = [...currentSelectIndex]; 511fb726d48Sopenharmony_ci } 512fb726d48Sopenharmony_ci return; 513fb726d48Sopenharmony_ci } 514fb726d48Sopenharmony_ci currentSize += numbers[index]; 515fb726d48Sopenharmony_ci currentSelectIndex.push(index); 516fb726d48Sopenharmony_ci reBackFind(index + 1); 517fb726d48Sopenharmony_ci currentSize -= numbers[index]; 518fb726d48Sopenharmony_ci currentSelectIndex.pop(); 519fb726d48Sopenharmony_ci reBackFind(index + 1); 520fb726d48Sopenharmony_ci } 521fb726d48Sopenharmony_ci 522fb726d48Sopenharmony_ci reBackFind(0); 523fb726d48Sopenharmony_ci return finalIndex; 524fb726d48Sopenharmony_ci} 525fb726d48Sopenharmony_ci 526fb726d48Sopenharmony_ciexport function getCurrentDataTime(): string[] { 527fb726d48Sopenharmony_ci let current = new Date(); 528fb726d48Sopenharmony_ci let year = '' + current.getFullYear(); 529fb726d48Sopenharmony_ci let month = ('0' + (current.getMonth() + 1)).slice(-2); 530fb726d48Sopenharmony_ci let day = ('0' + current.getDate()).slice(-2); 531fb726d48Sopenharmony_ci let hours = ('0' + current.getHours()).slice(-2); 532fb726d48Sopenharmony_ci let minutes = ('0' + current.getMinutes()).slice(-2); 533fb726d48Sopenharmony_ci let seconds = ('0' + current.getSeconds()).slice(-2); 534fb726d48Sopenharmony_ci return [year, month, day, hours, minutes, seconds]; 535fb726d48Sopenharmony_ci} 536