/* * Copyright (C) 2022 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import { BaseElement, element } from '../../base-ui/BaseElement.js'; import { LitMainMenuGroup } from '../../base-ui/menu/LitMainMenuGroup.js'; import { LitMainMenu, MenuItem } from '../../base-ui/menu/LitMainMenu.js'; import { LitMainMenuItem } from '../../base-ui/menu/LitMainMenuItem'; import { SpStatisticsHttpUtil } from '../../statistics/util/SpStatisticsHttpUtil.js'; @element('sp-help') export class SpHelp extends BaseElement { private appContent: HTMLElement | undefined | null; get dark() { return this.hasAttribute('dark'); } set dark(dark: boolean) { if (dark) { this.setAttribute('dark', '' + dark); } else { this.removeAttribute('dark'); } this.appContent!.innerHTML = ''; } initElements(): void { let that = this; let parentElement = this.parentNode as HTMLElement; parentElement.style.overflow = 'hidden'; this.appContent = this.shadowRoot?.querySelector('#app-content') as HTMLElement; let mainMenu = this.shadowRoot?.querySelector('#main-menu') as LitMainMenu; let header = mainMenu.shadowRoot?.querySelector('.header') as HTMLDivElement; let color = mainMenu.shadowRoot?.querySelector('.color') as HTMLDivElement; let version = mainMenu.shadowRoot?.querySelector('.version') as HTMLDivElement; header.style.display = 'none'; version.style.display = 'none'; color.style.display = 'none'; mainMenu.menus = [ { collapsed: false, title: 'QuickStart', describe: '', children: [ { title: '设备端抓取trace说明', icon: '', clickHandler: function (item: MenuItem) { SpStatisticsHttpUtil.addOrdinaryVisitAction({ event: 'record', action: 'help_doc', }); that.appContent!.innerHTML = ''; }, }, { title: 'web端抓取trace说明', icon: '', clickHandler: function (item: MenuItem) { SpStatisticsHttpUtil.addOrdinaryVisitAction({ event: 'online_record', action: 'help_doc', }); that.appContent!.innerHTML = ''; }, }, { title: 'web端加载trace说明', icon: '', clickHandler: function (item: MenuItem) { SpStatisticsHttpUtil.addOrdinaryVisitAction({ event: 'load', action: 'help_doc', }); that.appContent!.innerHTML = ''; }, }, { title: 'Native Memory抓取和展示说明', icon: '', clickHandler: function (item: MenuItem) { SpStatisticsHttpUtil.addOrdinaryVisitAction({ event: 'native', action: 'help_doc', }); that.appContent!.innerHTML = ''; }, }, { title: 'Ability Monitor抓取和展示说明', icon: '', clickHandler: function (item: MenuItem) { SpStatisticsHttpUtil.addOrdinaryVisitAction({ event: 'ability', action: 'help_doc', }); that.appContent!.innerHTML = ''; }, }, { title: 'HiPerf的抓取和展示说明', icon: '', clickHandler: function (item: MenuItem) { SpStatisticsHttpUtil.addOrdinaryVisitAction({ event: 'perf', action: 'help_doc', }); that.appContent!.innerHTML = ''; }, }, { title: 'Sql分析和Metrics说明', icon: '', clickHandler: function (item: MenuItem) { SpStatisticsHttpUtil.addOrdinaryVisitAction({ event: 'sql', action: 'help_doc', }); that.appContent!.innerHTML = ''; }, }, { title: 'FileSystem抓取和展示说明', icon: '', clickHandler: function (item: MenuItem) { SpStatisticsHttpUtil.addOrdinaryVisitAction({ event: 'file_system', action: 'help_doc', }); that.appContent!.innerHTML = ''; }, }, { title: '页内存抓取和展示说明', icon: '', clickHandler: function (item: MenuItem) { SpStatisticsHttpUtil.addOrdinaryVisitAction({ event: 'virtual_memory', action: 'help_doc', }); that.appContent!.innerHTML = ''; }, }, { title: 'Bio抓取和展示说明', icon: '', clickHandler: function (item: MenuItem) { SpStatisticsHttpUtil.addOrdinaryVisitAction({ event: 'bio', action: 'help_doc', }); that.appContent!.innerHTML = ''; }, }, { title: '进程smaps抓取和展示说明', icon: '', clickHandler: function (item: MenuItem) { SpStatisticsHttpUtil.addOrdinaryVisitAction({ event: 'smaps', action: 'help_doc', }); that.appContent!.innerHTML = ''; }, }, { title: 'HiSystemEvent抓取和展示说明', icon: '', clickHandler: function (item: MenuItem) { SpStatisticsHttpUtil.addOrdinaryVisitAction({ event: 'hisys', action: 'help_doc', }); that.appContent!.innerHTML = ''; }, }, { title: 'sdk抓取和展示说明', icon: '', clickHandler: function (item: MenuItem) { SpStatisticsHttpUtil.addOrdinaryVisitAction({ event: 'sdk_record', action: 'help_doc', }); that.appContent!.innerHTML = ''; }, }, { title: 'Frame timeline抓取和展示说明', icon: '', clickHandler: function (item: MenuItem) { SpStatisticsHttpUtil.addOrdinaryVisitAction({ event: 'frame_record', action: 'help_doc', }); that.appContent!.innerHTML = ''; }, }, { title: 'Scheduling analysis抓取和展示说明', icon: '', clickHandler: function (item: MenuItem) { SpStatisticsHttpUtil.addOrdinaryVisitAction({ event: 'scheduling_record', action: 'help_doc', }); that.appContent!.innerHTML = ''; }, }, { title: 'Js Memory抓取和展示说明', icon: '', clickHandler: function (item: MenuItem) { SpStatisticsHttpUtil.addOrdinaryVisitAction({ event: 'js_memory', action: 'help_doc', }); that.appContent!.innerHTML = ''; }, }, { title: '调用栈可视化和不同库函数调用占比说明', icon: '', clickHandler: function (item: MenuItem) { SpStatisticsHttpUtil.addOrdinaryVisitAction({ event: 'import_so', action: 'help_doc', }); that.appContent!.innerHTML = ''; }, }, { title: '应用操作技巧', icon: '', clickHandler: function (item: MenuItem) { SpStatisticsHttpUtil.addOrdinaryVisitAction({ event: 'operation_skills', action: 'help_doc', }); that.appContent!.innerHTML = ''; }, }, ], }, { collapsed: false, title: 'TraceStreamer', describe: '', children: [ { title: 'TraceStreamer数据库说明', icon: '', clickHandler: function (item: MenuItem) { SpStatisticsHttpUtil.addOrdinaryVisitAction({ event: 'trace_streamer_explain', action: 'help_doc', }); that.appContent!.innerHTML = ''; }, }, { title: '编译Trace_streamer', icon: '', clickHandler: function (item: MenuItem) { that.appContent!.innerHTML = ''; }, }, { title: 'TraceStreamer 解析数据状态表', icon: '', clickHandler: function (item: MenuItem) { that.appContent!.innerHTML = ''; }, }, { title: 'TraceStreamer支持解析事件列表', icon: '', clickHandler: function (item: MenuItem) { that.appContent!.innerHTML = ''; }, }, { title: 'trace_streamer工具说明', icon: '', clickHandler: function (item: MenuItem) { that.appContent!.innerHTML = ''; }, }, { title: 'binder事件上下文如何关联', icon: '', clickHandler: function (item: MenuItem) { that.appContent!.innerHTML = ''; }, }, { title: 'wakeup唤醒说明', icon: '', clickHandler: function (item: MenuItem) { that.appContent!.innerHTML = ''; }, }, ], }, { collapsed: false, title: 'SmartPerf', describe: '', children: [ { title: 'SmartPerf 编译指导', icon: '', clickHandler: function (item: MenuItem) { that.appContent!.innerHTML = ''; }, }, ], }, ]; mainMenu.style.width = '330px'; let body = mainMenu.shadowRoot?.querySelector('.menu-body') as HTMLDivElement; let groups = body.querySelectorAll('lit-main-menu-group'); groups.forEach((value) => { let items = value.querySelectorAll('lit-main-menu-item'); items.forEach((item) => { item.style.width = '330px'; }); if (value.title == 'TraceStreamer') { let items = value.querySelectorAll('lit-main-menu-item'); items.forEach((i) => { if (i.title != 'TraceStreamer数据库说明') { i.style.display = 'none'; } }); } if (value.title == 'SmartPerf') { value.style.display = 'none'; } }); } initHtml(): string { return `
`; } }