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