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 { LitMainMenu, MenuItem } from '../../base-ui/menu/LitMainMenu'; 18fb726d48Sopenharmony_ci@element('sp-third-party') 19fb726d48Sopenharmony_ciexport class SpThirdParty extends BaseElement { 20fb726d48Sopenharmony_ci private uploadJsonBtn: HTMLElement | undefined | null; 21fb726d48Sopenharmony_ci private inputJsonEl: HTMLInputElement | undefined | null; 22fb726d48Sopenharmony_ci private uploadCsvBtn: HTMLElement | undefined | null; 23fb726d48Sopenharmony_ci private inputCsvEl: HTMLInputElement | undefined | null; 24fb726d48Sopenharmony_ci 25fb726d48Sopenharmony_ci initElements(): void { 26fb726d48Sopenharmony_ci let parentElement = this.parentNode as HTMLElement; 27fb726d48Sopenharmony_ci parentElement.style.overflow = 'hidden'; 28fb726d48Sopenharmony_ci this.uploadJsonBtn = this.shadowRoot?.querySelector('.upload-json-btn')?.shadowRoot?.querySelector('#custom-button'); 29fb726d48Sopenharmony_ci this.inputJsonEl = this.shadowRoot?.querySelector('#file'); 30fb726d48Sopenharmony_ci this.addUploadEvent(this.uploadJsonBtn!, this.inputJsonEl!); 31fb726d48Sopenharmony_ci 32fb726d48Sopenharmony_ci this.uploadCsvBtn = this.shadowRoot?.querySelector('.upload-csv-btn')?.shadowRoot?.querySelector('#custom-button'); 33fb726d48Sopenharmony_ci this.inputCsvEl = this.shadowRoot?.querySelector('#csv-file'); 34fb726d48Sopenharmony_ci this.addUploadEvent(this.uploadCsvBtn!, this.inputCsvEl!); 35fb726d48Sopenharmony_ci } 36fb726d48Sopenharmony_ci 37fb726d48Sopenharmony_ci initHtml(): string { 38fb726d48Sopenharmony_ci return ` 39fb726d48Sopenharmony_ci ${this.initHtmlStyle()} 40fb726d48Sopenharmony_ci <div class="sp-third-party-container"> 41fb726d48Sopenharmony_ci <div class="body"> 42fb726d48Sopenharmony_ci <div> 43fb726d48Sopenharmony_ci <input id="file" class="file" accept="application/json" type="file" style="display:none;pointer-events:none;"/> 44fb726d48Sopenharmony_ci <lit-button class="upload-json-btn" height="32px" width="180px" color="#0A59F7" font_size="14px" border="1px solid #0A59F7" 45fb726d48Sopenharmony_ci padding="0 0 0 12px" justify_content="left" icon="folder" margin_icon="0 10px 0 8px"> 46fb726d48Sopenharmony_ci Open bpftrace file 47fb726d48Sopenharmony_ci </lit-button> 48fb726d48Sopenharmony_ci </div> 49fb726d48Sopenharmony_ci <div> 50fb726d48Sopenharmony_ci <input id="csv-file" class="csv-file" accept=".csv" type="file" style="display:none;pointer-events:none;"/> 51fb726d48Sopenharmony_ci <lit-button class="upload-csv-btn" height="32px" width="180px" color="#0A59F7" font_size="14px" border="1px solid #0A59F7" 52fb726d48Sopenharmony_ci padding="0 0 0 12px" justify_content="left" icon="folder" margin_icon="0 10px 0 8px"> 53fb726d48Sopenharmony_ci Open gpu counter file 54fb726d48Sopenharmony_ci </lit-button> 55fb726d48Sopenharmony_ci </div> 56fb726d48Sopenharmony_ci </div> 57fb726d48Sopenharmony_ci </div> 58fb726d48Sopenharmony_ci `; 59fb726d48Sopenharmony_ci } 60fb726d48Sopenharmony_ci 61fb726d48Sopenharmony_ci private initHtmlStyle(): string { 62fb726d48Sopenharmony_ci return ` 63fb726d48Sopenharmony_ci <style> 64fb726d48Sopenharmony_ci .sp-third-party-container { 65fb726d48Sopenharmony_ci background-color: var(--dark-background5,#F6F6F6); 66fb726d48Sopenharmony_ci min-height: 100%; 67fb726d48Sopenharmony_ci display: grid; 68fb726d48Sopenharmony_ci grid-template-columns: 1fr; 69fb726d48Sopenharmony_ci grid-template-rows:1fr; 70fb726d48Sopenharmony_ci } 71fb726d48Sopenharmony_ci :host{ 72fb726d48Sopenharmony_ci width: 100%; 73fb726d48Sopenharmony_ci height: 100%; 74fb726d48Sopenharmony_ci background-color: var(--dark-background5,#F6F6F6); 75fb726d48Sopenharmony_ci display: block; 76fb726d48Sopenharmony_ci } 77fb726d48Sopenharmony_ci .body{ 78fb726d48Sopenharmony_ci width: 85%; 79fb726d48Sopenharmony_ci margin: 2% 5% 2% 5%; 80fb726d48Sopenharmony_ci background-color: var(--dark-background3,#FFFFFF); 81fb726d48Sopenharmony_ci border-radius: 16px 16px 16px 16px; 82fb726d48Sopenharmony_ci padding-left: 2%; 83fb726d48Sopenharmony_ci padding-right: 4%; 84fb726d48Sopenharmony_ci } 85fb726d48Sopenharmony_ci .upload-json-btn, .upload-csv-btn { 86fb726d48Sopenharmony_ci margin-top: 2%; 87fb726d48Sopenharmony_ci margin-left: 3%; 88fb726d48Sopenharmony_ci } 89fb726d48Sopenharmony_ci </style> 90fb726d48Sopenharmony_ci `; 91fb726d48Sopenharmony_ci } 92fb726d48Sopenharmony_ci 93fb726d48Sopenharmony_ci addUploadEvent(uploadBtn: HTMLElement, uploadEl: HTMLInputElement): void { 94fb726d48Sopenharmony_ci uploadBtn?.addEventListener('click', () => { 95fb726d48Sopenharmony_ci uploadEl?.click(); 96fb726d48Sopenharmony_ci }); 97fb726d48Sopenharmony_ci uploadEl!.addEventListener('change', () => { 98fb726d48Sopenharmony_ci let files = uploadEl!.files; 99fb726d48Sopenharmony_ci if (files && files.length > 0) { 100fb726d48Sopenharmony_ci let main = this.parentNode!.parentNode!.querySelector('lit-main-menu') as LitMainMenu; 101fb726d48Sopenharmony_ci let children = main.menus!; 102fb726d48Sopenharmony_ci let child = children[0].children as Array<MenuItem>; 103fb726d48Sopenharmony_ci let fileHandler = child[0].fileHandler!; 104fb726d48Sopenharmony_ci fileHandler({ 105fb726d48Sopenharmony_ci detail: files[0] 106fb726d48Sopenharmony_ci }); 107fb726d48Sopenharmony_ci } 108fb726d48Sopenharmony_ci if (uploadEl) { 109fb726d48Sopenharmony_ci uploadEl.value = ''; 110fb726d48Sopenharmony_ci } 111fb726d48Sopenharmony_ci }); 112fb726d48Sopenharmony_ci } 113fb726d48Sopenharmony_ci} 114fb726d48Sopenharmony_ci 115fb726d48Sopenharmony_ci 116