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 { SpCheckDesBox } from './SpCheckDesBox';
18fb726d48Sopenharmony_ciimport { LitCheckBox, LitCheckBoxChangeEvent } from '../../../base-ui/checkbox/LitCheckBox';
19fb726d48Sopenharmony_ciimport { LitRadioGroup } from '../../../base-ui/radiobox/LitRadioGroup';
20fb726d48Sopenharmony_ciimport { info, log } from '../../../log/Log';
21fb726d48Sopenharmony_ciimport { LitSlider } from '../../../base-ui/slider/LitSlider';
22fb726d48Sopenharmony_ciimport LitSwitch from '../../../base-ui/switch/lit-switch';
23fb726d48Sopenharmony_ciimport { SpProbesConfigHtml } from './SpProbesConfig.html';
24fb726d48Sopenharmony_ci
25fb726d48Sopenharmony_ci@element('probes-config')
26fb726d48Sopenharmony_ciexport class SpProbesConfig extends BaseElement {
27fb726d48Sopenharmony_ci  private hitrace: SpCheckDesBox | undefined;
28fb726d48Sopenharmony_ci  private _traceConfig: HTMLElement | undefined;
29fb726d48Sopenharmony_ci  private _memoryConfig: HTMLElement | undefined | null;
30fb726d48Sopenharmony_ci  private _abilityConfig: HTMLElement | undefined | null;
31fb726d48Sopenharmony_ci  private ftraceBufferSizeResult: HTMLDivElement | null | undefined;
32fb726d48Sopenharmony_ci  private ftraceSlider: LitSlider | null | undefined;
33fb726d48Sopenharmony_ci
34fb726d48Sopenharmony_ci  private ftraceBuffSizeResultInput: HTMLInputElement | null | undefined;
35fb726d48Sopenharmony_ci
36fb726d48Sopenharmony_ci  set startSamp(allocationStart: boolean) {
37fb726d48Sopenharmony_ci    if (allocationStart) {
38fb726d48Sopenharmony_ci      this.setAttribute('startSamp', '');
39fb726d48Sopenharmony_ci    } else {
40fb726d48Sopenharmony_ci      this.removeAttribute('startSamp');
41fb726d48Sopenharmony_ci    }
42fb726d48Sopenharmony_ci  }
43fb726d48Sopenharmony_ci
44fb726d48Sopenharmony_ci  get startSamp(): boolean {
45fb726d48Sopenharmony_ci    return this.hasAttribute('startSamp');
46fb726d48Sopenharmony_ci  }
47fb726d48Sopenharmony_ci
48fb726d48Sopenharmony_ci  get traceConfig(): string[] {
49fb726d48Sopenharmony_ci    let selectedTrace = this._traceConfig?.querySelectorAll<SpCheckDesBox>('check-des-box[checked]') || [];
50fb726d48Sopenharmony_ci    let values = [];
51fb726d48Sopenharmony_ci    for (const litCheckBoxElement of selectedTrace) {
52fb726d48Sopenharmony_ci      values.push(litCheckBoxElement.value);
53fb726d48Sopenharmony_ci    }
54fb726d48Sopenharmony_ci    if (this.hitrace && this.hitrace.checked) {
55fb726d48Sopenharmony_ci      values.push(this.hitrace.value);
56fb726d48Sopenharmony_ci    }
57fb726d48Sopenharmony_ci    info('traceConfig is :', values);
58fb726d48Sopenharmony_ci    return values;
59fb726d48Sopenharmony_ci  }
60fb726d48Sopenharmony_ci
61fb726d48Sopenharmony_ci  get ftraceBufferSize(): number {
62fb726d48Sopenharmony_ci    if (this.ftraceBufferSizeResult?.hasAttribute('percent')) {
63fb726d48Sopenharmony_ci      return Number(this.ftraceBufferSizeResult?.getAttribute('percent'));
64fb726d48Sopenharmony_ci    }
65fb726d48Sopenharmony_ci    return 20480;
66fb726d48Sopenharmony_ci  }
67fb726d48Sopenharmony_ci
68fb726d48Sopenharmony_ci  get memoryConfig(): string[] {
69fb726d48Sopenharmony_ci    let values = [];
70fb726d48Sopenharmony_ci    let selectedMemory = this._memoryConfig?.querySelectorAll<SpCheckDesBox>(
71fb726d48Sopenharmony_ci      'check-des-box[checked]'
72fb726d48Sopenharmony_ci    ) as NodeListOf<SpCheckDesBox>;
73fb726d48Sopenharmony_ci    for (const litCheckBoxElement of selectedMemory) {
74fb726d48Sopenharmony_ci      values.push(litCheckBoxElement.value);
75fb726d48Sopenharmony_ci    }
76fb726d48Sopenharmony_ci    log(`memoryConfig size is :${values.length}`);
77fb726d48Sopenharmony_ci    return values;
78fb726d48Sopenharmony_ci  }
79fb726d48Sopenharmony_ci
80fb726d48Sopenharmony_ci  get recordAbility(): boolean {
81fb726d48Sopenharmony_ci    let selectedMemory = this._abilityConfig?.querySelectorAll<SpCheckDesBox>(
82fb726d48Sopenharmony_ci      'check-des-box[checked]'
83fb726d48Sopenharmony_ci    ) as NodeListOf<SpCheckDesBox>;
84fb726d48Sopenharmony_ci    return selectedMemory.length > 0;
85fb726d48Sopenharmony_ci  }
86fb726d48Sopenharmony_ci
87fb726d48Sopenharmony_ci  get traceEvents(): string[] {
88fb726d48Sopenharmony_ci    let values = [];
89fb726d48Sopenharmony_ci    if (this.hitrace && this.hitrace.checked) {
90fb726d48Sopenharmony_ci      let parent = this.shadowRoot?.querySelector('.user-events') as Element;
91fb726d48Sopenharmony_ci      const siblingNode = parent?.querySelectorAll<LitCheckBox>('lit-check-box[name=userEvents][checked]');
92fb726d48Sopenharmony_ci      for (const litCheckBoxElement of siblingNode) {
93fb726d48Sopenharmony_ci        values.push(litCheckBoxElement.value);
94fb726d48Sopenharmony_ci      }
95fb726d48Sopenharmony_ci    }
96fb726d48Sopenharmony_ci    log(`traceEvents size is :${values.length}`);
97fb726d48Sopenharmony_ci    return values;
98fb726d48Sopenharmony_ci  }
99fb726d48Sopenharmony_ci
100fb726d48Sopenharmony_ci  get hilogConfig(): string[] {
101fb726d48Sopenharmony_ci    let logLevel = this.shadowRoot?.getElementById('logLevel') as LitCheckBox;
102fb726d48Sopenharmony_ci    if (logLevel.checked) {
103fb726d48Sopenharmony_ci      let logRadio = this.shadowRoot?.getElementById('log-radio') as LitRadioGroup;
104fb726d48Sopenharmony_ci      return logRadio.value;
105fb726d48Sopenharmony_ci    } else {
106fb726d48Sopenharmony_ci      return [];
107fb726d48Sopenharmony_ci    }
108fb726d48Sopenharmony_ci  }
109fb726d48Sopenharmony_ci
110fb726d48Sopenharmony_ci  private initTraceConfigList(): void {
111fb726d48Sopenharmony_ci    this._traceConfig = this.shadowRoot?.querySelector('.trace-config') as HTMLElement;
112fb726d48Sopenharmony_ci    traceConfigList.forEach((configBean) => {
113fb726d48Sopenharmony_ci      let checkDesBox = new SpCheckDesBox();
114fb726d48Sopenharmony_ci      checkDesBox.value = configBean.value;
115fb726d48Sopenharmony_ci      checkDesBox.checked = configBean.isSelect;
116fb726d48Sopenharmony_ci      checkDesBox.des = configBean.des;
117fb726d48Sopenharmony_ci      checkDesBox.addEventListener('onchange', () => {
118fb726d48Sopenharmony_ci        this.dispatchEvent(new CustomEvent('addProbe', {}));
119fb726d48Sopenharmony_ci      });
120fb726d48Sopenharmony_ci      this._traceConfig?.appendChild(checkDesBox);
121fb726d48Sopenharmony_ci    });
122fb726d48Sopenharmony_ci  }
123fb726d48Sopenharmony_ci
124fb726d48Sopenharmony_ci  private initMemoryConfigList(): void {
125fb726d48Sopenharmony_ci    this._memoryConfig = this.shadowRoot?.querySelector('.memory-config');
126fb726d48Sopenharmony_ci    memoryConfigList.forEach((configBean) => {
127fb726d48Sopenharmony_ci      let checkDesBox = new SpCheckDesBox();
128fb726d48Sopenharmony_ci      checkDesBox.value = configBean.value;
129fb726d48Sopenharmony_ci      checkDesBox.checked = configBean.isSelect;
130fb726d48Sopenharmony_ci      checkDesBox.des = configBean.des;
131fb726d48Sopenharmony_ci      checkDesBox.addEventListener('onchange', () => {
132fb726d48Sopenharmony_ci        this.dispatchEvent(new CustomEvent('addProbe', {}));
133fb726d48Sopenharmony_ci      });
134fb726d48Sopenharmony_ci      this._memoryConfig?.appendChild(checkDesBox);
135fb726d48Sopenharmony_ci    });
136fb726d48Sopenharmony_ci  }
137fb726d48Sopenharmony_ci
138fb726d48Sopenharmony_ci  private initAbilityConfigList(): void {
139fb726d48Sopenharmony_ci    this._abilityConfig = this.shadowRoot?.querySelector('.ability-config');
140fb726d48Sopenharmony_ci    abilityConfigList.forEach((configBean) => {
141fb726d48Sopenharmony_ci      let checkDesBox = new SpCheckDesBox();
142fb726d48Sopenharmony_ci      checkDesBox.value = configBean.value;
143fb726d48Sopenharmony_ci      checkDesBox.checked = configBean.isSelect;
144fb726d48Sopenharmony_ci      checkDesBox.des = configBean.des;
145fb726d48Sopenharmony_ci      checkDesBox.addEventListener('onchange', () => {
146fb726d48Sopenharmony_ci        this.dispatchEvent(new CustomEvent('addProbe', {}));
147fb726d48Sopenharmony_ci      });
148fb726d48Sopenharmony_ci      this._abilityConfig?.appendChild(checkDesBox);
149fb726d48Sopenharmony_ci    });
150fb726d48Sopenharmony_ci  }
151fb726d48Sopenharmony_ci
152fb726d48Sopenharmony_ci  private initHiTraceConfigList(): void {
153fb726d48Sopenharmony_ci    this.hitrace = this.shadowRoot?.getElementById('hitrace') as SpCheckDesBox;
154fb726d48Sopenharmony_ci    let parent = this.shadowRoot?.querySelector('.user-events') as Element;
155fb726d48Sopenharmony_ci    hiTraceConfigList.forEach((hitraceConfig: unknown) => {
156fb726d48Sopenharmony_ci      let litCheckBox = new LitCheckBox();
157fb726d48Sopenharmony_ci      litCheckBox.setAttribute('name', 'userEvents');
158fb726d48Sopenharmony_ci      //@ts-ignore
159fb726d48Sopenharmony_ci      litCheckBox.value = hitraceConfig.value;
160fb726d48Sopenharmony_ci      //@ts-ignore
161fb726d48Sopenharmony_ci      litCheckBox.checked = hitraceConfig.isSelect;
162fb726d48Sopenharmony_ci      litCheckBox.addEventListener('change', (ev: CustomEventInit<LitCheckBoxChangeEvent>) => {
163fb726d48Sopenharmony_ci        let detail = ev.detail;
164fb726d48Sopenharmony_ci        if (this.hitrace?.checked === false) {
165fb726d48Sopenharmony_ci          this.hitrace.checked = detail!.checked;
166fb726d48Sopenharmony_ci        }
167fb726d48Sopenharmony_ci        if (!detail!.checked && this.hitrace?.checked === true) {
168fb726d48Sopenharmony_ci          let hasChecked = false;
169fb726d48Sopenharmony_ci          const nodes = parent?.querySelectorAll<LitCheckBox>('lit-check-box[name=userEvents]');
170fb726d48Sopenharmony_ci          nodes.forEach((vv) => {
171fb726d48Sopenharmony_ci            if (vv.checked) {
172fb726d48Sopenharmony_ci              hasChecked = true;
173fb726d48Sopenharmony_ci            }
174fb726d48Sopenharmony_ci          });
175fb726d48Sopenharmony_ci          if (!hasChecked) {
176fb726d48Sopenharmony_ci            this.hitrace.checked = hasChecked;
177fb726d48Sopenharmony_ci          }
178fb726d48Sopenharmony_ci        }
179fb726d48Sopenharmony_ci        this.dispatchEvent(new CustomEvent('addProbe', {}));
180fb726d48Sopenharmony_ci      });
181fb726d48Sopenharmony_ci      parent.append(litCheckBox);
182fb726d48Sopenharmony_ci    });
183fb726d48Sopenharmony_ci  }
184fb726d48Sopenharmony_ci
185fb726d48Sopenharmony_ci  initElements(): void {
186fb726d48Sopenharmony_ci    this.ftraceBuffSizeResultInput = this.shadowRoot?.querySelector('.ftrace-buff-size-result') as HTMLInputElement;
187fb726d48Sopenharmony_ci    this.ftraceBuffSizeResultInput!.addEventListener('keydown', (ev: unknown) => {
188fb726d48Sopenharmony_ci      //@ts-ignore
189fb726d48Sopenharmony_ci      if (ev.key === '0' && ev.target.value.length === 1 && ev.target.value === '0') {
190fb726d48Sopenharmony_ci        //@ts-ignore
191fb726d48Sopenharmony_ci        ev.preventDefault();
192fb726d48Sopenharmony_ci      }
193fb726d48Sopenharmony_ci    });
194fb726d48Sopenharmony_ci    this.initTraceConfigList();
195fb726d48Sopenharmony_ci    this.initMemoryConfigList();
196fb726d48Sopenharmony_ci    this.initAbilityConfigList();
197fb726d48Sopenharmony_ci    this.initHiTraceConfigList();
198fb726d48Sopenharmony_ci    this.bufferSizeSliderInit();
199fb726d48Sopenharmony_ci    let litSwitch = this.shadowRoot?.querySelector('lit-switch') as LitSwitch;
200fb726d48Sopenharmony_ci    this.ftraceSlider = this.shadowRoot?.querySelector<LitSlider>('#ftrace-buff-size-slider');
201fb726d48Sopenharmony_ci    litSwitch.addEventListener('change', (event: unknown) => {
202fb726d48Sopenharmony_ci      //@ts-ignore
203fb726d48Sopenharmony_ci      let detail = event.detail;
204fb726d48Sopenharmony_ci      if (detail!.checked) {
205fb726d48Sopenharmony_ci        this.unDisable();
206fb726d48Sopenharmony_ci      } else {
207fb726d48Sopenharmony_ci        this.disable();
208fb726d48Sopenharmony_ci      }
209fb726d48Sopenharmony_ci    });
210fb726d48Sopenharmony_ci  }
211fb726d48Sopenharmony_ci
212fb726d48Sopenharmony_ci  private bufferSizeSliderInit(): void {
213fb726d48Sopenharmony_ci    let bufferSizeSlider = this.shadowRoot?.querySelector<LitSlider>('#ftrace-buff-size-slider') as LitSlider;
214fb726d48Sopenharmony_ci    this.ftraceBufferSizeResult = this.shadowRoot?.querySelector('#ftrace-buff-size-div') as HTMLDivElement;
215fb726d48Sopenharmony_ci    bufferSizeSlider.sliderStyle = {
216fb726d48Sopenharmony_ci      minRange: 2048,
217fb726d48Sopenharmony_ci      maxRange: 307200,
218fb726d48Sopenharmony_ci      defaultValue: '204800',
219fb726d48Sopenharmony_ci      resultUnit: 'KB',
220fb726d48Sopenharmony_ci      stepSize: 2,
221fb726d48Sopenharmony_ci      lineColor: 'var(--dark-color3,#46B1E3)',
222fb726d48Sopenharmony_ci      buttonColor: '#999999',
223fb726d48Sopenharmony_ci    };
224fb726d48Sopenharmony_ci    let bufferSizeSliderParent = bufferSizeSlider!.parentNode as Element;
225fb726d48Sopenharmony_ci    let buffSizeResult = this.shadowRoot?.querySelector('.ftrace-buff-size-result') as HTMLInputElement;
226fb726d48Sopenharmony_ci    buffSizeResult!.onkeydown = (ev): void => {
227fb726d48Sopenharmony_ci      // @ts-ignore
228fb726d48Sopenharmony_ci      if (ev.key === '0' && ev.target.value.length === 1 && ev.target.value === '0') {
229fb726d48Sopenharmony_ci        ev.preventDefault();
230fb726d48Sopenharmony_ci      }
231fb726d48Sopenharmony_ci    };
232fb726d48Sopenharmony_ci    buffSizeResult.value = bufferSizeSlider.sliderStyle.defaultValue;
233fb726d48Sopenharmony_ci    bufferSizeSlider.addEventListener('input', () => {
234fb726d48Sopenharmony_ci      buffSizeResult.parentElement!.classList.remove('border-red');
235fb726d48Sopenharmony_ci      if (this.ftraceBufferSizeResult!.hasAttribute('percent')) {
236fb726d48Sopenharmony_ci        buffSizeResult.value = Number(this.ftraceBufferSizeResult!.getAttribute('percent')).toString();
237fb726d48Sopenharmony_ci      } else {
238fb726d48Sopenharmony_ci        buffSizeResult.value = '20480';
239fb726d48Sopenharmony_ci      }
240fb726d48Sopenharmony_ci    });
241fb726d48Sopenharmony_ci    bufferSizeSliderParent.setAttribute('percent', '20480');
242fb726d48Sopenharmony_ci    buffSizeResult.style.color = 'var(--dark-color1,#000000)';
243fb726d48Sopenharmony_ci    buffSizeResult.addEventListener('input', () => {
244fb726d48Sopenharmony_ci      this.ftraceBuffSizeResultInputHandler(buffSizeResult, bufferSizeSliderParent, bufferSizeSlider);
245fb726d48Sopenharmony_ci    });
246fb726d48Sopenharmony_ci    buffSizeResult.addEventListener('focusout', () => {
247fb726d48Sopenharmony_ci      if (buffSizeResult.value.trim() === '') {
248fb726d48Sopenharmony_ci        buffSizeResult.parentElement!.classList.remove('border-red');
249fb726d48Sopenharmony_ci        bufferSizeSliderParent.setAttribute('percent', '20480');
250fb726d48Sopenharmony_ci        buffSizeResult.value = '20480';
251fb726d48Sopenharmony_ci        buffSizeResult.style.color = 'var(--dark-color,#6a6f77)';
252fb726d48Sopenharmony_ci        bufferSizeSliderParent.setAttribute('percent', buffSizeResult.value);
253fb726d48Sopenharmony_ci        bufferSizeSliderParent.setAttribute('percentValue', buffSizeResult.value);
254fb726d48Sopenharmony_ci        bufferSizeSlider!.percent = buffSizeResult.value;
255fb726d48Sopenharmony_ci        let htmlInputElement = bufferSizeSlider!.shadowRoot?.querySelector('#slider') as HTMLInputElement;
256fb726d48Sopenharmony_ci        htmlInputElement.value = buffSizeResult.value;
257fb726d48Sopenharmony_ci      }
258fb726d48Sopenharmony_ci    });
259fb726d48Sopenharmony_ci  }
260fb726d48Sopenharmony_ci
261fb726d48Sopenharmony_ci  private ftraceBuffSizeResultInputHandler(
262fb726d48Sopenharmony_ci    buffSizeResultEl: HTMLInputElement,
263fb726d48Sopenharmony_ci    bufferSizeSliderParentEl: Element,
264fb726d48Sopenharmony_ci    bufferSizeSliderEl: LitSlider
265fb726d48Sopenharmony_ci  ): void {
266fb726d48Sopenharmony_ci    if (this.ftraceBufferSizeResult!.hasAttribute('percent')) {
267fb726d48Sopenharmony_ci      this.ftraceBufferSizeResult!.removeAttribute('percent');
268fb726d48Sopenharmony_ci    }
269fb726d48Sopenharmony_ci    buffSizeResultEl.style.color = 'var(--dark-color1,#000000)';
270fb726d48Sopenharmony_ci    buffSizeResultEl.parentElement!.style.backgroundColor = 'var(--dark-background5,#F2F2F2)';
271fb726d48Sopenharmony_ci    buffSizeResultEl.style.backgroundColor = 'var(--dark-background5,#F2F2F2)';
272fb726d48Sopenharmony_ci    if (buffSizeResultEl.value.trim() === '') {
273fb726d48Sopenharmony_ci      buffSizeResultEl.style.color = 'red';
274fb726d48Sopenharmony_ci      bufferSizeSliderParentEl.setAttribute('percent', '20480');
275fb726d48Sopenharmony_ci      return;
276fb726d48Sopenharmony_ci    }
277fb726d48Sopenharmony_ci    let ftraceBufferSize = Number(buffSizeResultEl.value);
278fb726d48Sopenharmony_ci    if (
279fb726d48Sopenharmony_ci      ftraceBufferSize < bufferSizeSliderEl!.sliderStyle.minRange ||
280fb726d48Sopenharmony_ci      ftraceBufferSize > bufferSizeSliderEl!.sliderStyle.maxRange
281fb726d48Sopenharmony_ci    ) {
282fb726d48Sopenharmony_ci      buffSizeResultEl.parentElement!.classList.add('border-red');
283fb726d48Sopenharmony_ci      bufferSizeSliderParentEl.setAttribute('percent', '20480');
284fb726d48Sopenharmony_ci    } else {
285fb726d48Sopenharmony_ci      buffSizeResultEl.parentElement!.classList.remove('border-red');
286fb726d48Sopenharmony_ci      bufferSizeSliderEl!.percent = buffSizeResultEl.value;
287fb726d48Sopenharmony_ci      let htmlInputElement = bufferSizeSliderEl!.shadowRoot?.querySelector('#slider') as HTMLInputElement;
288fb726d48Sopenharmony_ci      htmlInputElement.value = buffSizeResultEl.value;
289fb726d48Sopenharmony_ci      bufferSizeSliderParentEl.setAttribute('percent', buffSizeResultEl.value);
290fb726d48Sopenharmony_ci      bufferSizeSliderParentEl.setAttribute('percentValue', buffSizeResultEl.value);
291fb726d48Sopenharmony_ci    }
292fb726d48Sopenharmony_ci  }
293fb726d48Sopenharmony_ci
294fb726d48Sopenharmony_ci  private unDisable(): void {
295fb726d48Sopenharmony_ci    this.startSamp = true;
296fb726d48Sopenharmony_ci    let checkDesBoxDis = this.shadowRoot?.querySelectorAll<SpCheckDesBox>('check-des-box');
297fb726d48Sopenharmony_ci    let litCheckBoxDis = this.shadowRoot?.querySelectorAll<LitCheckBox>('lit-check-box');
298fb726d48Sopenharmony_ci    let defaultSelected: unknown = [];
299fb726d48Sopenharmony_ci    //@ts-ignore
300fb726d48Sopenharmony_ci    defaultSelected = defaultSelected.concat(traceConfigList, memoryConfigList, abilityConfigList, hiTraceConfigList);
301fb726d48Sopenharmony_ci    this.shadowRoot?.querySelector<SpCheckDesBox>("[value='Hitrace categories']")?.setAttribute('checked', 'true');
302fb726d48Sopenharmony_ci    this.ftraceSlider!.removeAttribute('disabled');
303fb726d48Sopenharmony_ci    checkDesBoxDis?.forEach((item: SpCheckDesBox) => {
304fb726d48Sopenharmony_ci      item.removeAttribute('disabled');
305fb726d48Sopenharmony_ci    });
306fb726d48Sopenharmony_ci    litCheckBoxDis?.forEach((item: LitCheckBox) => {
307fb726d48Sopenharmony_ci      item.removeAttribute('disabled');
308fb726d48Sopenharmony_ci    });
309fb726d48Sopenharmony_ci    //@ts-ignore
310fb726d48Sopenharmony_ci    defaultSelected.filter((item: unknown) => {
311fb726d48Sopenharmony_ci      //@ts-ignore
312fb726d48Sopenharmony_ci      if (item.isSelect) {
313fb726d48Sopenharmony_ci        //@ts-ignore
314fb726d48Sopenharmony_ci        this.shadowRoot?.querySelector<SpCheckDesBox>(`[value='${item.value}']`)?.setAttribute('checked', 'true');
315fb726d48Sopenharmony_ci      }
316fb726d48Sopenharmony_ci    });
317fb726d48Sopenharmony_ci  }
318fb726d48Sopenharmony_ci
319fb726d48Sopenharmony_ci  private disable(): void {
320fb726d48Sopenharmony_ci    this.startSamp = false;
321fb726d48Sopenharmony_ci    let checkDesBoxDis = this.shadowRoot?.querySelectorAll<SpCheckDesBox>('check-des-box');
322fb726d48Sopenharmony_ci    let litCheckBoxDis = this.shadowRoot?.querySelectorAll<LitCheckBox>('lit-check-box');
323fb726d48Sopenharmony_ci
324fb726d48Sopenharmony_ci    this.ftraceSlider!.setAttribute('disabled', '');
325fb726d48Sopenharmony_ci
326fb726d48Sopenharmony_ci    checkDesBoxDis?.forEach((item: SpCheckDesBox) => {
327fb726d48Sopenharmony_ci      item.setAttribute('disabled', '');
328fb726d48Sopenharmony_ci      item.checked = false;
329fb726d48Sopenharmony_ci    });
330fb726d48Sopenharmony_ci
331fb726d48Sopenharmony_ci    litCheckBoxDis?.forEach((item: LitCheckBox) => {
332fb726d48Sopenharmony_ci      item.setAttribute('disabled', '');
333fb726d48Sopenharmony_ci      item.checked = false;
334fb726d48Sopenharmony_ci    });
335fb726d48Sopenharmony_ci  }
336fb726d48Sopenharmony_ci
337fb726d48Sopenharmony_ci  initHtml(): string {
338fb726d48Sopenharmony_ci    return SpProbesConfigHtml;
339fb726d48Sopenharmony_ci  }
340fb726d48Sopenharmony_ci
341fb726d48Sopenharmony_ci  //当 custom element首次被插入文档DOM时,被调用。
342fb726d48Sopenharmony_ci  public connectedCallback(): void {
343fb726d48Sopenharmony_ci    let parent = this.shadowRoot?.querySelector('.user-events') as Element;
344fb726d48Sopenharmony_ci    const siblingNode = parent?.querySelectorAll<LitCheckBox>('lit-check-box[name=userEvents]');
345fb726d48Sopenharmony_ci    this.hitrace!.addEventListener('onchange', (ev: CustomEventInit<LitCheckBoxChangeEvent>) => {
346fb726d48Sopenharmony_ci      let detail = ev.detail;
347fb726d48Sopenharmony_ci      siblingNode.forEach((node) => {
348fb726d48Sopenharmony_ci        node.checked = detail!.checked;
349fb726d48Sopenharmony_ci      });
350fb726d48Sopenharmony_ci      this.dispatchEvent(new CustomEvent('addProbe', {}));
351fb726d48Sopenharmony_ci    });
352fb726d48Sopenharmony_ci  }
353fb726d48Sopenharmony_ci}
354fb726d48Sopenharmony_ci
355fb726d48Sopenharmony_ciconst hiTraceConfigList = [
356fb726d48Sopenharmony_ci  { value: 'ability', isSelect: true },
357fb726d48Sopenharmony_ci  { value: 'accesscontrol', isSelect: false },
358fb726d48Sopenharmony_ci  { value: 'accessibility', isSelect: false },
359fb726d48Sopenharmony_ci  { value: 'account', isSelect: false },
360fb726d48Sopenharmony_ci  { value: 'ace', isSelect: true },
361fb726d48Sopenharmony_ci  { value: 'app', isSelect: true },
362fb726d48Sopenharmony_ci  { value: 'ark', isSelect: true },
363fb726d48Sopenharmony_ci  { value: 'binder', isSelect: true },
364fb726d48Sopenharmony_ci  { value: 'bluetooth', isSelect: false },
365fb726d48Sopenharmony_ci  { value: 'cloud', isSelect: false },
366fb726d48Sopenharmony_ci  { value: 'commonlibrary', isSelect: false },
367fb726d48Sopenharmony_ci  { value: 'daudio', isSelect: false },
368fb726d48Sopenharmony_ci  { value: 'dcamera', isSelect: false },
369fb726d48Sopenharmony_ci  { value: 'deviceauth', isSelect: false },
370fb726d48Sopenharmony_ci  { value: 'devicemanager', isSelect: false },
371fb726d48Sopenharmony_ci  { value: 'deviceprofile', isSelect: false },
372fb726d48Sopenharmony_ci  { value: 'dhfwk', isSelect: false },
373fb726d48Sopenharmony_ci  { value: 'dinput', isSelect: false },
374fb726d48Sopenharmony_ci  { value: 'disk', isSelect: true },
375fb726d48Sopenharmony_ci  { value: 'distributeddatamgr', isSelect: false },
376fb726d48Sopenharmony_ci  { value: 'dlpcre', isSelect: false },
377fb726d48Sopenharmony_ci  { value: 'dsched', isSelect: false },
378fb726d48Sopenharmony_ci  { value: 'dscreen', isSelect: false },
379fb726d48Sopenharmony_ci  { value: 'dslm', isSelect: false },
380fb726d48Sopenharmony_ci  { value: 'dsoftbus', isSelect: false },
381fb726d48Sopenharmony_ci  { value: 'ffrt', isSelect: false },
382fb726d48Sopenharmony_ci  { value: 'filemanagement', isSelect: false },
383fb726d48Sopenharmony_ci  { value: 'freq', isSelect: true },
384fb726d48Sopenharmony_ci  { value: 'graphic', isSelect: true },
385fb726d48Sopenharmony_ci  { value: 'gresource', isSelect: false },
386fb726d48Sopenharmony_ci  { value: 'hdcd', isSelect: false },
387fb726d48Sopenharmony_ci  { value: 'hdf', isSelect: false },
388fb726d48Sopenharmony_ci  { value: 'huks', isSelect: false },
389fb726d48Sopenharmony_ci  { value: 'i2c', isSelect: false },
390fb726d48Sopenharmony_ci  { value: 'idle', isSelect: true },
391fb726d48Sopenharmony_ci  { value: 'interconn', isSelect: false },
392fb726d48Sopenharmony_ci  { value: 'irq', isSelect: true },
393fb726d48Sopenharmony_ci  { value: 'mdfs', isSelect: false },
394fb726d48Sopenharmony_ci  { value: 'memory', isSelect: false },
395fb726d48Sopenharmony_ci  { value: 'memreclaim', isSelect: true },
396fb726d48Sopenharmony_ci  { value: 'misc', isSelect: false },
397fb726d48Sopenharmony_ci  { value: 'mmc', isSelect: true },
398fb726d48Sopenharmony_ci  { value: 'msdp', isSelect: false },
399fb726d48Sopenharmony_ci  { value: 'multimodalinput', isSelect: true },
400fb726d48Sopenharmony_ci  { value: 'musl', isSelect: false },
401fb726d48Sopenharmony_ci  { value: 'net', isSelect: false },
402fb726d48Sopenharmony_ci  { value: 'notification', isSelect: true },
403fb726d48Sopenharmony_ci  { value: 'nweb', isSelect: false },
404fb726d48Sopenharmony_ci  { value: 'ohos', isSelect: true },
405fb726d48Sopenharmony_ci  { value: 'pagecache', isSelect: true },
406fb726d48Sopenharmony_ci  { value: 'power', isSelect: false },
407fb726d48Sopenharmony_ci  { value: 'regulators', isSelect: false },
408fb726d48Sopenharmony_ci  { value: 'rpc', isSelect: true },
409fb726d48Sopenharmony_ci  { value: 'samgr', isSelect: false },
410fb726d48Sopenharmony_ci  { value: 'sched', isSelect: true },
411fb726d48Sopenharmony_ci  { value: 'sensors', isSelect: false },
412fb726d48Sopenharmony_ci  { value: 'sync', isSelect: true },
413fb726d48Sopenharmony_ci  { value: 'usb', isSelect: false },
414fb726d48Sopenharmony_ci  { value: 'ufs', isSelect: false },
415fb726d48Sopenharmony_ci  { value: 'useriam', isSelect: false },
416fb726d48Sopenharmony_ci  { value: 'virse', isSelect: false },
417fb726d48Sopenharmony_ci  { value: 'window', isSelect: true },
418fb726d48Sopenharmony_ci  { value: 'workq', isSelect: true },
419fb726d48Sopenharmony_ci  { value: 'zaudio', isSelect: true },
420fb726d48Sopenharmony_ci  { value: 'zcamera', isSelect: true },
421fb726d48Sopenharmony_ci  { value: 'zimage', isSelect: true },
422fb726d48Sopenharmony_ci  { value: 'zmedia', isSelect: true },
423fb726d48Sopenharmony_ci];
424fb726d48Sopenharmony_ci
425fb726d48Sopenharmony_ciconst traceConfigList = [
426fb726d48Sopenharmony_ci  {
427fb726d48Sopenharmony_ci    value: 'Scheduling details',
428fb726d48Sopenharmony_ci    isSelect: true,
429fb726d48Sopenharmony_ci    des: 'enables high-detailed tracking of scheduling events',
430fb726d48Sopenharmony_ci  },
431fb726d48Sopenharmony_ci  {
432fb726d48Sopenharmony_ci    value: 'CPU Frequency and idle states',
433fb726d48Sopenharmony_ci    isSelect: true,
434fb726d48Sopenharmony_ci    des: 'Records cpu frequency and idle state change viaftrace',
435fb726d48Sopenharmony_ci  },
436fb726d48Sopenharmony_ci  {
437fb726d48Sopenharmony_ci    value: 'Advanced ftrace config',
438fb726d48Sopenharmony_ci    isSelect: false,
439fb726d48Sopenharmony_ci    des:
440fb726d48Sopenharmony_ci      'Enable individual events and tune the kernel-tracing(ftrace) module.' +
441fb726d48Sopenharmony_ci      'The events enabled here are in addition to those from' +
442fb726d48Sopenharmony_ci      ' enabled by other probes.',
443fb726d48Sopenharmony_ci  },
444fb726d48Sopenharmony_ci];
445fb726d48Sopenharmony_ci
446fb726d48Sopenharmony_ciconst memoryConfigList = [
447fb726d48Sopenharmony_ci  {
448fb726d48Sopenharmony_ci    value: 'Kernel meminfo',
449fb726d48Sopenharmony_ci    isSelect: false,
450fb726d48Sopenharmony_ci    des: 'polling of /proc/meminfo',
451fb726d48Sopenharmony_ci  },
452fb726d48Sopenharmony_ci  {
453fb726d48Sopenharmony_ci    value: 'Virtual memory stats',
454fb726d48Sopenharmony_ci    isSelect: false,
455fb726d48Sopenharmony_ci    des:
456fb726d48Sopenharmony_ci      'Periodically polls virtual memory stats from /proc/vmstat.' +
457fb726d48Sopenharmony_ci      ' Allows to gather statistics about swap,' +
458fb726d48Sopenharmony_ci      'eviction, compression and pagecache efficiency',
459fb726d48Sopenharmony_ci  },
460fb726d48Sopenharmony_ci];
461fb726d48Sopenharmony_ci
462fb726d48Sopenharmony_ciconst abilityConfigList = [
463fb726d48Sopenharmony_ci  {
464fb726d48Sopenharmony_ci    value: 'AbilityMonitor',
465fb726d48Sopenharmony_ci    isSelect: false,
466fb726d48Sopenharmony_ci    des: 'Tracks the AbilityMonitor',
467fb726d48Sopenharmony_ci  },
468fb726d48Sopenharmony_ci];
469