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 { JSONToCSV } from '../utils/CSVFormater'; 17fb726d48Sopenharmony_ci 18fb726d48Sopenharmony_ciexport const iconWidth = 20; 19fb726d48Sopenharmony_ciexport const iconPadding = 5; 20fb726d48Sopenharmony_ci 21fb726d48Sopenharmony_ciexport const litPageTableHtml = ` 22fb726d48Sopenharmony_ci <style> 23fb726d48Sopenharmony_ci :host{ 24fb726d48Sopenharmony_ci display: grid; 25fb726d48Sopenharmony_ci grid-template-columns: repeat(1,1fr); 26fb726d48Sopenharmony_ci width: 100%; 27fb726d48Sopenharmony_ci position: relative; 28fb726d48Sopenharmony_ci font-weight: 500; 29fb726d48Sopenharmony_ci flex:1; 30fb726d48Sopenharmony_ci } 31fb726d48Sopenharmony_ci .tr{ 32fb726d48Sopenharmony_ci display: grid; 33fb726d48Sopenharmony_ci grid-column-gap: 5px; 34fb726d48Sopenharmony_ci min-width:100%; 35fb726d48Sopenharmony_ci } 36fb726d48Sopenharmony_ci .tr:nth-of-type(even){ 37fb726d48Sopenharmony_ci } 38fb726d48Sopenharmony_ci .tr{ 39fb726d48Sopenharmony_ci background-color: var(--dark-background,#FFFFFF); 40fb726d48Sopenharmony_ci line-height: 27px; 41fb726d48Sopenharmony_ci } 42fb726d48Sopenharmony_ci .tr:hover{ 43fb726d48Sopenharmony_ci background-color: var(--dark-background6,#DEEDFF); 44fb726d48Sopenharmony_ci } 45fb726d48Sopenharmony_ci .tr[selected]{ 46fb726d48Sopenharmony_ci background-color: var(--dark-background6,#DEEDFF); 47fb726d48Sopenharmony_ci } 48fb726d48Sopenharmony_ci .tr[high-light]{ 49fb726d48Sopenharmony_ci font-weight: 600; 50fb726d48Sopenharmony_ci } 51fb726d48Sopenharmony_ci .td{ 52fb726d48Sopenharmony_ci box-sizing: border-box; 53fb726d48Sopenharmony_ci padding: 3px; 54fb726d48Sopenharmony_ci display: flex; 55fb726d48Sopenharmony_ci justify-content: flex-start; 56fb726d48Sopenharmony_ci align-items: center; 57fb726d48Sopenharmony_ci width: 100%; 58fb726d48Sopenharmony_ci height: auto; 59fb726d48Sopenharmony_ci line-height: 21px; 60fb726d48Sopenharmony_ci cursor: pointer; 61fb726d48Sopenharmony_ci } 62fb726d48Sopenharmony_ci .td label{ 63fb726d48Sopenharmony_ci overflow: hidden; 64fb726d48Sopenharmony_ci text-overflow: ellipsis; 65fb726d48Sopenharmony_ci white-space: normal; 66fb726d48Sopenharmony_ci } 67fb726d48Sopenharmony_ci .td text{ 68fb726d48Sopenharmony_ci overflow: hidden; 69fb726d48Sopenharmony_ci text-overflow: ellipsis; 70fb726d48Sopenharmony_ci white-space: nowrap; 71fb726d48Sopenharmony_ci } 72fb726d48Sopenharmony_ci .td-order{ 73fb726d48Sopenharmony_ci } 74fb726d48Sopenharmony_ci .td-order:before{ 75fb726d48Sopenharmony_ci 76fb726d48Sopenharmony_ci } 77fb726d48Sopenharmony_ci :host([grid-line]) .td{ 78fb726d48Sopenharmony_ci border-left: 1px solid #f0f0f0; 79fb726d48Sopenharmony_ci } 80fb726d48Sopenharmony_ci :host([grid-line]) .td:last-of-type{ 81fb726d48Sopenharmony_ci border-right: 1px solid #f0f0f0; 82fb726d48Sopenharmony_ci } 83fb726d48Sopenharmony_ci .table{ 84fb726d48Sopenharmony_ci width: 100%; 85fb726d48Sopenharmony_ci color: var(--dark-color2,#262626); 86fb726d48Sopenharmony_ci } 87fb726d48Sopenharmony_ci .thead{ 88fb726d48Sopenharmony_ci display: grid; 89fb726d48Sopenharmony_ci position: sticky; 90fb726d48Sopenharmony_ci top: 0; 91fb726d48Sopenharmony_ci font-weight: bold; 92fb726d48Sopenharmony_ci font-size: .9rem; 93fb726d48Sopenharmony_ci color: var(--dark-color1,#000); 94fb726d48Sopenharmony_ci background-color: var(--dark-background,#FFFFFF); 95fb726d48Sopenharmony_ci z-index: 1; 96fb726d48Sopenharmony_ci } 97fb726d48Sopenharmony_ci .tbody{ 98fb726d48Sopenharmony_ci width: 100%; 99fb726d48Sopenharmony_ci top: 0; 100fb726d48Sopenharmony_ci left: 0; 101fb726d48Sopenharmony_ci right:0; 102fb726d48Sopenharmony_ci bottom:0; 103fb726d48Sopenharmony_ci padding-bottom: 30px; 104fb726d48Sopenharmony_ci display: flex; 105fb726d48Sopenharmony_ci flex-direction: row 106fb726d48Sopenharmony_ci row-gap: 1px; 107fb726d48Sopenharmony_ci column-gap: 1px; 108fb726d48Sopenharmony_ci } 109fb726d48Sopenharmony_ci .tbottom{ 110fb726d48Sopenharmony_ci height: 30px; 111fb726d48Sopenharmony_ci width: calc(100% - 15px); 112fb726d48Sopenharmony_ci position: absolute; 113fb726d48Sopenharmony_ci bottom: 0; 114fb726d48Sopenharmony_ci z-index: 1; 115fb726d48Sopenharmony_ci justify-content: center; 116fb726d48Sopenharmony_ci align-items: center; 117fb726d48Sopenharmony_ci display: none; 118fb726d48Sopenharmony_ci flex-direction: row; 119fb726d48Sopenharmony_ci color: var(--dark-color1,#000); 120fb726d48Sopenharmony_ci background-color: var(--dark-background,#FFFFFF); 121fb726d48Sopenharmony_ci } 122fb726d48Sopenharmony_ci :host([pagination]) .tbottom{ 123fb726d48Sopenharmony_ci display: flex; 124fb726d48Sopenharmony_ci } 125fb726d48Sopenharmony_ci .tree{ 126fb726d48Sopenharmony_ci overflow-x:hidden; 127fb726d48Sopenharmony_ci overflow-y:hidden; 128fb726d48Sopenharmony_ci display: grid; 129fb726d48Sopenharmony_ci grid-template-columns: 1fr; 130fb726d48Sopenharmony_ci row-gap: 1px; 131fb726d48Sopenharmony_ci column-gap: 1px; 132fb726d48Sopenharmony_ci position:relative; 133fb726d48Sopenharmony_ci } 134fb726d48Sopenharmony_ci .tree:hover{ 135fb726d48Sopenharmony_ci overflow-x: overlay; 136fb726d48Sopenharmony_ci } 137fb726d48Sopenharmony_ci .tree-first-body{ 138fb726d48Sopenharmony_ci min-width: 100%; 139fb726d48Sopenharmony_ci box-sizing: border-box; 140fb726d48Sopenharmony_ci display:flex; 141fb726d48Sopenharmony_ci align-items:center; 142fb726d48Sopenharmony_ci white-space: nowrap; 143fb726d48Sopenharmony_ci font-weight: 500; 144fb726d48Sopenharmony_ci cursor: pointer; 145fb726d48Sopenharmony_ci } 146fb726d48Sopenharmony_ci .tree-first-body[high-light]{ 147fb726d48Sopenharmony_ci font-weight: 600; 148fb726d48Sopenharmony_ci } 149fb726d48Sopenharmony_ci .tree-first-body:hover{ 150fb726d48Sopenharmony_ci background-color: var(--dark-background6,#DEEDFF); /*antd #fafafa 42b983*/ 151fb726d48Sopenharmony_ci } 152fb726d48Sopenharmony_ci .body{ 153fb726d48Sopenharmony_ci display: grid; 154fb726d48Sopenharmony_ci grid-template-columns: 1fr; 155fb726d48Sopenharmony_ci row-gap: 1px; 156fb726d48Sopenharmony_ci column-gap: 1px; 157fb726d48Sopenharmony_ci flex:1; 158fb726d48Sopenharmony_ci position: relative; 159fb726d48Sopenharmony_ci } 160fb726d48Sopenharmony_ci :host([grid-line]) .tbody{ 161fb726d48Sopenharmony_ci border-bottom: 1px solid #f0f0f0; 162fb726d48Sopenharmony_ci background-color: #f0f0f0; 163fb726d48Sopenharmony_ci } 164fb726d48Sopenharmony_ci .th{ 165fb726d48Sopenharmony_ci grid-column-gap: 5px; 166fb726d48Sopenharmony_ci display: grid; 167fb726d48Sopenharmony_ci background-color: var(--dark-background,#FFFFFF); 168fb726d48Sopenharmony_ci } 169fb726d48Sopenharmony_ci 170fb726d48Sopenharmony_ci .tree-icon{ 171fb726d48Sopenharmony_ci font-size: 1.2rem; 172fb726d48Sopenharmony_ci width: 20px; 173fb726d48Sopenharmony_ci height: 20px; 174fb726d48Sopenharmony_ci padding-right: 5px; 175fb726d48Sopenharmony_ci padding-left: 5px; 176fb726d48Sopenharmony_ci cursor: pointer; 177fb726d48Sopenharmony_ci } 178fb726d48Sopenharmony_ci .tree-icon:hover{ 179fb726d48Sopenharmony_ci color: #42b983; 180fb726d48Sopenharmony_ci } 181fb726d48Sopenharmony_ci .row-checkbox,row-checkbox-all{ 182fb726d48Sopenharmony_ci 183fb726d48Sopenharmony_ci } 184fb726d48Sopenharmony_ci :host([no-head]) .thead{ 185fb726d48Sopenharmony_ci display: none; 186fb726d48Sopenharmony_ci } 187fb726d48Sopenharmony_ci .up-svg{ 188fb726d48Sopenharmony_ci position: absolute; 189fb726d48Sopenharmony_ci right: 5px; 190fb726d48Sopenharmony_ci top: 8px; 191fb726d48Sopenharmony_ci bottom: 8px; 192fb726d48Sopenharmony_ci width: 15px; 193fb726d48Sopenharmony_ci height: 15px; 194fb726d48Sopenharmony_ci } 195fb726d48Sopenharmony_ci .down-svg{ 196fb726d48Sopenharmony_ci position: absolute; 197fb726d48Sopenharmony_ci top: 8px; 198fb726d48Sopenharmony_ci right: 5px; 199fb726d48Sopenharmony_ci bottom: 8px; 200fb726d48Sopenharmony_ci width: 15px; 201fb726d48Sopenharmony_ci height: 15px; 202fb726d48Sopenharmony_ci } 203fb726d48Sopenharmony_ci .mouse-select{ 204fb726d48Sopenharmony_ci background-color: var(--dark-background6,#DEEDFF); 205fb726d48Sopenharmony_ci } 206fb726d48Sopenharmony_ci .mouse-in{ 207fb726d48Sopenharmony_ci background-color: var(--dark-background6,#DEEDFF); 208fb726d48Sopenharmony_ci } 209fb726d48Sopenharmony_ci .export{ 210fb726d48Sopenharmony_ci height:32px; 211fb726d48Sopenharmony_ci width: 32px; 212fb726d48Sopenharmony_ci cursor:pointer; 213fb726d48Sopenharmony_ci display:none; 214fb726d48Sopenharmony_ci align-items:center; 215fb726d48Sopenharmony_ci justify-content:center; 216fb726d48Sopenharmony_ci border-radius:5px; 217fb726d48Sopenharmony_ci box-sizing: border-box; 218fb726d48Sopenharmony_ci background-color: #000000; 219fb726d48Sopenharmony_ci opacity: 0.3; 220fb726d48Sopenharmony_ci position:absolute; 221fb726d48Sopenharmony_ci right:20px; 222fb726d48Sopenharmony_ci bottom:20px; 223fb726d48Sopenharmony_ci z-index: 999999; 224fb726d48Sopenharmony_ci } 225fb726d48Sopenharmony_ci .resize{ 226fb726d48Sopenharmony_ci width: 2px; 227fb726d48Sopenharmony_ci margin-right: 3px; 228fb726d48Sopenharmony_ci height: 20px; 229fb726d48Sopenharmony_ci background-color: #e0e0e0; 230fb726d48Sopenharmony_ci cursor: col-resize; 231fb726d48Sopenharmony_ci } 232fb726d48Sopenharmony_ci 233fb726d48Sopenharmony_ci .progress{ 234fb726d48Sopenharmony_ci position: absolute; 235fb726d48Sopenharmony_ci height: 1px; 236fb726d48Sopenharmony_ci top: 0; 237fb726d48Sopenharmony_ci left: 0; 238fb726d48Sopenharmony_ci right: 0; 239fb726d48Sopenharmony_ci z-index: 999999; 240fb726d48Sopenharmony_ci } 241fb726d48Sopenharmony_ci :host([hideDownload]) .export{ 242fb726d48Sopenharmony_ci display: none; 243fb726d48Sopenharmony_ci } 244fb726d48Sopenharmony_ci .td::-webkit-scrollbar { 245fb726d48Sopenharmony_ci width: 0; 246fb726d48Sopenharmony_ci background-color: transparent; 247fb726d48Sopenharmony_ci } 248fb726d48Sopenharmony_ci </style> 249fb726d48Sopenharmony_ci <lit-progress-bar id="export_progress_bar" class="progress"></lit-progress-bar> 250fb726d48Sopenharmony_ci <slot id="slot" style="display: none"></slot> 251fb726d48Sopenharmony_ci <slot name="head"></slot> 252fb726d48Sopenharmony_ci <div class="export"> 253fb726d48Sopenharmony_ci <lit-icon size="18" style="color: #ffffff" name="copyhovered" ></lit-icon> 254fb726d48Sopenharmony_ci </div> 255fb726d48Sopenharmony_ci <div class="table" style="overflow-x:auto;"> 256fb726d48Sopenharmony_ci <div class="thead"></div> 257fb726d48Sopenharmony_ci <div class="tbody"> 258fb726d48Sopenharmony_ci <div class="tree"></div> 259fb726d48Sopenharmony_ci <div class="body"></div> 260fb726d48Sopenharmony_ci </div> 261fb726d48Sopenharmony_ci <div class="tbottom"> 262fb726d48Sopenharmony_ci <div id="previousPage" style="cursor: pointer">上一页</div> 263fb726d48Sopenharmony_ci <div id="currentPage" style="margin-left: 10px;margin-right: 10px">1</div> 264fb726d48Sopenharmony_ci <input id="targetPage" style="width: 60px;margin-right: 10px" min="1" type="number"/> 265fb726d48Sopenharmony_ci <div id="jumpPage" style="padding: 2px 10px;border: 1px solid #676767;margin-right: 10px;font-size: 13px;cursor: pointer">GO</div> 266fb726d48Sopenharmony_ci <div id="nextPage" style="cursor: pointer">下一页</div> 267fb726d48Sopenharmony_ci </div> 268fb726d48Sopenharmony_ci </div> 269fb726d48Sopenharmony_ci `; 270fb726d48Sopenharmony_ci 271fb726d48Sopenharmony_ciexport const litTableHtml = ` 272fb726d48Sopenharmony_ci <style> 273fb726d48Sopenharmony_ci :host{ 274fb726d48Sopenharmony_ci display: grid; 275fb726d48Sopenharmony_ci grid-template-columns: repeat(1,1fr); 276fb726d48Sopenharmony_ci width: 100%; 277fb726d48Sopenharmony_ci position: relative; 278fb726d48Sopenharmony_ci font-weight: 500; 279fb726d48Sopenharmony_ci flex:1; 280fb726d48Sopenharmony_ci } 281fb726d48Sopenharmony_ci .tr{ 282fb726d48Sopenharmony_ci display: grid; 283fb726d48Sopenharmony_ci grid-column-gap: 5px; 284fb726d48Sopenharmony_ci min-width:100%; 285fb726d48Sopenharmony_ci } 286fb726d48Sopenharmony_ci .tr:nth-of-type(even){ 287fb726d48Sopenharmony_ci } 288fb726d48Sopenharmony_ci .tr{ 289fb726d48Sopenharmony_ci background-color: var(--dark-background,#FFFFFF); 290fb726d48Sopenharmony_ci } 291fb726d48Sopenharmony_ci .tr:hover{ 292fb726d48Sopenharmony_ci background-color: var(--dark-background6,#DEEDFF); 293fb726d48Sopenharmony_ci } 294fb726d48Sopenharmony_ci .tr[selected]{ 295fb726d48Sopenharmony_ci background-color: var(--dark-background6,#DEEDFF); 296fb726d48Sopenharmony_ci } 297fb726d48Sopenharmony_ci .tr[high-light]{ 298fb726d48Sopenharmony_ci font-weight: 600; 299fb726d48Sopenharmony_ci } 300fb726d48Sopenharmony_ci .td{ 301fb726d48Sopenharmony_ci box-sizing: border-box; 302fb726d48Sopenharmony_ci padding: 3px; 303fb726d48Sopenharmony_ci display: flex; 304fb726d48Sopenharmony_ci justify-content: flex-start; 305fb726d48Sopenharmony_ci align-items: center; 306fb726d48Sopenharmony_ci width: 100%; 307fb726d48Sopenharmony_ci height: auto; 308fb726d48Sopenharmony_ci line-height: 21px; 309fb726d48Sopenharmony_ci cursor: pointer; 310fb726d48Sopenharmony_ci } 311fb726d48Sopenharmony_ci .td label{ 312fb726d48Sopenharmony_ci overflow: hidden; 313fb726d48Sopenharmony_ci text-overflow: ellipsis; 314fb726d48Sopenharmony_ci white-space: normal; 315fb726d48Sopenharmony_ci } 316fb726d48Sopenharmony_ci .td text{ 317fb726d48Sopenharmony_ci overflow: hidden; 318fb726d48Sopenharmony_ci text-overflow: ellipsis; 319fb726d48Sopenharmony_ci white-space: nowrap; 320fb726d48Sopenharmony_ci } 321fb726d48Sopenharmony_ci .td-order{ 322fb726d48Sopenharmony_ci } 323fb726d48Sopenharmony_ci .td-order:before{ 324fb726d48Sopenharmony_ci 325fb726d48Sopenharmony_ci } 326fb726d48Sopenharmony_ci :host([grid-line]) .td{ 327fb726d48Sopenharmony_ci border-left: 1px solid #f0f0f0; 328fb726d48Sopenharmony_ci } 329fb726d48Sopenharmony_ci :host([grid-line]) .td:last-of-type{ 330fb726d48Sopenharmony_ci border-right: 1px solid #f0f0f0; 331fb726d48Sopenharmony_ci } 332fb726d48Sopenharmony_ci .table{ 333fb726d48Sopenharmony_ci width: 100%; 334fb726d48Sopenharmony_ci color: var(--dark-color2,#262626); 335fb726d48Sopenharmony_ci } 336fb726d48Sopenharmony_ci .thead{ 337fb726d48Sopenharmony_ci display: grid; 338fb726d48Sopenharmony_ci position: sticky; 339fb726d48Sopenharmony_ci top: 0; 340fb726d48Sopenharmony_ci font-weight: bold; 341fb726d48Sopenharmony_ci font-size: .9rem; 342fb726d48Sopenharmony_ci color: var(--dark-color1,#000); 343fb726d48Sopenharmony_ci background-color: var(--dark-background,#FFFFFF); 344fb726d48Sopenharmony_ci z-index: 1; 345fb726d48Sopenharmony_ci } 346fb726d48Sopenharmony_ci .tbody{ 347fb726d48Sopenharmony_ci width: 100%; 348fb726d48Sopenharmony_ci top: 0; 349fb726d48Sopenharmony_ci left: 0; 350fb726d48Sopenharmony_ci right:0; 351fb726d48Sopenharmony_ci bottom:0; 352fb726d48Sopenharmony_ci display: flex; 353fb726d48Sopenharmony_ci flex-direction: row 354fb726d48Sopenharmony_ci row-gap: 1px; 355fb726d48Sopenharmony_ci column-gap: 1px; 356fb726d48Sopenharmony_ci } 357fb726d48Sopenharmony_ci .tree{ 358fb726d48Sopenharmony_ci overflow-x:hidden; 359fb726d48Sopenharmony_ci overflow-y:hidden; 360fb726d48Sopenharmony_ci display: grid; 361fb726d48Sopenharmony_ci grid-template-columns: 1fr; 362fb726d48Sopenharmony_ci row-gap: 1px; 363fb726d48Sopenharmony_ci column-gap: 1px; 364fb726d48Sopenharmony_ci position:relative; 365fb726d48Sopenharmony_ci } 366fb726d48Sopenharmony_ci .tree:hover{ 367fb726d48Sopenharmony_ci overflow-x: overlay; 368fb726d48Sopenharmony_ci } 369fb726d48Sopenharmony_ci .tree-first-body{ 370fb726d48Sopenharmony_ci min-width: 100%; 371fb726d48Sopenharmony_ci box-sizing: border-box; 372fb726d48Sopenharmony_ci display:flex; 373fb726d48Sopenharmony_ci align-items:center; 374fb726d48Sopenharmony_ci white-space: nowrap; 375fb726d48Sopenharmony_ci font-weight: 500; 376fb726d48Sopenharmony_ci cursor: pointer; 377fb726d48Sopenharmony_ci } 378fb726d48Sopenharmony_ci .tree-first-body[high-light]{ 379fb726d48Sopenharmony_ci font-weight: 600; 380fb726d48Sopenharmony_ci } 381fb726d48Sopenharmony_ci .tree-first-body:hover{ 382fb726d48Sopenharmony_ci background-color: var(--dark-background6,#DEEDFF); /*antd #fafafa 42b983*/ 383fb726d48Sopenharmony_ci } 384fb726d48Sopenharmony_ci .body{ 385fb726d48Sopenharmony_ci display: grid; 386fb726d48Sopenharmony_ci grid-template-columns: 1fr; 387fb726d48Sopenharmony_ci row-gap: 1px; 388fb726d48Sopenharmony_ci column-gap: 1px; 389fb726d48Sopenharmony_ci flex:1; 390fb726d48Sopenharmony_ci position: relative; 391fb726d48Sopenharmony_ci } 392fb726d48Sopenharmony_ci :host([grid-line]) .tbody{ 393fb726d48Sopenharmony_ci border-bottom: 1px solid #f0f0f0; 394fb726d48Sopenharmony_ci background-color: #f0f0f0; 395fb726d48Sopenharmony_ci } 396fb726d48Sopenharmony_ci .th{ 397fb726d48Sopenharmony_ci grid-column-gap: 5px; 398fb726d48Sopenharmony_ci display: grid; 399fb726d48Sopenharmony_ci background-color: var(--dark-background,#FFFFFF); 400fb726d48Sopenharmony_ci } 401fb726d48Sopenharmony_ci :host([data-query-scene]) .th { 402fb726d48Sopenharmony_ci background-color: #F6F6F6; 403fb726d48Sopenharmony_ci color: #7E7E7E; 404fb726d48Sopenharmony_ci } 405fb726d48Sopenharmony_ci :host([data-query-scene]) .tr { 406fb726d48Sopenharmony_ci background-color: #F6F6F6; 407fb726d48Sopenharmony_ci } 408fb726d48Sopenharmony_ci .tree-icon{ 409fb726d48Sopenharmony_ci font-size: 1.2rem; 410fb726d48Sopenharmony_ci width: 20px; 411fb726d48Sopenharmony_ci height: 20px; 412fb726d48Sopenharmony_ci padding-right: 5px; 413fb726d48Sopenharmony_ci padding-left: 5px; 414fb726d48Sopenharmony_ci cursor: pointer; 415fb726d48Sopenharmony_ci } 416fb726d48Sopenharmony_ci .tree-icon:hover{ 417fb726d48Sopenharmony_ci color: #42b983; 418fb726d48Sopenharmony_ci } 419fb726d48Sopenharmony_ci .row-checkbox,row-checkbox-all{ 420fb726d48Sopenharmony_ci 421fb726d48Sopenharmony_ci } 422fb726d48Sopenharmony_ci :host([no-head]) .thead{ 423fb726d48Sopenharmony_ci display: none; 424fb726d48Sopenharmony_ci } 425fb726d48Sopenharmony_ci .up-svg{ 426fb726d48Sopenharmony_ci position: absolute; 427fb726d48Sopenharmony_ci right: 5px; 428fb726d48Sopenharmony_ci top: 8px; 429fb726d48Sopenharmony_ci bottom: 8px; 430fb726d48Sopenharmony_ci width: 15px; 431fb726d48Sopenharmony_ci height: 15px; 432fb726d48Sopenharmony_ci } 433fb726d48Sopenharmony_ci .down-svg{ 434fb726d48Sopenharmony_ci position: absolute; 435fb726d48Sopenharmony_ci top: 8px; 436fb726d48Sopenharmony_ci right: 5px; 437fb726d48Sopenharmony_ci bottom: 8px; 438fb726d48Sopenharmony_ci width: 15px; 439fb726d48Sopenharmony_ci height: 15px; 440fb726d48Sopenharmony_ci } 441fb726d48Sopenharmony_ci .button-icon{ 442fb726d48Sopenharmony_ci height: 32px; 443fb726d48Sopenharmony_ci width: 164px; 444fb726d48Sopenharmony_ci color: black; 445fb726d48Sopenharmony_ci font-size: 14px; 446fb726d48Sopenharmony_ci border: 1px solid black; 447fb726d48Sopenharmony_ci display: flex; 448fb726d48Sopenharmony_ci flex-direction: row; 449fb726d48Sopenharmony_ci align-items: center; 450fb726d48Sopenharmony_ci justify-content: center; 451fb726d48Sopenharmony_ci cursor: pointer; 452fb726d48Sopenharmony_ci background: var(--dark-background3,#FFFFFF); 453fb726d48Sopenharmony_ci border-radius: 20px; 454fb726d48Sopenharmony_ci padding: 15px; 455fb726d48Sopenharmony_ci transition: opacity 0.2s; 456fb726d48Sopenharmony_ci outline: none; 457fb726d48Sopenharmony_ci position: relative; 458fb726d48Sopenharmony_ci overflow: hidden; 459fb726d48Sopenharmony_ci } 460fb726d48Sopenharmony_ci .button-icon:active { 461fb726d48Sopenharmony_ci background: var(--dark-background1,#f5f5f5) 462fb726d48Sopenharmony_ci } 463fb726d48Sopenharmony_ci .mouse-select{ 464fb726d48Sopenharmony_ci background-color: var(--dark-background6,#DEEDFF); 465fb726d48Sopenharmony_ci } 466fb726d48Sopenharmony_ci .mouse-in{ 467fb726d48Sopenharmony_ci background-color: var(--dark-background6,#DEEDFF); 468fb726d48Sopenharmony_ci } 469fb726d48Sopenharmony_ci .export{ 470fb726d48Sopenharmony_ci height:32px; 471fb726d48Sopenharmony_ci width: 32px; 472fb726d48Sopenharmony_ci cursor:pointer; 473fb726d48Sopenharmony_ci display:none; 474fb726d48Sopenharmony_ci align-items:center; 475fb726d48Sopenharmony_ci justify-content:center; 476fb726d48Sopenharmony_ci border-radius:5px; 477fb726d48Sopenharmony_ci box-sizing: border-box; 478fb726d48Sopenharmony_ci background-color: #000000; 479fb726d48Sopenharmony_ci opacity: 0.3; 480fb726d48Sopenharmony_ci position:absolute; 481fb726d48Sopenharmony_ci right:20px; 482fb726d48Sopenharmony_ci bottom:20px; 483fb726d48Sopenharmony_ci z-index: 999999; 484fb726d48Sopenharmony_ci } 485fb726d48Sopenharmony_ci .resize{ 486fb726d48Sopenharmony_ci width: 2px; 487fb726d48Sopenharmony_ci margin-right: 3px; 488fb726d48Sopenharmony_ci height: 20px; 489fb726d48Sopenharmony_ci background-color: #e0e0e0; 490fb726d48Sopenharmony_ci cursor: col-resize; 491fb726d48Sopenharmony_ci } 492fb726d48Sopenharmony_ci .progress{ 493fb726d48Sopenharmony_ci position: absolute; 494fb726d48Sopenharmony_ci height: 1px; 495fb726d48Sopenharmony_ci top: 0; 496fb726d48Sopenharmony_ci left: 0; 497fb726d48Sopenharmony_ci right: 0; 498fb726d48Sopenharmony_ci z-index: 999999; 499fb726d48Sopenharmony_ci } 500fb726d48Sopenharmony_ci :host([hideDownload]) .export{ 501fb726d48Sopenharmony_ci display: none; 502fb726d48Sopenharmony_ci } 503fb726d48Sopenharmony_ci </style> 504fb726d48Sopenharmony_ci <lit-progress-bar id="export_progress_bar" class="progress"></lit-progress-bar> 505fb726d48Sopenharmony_ci <slot id="slot" style="display: none"></slot> 506fb726d48Sopenharmony_ci <slot name="head"></slot> 507fb726d48Sopenharmony_ci <div class="export"> 508fb726d48Sopenharmony_ci <lit-icon size="18" style="color: #ffffff" name="copyhovered" ></lit-icon> 509fb726d48Sopenharmony_ci </div> 510fb726d48Sopenharmony_ci <div class="table" style="overflow-x:auto;"> 511fb726d48Sopenharmony_ci <div class="thead"></div> 512fb726d48Sopenharmony_ci <div class="tbody"> 513fb726d48Sopenharmony_ci <div class="tree"></div> 514fb726d48Sopenharmony_ci <div class="body"></div> 515fb726d48Sopenharmony_ci </div> 516fb726d48Sopenharmony_ci </div> 517fb726d48Sopenharmony_ci `; 518fb726d48Sopenharmony_ci 519fb726d48Sopenharmony_ciexport function createDownUpSvg(index: number, head: unknown): { upSvg: SVGSVGElement; downSvg: SVGSVGElement } { 520fb726d48Sopenharmony_ci let NS = 'http://www.w3.org/2000/svg'; 521fb726d48Sopenharmony_ci let upSvg: SVGSVGElement = document.createElementNS(NS, 'svg') as SVGSVGElement; 522fb726d48Sopenharmony_ci let upPath: Element = document.createElementNS(NS, 'path'); 523fb726d48Sopenharmony_ci upSvg.setAttribute('fill', 'let(--dark-color1,#212121)'); 524fb726d48Sopenharmony_ci upSvg.setAttribute('viewBox', '0 0 1024 1024'); 525fb726d48Sopenharmony_ci upSvg.setAttribute('stroke', 'let(--dark-color1,#212121)'); 526fb726d48Sopenharmony_ci upSvg.classList.add('up-svg'); 527fb726d48Sopenharmony_ci upPath.setAttribute( 528fb726d48Sopenharmony_ci 'd', 529fb726d48Sopenharmony_ci 'M858.9 689L530.5 308.2c-9.4-10.9-27.5-10.9-37 0L165.1 689c-12.2 14.2-1.2 35 18.5 35h656.8c19.7 0 30.7-20.8 18.5-35z' 530fb726d48Sopenharmony_ci ); 531fb726d48Sopenharmony_ci upSvg.appendChild(upPath); 532fb726d48Sopenharmony_ci let downSvg: SVGSVGElement = document.createElementNS(NS, 'svg') as SVGSVGElement; 533fb726d48Sopenharmony_ci let downPath: Element = document.createElementNS(NS, 'path'); 534fb726d48Sopenharmony_ci downSvg.setAttribute('fill', 'let(--dark-color1,#212121)'); 535fb726d48Sopenharmony_ci downSvg.setAttribute('viewBox', '0 0 1024 1024'); 536fb726d48Sopenharmony_ci downSvg.setAttribute('stroke', 'let(--dark-color1,#212121)'); 537fb726d48Sopenharmony_ci downSvg.classList.add('down-svg'); 538fb726d48Sopenharmony_ci downPath.setAttribute( 539fb726d48Sopenharmony_ci 'd', 540fb726d48Sopenharmony_ci 'M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z' 541fb726d48Sopenharmony_ci ); 542fb726d48Sopenharmony_ci downSvg.appendChild(downPath); 543fb726d48Sopenharmony_ci if (index === 0) { 544fb726d48Sopenharmony_ci //@ts-ignore 545fb726d48Sopenharmony_ci head.sortType = 0; // 默认以第一列 降序排序 作为默认排序 546fb726d48Sopenharmony_ci upSvg.setAttribute('fill', 'let(--dark-color1,#212121)'); 547fb726d48Sopenharmony_ci downSvg.setAttribute('fill', 'let(--dark-color1,#212121)'); 548fb726d48Sopenharmony_ci } 549fb726d48Sopenharmony_ci upSvg.style.display = 'none'; 550fb726d48Sopenharmony_ci downSvg.style.display = 'none'; //@ts-ignore 551fb726d48Sopenharmony_ci head.appendChild(upSvg); //@ts-ignore 552fb726d48Sopenharmony_ci head.appendChild(downSvg); 553fb726d48Sopenharmony_ci return { upSvg, downSvg }; 554fb726d48Sopenharmony_ci} 555fb726d48Sopenharmony_ci 556fb726d48Sopenharmony_ciexport function exportData(that: unknown): void { 557fb726d48Sopenharmony_ci //@ts-ignore 558fb726d48Sopenharmony_ci if (that.exportLoading || that.ds.length === 0) { 559fb726d48Sopenharmony_ci return; 560fb726d48Sopenharmony_ci } //@ts-ignore 561fb726d48Sopenharmony_ci that.exportLoading = true; //@ts-ignore 562fb726d48Sopenharmony_ci that.exportProgress!.loading = true; 563fb726d48Sopenharmony_ci let date = new Date(); 564fb726d48Sopenharmony_ci JSONToCSV.csvExport({ 565fb726d48Sopenharmony_ci //@ts-ignore 566fb726d48Sopenharmony_ci columns: that.columns as unknown[], //@ts-ignore 567fb726d48Sopenharmony_ci tables: that.ds, 568fb726d48Sopenharmony_ci fileName: `${date.getTime()}`, //@ts-ignore 569fb726d48Sopenharmony_ci columnFormatter: that.itemTextHandleMap, //@ts-ignore 570fb726d48Sopenharmony_ci exportFormatter: that.exportTextHandleMap, 571fb726d48Sopenharmony_ci }).then((res) => { 572fb726d48Sopenharmony_ci //@ts-ignore 573fb726d48Sopenharmony_ci that.exportLoading = false; //@ts-ignore 574fb726d48Sopenharmony_ci that.exportProgress!.loading = false; 575fb726d48Sopenharmony_ci }); 576fb726d48Sopenharmony_ci} 577fb726d48Sopenharmony_ci 578fb726d48Sopenharmony_ciexport function formatExportData(dataSource: unknown[], that: unknown): unknown[] { 579fb726d48Sopenharmony_ci if (dataSource === undefined || dataSource.length === 0) { 580fb726d48Sopenharmony_ci return []; 581fb726d48Sopenharmony_ci } //@ts-ignore 582fb726d48Sopenharmony_ci if (that.columns === undefined) { 583fb726d48Sopenharmony_ci return []; 584fb726d48Sopenharmony_ci } 585fb726d48Sopenharmony_ci return dataSource.map((item) => { 586fb726d48Sopenharmony_ci let formatData: unknown = {}; //@ts-ignore 587fb726d48Sopenharmony_ci that.columns!.forEach((column: unknown) => { 588fb726d48Sopenharmony_ci //@ts-ignore 589fb726d48Sopenharmony_ci let dataIndex = column.getAttribute('data-index'); //@ts-ignore 590fb726d48Sopenharmony_ci let columnName = column.getAttribute('title'); 591fb726d48Sopenharmony_ci if (columnName === '') { 592fb726d48Sopenharmony_ci columnName = dataIndex; 593fb726d48Sopenharmony_ci } //@ts-ignore 594fb726d48Sopenharmony_ci if (dataIndex && columnName && item[dataIndex] !== undefined) { 595fb726d48Sopenharmony_ci //@ts-ignore 596fb726d48Sopenharmony_ci formatData[columnName] = item[dataIndex]; 597fb726d48Sopenharmony_ci } 598fb726d48Sopenharmony_ci }); //@ts-ignore 599fb726d48Sopenharmony_ci if (item.children !== undefined) { 600fb726d48Sopenharmony_ci //@ts-ignore 601fb726d48Sopenharmony_ci formatData.children = formatExportData(item.children, that); 602fb726d48Sopenharmony_ci } 603fb726d48Sopenharmony_ci return formatData; 604fb726d48Sopenharmony_ci }); 605fb726d48Sopenharmony_ci} 606fb726d48Sopenharmony_ci 607fb726d48Sopenharmony_ciexport function recursionExportTableData(columns: unknown[], dataSource: unknown[]): string { 608fb726d48Sopenharmony_ci let concatStr = '\r\n'; 609fb726d48Sopenharmony_ci dataSource.forEach((item, index) => { 610fb726d48Sopenharmony_ci concatStr += columns 611fb726d48Sopenharmony_ci .map((column) => { 612fb726d48Sopenharmony_ci //@ts-ignore 613fb726d48Sopenharmony_ci let dataIndex = column.getAttribute('data-index'); //@ts-ignore 614fb726d48Sopenharmony_ci return `"${item[dataIndex] || ''}" `; 615fb726d48Sopenharmony_ci }) 616fb726d48Sopenharmony_ci .join(','); //@ts-ignore 617fb726d48Sopenharmony_ci if (item.children !== undefined) { 618fb726d48Sopenharmony_ci //@ts-ignore 619fb726d48Sopenharmony_ci concatStr += recursionExportTableData(columns, item.children); 620fb726d48Sopenharmony_ci } 621fb726d48Sopenharmony_ci if (index !== dataSource.length - 1) { 622fb726d48Sopenharmony_ci concatStr += '\r\n'; 623fb726d48Sopenharmony_ci } 624fb726d48Sopenharmony_ci }); 625fb726d48Sopenharmony_ci return concatStr; 626fb726d48Sopenharmony_ci} 627fb726d48Sopenharmony_ci 628fb726d48Sopenharmony_ciexport function addCopyEventListener(that: unknown): void { 629fb726d48Sopenharmony_ci //@ts-ignore 630fb726d48Sopenharmony_ci that.tableElement?.addEventListener('copy', (e: unknown) => { 631fb726d48Sopenharmony_ci // @ts-ignore 632fb726d48Sopenharmony_ci let clipboardData = e.clipboardData || window.clipboardData; 633fb726d48Sopenharmony_ci if (!clipboardData) { 634fb726d48Sopenharmony_ci return; 635fb726d48Sopenharmony_ci } 636fb726d48Sopenharmony_ci // @ts-ignore 637fb726d48Sopenharmony_ci let text = window.getSelection().toString(); 638fb726d48Sopenharmony_ci if (text) { 639fb726d48Sopenharmony_ci //@ts-ignore 640fb726d48Sopenharmony_ci e.preventDefault(); //@ts-ignore 641fb726d48Sopenharmony_ci let length = that.tableColumns?.length || 1; 642fb726d48Sopenharmony_ci let strings = text.split('\n'); 643fb726d48Sopenharmony_ci let formatStr = ''; 644fb726d48Sopenharmony_ci for (let i = 0; i < strings.length; i++) { 645fb726d48Sopenharmony_ci if (i % length !== 0) { 646fb726d48Sopenharmony_ci formatStr += ' '; 647fb726d48Sopenharmony_ci } 648fb726d48Sopenharmony_ci formatStr += strings[i]; 649fb726d48Sopenharmony_ci if (i !== 0 && i % length === length - 1) { 650fb726d48Sopenharmony_ci formatStr += '\n'; 651fb726d48Sopenharmony_ci } 652fb726d48Sopenharmony_ci } 653fb726d48Sopenharmony_ci clipboardData.setData('text/plain', formatStr); 654fb726d48Sopenharmony_ci } 655fb726d48Sopenharmony_ci }); 656fb726d48Sopenharmony_ci} 657fb726d48Sopenharmony_ci 658fb726d48Sopenharmony_ciexport function addSelectAllBox(rowElement: HTMLDivElement, that: unknown): void { 659fb726d48Sopenharmony_ci //@ts-ignore 660fb726d48Sopenharmony_ci if (that.selectable) { 661fb726d48Sopenharmony_ci let box = document.createElement('div'); 662fb726d48Sopenharmony_ci box.style.display = 'flex'; 663fb726d48Sopenharmony_ci box.style.justifyContent = 'center'; 664fb726d48Sopenharmony_ci box.style.alignItems = 'center'; 665fb726d48Sopenharmony_ci box.style.gridArea = '_checkbox_'; 666fb726d48Sopenharmony_ci box.classList.add('td'); 667fb726d48Sopenharmony_ci box.style.backgroundColor = '#ffffff66'; 668fb726d48Sopenharmony_ci let checkbox = document.createElement('lit-checkbox'); 669fb726d48Sopenharmony_ci checkbox.classList.add('row-checkbox-all'); 670fb726d48Sopenharmony_ci checkbox.onchange = (e: unknown): void => { 671fb726d48Sopenharmony_ci //@ts-ignore 672fb726d48Sopenharmony_ci that.shadowRoot!.querySelectorAll('.row-checkbox').forEach((a: unknown) => (a.checked = e.detail.checked)); //@ts-ignore 673fb726d48Sopenharmony_ci if (e.detail.checked) { 674fb726d48Sopenharmony_ci //@ts-ignore 675fb726d48Sopenharmony_ci that.shadowRoot!.querySelectorAll('.tr').forEach((a: unknown) => a.setAttribute('checked', '')); 676fb726d48Sopenharmony_ci } else { 677fb726d48Sopenharmony_ci //@ts-ignore 678fb726d48Sopenharmony_ci that.shadowRoot!.querySelectorAll('.tr').forEach((a: unknown) => a.removeAttribute('checked')); 679fb726d48Sopenharmony_ci } 680fb726d48Sopenharmony_ci }; 681fb726d48Sopenharmony_ci box.appendChild(checkbox); 682fb726d48Sopenharmony_ci rowElement.appendChild(box); 683fb726d48Sopenharmony_ci } 684fb726d48Sopenharmony_ci} 685fb726d48Sopenharmony_ci 686fb726d48Sopenharmony_ciexport function fixed(td: HTMLElement, placement: string, bgColor: string): void { 687fb726d48Sopenharmony_ci td.style.position = 'sticky'; 688fb726d48Sopenharmony_ci if (placement === 'left') { 689fb726d48Sopenharmony_ci td.style.left = '0px'; 690fb726d48Sopenharmony_ci td.style.boxShadow = '3px 0px 5px #33333333'; 691fb726d48Sopenharmony_ci } else if (placement === 'right') { 692fb726d48Sopenharmony_ci td.style.right = '0px'; 693fb726d48Sopenharmony_ci td.style.boxShadow = '-3px 0px 5px #33333333'; 694fb726d48Sopenharmony_ci } 695fb726d48Sopenharmony_ci} 696fb726d48Sopenharmony_ci 697fb726d48Sopenharmony_ciexport function formatName(key: string, name: unknown, that: unknown): unknown { 698fb726d48Sopenharmony_ci let content = name; //@ts-ignore 699fb726d48Sopenharmony_ci if (that.itemTextHandleMap.has(key)) { 700fb726d48Sopenharmony_ci //@ts-ignore 701fb726d48Sopenharmony_ci content = that.itemTextHandleMap.get(key)?.(name) || ''; 702fb726d48Sopenharmony_ci } 703fb726d48Sopenharmony_ci if (content !== undefined && content !== null) { 704fb726d48Sopenharmony_ci return content.toString().replace(/</g, '<').replace(/>/g, '>'); 705fb726d48Sopenharmony_ci } 706fb726d48Sopenharmony_ci return ''; 707fb726d48Sopenharmony_ci} 708