• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (C) 2022 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16import { BaseElement, element } from '../../../base-ui/BaseElement';
17import LitSwitch, { LitSwitchChangeEvent } from '../../../base-ui/switch/lit-switch';
18import '../../../base-ui/select/LitAllocationSelect';
19
20import '../../../base-ui/switch/lit-switch';
21import { LitAllocationSelect } from '../../../base-ui/select/LitAllocationSelect';
22import { SpRecordTrace } from '../SpRecordTrace';
23import { Cmd } from '../../../command/Cmd';
24import { SpVmTrackerHtml } from './SpVmTracker.html';
25
26@element('sp-vm-tracker')
27export class SpVmTracker extends BaseElement {
28  private vmTrackerProcessInput: LitAllocationSelect | undefined | null;
29
30  set startSamp(start: boolean) {
31    if (start) {
32      this.setAttribute('startSamp', '');
33    } else {
34      this.removeAttribute('startSamp');
35      let input = this.vmTrackerProcessInput?.shadowRoot?.querySelector<HTMLInputElement>('#singleInput');
36      input!.value = '';
37    }
38  }
39
40  get process(): string {
41    if (this.vmTrackerProcessInput!.value.length > 0) {
42      let result = this.vmTrackerProcessInput!.value.match(/\((.+?)\)/g);
43      if (result) {
44        return result.toString().replace('(', '').replace(')', '');
45      } else {
46        return this.vmTrackerProcessInput!.value;
47      }
48    }
49    return '';
50  }
51
52  get startSamp(): boolean {
53    return this.hasAttribute('startSamp');
54  }
55
56  initElements(): void {
57    let vmTrackerSwitch = this.shadowRoot?.querySelector('lit-switch') as LitSwitch;
58    vmTrackerSwitch.addEventListener('change', (event: CustomEventInit<LitSwitchChangeEvent>) => {
59      let detail = event.detail;
60      if (detail!.checked) {
61        this.startSamp = true;
62        this.unDisable();
63      } else {
64        this.startSamp = false;
65        this.disable();
66      }
67    });
68    this.vmTrackerProcessInput = this.shadowRoot?.querySelector<LitAllocationSelect>('lit-allocation-select');
69    let vmTrackerMul = this.vmTrackerProcessInput?.shadowRoot?.querySelector('.multipleSelect') as HTMLDivElement;
70    vmTrackerMul!.addEventListener('mousedown', () => {
71      if (SpRecordTrace.serialNumber === '') {
72        this.vmTrackerProcessInput!.processData = [];
73        this.vmTrackerProcessInput!.initData();
74      }
75    });
76    vmTrackerMul!.addEventListener('mouseup', () => {
77      if (SpRecordTrace.serialNumber === '') {
78        this.vmTrackerProcessInput!.processData = [];
79        this.vmTrackerProcessInput!.initData();
80      } else {
81        Cmd.getProcess().then((processList) => {
82          this.vmTrackerProcessInput!.processData = processList;
83          this.vmTrackerProcessInput!.initData();
84        });
85      }
86    });
87    this.disable();
88  }
89
90  private unDisable(): void {
91    let configVal = this.shadowRoot?.querySelectorAll<HTMLElement>('.config');
92    configVal!.forEach((configVal1) => {
93      configVal1.removeAttribute('disabled');
94    });
95  }
96
97  private disable(): void {
98    let configVal = this.shadowRoot?.querySelectorAll<HTMLElement>('.config');
99    configVal!.forEach((configVal1) => {
100      if (configVal1.title !== 'Start VM Tracker Record') {
101        configVal1.setAttribute('disabled', '');
102      }
103    });
104  }
105
106  initHtml(): string {
107    return SpVmTrackerHtml;
108  }
109}
110